@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 pages */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout across pages */
/* when the width is appropriate for col1, but landscape prevents it */
html {
  font-family: 'Noto Sans', Sans-Serif;
}

.ninja-title, .site-title {
  font-family: 'Noto Sans', Sans-Serif;
}

h1,
h2,
h3,
h4, .mini-game .rating, .mini-game__clock, .btn-rack__btn i,
.btn-rack form i {
  font-family: 'Roboto', Sans-Serif;
}

.button {
  font-family: 'Roboto', Sans-Serif;
  font-weight: 600;
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.subnav a, #clinput input {
  color: #999999;
}

.button.button-empty:not(.disabled):hover, .button.button-empty.button-green:not(.disabled):hover, .button.button-empty.button-red:not(.disabled):hover, .button.button-metal, #friend_box .friend_box_title, .btn-rack__btn,
.btn-rack form {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

.button.button-metal:not(.disabled):hover, #friend_box .friend_box_title:hover, .btn-rack__btn:hover,
.btn-rack form:hover {
  background: linear-gradient(to bottom, #44413b, #3b3935 100%);
  color: #cccccc;
}

.data-count::after,
.unread, .button.active, .btn-rack__btn.active {
  box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15) inset;
}

.data-count::after,
.unread, .button.active, .btn-rack__btn.active {
  background: #d64f00;
  color: #fff;
  text-shadow: 0 1px 1px black !important;
}

.button.active:not(.disabled):hover {
  background: #de7233;
}

.site-buttons .dropdown {
  box-shadow: -1px 5px 6px rgba(0, 0, 0, 0.3);
}

#powerTip,
#miniGame, #reconnecting, #announce {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}

.button, .button.button-empty:not(.disabled):hover {
  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.225);
}

.button:not(.disabled):hover {
  box-shadow: 0 4px 10px 0px rgba(0, 0, 0, 0.225);
}

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

.button:not(.disabled):focus {
  box-shadow: 0 0 12px #999999;
}

.subnav a, .user-link, .mini-game {
  white-space: nowrap;
  overflow: hidden;
}

.box-pad, .box:not(.box-pad) > h1 {
  padding: 5vh var(--box-padding);
}

.box__pad {
  padding: 0 var(--box-padding);
}

.upt__info__top .user-link {
  overflow: hidden;
  text-overflow: ellipsis;
}

.main-board, .mini-board,
.mini-game .cg-wrap {
  position: relative;
  display: block;
  height: 0;
  padding-bottom: 100%;
  width: 100%;
}

.is::before,
[data-icon]::before,
.is-after::after, .rp::before, .user-link .line {
  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;
}

.fullscreen-mask {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 109;
}

cg-board, .main-board .cg-wrap {
  position: absolute;
  width: 100%;
  height: 100%;
}

.box__top__actions {
  display: flex;
  flex-flow: row wrap;
}

.site-buttons .initiating, .box__top__actions .button, .upt__info__top__country, .upt__info__warning {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.site-buttons, .upt__info__top .left, .btn-rack__btn,
.btn-rack form, #reconnecting {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.box__top, .upt__info__top, .upt__info__ratings, .upt__mod, #announce {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.mini-game__player {
  /* extends %flex-center */
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
  justify-content: space-between;
}

.upt__info {
  display: flex;
  flex-flow: column;
}

#powerTip,
#miniGame, input,
textarea,
select, .data-count::after,
.unread, .button, .btn-rack {
  border-radius: 3px;
}

#powerTip,
#miniGame {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.btn-rack__btn:first-child,
.btn-rack form:first-child {
  border-radius: 3px 0 0 3px;
}

.btn-rack__btn:last-child,
.btn-rack form:last-child {
  border-radius: 0 3px 3px 0;
}

cg-board, .box, .upt__actions.btn-rack {
  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);
}

html {
  box-sizing: border-box;
  min-height: 100%;
  color-scheme: dark;
}

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

body {
  background: #161512 linear-gradient(to bottom, #2e2a24, #161512 116px) no-repeat;
  color: #bababa;
  overflow-x: hidden;
}

body.fixed-scroll {
  /* prevents scroll bar flicker when dragging a piece out */
  overflow-y: scroll;
}

a {
  color: #3692e7;
  text-decoration: none;
}

a:hover, a:active, a:focus {
  color: #57aeff;
}

p {
  margin-bottom: 1em;
}

em,
i {
  font-style: normal;
}

li {
  list-style: none;
}

time {
  font-size: 90%;
  opacity: 0.9;
  /* don't use c-color-dim, it overrides too hard */
}

hr {
  margin: 1.5rem 0;
  border: 0;
  height: 1px;
  background: #404040;
}

small {
  font-size: 0.9em;
}

table,
tbody,
tfoot,
thead,
tr,
th,
td {
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: middle;
  text-align: inherit;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

button,
input,
optgroup,
select,
textarea {
  font: inherit;
  color: #bababa;
  outline-color: #3692e7;
}

option,
optgroup {
  background: #262421;
  color: #cccccc;
}

input,
textarea,
select {
  background: #24221e;
  border: 1px solid #404040;
  padding: 0.6em 1em;
}

textarea {
  overflow: auto;
  resize: vertical;
  padding: 0.8em 1em;
}

button,
a {
  cursor: pointer;
}

::placeholder {
  color: #999999;
}

.copyable {
  background: #262421;
  color: #cccccc;
}

input:-webkit-autofill,
textarea:-webkit-autofill,
select:-webkit-autofill {
  border: 1px solid #404040;
  -webkit-text-fill-color: #bababa;
  -webkit-box-shadow: 0 0 0px 1000px #2b2e1e inset;
}

/* Distorted Face (U+1FAEA) — subset of Noto Color Emoji (COLRv1, ~1KB).
   Fallback so the title symbol renders on systems without the glyph. */
@font-face {
  font-family: 'Distorted Face';
  font-display: swap;
  src: url(../font/distorted-face.woff2) format("woff2");
  unicode-range: U+1FAEA;
}

/* Icon fonts */
@font-face {
  font-family: 'lichess';
  font-display: block;
  src: url(../font/lichess.woff2) format("woff2"), url(../font/lichess.woff) format("woff");
}

@font-face {
  font-family: 'Noto Chess';
  font-display: block;
  src: url(../font/lichess.chess.woff2) format("woff2"), url(../font/lichess.chess.woff) format("woff");
}

/* Noto Sans (v7) */
/* cyrillic-ext */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-cyrillic-ext.woff2) format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-cyrillic.woff2) format("woff2");
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* devanagari */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-devanagari.woff2) format("woff2");
  unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
}

/* greek-ext */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-greek-ext.woff2) format("woff2");
  unicode-range: U+1F00-1FFF;
}

/* greek */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-greek.woff2) format("woff2");
  unicode-range: U+0370-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-vietnamese.woff2) format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-v14-latin-ext-regular.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-v14-latin-regular.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Noto Sans Bold (v7)

/* cyrillic-ext */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-cyrillic-ext.woff2) format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-cyrillic.woff2) format("woff2");
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* devanagari */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-devanagari.woff2) format("woff2");
  unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
}

/* greek-ext */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-greek-ext.woff2) format("woff2");
  unicode-range: U+1F00-1FFF;
}

/* greek */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-greek.woff2) format("woff2");
  unicode-range: U+0370-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-vietnamese.woff2) format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-v14-latin-ext-700.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-v14-latin-700.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Roboto Light (v18) */
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-cyrillic-ext.woff2) format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-cyrillic.woff2) format("woff2");
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* greek-ext */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-greek-ext.woff2) format("woff2");
  unicode-range: U+1F00-1FFF;
}

/* greek */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-greek.woff2) format("woff2");
  unicode-range: U+0370-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-vietnamese.woff2) format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-latin-ext.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-latin.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

html {
  -webkit-font-smoothing: antialiased;
}

html {
  font-size: 12px;
}

@media (min-width: 320px) {
  html {
    font-size: calc( 12px + 2 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  html {
    font-size: 14px;
  }
}

h1,
h2,
h3,
h4 {
  font-weight: normal;
  font-size: 1em;
}

h1 {
  margin-bottom: 5vh;
}

h1 {
  font-size: 20px;
}

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

@media (min-width: 1200px) {
  h1 {
    font-size: 40px;
  }
}

h1 a {
  color: #2e7cc5;
}

h1 a:hover {
  color: #3692e7;
}

h2 {
  font-size: 16px;
}

@media (min-width: 320px) {
  h2 {
    font-size: calc( 16px + 14 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  h2 {
    font-size: 30px;
  }
}

.ninja-title {
  font-size: 1em;
}

.is.text::before,
.text[data-icon]::before {
  margin-right: 0.4em;
}

.is-green::before {
  color: #629924;
}

.is-red::before {
  color: #cc3333;
}

.is-gold::before {
  color: #bf811d;
}

.data-count {
  position: relative;
}

.data-count::after,
.unread {
  padding: 1px 5px 1px 4px;
  font-weight: bold;
  font-size: 13px;
}

.data-count::after {
  content: attr(data-count);
  top: -5px;
  right: 0;
  position: absolute;
  padding: 0 3px;
  height: 15px;
  line-height: 15px;
}

.data-count[data-count='0']::after {
  display: none;
}

.none {
  display: none !important;
}

.fullscreen-mask {
  display: none;
}

.fullscreen-toggle:checked ~ .fullscreen-mask {
  display: block;
}

.rp::before {
  margin-right: 0.2em;
  content: '';
}

bad.rp::before {
  content: '';
}

good {
  color: #629924;
}

bad {
  color: #cc3333;
}

.infinite-scroll .pager {
  text-align: center;
  margin: 10px auto;
}

body {
  --site-header-height: 40px;
  --site-header-margin: 0px;
  --main-margin: 0;
}

@media (min-height: 600px) {
  body {
    --site-header-height: 60px;
  }
}

body.header-margin {
  --site-header-margin: 1em;
}

@media (min-width: 800px) {
  body {
    --main-margin: 1vw;
    margin-bottom: 2vmin;
  }
}

#main-wrap {
  display: grid;
  grid-template-areas: '. . main . .';
  --main-max-width: 1300px;
  grid-template-columns: var(--main-margin) 1fr minmax(auto, var(--main-max-width)) 1fr var(--main-margin);
  margin-top: var(--site-header-margin);
}

#main-wrap.full-screen {
  --main-max-width: auto;
}

#main-wrap.full-screen-force {
  --main-max-width: 100%;
}

@media (hover: none) {
  body.clinput #main-wrap {
    display: none;
  }
}

main {
  grid-area: main;
}

main.page-small {
  max-width: 1000px;
  margin: auto;
  width: 100%;
}

@media (max-width: 799px) {
  .subnav {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(17ch, 1fr));
    grid-gap: 3px;
    margin-bottom: 3px;
    background: #161512;
  }
  .subnav a {
    border-radius: 3px;
    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);
    font-family: roboto;
    display: flex;
    align-items: center;
    color: #bababa;
    padding: 0.6rem 0 0.6rem 0.5rem;
    letter-spacing: -0.06em;
    background: #262421;
  }
  .subnav a:hover {
    color: #3692e7;
  }
  .subnav a.active {
    background: #3692e7;
    color: #fff;
  }
  .subnav .sep {
    display: none;
  }
}

@media (min-width: 800px) {
  .subnav {
    margin-top: 5px;
    z-index: 2;
    /* active border must go over the page content */
  }
  .subnav a {
    display: block;
    color: #999999;
    padding: 0.7rem 2vw 0.7rem 0.8rem;
    position: relative;
  }
  .subnav a::after {
    content: '';
    background: rgba(214, 79, 0, 0.6);
    width: 3px;
    position: absolute;
    height: 98%;
    top: 1%;
    right: -1px;
    transition: all 0.25s;
    transform: scale(0);
  }
  .subnav a.active::after, .subnav a:hover::after {
    transform: scale(1);
  }
  .subnav a.active {
    color: #d64f00;
  }
  .subnav .sep {
    height: 2em;
  }
}

.page-menu {
  display: grid;
  grid-template-areas: 'menu' 'content';
}

@media (min-width: 800px) {
  .page-menu {
    grid-template-columns: max-content auto;
    grid-template-rows: min-content;
    grid-template-areas: 'menu content';
  }
}

.page-menu.page-small {
  max-width: 1000px;
  margin: inherit;
}

.page-menu__menu {
  z-index: 0;
  grid-area: menu;
}

.page-menu__content {
  grid-area: content;
  height: 100%;
}

.page-menu__content.box {
  /* ensure the content is as high as the menu */
  min-height: 100%;
}

.blue .is2d cg-board {
  background-image: url("../images/board/svg/blue.svg");
}

.blue .is2d coords {
  --cg-ccw: #dee3e6;
  --cg-ccb: #788a94;
  --cg-cs: none;
}

.blue2 .is2d cg-board {
  background-image: url("../images/board/blue2.jpg");
}

.blue2 .is2d coords {
  --cg-ccw: #97b2c7;
  --cg-ccb: #546f82;
  --cg-cs: none;
}

.blue3 .is2d cg-board {
  background-image: url("../images/board/blue3.jpg");
}

.blue3 .is2d coords {
  --cg-ccw: #d9e0e6;
  --cg-ccb: #315991;
  --cg-cs: none;
}

.blue-marble .is2d cg-board {
  background-image: url("../images/board/blue-marble.jpg");
}

.blue-marble .is2d coords {
  --cg-ccw: #eae6dd;
  --cg-ccb: #7c7f87;
  --cg-cs: none;
}

.canvas .is2d cg-board {
  background-image: url("../images/board/canvas2.jpg");
}

.canvas .is2d coords {
  --cg-ccw: #d7daeb;
  --cg-ccb: #547388;
  --cg-cs: none;
}

.wood .is2d cg-board {
  background-image: url("../images/board/wood.jpg");
}

.wood .is2d coords {
  --cg-ccw: #d8a45b;
  --cg-ccb: #9b4d0f;
  --cg-cs: none;
}

.wood2 .is2d cg-board {
  background-image: url("../images/board/wood2.jpg");
}

.wood2 .is2d coords {
  --cg-ccw: #a38b5d;
  --cg-ccb: #6c5017;
  --cg-cs: none;
}

.wood3 .is2d cg-board {
  background-image: url("../images/board/wood3.jpg");
}

.wood3 .is2d coords {
  --cg-ccw: #d0ceca;
  --cg-ccb: #755839;
  --cg-cs: none;
}

.wood4 .is2d cg-board {
  background-image: url("../images/board/wood4.jpg");
}

.wood4 .is2d coords {
  --cg-ccw: #caaf7d;
  --cg-ccb: #7b5330;
  --cg-cs: none;
}

.maple .is2d cg-board {
  background-image: url("../images/board/maple.jpg");
}

.maple .is2d coords {
  --cg-ccw: #e8ceab;
  --cg-ccb: #bc7944;
  --cg-cs: none;
}

.maple2 .is2d cg-board {
  background-image: url("../images/board/maple2.jpg");
}

.maple2 .is2d coords {
  --cg-ccw: #e2c89f;
  --cg-ccb: #996633;
  --cg-cs: none;
}

.leather .is2d cg-board {
  background-image: url("../images/board/leather.jpg");
}

.leather .is2d coords {
  --cg-ccw: #d1d1c9;
  --cg-ccb: #c28e16;
  --cg-cs: none;
}

.green .is2d cg-board {
  background-image: url("../images/board/svg/green.svg");
}

.green .is2d coords {
  --cg-ccw: #ffffdd;
  --cg-ccb: #6d8753;
  --cg-cs: none;
}

.brown .is2d cg-board {
  background-image: url("../images/board/svg/brown.svg");
}

.brown .is2d coords {
  --cg-ccw: #f0d9b5;
  --cg-ccb: #946f51;
  --cg-cs: none;
}

.pink .is2d cg-board {
  background-image: url("../images/board/pink-pyramid.png");
}

.pink .is2d coords {
  --cg-ccw: #e8e9b7;
  --cg-ccb: #ed7272;
  --cg-cs: none;
}

.marble .is2d cg-board {
  background-image: url("../images/board/marble.jpg");
}

.marble .is2d coords {
  --cg-ccw: #93ab91;
  --cg-ccb: #4f644e;
  --cg-cs: none;
}

.green-plastic .is2d cg-board {
  background-image: url("../images/board/green-plastic.png");
}

.green-plastic .is2d coords {
  --cg-ccw: #f2f9bb;
  --cg-ccb: #59935d;
  --cg-cs: none;
}

.grey .is2d cg-board {
  background-image: url("../images/board/grey.jpg");
}

.grey .is2d coords {
  --cg-ccw: #b8b8b8;
  --cg-ccb: #7d7d7d;
  --cg-cs: none;
}

.metal .is2d cg-board {
  background-image: url("../images/board/metal.jpg");
}

.metal .is2d coords {
  --cg-ccw: #c9c9c9;
  --cg-ccb: #727272;
  --cg-cs: none;
}

.olive .is2d cg-board {
  background-image: url("../images/board/olive.jpg");
}

.olive .is2d coords {
  --cg-ccw: #b8b19f;
  --cg-ccb: #6d6655;
  --cg-cs: none;
}

.newspaper .is2d cg-board {
  background-image: url("../images/board/newspaper.png");
}

.newspaper .is2d coords {
  --cg-ccw: #fff;
  --cg-ccb: #8d8d8d;
  --cg-cs: none;
}

.purple .is2d cg-board {
  background-image: url("../images/board/svg/purple.svg");
}

.purple .is2d coords {
  --cg-ccw: #9f90b0;
  --cg-ccb: #7d4a8d;
  --cg-cs: none;
}

.purple-diag .is2d cg-board {
  background-image: url("../images/board/purple-diag.png");
}

.purple-diag .is2d coords {
  --cg-ccw: #e5daf0;
  --cg-ccb: #957ab0;
  --cg-cs: none;
}

.ic .is2d cg-board {
  background-image: url("../images/board/svg/ic.svg");
}

.ic .is2d coords {
  --cg-ccw: #ececec;
  --cg-ccb: #c1c18e;
  --cg-cs: none;
}

.horsey .is2d cg-board {
  background-image: url("../images/board/horsey.jpg");
}

.horsey .is2d coords {
  --cg-ccw: #f0d9b5;
  --cg-ccb: #946f51;
  --cg-cs: none;
}

body.dark-board {
  --dark-factor: 0.4;
}

body.dark-board cg-board,
body.dark-board .is3d cg-board::before {
  background-color: rgba(0, 0, 0, var(--dark-factor));
  background-blend-mode: darken;
}

body.dark-board.coords-in coord {
  color: #fff !important;
  opacity: calc(1 - var(--dark-factor));
}

body.dark-board cg-board square {
  opacity: calc(1 - var(--dark-factor));
}

body.dark-board cg-board piece {
  filter: brightness(calc(1 - 0.6 * var(--dark-factor)));
}

cg-board {
  top: 0;
  left: 0;
  user-select: none;
  line-height: 0;
  background-size: cover;
}

.manipulable cg-board {
  cursor: pointer;
}

square {
  position: absolute;
  width: 12.5%;
  height: 12.5%;
  pointer-events: none;
}

square.move-dest {
  background: radial-gradient(rgba(20, 85, 30, 0.5) 19%, rgba(0, 0, 0, 0) 20%);
  pointer-events: auto;
}

square.premove-dest {
  background: radial-gradient(rgba(20, 30, 85, 0.5) 19%, rgba(0, 0, 0, 0) 20%);
  pointer-events: auto;
}

square.oc.move-dest {
  background: radial-gradient(transparent 0%, transparent 79%, rgba(20, 85, 0, 0.3) 80%);
}

square.oc.premove-dest {
  background: radial-gradient(transparent 0%, transparent 79%, rgba(20, 30, 85, 0.2) 80%);
}

body.green square.last-move,
body.green-plastic square.last-move,
body.marble square.last-move {
  background-color: rgba(0, 155, 199, 0.41);
}

square.last-move {
  will-change: transform;
  background-color: rgba(155, 199, 0, 0.41);
}

body.horsey square.last-move:not(.move-dest) {
  background: url(../images/board/horsey.last-move.png);
  background-size: cover;
}

square.check {
  background: radial-gradient(ellipse at center, red 0%, #e70000 25%, rgba(169, 0, 0, 0) 89%, rgba(158, 0, 0, 0) 100%);
}

square.selected {
  background-color: rgba(20, 85, 30, 0.5);
}

body.horsey square.selected {
  background: url(../images/board/horsey.selected.png);
  background-size: cover;
}

square.current-premove {
  background-color: rgba(20, 30, 85, 0.5) !important;
}

body.horsey square.current-premove {
  background: url(../images/board/horsey.current-premove.png);
  background-size: cover;
}

square.move-dest:hover {
  background: rgba(20, 85, 30, 0.3);
}

body.horsey square.move-dest:hover {
  background: url(../images/board/horsey.move-dest.png);
  background-size: cover;
}

square.premove-dest:hover {
  background: rgba(20, 30, 85, 0.2);
}

square.bh1 piece {
  opacity: 0.98;
}

piece {
  position: absolute;
  top: 0;
  left: 0;
  width: 12.5%;
  height: 12.5%;
  background-size: cover;
  z-index: 2;
  will-change: transform;
  pointer-events: none;
}

piece.dragging {
  cursor: move;
  z-index: 204 !important;
}

piece.anim {
  z-index: 3;
}

piece.fading {
  z-index: 1;
  opacity: 0.5;
}

piece.ghost {
  opacity: 0.3;
}

cg-container {
  position: absolute;
  width: 100%;
  height: 100%;
  display: block;
  top: 0;
  right: 0;
}

cg-container .cg-shapes,
cg-container .cg-custom-svgs {
  overflow: hidden;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

cg-container .cg-shapes {
  opacity: 0.6;
  z-index: 2;
}

cg-container .cg-shapes image {
  opacity: 0.5;
}

cg-container .cg-custom-svgs {
  z-index: 4;
  overflow: visible;
}

cg-container .cg-custom-svgs svg {
  overflow: visible;
}

@media (max-width: 979px) {
  .topnav-toggle {
    display: block;
    position: absolute;
    top: -9999px;
    left: -9999px;
  }
  .hbg {
    position: absolute;
    top: 0;
    left: 0;
    width: var(--site-header-height);
    height: var(--site-header-height);
    cursor: pointer;
    z-index: 110;
  }
  .hbg__in {
    top: 50%;
    left: 8.5px;
    transition: transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  .hbg__in, .hbg__in::after, .hbg__in::before {
    display: block;
    margin-top: -1.5px;
    position: absolute;
    width: 23px;
    height: 2px;
    border-radius: 3px;
    background-color: #999999;
  }
}

@media (max-width: 979px) and (min-height: 600px) {
  .hbg__in, .hbg__in::after, .hbg__in::before {
    width: 34px;
    height: 3px;
  }
}

@media (max-width: 979px) and (min-height: 600px) {
  .hbg__in {
    left: 13px;
  }
}

@media (max-width: 979px) {
  .hbg__in::after, .hbg__in::before {
    content: '';
  }
  .hbg__in::before {
    top: -6px;
    transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in;
  }
}

@media (max-width: 979px) and (min-height: 600px) {
  .hbg__in::before {
    top: -9px;
  }
}

@media (max-width: 979px) {
  .hbg__in::after {
    bottom: -7px;
    transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
}

@media (max-width: 979px) and (min-height: 600px) {
  .hbg__in::after {
    bottom: -10px;
  }
}

@media (max-width: 979px) {
  .topnav-toggle:checked ~ .hbg {
    position: fixed;
    background: #262421;
  }
  .topnav-toggle:checked ~ .hbg .hbg__in {
    transform: rotate(225deg);
    transition-delay: 0.12s;
    transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  .topnav-toggle:checked ~ .hbg .hbg__in::before {
    top: 0;
    opacity: 0;
    transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out;
  }
  .topnav-toggle:checked ~ .hbg .hbg__in::after {
    bottom: 0;
    transform: rotate(-90deg);
    transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  #topnav {
    display: flex;
    flex-flow: row wrap;
    position: fixed;
    top: var(--site-header-height);
    bottom: 0;
    left: 0;
    background: #262421;
    transform: translateX(calc(-100% - 10px));
    transition: transform 200ms;
    padding-bottom: 1.2rem;
    overflow-y: auto;
    overscroll-behavior: contain;
    box-shadow: 2px 5px 7px rgba(0, 0, 0, 0.5);
    border-radius: 0 3px 0 0;
    max-width: 80%;
    z-index: 110;
  }
}

@media (max-width: 979px) and (min-width: 500px) {
  #topnav {
    max-width: 70%;
  }
}

@media (max-width: 979px) {
  #topnav a {
    color: #bababa;
    text-decoration: none;
    padding: 0.7em 0;
    opacity: 0;
    transition: opacity 150ms;
  }
  #topnav section {
    flex: 1 0 50%;
    margin-top: 1rem;
  }
  #topnav section > a {
    font-size: 1.2em;
    padding-left: 1.2rem;
    font-weight: bold;
    display: block;
  }
  #topnav section .play {
    display: none;
  }
  #topnav section div {
    display: flex;
    flex-flow: column;
  }
  #topnav section div a {
    padding-left: 2.4rem;
  }
  #topnav section a:active {
    background: #3692e7;
    color: #fff;
  }
  .topnav-toggle:checked ~ #topnav {
    transform: translateX(0);
  }
  .topnav-toggle:checked ~ #topnav a {
    opacity: 1;
    transition: opacity 125ms ease-in-out 125ms;
  }
  body.masked {
    /* prevent scrolling while topnav is open */
    overflow: hidden;
    /* awkwardly make up for the disappearance of the scroll bar */
    /* actually don't, since on mobile devices the scrool bar
     * has no width, and that menu is mainly for mobile. */
  }
}

