@charset "UTF-8";
/* Colors */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* text over primary background */
/* Secondary: green */
/* text over secondary background */
/* Accent: orange */
/* text over accent background */
/* Brag: gold */
/* text over brag background */
/* Error: red */
/* text over brag background */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* Custom */
/* Common imports for all pages */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout accross pages */
/* when the width is appropriate for col1, but landscape prevents it */
/* atm only chrome supports min-content, max-content */
html {
  font-family: 'Noto Sans', Sans-Serif;
}

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

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

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

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

.button.button-empty:not(.disabled):hover, .button.button-empty.button-green:not(.disabled):hover, .button.button-empty.button-red:not(.disabled):hover, #friend_box .friend_box_title, .btn-rack__btn,
.btn-rack form {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
  text-shadow: 0 1px 0 white;
}

#friend_box .friend_box_title:hover, .btn-rack__btn:hover,
.btn-rack form:hover {
  background: linear-gradient(to bottom, #fafafa 0%, #f2f2f2 100%);
  text-shadow: 0 1px 0 white;
}

.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: #bd111f;
  color: #fff;
  text-shadow: 1px 1px 1px white !important;
}

#trainer group.radio input:checked + label {
  background: #0456bc;
}

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

.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 {
  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:not(.disabled):focus {
  box-shadow: 0 0 12px #787878;
}

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

#friend_box .content a.user-link, .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;
  speak: 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%;
}

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

body {
  background-color: white;
  background-image: url(../images/moscow-chess_pattern_light_angled-01.png);
  background-size: 10%;
  color: #4d4d4d;
  overflow-x: hidden;
}

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

a {
  color: #bd111f;
  text-decoration: none;
}

a:hover, a:active, a:focus {
  color: #86000b;
}

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

small {
  font-size: .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: #4d4d4d;
  outline-color: #bd111f;
}

option,
optgroup {
  background: white;
  color: #1f1f1f;
}

input, textarea, select {
  background: #fafaf9;
  border: 1px solid #d9d9d9;
  padding: .6em 1em;
}

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

button, a {
  cursor: pointer;
}

::placeholder {
  color: #787878;
}

.copyable {
  background: #e3e3e3;
  color: #1f1f1f;
}

@font-face {
  font-family: "lichess";
  src: url(../font/lichess.woff2) format("woff2"), url(../font/lichess.woff) format("woff");
  font-display: block;
  font-weight: normal;
  font-style: normal;
}

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

/* cyrillic-ext */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 400;
  src: local("Noto Sans"), local("NotoSans"), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNr6DRAW_0.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-style: normal;
  font-weight: 400;
  src: local("Noto Sans"), local("NotoSans"), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNr4TRAW_0.woff2) format("woff2");
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* devanagari */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 400;
  src: local("Noto Sans"), local("NotoSans"), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNr5DRAW_0.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-style: normal;
  font-weight: 400;
  src: local("Noto Sans"), local("NotoSans"), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNr6TRAW_0.woff2) format("woff2");
  unicode-range: U+1F00-1FFF;
}

/* greek */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 400;
  src: local("Noto Sans"), local("NotoSans"), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNr5jRAW_0.woff2) format("woff2");
  unicode-range: U+0370-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 400;
  src: local("Noto Sans"), local("NotoSans"), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNr6jRAW_0.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-style: normal;
  font-weight: 400;
  src: local("Noto Sans"), local("NotoSans"), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNr6zRAW_0.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-style: normal;
  font-weight: 400;
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-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;
}

/* cyrillic-ext */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFVadyB1Wk.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-style: normal;
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFVYNyB1Wk.woff2) format("woff2");
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* devanagari */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFVZdyB1Wk.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-style: normal;
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFVaNyB1Wk.woff2) format("woff2");
  unicode-range: U+1F00-1FFF;
}

/* greek */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFVZ9yB1Wk.woff2) format("woff2");
  unicode-range: U+0370-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFVa9yB1Wk.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-style: normal;
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFVatyB1Wk.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-style: normal;
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-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;
}

/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmSU5fCRc4EsA.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-style: normal;
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2) format("woff2");
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* greek-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2) format("woff2");
  unicode-range: U+1F00-1FFF;
}

/* greek */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2) format("woff2");
  unicode-range: U+0370-03FF;
}

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

/* latin-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmSU5fChc4EsA.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-style: normal;
  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;
  -moz-osx-font-smoothing: grayscale;
}

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

h1 a:hover {
  color: #bd111f;
}

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

.user-link.online .line,
.is-green::before {
  color: #bd111f;
}

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

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

.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: .2em;
  content: 'N';
}

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

good {
  color: #629924;
}

bad {
  color: #cc3333;
}

/* infinite scroll */
.inf-more {
  width: 100%;
}

#infscr-loading .spinner {
  margin: 10px auto;
}

body {
  --site-header-height: 40px;
  --site-header-margin: 0px;
  --main-margin: 0;
  /* Feature detection for JS to read */
}

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

@media (hover: hover) {
  body {
    --hoverable: 1;
  }
}

@supports (display: grid) {
  body {
    --grid: 1;
  }
}

#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: white;
  }
  .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: #4d4d4d;
    padding: .6rem 0 .6rem .5rem;
    letter-spacing: -.06em;
    background: white;
  }
  .subnav a:hover {
    color: #bd111f;
  }
  .subnav a.active {
    background: #bd111f;
    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: #5e5e5e;
    padding: .7rem 2vw .7rem .8rem;
    position: relative;
    transition: all 150ms;
  }
  .subnav a::after {
    content: "";
    background: rgba(189, 17, 31, 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: #bd111f;
  }
  .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 {
  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);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 80%, rgba(20, 85, 0, 0.3) 80%);
}

square.oc.premove-dest {
  background: radial-gradient(transparent 0%, transparent 80%, 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);
}

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

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

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

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

piece.anim {
  z-index: 3;
}

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

piece.ghost {
  opacity: 0.3;
}

cg-helper {
  position: absolute;
  width: 12.5%;
  padding-bottom: 12.5%;
  display: table;
  /* hack: round to full pixel size in chrome */
  bottom: 0;
}

cg-container {
  position: absolute;
  width: 800%;
  height: 800%;
  display: block;
  bottom: 0;
}

.cg-wrap svg {
  overflow: hidden;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 2;
  opacity: 0.6;
}

.cg-wrap svg image {
  opacity: 0.5;
}

@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: #787878;
  }
}

@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: white;
  }
  .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: white;
    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: #4d4d4d;
    text-decoration: none;
    padding: .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: #bd111f;
    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) {
  .hamburger,
  .topnav-mask,
  .topnav-toggle {
    display: none;
  }
  #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: #bd111f;
    text-shadow: 0 1px 0 white;
    display: block;
    height: var(--nav-section);
    line-height: var(--site-header-height);
    padding: 0 .7rem;
    text-transform: uppercase;
    border-left: 2px solid transparent;
  }
}

@media (min-width: 980px) and (hover: none) {
  #topnav section > a {
    pointer-events: none;
  }
}

@media (min-width: 980px) {
  #topnav section .home {
    display: none;
  }
  #topnav div {
    visibility: hidden;
    max-height: inherit;
    position: absolute;
    left: 0;
    background: white;
    min-width: 10rem;
    box-shadow: 2px 5px 6px rgba(0, 0, 0, 0.3);
    border-radius: 0 3px 3px 3px;
    border-left: 2px solid #bd111f;
  }
  #topnav div a {
    display: block;
    padding: .6rem .7rem;
    color: #bd111f;
  }
  #topnav div a:hover {
    background: #bd111f;
    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: white;
    color: #bd111f;
    border-color: #bd111f;
  }
  #topnav.hover section:hover div,
  #topnav section:active div {
    visibility: visible;
    max-height: none;
  }
}

.site-title {
  width: 8rem;
  position: relative;
  font-size: 25px;
  line-height: 37px;
  text-shadow: 0 1px 0 white;
  white-space: nowrap;
  margin: 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(.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;
  }
}

.site-title a {
  height: 100%;
  width: 100%;
  position: absolute;
  top: 0;
  left: 0;
  overflow: hidden;
  line-height: 60px;
  text-indent: 9999px;
  white-space: nowrap;
  color: #4d4d4d;
  text-decoration: none;
  background: url("data:image/svg+xml,%3Csvg id='Слой_1' data-name='Слой 1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 355 150'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23ed1c24%7D.cls-2%7Bfill:%23fff%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M118.4 75.25a15.7 15.7 0 014.59-11.5 16.53 16.53 0 0123.14 0 16.59 16.59 0 010 23 16.53 16.53 0 01-23.14 0 15.88 15.88 0 01-4.6-11.5zm9.27 7.32a9.64 9.64 0 0013.78 0 11.05 11.05 0 000-14.63 9.64 9.64 0 00-13.78 0 10.17 10.17 0 00-2.72 7.31 10.17 10.17 0 002.72 7.32zM162.85 90.86h-6.29V59.64h5.49l15.74 19.98V59.64h6.24v31.22h-5.3l-15.88-20.07zM213.2 90.86h-22.26V59.64h6.42v25.47h15.83zM224.43 90.86h-6.38V59.64h6.38zM237.8 90.86h-6.28V59.64H237l15.74 19.98V59.64H259v31.22h-5.31l-15.87-20.07zM289.3 90.86h-23.4V59.64h22.92v5.76h-16.5v6.02h13.29v5.66h-13.29v8.03h16.99zM135.3 133.5a16.91 16.91 0 01-12.1-4.55 16.63 16.63 0 01-.04-23.37 16.96 16.96 0 0112.13-4.54 17.35 17.35 0 018.25 1.96v6.46a14.45 14.45 0 00-8.2-2.4 10.37 10.37 0 00-7.45 2.9 10.5 10.5 0 00.1 14.67 10.59 10.59 0 007.62 2.85 13.36 13.36 0 008.56-2.72v6.47a16.92 16.92 0 01-8.88 2.27zM156.07 132.88h-6.42v-31.22h6.42v11.68h14.1v-11.68h6.37v31.22h-6.38v-13.7h-14.09zM206.86 132.88h-23.4v-31.22h22.91v5.75h-16.5v6.02h13.3v5.67h-13.3v8.02h17zM222.33 133.5a20.29 20.29 0 01-11.86-3.35v-6.68a17.62 17.62 0 005.17 2.94 18.42 18.42 0 006.43 1.2 8.72 8.72 0 004.32-.95 2.94 2.94 0 001.7-2.66 2.65 2.65 0 00-1.6-2.58 10.26 10.26 0 00-1.8-.8l-1.06-.36-2.5-.76-2.32-.76q-.49-.13-2.1-.76a12.16 12.16 0 01-2-.93 9.89 9.89 0 01-2.94-2.72 9.67 9.67 0 01-1.07-4.38 7.68 7.68 0 013.16-6.5q3.17-2.41 8.6-2.41a20.93 20.93 0 0110.22 2.58v6.25a18.98 18.98 0 00-10.12-2.95q-5.31 0-5.31 3.08a2.42 2.42 0 001.65 2.14 11.21 11.21 0 002.54.94q2.1.58 3.4.98a23.95 23.95 0 016.77 3.25 7.43 7.43 0 013.12 6.51 8.32 8.32 0 01-3.52 7.1 14.6 14.6 0 01-8.88 2.58zM250.38 133.5a20.29 20.29 0 01-11.86-3.35v-6.68a17.62 17.62 0 005.17 2.94 18.42 18.42 0 006.42 1.2 8.72 8.72 0 004.33-.95 2.94 2.94 0 001.7-2.66 2.65 2.65 0 00-1.61-2.58 10.25 10.25 0 00-1.79-.8l-1.07-.36-2.5-.76-2.31-.76q-.5-.13-2.1-.76a12.16 12.16 0 01-2-.93 9.89 9.89 0 01-2.95-2.72 9.67 9.67 0 01-1.07-4.38 7.68 7.68 0 013.17-6.5q3.16-2.41 8.6-2.41a20.93 20.93 0 0110.22 2.58v6.25a18.98 18.98 0 00-10.13-2.95q-5.3 0-5.3 3.08a2.42 2.42 0 001.65 2.14 11.21 11.21 0 002.54.94q2.1.58 3.39.98a23.95 23.95 0 016.78 3.25 7.43 7.43 0 013.12 6.51 8.32 8.32 0 01-3.52 7.1 14.6 14.6 0 01-8.88 2.58zM125.89 49.24h-6.43v-31.2h6.38l9.05 12.92 9.05-12.93h6.34v31.21h-6.34V27.9l-7.18 10.03h-3.56l-7.31-10.03zM156.12 33.64a15.7 15.7 0 014.59-11.5 16.53 16.53 0 0123.14 0 15.82 15.82 0 014.64 11.5 15.9 15.9 0 01-4.64 11.5 16.53 16.53 0 01-23.14 0 15.88 15.88 0 01-4.6-11.5zm9.27 7.31a9.64 9.64 0 0013.78 0 10.17 10.17 0 002.77-7.31 10.18 10.18 0 00-2.77-7.32 9.64 9.64 0 00-13.78 0 10.17 10.17 0 00-2.72 7.32 10.17 10.17 0 002.72 7.31zM204.63 49.87a20.29 20.29 0 01-11.86-3.35v-6.68a17.62 17.62 0 005.17 2.94 18.42 18.42 0 006.42 1.2 8.72 8.72 0 004.33-.96 2.94 2.94 0 001.7-2.65 2.65 2.65 0 00-1.61-2.58 10.25 10.25 0 00-1.78-.8l-1.08-.36-2.5-.76-2.31-.76q-.5-.13-2.1-.76a12.17 12.17 0 01-2-.93 9.89 9.89 0 01-2.95-2.72 9.67 9.67 0 01-1.07-4.38 7.68 7.68 0 013.17-6.5q3.16-2.41 8.6-2.41a20.93 20.93 0 0110.22 2.58v6.25a18.98 18.98 0 00-10.13-2.95q-5.3 0-5.3 3.08a2.42 2.42 0 001.65 2.14 11.22 11.22 0 002.54.94q2.1.58 3.39.98a23.95 23.95 0 016.78 3.25 7.43 7.43 0 013.12 6.51 8.32 8.32 0 01-3.53 7.1 14.6 14.6 0 01-8.87 2.58zM237.72 49.87a16.91 16.91 0 01-12.09-4.55 15.54 15.54 0 01-4.81-11.68 15.43 15.43 0 014.77-11.69 16.96 16.96 0 0112.13-4.54 17.35 17.35 0 018.25 1.96v6.46a14.45 14.45 0 00-8.2-2.4 10.37 10.37 0 00-7.45 2.9 9.74 9.74 0 00-2.95 7.3A9.74 9.74 0 00230.4 41a10.59 10.59 0 007.63 2.85 13.36 13.36 0 008.56-2.72v6.47a16.92 16.92 0 01-8.87 2.27zM250.56 33.64a15.7 15.7 0 014.6-11.5 16.53 16.53 0 0123.14 0 15.82 15.82 0 014.63 11.5 15.9 15.9 0 01-4.63 11.5 16.53 16.53 0 01-23.15 0 15.88 15.88 0 01-4.6-11.5zm9.27 7.31a9.64 9.64 0 0013.78 0 10.17 10.17 0 002.77-7.31 10.18 10.18 0 00-2.77-7.32 9.64 9.64 0 00-13.78 0 10.17 10.17 0 00-2.72 7.32 10.17 10.17 0 002.72 7.31zM301.03 49.42h-5.66L284.9 18.03h7.14l6.42 21.05 7.04-21.14h5l7.09 21.14L324 18.03h7l-10.52 31.4h-5.67L308 28.6zM36.45 16.5h64.82a3.91 3.91 0 013.91 3.91v108.72a3.91 3.91 0 01-3.91 3.92H36.45a3.91 3.91 0 01-3.91-3.92V20.41a3.91 3.91 0 013.91-3.9z'/%3E%3Ccircle class='cls-2' cx='69' cy='125' r='3'/%3E%3Cpath class='cls-2' d='M97.87 111.83a4.66 4.66 0 01-4.66 4.67h-48.7a4.66 4.66 0 01-4.66-4.67V26.3a29.02 29.02 0 0127.59 20.04h2.84a29.02 29.02 0 0127.6-20.04z'/%3E%3Cpath class='cls-1' d='M71.85 71.28c-.17-2.5 2.13-5.52 2.45-6.17.4-.82-.14-1.48-1.18-1.97-1.1-.6-1.97-.64-2.6-1.11-.74-.56-.62-2.09-.62-2.87H71v-1.9h-1.1v-1.12h-1.94v1.11h-1.1v1.9H68c0 .8.11 2.32-.63 2.88-.62.47-1.5.52-2.6 1.11-1.03.5-1.57 1.15-1.17 1.97.32.65 2.61 3.67 2.44 6.17-.2 3.14-4.89 4.11-5.99 4.66-1.1.55-1.05 1.51.05 1.9 1.22.44 3.13.64 3.98.99a1.62 1.62 0 011.26 1.68 43.3 43.3 0 01-.76 9.74c-.13.76-1.15 1.33-1.31 1.89-.14.47.38 1.75.31 2.2-.85 5.64-4.65 9.62-5.99 10.34.16 1.05-.47 2.72-1.9 2.8s-1.59 2.32 0 2.32H82.2c1.59 0 1.42-2.24 0-2.32s-2.06-1.75-1.9-2.8c-1.33-.72-5.14-4.7-5.99-10.34-.06-.45.46-1.73.32-2.2-.16-.56-1.19-1.13-1.31-1.9a43.3 43.3 0 01-.77-9.73 1.62 1.62 0 011.27-1.68c.84-.35 2.75-.55 3.98-.99 1.1-.39 1.14-1.35.04-1.9-1.1-.55-5.78-1.52-5.99-4.66z'/%3E%3C/svg%3E") center center no-repeat;
  /*Ivan*/
  /* &:hover {
      color: $c-primary;

      span {
        color: $c-primary-dim;
      }
    }*/
}

