/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Profil/Badge.vue?vue&type=style&index=0&id=701f139f&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@import url(https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;600&display=swap);
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/AdminPanel/Navbar.vue?vue&type=style&index=0&id=32c5cf2a&scoped=true&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.link-active[data-v-32c5cf2a] {
  background-color: #f3f4f6;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Administration/Dashboard.vue?vue&type=style&index=0&id=770cc7b2&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.bg-custom-pattern[data-v-770cc7b2] {
    background-color: #2A0E0E;
    background-image: radial-gradient(rgba(255, 255, 255, 0.1) 1.5px, transparent 0);
    background-size: 20px 20px;
    background-position: -5px -5px;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Backoffice/Dashboard.vue?vue&type=style&index=0&id=3e050f12&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.link-active[data-v-3e050f12] {
  background: white;
  box-shadow: 0 1px 1px rgba(14, 15, 18, 0.08), 0 2px 4px rgba(14,15,18,0.08), 0 6px 12px rgba(14,15,18,0.08);
}

/*!**************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/floating-vue/dist/style.css ***!
  \**************************************************************************************************************************************************************************************/
.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Profil/ActivityMap.vue?vue&type=style&index=0&id=4d01c3c9&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.heatmap[data-v-4d01c3c9] {
  display: grid;
  grid-template-columns: auto 1fr; /* 1: labels Y, 2: contenu */
  grid-auto-rows: auto;
  row-gap: 3px;
  column-gap: 3px;
  --cell-size: 15.5px;
  --gap: 2px;
  --base-rgb: 76, 139, 253;
}

/* cellule vide en haut à gauche pour aligner l’en-tête */
.spacer[data-v-4d01c3c9] { height: 1.2em;
}

/* rangée des mois */
.months[data-v-4d01c3c9] {
  display: grid;
  align-items: center;
  gap: var(--gap);
  height: 1.2em;
  font-size: 10px;
  color: #9aa0a6;
}
.month[data-v-4d01c3c9] {
  text-align: center;
}

/* le reste inchangé */
.y-labels[data-v-4d01c3c9] {
  display: grid;
  grid-template-rows: repeat(7, var(--cell-size));
  gap: var(--gap);
  font-size: 10px;
  color: #9aa0a6;
  margin-right: 2px;
}
.grid[data-v-4d01c3c9] { display: grid; grid-auto-flow: column; gap: var(--gap);
}
.week[data-v-4d01c3c9] { display: grid; grid-template-rows: repeat(7, var(--cell-size)); gap: var(--gap);
}
.cell[data-v-4d01c3c9] { width: var(--cell-size); height: var(--cell-size); border-radius: 2px; background-color: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255,255,255,0);
}
.cell.level-0[data-v-4d01c3c9] { background-color: rgba(40, 39, 46, 0.4);
}
.cell.level-1[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.25);
}
.cell.level-2[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.45);
}
.cell.level-3[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.65);
}
.cell.level-4[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.9);
}
.cell[data-v-4d01c3c9]:hover {
  border: 1px solid rgba(255,255,255,0.4);
}
.legend[data-v-4d01c3c9] { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 12px; color: #9aa0a6;
}
.legend .cell[data-v-4d01c3c9] { width: 12px; height: 12px;
}


/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Backoffice/Users.vue?vue&type=style&index=0&id=4d32c12a&scoped=true&lang=css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

/* Additional styling if needed */

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/GSAP/ScrollV3.vue?vue&type=style&index=0&id=6aa8df3f&scoped=true&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