@media (min-width: 980px) {
  .hbg,
  .site-title-nav .fullscreen-mask,
  .topnav-toggle {
    display: none !important;
  }
  #topnav {
    --nav-section: 26px;
    --nav-section-hover: 35px;
    display: flex;
  }
}

@media (min-width: 980px) and (min-height: 600px) {
  #topnav {
    --nav-section: 48px;
    --nav-section-hover: 53px;
  }
}

@media (min-width: 980px) {
  #topnav section {
    position: relative;
    height: var(--nav-section);
  }
  #topnav section > a {
    color: #999999;
    text-shadow: none;
    display: block;
    height: var(--nav-section);
    line-height: var(--site-header-height);
    padding: 0 0.7rem;
    text-transform: uppercase;
    border-left: 2px solid transparent;
  }
  #topnav section .home {
    display: none;
  }
  #topnav div {
    visibility: hidden;
    max-height: inherit;
    position: absolute;
    left: 0;
    background: #3c3934;
    min-width: 10rem;
    box-shadow: 2px 5px 6px rgba(0, 0, 0, 0.3);
    border-radius: 0 3px 3px 3px;
    border-left: 2px solid #3692e7;
  }
  #topnav div a {
    display: block;
    padding: 0.6rem 0.7rem;
    color: #cccccc;
  }
  #topnav div a:hover {
    background: #3692e7;
  }
  #topnav div a:hover, #topnav div a:hover::after {
    color: #fff;
  }
  #topnav div a:first-child {
    border-radius: 0 3px 0 0;
  }
  #topnav div a:last-child {
    border-radius: 0 0 3px 1px;
  }
  #topnav.blind div {
    display: block;
    margin-left: -9000px;
  }
  #topnav.hover section:hover > a,
  #topnav section:active > a {
    height: var(--nav-section-hover);
    background: #3c3934;
    color: #cccccc;
    border-color: #3692e7;
  }
  #topnav.hover section:hover div,
  #topnav section:active div {
    visibility: visible;
    max-height: none;
  }
}

.site-title {
  font-size: 25px;
  line-height: 37px;
  text-shadow: none;
  white-space: nowrap;
  margin: 0 0.5rem;
  display: none;
}

@media (min-width: 500px) {
  .site-title {
    display: block;
  }
}

@media (max-width: 979px) {
  .site-title {
    /* move away from hamburger */
    margin-left: calc(0.5rem + var(--site-header-height));
  }
}

@media (min-height: 600px) {
  .site-title {
    font-size: 30px;
    line-height: 57px;
  }
}

@media (min-width: 980px) and (min-height: 600px) {
  .site-title {
    line-height: 55px;
    margin: 0 1rem 0 1.5rem;
  }
}

.site-title a {
  color: #bababa;
  text-decoration: none;
}

.site-title a:hover {
  color: #3692e7;
}

.site-title a:hover span {
  color: #2e7cc5;
}

.site-title span {
  color: #999999;
}

.site-title .kiddo {
  color: #6b6b6b;
  font-weight: bold;
  margin-right: 0.5em;
}

.site-buttons .link, .site-buttons .toggle {
  display: block;
  height: var(--site-header-height);
  line-height: var(--site-header-height);
}

.site-buttons .shop-button {
  margin-top: 20px;
}

.site-buttons .shop-button img {
  width: 30px;
  height: 30px;
}

.site-buttons .cohencoins-counter {
  display: flex;
  align-items: center;
  margin-left: 0.5em;
  margin-right: 0.5em;
  margin-top: 0;
}

.site-buttons .cohencoins-counter .cohencoins-icon {
  width: 2.0em;
  height: 2.0em;
  margin-right: 0.2em;
}

.site-buttons .link {
  /* we don't want a lighter dark font in the top gradient */
  color: #bababa;
  font-size: 1.1rem;
  padding: 0 0.7rem;
}

.site-buttons .link:hover {
  color: #e3e3e3;
}

.site-buttons .link span::before {
  vertical-align: middle;
}

.site-buttons .initiating {
  justify-content: center;
  height: 300px;
  width: 225px;
}

.site-buttons .dropdown {
  display: none;
  position: absolute;
  right: 0;
  top: var(--dropdown-top);
  background: #3c3934;
  z-index: 108;
}

.site-buttons .dropdown a,
.site-buttons .dropdown button {
  color: #cccccc;
}

.site-buttons .shown .toggle {
  background: #3c3934;
  color: #cccccc;
}

.site-buttons .shown .dropdown {
  display: block;
}

.site-buttons .signin {
  margin: 0 1rem;
}

.site-buttons .link-center {
  height: inherit;
  line-height: inherit;
}

.site-buttons .report-score:not(.report-score--high)::after {
  background: #161512;
  color: #bf811d;
  text-shadow: none;
  font-weight: normal;
}

.site-buttons .report-score--low::after {
  color: #629924 !important;
}

#user_tag {
  padding-right: 1rem;
  white-space: nowrap;
}

#notify-app .initiating {
  width: 25rem;
}

#top {
  height: var(--site-header-height);
  display: flex;
  justify-content: space-between;
  position: relative;
  z-index: 106;
  max-width: 1800px;
  margin: 0 auto;
  user-select: none;
  --dropdown-top: 40px;
}

@media (min-height: 600px) {
  #top {
    --dropdown-top: 60px;
  }
}

.site-title-nav {
  display: flex;
  justify-content: flex-start;
}

#clinput {
  display: flex;
  height: var(--site-header-height);
}

#clinput input {
  line-height: var(--site-header-height);
  background: none;
  padding: 0;
  border: 0;
  width: 0;
}

@media (min-width: 1260px) {
  #clinput input {
    transition: width 150ms;
  }
}

body.clinput #clinput input {
  width: 20ch;
}

#clinput input:focus {
  outline: none;
}

@media (max-width: 1259px) {
  body.clinput #top #topnav {
    display: none;
  }
}

@media (max-width: 649px) {
  body.clinput #top .site-title {
    display: none;
  }
}

@media (max-width: 499px) {
  body.clinput #top .site-buttons > *:not(#clinput) {
    display: none;
  }
  body.clinput #top #clinput {
    width: 75vw;
  }
}

.main-board__preload {
  position: absolute;
}

.box {
  background: #262421;
}

.box {
  --box-padding: 15px;
}

@media (min-width: 320px) {
  .box {
    --box-padding: calc( 15px + 45 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  .box {
    --box-padding: 60px;
  }
}

.box-pad .box__top {
  padding: 0 0 var(--box-padding) 0;
}

.box-pad .box__top h1 {
  margin-top: 0;
}

.box__top {
  padding: calc(5vh - 1rem) var(--box-padding);
  /* flex gutters, waiting for row-gap to be implemented for flexbox.  https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Mastering_Wrapping_of_Flex_Items#Creating_gutters_between_items */
  /* end of flex gutter hack */
}

.box__top h1 {
  margin: 0;
}

.box__top > h1,
.box__top > div,
.box__top > form {
  margin-top: 1rem;
}

.box__top__actions {
  /* flex gutters, waiting for row-gap to be implemented for flexbox.  https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Mastering_Wrapping_of_Flex_Items#Creating_gutters_between_items */
  margin-left: -1rem;
  /* end of flex gutter hack */
}

.box__top__actions > * {
  margin-left: 1rem;
}

.box__top__actions > :not(:first-child) {
  margin-left: 1rem;
}

.box:not(.box-pad) > h1 {
  margin: 0;
}

@media (min-width: 800px) {
  .box {
    border-radius: 3px;
  }
}

.button {
  background: #3692e7;
  text-transform: uppercase;
  padding: 0.8em 1em;
  border: none;
  cursor: pointer;
  text-align: center;
  user-select: none;
  white-space: nowrap;
  display: inline-block;
  transition: all 150ms;
}

.button, .button:visited, .button:focus {
  color: #fff;
}

.button:not(.disabled):hover {
  color: #fff;
  background: #56a3eb;
}

.button-no-upper {
  text-transform: none;
}

.button-thin {
  padding: 0.1em 1em;
  font-size: 90%;
}

.button-fat {
  font-size: 1.6rem;
}

.button-green {
  background: #629924;
}

.button-green:not(.disabled):hover {
  background: #6da928;
}

.button-red {
  background: #cc3333;
}

.button-red:not(.disabled):hover {
  background: #d76060;
}

.button-link {
  color: #3692e7;
}

.button-link:hover, .button-link:active, .button-link:focus {
  color: #57aeff;
}

.button.button-empty {
  transition: none;
  background: none;
  box-shadow: none;
}

.button.button-empty, .button.button-empty:hover {
  color: #3692e7;
}

.button.button-empty.button-red, .button.button-empty.button-red:hover {
  color: #cc3333;
}

.button.button-empty.button-green, .button.button-empty.button-green:hover {
  color: #629924;
}

.button.button-metal, .button.button-metal:hover {
  color: #999999;
}

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

.button.active {
  color: #fff;
}

.button.active:not(.disabled):hover {
  color: #fff;
}

.user-link {
  color: #bababa;
}

.user-link.online .line {
  color: #629924;
  opacity: 0.9;
}

.user-link.online .line::before {
  content: '';
}

.user-link.online .line.patron {
  opacity: 1;
}

.user-link .line {
  color: #bababa;
  opacity: 0.5;
  display: inline-block;
  width: 1.5em;
  text-align: center;
  vertical-align: text-top;
  /* not sure about that */
  /* Wings marking a rapid win streak of 3+ games. The number is drawn on the wings. */
}

.user-link .line.patron {
  opacity: 0.8;
}

.user-link .line::before {
  content: '';
}

.user-link .line.patron::before {
  content: '' !important;
}

.user-link .line.streak {
  position: relative;
  opacity: 1;
  color: #bf811d;
  /* The number is kept strictly inside the icon's own box. .user-link extends
         %nowrap-hidden (overflow: hidden), and in a flex/grid row the anchor is
         blockified so that overflow really clips -- anything drawn above the line
         box (the earlier `top: -0.35em`) lost its top ~3.8px.
         Centred by line box rather than flex on purpose: the pseudo then owns its
         text, which is what background-clip:text needs for the shine sweep. */
}

.user-link .line.streak::before {
  content: '' !important;
}

.user-link .line.streak::after {
  content: attr(data-streak);
  position: absolute;
  left: 0;
  top: 50%;
  width: 100%;
  text-align: center;
  font-family: 'Noto Sans', Sans-Serif;
  /* 20% up from 0.48em. The transform below is in em, so it grows with this and
           spends the bottom clearance first: 1.5px measured at real size, down from
           3.3px at 0.48em. The next increase wants a smaller nudge, not a bigger size. */
  font-size: 0.576em;
  font-weight: bold;
  line-height: 1;
  /* black on the gold wings in light themes; dark themes swap in a metallic
           silver via the two $c-streak* variables */
  color: #d5d9df;
  text-shadow: 0 -0.5px 0 rgba(255, 255, 255, 0.92), 0 0.7px 0.35px rgba(0, 0, 0, 0.8);
  opacity: 1;
  /* Nudge it down-right onto the wing. The containing block is the icon box,
           so this still has to land inside it or an ancestor's overflow clips the
           number again. */
  transform: translate(0.2em, calc(-50% + 0.3em));
  /* Shine sweep: the metal is a gradient and a bright band travels across it.
           That needs background-clip:text, which only clips to text the element
           itself owns - hence the line-box centring above rather than flex. Any
           browser without it keeps the flat $c-streak fill declared above. */
}

@supports (background-clip: text) or (-webkit-background-clip: text) {
  .user-link .line.streak::after {
    /* A white band alone is only ~1.4:1 against this silver - invisible in
             practice. The dark trailing edge is what actually reads as movement:
             ~4.4:1 against the same silver, and it composites to black on the
             light theme, where the white band is already 21:1 on its own. */
    background-image: linear-gradient(105deg, #d5d9df 0%, #d5d9df 30%, #fff 44%, #fff 50%, rgba(0, 0, 0, 0.55) 56%, #d5d9df 70%, #d5d9df 100%);
    background-repeat: no-repeat;
    background-size: 300% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
    /* a text-shadow paints over a clipped background, so bevel with a filter */
    text-shadow: none;
    filter: drop-shadow(0 -0.45px 0 rgba(255, 255, 255, 0.9)) drop-shadow(0 0.5px 0.4px rgba(0, 0, 0, 0.75));
    animation: streak-shine 5.4s linear infinite;
    /* Both ends of the sweep park the band clear of the digits, so simply
             stopping the animation leaves a clean static number. */
  }
  @media (prefers-reduced-motion: reduce) {
    .user-link .line.streak::after {
      animation: none;
    }
  }
}

.user-link .line.moderator::before {
  content: '';
}

a.user-link:hover {
  color: #3692e7;
}

/* The glint travels left to right, then rests. `linear` on purpose: an eased band
   would read as a pulse rather than light crossing the metal. */
@keyframes streak-shine {
  0%,
  12% {
    background-position: 100% 0;
  }
  62%,
  100% {
    background-position: 0% 0;
  }
}

.utitle {
  color: #bf811d;
  font-weight: bold;
  /* U+1FAEA (distorted face) falls back to bundled subset font when system lacks it */
  font-family: 'Distorted Face', 'Noto Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', Sans-Serif;
}

.utitle[data-bot] {
  color: #b72fc6;
}

#blind-mode {
  margin-left: -99999px;
  height: 0;
}

.blind-mode #blind-mode {
  text-align: center;
  padding: 5px 0;
  background: #888;
  margin-left: 0;
  height: auto;
}

.blind-mode .is::before,
.blind-mode .is::after,
.blind-mode [data-icon]::before {
  content: none;
  display: none;
  visibility: hidden;
}

#friend_box {
  display: none;
  position: fixed;
  bottom: 0;
  right: 0;
  z-index: 2;
  background: #3c3934;
  border: 1px solid #404040;
  border-right: 0;
  border-bottom: 0;
  border-top-left-radius: 3px;
  font-size: 0.9rem;
  min-width: 280px;
  width: fit-content;
  max-width: 480px;
  max-height: 95%;
  /* improve scroll perfs */
  backface-visibility: hidden;
  overflow-y: auto;
}

@media (min-width: 980px) and (min-height: 600px) {
  #friend_box {
    display: block;
  }
}

@media (hover: hover) {
  #friend_box:not(:hover) {
    scrollbar-width: none;
  }
  #friend_box:not(:hover)::-webkit-scrollbar {
    display: none;
  }
}

#friend_box .friend_box_title {
  cursor: pointer;
  padding: 3px 5px;
  border-bottom: 1px solid #404040;
}

#friend_box .content {
  max-height: 80vh;
  overflow-x: auto;
  overflow-y: auto;
}

#friend_box .content div {
  display: flex;
}

#friend_box .content div:hover {
  background: #404333;
}

#friend_box .content a {
  flex: 1 1 100%;
  padding: 3px 0px;
  display: block;
  transition: background 0.13s;
}

#friend_box .content a:hover {
  color: #bababa;
}

#friend_box .content a.user-link {
  overflow: visible;
  text-overflow: clip;
  white-space: nowrap;
  word-break: normal;
}

#friend_box .content a.user-link .line::before {
  color: #629924;
  content: '';
}

#friend_box .content a.tv {
  flex: 0 0 auto;
  padding: 0 5px;
}

#friend_box .content a.friend-study {
  flex: 0 0 auto;
  padding: 2px 5px 0 5px;
}

#friend_box .content i.line {
  opacity: 0.6;
}

#friend_box .nobody {
  text-align: center;
  height: 100%;
  padding: 3px 5px;
}

#friend_box .nobody span {
  display: block;
  margin: 5px;
}

#friend_box a.find {
  display: none;
  margin: 7px;
  font-style: normal;
}

#friend_box .nobody:hover a.find {
  display: block;
}

signal {
  display: inline-block;
  height: 1em;
  width: 1.5em;
  overflow: visible;
  white-space: nowrap;
}

signal > i {
  width: 20%;
  margin-left: 1px;
  display: inline-block;
  height: 40%;
  background-color: #4f7a1d;
}

signal > i:nth-child(2) {
  height: 60%;
}

signal > i:nth-child(3) {
  height: 80%;
}

signal > i:nth-child(4) {
  height: 100%;
}

signal.q1 > i {
  background-color: #cc3333;
}

signal.q2 > i {
  background-color: #bf811d;
}

signal > i.off {
  background-color: #4d4d4d;
}

#powerTip,
#miniGame {
  width: 20rem;
  min-height: 3em;
  background: #3c3934;
  display: none;
  position: absolute;
  z-index: 120;
}

#powerTip .mini-game__player,
#miniGame .mini-game__player {
  padding: 3px 0.5em 0.3em 0.7em;
}

#powerTip .mini-game__player:first-child,
#miniGame .mini-game__player:first-child {
  padding: 0.3em 0.5em 3px 0.7em;
}

.upt__info {
  height: 83px;
  padding: 0.4em 0.5em 0.3em 0.5em;
  border-bottom: 1px solid #404040;
  overflow: hidden;
}

body.no-rating .upt__info {
  height: 30px;
}

.upt__info__top__country {
  margin-left: 0.5em;
}

.upt__info__top .user-link {
  display: block;
}

.upt__info__top .user-link .line {
  vertical-align: middle;
}

.upt__info__top__country {
  font-size: 0.9em;
}

.upt__info__top__country img {
  margin-right: 0.3em;
}

.upt__info__ratings {
  margin-top: 3px;
}

.upt__info__ratings > span {
  flex: 0 0 25%;
  max-width: 25%;
  padding: 2px 3px;
  text-align: left;
}

.upt__info__warning {
  text-align: center;
  color: #cc3333;
  flex: 1 1 auto;
}

.upt__score {
  display: block;
  font-size: 1rem;
  line-height: 1.5rem;
  text-align: center;
}

.upt__actions.btn-rack {
  width: 100%;
  justify-content: stretch;
  border: 0;
  border-radius: 0;
}

.upt__actions.btn-rack a {
  flex: 0 0 18%;
}

.upt__actions.btn-rack a.relation-button {
  flex: 1 1 auto;
}

.upt__mod {
  white-space: nowrap;
}

.upt__mod__marks {
  padding: 3px 5px;
  background: #cc3333;
  color: #fff;
}

.upt__mod span {
  padding: 0.3em 0.5em 0.3em 0.5em;
  margin: 0;
}

#miniGame {
  min-height: 262px;
}

#miniGame .spinner {
  margin: 82px auto 0 auto;
}

#miniGame cg-board {
  border-radius: 0;
}

.mini-game {
  display: block;
}

.mini-game, .mini-game:hover {
  color: #bababa;
}

.mini-game__player {
  padding: 3px 2px 0 2px;
}

.mini-game__player:first-child {
  padding: 0 2px 2px 2px;
}

.mini-game__user {
  display: flex;
  align-items: baseline;
  overflow: hidden;
}

.mini-game .name {
  overflow: hidden;
  text-overflow: ellipsis;
}

.mini-game .rating {
  font-size: 0.9em;
  margin-left: 1ch;
}

.mini-game__clock {
  padding-left: 2ch;
}

.mini-game__clock.clock--run {
  color: #d64f00;
  font-weight: bold;
}

.mini-game__result {
  font-weight: bold;
  margin-right: 1ch;
}

.btn-rack {
  display: inline-flex;
  align-items: center;
  border: 1px solid #404040;
  user-select: none;
}

.btn-rack .btn-rack {
  /* embedded racks */
  border: none;
}

.btn-rack__btn,
.btn-rack form {
  justify-content: center;
  text-align: center;
  line-height: 2rem;
  cursor: pointer;
  border-right: 1px solid #404040;
  color: #bababa;
  white-space: nowrap;
}

.btn-rack__btn:hover,
.btn-rack form:hover {
  color: #bababa;
}

.btn-rack__btn:last-child,
.btn-rack form:last-child {
  border: 0;
}

.btn-rack__btn i,
.btn-rack form i {
  letter-spacing: -1px;
}

.btn-rack__btn {
  padding: 0 0.6em;
}

.btn-rack__btn.active {
  color: #fff;
}

/* circular loader */
@keyframes mask1 {
  0% {
    stroke-dashoffset: 180.87;
  }
  100% {
    stroke-dashoffset: -180.87;
  }
}

@keyframes mask2 {
  0% {
    stroke-dashoffset: 214.83;
  }
  100% {
    stroke-dashoffset: -146.91;
  }
}

@keyframes mask3 {
  0% {
    stroke-dashoffset: 257.43;
  }
  100% {
    stroke-dashoffset: -104.31;
  }
}

@keyframes spinner-color {
  0%,
  100% {
    stroke: #3692e7;
  }
  25% {
    stroke: #cc3333;
  }
  50% {
    stroke: #629924;
  }
  75% {
    stroke: #bf811d;
  }
}

@keyframes spinner-color {
  0%,
  100% {
    stroke: #42a5f5;
  }
  25% {
    stroke: #f44336;
  }
  50% {
    stroke: #fdd835;
  }
  75% {
    stroke: #4caf50;
  }
}

.spinner {
  width: 70px;
  height: 70px;
  margin: auto;
}

.spinner path {
  animation: mask1 2.75s cubic-bezier(0.49, 0.67, 0.45, 0.29) infinite;
}

.spinner path:nth-child(2) {
  animation-name: mask2;
}

.spinner path:nth-child(3) {
  animation-name: mask3;
}

@media (prefers-reduced-motion: reduce) {
  .spinner path {
    animation: none !important;
  }
}

.spinner g {
  animation: spinner-color 11s steps(1) infinite;
  stroke-dasharray: 180.87 180.87;
}

.white .spinner path {
  stroke: #fff;
}

/* small horizontal loader */
@keyframes ddloader {
  0% {
    background-position: left;
  }
  100% {
    background-position: right;
  }
}

.ddloader {
  background: url("../images/loader/whitex1.png") no-repeat;
  animation: ddloader 0.5s steps(15) infinite;
  vertical-align: middle;
  display: inline-block;
  width: 32px;
  height: 8px;
}

@keyframes reconnected {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    transform: translateY(2.5rem);
  }
}

#reconnecting {
  font-size: 1.2em;
  font-weight: bold;
  position: fixed;
  background: #cc3333;
  color: #fff;
  position: fixed;
  bottom: 0;
  left: 0;
  height: 2.5rem;
  padding: 0 1rem;
  border-top-right-radius: 3px;
  z-index: 105;
  opacity: 0;
  transform: translateY(2.5rem);
}

#reconnecting::before {
  font-size: 1.3em;
}

.offline #reconnecting {
  transform: translateY(0);
  opacity: 1;
}

.online.reconnected #reconnecting {
  background: #629924;
  animation: reconnected 2.5s ease-out 1.5s backwards;
}

.online #reconnecting::before {
  content: '';
}

#announce {
  font-size: 1.4em;
  position: fixed;
  background: #3692e7;
  color: #fff;
  position: fixed;
  bottom: 0;
  left: 0;
  padding: 0.7rem 1rem;
  z-index: 104;
  width: 100%;
}

@media (min-width: 500px) {
  #announce {
    width: auto;
    border-top-right-radius: 3px;
  }
}

#announce a {
  color: #fff;
}

#announce time {
  margin-left: 1rem;
}

#announce .actions a {
  font-weight: bold;
  margin-left: 1rem;
}