.site-title span {
  display: none;
  color: #787878;
}

.site-title .kiddo {
  color: #b3b3b3;
  font-weight: bold;
  margin-right: .5em;
}

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

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

.site-buttons .link:hover {
  color: black;
}

.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: white;
  z-index: 108;
}

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

.site-buttons .shown .toggle {
  background: white;
  color: #4d4d4d;
}

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

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

.site-buttons .link-center {
  margin-top: 5px;
  height: inherit;
  line-height: inherit;
}

#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: 1400px;
  margin: 0 auto;
  --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;
}

#clinput .tt-menu .empty, #clinput .tt-menu .spinner {
  display: 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: white;
}

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

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

.view_solution .button.button-empty {
  transition: none;
  color: #fff;
  background: #bd111f;
}

.view_solution .button.button-empty:hover {
  color: #fff;
  background: #ed1c24;
}

.view_solution.show {
  visibility: visible;
  animation: reveal 1.5s;
}

.button {
  background: #bd111f;
  text-transform: uppercase;
  padding: .8em 1em;
  border: none;
  cursor: pointer;
  text-align: center;
  user-select: none;
  white-space: nowrap;
  transition: all 150ms;
}

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

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

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

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

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

.button-green {
  background: #0456bc;
}

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

.button-red {
  background: #cc3333;
}

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

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

.button.button-empty, .button.button-empty:hover {
  color: #1b78d0;
}

.button.button-empty:not(.disabled):hover {
  text-shadow: none;
}

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

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

.button.button-empty.signin {
  background: #bd111f;
  color: #fff;
}

.button.button-empty.signin:not(.disabled):hover {
  background: #ed1c24;
  text-shadow: none;
}

.button.button-metal {
  background: #bd111f;
}

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

.button.button-metal:not(.disabled):hover {
  background: #ed1c24;
}

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

.button.active {
  color: #fff;
  background: #8a000b;
}

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

.user-link {
  color: #4d4d4d;
}

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

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

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

.user-link .line {
  color: #4d4d4d;
  opacity: 0.5;
  display: inline-block;
  width: 1.5em;
  text-align: center;
  vertical-align: text-top;
  /* not sure about that */
}

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

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

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

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

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

.utitle {
  color: #d59020;
  font-weight: bold;
}

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

#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: white;
  border: 1px solid #d9d9d9;
  border-right: 0;
  border-bottom: 0;
  border-top-left-radius: 3px;
  font-size: .9rem;
  min-width: 150px;
  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 {
    overflow: hidden;
  }
  #friend_box:hover {
    overflow-y: auto;
  }
}

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

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

#friend_box .content div {
  display: flex;
}

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

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

#friend_box .content a:hover {
  color: #4d4d4d;
}

#friend_box .content a.user-link {
  max-width: 150px;
}

#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: #0456bc;
}

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

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

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

#powerTip .mini-game__player,
#miniGame .mini-game__player {
  padding: 3px .5em .3em .7em;
}

#powerTip .mini-game__player:first-child,
#miniGame .mini-game__player:first-child {
  padding: .3em .5em 3px .7em;
}

.upt__info {
  height: 83px;
  padding: .4em .5em .3em .5em;
  border-bottom: 1px solid #d9d9d9;
  overflow: hidden;
}

.upt__info__top__country {
  margin-left: .5em;
}

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

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

.upt__info__top__country {
  font-size: .9em;
}

.upt__info__top__country img {
  margin-right: .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: .3em .5em .3em .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: #4d4d4d;
}

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

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

.mini-game__user {
  overflow: hidden;
}

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

.mini-game__clock {
  padding: 0 1ch;
}

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

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

.btn-rack {
  display: inline-flex;
  align-items: center;
  border: 1px solid #d9d9d9;
  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 #d9d9d9;
  color: #4d4d4d;
}

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

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

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

/* circular loader */
@keyframes spinner-rotate {
  100% {
    transform: rotate(360deg);
  }
}

@keyframes spinner-dash {
  0%, 10% {
    stroke-dasharray: 1,270;
    stroke-dashoffset: 0;
  }
  40% {
    stroke-dasharray: 89,240;
    stroke-dashoffset: 0;
  }
  100% {
    stroke-dasharray: 1,240;
    stroke-dashoffset: -110;
  }
}

@keyframes spinner-color {
  0%, 20%, 100% {
    stroke: #42a5f5;
  }
  30%, 45% {
    stroke: #f44336;
  }
  50%, 70% {
    stroke: #fdd835;
  }
  75%, 95% {
    stroke: #4caf50;
  }
}

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

.spinner svg {
  animation: spinner-rotate 1.5s linear infinite;
}

.spinner circle {
  stroke: #42a5f5;
  stroke-width: 4;
  animation: spinner-dash 1.275s ease-in-out infinite, spinner-color 5.1s linear infinite;
}

.white .spinner circle {
  animation: spinner-dash 1.275s ease-in-out infinite;
  stroke: #fff;
}

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