section[data-v-6aa8df3f] {
    height: 100vh;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Home/ConfirmWithoutDemo.vue?vue&type=style&index=0&id=621d20dc&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

  /* Animation battement de coeur pour le logo */
.heartbeat {
    /* Allonger la durée pour espacer davantage les 2 pulsations */
    animation: heartbeat 2.4s ease-in-out infinite;
    transform-origin: center center;
    will-change: transform;
}
@keyframes heartbeat {
    /* Double battement avec espacement plus long, puis repos */
0% { transform: scale(1);
}
12% { transform: scale(1.07);
}
20% { transform: scale(0.985);
}
58% { transform: scale(1.105);
}
66% { transform: scale(1);
}
100% { transform: scale(1);
}
}

  /* Onde subtile en opacité derrière le logo */
.pulse-wave {
    position: absolute;
    inset: 0;
    border-radius: 9999px; /* full */
    background-color: currentColor; /* utilise la couleur primaire via .text-primary */
    opacity: 0; /* invisible jusqu'au pic de pulsation */
    transform: scale(1);
    /* Synchroniser la durée de l'onde avec le heartbeat pour coller aux pulsations */
    animation: pulse-wave 2.4s ease-out infinite;
    filter: blur(0.5px);
    will-change: transform, opacity;
}
.pulse-wave.delay {
    /* Décaler précisément pour la 2e pulsation (de 12% à 58% = 46% de 2.4s => ~1.104s) */
    animation-delay: 1.104s;
}
@keyframes pulse-wave {
    /* Onde alignée sur les pics du heartbeat (~12% et ~58%) */
0% { transform: scale(1); opacity: 0;
}
11.9% { transform: scale(1); opacity: 0;
}
    /* Déclenchement de l'onde au 1er pic */
12% { transform: scale(1.02); opacity: 0.12;
}
30% { transform: scale(1.35); opacity: 0.08;
}
45% { transform: scale(1.5); opacity: 0.04;
}
    /* Finir l'onde avant le repos (66%) */
66% { transform: scale(1.55); opacity: 0;
}
100% { transform: scale(1.55); opacity: 0;
}
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Utils/LanguageSwitcher.vue?vue&type=style&index=0&id=54be1986&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

select[data-v-54be1986] { outline: none;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Home/Navbar.vue?vue&type=style&index=0&id=2f7beffe&scoped=true&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

header.header_blur[data-v-2f7beffe] {
    backdrop-filter: saturate(120%) blur(10px);
}
.letalent-button[data-v-2f7beffe] {
    background: linear-gradient(110deg, #D28E00 45%, #fff9e6 50%, #D28E00 55%);
    background-size: 200% 100%;
    color: white;
    text-shadow: 0 1px 2px rgba(0,0,0,0.3);
    animation: shine-2f7beffe 3s linear infinite;
    box-shadow: 0 0 15px rgba(210, 142, 0, 0.3);
    transition: all 0.3s ease;
    border: 1px solid rgba(255, 255, 255, 0.2);
}
.letalent-button[data-v-2f7beffe]:hover {
    box-shadow: 0 0 25px rgba(210, 142, 0, 0.6);
    transform: scale(1.05);
}
@keyframes shine-2f7beffe {
to {
      background-position-x: -200%;
}
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Navbar.vue?vue&type=style&index=0&id=5f70eaff&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

header.header_blur[data-v-5f70eaff] {
    backdrop-filter: saturate(120%) blur(10px);
}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Opening.vue?vue&type=style&index=0&id=1d428279&scoped=true&lang=css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.logo-wrap[data-v-1d428279] {
  width: 100%;
  max-width: 390px;
  margin: 0 auto;
}
svg[data-v-1d428279] {
  display: block;
}
.language-title[data-v-1d428279] {
  font-size: 2.5rem;
  font-weight: 600;
  color: #FFAF06;
  margin-bottom: 2rem;
  text-align: center;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
  opacity: 0;
  letter-spacing: .2px;
}
.eye-interactive[data-v-1d428279] {
  transition: opacity 0.3s ease;
}
@media (max-width: 640px) {
.language-title[data-v-1d428279] {
    font-size: 1.5rem;
    margin-bottom: 1.5rem;
}
}
@media (prefers-reduced-motion: reduce) {
  /* Accessibilité : on saute l'animation si l'utilisateur la désactive */
svg[data-v-1d428279] * {
    animation: none !important;
    transition: none !important;
}
.eye-interactive[data-v-1d428279] {
    transition: none !important;
}
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Product/LightningBackground.vue?vue&type=style&index=0&id=74957e0e&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

@keyframes lmlb-draw {
0%   { stroke-dashoffset: 1;
}
9%   { stroke-dashoffset: 0;
}
72%  { stroke-dashoffset: 0;
}
82%  { stroke-dashoffset: 1;
}
100% { stroke-dashoffset: 1;
}
}
@keyframes lmlb-flick {
0%   { opacity: 0;
}
4%   { opacity: 1;
}
10%  { opacity: 0.5;
}
16%  { opacity: 0.95;
}
30%  { opacity: 0.7;
}
40%  { opacity: 0.9;
}
55%  { opacity: 0.45;
}
70%  { opacity: 0.6;
}
85%  { opacity: 0.2;
}
100% { opacity: 0;
}
}
.lmlb-root { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 0;
}
/* La lueur du fond ne s'allume qu'AU MOMENT des frappes (synchro avec l'éclair dominant, cycle 5.6s, en phase). */
@keyframes lmlb-bgflash {
0%, 100% { opacity: 0;
}
3%  { opacity: 1;
}
8%  { opacity: 0.22;
}
13% { opacity: 0.85;
}
22% { opacity: 0.10;
}
46% { opacity: 0.04;
}
64% { opacity: 0;
}
}
.lmlb-bg {
  position: absolute; inset: 0;
  background: radial-gradient(840px 1020px at 90% 24%, rgba(140, 128, 222, 0.3), transparent 62%);
  opacity: 0;
  animation: lmlb-bgflash 5.6s ease-out infinite;
  will-change: opacity;
}

/* Off-screen / hidden tab → freeze everything so we don't burn frames unseen. */
.lmlb-paused .lmlb-bg,
.lmlb-paused .lmlb-bolt,
.lmlb-paused .lmlb-bolt path { animation-play-state: paused !important;
}
@media (prefers-reduced-motion: reduce) {
.lmlb-bg { animation: none !important; opacity: 0.5 !important;
}
.lmlb-bolt { animation: none !important; opacity: 0.9 !important;
}
.lmlb-bolt path { animation: none !important; stroke-dashoffset: 0 !important;
}
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Profil/Badge.vue?vue&type=style&index=0&id=701f139f&scoped=true&lang=css (1) ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.badge[data-v-701f139f]{
  /* variables */
  --accent: #ff2438;
  --bg: #0b0b0c;
  --ink: #e9eaec;
  --sub: #a6a7ab;
  --border: rgba(255,255,255,.12);

  border-radius: 24px;
  background:
      radial-gradient(120% 120% at 10% -10%, rgba(255,255,255,.10), transparent 40%),
      linear-gradient(180deg, #111316 0%, #0a0b0c 100%);
  color: var(--ink);
  position: relative;
  padding: 26px 22px;
  box-shadow:
      0 28px 60px -12px rgba(0,0,0,.65),
      0 8px 20px -8px rgba(255,36,56,.25),
      inset 0 1px 0 rgba(255,255,255,.06),
      inset 0 -1px 0 rgba(255,255,255,.03);
  overflow: hidden;
  font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.badge.has-hole[data-v-701f139f]::before{
  content:"";
  position:absolute;
  top:14px; left:50%;
  width: 57px; height: 18px;
  transform: translateX(-50%);
  background: rgba(0,0,0,.45);
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.15);
  box-shadow: inset 0 2px 2px rgba(0,0,0,.5), 0 4px 12px rgba(0,0,0,.35);
}

/* Top logo */
.mark[data-v-701f139f]{
  width: 56px; height: 56px;
  display:block;
  margin-bottom: 16px;
  opacity:.9;
  filter: drop-shadow(0 6px 8px rgba(255,36,56,.25));
}

/* Titres */
.title[data-v-701f139f]{
  font-weight: 600;
  letter-spacing: .18em;
  font-size: 18px;
  margin: 6px 0 18px 0;
}

/* Paires clé/valeur */
.kv[data-v-701f139f]{
  display:grid;
  grid-template-columns: 70px 1fr;
  gap: 6px 16px;
  font-size: 11px;
  color: var(--sub);
  line-height: 1.3;
  margin-bottom: 12px;
}
.kv .k[data-v-701f139f]{ color: var(--sub); opacity:.9
}
.kv .v[data-v-701f139f]{ color: var(--ink); opacity:.9
}
.rule[data-v-701f139f]{
  height:1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.18), transparent);
  margin: 14px 0 10px;
}
.handle[data-v-701f139f]{
  font-size: 11px;
  color: var(--sub);
  letter-spacing: .08em;
  margin-top: 2px;
}
.name[data-v-701f139f]{
  font-size: 22px;
  letter-spacing: .12em;
  margin: 8px 0 8px;
  font-weight: 600;
}
.grid[data-v-701f139f]{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  align-items: start;
}

/* QR (placeholder) */
.qr[data-v-701f139f]{
  width: 128px; height: 128px;
  border-radius: 12px;
  border: 1px solid var(--border);
  background:
      repeating-linear-gradient(0deg, #0f1113, #0f1113 8px, #0d0f11 8px, #0d0f11 16px);
  box-shadow: inset 0 0 0 4px #000, 0 8px 20px -10px rgba(0,0,0,.8);
  position: relative;
  overflow:hidden;
}
.qr[data-v-701f139f]::before, .qr[data-v-701f139f]::after{
  content:"";
  position:absolute; inset:10px;
  background:
      conic-gradient(from 0deg at 20% 20%, #fff 0 25%, transparent 0 100%),
      conic-gradient(from 0deg at 80% 20%, #fff 0 25%, transparent 0 100%),
      conic-gradient(from 0deg at 20% 80%, #fff 0 25%, transparent 0 100%),
      conic-gradient(from 0deg at 80% 80%, #fff 0 25%, transparent 0 100%),
      repeating-conic-gradient(#fff 0 2%, transparent 0 4%);
  mix-blend-mode: screen;
  opacity:.9;
}
.qr[data-v-701f139f]::after{ inset:36px; background:#000
}
.meta[data-v-701f139f]{
  font-size: 11px;
  color: var(--sub);
  line-height: 1.45;
}
.meta b[data-v-701f139f]{ color: var(--ink); font-weight:600; letter-spacing:.06em
}
.meta .id[data-v-701f139f]{
  margin: 8px 0 10px;
  padding: 6px 8px;
  border: 1px dashed rgba(255,255,255,.22);
  border-radius: 8px;
  display:inline-block;
}

/* Signature bas */
.footer[data-v-701f139f]{
  position:absolute; left:22px; right:22px; bottom:18px;
  display:flex; align-items:center; justify-content:space-between;
  color: var(--sub); font-size: 10px;
  letter-spacing:.08em;
}
.sig[data-v-701f139f]{ display:flex; align-items:center; gap:8px; opacity:.95;
}
.dot[data-v-701f139f]{
  width:10px; height:10px; border-radius:50%;
  background: radial-gradient(circle at 40% 35%, #fff, #fff0 45%);
  box-shadow: 0 0 14px var(--accent), 0 0 4px var(--accent) inset;
}

/* Glows rouges */
.glow[data-v-701f139f]{
  position:absolute; inset:-40%;
  background:
      radial-gradient(420px 220px at 20% -10%, rgba(255,36,56,.18), transparent 40%),
      radial-gradient(420px 220px at 120% 120%, rgba(255,36,56,.12), transparent 50%);
  pointer-events:none;
  filter: blur(2px);
}

/* Sélection */
.badge[data-v-701f139f] ::selection{ background: rgba(255,36,56,.35); color:#fff
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/VSTLines.vue?vue&type=style&index=0&id=0d687dd2&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.line[data-v-0d687dd2] {
  transform-origin: center;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQXdKQTtFQUNFLHlCQUF5QjtBQUMzQjs7Ozs7O0FDdUJFO0lBQ0UseUJBQXlCO0lBQ3pCLGdGQUFnRjtJQUNoRiwwQkFBMEI7SUFDMUIsOEJBQThCO0FBQ2hDOzs7Ozs7QUN5SUY7RUFDRSxpQkFBaUI7RUFDakIsMkdBQTJHO0FBQzdHOzs7OztBQ2xVQSxrQ0FBa0MsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMseUNBQXlDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLDJDQUEyQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsdUNBQXVDLENBQUMsbUJBQW1CLENBQUMsMENBQTBDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQywySEFBMkgseUJBQXlCLENBQUMsb0JBQW9CLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsaUJBQWlCLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixpQkFBaUIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLDBIQUEwSCxZQUFZLENBQUMsOENBQThDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLGdCQUFnQixDQUFDLDZJQUE2SSxTQUFTLENBQUMsNklBQTZJLFNBQVMsQ0FBQywwSUFBMEkscUJBQXFCLENBQUMsdUNBQXVDLENBQUMsd0NBQXdDLENBQUMseUNBQXlDLENBQUMscUVBQXFFLFFBQVEsQ0FBQyw0RUFBNEUsS0FBSyxDQUFDLGdKQUFnSixrQkFBa0IsQ0FBQyx1Q0FBdUMsQ0FBQyx3Q0FBd0MsQ0FBQyxzQ0FBc0MsQ0FBQyx3RUFBd0UsUUFBUSxDQUFDLHdFQUF3RSxRQUFRLENBQUMsNklBQTZJLFFBQVEsQ0FBQyw2SUFBNkksUUFBUSxDQUFDLDhJQUE4SSxtQkFBbUIsQ0FBQyx1Q0FBdUMsQ0FBQyxzQ0FBc0MsQ0FBQyx5Q0FBeUMsQ0FBQyx1RUFBdUUsU0FBUyxDQUFDLHVFQUF1RSxTQUFTLENBQUMsMEVBQTBFLFdBQVcsQ0FBQyw0SUFBNEksb0JBQW9CLENBQUMsc0NBQXNDLENBQUMsd0NBQXdDLENBQUMseUNBQXlDLENBQUMsc0VBQXNFLFNBQVMsQ0FBQywwQ0FBMEMseUJBQXlCLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLGdEQUFnRCxrQkFBa0IsQ0FBQywyQ0FBMkMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQywrQkFBK0IsQ0FBQyxpREFBaUQsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsaURBQWlELGlCQUFpQjs7Ozs7O0FDK014dEk7RUFDRSxhQUFhO0VBQ2IsK0JBQStCLEVBQUUsNEJBQTRCO0VBQzdELG9CQUFvQjtFQUNwQixZQUFZO0VBQ1osZUFBZTtFQUNmLG1CQUFtQjtFQUNuQixVQUFVO0VBQ1Ysd0JBQXdCO0FBQzFCOztBQUVBLHlEQUF5RDtBQUN6RCwyQkFBVSxhQUFhO0FBQUU7O0FBRXpCLG9CQUFvQjtBQUNwQjtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsZUFBZTtFQUNmLGFBQWE7RUFDYixlQUFlO0VBQ2YsY0FBYztBQUNoQjtBQUNBO0VBQ0Usa0JBQWtCO0FBQ3BCOztBQUVBLHNCQUFzQjtBQUN0QjtFQUNFLGFBQWE7RUFDYiwrQ0FBK0M7RUFDL0MsZUFBZTtFQUNmLGVBQWU7RUFDZixjQUFjO0VBQ2QsaUJBQWlCO0FBQ25CO0FBQ0EseUJBQVEsYUFBYSxFQUFFLHNCQUFzQixFQUFFLGVBQWU7QUFBRTtBQUNoRSx5QkFBUSxhQUFhLEVBQUUsK0NBQStDLEVBQUUsZUFBZTtBQUFFO0FBQ3pGLHlCQUFRLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLDJDQUEyQyxFQUFFLHFDQUFxQztBQUFFO0FBQ25LLGlDQUFnQix1Q0FBdUM7QUFBRTtBQUN6RCxpQ0FBZ0IsNkNBQTZDO0FBQUU7QUFDL0QsaUNBQWdCLDZDQUE2QztBQUFFO0FBQy9ELGlDQUFnQiw2Q0FBNkM7QUFBRTtBQUMvRCxpQ0FBZ0IsNENBQTRDO0FBQUU7QUFFOUQ7RUFDRSx1Q0FBdUM7QUFDekM7QUFFQSwyQkFBVSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYztBQUFFO0FBQzFHLGlDQUFnQixXQUFXLEVBQUUsWUFBWTtBQUFFOzs7Ozs7O0FDa0YzQyxpQ0FBaUM7Ozs7OztBQ3ZHL0I7SUFDRSxhQUFhO0FBQ2Y7Ozs7OztFQy9HQSw4Q0FBOEM7QUFDOUM7SUFDRSw4REFBOEQ7SUFDOUQsOENBQThDO0lBQzlDLCtCQUErQjtJQUMvQixzQkFBc0I7QUFDeEI7QUFFQTtJQUNFLDJEQUEyRDtBQUMzRCxLQUFLLG1CQUFtQjtBQUFFO0FBQzFCLE1BQU0sc0JBQXNCO0FBQUU7QUFDOUIsTUFBTSx1QkFBdUI7QUFBRTtBQUMvQixNQUFNLHVCQUF1QjtBQUFFO0FBQy9CLE1BQU0sbUJBQW1CO0FBQUU7QUFDM0IsT0FBTyxtQkFBbUI7QUFBRTtBQUM5Qjs7RUFFQSw2Q0FBNkM7QUFDN0M7SUFDRSxrQkFBa0I7SUFDbEIsUUFBUTtJQUNSLHFCQUFxQixFQUFFLFNBQVM7SUFDaEMsOEJBQThCLEVBQUUsa0RBQWtEO0lBQ2xGLFVBQVUsRUFBRSx3Q0FBd0M7SUFDcEQsbUJBQW1CO0lBQ25CLGlGQUFpRjtJQUNqRiw0Q0FBNEM7SUFDNUMsbUJBQW1CO0lBQ25CLCtCQUErQjtBQUNqQztBQUVBO0lBQ0UscUZBQXFGO0lBQ3JGLHVCQUF1QjtBQUN6QjtBQUVBO0lBQ0UsMERBQTBEO0FBQzFELEtBQUssbUJBQW1CLEVBQUUsVUFBVTtBQUFFO0FBQ3RDLFFBQVEsbUJBQW1CLEVBQUUsVUFBVTtBQUFFO0lBQ3pDLHVDQUF1QztBQUN2QyxNQUFNLHNCQUFzQixFQUFFLGFBQWE7QUFBRTtBQUM3QyxNQUFNLHNCQUFzQixFQUFFLGFBQWE7QUFBRTtBQUM3QyxNQUFNLHFCQUFxQixFQUFFLGFBQWE7QUFBRTtJQUM1QyxzQ0FBc0M7QUFDdEMsTUFBTSxzQkFBc0IsRUFBRSxVQUFVO0FBQUU7QUFDMUMsT0FBTyxzQkFBc0IsRUFBRSxVQUFVO0FBQUU7QUFDN0M7Ozs7OztBQzVJRiwwQkFBUyxhQUFhO0FBQUU7Ozs7OztBQzRFdEI7SUFDRSwwQ0FBMEM7QUFDNUM7QUFFQTtJQUNFLDBFQUEwRTtJQUMxRSwwQkFBMEI7SUFDMUIsWUFBWTtJQUNaLHNDQUFzQztJQUN0Qyw0Q0FBbUM7SUFDbkMsMkNBQTJDO0lBQzNDLHlCQUF5QjtJQUN6QiwwQ0FBMEM7QUFDNUM7QUFFQTtJQUNFLDJDQUEyQztJQUMzQyxzQkFBc0I7QUFDeEI7QUFFQTtBQUNFO01BQ0UsNEJBQTRCO0FBQzlCO0FBQ0Y7Ozs7OztBQ3ZDQTtJQUNFLDBDQUEwQztBQUM1Qzs7Ozs7O0FDcVRGO0VBQ0UsV0FBVztFQUNYLGdCQUFnQjtFQUNoQixjQUFjO0FBQ2hCO0FBQ0E7RUFDRSxjQUFjO0FBQ2hCO0FBRUE7RUFDRSxpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLGNBQWM7RUFDZCxtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLDBDQUEwQztFQUMxQyxVQUFVO0VBQ1Ysb0JBQW9CO0FBQ3RCO0FBRUE7RUFDRSw2QkFBNkI7QUFDL0I7QUFFQTtBQUNFO0lBQ0UsaUJBQWlCO0lBQ2pCLHFCQUFxQjtBQUN2QjtBQUNGO0FBRUE7RUFDRSx1RUFBdUU7QUFDdkU7SUFDRSwwQkFBMEI7SUFDMUIsMkJBQTJCO0FBQzdCO0FBRUE7SUFDRSwyQkFBMkI7QUFDN0I7QUFDRjs7Ozs7O0FDdFBBO0FBQ0UsT0FBTyxvQkFBb0I7QUFBRTtBQUM3QixPQUFPLG9CQUFvQjtBQUFFO0FBQzdCLE9BQU8sb0JBQW9CO0FBQUU7QUFDN0IsT0FBTyxvQkFBb0I7QUFBRTtBQUM3QixPQUFPLG9CQUFvQjtBQUFFO0FBQy9CO0FBQ0E7QUFDRSxPQUFPLFVBQVU7QUFBRTtBQUNuQixPQUFPLFVBQVU7QUFBRTtBQUNuQixPQUFPLFlBQVk7QUFBRTtBQUNyQixPQUFPLGFBQWE7QUFBRTtBQUN0QixPQUFPLFlBQVk7QUFBRTtBQUNyQixPQUFPLFlBQVk7QUFBRTtBQUNyQixPQUFPLGFBQWE7QUFBRTtBQUN0QixPQUFPLFlBQVk7QUFBRTtBQUNyQixPQUFPLFlBQVk7QUFBRTtBQUNyQixPQUFPLFVBQVU7QUFBRTtBQUNyQjtBQUVBLGFBQWEsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLFVBQVU7QUFBRTtBQUMvRixrSEFBa0g7QUFDbEg7QUFDRSxXQUFXLFVBQVU7QUFBRTtBQUN2QixNQUFNLFVBQVU7QUFBRTtBQUNsQixNQUFNLGFBQWE7QUFBRTtBQUNyQixNQUFNLGFBQWE7QUFBRTtBQUNyQixNQUFNLGFBQWE7QUFBRTtBQUNyQixNQUFNLGFBQWE7QUFBRTtBQUNyQixNQUFNLFVBQVU7QUFBRTtBQUNwQjtBQUNBO0VBQ0Usa0JBQWtCLEVBQUUsUUFBUTtFQUM1QiwrRkFBK0Y7RUFDL0YsVUFBVTtFQUNWLDhDQUE4QztFQUM5QyxvQkFBb0I7QUFDdEI7O0FBRUEsZ0ZBQWdGO0FBQ2hGOzsrQkFFK0IsdUNBQXVDO0FBQUU7QUFFeEU7QUFDRSxXQUFXLDBCQUEwQixFQUFFLHVCQUF1QjtBQUFFO0FBQ2hFLGFBQWEsMEJBQTBCLEVBQUUsdUJBQXVCO0FBQUU7QUFDbEUsa0JBQWtCLDBCQUEwQixFQUFFLCtCQUErQjtBQUFFO0FBQ2pGOzs7Ozs7QUM1SkE7RUFDRSxjQUFjO0VBQ2QsaUJBQWlCO0VBQ2pCLGFBQWE7RUFDYixjQUFjO0VBQ2QsY0FBYztFQUNkLCtCQUErQjs7RUFFL0IsbUJBQW1CO0VBQ25COzt1REFFcUQ7RUFDckQsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEI7Ozs7MENBSXdDO0VBQ3hDLGdCQUFnQjtFQUNoQixzRkFBc0Y7QUFDeEY7QUFFQTtFQUNFLFVBQVU7RUFDVixpQkFBaUI7RUFDakIsUUFBUSxFQUFFLFFBQVE7RUFDbEIsV0FBVyxFQUFFLFlBQVk7RUFDekIsMkJBQTJCO0VBQzNCLDJCQUEyQjtFQUMzQixtQkFBbUI7RUFDbkIsdUNBQXVDO0VBQ3ZDLHNFQUFzRTtBQUN4RTs7QUFFQSxhQUFhO0FBQ2I7RUFDRSxXQUFXLEVBQUUsWUFBWTtFQUN6QixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLFVBQVU7RUFDVixrREFBa0Q7QUFDcEQ7O0FBRUEsV0FBVztBQUNYO0VBQ0UsZ0JBQWdCO0VBQ2hCLHFCQUFxQjtFQUNyQixlQUFlO0VBQ2Ysb0JBQW9CO0FBQ3RCOztBQUVBLHNCQUFzQjtBQUN0QjtFQUNFLFlBQVk7RUFDWiwrQkFBK0I7RUFDL0IsYUFBYTtFQUNiLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtBQUNyQjtBQUNBLHlCQUFRLGlCQUFpQixFQUFFO0FBQVc7QUFDdEMseUJBQVEsaUJBQWlCLEVBQUU7QUFBVztBQUV0QztFQUNFLFVBQVU7RUFDVixtRkFBbUY7RUFDbkYsbUJBQW1CO0FBQ3JCO0FBRUE7RUFDRSxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLHFCQUFxQjtFQUNyQixlQUFlO0FBQ2pCO0FBRUE7RUFDRSxlQUFlO0VBQ2YscUJBQXFCO0VBQ3JCLGlCQUFpQjtFQUNqQixnQkFBZ0I7QUFDbEI7QUFFQTtFQUNFLFlBQVk7RUFDWiw4QkFBOEI7RUFDOUIsU0FBUztFQUNULGtCQUFrQjtBQUNwQjs7QUFFQSxxQkFBcUI7QUFDckI7RUFDRSxZQUFZLEVBQUUsYUFBYTtFQUMzQixtQkFBbUI7RUFDbkIsK0JBQStCO0VBQy9CO3NGQUNvRjtFQUNwRixpRUFBaUU7RUFDakUsa0JBQWtCO0VBQ2xCLGVBQWU7QUFDakI7QUFDQTtFQUNFLFVBQVU7RUFDVixpQkFBaUIsRUFBRSxVQUFVO0VBQzdCOzs7OzsyREFLeUQ7RUFDekQsc0JBQXNCO0VBQ3RCLFVBQVU7QUFDWjtBQUNBLDZCQUFZLFVBQVUsRUFBRTtBQUFnQjtBQUV4QztFQUNFLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsaUJBQWlCO0FBQ25CO0FBQ0EsMEJBQVMsaUJBQWlCLEVBQUUsZUFBZSxFQUFFO0FBQXFCO0FBQ2xFO0VBQ0Usa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQix3Q0FBd0M7RUFDeEMsa0JBQWtCO0VBQ2xCLG9CQUFvQjtBQUN0Qjs7QUFFQSxrQkFBa0I7QUFDbEI7RUFDRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVc7RUFDckQsWUFBWSxFQUFFLGtCQUFrQixFQUFFLDZCQUE2QjtFQUMvRCxpQkFBaUIsRUFBRSxlQUFlO0VBQ2xDLG9CQUFvQjtBQUN0QjtBQUNBLHVCQUFNLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsV0FBVztBQUFFO0FBQzlEO0VBQ0UsVUFBVSxFQUFFLFdBQVcsRUFBRSxpQkFBaUI7RUFDMUMsK0RBQStEO0VBQy9ELCtEQUErRDtBQUNqRTs7QUFFQSxpQkFBaUI7QUFDakI7RUFDRSxpQkFBaUIsRUFBRSxVQUFVO0VBQzdCOztxRkFFbUY7RUFDbkYsbUJBQW1CO0VBQ25CLGlCQUFpQjtBQUNuQjs7QUFFQSxjQUFjO0FBQ2QscUNBQW9CLCtCQUErQixFQUFFO0FBQVc7Ozs7OztBQ3pNaEU7RUFDRSx3QkFBd0I7QUFDMUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL0FkbWluUGFuZWwvTmF2YmFyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL0FkbWluaXN0cmF0aW9uL0Rhc2hib2FyZC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9CYWNrb2ZmaWNlL0Rhc2hib2FyZC52dWUiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Zsb2F0aW5nLXZ1ZS9kaXN0L3N0eWxlLmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL1Byb2ZpbC9BY3Rpdml0eU1hcC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9CYWNrb2ZmaWNlL1VzZXJzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL0dTQVAvU2Nyb2xsVjMudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvSG9tZS9Db25maXJtV2l0aG91dERlbW8udnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvVXRpbHMvTGFuZ3VhZ2VTd2l0Y2hlci52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9Ib21lL05hdmJhci52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9OYXZiYXIudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvT3BlbmluZy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9Qcm9kdWN0L0xpZ2h0bmluZ0JhY2tncm91bmQudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvUHJvZmlsL0JhZGdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL1ZTVExpbmVzLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJwLTggZmxleCBmbGV4LWNvbCBoLWZ1bGwganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGltZyBzcmM9XCIvcmVzL2ltYWdlcy9sb2dvX21vdXRoLnN2Z1wiIGFsdD1cIlwiIGNsYXNzPVwic2l6ZS0xMFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodGVyXCI+QmFja29mZmljZSBMZVZvaXg8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LTEwXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiL2JhY2tvZmZpY2VcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXNtIHB5LTEgdHJhbnNpdGlvbi1hbGwnLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZScpICYmICFoYXNTdWJQYXRoID8gJ3RleHQtcHJpbWFyeSBmb250LXNlbWlib2xkJyA6ICcnXG4gICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaXNBY3RpdmUoJy9iYWNrb2ZmaWNlJykgJiYgIWhhc1N1YlBhdGhcIiBjbGFzcz1cInNpemUtMiBiZy1wcmltYXJ5IG1yLTIgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgPEhvdXNlIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBUYWJsZWF1IGRlIGJvcmRcbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC04XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTkwMCBvcGFjaXR5LTcwIHRleHQteHMgdHJhY2tpbmctdGlnaHRlciBtYi0zXCI+R2VzdGlvbjwvc3Bhbj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZS91dGlsaXNhdGV1cnNcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBtYi0yIHB5LTEgaG92ZXI6cGwtMSB0cmFuc2l0aW9uLWFsbCB0ZXh0LXNtJyxcbiAgICAgICAgICBpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvdXRpbGlzYXRldXJzJykgPyAndGV4dC1wcmltYXJ5IGZvbnQtc2VtaWJvbGQnIDogJydcbiAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvdXRpbGlzYXRldXJzJylcIiBjbGFzcz1cInNpemUtMiBiZy1wcmltYXJ5IG1yLTIgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgPFVzZXJzIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBVdGlsaXNhdGV1cnNcbiAgICAgICAgPC9hPlxuICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cIi9iYWNrb2ZmaWNlL2xpY2VuY2VzXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgbWItMiBweS0xIGhvdmVyOnBsLTEgdHJhbnNpdGlvbi1hbGwgdGV4dC1zbScsXG4gICAgICAgICAgaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL2xpY2VuY2VzJykgPyAndGV4dC1wcmltYXJ5IGZvbnQtc2VtaWJvbGQnIDogJydcbiAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvbGljZW5jZXMnKVwiIGNsYXNzPVwic2l6ZS0yIGJnLXByaW1hcnkgbXItMiByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICA8S2V5Um91bmQgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IExpY2VuY2VzXG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZS92ZXJzaW9uc1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIG1iLTIgcHktMSBob3ZlcjpwbC0xIHRyYW5zaXRpb24tYWxsIHRleHQtc20nLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZS92ZXJzaW9ucycpID8gJ3RleHQtcHJpbWFyeSBmb250LXNlbWlib2xkJyA6ICcnXG4gICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL3ZlcnNpb25zJylcIiBjbGFzcz1cInNpemUtMiBiZy1wcmltYXJ5IG1yLTIgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgPFRhZ3Mgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IFZlcnNpb25zXG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZS9jYW1wYWlnbnNcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBweS0xIGhvdmVyOnBsLTEgdHJhbnNpdGlvbi1hbGwgdGV4dC1zbScsXG4gICAgICAgICAgaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL2NhbXBhaWducycpID8gJ3RleHQtcHJpbWFyeSBmb250LXNlbWlib2xkJyA6ICcnXG4gICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL2NhbXBhaWducycpXCIgY2xhc3M9XCJzaXplLTIgYmctcHJpbWFyeSBtci0yIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgIDxNZWdhcGhvbmUgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IENhbXBhZ25lc1xuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LThcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIG9wYWNpdHktNzAgdGV4dC14cyB0cmFja2luZy10aWdodGVyIG1iLTNcIj5TdGF0aXN0aXF1ZXM8L3NwYW4+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiL2JhY2tvZmZpY2UvcHVyY2hhc2Utc3RhdHNcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBtYi0yIHB5LTEgaG92ZXI6cGwtMSB0cmFuc2l0aW9uLWFsbCB0ZXh0LXNtJyxcbiAgICAgICAgICBpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvcHVyY2hhc2Utc3RhdHMnKSA/ICd0ZXh0LXByaW1hcnkgZm9udC1zZW1pYm9sZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWN0aXZlKCcvYmFja29mZmljZS9wdXJjaGFzZS1zdGF0cycpXCIgY2xhc3M9XCJzaXplLTIgYmctcHJpbWFyeSBtci0yIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgIDxDaGFydExpbmUgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IFN0YXRpc3RpcXVlcyBkJ2FjaGF0c1xuICAgICAgICA8L2E+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiL2JhY2tvZmZpY2UvZGVtby1jb252ZXJzaW9uXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgcHktMSBob3ZlcjpwbC0xIHRyYW5zaXRpb24tYWxsIHRleHQtc20nLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZS9kZW1vLWNvbnZlcnNpb24nKSA/ICd0ZXh0LXByaW1hcnkgZm9udC1zZW1pYm9sZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWN0aXZlKCcvYmFja29mZmljZS9kZW1vLWNvbnZlcnNpb24nKVwiIGNsYXNzPVwic2l6ZS0yIGJnLXByaW1hcnkgbXItMiByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICA8Q2hhcnRMaW5lIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBDb252ZXJzaW9uIGTDqW1vc1xuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LThcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIG9wYWNpdHktNzAgdGV4dC14cyB0cmFja2luZy10aWdodGVyIG1iLTNcIj5QYXJhbcOpdHJhZ2VzPC9zcGFuPlxuICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cIi9iYWNrb2ZmaWNlL3BhcmFtZXRyZXNcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBtYi0yIHB5LTEgaG92ZXI6cGwtMSB0cmFuc2l0aW9uLWFsbCB0ZXh0LXNtJyxcbiAgICAgICAgICBpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvcGFyYW1ldHJlcycpID8gJ3RleHQtcHJpbWFyeSBmb250LXNlbWlib2xkJyA6ICcnXG4gICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL3BhcmFtZXRyZXMnKVwiIGNsYXNzPVwic2l6ZS0yIGJnLXByaW1hcnkgbXItMiByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICA8Q29nIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBQYXJhbcOpdHJlcyBnw6luw6lyYXV4XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZS9mYXFzXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgbWItMiBweS0xIGhvdmVyOnBsLTEgdHJhbnNpdGlvbi1hbGwgdGV4dC1zbScsXG4gICAgICAgICAgaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL2ZhcXMnKSA/ICd0ZXh0LXByaW1hcnkgZm9udC1zZW1pYm9sZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWN0aXZlKCcvYmFja29mZmljZS9mYXFzJylcIiBjbGFzcz1cInNpemUtMiBiZy1wcmltYXJ5IG1yLTIgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgPEJhZGdlUXVlc3Rpb25NYXJrIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBGQVFzXG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZS9sb2dzXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgcHktMSBob3ZlcjpwbC0xIHRyYW5zaXRpb24tYWxsIHRleHQtc20nLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZS9sb2dzJykgPyAndGV4dC1wcmltYXJ5IGZvbnQtc2VtaWJvbGQnIDogJydcbiAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvbG9ncycpXCIgY2xhc3M9XCJzaXplLTIgYmctcHJpbWFyeSBtci0yIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgIDxUZXJtaW5hbCBzaXplPVwiMTZcIiBzdHJva2Utd2lkdGg9XCIyXCIgY2xhc3M9XCJtci0yXCIgLz4gTG9nc1xuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgYm9yZGVyLTEgYm9yZGVyLWdyYXktMTAwIHAtNCByb3VuZGVkLW1kIHNoYWRvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbWItM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZWRpdW0gLW1iLTFcIj5CaWVudmVudWUgPHNwYW4gY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj57eyBwcmVub20gfX08L3NwYW4+LDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIGZvbnQtbWVkaXVtIHRyYWNraW5nLXRpZ2h0XCI+e3sgZW1haWwgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cImJnLWdyYXktMTAwIGJsb2NrIHAtMyByb3VuZGVkLW1kIGZvbnQtc2VtaWJvbGQgdGV4dC1zbSB0ZXh0LWNlbnRlclwiPlxuICAgICAgICBEZWNvbm5leGlvblxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IHNldHVwPlxuICBpbXBvcnQgeyBIb3VzZSwgU2VhcmNoLCBVc2VycywgVGFncywgS2V5Um91bmQsIENvZywgQmFkZ2VRdWVzdGlvbk1hcmssIFRlcm1pbmFsLCBNZWdhcGhvbmUsIENoYXJ0TGluZSB9IGZyb20gJ2x1Y2lkZS12dWUtbmV4dCc7XG4gIGltcG9ydCB7cmVmLCBjb21wdXRlZCwgb25Nb3VudGVkfSBmcm9tICd2dWUnO1xuICBpbXBvcnQgQ29tbWFuZCBmcm9tIFwiLi4vQWRtaW5pc3RyYXRpb24vQ29tbWFuZC52dWVcIjtcblxuICBjb25zdCB7IGVtYWlsLCBwcmVub20gfSA9IGRlZmluZVByb3BzKFtcImVtYWlsXCIsIFwicHJlbm9tXCJdKTtcbiAgY29uc3QgY3VycmVudFBhdGggPSByZWYod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTtcblxuICBjb25zdCBoYXNTdWJQYXRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBjdXJyZW50UGF0aC52YWx1ZSAhPT0gJy9iYWNrb2ZmaWNlJyAmJiBjdXJyZW50UGF0aC52YWx1ZS5zdGFydHNXaXRoKCcvYmFja29mZmljZScpO1xuICB9KTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IChwYXRoKSA9PiB7XG4gICAgcmV0dXJuIGN1cnJlbnRQYXRoLnZhbHVlLnN0YXJ0c1dpdGgocGF0aCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5saW5rLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgbXgtWzV2d10gbXktWzMwcHhdXCI+XG4gICAgPCEtLSBIZWFkZXIgQmFubmVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtaW5zZXQtMiByb3VuZGVkLVtjYWxjKHZhcigtLXJhZGl1cy14bCkrY2FsYyh2YXIoLS1zcGFjaW5nKSoyKSldIHNoYWRvdy14cyByaW5nLTEgcmluZy1ibGFjay81XCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJnLWN1c3RvbS1wYXR0ZXJuIHJvdW5kZWQteGwgc2hhZG93LTJ4bCByaW5nLTEgcmluZy13aGl0ZS8xMCBwLVs0MHB4XVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInctWzE2MHB4XVwiPlxuICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL2xvZ28ucG5nXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtd2hpdGVcIj5cbiAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkXCI+VGFibGVhdSBkZSBib3JkIGQnYWRtaW5pc3RyYXRpb248L2gxPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQtZ3JheS0zMDAgdGV4dC1yaWdodFwiPkJpZW52ZW51ZSBkYW5zIGwnaW50ZXJmYWNlIGQnYWRtaW5pc3RyYXRpb248L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJteC1bNXZ3XSBteS1bMzBweF1cIj5cbiAgICA8IS0tIFF1aWNrIEFjdGlvbnMgU2VjdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtOFwiPlxuICAgICAgPERhc2hib2FyZFF1aWNrQWN0aW9ucyAvPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBNYWluIENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm10LTggZ3JpZCBncmlkLWNvbHMtMSBnYXAtNiBsZzpncmlkLWNvbHMtM1wiPlxuICAgICAgPCEtLSBMZWZ0IENvbHVtbjogU3RhdGlzdGljcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZzpjb2wtc3Bhbi0xXCI+XG4gICAgICAgIDxEYXNoYm9hcmRTdGF0cyAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gUmlnaHQgQ29sdW1uOiBBY3Rpdml0eSBMb2dzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImxnOmNvbC1zcGFuLTJcIj5cbiAgICAgICAgPERhc2hib2FyZEFjdGl2aXR5TG9ncyAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEFkZGl0aW9uYWwgQ2FyZHMgU2VjdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtOCBncmlkIGdyaWQtY29scy0xIGdhcC02IHNtOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy00XCI+XG4gICAgICA8IS0tIFN1cHBvcnQgQ2FyZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBiZy13aGl0ZSBzaGFkb3cgcmluZy0xIHJpbmctZ3JheS0yMDAgaG92ZXI6cmluZy1jeWFuLTMwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTIgdy0xMiByb3VuZGVkLWxnIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tY3lhbi01MDAgdG8tYmx1ZS02MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC02IHctNiB0ZXh0LXdoaXRlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNOCAxMGguMDFNMTIgMTBoLjAxTTE2IDEwaC4wMU05IDE2SDVhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJoLTVsLTUgNXYtNXpcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTUgdy0wIGZsZXgtMVwiPlxuICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+U3VwcG9ydDwvZHQ+XG4gICAgICAgICAgICAgICAgPGRkPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPkdlc3Rpb24gZGVzIHRpY2tldHM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2RkPlxuICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1jeWFuLTUwIHRvLWJsdWUtNTAgcHgtNSBweS0zIGJvcmRlci10IGJvcmRlci1jeWFuLTEwMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtXCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiL2JhY2tvZmZpY2Uvc3VwcG9ydFwiIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1jeWFuLTcwMCBob3Zlcjp0ZXh0LWN5YW4tOTAwIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBncm91cFwiPlxuICAgICAgICAgICAgICBBY2PDqWRlclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibWwtMiBoLTQgdy00IGdyb3VwLWhvdmVyOnRyYW5zbGF0ZS14LTEgdHJhbnNpdGlvbi10cmFuc2Zvcm1cIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk05IDVsNyA3LTcgN1wiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExpY2VuY2VzIENhcmQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYmctd2hpdGUgc2hhZG93IHJpbmctMSByaW5nLWdyYXktMjAwIGhvdmVyOnJpbmctaW5kaWdvLTMwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTIgdy0xMiByb3VuZGVkLWxnIGJnLWdyYWRpZW50LXRvLWJyIGZyb20taW5kaWdvLTUwMCB0by1wdXJwbGUtNjAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNiB3LTYgdGV4dC13aGl0ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTE1IDV2Mm0wIDR2Mm0wIDR2Mk01IDVhMiAyIDAgMDAtMiAydjNhMiAyIDAgMTEwIDR2M2EyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMnYtM2EyIDIgMCAxMTAtNFY3YTIgMiAwIDAwLTItMkg1elwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNSB3LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5MaWNlbmNlczwvZHQ+XG4gICAgICAgICAgICAgICAgPGRkPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPkdlc3Rpb24gZGVzIGxpY2VuY2VzPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kZD5cbiAgICAgICAgICAgICAgPC9kbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJnLWdyYWRpZW50LXRvLWJyIGZyb20taW5kaWdvLTUwIHRvLXB1cnBsZS01MCBweC01IHB5LTMgYm9yZGVyLXQgYm9yZGVyLWluZGlnby0xMDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cIi9hZG1pbmlzdHJhdGlvbi9saWNlbmNlc1wiIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1pbmRpZ28tNzAwIGhvdmVyOnRleHQtaW5kaWdvLTkwMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ3JvdXBcIj5cbiAgICAgICAgICAgICAgQWNjw6lkZXJcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm1sLTIgaC00IHctNCBncm91cC1ob3Zlcjp0cmFuc2xhdGUteC0xIHRyYW5zaXRpb24tdHJhbnNmb3JtXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNOSA1bDcgNy03IDdcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQbHVnaW4gVmVyc2lvbnMgQ2FyZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBiZy13aGl0ZSBzaGFkb3cgcmluZy0xIHJpbmctZ3JheS0yMDAgaG92ZXI6cmluZy1ncmVlbi0zMDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEyIHctMTIgcm91bmRlZC1sZyBiZy1ncmFkaWVudC10by1iciBmcm9tLWdyZWVuLTUwMCB0by1lbWVyYWxkLTYwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTYgdy02IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk05IDVIN2EyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJNOSA1YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJNOSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTUgdy0wIGZsZXgtMVwiPlxuICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+VmVyc2lvbnMgZHUgUGx1Z2luPC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+R2VzdGlvbiBkZXMgdmVyc2lvbnM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2RkPlxuICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1ncmVlbi01MCB0by1lbWVyYWxkLTUwIHB4LTUgcHktMyBib3JkZXItdCBib3JkZXItZ3JlZW4tMTAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc21cIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIvYWRtaW5pc3RyYXRpb24vcGx1Z2luLXZlcnNpb25zXCIgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWdyZWVuLTcwMCBob3Zlcjp0ZXh0LWdyZWVuLTkwMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ3JvdXBcIj5cbiAgICAgICAgICAgICAgQWNjw6lkZXJcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm1sLTIgaC00IHctNCBncm91cC1ob3Zlcjp0cmFuc2xhdGUteC0xIHRyYW5zaXRpb24tdHJhbnNmb3JtXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNOSA1bDcgNy03IDdcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBBY3Rpdml0eSBMb2dzIENhcmQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYmctd2hpdGUgc2hhZG93IHJpbmctMSByaW5nLWdyYXktMjAwIGhvdmVyOnJpbmctcHVycGxlLTMwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTIgdy0xMiByb3VuZGVkLWxnIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tcHVycGxlLTUwMCB0by1waW5rLTYwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTYgdy02IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk0xOSAxMUg1bTE0IDBhMiAyIDAgMDEyIDJ2NmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ2LTZhMiAyIDAgMDEyLTJtMTQgMFY5YTIgMiAwIDAwLTItMk01IDExVjlhMiAyIDAgMDEyLTJtMCAwVjVhMiAyIDAgMDEyLTJoNmEyIDIgMCAwMTIgMnYyTTcgN2gxMFwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNSB3LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5Mb2dzIGQnYWN0aXZpdMOpPC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+SGlzdG9yaXF1ZSBkZXMgYWN0aW9uczwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmFkaWVudC10by1iciBmcm9tLXB1cnBsZS01MCB0by1waW5rLTUwIHB4LTUgcHktMyBib3JkZXItdCBib3JkZXItcHVycGxlLTEwMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtXCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiL2FkbWluaXN0cmF0aW9uL2xvZ3NcIiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtcHVycGxlLTcwMCBob3Zlcjp0ZXh0LXB1cnBsZS05MDAgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdyb3VwXCI+XG4gICAgICAgICAgICAgIEFjY8OpZGVyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtbC0yIGgtNCB3LTQgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTkgNWw3IDctNyA3XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbmltcG9ydCBEYXNoYm9hcmRRdWlja0FjdGlvbnMgZnJvbSAnLi9EYXNoYm9hcmRRdWlja0FjdGlvbnMudnVlJztcbmltcG9ydCBEYXNoYm9hcmRTdGF0cyBmcm9tICcuL0Rhc2hib2FyZFN0YXRzLnZ1ZSc7XG5pbXBvcnQgRGFzaGJvYXJkQWN0aXZpdHlMb2dzIGZyb20gJy4vRGFzaGJvYXJkQWN0aXZpdHlMb2dzLnZ1ZSc7XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLmJnLWN1c3RvbS1wYXR0ZXJuIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkEwRTBFO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkgMS41cHgsIHRyYW5zcGFyZW50IDApO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMjBweCAyMHB4O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IC01cHggLTVweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LThcIj5cbiAgICA8ZGl2IGNsYXNzPVwic206ZmxleCBzbTppdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzbTpmbGV4LWF1dG9cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbGVhZGluZy02IHRleHQtZ3JheS05MDBcIj5UYWJsZWF1IGRlIGJvcmQ8L2gxPlxuICAgICAgICA8cCBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LWdyYXktNzAwXCI+VnVlIGQnZW5zZW1ibGUgZGUgbCdhY3Rpdml0w6kgZXQgYWNjw6hzIHJhcGlkZSBhdXggcHJpbmNpcGFsZXMgc2VjdGlvbnMuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXQtNCBzbTptdC0wIHNtOm1sLWF1dG8gc206ZmxleC1ub25lXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBiZy13aGl0ZSBweC0zIHB5LTIgdGV4dC1zbSB0ZXh0LWdyYXktNjAwIGhvdmVyOmJnLWdyYXktNTAgaG92ZXI6dGV4dC1ncmF5LTgwMCBzaGFkb3ctc21cIlxuICAgICAgICAgIEBjbGljaz1cInNob3dTZW5zaXRpdmUgPSAhc2hvd1NlbnNpdGl2ZVwiXG4gICAgICAgICAgOmFyaWEtcHJlc3NlZD1cInNob3dTZW5zaXRpdmUgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgICA6dGl0bGU9XCJzaG93U2Vuc2l0aXZlID8gJ01hc3F1ZXIgbGVzIGluZm9ybWF0aW9ucyBzZW5zaWJsZXMnIDogJ0FmZmljaGVyIGxlcyBpbmZvcm1hdGlvbnMgc2Vuc2libGVzJ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5CYXNjdWxlciBsYSB2aXNpYmlsaXTDqSBkZXMgaW5mb3JtYXRpb25zIHNlbnNpYmxlczwvc3Bhbj5cbiAgICAgICAgICA8c3ZnIHYtaWY9XCIhc2hvd1NlbnNpdGl2ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImgtNSB3LTUgdGV4dC1ncmF5LTUwMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxuICAgICAgICAgICAgPCEtLSBFeWUgd2l0aCBzbGFzaCAoZmVybcOpZSBwYXIgZMOpZmF1dCkgLS0+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTMuOTggOC4yMjNBMTAuNDc3IDEwLjQ3NyAwIDAgMCAxLjkzNCAxMkMzLjIyNiAxNS4zMzggNi45MSAxOC4yNSAxMiAxOC4yNWMxLjU2NSAwIDIuOTktLjI3NyA0LjI1Ni0uNzdNNi4yMjggNi4yMjhBMTAuNDUxIDEwLjQ1MSAwIDAgMSAxMiA1Ljc1YzUuMDkgMCA4Ljc3NCAyLjkxMiAxMC4wNjYgNi4yNWExMC41MiAxMC41MiAwIDAgMS0yLjE5MyAzLjIzTTMgM2wxOCAxOFwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS44OCA5Ljg4YTMgMyAwIDAgMCA0LjI0IDQuMjRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHN2ZyB2LWVsc2UgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiaC01IHctNSB0ZXh0LWdyYXktNzAwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XG4gICAgICAgICAgICA8IS0tIEV5ZSBvcGVuIC0tPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xLjkzNCAxMkMzLjIyNiA4LjY2MiA2LjkxIDUuNzUgMTIgNS43NXM4Ljc3NCAyLjkxMiAxMC4wNjYgNi4yNUMyMC43NzQgMTUuMzM4IDE3LjA5IDE4LjI1IDEyIDE4LjI1UzMuMjI2IDE1LjMzOCAxLjkzNCAxMlpcIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjNcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRkZW4gc206aW5saW5lXCI+e3sgc2hvd1NlbnNpdGl2ZSA/ICdNYXNxdWVyJyA6ICdBZmZpY2hlcicgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcHktMTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJteC1hdXRvIG1heC13LTd4bCBweC02IGxnOnB4LThcIj5cbiAgICAgICAgPGRsIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAteC04IGdhcC15LTE2IHRleHQtY2VudGVyIGxnOmdyaWQtY29scy0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gZmxleCBtYXgtdy14cyBmbGV4LWNvbCBnYXAteS00XCI+XG4gICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0ZXh0LWJhc2UvNyB0ZXh0LWdyYXktNjAwXCI+Q0EgdG90YWw8L2R0PlxuICAgICAgICAgICAgPGRkIGNsYXNzPVwib3JkZXItZmlyc3QgdGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIHNtOnRleHQtNXhsXCI+e3sgbG9hZGluZyA/ICcuLi4nIDogbWFza2VkKHN0YXRzLm92ZXJ2aWV3LnRvdGFsUmV2ZW51ZUNlbnRzIHx8IDAsIGZvcm1hdEV1cm8sIHRydWUpIH19PC9kZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtYXV0byBmbGV4IG1heC13LXhzIGZsZXgtY29sIGdhcC15LTRcIj5cbiAgICAgICAgICAgIDxkdCBjbGFzcz1cInRleHQtYmFzZS83IHRleHQtZ3JheS02MDBcIj5DQSA3IGpvdXJzPC9kdD5cbiAgICAgICAgICAgIDxkZCBjbGFzcz1cIm9yZGVyLWZpcnN0IHRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMCBzbTp0ZXh0LTV4bFwiPnt7IGxvYWRpbmcgPyAnLi4uJyA6IG1hc2tlZChzdGF0cy5vdmVydmlldy5yZXZlbnVlN0RheXNDZW50cyB8fCAwLCBmb3JtYXRFdXJvLCB0cnVlKSB9fTwvZGQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gZmxleCBtYXgtdy14cyBmbGV4LWNvbCBnYXAteS00XCI+XG4gICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0ZXh0LWJhc2UvNyB0ZXh0LWdyYXktNjAwXCI+Q0EgYXVqb3VyZCdodWk8L2R0PlxuICAgICAgICAgICAgPGRkIGNsYXNzPVwib3JkZXItZmlyc3QgdGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIHNtOnRleHQtNXhsXCI+e3sgbG9hZGluZyA/ICcuLi4nIDogbWFza2VkKHN0YXRzLm92ZXJ2aWV3LnJldmVudWVUb2RheUNlbnRzIHx8IDAsIGZvcm1hdEV1cm8sIHRydWUpIH19PC9kZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTRcIj5cbiAgICAgIDwhLS0gU3VwcG9ydCBDYXJkIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWwtbGcgYmctd2hpdGUgcmluZy1ncmF5LTIwMCBob3ZlcjpyaW5nLWN5YW4tMzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC01XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMiB3LTEyIHJvdW5kZWQtbGcgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1jeWFuLTUwMCB0by1ibHVlLTYwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTYgdy02IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk04IDEwaC4wMU0xMiAxMGguMDFNMTYgMTBoLjAxTTkgMTZINWEyIDIgMCAwMS0yLTJWNmEyIDIgMCAwMTItMmgxNGEyIDIgMCAwMTIgMnY4YTIgMiAwIDAxLTIgMmgtNWwtNSA1di01elwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNSB3LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5TdXBwb3J0PC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+R2VzdGlvbiBkZXMgdGlja2V0czwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmFkaWVudC10by1iciBmcm9tLWN5YW4tNTAgdG8tYmx1ZS01MCBweC01IHB5LTMgYm9yZGVyLXQgYm9yZGVyLWN5YW4tMTAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc21cIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIvYmFja29mZmljZS9zdXBwb3J0XCIgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWN5YW4tNzAwIGhvdmVyOnRleHQtY3lhbi05MDAgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdyb3VwXCI+XG4gICAgICAgICAgICAgIEFjY8OpZGVyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtbC0yIGgtNCB3LTQgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTkgNWw3IDctNyA3XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gTGljZW5jZXMgQ2FyZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gYmctd2hpdGUgcmluZy1ncmF5LTIwMCBob3ZlcjpyaW5nLWluZGlnby0zMDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEyIHctMTIgcm91bmRlZC1sZyBiZy1ncmFkaWVudC10by1iciBmcm9tLWluZGlnby01MDAgdG8tcHVycGxlLTYwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTYgdy02IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk0xNSA1djJtMCA0djJtMCA0djJNNSA1YTIgMiAwIDAwLTIgMnYzYTIgMiAwIDExMCA0djNhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJ2LTNhMiAyIDAgMTEwLTRWN2EyIDIgMCAwMC0yLTJINXpcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTUgdy0wIGZsZXgtMVwiPlxuICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+TGljZW5jZXM8L2R0PlxuICAgICAgICAgICAgICAgIDxkZD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj5HZXN0aW9uIGRlcyBsaWNlbmNlczwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmFkaWVudC10by1iciBmcm9tLWluZGlnby01MCB0by1wdXJwbGUtNTAgcHgtNSBweS0zIGJvcmRlci10IGJvcmRlci1pbmRpZ28tMTAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc21cIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIvYmFja29mZmljZS9saWNlbmNlc1wiIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1pbmRpZ28tNzAwIGhvdmVyOnRleHQtaW5kaWdvLTkwMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ3JvdXBcIj5cbiAgICAgICAgICAgICAgQWNjw6lkZXJcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm1sLTIgaC00IHctNCBncm91cC1ob3Zlcjp0cmFuc2xhdGUteC0xIHRyYW5zaXRpb24tdHJhbnNmb3JtXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNOSA1bDcgNy03IDdcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQbHVnaW4gVmVyc2lvbnMgQ2FyZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gYmctd2hpdGUgcmluZy1ncmF5LTIwMCBob3ZlcjpyaW5nLWdyZWVuLTMwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTIgdy0xMiByb3VuZGVkLWxnIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tZ3JlZW4tNTAwIHRvLWVtZXJhbGQtNjAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNiB3LTYgdGV4dC13aGl0ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTkgNUg3YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMk05IDVhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMk05IDVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMlwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNSB3LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5WZXJzaW9ucyBkdSBQbHVnaW48L2R0PlxuICAgICAgICAgICAgICAgIDxkZD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj5HZXN0aW9uIGRlcyB2ZXJzaW9uczwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmFkaWVudC10by1iciBmcm9tLWdyZWVuLTUwIHRvLWVtZXJhbGQtNTAgcHgtNSBweS0zIGJvcmRlci10IGJvcmRlci1ncmVlbi0xMDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cIi9iYWNrb2ZmaWNlL3BsdWdpbi12ZXJzaW9uc1wiIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1ncmVlbi03MDAgaG92ZXI6dGV4dC1ncmVlbi05MDAgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdyb3VwXCI+XG4gICAgICAgICAgICAgIEFjY8OpZGVyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtbC0yIGgtNCB3LTQgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTkgNWw3IDctNyA3XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQWN0aXZpdHkgTG9ncyBDYXJkIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlbiByb3VuZGVkLXItbGcgYmctd2hpdGUgcmluZy1ncmF5LTIwMCBob3ZlcjpyaW5nLXB1cnBsZS0zMDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEyIHctMTIgcm91bmRlZC1sZyBiZy1ncmFkaWVudC10by1iciBmcm9tLXB1cnBsZS01MDAgdG8tcGluay02MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC02IHctNiB0ZXh0LXdoaXRlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNMTkgMTFINW0xNCAwYTIgMiAwIDAxMiAydjZhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0ydi02YTIgMiAwIDAxMi0ybTE0IDBWOWEyIDIgMCAwMC0yLTJNNSAxMVY5YTIgMiAwIDAxMi0ybTAgMFY1YTIgMiAwIDAxMi0yaDZhMiAyIDAgMDEyIDJ2Mk03IDdoMTBcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTUgdy0wIGZsZXgtMVwiPlxuICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+TG9ncyBkJ2FjdGl2aXTDqTwvZHQ+XG4gICAgICAgICAgICAgICAgPGRkPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPkhpc3RvcmlxdWUgZGVzIGFjdGlvbnM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2RkPlxuICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1wdXJwbGUtNTAgdG8tcGluay01MCBweC01IHB5LTMgYm9yZGVyLXQgYm9yZGVyLXB1cnBsZS0xMDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cIi9iYWNrb2ZmaWNlL2xvZ3NcIiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtcHVycGxlLTcwMCBob3Zlcjp0ZXh0LXB1cnBsZS05MDAgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdyb3VwXCI+XG4gICAgICAgICAgICAgIEFjY8OpZGVyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtbC0yIGgtNCB3LTQgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTkgNWw3IDctNyA3XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcHktNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgPGRsIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMC41IG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLTJ4bCB0ZXh0LWNlbnRlciBzbTpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgYmctZ3JheS00MDAvNSBwLThcIj5cbiAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidGV4dC1zbS82IGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTYwMFwiPlV0aWxpc2F0ZXVyczwvZHQ+XG4gICAgICAgICAgICAgIDxkZCBjbGFzcz1cIm9yZGVyLWZpcnN0IHRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMFwiPnt7IGxvYWRpbmcgPyAnLi4uJyA6IG1hc2tlZCgoc3RhdHMub3ZlcnZpZXcudG90YWxVc2VycyA/PyAwKSkgfX08L2RkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBiZy1ncmF5LTQwMC81IHAtOFwiPlxuICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0ZXh0LXNtLzYgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNjAwXCI+TGljZW5jZXM8L2R0PlxuICAgICAgICAgICAgICA8ZGQgY2xhc3M9XCJvcmRlci1maXJzdCB0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0IHRleHQtZ3JheS05MDBcIj57eyBsb2FkaW5nID8gJy4uLicgOiBtYXNrZWQoKHN0YXRzLm92ZXJ2aWV3LnRvdGFsTGljZW5jZXMgPz8gMCkpIH19PC9kZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgYmctZ3JheS00MDAvNSBwLThcIj5cbiAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidGV4dC1zbS82IGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTYwMFwiPkTDqW1vcyBhY3RpdmVzPC9kdD5cbiAgICAgICAgICAgICAgPGRkIGNsYXNzPVwib3JkZXItZmlyc3QgdGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwXCI+e3sgbG9hZGluZyA/ICcuLi4nIDogbWFza2VkKChzdGF0cy5vdmVydmlldy5hY3RpdmVEZW1vcyA/PyAwKSkgfX08L2RkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBiZy1ncmF5LTQwMC81IHAtOFwiPlxuICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0ZXh0LXNtLzYgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNjAwXCI+RMOpbW9zIGF1am91cmQnaHVpPC9kdD5cbiAgICAgICAgICAgICAgPGRkIGNsYXNzPVwib3JkZXItZmlyc3QgdGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwXCI+e3sgbG9hZGluZyA/ICcuLi4nIDogbWFza2VkKChzdGF0cy5vdmVydmlldy5kZW1vc1RvZGF5ID8/IDApKSB9fTwvZGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2RsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA3LWRheSBjaGFydCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtNiByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNiBzaGFkb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbGVhZGluZy02IHRleHQtZ3JheS05MDBcIj5Ew6ltb3MgYWN0aXbDqWVzIHBhciBqb3VyICg3IGpvdXJzKTwvaDM+XG4gICAgICAgIDxkaXYgdi1pZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5Ub3RhbDoge3sgbWFza2VkKHRvdGFsU2VyaWVzQ291bnQpIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC02XCIgdi1pZj1cIiFsb2FkaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy03IGdhcC0zIGl0ZW1zLWVuZFwiIHN0eWxlPVwiaGVpZ2h0OiAxNjBweDtcIj5cbiAgICAgICAgICA8ZGl2IHYtZm9yPVwiKHBvaW50LCBpZHgpIGluIHN0YXRzLnNlcmllc1wiIDprZXk9XCJpZHhcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHJvdW5kZWQtdCBiZy1wcmltYXJ5IHRyYW5zaXRpb24tYWxsXCIgOnN0eWxlPVwieyBoZWlnaHQ6IGJhckhlaWdodChwb2ludC5jb3VudCkgfVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgdGV4dC14cyB0ZXh0LWdyYXktNTAwXCI+e3sgZm9ybWF0RGF0ZShwb2ludC5kYXRlKSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgdGV4dC1ncmF5LTkwMCBmb250LW1lZGl1bVwiPnt7IG1hc2tlZChwb2ludC5jb3VudCkgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgdi1lbHNlIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHktMTAgdGV4dC1ncmF5LTUwMFwiPkNoYXJnZW1lbnQgZGVzIHN0YXRpc3RpcXVlcy4uLjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG5pbXBvcnQgeyBvbk1vdW50ZWQsIHJlYWN0aXZlLCByZWYsIGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuLy8gRXRhdCBsb2NhbCBwb3VyIG1hc3F1ZXIvYWZmaWNoZXIgbGVzIGluZm9ybWF0aW9ucyBzZW5zaWJsZXMgKG5vbiBwZXJzaXN0w6kpXG5jb25zdCBzaG93U2Vuc2l0aXZlID0gcmVmKGZhbHNlKTtcblxuY29uc3QgbG9hZGluZyA9IHJlZih0cnVlKTtcbmNvbnN0IHN0YXRzID0gcmVhY3RpdmUoe1xuICBvdmVydmlldzoge1xuICAgIHRvdGFsVXNlcnM6IDAsXG4gICAgdG90YWxMaWNlbmNlczogMCxcbiAgICBhY3RpdmVEZW1vczogMCxcbiAgICBkZW1vc1RvZGF5OiAwLFxuICAgIHRvdGFsUmV2ZW51ZUNlbnRzOiAwLFxuICAgIHJldmVudWVUb2RheUNlbnRzOiAwLFxuICAgIHJldmVudWU3RGF5c0NlbnRzOiAwLFxuICB9LFxuICBzZXJpZXM6IFtdLFxuICBtYXg6IDAsXG59KTtcblxuY29uc3QgZmV0Y2hTdGF0cyA9IGFzeW5jICgpID0+IHtcbiAgbG9hZGluZy52YWx1ZSA9IHRydWU7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goJy9iYWNrb2ZmaWNlL2FwaS9zdGF0cy9kYXNoYm9hcmQnLCB7XG4gICAgICBoZWFkZXJzOiB7ICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgIH0pO1xuICAgIGlmICghcmVzLm9rKSB0aHJvdyBuZXcgRXJyb3IoJ0VycmV1ciBBUEknKTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICBzdGF0cy5vdmVydmlldyA9IGRhdGEub3ZlcnZpZXcgfHwgc3RhdHMub3ZlcnZpZXc7XG4gICAgc3RhdHMuc2VyaWVzID0gZGF0YS5zZXJpZXMgfHwgW107XG4gICAgc3RhdHMubWF4ID0gZGF0YS5tYXggfHwgMDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0VycmV1ciBsb3JzIGR1IGNoYXJnZW1lbnQgZGVzIHN0YXRzJywgZSk7XG4gIH0gZmluYWxseSB7XG4gICAgbG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICB9XG59O1xuXG5jb25zdCB0b3RhbFNlcmllc0NvdW50ID0gY29tcHV0ZWQoKCkgPT4gc3RhdHMuc2VyaWVzLnJlZHVjZSgoYWNjLCBwKSA9PiBhY2MgKyAocC5jb3VudCB8fCAwKSwgMCkpO1xuXG5jb25zdCBiYXJIZWlnaHQgPSAoY291bnQpID0+IHtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgoMSwgc3RhdHMubWF4IHx8IDEpO1xuICBjb25zdCBwY3QgPSBNYXRoLnJvdW5kKChjb3VudCAvIG1heCkgKiAxMDApO1xuICAvLyBtaW4gaGVpZ2h0IHNvIGJhcnMgYXJlIHZpc2libGUgd2hlbiBjb3VudCA+IDBcbiAgY29uc3QgcHggPSBNYXRoLm1heCg0LCBNYXRoLnJvdW5kKChjb3VudCAvIG1heCkgKiAxMzApKTtcbiAgcmV0dXJuIHB4ICsgJ3B4Jztcbn07XG5cbmNvbnN0IGZvcm1hdERhdGUgPSAoaXNvRGF0ZSkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShpc29EYXRlICsgJ1QwMDowMDowMCcpO1xuICAgIHJldHVybiBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZnItRlInLCB7IGRheTogJzItZGlnaXQnLCBtb250aDogJzItZGlnaXQnIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGlzb0RhdGU7XG4gIH1cbn07XG5cbmNvbnN0IGZvcm1hdEV1cm8gPSAoY2VudHMpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBldXJvcyA9IChOdW1iZXIoY2VudHMgfHwgMCkgLyAxMDApO1xuICAgIHJldHVybiBldXJvcy50b0xvY2FsZVN0cmluZygnZnItRlInLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0VVUicgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gYCR7KGNlbnRzIHx8IDApIC8gMTAwfWA7XG4gIH1cbn07XG5cbi8vIFJldG91cm5lICoqKiogc2kgbGVzIGluZm9zIHNvbnQgbWFzcXXDqWVzLCBzaW5vbiBhcHBsaXF1ZSB1biBmb3JtYXRldXIgw6l2ZW50dWVsXG5jb25zdCBNQVNLID0gJyoqKioqJztcbmNvbnN0IG1hc2tlZCA9ICh2YWx1ZSwgZm9ybWF0dGVyLCBpc0V1cm8gPSBmYWxzZSkgPT4ge1xuICBpZiAoIXNob3dTZW5zaXRpdmUudmFsdWUpIHtcbiAgICBpZiAoaXNFdXJvKSB7XG4gICAgICByZXR1cm4gTUFTSyArICfigqwnO1xuICAgIH1cbiAgICByZXR1cm4gTUFTSztcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgZm9ybWF0dGVyID09PSAnZnVuY3Rpb24nID8gZm9ybWF0dGVyKHZhbHVlKSA6IFN0cmluZyh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlID8/ICcnKTtcbiAgfVxufTtcblxub25Nb3VudGVkKCgpID0+IHtcbiAgZmV0Y2hTdGF0cygpO1xufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5saW5rLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgxNCwgMTUsIDE4LCAwLjA4KSwgMCAycHggNHB4IHJnYmEoMTQsMTUsMTgsMC4wOCksIDAgNnB4IDEycHggcmdiYSgxNCwxNSwxOCwwLjA4KTtcbn1cbjwvc3R5bGU+XG4iLCIucmVzaXplLW9ic2VydmVyW2RhdGEtdi1iMzI5ZWU0Y117cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3otaW5kZXg6LTE7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3BvaW50ZXItZXZlbnRzOm5vbmU7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47b3BhY2l0eTowfS5yZXNpemUtb2JzZXJ2ZXJbZGF0YS12LWIzMjllZTRjXSBvYmplY3R7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4Oi0xfS52LXBvcHBlcl9fcG9wcGVye3otaW5kZXg6MTAwMDA7dG9wOjA7bGVmdDowO291dGxpbmU6bm9uZX0udi1wb3BwZXJfX3BvcHBlci52LXBvcHBlcl9fcG9wcGVyLS1oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW47b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzLHZpc2liaWxpdHkgLjE1cztwb2ludGVyLWV2ZW50czpub25lfS52LXBvcHBlcl9fcG9wcGVyLnYtcG9wcGVyX19wb3BwZXItLXNob3due3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjE7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXN9LnYtcG9wcGVyX19wb3BwZXIudi1wb3BwZXJfX3BvcHBlci0tc2tpcC10cmFuc2l0aW9uLC52LXBvcHBlcl9fcG9wcGVyLnYtcG9wcGVyX19wb3BwZXItLXNraXAtdHJhbnNpdGlvbj4udi1wb3BwZXJfX3dyYXBwZXJ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0udi1wb3BwZXJfX2JhY2tkcm9we3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2Rpc3BsYXk6bm9uZX0udi1wb3BwZXJfX2lubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdy15OmF1dG99LnYtcG9wcGVyX19pbm5lcj5kaXZ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxO21heC13aWR0aDppbmhlcml0O21heC1oZWlnaHQ6aW5oZXJpdH0udi1wb3BwZXJfX2Fycm93LWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMHB4O2hlaWdodDoxMHB4fS52LXBvcHBlcl9fcG9wcGVyLS1hcnJvdy1vdmVyZmxvdyAudi1wb3BwZXJfX2Fycm93LWNvbnRhaW5lciwudi1wb3BwZXJfX3BvcHBlci0tbm8tcG9zaXRpb25pbmcgLnYtcG9wcGVyX19hcnJvdy1jb250YWluZXJ7ZGlzcGxheTpub25lfS52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItc3R5bGU6c29saWQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjA7aGVpZ2h0OjB9LnYtcG9wcGVyX19hcnJvdy1pbm5lcnt2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXItd2lkdGg6N3B4fS52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXdpZHRoOjZweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXRvcF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWJvdHRvbV0gLnYtcG9wcGVyX19hcnJvdy1pbm5lcntsZWZ0Oi0ycHh9LnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj10b3BdIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7bGVmdDotMXB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49dG9wXSAudi1wb3BwZXJfX2Fycm93LWlubmVyLC52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49dG9wXSAudi1wb3BwZXJfX2Fycm93LW91dGVye2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItbGVmdC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXRvcF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lcnt0b3A6LTJweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWJvdHRvbV0gLnYtcG9wcGVyX19hcnJvdy1jb250YWluZXJ7dG9wOjB9LnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItcmlnaHQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JvcmRlci10b3AtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXSAudi1wb3BwZXJfX2Fycm93LWlubmVye3RvcDotNHB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXSAudi1wb3BwZXJfX2Fycm93LW91dGVye3RvcDotNnB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LWlubmVye3RvcDotMnB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1vdXRlciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LW91dGVye3RvcDotMXB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49cmlnaHRdIC52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1yaWdodF0gLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LWlubmVye2xlZnQ6LTRweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LW91dGVye2xlZnQ6LTZweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctY29udGFpbmVye3JpZ2h0Oi0xMHB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLXRvcC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctaW5uZXJ7bGVmdDotMnB4fS52LXBvcHBlci0tdGhlbWUtdG9vbHRpcCAudi1wb3BwZXJfX2lubmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuOCk7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjdweCAxMnB4IDZweH0udi1wb3BwZXItLXRoZW1lLXRvb2x0aXAgLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItY29sb3I6IzAwMGN9LnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2lubmVye2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjoxcHggc29saWQgI2RkZDtib3gtc2hhZG93OjAgNnB4IDMwcHggIzAwMDAwMDFhfS52LXBvcHBlci0tdGhlbWUtZHJvcGRvd24gLnYtcG9wcGVyX19hcnJvdy1pbm5lcnt2aXNpYmlsaXR5OnZpc2libGU7Ym9yZGVyLWNvbG9yOiNmZmZ9LnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2Fycm93LW91dGVye2JvcmRlci1jb2xvcjojZGRkfVxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiaGVhdG1hcFwiIDpzdHlsZT1cInJvb3RTdHlsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzcGFjZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGhzXCIgOnN0eWxlPVwieyBncmlkVGVtcGxhdGVDb2x1bW5zOiBgcmVwZWF0KCR7d2Vla3MubGVuZ3RofSwgMWZyKWAgfVwiPlxuICAgICAgPHNwYW4gdi1mb3I9XCIobGFiZWwsIGkpIGluIG1vbnRoTGFiZWxzXCIgOmtleT1cImlcIiBjbGFzcz1cIm1vbnRoIGNhcGl0YWxpemVcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ5LWxhYmVsc1wiPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPHNwYW4+TDwvc3Bhbj5cbiAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuPk08L3NwYW4+XG4gICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8c3Bhbj5WPC9zcGFuPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdyaWRcIiA6c3R5bGU9XCJ7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IGByZXBlYXQoJHt3ZWVrcy5sZW5ndGh9LCAxZnIpYCB9XCI+XG4gICAgICA8ZGl2IHYtZm9yPVwiKHdlZWssIHdJZHgpIGluIHdlZWtzXCIgOmtleT1cIndJZHhcIiBjbGFzcz1cIndlZWtcIj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgdi1mb3I9XCIoZGF5LCBkSWR4KSBpbiB3ZWVrXCJcbiAgICAgICAgICAgICAgOmtleT1cImRJZHhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNlbGwgcmVsYXRpdmVcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJgbGV2ZWwtJHtsZXZlbEZvcihkYXkuY291bnQpfSAke3Rvb2x0aXBVc2UoZGF5KSA9PSAnJyA/ICdoaWRkZW4nIDogJycgfWBcIlxuICAgICAgICAgICAgICBAY2xpY2s9XCIkZW1pdCgnZGF5LWNsaWNrJywgZGF5KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRvb2x0aXAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cmFuc3BhcmVudCBjdXJzb3ItcG9pbnRlclwiPnRlc3Q8L3NwYW4+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjcG9wcGVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTEgdGV4dC1jZW50ZXJcIj57eyB0b29sdGlwVXNlKGRheSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LWNlbnRlclwiPnt7IHRvb2x0aXBEYXRlKGRheSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGVnZW5kXCIgOnN0eWxlPVwicm9vdFN0eWxlXCI+XG4gICAgPHNwYW4+TW9pbnM8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTBcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTFcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTJcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTNcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTRcIj48L3NwYW4+XG4gICAgPHNwYW4+UGx1czwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBEcm9wZG93biwgVG9vbHRpcCwgTWVudSwgdlRvb2x0aXAgfSBmcm9tICdmbG9hdGluZy12dWUnXG5pbXBvcnQgJ2Zsb2F0aW5nLXZ1ZS9kaXN0L3N0eWxlLmNzcydcblxudHlwZSBDb3VudHNNYXAgPSBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuXG5pbnRlcmZhY2UgRGF5Q2VsbCB7XG4gIGRhdGVJU086IHN0cmluZztcbiAgY291bnQ6IG51bWJlcjtcbn1cblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XG4gIHVzZXJJZD86IG51bWJlciB8IHN0cmluZztcbiAgZGF5cz86IG51bWJlcjtcbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIGJhc2VDb2xvcj86IHN0cmluZztcbn0+KCk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAnbG9hZGVkJyk6IHZvaWQ7XG4gIChlOiAnZGF5LWNsaWNrJywgZGF5OiBEYXlDZWxsKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IGVuZHBvaW50ID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZW5kcG9pbnQgPz8gJy9hcGkvYWN0aXZpdHkvaGVhdG1hcCcpO1xuY29uc3QgZGF5cyA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmRheXMgPz8gMzcxKTtcbmNvbnN0IGJhc2VDb2xvciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmJhc2VDb2xvciA/PyAnIzRjOGJmZCcpO1xuXG5jb25zdCBsb2FkaW5nID0gcmVmKGZhbHNlKTtcbmNvbnN0IHN0YXJ0SVNPID0gcmVmKCcnKTtcbmNvbnN0IGVuZElTTyA9IHJlZignJyk7XG5jb25zdCBtYXhDb3VudCA9IHJlZigwKTtcbmNvbnN0IGNvdW50cyA9IHJlZjxDb3VudHNNYXA+KHt9KTtcblxub25Nb3VudGVkKGxvYWQpO1xud2F0Y2goW2VuZHBvaW50LCBkYXlzLCAoKSA9PiBwcm9wcy51c2VySWRdLCBsb2FkKTtcblxuYXN5bmMgZnVuY3Rpb24gbG9hZCgpIHtcbiAgaWYgKHByb3BzLnVzZXJJZCkge1xuICAgIGxvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgIGNvbnN0IHFzID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7IGRheXM6IFN0cmluZyhkYXlzLnZhbHVlKSB9KTtcbiAgICBpZiAocHJvcHMudXNlcklkICE9IG51bGwpIHFzLnNldCgndXNlcklkJywgU3RyaW5nKHByb3BzLnVzZXJJZCkpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7ZW5kcG9pbnQudmFsdWV9PyR7cXMudG9TdHJpbmcoKX1gLCB7IGNyZWRlbnRpYWxzOiAnaW5jbHVkZScgfSk7XG4gICAgY29uc3QganNvbiA9IGF3YWl0IHJlcy5qc29uKCk7XG5cbiAgICBzdGFydElTTy52YWx1ZSA9IGpzb24uc3RhcnQ7XG4gICAgZW5kSVNPLnZhbHVlID0ganNvbi5lbmQ7XG4gICAgY291bnRzLnZhbHVlID0ganNvbi5jb3VudHMgPz8ge307XG4gICAgbWF4Q291bnQudmFsdWUgPSBqc29uLm1heCA/PyAwO1xuICAgIGxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICBlbWl0KCdsb2FkZWQnKTtcbiAgfVxufVxuXG5jb25zdCB3ZWVrU3RhcnRzID0gY29tcHV0ZWQ8RGF0ZVtdPigoKSA9PiB7XG4gIGlmICghc3RhcnRJU08udmFsdWUgfHwgIWVuZElTTy52YWx1ZSkgcmV0dXJuIFtdO1xuICBjb25zdCBhcnI6IERhdGVbXSA9IFtdO1xuICBjb25zdCBlbmQgPSBkYXRlRnJvbUlTTyhlbmRJU08udmFsdWUpO1xuICBmb3IgKGxldCBkID0gZGF0ZUZyb21JU08oc3RhcnRJU08udmFsdWUpOyBkIDw9IGVuZDsgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgNykpIHtcbiAgICBhcnIucHVzaChuZXcgRGF0ZShkKSk7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn0pO1xuXG5jb25zdCBtb250aExhYmVscyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PiB7XG4gIHJldHVybiB3ZWVrU3RhcnRzLnZhbHVlLm1hcCgod3MpID0+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHdzKTtcbiAgICAgIGQuc2V0RGF0ZShkLmdldERhdGUoKSArIGkpO1xuICAgICAgaWYgKGQuZ2V0RGF0ZSgpID09PSAxKSB7XG4gICAgICAgIHJldHVybiBkLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtb250aDogJ3Nob3J0JyB9KS5zbGljZSgwLCAyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBkYXRlRnJvbUlTTyhpc286IHN0cmluZyk6IERhdGUge1xuICBjb25zdCBbeSwgbSwgZF0gPSBpc28uc3BsaXQoJy0nKS5tYXAoTnVtYmVyKTtcbiAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHksIG0gLSAxLCBkKSk7XG59XG5cbmNvbnN0IGFsbERheXMgPSBjb21wdXRlZDxEYXlDZWxsW10+KCgpID0+IHtcbiAgaWYgKCFzdGFydElTTy52YWx1ZSB8fCAhZW5kSVNPLnZhbHVlKSByZXR1cm4gW107XG4gIGNvbnN0IG91dDogRGF5Q2VsbFtdID0gW107XG4gIGNvbnN0IHN0YXJ0ID0gZGF0ZUZyb21JU08oc3RhcnRJU08udmFsdWUpO1xuICBjb25zdCBlbmQgPSBkYXRlRnJvbUlTTyhlbmRJU08udmFsdWUpO1xuXG4gIGZvciAobGV0IGQgPSBzdGFydDsgZCA8PSBlbmQ7IGQuc2V0VVRDRGF0ZShkLmdldFVUQ0RhdGUoKSArIDEpKSB7XG4gICAgY29uc3QgaXNvID0gZC50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKTtcbiAgICBjb25zb2xlLmxvZyhkLCBpc28pO1xuICAgIG91dC5wdXNoKHsgZGF0ZUlTTzogaXNvLCBjb3VudDogY291bnRzLnZhbHVlW2lzb10gPz8gMCB9KTtcbiAgfVxuICByZXR1cm4gb3V0O1xufSk7XG5cbmNvbnN0IHdlZWtzID0gY29tcHV0ZWQ8RGF5Q2VsbFtdW10+KCgpID0+IHtcbiAgY29uc3QgcmVzOiBEYXlDZWxsW11bXSA9IFtdO1xuICBsZXQgdzogRGF5Q2VsbFtdID0gW107XG4gIGFsbERheXMudmFsdWUuZm9yRWFjaCgoZGF5LCBpZHgpID0+IHtcbiAgICBjb25zdCBqc0RhdGUgPSBkYXRlRnJvbUlTTyhkYXkuZGF0ZUlTTyk7XG4gICAgY29uc3QgaXNTdW5kYXkgPSBqc0RhdGUuZ2V0RGF5KCkgPT09IDA7XG4gICAgaWYgKGlkeCA9PT0gMCkge1xuICAgICAgdyA9IFtdO1xuICAgIH0gZWxzZSBpZiAoaXNTdW5kYXkpIHtcbiAgICAgIHJlcy5wdXNoKHcpO1xuICAgICAgdyA9IFtdO1xuICAgIH1cbiAgICB3W2pzRGF0ZS5nZXREYXkoKV0gPSBkYXk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIGlmICghd1tpXSkgd1tpXSA9IHsgZGF0ZUlTTzogJycsIGNvdW50OiAwIH07XG4gIH0pO1xuICBpZiAody5sZW5ndGgpIHJlcy5wdXNoKHcpO1xuICByZXR1cm4gcmVzO1xufSk7XG5cbmZ1bmN0aW9uIGxldmVsRm9yKGNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIDA7XG4gIGlmIChtYXhDb3VudC52YWx1ZSA8PSAwKSByZXR1cm4gMDtcbiAgY29uc3QgcmF0aW8gPSBjb3VudCAvIG1heENvdW50LnZhbHVlO1xuICBpZiAocmF0aW8gPiAwLjc1KSByZXR1cm4gNDtcbiAgaWYgKHJhdGlvID4gMC41KSByZXR1cm4gMztcbiAgaWYgKHJhdGlvID4gMC4yNSkgcmV0dXJuIDI7XG4gIHJldHVybiAxO1xufVxuXG5mdW5jdGlvbiB0b29sdGlwVXNlKGRheTogRGF5Q2VsbCk6IHN0cmluZyB7XG4gIGlmICghZGF5LmRhdGVJU08pIHJldHVybiAnJztcbiAgcmV0dXJuIGAke2RheS5jb3VudH0gdXRpbGlzYXRpb24ke2RheS5jb3VudCA+IDEgPyAncycgOiAnJ31gO1xufVxuXG5mdW5jdGlvbiB0b29sdGlwRGF0ZShkYXk6IERheUNlbGwpOiBzdHJpbmcge1xuICBpZiAoIWRheS5kYXRlSVNPKSByZXR1cm4gJyc7XG4gIHJldHVybiBgTGUgJHtuZXcgRGF0ZShkYXkuZGF0ZUlTTykudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YDtcbn1cblxuY29uc3QgdG9kYXlJU08gPSBjb21wdXRlZCgoKSA9PiB0b1lNRChuZXcgRGF0ZSgpKSk7XG5jb25zdCB6ID0gKG46IG51bWJlcikgPT4gKG4gPCAxMCA/IGAwJHtufWAgOiBTdHJpbmcobikpO1xuY29uc3QgdG9ZTUQgPSAoZDogRGF0ZSkgPT4gYCR7ZC5nZXRGdWxsWWVhcigpfS0ke3ooZC5nZXRNb250aCgpICsgMSl9LSR7eihkLmdldERhdGUoKSl9YDtcblxuZnVuY3Rpb24gaXNGdXR1cmUoZGF5OiB7IGRhdGVJU086IHN0cmluZzsgY291bnQ6IG51bWJlciB9KSB7XG4gIHJldHVybiAhIWRheS5kYXRlSVNPICYmIGRheS5kYXRlSVNPID4gdG9kYXlJU08udmFsdWU7XG59XG5cbi8vIHJvb3QgQ1NTIHZhcmlhYmxlc1xuZnVuY3Rpb24gaGV4VG9SZ2IoaGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBoID0gaGV4LnJlcGxhY2UoJyMnLCAnJyk7XG4gIGNvbnN0IGJpZ2ludCA9IHBhcnNlSW50KGgubGVuZ3RoID09PSAzID8gaC5zcGxpdCgnJykubWFwKGMgPT4gYyArIGMpLmpvaW4oJycpIDogaCwgMTYpO1xuICBjb25zdCByID0gKGJpZ2ludCA+PiAxNikgJiAyNTU7XG4gIGNvbnN0IGcgPSAoYmlnaW50ID4+IDgpICYgMjU1O1xuICBjb25zdCBiID0gYmlnaW50ICYgMjU1O1xuICByZXR1cm4gYCR7cn0sICR7Z30sICR7Yn1gO1xufVxuY29uc3Qgcm9vdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHsgJy0tYmFzZS1yZ2InOiBoZXhUb1JnYihiYXNlQ29sb3IudmFsdWUpIH0gYXMgYW55KSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5oZWF0bWFwIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjsgLyogMTogbGFiZWxzIFksIDI6IGNvbnRlbnUgKi9cbiAgZ3JpZC1hdXRvLXJvd3M6IGF1dG87XG4gIHJvdy1nYXA6IDNweDtcbiAgY29sdW1uLWdhcDogM3B4O1xuICAtLWNlbGwtc2l6ZTogMTUuNXB4O1xuICAtLWdhcDogMnB4O1xuICAtLWJhc2UtcmdiOiA3NiwgMTM5LCAyNTM7XG59XG5cbi8qIGNlbGx1bGUgdmlkZSBlbiBoYXV0IMOgIGdhdWNoZSBwb3VyIGFsaWduZXIgbOKAmWVuLXTDqnRlICovXG4uc3BhY2VyIHsgaGVpZ2h0OiAxLjJlbTsgfVxuXG4vKiByYW5nw6llIGRlcyBtb2lzICovXG4ubW9udGhzIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1nYXApO1xuICBoZWlnaHQ6IDEuMmVtO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGNvbG9yOiAjOWFhMGE2O1xufVxuLm1vbnRoIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vKiBsZSByZXN0ZSBpbmNoYW5nw6kgKi9cbi55LWxhYmVscyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KDcsIHZhcigtLWNlbGwtc2l6ZSkpO1xuICBnYXA6IHZhcigtLWdhcCk7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgY29sb3I6ICM5YWEwYTY7XG4gIG1hcmdpbi1yaWdodDogMnB4O1xufVxuLmdyaWQgeyBkaXNwbGF5OiBncmlkOyBncmlkLWF1dG8tZmxvdzogY29sdW1uOyBnYXA6IHZhcigtLWdhcCk7IH1cbi53ZWVrIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoNywgdmFyKC0tY2VsbC1zaXplKSk7IGdhcDogdmFyKC0tZ2FwKTsgfVxuLmNlbGwgeyB3aWR0aDogdmFyKC0tY2VsbC1zaXplKTsgaGVpZ2h0OiB2YXIoLS1jZWxsLXNpemUpOyBib3JkZXItcmFkaXVzOiAycHg7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMCk7IH1cbi5jZWxsLmxldmVsLTAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQwLCAzOSwgNDYsIDAuNCk7IH1cbi5jZWxsLmxldmVsLTEgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC4yNSk7IH1cbi5jZWxsLmxldmVsLTIgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC40NSk7IH1cbi5jZWxsLmxldmVsLTMgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC42NSk7IH1cbi5jZWxsLmxldmVsLTQgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC45KTsgfVxuXG4uY2VsbDpob3ZlciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC40KTtcbn1cblxuLmxlZ2VuZCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyBtYXJnaW4tdG9wOiA4cHg7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM5YWEwYTY7IH1cbi5sZWdlbmQgLmNlbGwgeyB3aWR0aDogMTJweDsgaGVpZ2h0OiAxMnB4OyB9XG5cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwPlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHsgcmVmLCBjb21wdXRlZCwgb25Nb3VudGVkLCB3YXRjaCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IERpYWxvZywgRGlhbG9nUGFuZWwsIERpYWxvZ1RpdGxlLCBUcmFuc2l0aW9uQ2hpbGQsIFRyYW5zaXRpb25Sb290IH0gZnJvbSBcIkBoZWFkbGVzc3VpL3Z1ZVwiO1xuaW1wb3J0IHsgWE1hcmtJY29uLCBNYWduaWZ5aW5nR2xhc3NJY29uLCBGdW5uZWxJY29uIH0gZnJvbSAnQGhlcm9pY29ucy92dWUvMjAvc29saWQnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC5kZWJvdW5jZSc7XG5cbmNvbnN0IHVzZXJzID0gcmVmKFtdKTtcbmNvbnN0IHRvdGFsID0gcmVmKDApO1xuY29uc3QgbG9hZGluZyA9IHJlZih0cnVlKTtcbmNvbnN0IG9wZW4gPSByZWYoZmFsc2UpO1xuY29uc3QgdXNlclNlbGVjdGVkID0gcmVmKG51bGwpO1xuY29uc3QgY3VycmVudFBhZ2UgPSByZWYoMSk7XG5jb25zdCBpdGVtc1BlclBhZ2UgPSByZWYoMTApO1xuXG4vLyBTZWFyY2ggYW5kIGZpbHRlclxuY29uc3Qgc2VhcmNoUXVlcnkgPSByZWYoJycpO1xuY29uc3Qgc2VsZWN0ZWRMaWNlbnNlVHlwZSA9IHJlZignJyk7XG5jb25zdCBzZWxlY3RlZFJvbGUgPSByZWYoJycpO1xuY29uc3QgYXZhaWxhYmxlTGljZW5zZVR5cGVzID0gcmVmKFtdKTtcbmNvbnN0IGF2YWlsYWJsZVJvbGVzID0gcmVmKFtdKTtcblxuLy8gRGVib3VuY2VkIHNlYXJjaCBmdW5jdGlvblxuY29uc3QgZGVib3VuY2VkU2VhcmNoID0gZGVib3VuY2UoKCkgPT4ge1xuICBmaWx0ZXJVc2VycygpO1xufSwgMzAwKTtcblxuLy8gUGFnaW5hdGlvblxuY29uc3QgdG90YWxQYWdlcyA9IGNvbXB1dGVkKCgpID0+IE1hdGguY2VpbCh0b3RhbC52YWx1ZSAvIGl0ZW1zUGVyUGFnZS52YWx1ZSkpO1xuY29uc3QgcGFnaW5hdGVkVXNlcnMgPSBjb21wdXRlZCgoKSA9PiB1c2Vycy52YWx1ZSk7XG5cbmNvbnN0IGZldGNoVXNlcnMgPSBhc3luYyAoKSA9PiB7XG4gIGxvYWRpbmcudmFsdWUgPSB0cnVlO1xuICB0cnkge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXhpb3MuZ2V0KCcvYXBpL3VzZXJzJywge1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIHBhZ2U6IGN1cnJlbnRQYWdlLnZhbHVlLFxuICAgICAgICBsaW1pdDogaXRlbXNQZXJQYWdlLnZhbHVlLFxuICAgICAgICBxOiBzZWFyY2hRdWVyeS52YWx1ZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IHNlbGVjdGVkUm9sZS52YWx1ZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGxpY2VuY2VUeXBlOiBzZWxlY3RlZExpY2Vuc2VUeXBlLnZhbHVlIHx8IHVuZGVmaW5lZCxcbiAgICAgIH1cbiAgICB9KTtcbiAgICB1c2Vycy52YWx1ZSA9IGRhdGEuaXRlbXM7XG4gICAgdG90YWwudmFsdWUgPSBkYXRhLnRvdGFsO1xuICAgIGV4dHJhY3RGaWx0ZXJPcHRpb25zKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdXNlcnM6JywgZXJyb3IpO1xuICB9IGZpbmFsbHkge1xuICAgIGxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgfVxufTtcblxuY29uc3QgbmV4dFBhZ2UgPSBhc3luYyAoKSA9PiB7XG4gIGlmIChjdXJyZW50UGFnZS52YWx1ZSA8IHRvdGFsUGFnZXMudmFsdWUpIHtcbiAgICBjdXJyZW50UGFnZS52YWx1ZSsrO1xuICAgIGF3YWl0IGZldGNoVXNlcnMoKTtcbiAgfVxufTtcblxuY29uc3QgcHJldlBhZ2UgPSBhc3luYyAoKSA9PiB7XG4gIGlmIChjdXJyZW50UGFnZS52YWx1ZSA+IDEpIHtcbiAgICBjdXJyZW50UGFnZS52YWx1ZS0tO1xuICAgIGF3YWl0IGZldGNoVXNlcnMoKTtcbiAgfVxufTtcblxuY29uc3QgZ29Ub1BhZ2UgPSBhc3luYyAocGFnZSkgPT4ge1xuICBpZiAocGFnZSA+PSAxICYmIHBhZ2UgPD0gdG90YWxQYWdlcy52YWx1ZSkge1xuICAgIGN1cnJlbnRQYWdlLnZhbHVlID0gcGFnZTtcbiAgICBhd2FpdCBmZXRjaFVzZXJzKCk7XG4gIH1cbn07XG5cbi8vIEhlbHBlciBmdW5jdGlvbnNcbmNvbnN0IGdldExpY2Vuc2VDb3VudCA9ICh1c2VyKSA9PiB7XG4gIHJldHVybiB1c2VyLmxpY2VuY2VzLmxlbmd0aDtcbn07XG5cbmNvbnN0IGdldExpY2Vuc2VUeXBlID0gKHVzZXIpID0+IHtcbiByZXR1cm4gdXNlci5saWNlbmNlID8gdXNlci5saWNlbmNlLnR5cGUgOiAnQXVjdW5lJ1xufTtcblxuY29uc3QgZ2V0TGFzdENvbm5lY3Rpb24gPSAodXNlcikgPT4ge1xuICBpZiAodXNlci5saWNlbmNlcy5sZW5ndGggPT09IDApIHJldHVybiBcIkphbWFpc1wiO1xuXG4gIC8vIEZpbmQgdGhlIG1vc3QgcmVjZW50IGxhc3RVc2UgZGF0ZVxuICBjb25zdCBsYXN0VXNlRGF0ZXMgPSB1c2VyLmxpY2VuY2VzLm1hcChsaWNlbnNlID0+IHtcbiAgICBjb25zdCBbZGF0ZVBhcnQsIHRpbWVQYXJ0XSA9IGxpY2Vuc2UubGFzdFVzZS5zcGxpdChcIiDDoCBcIik7XG4gICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVBhcnQuc3BsaXQoXCIvXCIpO1xuICAgIGNvbnN0IFtob3VyLCBtaW51dGVdID0gdGltZVBhcnQuc3BsaXQoXCI6XCIpO1xuICAgIHJldHVybiBuZXcgRGF0ZShgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1UJHtob3VyfToke21pbnV0ZX06MDBgKTtcbiAgfSk7XG5cbiAgY29uc3QgbW9zdFJlY2VudERhdGUgPSBuZXcgRGF0ZShNYXRoLm1heCguLi5sYXN0VXNlRGF0ZXMubWFwKGRhdGUgPT4gZGF0ZS5nZXRUaW1lKCkpKSk7XG5cbiAgLy8gRm9ybWF0IHRoZSBkYXRlXG4gIGNvbnN0IGRheSA9IG1vc3RSZWNlbnREYXRlLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gIGNvbnN0IG1vbnRoID0gKG1vc3RSZWNlbnREYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gIGNvbnN0IHllYXIgPSBtb3N0UmVjZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBob3VycyA9IG1vc3RSZWNlbnREYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICBjb25zdCBtaW51dGVzID0gbW9zdFJlY2VudERhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcblxuICByZXR1cm4gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9IMOgICR7aG91cnN9OiR7bWludXRlc31gO1xufTtcblxuLy8gQ2xlYXIgYWxsIGZpbHRlcnNcbmNvbnN0IGNsZWFyRmlsdGVycyA9IGFzeW5jICgpID0+IHtcbiAgc2VhcmNoUXVlcnkudmFsdWUgPSAnJztcbiAgc2VsZWN0ZWRMaWNlbnNlVHlwZS52YWx1ZSA9ICcnO1xuICBzZWxlY3RlZFJvbGUudmFsdWUgPSAnJztcbiAgY3VycmVudFBhZ2UudmFsdWUgPSAxO1xuICBhd2FpdCBmZXRjaFVzZXJzKCk7XG59O1xuXG5jb25zdCBmaWx0ZXJVc2VycyA9IGFzeW5jICgpID0+IHtcbiAgY3VycmVudFBhZ2UudmFsdWUgPSAxO1xuICBhd2FpdCBmZXRjaFVzZXJzKCk7XG59O1xuXG53YXRjaChzZWFyY2hRdWVyeSwgKCkgPT4ge1xuICBkZWJvdW5jZWRTZWFyY2goKTtcbn0pO1xuXG53YXRjaChbc2VsZWN0ZWRMaWNlbnNlVHlwZSwgc2VsZWN0ZWRSb2xlXSwgKCkgPT4ge1xuICBmaWx0ZXJVc2VycygpO1xufSk7XG5cbi8vIEV4dHJhY3QgYXZhaWxhYmxlIGxpY2Vuc2UgdHlwZXMgYW5kIHJvbGVzIGZyb20gY3VycmVudGx5IGxvYWRlZCB1c2Vyc1xuY29uc3QgZXh0cmFjdEZpbHRlck9wdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IGxpY2Vuc2VUeXBlcyA9IG5ldyBTZXQoKTtcbiAgY29uc3Qgcm9sZXMgPSBuZXcgU2V0KCk7XG5cbiAgdXNlcnMudmFsdWUuZm9yRWFjaCh1c2VyID0+IHtcbiAgICAvLyBFeHRyYWN0IGxpY2Vuc2UgdHlwZXNcbiAgICBpZiAodXNlci5saWNlbmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxpY2Vuc2VUeXBlcy5hZGQoJ0F1Y3VuZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1c2VyLmxpY2VuY2VzLmZvckVhY2gobGljZW5zZSA9PiB7XG4gICAgICAgIGlmIChsaWNlbnNlLnByb2R1Y3QgJiYgbGljZW5zZS5wcm9kdWN0LnRpdGxlKSB7XG4gICAgICAgICAgbGljZW5zZVR5cGVzLmFkZChsaWNlbnNlLnByb2R1Y3QudGl0bGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IHJvbGVzXG4gICAgKHVzZXIucm9sZXMgfHwgW10pLmZvckVhY2gocm9sZSA9PiB7XG4gICAgICByb2xlcy5hZGQocm9sZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGF2YWlsYWJsZUxpY2Vuc2VUeXBlcy52YWx1ZSA9IEFycmF5LmZyb20obGljZW5zZVR5cGVzKTtcbiAgYXZhaWxhYmxlUm9sZXMudmFsdWUgPSBBcnJheS5mcm9tKHJvbGVzKTtcbn07XG5cbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XG4gIGF3YWl0IGZldGNoVXNlcnMoKTtcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LThcIj5cbiAgICA8ZGl2IGNsYXNzPVwic206ZmxleCBzbTppdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzbTpmbGV4LWF1dG9cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbGVhZGluZy02IHRleHQtZ3JheS05MDBcIj5VdGlsaXNhdGV1cnM8L2gxPlxuICAgICAgICA8cCBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LWdyYXktNzAwXCI+TGlzdGUgZGUgdG91cyBsZXMgdXRpbGlzYXRldXJzIGF2ZWMgbGV1cnMgaW5mb3JtYXRpb25zIGV0IGxpY2VuY2VzLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWFyY2ggYW5kIEZpbHRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtNCBtYi02XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtNCBzbTpncmlkLWNvbHMtM1wiPlxuICAgICAgICA8IS0tIFNlYXJjaCBpbnB1dCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHJvdW5kZWQtbWQgc2hhZG93LXNtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBmbGV4IGl0ZW1zLWNlbnRlciBwbC0zXCI+XG4gICAgICAgICAgICA8TWFnbmlmeWluZ0dsYXNzSWNvbiBjbGFzcz1cImgtNSB3LTUgdGV4dC1ncmF5LTQwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwic2VhcmNoUXVlcnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXItMCBweS0xLjUgcGwtMTAgdGV4dC1ncmF5LTkwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIHBsYWNlaG9sZGVyOnRleHQtZ3JheS00MDAgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1pbmRpZ28tNjAwIHNtOnRleHQtc20gc206bGVhZGluZy02XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUmVjaGVyY2hlciBwYXIgZW1haWwsIG5vbSBvdSBub20gZCdhcnRpc3RlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIExpY2Vuc2UgdHlwZSBmaWx0ZXIgLS0+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgdi1tb2RlbD1cInNlbGVjdGVkTGljZW5zZVR5cGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXItMCBweS0xLjUgcGwtMyBwci0xMCB0ZXh0LWdyYXktOTAwIHJpbmctMSByaW5nLWluc2V0IHJpbmctZ3JheS0zMDAgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5kaWdvLTYwMCBzbTp0ZXh0LXNtIHNtOmxlYWRpbmctNlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlRvdXMgbGVzIHR5cGVzIGRlIGxpY2VuY2U8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCJ0eXBlIGluIGF2YWlsYWJsZUxpY2Vuc2VUeXBlc1wiIDprZXk9XCJ0eXBlXCIgOnZhbHVlPVwidHlwZVwiPlxuICAgICAgICAgICAgICB7eyB0eXBlIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBSb2xlIGZpbHRlciAtLT5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRSb2xlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyLTAgcHktMS41IHBsLTMgcHItMTAgdGV4dC1ncmF5LTkwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluZGlnby02MDAgc206dGV4dC1zbSBzbTpsZWFkaW5nLTZcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5Ub3VzIGxlcyByw7RsZXM8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCJyb2xlIGluIGF2YWlsYWJsZVJvbGVzXCIgOmtleT1cInJvbGVcIiA6dmFsdWU9XCJyb2xlXCI+XG4gICAgICAgICAgICAgIHt7IHJvbGUgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENsZWFyIGZpbHRlcnMgYnV0dG9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm10LTMgZmxleCBqdXN0aWZ5LWVuZFwiIHYtaWY9XCJzZWFyY2hRdWVyeSB8fCBzZWxlY3RlZExpY2Vuc2VUeXBlIHx8IHNlbGVjdGVkUm9sZVwiPlxuICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgIEBjbGljaz1cImNsZWFyRmlsdGVyc1wiIFxuICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgYmctd2hpdGUgcHgtMyBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHNoYWRvdy1zbSByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNTBcIlxuICAgICAgICA+XG4gICAgICAgICAgPFhNYXJrSWNvbiBjbGFzcz1cIi1tbC0wLjUgbXItMS41IGgtNSB3LTUgdGV4dC1ncmF5LTQwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgRWZmYWNlciBsZXMgZmlsdHJlc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm10LTggZmxvdy1yb290XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiLW14LTQgLW15LTIgb3ZlcmZsb3cteC1hdXRvIHNtOi1teC02IGxnOi1teC04XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtYmxvY2sgbWluLXctZnVsbCBweS0yIGFsaWduLW1pZGRsZSBzbTpweC02IGxnOnB4LThcIj5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBoLTY0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTEyIHctMTIgYm9yZGVyLXQtMiBib3JkZXItYi0yIGJvcmRlci1pbmRpZ28tNTAwXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IHYtZWxzZT5cbiAgICAgICAgICAgIDwhLS0gTm8gcmVzdWx0cyBtZXNzYWdlIC0tPlxuICAgICAgICAgICAgPGRpdiB2LWlmPVwidXNlcnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS0xMiBiZy13aGl0ZSByb3VuZGVkLWxnIHNoYWRvd1wiPlxuICAgICAgICAgICAgICA8RnVubmVsSWNvbiBjbGFzcz1cIm14LWF1dG8gaC0xMiB3LTEyIHRleHQtZ3JheS00MDBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtdC0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwXCI+QXVjdW4gcsOpc3VsdGF0PC9oMz5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtdC0xIHRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgIEF1Y3VuIHV0aWxpc2F0ZXVyIG5lIGNvcnJlc3BvbmQgw6Agdm9zIGNyaXTDqHJlcyBkZSByZWNoZXJjaGUuXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTZcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cImNsZWFyRmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLW1kIGJnLWluZGlnby02MDAgcHgtMyBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlIHNoYWRvdy1zbSBob3ZlcjpiZy1pbmRpZ28tNTAwIGZvY3VzLXZpc2libGU6b3V0bGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZGlnby02MDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxYTWFya0ljb24gY2xhc3M9XCItbWwtMC41IG1yLTEuNSBoLTUgdy01XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgIEVmZmFjZXIgbGVzIGZpbHRyZXNcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBSZXN1bHRzIHRhYmxlIC0tPlxuICAgICAgICAgICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwibWluLXctZnVsbCBkaXZpZGUteSBkaXZpZGUtZ3JheS0zMDBcIj5cbiAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicHktMy41IHBsLTQgcHItMyB0ZXh0LWxlZnQgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgc206cGwtNlwiPkVtYWlsPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJweC0zIHB5LTMuNSB0ZXh0LWxlZnQgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDBcIj5Ob208L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInB4LTMgcHktMy41IHRleHQtbGVmdCB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMFwiPlR5cGUgZGUgbGljZW5jZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicHgtMyBweS0zLjUgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwXCI+RGVybmnDqHJlIGNvbm5leGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicmVsYXRpdmUgcHktMy41IHBsLTMgcHItNCBzbTpwci02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+QWN0aW9uczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJkaXZpZGUteSBkaXZpZGUtZ3JheS0yMDAgYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cInVzZXIgaW4gcGFnaW5hdGVkVXNlcnNcIiA6a2V5PVwidXNlci5lbWFpbFwiIGNsYXNzPVwiaG92ZXI6YmctZ3JheS01MFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBweS00IHBsLTQgcHItMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgc206cGwtNlwiPnt7IHVzZXIuZW1haWwgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBweC0zIHB5LTQgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+e3sgdXNlci5uYW1lIHx8ICctJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIHB4LTMgcHktNCB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj57eyBnZXRMaWNlbnNlVHlwZSh1c2VyKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIHB4LTMgcHktNCB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj57eyBnZXRMYXN0Q29ubmVjdGlvbih1c2VyKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInJlbGF0aXZlIHdoaXRlc3BhY2Utbm93cmFwIHB5LTQgcGwtMyBwci00IHRleHQtcmlnaHQgdGV4dC1zbSBmb250LW1lZGl1bSBzbTpwci02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJgL2JhY2tvZmZpY2UvdXRpbGlzYXRldXJzLyR7dXNlci5lbWFpbH1gXCIgY2xhc3M9XCJ0ZXh0LWluZGlnby02MDAgaG92ZXI6dGV4dC1pbmRpZ28tOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBWb2lyPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+LCB7eyB1c2VyLmVtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgdi1pZj1cIiFsb2FkaW5nICYmIHVzZXJzLmxlbmd0aCA+IDAgJiYgdG90YWxQYWdlcyA+IDFcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBib3JkZXItdCBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgcHgtNCBweS0zIHNtOnB4LTYgbXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC0xIGp1c3RpZnktYmV0d2VlbiBzbTpoaWRkZW5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJwcmV2UGFnZVwiIDpkaXNhYmxlZD1cImN1cnJlbnRQYWdlID09PSAxXCIgY2xhc3M9XCJyZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgaG92ZXI6YmctZ3JheS01MFwiIDpjbGFzcz1cInsgJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJzogY3VycmVudFBhZ2UgPT09IDEgfVwiPlxuICAgICAgICAgICAgICAgIFByw6ljw6lkZW50XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cIm5leHRQYWdlXCIgOmRpc2FibGVkPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXNcIiBjbGFzcz1cInJlbGF0aXZlIG1sLTMgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIGhvdmVyOmJnLWdyYXktNTBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTUwIGN1cnNvci1ub3QtYWxsb3dlZCc6IGN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzIH1cIj5cbiAgICAgICAgICAgICAgICBTdWl2YW50XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuIHNtOmZsZXggc206ZmxleC0xIHNtOml0ZW1zLWNlbnRlciBzbTpqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICAgICAgQWZmaWNoYWdlIGRlIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj57eyB0b3RhbCA/IChjdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgMSA6IDAgfX08L3NwYW4+IMOgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj57eyBNYXRoLm1pbihjdXJyZW50UGFnZSAqIGl0ZW1zUGVyUGFnZSwgdG90YWwpIH19PC9zcGFuPiBzdXIgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bVwiPnt7IHRvdGFsIH19PC9zcGFuPiByw6lzdWx0YXRzXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPVwiaXNvbGF0ZSBpbmxpbmUtZmxleCAtc3BhY2UteC1weCByb3VuZGVkLW1kIHNoYWRvdy1zbVwiIGFyaWEtbGFiZWw9XCJQYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cInByZXZQYWdlXCIgOmRpc2FibGVkPVwiY3VycmVudFBhZ2UgPT09IDFcIiBjbGFzcz1cInJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWwtbWQgcHgtMiBweS0yIHRleHQtZ3JheS00MDAgcmluZy0xIHJpbmctaW5zZXQgcmluZy1ncmF5LTMwMCBob3ZlcjpiZy1ncmF5LTUwIGZvY3VzOnotMjAgZm9jdXM6b3V0bGluZS1vZmZzZXQtMFwiIDpjbGFzcz1cInsgJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJzogY3VycmVudFBhZ2UgPT09IDEgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5QcsOpY8OpZGVudDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTVcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEyLjc5IDUuMjNhLjc1Ljc1IDAgMDEtLjAyIDEuMDZMOC44MzIgMTBsMy45MzggMy43MWEuNzUuNzUgMCAxMS0xLjA0IDEuMDhsLTQuNS00LjI1YS43NS43NSAwIDAxMC0xLjA4bDQuNS00LjI1YS43NS43NSAwIDAxMS4wNi4wMnpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwicGFnZSBpbiB0b3RhbFBhZ2VzXCIgOmtleT1cInBhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB2LWlmPVwicGFnZSA9PT0gY3VycmVudFBhZ2UgfHwgKHBhZ2UgPD0gMyB8fCBwYWdlID49IHRvdGFsUGFnZXMgLSAyIHx8IE1hdGguYWJzKHBhZ2UgLSBjdXJyZW50UGFnZSkgPD0gMSlcIiBAY2xpY2s9XCJnb1RvUGFnZShwYWdlKVwiIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgICAgICAgICAncmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlID09PSBwYWdlID8gJ3otMTAgYmctaW5kaWdvLTYwMCB0ZXh0LXdoaXRlIGZvY3VzLXZpc2libGU6b3V0bGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZGlnby02MDAnIDogJ3RleHQtZ3JheS05MDAgcmluZy0xIHJpbmctaW5zZXQgcmluZy1ncmF5LTMwMCBob3ZlcjpiZy1ncmF5LTUwIGZvY3VzOm91dGxpbmUtb2Zmc2V0LTAnXG4gICAgICAgICAgICAgICAgICAgIF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2UtaWY9XCJwYWdlID09PSA0ICYmIGN1cnJlbnRQYWdlID4gNFwiIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTcwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlLWlmPVwicGFnZSA9PT0gdG90YWxQYWdlcyAtIDMgJiYgY3VycmVudFBhZ2UgPCB0b3RhbFBhZ2VzIC0gM1wiIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTcwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwibmV4dFBhZ2VcIiA6ZGlzYWJsZWQ9XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlc1wiIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtci1tZCBweC0yIHB5LTIgdGV4dC1ncmF5LTQwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNTAgZm9jdXM6ei0yMCBmb2N1czpvdXRsaW5lLW9mZnNldC0wXCIgOmNsYXNzPVwieyAnb3BhY2l0eS01MCBjdXJzb3Itbm90LWFsbG93ZWQnOiBjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlcyB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlN1aXZhbnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk03LjIxIDE0Ljc3YS43NS43NSAwIDAxLjAyLTEuMDZMMTEuMTY4IDEwIDcuMjMgNi4yOWEuNzUuNzUgMCAxMTEuMDQtMS4wOGw0LjUgNC4yNWEuNzUuNzUgMCAwMTAgMS4wOGwtNC41IDQuMjVhLjc1Ljc1IDAgMDEtMS4wNi0uMDJ6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbi8qIEFkZGl0aW9uYWwgc3R5bGluZyBpZiBuZWVkZWQgKi9cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgaWQ9XCJzbW9vdGgtd3JhcHBlclwiIHJlZj1cImNvbnRhaW5lclwiPlxuICAgIDxkaXYgaWQ9XCJzbW9vdGgtY29udGVudFwiIGNsYXNzPVwidGV4dC13aGl0ZSBiZy1jdXN0b20tcGF0dGVyblwiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJyZWxhdGl2ZVwiIHJlZj1cInMxXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrLXNlY3Rpb24tMVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1zMSBmbGV4IGl0ZW1zLWNlbnRlciBoLWZ1bGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy01LzEyIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHB4LTI0XCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9yZXMvaW1hZ2VzL2xvZ28ucG5nXCIgYWx0PVwiXCIgY2xhc3M9XCJ3LTQvNVwiPlxuICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRyYWNraW5nLXRpZ2h0ZXJcIj4xIFNFVUwgUExVR0lOLCAxIFZPSVggTUlYw4lFPC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctZnVsbCBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwic2Vjb25kIHRyYWNraW5nLXRpZ2h0IC1tYi0yIHRleHQteGwgZm9udC1zZW1pYm9sZFwiPlrDqXJvIGxhdGVuY2U8L2gyPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtZ3JheS0yMDAgdHJhY2tpbmctdGlnaHRlclwiPkVucmVnaXN0cmV6IGF2ZWMgbOKAmWVmZmV0LCBlbiB0ZW1wcyByw6llbDwvaDM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInNlY29uZCB0cmFja2luZy10aWdodCAtbWItMiB0ZXh0LXhsIGZvbnQtc2VtaWJvbGRcIj5Mw6lnZXIgZW4gQ1BVPC9oMj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktMjAwIHRyYWNraW5nLXRpZ2h0ZXJcIj5O4oCZYWxvdXJkaXQgcGFzIHZvdHJlIHNlc3Npb24sIG3Dqm1lIHN1ciBsYXB0b3A8L2gzPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJzZWNvbmQgdHJhY2tpbmctdGlnaHQgLW1iLTIgdGV4dC14bCBmb250LXNlbWlib2xkXCI+RGVzIGNvbnRyw7RsZXMgbXVzaWNhdXg8L2gyPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtZ3JheS0yMDAgdHJhY2tpbmctdGlnaHRlclwiPlNpbXBsaWNpdMOpLCBwYXMgZGUgcsOpZ2xhZ2VzIHRlY2huaXF1ZXM8L2gzPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTYgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEwIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIvYWNoYXRcIiBjbGFzcz1cImJnLXNlY29uZCBweC0xMiBweS0zIHJvdW5kZWQtZnVsbCBzaGFkb3cgdGV4dC0yeGwgdHJhY2tpbmctdGlnaHRlciBmb250LXNlbWlib2xkXCI+QWNoZXRlcjwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0ZXJcIj5WU1QzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0ZXJcIj5BdWRpb1VuaXQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRlclwiPkNMQVA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRlclwiPkFBWDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBmb250LWxpZ2h0IHRyYWNraW5nLXRpZ2h0IHRleHQtY2VudGVyXCI+V2luZG93cyAmIE1hY09TIGNvbXBhdGlibGU8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy03LzEyIHByLTVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBtdC0xNiBhc3BlY3QtWzI0MzIvMTQ0Ml0gdy1mdWxsXCIgcmVmPVwidnN0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtaW5zZXQtMiByb3VuZGVkLVtjYWxjKHRoZW1lKGJvcmRlclJhZGl1cy54bCkrdGhlbWUoc3BhY2luZy4yKSldIGJnLXdoaXRlL1syLjUlXSBzaGFkb3ctW2luc2V0XzBfMF8ycHhfMXB4X3JnYigyNTVfMjU1XzI1NS8yLjUlKV0gcmluZy0xIHJpbmctd2hpdGUvMTBcIiAvPlxuICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL3ByZXZpZXcucG5nXCIgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgcm91bmRlZC14bCBzaGFkb3ctMnhsIHJpbmctMSByaW5nLXdoaXRlLzEwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIGlkPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJweC1bNXZ3XVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC1mdWxsXCI+XG4gICAgICAgICAgPGRpdiByZWY9XCJ0ZXh0V3JhcHBlclwiIGNsYXNzPVwic3BsaXRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+TGVWb2l4PC9zcGFuPiBlc3QgdW4gcGx1Z2luIGNvbsOndSBwb3VyIG1peGVyIGxlcyB2b2l4IGVuIHF1ZWxxdWVzIGNsaWNzLCBncsOiY2Ugw6AgdW5lIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+Y2hhw65uZSBk4oCZZWZmZXRzIGhhdXQgZGUgZ2FtbWU8L3NwYW4+IHBlcmZlY3Rpb25uw6llIHBlbmRhbnQgcHLDqHMgZGUgNCBhbnMuXG4gICAgICAgICAgICA8aHI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZFwiPlNhbnMgbGF0ZW5jZTwvc3Bhbj4gKDAgbXMpLCBMZVZvaXggcGV1dCDDqnRyZSA8c3BhbiBjbGFzcz1cInNlY29uZFwiPnV0aWxpc8OpIGVuIGRpcmVjdDwvc3Bhbj4sIG3Dqm1lIHBlbmRhbnQgbOKAmWVucmVnaXN0cmVtZW50LCBhdmVjIHVuIG1vbml0b3JpbmcgZW4gdGVtcHMgcsOpZWwuXG4gICAgICAgICAgICA8aHI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZFwiPkF1Y3VuIHLDqWdsYWdlIHRlY2huaXF1ZSBjb21wbGlxdcOpPC9zcGFuPiA6IGNoYXF1ZSBib3V0b24gY29ycmVzcG9uZCDDoCB1bmUgYWN0aW9uIG11c2ljYWxlIGNvbmNyw6h0ZSwgcGVuc8OpZSBwb3VyIGFsbGVyIGRyb2l0IMOgIGzigJllc3NlbnRpZWwuXG4gICAgICAgICAgICA8aHI+XG4gICAgICAgICAgICBMZSB0b3V0IGVzdCBvcHRpbWlzw6kgcG91ciB1bmUgPHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5jb25zb21tYXRpb24gQ1BVIG1pbmltYWxlPC9zcGFuPiwgYWZpbiBxdWUgdm91cyBwdWlzc2lleiBs4oCZaW5zw6lyZXIgc3VyIHRvdXRlcyBsZXMgcGlzdGVzIHZvY2FsZXMgZGUgdm90cmUgcHJvamV0LCBzYW5zIGNvbXByb21pcy5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8c2VjdGlvbiBpZD1cImZvbmN0aW9ubmFsaXRlc1wiIGNsYXNzPVwicC1bNXZ3XVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctZnVsbCByZWxhdGl2ZVwiPlxuICAgICAgICAgIDxpbWcgYWx0PVwiXCIgc3JjPVwiL3Jlcy9pbWFnZXMva25vYi5wbmdcIiBjbGFzcz1cImgtZnVsbCB3LWF1dG8gYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGJvdHRvbS0wXCIgLz5cbiAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL2J1aWxkL2tub2IucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIGxlZnQtMCBib3R0b20tMFwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTQwIGJvdHRvbS0wIHctNC8xMiBmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LTN4bCBtYi04IHRleHQtY2VudGVyXCI+PHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5MYSBDb21wcmVzc2lvbjwvc3Bhbj4g4oCcT25lIEtub2LigJ08L2gzPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LTJ4bCBtYi02IHRleHQtY2VudGVyXCI+VW5lIHNldWxlIGNvbW1hbmRlIHBvdXIgdW5lIGNvbXByZXNzaW9uIHZvY2FsZSBjb21wbMOodGUuIFNvdXMgbGUgY2Fwb3QgOiB1bmUgY29tcHJlc3Npb24gZG91Y2UsIHVuZSBjb21wcmVzc2lvbiBhZ3Jlc3NpdmUsIGV0IHVuIGxpbWl0ZXIgZmluYWwsIHBhcmZhaXRlbWVudCBlbmNoYcOubsOpcyBlbiBzw6lyaWUgZXQgZW4gcGFyYWxsw6hsZSBwb3VyIHVuIHJlbmR1IMOgIGxhIGZvaXMgcHVpc3NhbnQgZXQgbmF0dXJlbC48L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtMnhsIG1iLTYgdGV4dC1jZW50ZXJcIj5BdWN1biByw6lnbGFnZSB0ZWNobmlxdWUgw6AgZ8OpcmVyIDogdG91dCBlc3QgcGVuc8OpIHBvdXIgbGEgdm9peCwgcHLDqnQgw6AgbOKAmWVtcGxvaS48L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtMnhsIHRleHQtY2VudGVyXCI+QXZlYyBzb24gaW5kaWNhdGV1ciBkZSBuaXZlYXUgZOKAmWVudHLDqWUgaW50w6lncsOpIHBvdXIgdmlzZXIgw6AgY2hhcXVlIGZvaXMgbGUgc3dlZXQgc3BvdCBpZMOpYWwuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIHJlZj1cInNlY3Rpb25fbGluZXNcIiBjbGFzcz1cImJnLWJsYWNrIHJlbGF0aXZlIHB4LVs1dnddIHBiLVs1dmhdIHB0LVsxMHZoXVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctZnVsbCByZWxhdGl2ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIFwiPlxuICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCIvcmVzL2ltYWdlcy92c3RfbGluZXMucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTBcIiAvPlxuICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCIvcmVzL2ltYWdlcy9idWlsZC9saW5lXzEucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwXCIgOmNsYXNzPVwieyAnb3BhY2l0eS0xMDAnOiBhY3RpdmVJbmRleCA9PT0gMCwgJ29wYWNpdHktMjAnOiBhY3RpdmVJbmRleCAhPT0gMCwgJ2hpZGRlbic6IGFjdGl2ZUluZGV4IDwgMCB9XCIgLz5cbiAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgc3JjPVwiL3Jlcy9pbWFnZXMvYnVpbGQvbGluZV8yLnBuZ1wiIGNsYXNzPVwiaC1mdWxsIHctYXV0byBhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJvdHRvbS0wIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiIDpjbGFzcz1cInsgJ29wYWNpdHktMTAwJzogYWN0aXZlSW5kZXggPT09IDEsICdvcGFjaXR5LTIwJzogYWN0aXZlSW5kZXggIT09IDEsICdoaWRkZW4nOiBhY3RpdmVJbmRleCA8IDEgfVwiIC8+XG4gICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL2J1aWxkL2xpbmVfMy5wbmdcIiBjbGFzcz1cImgtZnVsbCB3LWF1dG8gYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBib3R0b20tMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAyLCAnb3BhY2l0eS0yMCc6IGFjdGl2ZUluZGV4ICE9PSAyLCAnaGlkZGVuJzogYWN0aXZlSW5kZXggPCAyIH1cIiAvPlxuICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCIvcmVzL2ltYWdlcy9idWlsZC9saW5lXzQucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwXCIgOmNsYXNzPVwieyAnb3BhY2l0eS0xMDAnOiBhY3RpdmVJbmRleCA9PT0gMywgJ29wYWNpdHktMjAnOiBhY3RpdmVJbmRleCAhPT0gMywgJ2hpZGRlbic6IGFjdGl2ZUluZGV4IDwgMyB9XCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs5dmhdIGxlZnQtMTAgdy01LzEyIHRleHQtMnhsIHRleHQtY2VudGVyIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiIDpjbGFzcz1cInsgJ29wYWNpdHktMTAwJzogYWN0aXZlSW5kZXggPT09IDAsICdvcGFjaXR5LTAnOiBhY3RpdmVJbmRleCAhPT0gMCB9XCI+XG4gICAgICAgICAgICAgIFVuIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+RVEgNCBiYW5kZXM8L3NwYW4+IHBlbnPDqSBwb3VyIGxhIHZvaXgsIGF2ZWMgdW5lIGJhbmRlIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+4oCcQWly4oCdIGR5bmFtaXF1ZSBldCBpbnRlbGxpZ2VudGU8L3NwYW4+LCBmcnVpdCBk4oCZdW4gZGVzaWduIHVuaXF1ZVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVsyMHZoXSBsZWZ0LTEwIHctNS8xMiB0ZXh0LWNlbnRlciB0ZXh0LTJ4bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAxLCAnb3BhY2l0eS0wJzogYWN0aXZlSW5kZXggIT09IDEgfVwiPlxuICAgICAgICAgICAgICBVbiA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmZpbHRyZSB0w6lsw6lwaG9uZTwvc3Bhbj4gcHJvZ3Jlc3NpZiwgdW4gPHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5kb3VibGV1cjwvc3Bhbj4gbW9uby1jb21wYXRpYmxlLCB1biA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmTDqS1lc3NldXIgaW50ZWxsaWdlbnQ8L3NwYW4+LCB1biA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmNob3J1czwvc3Bhbj4gZXQgdW5lIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+c2F0dXJhdGlvbjwvc3Bhbj4gOiB0b3V0IHBvdXIgc2N1bHB0ZXIgdm9zIHZvaXggYXZlYyBkZXMgcsOpZ2xhZ2VzIHNpbXBsZXMsIGltbcOpZGlhdHMgZXQgY3LDqWF0aWZzICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs1MHZoXSBsZWZ0LTEwIHctNS8xMiB0ZXh0LWNlbnRlciB0ZXh0LTJ4bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAyLCAnb3BhY2l0eS0wJzogYWN0aXZlSW5kZXggIT09IDIgfVwiPlxuICAgICAgICAgICAgICBVbiA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmRlbGF5IGFkYXB0YXRpZjwvc3Bhbj4gKGF1dG8gZHVja2luZykgOiBpbCBzZSBmYWl0IGRpc2NyZXQgcGVuZGFudCBsZSBjaGFudCwgcHVpcyByZXByZW5kIGRlIGzigJlhbXBsZXVyIGVudHJlIGxlcyBwaHJhc2VzIHBvdXIgZW5yaWNoaXIgbGEgcGlzdGUuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs0OHZoXSBsZWZ0LTEwIHctNS8xMiB0ZXh0LWNlbnRlciB0ZXh0LTJ4bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAzLCAnb3BhY2l0eS0wJzogYWN0aXZlSW5kZXggIT09IDMgfVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZFwiPjQgUmV2ZXJicyBoYXV0IGRlIGdhbW1lPC9zcGFuPiwgcGVuc8OpZXMgcG91ciBsYSB2b2l4LiBMZXMgcmV2ZXJicyBz4oCZYWp1c3RlbnQgPHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5hdXRvbWF0aXF1ZW1lbnQ8L3NwYW4+IHBvdXIgbGFpc3NlciBsYSB2b2l4IGxlYWQgYmllbiBlbiBhdmFudCBsb3JzIGR1IGNoYW50IGV0IHNlIGxpYsOocmVudCBlbiBmaW4gZGUgcGhyYXNlXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cInRleHQtbGVmdCB0ZXh0LXhsIG10LTNcIj5cbiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5TaG9ydCA6PC9zcGFuPiBwbGFjZSBsYSB2b2l4IGRhbnMgdW5lIHBpw6hjZSBpbnRpbWU8L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz1cInNlY29uZFwiPlNtYWxsIDo8L3NwYW4+IHVuZSBwbGF0ZSBjaGFsZXVyZXVzZSBldCBwcsOpY2lzZTwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPVwic2Vjb25kXCI+QmlnIDo8L3NwYW4+IHVuZSByZXZlcmIgYW1wbGUgZGUgdHlwZSBIYWxsPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5MdXNoIDo8L3NwYW4+IHVuZSBsb25ndWUgSGFsbCB0cmFpdMOpZSwgcGFyZmFpdGUgcG91ciBsZXMgYWRsaWJzIG91IGxlcyBhbWJpYW5jZXMgcGxhbmFudGVzPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIGlkPVwicHJpY2VcIiBjbGFzcz1cInAtWzV2d10gcHQtWzEwdnddIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgvMTIgcHItMTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgYXNwZWN0LVsyNDMyLzE0NDJdIHctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIC1pbnNldC0yIHJvdW5kZWQtW2NhbGModGhlbWUoYm9yZGVyUmFkaXVzLnhsKSt0aGVtZShzcGFjaW5nLjIpKV0gYmctd2hpdGUvWzIuNSVdIHNoYWRvdy1baW5zZXRfMF8wXzJweF8xcHhfcmdiKDI1NV8yNTVfMjU1LzIuNSUpXSByaW5nLTEgcmluZy13aGl0ZS8xMFwiIC8+XG4gICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL3ByZXZpZXcucG5nXCIgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgcm91bmRlZC14bCBzaGFkb3ctMnhsIHJpbmctMSByaW5nLXdoaXRlLzEwXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTQvMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsIG1iLTEwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLWluc2V0LTIgcm91bmRlZC1bY2FsYyh0aGVtZShib3JkZXJSYWRpdXMueGwpK3RoZW1lKHNwYWNpbmcuMikpXSBiZy13aGl0ZS9bMi41JV0gc2hhZG93LVtpbnNldF8wXzBfMnB4XzFweF9yZ2IoMjU1XzI1NV8yNTUvMi41JSldIHJpbmctMSByaW5nLXdoaXRlLzEwXCIgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLXhsIHAtNyBwdC01IGJnLVsjNjEwRDBEXSBmbGV4IGl0ZW1zLWNlbnRlciBwci0xMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMC8xMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWVuZCAtbWItMVwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtci0yIHRleHQteGxcIj5MaWNlbmNlIGNvbXBsw6h0ZTwvcD48c3BhbiBjbGFzcz1cInNlY29uZCB0ZXh0LTJ4bFwiPjQ54oKsPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBvcGFjaXR5LTcwXCI+TGljZW5jZSDDoCB2aWUgYXZlYyBsZXMgbWlzZXMgYSBqb3VyICE8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yLzEyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXdoaXRlIHRleHQteGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2FydC1zaG9wcGluZ1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIC1pbnNldC0yIHJvdW5kZWQtW2NhbGModGhlbWUoYm9yZGVyUmFkaXVzLnhsKSt0aGVtZShzcGFjaW5nLjIpKV0gYmctd2hpdGUvWzIuNSVdIHNoYWRvdy1baW5zZXRfMF8wXzJweF8xcHhfcmdiKDI1NV8yNTVfMjU1LzIuNSUpXSByaW5nLTEgcmluZy13aGl0ZS8xMFwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC14bCBwLTcgcHQtNSBiZy1bIzc3MTAxMF0gZmxleCBpdGVtcy1jZW50ZXIgcHItMTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAvMTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1lbmQgLW1iLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibXItMiB0ZXh0LXhsXCI+RMOpbW8gY29tcGzDqHRlPC9wPjxzcGFuIGNsYXNzPVwic2Vjb25kIHRleHQtMnhsIHRyYWNraW5nLXRpZ2h0ZXJcIj5HUkFUVUlURTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gb3BhY2l0eS03MFwiPlRlc3RlcyBsZXMgZm9uY3Rpb25uYWxpdMOpcyBwZW5kYW50IDcgam91cnMgITwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTIvMTJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtd2hpdGUgdGV4dC14bCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYXJ0LXNob3BwaW5nXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8c2VjdGlvbiBpZD1cImZhcVwiIHN0eWxlPVwiaGVpZ2h0OiBhdXRvXCI+XG4gICAgICAgIDxGQVEgLz5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwPlxuaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQgfSBmcm9tICd2dWUnXG5pbXBvcnQgeyBnc2FwIH0gZnJvbSAnZ3NhcCdcbmltcG9ydCB7IFNjcm9sbFRyaWdnZXIgfSBmcm9tICdnc2FwL1Njcm9sbFRyaWdnZXInXG5pbXBvcnQgeyBTY3JvbGxUb1BsdWdpbiB9IGZyb20gXCJnc2FwL1Njcm9sbFRvUGx1Z2luXCI7XG5pbXBvcnQgeyBTY3JvbGxTbW9vdGhlciB9IGZyb20gXCJnc2FwL1Njcm9sbFNtb290aGVyXCI7XG5pbXBvcnQge1NwbGl0VGV4dH0gZnJvbSBcImdzYXAvU3BsaXRUZXh0XCI7XG5pbXBvcnQgeyBHU0RldlRvb2xzIH0gZnJvbSBcImdzYXAvR1NEZXZUb29sc1wiO1xuaW1wb3J0IEZBUSBmcm9tIFwiLi4vRkFRLnZ1ZVwiO1xuXG5nc2FwLnJlZ2lzdGVyUGx1Z2luKFNjcm9sbFRyaWdnZXIsIFNjcm9sbFRvUGx1Z2luLCBTY3JvbGxTbW9vdGhlciwgR1NEZXZUb29scylcblxuY29uc3QgY29udGFpbmVyID0gcmVmKCk7XG5jb25zdCB0ZXh0V3JhcHBlciA9IHJlZihudWxsKTtcbmNvbnN0IHZzdCA9IHJlZihudWxsKTtcbmNvbnN0IHMxID0gcmVmKCk7XG5jb25zdCBzZWN0aW9uX2xpbmVzID0gcmVmKCk7XG5cbmNvbnN0IGxpbmVzID0gW1xuICBcIkNvbXByZXNzZXVyIDogY29udHLDtGxlIGxhIGR5bmFtaXF1ZS5cIixcbiAgXCLDiWdhbGlzZXVyIDogYWp1c3RlIGxlcyBmcsOpcXVlbmNlcy5cIixcbiAgXCJSw6l2ZXJiw6lyYXRpb24gOiBham91dGUgZGUgbOKAmWVzcGFjZS5cIixcbiAgXCJTdMOpcsOpbyB3aWRlbmVyIDogw6lsYXJnaXQgbOKAmWltYWdlIHNvbm9yZS5cIlxuXVxuXG5jb25zdCBhY3RpdmVJbmRleCA9IHJlZigwKVxuXG5vbk1vdW50ZWQoKCkgPT4ge1xuICBTY3JvbGxTbW9vdGhlci5jcmVhdGUoe1xuICAgIHNtb290aDogMSwgLy8gaG93IGxvbmcgKGluIHNlY29uZHMpIGl0IHRha2VzIHRvIFwiY2F0Y2ggdXBcIiB0byB0aGUgbmF0aXZlIHNjcm9sbCBwb3NpdGlvblxuICAgIGVmZmVjdHM6IHRydWUsIC8vIGxvb2tzIGZvciBkYXRhLXNwZWVkIGFuZCBkYXRhLWxhZyBhdHRyaWJ1dGVzIG9uIGVsZW1lbnRzXG4gICAgc21vb3RoVG91Y2g6IDAuMSwgLy8gbXVjaCBzaG9ydGVyIHNtb290aGluZyB0aW1lIG9uIHRvdWNoIGRldmljZXMgKGRlZmF1bHQgaXMgTk8gc21vb3RoaW5nIG9uIHRvdWNoIGRldmljZXMpXG4gIH0pO1xuXG4gIFNjcm9sbFRyaWdnZXIuZGVmYXVsdHMoe1xuICAgIHNjcm9sbGVyOiBjb250YWluZXIudmFsdWVcbiAgfSk7XG5cbiAgU2Nyb2xsVHJpZ2dlci5jcmVhdGUoe1xuICAgIHRyaWdnZXI6IHNlY3Rpb25fbGluZXMudmFsdWUsXG4gICAgc3RhcnQ6IFwidG9wIHRvcFwiLFxuICAgIGVuZDogKCkgPT4gYCs9JHt3aW5kb3cuaW5uZXJIZWlnaHQgKiBsaW5lcy5sZW5ndGh9YCxcbiAgICBwaW46IHRydWUsXG4gICAgc2NydWI6IHRydWUsXG4gICAgb25VcGRhdGU6IHNlbGYgPT4ge1xuICAgICAgYWN0aXZlSW5kZXgudmFsdWUgPSBNYXRoLnJvdW5kKHNlbGYucHJvZ3Jlc3MgKiAobGluZXMubGVuZ3RoIC0gMSkpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IHNwbGl0ID0gU3BsaXRUZXh0LmNyZWF0ZSh0ZXh0V3JhcHBlci52YWx1ZSwge1xuICAgIHR5cGU6IFwid29yZHMsbGluZXNcIixcbiAgICBsaW5lc0NsYXNzOiBcImxpbmVcIlxuICB9KTtcblxuICBjb25zdCB0bCA9IGdzYXAudGltZWxpbmUoe1xuICAgIHNjcm9sbFRyaWdnZXI6IHtcbiAgICAgIHRyaWdnZXI6ICcuc3BsaXQnLFxuICAgICAgc3RhcnQ6IFwidG9wIDkwJVwiLFxuICAgICAgdG9nZ2xlQWN0aW9uczogXCJwbGF5IG5vbmUgbm9uZSBub25lXCIsXG4gICAgfVxuICB9KVxuICAuZnJvbShzcGxpdC5saW5lcywge1xuICAgIGR1cmF0aW9uOiAwLjcyLFxuICAgIHlQZXJjZW50OiAxMjAsXG4gICAgb3BhY2l0eTogMCxcbiAgICBzdGFnZ2VyOiAwLjE1LFxuICAgIGVhc2U6IFwiZXhwby5vdXRcIixcbiAgfSk7XG5cbiAgY29uc3QgdGxWU1QgPSBnc2FwLnRpbWVsaW5lKHsgfSk7XG4gIHRsVlNULmZyb21Ubyh2c3QudmFsdWUsXG4gICAge1xuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHNjYWxlOiAxLjA1LFxuICAgIH0sXG4gICAge1xuICAgICAgb3BhY2l0eTogMSxcbiAgICAgIHNjYWxlOiAxLFxuICAgICAgZHVyYXRpb246IDAuNixcbiAgICAgIGRlbGF5OiAzLjcsXG4gICAgICBlYXNlOiAnc2luZS5vdXQnLFxuICAgIH1cbiAgKTtcblxuICB0bFZTVC5yZXN1bWUoKTtcbn0pXG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VjdGlvbiB7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPFRyYW5zaXRpb25cbiAgICAgIGFwcGVhclxuICAgICAgZW50ZXItYWN0aXZlLWNsYXNzPVwiZHVyYXRpb24tMjAwIGVhc2Utb3V0XCJcbiAgICAgIGVudGVyLWZyb20tY2xhc3M9XCJvcGFjaXR5LTBcIlxuICAgICAgZW50ZXItdG8tY2xhc3M9XCJvcGFjaXR5LTEwMFwiXG4gICAgICBsZWF2ZS1hY3RpdmUtY2xhc3M9XCJkdXJhdGlvbi0xNTAgZWFzZS1pblwiXG4gICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDBcIlxuICAgICAgbGVhdmUtdG8tY2xhc3M9XCJvcGFjaXR5LTBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZpeGVkIGluc2V0LTAgei1bMTAwMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC00XCJcbiAgICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwibG9nb3V0LXRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWJsYWNrLzgwXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIHctZnVsbCBsZzptYXgtdy1sZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSAtaW5zZXQtMyByb3VuZGVkLVsyOHB4XSBib3JkZXIgYm9yZGVyLXdoaXRlLzMwIHJvdGF0ZS1bM2RlZ11cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSAtaW5zZXQtNiByb3VuZGVkLVszMHB4XSBib3JkZXIgYm9yZGVyLXdoaXRlLzIwIC1yb3RhdGUtWzZkZWddXCJcbiAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICA8IS0tIFBhbmVsIC0tPlxuICAgICAgICA8VHJhbnNpdGlvblxuICAgICAgICAgICAgYXBwZWFyXG4gICAgICAgICAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJkdXJhdGlvbi0yMDAgZWFzZS1vdXRcIlxuICAgICAgICAgICAgZW50ZXItZnJvbS1jbGFzcz1cIm9wYWNpdHktMCB0cmFuc2xhdGUteS0yIHNjYWxlLVswLjk4XVwiXG4gICAgICAgICAgICBlbnRlci10by1jbGFzcz1cIm9wYWNpdHktMTAwIHRyYW5zbGF0ZS15LTAgc2NhbGUtMTAwXCJcbiAgICAgICAgICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cImR1cmF0aW9uLTE1MCBlYXNlLWluXCJcbiAgICAgICAgICAgIGxlYXZlLWZyb20tY2xhc3M9XCJvcGFjaXR5LTEwMCB0cmFuc2xhdGUteS0wIHNjYWxlLTEwMFwiXG4gICAgICAgICAgICBsZWF2ZS10by1jbGFzcz1cIm9wYWNpdHktMCB0cmFuc2xhdGUteS0yIHNjYWxlLVswLjk4XVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHJlZj1cInBhbmVsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSByb3VuZGVkLTN4bCBiZy13aGl0ZSBzaGFkb3ctMnhsIHJpbmctMSByaW5nLWJsYWNrLzVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC04IHB0LTEwIHBiLTggdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gbWItNSBoLTI0IHctMjQgcC00IHJlbGF0aXZlIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gT25kZSBkZSBwdWxzYXRpb24gKGzDqWfDqHJlKSAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB1bHNlLXdhdmVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxzZS13YXZlIGRlbGF5XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwhLS0gTG9nbyBhdmVjIGJhdHRlbWVudCBkZSBjb2V1ciAtLT5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9yZXMvaW1hZ2VzL2xvZ29fbW91dGguc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJoZWFydGJlYXQgcmVsYXRpdmUgei0xMFwiPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCIhZXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8aDIgaWQ9XCJsb2dvdXQtdGl0bGVcIiBjbGFzcz1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LW5ldXRyYWwtOTAwXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0KERFTU9fU1VHR0VTVF9USVRMRSkgfX1cbiAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMyB0ZXh0LXNtIGxlYWRpbmctNiB0ZXh0LW5ldXRyYWwtNjAwXCIgdi1odG1sPVwidChERU1PX1NVR0dFU1RfVEVYVF9IVE1MKVwiPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBBY3Rpb25zIC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIvZGVtb1wiIGNsYXNzPVwidGV4dC1zbSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbmV1dHJhbC0zMDAgYmctd2hpdGUgZm9udC1zZW1pYm9sZCBweC00IHB5LTMgdHJhbnNpdGlvbiB0ZXh0LW5ldXRyYWwtOTAwIHNoYWRvdy1zbSBob3ZlcjpiZy1uZXV0cmFsLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1mbGFza1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgIHt7IHQoREVNT19TVUdHRVNUX1RBS0VfREVNTykgfX1cbiAgICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBpZD1cImNvbnRpbnVlLXB1cmNoYXNlXCJcbiAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cImNvdW50ZG93biA+IDBcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICAgICAnZmxleC0xIGdyb3VwIHRleHQtc20gdy1mdWxsIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiByb3VuZGVkLWZ1bGwgcHgtMiBweS0zIHNoYWRvdy1zbSBmb250LXNlbWlib2xkIHRyYW5zaXRpb24nLFxuICAgICAgICAgICAgICAgICAgICBjb3VudGRvd24gPiAwXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYmctbmV1dHJhbC03MDAgY3Vyc29yLW5vdC1hbGxvd2VkIHRleHQtd2hpdGUvOTAnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnYmctcHJpbWFyeSBjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGhvdmVyOmJyaWdodG5lc3MtMTEwJ1xuICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYXJ0LXNob3BwaW5nXCI+PC9pPlxuICAgICAgICAgICAgICAgICAge3sgY291bnRkb3duID4gMFxuICAgICAgICAgICAgICAgICAgICA/IChpc0ZyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGBDb250aW51ZXIgdmVycyBsXFwnYWNoYXQgZGFucyAke2NvdW50ZG93bn1gXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGBDb250aW51ZSB0byBwdXJjaGFzZSBpbiAke2NvdW50ZG93bn1gKVxuICAgICAgICAgICAgICAgICAgICA6IHQoREVNT19TVUdHRVNUX0NPTlRJTlVFX1BVUkNIQVNFKSB9fVxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1hcnJvdy1yaWdodC1sb25nIGdyb3VwLWhvdmVyOnRyYW5zbGF0ZS14LTAuNSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9UcmFuc2l0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvVHJhbnNpdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIG5leHRUaWNrIH0gZnJvbSAndnVlJ1xuICBpbXBvcnQgeyB1c2VVeFRyYW5zbGF0b3IgfSBmcm9tICcuLi8uLi8uLi9pMThuL3VzZVV4VHJhbnNsYXRvcidcbiAgaW1wb3J0IHsgREVNT19TVUdHRVNUX1RJVExFLCBERU1PX1NVR0dFU1RfVEVYVF9IVE1MLCBERU1PX1NVR0dFU1RfVEFLRV9ERU1PLCBERU1PX1NVR0dFU1RfQ09OVElOVUVfUFVSQ0hBU0UgfSBmcm9tICcuLi8uLi8uLi9pMThuL2tleXMnXG5cbiAgY29uc3QgeyB0IH0gPSB1c2VVeFRyYW5zbGF0b3IoKVxuXG4gIC8vIENvbXB0ZSDDoCByZWJvdXJzIGRlIDQgc2Vjb25kZXMgYXZhbnQgZCdhdXRvcmlzZXIgbGUgY2xpYyBzdXIgbGUgYm91dG9uIGQnYWNoYXRcbiAgY29uc3QgY291bnRkb3duID0gcmVmKDMpXG4gIGxldCBpbnRlcnZhbElkXG5cbiAgLy8gRMOpdGVjdGlvbiBzaW1wbGUgZGUgbGEgbGFuZ3VlIChGUi9FTikgcG91ciBsZSBsaWJlbGzDqSBkZSBkw6ljb21wdGUgYWpvdXTDqVxuICBjb25zdCBsYW5nID0gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nIHx8IG5hdmlnYXRvci5sYW5ndWFnZSkpIHx8ICdlbidcbiAgY29uc3QgaXNGciA9IGxhbmcudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdmcicpXG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKGNvdW50ZG93bi52YWx1ZSA+IDApIHtcbiAgICAgICAgY291bnRkb3duLnZhbHVlIC09IDFcbiAgICAgIH1cbiAgICAgIGlmIChjb3VudGRvd24udmFsdWUgPD0gMCkge1xuICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpXG4gICAgICB9XG4gICAgfSwgMTAwMClcbiAgfSlcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGludGVydmFsSWQpIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZClcbiAgfSlcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gIC8qIEFuaW1hdGlvbiBiYXR0ZW1lbnQgZGUgY29ldXIgcG91ciBsZSBsb2dvICovXG4gIC5oZWFydGJlYXQge1xuICAgIC8qIEFsbG9uZ2VyIGxhIGR1csOpZSBwb3VyIGVzcGFjZXIgZGF2YW50YWdlIGxlcyAyIHB1bHNhdGlvbnMgKi9cbiAgICBhbmltYXRpb246IGhlYXJ0YmVhdCAyLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgfVxuXG4gIEBrZXlmcmFtZXMgaGVhcnRiZWF0IHtcbiAgICAvKiBEb3VibGUgYmF0dGVtZW50IGF2ZWMgZXNwYWNlbWVudCBwbHVzIGxvbmcsIHB1aXMgcmVwb3MgKi9cbiAgICAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH1cbiAgICAxMiUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMDcpOyB9XG4gICAgMjAlIHsgdHJhbnNmb3JtOiBzY2FsZSgwLjk4NSk7IH1cbiAgICA1OCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMTA1KTsgfVxuICAgIDY2JSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH1cbiAgICAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxuICB9XG5cbiAgLyogT25kZSBzdWJ0aWxlIGVuIG9wYWNpdMOpIGRlcnJpw6hyZSBsZSBsb2dvICovXG4gIC5wdWxzZS13YXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OyAvKiBmdWxsICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yOyAvKiB1dGlsaXNlIGxhIGNvdWxldXIgcHJpbWFpcmUgdmlhIC50ZXh0LXByaW1hcnkgKi9cbiAgICBvcGFjaXR5OiAwOyAvKiBpbnZpc2libGUganVzcXUnYXUgcGljIGRlIHB1bHNhdGlvbiAqL1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLyogU3luY2hyb25pc2VyIGxhIGR1csOpZSBkZSBsJ29uZGUgYXZlYyBsZSBoZWFydGJlYXQgcG91ciBjb2xsZXIgYXV4IHB1bHNhdGlvbnMgKi9cbiAgICBhbmltYXRpb246IHB1bHNlLXdhdmUgMi40cyBlYXNlLW91dCBpbmZpbml0ZTtcbiAgICBmaWx0ZXI6IGJsdXIoMC41cHgpO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gIH1cblxuICAucHVsc2Utd2F2ZS5kZWxheSB7XG4gICAgLyogRMOpY2FsZXIgcHLDqWNpc8OpbWVudCBwb3VyIGxhIDJlIHB1bHNhdGlvbiAoZGUgMTIlIMOgIDU4JSA9IDQ2JSBkZSAyLjRzID0+IH4xLjEwNHMpICovXG4gICAgYW5pbWF0aW9uLWRlbGF5OiAxLjEwNHM7XG4gIH1cblxuICBAa2V5ZnJhbWVzIHB1bHNlLXdhdmUge1xuICAgIC8qIE9uZGUgYWxpZ27DqWUgc3VyIGxlcyBwaWNzIGR1IGhlYXJ0YmVhdCAofjEyJSBldCB+NTglKSAqL1xuICAgIDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgb3BhY2l0eTogMDsgfVxuICAgIDExLjklIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgb3BhY2l0eTogMDsgfVxuICAgIC8qIETDqWNsZW5jaGVtZW50IGRlIGwnb25kZSBhdSAxZXIgcGljICovXG4gICAgMTIlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTsgb3BhY2l0eTogMC4xMjsgfVxuICAgIDMwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4zNSk7IG9wYWNpdHk6IDAuMDg7IH1cbiAgICA0NSUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7IG9wYWNpdHk6IDAuMDQ7IH1cbiAgICAvKiBGaW5pciBsJ29uZGUgYXZhbnQgbGUgcmVwb3MgKDY2JSkgKi9cbiAgICA2NiUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuNTUpOyBvcGFjaXR5OiAwOyB9XG4gICAgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS41NSk7IG9wYWNpdHk6IDA7IH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXA+XG5pbXBvcnQgeyB1c2VVeFRyYW5zbGF0b3IgfSBmcm9tICcuLi8uLi8uLi9pMThuL3VzZVV4VHJhbnNsYXRvcidcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gIGxvY2FsZXM6IHsgdHlwZTogQXJyYXksIGRlZmF1bHQ6ICgpID0+IFsnZnInLCAnZW4nXSB9LCAvLyBjb25maWd1cmUgaWNpIHRlcyBsb2NhbGVzXG4gIGxhYmVsOiAgIHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnTGFuZ3VlJyB9XG59KVxuXG5jb25zdCB7IGN1cnJlbnRMb2NhbGUsIHNldExvY2FsZSB9ID0gdXNlVXhUcmFuc2xhdG9yKClcblxuZnVuY3Rpb24gc2V0TG9jYWxlRXZlbnQobG9jYWxlKSB7XG4gIGlmIChsb2NhbGUgPT09IGN1cnJlbnRMb2NhbGUudmFsdWUpIHJldHVyblxuXG4gIHNldExvY2FsZShsb2NhbGUpO1xuXG4gIGZldGNoKCcvYXBpL3VzZXIvdXBkYXRlLWxvY2FsZScsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGxvY2FsZTogbG9jYWxlIH0pXG4gIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gdXBkYXRlIHVzZXIgbG9jYWxlOicsIGVycm9yKVxuICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcbiAgfSlcbn1cbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgbXItM1wiPlxuICAgIDxzcGFuIGNsYXNzPVwiZmkgZmktZnIgcm91bmRlZC14cyBvcGFjaXR5LTUwIHRleHQteGwgY3Vyc29yLXBvaW50ZXIgc2F0dXJhdGUtNTBcIiBAY2xpY2s9XCJzZXRMb2NhbGVFdmVudCgnZnInKVwiIDpjbGFzcz1cInsnb3BhY2l0eS0xMDAgc2F0dXJhdGUtMTAwJyA6IGN1cnJlbnRMb2NhbGUgPT09ICdmcid9XCI+PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiZmkgZmktZ2Igcm91bmRlZC14cyBvcGFjaXR5LTUwIHRleHQteGwgY3Vyc29yLXBvaW50ZXIgc2F0dXJhdGUtNTBcIiBAY2xpY2s9XCJzZXRMb2NhbGVFdmVudCgnZW4nKVwiIDpjbGFzcz1cInsnb3BhY2l0eS0xMDAgc2F0dXJhdGUtMTAwJyA6IGN1cnJlbnRMb2NhbGUgPT09ICdlbid9XCI+PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG5zZWxlY3QgeyBvdXRsaW5lOiBub25lOyB9XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8aGVhZGVyXG4gICAgICByZWY9XCJoZWFkZXJcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgJ2ZpeGVkIHRvcC0wIGxlZnQtNiByaWdodC02IHB5LTQgdGV4dC13aGl0ZSB6LTUwIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTMwMCBoZWFkZXInLFxuICAgICAgc2Nyb2xsZWQgPyAnYmctdHJhbnNwYXJlbnQgc2hhZG93IG5hdi1vbi1zY3JvbGwnIDogJ2JnLXRyYW5zcGFyZW50J1xuICAgIF1cIlxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDVyZW07XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtZnVsbCBuYXYtY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInctMy81IGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiL3Jlcy9pbWFnZXMvbG9nb19tb3V0aC5zdmdcIiBhbHQ9XCJcIiBjbGFzcz1cImgtZnVsbCBtci01IG1sLTIgbG9nb1wiPlxuICAgICAgICA8bmF2IGNsYXNzPVwidGV4dC1zbSB1cHBlcmNhc2UgdHJhY2tpbmctdGlnaHRlciBmb250LW1lZGl1bSBzcGFjZS14LTUgaGlkZGVuIGxnOmZsZXggbXItNVwiPlxuICAgICAgICAgIDxhIEBjbGljaz1cInNjcm9sbFRvKCcjcHJlc2VudGF0aW9uJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+e3sgdChOQVZfUFJFU0VOVEFUSU9OKSB9fTwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI2ZvbmN0aW9ubmFsaXRlcycpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPnt7IHQoTkFWX0ZFQVRVUkVTKSB9fTwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI2RlbW9uc3RyYXRpb24nKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj57eyB0KE5BVl9ERU1PKSB9fTwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI3ByaWNlJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+e3sgdChOQVZfUFJJQ0lORykgfX08L2E+XG4gICAgICAgICAgPGEgQGNsaWNrPVwic2Nyb2xsVG8oJyNmYXEnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj57eyB0KE5BVl9GQVFTKSB9fTwvYT5cbiAgICAgICAgPC9uYXY+XG4gICAgICAgIDxMYW5ndWFnZVN3aXRjaGVyIDpsb2NhbGVzPVwiWydmcicsJ2VuJ11cIiAvPlxuICAgICAgICA8YSB2LWlmPVwiY3VycmVudExvY2FsZSA9PT0gJ2ZyJ1wiIGhyZWY9XCIvbGV0YWxlbnRcIiBjbGFzcz1cIm1sLTQgcHgtNCBweS0xLjUgcm91bmRlZC1mdWxsIHRleHQtWzEwcHhdIGZvbnQtYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IGxldGFsZW50LWJ1dHRvbiB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgIExlVGFsZW50IDxpIGNsYXNzPVwiZmEtc29saWQgZmEtc3RhciBtbC0xIHRleHQtWzhweF1cIj48L2k+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInctMi81IGZsZXgganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIHByLTIuNVwiPlxuICAgICAgICA8YSBocmVmPVwiL3RlbGVjaGFyZ2VtZW50c1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC14cyB1cHBlcmNhc2UgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodGVyIGJnLXByaW1hcnkgcHgtNCBweS0yLjUgcm91bmRlZC1mdWxsIG1yLTMgaGlkZGVuIGxnOmJsb2NrXCI+PGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1hcnJvdy1kb3duXCI+PC9pPiB7eyB0KE5BVl9ET1dOTE9BRFMpIH19PC9hPlxuICAgICAgICA8YSBocmVmPVwiL21vbi1jb21wdGVcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQteHMgZm9udC1zZW1pYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctdGV0dGVyIGJvcmRlci1ncmF5LTMwMCBib3JkZXItMiBweC00IHB5LTIuNSByb3VuZGVkLWZ1bGxcIj48aSBjbGFzcz1cImZhLXNvbGlkIGZhLXVzZXJcIj48L2k+IDxzcGFuIGNsYXNzPVwiaGlkZGVuIGxnOmlubGluZVwiPnt7IHQoTkFWX0FDQ09VTlQpIH19PC9zcGFuPjwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2hlYWRlcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgY29tcHV0ZWQgfSBmcm9tICd2dWUnXG4gIGltcG9ydCB7IGdzYXAgfSBmcm9tICdnc2FwJ1xuICBpbXBvcnQgeyBTY3JvbGxUb1BsdWdpbiB9IGZyb20gJ2dzYXAvU2Nyb2xsVG9QbHVnaW4nXG4gIGltcG9ydCBMYW5ndWFnZVN3aXRjaGVyIGZyb20gXCIuLi9VdGlscy9MYW5ndWFnZVN3aXRjaGVyLnZ1ZVwiO1xuICBpbXBvcnQgeyB1c2VVeFRyYW5zbGF0b3IgfSBmcm9tICcuLi8uLi8uLi9pMThuL3VzZVV4VHJhbnNsYXRvcidcbiAgaW1wb3J0IHsgTkFWX1BSRVNFTlRBVElPTiwgTkFWX0ZFQVRVUkVTLCBOQVZfREVNTywgTkFWX1BSSUNJTkcsIE5BVl9GQVFTLCBOQVZfRE9XTkxPQURTLCBOQVZfQUNDT1VOVCB9IGZyb20gJy4uLy4uLy4uL2kxOG4va2V5cydcblxuICBjb25zdCB7IHQsIGN1cnJlbnRMb2NhbGUgfSA9IHVzZVV4VHJhbnNsYXRvcigpXG5cbiAgY29uc3QgbG9nb1NyYyA9ICcvcmVzL2ltYWdlcy9sb2dvX21vdXRoLnN2ZydcblxuICBjb25zdCBzY3JvbGxlZCA9IHJlZihmYWxzZSlcbiAgY29uc3QgaGVhZGVyID0gcmVmKG51bGwpXG4gIGNvbnN0IGxvZ28gPSByZWYobnVsbClcblxuICBnc2FwLnJlZ2lzdGVyUGx1Z2luKFNjcm9sbFRvUGx1Z2luKVxuXG4gIGNvbnN0IGxvZ29TdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHNjcm9sbGVkLnZhbHVlID8gJzQwcHgnIDogJzU2cHgnLFxuICAgICAgaGVpZ2h0OiBzY3JvbGxlZC52YWx1ZSA/ICc0MHB4JyA6ICc1NnB4J1xuICAgIH1cbiAgfSlcblxuICBmdW5jdGlvbiBhbmltYXRlKCkge1xuICAgIGdzYXAudG8oaGVhZGVyLnZhbHVlLCB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHNjcm9sbGVkLnZhbHVlID8gJ3JnYmEoMCwwLDAsMCknIDogJ3JnYmEoMCwwLDAsMCknLFxuICAgICAgZHVyYXRpb246IDAuMyxcbiAgICAgIG92ZXJ3cml0ZTogJ2F1dG8nXG4gICAgfSlcbiAgICBnc2FwLnRvKGxvZ28udmFsdWUsIHtcbiAgICAgIHdpZHRoOiBzY3JvbGxlZC52YWx1ZSA/ICc0MHB4JyA6ICc1NnB4JyxcbiAgICAgIGhlaWdodDogc2Nyb2xsZWQudmFsdWUgPyAnNDBweCcgOiAnNTZweCcsXG4gICAgICBkdXJhdGlvbjogMC4zLFxuICAgICAgb3ZlcndyaXRlOiAnYXV0bydcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25TY3JvbGwoKSB7XG4gICAgY29uc3QgaGFzU2Nyb2xsZWQgPSB3aW5kb3cuc2Nyb2xsWSA+IDBcbiAgICBpZiAoaGFzU2Nyb2xsZWQgIT09IHNjcm9sbGVkLnZhbHVlKSB7XG4gICAgICBzY3JvbGxlZC52YWx1ZSA9IGhhc1Njcm9sbGVkXG4gICAgICBhbmltYXRlKClcbiAgICB9XG4gIH1cblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIHNjcm9sbGVkLnZhbHVlID0gd2luZG93LnNjcm9sbFkgPiAwXG4gICAgYW5pbWF0ZSgpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgfSlcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKVxuICB9KVxuXG4gIGZ1bmN0aW9uIHNjcm9sbFRvKGVsZW1lbnQpIHtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBpZiAoZWxlbWVudCA9PT0gJyNwcmVzZW50YXRpb24nKSB7XG4gICAgICBvZmZzZXQgPSA1MDtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQgPT09ICcjZm9uY3Rpb25uYWxpdGVzJykge1xuICAgICAgb2Zmc2V0ID0gMTAwO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudCA9PT0gJyNwcmljZScpIHtcbiAgICAgIG9mZnNldCA9IC00NztcbiAgICB9XG4gICAgZ3NhcC50byh3aW5kb3csIHtcbiAgICAgIGR1cmF0aW9uOiAxLjUsXG4gICAgICBzY3JvbGxUbzoge1xuICAgICAgICB5OiBlbGVtZW50LFxuICAgICAgICBvZmZzZXRZOiBvZmZzZXRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIGhlYWRlci5oZWFkZXJfYmx1ciB7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBzYXR1cmF0ZSgxMjAlKSBibHVyKDEwcHgpO1xuICB9XG5cbiAgLmxldGFsZW50LWJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDExMGRlZywgI0QyOEUwMCA0NSUsICNmZmY5ZTYgNTAlLCAjRDI4RTAwIDU1JSk7XG4gICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIDEwMCU7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHRleHQtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLDAsMCwwLjMpO1xuICAgIGFuaW1hdGlvbjogc2hpbmUgM3MgbGluZWFyIGluZmluaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxNXB4IHJnYmEoMjEwLCAxNDIsIDAsIDAuMyk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gIH1cblxuICAubGV0YWxlbnQtYnV0dG9uOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMjVweCByZ2JhKDIxMCwgMTQyLCAwLCAwLjYpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gIH1cblxuICBAa2V5ZnJhbWVzIHNoaW5lIHtcbiAgICB0byB7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0yMDAlO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGhlYWRlclxuICAgICAgcmVmPVwiaGVhZGVyXCJcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICdmaXhlZCB0b3AtMCBsZWZ0LTAgcmlnaHQtMCBweS00IHRleHQtd2hpdGUgei01MCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0zMDAgaGVhZGVyJyxcbiAgICAgIHNjcm9sbGVkID8gJ2JnLXRyYW5zcGFyZW50IGhlYWRlcl9ibHVyIHNoYWRvdycgOiAnYmctdHJhbnNwYXJlbnQnXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInctMi81IGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxuYXYgY2xhc3M9XCJmbGV4IHRleHQtc20gdXBwZXJjYXNlIHRyYWNraW5nLXRpZ2h0ZXIgZm9udC1tZWRpdW0gc3BhY2UteC01XCI+XG4gICAgICAgICAgPGEgQGNsaWNrPVwic2Nyb2xsVG8oJyNwcmVzZW50YXRpb24nKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj57eyB0KE5BVl9QUkVTRU5UQVRJT04pIH19PC9hPlxuICAgICAgICAgIDxhIEBjbGljaz1cInNjcm9sbFRvKCcjZm9uY3Rpb25uYWxpdGVzJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+e3sgdChOQVZfRkVBVFVSRVMpIH19PC9hPlxuICAgICAgICAgIDxhIEBjbGljaz1cInNjcm9sbFRvKCcjcHJpY2UnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj57eyB0KE5BVl9QUklDSU5HKSB9fTwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI2ZhcScpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPnt7IHQoTkFWX0ZBUVMpIH19PC9hPlxuICAgICAgICAgIDxhIGhyZWY9XCIvZG93bmxvYWRcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+e3sgdChOQVZfRE9XTkxPQURTKSB9fTwvYT5cbiAgICAgICAgPC9uYXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvNSBmbGV4IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAgIHJlZj1cImxvZ29cIlxuICAgICAgICAgICAgOnNyYz1cImxvZ29TcmNcIlxuICAgICAgICAgICAgYWx0PVwiTG9nb1wiXG4gICAgICAgICAgICBjbGFzcz1cInRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMFwiXG4gICAgICAgICAgICA6c3R5bGU9XCJsb2dvU3R5bGVcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidy0yLzUgZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgXCI+XG4gICAgICAgIDxhIGhyZWY9XCIvbW9uLWNvbXB0ZVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1zbSB1cHBlcmNhc2UgdHJhY2tpbmctdGlnaHRlciBmb250LW1lZGl1bVwiPnt7IHQoTkFWX0FDQ09VTlQpIH19PC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvaGVhZGVyPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCBjb21wdXRlZCB9IGZyb20gJ3Z1ZSdcbiAgaW1wb3J0IHsgZ3NhcCB9IGZyb20gJ2dzYXAnXG4gIGltcG9ydCB7IFNjcm9sbFRvUGx1Z2luIH0gZnJvbSAnZ3NhcC9TY3JvbGxUb1BsdWdpbidcbiAgaW1wb3J0IHsgdXNlVXhUcmFuc2xhdG9yIH0gZnJvbSAnLi4vLi4vaTE4bi91c2VVeFRyYW5zbGF0b3InXG4gIGltcG9ydCB7IE5BVl9QUkVTRU5UQVRJT04sIE5BVl9GRUFUVVJFUywgTkFWX1BSSUNJTkcsIE5BVl9GQVFTLCBOQVZfRE9XTkxPQURTLCBOQVZfQUNDT1VOVCB9IGZyb20gJy4uLy4uL2kxOG4va2V5cydcblxuICBjb25zdCB7IHQgfSA9IHVzZVV4VHJhbnNsYXRvcigpXG5cbiAgY29uc3QgbG9nb1NyYyA9ICcvcmVzL2ltYWdlcy9sb2dvX21vdXRoLnN2ZydcblxuICBjb25zdCBzY3JvbGxlZCA9IHJlZihmYWxzZSlcbiAgY29uc3QgaGVhZGVyID0gcmVmKG51bGwpXG4gIGNvbnN0IGxvZ28gPSByZWYobnVsbClcblxuICBnc2FwLnJlZ2lzdGVyUGx1Z2luKFNjcm9sbFRvUGx1Z2luKVxuXG4gIGNvbnN0IGxvZ29TdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHNjcm9sbGVkLnZhbHVlID8gJzQwcHgnIDogJzU2cHgnLFxuICAgICAgaGVpZ2h0OiBzY3JvbGxlZC52YWx1ZSA/ICc0MHB4JyA6ICc1NnB4J1xuICAgIH1cbiAgfSlcblxuICBmdW5jdGlvbiBhbmltYXRlKCkge1xuICAgIGdzYXAudG8oaGVhZGVyLnZhbHVlLCB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHNjcm9sbGVkLnZhbHVlID8gJ3JnYmEoMCwwLDAsMCknIDogJ3JnYmEoMCwwLDAsMCknLFxuICAgICAgZHVyYXRpb246IDAuMyxcbiAgICAgIG92ZXJ3cml0ZTogJ2F1dG8nXG4gICAgfSlcbiAgICBnc2FwLnRvKGxvZ28udmFsdWUsIHtcbiAgICAgIHdpZHRoOiBzY3JvbGxlZC52YWx1ZSA/ICc0MHB4JyA6ICc1NnB4JyxcbiAgICAgIGhlaWdodDogc2Nyb2xsZWQudmFsdWUgPyAnNDBweCcgOiAnNTZweCcsXG4gICAgICBkdXJhdGlvbjogMC4zLFxuICAgICAgb3ZlcndyaXRlOiAnYXV0bydcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25TY3JvbGwoKSB7XG4gICAgY29uc3QgaGFzU2Nyb2xsZWQgPSB3aW5kb3cuc2Nyb2xsWSA+IDBcbiAgICBpZiAoaGFzU2Nyb2xsZWQgIT09IHNjcm9sbGVkLnZhbHVlKSB7XG4gICAgICBzY3JvbGxlZC52YWx1ZSA9IGhhc1Njcm9sbGVkXG4gICAgICBhbmltYXRlKClcbiAgICB9XG4gIH1cblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIHNjcm9sbGVkLnZhbHVlID0gd2luZG93LnNjcm9sbFkgPiAwXG4gICAgYW5pbWF0ZSgpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgfSlcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKVxuICB9KVxuXG4gIGZ1bmN0aW9uIHNjcm9sbFRvKGVsZW1lbnQpIHtcbiAgICBnc2FwLnRvKHdpbmRvdywgeyBkdXJhdGlvbjogMiwgc2Nyb2xsVG86IGVsZW1lbnQgfSk7XG4gIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuICBoZWFkZXIuaGVhZGVyX2JsdXIge1xuICAgIGJhY2tkcm9wLWZpbHRlcjogc2F0dXJhdGUoMTIwJSkgYmx1cigxMHB4KTtcbiAgfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LWlmPVwibG9hZGluZ1wiIHJlZj1cImNvbnRhaW5lclwiIGNsYXNzPVwiZml4ZWQgaW5zZXQtMCB6LVsxMDAwXSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLXNjcmVlbiB3LXNjcmVlbiBiZy1jdXN0b21cIj5cbiAgICA8aDIgdi1pZj1cInNob3dMYW5ndWFnZVRpdGxlXCIgcmVmPVwibGFuZ3VhZ2VUaXRsZVwiIGNsYXNzPVwibGFuZ3VhZ2UtdGl0bGVcIj5DaG9vc2UgeW91ciBsYW5ndWFnZTwvaDI+XG4gICAgPGRpdiBjbGFzcz1cImxvZ28td3JhcFwiPlxuICAgICAgPHN2Z1xuICAgICAgICAgIHJlZj1cImxvZ29cIlxuICAgICAgICAgIHdpZHRoPVwiMzkwXCJcbiAgICAgICAgICBoZWlnaHQ9XCIxMzZcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMzkwIDEzNlwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8IS0tIFlldXggYXZlYyBkcmFwZWF1eCBTVkcgLS0+XG4gICAgICAgIDxkZWZzPlxuICAgICAgICAgIDxwYXR0ZXJuIGlkPVwiZmxhZ0ZSXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMVwiIGhlaWdodD1cIjFcIiB2aWV3Qm94PVwiMCAwIDkwMCA2MDBcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgc2xpY2VcIj5cbiAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiOTAwXCIgaGVpZ2h0PVwiNjAwXCIgZmlsbD1cIiMwMDIzOTVcIi8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMzAwXCIgd2lkdGg9XCI2MDBcIiBoZWlnaHQ9XCI2MDBcIiBmaWxsPVwiI2ZmZlwiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCI2MDBcIiB3aWR0aD1cIjMwMFwiIGhlaWdodD1cIjYwMFwiIGZpbGw9XCIjRUQyOTM5XCIvPlxuICAgICAgICAgIDwvcGF0dGVybj5cbiAgICAgICAgICA8cGF0dGVybiBpZD1cImZsYWdFTlwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCIgdmlld0JveD1cIjAgMCA2MCAzMFwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBzbGljZVwiPlxuICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcEVOXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCwwIHYzMCBoNjAgdi0zMCB6XCIvPlxuICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXBFTjJcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0zMCwxNSBoMzAgdjE1IHogdi0xNSBoLTMwIHogaC0zMCB2MTUgeiB2LTE1IGgzMCB6XCIvPlxuICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcEVOKVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAsMCB2MzAgaDYwIHYtMzAgelwiIGZpbGw9XCIjMDEyMTY5XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAsMCBMNjAsMzAgTTYwLDAgTDAsMzBcIiBzdHJva2U9XCIjZmZmXCIgc3Ryb2tlLXdpZHRoPVwiNlwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0wLDAgTDYwLDMwIE02MCwwIEwwLDMwXCIgY2xpcC1wYXRoPVwidXJsKCNjbGlwRU4yKVwiIHN0cm9rZT1cIiNDODEwMkVcIiBzdHJva2Utd2lkdGg9XCI0XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMwLDAgdjMwIE0wLDE1IGg2MFwiIHN0cm9rZT1cIiNmZmZcIiBzdHJva2Utd2lkdGg9XCIxMFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0zMCwwIHYzMCBNMCwxNSBoNjBcIiBzdHJva2U9XCIjQzgxMDJFXCIgc3Ryb2tlLXdpZHRoPVwiNlwiLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8L3BhdHRlcm4+XG4gICAgICAgIDwvZGVmcz5cblxuICAgICAgICA8IS0tIMWSaWwgZ2F1Y2hlIGNvbXBsZXQgZ3JvdXDDqSAtLT5cbiAgICAgICAgPGcgaWQ9XCJsZWZ0RXllXCI+XG4gICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwKVwiPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBpZD1cImxlZnRQYXRoV2hpdGVcIlxuICAgICAgICAgICAgICAgIGQ9XCJNMTQuNzk5MSA1Mi4zOTgzQzEwLjg3NDIgNjYuMjk1MiAxMi44Mjk4IDgxLjIzODMgMjAuMjM1NyA5My45NDA1QzI3LjY0MTcgMTA2LjY0MyAzOS44OTE0IDExNi4wNjMgNTQuMjg5OSAxMjAuMTNDNjguNjg4NSAxMjQuMTk3IDg0LjA1NjUgMTIyLjU3NiA5Ny4wMTMyIDExNS42MjVDMTA5Ljk3IDEwOC42NzQgMTE5LjQ1NCA5Ni45NjE4IDEyMy4zNzkgODMuMDY0OUw2OS4wODkgNjcuNzMxNkwxNC43OTkxIDUyLjM5ODNaXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGlkPVwibGVmdFBhdGhcIlxuICAgICAgICAgICAgICBkPVwiTTE0Ljc5OTEgNTIuMzk4M0MxMC44NzQyIDY2LjI5NTIgMTIuODI5OCA4MS4yMzgzIDIwLjIzNTcgOTMuOTQwNUMyNy42NDE3IDEwNi42NDMgMzkuODkxNCAxMTYuMDYzIDU0LjI4OTkgMTIwLjEzQzY4LjY4ODUgMTI0LjE5NyA4NC4wNTY1IDEyMi41NzYgOTcuMDEzMiAxMTUuNjI1QzEwOS45NyAxMDguNjc0IDExOS40NTQgOTYuOTYxOCAxMjMuMzc5IDgzLjA2NDlMNjkuMDg5IDY3LjczMTZMMTQuNzk5MSA1Mi4zOTgzWlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ1cmwoI2ZsYWdGUilcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2c+XG5cbiAgICAgICAgPCEtLSDFkmlsIGRyb2l0IGNvbXBsZXQgZ3JvdXDDqSAtLT5cbiAgICAgICAgPGcgaWQ9XCJyaWdodEV5ZVwiPlxuICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMSlcIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgaWQ9XCJyaWdodFBhdGhXaGl0ZVwiXG4gICAgICAgICAgICAgICAgZD1cIk0zNzUuMjAxIDUyLjQ5NEMzNzkuMTI2IDY2LjM5MDggMzc3LjE3IDgxLjMzNCAzNjkuNzY0IDk0LjAzNjJDMzYyLjM1OCAxMDYuNzM4IDM1MC4xMDkgMTE2LjE1OSAzMzUuNzEgMTIwLjIyNkMzMjEuMzExIDEyNC4yOTIgMzA1Ljk0MyAxMjIuNjcyIDI5Mi45ODcgMTE1LjcyMUMyODAuMDMgMTA4Ljc3IDI3MC41NDYgOTcuMDU3NSAyNjYuNjIxIDgzLjE2MDZMMzIwLjkxMSA2Ny44MjczTDM3NS4yMDEgNTIuNDk0WlwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBpZD1cInJpZ2h0UGF0aFwiXG4gICAgICAgICAgICAgIGQ9XCJNMzc1LjIwMSA1Mi40OTRDMzc5LjEyNiA2Ni4zOTA4IDM3Ny4xNyA4MS4zMzQgMzY5Ljc2NCA5NC4wMzYyQzM2Mi4zNTggMTA2LjczOCAzNTAuMTA5IDExNi4xNTkgMzM1LjcxIDEyMC4yMjZDMzIxLjMxMSAxMjQuMjkyIDMwNS45NDMgMTIyLjY3MiAyOTIuOTg3IDExNS43MjFDMjgwLjAzIDEwOC43NyAyNzAuNTQ2IDk3LjA1NzUgMjY2LjYyMSA4My4xNjA2TDMyMC45MTEgNjcuODI3M0wzNzUuMjAxIDUyLjQ5NFpcIlxuICAgICAgICAgICAgICBmaWxsPVwidXJsKCNmbGFnRU4pXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9nPlxuXG4gICAgICAgIDxjaXJjbGUgaWQ9XCJleWVMXCIgY3g9XCI3OVwiIGN5PVwiMTAzXCIgcj1cIjE1XCIgZmlsbD1cImJsYWNrXCIvPlxuICAgICAgICA8Y2lyY2xlIGlkPVwiZXllUlwiIGN4PVwiMzA5XCIgY3k9XCIxMDNcIiByPVwiMTVcIiBmaWxsPVwiYmxhY2tcIi8+XG4gICAgICAgIDwhLS0gbGVzIGRldXggXCJ5ZXV4XCIgLS0+XG5cbiAgICAgICAgPCEtLSA9PT0gRmlsdHJlcyBk4oCZb3JpZ2luZSDigJMgaW5jaGFuZ8OpcywganVzdGUgcmVub21tw6lzIHBvdXIgw6p0cmUgcGx1cyBjb3VydHMgPT09IC0tPlxuICAgICAgICA8ZGVmcz5cbiAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMFwiIHg9XCI1LjE1NzMyXCIgeT1cIjQ0LjczNzVcIiB3aWR0aD1cIjEyNS44ODJcIiBoZWlnaHQ9XCI4NS4yNTA3XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMC4wOTEyXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjAuMTgyNFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJlZmZlY3QyX2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjAuNjM4NFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiZWZmZWN0Ml9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJlZmZlY3QzX2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjEuMjc2OFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiZWZmZWN0M19kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJlZmZlY3Q0X2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjIuMTg4OFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiZWZmZWN0NF9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJlZmZlY3Q1X2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjMuODMwNFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiZWZmZWN0NV9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJlZmZlY3Q2X2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3Q2X2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cInNoYXBlXCIvPlxuICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIxXCIgeD1cIjI1OC45NlwiIHk9XCI0NC44MzMyXCIgd2lkdGg9XCIxMjUuODgyXCIgaGVpZ2h0PVwiODUuMjUwN1wiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjAuMDkxMlwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjE4MjRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Ml9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjYzODRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDJfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0M19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxLjI3NjhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDNfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NF9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyLjE4ODhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDRfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIzLjgzMDRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDVfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Nl9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0Nl9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMlwiIHg9XCI1OS4zMzkyXCIgeT1cIjgzLjMzOTJcIiB3aWR0aD1cIjM5LjMyMTZcIiBoZWlnaHQ9XCIzOS42NjA4XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjRcIi8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMlwiLz5cbiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjI1IDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjA5MTJcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Ml9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjE4MjRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDJfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0M19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjYzODRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDNfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NF9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxLjI3NjhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDRfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyLjE4ODhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDVfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Nl9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIzLjgzMDRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDZfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0N19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0N19kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyM1wiIHg9XCIyODkuMzM5XCIgeT1cIjgzLjMzOTJcIiB3aWR0aD1cIjM5LjMyMTZcIiBoZWlnaHQ9XCIzOS42NjA4XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjRcIi8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMlwiLz5cbiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjI1IDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjA5MTJcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Ml9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjE4MjRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDJfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0M19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjYzODRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDNfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NF9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxLjI3NjhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDRfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyLjE4ODhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDVfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Nl9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIzLjgzMDRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDZfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0N19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0N19kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgPC9kZWZzPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQsIG5leHRUaWNrIH0gZnJvbSAndnVlJ1xuICBpbXBvcnQgeyBnc2FwIH0gZnJvbSAnZ3NhcCdcbiAgaW1wb3J0IHsgRHJhd1NWR1BsdWdpbiB9IGZyb20gJ2dzYXAvRHJhd1NWR1BsdWdpbidcbiAgaW1wb3J0IHsgdXNlVXhUcmFuc2xhdG9yIH0gZnJvbSAnLi4vLi4vaTE4bi91c2VVeFRyYW5zbGF0b3InO1xuXG4gIGNvbnN0IHsgY3VycmVudExvY2FsZSwgc2V0TG9jYWxlIH0gPSB1c2VVeFRyYW5zbGF0b3IoKVxuICBnc2FwLnJlZ2lzdGVyUGx1Z2luKERyYXdTVkdQbHVnaW4pXG5cbiAgY29uc3QgbG9hZGluZyA9IHJlZih0cnVlKTtcbiAgY29uc3QgbG9nbyA9IHJlZihudWxsKVxuICBjb25zdCBjb250YWluZXIgPSByZWYobnVsbClcbiAgY29uc3QgbGFuZ3VhZ2VUaXRsZSA9IHJlZihudWxsKVxuICBjb25zdCBzaG93TGFuZ3VhZ2VUaXRsZSA9IHJlZihmYWxzZSlcblxuICAvLyBHZXN0aW9uIGR1IGNvb2tpZVxuICBmdW5jdGlvbiBnZXRDb29raWUobmFtZSkge1xuICAgIGNvbnN0IHZhbHVlID0gYDsgJHtkb2N1bWVudC5jb29raWV9YDtcbiAgICBjb25zdCBwYXJ0cyA9IHZhbHVlLnNwbGl0KGA7ICR7bmFtZX09YCk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMikgcmV0dXJuIHBhcnRzLnBvcCgpLnNwbGl0KCc7Jykuc2hpZnQoKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldENvb2tpZShuYW1lLCB2YWx1ZSwgZGF5cyA9IDM2NSkge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpO1xuICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9O2V4cGlyZXM9JHtkYXRlLnRvVVRDU3RyaW5nKCl9O3BhdGg9L2A7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBzZWxlY3RMYW5ndWFnZShsYW5nKSB7XG4gICAgc2V0Q29va2llKCdsYW5nX2Nob2ljZScsIGxhbmcpO1xuICAgIHNldExvY2FsZShsYW5nKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmZXRjaCgnL2FwaS91c2VyL3VwZGF0ZS1sb2NhbGUnLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGxvY2FsZTogbGFuZyB9KVxuICAgICAgfSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHVwZGF0ZSB1c2VyIGxvY2FsZTonLCBlcnJvcilcbiAgICB9XG5cbiAgICAvLyBBbmltYXRpb24gZGUgZmVybWV0dXJlXG4gICAgY29uc3QgdGwgPSBnc2FwLnRpbWVsaW5lKHtcbiAgICAgIGRlZmF1bHRzOiB7IGVhc2U6ICdwb3dlcjIuaW5PdXQnIH0sXG4gICAgICBvbkNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgIGxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRsLnRvKGxvZ28udmFsdWUsIHsgc2NhbGU6IDEuMywgb3BhY2l0eTogMCwgZHVyYXRpb246IDAuMyB9KVxuICAgICAgLnRvKGNvbnRhaW5lci52YWx1ZSwgeyBvcGFjaXR5OiAwLCBkdXJhdGlvbjogMC4zIH0sICctPTAuMicpO1xuICB9XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAoIWxvYWRpbmcudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBWw6lyaWZpZXIgc2kgbGUgY29va2llIGV4aXN0ZVxuICAgIGNvbnN0IGhhc0xhbmd1YWdlQ2hvaWNlID0gZ2V0Q29va2llKCdsYW5nX2Nob2ljZScpO1xuXG4gICAgY29uc3QgbGVmdFBhdGhXaGl0ZSA9IGxvZ28udmFsdWUucXVlcnlTZWxlY3RvcignI2xlZnRQYXRoV2hpdGUnKVxuICAgIGNvbnN0IHJpZ2h0UGF0aFdoaXRlID0gbG9nby52YWx1ZS5xdWVyeVNlbGVjdG9yKCcjcmlnaHRQYXRoV2hpdGUnKVxuICAgIGNvbnN0IGxlZnRFeWUgPSBsb2dvLnZhbHVlLnF1ZXJ5U2VsZWN0b3IoJyNsZWZ0RXllJylcbiAgICBjb25zdCByaWdodEV5ZSA9IGxvZ28udmFsdWUucXVlcnlTZWxlY3RvcignI3JpZ2h0RXllJylcbiAgICBjb25zdCBsZWZ0UGF0aCA9IGxvZ28udmFsdWUucXVlcnlTZWxlY3RvcignI2xlZnRQYXRoJylcbiAgICBjb25zdCByaWdodFBhdGggPSBsb2dvLnZhbHVlLnF1ZXJ5U2VsZWN0b3IoJyNyaWdodFBhdGgnKVxuICAgIGNvbnN0IGV5ZUwgPSBsb2dvLnZhbHVlLnF1ZXJ5U2VsZWN0b3IoJyNleWVMJylcbiAgICBjb25zdCBleWVSID0gbG9nby52YWx1ZS5xdWVyeVNlbGVjdG9yKCcjZXllUicpXG5cbiAgICAvLyBBam91dGVyIGxlcyDDqXbDqW5lbWVudHMgZGUgY2xpYyBzdXIgbGVzIHlldXggc2kgcGFzIGRlIGNvb2tpZVxuICAgIGlmICghaGFzTGFuZ3VhZ2VDaG9pY2UpIHtcbiAgICAgIGxlZnRFeWUuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgICAgcmlnaHRFeWUuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgICAgbGVmdEV5ZS5jbGFzc0xpc3QuYWRkKCdleWUtaW50ZXJhY3RpdmUnKTtcbiAgICAgIHJpZ2h0RXllLmNsYXNzTGlzdC5hZGQoJ2V5ZS1pbnRlcmFjdGl2ZScpO1xuXG4gICAgICAvLyBEw6lzYWN0aXZlciBsZXMgcG9pbnRlciBldmVudHMgc3VyIGxlcyBwdXBpbGxlcyBub2lyZXMgcG91ciBuZSBwYXMgYmxvcXVlciBsZSBob3ZlclxuICAgICAgZXllTC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgZXllUi5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuXG4gICAgICAvLyBFZmZldCBob3ZlciA6IHNjYWxlIHRvdXQgbCfFk2lsIChibGFuYyArIGRyYXBlYXUpIGV0IHLDqWR1aXQgbCdvcGFjaXTDqSBkZSBsJ2F1dHJlXG4gICAgICBsZWZ0RXllLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIGdzYXAudG8obGVmdEV5ZSwgeyBzY2FsZTogMS4xLCB0cmFuc2Zvcm1PcmlnaW46ICdjZW50ZXIgY2VudGVyJywgZHVyYXRpb246IDAuMiwgZWFzZTogJ2JhY2sub3V0KDEuMiknIH0pO1xuICAgICAgICBnc2FwLnRvKHJpZ2h0RXllLCB7IG9wYWNpdHk6IDAuMywgZHVyYXRpb246IDAuMiB9KTtcbiAgICAgIH0pO1xuICAgICAgbGVmdEV5ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgICBnc2FwLnRvKGxlZnRFeWUsIHsgc2NhbGU6IDEsIGR1cmF0aW9uOiAwLjIsIGVhc2U6ICdwb3dlcjIuaW5PdXQnIH0pO1xuICAgICAgICBnc2FwLnRvKHJpZ2h0RXllLCB7IG9wYWNpdHk6IDEsIGR1cmF0aW9uOiAwLjIgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmlnaHRFeWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHtcbiAgICAgICAgZ3NhcC50byhyaWdodEV5ZSwgeyBzY2FsZTogMS4xLCB0cmFuc2Zvcm1PcmlnaW46ICdjZW50ZXIgY2VudGVyJywgZHVyYXRpb246IDAuMiwgZWFzZTogJ2JhY2sub3V0KDEuMiknIH0pO1xuICAgICAgICBnc2FwLnRvKGxlZnRFeWUsIHsgb3BhY2l0eTogMC4zLCBkdXJhdGlvbjogMC4yIH0pO1xuICAgICAgfSk7XG4gICAgICByaWdodEV5ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgICBnc2FwLnRvKHJpZ2h0RXllLCB7IHNjYWxlOiAxLCBkdXJhdGlvbjogMC4yLCBlYXNlOiAncG93ZXIyLmluT3V0JyB9KTtcbiAgICAgICAgZ3NhcC50byhsZWZ0RXllLCB7IG9wYWNpdHk6IDEsIGR1cmF0aW9uOiAwLjIgfSk7XG4gICAgICB9KTtcblxuICAgICAgbGVmdEV5ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHNlbGVjdExhbmd1YWdlKCdmcicpKTtcbiAgICAgIHJpZ2h0RXllLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gc2VsZWN0TGFuZ3VhZ2UoJ2VuJykpO1xuICAgIH1cblxuICAgIC8vIE9uIHBhcnQgZCd1biB0cmFjw6kgXCJpbnZpc2libGVcIiAobG9uZ3VldXIgMCkgcHVpcyBvbiBsZSBkZXNzaW5lXG4gICAgZ3NhcC5zZXQoW2xlZnRQYXRoV2hpdGUsIHJpZ2h0UGF0aFdoaXRlXSwgeyBkcmF3U1ZHOiAnMCUgMCUnLCBmaWxsT3BhY2l0eTogMCB9KVxuICAgIGdzYXAuc2V0KFtsZWZ0UGF0aCwgcmlnaHRQYXRoXSwgeyBvcGFjaXR5OiAwIH0pXG4gICAgZ3NhcC5zZXQoW2V5ZUwsIGV5ZVJdLCB7IHNjYWxlOiAxLCBvcGFjaXR5OiAwLCB0cmFuc2Zvcm1PcmlnaW46ICdjZW50ZXIgY2VudGVyJyB9KVxuXG4gICAgY29uc3QgdGwgPSBnc2FwLnRpbWVsaW5lKHtcbiAgICAgIGRlZmF1bHRzOiB7IGVhc2U6ICdwb3dlcjIuaW5PdXQnIH0sXG4gICAgICBvbkNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgIGlmIChoYXNMYW5ndWFnZUNob2ljZSkge1xuICAgICAgICAgIC8vIFNpIGxlIGNvb2tpZSBleGlzdGUsIG9uIGZlcm1lIG5vcm1hbGVtZW50XG4gICAgICAgICAgbG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIHRsXG4gICAgICAgIC50byhsZWZ0UGF0aFdoaXRlLCB7IGRyYXdTVkc6ICcwJSAxMDAlJywgZHVyYXRpb246IDEuMiB9KVxuICAgICAgICAudG8ocmlnaHRQYXRoV2hpdGUsIHsgZHJhd1NWRzogJzAlIDEwMCUnLCBkdXJhdGlvbjogMS4yIH0sICctPTAuNicpXG4gICAgICAgIC50byhsZWZ0UGF0aFdoaXRlLCB7IGZpbGxPcGFjaXR5OiAnMScsIGR1cmF0aW9uOiAwLjIgfSlcbiAgICAgICAgLnRvKHJpZ2h0UGF0aFdoaXRlLCB7IGZpbGxPcGFjaXR5OiAnMScsIGR1cmF0aW9uOiAwLjIgfSwgJy09MC4yJylcbiAgICAgICAgLnRvKGV5ZUwsIHsgb3BhY2l0eTogMSwgZHVyYXRpb246IDAuMiwgZGVsYXk6IDAuMSB9LCAnLT0wLjInKVxuICAgICAgICAudG8oZXllUiwgeyBvcGFjaXR5OiAxLCBkdXJhdGlvbjogMC4yIH0sICctPTAuMicpXG4gICAgICAgIC50byhleWVMLCB7IHNjYWxlOiAxLCBkdXJhdGlvbjogMC42IH0sICctPTAuMicpXG4gICAgICAgIC5hZGQobWFrZUZsaWNrZXIobG9nby52YWx1ZSkpXG5cbiAgICAvLyBTaSBwYXMgZGUgY29va2llLCBvbiBhZmZpY2hlIGxlcyBkcmFwZWF1eCBldCBvbiBjYWNoZSBsZXMgcHVwaWxsZXNcbiAgICBpZiAoIWhhc0xhbmd1YWdlQ2hvaWNlKSB7XG4gICAgICBzaG93TGFuZ3VhZ2VUaXRsZS52YWx1ZSA9IHRydWU7XG4gICAgICB0bC50byhbbGVmdFBhdGgsIHJpZ2h0UGF0aF0sIHsgb3BhY2l0eTogMSwgZHVyYXRpb246IDAuNSB9LCAnKz0wLjInKVxuICAgICAgICAudG8oW2V5ZUwsIGV5ZVJdLCB7IG9wYWNpdHk6IDAsIGR1cmF0aW9uOiAwLjMgfSwgJy09MC4zJylcbiAgICAgICAgLmNhbGwoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgICAgICAgaWYgKGxhbmd1YWdlVGl0bGUudmFsdWUpIHtcbiAgICAgICAgICAgIGdzYXAuZnJvbVRvKGxhbmd1YWdlVGl0bGUudmFsdWUsXG4gICAgICAgICAgICAgIHsgb3BhY2l0eTogMCwgeTogLTIwIH0sXG4gICAgICAgICAgICAgIHsgb3BhY2l0eTogMSwgeTogMCwgZHVyYXRpb246IDAuNiwgZWFzZTogJ3Bvd2VyMi5vdXQnIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTaSBsZSBjb29raWUgZXhpc3RlLCBvbiBjb250aW51ZSBsJ2FuaW1hdGlvbiBkZSBmZXJtZXR1cmVcbiAgICAgIHRsLnRvKGxvZ28udmFsdWUsIHsgc2NhbGU6IDEuMywgb3BhY2l0eTogMCwgZHVyYXRpb246IDAuMywgZGVsYXk6IDAuMiB9KVxuICAgICAgICAudG8oY29udGFpbmVyLnZhbHVlLCB7IG9wYWNpdHk6IDAsIGR1cmF0aW9uOiAwLjMgfSwgJy09MC4yJyk7XG4gICAgfVxuICB9KVxuXG4gIGZ1bmN0aW9uIG1ha2VGbGlja2VyKHRhcmdldCwgYnVyc3RzID0gZ3NhcC51dGlscy5yYW5kb20oMywgNiwgMSkpIHtcbiAgICBjb25zdCB0bCA9IGdzYXAudGltZWxpbmUoKVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVyc3RzOyBpKyspIHtcbiAgICAgIHRsLnRvKHRhcmdldCwge1xuICAgICAgICBvcGFjaXR5OiAwLjE4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXh0aW5jdGlvbiBmdWxndXJhbnRlXG4gICAgICAgIGR1cmF0aW9uOiBnc2FwLnV0aWxzLnJhbmRvbSgwLjAxNSwgMC4wNiksXG4gICAgICAgIGVhc2U6ICdwb3dlcjQuaW4nLFxuICAgICAgfSlcbiAgICAgIHRsLnRvKHRhcmdldCwge1xuICAgICAgICBvcGFjaXR5OiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0b3VyIGJydXRhbCBkZSBsYSBsdW1pw6hyZVxuICAgICAgICBkdXJhdGlvbjogZ3NhcC51dGlscy5yYW5kb20oMC4wMywgMC4wOCksXG4gICAgICAgIGVhc2U6ICdleHBvLm91dCcsXG4gICAgICB9LCAnPicpXG4gICAgfVxuICAgIHJldHVybiB0bFxuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5sb2dvLXdyYXAge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzOTBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5zdmcge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmxhbmd1YWdlLXRpdGxlIHtcbiAgZm9udC1zaXplOiAyLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjRkZBRjA2O1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgb3BhY2l0eTogMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC4ycHg7XG59XG5cbi5leWUtaW50ZXJhY3RpdmUge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gIC5sYW5ndWFnZS10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICB9XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC8qIEFjY2Vzc2liaWxpdMOpIDogb24gc2F1dGUgbCdhbmltYXRpb24gc2kgbCd1dGlsaXNhdGV1ciBsYSBkw6lzYWN0aXZlICovXG4gIHN2ZyAqIHtcbiAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuZXllLWludGVyYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbjwvc3R5bGU+IiwiPHNjcmlwdD5cbi8vIFJlYWxpc3RpYyBmcmFjdGFsIGxpZ2h0bmluZyDigJQgYSAxOjEgcG9ydCBvZiB0aGUgQ2xhdWRlIERlc2lnbiByZWZlcmVuY2UuXG4vLyBSZW5kZXJzIHRoZSBXSE9MRSBjaGFubmVsIGFzIGEgc2luZ2xlIHBhdGggKyBlYWNoIGZvcmsgYXMgYSBzaW5nbGUgcGF0aFxuLy8gKGEgZmV3IGh1bmRyZWQgcGF0aHMgdG90YWwsIG5vdCBwZXItc2VnbWVudCksIHNvIGl0IHN0YXlzIGxpZ2h0IGFuZCB0aGVcbi8vIFwiZHJhd3MgZnJvbSB0aGUgaGVhZFwiIHByb3BhZ2F0aW9uIHJlYWRzIGNvcnJlY3RseS5cbmltcG9ydCB7IGgsIHJlZiwgb25Nb3VudGVkLCBvbkJlZm9yZVVubW91bnQgfSBmcm9tICd2dWUnXG5cbi8vIEJvbHRzIHN0cmlrZSBkb3duIHRoZSByaWdodCBzaWRlLCB3aGl0ZSBhbmQgaW50ZW5zZS5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JPTFRTID0gW1xuICB7IGh4OiAwLjkwICogMTQ0MCwgaHk6IC0xNCwgZGlyOiAtMC4xMywgbGVuOiA3NjAsIHNlZWQ6IDEzMzcsIGN5Y2xlOiA1LjYsIHBoYXNlOiAwLjAsIG1haW46IDEuMCwgYnJpZ2h0OiAwLjM2IH0sXG4gIHsgaHg6IDAuNzcgKiAxNDQwLCBoeTogLTE0LCBkaXI6IDAuMDUsICBsZW46IDYwMCwgc2VlZDogNjQsICAgY3ljbGU6IDcuMywgcGhhc2U6IDMuNCwgbWFpbjogMC42LCBicmlnaHQ6IDAuMTkgfSxcbl1cblxuZnVuY3Rpb24gbXVsYmVycnkzMihhKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgYSB8PSAwOyBhID0gKGEgKyAweDZkMmI3OWY1KSB8IDBcbiAgICBsZXQgdCA9IE1hdGguaW11bChhIF4gKGEgPj4+IDE1KSwgMSB8IGEpXG4gICAgdCA9ICh0ICsgTWF0aC5pbXVsKHQgXiAodCA+Pj4gNyksIDYxIHwgdCkpIF4gdFxuICAgIHJldHVybiAoKHQgXiAodCA+Pj4gMTQpKSA+Pj4gMCkgLyA0Mjk0OTY3Mjk2XG4gIH1cbn1cblxuLy8gSmFnZ2VkIHBvbHlsaW5lIGJldHdlZW4gdHdvIHBvaW50cywgZGlzcGxhY2VkIHBlcnBlbmRpY3VsYXIgdG8gdGhlIHNlZ21lbnQuXG5mdW5jdGlvbiBmcmFjdGFsU2VnKHJuZywgcDEsIHAyLCBkaXNwbGFjZSwgcHRzKSB7XG4gIGNvbnN0IGR4ID0gcDIueCAtIHAxLngsIGR5ID0gcDIueSAtIHAxLnlcbiAgY29uc3QgbGVuID0gTWF0aC5oeXBvdChkeCwgZHkpXG4gIGlmIChsZW4gPCAxNCB8fCBkaXNwbGFjZSA8IDIuNSkgeyBwdHMucHVzaChwMik7IHJldHVybiB9XG4gIGNvbnN0IG54ID0gLWR5IC8gbGVuLCBueSA9IGR4IC8gbGVuIC8vIHBlcnBlbmRpY3VsYXIgdW5pdFxuICBjb25zdCBvZmYgPSAocm5nKCkgLSAwLjUpICogZGlzcGxhY2VcbiAgY29uc3QgbWlkID0geyB4OiAocDEueCArIHAyLngpIC8gMiArIG54ICogb2ZmLCB5OiAocDEueSArIHAyLnkpIC8gMiArIG55ICogb2ZmIH1cbiAgZnJhY3RhbFNlZyhybmcsIHAxLCBtaWQsIGRpc3BsYWNlIC8gMS45NSwgcHRzKVxuICBmcmFjdGFsU2VnKHJuZywgbWlkLCBwMiwgZGlzcGxhY2UgLyAxLjk1LCBwdHMpXG59XG5cbi8vIE9uZSByZWFsaXN0aWMgYm9sdDogYSB0aGljayB3YW5kZXJpbmcgbWFpbiBjaGFubmVsICsgZmluZSB0YXBlcmluZyBmb3JrcyBvZmYgaXQuXG5mdW5jdGlvbiBidWlsZEJvbHQocm5nLCBoeCwgaHksIGRpckFuZ2xlLCBsZW5ndGgpIHtcbiAgY29uc3QgaGVhZCA9IHsgeDogaHgsIHk6IGh5IH1cbiAgY29uc3QgZW5kID0geyB4OiBoeCArIE1hdGguc2luKGRpckFuZ2xlKSAqIGxlbmd0aCwgeTogaHkgKyBNYXRoLmNvcyhkaXJBbmdsZSkgKiBsZW5ndGggfVxuICBjb25zdCBjaGFubmVsID0gW2hlYWRdXG4gIGZyYWN0YWxTZWcocm5nLCBoZWFkLCBlbmQsIGxlbmd0aCAqIDAuNCwgY2hhbm5lbCkgLy8gc3Ryb25nIG9yZ2FuaWMgd2FuZGVyXG5cbiAgLy8gY3VtdWxhdGl2ZSBhcmMgbGVuZ3RoIGFsb25nIHRoZSBjaGFubmVsLCBzbyBmb3JrcyBjYW4gYmUgdGltZWQgYnkgd2hlcmUgdGhleSBhdHRhY2hcbiAgY29uc3QgbiA9IGNoYW5uZWwubGVuZ3RoXG4gIGNvbnN0IGN1bSA9IFswXVxuICBmb3IgKGxldCBpID0gMTsgaSA8IG47IGkrKykgY3VtW2ldID0gY3VtW2kgLSAxXSArIE1hdGguaHlwb3QoY2hhbm5lbFtpXS54IC0gY2hhbm5lbFtpIC0gMV0ueCwgY2hhbm5lbFtpXS55IC0gY2hhbm5lbFtpIC0gMV0ueSlcbiAgY29uc3QgdG90YWwgPSBjdW1bbiAtIDFdIHx8IDFcblxuICBjb25zdCBicmFuY2hlcyA9IFtdIC8vIHsgcHRzLCBkZXB0aCwgd2luIH0g4oCUIHdpbiA9IHN0YXJ0IHRpbWUgaW4gXCJkcmF3IHdpbmRvd3NcIiBmcm9tIHRoZSBoZWFkXG4gIGNvbnN0IGdyb3cgPSAoeCwgeSwgYW5nbGUsIGxlbiwgZGVwdGgsIHN0YXJ0V2luKSA9PiB7XG4gICAgY29uc3QgZXggPSB4ICsgTWF0aC5zaW4oYW5nbGUpICogbGVuXG4gICAgY29uc3QgZXkgPSB5ICsgTWF0aC5jb3MoYW5nbGUpICogbGVuXG4gICAgY29uc3QgcHRzID0gW3sgeCwgeSB9XVxuICAgIGZyYWN0YWxTZWcocm5nLCB7IHgsIHkgfSwgeyB4OiBleCwgeTogZXkgfSwgbGVuICogMC4zNCwgcHRzKVxuICAgIGJyYW5jaGVzLnB1c2goeyBwdHMsIGRlcHRoLCB3aW46IHN0YXJ0V2luIH0pXG4gICAgaWYgKGRlcHRoIDw9IDApIHJldHVyblxuICAgIGNvbnN0IG5iID0gMSArIChybmcoKSA8IDAuNiA/IDEgOiAwKVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmI7IGkrKykge1xuICAgICAgY29uc3Qgc3AgPSAoMC4zICsgcm5nKCkgKiAwLjUpICogKHJuZygpIDwgMC41ID8gMSA6IC0xKVxuICAgICAgZ3JvdyhleCwgZXksIGFuZ2xlICsgc3AsIGxlbiAqICgwLjYgKyBybmcoKSAqIDAuMiksIGRlcHRoIC0gMSwgc3RhcnRXaW4gKyAxKSAvLyBjaGlsZHJlbiB3YWl0IG9uZSB3aW5kb3dcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb3VudCA9IDdcbiAgZm9yIChsZXQgayA9IDA7IGsgPCBjb3VudDsgaysrKSB7XG4gICAgY29uc3QgaWR4ID0gTWF0aC5mbG9vcigoMC4xNCArIDAuNzggKiAoayAvIChjb3VudCAtIDEpKSkgKiAobiAtIDEpKVxuICAgIGNvbnN0IHAgPSBjaGFubmVsW2lkeF1cbiAgICBjb25zdCBxID0gY2hhbm5lbFtNYXRoLm1pbihpZHggKyAxLCBuIC0gMSldXG4gICAgY29uc3QgYmFzZUFuZ2xlID0gTWF0aC5hdGFuMihxLnggLSBwLngsIHEueSAtIHAueSkgLy8gbG9jYWwgZGlyZWN0aW9uIChmcm9tIHZlcnRpY2FsKVxuICAgIGNvbnN0IHNpZGUgPSBrICUgMiA9PT0gMCA/IDEgOiAtMVxuICAgIGNvbnN0IGZyYWMgPSBjdW1baWR4XSAvIHRvdGFsIC8vIHdoZW4gdGhlIG1haW4gZnJvbnQgcmVhY2hlcyB0aGlzIGF0dGFjaG1lbnQgcG9pbnRcbiAgICBncm93KHAueCwgcC55LCBiYXNlQW5nbGUgKyBzaWRlICogKDAuNCArIHJuZygpICogMC41NSksIGxlbmd0aCAqIDAuMzIgKiAoMC42NSArIHJuZygpICogMC41KSwgMiArIChybmcoKSA8IDAuNSA/IDEgOiAwKSwgZnJhYylcbiAgfVxuXG4gIHJldHVybiB7IGNoYW5uZWwsIGJyYW5jaGVzLCBoZWFkIH1cbn1cblxuZnVuY3Rpb24gdG9QYXRoKHB0cykge1xuICByZXR1cm4gcHRzLm1hcCgocCwgaSkgPT4gKGkgPT09IDAgPyAnTScgOiAnTCcpICsgcC54LnRvRml4ZWQoMSkgKyAnLCcgKyBwLnkudG9GaXhlZCgxKSkuam9pbignICcpXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ0xpZ2h0bmluZ0JhY2tncm91bmQnLFxuICBwcm9wczoge1xuICAgIGJvbHRzOiB7IHR5cGU6IEFycmF5LCBkZWZhdWx0OiAoKSA9PiBERUZBVUxUX0JPTFRTIH0sXG4gICAgZW5hYmxlZDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH0sXG4gIH0sXG4gIHNldHVwKHByb3BzKSB7XG4gICAgLy8gUGF1c2UgdGhlIHdob2xlIGFuaW1hdGlvbiB3aGVuIHRoZSBoZXJvIGlzIG9mZi1zY3JlZW4gb3IgdGhlIHRhYiBpcyBoaWRkZW4sXG4gICAgLy8gc28gaXQgbmV2ZXIgYnVybnMgZnJhbWVzIHRoZSB1c2VyIGNhbid0IHNlZS5cbiAgICBjb25zdCByb290ID0gcmVmKG51bGwpXG4gICAgY29uc3QgYWN0aXZlID0gcmVmKHRydWUpXG4gICAgbGV0IGlvID0gbnVsbFxuICAgIGxldCBvblZpcyA9IG51bGxcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgb25WaXMgPSAoKSA9PiB7IGlmIChkb2N1bWVudC5oaWRkZW4pIGFjdGl2ZS52YWx1ZSA9IGZhbHNlOyBlbHNlIGFjdGl2ZS52YWx1ZSA9IHRydWUgfVxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzKVxuICAgICAgaWYgKHJvb3QudmFsdWUgJiYgJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cpIHtcbiAgICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgICAgKGVudHJpZXMpID0+IHsgZm9yIChjb25zdCBlIG9mIGVudHJpZXMpIGFjdGl2ZS52YWx1ZSA9IGUuaXNJbnRlcnNlY3RpbmcgJiYgIWRvY3VtZW50LmhpZGRlbiB9LFxuICAgICAgICAgIHsgdGhyZXNob2xkOiAwLjAxIH0sXG4gICAgICAgIClcbiAgICAgICAgaW8ub2JzZXJ2ZShyb290LnZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gICAgb25CZWZvcmVVbm1vdW50KCgpID0+IHtcbiAgICAgIGlmIChvblZpcykgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzKVxuICAgICAgaWYgKGlvKSB7IGlvLmRpc2Nvbm5lY3QoKTsgaW8gPSBudWxsIH1cbiAgICB9KVxuXG4gICAgLy8gb25lIGxheWVyZWQgcGF0aCAodmlvbGV0IGhhbG8gKyBzb2Z0IGJvZHkgKyBob3Qgd2hpdGUgY29yZSksIGRyYXduIGZyb20gaXRzIHN0YXJ0XG4gICAgY29uc3QgbWtTZWcgPSAoc2VnLCBrZXksIHNjYWxlLCBkZWxheSwgY3ljbGUsIGJyaWdodCkgPT4ge1xuICAgICAgY29uc3QgZCA9IHRvUGF0aChzZWcpXG4gICAgICBjb25zdCBhbmltID0gJ2xtbGItZHJhdyAnICsgY3ljbGUgKyAncyBlYXNlLW91dCAnICsgZGVsYXkudG9GaXhlZCgyKSArICdzIGluZmluaXRlJ1xuICAgICAgY29uc3QgY29tbW9uID0ge1xuICAgICAgICBkLCBmaWxsOiAnbm9uZScsIHBhdGhMZW5ndGg6IDEsXG4gICAgICAgICdzdHJva2UtZGFzaGFycmF5JzogMSwgJ3N0cm9rZS1kYXNob2Zmc2V0JzogMSxcbiAgICAgICAgJ3N0cm9rZS1saW5lam9pbic6ICdyb3VuZCcsICdzdHJva2UtbGluZWNhcCc6ICdyb3VuZCcsXG4gICAgICAgIC8vIE5vIHdpbGwtY2hhbmdlIGhlcmU6IHN0cm9rZS1kYXNob2Zmc2V0IGlzIGEgcGFpbnQgcHJvcGVydHkgKG5vdCBjb21wb3NpdGFibGUpLFxuICAgICAgICAvLyBzbyB3aWxsLWNoYW5nZSBvbiBodW5kcmVkcyBvZiBwYXRocyBvbmx5IHdhc3RlcyBtZW1vcnkuIEl0IHJlcGFpbnRzIG9ubHkgZHVyaW5nXG4gICAgICAgIC8vIHRoZSBicmllZiBkcmF3ICgw4oCTOSUpIGFuZCBlcmFzZSAoNzLigJM4MiUpIHdpbmRvd3MgYW55d2F5LlxuICAgICAgICBzdHlsZTogeyBhbmltYXRpb246IGFuaW0sIGFuaW1hdGlvbkZpbGxNb2RlOiAnYmFja3dhcmRzJyB9LFxuICAgICAgfVxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgaCgncGF0aCcsIHsgLi4uY29tbW9uLCBrZXk6IGtleSArICdoJywgc3Ryb2tlOiAnI2FhYjJmZicsICdzdHJva2Utd2lkdGgnOiAxNSAqIHNjYWxlLCBvcGFjaXR5OiAwLjE2ICogYnJpZ2h0IH0pLFxuICAgICAgICBoKCdwYXRoJywgeyAuLi5jb21tb24sIGtleToga2V5ICsgJ2cnLCBzdHJva2U6ICcjZDhkY2ZmJywgJ3N0cm9rZS13aWR0aCc6IDYuNSAqIHNjYWxlLCBvcGFjaXR5OiAwLjQyICogYnJpZ2h0IH0pLFxuICAgICAgICBoKCdwYXRoJywgeyAuLi5jb21tb24sIGtleToga2V5ICsgJ2InLCBzdHJva2U6ICcjZjNmNGZmJywgJ3N0cm9rZS13aWR0aCc6IDIuOCAqIHNjYWxlLCBvcGFjaXR5OiAwLjgyICogYnJpZ2h0IH0pLFxuICAgICAgICBoKCdwYXRoJywgeyAuLi5jb21tb24sIGtleToga2V5ICsgJ2MnLCBzdHJva2U6ICcjZmZmZmZmJywgJ3N0cm9rZS13aWR0aCc6IDEuMiAqIHNjYWxlLCBvcGFjaXR5OiBicmlnaHQgfSksXG4gICAgICBdXG4gICAgfVxuXG4gICAgLy8gZGVwdGgg4oaSIHN0cm9rZSBzY2FsZSwgdGFwZXJpbmcgdG93YXJkIHRoZSB0aXBzXG4gICAgY29uc3QgZHNjYWxlID0gKGRlcHRoLCBiYXNlKSA9PiBiYXNlICogKGRlcHRoID49IDMgPyAwLjcgOiBkZXB0aCA9PT0gMiA/IDAuNSA6IGRlcHRoID09PSAxID8gMC4zNCA6IDAuMjIpXG5cbiAgICBjb25zdCBtYWtlQm9sdCA9ICh0LCB0aSkgPT4ge1xuICAgICAgY29uc3Qgcm5nID0gbXVsYmVycnkzMih0LnNlZWQpXG4gICAgICBjb25zdCBib2x0ID0gYnVpbGRCb2x0KHJuZywgdC5oeCwgdC5oeSwgdC5kaXIsIHQubGVuKVxuICAgICAgY29uc3QgZHJhd1dpbiA9IDAuMDkgKiB0LmN5Y2xlIC8vIG1hdGNoZXMgdGhlIEBrZXlmcmFtZXMgZHJhdyBhY3RpdmUgc3BhblxuICAgICAgY29uc3QgbGF5ZXJzID0gW11cbiAgICAgIGxheWVycy5wdXNoKC4uLm1rU2VnKGJvbHQuY2hhbm5lbCwgdGkgKyAnLWNoJywgdC5tYWluLCAwLCB0LmN5Y2xlLCB0LmJyaWdodCkpXG4gICAgICBib2x0LmJyYW5jaGVzLmZvckVhY2goKGJyLCBiaSkgPT4ge1xuICAgICAgICBjb25zdCBkZWxheSA9IGJyLndpbiAqIGRyYXdXaW5cbiAgICAgICAgbGF5ZXJzLnB1c2goLi4ubWtTZWcoYnIucHRzLCB0aSArICctYicgKyBiaSwgZHNjYWxlKGJyLmRlcHRoLCB0Lm1haW4gKiAxLjQpLCBkZWxheSwgdC5jeWNsZSwgdC5icmlnaHQgKiAwLjkpKVxuICAgICAgfSlcbiAgICAgIGNvbnN0IGNvcmVJZCA9ICdsbWxiLWNvcmUtJyArIHRpXG4gICAgICBjb25zdCBoZWFkID0gaCgnZycsIHsga2V5OiB0aSArICctaGVhZCcgfSwgW1xuICAgICAgICBoKCdjaXJjbGUnLCB7IGtleTogJ2hvJywgY3g6IGJvbHQuaGVhZC54LCBjeTogYm9sdC5oZWFkLnksIHI6IDM0ICogdC5tYWluLCBmaWxsOiAndXJsKCMnICsgY29yZUlkICsgJyknLCBvcGFjaXR5OiAwLjYgKiB0LmJyaWdodCB9KSxcbiAgICAgICAgaCgnY2lyY2xlJywgeyBrZXk6ICdoaScsIGN4OiBib2x0LmhlYWQueCwgY3k6IGJvbHQuaGVhZC55LCByOiAxMSAqIHQubWFpbiwgZmlsbDogJyNmZmZmZmYnLCBvcGFjaXR5OiAwLjggKiB0LmJyaWdodCB9KSxcbiAgICAgIF0pXG5cbiAgICAgIC8vIFRoZSBmaWx0ZXJlZCA8c3ZnPiBsaXZlcyBJTlNJREUgdGhlIGZsaWNrZXIgPGRpdj4uIFRoZSBkcm9wLXNoYWRvdyBmaWx0ZXIgb25seVxuICAgICAgLy8gcmVjb21wdXRlcyB3aGVuIHRoZSBwYXRocyBjaGFuZ2UgKGRyYXcvZXJhc2Ugd2luZG93cykuIFRoZSBwZXItZnJhbWUgb3BhY2l0eVxuICAgICAgLy8gZmxpY2tlciBpcyBvbiB0aGUgcGFyZW50IEhUTUwgZGl2IOKGkiBjb21wb3NpdGVkIG9uIHRoZSBHUFUsIHNvIHRoZSBjYWNoZWRcbiAgICAgIC8vIGZpbHRlcmVkIGJpdG1hcCBpcyBqdXN0IHJlLWJsZW5kZWQgYXQgYSBuZXcgYWxwaGEgKG5vIGZpbHRlciByZWNvbXB1dGUpLlxuICAgICAgY29uc3Qgc3ZnID0gaCgnc3ZnJywge1xuICAgICAgICBjbGFzczogJ2xtbGItc3ZnJyxcbiAgICAgICAgdmlld0JveDogJzAgMCAxNDQwIDkwMCcsXG4gICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW86ICdub25lJyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywgaW5zZXQ6IDAsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgIGZpbHRlcjogJ2JsdXIoNHB4KSBkcm9wLXNoYWRvdygwIDAgMTFweCByZ2JhKDIyMCwyMjQsMjU1LC45NSkpIGRyb3Atc2hhZG93KDAgMCAzMHB4IHJnYmEoMTUwLDE2MCwyNTUsLjYpKScsXG4gICAgICAgIH0sXG4gICAgICB9LCBbXG4gICAgICAgIGgoJ2RlZnMnLCBudWxsLCBbXG4gICAgICAgICAgaCgncmFkaWFsR3JhZGllbnQnLCB7IGlkOiBjb3JlSWQsIGN4OiAnNTAlJywgY3k6ICc1MCUnLCByOiAnNTAlJyB9LCBbXG4gICAgICAgICAgICBoKCdzdG9wJywgeyBvZmZzZXQ6ICcwJywgJ3N0b3AtY29sb3InOiAnI2ZmZmZmZicgfSksXG4gICAgICAgICAgICBoKCdzdG9wJywgeyBvZmZzZXQ6ICc0MCUnLCAnc3RvcC1jb2xvcic6ICcjZTJlNGZmJywgJ3N0b3Atb3BhY2l0eSc6ICcwLjc4JyB9KSxcbiAgICAgICAgICAgIGgoJ3N0b3AnLCB7IG9mZnNldDogJzEwMCUnLCAnc3RvcC1jb2xvcic6ICcjOGI4ZmUwJywgJ3N0b3Atb3BhY2l0eSc6ICcwJyB9KSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSksXG4gICAgICAgIC4uLmxheWVycyxcbiAgICAgICAgaGVhZCxcbiAgICAgIF0pXG5cbiAgICAgIHJldHVybiBoKCdkaXYnLCB7XG4gICAgICAgIGtleTogJ2JvbHQnICsgdGksXG4gICAgICAgIGNsYXNzOiAnbG1sYi1ib2x0JyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywgaW5zZXQ6IDAsXG4gICAgICAgICAgYW5pbWF0aW9uOiAnbG1sYi1mbGljayAnICsgdC5jeWNsZSArICdzIGVhc2Utb3V0IGluZmluaXRlJyxcbiAgICAgICAgICBhbmltYXRpb25EZWxheTogKC10LnBoYXNlKSArICdzJyxcbiAgICAgICAgICB3aWxsQ2hhbmdlOiAnb3BhY2l0eScsXG4gICAgICAgIH0sXG4gICAgICB9LCBbc3ZnXSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3QgYm9sdERpdnMgPSBwcm9wcy5lbmFibGVkID8gcHJvcHMuYm9sdHMubWFwKCh0LCB0aSkgPT4gbWFrZUJvbHQodCwgdGkpKSA6IFtdXG4gICAgICByZXR1cm4gaCgnZGl2Jywge1xuICAgICAgICByZWY6IHJvb3QsXG4gICAgICAgIGNsYXNzOiBbJ2xtbGItcm9vdCcsIHsgJ2xtbGItcGF1c2VkJzogIWFjdGl2ZS52YWx1ZSB9XSxcbiAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnLFxuICAgICAgfSwgW1xuICAgICAgICBoKCdkaXYnLCB7IGNsYXNzOiAnbG1sYi1iZycgfSksXG4gICAgICAgIC4uLmJvbHREaXZzLFxuICAgICAgXSlcbiAgICB9XG4gIH0sXG59XG48L3NjcmlwdD5cblxuPCEtLSBOb24tc2NvcGVkOiB0aGUgaW5saW5lIGFuaW1hdGlvbiBzaG9ydGhhbmRzIHJlZmVyZW5jZSB0aGVzZSBrZXlmcmFtZXMgYnkgbmFtZS4gLS0+XG48c3R5bGU+XG5Aa2V5ZnJhbWVzIGxtbGItZHJhdyB7XG4gIDAlICAgeyBzdHJva2UtZGFzaG9mZnNldDogMTsgfVxuICA5JSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IH1cbiAgNzIlICB7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyB9XG4gIDgyJSAgeyBzdHJva2UtZGFzaG9mZnNldDogMTsgfVxuICAxMDAlIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDE7IH1cbn1cbkBrZXlmcmFtZXMgbG1sYi1mbGljayB7XG4gIDAlICAgeyBvcGFjaXR5OiAwOyB9XG4gIDQlICAgeyBvcGFjaXR5OiAxOyB9XG4gIDEwJSAgeyBvcGFjaXR5OiAwLjU7IH1cbiAgMTYlICB7IG9wYWNpdHk6IDAuOTU7IH1cbiAgMzAlICB7IG9wYWNpdHk6IDAuNzsgfVxuICA0MCUgIHsgb3BhY2l0eTogMC45OyB9XG4gIDU1JSAgeyBvcGFjaXR5OiAwLjQ1OyB9XG4gIDcwJSAgeyBvcGFjaXR5OiAwLjY7IH1cbiAgODUlICB7IG9wYWNpdHk6IDAuMjsgfVxuICAxMDAlIHsgb3BhY2l0eTogMDsgfVxufVxuXG4ubG1sYi1yb290IHsgcG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDsgb3ZlcmZsb3c6IGhpZGRlbjsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IDA7IH1cbi8qIExhIGx1ZXVyIGR1IGZvbmQgbmUgcydhbGx1bWUgcXUnQVUgTU9NRU5UIGRlcyBmcmFwcGVzIChzeW5jaHJvIGF2ZWMgbCfDqWNsYWlyIGRvbWluYW50LCBjeWNsZSA1LjZzLCBlbiBwaGFzZSkuICovXG5Aa2V5ZnJhbWVzIGxtbGItYmdmbGFzaCB7XG4gIDAlLCAxMDAlIHsgb3BhY2l0eTogMDsgfVxuICAzJSAgeyBvcGFjaXR5OiAxOyB9XG4gIDglICB7IG9wYWNpdHk6IDAuMjI7IH1cbiAgMTMlIHsgb3BhY2l0eTogMC44NTsgfVxuICAyMiUgeyBvcGFjaXR5OiAwLjEwOyB9XG4gIDQ2JSB7IG9wYWNpdHk6IDAuMDQ7IH1cbiAgNjQlIHsgb3BhY2l0eTogMDsgfVxufVxuLmxtbGItYmcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7IGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoODQwcHggMTAyMHB4IGF0IDkwJSAyNCUsIHJnYmEoMTQwLCAxMjgsIDIyMiwgMC4zKSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgb3BhY2l0eTogMDtcbiAgYW5pbWF0aW9uOiBsbWxiLWJnZmxhc2ggNS42cyBlYXNlLW91dCBpbmZpbml0ZTtcbiAgd2lsbC1jaGFuZ2U6IG9wYWNpdHk7XG59XG5cbi8qIE9mZi1zY3JlZW4gLyBoaWRkZW4gdGFiIOKGkiBmcmVlemUgZXZlcnl0aGluZyBzbyB3ZSBkb24ndCBidXJuIGZyYW1lcyB1bnNlZW4uICovXG4ubG1sYi1wYXVzZWQgLmxtbGItYmcsXG4ubG1sYi1wYXVzZWQgLmxtbGItYm9sdCxcbi5sbWxiLXBhdXNlZCAubG1sYi1ib2x0IHBhdGggeyBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkICFpbXBvcnRhbnQ7IH1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmxtbGItYmcgeyBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDsgb3BhY2l0eTogMC41ICFpbXBvcnRhbnQ7IH1cbiAgLmxtbGItYm9sdCB7IGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50OyBvcGFjaXR5OiAwLjkgIWltcG9ydGFudDsgfVxuICAubG1sYi1ib2x0IHBhdGggeyBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDAgIWltcG9ydGFudDsgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGFydGljbGVcbiAgICAgIGNsYXNzPVwiYmFkZ2VcIlxuICAgICAgOmNsYXNzPVwieyAnaGFzLWhvbGUnOiBoYXNIb2xlIH1cIlxuICAgICAgOnN0eWxlPVwieyAnLS1hY2NlbnQnOiBhY2NlbnQsIHdpZHRoOiBweCh3aWR0aCksIGhlaWdodDogcHgoaGVpZ2h0KSB9XCJcbiAgICAgIDphcmlhLWxhYmVsPVwidChQUk9GSUxFX0JBREdFX0FSSUFfTEFCRUwpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJnbG93XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG5cbiAgICA8IS0tIHBldGl0IGxvZ28gLS0+XG4gICAgPGltZyBzcmM9XCIvcmVzL2ltYWdlcy9sb2dvX21vdXRoLnN2Z1wiIGFsdD1cIlwiIGNsYXNzPVwidy0xLzYgbXQtM1wiPlxuXG4gICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgdChQUk9GSUxFX0JBREdFX1RJVExFKSB9fTwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImt2XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwia1wiPnt7IHQoUFJPRklMRV9CQURHRV9UWVBFKSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZcIj5cbiAgICAgICAge3sgdHlwZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwia1wiPnt7IHQoUFJPRklMRV9CQURHRV9DUkVBVEVEX09OKSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZcIj5cbiAgICAgICAgICB7eyBpYXQgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImtcIj57eyB0KFBST0ZJTEVfQkFER0VfRVhQSVJFUykgfX0gPHNwYW4gdi1pZj1cImVhdCAhPT0gbnVsbFwiPnt7IHQoUFJPRklMRV9CQURHRV9PTikgfX08L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidlwiPlxuICAgICAgICB7eyBlYXQgIT09IG51bGwgPyBlYXQgOiB0KFBST0ZJTEVfQkFER0VfTkVWRVIpIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJydWxlXCI+PC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaGFuZGxlXCI+e3sgaGFuZGxlIH19PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57eyBuYW1lIH19PC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiIHN0eWxlPVwibWFyZ2luLXRvcDo2cHhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJxclwiPjwvZGl2PlxuXG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXRhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZFwiPjxiPnt7IHQoUFJPRklMRV9CQURHRV9GT1IpIH19PC9iPlxuICAgICAgICAgIDxicj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBwci0xMFwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCIvcmVzL2ltYWdlcy9sb2dvLnBuZ1wiIGFsdD1cIlwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTEgbXQtMlwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cIi90ZWxlY2hhcmdlbWVudHNcIiBjbGFzcz1cInRleHQteHNcIj5cbiAgICAgICAgICAgICAgPGI+PGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1hcnJvdy1kb3duIG1yLTFcIj48L2k+PC9iPjxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTMwMFwiPnt7IHQoUFJPRklMRV9CQURHRV9ET1dOTE9BRCkgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8YSBocmVmPVwiL21hbnVlbFwiIGNsYXNzPVwidGV4dC14c1wiPlxuICAgICAgICAgICAgICA8Yj48aSBjbGFzcz1cImZhLXNvbGlkIGZhLWJvb2sgbXItMVwiPjwvaT48L2I+PHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktMzAwXCI+e3sgdChQUk9GSUxFX0JBREdFX0RPQ1VNRU5UQVRJT04pIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNpZ1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4+UFBST0QuU1RPUkU8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9hcnRpY2xlPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbmltcG9ydCB7IHVzZVV4VHJhbnNsYXRvciB9IGZyb20gJy4uLy4uLy4uL2kxOG4vdXNlVXhUcmFuc2xhdG9yJ1xuaW1wb3J0IHsgUFJPRklMRV9CQURHRV9BUklBX0xBQkVMLCBQUk9GSUxFX0JBREdFX1RJVExFLCBQUk9GSUxFX0JBREdFX1RZUEUsIFBST0ZJTEVfQkFER0VfQ1JFQVRFRF9PTiwgUFJPRklMRV9CQURHRV9FWFBJUkVTLCBQUk9GSUxFX0JBREdFX09OLCBQUk9GSUxFX0JBREdFX05FVkVSLCBQUk9GSUxFX0JBREdFX0ZPUiwgUFJPRklMRV9CQURHRV9ET1dOTE9BRCwgUFJPRklMRV9CQURHRV9ET0NVTUVOVEFUSU9OIH0gZnJvbSAnLi4vLi4vLi4vaTE4bi9rZXlzJ1xuXG5jb25zdCB7IHQgfSA9IHVzZVV4VHJhbnNsYXRvcigpXG5cbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICBoYXNIb2xlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSxcbiAgbmFtZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgdHlwZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgaGFuZGxlOiB7IHR5cGU6IFN0cmluZyB9LFxuICBpYXQ6IHsgdHlwZTogU3RyaW5nIH0sXG4gIGVhdDogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6IG51bGwgfSxcbiAgcmVmZXJlbmNlSWQ6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnTGVWb2l4JyB9LFxuICBjb21wYW55TGluZXM6IHtcbiAgICB0eXBlOiBBcnJheSxcbiAgICBkZWZhdWx0OiAoKSA9PiBbJ0lOVEVSTkVUIERFVkVMT1BNRU5UJywgJ1NUVURJTyBDT01QQU5ZJ11cbiAgfSxcbiAgd2lkdGg6IHsgdHlwZTogW051bWJlciwgU3RyaW5nXSwgZGVmYXVsdDogMzMwIH0sXG4gIGhlaWdodDogeyB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLCBkZWZhdWx0OiA0NTAgfSxcbiAgYWNjZW50OiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJyNmZjI0MzgnIH1cbn0pXG5cbmZ1bmN0aW9uIHB4KHYpIHsgcmV0dXJuIHR5cGVvZiB2ID09PSAnbnVtYmVyJyA/IGAke3Z9cHhgIDogdiB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUlCTStQbGV4K01vbm86d2dodEAzMDA7NDAwOzYwMCZkaXNwbGF5PXN3YXAnKTtcblxuLmJhZGdle1xuICAvKiB2YXJpYWJsZXMgKi9cbiAgLS1hY2NlbnQ6ICNmZjI0Mzg7XG4gIC0tYmc6ICMwYjBiMGM7XG4gIC0taW5rOiAjZTllYWVjO1xuICAtLXN1YjogI2E2YTdhYjtcbiAgLS1ib3JkZXI6IHJnYmEoMjU1LDI1NSwyNTUsLjEyKTtcblxuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBiYWNrZ3JvdW5kOlxuICAgICAgcmFkaWFsLWdyYWRpZW50KDEyMCUgMTIwJSBhdCAxMCUgLTEwJSwgcmdiYSgyNTUsMjU1LDI1NSwuMTApLCB0cmFuc3BhcmVudCA0MCUpLFxuICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgIzExMTMxNiAwJSwgIzBhMGIwYyAxMDAlKTtcbiAgY29sb3I6IHZhcigtLWluayk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMjZweCAyMnB4O1xuICBib3gtc2hhZG93OlxuICAgICAgMCAyOHB4IDYwcHggLTEycHggcmdiYSgwLDAsMCwuNjUpLFxuICAgICAgMCA4cHggMjBweCAtOHB4IHJnYmEoMjU1LDM2LDU2LC4yNSksXG4gICAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjA2KSxcbiAgICAgIGluc2V0IDAgLTFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjAzKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZm9udC1mYW1pbHk6IFwiSUJNIFBsZXggTW9ub1wiLCB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZTtcbn1cblxuLmJhZGdlLmhhcy1ob2xlOjpiZWZvcmV7XG4gIGNvbnRlbnQ6XCJcIjtcbiAgcG9zaXRpb246YWJzb2x1dGU7XG4gIHRvcDoxNHB4OyBsZWZ0OjUwJTtcbiAgd2lkdGg6IDU3cHg7IGhlaWdodDogMThweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC40NSk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjE1KTtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAycHggMnB4IHJnYmEoMCwwLDAsLjUpLCAwIDRweCAxMnB4IHJnYmEoMCwwLDAsLjM1KTtcbn1cblxuLyogVG9wIGxvZ28gKi9cbi5tYXJre1xuICB3aWR0aDogNTZweDsgaGVpZ2h0OiA1NnB4O1xuICBkaXNwbGF5OmJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBvcGFjaXR5Oi45O1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgNnB4IDhweCByZ2JhKDI1NSwzNiw1NiwuMjUpKTtcbn1cblxuLyogVGl0cmVzICovXG4udGl0bGV7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAuMThlbTtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBtYXJnaW46IDZweCAwIDE4cHggMDtcbn1cblxuLyogUGFpcmVzIGNsw6kvdmFsZXVyICovXG4ua3Z7XG4gIGRpc3BsYXk6Z3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA3MHB4IDFmcjtcbiAgZ2FwOiA2cHggMTZweDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogdmFyKC0tc3ViKTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cbi5rdiAua3sgY29sb3I6IHZhcigtLXN1Yik7IG9wYWNpdHk6LjkgfVxuLmt2IC52eyBjb2xvcjogdmFyKC0taW5rKTsgb3BhY2l0eTouOSB9XG5cbi5ydWxle1xuICBoZWlnaHQ6MXB4O1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwyNTUsMjU1LC4xOCksIHRyYW5zcGFyZW50KTtcbiAgbWFyZ2luOiAxNHB4IDAgMTBweDtcbn1cblxuLmhhbmRsZXtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogdmFyKC0tc3ViKTtcbiAgbGV0dGVyLXNwYWNpbmc6IC4wOGVtO1xuICBtYXJnaW4tdG9wOiAycHg7XG59XG5cbi5uYW1le1xuICBmb250LXNpemU6IDIycHg7XG4gIGxldHRlci1zcGFjaW5nOiAuMTJlbTtcbiAgbWFyZ2luOiA4cHggMCA4cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5ncmlke1xuICBkaXNwbGF5OmdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgZ2FwOiAxNHB4O1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG59XG5cbi8qIFFSIChwbGFjZWhvbGRlcikgKi9cbi5xcntcbiAgd2lkdGg6IDEyOHB4OyBoZWlnaHQ6IDEyOHB4O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBiYWNrZ3JvdW5kOlxuICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwZGVnLCAjMGYxMTEzLCAjMGYxMTEzIDhweCwgIzBkMGYxMSA4cHgsICMwZDBmMTEgMTZweCk7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDRweCAjMDAwLCAwIDhweCAyMHB4IC0xMHB4IHJnYmEoMCwwLDAsLjgpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OmhpZGRlbjtcbn1cbi5xcjo6YmVmb3JlLCAucXI6OmFmdGVye1xuICBjb250ZW50OlwiXCI7XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDoxMHB4O1xuICBiYWNrZ3JvdW5kOlxuICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnIGF0IDIwJSAyMCUsICNmZmYgMCAyNSUsIHRyYW5zcGFyZW50IDAgMTAwJSksXG4gICAgICBjb25pYy1ncmFkaWVudChmcm9tIDBkZWcgYXQgODAlIDIwJSwgI2ZmZiAwIDI1JSwgdHJhbnNwYXJlbnQgMCAxMDAlKSxcbiAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMGRlZyBhdCAyMCUgODAlLCAjZmZmIDAgMjUlLCB0cmFuc3BhcmVudCAwIDEwMCUpLFxuICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnIGF0IDgwJSA4MCUsICNmZmYgMCAyNSUsIHRyYW5zcGFyZW50IDAgMTAwJSksXG4gICAgICByZXBlYXRpbmctY29uaWMtZ3JhZGllbnQoI2ZmZiAwIDIlLCB0cmFuc3BhcmVudCAwIDQlKTtcbiAgbWl4LWJsZW5kLW1vZGU6IHNjcmVlbjtcbiAgb3BhY2l0eTouOTtcbn1cbi5xcjo6YWZ0ZXJ7IGluc2V0OjM2cHg7IGJhY2tncm91bmQ6IzAwMCB9XG5cbi5tZXRhe1xuICBmb250LXNpemU6IDExcHg7XG4gIGNvbG9yOiB2YXIoLS1zdWIpO1xuICBsaW5lLWhlaWdodDogMS40NTtcbn1cbi5tZXRhIGJ7IGNvbG9yOiB2YXIoLS1pbmspOyBmb250LXdlaWdodDo2MDA7IGxldHRlci1zcGFjaW5nOi4wNmVtIH1cbi5tZXRhIC5pZHtcbiAgbWFyZ2luOiA4cHggMCAxMHB4O1xuICBwYWRkaW5nOiA2cHggOHB4O1xuICBib3JkZXI6IDFweCBkYXNoZWQgcmdiYSgyNTUsMjU1LDI1NSwuMjIpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xufVxuXG4vKiBTaWduYXR1cmUgYmFzICovXG4uZm9vdGVye1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoyMnB4OyByaWdodDoyMnB4OyBib3R0b206MThweDtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO1xuICBjb2xvcjogdmFyKC0tc3ViKTsgZm9udC1zaXplOiAxMHB4O1xuICBsZXR0ZXItc3BhY2luZzouMDhlbTtcbn1cbi5zaWd7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4OyBvcGFjaXR5Oi45NTsgfVxuLmRvdHtcbiAgd2lkdGg6MTBweDsgaGVpZ2h0OjEwcHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDQwJSAzNSUsICNmZmYsICNmZmYwIDQ1JSk7XG4gIGJveC1zaGFkb3c6IDAgMCAxNHB4IHZhcigtLWFjY2VudCksIDAgMCA0cHggdmFyKC0tYWNjZW50KSBpbnNldDtcbn1cblxuLyogR2xvd3Mgcm91Z2VzICovXG4uZ2xvd3tcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0Oi00MCU7XG4gIGJhY2tncm91bmQ6XG4gICAgICByYWRpYWwtZ3JhZGllbnQoNDIwcHggMjIwcHggYXQgMjAlIC0xMCUsIHJnYmEoMjU1LDM2LDU2LC4xOCksIHRyYW5zcGFyZW50IDQwJSksXG4gICAgICByYWRpYWwtZ3JhZGllbnQoNDIwcHggMjIwcHggYXQgMTIwJSAxMjAlLCByZ2JhKDI1NSwzNiw1NiwuMTIpLCB0cmFuc3BhcmVudCA1MCUpO1xuICBwb2ludGVyLWV2ZW50czpub25lO1xuICBmaWx0ZXI6IGJsdXIoMnB4KTtcbn1cblxuLyogU8OpbGVjdGlvbiAqL1xuLmJhZGdlIDo6c2VsZWN0aW9ueyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwzNiw1NiwuMzUpOyBjb2xvcjojZmZmIH1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxzZWN0aW9uIHJlZj1cImNvbnRhaW5lclwiIGNsYXNzPVwidy1mdWxsIGgtc2NyZWVuIGZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHRleHQtd2hpdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC00eGwgZm9udC1ib2xkIG1iLTEwXCI+RMOpY291dnJleiBsZXMgZWZmZXRzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInctMy80XCI+XG4gICAgICA8ZGl2IHYtZm9yPVwiKGxpbmUsIGluZGV4KSBpbiBsaW5lc1wiIDprZXk9XCJpbmRleFwiIGNsYXNzPVwibGluZSBteS02IHRleHQtMnhsIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwXCJcbiAgICAgICAgICAgOmNsYXNzPVwieyAndGV4dC1yZWQtNTAwIHNjYWxlLTExMCc6IGFjdGl2ZUluZGV4ID09PSBpbmRleCwgJ29wYWNpdHktMzAnOiBhY3RpdmVJbmRleCAhPT0gaW5kZXggfVwiPlxuICAgICAgICB7eyBsaW5lLnRpdGxlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC14bCBtdC0xMCBoLTI0IHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi01MDBcIj57eyBsaW5lc1thY3RpdmVJbmRleF0/LmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG5pbXBvcnQge29uTW91bnRlZCwgcmVmfSBmcm9tICd2dWUnXG5pbXBvcnQge2dzYXB9IGZyb20gJ2dzYXAnXG5pbXBvcnQge1Njcm9sbFRyaWdnZXJ9IGZyb20gJ2dzYXAvU2Nyb2xsVHJpZ2dlcidcblxuZ3NhcC5yZWdpc3RlclBsdWdpbihTY3JvbGxUcmlnZ2VyKVxuXG5jb25zdCBsaW5lcyA9IFtcbiAgeyB0aXRsZTogXCJDb21wcmVzc2V1clwiLCBkZXNjcmlwdGlvbjogXCJDb250csO0bGUgbGEgZHluYW1pcXVlIGRlIHZvdHJlIHNpZ25hbCBhdWRpby5cIiB9LFxuICB7IHRpdGxlOiBcIsOJZ2FsaXNldXJcIiwgZGVzY3JpcHRpb246IFwiQWp1c3RlIGxlcyBmcsOpcXVlbmNlcyBwb3VyIHVuIG1peCBjbGFpci5cIiB9LFxuICB7IHRpdGxlOiBcIlLDqXZlcmLDqXJhdGlvblwiLCBkZXNjcmlwdGlvbjogXCJBam91dGUgZGUgbCdlc3BhY2UgZXQgZGUgbGEgcHJvZm9uZGV1ci5cIiB9LFxuICB7IHRpdGxlOiBcIlN0w6lyw6lvIHdpZGVuZXJcIiwgZGVzY3JpcHRpb246IFwiw4lsYXJnaXQgbOKAmWltYWdlIHN0w6lyw6lvIGRlIHZvdHJlIG1peC5cIiB9LFxuXVxuXG5jb25zdCBhY3RpdmVJbmRleCA9IHJlZigwKVxuY29uc3QgY29udGFpbmVyID0gcmVmKClcblxub25Nb3VudGVkKCgpID0+IHtcbiAgU2Nyb2xsVHJpZ2dlci5kZWZhdWx0cyh7XG4gICAgc2Nyb2xsZXI6IFwiLnNjcm9sbFwiXG4gIH0pO1xuXG4gIFNjcm9sbFRyaWdnZXIuY3JlYXRlKHtcbiAgICB0cmlnZ2VyOiBjb250YWluZXIudmFsdWUsXG4gICAgc3RhcnQ6IFwidG9wIHRvcFwiLFxuICAgIGVuZDogKCkgPT4gYCs9JHt3aW5kb3cuaW5uZXJIZWlnaHQgKiAobGluZXMubGVuZ3RoKX1gLFxuICAgIHBpbjogdHJ1ZSxcbiAgICBzY3J1YjogdHJ1ZSxcbiAgICBzbmFwOiAxIC8gKGxpbmVzLmxlbmd0aCAtIDEpLFxuICAgIG9uVXBkYXRlOiAoc2VsZikgPT4ge1xuICAgICAgYWN0aXZlSW5kZXgudmFsdWUgPSBNYXRoLnJvdW5kKHNlbGYucHJvZ3Jlc3MgKiAobGluZXMubGVuZ3RoIC0gMSkpXG4gICAgfVxuICB9KVxufSlcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmxpbmUge1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG59XG48L3N0eWxlPlxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/