#announce.announce {
  flex-flow: row nowrap;
  background: #d64f00;
}

.attack-training {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.attack-training__header {
  text-align: center;
  margin-bottom: 1rem;
}

.attack-training__header h1 {
  color: var(--c-brag);
  margin-bottom: 0.5rem;
}

.attack-training__header p {
  color: var(--c-font-dimmer);
  font-size: 1.1rem;
}

.attack-training__game {
  display: flex;
  gap: 2rem;
  justify-content: center;
  align-items: flex-start;
}

.attack-training__board-wrap {
  position: relative;
  padding-bottom: 1.4em;
  padding-left: 1.4em;
}

.attack-training__board {
  width: 480px;
  height: 480px;
  border: 2px solid var(--c-border);
  border-radius: 4px;
  position: relative;
}

.attack-training__files {
  display: flex;
  width: 480px;
  margin-left: 0;
}

.attack-training__files span {
  flex: 1;
  text-align: center;
  font-size: 1.15em;
  font-weight: bold;
  color: var(--c-font-dim);
  user-select: none;
}

.attack-training__ranks {
  position: absolute;
  top: 0;
  left: 0;
  width: 1.4em;
  height: 480px;
  display: flex;
  flex-direction: column;
}

.attack-training__ranks span {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.15em;
  font-weight: bold;
  color: var(--c-font-dim);
  user-select: none;
}

.attack-training__sidebar {
  min-width: 280px;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.attack-training__stats {
  background: var(--c-bg-zebra);
  padding: 1rem;
  border-radius: 4px;
  border: 1px solid var(--c-border);
}

.attack-training__stats > div {
  display: flex;
  justify-content: space-between;
  margin-bottom: 0.5rem;
  font-size: 1.1rem;
  font-weight: bold;
}

.attack-training__stats > div:last-child {
  margin-bottom: 0;
}

.attack-training__timer .timer {
  color: var(--c-brag);
  font-size: 1.3rem;
}

.attack-training__timer .timer.warning {
  color: var(--c-bad);
  animation: pulse 1s infinite;
}

@keyframes pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

.attack-training__score .score {
  color: var(--c-good);
}

.attack-training__score .score.negative {
  color: var(--c-bad);
}

.attack-training__high-score {
  display: flex;
  justify-content: space-between;
  margin-bottom: 0.5rem;
  font-size: 1.1rem;
  font-weight: bold;
}

.attack-training__high-score .high-score-value {
  color: #f5a623;
}

.attack-training__high-score .high-score-date {
  font-size: 0.85rem;
  font-weight: normal;
  color: var(--c-font-dim);
}

.attack-training__position-complete {
  margin-top: 0.4rem;
  padding: 0.3rem 0.6rem;
  background: #2ecc71;
  color: #fff;
  border-radius: 4px;
  font-size: 1rem;
  font-weight: bold;
  text-align: center;
  animation: fadeInOut 1s ease forwards;
}

@keyframes fadeInOut {
  0% {
    opacity: 0;
    transform: translateY(-4px);
  }
  15% {
    opacity: 1;
    transform: translateY(0);
  }
  75% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

.new-high-score {
  color: #f5a623 !important;
  font-size: 1.3rem !important;
  font-weight: bold;
}

.attack-training__controls {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.attack-training__instructions {
  background: var(--c-bg-zebra2);
  padding: 1rem;
  border-radius: 4px;
  border: 1px solid var(--c-border);
}

.attack-training__instructions h3 {
  margin-bottom: 0.5rem;
  color: var(--c-font-clear);
}

.attack-training__instructions ul {
  margin: 0;
  padding-left: 1.2rem;
}

.attack-training__instructions li {
  margin-bottom: 0.3rem;
  line-height: 1.4;
}

.attack-training__results {
  text-align: center;
  background: var(--c-bg-zebra);
  padding: 2rem;
  border-radius: 8px;
  border: 2px solid var(--c-border);
  margin-top: 2rem;
}

.attack-training__results h2 {
  color: var(--c-brag);
  margin-bottom: 1rem;
}

.results-stats {
  margin-bottom: 1.5rem;
}

.results-stats p {
  font-size: 1.2rem;
  margin-bottom: 0.5rem;
  display: flex;
  justify-content: center;
  gap: 0.5rem;
}

.results-stats span {
  font-weight: bold;
  color: var(--c-good);
}

/* Piece selection states */
.attack-training__board .piece.selectable {
  cursor: pointer;
  transition: all 0.2s ease;
}

.attack-training__board .piece.selectable:hover {
  filter: brightness(1.3);
  transform: scale(1.05);
}

.attack-training__board .piece.selected {
  filter: drop-shadow(0 0 8px var(--c-good));
  transform: scale(1.1);
}

.attack-training__board .piece.incorrect {
  filter: drop-shadow(0 0 8px var(--c-bad));
  animation: shake 0.5s ease-in-out;
}

/* Square selection for Attack Training */
.attack-training__board square {
  cursor: pointer !important;
  pointer-events: auto !important;
  transition: background-color 0.2s ease;
  position: relative;
}

.attack-training__board square:hover {
  background: rgba(255, 255, 0, 0.2) !important;
}

.attack-training__board square.selected::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 255, 0, 0.5) !important;
  pointer-events: none;
  z-index: 2;
}

.attack-training__board square.missed::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 0, 0.6) !important;
  pointer-events: none;
  z-index: 2;
}

.attack-training__board square.incorrect::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 0, 0, 0.5) !important;
  pointer-events: none;
  z-index: 2;
}

/* Alternative approach using coordinate-based selectors */
.attack-training__board .cg-wrap square.selected {
  background: rgba(0, 255, 0, 0.5) !important;
}

.attack-training__board .cg-wrap square.missed {
  background: rgba(255, 255, 0, 0.6) !important;
}

.attack-training__board .cg-wrap square.incorrect {
  background: rgba(255, 0, 0, 0.5) !important;
}

@keyframes shake {
  0%, 100% {
    transform: translateX(0);
  }
  25% {
    transform: translateX(-3px);
  }
  75% {
    transform: translateX(3px);
  }
}

/* Responsive design */
@media (max-width: 1024px) {
  .attack-training__game {
    flex-direction: column;
    align-items: center;
  }
  .attack-training__board {
    width: 400px;
    height: 400px;
  }
  .attack-training__sidebar {
    width: 100%;
    max-width: 400px;
  }
}