.ddloader {
  background: url("../images/loader/blackx1.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: "J";
}

#announce {
  font-size: 1.4em;
  position: fixed;
  background: #bd111f;
  color: #fff;
  position: fixed;
  bottom: 0;
  left: 0;
  padding: .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: #bd111f;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS9jc3MvYnVpbGQvc2l0ZS5saWdodC5jc3MiLCJzb3VyY2VzIjpbInNpdGUvY3NzL2J1aWxkL3NpdGUubGlnaHQuc2NzcyIsImNvbW1vbi9jc3MvdGhlbWUvX2xpZ2h0LnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19kZWZhdWx0LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mdW5jdGlvbnMuc2NzcyIsInNpdGUvY3NzL2J1aWxkL19zaXRlLnNjc3MiLCJjb21tb24vY3NzL19saWNoZXNzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL19icmVha3BvaW50LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3NldHRpbmdzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2NvbnRleHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9faGVscGVycy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19wYXJzZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19zaW5nbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3NpbmdsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX2RvdWJsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LXBhaXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL2RvdWJsZS9fZG91YmxlLXN0cmluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fdHJpcGxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy90cmlwbGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19yZXNvbHV0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9yZXNvbHV0aW9uL19yZXNvbHV0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX25vLXF1ZXJ5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3Jlc3BvbmQtdG8uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbGVnYWN5LXNldHRpbmdzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19hbGwuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX3otaW5kZXguc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX21lZGlhLXF1ZXJpZXMuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX3ZhcmlhYmxlcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdW5pYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX21peGlucy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZXh0ZW5kcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZmxleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fYm94LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbHVpZC1zaXplLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX2VsZW1lbnRzLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX2Zvcm0uc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fZm9udHMuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwiY29tbW9uL2Nzcy9iYXNlL19kYXRhLWljb24uc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fdW5yZWFkLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX3V0aWwuc2NzcyIsImNvbW1vbi9jc3MvbGF5b3V0L19iYXNlLnNjc3MiLCJjb21tb24vY3NzL2xheW91dC9fcGFnZS1tZW51LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc3VibmF2LnNjc3MiLCJjb21tb24vY3NzL3ZlbmRvci9jaGVzc2dyb3VuZC9fY2hlc3Nncm91bmQuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19ib2FyZC0yZC5zY3NzIiwiY29tbW9uL2Nzcy9oZWFkZXIvX2hlYWRlci5zY3NzIiwiY29tbW9uL2Nzcy9oZWFkZXIvX3RvcG5hdi1oaWRkZW4uc2NzcyIsImNvbW1vbi9jc3MvaGVhZGVyL190b3BuYXYtdmlzaWJsZS5zY3NzIiwiY29tbW9uL2Nzcy9oZWFkZXIvX3RpdGxlLnNjc3MiLCJjb21tb24vY3NzL2hlYWRlci9fYnV0dG9ucy5zY3NzIiwiY2xpL2Nzcy9fY2xpbnB1dC5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2JvYXJkLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fYm94LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fYnV0dG9uLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fdXNlci1saW5rLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fYmxpbmQtbW9kZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2ZyaWVuZC1ib3guc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19zaWduYWwuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19wb3dlci10aXAuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19taW5pLWdhbWUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19idG4tcmFjay5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2xvYWRlci5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX3JlY29ubmVjdGluZy5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2Fubm91bmNlLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvdGhlbWUvbGlnaHRcIjtcbkBpbXBvcnQgXCJzaXRlXCI7XG4iLCJAaW1wb3J0IFwiZGVmYXVsdFwiO1xuXG4kdGhlbWU6IFwibGlnaHRcIjtcbiR0aGVtZS1saWdodDogdHJ1ZTtcbiR0aGVtZS1kYXJrOiBmYWxzZTtcblxuJGMtYmctcGFnZTogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLXBhZ2UtaW1nOiB1cmwoLi4vaW1hZ2VzL21vc2Nvdy1jaGVzc19wYXR0ZXJuX2xpZ2h0X2FuZ2xlZC0wMS5wbmcpO1xuJGMtYmctcGFnZS1iczogMTAlO1xuXG5AbWl4aW4gbWV0YWwtYmcge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCwgOTYpIDAlLCBoc2woMCwgMCwgOTMpIDEwMCUpO1xufVxuXG5AbWl4aW4gbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcblxuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCwgOTgpIDAlLCBoc2woMCwgMCwgOTUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgkYy1saW5rLCBoc2woMCwgMCUsIDEwMCUpLCAyMCUpIDAlLCBtaXgoJGMtbGluaywgaHNsKDAsIDAlLCA5NCUpLCAyMCUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbC1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgkYy1saW5rLCAjZmZmLCAyNSUpIDAlLCBtaXgoJGMtbGluaywgYy1saWdodCgkYy1iZy1wYWdlLCA5MCUpLCAyNSUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGUge31cbiIsIkBpbXBvcnQgXCIuLi9hYnN0cmFjdC9mdW5jdGlvbnNcIjtcblxuLyogQ29sb3JzICovXG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLXNpdGUtaHVlOiAzNztcblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDkyJSk7XG5cbiRjLWJnLXBhZ2UtaW1nOiBub25lO1xuJGMtYmctcGFnZS1iczogYXV0bztcblxuLy8gaHNsKDIxMCwgMTclLCA5NSUpXG4kYy1iZy1oaWdoOiBoc2woMCwgMCUsIDEwMCUpO1xuJGMtYmctbG93OiBoc2woMCwgMCUsIDg5JSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTYuNSUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTIlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDg0JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgMzAlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDQ3JSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA3MCUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCAxMiUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDAlKTtcbiRjLXNoYWRlOiBjLWRpbW1lcigkYy1mb250LCA4MCUpO1xuJGMtZm9udC1wYWdlOiBjLWxpZ2h0KCRjLWZvbnQsIDM3JSk7XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6ICNiZDExMWY7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBwcmltYXJ5IGJhY2tncm91bmQgKi9cblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG4kYy1zZWNvbmRhcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHNlY29uZGFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIEFjY2VudDogb3JhbmdlICovXG4kYy1hY2NlbnQ6ICNiZDExMWY7XG4kYy1hY2NlbnQtZGltOiBjLWRpbW1lcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LWNsZWFyOiBjLWNsZWFyZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYWNjZW50IGJhY2tncm91bmQgKi9cblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQ4JSk7XG4kYy1icmFnLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogRXJyb3I6IHJlZCAqL1xuJGMtcmVkOiBoc2woMCwgNjAlLCA1MCUpO1xuJGMtZXJyb3I6ICRjLXJlZDtcbiRjLWVycm9yLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYxJSwgNjIlKTtcbiRjLWZhbmN5LW92ZXI6IHdoaXRlO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAzNSUpO1xuJGMtbGluay1vdmVyOiAkYy1wcmltYXJ5LW92ZXI7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDk4JSk7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCA4NSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgODAlKTtcblxuJGMtcGFnZS1tYXNrOiBoc2xhKDAsIDAsIDAlLCAwLjYpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctaGlnaDtcbiRjLXBvcHVwOiAkYy1mb250O1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtZm9udC1zaGFkb3c6IHdoaXRlO1xuJHRleHQtc2hhZG93OiAwIDFweCAwICRjLWZvbnQtc2hhZG93O1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1sb3c7XG5cbi8qIEJvcmRlcnMgKi9cblxuJGJvcmRlci13aWR0aDogMXB4O1xuJGJvcmRlci1zdHlsZTogc29saWQ7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4vKiBTaGFkb3dzICovXG5cbiRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG5cbi8vICRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsMCwwLC4xNTcpO1xuXG4vKiBDdXN0b20gKi9cbiR3YXJuaW5nLWljb24tY29sb3I6IGhzbCg0NCwgMTAwJSwgNDYlKTtcbiIsIkBmdW5jdGlvbiBjLWxpZ2h0KCRjb2xvciwgJHZhbHVlKSB7XG4gIEByZXR1cm4gY2hhbmdlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHZhbHVlKTtcbn1cblxuQGZ1bmN0aW9uIGltZy11cmwoJHBhdGgpIHtcbiAgQHJldHVybiB1cmwoXCIjeyRpbWctcGF0aH0vI3skcGF0aH1cIik7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9saWNoZXNzXCI7XG4iLCIvKiBDb21tb24gaW1wb3J0cyBmb3IgYWxsIHBhZ2VzICovXG5cbkBpbXBvcnQgXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnRcIjtcblxuQGltcG9ydCBcImFic3RyYWN0L2FsbFwiO1xuXG5AaW1wb3J0IFwiYmFzZS9lbGVtZW50c1wiO1xuQGltcG9ydCBcImJhc2UvZm9ybVwiO1xuQGltcG9ydCBcImJhc2UvZm9udHNcIjtcbkBpbXBvcnQgXCJiYXNlL3R5cG9ncmFwaHlcIjtcbkBpbXBvcnQgXCJiYXNlL2RhdGEtaWNvblwiO1xuQGltcG9ydCBcImJhc2UvdW5yZWFkXCI7XG5AaW1wb3J0IFwiYmFzZS91dGlsXCI7XG5cbkBpbmNsdWRlIHRoZW1lLXN0eWxlO1xuXG5AaW1wb3J0IFwibGF5b3V0L2Jhc2VcIjtcbkBpbXBvcnQgXCJsYXlvdXQvcGFnZS1tZW51XCI7XG5cbkBpbXBvcnQgXCJ2ZW5kb3IvY2hlc3Nncm91bmQvY2hlc3Nncm91bmRcIjtcblxuQGltcG9ydCBcImhlYWRlci9oZWFkZXJcIjtcbkBpbXBvcnQgXCIuLi8uLi9jbGkvY3NzL2NsaW5wdXRcIjtcblxuQGltcG9ydCBcImNvbXBvbmVudC9ib2FyZFwiO1xuQGltcG9ydCBcImNvbXBvbmVudC9ib3hcIjtcbkBpbXBvcnQgXCJjb21wb25lbnQvYnV0dG9uXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50L3VzZXItbGlua1wiO1xuQGltcG9ydCBcImNvbXBvbmVudC9ibGluZC1tb2RlXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50L2ZyaWVuZC1ib3hcIjtcbkBpbXBvcnQgXCJjb21wb25lbnQvc2lnbmFsXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50L3Bvd2VyLXRpcFwiO1xuQGltcG9ydCBcImNvbXBvbmVudC9taW5pLWdhbWVcIjtcbkBpbXBvcnQgXCJjb21wb25lbnQvYnRuLXJhY2tcIjtcbkBpbXBvcnQgXCJjb21wb25lbnQvbG9hZGVyXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50L3JlY29ubmVjdGluZ1wiO1xuQGltcG9ydCBcImNvbXBvbmVudC9hbm5vdW5jZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCJAaW1wb3J0IFwiZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwiei1pbmRleFwiO1xuQGltcG9ydCBcIm1lZGlhLXF1ZXJpZXNcIjtcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJ1bmlib2FyZFwiO1xuQGltcG9ydCBcIm1peGluc1wiO1xuQGltcG9ydCBcImV4dGVuZHNcIjtcbkBpbXBvcnQgXCJmbGV4XCI7XG5AaW1wb3J0IFwiYm94XCI7XG5AaW1wb3J0IFwiZmx1aWQtc2l6ZVwiO1xuIiwiLy8vIFotaW5kZXhlcyBtYXAsIGdhdGhlcmluZyBhbGwgWiBsYXllcnMgb2YgdGhlIGFwcGxpY2F0aW9uXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTWFwXG4vLy8gQHByb3Age1N0cmluZ30ga2V5IC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcHJvcCB7TnVtYmVyfSB2YWx1ZSAtIFogdmFsdWUgbWFwcGVkIHRvIHRoZSBrZXlcbiR6LWluZGV4ZXM6IChcImNnX19wcm9tb3Rpb25cIjogMjA1LCBcImNnX19waWVjZS5kcmFnZ2luZ1wiOiAyMDQsIFwiY2dfX3BpZWNlLmFuaW1cIjogMywgXCJjZ19fc3ZnXCI6IDIsIFwiY2dfX3BpZWNlXCI6IDIsIFwiY2dfX3BpZWNlLmZhZGluZ1wiOiAxLCBcInBvd2VydGlwXCI6IDEyMCwgXCJpbnF1aXJ5XCI6IDExMSwgXCJ6ZW4tdG9nZ2xlXCI6IDExMCwgXCJtb2RhbFwiOiAxMTAsIFwibXNlbGVjdFwiOiAxMTAsIFwidG9wbmF2XCI6IDExMCwgXCJmdWxsc2NyZWVuLW1hc2tcIjogMTA5LCBcImRyb3Bkb3duXCI6IDEwOCwgXCJjb250ZXh0LW1lbnVcIjogMTA3LCBcInNpdGUtaGVhZGVyXCI6IDEwNiwgXCJyZWNvbm5lY3RpbmdcIjogMTA1LCBcInRvdXItcmVtaW5kZXJcIjogMTA0LCBcIm5hZy1jaXJjbGVcIjogMTAzLCBcIm16LW1lbnVcIjogNCwgXCJhYm92ZS1saW5rLW92ZXJsYXlcIjogMywgXCJmcmllbmQtYm94XCI6IDIsIFwibGluay1vdmVybGF5XCI6IDIsIFwiZ2FtZS1ib29rbWFya1wiOiAyLCBcInN1Ym5hdi1zaWRlXCI6IDIsIFwiZGVmYXVsdFwiOiAwKTtcblxuLy8vIEdldCBhIHotaW5kZXggdmFsdWUgZnJvbSBhIGxheWVyIG5hbWVcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5ZXIgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vLyBAcmVxdWlyZSAkei1pbmRleGVzXG5AZnVuY3Rpb24geigkbGF5ZXIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR6LWluZGV4ZXMsICRsYXllcik7XG59XG4iLCIvKiBXaWR0aHMgKi9cblxuJG1xLXh4LXNtYWxsOiBtaW4td2lkdGggNTAwcHg7XG4kbXEteC1zbWFsbDogbWluLXdpZHRoIDY1MHB4O1xuJG1xLXNtYWxsOiBtaW4td2lkdGggODAwcHg7XG4kbXEtbWVkaXVtOiBtaW4td2lkdGggOTgwcHg7XG4kbXEtbGFyZ2U6IG1pbi13aWR0aCAxMTIwcHg7XG4kbXEteC1sYXJnZTogbWluLXdpZHRoIDEyNjBweDtcblxuJG1xLW5vdC14eC1zbWFsbDogbWF4LXdpZHRoIDQ5OXB4O1xuJG1xLW5vdC14LXNtYWxsOiBtYXgtd2lkdGggNjQ5cHg7XG4kbXEtbm90LXNtYWxsOiBtYXgtd2lkdGggNzk5cHg7XG4kbXEtbm90LW1lZGl1bTogbWF4LXdpZHRoIDk3OXB4O1xuJG1xLW5vdC14LWxhcmdlOiBtYXgtd2lkdGggMTI1OXB4O1xuXG4vKiBIZWlnaHRzICovXG5cbiRtcS14LXNob3J0OiBtaW4taGVpZ2h0IDQwMHB4O1xuJG1xLXNob3J0OiBtaW4taGVpZ2h0IDUwMHB4O1xuJG1xLXRhbGw6IG1pbi1oZWlnaHQgNjAwcHg7XG4kbXEteC10YWxsOiBtaW4taGVpZ2h0IDcwMHB4O1xuXG4kbXEtbm90LXgtc2hvcnQ6IG1heC1oZWlnaHQgMzk5cHg7XG5cbi8qIE9yaWVudGF0aW9ucyAqL1xuXG4kbXEtcG9ydHJhaXQ6IG9yaWVudGF0aW9uIHBvcnRyYWl0O1xuJG1xLWxhbmRzY2FwZTogb3JpZW50YXRpb24gbGFuZHNjYXBlO1xuXG4vKiBDYXBhYmlsaXRpZXMgKi9cblxuJG1xLWhvdmVyLXllczogXCJob3ZlcjogaG92ZXJcIjtcbiRtcS1ob3Zlci1ubzogaG92ZXIgbm9uZTtcblxuLyogQWxpYXNlcyAqL1xuXG4kbXEtbWFpbi1tYXJnaW46ICRtcS1zbWFsbDtcblxuJG1xLXRvcG5hdi12aXNpYmxlOiAkbXEtbWVkaXVtO1xuJG1xLXRvcG5hdi1oaWRkZW46ICRtcS1ub3QtbWVkaXVtO1xuXG4kbXEtc2l0ZS1oZWFkZXItdGFsbDogJG1xLXRhbGw7XG5cbiRtcS1zdWJuYXYtdG9wOiAkbXEtbm90LXNtYWxsO1xuJG1xLXN1Ym5hdi1zaWRlOiAkbXEtc21hbGw7XG5cbiRtcS16b29tLWVuYWJsZWQ6ICRtcS1zbWFsbCAkbXEtc2hvcnQ7XG4iLCIkZGVidWc6IGZhbHNlO1xuXG4kZm9udC1wYXRoOiBcIi4uL2ZvbnRcIjtcbiRpbWctcGF0aDogXCIuLi9pbWFnZXNcIjtcblxuJHZpZXdwb3J0LW1pbi13aWR0aDogMzIwcHg7XG5cbiRibG9jay1nYXA6IDJ2bWluO1xuJGJsb2NrLWdhcC1oYWxmOiAxdm1pbjtcblxuJGJsb2NrLWdhcC1oOiAydmg7XG4kYmxvY2stZ2FwLXc6IDJ2dztcbiRibG9jay1nYXAtdy1oYWxmOiAxdnc7XG5cbiRib3gtcmFkaXVzLXNpemU6IDNweDtcblxuJHNpdGUtaGVhZGVyLXRhbGwtaGVpZ2h0OiA2MHB4O1xuJHNpdGUtaGVhZGVyLXNob3J0LWhlaWdodDogNDBweDtcblxuJHRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zO1xuXG4kbWFpbi1tYXgtd2lkdGg6IDEzMDBweCAhZGVmYXVsdDtcblxuJG1haW4tbWFyZ2luOiB2YXIoLS1tYWluLW1hcmdpbik7XG4kc2l0ZS1oZWFkZXItaGVpZ2h0OiB2YXIoLS1zaXRlLWhlYWRlci1oZWlnaHQpO1xuXG4kc2l0ZS1oZWFkZXItbWFyZ2luOiB2YXIoLS1zaXRlLWhlYWRlci1tYXJnaW4pO1xuXG4kc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0OiBjYWxjKCN7JHNpdGUtaGVhZGVyLWhlaWdodH0gKyAjeyRzaXRlLWhlYWRlci1tYXJnaW59KTtcbiIsIi8qIFVuaWJvYXJkOiBrZWVwIHRoZSBzYW1lIHBhZ2UgbGF5b3V0IGFjY3Jvc3MgcGFnZXMgKi9cblxuJG1xLWJvYXJkLXJlc2l6YWJsZTogJG1xLXNtYWxsO1xuJG1xLWNvbDEtdW5pYm9hcmQ6ICRtcS1ub3Qtc21hbGwgJG1xLXBvcnRyYWl0O1xuJG1xLWNvbDItdW5pYm9hcmQ6ICRtcS1zbWFsbCwgJG1xLWxhbmRzY2FwZTtcbiRtcS1jb2wzLXVuaWJvYXJkOiAkbXEteC1sYXJnZTtcblxuLyogd2hlbiB0aGUgd2lkdGggaXMgYXBwcm9wcmlhdGUgZm9yIGNvbDEsIGJ1dCBsYW5kc2NhcGUgcHJldmVudHMgaXQgKi9cbiRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemU6ICRtcS1ub3Qtc21hbGwgJG1xLWxhbmRzY2FwZTtcblxuJGNvbDMtdW5pYm9hcmQtc2lkZTogbWlubWF4KDIzMHB4LCAyMHZ3KTtcbiRjb2wzLXVuaWJvYXJkLXRhYmxlOiBtaW5tYXgoMjQwcHgsIDQwMHB4KTtcbiRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzOiAzcmVtO1xuXG4kY29sMy11bmlib2FyZC1taW4td2lkdGg6IGNhbGMoNzB2bWluICogdmFyKC0tYm9hcmQtc2NhbGUpKTtcbiRjb2wzLXVuaWJvYXJkLW1heC13aWR0aDogY2FsYygxMDB2aCAqIHZhcigtLWJvYXJkLXNjYWxlKSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfSk7XG4kY29sMy11bmlib2FyZC13aWR0aDogbWlubWF4KCRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aCwgJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoKTtcblxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZTogMC45O1xuXG4vLyB6b29tOiA4NSVcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRoOiA1MDBweDtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRoOiBjYWxjKDEwMHZoICogI3skY29sMy11bmlib2FyZC1kZWZhdWx0LXNjYWxlfSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfSk7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiBtaW5tYXgoI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aH0sICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGh9KTtcblxuJGNvbDItdW5pYm9hcmQtdGFibGU6ICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuJGNvbDItdW5pYm9hcmQtY29udHJvbHM6ICRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzO1xuJGNvbDItdW5pYm9hcmQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLXdpZHRoO1xuJGNvbDItdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDtcblxuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS10YWJsZTogbWlubWF4KDIwMHB4LCAyNDBweCk7XG4kY29sMi11bmlib2FyZC1zcXVlZXplLXdpZHRoOiBtaW5tYXgoY2FsYyg1NXZtaW4pLCBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGJsb2NrLWdhcH0pKTtcblxuJGNvbDEtdW5pYm9hcmQtY29udHJvbHM6ICRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzO1xuIiwiQG1peGluIGJveC1yYWRpdXMge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6ICRib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gYm94LW5lYXQge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gZGVidWctem9vbS1pbnB1dCB7XG4gICN6b29tLWlucHV0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtem9vbS1lbmFibGVkKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGJvdHRvbTogM3B4O1xuICAgICAgcmlnaHQ6IDNweDtcbiAgICAgIHdpZHRoOiAxMHZ3O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcDogYWxsLCAkZHVyOiAkdHJhbnNpdGlvbi1kdXJhdGlvbikge1xuICB0cmFuc2l0aW9uOiAkcHJvcCAkZHVyO1xufVxuXG5AbWl4aW4gaG92ZXJmbG93IHtcbiAgb3ZlcmZsb3cteTogYXV0bztcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoaWRlIHtcbiAgZGlzcGxheTogbm9uZTtcblxuICAuYmxpbmQtbW9kZSAmIHtcbiAgICBkaXNwbGF5OiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBlbGxpcHNpcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1sYXJnZSB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogNyAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGNyb3NzdGFibGUtc21hbGwge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG59XG5cbi8qIGF0bSBvbmx5IGNocm9tZSBzdXBwb3J0cyBtaW4tY29udGVudCwgbWF4LWNvbnRlbnQgKi9cbkBtaXhpbiBwcm9wZXItZ3JpZCB7XG4gIEBzdXBwb3J0cyAoaGVpZ2h0OiBtYXgtY29udGVudCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBib2R5LWZpeGVkLXNjcm9sbCB7XG4gIGJvZHkge1xuICAgIC8qIHByZXZlbnRzIHNjcm9sbCBiYXIgZmxpY2tlciB3aGVuIGRyYWdnaW5nIGEgcGllY2Ugb3V0ICovXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG4iLCIlYmFzZS1mb250LWZhbGxiYWNrIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lYmFzZS1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xufVxuXG4lcm9ib3RvIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xufVxuXG4lcm9ib3RvLWZhdCB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuJWNoZXNzLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gQ2hlc3MnLCAnTm90byBTYW5zJztcbn1cblxuJXNhbiB7XG4gIEBleHRlbmQgJWNoZXNzLWZvbnQ7XG5cbiAgLnBpZWNlLWxldHRlciAmIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG4gIH1cbn1cblxuLyogdGV4dCBwcmludGVkIGRpcmVjdGx5IG9uIHRoZSBwYWdlIGJhY2tncm91bmQgZGVzZXJ2ZXMgc3BlY2lhbCB0cmVhdG1lbnQgKHRyYW5zcCB0aGVtZSkgKi9cbiVwYWdlLWZvbnQge1xuICBjb2xvcjogJGMtZm9udC1wYWdlO1xufVxuXG4lcGFnZS10ZXh0IHtcbiAgQGV4dGVuZCAlcGFnZS1mb250LCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVwYWdlLWxpbmsge1xuICBAZXh0ZW5kICVwYWdlLWxpbmstZm9udCAhb3B0aW9uYWw7XG5cbiAgQGV4dGVuZCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG4lbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBtZXRhbC1ob3Zlcjtcbn1cblxuJXBhZ2UtbWV0YWwge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVtZXRhbC1iZyB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG4lYWN0aXZlLWluc2V0LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgM3B4IDRweCBoc2xhKDAsIDAsIDAsIDAuMTUpIGluc2V0O1xufVxuXG4lYWN0aXZlIHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAjYmQxMTFmO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbiN0cmFpbmVyIGdyb3VwLnJhZGlvIGlucHV0OmNoZWNrZWQgKyBsYWJlbHtcbiAgYmFja2dyb3VuZDogIzA0NTZiYztcbn1cblxuJWFjdGl2ZS1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IG1peCh3aGl0ZSwgJGMtYWNjZW50LCAyMCUpO1xufVxuXG4lYWN0aXZlLXNvZnQge1xuICBAZXh0ZW5kICVhY3RpdmUtaW5zZXQtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICMwNDU2YmM7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggJGMtZm9udC1zaGFkb3cgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbiVkcm9wZG93bi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAtMXB4IDVweCA2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4lcG9wdXAtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIyKTtcbn1cblxuJWJ1dHRvbi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggMCBoc2xhKDAsIDAsIDAlLCAwLjIyNSk7XG59XG5cbiVidXR0b24tcmFpc2VkLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggMHB4IGhzbGEoMCwgMCwgMCwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLW5vbmUge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGNvbG9yOiAkYy1mb250O1xufVxuXG4lY2hlY2tib3gge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogJGMtYmctcGFnZTtcbiAgYm9yZGVyOiAxcHggc29saWQgJGMtYmctbG93O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IC41ZW07XG5cbiAgJjpjaGVja2VkIHtcbiAgICBiYWNrZ3JvdW5kOiAjMDQ1NmJjO1xuICAgIGJvcmRlci1jb2xvcjogIzA0NTZiYztcbiAgfVxufVxuXG4lZm9jdXMtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAwIDEycHggJGMtZm9udC1kaW07XG59XG5cbiVub3dyYXAtaGlkZGVuIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1lbGxpcHNpcyB7XG4gIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbiVib3gtcGFkZGluZyB7XG4gIHBhZGRpbmc6IDV2aCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVib3gtcGFkZGluZy1ob3JpeiB7XG4gIHBhZGRpbmc6IDAgdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYnJlYWstd29yZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay13b3JkLWhhcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgLyogc3VwcG9ydDogZmlyZWZveCAqL1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstbm9wZSB7XG4gIG92ZXJmbG93LXdyYXA6IG5vcm1hbDtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuXG4lZWxsaXBzaXMge1xuICBAaW5jbHVkZSBlbGxpcHNpcztcbn1cblxuJXNxdWFyZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ldmlkZW8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XG5cbiAgLyogMTYvOSAqL1xuICAvLyBwYWRkaW5nLWJvdHRvbTogNzUlOyAvKiA0LzMgKi9cbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAqIHtcbiAgICBAZXh0ZW5kICVhYnMtMTAwO1xuXG4gICAgYm9yZGVyOiBub25lO1xuICB9XG59XG5cbiVkYXRhLWljb24ge1xuICBmb250LXNpemU6IDEuMmVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBzcGVhazogbm9uZTtcbiAgY29udGVudDogYXR0cihkYXRhLWljb24pO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbiVkYXRhLWljb24tdG9wIHtcbiAgJjo6YmVmb3JlIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cbn1cblxuJWZ1bGxzY3JlZW4tbWFzayB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAkYy1wYWdlLW1hc2s7XG4gIHotaW5kZXg6IHooXCJmdWxsc2NyZWVuLW1hc2tcIik7XG59XG5cbiVsaW5rLW92ZXJsYXkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogeihcImxpbmstb3ZlcmxheVwiKTtcbn1cblxuJWFicy0xMDAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4iLCIlZmxleC13cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbn1cblxuJWZsZXgtY2VudGVyIHtcbiAgLyogZXh0ZW5kcyAlZmxleC13cmFwICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbiVmbGV4LWNlbnRlci1ub3dyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbiVmbGV4LWJldHdlZW4ge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbiVmbGV4LWJldHdlZW4tbm93cmFwIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbiVmbGV4LWJldHdlZW4tc3RyZXRjaCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG59XG5cbiVmbGV4LWFyb3VuZCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xufVxuXG4lZmxleC1jb2x1bW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbjtcbn1cbiIsIiVib3gtcmFkaXVzIHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbn1cblxuJWJveC1yYWRpdXMtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLyogaGVscHMgd2l0aCBjbGlwcGluZyBiYWNrZ3JvdW5kIGludG8gYm9yZGVyLXJhZGl1cyAqL1xufVxuXG4lYm94LXJhZGl1cy1sZWZ0IHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAwIDAgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZSAwO1xufVxuXG4lYm94LXJhZGl1cy10b3Age1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXJhZGl1cy1ib3R0b20ge1xuICBib3JkZXItcmFkaXVzOiAwIDAgJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplO1xufVxuXG4lYm94LXJhZGl1cy10b3AtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwIDA7XG59XG5cbiVib3gtcmFkaXVzLXRvcC1yaWdodCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGJveC1yYWRpdXMtc2l6ZSAwIDA7XG59XG5cbiVib3gtc2hhZG93IHtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuJWJveC1uZWF0IHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXM7XG59XG5cbiVib3gtbmVhdC10b3Age1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy10b3A7XG59XG5cbiVib3gtbmVhdC1mb3JjZSB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzLWZvcmNlO1xufVxuIiwiJHZwLW1pbi13aWR0aDogMzIwcHggIWRlZmF1bHQ7XG4kdnAtbWF4LXdpZHRoOiAxMjAwcHggIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCR2YWx1ZSkge1xuICBAcmV0dXJuICR2YWx1ZSAvICgkdmFsdWUgKiAwICsgMSk7XG59XG5cbkBtaXhpbiBmbHVpZC1zaXplKCRwcm9wLCAkbWluLXNpemUsICRtYXgtc2l6ZSwgJG1pbi12dzogJHZwLW1pbi13aWR0aCwgJG1heC12dzogJHZwLW1heC13aWR0aCkge1xuICAkdTE6IHVuaXQoJG1pbi12dyk7XG4gICR1MjogdW5pdCgkbWF4LXZ3KTtcbiAgJHUzOiB1bml0KCRtaW4tc2l6ZSk7XG4gICR1NDogdW5pdCgkbWF4LXNpemUpO1xuXG4gIEBpZiAkdTEgPT0gJHUyIGFuZCAkdTEgPT0gJHUzIGFuZCAkdTEgPT0gJHU0IHtcbiAgICAmIHtcbiAgICAgICN7JHByb3B9OiAkbWluLXNpemU7XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluLXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiBjYWxjKCN7JG1pbi1zaXplfSArICN7c3RyaXAtdW5pdCgkbWF4LXNpemUgLSAkbWluLXNpemUpfSAqICgoMTAwdncgLSAjeyRtaW4tdnd9KSAvICN7c3RyaXAtdW5pdCgkbWF4LXZ3IC0gJG1pbi12dyl9KSk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWF4LXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiAkbWF4LXNpemU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgXCJmbHVpZC1zaXplIHJlcXVpcmVzIHRoYXQgYWxsIHZhbHVlcyBoYXZlIHRoZSBzYW1lIHVuaXRcIjtcbiAgfVxufVxuIiwiaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbiosICo6OmJlZm9yZSwgKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmJvZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1iZy1wYWdlO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAkYy1iZy1wYWdlLWltZztcbiAgYmFja2dyb3VuZC1zaXplOiAkYy1iZy1wYWdlLWJzO1xuICBjb2xvcjogJGMtZm9udDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuXG4gICYuZml4ZWQtc2Nyb2xsIHtcbiAgICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgd2hlbiBkcmFnZ2luZyBhIHBpZWNlIG91dCAqL1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuXG5hIHtcbiAgY29sb3I6ICRjLWxpbms7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAmOmhvdmVyLFxuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6ICRjLWxpbmstaG92ZXI7XG4gIH1cbn1cblxucCB7XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcbn1cblxuZW0sIGkge1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbmxpIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxudGltZSB7XG4gIGZvbnQtc2l6ZTogOTAlO1xuICBvcGFjaXR5OiAwLjk7XG5cbiAgLyogZG9uJ3QgdXNlIGMtY29sb3ItZGltLCBpdCBvdmVycmlkZXMgdG9vIGhhcmQgKi9cbn1cblxuaHIge1xuICBtYXJnaW46IDEuNXJlbSAwO1xuICBib3JkZXI6IDA7XG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kOiAkYy1ib3JkZXI7XG59XG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiAuOWVtO1xufVxuXG50YWJsZSwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCB7XG4gIGJvcmRlcjogMDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICBmb250OiBpbmhlcml0O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB0ZXh0LWFsaWduOiBpbmhlcml0O1xufVxuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuIiwiYnV0dG9uLCBpbnB1dCwgb3B0Z3JvdXAsIHNlbGVjdCwgdGV4dGFyZWEge1xuICBmb250OiBpbmhlcml0O1xuICBjb2xvcjogJGMtZm9udDtcbiAgb3V0bGluZS1jb2xvcjogJGMtcHJpbWFyeTtcbn1cblxub3B0aW9uLFxub3B0Z3JvdXAge1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3gtb3BhcXVlO1xuICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbn1cblxuaW5wdXQsIHRleHRhcmVhLCBzZWxlY3Qge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWlucHV0O1xuICBib3JkZXI6ICRib3JkZXI7XG4gIHBhZGRpbmc6IC42ZW0gMWVtO1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICByZXNpemU6IHZlcnRpY2FsO1xuICBwYWRkaW5nOiAuOGVtIDFlbTtcbn1cblxuYnV0dG9uLCBhIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG46OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICRjLWZvbnQtZGltO1xufVxuXG4uY29weWFibGUge1xuICBiYWNrZ3JvdW5kOiAkYy1wYWdlLWlucHV0O1xuICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbn1cbiIsIkBmdW5jdGlvbiBsb2NhbC1mb250KCRwYXRoKSB7XG4gIEByZXR1cm4gdXJsKCN7JGZvbnQtcGF0aH0vI3skcGF0aH0pO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwibGljaGVzc1wiO1xuICBzcmM6IGxvY2FsLWZvbnQoXCJsaWNoZXNzLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLCBsb2NhbC1mb250KFwibGljaGVzcy53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7XG4gIGZvbnQtZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBDaGVzcyc7XG4gIHNyYzogbG9jYWwtZm9udChcImxpY2hlc3MuY2hlc3Mud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksIGxvY2FsLWZvbnQoXCJsaWNoZXNzLmNoZXNzLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtcbn1cblxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoXCJOb3RvIFNhbnNcIiksIGxvY2FsKFwiTm90b1NhbnNcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvbm90b3NhbnMvdjcvby0wSUlwUWx4M1FVbEM1QTRQTnI2RFJBV18wLndvZmYyKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzg4LCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7XG59XG5cbi8qIGN5cmlsbGljICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoXCJOb3RvIFNhbnNcIiksIGxvY2FsKFwiTm90b1NhbnNcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvbm90b3NhbnMvdjcvby0wSUlwUWx4M1FVbEM1QTRQTnI0VFJBV18wLndvZmYyKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xufVxuXG4vKiBkZXZhbmFnYXJpICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoXCJOb3RvIFNhbnNcIiksIGxvY2FsKFwiTm90b1NhbnNcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvbm90b3NhbnMvdjcvby0wSUlwUWx4M1FVbEM1QTRQTnI1RFJBV18wLndvZmYyKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswOTAwLTA5N0YsIFUrMUNEMC0xQ0Y2LCBVKzFDRjgtMUNGOSwgVSsyMDBDLTIwMEQsIFUrMjBBOCwgVSsyMEI5LCBVKzI1Q0MsIFUrQTgzMC1BODM5LCBVK0E4RTAtQThGQjtcbn1cblxuLyogZ3JlZWstZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoXCJOb3RvIFNhbnNcIiksIGxvY2FsKFwiTm90b1NhbnNcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvbm90b3NhbnMvdjcvby0wSUlwUWx4M1FVbEM1QTRQTnI2VFJBV18wLndvZmYyKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XG59XG5cbi8qIGdyZWVrICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoXCJOb3RvIFNhbnNcIiksIGxvY2FsKFwiTm90b1NhbnNcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvbm90b3NhbnMvdjcvby0wSUlwUWx4M1FVbEM1QTRQTnI1alJBV18wLndvZmYyKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XG59XG5cbi8qIHZpZXRuYW1lc2UgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgc3JjOiBsb2NhbChcIk5vdG8gU2Fuc1wiKSwgbG9jYWwoXCJOb3RvU2Fuc1wiKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9ub3Rvc2Fucy92Ny9vLTBJSXBRbHgzUVVsQzVBNFBOcjZqUkFXXzAud29mZjIpIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG5cbi8qIGxhdGluLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBzcmM6IGxvY2FsKFwiTm90byBTYW5zXCIpLCBsb2NhbChcIk5vdG9TYW5zXCIpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL25vdG9zYW5zL3Y3L28tMElJcFFseDNRVWxDNUE0UE5yNnpSQVdfMC53b2ZmMikgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG5cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgLy8gc3JjOiBsb2NhbCgnTm90byBTYW5zJyksIGxvY2FsKCdOb3RvU2FucycpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL25vdG9zYW5zL3Y3L28tMElJcFFseDNRVWxDNUE0UE5yNVRSQS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICBzcmM6IGxvY2FsKFwiTm90byBTYW5zXCIpLCBsb2NhbChcIk5vdG9TYW5zXCIpLCBsb2NhbC1mb250KFwibm90by1zYW5zLWxhdGluLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuXG4vKiBjeXJpbGxpYy1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgc3JjOiBsb2NhbChcIk5vdG8gU2FucyBCb2xkXCIpLCBsb2NhbChcIk5vdG9TYW5zLUJvbGRcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvbm90b3NhbnMvdjcvby0wTklwUWx4M1FVbEM1QTRQTmpYaEZWYWR5QjFXay53b2ZmMikgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xufVxuXG4vKiBjeXJpbGxpYyAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNzAwO1xuICBzcmM6IGxvY2FsKFwiTm90byBTYW5zIEJvbGRcIiksIGxvY2FsKFwiTm90b1NhbnMtQm9sZFwiKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9ub3Rvc2Fucy92Ny9vLTBOSXBRbHgzUVVsQzVBNFBOalhoRlZZTnlCMVdrLndvZmYyKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xufVxuXG4vKiBkZXZhbmFnYXJpICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoXCJOb3RvIFNhbnMgQm9sZFwiKSwgbG9jYWwoXCJOb3RvU2Fucy1Cb2xkXCIpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL25vdG9zYW5zL3Y3L28tME5JcFFseDNRVWxDNUE0UE5qWGhGVlpkeUIxV2sud29mZjIpIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA5MDAtMDk3RiwgVSsxQ0QwLTFDRjYsIFUrMUNGOC0xQ0Y5LCBVKzIwMEMtMjAwRCwgVSsyMEE4LCBVKzIwQjksIFUrMjVDQywgVStBODMwLUE4MzksIFUrQThFMC1BOEZCO1xufVxuXG4vKiBncmVlay1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgc3JjOiBsb2NhbChcIk5vdG8gU2FucyBCb2xkXCIpLCBsb2NhbChcIk5vdG9TYW5zLUJvbGRcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvbm90b3NhbnMvdjcvby0wTklwUWx4M1FVbEM1QTRQTmpYaEZWYU55QjFXay53b2ZmMikgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuXG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNzAwO1xuICBzcmM6IGxvY2FsKFwiTm90byBTYW5zIEJvbGRcIiksIGxvY2FsKFwiTm90b1NhbnMtQm9sZFwiKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9ub3Rvc2Fucy92Ny9vLTBOSXBRbHgzUVVsQzVBNFBOalhoRlZaOXlCMVdrLndvZmYyKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XG59XG5cbi8qIHZpZXRuYW1lc2UgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgc3JjOiBsb2NhbChcIk5vdG8gU2FucyBCb2xkXCIpLCBsb2NhbChcIk5vdG9TYW5zLUJvbGRcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvbm90b3NhbnMvdjcvby0wTklwUWx4M1FVbEM1QTRQTmpYaEZWYTl5QjFXay53b2ZmMikgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cblxuLyogbGF0aW4tZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoXCJOb3RvIFNhbnMgQm9sZFwiKSwgbG9jYWwoXCJOb3RvU2Fucy1Cb2xkXCIpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL25vdG9zYW5zL3Y3L28tME5JcFFseDNRVWxDNUE0UE5qWGhGVmF0eUIxV2sud29mZjIpIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xufVxuXG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNzAwO1xuXG4gIC8vIHNyYzogbG9jYWwoJ05vdG8gU2FucyBCb2xkJyksIGxvY2FsKCdOb3RvU2Fucy1Cb2xkJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvbm90b3NhbnMvdjcvby0wTklwUWx4M1FVbEM1QTRQTmpYaEZWWk55Qi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICBzcmM6IGxvY2FsKFwiTm90byBTYW5zIEJvbGRcIiksIGxvY2FsKFwiTm90b1NhbnMtQm9sZFwiKSwgbG9jYWwtZm9udChcIm5vdG8tc2Fucy1ib2xkLWxhdGluLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuXG4vKiBjeXJpbGxpYy1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9LRk9sQ25xRXU5MkZyMU1tU1U1ZkNSYzRFc0Eud29mZjIpIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjtcbn1cblxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9LRk9sQ25xRXU5MkZyMU1tU1U1ZkFCYzRFc0Eud29mZjIpIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG5cbi8qIGdyZWVrLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIExpZ2h0XCIpLCBsb2NhbChcIlJvYm90by1MaWdodFwiKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L0tGT2xDbnFFdTkyRnIxTW1TVTVmQ0JjNEVzQS53b2ZmMikgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuXG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IGxvY2FsKFwiUm9ib3RvIExpZ2h0XCIpLCBsb2NhbChcIlJvYm90by1MaWdodFwiKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L0tGT2xDbnFFdTkyRnIxTW1TVTVmQnhjNEVzQS53b2ZmMikgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xufVxuXG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHNyYzogbG9jYWwoXCJSb2JvdG8gTGlnaHRcIiksIGxvY2FsKFwiUm9ib3RvLUxpZ2h0XCIpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvS0ZPbENucUV1OTJGcjFNbVNVNWZDeGM0RXNBLndvZmYyKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xufVxuXG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9LRk9sQ25xRXU5MkZyMU1tU1U1ZkNoYzRFc0Eud29mZjIpIGZvcm1hdChcIndvZmYyXCIpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xufVxuXG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMzAwO1xuXG4gIC8vIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9LRk9sQ25xRXU5MkZyMU1tU1U1ZkJCYzQud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgc3JjOiBsb2NhbChcIlJvYm90byBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksIGxvY2FsLWZvbnQoXCJyb2JvdG8tbGlnaHQtbGF0aW4ud29mZjJcIikgZm9ybWF0KFwid29mZjJcIik7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XG59XG4iLCJodG1sIHtcbiAgQGV4dGVuZCAlYmFzZS1mb250LWZhbGxiYWNrO1xuXG4gIEBpbmNsdWRlIGZsdWlkLXNpemUoXCJmb250LXNpemVcIiwgMTJweCwgMTRweCk7XG5cbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbmgxLFxuaDIsXG5oMyxcbmg0IHtcbiAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG5oMSB7XG4gIEBpbmNsdWRlIGZsdWlkLXNpemUoXCJmb250LXNpemVcIiwgMjBweCwgNDBweCk7XG5cbiAgbWFyZ2luLWJvdHRvbTogNXZoO1xuXG4gIGEge1xuICAgIGNvbG9yOiAkYy1saW5rLWRpbTtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRjLWxpbms7XG4gICAgfVxuICB9XG59XG5cbmgyIHtcbiAgQGluY2x1ZGUgZmx1aWQtc2l6ZShcImZvbnQtc2l6ZVwiLCAxNnB4LCAzMHB4KTtcbn1cblxuLm5pbmphLXRpdGxlIHtcbiAgQGV4dGVuZCAlYmFzZS1mb250O1xuXG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuIiwiLmlzOjpiZWZvcmUsXG5bZGF0YS1pY29uXTo6YmVmb3JlLFxuLmlzLWFmdGVyOjphZnRlciB7XG4gIEBleHRlbmQgJWRhdGEtaWNvbjtcbn1cblxuLmlzLnRleHQ6OmJlZm9yZSxcbi50ZXh0W2RhdGEtaWNvbl06OmJlZm9yZSB7XG4gIG1hcmdpbi1yaWdodDogLjRlbTtcbn1cblxuLnVzZXItbGluay5vbmxpbmUgLmxpbmUsXG4uaXMtZ3JlZW46OmJlZm9yZSB7XG4gIGNvbG9yOiAjYmQxMTFmO1xufVxuXG4uaXMtcmVkOjpiZWZvcmUge1xuICBjb2xvcjogJGMtYmFkO1xufVxuXG4uaXMtZ29sZDo6YmVmb3JlIHtcbiAgY29sb3I6ICRjLWJyYWc7XG59XG4iLCIuZGF0YS1jb3VudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRhdGEtY291bnQ6OmFmdGVyLFxuLnVucmVhZCB7XG4gIEBleHRlbmQgJWFjdGl2ZSwgJWJveC1yYWRpdXM7XG5cbiAgcGFkZGluZzogMXB4IDVweCAxcHggNHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxM3B4O1xufVxuXG4uZGF0YS1jb3VudDo6YWZ0ZXIge1xuICBjb250ZW50OiBhdHRyKGRhdGEtY291bnQpO1xuICB0b3A6IC01cHg7XG4gIHJpZ2h0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBhZGRpbmc6IDAgM3B4O1xuICBoZWlnaHQ6IDE1cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNXB4O1xufVxuXG4uZGF0YS1jb3VudFtkYXRhLWNvdW50PScwJ106OmFmdGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsIi5ub25lIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uZnVsbHNjcmVlbi1tYXNrIHtcbiAgQGV4dGVuZCAlZnVsbHNjcmVlbi1tYXNrO1xuXG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgLmZ1bGxzY3JlZW4tdG9nZ2xlOmNoZWNrZWQgfiAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG4ucnA6OmJlZm9yZSB7XG4gIEBleHRlbmQgJWRhdGEtaWNvbjtcblxuICBtYXJnaW4tcmlnaHQ6IC4yZW07XG4gIGNvbnRlbnQ6ICdOJztcbn1cblxuYmFkLnJwIHtcbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnTSc7XG4gIH1cbn1cblxuZ29vZCB7XG4gIGNvbG9yOiAkYy1nb29kO1xufVxuXG5iYWQge1xuICBjb2xvcjogJGMtYmFkO1xufVxuXG4vKiBpbmZpbml0ZSBzY3JvbGwgKi9cbi5pbmYtbW9yZSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4jaW5mc2NyLWxvYWRpbmcgLnNwaW5uZXIge1xuICBtYXJnaW46IDEwcHggYXV0bztcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4O1xuJHZwLW1heC13aWR0aDogMTIwMHB4O1xuXG5ib2R5IHtcbiAgLS1zaXRlLWhlYWRlci1oZWlnaHQ6ICN7JHNpdGUtaGVhZGVyLXNob3J0LWhlaWdodH07XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc2l0ZS1oZWFkZXItdGFsbCkge1xuICAgIC0tc2l0ZS1oZWFkZXItaGVpZ2h0OiAjeyRzaXRlLWhlYWRlci10YWxsLWhlaWdodH07XG4gIH1cblxuXG4gIC0tc2l0ZS1oZWFkZXItbWFyZ2luOiAwcHg7XG5cbiAgJi5oZWFkZXItbWFyZ2luIHtcbiAgICAtLXNpdGUtaGVhZGVyLW1hcmdpbjogMWVtO1xuICB9XG5cbiAgLS1tYWluLW1hcmdpbjogMDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1tYWluLW1hcmdpbikge1xuICAgIC0tbWFpbi1tYXJnaW46IDF2dztcbiAgICBtYXJnaW4tYm90dG9tOiAkYmxvY2stZ2FwO1xuICB9XG5cblxuICAvKiBGZWF0dXJlIGRldGVjdGlvbiBmb3IgSlMgdG8gcmVhZCAqL1xuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgIC0taG92ZXJhYmxlOiAxO1xuICB9XG5cbiAgQHN1cHBvcnRzIChkaXNwbGF5OiBncmlkKSB7XG4gICAgLS1ncmlkOiAxO1xuICB9XG59XG5cbiNtYWluLXdyYXAge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnLiAuIG1haW4gLiAuJztcbiAgLS1tYWluLW1heC13aWR0aDogI3skbWFpbi1tYXgtd2lkdGh9O1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRtYWluLW1hcmdpbiAxZnIgbWlubWF4KGF1dG8sIHZhcigtLW1haW4tbWF4LXdpZHRoKSkgMWZyICRtYWluLW1hcmdpbjtcblxuICAmLmZ1bGwtc2NyZWVuIHtcbiAgICAtLW1haW4tbWF4LXdpZHRoOiBhdXRvO1xuICB9XG5cbiAgJi5mdWxsLXNjcmVlbi1mb3JjZSB7XG4gICAgLS1tYWluLW1heC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIG1hcmdpbi10b3A6ICRzaXRlLWhlYWRlci1tYXJnaW47XG5cbiAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgIGJvZHkuY2xpbnB1dCAmIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbkBpZiAkZGVidWcge1xuICAjbWFpbi13cmFwOjpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiA5OTk5O1xuICAgIGJhY2tncm91bmQ6ICRjLWFjY2VudDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nOiAxZW07XG4gICAgY29udGVudDogJ0NPTCAxJztcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDItdW5pYm9hcmQpIHtcbiAgICAgIGNvbnRlbnQ6ICdDT0wgMic7XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemUpIHtcbiAgICAgIGNvbnRlbnQ6ICdDT0wgMiBzcXVlZXplZCc7XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzLXVuaWJvYXJkKSB7XG4gICAgICBjb250ZW50OiAnQ09MIDMnO1xuICAgIH1cbiAgfVxufVxuXG5tYWluIHtcbiAgZ3JpZC1hcmVhOiBtYWluO1xuXG4gICYucGFnZS1zbWFsbCB7XG4gICAgbWF4LXdpZHRoOiAxMDAwcHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vY29tcG9uZW50L3N1Ym5hdlwiO1xuXG4ucGFnZS1tZW51IHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ21lbnUnICdjb250ZW50JztcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zdWJuYXYtc2lkZSkge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWF4LWNvbnRlbnQgYXV0bztcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbi1jb250ZW50O1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdtZW51IGNvbnRlbnQnO1xuICB9XG5cblxuICAmLnBhZ2Utc21hbGwge1xuICAgIG1heC13aWR0aDogMTAwMHB4O1xuICAgIG1hcmdpbjogaW5oZXJpdDtcbiAgfVxuXG4gICZfX21lbnUge1xuICAgIGdyaWQtYXJlYTogbWVudTtcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIGdyaWQtYXJlYTogY29udGVudDtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAvLyBvdmVyZmxvdzogaGlkZGVuOyAvKiBmaXhlcyBjcmF6eSB0ZXh0IG92ZXJmbG93IG9uIEZ4ICovXG4gXG4gIH1cblxuICAmX19jb250ZW50LmJveCB7XG4gICAgLyogZW5zdXJlIHRoZSBjb250ZW50IGlzIGFzIGhpZ2ggYXMgdGhlIG1lbnUgKi9cbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICB9XG59XG4iLCIuc3VibmF2IHtcbiAgYSB7XG4gICAgQGV4dGVuZCAlbm93cmFwLWhpZGRlbiwgJXBhZ2UtdGV4dDtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXN1Ym5hdi10b3ApIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTdjaCwgMWZyKSk7XG4gICAgZ3JpZC1nYXA6IDNweDtcbiAgICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gICAgYmFja2dyb3VuZDogJGMtYmctcGFnZTtcblxuICAgIGEge1xuICAgICAgQGluY2x1ZGUgYm94LW5lYXQ7XG5cbiAgICAgIGZvbnQtZmFtaWx5OiByb2JvdG87XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgICAgcGFkZGluZzogLjZyZW0gMCAuNnJlbSAuNXJlbTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtLjA2ZW07XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1oaWdoO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRjLWxpbms7XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VwIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zdWJuYXYtc2lkZSkge1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICB6LWluZGV4OiB6KFwic3VibmF2LXNpZGVcIik7XG5cbiAgICAvKiBhY3RpdmUgYm9yZGVyIG11c3QgZ28gb3ZlciB0aGUgcGFnZSBjb250ZW50ICovXG4gICAgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNvbG9yOiAkYy1mb250LXBhZ2U7XG4gICAgICBwYWRkaW5nOiAuN3JlbSAydncgLjdyZW0gLjhyZW07XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYWNjZW50LCAwLjQpO1xuICAgICAgICB3aWR0aDogM3B4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGhlaWdodDogOTglO1xuICAgICAgICB0b3A6IDElO1xuICAgICAgICByaWdodDogLTFweDtcblxuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgMC4yNXMpO1xuXG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlLFxuICAgICAgJjpob3ZlciB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgY29sb3I6ICRjLWFjY2VudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VwIHtcbiAgICAgIGhlaWdodDogMmVtO1xuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCBcImJvYXJkLTJkXCI7XG5cbmNnLWJvYXJkIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWFicy0xMDA7XG5cbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cbiAgLm1hbmlwdWxhYmxlICYge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5zcXVhcmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMi41JTtcbiAgaGVpZ2h0OiAxMi41JTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgJi5tb3ZlLWRlc3Qge1xuICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChyZ2JhKDIwLCA4NSwgMzAsIDAuNSkgMTklLCByZ2JhKDAsIDAsIDAsIDApIDIwJSk7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIH1cblxuICAmLnByZW1vdmUtZGVzdCB7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KHJnYmEoMjAsIDMwLCA4NSwgMC41KSAxOSUsIHJnYmEoMCwgMCwgMCwgMCkgMjAlKTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgfVxuXG4gICYub2MubW92ZS1kZXN0IHtcbiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQodHJhbnNwYXJlbnQgMCUsIHRyYW5zcGFyZW50IDgwJSwgcmdiYSgyMCwgODUsIDAsIDAuMykgODAlKTtcbiAgfVxuXG4gICYub2MucHJlbW92ZS1kZXN0IHtcbiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQodHJhbnNwYXJlbnQgMCUsIHRyYW5zcGFyZW50IDgwJSwgcmdiYSgyMCwgMzAsIDg1LCAwLjIpIDgwJSk7XG4gIH1cblxuICBib2R5LmdyZWVuICYubGFzdC1tb3ZlLFxuICBib2R5LmdyZWVuLXBsYXN0aWMgJi5sYXN0LW1vdmUsXG4gIGJvZHkubWFyYmxlICYubGFzdC1tb3ZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE1NSwgMTk5LCAwLjQxKTtcbiAgfVxuXG4gICYubGFzdC1tb3ZlIHtcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU1LCAxOTksIDAsIDAuNDEpO1xuICB9XG5cbiAgJi5jaGVjayB7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgY2VudGVyLCByZ2JhKDI1NSwgMCwgMCwgMSkgMCUsIHJnYmEoMjMxLCAwLCAwLCAxKSAyNSUsIHJnYmEoMTY5LCAwLCAwLCAwKSA4OSUsIHJnYmEoMTU4LCAwLCAwLCAwKSAxMDAlKTtcbiAgfVxuXG4gICYuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjAsIDg1LCAzMCwgMC41KTtcbiAgfVxuXG4gICYuY3VycmVudC1wcmVtb3ZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIwLCAzMCwgODUsIDAuNSkgIWltcG9ydGFudDtcbiAgfVxuXG4gICYubW92ZS1kZXN0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwLCA4NSwgMzAsIDAuMyk7XG4gIH1cblxuICAmLnByZW1vdmUtZGVzdDpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyMCwgMzAsIDg1LCAwLjIpO1xuICB9XG5cbiAgJi5iaDEgcGllY2Uge1xuICAgIG9wYWNpdHk6IDAuOTg7XG4gIH1cbn1cblxucGllY2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEyLjUlO1xuICBoZWlnaHQ6IDEyLjUlO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICB6LWluZGV4OiB6KFwiY2dfX3BpZWNlXCIpO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAmLmRyYWdnaW5nIHtcbiAgICBjdXJzb3I6IG1vdmU7XG4gICAgei1pbmRleDogeihcImNnX19waWVjZS5kcmFnZ2luZ1wiKTtcbiAgfVxuXG4gICYuYW5pbSB7XG4gICAgei1pbmRleDogeihcImNnX19waWVjZS5hbmltXCIpO1xuICB9XG5cbiAgJi5mYWRpbmcge1xuICAgIHotaW5kZXg6IHooXCJjZ19fcGllY2UuZmFkaW5nXCIpO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuXG4gICYuZ2hvc3Qge1xuICAgIG9wYWNpdHk6IDAuMztcbiAgfVxufVxuXG5jZy1oZWxwZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMi41JTtcbiAgcGFkZGluZy1ib3R0b206IDEyLjUlO1xuICBkaXNwbGF5OiB0YWJsZTtcblxuICAvKiBoYWNrOiByb3VuZCB0byBmdWxsIHBpeGVsIHNpemUgaW4gY2hyb21lICovXG4gIGJvdHRvbTogMDtcbn1cblxuY2ctY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogODAwJTtcbiAgaGVpZ2h0OiA4MDAlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm90dG9tOiAwO1xufVxuXG4uY2ctd3JhcCBzdmcge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiB6KFwiY2dfX3N2Z1wiKTtcbiAgb3BhY2l0eTogMC42O1xuXG4gIGltYWdlIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cbn1cbiIsIiRib2FyZC1pbWFnZS1wYXRoOiBcIi4uL2ltYWdlcy9ib2FyZFwiO1xuXG4kYm9hcmQtZmlsZXM6IChcImJsdWVcIjogXCJzdmcvYmx1ZS5zdmdcIiwgXCJibHVlMlwiOiBcImJsdWUyLmpwZ1wiLCBcImJsdWUtbWFyYmxlXCI6IFwiYmx1ZS1tYXJibGUuanBnXCIsIFwid29vZDJcIjogXCJ3b29kMi5qcGdcIiwgXCJ3b29kM1wiOiBcIndvb2QzLmpwZ1wiLCBcIndvb2Q0XCI6IFwid29vZDQtMTAyNC5qcGdcIiwgXCJibHVlM1wiOiBcImJsdWUzLmpwZ1wiLCBcIm1hcmJsZVwiOiBcIm1hcmJsZS5qcGdcIiwgXCJicm93blwiOiBcInN2Zy9icm93bi5zdmdcIiwgXCJncmVlblwiOiBcInN2Zy9ncmVlbi5zdmdcIiwgXCJncmVlbi1wbGFzdGljXCI6IFwiZ3JlZW4tcGxhc3RpYy5wbmdcIiwgXCJvbGl2ZVwiOiBcIm9saXZlLmpwZ1wiLCBcInB1cnBsZVwiOiBcInN2Zy9wdXJwbGUuc3ZnXCIsIFwicHVycGxlLWRpYWdcIjogXCJwdXJwbGUtZGlhZy5wbmdcIiwgXCJncmV5XCI6IFwiZ3JleS5qcGdcIiwgXCJ3b29kXCI6IFwid29vZC0xMDI0LmpwZ1wiLCBcImNhbnZhc1wiOiBcImNhbnZhczItMTAyNC5qcGdcIiwgXCJsZWF0aGVyXCI6IFwibGVhdGhlci0xMDI0LmpwZ1wiLCBcIm1ldGFsXCI6IFwibWV0YWwtMTAyNC5qcGdcIiwgXCJtYXBsZVwiOiBcIm1hcGxlLmpwZ1wiLCBcIm1hcGxlMlwiOiBcIm1hcGxlMi5qcGdcIiwgXCJuZXdzcGFwZXJcIjogXCJuZXdzcGFwZXIucG5nXCIsIFwicGlua1wiOiBcInBpbmstcHlyYW1pZC5wbmdcIiwgXCJpY1wiOiBcInN2Zy9pYy5zdmdcIik7XG5cbkBlYWNoICRjb2xvciwgJGZpbGUgaW4gJGJvYXJkLWZpbGVzIHtcbiAgLiN7JGNvbG9yfSAuaXMyZCBjZy1ib2FyZCB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltYWdlcy9ib2FyZC8jeyRmaWxlfSk7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJ0b3BuYXYtaGlkZGVuXCI7XG5AaW1wb3J0IFwidG9wbmF2LXZpc2libGVcIjtcbkBpbXBvcnQgXCJ0aXRsZVwiO1xuQGltcG9ydCBcImJ1dHRvbnNcIjtcblxuI3RvcCB7XG4gIGhlaWdodDogJHNpdGUtaGVhZGVyLWhlaWdodDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IHooXCJzaXRlLWhlYWRlclwiKTtcbiAgbWF4LXdpZHRoOiAxNDAwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICAtLWRyb3Bkb3duLXRvcDogNDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgLS1kcm9wZG93bi10b3A6IDYwcHg7XG4gIH1cbn1cblxuLnNpdGUtdGl0bGUtbmF2IHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuIiwiQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtdG9wbmF2LWhpZGRlbikge1xuICAudG9wbmF2LXRvZ2dsZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTk5OTlweDtcbiAgICBsZWZ0OiAtOTk5OXB4O1xuICB9XG5cbiAgLmhiZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAkc2l0ZS1oZWFkZXItaGVpZ2h0O1xuICAgIGhlaWdodDogJHNpdGUtaGVhZGVyLWhlaWdodDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgei1pbmRleDogeihcInRvcG5hdlwiKTtcblxuICAgICZfX2luIHtcbiAgICAgICYsXG4gICAgICAmOjphZnRlcixcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMS41cHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDIzcHg7XG4gICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWZvbnQtZGltO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXNpdGUtaGVhZGVyLXRhbGwpIHtcbiAgICAgICAgICB3aWR0aDogMzRweDtcbiAgICAgICAgICBoZWlnaHQ6IDNweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b3A6IDUwJTtcbiAgICAgIGxlZnQ6IDguNXB4O1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgICAgIGxlZnQ6IDEzcHg7XG4gICAgICB9XG5cblxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjJzIGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpO1xuXG4gICAgICAmOjphZnRlcixcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICB9XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHRvcDogLTZweDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgICAgICAgdG9wOiAtOXB4O1xuICAgICAgICB9XG5cblxuICAgICAgICB0cmFuc2l0aW9uOiB0b3AgMC4xcyAwLjI1cyBlYXNlLWluLCBvcGFjaXR5IDAuMXMgZWFzZS1pbjtcbiAgICAgIH1cblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBib3R0b206IC03cHg7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc2l0ZS1oZWFkZXItdGFsbCkge1xuICAgICAgICAgIGJvdHRvbTogLTEwcHg7XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRyYW5zaXRpb246IGJvdHRvbSAwLjFzIDAuMjVzIGVhc2UtaW4sIHRyYW5zZm9ybSAwLjIycyBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAudG9wbmF2LXRvZ2dsZTpjaGVja2VkIH4gJiB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1oaWdoO1xuXG4gICAgICAuaGJnX19pbiB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDIyNWRlZyk7XG4gICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuMTJzO1xuICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiB0b3AgMC4xcyBlYXNlLW91dCwgb3BhY2l0eSAwLjFzIDAuMTJzIGVhc2Utb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgICAgICAgIHRyYW5zaXRpb246IGJvdHRvbSAwLjFzIGVhc2Utb3V0LCB0cmFuc2Zvcm0gMC4yMnMgMC4xMnMgY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjdG9wbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogJHNpdGUtaGVhZGVyLWhlaWdodDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1oaWdoO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKC0xMDAlIC0gMTBweCkpO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbih0cmFuc2Zvcm0sIDIwMG1zKTtcblxuICAgIHBhZGRpbmctYm90dG9tOiAxLjJyZW07XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluO1xuICAgIGJveC1zaGFkb3c6IDJweCA1cHggN3B4IGhzbGEoMCwgMCwgMCUsIDAuNSk7XG4gICAgYm9yZGVyLXJhZGl1czogMCAzcHggMCAwO1xuICAgIG1heC13aWR0aDogODAlO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteHgtc21hbGwpIHtcbiAgICAgIG1heC13aWR0aDogNzAlO1xuICAgIH1cblxuXG4gICAgei1pbmRleDogeihcInRvcG5hdlwiKTtcblxuICAgIGEge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICBwYWRkaW5nOiAuN2VtIDA7XG4gICAgICBvcGFjaXR5OiAwO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkpO1xuICAgIH1cblxuICAgIHNlY3Rpb24ge1xuICAgICAgZmxleDogMSAwIDUwJTtcbiAgICAgIG1hcmdpbi10b3A6IDFyZW07XG5cbiAgICAgID4gYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogMS4ycmVtO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC5wbGF5IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW47XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAyLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYTphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgICAgICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC50b3BuYXYtdG9nZ2xlOmNoZWNrZWQgfiAmIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcblxuICAgICAgYSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTI1bXMgZWFzZS1pbi1vdXQgMTI1bXM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYm9keS5tYXNrZWQge1xuICAgIC8qIHByZXZlbnQgc2Nyb2xsaW5nIHdoaWxlIHRvcG5hdiBpcyBvcGVuICovXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC8qIGF3a3dhcmRseSBtYWtlIHVwIGZvciB0aGUgZGlzYXBwZWFyYW5jZSBvZiB0aGUgc2Nyb2xsIGJhciAqL1xuICAgIC8qIGFjdHVhbGx5IGRvbid0LCBzaW5jZSBvbiBtb2JpbGUgZGV2aWNlcyB0aGUgc2Nyb29sIGJhclxuICAgICAqIGhhcyBubyB3aWR0aCwgYW5kIHRoYXQgbWVudSBpcyBtYWlubHkgZm9yIG1vYmlsZS4gKi9cbiAgICAvLyBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuIFxuICB9XG59XG4iLCJAaW5jbHVkZSBicmVha3BvaW50KCRtcS10b3BuYXYtdmlzaWJsZSkge1xuICAuaGFtYnVyZ2VyLFxuICAudG9wbmF2LW1hc2ssXG4gIC50b3BuYXYtdG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgI3RvcG5hdiB7XG4gICAgLS1uYXYtc2VjdGlvbjogMjZweDtcbiAgICAtLW5hdi1zZWN0aW9uLWhvdmVyOiAzNXB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc2l0ZS1oZWFkZXItdGFsbCkge1xuICAgICAgLS1uYXYtc2VjdGlvbjogNDhweDtcbiAgICAgIC0tbmF2LXNlY3Rpb24taG92ZXI6IDUzcHg7XG4gICAgfVxuXG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgc2VjdGlvbiB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBoZWlnaHQ6IHZhcigtLW5hdi1zZWN0aW9uKTtcblxuICAgICAgPiBhIHtcbiAgICAgICAgY29sb3I6ICNiZDExMWY7XG4gICAgICAgIHRleHQtc2hhZG93OiAkdGV4dC1zaGFkb3c7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLW5hdi1zZWN0aW9uKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRzaXRlLWhlYWRlci1oZWlnaHQ7XG4gICAgICAgIHBhZGRpbmc6IDAgLjdyZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5ob21lIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXYge1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1oZWFkZXItZHJvcGRvd247XG4gICAgICBtaW4td2lkdGg6IDEwcmVtO1xuICAgICAgYm94LXNoYWRvdzogMnB4IDVweCA2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgICAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDNweDtcbiAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2JkMTExZjtcblxuICAgICAgYSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAuNnJlbSAuN3JlbTtcbiAgICAgICAgY29sb3I6ICNiZDExMWY7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgICAgICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAzcHggMCAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwIDAgM3B4IDFweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuYmxpbmQgZGl2IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luLWxlZnQ6IC05MDAwcHg7XG4gICAgfVxuXG4gICAgJi5ob3ZlciBzZWN0aW9uOmhvdmVyLFxuICAgIHNlY3Rpb246YWN0aXZlIHtcbiAgICAgID4gYSB7XG4gICAgICAgIGhlaWdodDogdmFyKC0tbmF2LXNlY3Rpb24taG92ZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1oZWFkZXItZHJvcGRvd247XG4gICAgICAgIGNvbG9yOiAjYmQxMTFmO1xuICAgICAgICBib3JkZXItY29sb3I6ICNiZDExMWY7XG4gICAgICB9XG5cbiAgICAgIGRpdiB7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIuc2l0ZS10aXRsZSB7XG4gIHdpZHRoOiA4cmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBleHRlbmQgJWJhc2UtZm9udDtcblxuICBmb250LXNpemU6IDI1cHg7XG4gIGxpbmUtaGVpZ2h0OiAjeyRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHQgLSAzfTtcbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWFyZ2luOiAwIC41cmVtO1xuICBkaXNwbGF5OiBub25lO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXh4LXNtYWxsKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXRvcG5hdi1oaWRkZW4pIHtcbiAgICAvKiBtb3ZlIGF3YXkgZnJvbSBoYW1idXJnZXIgKi9cbiAgICBtYXJnaW4tbGVmdDogY2FsYyguNXJlbSArICN7JHNpdGUtaGVhZGVyLWhlaWdodH0pO1xuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgZm9udC1zaXplOiAzMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAjeyRzaXRlLWhlYWRlci10YWxsLWhlaWdodCAtIDN9O1xuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS10b3BuYXYtdmlzaWJsZSAkbXEtc2l0ZS1oZWFkZXItdGFsbCkge1xuICAgIGxpbmUtaGVpZ2h0OiAjeyRzaXRlLWhlYWRlci10YWxsLWhlaWdodCAtIDV9O1xuICAgIG1hcmdpbjogMCAxcmVtO1xuICB9XG5cbiAgYSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xuICAgIHRleHQtaW5kZW50OiA5OTk5cHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyBpZD0n0KHQu9C+0LlfMScgZGF0YS1uYW1lPSfQodC70L7QuSAxJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzNTUgMTUwJyUzRSUzQ2RlZnMlM0UlM0NzdHlsZSUzRS5jbHMtMSU3QmZpbGw6JTIzZWQxYzI0JTdELmNscy0yJTdCZmlsbDolMjNmZmYlN0QlM0Mvc3R5bGUlM0UlM0MvZGVmcyUzRSUzQ3BhdGggY2xhc3M9J2Nscy0xJyBkPSdNMTE4LjQgNzUuMjVhMTUuNyAxNS43IDAgMDE0LjU5LTExLjUgMTYuNTMgMTYuNTMgMCAwMTIzLjE0IDAgMTYuNTkgMTYuNTkgMCAwMTAgMjMgMTYuNTMgMTYuNTMgMCAwMS0yMy4xNCAwIDE1Ljg4IDE1Ljg4IDAgMDEtNC42LTExLjV6bTkuMjcgNy4zMmE5LjY0IDkuNjQgMCAwMDEzLjc4IDAgMTEuMDUgMTEuMDUgMCAwMDAtMTQuNjMgOS42NCA5LjY0IDAgMDAtMTMuNzggMCAxMC4xNyAxMC4xNyAwIDAwLTIuNzIgNy4zMSAxMC4xNyAxMC4xNyAwIDAwMi43MiA3LjMyek0xNjIuODUgOTAuODZoLTYuMjlWNTkuNjRoNS40OWwxNS43NCAxOS45OFY1OS42NGg2LjI0djMxLjIyaC01LjNsLTE1Ljg4LTIwLjA3ek0yMTMuMiA5MC44NmgtMjIuMjZWNTkuNjRoNi40MnYyNS40N2gxNS44M3pNMjI0LjQzIDkwLjg2aC02LjM4VjU5LjY0aDYuMzh6TTIzNy44IDkwLjg2aC02LjI4VjU5LjY0SDIzN2wxNS43NCAxOS45OFY1OS42NEgyNTl2MzEuMjJoLTUuMzFsLTE1Ljg3LTIwLjA3ek0yODkuMyA5MC44NmgtMjMuNFY1OS42NGgyMi45MnY1Ljc2aC0xNi41djYuMDJoMTMuMjl2NS42NmgtMTMuMjl2OC4wM2gxNi45OXpNMTM1LjMgMTMzLjVhMTYuOTEgMTYuOTEgMCAwMS0xMi4xLTQuNTUgMTYuNjMgMTYuNjMgMCAwMS0uMDQtMjMuMzcgMTYuOTYgMTYuOTYgMCAwMTEyLjEzLTQuNTQgMTcuMzUgMTcuMzUgMCAwMTguMjUgMS45NnY2LjQ2YTE0LjQ1IDE0LjQ1IDAgMDAtOC4yLTIuNCAxMC4zNyAxMC4zNyAwIDAwLTcuNDUgMi45IDEwLjUgMTAuNSAwIDAwLjEgMTQuNjcgMTAuNTkgMTAuNTkgMCAwMDcuNjIgMi44NSAxMy4zNiAxMy4zNiAwIDAwOC41Ni0yLjcydjYuNDdhMTYuOTIgMTYuOTIgMCAwMS04Ljg4IDIuMjd6TTE1Ni4wNyAxMzIuODhoLTYuNDJ2LTMxLjIyaDYuNDJ2MTEuNjhoMTQuMXYtMTEuNjhoNi4zN3YzMS4yMmgtNi4zOHYtMTMuN2gtMTQuMDl6TTIwNi44NiAxMzIuODhoLTIzLjR2LTMxLjIyaDIyLjkxdjUuNzVoLTE2LjV2Ni4wMmgxMy4zdjUuNjdoLTEzLjN2OC4wMmgxN3pNMjIyLjMzIDEzMy41YTIwLjI5IDIwLjI5IDAgMDEtMTEuODYtMy4zNXYtNi42OGExNy42MiAxNy42MiAwIDAwNS4xNyAyLjk0IDE4LjQyIDE4LjQyIDAgMDA2LjQzIDEuMiA4LjcyIDguNzIgMCAwMDQuMzItLjk1IDIuOTQgMi45NCAwIDAwMS43LTIuNjYgMi42NSAyLjY1IDAgMDAtMS42LTIuNTggMTAuMjYgMTAuMjYgMCAwMC0xLjgtLjhsLTEuMDYtLjM2LTIuNS0uNzYtMi4zMi0uNzZxLS40OS0uMTMtMi4xLS43NmExMi4xNiAxMi4xNiAwIDAxLTItLjkzIDkuODkgOS44OSAwIDAxLTIuOTQtMi43MiA5LjY3IDkuNjcgMCAwMS0xLjA3LTQuMzggNy42OCA3LjY4IDAgMDEzLjE2LTYuNXEzLjE3LTIuNDEgOC42LTIuNDFhMjAuOTMgMjAuOTMgMCAwMTEwLjIyIDIuNTh2Ni4yNWExOC45OCAxOC45OCAwIDAwLTEwLjEyLTIuOTVxLTUuMzEgMC01LjMxIDMuMDhhMi40MiAyLjQyIDAgMDAxLjY1IDIuMTQgMTEuMjEgMTEuMjEgMCAwMDIuNTQuOTRxMi4xLjU4IDMuNC45OGEyMy45NSAyMy45NSAwIDAxNi43NyAzLjI1IDcuNDMgNy40MyAwIDAxMy4xMiA2LjUxIDguMzIgOC4zMiAwIDAxLTMuNTIgNy4xIDE0LjYgMTQuNiAwIDAxLTguODggMi41OHpNMjUwLjM4IDEzMy41YTIwLjI5IDIwLjI5IDAgMDEtMTEuODYtMy4zNXYtNi42OGExNy42MiAxNy42MiAwIDAwNS4xNyAyLjk0IDE4LjQyIDE4LjQyIDAgMDA2LjQyIDEuMiA4LjcyIDguNzIgMCAwMDQuMzMtLjk1IDIuOTQgMi45NCAwIDAwMS43LTIuNjYgMi42NSAyLjY1IDAgMDAtMS42MS0yLjU4IDEwLjI1IDEwLjI1IDAgMDAtMS43OS0uOGwtMS4wNy0uMzYtMi41LS43Ni0yLjMxLS43NnEtLjUtLjEzLTIuMS0uNzZhMTIuMTYgMTIuMTYgMCAwMS0yLS45MyA5Ljg5IDkuODkgMCAwMS0yLjk1LTIuNzIgOS42NyA5LjY3IDAgMDEtMS4wNy00LjM4IDcuNjggNy42OCAwIDAxMy4xNy02LjVxMy4xNi0yLjQxIDguNi0yLjQxYTIwLjkzIDIwLjkzIDAgMDExMC4yMiAyLjU4djYuMjVhMTguOTggMTguOTggMCAwMC0xMC4xMy0yLjk1cS01LjMgMC01LjMgMy4wOGEyLjQyIDIuNDIgMCAwMDEuNjUgMi4xNCAxMS4yMSAxMS4yMSAwIDAwMi41NC45NHEyLjEuNTggMy4zOS45OGEyMy45NSAyMy45NSAwIDAxNi43OCAzLjI1IDcuNDMgNy40MyAwIDAxMy4xMiA2LjUxIDguMzIgOC4zMiAwIDAxLTMuNTIgNy4xIDE0LjYgMTQuNiAwIDAxLTguODggMi41OHpNMTI1Ljg5IDQ5LjI0aC02LjQzdi0zMS4yaDYuMzhsOS4wNSAxMi45MiA5LjA1LTEyLjkzaDYuMzR2MzEuMjFoLTYuMzRWMjcuOWwtNy4xOCAxMC4wM2gtMy41NmwtNy4zMS0xMC4wM3pNMTU2LjEyIDMzLjY0YTE1LjcgMTUuNyAwIDAxNC41OS0xMS41IDE2LjUzIDE2LjUzIDAgMDEyMy4xNCAwIDE1LjgyIDE1LjgyIDAgMDE0LjY0IDExLjUgMTUuOSAxNS45IDAgMDEtNC42NCAxMS41IDE2LjUzIDE2LjUzIDAgMDEtMjMuMTQgMCAxNS44OCAxNS44OCAwIDAxLTQuNi0xMS41em05LjI3IDcuMzFhOS42NCA5LjY0IDAgMDAxMy43OCAwIDEwLjE3IDEwLjE3IDAgMDAyLjc3LTcuMzEgMTAuMTggMTAuMTggMCAwMC0yLjc3LTcuMzIgOS42NCA5LjY0IDAgMDAtMTMuNzggMCAxMC4xNyAxMC4xNyAwIDAwLTIuNzIgNy4zMiAxMC4xNyAxMC4xNyAwIDAwMi43MiA3LjMxek0yMDQuNjMgNDkuODdhMjAuMjkgMjAuMjkgMCAwMS0xMS44Ni0zLjM1di02LjY4YTE3LjYyIDE3LjYyIDAgMDA1LjE3IDIuOTQgMTguNDIgMTguNDIgMCAwMDYuNDIgMS4yIDguNzIgOC43MiAwIDAwNC4zMy0uOTYgMi45NCAyLjk0IDAgMDAxLjctMi42NSAyLjY1IDIuNjUgMCAwMC0xLjYxLTIuNTggMTAuMjUgMTAuMjUgMCAwMC0xLjc4LS44bC0xLjA4LS4zNi0yLjUtLjc2LTIuMzEtLjc2cS0uNS0uMTMtMi4xLS43NmExMi4xNyAxMi4xNyAwIDAxLTItLjkzIDkuODkgOS44OSAwIDAxLTIuOTUtMi43MiA5LjY3IDkuNjcgMCAwMS0xLjA3LTQuMzggNy42OCA3LjY4IDAgMDEzLjE3LTYuNXEzLjE2LTIuNDEgOC42LTIuNDFhMjAuOTMgMjAuOTMgMCAwMTEwLjIyIDIuNTh2Ni4yNWExOC45OCAxOC45OCAwIDAwLTEwLjEzLTIuOTVxLTUuMyAwLTUuMyAzLjA4YTIuNDIgMi40MiAwIDAwMS42NSAyLjE0IDExLjIyIDExLjIyIDAgMDAyLjU0Ljk0cTIuMS41OCAzLjM5Ljk4YTIzLjk1IDIzLjk1IDAgMDE2Ljc4IDMuMjUgNy40MyA3LjQzIDAgMDEzLjEyIDYuNTEgOC4zMiA4LjMyIDAgMDEtMy41MyA3LjEgMTQuNiAxNC42IDAgMDEtOC44NyAyLjU4ek0yMzcuNzIgNDkuODdhMTYuOTEgMTYuOTEgMCAwMS0xMi4wOS00LjU1IDE1LjU0IDE1LjU0IDAgMDEtNC44MS0xMS42OCAxNS40MyAxNS40MyAwIDAxNC43Ny0xMS42OSAxNi45NiAxNi45NiAwIDAxMTIuMTMtNC41NCAxNy4zNSAxNy4zNSAwIDAxOC4yNSAxLjk2djYuNDZhMTQuNDUgMTQuNDUgMCAwMC04LjItMi40IDEwLjM3IDEwLjM3IDAgMDAtNy40NSAyLjkgOS43NCA5Ljc0IDAgMDAtMi45NSA3LjNBOS43NCA5Ljc0IDAgMDAyMzAuNCA0MWExMC41OSAxMC41OSAwIDAwNy42MyAyLjg1IDEzLjM2IDEzLjM2IDAgMDA4LjU2LTIuNzJ2Ni40N2ExNi45MiAxNi45MiAwIDAxLTguODcgMi4yN3pNMjUwLjU2IDMzLjY0YTE1LjcgMTUuNyAwIDAxNC42LTExLjUgMTYuNTMgMTYuNTMgMCAwMTIzLjE0IDAgMTUuODIgMTUuODIgMCAwMTQuNjMgMTEuNSAxNS45IDE1LjkgMCAwMS00LjYzIDExLjUgMTYuNTMgMTYuNTMgMCAwMS0yMy4xNSAwIDE1Ljg4IDE1Ljg4IDAgMDEtNC42LTExLjV6bTkuMjcgNy4zMWE5LjY0IDkuNjQgMCAwMDEzLjc4IDAgMTAuMTcgMTAuMTcgMCAwMDIuNzctNy4zMSAxMC4xOCAxMC4xOCAwIDAwLTIuNzctNy4zMiA5LjY0IDkuNjQgMCAwMC0xMy43OCAwIDEwLjE3IDEwLjE3IDAgMDAtMi43MiA3LjMyIDEwLjE3IDEwLjE3IDAgMDAyLjcyIDcuMzF6TTMwMS4wMyA0OS40MmgtNS42NkwyODQuOSAxOC4wM2g3LjE0bDYuNDIgMjEuMDUgNy4wNC0yMS4xNGg1bDcuMDkgMjEuMTRMMzI0IDE4LjAzaDdsLTEwLjUyIDMxLjRoLTUuNjdMMzA4IDI4LjZ6TTM2LjQ1IDE2LjVoNjQuODJhMy45MSAzLjkxIDAgMDEzLjkxIDMuOTF2MTA4LjcyYTMuOTEgMy45MSAwIDAxLTMuOTEgMy45MkgzNi40NWEzLjkxIDMuOTEgMCAwMS0zLjkxLTMuOTJWMjAuNDFhMy45MSAzLjkxIDAgMDEzLjkxLTMuOXonLyUzRSUzQ2NpcmNsZSBjbGFzcz0nY2xzLTInIGN4PSc2OScgY3k9JzEyNScgcj0nMycvJTNFJTNDcGF0aCBjbGFzcz0nY2xzLTInIGQ9J005Ny44NyAxMTEuODNhNC42NiA0LjY2IDAgMDEtNC42NiA0LjY3aC00OC43YTQuNjYgNC42NiAwIDAxLTQuNjYtNC42N1YyNi4zYTI5LjAyIDI5LjAyIDAgMDEyNy41OSAyMC4wNGgyLjg0YTI5LjAyIDI5LjAyIDAgMDEyNy42LTIwLjA0eicvJTNFJTNDcGF0aCBjbGFzcz0nY2xzLTEnIGQ9J003MS44NSA3MS4yOGMtLjE3LTIuNSAyLjEzLTUuNTIgMi40NS02LjE3LjQtLjgyLS4xNC0xLjQ4LTEuMTgtMS45Ny0xLjEtLjYtMS45Ny0uNjQtMi42LTEuMTEtLjc0LS41Ni0uNjItMi4wOS0uNjItMi44N0g3MXYtMS45aC0xLjF2LTEuMTJoLTEuOTR2MS4xMWgtMS4xdjEuOUg2OGMwIC44LjExIDIuMzItLjYzIDIuODgtLjYyLjQ3LTEuNS41Mi0yLjYgMS4xMS0xLjAzLjUtMS41NyAxLjE1LTEuMTcgMS45Ny4zMi42NSAyLjYxIDMuNjcgMi40NCA2LjE3LS4yIDMuMTQtNC44OSA0LjExLTUuOTkgNC42Ni0xLjEuNTUtMS4wNSAxLjUxLjA1IDEuOSAxLjIyLjQ0IDMuMTMuNjQgMy45OC45OWExLjYyIDEuNjIgMCAwMTEuMjYgMS42OCA0My4zIDQzLjMgMCAwMS0uNzYgOS43NGMtLjEzLjc2LTEuMTUgMS4zMy0xLjMxIDEuODktLjE0LjQ3LjM4IDEuNzUuMzEgMi4yLS44NSA1LjY0LTQuNjUgOS42Mi01Ljk5IDEwLjM0LjE2IDEuMDUtLjQ3IDIuNzItMS45IDIuOHMtMS41OSAyLjMyIDAgMi4zMkg4Mi4yYzEuNTkgMCAxLjQyLTIuMjQgMC0yLjMycy0yLjA2LTEuNzUtMS45LTIuOGMtMS4zMy0uNzItNS4xNC00LjctNS45OS0xMC4zNC0uMDYtLjQ1LjQ2LTEuNzMuMzItMi4yLS4xNi0uNTYtMS4xOS0xLjEzLTEuMzEtMS45YTQzLjMgNDMuMyAwIDAxLS43Ny05LjczIDEuNjIgMS42MiAwIDAxMS4yNy0xLjY4Yy44NC0uMzUgMi43NS0uNTUgMy45OC0uOTkgMS4xLS4zOSAxLjE0LTEuMzUuMDQtMS45LTEuMS0uNTUtNS43OC0xLjUyLTUuOTktNC42NnonLyUzRSUzQy9zdmclM0VcIikgY2VudGVyIGNlbnRlciBuby1yZXBlYXQ7IC8qSXZhbiovXG4gICAgLyogJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtcHJpbWFyeTtcblxuICAgICAgc3BhbiB7XG4gICAgICAgIGNvbG9yOiAkYy1wcmltYXJ5LWRpbTtcbiAgICAgIH1cbiAgICB9Ki9cbiAgfVxuXG4gIHNwYW4ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICB9XG5cbiAgLmtpZGRvIHtcbiAgICBjb2xvcjogJGMtZm9udC1kaW1tZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAuNWVtO1xuICB9XG59XG4iLCIldG9wLWljb24ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAkc2l0ZS1oZWFkZXItaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJHNpdGUtaGVhZGVyLWhlaWdodDtcbn1cblxuLnNpdGUtYnV0dG9ucyB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICAubGluayB7XG4gICAgQGV4dGVuZCAldG9wLWljb247XG5cbiAgICAvKiB3ZSBkb24ndCB3YW50IGEgbGlnaHRlciBkYXJrIGZvbnQgaW4gdGhlIHRvcCBncmFkaWVudCAqL1xuICAgIEBpZiAkdGhlbWUgPT0gXCJ0cmFuc3BcIiB7XG4gICAgICBAZXh0ZW5kICVwYWdlLXRleHQ7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgIH1cblxuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgIHBhZGRpbmc6IDAgLjdyZW07XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWNsZWFyZXI7XG4gICAgfVxuXG4gICAgc3Bhbjo6YmVmb3JlIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbiAgLnRvZ2dsZSB7XG4gICAgQGV4dGVuZCAldG9wLWljb247XG4gIH1cblxuICAuaW5pdGlhdGluZyB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBoZWlnaHQ6IDMwMHB4O1xuICAgIHdpZHRoOiAyMjVweDtcbiAgfVxuXG4gIC5kcm9wZG93biB7XG4gICAgQGV4dGVuZCAlZHJvcGRvd24tc2hhZG93O1xuXG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgdG9wOiB2YXIoLS1kcm9wZG93bi10b3ApO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLWhlYWRlci1kcm9wZG93bjtcbiAgICB6LWluZGV4OiB6KFwiZHJvcGRvd25cIik7XG5cbiAgICBhLFxuICAgIGJ1dHRvbiB7XG4gICAgICBjb2xvcjogJGMtaGVhZGVyLWRyb3Bkb3duO1xuICAgIH1cbiAgfVxuXG4gIC5zaG93biB7XG4gICAgLnRvZ2dsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1oZWFkZXItZHJvcGRvd247XG4gICAgICBjb2xvcjogJGMtaGVhZGVyLWRyb3Bkb3duO1xuICAgIH1cblxuICAgIC5kcm9wZG93biB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAuc2lnbmluIHtcbiAgICBtYXJnaW46IDAgMXJlbTtcblxuICAgIEBpZiAkdGhlbWUgPT0gXCJ0cmFuc3BcIiB7XG4gICAgICAmLmJ1dHRvbi1lbXB0eSB7XG4gICAgICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgICAgIGNvbG9yOiAkYy1mb250LWNsZWFyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5saW5rLWNlbnRlciB7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIGhlaWdodDogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxufVxuXG4jdXNlcl90YWcge1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4jbm90aWZ5LWFwcCAuaW5pdGlhdGluZyB7XG4gIHdpZHRoOiAyNXJlbTtcbn1cbiIsIiNjbGlucHV0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAkc2l0ZS1oZWFkZXItaGVpZ2h0O1xuXG4gIGlucHV0IHtcbiAgICBAZXh0ZW5kICVwYWdlLXRleHQ7XG5cbiAgICBsaW5lLWhlaWdodDogJHNpdGUtaGVhZGVyLWhlaWdodDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIHdpZHRoOiAwO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteC1sYXJnZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbih3aWR0aCk7XG4gICAgfVxuXG5cbiAgICBib2R5LmNsaW5wdXQgJiB7XG4gICAgICB3aWR0aDogMjBjaDtcbiAgICB9XG4gIH1cblxuICBpbnB1dDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50dC1tZW51IHtcbiAgICAuZW1wdHksIC5zcGlubmVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbmJvZHkuY2xpbnB1dCAjdG9wIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXgtbGFyZ2UpIHtcbiAgICAjdG9wbmF2IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteC1zbWFsbCkge1xuICAgIC5zaXRlLXRpdGxlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICAuc2l0ZS1idXR0b25zID4gKjpub3QoI2NsaW5wdXQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgI2NsaW5wdXQge1xuICAgICAgd2lkdGg6IDc1dnc7XG4gICAgfVxuICB9XG59XG4iLCIubWFpbi1ib2FyZCB7XG4gIEBleHRlbmQgJXNxdWFyZTtcblxuICAmX19wcmVsb2FkIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICAuY2ctd3JhcCB7XG4gICAgQGV4dGVuZCAlYWJzLTEwMDtcbiAgfVxufVxuXG4ubWluaS1ib2FyZCwgLm1pbmktZ2FtZSAuY2ctd3JhcCB7XG4gIEBleHRlbmQgJXNxdWFyZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4O1xuJHZwLW1heC13aWR0aDogMTIwMHB4O1xuXG4uYm94IHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG5cbiAgQGluY2x1ZGUgZmx1aWQtc2l6ZShcIi0tYm94LXBhZGRpbmdcIiwgMTVweCwgNjBweCk7XG5cbiAgJi1wYWQge1xuICAgIEBleHRlbmQgJWJveC1wYWRkaW5nO1xuXG4gICAgLmJveF9fdG9wIHtcbiAgICAgIHBhZGRpbmc6IDAgMCB2YXIoLS1ib3gtcGFkZGluZykgMDtcbiAgICB9XG4gIH1cblxuICAmX190b3Age1xuICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgIHBhZGRpbmc6IGNhbGMoNXZoIC0gMXJlbSkgdmFyKC0tYm94LXBhZGRpbmcpO1xuXG4gICAgaDEge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC8qIGZsZXggZ3V0dGVycywgd2FpdGluZyBmb3Igcm93LWdhcCB0byBiZSBpbXBsZW1lbnRlZCBmb3IgZmxleGJveC4gIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9DU1NfRmxleGlibGVfQm94X0xheW91dC9NYXN0ZXJpbmdfV3JhcHBpbmdfb2ZfRmxleF9JdGVtcyNDcmVhdGluZ19ndXR0ZXJzX2JldHdlZW5faXRlbXMgKi9cbiAgICA+IGgxLCA+IGRpdiwgPiBmb3JtIHtcbiAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgfVxuXG4gICAgLyogZW5kIG9mIGZsZXggZ3V0dGVyIGhhY2sgKi9cblxuICAgICZfX2FjdGlvbnMge1xuICAgICAgQGV4dGVuZCAlZmxleC13cmFwO1xuXG4gICAgICAvKiBmbGV4IGd1dHRlcnMsIHdhaXRpbmcgZm9yIHJvdy1nYXAgdG8gYmUgaW1wbGVtZW50ZWQgZm9yIGZsZXhib3guICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ1NTX0ZsZXhpYmxlX0JveF9MYXlvdXQvTWFzdGVyaW5nX1dyYXBwaW5nX29mX0ZsZXhfSXRlbXMjQ3JlYXRpbmdfZ3V0dGVyc19iZXR3ZWVuX2l0ZW1zICovXG4gICAgICBtYXJnaW4tbGVmdDogLTFyZW07XG5cbiAgICAgID4gKiB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xuICAgICAgfVxuXG4gICAgICAvKiBlbmQgb2YgZmxleCBndXR0ZXIgaGFjayAqL1xuXG4gICAgICAuYnV0dG9uIHtcbiAgICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG4gICAgICB9XG5cbiAgICAgID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpub3QoLmJveC1wYWQpID4gaDEge1xuICAgIEBleHRlbmQgJWJveC1wYWRkaW5nO1xuXG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgJl9fcGFkIHtcbiAgICBAZXh0ZW5kICVib3gtcGFkZGluZy1ob3JpejtcbiAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KCRtcS1tYWluLW1hcmdpbikge1xuICAuYm94IHtcbiAgICBAaW5jbHVkZSBib3gtcmFkaXVzO1xuICB9XG59XG4iLCIudmlld19zb2x1dGlvbiB7XG4gIG1hcmdpbi10b3A6IDEuNWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgJiAuYnV0dG9uLmJ1dHRvbi1lbXB0eSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kOiAjYmQxMTFmO1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWQxYzI0O1xuICAgIH1cbiAgfVxufVxuLnZpZXdfc29sdXRpb24uc2hvdyB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIGFuaW1hdGlvbjogcmV2ZWFsIDEuNXM7XG59XG5cbi5idXR0b24ge1xuICBAZXh0ZW5kICVyb2JvdG8tZmF0LCAlYnV0dG9uLXNoYWRvdywgJWJveC1yYWRpdXM7XG5cbiAgYmFja2dyb3VuZDogI2JkMTExZjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgcGFkZGluZzogLjhlbSAxZW07XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgJixcbiAgJjp2aXNpdGVkIHtcbiAgICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICB9XG5cbiAgJjpub3QoLmRpc2FibGVkKTpob3ZlciB7XG4gICAgQGV4dGVuZCAlYnV0dG9uLXJhaXNlZC1zaGFkb3c7XG5cbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kOiAjZWQxYzI0O1xuICB9XG5cbiAgJjpub3QoLmRpc2FibGVkKTpmb2N1cyB7XG4gICAgQGV4dGVuZCAlZm9jdXMtc2hhZG93O1xuICB9XG5cbiAgJi1uby11cHBlciB7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAmLXRoaW4ge1xuICAgIHBhZGRpbmc6IC4xZW0gMWVtO1xuICAgIGZvbnQtc2l6ZTogOTAlO1xuICB9XG5cbiAgJi1mYXQge1xuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICB9XG5cbiAgJi1ncmVlbiB7XG4gICAgYmFja2dyb3VuZDogIzA0NTZiYztcblxuICAgICY6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogI2I0ZDVmZDtcbiAgICB9XG4gIH1cblxuICAmLXJlZCB7XG4gICAgYmFja2dyb3VuZDogJGMtZXJyb3I7XG5cbiAgICAmOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oJGMtZXJyb3IsIDExKTtcbiAgICB9XG4gIH1cblxuICAmLmJ1dHRvbi1lbXB0eSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcblxuICAgICYsXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogIzFiNzhkMDtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG5cbiAgICAmOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgIH1cblxuICAgICYsXG4gICAgJi5idXR0b24tZ3JlZW4sXG4gICAgJi5idXR0b24tcmVkIHtcbiAgICAgICY6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgICBAZXh0ZW5kICVtZXRhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmJ1dHRvbi1yZWQsXG4gICAgJi5idXR0b24tcmVkOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAjOTg5MzhkO1xuICAgIH1cblxuICAgICYuYnV0dG9uLWdyZWVuLFxuICAgICYuYnV0dG9uLWdyZWVuOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1zZWNvbmRhcnk7XG4gICAgfVxuXG4gICAgJi5zaWduaW4ge1xuICAgICAgYmFja2dyb3VuZDogI2JkMTExZjtcbiAgICAgIGNvbG9yOiAjZmZmO1xuXG4gICAgICAmOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2VkMWMyNDtcbiAgICAgICAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5idXR0b24tbWV0YWwge1xuICAgIGJhY2tncm91bmQ6ICNiZDExMWY7XG4gICAgJixcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cblxuICAgICY6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogI2VkMWMyNDtcbiAgICB9XG4gIH1cblxuICAmLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAuNTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJi5hY3RpdmUge1xuICAgIEBleHRlbmQgJWFjdGl2ZTtcblxuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQ6ICM4YTAwMGI7XG4gIH1cblxuICAmLmFjdGl2ZTpub3QoLmRpc2FibGVkKTpob3ZlciB7XG4gICAgQGV4dGVuZCAlYWN0aXZlLWhvdmVyO1xuXG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbn1cbiIsIi51c2VyLWxpbmsge1xuICBAZXh0ZW5kICVub3dyYXAtaGlkZGVuO1xuXG4gIGNvbG9yOiAkYy1mb250O1xuXG4gICYub25saW5lIC5saW5lIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6AkCc7XG4gICAgfVxuXG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgb3BhY2l0eTogLjk7XG5cbiAgICAmLnBhdHJvbiB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5saW5lIHtcbiAgICBAZXh0ZW5kICVkYXRhLWljb247XG5cbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxLjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuXG4gICAgLyogbm90IHN1cmUgYWJvdXQgdGhhdCAqL1xuICAgICYucGF0cm9uIHtcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ8OSJztcbiAgICB9XG5cbiAgICAmLnBhdHJvbjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugJknICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJi5tb2RlcmF0b3I6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oCCJztcbiAgICB9XG4gIH1cbn1cblxuYS51c2VyLWxpbms6aG92ZXIge1xuICBjb2xvcjogJGMtbGluaztcbn1cblxuLnV0aXRsZSB7XG4gIGNvbG9yOiAkYy1icmFnO1xuICBmb250LXdlaWdodDogYm9sZDtcblxuICAmW2RhdGEtYm90XSB7XG4gICAgY29sb3I6ICRjLWJvdDtcbiAgfVxufVxuIiwiI2JsaW5kLW1vZGUge1xuICBtYXJnaW4tbGVmdDogLTk5OTk5cHg7XG4gIGhlaWdodDogMDtcblxuICAuYmxpbmQtbW9kZSAmIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gICAgYmFja2dyb3VuZDogIzg4ODtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuLmJsaW5kLW1vZGUge1xuICAuaXM6OmJlZm9yZSxcbiAgLmlzOjphZnRlcixcbiAgW2RhdGEtaWNvbl06OmJlZm9yZSB7XG4gICAgY29udGVudDogbm9uZTtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxufVxuIiwiI2ZyaWVuZF9ib3gge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXRvcG5hdi12aXNpYmxlICRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgei1pbmRleDogeihcImZyaWVuZC1ib3hcIik7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXBvcHVwO1xuICBib3JkZXI6ICRib3JkZXI7XG4gIGJvcmRlci1yaWdodDogMDtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbiAgZm9udC1zaXplOiAuOXJlbTtcbiAgbWluLXdpZHRoOiAxNTBweDtcbiAgbWF4LWhlaWdodDogOTUlO1xuXG4gIC8qIGltcHJvdmUgc2Nyb2xsIHBlcmZzICovXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblxuICBAaW5jbHVkZSBob3ZlcmZsb3c7XG5cbiAgLmZyaWVuZF9ib3hfdGl0bGUge1xuICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDNweCA1cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgQGV4dGVuZCAlbWV0YWwtaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgLmNvbnRlbnQge1xuICAgIG1heC1oZWlnaHQ6IDgwdmg7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICBkaXYge1xuICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLXBvcHVwLCAxMCUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGEge1xuICAgICAgZmxleDogMSAxIDEwMCU7XG4gICAgICBwYWRkaW5nOiAzcHggMHB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTNzO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICB9XG5cbiAgICAgICYudXNlci1saW5rIHtcbiAgICAgICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICAgICAgbWF4LXdpZHRoOiAxNTBweDtcblxuICAgICAgICAubGluZTo6YmVmb3JlIHtcbiAgICAgICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgICAgICBjb250ZW50OiAn7oCQJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLnR2IHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAgNXB4O1xuICAgICAgfVxuXG4gICAgICAmLmZyaWVuZC1zdHVkeSB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAycHggNXB4IDAgNXB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIGkubGluZSB7XG4gICAgICBvcGFjaXR5OiAwLjY7XG4gICAgfVxuICB9XG5cbiAgLm5vYm9keSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwYWRkaW5nOiAzcHggNXB4O1xuXG4gICAgc3BhbiB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbjogNXB4O1xuICAgIH1cbiAgfVxuXG4gIGEuZmluZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtYXJnaW46IDdweDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxuICAubm9ib2R5OmhvdmVyIGEuZmluZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsInNpZ25hbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAxZW07XG4gIHdpZHRoOiAxLjVlbTtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbnNpZ25hbCA+IGkge1xuICB3aWR0aDogMjAlO1xuICBtYXJnaW4tbGVmdDogMXB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogNDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDQ1NmJjO1xufVxuXG5zaWduYWwgPiBpOm50aC1jaGlsZCgyKSB7XG4gIGhlaWdodDogNjAlO1xufVxuXG5zaWduYWwgPiBpOm50aC1jaGlsZCgzKSB7XG4gIGhlaWdodDogODAlO1xufVxuXG5zaWduYWwgPiBpOm50aC1jaGlsZCg0KSB7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuc2lnbmFsLnExID4gaSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWJhZDtcbn1cblxuc2lnbmFsLnEyID4gaSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLXdhcm47XG59XG5cbnNpZ25hbCA+IGkub2ZmIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGMtc2hhZGU7XG59XG4iLCIjcG93ZXJUaXAsXG4jbWluaUdhbWUge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzLWZvcmNlLCAlcG9wdXAtc2hhZG93O1xuXG4gIHdpZHRoOiAyMHJlbTtcbiAgbWluLWhlaWdodDogM2VtO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1wb3B1cDtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiB6KFwicG93ZXJ0aXBcIik7XG5cbiAgLm1pbmktZ2FtZV9fcGxheWVyIHtcbiAgICBwYWRkaW5nOiAzcHggLjVlbSAuM2VtIC43ZW07XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmc6IC4zZW0gLjVlbSAzcHggLjdlbTtcbiAgICB9XG4gIH1cbn1cblxuLnVwdCB7XG4gICZfX2luZm8ge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgaGVpZ2h0OiA4M3B4O1xuICAgIHBhZGRpbmc6IC40ZW0gLjVlbSAuM2VtIC41ZW07XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJl9fdG9wIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgICAgLmxlZnQge1xuICAgICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgICB9XG5cbiAgICAgICZfX2NvdW50cnkge1xuICAgICAgICBtYXJnaW4tbGVmdDogLjVlbTtcbiAgICAgIH1cblxuICAgICAgLnVzZXItbGluayB7XG4gICAgICAgIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgIC5saW5lIHtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICZfX2NvdW50cnkge1xuICAgICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgICAgICBmb250LXNpemU6IC45ZW07XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC4zZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19yYXRpbmdzIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgICAgbWFyZ2luLXRvcDogM3B4O1xuXG4gICAgICA+IHNwYW4ge1xuICAgICAgICBmbGV4OiAwIDAgMjUlO1xuICAgICAgICBtYXgtd2lkdGg6IDI1JTtcbiAgICAgICAgcGFkZGluZzogMnB4IDNweDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX193YXJuaW5nIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuICB9XG5cbiAgJl9fc2NvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICZfX2FjdGlvbnMuYnRuLXJhY2sge1xuICAgIEBleHRlbmQgJWJveC1zaGFkb3c7XG5cbiAgICB3aWR0aDogMTAwJTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICBhIHtcbiAgICAgIGZsZXg6IDAgMCAxOCU7XG5cbiAgICAgICYucmVsYXRpb24tYnV0dG9uIHtcbiAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9fbW9kIHtcbiAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW47XG5cbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgJl9fbWFya3Mge1xuICAgICAgcGFkZGluZzogM3B4IDVweDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgcGFkZGluZzogLjNlbSAuNWVtIC4zZW0gLjVlbTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gIH1cbn1cblxuI21pbmlHYW1lIHtcbiAgbWluLWhlaWdodDogMjYycHg7XG5cbiAgLnNwaW5uZXIge1xuICAgIG1hcmdpbjogODJweCBhdXRvIDAgYXV0bztcbiAgfVxuXG4gIGNnLWJvYXJkIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICB9XG59XG4iLCIubWluaS1nYW1lIHtcbiAgQGV4dGVuZCAlbm93cmFwLWhpZGRlbjtcblxuICBkaXNwbGF5OiBibG9jaztcblxuICAmLCAmOmhvdmVyIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgfVxuXG4gICZfX3BsYXllciB7XG4gICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuLW5vd3JhcDtcblxuICAgIHBhZGRpbmc6IDNweCAycHggMCAycHg7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmc6IDAgMnB4IDJweCAycHg7XG4gICAgfVxuICB9XG5cbiAgJl9fdXNlciB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC5yYXRpbmcge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgICBtYXJnaW4tbGVmdDogMWNoO1xuICB9XG5cbiAgJl9fY2xvY2sge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIHBhZGRpbmc6IDAgMWNoO1xuXG4gICAgJi5jbG9jay0tcnVuIHtcbiAgICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gIH1cblxuICAmX19yZXN1bHQge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbi1yaWdodDogMWNoO1xuICB9XG59XG4iLCIuYnRuLXJhY2sge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6ICRib3JkZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuXG4gIC5idG4tcmFjayB7XG4gICAgLyogZW1iZWRkZWQgcmFja3MgKi9cbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cblxuICAmX19idG4sXG4gIGZvcm0ge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcCwgJW1ldGFsO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItcmlnaHQ6ICRib3JkZXI7XG4gICAgY29sb3I6ICRjLWZvbnQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsLWhvdmVyO1xuXG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICB9XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIEBleHRlbmQgJWJveC1yYWRpdXMtbGVmdDtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgQGV4dGVuZCAlYm94LXJhZGl1cy1yaWdodDtcblxuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cblxuICAgIGkge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICB9XG4gIH1cblxuICAmX19idG4ge1xuICAgIHBhZGRpbmc6IDAgLjZlbTtcblxuICAgICYuYWN0aXZlIHtcbiAgICAgIEBleHRlbmQgJWFjdGl2ZTtcblxuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG59XG4iLCIvKiBjaXJjdWxhciBsb2FkZXIgKi9cbkBrZXlmcmFtZXMgc3Bpbm5lci1yb3RhdGUge1xuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1kYXNoIHtcbiAgMCUsMTAlIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAxLDI3MDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcbiAgfVxuXG4gIDQwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogODksMjQwO1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMSwyNDA7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xMTA7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzcGlubmVyLWNvbG9yIHtcbiAgMCUsMjAlLDEwMCUge1xuICAgIHN0cm9rZTogIzQyYTVmNTtcbiAgfVxuXG4gIDMwJSw0NSUge1xuICAgIHN0cm9rZTogI2Y0NDMzNjtcbiAgfVxuXG4gIDUwJSw3MCUge1xuICAgIHN0cm9rZTogI2ZkZDgzNTtcbiAgfVxuXG4gIDc1JSw5NSUge1xuICAgIHN0cm9rZTogIzRjYWY1MDtcbiAgfVxufVxuXG4uc3Bpbm5lciB7XG4gIHdpZHRoOiA3MHB4O1xuICBoZWlnaHQ6IDcwcHg7XG4gIG1hcmdpbjogYXV0bztcblxuICBzdmcge1xuICAgIGFuaW1hdGlvbjogc3Bpbm5lci1yb3RhdGUgMS41cyBsaW5lYXIgaW5maW5pdGU7XG4gIH1cblxuICBjaXJjbGUge1xuICAgIHN0cm9rZTogIzQyYTVmNTtcbiAgICBzdHJva2Utd2lkdGg6IDQ7XG4gICAgYW5pbWF0aW9uOiBzcGlubmVyLWRhc2ggMS4yNzVzIGVhc2UtaW4tb3V0IGluZmluaXRlLCBzcGlubmVyLWNvbG9yIDUuMXMgbGluZWFyIGluZmluaXRlO1xuICB9XG5cbiAgLndoaXRlICYgY2lyY2xlIHtcbiAgICBhbmltYXRpb246IHNwaW5uZXItZGFzaCAxLjI3NXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgc3Ryb2tlOiAjZmZmO1xuICB9XG59XG5cbi8qIHNtYWxsIGhvcml6b250YWwgbG9hZGVyICovXG5Aa2V5ZnJhbWVzIGRkbG9hZGVyIHtcbiAgMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQ7XG4gIH1cblxuICAxMDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodDtcbiAgfVxufVxuXG4uZGRsb2FkZXIge1xuICBAaWYgJHRoZW1lLWxpZ2h0IHtcbiAgICBiYWNrZ3JvdW5kOiBpbWctdXJsKFwibG9hZGVyL2JsYWNreDEucG5nXCIpIG5vLXJlcGVhdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZDogaW1nLXVybChcImxvYWRlci93aGl0ZXgxLnBuZ1wiKSBuby1yZXBlYXQ7XG4gIH1cblxuICBhbmltYXRpb246IGRkbG9hZGVyIDAuNXMgc3RlcHMoMTUpIGluZmluaXRlO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDhweDtcbn1cbiIsIiRyZWNvbi1oZWlnaHQ6IDIuNXJlbTtcblxuQGtleWZyYW1lcyByZWNvbm5lY3RlZCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRyZWNvbi1oZWlnaHQpO1xuICB9XG59XG5cbiNyZWNvbm5lY3Rpbmcge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXAsICVwb3B1cC1zaGFkb3c7XG5cbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYmFja2dyb3VuZDogJGMtYmFkO1xuICBjb2xvcjogJGMtYmFkLW92ZXI7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6ICRyZWNvbi1oZWlnaHQ7XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDtcbiAgei1pbmRleDogeihcInJlY29ubmVjdGluZ1wiKTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRyZWNvbi1oZWlnaHQpO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiAxLjNlbTtcbiAgfVxuXG4gIC5vZmZsaW5lICYge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLm9ubGluZS5yZWNvbm5lY3RlZCAmIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGFuaW1hdGlvbjogcmVjb25uZWN0ZWQgMi41cyBlYXNlLW91dCAxLjVzIGJhY2t3YXJkcztcbiAgfVxuXG4gIC5vbmxpbmUgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIkpcIjtcbiAgfVxufVxuIiwiI2Fubm91bmNlIHtcbiAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuLCAlcG9wdXAtc2hhZG93O1xuXG4gIGZvbnQtc2l6ZTogMS40ZW07XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHBhZGRpbmc6IC43cmVtIDFyZW07XG4gIHotaW5kZXg6IHooXCJ0b3VyLXJlbWluZGVyXCIpO1xuICB3aWR0aDogMTAwJTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14eC1zbWFsbCkge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7XG4gIH1cblxuXG4gIGEge1xuICAgIGNvbG9yOiAkYy1wcmltYXJ5LW92ZXI7XG4gIH1cblxuICB0aW1lIHtcbiAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgfVxuXG4gIC5hY3Rpb25zIHtcbiAgICBhIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gICAgfVxuICB9XG5cbiAgJi5hbm5vdW5jZSB7XG4gICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgIGJhY2tncm91bmQ6ICRjLWFjY2VudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUVFQSxZQUFZO0FBcUJaLDZEQUE2RDtBQWM3RCxtQkFBbUI7QUFNbkIsa0NBQWtDO0FBRWxDLHNCQUFzQjtBQU10QixvQ0FBb0M7QUFFcEMsb0JBQW9CO0FBTXBCLGlDQUFpQztBQUVqQyxnQkFBZ0I7QUFJaEIsK0JBQStCO0FBRS9CLGdCQUFnQjtBQUtoQiwrQkFBK0I7QUFFL0IsaUJBQWlCO0FBSWpCLGtCQUFrQjtBQUlsQixjQUFjO0FBSWQsaUJBQWlCO0FBSWpCLCtCQUErQjtBQThCL0IsYUFBYTtBQU1iLGFBQWE7QUFNYixZQUFZO0FHcElaLGtDQUFrQztBc0JBbEMsWUFBWTtBQWVaLGFBQWE7QUFTYixrQkFBa0I7QUFLbEIsa0JBQWtCO0FBS2xCLGFBQWE7QUVsQ2IsdURBQXVEO0FBT3ZELHVFQUF1RTtBQzZEdkUsdURBQXVEO0FRcEV2RCxBUEFBLElPQUksQ1BBZ0I7RUFDbEIsV0FBVyxFQUFFLHVCQUF1QjtDQUNyQzs7QU9tQ0Qs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cUI7Q0FDeEM7O0FBRkQsQUFBQSxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBRDtFQUN4QixnQkFBZ0IsRUFBRSxvQ0FBcUI7Q0FDeEM7O0FBRkQsQUFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBSztFQUN4QixnQkFBZ0IsRUFBRSw4QkFBcUI7Q0FDeEM7O0FBRkQsQUFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBSztFQUN4QixnQkFBZ0IsRUFBRSw4QkFBcUI7Q0FDeEM7O0FBRkQsQUFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBSztFQUN4QixnQkFBZ0IsRUFBRSxtQ0FBcUI7Q0FDeEM7O0FBRkQsQUFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBSztFQUN4QixnQkFBZ0IsRUFBRSw4QkFBcUI7Q0FDeEM7O0FBRkQsQUFBQSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBSTtFQUN4QixnQkFBZ0IsRUFBRSwrQkFBcUI7Q0FDeEM7O0FBRkQsQUFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBSztFQUN4QixnQkFBZ0IsRUFBRSxrQ0FBcUI7Q0FDeEM7O0FBRkQsQUFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBSztFQUN4QixnQkFBZ0IsRUFBRSxrQ0FBcUI7Q0FDeEM7O0FBRkQsQUFBQSxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBSDtFQUN4QixnQkFBZ0IsRUFBRSxzQ0FBcUI7Q0FDeEM7O0FBRkQsQUFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBSztFQUN4QixnQkFBZ0IsRUFBRSw4QkFBcUI7Q0FDeEM7O0FBRkQsQUFBQSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBSTtFQUN4QixnQkFBZ0IsRUFBRSxtQ0FBcUI7Q0FDeEM7O0FBRkQsQUFBQSxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBRDtFQUN4QixnQkFBZ0IsRUFBRSxvQ0FBcUI7Q0FDeEM7O0FBRkQsQUFBQSxLQUFLLENBQUMsS0FBSyxD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 */