@media (max-width: 768px) {
  .attack-training__board {
    width: 320px;
    height: 320px;
  }
  .attack-training__sidebar {
    max-width: 320px;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS9jc3MvYnVpbGQvc2l0ZS5kYXJrLmNzcyIsInNvdXJjZXMiOlsic2l0ZS9jc3MvYnVpbGQvc2l0ZS5kYXJrLnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19kYXJrLnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19kZWZhdWx0LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mdW5jdGlvbnMuc2NzcyIsInNpdGUvY3NzL2J1aWxkL19zaXRlLnNjc3MiLCJjb21tb24vY3NzL19saWNoZXNzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL19icmVha3BvaW50LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3NldHRpbmdzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2NvbnRleHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9faGVscGVycy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19wYXJzZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19zaW5nbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3NpbmdsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX2RvdWJsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LXBhaXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL2RvdWJsZS9fZG91YmxlLXN0cmluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fdHJpcGxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy90cmlwbGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19yZXNvbHV0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9yZXNvbHV0aW9uL19yZXNvbHV0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX25vLXF1ZXJ5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3Jlc3BvbmQtdG8uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbGVnYWN5LXNldHRpbmdzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19hbGwuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX3otaW5kZXguc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX21lZGlhLXF1ZXJpZXMuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX3ZhcmlhYmxlcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdW5pYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX21peGlucy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZXh0ZW5kcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZmxleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fYm94LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbHVpZC1zaXplLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX2VsZW1lbnRzLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX2Zvcm0uc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fZm9udHMuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwiY29tbW9uL2Nzcy9iYXNlL19kYXRhLWljb24uc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fdW5yZWFkLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX3V0aWwuc2NzcyIsImNvbW1vbi9jc3MvbGF5b3V0L19iYXNlLnNjc3MiLCJjb21tb24vY3NzL2xheW91dC9fcGFnZS1tZW51LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc3VibmF2LnNjc3MiLCJjb21tb24vY3NzL3ZlbmRvci9jaGVzc2dyb3VuZC9fY2hlc3Nncm91bmQuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19ib2FyZC0yZC5zY3NzIiwiY29tbW9uL2Nzcy92ZW5kb3IvY2hlc3Nncm91bmQvX3RoZW1lcy5zY3NzIiwiY29tbW9uL2Nzcy92ZW5kb3IvY2hlc3Nncm91bmQvX2RhcmstYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvaGVhZGVyL19oZWFkZXIuc2NzcyIsImNvbW1vbi9jc3MvaGVhZGVyL190b3BuYXYtaGlkZGVuLnNjc3MiLCJjb21tb24vY3NzL2hlYWRlci9fdG9wbmF2LXZpc2libGUuc2NzcyIsImNvbW1vbi9jc3MvaGVhZGVyL190aXRsZS5zY3NzIiwiY29tbW9uL2Nzcy9oZWFkZXIvX2J1dHRvbnMuc2NzcyIsImNsaS9jc3MvX2NsaW5wdXQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19ib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2JveC5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2J1dHRvbi5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX3VzZXItbGluay5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2JsaW5kLW1vZGUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mcmllbmQtYm94LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc2lnbmFsLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fcG93ZXItdGlwLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbWluaS1nYW1lLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fYnRuLXJhY2suc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19sb2FkZXIuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19yZWNvbm5lY3Rpbmcuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19hbm5vdW5jZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2F0dGFjay50cmFpbmluZy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvdGhlbWUvZGFyayc7XG5AaW1wb3J0ICdzaXRlJztcbiIsIkBpbXBvcnQgJ2RlZmF1bHQnO1xuXG4kdGhlbWU6ICdkYXJrJztcbiRjb2xvci1zY2hlbWU6ICdkYXJrJztcbiR0aGVtZS1saWdodDogZmFsc2U7XG4kdGhlbWUtZGFyazogdHJ1ZTtcblxuQGZ1bmN0aW9uIGMtZGltbWVyKCRjb2xvciwgJHdlaWdodDogMjAlKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbkBmdW5jdGlvbiBjLWNsZWFyZXIoJGNvbG9yLCAkd2VpZ2h0OiAyMCUpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDglKTtcbiRjLWJnLWhpZ2g6IGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDE0JSk7XG4kYy1iZy1sb3c6IGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDIyJSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDUlLCAxOCUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDUlLCAyMyUpO1xuXG4kYy1ib2R5LWdyYWRpZW50OiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgMTYlKTtcblxuJGMtZm9udDogaHNsKDAsIDAlLCA3MyUpO1xuJGMtZm9udC1kaW06IGMtbGlnaHQoJGMtZm9udCwgNjAlKTtcbiRjLWZvbnQtZGltbWVyOiBjLWxpZ2h0KCRjLWZvbnQsIDQyJSk7XG4kYy1mb250LWNsZWFyOiBjLWxpZ2h0KCRjLWZvbnQsIDgwJSk7XG4kYy1mb250LWNsZWFyZXI6IGMtbGlnaHQoJGMtZm9udCwgODklKTtcbiRjLXNoYWRlOiBjLWxpZ2h0KCRjLWZvbnQsIDMwJSk7XG4kYy1mb250LXBhZ2U6ICRjLWZvbnQtZGltO1xuXG4vKiBQcmltYXJ5OiBibHVlICovXG4kYy1wcmltYXJ5OiBoc2woMjA5LCA3OSUsIDU2JSk7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSwgMTUlKTtcbiRjLXByaW1hcnktY2xlYXI6IGMtY2xlYXJlcigkYy1wcmltYXJ5KTtcblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG5cbi8qIEJyYWc6IGdvbGQgKi9cbiRjLWJyYWc6IGhzbCgzNywgNzQlLCA0MyUpO1xuXG4vKiBOdW1iZXIgZHJhd24gb24gdGhlIHN0cmVhayB3aW5nczogc2lsdmVyIHdpdGggYSBoaWdobGlnaHQgYWJvdmUgYW5kIGEgc2hhZGVcbiAgIGJlbG93LCBzbyBpdCByZWFkcyBhcyBicnVzaGVkIG1ldGFsIHJhdGhlciB0aGFuIGZsYXQgZ3JleS4gR3JhZGllbnQgdGV4dCBpcyBub3RcbiAgIGFuIG9wdGlvbiAtIGJhY2tncm91bmQtY2xpcDp0ZXh0IHBhaW50cyBhbG1vc3Qgbm90aGluZyBpbnNpZGUgdGhlIGZsZXgtY29udGFpbmVyXG4gICBwc2V1ZG8gdGhhdCBkcmF3cyB0aGlzIG51bWJlci4gY29oZW5jaGVzcyBhbmQgdHJhbnNwIEBpbXBvcnQgdGhpcyBmaWxlLiAqL1xuJGMtc3RyZWFrOiAjZDVkOWRmO1xuJGMtc3RyZWFrLXNoYWRvdzogMCAtMC41cHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIpLCAwIDAuN3B4IDAuMzVweCByZ2JhKDAsIDAsIDAsIDAuOCk7XG4vKiBUaGUgc2hpbmUgdHJlYXRtZW50IGNsaXBzIHRoZSBncmFkaWVudCB0byB0aGUgZ2x5cGhzLCBhbmQgYSB0ZXh0LXNoYWRvdyB3b3VsZFxuICAgcGFpbnQgb3ZlciB0aGF0IGNsaXBwZWQgYmFja2dyb3VuZCAtIHNvIHRoZSBzYW1lIGJldmVsIGlzIGV4cHJlc3NlZCBhcyBhIGZpbHRlci4gKi9cbiRjLXN0cmVhay1maWx0ZXI6IGRyb3Atc2hhZG93KDAgLTAuNDVweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KSkgZHJvcC1zaGFkb3coMCAwLjVweCAwLjRweCByZ2JhKDAsIDAsIDAsIDAuNzUpKTtcblxuLyogRmFuY3k6IHBpbmsgKi9cbiRjLWZhbmN5OiBoc2woMjk0LCA2MiUsIDQ4JSk7XG5cbi8qIEdvb2Q6IGdyZWVuICovXG4kYy1nb29kOiAkYy1zZWNvbmRhcnk7XG4kYy1nb29kLW92ZXI6ICRjLXNlY29uZGFyeS1vdmVyO1xuXG4vKiBXYXJuOiBvcmFuZ2UgKi9cbiRjLXdhcm46ICRjLWJyYWc7XG4kYy13YXJuLW92ZXI6ICRjLWJyYWctb3ZlcjtcblxuLyogQmFkOiByZWQgKi9cbiRjLWJhZDogJGMtZXJyb3I7XG4kYy1iYWQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuJGMtbGluazogJGMtcHJpbWFyeTtcbiRjLWxpbmstZGltOiAkYy1wcmltYXJ5LWRpbTtcbiRjLWxpbmstY2xlYXI6ICRjLXByaW1hcnktY2xlYXI7XG4kYy1saW5rLWhvdmVyOiBjLWNsZWFyZXIoc2F0dXJhdGUoJGMtcHJpbWFyeSwgMTAwJSksIDI1JSk7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDEzJSk7XG5cbiRjLWJnLXBvcHVwOiAkYy1iZy1sb3c7XG4kYy1wb3B1cDogJGMtZm9udC1jbGVhcjtcblxuJGMtYmctaGVhZGVyLWRyb3Bkb3duOiAkYy1iZy1wb3B1cDtcbiRjLWhlYWRlci1kcm9wZG93bjogJGMtcG9wdXA7XG5cbiRjLWJvdDogJGMtZmFuY3k7XG5cbiRjLXBhZ2UtaW5wdXQ6ICRjLWJnLWJveDtcblxuJGMtYm9yZGVyOiBoc2woMCwgMCUsIDI1JSk7XG4kYy1ib3JkZXItcGFnZTogaHNsKDAsIDAlLCAyMiUpO1xuJGJvcmRlcjogJGJvcmRlci13aWR0aCAkYm9yZGVyLXN0eWxlICRjLWJvcmRlcjtcblxuJGMtZm9udC1zaGFkb3c6IGJsYWNrO1xuJHRleHQtc2hhZG93OiBub25lO1xuXG5AbWl4aW4gbWV0YWwtYmcge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woJGMtc2l0ZS1odWUsIDclLCAyMiksIGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDE5KSAxMDAlKTtcbn1cblxuQG1peGluIG1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWwtYmc7XG59XG5cbkBtaXhpbiBtZXRhbC1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDI1KSwgaHNsKCRjLXNpdGUtaHVlLCA1JSwgMjIpIDEwMCUpO1xuICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbn1cblxuQG1peGluIHBhZ2UtbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuQG1peGluIHBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBtZXRhbC1ob3Zlcjtcbn1cblxuQG1peGluIHRoZW1lLXN0eWxlIHtcbn1cbiIsIkBpbXBvcnQgJy4uL2Fic3RyYWN0L2Z1bmN0aW9ucyc7XG5cbi8qIENvbG9ycyAqL1xuXG5AZnVuY3Rpb24gYy1kaW1tZXIoJGNvbG9yLCAkd2VpZ2h0OiAxNyUpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGMtY2xlYXJlcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG4kYy1zaXRlLWh1ZTogMzc7XG5cbiRjLWJnLXBhZ2U6IGhzbCgkYy1zaXRlLWh1ZSwgMTAlLCA5MiUpO1xuXG4vLyBoc2woMjEwLCAxNyUsIDk1JSlcbiRjLWJnLWhpZ2g6IGhzbCgwLCAwJSwgMTAwJSk7XG4kYy1iZy1sb3c6IGhzbCgwLCAwJSwgODklKTtcblxuLyogZXZlbiByb3dzIGluIGxpc3Qgb3IgdGFibGVzLCBzdWJ0bGUgc2hhZGUgb2YgJGMtYmctaGlnaCAqL1xuJGMtYmctemVicmE6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA5Ni41JSk7XG4kYy1iZy16ZWJyYTI6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA5MiUpO1xuXG4kYy1ib2R5LWdyYWRpZW50OiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgODQlKTtcblxuJGMtZm9udDogaHNsKDAsIDAlLCAzMCUpO1xuJGMtZm9udC1kaW06IGMtbGlnaHQoJGMtZm9udCwgNDclKTtcbiRjLWZvbnQtZGltbWVyOiBjLWxpZ2h0KCRjLWZvbnQsIDcwJSk7XG4kYy1mb250LWNsZWFyOiBjLWxpZ2h0KCRjLWZvbnQsIDEyJSk7XG4kYy1mb250LWNsZWFyZXI6IGMtbGlnaHQoJGMtZm9udCwgMCUpO1xuJGMtc2hhZGU6IGMtZGltbWVyKCRjLWZvbnQsIDgwJSk7XG4kYy1mb250LXBhZ2U6IGMtbGlnaHQoJGMtZm9udCwgMzclKTtcblxuLyogUHJpbWFyeTogYmx1ZSAqL1xuJGMtcHJpbWFyeTogaHNsKDIwOSwgNzclLCA0NiUpO1xuJGMtcHJpbWFyeS1kaW06IGMtZGltbWVyKCRjLXByaW1hcnkpO1xuJGMtcHJpbWFyeS1jbGVhcjogYy1jbGVhcmVyKCRjLXByaW1hcnkpO1xuJGMtcHJpbWFyeS1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgcHJpbWFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIFNlY29uZGFyeTogZ3JlZW4gKi9cbiRjLXNlY29uZGFyeTogaHNsKDg4LCA2MiUsIDM3JSk7XG4kYy1zZWNvbmRhcnktZGltOiBjLWRpbW1lcigkYy1zZWNvbmRhcnkpO1xuJGMtc2Vjb25kYXJ5LWRpbW1lcjogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5LCA0MCUpO1xuJGMtc2Vjb25kYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBzZWNvbmRhcnkgYmFja2dyb3VuZCAqL1xuXG4vKiBBY2NlbnQ6IG9yYW5nZSAqL1xuJGMtYWNjZW50OiBoc2woMjIsIDEwMCUsIDQyJSk7XG4kYy1hY2NlbnQtZGltOiBjLWRpbW1lcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LWNsZWFyOiBjLWNsZWFyZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYWNjZW50IGJhY2tncm91bmQgKi9cblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQ4JSk7XG4kYy1icmFnLW92ZXI6ICNmZmY7XG5cbi8qIE51bWJlciBkcmF3biBvbiB0aGUgc3RyZWFrIHdpbmdzLiBEYXJrIGluayByZWFkcyBhZ2FpbnN0IHRoZSBnb2xkOyBkYXJrIHRoZW1lc1xuICAgKGRhcmssIGNvaGVuY2hlc3MsIHRyYW5zcCkgb3ZlcnJpZGUgdGhpcyBwYWlyIHdpdGggbWV0YWxsaWMgc2lsdmVyLiAqL1xuJGMtc3RyZWFrOiAjMDAwO1xuJGMtc3RyZWFrLXNoYWRvdzogbm9uZTtcbi8qIFNhbWUgYmV2ZWwgYWdhaW4sIGZvciBicm93c2VycyB0aGF0IHRha2UgdGhlIGdyYWRpZW50LWNsaXAgcGF0aC4gKi9cbiRjLXN0cmVhay1maWx0ZXI6IG5vbmU7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogRXJyb3I6IHJlZCAqL1xuJGMtcmVkOiBoc2woMCwgNjAlLCA1MCUpO1xuJGMtZXJyb3I6ICRjLXJlZDtcbiRjLWVycm9yLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBIZWFydDogcmVkICovXG4kYy1oZWFydDogJGMtZXJyb3I7XG4kYy1oZWFydC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYxJSwgNjIlKTtcbiRjLWZhbmN5LW92ZXI6IHdoaXRlO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAzNSUpO1xuJGMtbGluay1vdmVyOiAkYy1wcmltYXJ5LW92ZXI7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDk4JSk7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCA4NSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgODAlKTtcblxuJGMtcGFnZS1tYXNrOiBoc2xhKDAsIDAsIDAlLCAwLjYpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctaGlnaDtcbiRjLXBvcHVwOiAkYy1mb250O1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtZm9udC1zaGFkb3c6IHdoaXRlO1xuJHRleHQtc2hhZG93OiAwIDFweCAwICRjLWZvbnQtc2hhZG93O1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1sb3c7XG5cbi8qIEJvcmRlcnMgKi9cblxuJGJvcmRlci13aWR0aDogMXB4O1xuJGJvcmRlci1zdHlsZTogc29saWQ7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4vKiBTaGFkb3dzICovXG5cbiRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG5cbi8vICRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsMCwwLC4xNTcpO1xuIiwiQGZ1bmN0aW9uIGMtbGlnaHQoJGNvbG9yLCAkdmFsdWUpIHtcbiAgQHJldHVybiBjaGFuZ2UtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkdmFsdWUpO1xufVxuXG5AZnVuY3Rpb24gaW1nLXVybCgkcGF0aCkge1xuICBAcmV0dXJuIHVybCgnI3skaW1nLXBhdGh9LyN7JHBhdGh9Jyk7XG59XG4iLCJAaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2xpY2hlc3MnO1xuIiwiLyogQ29tbW9uIGltcG9ydHMgZm9yIGFsbCBwYWdlcyAqL1xuXG5AaW1wb3J0ICcuLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQnO1xuXG5AaW1wb3J0ICdhYnN0cmFjdC9hbGwnO1xuXG5AaW1wb3J0ICdiYXNlL2VsZW1lbnRzJztcbkBpbXBvcnQgJ2Jhc2UvZm9ybSc7XG5AaW1wb3J0ICdiYXNlL2ZvbnRzJztcbkBpbXBvcnQgJ2Jhc2UvdHlwb2dyYXBoeSc7XG5AaW1wb3J0ICdiYXNlL2RhdGEtaWNvbic7XG5AaW1wb3J0ICdiYXNlL3VucmVhZCc7XG5AaW1wb3J0ICdiYXNlL3V0aWwnO1xuXG5AaW5jbHVkZSB0aGVtZS1zdHlsZTtcblxuQGltcG9ydCAnbGF5b3V0L2Jhc2UnO1xuQGltcG9ydCAnbGF5b3V0L3BhZ2UtbWVudSc7XG5cbkBpbXBvcnQgJ3ZlbmRvci9jaGVzc2dyb3VuZC9jaGVzc2dyb3VuZCc7XG5cbkBpbXBvcnQgJ2hlYWRlci9oZWFkZXInO1xuQGltcG9ydCAnLi4vLi4vY2xpL2Nzcy9jbGlucHV0JztcblxuQGltcG9ydCAnY29tcG9uZW50L2JvYXJkJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9ib3gnO1xuQGltcG9ydCAnY29tcG9uZW50L2J1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnQvdXNlci1saW5rJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9ibGluZC1tb2RlJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9mcmllbmQtYm94JztcbkBpbXBvcnQgJ2NvbXBvbmVudC9zaWduYWwnO1xuQGltcG9ydCAnY29tcG9uZW50L3Bvd2VyLXRpcCc7XG5AaW1wb3J0ICdjb21wb25lbnQvbWluaS1nYW1lJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9idG4tcmFjayc7XG5AaW1wb3J0ICdjb21wb25lbnQvbG9hZGVyJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9yZWNvbm5lY3RpbmcnO1xuQGltcG9ydCAnY29tcG9uZW50L2Fubm91bmNlJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9hdHRhY2sudHJhaW5pbmcnO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCJAaW1wb3J0ICdmdW5jdGlvbnMnO1xuQGltcG9ydCAnei1pbmRleCc7XG5AaW1wb3J0ICdtZWRpYS1xdWVyaWVzJztcbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd1bmlib2FyZCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAnZXh0ZW5kcyc7XG5AaW1wb3J0ICdmbGV4JztcbkBpbXBvcnQgJ2JveCc7XG5AaW1wb3J0ICdmbHVpZC1zaXplJztcbiIsIi8vLyBaLWluZGV4ZXMgbWFwLCBnYXRoZXJpbmcgYWxsIFogbGF5ZXJzIG9mIHRoZSBhcHBsaWNhdGlvblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE1hcFxuLy8vIEBwcm9wIHtTdHJpbmd9IGtleSAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHByb3Age051bWJlcn0gdmFsdWUgLSBaIHZhbHVlIG1hcHBlZCB0byB0aGUga2V5XG4kei1pbmRleGVzOiAoXG4gICdjZ19fcHJvbW90aW9uJzogMjA1LFxuICAnY2dfX3BpZWNlLmRyYWdnaW5nJzogMjA0LFxuICAnY2dfX2JvYXJkLm92ZXJsYXknOiAxMDAsXG4gICdjZ19fcGllY2UuYW5pbSc6IDMsXG4gICdjZ19fc3ZnLmNnLXNoYXBlcyc6IDIsXG4gICdjZ19fc3ZnLmNnLWN1c3RvbS1zdmdzJzogNCxcbiAgJ2NnX19waWVjZSc6IDIsXG4gICdjZ19fcGllY2UuZmFkaW5nJzogMSxcbiAgJ3Bvd2VydGlwJzogMTIwLFxuICAnY29tcGxldGUnOiAxMTIsXG4gICdpbnF1aXJ5JzogMTExLFxuICAnemVuLXRvZ2dsZSc6IDExMCxcbiAgJ21vZGFsJzogMTEwLFxuICAnbXNlbGVjdCc6IDExMCxcbiAgJ3RvcG5hdic6IDExMCxcbiAgJ2Z1bGxzY3JlZW4tbWFzayc6IDEwOSxcbiAgJ2Ryb3Bkb3duJzogMTA4LFxuICAnY29udGV4dC1tZW51JzogMTA3LFxuICAnc2l0ZS1oZWFkZXInOiAxMDYsXG4gICdyZWNvbm5lY3RpbmcnOiAxMDUsXG4gICd0b3VyLXJlbWluZGVyJzogMTA0LFxuICAnbXotbWVudSc6IDQsXG4gICdhYm92ZS1saW5rLW92ZXJsYXknOiAzLFxuICAnZnJpZW5kLWJveCc6IDIsXG4gICdsaW5rLW92ZXJsYXknOiAyLFxuICAnZ2FtZS1ib29rbWFyayc6IDIsXG4gICdzdWJuYXYtc2lkZSc6IDIsXG4gICdkZWZhdWx0JzogMCxcbik7XG5cbi8vLyBHZXQgYSB6LWluZGV4IHZhbHVlIGZyb20gYSBsYXllciBuYW1lXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheWVyIC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy8gQHJlcXVpcmUgJHotaW5kZXhlc1xuQGZ1bmN0aW9uIHooJGxheWVyKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkei1pbmRleGVzLCAkbGF5ZXIpO1xufVxuIiwiLyogV2lkdGhzICovXG5cbiRtcS14eC1zbWFsbDogbWluLXdpZHRoIDUwMHB4O1xuJG1xLXgtc21hbGw6IG1pbi13aWR0aCA2NTBweDtcbiRtcS1zbWFsbDogbWluLXdpZHRoIDgwMHB4O1xuJG1xLW1lZGl1bTogbWluLXdpZHRoIDk4MHB4O1xuJG1xLWxhcmdlOiBtaW4td2lkdGggMTEyMHB4O1xuJG1xLXgtbGFyZ2U6IG1pbi13aWR0aCAxMjYwcHg7XG5cbiRtcS1ub3QteHgtc21hbGw6IG1heC13aWR0aCA0OTlweDtcbiRtcS1ub3QteC1zbWFsbDogbWF4LXdpZHRoIDY0OXB4O1xuJG1xLW5vdC1zbWFsbDogbWF4LXdpZHRoIDc5OXB4O1xuJG1xLW5vdC1tZWRpdW06IG1heC13aWR0aCA5NzlweDtcbiRtcS1ub3QtbGFyZ2U6IG1heC13aWR0aCAxMTE5cHg7XG4kbXEtbm90LXgtbGFyZ2U6IG1heC13aWR0aCAxMjU5cHg7XG5cbi8qIEhlaWdodHMgKi9cblxuJG1xLXgtc2hvcnQ6IG1pbi1oZWlnaHQgNDAwcHg7XG4kbXEtc2hvcnQ6IG1pbi1oZWlnaHQgNTAwcHg7XG4kbXEtdGFsbDogbWluLWhlaWdodCA2MDBweDtcbiRtcS14LXRhbGw6IG1pbi1oZWlnaHQgNzAwcHg7XG5cbiRtcS1ub3QteC1zaG9ydDogbWF4LWhlaWdodCAzOTlweDtcblxuLyogT3JpZW50YXRpb25zICovXG5cbiRtcS1wb3J0cmFpdDogb3JpZW50YXRpb24gcG9ydHJhaXQ7XG4kbXEtbGFuZHNjYXBlOiBvcmllbnRhdGlvbiBsYW5kc2NhcGU7XG5cbi8qIENhcGFiaWxpdGllcyAqL1xuXG4kbXEtaG92ZXIteWVzOiAnaG92ZXI6IGhvdmVyJztcbiRtcS1ob3Zlci1ubzogaG92ZXIgbm9uZTtcblxuLyogQWxpYXNlcyAqL1xuXG4kbXEtbWFpbi1tYXJnaW46ICRtcS1zbWFsbDtcblxuJG1xLXRvcG5hdi12aXNpYmxlOiAkbXEtbWVkaXVtO1xuJG1xLXRvcG5hdi1oaWRkZW46ICRtcS1ub3QtbWVkaXVtO1xuXG4kbXEtc2l0ZS1oZWFkZXItdGFsbDogJG1xLXRhbGw7XG5cbiRtcS1zdWJuYXYtdG9wOiAkbXEtbm90LXNtYWxsO1xuJG1xLXN1Ym5hdi1zaWRlOiAkbXEtc21hbGw7XG5cbiRtcS16b29tLWVuYWJsZWQ6ICRtcS1zbWFsbCAkbXEtc2hvcnQ7XG4iLCIkZGVidWc6IGZhbHNlO1xuXG4kZm9udC1wYXRoOiAnLi4vZm9udCc7XG4kaW1nLXBhdGg6ICcuLi9pbWFnZXMnO1xuXG4kdmlld3BvcnQtbWluLXdpZHRoOiAzMjBweDtcblxuJGJsb2NrLWdhcDogMnZtaW47XG4kYmxvY2stZ2FwLWhhbGY6IDF2bWluO1xuXG4kYmxvY2stZ2FwLWg6IDJ2aDtcbiRibG9jay1nYXAtdzogMnZ3O1xuJGJsb2NrLWdhcC13LWhhbGY6IDF2dztcblxuJGJveC1yYWRpdXMtc2l6ZTogM3B4O1xuXG4kc2l0ZS1oZWFkZXItdGFsbC1oZWlnaHQ6IDYwcHg7XG4kc2l0ZS1oZWFkZXItc2hvcnQtaGVpZ2h0OiA0MHB4O1xuXG4kdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXM7XG5cbiRtYWluLW1heC13aWR0aDogMTMwMHB4ICFkZWZhdWx0O1xuXG4kbWFpbi1tYXJnaW46IHZhcigtLW1haW4tbWFyZ2luKTtcbiRzaXRlLWhlYWRlci1oZWlnaHQ6IHZhcigtLXNpdGUtaGVhZGVyLWhlaWdodCk7XG5cbiRzaXRlLWhlYWRlci1tYXJnaW46IHZhcigtLXNpdGUtaGVhZGVyLW1hcmdpbik7XG5cbiRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHQ6IGNhbGMoI3skc2l0ZS1oZWFkZXItaGVpZ2h0fSArICN7JHNpdGUtaGVhZGVyLW1hcmdpbn0pO1xuIiwiLyogVW5pYm9hcmQ6IGtlZXAgdGhlIHNhbWUgcGFnZSBsYXlvdXQgYWNyb3NzIHBhZ2VzICovXG5cbiRtcS1ib2FyZC1yZXNpemFibGU6ICRtcS1zbWFsbDtcbiRtcS1jb2wxLXVuaWJvYXJkOiAkbXEtbm90LXNtYWxsICRtcS1wb3J0cmFpdDtcbiRtcS1jb2wyLXVuaWJvYXJkOiAkbXEtc21hbGwsICRtcS1sYW5kc2NhcGU7XG4kbXEtY29sMy11bmlib2FyZDogJG1xLXgtbGFyZ2U7XG5cbi8qIHdoZW4gdGhlIHdpZHRoIGlzIGFwcHJvcHJpYXRlIGZvciBjb2wxLCBidXQgbGFuZHNjYXBlIHByZXZlbnRzIGl0ICovXG4kbXEtY29sMi11bmlib2FyZC1zcXVlZXplOiAkbXEtbm90LXNtYWxsICRtcS1sYW5kc2NhcGU7XG5cbiRjb2wzLXVuaWJvYXJkLXNpZGU6IG1pbm1heCgyMzBweCwgMjB2dyk7XG4kY29sMy11bmlib2FyZC10YWJsZTogbWlubWF4KDI0MHB4LCA0MDBweCk7XG4kY29sMy11bmlib2FyZC1jb250cm9sczogM3JlbTtcblxuJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoOiBjYWxjKDcwdm1pbiAqIHZhcigtLWJvYXJkLXNjYWxlKSk7XG4kY29sMy11bmlib2FyZC1tYXgtd2lkdGg6IGNhbGMoMTAwdmggKiB2YXIoLS1ib2FyZC1zY2FsZSkgLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtd2lkdGg6IG1pbm1heCgkY29sMy11bmlib2FyZC1taW4td2lkdGgsICRjb2wzLXVuaWJvYXJkLW1heC13aWR0aCk7XG5cbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGU6IDAuOTtcblxuLy8gem9vbTogODUlXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aDogNTAwcHg7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aDogY2FsYyhcbiAgMTAwdmggKiAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGV9IC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDMtdW5pYm9hcmQtY29udHJvbHN9XG4pO1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogbWlubWF4KCN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGh9LCAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRofSk7XG5cbiRjb2wyLXVuaWJvYXJkLXRhYmxlOiAkY29sMy11bmlib2FyZC10YWJsZTtcbiRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiRjb2wyLXVuaWJvYXJkLXdpZHRoOiAkY29sMy11bmlib2FyZC13aWR0aDtcbiRjb2wyLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg7XG5cbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtdGFibGU6IG1pbm1heCgyMDBweCwgMjQwcHgpO1xuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS13aWR0aDogbWlubWF4KGNhbGMoNTV2bWluKSwgY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRibG9jay1nYXB9KSk7XG5cbiRjb2wxLXVuaWJvYXJkLWNvbnRyb2xzOiA1cmVtO1xuIiwiQG1peGluIGJveC1yYWRpdXMge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6ICRib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gYm94LW5lYXQge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gZGVidWctem9vbS1pbnB1dCB7XG4gICN6b29tLWlucHV0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtem9vbS1lbmFibGVkKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGJvdHRvbTogM3B4O1xuICAgICAgcmlnaHQ6IDNweDtcbiAgICAgIHdpZHRoOiAxMHZ3O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcDogYWxsLCAkZHVyOiAkdHJhbnNpdGlvbi1kdXJhdGlvbikge1xuICB0cmFuc2l0aW9uOiAkcHJvcCAkZHVyO1xufVxuXG5AbWl4aW4gaG92ZXJmbG93IHtcbiAgb3ZlcmZsb3cteTogYXV0bztcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6bm90KDpob3Zlcikge1xuICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuXG4gICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoaWRlIHtcbiAgZGlzcGxheTogbm9uZTtcblxuICAuYmxpbmQtbW9kZSAmIHtcbiAgICBkaXNwbGF5OiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBlbGxpcHNpcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1sYXJnZSB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogNyAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGNyb3NzdGFibGUtc21hbGwge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBib2R5LWZpeGVkLXNjcm9sbCB7XG4gIGJvZHkge1xuICAgIC8qIHByZXZlbnRzIHNjcm9sbCBiYXIgZmxpY2tlciB3aGVuIGRyYWdnaW5nIGEgcGllY2Ugb3V0ICovXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG4iLCIlYmFzZS1mb250LWZhbGxiYWNrIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lYmFzZS1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lcm9ib3RvIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBTYW5zLVNlcmlmO1xufVxuXG4lcm9ib3RvLWZhdCB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgU2Fucy1TZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuJWNoZXNzLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gQ2hlc3MnLCAnTm90byBTYW5zJztcbn1cblxuJXNhbiB7XG4gIEBleHRlbmQgJWNoZXNzLWZvbnQ7XG5cbiAgLnBpZWNlLWxldHRlciAmIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG4gIH1cblxuICBkcmF3IHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG4gICAgbWFyZ2luLWxlZnQ6IDFjaDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbi8qIHRleHQgcHJpbnRlZCBkaXJlY3RseSBvbiB0aGUgcGFnZSBiYWNrZ3JvdW5kIGRlc2VydmVzIHNwZWNpYWwgdHJlYXRtZW50ICh0cmFuc3AgdGhlbWUpICovXG4lcGFnZS1mb250IHtcbiAgY29sb3I6ICRjLWZvbnQtcGFnZTtcbn1cblxuJXBhZ2UtdGV4dCB7XG4gIEBleHRlbmQgJXBhZ2UtZm9udCwgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lcGFnZS1saW5rIHtcbiAgQGV4dGVuZCAlcGFnZS1saW5rLWZvbnQgIW9wdGlvbmFsO1xuXG4gIEBleHRlbmQgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuJW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbiVwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJXBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lbWV0YWwtYmcge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuJWFjdGl2ZS1pbnNldC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDNweCA0cHggaHNsYSgwLCAwLCAwLCAwLjE1KSBpbnNldDtcbn1cblxuJWFjdGl2ZSB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCBibGFjayAhaW1wb3J0YW50O1xufVxuXG4lYWN0aXZlLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbWl4KHdoaXRlLCAkYy1hY2NlbnQsIDIwJSk7XG59XG5cbiVhY3RpdmUtc29mdCB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG4gIGNvbG9yOiAkYy1mb250LWNsZWFyZXI7XG4gIHRleHQtc2hhZG93OiAxcHggMXB4IDFweCAkYy1mb250LXNoYWRvdyAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuJWRyb3Bkb3duLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IC0xcHggNXB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbiVwb3B1cC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDE0cHggMjhweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwIDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMjIpO1xufVxuXG4lYnV0dG9uLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDVweCAwIGhzbGEoMCwgMCwgMCUsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1yYWlzZWQtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCA0cHggMTBweCAwcHggaHNsYSgwLCAwLCAwLCAwLjIyNSk7XG59XG5cbiVidXR0b24tbm9uZSB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgY29sb3I6ICRjLWZvbnQ7XG4gIGFsaWduLWl0ZW1zOiBub3JtYWw7XG59XG5cbiVjaGVja2JveCB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1wYWdlO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYy1iZy1sb3c7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMC41ZW07XG5cbiAgJjpjaGVja2VkIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnktZGltbWVyO1xuICAgIGJvcmRlci1jb2xvcjogJGMtc2Vjb25kYXJ5LWRpbTtcbiAgfVxufVxuXG4lZm9jdXMtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAwIDEycHggJGMtZm9udC1kaW07XG59XG5cbiV6YWxnb3ZlcmZsb3cge1xuICAvLyBtaXRpZ2F0ZSB6YWxnbyB0ZXh0XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtaGlkZGVuIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1lbGxpcHNpcyB7XG4gIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbiVib3gtcGFkZGluZyB7XG4gIHBhZGRpbmc6IDV2aCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVib3gtcGFkZGluZy1ob3JpeiB7XG4gIHBhZGRpbmc6IDAgdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYnJlYWstd29yZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay13b3JkLWhhcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgLyogc3VwcG9ydDogZmlyZWZveCAqL1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstbm9wZSB7XG4gIG92ZXJmbG93LXdyYXA6IG5vcm1hbDtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuXG4lZWxsaXBzaXMge1xuICBAaW5jbHVkZSBlbGxpcHNpcztcbn1cblxuJXNxdWFyZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ldmlkZW8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XG5cbiAgLyogMTYvOSAqL1xuICAvLyBwYWRkaW5nLWJvdHRvbTogNzUlOyAvKiA0LzMgKi9cbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAqIHtcbiAgICBAZXh0ZW5kICVhYnMtMTAwO1xuXG4gICAgYm9yZGVyOiBub25lO1xuICB9XG59XG5cbiVnYW1lLWVtYmVkIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXh4LXNtYWxsKSB7XG4gICAgcGFkZGluZy1ib3R0b206IDE2MCU7XG4gIH1cbn1cblxuJWRhdGEtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGZvbnQtZmFtaWx5OiAnbGljaGVzcyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1pY29uKTtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4lZGF0YS1pY29uLXRvcCB7XG4gICY6OmJlZm9yZSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICB9XG59XG5cbiVmdWxsc2NyZWVuLW1hc2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogJGMtcGFnZS1tYXNrO1xuICB6LWluZGV4OiB6KCdmdWxsc2NyZWVuLW1hc2snKTtcbn1cblxuJWxpbmstb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiB6KCdsaW5rLW92ZXJsYXknKTtcbn1cblxuJWFicy0xMDAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbiVkb3VibGUtdGFwIHtcbiAgLy8gcHJldmVudCBpUGFkIHNhZmFyaSBmcm9tIHpvb21pbmcgaW4gb24gZG91YmxlIHRhcFxuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cbiIsIiVmbGV4LXdyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xufVxuXG4lZmxleC1jZW50ZXIge1xuICAvKiBleHRlbmRzICVmbGV4LXdyYXAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtY2VudGVyLW5vd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtYmV0d2VlbiB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1ub3dyYXAge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1zdHJldGNoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbn1cblxuJWZsZXgtYXJvdW5kIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG5cbiVmbGV4LWNvbHVtbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uO1xufVxuIiwiJWJveC1yYWRpdXMge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xufVxuXG4lYm94LXJhZGl1cy1mb3JjZSB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvKiBoZWxwcyB3aXRoIGNsaXBwaW5nIGJhY2tncm91bmQgaW50byBib3JkZXItcmFkaXVzICovXG59XG5cbiVib3gtcmFkaXVzLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAkYm94LXJhZGl1cy1zaXplO1xufVxuXG4lYm94LXJhZGl1cy1yaWdodCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDA7XG59XG5cbiVib3gtcmFkaXVzLXRvcCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZSAwIDA7XG59XG5cbiVib3gtcmFkaXVzLWJvdHRvbSB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXRvcC1sZWZ0IHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAwIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1zaGFkb3cge1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG4lYm94LW5lYXQge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cztcbn1cblxuJWJveC1uZWF0LXRvcCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzLXRvcDtcbn1cblxuJWJveC1uZWF0LWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtZm9yY2U7XG59XG4iLCIkdnAtbWluLXdpZHRoOiAzMjBweCAhZGVmYXVsdDtcbiR2cC1tYXgtd2lkdGg6IDEyMDBweCAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJHZhbHVlKSB7XG4gIEByZXR1cm4gJHZhbHVlIC8gKCR2YWx1ZSAqIDAgKyAxKTtcbn1cblxuQG1peGluIGZsdWlkLXNpemUoJHByb3AsICRtaW4tc2l6ZSwgJG1heC1zaXplLCAkbWluLXZ3OiAkdnAtbWluLXdpZHRoLCAkbWF4LXZ3OiAkdnAtbWF4LXdpZHRoKSB7XG4gICR1MTogdW5pdCgkbWluLXZ3KTtcbiAgJHUyOiB1bml0KCRtYXgtdncpO1xuICAkdTM6IHVuaXQoJG1pbi1zaXplKTtcbiAgJHU0OiB1bml0KCRtYXgtc2l6ZSk7XG5cbiAgQGlmICR1MSA9PSAkdTIgYW5kICR1MSA9PSAkdTMgYW5kICR1MSA9PSAkdTQge1xuICAgICYge1xuICAgICAgI3skcHJvcH06ICRtaW4tc2l6ZTtcblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4tdncpIHtcbiAgICAgICAgI3skcHJvcH06IGNhbGMoXG4gICAgICAgICAgI3skbWluLXNpemV9ICsgI3tzdHJpcC11bml0KCRtYXgtc2l6ZSAtICRtaW4tc2l6ZSl9ICpcbiAgICAgICAgICAgICgoMTAwdncgLSAjeyRtaW4tdnd9KSAvICN7c3RyaXAtdW5pdCgkbWF4LXZ3IC0gJG1pbi12dyl9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1heC12dykge1xuICAgICAgICAjeyRwcm9wfTogJG1heC1zaXplO1xuICAgICAgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiZmx1aWQtc2l6ZSByZXF1aXJlcyB0aGF0IGFsbCB2YWx1ZXMgaGF2ZSB0aGUgc2FtZSB1bml0XCI7XG4gIH1cbn1cbiIsImh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBjb2xvci1zY2hlbWU6IHVucXVvdGUoJGNvbG9yLXNjaGVtZSk7XG59XG5cbiosXG4qOjpiZWZvcmUsXG4qOjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuYm9keSB7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXBhZ2UgbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJGMtYm9keS1ncmFkaWVudCwgJGMtYmctcGFnZSAxMTZweCkgbm8tcmVwZWF0O1xuICBjb2xvcjogJGMtZm9udDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuXG4gICYuZml4ZWQtc2Nyb2xsIHtcbiAgICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgd2hlbiBkcmFnZ2luZyBhIHBpZWNlIG91dCAqL1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuXG5hIHtcbiAgY29sb3I6ICRjLWxpbms7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAmOmhvdmVyLFxuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6ICRjLWxpbmstaG92ZXI7XG4gIH1cbn1cblxucCB7XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcbn1cblxuZW0sXG5pIHtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5saSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbnRpbWUge1xuICBmb250LXNpemU6IDkwJTtcbiAgb3BhY2l0eTogMC45O1xuXG4gIC8qIGRvbid0IHVzZSBjLWNvbG9yLWRpbSwgaXQgb3ZlcnJpZGVzIHRvbyBoYXJkICovXG59XG5cbmhyIHtcbiAgbWFyZ2luOiAxLjVyZW0gMDtcbiAgYm9yZGVyOiAwO1xuICBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZDogJGMtYm9yZGVyO1xufVxuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogMC45ZW07XG59XG5cbnRhYmxlLFxudGJvZHksXG50Zm9vdCxcbnRoZWFkLFxudHIsXG50aCxcbnRkIHtcbiAgYm9yZGVyOiAwO1xuICBmb250LXNpemU6IDEwMCU7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG59XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG4iLCJidXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250OiBpbmhlcml0O1xuICBjb2xvcjogJGMtZm9udDtcbiAgb3V0bGluZS1jb2xvcjogJGMtcHJpbWFyeTtcbn1cblxub3B0aW9uLFxub3B0Z3JvdXAge1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3gtb3BhcXVlO1xuICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbn1cblxuaW5wdXQsXG50ZXh0YXJlYSxcbnNlbGVjdCB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctaW5wdXQ7XG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgcGFkZGluZzogMC42ZW0gMWVtO1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICByZXNpemU6IHZlcnRpY2FsO1xuICBwYWRkaW5nOiAwLjhlbSAxZW07XG59XG5cbmJ1dHRvbixcbmEge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbjo6cGxhY2Vob2xkZXIge1xuICBjb2xvcjogJGMtZm9udC1kaW07XG59XG5cbi5jb3B5YWJsZSB7XG4gIGJhY2tncm91bmQ6ICRjLXBhZ2UtaW5wdXQ7XG4gIGNvbG9yOiAkYy1mb250LWNsZWFyO1xufVxuXG5pbnB1dDotd2Via2l0LWF1dG9maWxsLFxudGV4dGFyZWE6LXdlYmtpdC1hdXRvZmlsbCxcbnNlbGVjdDotd2Via2l0LWF1dG9maWxsIHtcbiAgYm9yZGVyOiAkYm9yZGVyO1xuICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogJGMtZm9udDtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMHB4IDEwMDBweCBtaXgoJGMtZ29vZCwgJGMtYmctaW5wdXQsIDEwJSkgaW5zZXQ7XG59XG4iLCJAZnVuY3Rpb24gbG9jYWwtZm9udCgkcGF0aCkge1xuICBAcmV0dXJuIHVybCgjeyRmb250LXBhdGh9LyN7JHBhdGh9KTtcbn1cblxuLyogRGlzdG9ydGVkIEZhY2UgKFUrMUZBRUEpIOKAlCBzdWJzZXQgb2YgTm90byBDb2xvciBFbW9qaSAoQ09MUnYxLCB+MUtCKS5cbiAgIEZhbGxiYWNrIHNvIHRoZSB0aXRsZSBzeW1ib2wgcmVuZGVycyBvbiBzeXN0ZW1zIHdpdGhvdXQgdGhlIGdseXBoLiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnRGlzdG9ydGVkIEZhY2UnO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogbG9jYWwtZm9udCgnZGlzdG9ydGVkLWZhY2Uud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUZBRUE7XG59XG5cbi8qIEljb24gZm9udHMgKi9cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnbGljaGVzcyc7XG4gIGZvbnQtZGlzcGxheTogYmxvY2s7XG4gIHNyYzogbG9jYWwtZm9udCgnbGljaGVzcy53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgbG9jYWwtZm9udCgnbGljaGVzcy53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gQ2hlc3MnO1xuICBmb250LWRpc3BsYXk6IGJsb2NrO1xuICBzcmM6IGxvY2FsLWZvbnQoJ2xpY2hlc3MuY2hlc3Mud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIGxvY2FsLWZvbnQoJ2xpY2hlc3MuY2hlc3Mud29mZicpIGZvcm1hdCgnd29mZicpO1xufVxuXG4vKiBOb3RvIFNhbnMgKHY3KSAqL1xuXG4vKiBjeXJpbGxpYy1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucycpLCBsb2NhbCgnTm90b1NhbnMnKSwgbG9jYWwtZm9udCgnbm90by1zYW5zLWN5cmlsbGljLWV4dC53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzg4LCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7XG59XG5cbi8qIGN5cmlsbGljICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMnKSwgbG9jYWwoJ05vdG9TYW5zJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1jeXJpbGxpYy53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xufVxuXG4vKiBkZXZhbmFnYXJpICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMnKSwgbG9jYWwoJ05vdG9TYW5zJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1kZXZhbmFnYXJpLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA5MDAtMDk3RiwgVSsxQ0QwLTFDRjYsIFUrMUNGOC0xQ0Y5LCBVKzIwMEMtMjAwRCwgVSsyMEE4LCBVKzIwQjksIFUrMjVDQywgVStBODMwLUE4MzksIFUrQThFMC1BOEZCO1xufVxuXG4vKiBncmVlay1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucycpLCBsb2NhbCgnTm90b1NhbnMnKSwgbG9jYWwtZm9udCgnbm90by1zYW5zLWdyZWVrLWV4dC53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XG59XG5cbi8qIGdyZWVrICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMnKSwgbG9jYWwoJ05vdG9TYW5zJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1ncmVlay53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XG59XG5cbi8qIHZpZXRuYW1lc2UgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucycpLCBsb2NhbCgnTm90b1NhbnMnKSwgbG9jYWwtZm9udCgnbm90by1zYW5zLXZpZXRuYW1lc2Uud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cblxuLyogbGF0aW4tZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMnKSwgbG9jYWwoJ05vdG9TYW5zJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy12MTQtbGF0aW4tZXh0LXJlZ3VsYXIud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG5cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMnKSwgbG9jYWwoJ05vdG9TYW5zJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy12MTQtbGF0aW4tcmVndWxhci53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsXG4gICAgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuXG4vKiBOb3RvIFNhbnMgQm9sZCAodjcpXG5cbi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgc3JjOiBsb2NhbCgnTm90byBTYW5zIEJvbGQnKSwgbG9jYWwoJ05vdG9TYW5zLUJvbGQnKSwgbG9jYWwtZm9udCgnbm90by1zYW5zLWJvbGQtY3lyaWxsaWMtZXh0LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjtcbn1cblxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucyBCb2xkJyksIGxvY2FsKCdOb3RvU2Fucy1Cb2xkJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1ib2xkLWN5cmlsbGljLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG5cbi8qIGRldmFuYWdhcmkgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucyBCb2xkJyksIGxvY2FsKCdOb3RvU2Fucy1Cb2xkJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1ib2xkLWRldmFuYWdhcmkud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDkwMC0wOTdGLCBVKzFDRDAtMUNGNiwgVSsxQ0Y4LTFDRjksIFUrMjAwQy0yMDBELCBVKzIwQTgsIFUrMjBCOSwgVSsyNUNDLCBVK0E4MzAtQTgzOSwgVStBOEUwLUE4RkI7XG59XG5cbi8qIGdyZWVrLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgc3JjOiBsb2NhbCgnTm90byBTYW5zIEJvbGQnKSwgbG9jYWwoJ05vdG9TYW5zLUJvbGQnKSwgbG9jYWwtZm9udCgnbm90by1zYW5zLWJvbGQtZ3JlZWstZXh0LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjtcbn1cblxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucyBCb2xkJyksIGxvY2FsKCdOb3RvU2Fucy1Cb2xkJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1ib2xkLWdyZWVrLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcbn1cblxuLyogdmlldG5hbWVzZSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgc3JjOiBsb2NhbCgnTm90byBTYW5zIEJvbGQnKSwgbG9jYWwoJ05vdG9TYW5zLUJvbGQnKSwgbG9jYWwtZm9udCgnbm90by1zYW5zLWJvbGQtdmlldG5hbWVzZS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xufVxuXG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucyBCb2xkJyksIGxvY2FsKCdOb3RvU2Fucy1Cb2xkJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy12MTQtbGF0aW4tZXh0LTcwMC53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcbn1cblxuLyogbGF0aW4gKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucyBCb2xkJyksIGxvY2FsKCdOb3RvU2Fucy1Cb2xkJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy12MTQtbGF0aW4tNzAwLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQyxcbiAgICBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XG59XG5cbi8qIFJvYm90byBMaWdodCAodjE4KSAqL1xuXG4vKiBjeXJpbGxpYy1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIGxvY2FsLWZvbnQoJ3JvYm90by1saWdodC1jeXJpbGxpYy1leHQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xufVxuXG4vKiBjeXJpbGxpYyAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgbG9jYWwtZm9udCgncm9ib3RvLWxpZ2h0LWN5cmlsbGljLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG5cbi8qIGdyZWVrLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgbG9jYWwtZm9udCgncm9ib3RvLWxpZ2h0LWdyZWVrLWV4dC53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XG59XG5cbi8qIGdyZWVrICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCBsb2NhbC1mb250KCdyb2JvdG8tbGlnaHQtZ3JlZWsud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xufVxuXG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCBsb2NhbC1mb250KCdyb2JvdG8tbGlnaHQtdmlldG5hbWVzZS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xufVxuXG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIGxvY2FsLWZvbnQoJ3JvYm90by1saWdodC1sYXRpbi1leHQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG5cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCBsb2NhbC1mb250KCdyb2JvdG8tbGlnaHQtbGF0aW4ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLFxuICAgIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcbn1cbiIsImh0bWwge1xuICBAZXh0ZW5kICViYXNlLWZvbnQtZmFsbGJhY2s7XG5cbiAgQGluY2x1ZGUgZmx1aWQtc2l6ZSgnZm9udC1zaXplJywgMTJweCwgMTRweCk7XG5cbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG59XG5cbmgxLFxuaDIsXG5oMyxcbmg0IHtcbiAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG5oMSB7XG4gIEBpbmNsdWRlIGZsdWlkLXNpemUoJ2ZvbnQtc2l6ZScsIDIwcHgsIDQwcHgpO1xuXG4gIG1hcmdpbi1ib3R0b206IDV2aDtcblxuICBhIHtcbiAgICBjb2xvcjogJGMtbGluay1kaW07XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1saW5rO1xuICAgIH1cbiAgfVxufVxuXG5oMiB7XG4gIEBpbmNsdWRlIGZsdWlkLXNpemUoJ2ZvbnQtc2l6ZScsIDE2cHgsIDMwcHgpO1xufVxuXG4ubmluamEtdGl0bGUge1xuICBAZXh0ZW5kICViYXNlLWZvbnQ7XG5cbiAgZm9udC1zaXplOiAxZW07XG59XG4iLCIuaXM6OmJlZm9yZSxcbltkYXRhLWljb25dOjpiZWZvcmUsXG4uaXMtYWZ0ZXI6OmFmdGVyIHtcbiAgQGV4dGVuZCAlZGF0YS1pY29uO1xufVxuXG4uaXMudGV4dDo6YmVmb3JlLFxuLnRleHRbZGF0YS1pY29uXTo6YmVmb3JlIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjRlbTtcbn1cblxuLmlzLWdyZWVuOjpiZWZvcmUge1xuICBjb2xvcjogJGMtZ29vZDtcbn1cblxuLmlzLXJlZDo6YmVmb3JlIHtcbiAgY29sb3I6ICRjLWJhZDtcbn1cblxuLmlzLWdvbGQ6OmJlZm9yZSB7XG4gIGNvbG9yOiAkYy1icmFnO1xufVxuIiwiLmRhdGEtY291bnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kYXRhLWNvdW50OjphZnRlcixcbi51bnJlYWQge1xuICBAZXh0ZW5kICVhY3RpdmUsICVib3gtcmFkaXVzO1xuXG4gIHBhZGRpbmc6IDFweCA1cHggMXB4IDRweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLmRhdGEtY291bnQ6OmFmdGVyIHtcbiAgY29udGVudDogYXR0cihkYXRhLWNvdW50KTtcbiAgdG9wOiAtNXB4O1xuICByaWdodDogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAwIDNweDtcbiAgaGVpZ2h0OiAxNXB4O1xuICBsaW5lLWhlaWdodDogMTVweDtcbn1cblxuLmRhdGEtY291bnRbZGF0YS1jb3VudD0nMCddOjphZnRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIubm9uZSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmZ1bGxzY3JlZW4tbWFzayB7XG4gIEBleHRlbmQgJWZ1bGxzY3JlZW4tbWFzaztcblxuICBkaXNwbGF5OiBub25lO1xuXG4gIC5mdWxsc2NyZWVuLXRvZ2dsZTpjaGVja2VkIH4gJiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuLnJwOjpiZWZvcmUge1xuICBAZXh0ZW5kICVkYXRhLWljb247XG5cbiAgbWFyZ2luLXJpZ2h0OiAwLjJlbTtcbiAgY29udGVudDogJ+6BgSc7XG59XG5cbmJhZC5ycCB7XG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ+6BgCc7XG4gIH1cbn1cblxuZ29vZCB7XG4gIGNvbG9yOiAkYy1nb29kO1xufVxuXG5iYWQge1xuICBjb2xvcjogJGMtYmFkO1xufVxuXG4uaW5maW5pdGUtc2Nyb2xsIC5wYWdlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luOiAxMHB4IGF1dG87XG59XG4iLCIkdnAtbWluLXdpZHRoOiAzMjBweDtcbiR2cC1tYXgtd2lkdGg6IDEyMDBweDtcblxuYm9keSB7XG4gIC0tc2l0ZS1oZWFkZXItaGVpZ2h0OiAjeyRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHR9O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXNpdGUtaGVhZGVyLXRhbGwpIHtcbiAgICAtLXNpdGUtaGVhZGVyLWhlaWdodDogI3skc2l0ZS1oZWFkZXItdGFsbC1oZWlnaHR9O1xuICB9XG5cbiAgLS1zaXRlLWhlYWRlci1tYXJnaW46IDBweDtcblxuICAmLmhlYWRlci1tYXJnaW4ge1xuICAgIC0tc2l0ZS1oZWFkZXItbWFyZ2luOiAxZW07XG4gIH1cblxuICAtLW1haW4tbWFyZ2luOiAwO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW1haW4tbWFyZ2luKSB7XG4gICAgLS1tYWluLW1hcmdpbjogMXZ3O1xuICAgIG1hcmdpbi1ib3R0b206ICRibG9jay1nYXA7XG4gIH1cbn1cblxuI21haW4td3JhcCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICcuIC4gbWFpbiAuIC4nO1xuICAtLW1haW4tbWF4LXdpZHRoOiAjeyRtYWluLW1heC13aWR0aH07XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJG1haW4tbWFyZ2luIDFmciBtaW5tYXgoYXV0bywgdmFyKC0tbWFpbi1tYXgtd2lkdGgpKSAxZnIgJG1haW4tbWFyZ2luO1xuXG4gICYuZnVsbC1zY3JlZW4ge1xuICAgIC0tbWFpbi1tYXgtd2lkdGg6IGF1dG87XG4gIH1cblxuICAmLmZ1bGwtc2NyZWVuLWZvcmNlIHtcbiAgICAtLW1haW4tbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgbWFyZ2luLXRvcDogJHNpdGUtaGVhZGVyLW1hcmdpbjtcblxuICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgYm9keS5jbGlucHV0ICYge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxubWFpbiB7XG4gIGdyaWQtYXJlYTogbWFpbjtcblxuICAmLnBhZ2Utc21hbGwge1xuICAgIG1heC13aWR0aDogMTAwMHB4O1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuIiwiQGltcG9ydCAnLi4vY29tcG9uZW50L3N1Ym5hdic7XG5cbi5wYWdlLW1lbnUge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnbWVudScgJ2NvbnRlbnQnO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXN1Ym5hdi1zaWRlKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtYXgtY29udGVudCBhdXRvO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWluLWNvbnRlbnQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ21lbnUgY29udGVudCc7XG4gIH1cblxuICAmLnBhZ2Utc21hbGwge1xuICAgIG1heC13aWR0aDogMTAwMHB4O1xuICAgIG1hcmdpbjogaW5oZXJpdDtcbiAgfVxuXG4gICZfX21lbnUge1xuICAgIHotaW5kZXg6IDA7XG4gICAgZ3JpZC1hcmVhOiBtZW51O1xuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgZ3JpZC1hcmVhOiBjb250ZW50O1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIC8vIG92ZXJmbG93OiBoaWRkZW47IC8qIGZpeGVzIGNyYXp5IHRleHQgb3ZlcmZsb3cgb24gRnggKi9cbiAgfVxuXG4gICZfX2NvbnRlbnQuYm94IHtcbiAgICAvKiBlbnN1cmUgdGhlIGNvbnRlbnQgaXMgYXMgaGlnaCBhcyB0aGUgbWVudSAqL1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gIH1cbn1cbiIsIi5zdWJuYXYge1xuICBhIHtcbiAgICBAZXh0ZW5kICVub3dyYXAtaGlkZGVuLCAlcGFnZS10ZXh0O1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc3VibmF2LXRvcCkge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgxN2NoLCAxZnIpKTtcbiAgICBncmlkLWdhcDogM3B4O1xuICAgIG1hcmdpbi1ib3R0b206IDNweDtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1wYWdlO1xuXG4gICAgYSB7XG4gICAgICBAaW5jbHVkZSBib3gtbmVhdDtcblxuICAgICAgZm9udC1mYW1pbHk6IHJvYm90bztcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICBwYWRkaW5nOiAwLjZyZW0gMCAwLjZyZW0gMC41cmVtO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjA2ZW07XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1oaWdoO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRjLWxpbms7XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VwIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc3VibmF2LXNpZGUpIHtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgei1pbmRleDogeignc3VibmF2LXNpZGUnKTtcblxuICAgIC8qIGFjdGl2ZSBib3JkZXIgbXVzdCBnbyBvdmVyIHRoZSBwYWdlIGNvbnRlbnQgKi9cbiAgICBhIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY29sb3I6ICRjLWZvbnQtcGFnZTtcbiAgICAgIHBhZGRpbmc6IDAuN3JlbSAydncgMC43cmVtIDAuOHJlbTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYWNjZW50LCAwLjQpO1xuICAgICAgICB3aWR0aDogM3B4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGhlaWdodDogOTglO1xuICAgICAgICB0b3A6IDElO1xuICAgICAgICByaWdodDogLTFweDtcblxuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgMC4yNXMpO1xuXG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlLFxuICAgICAgJjpob3ZlciB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgY29sb3I6ICRjLWFjY2VudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VwIHtcbiAgICAgIGhlaWdodDogMmVtO1xuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCAnYm9hcmQtMmQnO1xuQGltcG9ydCAnZGFyay1ib2FyZCc7XG5cbmNnLWJvYXJkIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWFicy0xMDA7XG5cbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cbiAgLm1hbmlwdWxhYmxlICYge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5zcXVhcmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMi41JTtcbiAgaGVpZ2h0OiAxMi41JTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgJi5tb3ZlLWRlc3Qge1xuICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChyZ2JhKDIwLCA4NSwgMzAsIDAuNSkgMTklLCByZ2JhKDAsIDAsIDAsIDApIDIwJSk7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIH1cblxuICAmLnByZW1vdmUtZGVzdCB7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KHJnYmEoMjAsIDMwLCA4NSwgMC41KSAxOSUsIHJnYmEoMCwgMCwgMCwgMCkgMjAlKTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgfVxuXG4gICYub2MubW92ZS1kZXN0IHtcbiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQodHJhbnNwYXJlbnQgMCUsIHRyYW5zcGFyZW50IDc5JSwgcmdiYSgyMCwgODUsIDAsIDAuMykgODAlKTtcbiAgfVxuXG4gICYub2MucHJlbW92ZS1kZXN0IHtcbiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQodHJhbnNwYXJlbnQgMCUsIHRyYW5zcGFyZW50IDc5JSwgcmdiYSgyMCwgMzAsIDg1LCAwLjIpIDgwJSk7XG4gIH1cblxuICBib2R5LmdyZWVuICYubGFzdC1tb3ZlLFxuICBib2R5LmdyZWVuLXBsYXN0aWMgJi5sYXN0LW1vdmUsXG4gIGJvZHkubWFyYmxlICYubGFzdC1tb3ZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE1NSwgMTk5LCAwLjQxKTtcbiAgfVxuXG4gICYubGFzdC1tb3ZlIHtcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU1LCAxOTksIDAsIDAuNDEpO1xuXG4gICAgYm9keS5ob3JzZXkgJjpub3QoLm1vdmUtZGVzdCkge1xuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9ib2FyZC9ob3JzZXkubGFzdC1tb3ZlLnBuZyk7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIH1cbiAgfVxuXG4gICYuY2hlY2sge1xuICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChcbiAgICAgIGVsbGlwc2UgYXQgY2VudGVyLFxuICAgICAgcmdiYSgyNTUsIDAsIDAsIDEpIDAlLFxuICAgICAgcmdiYSgyMzEsIDAsIDAsIDEpIDI1JSxcbiAgICAgIHJnYmEoMTY5LCAwLCAwLCAwKSA4OSUsXG4gICAgICByZ2JhKDE1OCwgMCwgMCwgMCkgMTAwJVxuICAgICk7XG4gIH1cblxuICAmLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIwLCA4NSwgMzAsIDAuNSk7XG5cbiAgICBib2R5LmhvcnNleSAmIHtcbiAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvYm9hcmQvaG9yc2V5LnNlbGVjdGVkLnBuZyk7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIH1cbiAgfVxuXG4gICYuY3VycmVudC1wcmVtb3ZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIwLCAzMCwgODUsIDAuNSkgIWltcG9ydGFudDtcblxuICAgIGJvZHkuaG9yc2V5ICYge1xuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9ib2FyZC9ob3JzZXkuY3VycmVudC1wcmVtb3ZlLnBuZyk7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIH1cbiAgfVxuXG4gICYubW92ZS1kZXN0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwLCA4NSwgMzAsIDAuMyk7XG5cbiAgICBib2R5LmhvcnNleSAmIHtcbiAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvYm9hcmQvaG9yc2V5Lm1vdmUtZGVzdC5wbmcpO1xuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICB9XG4gIH1cblxuICAmLnByZW1vdmUtZGVzdDpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyMCwgMzAsIDg1LCAwLjIpO1xuICB9XG5cbiAgJi5iaDEgcGllY2Uge1xuICAgIG9wYWNpdHk6IDAuOTg7XG4gIH1cbn1cblxucGllY2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEyLjUlO1xuICBoZWlnaHQ6IDEyLjUlO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICB6LWluZGV4OiB6KCdjZ19fcGllY2UnKTtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgJi5kcmFnZ2luZyB7XG4gICAgY3Vyc29yOiBtb3ZlO1xuICAgIHotaW5kZXg6IHooJ2NnX19waWVjZS5kcmFnZ2luZycpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAmLmFuaW0ge1xuICAgIHotaW5kZXg6IHooJ2NnX19waWVjZS5hbmltJyk7XG4gIH1cblxuICAmLmZhZGluZyB7XG4gICAgei1pbmRleDogeignY2dfX3BpZWNlLmZhZGluZycpO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuXG4gICYuZ2hvc3Qge1xuICAgIG9wYWNpdHk6IDAuMztcbiAgfVxufVxuXG5jZy1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xufVxuXG5jZy1jb250YWluZXIgLmNnLXNoYXBlcyxcbmNnLWNvbnRhaW5lciAuY2ctY3VzdG9tLXN2Z3Mge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5jZy1jb250YWluZXIgLmNnLXNoYXBlcyB7XG4gIG9wYWNpdHk6IDAuNjtcbiAgei1pbmRleDogeignY2dfX3N2Zy5jZy1zaGFwZXMnKTtcblxuICBpbWFnZSB7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG59XG5cbmNnLWNvbnRhaW5lciAuY2ctY3VzdG9tLXN2Z3Mge1xuICB6LWluZGV4OiB6KCdjZ19fc3ZnLmNnLWN1c3RvbS1zdmdzJyk7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5jZy1jb250YWluZXIgLmNnLWN1c3RvbS1zdmdzIHN2ZyB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuIiwiQGltcG9ydCAndGhlbWVzJztcblxuQGVhY2ggJG5hbWUsICR0aGVtZSBpbiAkYm9hcmQtdGhlbWVzLTJkIHtcbiAgLiN7JG5hbWV9IC5pczJkIHtcbiAgICBjZy1ib2FyZCB7XG4gICAgICAkZmlsZS1leHQ6IG1hcC1nZXQoJHRoZW1lLCBmaWxlLWV4dCk7XG4gICAgICAkbmFtZS1vdmVycmlkZTogbWFwLWdldCgkdGhlbWUsIG5hbWUtb3ZlcnJpZGUpO1xuICAgICAgJGZpbGUtbmFtZTogaWYoJG5hbWUtb3ZlcnJpZGUsICRuYW1lLW92ZXJyaWRlLCAkbmFtZSk7XG4gICAgICAkZGlyLW5hbWU6ICdib2FyZCN7aWYoJGZpbGUtZXh0ID09IFwic3ZnXCIsIFwiL3N2Z1wiLCBcIlwiKX0nO1xuXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKCcjeyRkaXItbmFtZX0vI3skZmlsZS1uYW1lfS4jeyRmaWxlLWV4dH0nKTtcbiAgICB9XG5cbiAgICAkY29vcmQtY29sb3Itd2hpdGU6IG1hcC1nZXQoJHRoZW1lLCBjb29yZC1jb2xvci13aGl0ZSk7XG4gICAgJGNvb3JkLWNvbG9yLWJsYWNrOiBtYXAtZ2V0KCR0aGVtZSwgY29vcmQtY29sb3ItYmxhY2spO1xuXG4gICAgQGlmICRjb29yZC1jb2xvci13aGl0ZSBhbmQgJGNvb3JkLWNvbG9yLWJsYWNrIHtcbiAgICAgIGNvb3JkcyB7XG4gICAgICAgIC0tY2ctY2N3OiAjeyRjb29yZC1jb2xvci13aGl0ZX07XG4gICAgICAgIC0tY2ctY2NiOiAjeyRjb29yZC1jb2xvci1ibGFja307XG4gICAgICAgIC0tY2ctY3M6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIkYm9hcmQtdGhlbWVzLTJkOiAoXG4gICdibHVlJzogKFxuICAgIGZpbGUtZXh0OiAnc3ZnJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2RlZTNlNixcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzc4OGE5NCxcbiAgKSxcbiAgJ2JsdWUyJzogKFxuICAgIGZpbGUtZXh0OiAnanBnJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogIzk3YjJjNyxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzU0NmY4MixcbiAgKSxcbiAgJ2JsdWUzJzogKFxuICAgIGZpbGUtZXh0OiAnanBnJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2Q5ZTBlNixcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzMxNTk5MSxcbiAgKSxcbiAgJ2JsdWUtbWFyYmxlJzogKFxuICAgIGZpbGUtZXh0OiAnanBnJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2VhZTZkZCxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzdjN2Y4NyxcbiAgKSxcbiAgJ2NhbnZhcyc6IChcbiAgICBuYW1lLW92ZXJyaWRlOiAnY2FudmFzMicsXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZDdkYWViLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNTQ3Mzg4LFxuICApLFxuICAnd29vZCc6IChcbiAgICBmaWxlLWV4dDogJ2pwZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNkOGE0NWIsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM5YjRkMGYsXG4gICksXG4gICd3b29kMic6IChcbiAgICBmaWxlLWV4dDogJ2pwZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNhMzhiNWQsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM2YzUwMTcsXG4gICksXG4gICd3b29kMyc6IChcbiAgICBmaWxlLWV4dDogJ2pwZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNkMGNlY2EsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM3NTU4MzksXG4gICksXG4gICd3b29kNCc6IChcbiAgICBmaWxlLWV4dDogJ2pwZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNjYWFmN2QsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM3YjUzMzAsXG4gICksXG4gICdtYXBsZSc6IChcbiAgICBmaWxlLWV4dDogJ2pwZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNlOGNlYWIsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICNiYzc5NDQsXG4gICksXG4gICdtYXBsZTInOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZTJjODlmLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjOTk2NjMzLFxuICApLFxuICAnbGVhdGhlcic6IChcbiAgICBmaWxlLWV4dDogJ2pwZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNkMWQxYzksXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICNjMjhlMTYsXG4gICksXG4gICdncmVlbic6IChcbiAgICBmaWxlLWV4dDogJ3N2ZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNmZmZmZGQsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM2ZDg3NTMsXG4gICksXG4gICdicm93bic6IChcbiAgICBmaWxlLWV4dDogJ3N2ZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNmMGQ5YjUsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM5NDZmNTEsXG4gICksXG4gICdwaW5rJzogKFxuICAgIG5hbWUtb3ZlcnJpZGU6ICdwaW5rLXB5cmFtaWQnLFxuICAgIGZpbGUtZXh0OiAncG5nJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2U4ZTliNyxcbiAgICBjb29yZC1jb2xvci1ibGFjazogI2VkNzI3MixcbiAgKSxcbiAgJ21hcmJsZSc6IChcbiAgICBmaWxlLWV4dDogJ2pwZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICM5M2FiOTEsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM0ZjY0NGUsXG4gICksXG4gICdncmVlbi1wbGFzdGljJzogKFxuICAgIGZpbGUtZXh0OiAncG5nJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2YyZjliYixcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzU5OTM1ZCxcbiAgKSxcbiAgJ2dyZXknOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjYjhiOGI4LFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjN2Q3ZDdkLFxuICApLFxuICAnbWV0YWwnOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjYzljOWM5LFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNzI3MjcyLFxuICApLFxuICAnb2xpdmUnOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjYjhiMTlmLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNmQ2NjU1LFxuICApLFxuICAnbmV3c3BhcGVyJzogKFxuICAgIGZpbGUtZXh0OiAncG5nJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2ZmZixcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzhkOGQ4ZCxcbiAgKSxcbiAgJ3B1cnBsZSc6IChcbiAgICBmaWxlLWV4dDogJ3N2ZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICM5ZjkwYjAsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM3ZDRhOGQsXG4gICksXG4gICdwdXJwbGUtZGlhZyc6IChcbiAgICBmaWxlLWV4dDogJ3BuZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNlNWRhZjAsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM5NTdhYjAsXG4gICksXG4gICdpYyc6IChcbiAgICBmaWxlLWV4dDogJ3N2ZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNlY2VjZWMsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICNjMWMxOGUsXG4gICksXG4gICdob3JzZXknOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZjBkOWI1LFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjOTQ2ZjUxLFxuICApLFxuKTtcblxuJGJvYXJkLXRoZW1lcy0zZDogKFxuICAnQmxhY2stV2hpdGUtQWx1bWluaXVtJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZDlkZWQ5LFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNGM0ZTRkLFxuICApLFxuICAnQnJ1c2hlZC1BbHVtaW5pdW0nOiAoXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICM1YzVlNjMsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM0NjQ5NGYsXG4gICksXG4gICdDaGluYS1CbHVlJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZTdlOGNjLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjM2MwMGJhLFxuICApLFxuICAnQ2hpbmEtR3JlZW4nOiAoXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNlN2U4Y2MsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM0OGIwNjQsXG4gICksXG4gICdDaGluYS1HcmV5JzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZTRlNGNhLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNmE2YjY4LFxuICApLFxuICAnQ2hpbmEtU2NhcmxldCc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2U3ZThjYyxcbiAgICBjb29yZC1jb2xvci1ibGFjazogI2FjMTYxZCxcbiAgKSxcbiAgJ0NoaW5hLVllbGxvdyc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2U3ZThjYyxcbiAgICBjb29yZC1jb2xvci1ibGFjazogI2M4ZGQxYyxcbiAgKSxcbiAgJ0NsYXNzaWMtQmx1ZSc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogIzcxOTNkZixcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzUxNzhhNyxcbiAgKSxcbiAgJ0dvbGQtU2lsdmVyJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjYzBjM2M4LFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNTE0ZDFkLFxuICApLFxuICAnR3JlZW4tR2xhc3MnOiAoXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNmN2ZhZmEsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICNhMWZmYjQsXG4gICksXG4gICdMaWdodC1Xb29kJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZGFjYzlmLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjYWM3MjMxLFxuICApLFxuICAnUG93ZXItQ29hdGVkJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZDVkYWQ0LFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjOTM5Njk3LFxuICApLFxuICAnUHVycGxlLUJsYWNrJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjYmQwMGFjLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjM2U0MDQyLFxuICApLFxuICAnUm9zZXdvb2QnOiAoXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNmYWU3ZGYsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICNkNjgxNzAsXG4gICksXG4gICdXb29kLUdsYXNzJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZGJkYWU3LFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjZTRjMzg0LFxuICApLFxuICAnTWFyYmxlJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjNWE5NDc1LFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjMjY1ZTQxLFxuICApLFxuICAnV2F4JzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZGJiYThlLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjZDI1NTYzLFxuICApLFxuICAnSmFkZSc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogIzliOTU5MSxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzEzNGUzNSxcbiAgKSxcbiAgJ1dvb2RpJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjODA3MTNjLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNjI1MjFhLFxuICApLFxuKTtcbiIsIkBpZiAkdGhlbWUtZGFyayB7XG4gIGJvZHkuZGFyay1ib2FyZCB7XG4gICAgLS1kYXJrLWZhY3RvcjogMC40O1xuXG4gICAgY2ctYm9hcmQsXG4gICAgLmlzM2QgY2ctYm9hcmQ6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIHZhcigtLWRhcmstZmFjdG9yKSk7XG4gICAgICBiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6IGRhcmtlbjtcbiAgICB9XG5cbiAgICAmLmNvb3Jkcy1pbiBjb29yZCB7XG4gICAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgICAgb3BhY2l0eTogY2FsYygxIC0gdmFyKC0tZGFyay1mYWN0b3IpKTtcbiAgICB9XG5cbiAgICBjZy1ib2FyZCBzcXVhcmUge1xuICAgICAgb3BhY2l0eTogY2FsYygxIC0gdmFyKC0tZGFyay1mYWN0b3IpKTtcbiAgICB9XG5cbiAgICBjZy1ib2FyZCBwaWVjZSB7XG4gICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoY2FsYygxIC0gMC42ICogdmFyKC0tZGFyay1mYWN0b3IpKSk7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0ICd0b3BuYXYtaGlkZGVuJztcbkBpbXBvcnQgJ3RvcG5hdi12aXNpYmxlJztcbkBpbXBvcnQgJ3RpdGxlJztcbkBpbXBvcnQgJ2J1dHRvbnMnO1xuXG4jdG9wIHtcbiAgaGVpZ2h0OiAkc2l0ZS1oZWFkZXItaGVpZ2h0O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogeignc2l0ZS1oZWFkZXInKTtcbiAgbWF4LXdpZHRoOiAxODAwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgLS1kcm9wZG93bi10b3A6IDQwcHg7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc2l0ZS1oZWFkZXItdGFsbCkge1xuICAgIC0tZHJvcGRvd24tdG9wOiA2MHB4O1xuICB9XG59XG5cblxuXG4uc2l0ZS10aXRsZS1uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG4iLCJAaW5jbHVkZSBicmVha3BvaW50KCRtcS10b3BuYXYtaGlkZGVuKSB7XG4gIC50b3BuYXYtdG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtOTk5OXB4O1xuICAgIGxlZnQ6IC05OTk5cHg7XG4gIH1cblxuICAuaGJnIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6ICRzaXRlLWhlYWRlci1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkc2l0ZS1oZWFkZXItaGVpZ2h0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB6LWluZGV4OiB6KCd0b3BuYXYnKTtcblxuICAgICZfX2luIHtcbiAgICAgICYsXG4gICAgICAmOjphZnRlcixcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMS41cHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDIzcHg7XG4gICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWZvbnQtZGltO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXNpdGUtaGVhZGVyLXRhbGwpIHtcbiAgICAgICAgICB3aWR0aDogMzRweDtcbiAgICAgICAgICBoZWlnaHQ6IDNweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b3A6IDUwJTtcbiAgICAgIGxlZnQ6IDguNXB4O1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgICAgIGxlZnQ6IDEzcHg7XG4gICAgICB9XG5cbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjIycyBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTtcblxuICAgICAgJjo6YWZ0ZXIsXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgdG9wOiAtNnB4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXNpdGUtaGVhZGVyLXRhbGwpIHtcbiAgICAgICAgICB0b3A6IC05cHg7XG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2l0aW9uOiB0b3AgMC4xcyAwLjI1cyBlYXNlLWluLCBvcGFjaXR5IDAuMXMgZWFzZS1pbjtcbiAgICAgIH1cblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBib3R0b206IC03cHg7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc2l0ZS1oZWFkZXItdGFsbCkge1xuICAgICAgICAgIGJvdHRvbTogLTEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2l0aW9uOiBib3R0b20gMC4xcyAwLjI1cyBlYXNlLWluLCB0cmFuc2Zvcm0gMC4yMnMgY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRvcG5hdi10b2dnbGU6Y2hlY2tlZCB+ICYge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctaGlnaDtcblxuICAgICAgLmhiZ19faW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMjVkZWcpO1xuICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjEycztcbiAgICAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIxNSwgMC42MSwgMC4zNTUsIDEpO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNpdGlvbjogdG9wIDAuMXMgZWFzZS1vdXQsIG9wYWNpdHkgMC4xcyAwLjEycyBlYXNlLW91dDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBib3R0b20gMC4xcyBlYXNlLW91dCwgdHJhbnNmb3JtIDAuMjJzIDAuMTJzIGN1YmljLWJlemllcigwLjIxNSwgMC42MSwgMC4zNTUsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3RvcG5hdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6ICRzaXRlLWhlYWRlci1oZWlnaHQ7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZDogJGMtYmctaGlnaDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygtMTAwJSAtIDEwcHgpKTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24odHJhbnNmb3JtLCAyMDBtcyk7XG5cbiAgICBwYWRkaW5nLWJvdHRvbTogMS4ycmVtO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcbiAgICBib3gtc2hhZG93OiAycHggNXB4IDdweCBoc2xhKDAsIDAsIDAlLCAwLjUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDAgM3B4IDAgMDtcbiAgICBtYXgtd2lkdGg6IDgwJTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXh4LXNtYWxsKSB7XG4gICAgICBtYXgtd2lkdGg6IDcwJTtcbiAgICB9XG5cbiAgICB6LWluZGV4OiB6KCd0b3BuYXYnKTtcblxuICAgIGEge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICBwYWRkaW5nOiAwLjdlbSAwO1xuICAgICAgb3BhY2l0eTogMDtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihvcGFjaXR5KTtcbiAgICB9XG5cbiAgICBzZWN0aW9uIHtcbiAgICAgIGZsZXg6IDEgMCA1MCU7XG4gICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuXG4gICAgICA+IGEge1xuICAgICAgICBmb250LXNpemU6IDEuMmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuMnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAucGxheSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuXG4gICAgICAgIGEge1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMi40cmVtO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGE6YWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAudG9wbmF2LXRvZ2dsZTpjaGVja2VkIH4gJiB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG5cbiAgICAgIGEge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyNW1zIGVhc2UtaW4tb3V0IDEyNW1zO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGJvZHkubWFza2VkIHtcbiAgICAvKiBwcmV2ZW50IHNjcm9sbGluZyB3aGlsZSB0b3BuYXYgaXMgb3BlbiAqL1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvKiBhd2t3YXJkbHkgbWFrZSB1cCBmb3IgdGhlIGRpc2FwcGVhcmFuY2Ugb2YgdGhlIHNjcm9sbCBiYXIgKi9cbiAgICAvKiBhY3R1YWxseSBkb24ndCwgc2luY2Ugb24gbW9iaWxlIGRldmljZXMgdGhlIHNjcm9vbCBiYXJcbiAgICAgKiBoYXMgbm8gd2lkdGgsIGFuZCB0aGF0IG1lbnUgaXMgbWFpbmx5IGZvciBtb2JpbGUuICovXG4gICAgLy8gcGFkZGluZy1yaWdodDogMTVweDtcbiAgfVxufVxuIiwiQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtdG9wbmF2LXZpc2libGUpIHtcbiAgLmhiZyxcbiAgLnNpdGUtdGl0bGUtbmF2IC5mdWxsc2NyZWVuLW1hc2ssXG4gIC50b3BuYXYtdG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAjdG9wbmF2IHtcbiAgICAtLW5hdi1zZWN0aW9uOiAyNnB4O1xuICAgIC0tbmF2LXNlY3Rpb24taG92ZXI6IDM1cHg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgICAtLW5hdi1zZWN0aW9uOiA0OHB4O1xuICAgICAgLS1uYXYtc2VjdGlvbi1ob3ZlcjogNTNweDtcbiAgICB9XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgc2VjdGlvbiB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBoZWlnaHQ6IHZhcigtLW5hdi1zZWN0aW9uKTtcblxuICAgICAgPiBhIHtcbiAgICAgICAgY29sb3I6ICRjLWZvbnQtcGFnZTtcbiAgICAgICAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogdmFyKC0tbmF2LXNlY3Rpb24pO1xuICAgICAgICBsaW5lLWhlaWdodDogJHNpdGUtaGVhZGVyLWhlaWdodDtcbiAgICAgICAgcGFkZGluZzogMCAwLjdyZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIC5ob21lIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXYge1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1oZWFkZXItZHJvcGRvd247XG4gICAgICBtaW4td2lkdGg6IDEwcmVtO1xuICAgICAgYm94LXNoYWRvdzogMnB4IDVweCA2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgICAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDNweDtcbiAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgJGMtcHJpbWFyeTtcblxuICAgICAgYSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAwLjZyZW0gMC43cmVtO1xuICAgICAgICBjb2xvcjogJGMtaGVhZGVyLWRyb3Bkb3duO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRjLXByaW1hcnk7XG4gICAgICAgICAgJixcbiAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgM3B4IDAgMDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDNweCAxcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmJsaW5kIGRpdiB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbi1sZWZ0OiAtOTAwMHB4O1xuICAgIH1cblxuICAgICYuaG92ZXIgc2VjdGlvbjpob3ZlcixcbiAgICBzZWN0aW9uOmFjdGl2ZSB7XG4gICAgICA+IGEge1xuICAgICAgICBoZWlnaHQ6IHZhcigtLW5hdi1zZWN0aW9uLWhvdmVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYmctaGVhZGVyLWRyb3Bkb3duO1xuICAgICAgICBjb2xvcjogJGMtaGVhZGVyLWRyb3Bkb3duO1xuICAgICAgICBib3JkZXItY29sb3I6ICRjLXByaW1hcnk7XG4gICAgICB9XG5cbiAgICAgIGRpdiB7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIuc2l0ZS10aXRsZSB7XG4gIEBleHRlbmQgJWJhc2UtZm9udDtcblxuICBmb250LXNpemU6IDI1cHg7XG4gIGxpbmUtaGVpZ2h0OiAjeyRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHQgLSAzfTtcbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWFyZ2luOiAwIDAuNXJlbTtcbiAgZGlzcGxheTogbm9uZTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14eC1zbWFsbCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtdG9wbmF2LWhpZGRlbikge1xuICAgIC8qIG1vdmUgYXdheSBmcm9tIGhhbWJ1cmdlciAqL1xuICAgIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNXJlbSArICN7JHNpdGUtaGVhZGVyLWhlaWdodH0pO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc2l0ZS1oZWFkZXItdGFsbCkge1xuICAgIGZvbnQtc2l6ZTogMzBweDtcbiAgICBsaW5lLWhlaWdodDogI3skc2l0ZS1oZWFkZXItdGFsbC1oZWlnaHQgLSAzfTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXRvcG5hdi12aXNpYmxlICRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgbGluZS1oZWlnaHQ6ICN7JHNpdGUtaGVhZGVyLXRhbGwtaGVpZ2h0IC0gNX07XG4gICAgbWFyZ2luOiAwIDFyZW0gMCAxLjVyZW07XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1wcmltYXJ5O1xuXG4gICAgICBzcGFuIHtcbiAgICAgICAgY29sb3I6ICRjLXByaW1hcnktZGltO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNwYW4ge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgfVxuXG4gIC5raWRkbyB7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XG4gIH1cbn1cbiIsIiV0b3AtaWNvbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6ICRzaXRlLWhlYWRlci1oZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkc2l0ZS1oZWFkZXItaGVpZ2h0O1xufVxuXG4uc2l0ZS1idXR0b25zIHtcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gIC5zaG9wLWJ1dHRvbiB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbiAgfVxuXG4gIC5zaG9wLWJ1dHRvbiBpbWcge1xuICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICBoZWlnaHQ6MzBweDtcbiAgIH1cblxuICAuY29oZW5jb2lucy1jb3VudGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuXG4gIC5jb2hlbmNvaW5zLWNvdW50ZXIgLmNvaGVuY29pbnMtaWNvbiB7XG4gICAgd2lkdGg6IDIuMGVtO1xuICAgIGhlaWdodDogMi4wZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjJlbTtcbiAgfVxuXG5cbiAgLmxpbmsge1xuICAgIEBleHRlbmQgJXRvcC1pY29uO1xuXG4gICAgLyogd2UgZG9uJ3Qgd2FudCBhIGxpZ2h0ZXIgZGFyayBmb250IGluIHRoZSB0b3AgZ3JhZGllbnQgKi9cbiAgICBAaWYgJHRoZW1lID09ICd0cmFuc3AnIHtcbiAgICAgIEBleHRlbmQgJXBhZ2UtdGV4dDtcbiAgICB9IEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgIH1cblxuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgIHBhZGRpbmc6IDAgMC43cmVtO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtZm9udC1jbGVhcmVyO1xuICAgIH1cblxuICAgIHNwYW46OmJlZm9yZSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG4gIC50b2dnbGUge1xuICAgIEBleHRlbmQgJXRvcC1pY29uO1xuICB9XG5cbiAgLmluaXRpYXRpbmcge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAzMDBweDtcbiAgICB3aWR0aDogMjI1cHg7XG4gIH1cblxuICAuZHJvcGRvd24ge1xuICAgIEBleHRlbmQgJWRyb3Bkb3duLXNoYWRvdztcblxuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIHRvcDogdmFyKC0tZHJvcGRvd24tdG9wKTtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1oZWFkZXItZHJvcGRvd247XG4gICAgei1pbmRleDogeignZHJvcGRvd24nKTtcblxuICAgIGEsXG4gICAgYnV0dG9uIHtcbiAgICAgIGNvbG9yOiAkYy1oZWFkZXItZHJvcGRvd247XG4gICAgfVxuICB9XG5cbiAgLnNob3duIHtcbiAgICAudG9nZ2xlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWhlYWRlci1kcm9wZG93bjtcbiAgICAgIGNvbG9yOiAkYy1oZWFkZXItZHJvcGRvd247XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gIC5zaWduaW4ge1xuICAgIG1hcmdpbjogMCAxcmVtO1xuXG4gICAgQGlmICR0aGVtZSA9PSAndHJhbnNwJyB7XG4gICAgICAmLmJ1dHRvbi1lbXB0eSB7XG4gICAgICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgICAgIGNvbG9yOiAkYy1mb250LWNsZWFyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5saW5rLWNlbnRlciB7XG4gICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLnJlcG9ydC1zY29yZSB7XG4gICAgJjpub3QoLnJlcG9ydC1zY29yZS0taGlnaCk6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXBhZ2U7XG4gICAgICBjb2xvcjogJGMtYnJhZztcbiAgICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICB9XG4gICAgJi0tbG93OjphZnRlciB7XG4gICAgICBjb2xvcjogJGMtZ29vZCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG4jdXNlcl90YWcge1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4jbm90aWZ5LWFwcCAuaW5pdGlhdGluZyB7XG4gIHdpZHRoOiAyNXJlbTtcbn1cbiIsIiNjbGlucHV0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAkc2l0ZS1oZWFkZXItaGVpZ2h0O1xuXG4gIGlucHV0IHtcbiAgICBAZXh0ZW5kICVwYWdlLXRleHQ7XG5cbiAgICBsaW5lLWhlaWdodDogJHNpdGUtaGVhZGVyLWhlaWdodDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIHdpZHRoOiAwO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteC1sYXJnZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbih3aWR0aCk7XG4gICAgfVxuXG4gICAgYm9keS5jbGlucHV0ICYge1xuICAgICAgd2lkdGg6IDIwY2g7XG4gICAgfVxuICB9XG5cbiAgaW5wdXQ6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbn1cblxuYm9keS5jbGlucHV0ICN0b3Age1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteC1sYXJnZSkge1xuICAgICN0b3BuYXYge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteC1zbWFsbCkge1xuICAgIC5zaXRlLXRpdGxlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXh4LXNtYWxsKSB7XG4gICAgLnNpdGUtYnV0dG9ucyA+ICo6bm90KCNjbGlucHV0KSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICNjbGlucHV0IHtcbiAgICAgIHdpZHRoOiA3NXZ3O1xuICAgIH1cbiAgfVxufVxuIiwiLm1haW4tYm9hcmQge1xuICBAZXh0ZW5kICVzcXVhcmU7XG5cbiAgJl9fcHJlbG9hZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5cbiAgLmNnLXdyYXAge1xuICAgIEBleHRlbmQgJWFicy0xMDA7XG4gIH1cbn1cblxuLm1pbmktYm9hcmQsXG4ubWluaS1nYW1lIC5jZy13cmFwIHtcbiAgQGV4dGVuZCAlc3F1YXJlO1xufVxuIiwiJHZwLW1pbi13aWR0aDogMzIwcHg7XG4kdnAtbWF4LXdpZHRoOiAxMjAwcHg7XG5cbi5ib3gge1xuICBAZXh0ZW5kICVib3gtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcblxuICBAaW5jbHVkZSBmbHVpZC1zaXplKCctLWJveC1wYWRkaW5nJywgMTVweCwgNjBweCk7XG5cbiAgJi1wYWQge1xuICAgIEBleHRlbmQgJWJveC1wYWRkaW5nO1xuXG4gICAgLmJveF9fdG9wIHtcbiAgICAgIHBhZGRpbmc6IDAgMCB2YXIoLS1ib3gtcGFkZGluZykgMDtcbiAgICAgIGgxIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX190b3Age1xuICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgIHBhZGRpbmc6IGNhbGMoNXZoIC0gMXJlbSkgdmFyKC0tYm94LXBhZGRpbmcpO1xuXG4gICAgaDEge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC8qIGZsZXggZ3V0dGVycywgd2FpdGluZyBmb3Igcm93LWdhcCB0byBiZSBpbXBsZW1lbnRlZCBmb3IgZmxleGJveC4gIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9DU1NfRmxleGlibGVfQm94X0xheW91dC9NYXN0ZXJpbmdfV3JhcHBpbmdfb2ZfRmxleF9JdGVtcyNDcmVhdGluZ19ndXR0ZXJzX2JldHdlZW5faXRlbXMgKi9cbiAgICA+IGgxLFxuICAgID4gZGl2LFxuICAgID4gZm9ybSB7XG4gICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgIH1cblxuICAgIC8qIGVuZCBvZiBmbGV4IGd1dHRlciBoYWNrICovXG5cbiAgICAmX19hY3Rpb25zIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtd3JhcDtcblxuICAgICAgLyogZmxleCBndXR0ZXJzLCB3YWl0aW5nIGZvciByb3ctZ2FwIHRvIGJlIGltcGxlbWVudGVkIGZvciBmbGV4Ym94LiAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NTU19GbGV4aWJsZV9Cb3hfTGF5b3V0L01hc3RlcmluZ19XcmFwcGluZ19vZl9GbGV4X0l0ZW1zI0NyZWF0aW5nX2d1dHRlcnNfYmV0d2Vlbl9pdGVtcyAqL1xuICAgICAgbWFyZ2luLWxlZnQ6IC0xcmVtO1xuXG4gICAgICA+ICoge1xuICAgICAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLyogZW5kIG9mIGZsZXggZ3V0dGVyIGhhY2sgKi9cblxuICAgICAgLmJ1dHRvbiB7XG4gICAgICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuICAgICAgfVxuXG4gICAgICA+IDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICY6bm90KC5ib3gtcGFkKSA+IGgxIHtcbiAgICBAZXh0ZW5kICVib3gtcGFkZGluZztcblxuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gICZfX3BhZCB7XG4gICAgQGV4dGVuZCAlYm94LXBhZGRpbmctaG9yaXo7XG4gIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbWFpbi1tYXJnaW4pIHtcbiAgLmJveCB7XG4gICAgQGluY2x1ZGUgYm94LXJhZGl1cztcbiAgfVxufVxuIiwiLmJ1dHRvbiB7XG4gIEBleHRlbmQgJXJvYm90by1mYXQsICVidXR0b24tc2hhZG93LCAlYm94LXJhZGl1cztcblxuICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBwYWRkaW5nOiAwLjhlbSAxZW07XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAmLFxuICAmOnZpc2l0ZWQsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkYy1wcmltYXJ5LW92ZXI7XG4gIH1cblxuICAmOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBAZXh0ZW5kICVidXR0b24tcmFpc2VkLXNoYWRvdztcblxuICAgIGNvbG9yOiAkYy1wcmltYXJ5LW92ZXI7XG4gICAgYmFja2dyb3VuZDogbGlnaHRlbigkYy1wcmltYXJ5LCA3KTtcbiAgfVxuXG4gICY6bm90KC5kaXNhYmxlZCk6Zm9jdXMge1xuICAgIEBleHRlbmQgJWZvY3VzLXNoYWRvdztcbiAgfVxuXG4gICYtbm8tdXBwZXIge1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgJi10aGluIHtcbiAgICBwYWRkaW5nOiAwLjFlbSAxZW07XG4gICAgZm9udC1zaXplOiA5MCU7XG4gIH1cblxuICAmLWZhdCB7XG4gICAgZm9udC1zaXplOiAxLjZyZW07XG4gIH1cblxuICAmLWdyZWVuIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnk7XG5cbiAgICAmOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oJGMtc2Vjb25kYXJ5LCA0KTtcbiAgICB9XG4gIH1cblxuICAmLXJlZCB7XG4gICAgYmFja2dyb3VuZDogJGMtZXJyb3I7XG5cbiAgICAmOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oJGMtZXJyb3IsIDExKTtcbiAgICB9XG4gIH1cblxuICAmLWxpbmsge1xuICAgIEBleHRlbmQgJWJ1dHRvbi1ub25lO1xuXG4gICAgY29sb3I6ICRjLWxpbms7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlLFxuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRjLWxpbmstaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgJi5idXR0b24tZW1wdHkge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG5cbiAgICAmLFxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRjLXByaW1hcnk7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuXG4gICAgJjpub3QoLmRpc2FibGVkKTpob3ZlciB7XG4gICAgICBAZXh0ZW5kICVidXR0b24tc2hhZG93O1xuICAgIH1cblxuICAgICYsXG4gICAgJi5idXR0b24tZ3JlZW4sXG4gICAgJi5idXR0b24tcmVkIHtcbiAgICAgICY6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgICBAZXh0ZW5kICVtZXRhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmJ1dHRvbi1yZWQsXG4gICAgJi5idXR0b24tcmVkOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1lcnJvcjtcbiAgICB9XG5cbiAgICAmLmJ1dHRvbi1ncmVlbixcbiAgICAmLmJ1dHRvbi1ncmVlbjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtc2Vjb25kYXJ5O1xuICAgIH1cbiAgfVxuXG4gICYuYnV0dG9uLW1ldGFsIHtcbiAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgICYsXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgfVxuXG4gICAgJjpub3QoLmRpc2FibGVkKTpob3ZlciB7XG4gICAgICBAZXh0ZW5kICVtZXRhbC1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICAmLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxuXG4gICYuYWN0aXZlIHtcbiAgICBAZXh0ZW5kICVhY3RpdmU7XG5cbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gICYuYWN0aXZlOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBAZXh0ZW5kICVhY3RpdmUtaG92ZXI7XG5cbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxufVxuIiwiLnVzZXItbGluayB7XG4gIEBleHRlbmQgJW5vd3JhcC1oaWRkZW47XG5cbiAgY29sb3I6ICRjLWZvbnQ7XG5cbiAgJi5vbmxpbmUgLmxpbmUge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oCQJztcbiAgICB9XG5cbiAgICBjb2xvcjogJGMtZ29vZDtcbiAgICBvcGFjaXR5OiAwLjk7XG5cbiAgICAmLnBhdHJvbiB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5saW5lIHtcbiAgICBAZXh0ZW5kICVkYXRhLWljb247XG5cbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxLjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuXG4gICAgLyogbm90IHN1cmUgYWJvdXQgdGhhdCAqL1xuICAgICYucGF0cm9uIHtcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6Akic7XG4gICAgfVxuXG4gICAgJi5wYXRyb246OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oCRJyAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAvKiBXaW5ncyBtYXJraW5nIGEgcmFwaWQgd2luIHN0cmVhayBvZiAzKyBnYW1lcy4gVGhlIG51bWJlciBpcyBkcmF3biBvbiB0aGUgd2luZ3MuICovXG4gICAgJi5zdHJlYWsge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIGNvbG9yOiAkYy1icmFnO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAn7oCRJyAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAvKiBUaGUgbnVtYmVyIGlzIGtlcHQgc3RyaWN0bHkgaW5zaWRlIHRoZSBpY29uJ3Mgb3duIGJveC4gLnVzZXItbGluayBleHRlbmRzXG4gICAgICAgICAlbm93cmFwLWhpZGRlbiAob3ZlcmZsb3c6IGhpZGRlbiksIGFuZCBpbiBhIGZsZXgvZ3JpZCByb3cgdGhlIGFuY2hvciBpc1xuICAgICAgICAgYmxvY2tpZmllZCBzbyB0aGF0IG92ZXJmbG93IHJlYWxseSBjbGlwcyAtLSBhbnl0aGluZyBkcmF3biBhYm92ZSB0aGUgbGluZVxuICAgICAgICAgYm94ICh0aGUgZWFybGllciBgdG9wOiAtMC4zNWVtYCkgbG9zdCBpdHMgdG9wIH4zLjhweC5cbiAgICAgICAgIENlbnRyZWQgYnkgbGluZSBib3ggcmF0aGVyIHRoYW4gZmxleCBvbiBwdXJwb3NlOiB0aGUgcHNldWRvIHRoZW4gb3ducyBpdHNcbiAgICAgICAgIHRleHQsIHdoaWNoIGlzIHdoYXQgYmFja2dyb3VuZC1jbGlwOnRleHQgbmVlZHMgZm9yIHRoZSBzaGluZSBzd2VlcC4gKi9cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogYXR0cihkYXRhLXN0cmVhayk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbiAgICAgICAgLyogMjAlIHVwIGZyb20gMC40OGVtLiBUaGUgdHJhbnNmb3JtIGJlbG93IGlzIGluIGVtLCBzbyBpdCBncm93cyB3aXRoIHRoaXMgYW5kXG4gICAgICAgICAgIHNwZW5kcyB0aGUgYm90dG9tIGNsZWFyYW5jZSBmaXJzdDogMS41cHggbWVhc3VyZWQgYXQgcmVhbCBzaXplLCBkb3duIGZyb21cbiAgICAgICAgICAgMy4zcHggYXQgMC40OGVtLiBUaGUgbmV4dCBpbmNyZWFzZSB3YW50cyBhIHNtYWxsZXIgbnVkZ2UsIG5vdCBhIGJpZ2dlciBzaXplLiAqL1xuICAgICAgICBmb250LXNpemU6IDAuNTc2ZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgLyogYmxhY2sgb24gdGhlIGdvbGQgd2luZ3MgaW4gbGlnaHQgdGhlbWVzOyBkYXJrIHRoZW1lcyBzd2FwIGluIGEgbWV0YWxsaWNcbiAgICAgICAgICAgc2lsdmVyIHZpYSB0aGUgdHdvICRjLXN0cmVhayogdmFyaWFibGVzICovXG4gICAgICAgIGNvbG9yOiAkYy1zdHJlYWs7XG4gICAgICAgIHRleHQtc2hhZG93OiAkYy1zdHJlYWstc2hhZG93O1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAvKiBOdWRnZSBpdCBkb3duLXJpZ2h0IG9udG8gdGhlIHdpbmcuIFRoZSBjb250YWluaW5nIGJsb2NrIGlzIHRoZSBpY29uIGJveCxcbiAgICAgICAgICAgc28gdGhpcyBzdGlsbCBoYXMgdG8gbGFuZCBpbnNpZGUgaXQgb3IgYW4gYW5jZXN0b3IncyBvdmVyZmxvdyBjbGlwcyB0aGVcbiAgICAgICAgICAgbnVtYmVyIGFnYWluLiAqL1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLjJlbSwgY2FsYygtNTAlICsgMC4zZW0pKTtcblxuICAgICAgICAvKiBTaGluZSBzd2VlcDogdGhlIG1ldGFsIGlzIGEgZ3JhZGllbnQgYW5kIGEgYnJpZ2h0IGJhbmQgdHJhdmVscyBhY3Jvc3MgaXQuXG4gICAgICAgICAgIFRoYXQgbmVlZHMgYmFja2dyb3VuZC1jbGlwOnRleHQsIHdoaWNoIG9ubHkgY2xpcHMgdG8gdGV4dCB0aGUgZWxlbWVudFxuICAgICAgICAgICBpdHNlbGYgb3ducyAtIGhlbmNlIHRoZSBsaW5lLWJveCBjZW50cmluZyBhYm92ZSByYXRoZXIgdGhhbiBmbGV4LiBBbnlcbiAgICAgICAgICAgYnJvd3NlciB3aXRob3V0IGl0IGtlZXBzIHRoZSBmbGF0ICRjLXN0cmVhayBmaWxsIGRlY2xhcmVkIGFib3ZlLiAqL1xuICAgICAgICBAc3VwcG9ydHMgKGJhY2tncm91bmQtY2xpcDogdGV4dCkgb3IgKC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0KSB7XG4gICAgICAgICAgLyogQSB3aGl0ZSBiYW5kIGFsb25lIGlzIG9ubHkgfjEuNDoxIGFnYWluc3QgdGhpcyBzaWx2ZXIgLSBpbnZpc2libGUgaW5cbiAgICAgICAgICAgICBwcmFjdGljZS4gVGhlIGRhcmsgdHJhaWxpbmcgZWRnZSBpcyB3aGF0IGFjdHVhbGx5IHJlYWRzIGFzIG1vdmVtZW50OlxuICAgICAgICAgICAgIH40LjQ6MSBhZ2FpbnN0IHRoZSBzYW1lIHNpbHZlciwgYW5kIGl0IGNvbXBvc2l0ZXMgdG8gYmxhY2sgb24gdGhlXG4gICAgICAgICAgICAgbGlnaHQgdGhlbWUsIHdoZXJlIHRoZSB3aGl0ZSBiYW5kIGlzIGFscmVhZHkgMjE6MSBvbiBpdHMgb3duLiAqL1xuICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgIDEwNWRlZyxcbiAgICAgICAgICAgICRjLXN0cmVhayAwJSxcbiAgICAgICAgICAgICRjLXN0cmVhayAzMCUsXG4gICAgICAgICAgICAjZmZmIDQ0JSxcbiAgICAgICAgICAgICNmZmYgNTAlLFxuICAgICAgICAgICAgcmdiYSgwLCAwLCAwLCAwLjU1KSA1NiUsXG4gICAgICAgICAgICAkYy1zdHJlYWsgNzAlLFxuICAgICAgICAgICAgJGMtc3RyZWFrIDEwMCVcbiAgICAgICAgICApO1xuICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAzMDAlIDEwMCU7XG4gICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gICAgICAgICAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAgICAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgLyogYSB0ZXh0LXNoYWRvdyBwYWludHMgb3ZlciBhIGNsaXBwZWQgYmFja2dyb3VuZCwgc28gYmV2ZWwgd2l0aCBhIGZpbHRlciAqL1xuICAgICAgICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgICAgICAgIGZpbHRlcjogJGMtc3RyZWFrLWZpbHRlcjtcbiAgICAgICAgICBhbmltYXRpb246IHN0cmVhay1zaGluZSA1LjRzIGxpbmVhciBpbmZpbml0ZTtcblxuICAgICAgICAgIC8qIEJvdGggZW5kcyBvZiB0aGUgc3dlZXAgcGFyayB0aGUgYmFuZCBjbGVhciBvZiB0aGUgZGlnaXRzLCBzbyBzaW1wbHlcbiAgICAgICAgICAgICBzdG9wcGluZyB0aGUgYW5pbWF0aW9uIGxlYXZlcyBhIGNsZWFuIHN0YXRpYyBudW1iZXIuICovXG4gICAgICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJi5tb2RlcmF0b3I6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oCCJztcbiAgICB9XG4gIH1cbn1cblxuYS51c2VyLWxpbms6aG92ZXIge1xuICBjb2xvcjogJGMtbGluaztcbn1cblxuLyogVGhlIGdsaW50IHRyYXZlbHMgbGVmdCB0byByaWdodCwgdGhlbiByZXN0cy4gYGxpbmVhcmAgb24gcHVycG9zZTogYW4gZWFzZWQgYmFuZFxuICAgd291bGQgcmVhZCBhcyBhIHB1bHNlIHJhdGhlciB0aGFuIGxpZ2h0IGNyb3NzaW5nIHRoZSBtZXRhbC4gKi9cbkBrZXlmcmFtZXMgc3RyZWFrLXNoaW5lIHtcbiAgMCUsXG4gIDEyJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAwO1xuICB9XG4gIDYyJSxcbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgMDtcbiAgfVxufVxuXG4udXRpdGxlIHtcbiAgY29sb3I6ICRjLWJyYWc7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAvKiBVKzFGQUVBIChkaXN0b3J0ZWQgZmFjZSkgZmFsbHMgYmFjayB0byBidW5kbGVkIHN1YnNldCBmb250IHdoZW4gc3lzdGVtIGxhY2tzIGl0ICovXG4gIGZvbnQtZmFtaWx5OiAnRGlzdG9ydGVkIEZhY2UnLCAnTm90byBTYW5zJywgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ05vdG8gQ29sb3IgRW1vamknLCBTYW5zLVNlcmlmO1xuXG4gICZbZGF0YS1ib3RdIHtcbiAgICBjb2xvcjogJGMtYm90O1xuICB9XG59XG4iLCIjYmxpbmQtbW9kZSB7XG4gIG1hcmdpbi1sZWZ0OiAtOTk5OTlweDtcbiAgaGVpZ2h0OiAwO1xuXG4gIC5ibGluZC1tb2RlICYge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA1cHggMDtcbiAgICBiYWNrZ3JvdW5kOiAjODg4O1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4uYmxpbmQtbW9kZSB7XG4gIC5pczo6YmVmb3JlLFxuICAuaXM6OmFmdGVyLFxuICBbZGF0YS1pY29uXTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBub25lO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG59XG4iLCIjZnJpZW5kX2JveCB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtdG9wbmF2LXZpc2libGUgJG1xLXNpdGUtaGVhZGVyLXRhbGwpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgei1pbmRleDogeignZnJpZW5kLWJveCcpO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1wb3B1cDtcbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItcmlnaHQ6IDA7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemU7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBtaW4td2lkdGg6IDI4MHB4O1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIG1heC13aWR0aDogNDgwcHg7XG4gIG1heC1oZWlnaHQ6IDk1JTtcblxuICAvKiBpbXByb3ZlIHNjcm9sbCBwZXJmcyAqL1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgQGluY2x1ZGUgaG92ZXJmbG93O1xuXG4gIC5mcmllbmRfYm94X3RpdGxlIHtcbiAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAzcHggNXB4O1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsLWhvdmVyO1xuICAgIH1cbiAgfVxuXG4gIC5jb250ZW50IHtcbiAgICBtYXgtaGVpZ2h0OiA4MHZoO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIGRpdiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctcG9wdXAsIDEwJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICAgIHBhZGRpbmc6IDNweCAwcHg7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xM3M7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtZm9udDtcbiAgICAgIH1cblxuICAgICAgJi51c2VyLWxpbmsge1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgd29yZC1icmVhazogbm9ybWFsO1xuXG4gICAgICAgIC5saW5lOjpiZWZvcmUge1xuICAgICAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgICAgICAgIGNvbnRlbnQ6ICfugJAnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYudHYge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgcGFkZGluZzogMCA1cHg7XG4gICAgICB9XG5cbiAgICAgICYuZnJpZW5kLXN0dWR5IHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDJweCA1cHggMCA1cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaS5saW5lIHtcbiAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG4gIH1cblxuICAubm9ib2R5IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmc6IDNweCA1cHg7XG5cbiAgICBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luOiA1cHg7XG4gICAgfVxuICB9XG5cbiAgYS5maW5kIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIG1hcmdpbjogN3B4O1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG4gIC5ub2JvZHk6aG92ZXIgYS5maW5kIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuIiwic2lnbmFsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDFlbTtcbiAgd2lkdGg6IDEuNWVtO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuc2lnbmFsID4gaSB7XG4gIHdpZHRoOiAyMCU7XG4gIG1hcmdpbi1sZWZ0OiAxcHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiA0MCU7XG4gIGJhY2tncm91bmQtY29sb3I6IGMtZGltbWVyKCRjLWdvb2QpO1xufVxuXG5zaWduYWwgPiBpOm50aC1jaGlsZCgyKSB7XG4gIGhlaWdodDogNjAlO1xufVxuXG5zaWduYWwgPiBpOm50aC1jaGlsZCgzKSB7XG4gIGhlaWdodDogODAlO1xufVxuXG5zaWduYWwgPiBpOm50aC1jaGlsZCg0KSB7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuc2lnbmFsLnExID4gaSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWJhZDtcbn1cblxuc2lnbmFsLnEyID4gaSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLXdhcm47XG59XG5cbnNpZ25hbCA+IGkub2ZmIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGMtc2hhZGU7XG59XG4iLCIjcG93ZXJUaXAsXG4jbWluaUdhbWUge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzLWZvcmNlLCAlcG9wdXAtc2hhZG93O1xuXG4gIHdpZHRoOiAyMHJlbTtcbiAgbWluLWhlaWdodDogM2VtO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1wb3B1cDtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiB6KCdwb3dlcnRpcCcpO1xuXG4gIC5taW5pLWdhbWVfX3BsYXllciB7XG4gICAgcGFkZGluZzogM3B4IDAuNWVtIDAuM2VtIDAuN2VtO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nOiAwLjNlbSAwLjVlbSAzcHggMC43ZW07XG4gICAgfVxuICB9XG59XG5cbi51cHQge1xuICAmX19pbmZvIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGhlaWdodDogODNweDtcbiAgICBib2R5Lm5vLXJhdGluZyAmIHtcbiAgICAgIGhlaWdodDogMzBweDtcbiAgICB9XG4gICAgcGFkZGluZzogMC40ZW0gMC41ZW0gMC4zZW0gMC41ZW07XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJl9fdG9wIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgICAgLmxlZnQge1xuICAgICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgICB9XG5cbiAgICAgICZfX2NvdW50cnkge1xuICAgICAgICBtYXJnaW4tbGVmdDogMC41ZW07XG4gICAgICB9XG5cbiAgICAgIC51c2VyLWxpbmsge1xuICAgICAgICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAubGluZSB7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmX19jb3VudHJ5IHtcbiAgICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICAgICAgZm9udC1zaXplOiAwLjllbTtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMC4zZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19yYXRpbmdzIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgICAgbWFyZ2luLXRvcDogM3B4O1xuXG4gICAgICA+IHNwYW4ge1xuICAgICAgICBmbGV4OiAwIDAgMjUlO1xuICAgICAgICBtYXgtd2lkdGg6IDI1JTtcbiAgICAgICAgcGFkZGluZzogMnB4IDNweDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX193YXJuaW5nIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuICB9XG5cbiAgJl9fc2NvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICZfX2FjdGlvbnMuYnRuLXJhY2sge1xuICAgIEBleHRlbmQgJWJveC1zaGFkb3c7XG5cbiAgICB3aWR0aDogMTAwJTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICBhIHtcbiAgICAgIGZsZXg6IDAgMCAxOCU7XG5cbiAgICAgICYucmVsYXRpb24tYnV0dG9uIHtcbiAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9fbW9kIHtcbiAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW47XG5cbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgJl9fbWFya3Mge1xuICAgICAgcGFkZGluZzogM3B4IDVweDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgcGFkZGluZzogMC4zZW0gMC41ZW0gMC4zZW0gMC41ZW07XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG59XG5cbiNtaW5pR2FtZSB7XG4gIG1pbi1oZWlnaHQ6IDI2MnB4O1xuXG4gIC5zcGlubmVyIHtcbiAgICBtYXJnaW46IDgycHggYXV0byAwIGF1dG87XG4gIH1cblxuICBjZy1ib2FyZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxufVxuIiwiLm1pbmktZ2FtZSB7XG4gIEBleHRlbmQgJW5vd3JhcC1oaWRkZW47XG5cbiAgZGlzcGxheTogYmxvY2s7XG5cbiAgJixcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gIH1cblxuICAmX19wbGF5ZXIge1xuICAgIEBleHRlbmQgJWZsZXgtYmV0d2Vlbi1ub3dyYXA7XG4gICAgQGV4dGVuZCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG5cbiAgICBwYWRkaW5nOiAzcHggMnB4IDAgMnB4O1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nOiAwIDJweCAycHggMnB4O1xuICAgIH1cbiAgfVxuXG4gICZfX3VzZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICAubmFtZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuXG4gIC5yYXRpbmcge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgbWFyZ2luLWxlZnQ6IDFjaDtcbiAgfVxuXG4gICZfX2Nsb2NrIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBwYWRkaW5nLWxlZnQ6IDJjaDtcblxuICAgICYuY2xvY2stLXJ1biB7XG4gICAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICB9XG5cbiAgJl9fcmVzdWx0IHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW4tcmlnaHQ6IDFjaDtcbiAgfVxufVxuIiwiLmJ0bi1yYWNrIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyOiAkYm9yZGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAuYnRuLXJhY2sge1xuICAgIC8qIGVtYmVkZGVkIHJhY2tzICovXG4gICAgYm9yZGVyOiBub25lO1xuICB9XG5cbiAgJl9fYnRuLFxuICBmb3JtIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXAsICVtZXRhbDtcblxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJpZ2h0OiAkYm9yZGVyO1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsLWhvdmVyO1xuXG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICB9XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIEBleHRlbmQgJWJveC1yYWRpdXMtbGVmdDtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgQGV4dGVuZCAlYm94LXJhZGl1cy1yaWdodDtcblxuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cblxuICAgIGkge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICB9XG4gIH1cblxuICAmX19idG4ge1xuICAgIHBhZGRpbmc6IDAgMC42ZW07XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBAZXh0ZW5kICVhY3RpdmU7XG5cbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxufVxuIiwiLyogY2lyY3VsYXIgbG9hZGVyICovXG4kbGVuMTogMzMuOTY7XG4kbGVuMjogNDIuNjtcbiRsZW4zOiAxMDQuMzE7XG4kdG90YWxfbGVuOiAkbGVuMSArICRsZW4yICsgJGxlbjM7XG5cbkBrZXlmcmFtZXMgbWFzazEge1xuICAwJSB7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6ICR0b3RhbF9sZW47XG4gIH1cbiAgMTAwJSB7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0kdG90YWxfbGVuO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgbWFzazIge1xuICAwJSB7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6ICR0b3RhbF9sZW4gKyAkbGVuMTtcbiAgfVxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLSR0b3RhbF9sZW4gKyAkbGVuMTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIG1hc2szIHtcbiAgMCUge1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAkdG90YWxfbGVuICsgJGxlbjEgKyAkbGVuMjtcbiAgfVxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLSR0b3RhbF9sZW4gKyAkbGVuMSArICRsZW4yO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1jb2xvciB7XG4gIDAlLFxuICAxMDAlIHtcbiAgICBzdHJva2U6ICRjLXByaW1hcnk7XG4gIH1cbiAgMjUlIHtcbiAgICBzdHJva2U6ICRjLWVycm9yO1xuICB9XG4gIDUwJSB7XG4gICAgc3Ryb2tlOiAkYy1zZWNvbmRhcnk7XG4gIH1cbiAgNzUlIHtcbiAgICBzdHJva2U6ICRjLWJyYWc7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzcGlubmVyLWNvbG9yIHtcbiAgMCUsXG4gIDEwMCUge1xuICAgIHN0cm9rZTogIzQyYTVmNTtcbiAgfVxuICAyNSUge1xuICAgIHN0cm9rZTogI2Y0NDMzNjtcbiAgfVxuICA1MCUge1xuICAgIHN0cm9rZTogI2ZkZDgzNTtcbiAgfVxuICA3NSUge1xuICAgIHN0cm9rZTogIzRjYWY1MDtcbiAgfVxufVxuXG4uc3Bpbm5lciB7XG4gIHdpZHRoOiA3MHB4O1xuICBoZWlnaHQ6IDcwcHg7XG4gIG1hcmdpbjogYXV0bztcblxuICBwYXRoIHtcbiAgICBhbmltYXRpb246IG1hc2sxIDIuNzVzIGN1YmljLWJlemllcigwLjQ5LCAwLjY3LCAwLjQ1LCAwLjI5KSBpbmZpbml0ZTtcbiAgfVxuICBwYXRoOm50aC1jaGlsZCgyKSB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IG1hc2syO1xuICB9XG4gIHBhdGg6bnRoLWNoaWxkKDMpIHtcbiAgICBhbmltYXRpb24tbmFtZTogbWFzazM7XG4gIH1cblxuICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIHBhdGgge1xuICAgICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgZyB7XG4gICAgYW5pbWF0aW9uOiBzcGlubmVyLWNvbG9yIDExcyBzdGVwcygxKSBpbmZpbml0ZTtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAkdG90YWxfbGVuICR0b3RhbF9sZW47XG4gIH1cblxuICAud2hpdGUgJiBwYXRoIHtcbiAgICBzdHJva2U6ICNmZmY7XG4gIH1cbn1cblxuLyogc21hbGwgaG9yaXpvbnRhbCBsb2FkZXIgKi9cbkBrZXlmcmFtZXMgZGRsb2FkZXIge1xuICAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0O1xuICB9XG59XG5cbi5kZGxvYWRlciB7XG4gIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgIGJhY2tncm91bmQ6IGltZy11cmwoJ2xvYWRlci9ibGFja3gxLnBuZycpIG5vLXJlcGVhdDtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZDogaW1nLXVybCgnbG9hZGVyL3doaXRleDEucG5nJykgbm8tcmVwZWF0O1xuICB9XG5cbiAgYW5pbWF0aW9uOiBkZGxvYWRlciAwLjVzIHN0ZXBzKDE1KSBpbmZpbml0ZTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMzJweDtcbiAgaGVpZ2h0OiA4cHg7XG59XG4iLCIkcmVjb24taGVpZ2h0OiAyLjVyZW07XG5cbkBrZXlmcmFtZXMgcmVjb25uZWN0ZWQge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkcmVjb24taGVpZ2h0KTtcbiAgfVxufVxuXG4jcmVjb25uZWN0aW5nIHtcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwLCAlcG9wdXAtc2hhZG93O1xuXG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgY29sb3I6ICRjLWJhZC1vdmVyO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAkcmVjb24taGVpZ2h0O1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7XG4gIHotaW5kZXg6IHooJ3JlY29ubmVjdGluZycpO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHJlY29uLWhlaWdodCk7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICB9XG5cbiAgLm9mZmxpbmUgJiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAub25saW5lLnJlY29ubmVjdGVkICYge1xuICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgYW5pbWF0aW9uOiByZWNvbm5lY3RlZCAyLjVzIGVhc2Utb3V0IDEuNXMgYmFja3dhcmRzO1xuICB9XG5cbiAgLm9ubGluZSAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugL0nO1xuICB9XG59XG4iLCIjYW5ub3VuY2Uge1xuICBAZXh0ZW5kICVmbGV4LWJldHdlZW4sICVwb3B1cC1zaGFkb3c7XG5cbiAgZm9udC1zaXplOiAxLjRlbTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcGFkZGluZzogMC43cmVtIDFyZW07XG4gIHotaW5kZXg6IHooJ3RvdXItcmVtaW5kZXInKTtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteHgtc21hbGwpIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4O1xuICB9XG5cbiAgYSB7XG4gICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgfVxuXG4gIHRpbWUge1xuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xuICB9XG5cbiAgLmFjdGlvbnMge1xuICAgIGEge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmFubm91bmNlIHtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICB9XG59XG4iLCIuYXR0YWNrLXRyYWluaW5nIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxcmVtO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2hlYWRlciBoMSB7XG4gIGNvbG9yOiB2YXIoLS1jLWJyYWcpO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2hlYWRlciBwIHtcbiAgY29sb3I6IHZhcigtLWMtZm9udC1kaW1tZXIpO1xuICBmb250LXNpemU6IDEuMXJlbTtcbn1cblxuLmF0dGFjay10cmFpbmluZ19fZ2FtZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMnJlbTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19ib2FyZC13cmFwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogMS40ZW07XG4gIHBhZGRpbmctbGVmdDogMS40ZW07XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIHtcbiAgd2lkdGg6IDQ4MHB4O1xuICBoZWlnaHQ6IDQ4MHB4O1xuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19maWxlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiA0ODBweDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHNwYW4ge1xuICAgIGZsZXg6IDE7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS4xNWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiB2YXIoLS1jLWZvbnQtZGltKTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxufVxuXG4uYXR0YWNrLXRyYWluaW5nX19yYW5rcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMS40ZW07XG4gIGhlaWdodDogNDgwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHNwYW4ge1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS4xNWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiB2YXIoLS1jLWZvbnQtZGltKTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxufVxuXG4uYXR0YWNrLXRyYWluaW5nX19zaWRlYmFyIHtcbiAgbWluLXdpZHRoOiAyODBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxLjVyZW07XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX3N0YXRzIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYy1iZy16ZWJyYSk7XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYy1ib3JkZXIpO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19zdGF0cyA+IGRpdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBmb250LXNpemU6IDEuMXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX3N0YXRzID4gZGl2Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX190aW1lciAudGltZXIge1xuICBjb2xvcjogdmFyKC0tYy1icmFnKTtcbiAgZm9udC1zaXplOiAxLjNyZW07XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX3RpbWVyIC50aW1lci53YXJuaW5nIHtcbiAgY29sb3I6IHZhcigtLWMtYmFkKTtcbiAgYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlLCAxMDAlIHsgb3BhY2l0eTogMTsgfVxuICA1MCUgeyBvcGFjaXR5OiAwLjU7IH1cbn1cblxuLmF0dGFjay10cmFpbmluZ19fc2NvcmUgLnNjb3JlIHtcbiAgY29sb3I6IHZhcigtLWMtZ29vZCk7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX3Njb3JlIC5zY29yZS5uZWdhdGl2ZSB7XG4gIGNvbG9yOiB2YXIoLS1jLWJhZCk7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2hpZ2gtc2NvcmUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgZm9udC1zaXplOiAxLjFyZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gIC5oaWdoLXNjb3JlLXZhbHVlIHtcbiAgICBjb2xvcjogI2Y1YTYyMztcbiAgfVxuXG4gIC5oaWdoLXNjb3JlLWRhdGUge1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGNvbG9yOiB2YXIoLS1jLWZvbnQtZGltKTtcbiAgfVxufVxuXG4uYXR0YWNrLXRyYWluaW5nX19wb3NpdGlvbi1jb21wbGV0ZSB7XG4gIG1hcmdpbi10b3A6IDAuNHJlbTtcbiAgcGFkZGluZzogMC4zcmVtIDAuNnJlbTtcbiAgYmFja2dyb3VuZDogIzJlY2M3MTtcbiAgY29sb3I6ICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBhbmltYXRpb246IGZhZGVJbk91dCAxcyBlYXNlIGZvcndhcmRzO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbk91dCB7XG4gIDAlIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpOyB9XG4gIDE1JSB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxuICA3NSUgeyBvcGFjaXR5OiAxOyB9XG4gIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG59XG5cbi5uZXctaGlnaC1zY29yZSB7XG4gIGNvbG9yOiAjZjVhNjIzICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMS4zcmVtICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19jb250cm9scyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC41cmVtO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19pbnN0cnVjdGlvbnMge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jLWJnLXplYnJhMik7XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYy1ib3JkZXIpO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19pbnN0cnVjdGlvbnMgaDMge1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIGNvbG9yOiB2YXIoLS1jLWZvbnQtY2xlYXIpO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19pbnN0cnVjdGlvbnMgdWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmctbGVmdDogMS4ycmVtO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19pbnN0cnVjdGlvbnMgbGkge1xuICBtYXJnaW4tYm90dG9tOiAwLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX3Jlc3VsdHMge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IHZhcigtLWMtYmctemVicmEpO1xuICBwYWRkaW5nOiAycmVtO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWMtYm9yZGVyKTtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbn1cblxuLmF0dGFjay10cmFpbmluZ19fcmVzdWx0cyBoMiB7XG4gIGNvbG9yOiB2YXIoLS1jLWJyYWcpO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4ucmVzdWx0cy1zdGF0cyB7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLnJlc3VsdHMtc3RhdHMgcCB7XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLnJlc3VsdHMtc3RhdHMgc3BhbiB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogdmFyKC0tYy1nb29kKTtcbn1cblxuLyogUGllY2Ugc2VsZWN0aW9uIHN0YXRlcyAqL1xuLmF0dGFjay10cmFpbmluZ19fYm9hcmQgLnBpZWNlLnNlbGVjdGFibGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIC5waWVjZS5zZWxlY3RhYmxlOmhvdmVyIHtcbiAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMyk7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIC5waWVjZS5zZWxlY3RlZCB7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDhweCB2YXIoLS1jLWdvb2QpKTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19ib2FyZCAucGllY2UuaW5jb3JyZWN0IHtcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgOHB4IHZhcigtLWMtYmFkKSk7XG4gIGFuaW1hdGlvbjogc2hha2UgMC41cyBlYXNlLWluLW91dDtcbn1cblxuLyogU3F1YXJlIHNlbGVjdGlvbiBmb3IgQXR0YWNrIFRyYWluaW5nICovXG4uYXR0YWNrLXRyYWluaW5nX19ib2FyZCBzcXVhcmUge1xuICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG8gIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmF0dGFjay10cmFpbmluZ19fYm9hcmQgc3F1YXJlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMCwgMC4yKSAhaW1wb3J0YW50O1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19ib2FyZCBzcXVhcmUuc2VsZWN0ZWQ6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDI1NSwgMCwgMC41KSAhaW1wb3J0YW50O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMjtcbn1cblxuLmF0dGFjay10cmFpbmluZ19fYm9hcmQgc3F1YXJlLm1pc3NlZDo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDAsIDAuNikgIWltcG9ydGFudDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDI7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIHNxdWFyZS5pbmNvcnJlY3Q6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMCwgMCwgMC41KSAhaW1wb3J0YW50O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMjtcbn1cblxuLyogQWx0ZXJuYXRpdmUgYXBwcm9hY2ggdXNpbmcgY29vcmRpbmF0ZS1iYXNlZCBzZWxlY3RvcnMgKi9cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIC5jZy13cmFwIHNxdWFyZS5zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMjU1LCAwLCAwLjUpICFpbXBvcnRhbnQ7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIC5jZy13cmFwIHNxdWFyZS5taXNzZWQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAwLCAwLjYpICFpbXBvcnRhbnQ7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIC5jZy13cmFwIHNxdWFyZS5pbmNvcnJlY3Qge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMCwgMCwgMC41KSAhaW1wb3J0YW50O1xufVxuXG5Aa2V5ZnJhbWVzIHNoYWtlIHtcbiAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH1cbiAgMjUlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpOyB9XG4gIDc1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzcHgpOyB9XG59XG5cbi8qIFJlc3BvbnNpdmUgZGVzaWduICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5hdHRhY2stdHJhaW5pbmdfX2dhbWUge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuICBcbiAgLmF0dGFjay10cmFpbmluZ19fYm9hcmQge1xuICAgIHdpZHRoOiA0MDBweDtcbiAgICBoZWlnaHQ6IDQwMHB4O1xuICB9XG4gIFxuICAuYXR0YWNrLXRyYWluaW5nX19zaWRlYmFyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuYXR0YWNrLXRyYWluaW5nX19ib2FyZCB7XG4gICAgd2lkdGg6IDMyMHB4O1xuICAgIGhlaWdodDogMzIwcHg7XG4gIH1cbiAgXG4gIC5hdHRhY2stdHJhaW5pbmdfX3NpZGViYXIge1xuICAgIG1heC13aWR0aDogMzIwcHg7XG4gIH1cbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBRUVBLFlBQVk7QUFrQlosNkRBQTZEO0FBYzdELG1CQUFtQjtBQU1uQixrQ0FBa0M7QUFFbEMsc0JBQXNCO0FBTXRCLG9DQUFvQztBQUVwQyxvQkFBb0I7QUFNcEIsaUNBQWlDO0FBRWpDLGdCQUFnQjtBQUloQjt5RUFDeUU7QUFHekUsc0VBQXNFO0FBR3RFLCtCQUErQjtBQUUvQixnQkFBZ0I7QUFLaEIsK0JBQStCO0FBRS9CLGlCQUFpQjtBQUlqQixrQkFBa0I7QUFJbEIsY0FBYztBQUlkLGdCQUFnQjtBQUloQixpQkFBaUI7QUFJakIsK0JBQStCO0FBOEIvQixhQUFhO0FBTWIsYUFBYTtBRG5IYiw2REFBNkQ7QUFjN0QsbUJBQW1CO0FBS25C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QztFQUNULE9BQU8sQ0FBQSxLQUFDO0NBQ1Q7O0FBbEJMLEFBQ0UsTUFESSxDQUFDLEtBQUssQ0FDVixRQUFRLENBQUM7RUFNUCxnQkFBZ0IsRTNDTFosZ0NBQTRCO0MyQ01qQzs7QUFSSCxBQWNJLE1BZEUsQ0FBQyxLQUFLLENBY1IsTUFBTSxDQUFDO0VBQ0wsUUFBUSxDQUFBLFFBQUM7RUFDVCxRQUFRLENBQUEsUUFBQztFQUNULE9BQU8sQ0FBQSxLQUFDO0NBQ1Q7O0FBbEJMLEFBQ0UsTUFESSxDQUFDLEtBQUssQ0FDVixRQUFRLENBQUM7RUFNUCxnQkFBZ0IsRTNDTFosZ0NBQTRCO0MyQ01qQzs7QUFSSCxBQWNJLE1BZEUsQ0FBQyxLQUFLLENBY1IsTUFBTSxDQUFDO0VBQ0wsUUFBUSxDQUFBLFFBQUM7RUFDVCxRQUFRLENBQUEsUUFBQztFQUNULE9BQU8sQ0FBQSxLQUFDO0NBQ1Q7O0FBbEJMLEFBQ0UsTUFESSxDQUFDLEtBQUssQ0FDVixRQUFRLENBQUM7RUFNUCxnQkFBZ0IsRTNDTFosZ0NBQTRCO0MyQ01qQzs7QUFSSCxBQWNJLE1BZEUsQ0FBQyxLQUFLLENBY1IsTUFBTSxDQUFDO0VBQ0wsUUFBUSxDQUFBLFFBQUM7RUFDVCxRQUFRLENBQUEsUUFBQztFQUNULE9BQU8sQ0FBQSxLQUFDO0NBQ1Q7O0FBbEJMLEFBQ0UsT0FESyxDQUFDLEtBQUssQ0FDWCxRQUFRLENBQUM7RUFNUCxnQkFBZ0IsRTNDTFosaUNBQTRCO0MyQ01qQzs7QUFSSCxBQWNJLE9BZEcsQ0FBQyxLQUFLLENBY1QsTUFBTSxDQUFDO0VBQ0wsUUFBUSxDQUFBLFFBQUM7RUFDVCxRQUFRLENBQUEsUUFBQztFQUNULE9BQU8sQ0FBQSxLQUFDO0NBQ1Q7O0FBbEJMLEFBQ0UsUUFETSxDQUFDLEtBQUssQ0FDWixRQUFRLENBQUM7RUFNUCxnQkFBZ0IsRTNDTFosa0NBQTRCO0MyQ01qQzs7QUFSSCxBQWNJLFFBZEksQ0FBQyxLQUFLLENBY1YsTUFBTSxDQUFDO0VBQ0wsUUFBUSxDQUFBLFFBQUM7RUFDVCxRQUFRLENBQUEsUUFBQztFQUNULE9BQU8sQ0FBQSxLQUFDO0NBQ1Q7O0FBbEJMLEFBQ0UsTUFESSxDQUFDLEtBQUssQ0FDVixRQUFRLENBQUM7RUFNUCxnQkFBZ0IsRTNDTFosb0NBQTRCO0MyQ01qQzs7QUFSSCxBQWNJLE1BZEUsQ0FBQyxLQUFLLENBY1IsTUFBTSxDQUFDO0VBQ0wsUUFBUSxDQUFBLFFBQUM7RUFDVCxRQUFRLENBQUEsUUFBQztFQUNULE9BQU8sQ0FBQSxLQUFDO0NBQ1Q7O0FBbEJMLEFBQ0UsTUFESSxDQUFDLEtBQUssQ0FDVixRQUFRLENBQUM7RUFNUCxnQkFBZ0IsRTNDTFosb0NBQTRCO0MyQ01qQzs7QUFSSCxBQWNJLE1BZEUsQ0FBQyxLQUFLLENBY1IsTUFBTSxDQUFDO0VBQ0wsUUFBUSxDQUFBLFFBQUM7RUFDVCxRQUFRLENBQUEsUUFBQztFQUNULE9BQU8sQ0FBQSxLQUFDO0NBQ1Q7O0FBbEJMLEFBQ0UsS0FERyxDQUFDLEtBQUssQ0FDVCxRQUFRLENBQUM7RUFNUCxnQkFBZ0IsRTNDTFosdUNBQTRCO0MyQ01qQzs7QUFSSCxBQWNJLEtBZEMsQ0FBQyxLQUFLLENBY1AsTUFBTSxDQUFDO0VBQ0wsUUFBUSxDQUFBLFFBQUM7RUFDVCxRQUFRLENBQUEsUUFBQztFQUNULE9BQU8sQ0FBQSxLQUFDO0NBQ1Q7O0FBbEJMLEFBQ0UsT0FESyxDQUFDLEtBQUssQ0FDWCxRQUFRLENBQUM7RUFNUCxnQkFBZ0IsRTNDTFosaUNBQTRCO0MyQ01qQzs7QUFSSCxBQWNJLE9BZEcsQ0FBQyxLQUFLLENBY1QsTUFBTSxDQUFDO0VBQ0wsUUFBUSxDQUFBLFFBQUM7RUFDVCxRQUFRLENBQUEsUUFBQztFQUNULE9BQU8sQ0FBQSxLQUFDO0NBQ1Q7O0FBbEJMLEFBQ0UsY0FEWSxDQUFDLEtBQUssQ0FDbEIsUUFBUSxDQUFDO0VBTVAsZ0JBQWdCLEUzQ0xaLHdDQUE0QjtDMkNNakM7O0FBUkgsQUFjSSxjQWRVLENBQUMsS0FBSyxDQWNoQixNQUFNLENBQUM7RUFDTCxRQUFRLENBQUEsUUFBQztFQUNULFFBQVEsQ0FBQSxRQUFDO0VBQ1QsT0FBTyxDQUFBLEtBQUM7Q0FDVDs7QUFsQkwsQUFDRSxLQURHLENBQUMsS0FBSyxDQUNULFFBQVEsQ0FBQztFQU1QLGdCQUFnQixFM0NMWiwrQkFBNEI7QzJDTWpDOztBQVJILEFBY0ksS0FkQyxDQUFDLEtBQUssQ0FjUCxNQUFNLENBQUM7RUFDTCxRQUFRLENBQUEsUUFBQztFQUNULFFBQVEsQ0FBQSxRQUFDO0VBQ1QsT0FBTyxDQUFBLEtBQUM7Q0FDVDs7QUFsQkwsQUFDRSxNQURJLENBQUMsS0FBSyxDQUNWLFFBQVEsQ0FBQztFQU1QLGdCQUFnQixFM0NMWixnQ0FBNEI7QzJDTWpDOztBQVJILEFBY0ksTUFkRSxDQUFDLEtBQUssQ0FjUixNQUFNLENBQUM7RUFDTCxRQUFRLENBQUEsUUFBQztFQUNULFFBQVEsQ0FBQSxRQUFDO0VBQ1QsT0FBTyxDQUFBLEtBQUM7Q0FDVDs7QUFsQkwsQUFDRSxNQURJLENBQUMsS0FBSyxDQUNWLFFBQVEsQ0FBQztFQU1QLGdCQUFnQixFM0NMWixnQ0FBNEI7QzJDTWpDOztBQVJILEFBY0ksTUFkRSxDQUFDLEtBQUssQ0FjUixNQUFNLENBQUM7RUFDTCxRQUFRLENBQUEsUUFBQztFQUNULFFBQVEsQ0FBQSxRQUFDO0VBQ1QsT0FBTyxDQUFBLEtBQUM7Q0FDVDs7QUFsQkwsQUFDRSxVQURRLENBQUMsS0FBSyxDQUNkLFFBQVEsQ0FBQztFQU1QLGdCQUFnQixFM0NMWixvQ0FBNEI7QzJDTWpDOztBQVJILEFBY0ksVUFkTSxDQUFDLEtBQUssQ0FjWixNQUFNLENBQUM7RUFDTCxRQUFRLENBQUEsS0FBQztFQUNULFFBQVEsQ0FBQSxRQUFDO0VBQ1QsT0FBTyxDQUFBLEtBQUM7Q0FDVDs7QUFsQkwsQUFDRSxPQURLLENBQUMsS0FBSyxDQUNYLFFBQVEsQ0FBQztFQU1QLGdCQUFnQixFM0NMWixxQ0FBNEI7QzJDTWpDOztBQVJILEFBY0ksT0FkRyxDQUFDLEtBQUssQ0FjVCxNQUFNLENBQUM7RUFDTCxRQUFRLENBQUEsUUFBQztFQUNULFFBQVEsQ0FBQSxR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 */
