@charset "UTF-8";
/**
 * @file
 * Styles are organized using the SMACSS technique. @see http://smacss.com/book/
 *
 * When you turn on CSS aggregation at admin/config/development/performance, all
 * of these @include files will be combined into a single file.
 */
/* Import Sass mixins, variables, Compass modules, etc. */
/**
 * Variables
 */
/* used by buttons */
/* used by table cells and text fields */
/* used in width functions */
/* 480px @ 16px font size */
/* 960px @ 16px font size */
/* 1280px @ 16px font size */
/* 480px @ 16px font size */
/* 960px @ 16px font size */
/* 1280px @ 16px font size */
/* depth (z-index) */
@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700");
.cols-2:after {
  content: "";
  display: table;
  clear: both; }

.cols-2 > * {
  margin-left: 0;
  margin-right: 0; }

@media all and (min-width: 860px) {
  .cols-2 > * {
    float: left;
    width: calc( (100% - 2.5% * (2 - 1)) / 2);
    margin-left: 1.25%;
    margin-right: 1.25%; }
    .cols-2 > *:nth-child(2n - 1) {
      margin-left: 0;
      clear: left; }
    .cols-2 > *:nth-child(2n) {
      margin-right: 0; } }

.cols-3:after {
  content: "";
  display: table;
  clear: both; }

.cols-3 > * {
  margin-left: 0;
  margin-right: 0; }

.cols-3 > * {
  margin-bottom: 2.5%; }
  @media all and (min-width: 30em) and (max-width: 860px) {
    .cols-3 > * {
      float: left;
      width: calc( (100% - 2.5% * (2 - 1)) / 2);
      margin-left: 1.25%;
      margin-right: 1.25%; }
      .cols-3 > *:nth-child(2n - 1) {
        margin-left: 0;
        clear: left; }
      .cols-3 > *:nth-child(2n) {
        margin-right: 0; } }
  @media all and (min-width: 860px) {
    .cols-3 > * {
      float: left;
      width: calc( (100% - 2.5% * (3 - 1)) / 3);
      margin-left: 1.25%;
      margin-right: 1.25%; }
      .cols-3 > *:nth-child(3n - 2) {
        margin-left: 0;
        clear: left; }
      .cols-3 > *:nth-child(3n) {
        margin-right: 0; } }

.cols-4 > * {
  margin-bottom: 2.5%; }
  @media all and (min-width: 30em) and (max-width: 860px) {
    .cols-4 > * {
      float: left;
      width: calc( (100% - 2.5% * (2 - 1)) / 2);
      margin-left: 1.25%;
      margin-right: 1.25%; }
      .cols-4 > *:nth-child(2n - 1) {
        margin-left: 0;
        clear: left; }
      .cols-4 > *:nth-child(2n) {
        margin-right: 0; } }
  @media all and (min-width: 860px) {
    .cols-4 > * {
      float: left;
      width: calc( (100% - 2.5% * (4 - 1)) / 4);
      margin-left: 1.25%;
      margin-right: 1.25%; }
      .cols-4 > *:nth-child(4n - 3) {
        margin-left: 0;
        clear: left; }
      .cols-4 > *:nth-child(4n) {
        margin-right: 0; } }

.cols-6:after {
  content: "";
  display: table;
  clear: both; }

.cols-6 > * {
  margin-left: 0;
  margin-right: 0; }

.cols-6 > * {
  margin-bottom: 2.5%; }
  @media all and (max-width: 30em) {
    .cols-6 > * {
      float: left;
      width: calc( (100% - 2.5% * (2 - 1)) / 2);
      margin-left: 1.25%;
      margin-right: 1.25%; }
      .cols-6 > *:nth-child(2n - 1) {
        margin-left: 0;
        clear: left; }
      .cols-6 > *:nth-child(2n) {
        margin-right: 0; } }
  @media all and (min-width: 30em) and (max-width: 860px) {
    .cols-6 > * {
      float: left;
      width: calc( (100% - 2.5% * (3 - 1)) / 3);
      margin-left: 1.25%;
      margin-right: 1.25%; }
      .cols-6 > *:nth-child(3n - 2) {
        margin-left: 0;
        clear: left; }
      .cols-6 > *:nth-child(3n) {
        margin-right: 0; } }
  @media all and (min-width: 860px) {
    .cols-6 > * {
      float: left;
      width: calc( (100% - 2.5% * (6 - 1)) / 6);
      margin-left: 1.25%;
      margin-right: 1.25%; }
      .cols-6 > *:nth-child(6n - 5) {
        margin-left: 0;
        clear: left; }
      .cols-6 > *:nth-child(6n) {
        margin-right: 0; } }

.cols-7:after {
  content: "";
  display: table;
  clear: both; }

.cols-7 > * {
  margin-left: 0;
  margin-right: 0; }

.cols-7 > * {
  margin-bottom: 2.5%; }
  @media all and (max-width: 30em) {
    .cols-7 > * {
      float: left;
      width: calc( (100% - 1% * (2 - 1)) / 2);
      margin-left: 0.5%;
      margin-right: 0.5%; }
      .cols-7 > *:nth-child(2n - 1) {
        margin-left: 0;
        clear: left; }
      .cols-7 > *:nth-child(2n) {
        margin-right: 0; } }
  @media all and (min-width: 30em) and (max-width: 860px) {
    .cols-7 > * {
      float: left;
      width: calc( (100% - 1% * (4 - 1)) / 4);
      margin-left: 0.5%;
      margin-right: 0.5%; }
      .cols-7 > *:nth-child(4n - 3) {
        margin-left: 0;
        clear: left; }
      .cols-7 > *:nth-child(4n) {
        margin-right: 0; } }
  @media all and (min-width: 860px) {
    .cols-7 > * {
      float: left;
      width: calc( (100% - 1% * (7 - 1)) / 7);
      margin-left: 0.5%;
      margin-right: 0.5%; }
      .cols-7 > *:nth-child(7n - 6) {
        margin-left: 0;
        clear: left; }
      .cols-7 > *:nth-child(7n) {
        margin-right: 0; } }

/* HTML element standardisation rules */
/* ==========================================================================
   Normalize.scss settings
   ========================================================================== */
/**
 * Includes legacy browser support IE6/7
 *
 * Set to false if you want to drop support for IE6 and IE7
 */
/* Base
   ========================================================================== */
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 * 3. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using
 *  `em` units.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/**
 * Remove default margin.
 */
body {
  margin: 0; }

/* HTML5 display definitions
   ========================================================================== */
/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block; }

/**
 * 1. Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */
audio,
canvas,
progress,
video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
 * Prevents modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
 */
[hidden],
template {
  display: none; }

/* Links
   ========================================================================== */
/**
 * Remove the gray background color from active links in IE 10.
 */
a {
  background-color: transparent; }

/**
 * Improve readability of focused elements when they are also in an
 * active/hover state.
 */
a:active, a:hover {
  outline: 0; }

/* Text-level semantics
   ========================================================================== */
/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */
abbr[title] {
  border-bottom: 1px dotted; }

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */
b,
strong {
  font-weight: bold; }

/**
 * Address styling not present in Safari and Chrome.
 */
dfn {
  font-style: italic; }

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/**
 * Addresses styling not present in IE 8/9.
 */
mark {
  background: #ff0;
  color: #000; }

/**
 * Address inconsistent and variable font size in all browsers.
 */
small {
  font-size: 80%; }

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

/* Embedded content
   ========================================================================== */
/**
 * 1. Remove border when inside `a` element in IE 8/9/10.
 * 2. Improves image quality when scaled in IE 7.
 */
img {
  border: 0; }

/**
 * Correct overflow not hidden in IE 9/10/11.
 */
svg:not(:root) {
  overflow: hidden; }

/* Grouping content
   ========================================================================== */
/**
 * Address margin not present in IE 8/9 and Safari.
 */
figure {
  margin: 1em 40px; }

/**
 * Address differences between Firefox and other browsers.
 */
hr {
  box-sizing: content-box;
  height: 0; }

/**
 * Contain overflow in all browsers.
 */
pre {
  overflow: auto; }

/**
 * Address odd `em`-unit font size rendering in all browsers.
 * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
 */
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em; }

/* Forms
   ========================================================================== */
/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */
/**
 * 1. Correct color not being inherited.
 *  Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
 * 4. Improves appearance and consistency in all browsers.
 */
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  /* 1 */
  font: inherit;
  /* 2 */
  margin: 0;
  /* 3 */ }

/**
 * Address `overflow` set to `hidden` in IE 8/9/10/11.
 */
button {
  overflow: visible; }

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
 * Correct `select` style inheritance in Firefox.
 */
button,
select {
  text-transform: none; }

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *  and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *  `input` and others.
 * 4. Removes inner spacing in IE 7 without affecting normal text inputs.
 *  Known issue: inner spacing remains in IE 6.
 */
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */ }

/**
 * Re-set default cursor for disabled elements.
 */
button[disabled],
html input[disabled] {
  cursor: default; }

/**
 * Remove inner padding and border in Firefox 4+.
 */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0; }

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */
input {
  line-height: normal; }

/**
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 *  Known issue: excess padding remains in IE 6.
 */
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
 */
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  box-sizing: content-box;
  /* 2 */ }

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * Define consistent border, margin, and padding.
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 * 3. Corrects text not wrapping in Firefox 3.
 * 4. Corrects alignment displayed oddly in IE 6/7.
 */
legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Remove default vertical scrollbar in IE 8/9/10/11.
 */
textarea {
  overflow: auto; }

/**
 * Don't inherit the `font-weight` (applied by a rule above).
 * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
 */
optgroup {
  font-weight: bold; }

/* Tables
   ========================================================================== */
/**
 * Remove most spacing between table cells.
 */
table {
  border-collapse: collapse;
  border-spacing: 0; }

td,
th {
  padding: 0; }

/**
 * @file Elements
 */
/* 
    Website     Touchdreams
    Author      Dane Rossenrode
    Creation    April 2013
    Updated     October 2014
*/
/* -------------------------------------------------------------------------------------------
                                                                CONTENTS
    Individual tags
    Headings
    Links
    Tables
    Lists
 */
/* ==========================================================================
   Base styles: opinionated defaults
   ========================================================================== */
html {
  color: #222;
  font-size: 1em;
  line-height: 1.4; }

/*
 * Remove text-shadow in selection highlight:
 * https://twitter.com/miketaylr/status/12228805301
 *
 * These selection rule sets have to be separate.
 * Customize the background color to match your design.
 */
::-moz-selection {
  background: #b3d4fc;
  text-shadow: none; }

::selection {
  background: #b3d4fc;
  text-shadow: none; }

/*
 * A better looking default horizontal rule
 */
hr {
  display: block;
  height: 1px;
  border: 0;
  border-top: 1px solid #ccc;
  margin: 1em 0;
  padding: 0; }

/*
 * Remove the gap between audio, canvas, iframes,
 * images, videos and the bottom of their containers:
 * https://github.com/h5bp/html5-boilerplate/issues/440
 */
audio,
canvas,
iframe,
img,
svg,
video {
  vertical-align: middle; }

/*
 * Remove default fieldset styles.
 */
fieldset {
  border: 0;
  margin: 0;
  padding: 0; }

/*
 * Allow only vertical resizing of textareas.
 */
textarea {
  resize: vertical; }

/* -------------------------------------------------------------------------------------------
                                                                Individual tags
*/
body {
  font-family: "Open Sans", sans-serif;
  color: #333; }
  @media only screen and (max-width: 860px) {
    body {
      font-size: 0.92em; } }
  @media only screen and (max-width: 30em) {
    body {
      font-size: 0.86em; } }

p, address {
  margin-top: 1.2em;
  line-height: 1.4; }

img {
  width: auto;
  height: auto;
  max-width: 100%; }

small {
  font-size: 0.85em; }

figure {
  position: relative; }

figcaption {
  font-size: 0.85em;
  color: #649034;
  font-style: italic; }

acronym, abbr {
  border-bottom: 1px dotted #222;
  cursor: help; }

hr {
  display: block;
  height: 1px;
  border: 0;
  border-top: 1px solid #bbb;
  margin: 1em 0;
  padding: 0;
  width: 70%;
  margin: 2.6em auto; }

blockquote {
  margin: 1.5em 4%;
  position: relative;
  background: rgba(0, 0, 0, 0.04);
  padding: 0.3em 0.5em;
  /* the following rules insert large quotation marks */ }
  blockquote p, blockquote address {
    margin: 0; }
  blockquote:before, blockquote:after {
    font-size: 2.5em;
    position: absolute; }
  blockquote:before {
    content: "\201C";
    left: -0.5em;
    top: -0.5em; }
  blockquote:after {
    content: "\201D";
    right: -0.5em;
    bottom: -1em; }

.node__content p, .node__content address, pre {
  margin: 1em 0px;
  padding: 0 1em; }

/*------------------------------------------------------------------------
                                                            Links
*/
a {
  color: #649034;
  text-decoration: none;
  word-wrap: break-word; }
  a:hover, a:focus {
    color: #93b171; }
  a:active {
    /* a link when it is 'clicked' on */
    color: #a2bc85; }
  a.active, a[aria-selected="true"] {
    font-weight: bold;
    color: inherit; }

/*------------------------------------------------------------------------
                                                            Headings
*/
h1, h2, h3, h4 {
  font-family: "Open Sans", sans-serif;
  font-weight: normal;
  line-height: 1.1;
  margin-top: 1em;
  margin-bottom: 1em;
  color: #a1bf36; }
  h1 a, h2 a, h3 a, h4 a {
    color: inherit; }

h3, h4 {
  font-family: "Open Sans", sans-serif; }

h1 {
  font-size: 3.5em;
  line-height: 1.5em;
  text-align: center;
  margin-top: 1em;
  margin-bottom: 1em; }

h2 {
  font-size: 2em;
  line-height: 1.5em;
  color: #a1bf36; }

h3 {
  font-size: 1.17em;
  margin-top: 2em; }

h4 {
  font-size: 1em; }

/* -------------------------------------------------------------------------------------------
                                                                Tables
*/
table {
  border-collapse: collapse;
  margin: 1.5em 0; }
  table td, table th {
    border: solid 1px #bbb;
    padding: 0.3em 0.5em;
    vertical-align: top; }
  table th {
    text-align: left;
    font-weight: bold;
    background: rgba(0, 0, 0, 0.05); }
    table th.active {
      background: rgba(0, 0, 0, 0.15); }
    table th[scope="row"] {
      font-weight: bold;
      text-align: right; }
  table thead {
    font-size: 1.1em;
    font-family: "Open Sans", sans-serif;
    font-weight: bold;
    text-transform: uppercase; }
  table.borderless td, table.borderless th {
    border: none; }
  table.borderless th {
    background: none; }
  table.bulleted td:first-of-type::before {
    content: "\2022  "; }
  table .even {
    background: none; }
  table .odd {
    background: none; }

/* -------------------------------------------------------------------------------------------
                                                                Lists
*/
#admin-menu ul {
  overflow: visible; }

ul.buttons {
  padding: 0; }
  ul.buttons li {
    display: inline-block; }
  ul.buttons img {
    border-top-left-radius: 0.13em;
    border-top-right-radius: 0.13em;
    border-bottom-left-radius: 0.13em;
    border-bottom-right-radius: 0.13em; }

/* Layout rules */
/**
 * @file
 * Positioning, sizing, and spacing of page elements. A responsive layout.

 */
nav > [role="presentation"],
header[role="banner"],
section,
footer {
  max-width: 1025px;
  margin: 0 auto; }

.wider {
  max-width: 1225px; }

[role="presentation"] {
  padding: 0 85px;
  box-sizing: border-box;
  margin: 0 auto; }
  [role="presentation"] h1 {
    padding: 0; }
  @media all and (max-width: 860px) {
    [role="presentation"] {
      padding: 0 5%; } }

nav {
  position: fixed;
  z-index: 100;
  background-color: #ffffff;
  width: 100%;
  max-width: 100%;
  top: 0; }
  nav > [role="presentation"] {
    padding: 0; }
  @media all and (max-width: 930px) {
    nav {
      right: 0;
      width: auto; } }

.logo {
  float: right; }
  @media all and (max-width: 550px) {
    .logo {
      float: none;
      margin: 0 auto;
      display: block; } }

.site-title {
  margin-bottom: -1.5em; }
  @media all and (max-width: 650px) {
    .site-title {
      margin-bottom: 0; } }

.cols-1-2 {
  display: -webkit-box;
  display: -moz-box;
  display: box;
  display: -webkit-flex;
  display: -moz-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-lines: multiple;
  -moz-box-lines: multiple;
  box-lines: multiple;
  -webkit-flex-wrap: wrap;
  -moz-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap; }
  .cols-1-2 h2 {
    margin-top: 0; }
  .cols-1-2 > div {
    position: relative; }
    .cols-1-2 > div:nth-child(1) {
      -webkit-box-flex: 0 0 auto;
      -moz-box-flex: 0 0 auto;
      -webkit-flex: 0 0 auto;
      -ms-flex: 0 0 auto;
      flex: 0 0 auto;
      width: 250px; }
      @media all and (max-width: 600px) {
        .cols-1-2 > div:nth-child(1) {
          width: 100%; }
          .cols-1-2 > div:nth-child(1) img {
            margin: 0 auto;
            display: block; } }
    .cols-1-2 > div:nth-child(2) {
      -webkit-box-flex: 1 1 auto;
      -moz-box-flex: 1 1 auto;
      -webkit-flex: 1 1 auto;
      -ms-flex: 1 1 auto;
      flex: 1 1 auto;
      width: calc(100% - 250px);
      padding-left: 3em;
      box-sizing: border-box; }
      .cols-1-2 > div:nth-child(2)::after {
        content: "";
        width: 100%;
        height: 5px;
        border-radius: 5px;
        background: #a1bf36;
        display: block;
        bottom: 1.7em;
        left: 5px;
        position: absolute; }
        @media all and (max-width: 1020px) {
          .cols-1-2 > div:nth-child(2)::after {
            bottom: 0; } }

.cols-1-1 {
  display: flex !important;
  -webkit-box-lines: multiple;
  -moz-box-lines: multiple;
  box-lines: multiple;
  -webkit-flex-wrap: wrap;
  -moz-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap; }
  .cols-1-1 > div {
    position: relative; }
    .cols-1-1 > div:nth-child(1) {
      -webkit-box-flex: 0 0 auto;
      -moz-box-flex: 0 0 auto;
      -webkit-flex: 0 0 auto;
      -ms-flex: 0 0 auto;
      flex: 0 0 auto;
      width: 60%; }
      @media all and (max-width: 80em) {
        .cols-1-1 > div:nth-child(1) {
          width: 50%; } }
      @media all and (max-width: 550px) {
        .cols-1-1 > div:nth-child(1) {
          width: 100%; } }
    .cols-1-1 > div:nth-child(2) {
      -webkit-box-flex: 1 1 auto;
      -moz-box-flex: 1 1 auto;
      -webkit-flex: 1 1 auto;
      -ms-flex: 1 1 auto;
      flex: 1 1 auto;
      width: 40%;
      padding-left: 3em;
      box-sizing: border-box; }
      @media all and (max-width: 80em) {
        .cols-1-1 > div:nth-child(2) {
          width: 50%; } }

/* Component rules */
/* Slider */
.slick-slider {
  position: relative;
  display: block;
  box-sizing: border-box;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -ms-touch-action: pan-y;
  touch-action: pan-y;
  -webkit-tap-highlight-color: transparent; }

.slick-list {
  position: relative;
  overflow: hidden;
  display: block;
  margin: 0;
  padding: 0; }
  .slick-list:focus {
    outline: none; }
  .slick-list.dragging {
    cursor: pointer;
    cursor: hand; }

.slick-slider .slick-track,
.slick-slider .slick-list {
  -webkit-transform: translate3d(0, 0, 0);
  -moz-transform: translate3d(0, 0, 0);
  -ms-transform: translate3d(0, 0, 0);
  -o-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0); }

.slick-track {
  position: relative;
  left: 0;
  top: 0;
  display: block; }
  .slick-track:before, .slick-track:after {
    content: "";
    display: table; }
  .slick-track:after {
    clear: both; }
  .slick-loading .slick-track {
    visibility: hidden; }

.slick-slide {
  float: left;
  height: 100%;
  min-height: 1px;
  display: none; }
  [dir="rtl"] .slick-slide {
    float: right; }
  .slick-slide.slick-loading img {
    display: none; }
  .slick-slide.dragging img {
    pointer-events: none; }
  .slick-initialized .slick-slide {
    display: block; }
  .slick-loading .slick-slide {
    visibility: hidden; }
  .slick-vertical .slick-slide {
    display: block;
    height: auto;
    border: 1px solid transparent; }

.slick-arrow.slick-hidden {
  display: none; }

/* Slider */
.slick-loading .slick-list {
  background-color: #fff; /*url("./ajax-loader.gif") center center no-repeat;*/ }

/* Icons */
@import url('http://fonts.cdnfonts.com/css/slick');

/* Arrows */
.slick-prev,
.slick-next {
  z-index: 5;
  position: absolute;
  display: block;
  height: 30px;
  width: 30px;
  line-height: 0px;
  font-size: 0px;
  cursor: pointer;
  background: transparent;
  color: transparent;
  bottom: 15px;
  -webkit-transform: translate(0, -50%);
  -ms-transform: translate(0, -50%);
  transform: translate(0, -50%);
  padding: 0;
  border: none;
  outline: none; }
  .slick-prev:hover, .slick-prev:focus,
  .slick-next:hover,
  .slick-next:focus {
    outline: none;
    background: transparent;
    color: transparent; }
    .slick-prev:hover:before, .slick-prev:focus:before,
    .slick-next:hover:before,
    .slick-next:focus:before {
      opacity: 1; }
  .slick-prev.slick-disabled:before,
  .slick-next.slick-disabled:before {
    opacity: 0.25; }
  .slick-prev:before,
  .slick-next:before {
    font-family: "slick";
    font-size: 20px;
    line-height: 1;
    color: #649034;
    opacity: 0.75;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale; }

.slick-prev {
  left: 50px; }
  [dir="rtl"] .slick-prev {
    left: auto;
    right: -25px; }
  .slick-prev:before {
    content: "<<"; }
    [dir="rtl"] .slick-prev:before {
      content: ">>"; }

.slick-next {
  right: 50px; }
  [dir="rtl"] .slick-next {
    left: -25px;
    right: auto; }
  .slick-next:before {
    content: ">>"; }
    [dir="rtl"] .slick-next:before {
      content: "<<"; }

/* Dots */
.slick-dotted.slick-slider {
  margin-bottom: 30px; }

.slick-dots {
  position: absolute;
  bottom: -25px;
  list-style: none;
  display: block;
  text-align: center;
  padding: 0;
  margin: 0;
  width: 100%; }
  .slick-dots li {
    position: relative;
    display: inline-block;
    height: 20px;
    width: 20px;
    margin: 0 5px;
    padding: 0;
    cursor: pointer; }
    .slick-dots li button {
      border: 0;
      background: transparent;
      display: block;
      height: 20px;
      width: 20px;
      outline: none;
      line-height: 0px;
      font-size: 0px;
      color: transparent;
      padding: 5px;
      cursor: pointer; }
      .slick-dots li button:hover, .slick-dots li button:focus {
        outline: none; }
        .slick-dots li button:hover:before, .slick-dots li button:focus:before {
          opacity: 1; }
      .slick-dots li button:before {
        position: absolute;
        top: 0;
        left: 0;
        content: "•";
        width: 20px;
        height: 20px;
        font-family: "slick";
        font-size: 6px;
        line-height: 20px;
        text-align: center;
        color: black;
        opacity: 0.25;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale; }
    .slick-dots li.slick-active button:before {
      color: black;
      opacity: 0.75; }

/**
 * Typography
 */
h1 {
  margin-top: 1.2em;
  margin-bottom: 0.5em; }

.large {
  font-size: 1.3em; }

address {
  font-style: normal; }

section h1 {
  font-size: 3.5em;
  line-height: 1;
  color: #a1bf36;
  text-align: left;
  font-weight: 300;
  padding: 0 85px; }
  @media all and (max-width: 860px) {
    section h1 {
      padding: 0 5%; } }
  section h1 b {
    font-weight: 600; }
  @media all and (max-width: 30em) {
    section h1 {
      font-size: 3em; } }

section h2 {
  font-size: 2em;
  color: #649034;
  margin-bottom: 0; }

section h3 {
  color: #c9431a;
  margin-bottom: 0;
  font-weight: 600; }

.standout {
  font-size: 2em;
  color: #649034;
  line-height: 1.4; }

.text-right {
  text-align: right; }

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

em {
  color: #649034;
  font-style: normal; }

details summary {
  color: #649034; }

.large-special {
  font-size: 1.3em;
  line-height: 1em;
  font-kerning: 2;
  color: #649034; }
  .large-special.red {
    color: #c9431a; }
  .large-special > div:first-of-type p, .large-special > div:first-of-type address {
    line-height: 3em; }
  @media all and (max-width: 860px) {
    .large-special .label-inline {
      margin-bottom: 0; }
    .large-special > div:last-of-type p, .large-special > div:last-of-type address {
      margin-top: 0; } }

.panel-standout {
  color: white; }

footer {
  text-align: center;
  color: #649034; }

header[role="banner"] {
  margin-top: 9em; }
  header[role="banner"] h1,
  header[role="banner"] h2 {
    margin-left: 5.4rem; }
  header[role="banner"] h2 {
    font-size: 1em;
    line-height: 1.2em;
    margin-bottom: 0.5em; }
  header[role="banner"] h1 {
    text-align: left;
    margin-top: 0; }
    header[role="banner"] h1 span {
      display: block;
      font-size: 1.4em;
      line-height: 1em; }
    header[role="banner"] h1 span:last-of-type {
      font-size: 2.7em;
      line-height: 0.9em; }
  @media all and (max-width: 80em) {
    header[role="banner"] h1, header[role="banner"] h2 {
      margin-left: 5%;
      margin-right: 5%; }
    header[role="banner"] h1 span:last-of-type {
      font-size: 2em;
      line-height: 0.9em; } }
  @media all and (max-width: 550px) {
    header[role="banner"] h1, header[role="banner"] h2 {
      text-align: center; }
    header[role="banner"] h1 {
      font-size: 2.2em; } }

.non-list {
  margin: 0;
  padding-left: 0; }
  .non-list li {
    list-style: none; }

.hidden {
  display: none; }

nav li.burger {
  display: none;
  opacity: 0; }

nav button {
  border: none;
  background-color: transparent; }

nav ul {
  margin: 0;
  padding-left: 0;
  display: table-row; }
  nav ul li {
    list-style: none; }
  nav ul li {
    display: inline-block;
    display: table-cell; }
    nav ul li a, nav ul li button {
      font-size: 0.7em;
      text-transform: uppercase;
      color: #649034;
      min-width: 80px;
      height: 5.8em;
      display: block;
      border-left: solid 2px #649034;
      padding: 0.2em 1em 0.2em 0.8em;
      font-weight: 600; }
  nav ul li:last-of-type a {
    height: auto;
    background-color: #a1bf36;
    color: white; }

@media all and (max-width: 930px) {
  nav ul li:first-of-type {
    display: block;
    opacity: 1; }
  nav ul li {
    display: block; }
    nav ul li a, nav ul li button {
      height: auto;
      padding: 1em;
      border-left: none;
      border-bottom: solid 2px #649034; }
    nav ul li button {
      font-size: 1em;
      padding: 0.5em;
      width: 100%;
      text-align: right; }
  nav ul li:not(.burger) {
    display: none; } }

@media all and (min-width: 930px) {
  nav li:not(.burger) {
    display: table-cell !important; } }

.right {
  float: right; }

.left {
  float: left;
  margin-right: 1em; }

.red {
  color: #c9431a; }

.on-beige {
  background: #EFF4E0; }

.panel-background {
  background: #EFF4E0;
  background-image: url("../img/contour-background.jpg");
  background-position: top center;
  background-size: cover;
  margin-bottom: 3.5em;
  padding: 3.5em 5.4em;
  position: relative; }
  @media all and (max-width: 860px) {
    .panel-background {
      padding: 3.5em 5%; } }

.infographic,
.panel-background,
.panel-standout,
.carousel.layout-large {
  position: relative; }
  .infographic:not(.no-arrow)::after,
  .panel-background:not(.no-arrow)::after,
  .panel-standout:not(.no-arrow)::after,
  .carousel.layout-large:not(.no-arrow)::after {
    content: "";
    position: absolute;
    top: 100%;
    right: 60px;
    border-style: solid;
    border-color: #c9431a transparent;
    border-width: 63px 60px 0 121px; }
    @media all and (max-width: 550px) {
      .infographic:not(.no-arrow)::after,
      .panel-background:not(.no-arrow)::after,
      .panel-standout:not(.no-arrow)::after,
      .carousel.layout-large:not(.no-arrow)::after {
        right: 10px;
        border-width: 40px 40px 0 100px; } }
  .infographic.arrow-top::after,
  .panel-background.arrow-top::after,
  .panel-standout.arrow-top::after,
  .carousel.layout-large.arrow-top::after {
    top: 0; }

.panel-no-padding {
  padding: 3.5em 0; }
  .panel-no-padding p, .panel-no-padding address, .panel-no-padding h2 {
    padding: 0 5.4em; }

.panel-standout {
  background-color: #649034;
  padding: 0.1em 5.4em 2.1em 0; }
  .panel-standout p, .panel-standout address {
    margin-top: 5em;
    margin-left: 2em; }

.panel-lined {
  margin: 2em; }
  .panel-lined::before, .panel-lined::after {
    content: "";
    width: 100%;
    height: 5px;
    border-radius: 5px;
    background: #a1bf36;
    display: block; }
  .panel-lined::before {
    margin-bottom: 10px; }
  .panel-lined::after {
    margin-top: 10px; }
  .panel-lined > div {
    background: white;
    display: -webkit-box;
    display: -moz-box;
    display: box;
    display: -webkit-flex;
    display: -moz-flex;
    display: -ms-flexbox;
    display: flex; }
    @media all and (max-width: 600px) {
      .panel-lined > div {
        -webkit-box-lines: multiple;
        -moz-box-lines: multiple;
        box-lines: multiple;
        -webkit-flex-wrap: wrap;
        -moz-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
        flex-wrap: wrap; } }
  .panel-lined .left {
    -webkit-box-flex: 0 0 auto;
    -moz-box-flex: 0 0 auto;
    -webkit-flex: 0 0 auto;
    -ms-flex: 0 0 auto;
    flex: 0 0 auto;
    width: 310px; }
    @media all and (max-width: 600px) {
      .panel-lined .left {
        width: 100%;
        text-align: center; } }
  .panel-lined .right {
    -webkit-box-flex: 1 1 auto;
    -moz-box-flex: 1 1 auto;
    -webkit-flex: 1 1 auto;
    -ms-flex: 1 1 auto;
    flex: 1 1 auto; }
  .panel-lined h3,
  .panel-lined p,
  .panel-lined address {
    padding: 3px 8px; }
  .panel-lined h3 {
    margin-top: 0;
    font-size: 2.2em; }
    @media all and (max-width: 600px) {
      .panel-lined h3 {
        margin-left: 45px; } }
    @media all and (max-width: 700px) {
      .panel-lined h3 {
        font-size: 1.7em; } }
    @media all and (max-width: 620px) {
      .panel-lined h3 {
        font-size: 1.4em; } }

.label, .label-inline, .label-simple {
  background-image: url("../img/ribbon.png");
  background-size: cover;
  background-position: right;
  color: white;
  padding: 0.1em 1em;
  max-width: 550px;
  width: 100%;
  position: relative;
  margin-bottom: 1em;
  box-sizing: border-box; }
  .label::after, .label-inline::after, .label-simple::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 0;
    border-style: solid;
    border-color: #649034 transparent;
    border-width: 14px 0px 0px 29px; }
  .label.label-red, .label-red.label-inline, .label-red.label-simple {
    background-image: url("../img/ribbon-red.png"); }
    .label.label-red::after, .label-red.label-inline::after, .label-red.label-simple::after {
      border-color: black transparent; }
  .label.fat, .fat.label-inline, .fat.label-simple {
    font-size: 2.5em;
    font-weight: bold;
    margin-top: 1em;
    display: inline-block;
    box-sizing: border-box;
    margin: 30px 0 5px 0; }

.label-detail {
  color: #649034;
  margin-left: 40px; }

.header-red {
  background: #c9431a;
  color: white;
  position: relative;
  height: 45px;
  box-sizing: border-box; }
  .header-red::after {
    content: "";
    border-style: solid;
    border-width: 45px 0 0 36px;
    border-color: #c9431a transparent;
    position: absolute;
    right: 100%;
    top: 0; }

.label-inline {
  display: inline-block;
  margin-left: 1em;
  max-width: auto;
  width: 245px;
  font-size: 2em;
  line-height: 1em; }
  @media all and (max-width: 80em) {
    .label-inline {
      width: 235px;
      margin-left: 0.5em; } }

.label-simple {
  background: #a1bf36;
  height: 55px;
  position: relative;
  box-sizing: border-box;
  width: 10em; }
  .label-simple::after {
    content: "";
    border-style: solid;
    border-width: 55px 55px 0 0;
    border-color: #a1bf36 transparent;
    position: absolute;
    left: 100%;
    top: 0; }

#improvements .label, #improvements .label-inline, #improvements .label-simple {
  position: absolute;
  top: 0;
  max-width: 600px;
  margin-top: 10px;
  z-index: 5;
  max-width: 50%; }
  @media all and (max-width: 600px) {
    #improvements .label, #improvements .label-inline, #improvements .label-simple {
      font-size: 1.6em; } }
  @media all and (max-width: 450px) {
    #improvements .label, #improvements .label-inline, #improvements .label-simple {
      font-size: 1.4em; } }
  @media all and (max-width: 400px) {
    #improvements .label, #improvements .label-inline, #improvements .label-simple {
      font-size: 1.2em; } }

.more {
  color: #649034;
  text-transform: uppercase;
  font-weight: bold;
  cursor: pointer; }
  .more::before {
    content: "";
    background-image: url("../img/down.png");
    width: 15px;
    height: 13px;
    display: inline-block;
    margin-right: 1em; }

.left-line {
  border-left: 2px solid #649034;
  padding-left: 1em;
  box-sizing: border-box; }

.group:after {
  content: "";
  display: table;
  clear: both; }

.no-line {
  padding-left: 1em; }

.no-margin, .no-margin p, .no-margin address {
  margin: 0; }

.icons img {
  float: left;
  border-radius: 100%;
  margin-right: 1em; }

.icons p, .icons address {
  margin: 0; }

.icons li:after {
  content: "";
  display: table;
  clear: both; }

figure {
  margin: 0; }
  figure figcaption {
    margin-top: 1em; }

.bullet-chevrons {
  position: relative; }
  .bullet-chevrons p, .bullet-chevrons address {
    position: relative; }
    .bullet-chevrons p:first-of-type, .bullet-chevrons address:first-of-type {
      margin-top: 0; }
  .bullet-chevrons p::before, .bullet-chevrons address::before {
    content: "";
    background: url("../img/bullet-chevron.png");
    width: 20px;
    height: 27px;
    position: absolute;
    right: calc(100% + 0.5em); }

@media all and (max-width: 860px) {
  .slick-prev, .slick-next {
    bottom: 0; } }

.carousel .slick-prev::before,
.carousel .slick-next::before,
.carousel-alt .slick-prev::before,
.carousel-alt .slick-next::before {
  content: "";
  width: 26px;
  height: 27px;
  display: inline-block; }

.carousel .slick-prev::before,
.carousel-alt .slick-prev::before {
  background-image: url("../img/carousel-left.png"); }

.carousel .slick-next::before,
.carousel-alt .slick-next::before {
  background-image: url("../img/carousel-right.png"); }

.carousel {
  padding: 0;
  margin: 0; }
  .carousel.layout-small img {
    float: left;
    margin-right: 3.5em;
    display: block; }
    @media all and (max-width: 660px) {
      .carousel.layout-small img {
        margin-right: 1em; } }
    @media all and (max-width: 610px) {
      .carousel.layout-small img {
        float: none;
        margin: 0 auto; } }
  .carousel.layout-small .slick-prev {
    left: 350px; }
    @media all and (max-width: 610px) {
      .carousel.layout-small .slick-prev {
        left: 50px; } }
  @media all and (max-width: 610px) {
    .carousel.layout-small h2, .carousel.layout-small p, .carousel.layout-small address {
      margin: 0 2em;
      text-align: center; } }
  @media all and (max-width: 860px) {
    .carousel .cols-2 img {
      display: block;
      margin: 0 auto; } }
  .carousel.layout-large li {
    position: relative; }
  .carousel.layout-large .slick-prev {
    left: 130px; }
    @media all and (max-width: 860px) {
      .carousel.layout-large .slick-prev {
        left: 2px; } }
  .carousel.layout-large .slick-next {
    right: 138px; }
    @media all and (max-width: 860px) {
      .carousel.layout-large .slick-next {
        right: 10px; } }
  .carousel.layout-large .slick-prev::before,
  .carousel.layout-large .slick-next::before {
    content: "";
    width: 39px;
    height: 41px;
    display: inline-block; }
  .carousel.layout-large .slick-prev::before {
    background-image: url("../img/carousel-white-left.png"); }
  .carousel.layout-large .slick-next::before {
    background-image: url("../img/carousel-white-right.png"); }
  .carousel.layout-large img + div, .carousel.layout-large a + div {
    width: 630px;
    background: rgba(255, 255, 255, 0.9);
    position: absolute;
    bottom: 0;
    padding: 1.4em 2em 1.4em 140px;
    box-sizing: border-box;
    left: 0;
    right: 0;
    margin-left: auto;
    margin-right: auto; }
    @media all and (max-width: 80em) {
      .carousel.layout-large img + div, .carousel.layout-large a + div {
        width: 500px; } }
    @media all and (max-width: 600px) {
      .carousel.layout-large img + div, .carousel.layout-large a + div {
        padding: 0.4em 1em 0.4em 90px;
        width: 400px; } }
    @media all and (max-width: 30em) {
      .carousel.layout-large img + div, .carousel.layout-large a + div {
        padding: 1em;
        width: 300px; } }
    @media all and (min-width: 30em) {
      .carousel.layout-large img + div::after, .carousel.layout-large a + div::after {
        content: "";
        border-style: solid;
        border-width: 120px 0 0 120px;
        border-color: transparent #a1bf36;
        position: absolute;
        bottom: 0;
        left: 0; } }
  @media all and (min-width: 30em) and (max-width: 600px) {
    .carousel.layout-large img + div::after, .carousel.layout-large a + div::after {
      border-width: 80px 0 0 80px; } }
  .carousel.layout-large .slide-number {
    font-size: 2.4em;
    font-weight: bold;
    color: white;
    position: absolute;
    bottom: 0.2em;
    left: 0.5em;
    z-index: 10; }
    @media all and (max-width: 30em) {
      .carousel.layout-large .slide-number {
        font-size: 1.2em;
        color: #a1bf36; } }
  .carousel.layout-large h3 {
    margin-top: 0;
    margin-bottom: 0;
    color: #649034;
    font-weight: 600; }
  .carousel.layout-large p, .carousel.layout-large address {
    margin-top: 0; }
  .carousel.large-pic .slick-prev {
    left: 65%; }
    @media all and (max-width: 550px) {
      .carousel.large-pic .slick-prev {
        left: 50px; } }
  @media all and (max-width: 80em) {
    .carousel.large-pic .slick-prev, .carousel.large-pic .slick-next {
      bottom: -25px; } }
  .carousel.border-bottom {
    padding-bottom: 2em; }
    .carousel.border-bottom::after {
      content: "";
      background: #a1bf36;
      display: inline-block;
      position: absolute;
      width: 100%;
      height: 3px;
      left: 0;
      bottom: 0; }

.carousel-alt .slick-prev,
.carousel-alt .slick-next {
  top: 280px; }

.carousel-alt .slick-prev {
  left: -10%; }
  @media all and (max-width: 860px) {
    .carousel-alt .slick-prev {
      left: -5%; } }

.carousel-alt .slick-next {
  right: -10%; }
  @media all and (max-width: 860px) {
    .carousel-alt .slick-next {
      right: -5%; } }

.indent {
  margin-left: 3.5em; }

.large-special p, .large-special address {
  display: inline-block; }

.overlay-light {
  margin: 0 -5.4em -3.5em -5.4em;
  padding: 1em 5.4em 3.5em 5.4em;
  background-color: #ffffff80; }

#achievements li {
  text-align: right;
  padding: 0.5em; }
  #achievements li img {
    border-radius: 100% 100% 0 100%;
    margin-left: auto;
    display: block; }
  #achievements li span {
    display: inline-block;
    margin-left: auto;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    -webkit-transform-origin: 61% 14%;
    -moz-transform-origin: 61% 14%;
    -ms-transform-origin: 61% 14%;
    -o-transform-origin: 61% 14%;
    transform-origin: 61% 14%;
    margin: 1em 0em;
    color: white;
    background-color: #649034;
    font-size: 3em;
    padding: 0em 0.4em; }
  #achievements li p, #achievements li address {
    text-align: left; }

#achievements > div {
  position: relative;
  padding-right: 2em; }
  #achievements > div::after {
    content: "";
    width: 100%;
    border-bottom: solid 2px black;
    top: 37%;
    position: absolute;
    z-index: -1; }

.team-pics img {
  margin-bottom: 1em; }

.team-pics span {
  display: block; }

.featherlight-content {
  width: 600px;
  height: 400px; }
  .featherlight-content iframe {
    height: 100%;
    width: 100%; }

.video-thumbnail {
  position: relative;
  display: inline-block; }
  .video-thumbnail .button {
    background: #a1bf36;
    display: inline-block;
    border-radius: 100%;
    padding: 9px;
    position: absolute;
    left: calc(50% - 32px);
    top: calc(50% - 32px); }

.icons-social img {
  margin-right: 0.3em; }

/* SMACSS theme rules */
/* @import "theme-A"; */
/* @import "theme-B"; */

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmNzcyIsInNvdXJjZXMiOlsic3R5bGVzLnNjc3MiLCJpbml0aWFsaXNhdGlvbi9faW5pdC5zY3NzIiwiaW5pdGlhbGlzYXRpb24vX3ZhcmlhYmxlcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9fYm91cmJvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fcHJlZml4ZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3B4LXRvLWVtLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL3NldHRpbmdzL19hc3NldC1waXBlbGluZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2Fzc2lnbi1pbnB1dHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19jb250YWlucy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2NvbnRhaW5zLWZhbHN5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9faXMtbGVuZ3RoLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9faXMtbGlnaHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19pcy1udW1iZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19pcy1zaXplLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHgtdG8tZW0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19weC10by1yZW0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19zaGFkZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3N0cmlwLXVuaXRzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fdGludC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3RyYW5zaXRpb24tcHJvcGVydHktbmFtZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3VucGFjay5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX21vZHVsYXItc2NhbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fY29udmVydC11bml0cy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19kaXJlY3Rpb25hbC12YWx1ZXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fZm9udC1zb3VyY2UtZGVjbGFyYXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19saW5lYXItYW5nbGUtcGFyc2VyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2xpbmVhci1ncmFkaWVudC1wYXJzZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtYXJnLXBhcnNlci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtZ3JhZGllbnQtcGFyc2VyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3JlbmRlci1ncmFkaWVudHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fc2hhcGUtc2l6ZS1zdHJpcHBlci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19zdHItdG8tbnVtLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2FuaW1hdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19hcHBlYXJhbmNlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JhY2tmYWNlLXZpc2liaWxpdHkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fYmFja2dyb3VuZC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZ3JvdW5kLWltYWdlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JvcmRlci1pbWFnZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19jYWxjLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2NvbHVtbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fZmlsdGVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZsZXgtYm94LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZvbnQtZmFjZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19mb250LWZlYXR1cmUtc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9faGlkcGktbWVkaWEtcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9faHlwaGVucy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19pbWFnZS1yZW5kZXJpbmcuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fa2V5ZnJhbWVzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2xpbmVhci1ncmFkaWVudC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19wZXJzcGVjdGl2ZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19wbGFjZWhvbGRlci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19yYWRpYWwtZ3JhZGllbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fc2VsZWN0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3RleHQtZGVjb3JhdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL190cmFuc2Zvcm0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL191c2VyLXNlbGVjdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2JvcmRlci1jb2xvci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19ib3JkZXItc3R5bGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19ib3JkZXItd2lkdGguc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19idXR0b25zLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fY2xlYXJmaXguc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19lbGxpcHNpcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2ZvbnQtc3RhY2tzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9faGlkZS10ZXh0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fbWFyZ2luLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcGFkZGluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3Bvc2l0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19yZXRpbmEtaW1hZ2Uuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19zaXplLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fdGV4dC1pbnB1dHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL190aW1pbmctZnVuY3Rpb25zLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fdHJpYW5nbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL193b3JkLXdyYXAuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvX2JvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3plbi1ncmlkcy9zYXNzL196ZW4tZ3JpZHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy96ZW4tZ3JpZHMvc2Fzcy96ZW4tZ3JpZHMvX2dyaWRzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvemVuLWdyaWRzL3Nhc3MvemVuLWdyaWRzL192YXJpYWJsZXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy96ZW4tZ3JpZHMvc2Fzcy96ZW4tZ3JpZHMvX2Z1bmN0aW9ucy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3plbi1ncmlkcy9zYXNzL3plbi1ncmlkcy9fZmxvdy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3plbi1ncmlkcy9zYXNzL3plbi1ncmlkcy9fbGF5b3V0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvemVuLWdyaWRzL3Nhc3MvemVuLWdyaWRzL191bmRvLnNjc3MiLCJpbml0aWFsaXNhdGlvbi9fbWl4aW5zLnNjc3MiLCJzdGFuZGFyZGlzZS9fbm9ybWFsaXplLnNjc3MiLCJzdGFuZGFyZGlzZS9fZWxlbWVudHMuc2NzcyIsImxheW91dHMvX2xheW91dC5zY3NzIiwiY29tcG9uZW50cy9zbGljay5zY3NzIiwiY29tcG9uZW50cy9zbGljay10aGVtZS5zY3NzIiwiY29tcG9uZW50cy9fdHlwb2dyYXBoeS5zY3NzIiwiY29tcG9uZW50cy9fY29tcG9uZW50cy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqIFN0eWxlcyBhcmUgb3JnYW5pemVkIHVzaW5nIHRoZSBTTUFDU1MgdGVjaG5pcXVlLiBAc2VlIGh0dHA6Ly9zbWFjc3MuY29tL2Jvb2svXG4gKlxuICogV2hlbiB5b3UgdHVybiBvbiBDU1MgYWdncmVnYXRpb24gYXQgYWRtaW4vY29uZmlnL2RldmVsb3BtZW50L3BlcmZvcm1hbmNlLCBhbGxcbiAqIG9mIHRoZXNlIEBpbmNsdWRlIGZpbGVzIHdpbGwgYmUgY29tYmluZWQgaW50byBhIHNpbmdsZSBmaWxlLlxuICovXG5cbi8qIEltcG9ydCBTYXNzIG1peGlucywgdmFyaWFibGVzLCBDb21wYXNzIG1vZHVsZXMsIGV0Yy4gKi9cbkBpbXBvcnQgXCJpbml0aWFsaXNhdGlvbi9pbml0XCI7XG5cbi8qIEhUTUwgZWxlbWVudCBzdGFuZGFyZGlzYXRpb24gcnVsZXMgKi9cbkBpbXBvcnQgXCJzdGFuZGFyZGlzZS9ub3JtYWxpemVcIjtcbkBpbXBvcnQgXCJzdGFuZGFyZGlzZS9lbGVtZW50c1wiO1xuXG4vKiBMYXlvdXQgcnVsZXMgKi9cbkBpbXBvcnQgXCJsYXlvdXRzL2xheW91dFwiO1xuLy8gQGltcG9ydCBcImxheW91dHMvcmVnaW9uc1wiO1xuXG4vKiBDb21wb25lbnQgcnVsZXMgKi9cbkBpbXBvcnQgXCJjb21wb25lbnRzL3NsaWNrXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9zbGljay10aGVtZVwiO1xuQGltcG9ydCBcImNvbXBvbmVudHMvdHlwb2dyYXBoeVwiO1xuQGltcG9ydCBcImNvbXBvbmVudHMvY29tcG9uZW50c1wiO1xuXG5cbi8qIFNNQUNTUyB0aGVtZSBydWxlcyAqL1xuLyogQGltcG9ydCBcInRoZW1lLUFcIjsgKi9cbi8qIEBpbXBvcnQgXCJ0aGVtZS1CXCI7ICovXG5cblxuXG5cblxuXG4iLCIvL1xuLy8gSW5pdGlhbGl6YXRpb24gcGFydGlhbFxuLy9cbi8vIFRvIG1ha2UgaXQgZWFzaWVyIHRvIHVzZSBhbGwgdmFyaWFibGVzIGFuZCBtaXhpbnMgaW4gYW55IFNhc3MgZmlsZSBpbiB0aGlzXG4vLyB0aGVtZSwgZWFjaCAuc2NzcyBmaWxlIGhhcyBhIEBpbXBvcnQgXCJpbml0XCIgZGVjbGFyYXRpb24uIEFuZCB0aGlzIF9pbml0LnNjc3Ncbi8vIGZpbGUgaXMgaW4gY2hhcmdlIG9mIGltcG9ydGluZyBhbGwgdGhlIG90aGVyIHBhcnRpYWxzIG5lZWRlZCBmb3IgdGhlIHRoZW1lLlxuLy9cbi8vIFRoaXMgaW5pdGlhbGl6YXRpb24gcGFydGlhbCBpcyBvcmdhbml6ZWQgaW4gdGhpcyB3YXk6XG4vLyAtIEZpcnN0IHdlIHNldCBhbnkgc2hhcmVkIFNhc3MgdmFyaWFibGVzLlxuLy8gLSBOZXh0IHdlIGltcG9ydCBDb21wYXNzIHBsdWctaW5zIChTYXNzIG1peGluIGxpYnJhcmllcykuXG4vLyAtIExhc3Qgd2UgZGVmaW5lIG91ciBjdXN0b20gbWl4aW5zIGZvciB0aGlzIHRoZW1lLlxuLy9cblxuQGltcG9ydCBcInZhcmlhYmxlc1wiO1xuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXJ0aWFscyB0byBiZSBzaGFyZWQgd2l0aCBhbGwgLnNjc3MgZmlsZXMuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBCb3VyYm9uISBBcyBhIHJlcGxhY2VtZW50IGZvciBDb21wYXNzXG5AaW1wb3J0IFwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9ib3VyYm9uXCI7XG5cbi8vIEFkZCBDb21wYXNzJyBJRSBhbmQgdmVuZG9yIHByZWZpeCBzdXBwb3J0IHZhcmlhYmxlcy5cbi8vIEBpbXBvcnQgXCJjb21wYXNzL3N1cHBvcnRcIjtcblxuLy8gVXNlIG9uZSBDU1MzIG1peGluIGluc3RlYWQgb2YgbXVsdGlwbGUgdmVuZG9yIHByZWZpeGVzLlxuLy8gQGltcG9ydCBcImNvbXBhc3MvY3NzM1wiO1xuXG4vLyBBZGQgdGhlIFplbiBHcmlkcyByZXNwb25zaXZlIGxheW91dCBtaXhpbnMuXG4vLyBAaW1wb3J0IFwiemVuLWdyaWRzXCI7XG5AaW1wb3J0IFwiLi4vLi4vbm9kZV9tb2R1bGVzL3plbi1ncmlkcy9zYXNzL3plbi1ncmlkc1wiO1xuXG4vLyBOb3cgd2UgYWRkIG91ciBjdXN0b20gaGVscGVyIG1peGlucy5cbkBpbXBvcnQgXCJtaXhpbnNcIjtcbiIsIi8qKlxuICogVmFyaWFibGVzXG4gKi9cblxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHbG9iYWwgdmFyaWFibGVzXG5cbi8vIERFUFJFQ0FURURcbiRwYWdlLW1heC13aWR0aDogICAgICAgIDEwMjVweDtcbiRtZW51LXctbmFycm93OiAgICAgICAgIDgwMHB4O1xuJGJsb2NrLXBhZGRpbmc6ICAgICAgICAgMCA4NXB4O1xuXG4kdy1uYXJyb3c6ICAgICAgICAgICAgICA0ODBweDtcbiR3LXJlZ3VsYXI6ICAgICAgICAgICAgIDg2MHB4O1xuJHctd2lkZTogICAgICAgICAgICAgICAgOTgwcHg7XG4kdy12LXdpZGU6ICAgICAgICAgICAgICAxMzUwcHg7XG5cbiRwb2ludGVyX3RhcmdldC1zaXplOiAgIDQwcHg7XG5cbiRwb2ludGVyX3RhcmdldC1wYWRkaW5nOiAgICAgIDAuNmVtIDEuMmVtOyAvKiB1c2VkIGJ5IGJ1dHRvbnMgKi9cbiRwb2ludGVyX3RhcmdldC1saW5lLWhlaWdodDogIDEuMztcblxuJHRleHQtZmllbGQtcGFkZGluZzogICAgMC4zZW0gMC41ZW07IC8qIHVzZWQgYnkgdGFibGUgY2VsbHMgYW5kIHRleHQgZmllbGRzICovXG5cbiRjb3JuZXJfcmFkaXVzLWxhcmdlOiAgIDAuNGVtO1xuJGNvcm5lcl9yYWRpdXMtcmVndWxhcjogMC4yNWVtO1xuJGNvcm5lcl9yYWRpdXMtc21hbGw6ICAgMC4xM2VtO1xuXG4kaC1zcGFjaW5nOiAgICAgICAgICAgICAyZW07XG5cbi8qIHVzZWQgaW4gd2lkdGggZnVuY3Rpb25zICovXG4kdy1uYXJyb3c6ICAgICAgICAgICAgICAzMGVtOyAgLyogNDgwcHggQCAxNnB4IGZvbnQgc2l6ZSAqL1xuJHctYXZlcmFnZTogICAgICAgICAgICAgNjBlbTsgIC8qIDk2MHB4IEAgMTZweCBmb250IHNpemUgKi9cbiR3LXdpZGU6ICAgICAgICAgICAgICAgIDgwZW07ICAvKiAxMjgwcHggQCAxNnB4IGZvbnQgc2l6ZSAqL1xuXG4kdy1zaWRlYmFyLW5hcnJvdzogICAgICAxMDAlOyAgLyogNDgwcHggQCAxNnB4IGZvbnQgc2l6ZSAqL1xuJHctc2lkZWJhci1hdmVyYWdlOiAgICAgMzAwcHg7IC8qIDk2MHB4IEAgMTZweCBmb250IHNpemUgKi9cbiR3LXNpZGViYXItd2lkZTogICAgICAgIDQ1MHB4OyAvKiAxMjgwcHggQCAxNnB4IGZvbnQgc2l6ZSAqL1xuXG4kZ3V0dGVyLW5hcnJvdzogICAgICAgICAxJTtcbiRndXR0ZXItY29tZnk6ICAgICAgICAgIDIuMiU7XG4kZ3V0dGVyLXdpZGU6ICAgICAgICAgICAyLjUlO1xuXG4kZm9vdGVyX2hlaWdodDogICAgICAgICAxMjBweDtcblxuJG1haW4tcGFkZGluZy10b3A6ICAgICAgMy4yZW07XG4kbWFpbi1wYWRkaW5nLWJvdHRvbTogICAzZW07XG5cblxuLy8gVGhlIGFtb3VudCBsaXN0cywgYmxvY2txdW90ZXMgYW5kIGNvbW1lbnRzIGFyZSBpbmRlbnRlZC5cbiRpbmRlbnQtYW1vdW50OiAgICAgICAgIDMwcHg7XG5cbi8vIFRoZSBoZWlnaHQgb2YgdGhlIG5hdmlnYXRpb24gY29udGFpbmVyLlxuJG5hdi1oZWlnaHQ6ICAgICAgICAgICAgM2VtO1xuXG4vLyBNYXBzXG4kbWFwX3BvaW50X29wYWNpdHk6ICAgICAwLjM7XG5cbi8qIGRlcHRoICh6LWluZGV4KSAqL1xuJHotYmFja2dyb3VuZDogICAgICAgICAgMDtcbiR6LXBhZ2UtY29udGVudDogICAgICAgIDEwO1xuJHotc2lkZWJhcnM6ICAgICAgICAgICAgMzA7XG4kei1oZWFkZXItZm9vdGVyOiAgICAgICA0MDtcblxuJHotc3RpY2t5LWVsZW1lbnRzOiAgICAgNTA7XG4kei1mbG9hdGluZy1lbGVtZW50czogICA2MDsgIC8vbGlrZSBob3Zlci1wb3B1cHNcblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTW9kYWwgdmFyaWFibGVzXG5cbiR6LWRpYWxvZ3M6ICAgICAgICAgICAgIDgwO1xuJGRpYWxvZy1oZWFkZXItcGFkZGluZzogMC44NWVtIDEuM2VtO1xuJGRpYWxvZy1oZWFkZXItZm9udC1zaXplOiAxLjFlbTtcbiRkaWFsb2ctaGVhZGVyLWNvbG9yOiAgIGluaGVyaXQ7XG4kZGlhbG9nLXBhZGRpbmc6ICAgICAgICAyLjJlbSAxLjhlbSAxLjhlbTtcbiRkaWFsb2ctdG9wOiAgICAgICAgICAgIDJlbTtcbiRkaWFsb2ctYmFja2Ryb3AtYmc6ICAgIHJnYmEoYmxhY2ssIDAuNyk7XG5cblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVHlwb2dyYXBoeVxuLy8gRm9udCBmYWNlcywgc3RhY2tzLCBzaXplcywgYW5kIGxpbmUtaGVpZ2h0cy5cblxuJGJhc2UtZm9udC1zaXplOiAgICAgICAgMTZweDsgLy8gVGhlIGZvbnQgc2l6ZSBzZXQgb24gdGhlIHJvb3QgaHRtbCBlbGVtZW50LlxuJGJhc2UtbGluZS1oZWlnaHQ6ICAgICAgMjRweDsgLy8gVGhpcyBsaW5lLWhlaWdodCBkZXRlcm1pbmVzIHRoZSBiYXNpYyB1bml0IG9mIHZlcnRpY2FsIHJoeXRobS5cblxuJGxpbmUtaGVpZ2h0OiAgICAgICAgICAgMS40O1xuXG4kZm9udC1zaXplLWgxOiAgICAgICAgICAzLjVlbTtcbiRmb250LXNpemUtaDI6ICAgICAgICAgIDJlbTtcbiRmb250LXNpemUtaDM6ICAgICAgICAgIDEuMTdlbTtcbiRmb250LXNpemUtaDQ6ICAgICAgICAgIDFlbTtcbiRmb250LXNpemUtaDU6ICAgICAgICAgIDAuODNlbTtcbiRmb250LXNpemUtaDY6ICAgICAgICAgIDAuNjdlbTtcblxuJGhlYWRpbmdzLWxpbmUtaGVpZ2h0OiAgMS4xOyAvLyBqdXN0IGEgYmFja3VwIGNhdGNoLWFsbFxuJGxpbmUtaGVpZ2h0LWgxOiAgICAgICAgMTtcbiRsaW5lLWhlaWdodC1oMjogICAgICAgIDE7XG4kbGluZS1oZWlnaHQtaDM6ICAgICAgICAxLjM7XG4kbGluZS1oZWlnaHQtaDQ6ICAgICAgICAxLjM4O1xuJGxpbmUtaGVpZ2h0LWg1OiAgICAgICAgMC40NTtcbiRsaW5lLWhlaWdodC1oNjogICAgICAgIDAuNTtcblxuJGZvbnQtd2VpZ2h0LWgxOiAgICAgICAgMzAwO1xuXG5cbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9T3BlbitTYW5zOjMwMCw0MDAsNjAwLDcwMCcpO1xuXG4kZm9udC1vcGVuLXNhbnM6ICAgICAgICBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmO1xuXG4vLyBGb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IFwic2Fucy1zZXJpZlwiIGlzIGF0IHRoZSBlbmQgb2YgdGhpcyBsaXN0LCBzZWVcbi8vIGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90aG91Z2h0cy8yMDEwLzAyLzEyL2ZpeGVkLW1vbm9zcGFjZS1zaXppbmcvXG4kZm9udC1jb3VyaWVyOiAgICAgICAgICBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZSwgc2Fucy1zZXJpZjtcblxuLy8gTm93IGNyZWF0ZSBzb21lIHZhcmlhYmxlcyBmb3IgdGhlIGZvbnQgc3RhY2tzIHdlIHdhbnQgdG8gdXNlIG9uIHRoaXMgc2l0ZS5cbiRiYXNlLWZvbnQtZmFtaWx5OiAgICAgICRmb250LW9wZW4tc2FuczsgLy8gVGhlIGZvbnQgZmFtaWx5IHNldCBvbiB0aGUgaHRtbCBlbGVtZW50LlxuJGZvbnQtbW9ub3NwYWNlOiAgICAgICAgJGZvbnQtY291cmllcjtcblxuJGZvbnQtYm9keTogICAgICAgICAgICAgJGZvbnQtb3Blbi1zYW5zO1xuJGZvbnQtaGVhZGluZ3M6ICAgICAgICAgJGZvbnQtYm9keTtcblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29sb3JzLCBldGMuXG5cbi8vIERlZmluaXRpb25zXG5cbiRjb2xvdXItcGFsZS1ncmV5OiAgICAgICNiYmI7XG4kY29sb3VyLWN5YW46ICAgICAgICAgICAjMDA5OWNiO1xuJGNvbG91ci1ncmVlbi1saWdodDogICAgI2ExYmYzNjtcbiRjb2xvdXItZ3JlZW4tZGFyazogICAgICM2NDkwMzQ7XG4kY29sb3VyLXJlZDogICAgICAgICAgICAjYzk0MzFhO1xuJGNvbG91ci1yZWQtZGFyazogICAgICAgIzI2MjYyNjtcbiRjb2xvdXItYmVpZ2U6ICAgICAgICAgICNFRkY0RTA7XG5cblxuLy8gQXNzaWdubWVudHNcblxuJGNvbG91ci10ZXh0OiAgICAgICAgICAgIzMzMzsgLy8gZGFyayBncmV5XG4kY29sb3VyLWxpbmtzOiAgICAgICAgICAkY29sb3VyLWdyZWVuLWRhcms7XG4kY29sb3VyLWJ1dHRvbnM6ICAgICAgICAkY29sb3VyLWdyZWVuLWRhcms7XG4kY29sb3VyLWhlYWRpbmdzOiAgICAgICAkY29sb3VyLWdyZWVuLWxpZ2h0O1xuJGNvbG91ci1zdWJ0bGU6ICAgICAgICAgJGNvbG91ci1ncmVlbi1kYXJrO1xuJGNvbG91ci1wYWdlLWJnOiAgICAgICAgI2Y4ZjhmODtcblxuJHRhYnMtY29udGFpbmVyLWJnOiAgICAgd2hpdGU7XG4kdGFicy1ib3JkZXI6ICAgICAgICAgICAkY29sb3VyLXBhbGUtZ3JleTtcblxuJGNvbG91ci1kaXZpZGVyczogICAgICAgJGNvbG91ci1wYWxlLWdyZXk7XG5cbi8vIENvbXBvbmVudCBjb2xvdXJzXG5cbiRkaWFsb2ctaGVhZGVyLWJnOiAgICAgICRjb2xvdXItcGFsZS1ncmV5O1xuXG4kY29sb3VyLWhpZ2hsaWdodDogICAgICAjMjU3RUQ1O1xuIiwiLy8gQm91cmJvbiA0LjIuN1xuLy8gaHR0cDovL2JvdXJib24uaW9cbi8vIENvcHlyaWdodCAyMDExLTIwMTUgdGhvdWdodGJvdCwgaW5jLlxuLy8gTUlUIExpY2Vuc2VcblxuQGltcG9ydCBcInNldHRpbmdzL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvcHgtdG8tZW1cIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9hc3NldC1waXBlbGluZVwiO1xuXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Fzc2lnbi1pbnB1dHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29udGFpbnNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29udGFpbnMtZmFsc3lcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtbGVuZ3RoXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLWxpZ2h0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLW51bWJlclwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1zaXplXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLWVtXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLXJlbVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9zaGFkZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9zdHJpcC11bml0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy90aW50XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3RyYW5zaXRpb24tcHJvcGVydHktbmFtZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy91bnBhY2tcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvbW9kdWxhci1zY2FsZVwiO1xuXG5AaW1wb3J0IFwiaGVscGVycy9jb252ZXJ0LXVuaXRzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9kaXJlY3Rpb25hbC12YWx1ZXNcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uXCI7XG5AaW1wb3J0IFwiaGVscGVycy9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItYW5nbGUtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItZ3JhZGllbnQtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWFyZy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yZW5kZXItZ3JhZGllbnRzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9zaGFwZS1zaXplLXN0cmlwcGVyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9zdHItdG8tbnVtXCI7XG5cbkBpbXBvcnQgXCJjc3MzL2FuaW1hdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvYmFja2ZhY2UtdmlzaWJpbGl0eVwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvYm9yZGVyLWltYWdlXCI7XG5AaW1wb3J0IFwiY3NzMy9jYWxjXCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9maWx0ZXJcIjtcbkBpbXBvcnQgXCJjc3MzL2ZsZXgtYm94XCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5nc1wiO1xuQGltcG9ydCBcImNzczMvaGlkcGktbWVkaWEtcXVlcnlcIjtcbkBpbXBvcnQgXCJjc3MzL2h5cGhlbnNcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlLXJlbmRlcmluZ1wiO1xuQGltcG9ydCBcImNzczMva2V5ZnJhbWVzXCI7XG5AaW1wb3J0IFwiY3NzMy9saW5lYXItZ3JhZGllbnRcIjtcbkBpbXBvcnQgXCJjc3MzL3BlcnNwZWN0aXZlXCI7XG5AaW1wb3J0IFwiY3NzMy9wbGFjZWhvbGRlclwiO1xuQGltcG9ydCBcImNzczMvcmFkaWFsLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy9zZWxlY3Rpb25cIjtcbkBpbXBvcnQgXCJjc3MzL3RleHQtZGVjb3JhdGlvblwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNmb3JtXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLXNlbGVjdFwiO1xuXG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1jb2xvclwiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1zdHlsZVwiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItd2lkdGhcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYnV0dG9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy9jbGVhcmZpeFwiO1xuQGltcG9ydCBcImFkZG9ucy9lbGxpcHNpc1wiO1xuQGltcG9ydCBcImFkZG9ucy9mb250LXN0YWNrc1wiO1xuQGltcG9ydCBcImFkZG9ucy9oaWRlLXRleHRcIjtcbkBpbXBvcnQgXCJhZGRvbnMvbWFyZ2luXCI7XG5AaW1wb3J0IFwiYWRkb25zL3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcG9zaXRpb25cIjtcbkBpbXBvcnQgXCJhZGRvbnMvcHJlZml4ZXJcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcmV0aW5hLWltYWdlXCI7XG5AaW1wb3J0IFwiYWRkb25zL3NpemVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGV4dC1pbnB1dHNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGltaW5nLWZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy90cmlhbmdsZVwiO1xuQGltcG9ydCBcImFkZG9ucy93b3JkLXdyYXBcIjtcblxuQGltcG9ydCBcImJvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZ1wiO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2xvYmFsIHZhcmlhYmxlcyB0byBlbmFibGUgb3IgZGlzYWJsZSB2ZW5kb3IgcHJlZml4ZXNcblxuJHByZWZpeC1mb3Itd2Via2l0OiAgICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3ItbW96aWxsYTogICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3Itb3BlcmE6ICAgICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3Itc3BlYzogICAgICB0cnVlICFkZWZhdWx0O1xuIiwiJGVtLWJhc2U6IDE2cHggIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBBIGdsb2JhbCBzZXR0aW5nIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBgJGFzc2V0LXBpcGVsaW5lYCB2YXJpYWJsZSBmb3IgYWxsIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdCBpdC5cbi8vL1xuLy8vIEB0eXBlIEJvb2xcblxuJGFzc2V0LXBpcGVsaW5lOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBmdW5jdGlvbiBhc3NpZ24taW5wdXRzKCRpbnB1dHMsICRwc2V1ZG86IG51bGwpIHtcbiAgJGxpc3Q6ICgpO1xuXG4gIEBlYWNoICRpbnB1dCBpbiAkaW5wdXRzIHtcbiAgICAkaW5wdXQ6IHVucXVvdGUoJGlucHV0KTtcbiAgICAkaW5wdXQ6IGlmKCRwc2V1ZG8sICRpbnB1dCArIFwiOlwiICsgJHBzZXVkbywgJGlucHV0KTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkaW5wdXQsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgaWYgYSBsaXN0IGNvbnRhaW5zIGEgdmFsdWUocykuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3Rcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWx1ZXNcbi8vLyAgIEEgc2luZ2xlIHZhbHVlIG9yIGxpc3Qgb2YgdmFsdWVzIHRvIGNoZWNrIGZvci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgY29udGFpbnMoJGxpc3QsICR2YWx1ZSlcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2x9XG5cbkBmdW5jdGlvbiBjb250YWlucygkbGlzdCwgJHZhbHVlcy4uLikge1xuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XG4gICAgQGlmIHR5cGUtb2YoaW5kZXgoJGxpc3QsICR2YWx1ZSkpICE9IFwibnVtYmVyXCIge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgaWYgYSBsaXN0IGRvZXMgbm90IGNvbnRhaW5zIGEgdmFsdWUuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3Rcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gY29udGFpbnMtZmFsc3koJGxpc3QpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBub3QgJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIGxlbmd0aC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcblxuQGZ1bmN0aW9uIGlzLWxlbmd0aCgkdmFsdWUpIHtcbiAgQHJldHVybiB0eXBlLW9mKCR2YWx1ZSkgIT0gXCJudWxsXCIgYW5kIChzdHItc2xpY2UoJHZhbHVlICsgXCJcIiwgMSwgNCkgPT0gXCJjYWxjXCJcbiAgICAgICBvciBpbmRleChhdXRvIGluaGVyaXQgaW5pdGlhbCAwLCAkdmFsdWUpXG4gICAgICAgb3IgKHR5cGUtb2YoJHZhbHVlKSA9PSBcIm51bWJlclwiIGFuZCBub3QodW5pdGxlc3MoJHZhbHVlKSkpKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb2dyYW1hdGljYWxseSBkZXRlcm1pbmVzIHdoZXRoZXIgYSBjb2xvciBpcyBsaWdodCBvciBkYXJrLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL3JvYm90cy50aG91Z2h0Ym90LmNvbS9jbG9zZXItbG9vay1jb2xvci1saWdodG5lc3Ncbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3IgKEhleCl9ICRjb2xvclxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICBpcy1saWdodCgkY29sb3IpXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gaXMtbGlnaHQoJGhleC1jb2xvcikge1xuICAkLWxvY2FsLXJlZDogcmVkKHJnYmEoJGhleC1jb2xvciwgMSkpO1xuICAkLWxvY2FsLWdyZWVuOiBncmVlbihyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1ibHVlOiBibHVlKHJnYmEoJGhleC1jb2xvciwgMSkpO1xuICAkLWxvY2FsLWxpZ2h0bmVzczogKCQtbG9jYWwtcmVkICogMC4yMTI2ICsgJC1sb2NhbC1ncmVlbiAqIDAuNzE1MiArICQtbG9jYWwtYmx1ZSAqIDAuMDcyMikgLyAyNTU7XG5cbiAgQHJldHVybiAkLWxvY2FsLWxpZ2h0bmVzcyA+IDAuNjtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBudW1iZXIuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zXG5cbkBmdW5jdGlvbiBpcy1udW1iZXIoJHZhbHVlKSB7XG4gIEByZXR1cm4gY29udGFpbnMoXCIwXCIgXCIxXCIgXCIyXCIgXCIzXCIgXCI0XCIgXCI1XCIgXCI2XCIgXCI3XCIgXCI4XCIgXCI5XCIgMCAxIDIgMyA0IDUgNiA3IDggOSwgJHZhbHVlKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBDU1Mgc2l6ZS5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnNcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGlzLWxlbmd0aFxuXG5AZnVuY3Rpb24gaXMtc2l6ZSgkdmFsdWUpIHtcbiAgQHJldHVybiBpcy1sZW5ndGgoJHZhbHVlKVxuICAgICAgICAgIG9yIGNvbnRhaW5zKFwiZmlsbFwiIFwiZml0LWNvbnRlbnRcIiBcIm1pbi1jb250ZW50XCIgXCJtYXgtY29udGVudFwiLCAkdmFsdWUpO1xufVxuIiwiLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLyBlZy4gZm9yIGEgcmVsYXRpb25hbCB2YWx1ZSBvZiAxMnB4IHdyaXRlIGVtKDEyKSB3aGVuIHRoZSBwYXJlbnQgaXMgMTZweFxuLy8gaWYgdGhlIHBhcmVudCBpcyBhbm90aGVyIHZhbHVlIHNheSAyNHB4IHdyaXRlIGVtKDEyLCAyNClcblxuQGZ1bmN0aW9uIGVtKCRweHZhbCwgJGJhc2U6ICRlbS1iYXNlKSB7XG4gIEBpZiBub3QgdW5pdGxlc3MoJHB4dmFsKSB7XG4gICAgJHB4dmFsOiBzdHJpcC11bml0cygkcHh2YWwpO1xuICB9XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdHMoJGJhc2UpO1xuICB9XG4gIEByZXR1cm4gKCRweHZhbCAvICRiYXNlKSAqIDFlbTtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIHJlbXNcbi8vIGVnLiBmb3IgYSByZWxhdGlvbmFsIHZhbHVlIG9mIDEycHggd3JpdGUgcmVtKDEyKVxuLy8gQXNzdW1lcyAkZW0tYmFzZSBpcyB0aGUgZm9udC1zaXplIG9mIDxodG1sPlxuXG5AZnVuY3Rpb24gcmVtKCRweHZhbCkge1xuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICRweHZhbDogc3RyaXAtdW5pdHMoJHB4dmFsKTtcbiAgfVxuXG4gICRiYXNlOiAkZW0tYmFzZTtcbiAgQGlmIG5vdCB1bml0bGVzcygkYmFzZSkge1xuICAgICRiYXNlOiBzdHJpcC11bml0cygkYmFzZSk7XG4gIH1cbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMXJlbTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCBibGFjay5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxuLy8vICAgVGhlIGFtb3VudCBvZiBibGFjayB0byBiZSBtaXhlZCBpbi5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaGFkZSgjZmZiYjUyLCA2MCUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY0YTIwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJldHVybiB7Q29sb3J9XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50KSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHBlcmNlbnQpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU3RyaXBzIHRoZSB1bml0IGZyb20gYSBudW1iZXIuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAoV2l0aCBVbml0KX0gJHZhbHVlXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICRkaW1lbnNpb246IHN0cmlwLXVuaXRzKDEwZW0pO1xuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgJGRpbWVuc2lvbjogMTA7XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXIgKFVuaXRsZXNzKX1cblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWx1ZSkge1xuICBAcmV0dXJuICgkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCB3aGl0ZS5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxuLy8vICAgVGhlIGFtb3VudCBvZiB3aGl0ZSB0byBiZSBtaXhlZCBpbi5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aW50KCM2ZWNhYTYsIDQwJSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNhOGRmYzk7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmV0dXJuIHtDb2xvcn1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudCkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICRwZXJjZW50KTtcbn1cbiIsIi8vIFJldHVybiB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgbmFtZXMgaWYgYXBwcm9wcmlhdGVcbi8vIEV4YW1wbGU6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoKHRyYW5zZm9ybSwgY29sb3IsIGJhY2tncm91bmQpLCBtb3opIC0+IC1tb3otdHJhbnNmb3JtLCBjb2xvciwgYmFja2dyb3VuZFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQGZ1bmN0aW9uIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BzLCAkdmVuZG9yOiBmYWxzZSkge1xuICAkbmV3LXByb3BzOiAoKTtcblxuICBAZWFjaCAkcHJvcCBpbiAkcHJvcHMge1xuICAgICRuZXctcHJvcHM6IGFwcGVuZCgkbmV3LXByb3BzLCB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWUoJHByb3AsICR2ZW5kb3IpLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRuZXctcHJvcHM7XG59XG5cbkBmdW5jdGlvbiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWUoJHByb3AsICR2ZW5kb3I6IGZhbHNlKSB7XG4gIC8vIHB1dCBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgbmVlZCB0byBiZSBwcmVmaXhlZCBoZXJlIGFzd2VsbFxuICBAaWYgJHZlbmRvciBhbmQgJHByb3AgPT0gdHJhbnNmb3JtIHtcbiAgICBAcmV0dXJuIHVucXVvdGUoJy0nKyR2ZW5kb3IrJy0nKyRwcm9wKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcHJvcDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ29udmVydHMgc2hvcnRoYW5kIHRvIHRoZSA0LXZhbHVlIHN5bnRheC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3J0aGFuZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbjogdW5wYWNrKDFlbSAyZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW46IDFlbSAyZW0gMWVtIDJlbTtcbi8vLyAgIH1cblxuQGZ1bmN0aW9uIHVucGFjaygkc2hvcnRoYW5kKSB7XG4gIEBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMSB7XG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDIge1xuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAzIHtcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMikgbnRoKCRzaG9ydGhhbmQsIDMpIG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkc2hvcnRoYW5kO1xuICB9XG59XG4iLCIvLyBTY2FsaW5nIFZhcmlhYmxlc1xuJGdvbGRlbjogICAgICAgICAgIDEuNjE4O1xuJG1pbm9yLXNlY29uZDogICAgIDEuMDY3O1xuJG1ham9yLXNlY29uZDogICAgIDEuMTI1O1xuJG1pbm9yLXRoaXJkOiAgICAgIDEuMjtcbiRtYWpvci10aGlyZDogICAgICAxLjI1O1xuJHBlcmZlY3QtZm91cnRoOiAgIDEuMzMzO1xuJGF1Z21lbnRlZC1mb3VydGg6IDEuNDE0O1xuJHBlcmZlY3QtZmlmdGg6ICAgIDEuNTtcbiRtaW5vci1zaXh0aDogICAgICAxLjY7XG4kbWFqb3Itc2l4dGg6ICAgICAgMS42Njc7XG4kbWlub3Itc2V2ZW50aDogICAgMS43Nzg7XG4kbWFqb3Itc2V2ZW50aDogICAgMS44NzU7XG4kb2N0YXZlOiAgICAgICAgICAgMjtcbiRtYWpvci10ZW50aDogICAgICAyLjU7XG4kbWFqb3ItZWxldmVudGg6ICAgMi42Njc7XG4kbWFqb3ItdHdlbGZ0aDogICAgMztcbiRkb3VibGUtb2N0YXZlOiAgICA0O1xuXG4kbW9kdWxhci1zY2FsZS1yYXRpbzogJHBlcmZlY3QtZm91cnRoICFkZWZhdWx0O1xuJG1vZHVsYXItc2NhbGUtYmFzZTogZW0oJGVtLWJhc2UpICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gbW9kdWxhci1zY2FsZSgkaW5jcmVtZW50LCAkdmFsdWU6ICRtb2R1bGFyLXNjYWxlLWJhc2UsICRyYXRpbzogJG1vZHVsYXItc2NhbGUtcmF0aW8pIHtcbiAgJHYxOiBudGgoJHZhbHVlLCAxKTtcbiAgJHYyOiBudGgoJHZhbHVlLCBsZW5ndGgoJHZhbHVlKSk7XG4gICR2YWx1ZTogJHYxO1xuXG4gIC8vIHNjYWxlICR2MiB0byBqdXN0IGFib3ZlICR2MVxuICBAd2hpbGUgJHYyID4gJHYxIHtcbiAgICAkdjI6ICgkdjIgLyAkcmF0aW8pOyAvLyB3aWxsIGJlIG9mZi1ieS0xXG4gIH1cbiAgQHdoaWxlICR2MiA8ICR2MSB7XG4gICAgJHYyOiAoJHYyICogJHJhdGlvKTsgLy8gd2lsbCBmaXggb2ZmLWJ5LTFcbiAgfVxuXG4gIC8vIGNoZWNrIEFGVEVSIHNjYWxpbmcgJHYyIHRvIHByZXZlbnQgZG91YmxlLWNvdW50aW5nIGNvcm5lci1jYXNlXG4gICRkb3VibGUtc3RyYW5kZWQ6ICR2MiA+ICR2MTtcblxuICBAaWYgJGluY3JlbWVudCA+IDAge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGluY3JlbWVudCB7XG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAqICRyYXRpbykgPiAkdjIge1xuICAgICAgICAkdmFsdWU6ICR2MjtcbiAgICAgICAgJHYyOiAoJHYyICogJHJhdGlvKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdjE6ICgkdjEgKiAkcmF0aW8pO1xuICAgICAgICAkdmFsdWU6ICR2MTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGluY3JlbWVudCA8IDAge1xuICAgIC8vIGFkanVzdCAkdjIgdG8ganVzdCBiZWxvdyAkdjFcbiAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCB7XG4gICAgICAkdjI6ICgkdjIgLyAkcmF0aW8pO1xuICAgIH1cblxuICAgIEBmb3IgJGkgZnJvbSAkaW5jcmVtZW50IHRocm91Z2ggLTEge1xuICAgICAgQGlmICRkb3VibGUtc3RyYW5kZWQgYW5kICgkdjEgLyAkcmF0aW8pIDwgJHYyIHtcbiAgICAgICAgJHZhbHVlOiAkdjI7XG4gICAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHYxOiAoJHYxIC8gJHJhdGlvKTtcbiAgICAgICAgJHZhbHVlOiAkdjE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHN0ci10by1udW0gZm4uXG4vLyBTb3VyY2U6IGh0dHA6Ly9zYXNzbWVpc3Rlci5jb20vZ2lzdC85NjQ3NDA4XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gX2NvbnZlcnQtdW5pdHMoJG51bWJlciwgJHVuaXQpIHtcbiAgJHN0cmluZ3M6IFwicHhcIiwgXCJjbVwiLCBcIm1tXCIsIFwiJVwiLCBcImNoXCIsIFwicGljYVwiLCBcImluXCIsIFwiZW1cIiwgXCJyZW1cIiwgXCJwdFwiLCBcInBjXCIsIFwiZXhcIiwgXCJ2d1wiLCBcInZoXCIsIFwidm1pblwiLCBcInZtYXhcIiwgXCJkZWdcIiwgXCJyYWRcIiwgXCJncmFkXCIsIFwidHVyblwiO1xuICAkdW5pdHM6ICAgMXB4LCAxY20sIDFtbSwgMSUsIDFjaCwgMXBpY2EsIDFpbiwgMWVtLCAxcmVtLCAxcHQsIDFwYywgMWV4LCAxdncsIDF2aCwgMXZtaW4sIDF2bWF4LCAxZGVnLCAxcmFkLCAxZ3JhZCwgMXR1cm47XG4gICRpbmRleDogaW5kZXgoJHN0cmluZ3MsICR1bml0KTtcblxuICBAaWYgbm90ICRpbmRleCB7XG4gICAgQHdhcm4gXCJVbmtub3duIHVuaXQgYCN7JHVuaXR9YC5cIjtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG51bWJlcikgIT0gXCJudW1iZXJcIiB7XG4gICAgQHdhcm4gXCJgI3skbnVtYmVyfSBpcyBub3QgYSBudW1iZXJgXCI7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIEByZXR1cm4gJG51bWJlciAqIG50aCgkdW5pdHMsICRpbmRleCk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBEaXJlY3Rpb25hbC1wcm9wZXJ0eSBtaXhpbnMgYXJlIHNob3J0aGFuZHMgZm9yIHdyaXRpbmcgcHJvcGVydGllcyBsaWtlIHRoZSBmb2xsb3dpbmdcbi8vL1xuLy8vIEBpZ25vcmUgWW91IGNhbiBhbHNvIHVzZSBgZmFsc2VgIGluc3RlYWQgb2YgYG51bGxgLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBkaXJlY3Rpb25hbCB2YWx1ZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZG90dGVkIG51bGwpO1xuLy8vICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCAwIDEwcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBkb3R0ZWQ7XG4vLy8gICAgIGJvcmRlci10b3Atc3R5bGU6IGRvdHRlZDtcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IDA7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9XG5cbkBmdW5jdGlvbiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpIHtcbiAgJG91dHB1dDogbnVsbDtcblxuICAkYTogbnRoKCR2YWxzLCAxKTtcbiAgJGI6IGlmKGxlbmd0aCgkdmFscykgPCAyLCAkYSwgbnRoKCR2YWxzLCAyKSk7XG4gICRjOiBpZihsZW5ndGgoJHZhbHMpIDwgMywgJGEsIG50aCgkdmFscywgMykpO1xuICAkZDogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIGlmKGxlbmd0aCgkdmFscykgPCA0LCAyLCA0KSkpO1xuXG4gIEBpZiAkYSA9PSAwIHsgJGE6IDA7IH1cbiAgQGlmICRiID09IDAgeyAkYjogMDsgfVxuICBAaWYgJGMgPT0gMCB7ICRjOiAwOyB9XG4gIEBpZiAkZCA9PSAwIHsgJGQ6IDA7IH1cblxuICBAaWYgJGEgPT0gJGIgYW5kICRhID09ICRjIGFuZCAkYSA9PSAkZCB7ICRvdXRwdXQ6ICRhOyAgICAgICAgICB9XG4gIEBlbHNlIGlmICRhID09ICRjIGFuZCAkYiA9PSAkZCAgICAgICAgIHsgJG91dHB1dDogJGEgJGI7ICAgICAgIH1cbiAgQGVsc2UgaWYgJGIgPT0gJGQgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYzsgICAgfVxuICBAZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiICRjICRkOyB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG4vLy8gT3V0cHV0IGRpcmVjdGlvbmFsIHByb3BlcnRpZXMsIGZvciBpbnN0YW5jZSBgbWFyZ2luYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcmVcbi8vLyAgIFByZWZpeCB0byB1c2Vcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN1ZlxuLy8vICAgU3VmZml4IHRvIHVzZVxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgdmFsdWVzXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbGxhcHNlLWRpcmVjdGlvbmFsc1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcblxuQG1peGluIGRpcmVjdGlvbmFsLXByb3BlcnR5KCRwcmUsICRzdWYsICR2YWxzKSB7XG4gIC8vIFByb3BlcnR5IE5hbWVzXG4gICR0b3A6ICAgICRwcmUgKyBcIi10b3BcIiAgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRib3R0b206ICRwcmUgKyBcIi1ib3R0b21cIiArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRsZWZ0OiAgICRwcmUgKyBcIi1sZWZ0XCIgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRyaWdodDogICRwcmUgKyBcIi1yaWdodFwiICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRhbGw6ICAgICRwcmUgKyAgICAgICAgICAgICBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuXG4gICR2YWxzOiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpO1xuXG4gIEBpZiBjb250YWlucy1mYWxzeSgkdmFscykge1xuICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skdG9wfTogbnRoKCR2YWxzLCAxKTsgfVxuXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMSB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JHJpZ2h0fTogbnRoKCR2YWxzLCAxKTsgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRyaWdodH06IG50aCgkdmFscywgMik7IH1cbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCR2YWxzKSA9PSAyIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAxKTsgfVxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDMge1xuICAgICAgQGlmIG50aCgkdmFscywgMykgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDMpOyB9XG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgMik7IH1cbiAgICB9IEBlbHNlIGlmIGxlbmd0aCgkdmFscykgPT0gNCB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHMsIDQpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCA0KTsgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgI3skYWxsfTogJHZhbHM7XG4gIH1cbn1cbiIsIi8vIFVzZWQgZm9yIGNyZWF0aW5nIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBmb250cyB1c2luZyBAZm9udC1mYWNlXG4vLyBSZWZlcmVuY2U6IGh0dHA6Ly9nb28uZ2wvUnUxYktQXG5cbkBmdW5jdGlvbiBmb250LXVybC1wcmVmaXhlcigkYXNzZXQtcGlwZWxpbmUpIHtcbiAgQGlmICRhc3NldC1waXBlbGluZSA9PSB0cnVlIHtcbiAgICBAcmV0dXJuIGZvbnQtdXJsO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuIHVybDtcbiAgfVxufVxuXG5AZnVuY3Rpb24gZm9udC1zb3VyY2UtZGVjbGFyYXRpb24oXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJGFzc2V0LXBpcGVsaW5lLFxuICAkZmlsZS1mb3JtYXRzLFxuICAkZm9udC11cmwpIHtcblxuICAkc3JjOiAoKTtcblxuICAkZm9ybWF0cy1tYXA6IChcbiAgICBlb3Q6ICAgXCIjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXhcIiBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSxcbiAgICB3b2ZmMjogXCIjeyRmaWxlLXBhdGh9LndvZmYyXCIgZm9ybWF0KFwid29mZjJcIiksXG4gICAgd29mZjogIFwiI3skZmlsZS1wYXRofS53b2ZmXCIgZm9ybWF0KFwid29mZlwiKSxcbiAgICB0dGY6ICAgXCIjeyRmaWxlLXBhdGh9LnR0ZlwiIGZvcm1hdChcInRydWV0eXBlXCIpLFxuICAgIHN2ZzogICBcIiN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fVwiIGZvcm1hdChcInN2Z1wiKVxuICApO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZXMgaW4gJGZvcm1hdHMtbWFwIHtcbiAgICBAaWYgY29udGFpbnMoJGZpbGUtZm9ybWF0cywgJGtleSkge1xuICAgICAgJGZpbGUtcGF0aDogbnRoKCR2YWx1ZXMsIDEpO1xuICAgICAgJGZvbnQtZm9ybWF0OiBudGgoJHZhbHVlcywgMik7XG5cbiAgICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XG4gICAgICAgICRzcmM6IGFwcGVuZCgkc3JjLCBmb250LXVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkc3JjOiBhcHBlbmQoJHNyYywgdXJsKCRmaWxlLXBhdGgpICRmb250LWZvcm1hdCwgY29tbWEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHNyYztcbn1cbiIsIkBmdW5jdGlvbiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvc2l0aW9ucykge1xuICBAaWYgJGdyYWRpZW50LXBvc2l0aW9uc1xuICBhbmQgKCRncmFkaWVudC10eXBlID09IGxpbmVhcilcbiAgYW5kICh0eXBlLW9mKCRncmFkaWVudC1wb3NpdGlvbnMpICE9IGNvbG9yKSB7XG4gICAgJGdyYWRpZW50LXBvc2l0aW9uczogX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3NpdGlvbnMpO1xuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9yYWRpYWwtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuICBAcmV0dXJuICRncmFkaWVudC1wb3NpdGlvbnM7XG59XG4iLCIvLyBQcml2YXRlIGZ1bmN0aW9uIGZvciBsaW5lYXItZ3JhZGllbnQtcGFyc2VyXG5AZnVuY3Rpb24gX2xpbmVhci1hbmdsZS1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4KSB7XG4gICRvZmZzZXQ6IG51bGw7XG4gICR1bml0LXNob3J0OiAgc3RyLXNsaWNlKCRmaXJzdC12YWwsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkgLSAyLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcbiAgJHVuaXQtbG9uZzogICBzdHItc2xpY2UoJGZpcnN0LXZhbCwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSAtIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuXG4gIEBpZiAoJHVuaXQtbG9uZyA9PSBcImdyYWRcIikgb3JcbiAgICAgICgkdW5pdC1sb25nID09IFwidHVyblwiKSB7XG4gICAgJG9mZnNldDogaWYoJHVuaXQtbG9uZyA9PSBcImdyYWRcIiwgLTEwMGdyYWQgKiAzLCAtMC43NXR1cm4pO1xuICB9XG5cbiAgQGVsc2UgaWYgKCR1bml0LXNob3J0ID09IFwiZGVnXCIpIG9yXG4gICAgICAgICAgICgkdW5pdC1zaG9ydCA9PSBcInJhZFwiKSB7XG4gICAgJG9mZnNldDogaWYoJHVuaXQtc2hvcnQgPT0gXCJkZWdcIiwgLTkwICogMywgMS42cmFkKTtcbiAgfVxuXG4gIEBpZiAkb2Zmc2V0IHtcbiAgICAkbnVtOiBfc3RyLXRvLW51bSgkZmlyc3QtdmFsKTtcblxuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAoJG9mZnNldCAtICRudW0pICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpIHtcbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XG4gICRncmFkaWVudHM6ICgpO1xuICAkc3RhcnQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiKFwiKTtcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XG5cbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMSwgJHN0YXJ0KTtcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcblxuICAkaGFzLW11bHRpcGxlLXZhbHM6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcIiBcIik7XG4gICRoYXMtc2luZ2xlLXBvc2l0aW9uOiB1bnF1b3RlKF9wb3NpdGlvbi1mbGlwcGVyKCRmaXJzdC12YWwpICsgXCJcIik7XG4gICRoYXMtYW5nbGU6IGlzLW51bWJlcihzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgMSkpO1xuXG4gIEBpZiAkaGFzLW11bHRpcGxlLXZhbHMge1xuICAgICRncmFkaWVudHM6IF9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCwgJGhhcy1tdWx0aXBsZS12YWxzKTtcbiAgfVxuXG4gIEBlbHNlIGlmICRoYXMtc2luZ2xlLXBvc2l0aW9uICE9IFwiXCIge1xuICAgICRwb3M6IHVucXVvdGUoJGhhcy1zaW5nbGUtcG9zaXRpb24gKyBcIlwiKTtcblxuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkcHJlZml4ICsgXCJ0byBcIiArICRwb3MgKyAkc3VmZml4XG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmICRoYXMtYW5nbGUge1xuICAgIC8vIFJvdGF0ZSBkZWdyZWUgZm9yIHdlYmtpdFxuICAgICRncmFkaWVudHM6IF9saW5lYXItYW5nbGUtcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCk7XG4gIH1cblxuICBAZWxzZSB7XG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAcmV0dXJuICRncmFkaWVudHM7XG59XG4iLCJAZnVuY3Rpb24gX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRwb3MpIHtcbiAgJHR5cGU6IHR5cGUtb2YobnRoKCRwb3MsIDEpKTtcbiAgJHNwZWM6IG51bGw7XG4gICRkZWdyZWU6IG51bGw7XG4gICRzaWRlOiBudWxsO1xuICAkY29ybmVyOiBudWxsO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHBvcyk7XG4gIC8vIFBhcnNlIFNpZGUgYW5kIGNvcm5lciBwb3NpdGlvbnNcbiAgQGlmICgkbGVuZ3RoID4gMSkge1xuICAgIEBpZiBudGgoJHBvcywgMSkgPT0gXCJ0b1wiIHsgLy8gTmV3ZXIgc3ludGF4XG4gICAgICAkc2lkZTogbnRoKCRwb3MsIDIpO1xuXG4gICAgICBAaWYgJGxlbmd0aCA9PSAyIHsgLy8gZWcuIHRvIHRvcFxuICAgICAgICAvLyBTd2FwIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHsgLy8gZWcuIHRvIHRvcCBsZWZ0XG4gICAgICAgICRjb3JuZXI6IG50aCgkcG9zLCAzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAyIHsgLy8gT2xkZXIgc3ludGF4IChcInRvcCBsZWZ0XCIpXG4gICAgICAkc2lkZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDEpKTtcbiAgICAgICRjb3JuZXI6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAyKSk7XG4gICAgfVxuXG4gICAgQGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImxlZnQgdG9wXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInRvcCBsZWZ0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwicmlnaHQgdG9wXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInRvcCByaWdodFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IGJvdHRvbVwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJib3R0b20gcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IGJvdHRvbVwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJib3R0b20gbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgICRzcGVjOiB0byAkc2lkZSAkY29ybmVyO1xuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMSB7XG4gICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBAaWYgJHR5cGUgPT0gc3RyaW5nIHtcbiAgICAgICRkZWdyZWU6ICRwb3M7XG4gICAgICAkc3BlYzogdG8gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRkZWdyZWU6IC0yNzAgLSAkcG9zOyAvL3JvdGF0ZSB0aGUgZ3JhZGllbnQgb3Bwb3NpdGUgZnJvbSBzcGVjXG4gICAgICAkc3BlYzogJHBvcztcbiAgICB9XG4gIH1cbiAgJGRlZ3JlZTogdW5xdW90ZSgkZGVncmVlICsgXCIsXCIpO1xuICAkc3BlYzogICB1bnF1b3RlKCRzcGVjICsgXCIsXCIpO1xuICBAcmV0dXJuICRkZWdyZWUgJHNwZWM7XG59XG5cbkBmdW5jdGlvbiBfcG9zaXRpb24tZmxpcHBlcigkcG9zKSB7XG4gIEByZXR1cm4gaWYoJHBvcyA9PSBsZWZ0LCByaWdodCwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gcmlnaHQsIGxlZnQsIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IHRvcCwgYm90dG9tLCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSBib3R0b20sIHRvcCwgbnVsbCk7XG59XG4iLCIvLyBQcml2YXRlIGZ1bmN0aW9uIGZvciBsaW5lYXItZ3JhZGllbnQtcGFyc2VyXG5AZnVuY3Rpb24gX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4LCAkaGFzLW11bHRpcGxlLXZhbHMpIHtcbiAgJHZhbC0xOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgJGhhcy1tdWx0aXBsZS12YWxzIC0gMSk7XG4gICR2YWwtMjogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRoYXMtbXVsdGlwbGUtdmFscyArIDEsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuICAkdmFsLTM6IG51bGw7XG4gICRoYXMtdmFsLTM6IHN0ci1pbmRleCgkdmFsLTIsIFwiIFwiKTtcblxuICBAaWYgJGhhcy12YWwtMyB7XG4gICAgJHZhbC0zOiBzdHItc2xpY2UoJHZhbC0yLCAkaGFzLXZhbC0zICsgMSwgc3RyLWxlbmd0aCgkdmFsLTIpKTtcbiAgICAkdmFsLTI6IHN0ci1zbGljZSgkdmFsLTIsIDEsICRoYXMtdmFsLTMgLSAxKTtcbiAgfVxuXG4gICRwb3M6IF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMSkgX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0yKSBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTMpO1xuICAkcG9zOiB1bnF1b3RlKCRwb3MgKyBcIlwiKTtcblxuICAvLyBVc2Ugb2xkIHNwZWMgZm9yIHdlYmtpdFxuICBAaWYgJHZhbC0xID09IFwidG9cIiB7XG4gICAgQHJldHVybiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIC8vIEJyaW5nIHRoZSBjb2RlIHVwIHRvIHNwZWNcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcbiAgICAgIHNwZWMtaW1hZ2U6ICRwcmVmaXggKyBcInRvIFwiICsgJHBvcyArICRzdWZmaXhcbiAgICApO1xuICB9XG59XG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1hcmctcGFyc2VyKCRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZSkge1xuICBAZWFjaCAkdmFsdWUgaW4gJGcxLCAkZzIge1xuICAgICRmaXJzdC12YWw6IG50aCgkdmFsdWUsIDEpO1xuICAgICRwb3MtdHlwZTogIHR5cGUtb2YoJGZpcnN0LXZhbCk7XG4gICAgJHNwZWMtYXQtaW5kZXg6IG51bGw7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgc3BlYyB3YXMgcGFzc2VkIHRvIG1peGluXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcbiAgICAgICRzcGVjLWF0LWluZGV4OiBpZihpbmRleCgkdmFsdWUsIGF0KSwgaW5kZXgoJHZhbHVlLCBhdCksIGZhbHNlKTtcbiAgICB9XG4gICAgQGlmICRzcGVjLWF0LWluZGV4IHtcbiAgICAgIEBpZiAkc3BlYy1hdC1pbmRleCA+IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkc3BlYy1hdC1pbmRleCAtIDEpIHtcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHNoYXBlLXNpemUgbnRoKCR2YWx1ZSwgJGkpO1xuICAgICAgICB9XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHNwZWMtYXQtaW5kZXggPT0gMSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGcxOiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIG5vdCBzcGVjIGNhbGN1bGF0ZSBjb3JyZWN0IHZhbHVlc1xuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAoJHBvcy10eXBlICE9IGNvbG9yKSBvciAoJGZpcnN0LXZhbCAhPSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAgICAgQGlmICgkcG9zLXR5cGUgPT0gbnVtYmVyKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNlbnRlclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInRvcFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInJpZ2h0XCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiYm90dG9tXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwibGVmdFwiKSB7XG5cbiAgICAgICAgICAkcG9zOiAkdmFsdWU7XG5cbiAgICAgICAgICBAaWYgJHBvcyA9PSAkZzEge1xuICAgICAgICAgICAgJGcxOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmXG4gICAgICAgICAgICgkZmlyc3QtdmFsID09IFwiZWxsaXBzZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNpcmNsZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3QtY29ybmVyXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvbnRhaW5cIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb3ZlclwiKSB7XG5cbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICR2YWx1ZSA9PSAkZzEge1xuICAgICAgICAgICAgJGcxOiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlbHNlIGlmICR2YWx1ZSA9PSAkZzIge1xuICAgICAgICAgICAgJGcyOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZTtcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvcykge1xuICAkc2hhcGUtc2l6ZTogbnRoKCRncmFkaWVudC1wb3MsIDEpO1xuICAkcG9zOiAgICAgICAgbnRoKCRncmFkaWVudC1wb3MsIDIpO1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgJHByZS1zcGVjOiB1bnF1b3RlKGlmKCRwb3MsIFwiI3skcG9zfSwgXCIsIG51bGwpKVxuICAgICAgICAgICAgIHVucXVvdGUoaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sXCIsIG51bGwpKTtcbiAgJHBvcy1zcGVjOiBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG5cbiAgJHNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyRwb3Mtc3BlY31cIjtcblxuICAvLyBBZGQgY29tbWFcbiAgQGlmICgkc3BlYyAhPSBcIiAgXCIpIHtcbiAgICAkc3BlYzogXCIjeyRzcGVjfSxcIjtcbiAgfVxuXG4gIEByZXR1cm4gJHByZS1zcGVjICRzcGVjO1xufVxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSkge1xuICAkaW1hZ2U6IHVucXVvdGUoJGltYWdlKTtcbiAgJGdyYWRpZW50czogKCk7XG4gICRzdGFydDogc3RyLWluZGV4KCRpbWFnZSwgXCIoXCIpO1xuICAkZW5kOiBzdHItaW5kZXgoJGltYWdlLCBcIixcIik7XG4gICRmaXJzdC12YWw6IHN0ci1zbGljZSgkaW1hZ2UsICRzdGFydCArIDEsICRlbmQgLSAxKTtcblxuICAkcHJlZml4OiBzdHItc2xpY2UoJGltYWdlLCAxLCAkc3RhcnQpO1xuICAkc3VmZml4OiBzdHItc2xpY2UoJGltYWdlLCAkZW5kLCBzdHItbGVuZ3RoKCRpbWFnZSkpO1xuXG4gICRpcy1zcGVjLXN5bnRheDogc3RyLWluZGV4KCRmaXJzdC12YWwsIFwiYXRcIik7XG5cbiAgQGlmICRpcy1zcGVjLXN5bnRheCBhbmQgJGlzLXNwZWMtc3ludGF4ID4gMSB7XG4gICAgJGtleXdvcmQ6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAkaXMtc3BlYy1zeW50YXggLSAyKTtcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG4gICAgJHBvczogYXBwZW5kKCRwb3MsICRrZXl3b3JkLCBjb21tYSk7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmICRpcy1zcGVjLXN5bnRheCA9PSAxIHtcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmIHN0ci1pbmRleCgkaW1hZ2UsIFwiY292ZXJcIikgb3Igc3RyLWluZGV4KCRpbWFnZSwgXCJjb250YWluXCIpIHtcbiAgICBAd2FybiBcIlJhZGlhbC1ncmFkaWVudCBuZWVkcyB0byBiZSB1cGRhdGVkIHRvIGNvbmZvcm0gdG8gbGF0ZXN0IHNwZWMuXCI7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IG51bGwsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQHJldHVybiAkZ3JhZGllbnRzO1xufVxuIiwiLy8gVXNlciBmb3IgbGluZWFyIGFuZCByYWRpYWwgZ3JhZGllbnRzIHdpdGhpbiBiYWNrZ3JvdW5kLWltYWdlIG9yIGJvcmRlci1pbWFnZSBwcm9wZXJ0aWVzXG5cbkBmdW5jdGlvbiBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnRzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcjogZmFsc2UpIHtcbiAgJHByZS1zcGVjOiBudWxsO1xuICAkc3BlYzogbnVsbDtcbiAgJHZlbmRvci1ncmFkaWVudHM6IG51bGw7XG4gIEBpZiAkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIge1xuICAgIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zIHtcbiAgICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IHJhZGlhbCB7XG4gICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XG4gICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gIH1cblxuICBAaWYgJHZlbmRvciB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IC0jeyR2ZW5kb3J9LSN7JGdyYWRpZW50LXR5cGV9LWdyYWRpZW50KCN7JHByZS1zcGVjfSAkZ3JhZGllbnRzKTtcbiAgfVxuICBAZWxzZSBpZiAkdmVuZG9yID09IGZhbHNlIHtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogXCIjeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRzcGVjfSAjeyRncmFkaWVudHN9KVwiO1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiB1bnF1b3RlKCR2ZW5kb3ItZ3JhZGllbnRzKTtcbiAgfVxuICBAcmV0dXJuICR2ZW5kb3ItZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKSB7XG4gICRzaGFwZS1zaXplLXNwZWM6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkc2hhcGUtc2l6ZSB7XG4gICAgQGlmICgkdmFsdWUgPT0gXCJjb3ZlclwiKSBvciAoJHZhbHVlID09IFwiY29udGFpblwiKSB7XG4gICAgICAkdmFsdWU6IG51bGw7XG4gICAgfVxuICAgICRzaGFwZS1zaXplLXNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyR2YWx1ZX1cIjtcbiAgfVxuICBAcmV0dXJuICRzaGFwZS1zaXplLXNwZWM7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGxpbmVhci9yYWRpYWwtZ3JhZGllbnQtcGFyc2Vycy5cbi8vIFNvdXJjZTogaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0Lzk2NDc0MDhcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBmdW5jdGlvbiBfc3RyLXRvLW51bSgkc3RyaW5nKSB7XG4gIC8vIE1hdHJpY2VzXG4gICRzdHJpbmdzOiBcIjBcIiBcIjFcIiBcIjJcIiBcIjNcIiBcIjRcIiBcIjVcIiBcIjZcIiBcIjdcIiBcIjhcIiBcIjlcIjtcbiAgJG51bWJlcnM6ICAwICAgMSAgIDIgICAzICAgNCAgIDUgICA2ICAgNyAgIDggICA5O1xuXG4gIC8vIFJlc3VsdFxuICAkcmVzdWx0OiAwO1xuICAkZGl2aWRlcjogMDtcbiAgJG1pbnVzOiBmYWxzZTtcblxuICAvLyBMb29waW5nIHRocm91Z2ggYWxsIGNoYXJhY3RlcnNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHItbGVuZ3RoKCRzdHJpbmcpIHtcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHN0cmluZywgJGksICRpKTtcbiAgICAkaW5kZXg6IGluZGV4KCRzdHJpbmdzLCAkY2hhcmFjdGVyKTtcblxuICAgIEBpZiAkY2hhcmFjdGVyID09IFwiLVwiIHtcbiAgICAgICRtaW51czogdHJ1ZTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkY2hhcmFjdGVyID09IFwiLlwiIHtcbiAgICAgICRkaXZpZGVyOiAxO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBub3QgJGluZGV4IHtcbiAgICAgICAgJHJlc3VsdDogaWYoJG1pbnVzLCAkcmVzdWx0ICogLTEsICRyZXN1bHQpO1xuICAgICAgICBAcmV0dXJuIF9jb252ZXJ0LXVuaXRzKCRyZXN1bHQsIHN0ci1zbGljZSgkc3RyaW5nLCAkaSkpO1xuICAgICAgfVxuXG4gICAgICAkbnVtYmVyOiBudGgoJG51bWJlcnMsICRpbmRleCk7XG5cbiAgICAgIEBpZiAkZGl2aWRlciA9PSAwIHtcbiAgICAgICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgIC8vIE1vdmUgdGhlIGRlY2ltYWwgZG90IHRvIHRoZSBsZWZ0XG4gICAgICAgICRkaXZpZGVyOiAkZGl2aWRlciAqIDEwO1xuICAgICAgICAkbnVtYmVyOiAkbnVtYmVyIC8gJGRpdmlkZXI7XG4gICAgICB9XG5cbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyAkbnVtYmVyO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGlmKCRtaW51cywgJHJlc3VsdCAqIC0xLCAkcmVzdWx0KTtcbn1cbiIsIi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jdGhlLWFuaW1hdGlvbi1uYW1lLXByb3BlcnR5LVxuLy8gRWFjaCBvZiB0aGVzZSBtaXhpbnMgc3VwcG9ydCBjb21tYSBzZXBhcmF0ZWQgbGlzdHMgb2YgdmFsdWVzLCB3aGljaCBhbGxvd3MgZGlmZmVyZW50IHRyYW5zaXRpb25zIGZvciBpbmRpdmlkdWFsIHByb3BlcnRpZXMgdG8gYmUgZGVzY3JpYmVkIGluIGEgc2luZ2xlIHN0eWxlIHJ1bGUuIEVhY2ggdmFsdWUgaW4gdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIHZhbHVlIGF0IHRoYXQgc2FtZSBwb3NpdGlvbiBpbiB0aGUgb3RoZXIgcHJvcGVydGllcy5cblxuQG1peGluIGFuaW1hdGlvbigkYW5pbWF0aW9ucy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24sICRhbmltYXRpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLW5hbWUoJG5hbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1uYW1lLCAkbmFtZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xuICAvLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50KCR2YWx1ZXMuLi4pIHtcbiAgLy8gaW5maW5pdGUgfCA8bnVtYmVyPlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCAkdmFsdWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWRpcmVjdGlvbigkZGlyZWN0aW9ucy4uLikge1xuICAvLyBub3JtYWwgfCBhbHRlcm5hdGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRpcmVjdGlvbiwgJGRpcmVjdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSgkc3RhdGVzLi4uKSB7XG4gIC8vIHJ1bm5pbmcgfCBwYXVzZWRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXBsYXktc3RhdGUsICRzdGF0ZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZGVsYXkoJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWZpbGwtbW9kZSgkbW9kZXMuLi4pIHtcbiAgLy8gbm9uZSB8IGZvcndhcmRzIHwgYmFja3dhcmRzIHwgYm90aFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gYXBwZWFyYW5jZSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYXBwZWFyYW5jZSwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG4iLCJAbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmlzaWJpbGl0eSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihiYWNrZmFjZS12aXNpYmlsaXR5LCAkdmlzaWJpbGl0eSwgd2Via2l0IHNwZWMpO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBmb3IgYWRkaW5nIG11bHRpcGxlIGJhY2tncm91bmRzIHVzaW5nIHNob3J0aGFuZFxuLy8gbm90YXRpb24uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5cbkBtaXhpbiBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kcy4uLikge1xuICAkd2Via2l0LWJhY2tncm91bmRzOiAoKTtcbiAgJHNwZWMtYmFja2dyb3VuZHM6ICgpO1xuXG4gIEBlYWNoICRiYWNrZ3JvdW5kIGluICRiYWNrZ3JvdW5kcyB7XG4gICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAoKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kOiAoKTtcbiAgICAkYmFja2dyb3VuZC10eXBlOiB0eXBlLW9mKCRiYWNrZ3JvdW5kKTtcblxuICAgIEBpZiAkYmFja2dyb3VuZC10eXBlID09IHN0cmluZyBvciAkYmFja2dyb3VuZC10eXBlID09IGxpc3Qge1xuICAgICAgJGJhY2tncm91bmQtc3RyOiBpZigkYmFja2dyb3VuZC10eXBlID09IGxpc3QsIG50aCgkYmFja2dyb3VuZCwgMSksICRiYWNrZ3JvdW5kKTtcblxuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcihcIiN7JGJhY2tncm91bmR9XCIpO1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIoXCIjeyRiYWNrZ3JvdW5kfVwiKTtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2Uge1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICR3ZWJraXQtYmFja2dyb3VuZHM6IGFwcGVuZCgkd2Via2l0LWJhY2tncm91bmRzLCAkd2Via2l0LWJhY2tncm91bmQsIGNvbW1hKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kczogICBhcHBlbmQoJHNwZWMtYmFja2dyb3VuZHMsICAgJHNwZWMtYmFja2dyb3VuZCwgICBjb21tYSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kOiAkd2Via2l0LWJhY2tncm91bmRzO1xuICBiYWNrZ3JvdW5kOiAkc3BlYy1iYWNrZ3JvdW5kcztcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kIGltYWdlcyB3aXRoXG4vLyBncmFkaWVudHMsIG9yIGZvciBzdHJpbmdpbmcgbXVsdGlwbGUgZ3JhZGllbnRzIHRvZ2V0aGVyLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2VzLi4uKSB7XG4gICR3ZWJraXQtaW1hZ2VzOiAoKTtcbiAgJHNwZWMtaW1hZ2VzOiAoKTtcblxuICBAZWFjaCAkaW1hZ2UgaW4gJGltYWdlcyB7XG4gICAgJHdlYmtpdC1pbWFnZTogKCk7XG4gICAgJHNwZWMtaW1hZ2U6ICgpO1xuXG4gICAgQGlmICh0eXBlLW9mKCRpbWFnZSkgPT0gc3RyaW5nKSB7XG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRpbWFnZSwgMSwgMyk7XG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRpbWFnZSwgMSwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogJGltYWdlO1xuICAgICAgICAkc3BlYy1pbWFnZTogICAkaW1hZ2U7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xuICAgICAgICAkd2Via2l0LWltYWdlOiAgbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1pbWFnZTogICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSk7XG4gICAgICAgICR3ZWJraXQtaW1hZ2U6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkd2Via2l0LWltYWdlczogYXBwZW5kKCR3ZWJraXQtaW1hZ2VzLCAkd2Via2l0LWltYWdlLCBjb21tYSk7XG4gICAgJHNwZWMtaW1hZ2VzOiAgIGFwcGVuZCgkc3BlYy1pbWFnZXMsICAgJHNwZWMtaW1hZ2UsICAgY29tbWEpO1xuICB9XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogJHdlYmtpdC1pbWFnZXM7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRzcGVjLWltYWdlcztcbn1cbiIsIkBtaXhpbiBib3JkZXItaW1hZ2UoJGJvcmRlcnMuLi4pIHtcbiAgJHdlYmtpdC1ib3JkZXJzOiAoKTtcbiAgJHNwZWMtYm9yZGVyczogKCk7XG5cbiAgQGVhY2ggJGJvcmRlciBpbiAkYm9yZGVycyB7XG4gICAgJHdlYmtpdC1ib3JkZXI6ICgpO1xuICAgICRzcGVjLWJvcmRlcjogKCk7XG4gICAgJGJvcmRlci10eXBlOiB0eXBlLW9mKCRib3JkZXIpO1xuXG4gICAgQGlmICRib3JkZXItdHlwZSA9PSBzdHJpbmcgb3IgbGlzdCB7XG4gICAgICAkYm9yZGVyLXN0cjogaWYoJGJvcmRlci10eXBlID09IGxpc3QsIG50aCgkYm9yZGVyLCAxKSwgJGJvcmRlcik7XG5cbiAgICAgICR1cmwtc3RyOiAgICAgICBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYm9yZGVyLXN0ciwgMSwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoXCIjeyRib3JkZXJ9XCIpO1xuICAgICAgICAkd2Via2l0LWJvcmRlcjogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgJHNwZWMtYm9yZGVyOiAgICRib3JkZXI7XG4gICAgfVxuXG4gICAgJHdlYmtpdC1ib3JkZXJzOiBhcHBlbmQoJHdlYmtpdC1ib3JkZXJzLCAkd2Via2l0LWJvcmRlciwgY29tbWEpO1xuICAgICRzcGVjLWJvcmRlcnM6ICAgYXBwZW5kKCRzcGVjLWJvcmRlcnMsICAgJHNwZWMtYm9yZGVyLCAgIGNvbW1hKTtcbiAgfVxuXG4gIC13ZWJraXQtYm9yZGVyLWltYWdlOiAkd2Via2l0LWJvcmRlcnM7XG4gICAgICAgICAgYm9yZGVyLWltYWdlOiAkc3BlYy1ib3JkZXJzO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG59XG5cbi8vRXhhbXBsZXM6XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIikgMjAgc3RyZXRjaCk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UobGluZWFyLWdyYWRpZW50KDQ1ZGVnLCBvcmFuZ2UsIHllbGxvdykpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIDIwIDMwIDQwIDUwIHN0cmV0Y2ggcm91bmQpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHJhZGlhbC1ncmFkaWVudCh0b3AsIGNvdmVyLCBvcmFuZ2UsIHllbGxvdywgb3JhbmdlKSk7XG4iLCJAbWl4aW4gY2FsYygkcHJvcGVydHksICR2YWx1ZSkge1xuICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtY2FsYygjeyR2YWx1ZX0pO1xuICAjeyRwcm9wZXJ0eX06IGNhbGMoI3skdmFsdWV9KTtcbn1cbiIsIkBtaXhpbiBjb2x1bW5zKCRhcmc6IGF1dG8pIHtcbiAgLy8gPGNvbHVtbi1jb3VudD4gfHwgPGNvbHVtbi13aWR0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1ucywgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1jb3VudCgkaW50OiBhdXRvKSB7XG4gIC8vIGF1dG8gfHwgaW50ZWdlclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tY291bnQsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZ2FwKCRsZW5ndGg6IG5vcm1hbCkge1xuICAvLyBub3JtYWwgfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1nYXAsICRsZW5ndGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZmlsbCgkYXJnOiBhdXRvKSB7XG4gIC8vIGF1dG8gfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1maWxsLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUoJGFyZykge1xuICAvLyA8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGU6IG5vbmUpIHtcbiAgLy8gbm9uZSB8IGhpZGRlbiB8IGRhc2hlZCB8IGRvdHRlZCB8IGRvdWJsZSB8IGdyb292ZSB8IGluc2V0IHwgaW5zZXQgfCBvdXRzZXQgfCByaWRnZSB8IHNvbGlkXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS13aWR0aCAoJHdpZHRoOiBub25lKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXdpZHRoLCAkd2lkdGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tc3BhbigkYXJnOiBub25lKSB7XG4gIC8vIG5vbmUgfHwgYWxsXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1zcGFuLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXdpZHRoKCRsZW5ndGg6IGF1dG8pIHtcbiAgLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIGZpbHRlcigkZnVuY3Rpb246IG5vbmUpIHtcbiAgLy8gPGZpbHRlci1mdW5jdGlvbj4gWzxmaWx0ZXItZnVuY3Rpb25dKiB8IG5vbmVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmlsdGVyLCAkZnVuY3Rpb24sIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xuXG4vLyBDdXN0b20gc2hvcnRoYW5kIG5vdGF0aW9uIGZvciBmbGV4Ym94XG5AbWl4aW4gYm94KCRvcmllbnQ6IGlubGluZS1heGlzLCAkcGFjazogc3RhcnQsICRhbGlnbjogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBkaXNwbGF5LWJveDtcbiAgQGluY2x1ZGUgYm94LW9yaWVudCgkb3JpZW50KTtcbiAgQGluY2x1ZGUgYm94LXBhY2soJHBhY2spO1xuICBAaW5jbHVkZSBib3gtYWxpZ24oJGFsaWduKTtcbn1cblxuQG1peGluIGRpc3BsYXktYm94IHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tb3otYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDsgLy8gSUUgMTBcbiAgZGlzcGxheTogYm94O1xufVxuXG5AbWl4aW4gYm94LW9yaWVudCgkb3JpZW50OiBpbmxpbmUtYXhpcykge1xuLy8gaG9yaXpvbnRhbHx2ZXJ0aWNhbHxpbmxpbmUtYXhpc3xibG9jay1heGlzfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yaWVudCwgJG9yaWVudCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1wYWNrKCRwYWNrOiBzdGFydCkge1xuLy8gc3RhcnR8ZW5kfGNlbnRlcnxqdXN0aWZ5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkcGFjaywgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcGFjazogJHBhY2s7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtYWxpZ24oJGFsaWduOiBzdHJldGNoKSB7XG4vLyBzdGFydHxlbmR8Y2VudGVyfGJhc2VsaW5lfHN0cmV0Y2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWxpZ24sIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LWFsaWduOiAkYWxpZ247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246IG5vcm1hbCkge1xuLy8gbm9ybWFsfHJldmVyc2V8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtbGluZXMoJGxpbmVzOiBzaW5nbGUpIHtcbi8vIHNpbmdsZXxtdWx0aXBsZVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRsaW5lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yZGluYWwtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW9yZGVyOiAkaW50OyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgoJHZhbHVlOiAwKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4OiAkdmFsdWU7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZmxleC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyBDU1MzIEZsZXhpYmxlIEJveCBNb2RlbCBhbmQgcHJvcGVydHkgZGVmYXVsdHNcbi8vIFVuaWZpZWQgYXR0cmlidXRlcyBmb3IgMjAwOSwgMjAxMSwgYW5kIDIwMTIgZmxhdm91cnMuXG5cbi8vIDIwMDkgLSBkaXNwbGF5IChib3ggfCBpbmxpbmUtYm94KVxuLy8gMjAxMSAtIGRpc3BsYXkgKGZsZXhib3ggfCBpbmxpbmUtZmxleGJveClcbi8vIDIwMTIgLSBkaXNwbGF5IChmbGV4IHwgaW5saW5lLWZsZXgpXG5AbWl4aW4gZGlzcGxheSgkdmFsdWUpIHtcbi8vIGZsZXggfCBpbmxpbmUtZmxleFxuICBAaWYgJHZhbHVlID09IFwiZmxleFwiIHtcbiAgICAvLyAyMDA5XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgZGlzcGxheTogLW1vei1ib3g7XG4gICAgZGlzcGxheTogYm94O1xuXG4gICAgLy8gMjAxMlxuICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcbiAgICBkaXNwbGF5OiAtbW96LWZsZXg7XG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIDIwMTEgKElFIDEwKVxuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiaW5saW5lLWZsZXhcIiB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYm94O1xuXG4gICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1mbGV4O1xuICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgfSBAZWxzZSB7XG4gICAgZGlzcGxheTogJHZhbHVlO1xuICB9XG59XG5cbi8vIDIwMDkgLSBib3gtZmxleCAoaW50ZWdlcilcbi8vIDIwMTEgLSBmbGV4IChkZWNpbWFsIHwgd2lkdGggZGVjaW1hbClcbi8vIDIwMTIgLSBmbGV4IChpbnRlZ2VyIGludGVnZXIgd2lkdGgpXG5AbWl4aW4gZmxleCgkdmFsdWUpIHtcblxuICAvLyBHcmFiIGZsZXgtZ3JvdyBmb3Igb2xkZXIgYnJvd3NlcnMuXG4gICRmbGV4LWdyb3c6IG50aCgkdmFsdWUsIDEpO1xuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICRmbGV4LWdyb3csIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApLCAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIGJveC1vcmllbnQgKCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBpbmxpbmUtYXhpcyB8IGJsb2NrLWF4aXMpXG4vLyAgICAgIC0gYm94LWRpcmVjdGlvbiAobm9ybWFsIHwgcmV2ZXJzZSlcbi8vIDIwMTEgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcbi8vIDIwMTIgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkdmFsdWU6IHJvdykge1xuXG4gIC8vIEFsdCB2YWx1ZXMuXG4gICR2YWx1ZS0yMDA5OiAkdmFsdWU7XG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gICRkaXJlY3Rpb246IG5vcm1hbDtcblxuICBAaWYgJHZhbHVlID09IHJvdyB7XG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwicm93LXJldmVyc2VcIiB7XG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XG4gICAgJGRpcmVjdGlvbjogcmV2ZXJzZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gY29sdW1uIHtcbiAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiY29sdW1uLXJldmVyc2VcIiB7XG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICR2YWx1ZS0yMDA5LCB3ZWJraXQgbW96IHNwZWMpO1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1kaXJlY3Rpb24sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkdmFsdWU7XG59XG5cbi8vIDIwMDkgLSBib3gtbGluZXMgKHNpbmdsZSB8IG11bHRpcGxlKVxuLy8gMjAxMSAtIGZsZXgtd3JhcCAobm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSlcbi8vIDIwMTIgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG5AbWl4aW4gZmxleC13cmFwKCR2YWx1ZTogbm93cmFwKSB7XG4gIC8vIEFsdCB2YWx1ZXNcbiAgJGFsdC12YWx1ZTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IG5vd3JhcCB7XG4gICAgJGFsdC12YWx1ZTogc2luZ2xlO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSB3cmFwIHtcbiAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJ3cmFwLXJldmVyc2VcIiB7XG4gICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gIH1cblxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtd3JhcCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDExIC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDEyIC0gZmxleC1mbG93IChmbGV4LWRpcmVjdGlvbiB8fCBmbGV4LXdyYXApXG5AbWl4aW4gZmxleC1mbG93KCR2YWx1ZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWZsb3csICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIGJveC1vcmRpbmFsLWdyb3VwIChpbnRlZ2VyKVxuLy8gMjAxMSAtIGZsZXgtb3JkZXIgKGludGVnZXIpXG4vLyAyMDEyIC0gb3JkZXIgKGludGVnZXIpXG5AbWl4aW4gb3JkZXIoJGludDogMCkge1xuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIob3JkZXIsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LW9yZGVyOiAkaW50O1xufVxuXG4vLyAyMDEyIC0gZmxleC1ncm93IChudW1iZXIpXG5AbWl4aW4gZmxleC1ncm93KCRudW1iZXI6IDApIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1ncm93LCAkbnVtYmVyLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1wb3NpdGl2ZTogJG51bWJlcjtcbn1cblxuLy8gMjAxMiAtIGZsZXgtc2hyaW5rIChudW1iZXIpXG5AbWl4aW4gZmxleC1zaHJpbmsoJG51bWJlcjogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LXNocmluaywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtbmVnYXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LWJhc2lzIChudW1iZXIpXG5AbWl4aW4gZmxleC1iYXNpcygkd2lkdGg6IGF1dG8pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1iYXNpcywgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogJHdpZHRoO1xufVxuXG4vLyAyMDA5IC0gYm94LXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSlcbi8vIDIwMTEgLSBmbGV4LXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSlcbi8vIDIwMTIgLSBqdXN0aWZ5LWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQpXG5AbWl4aW4ganVzdGlmeS1jb250ZW50KCR2YWx1ZTogZmxleC1zdGFydCkge1xuXG4gIC8vIEFsdCB2YWx1ZXMuXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZW5kO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiB7XG4gICAgJGFsdC12YWx1ZToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZGlzdHJpYnV0ZTtcbiAgfVxuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihqdXN0aWZ5LWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1wYWNrOiAkYWx0LXZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTEgLSBmbGV4LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1pdGVtcyAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWl0ZW1zKCR2YWx1ZTogc3RyZXRjaCkge1xuXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcblxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkYWx0LXZhbHVlOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkYWx0LXZhbHVlOiBlbmQ7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsdC12YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWl0ZW1zLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtYWxpZ246ICRhbHQtdmFsdWU7XG59XG5cbi8vIDIwMTEgLSBmbGV4LWl0ZW0tYWxpZ24gKGF1dG8gfCBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1zZWxmIChhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLXNlbGYoJHZhbHVlOiBhdXRvKSB7XG5cbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gIH1cblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLXNlbGYsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogJHZhbHVlLTIwMTE7XG59XG5cbi8vIDIwMTEgLSBmbGV4LWxpbmUtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgZGlzdHJpYnV0ZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24tY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24tY29udGVudCgkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGVuZDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xuICAgICR2YWx1ZS0yMDExOiBqdXN0aWZ5O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcbiAgICAkdmFsdWUtMjAxMTogZGlzdHJpYnV0ZTtcbiAgfVxuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tY29udGVudCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1saW5lLXBhY2s6ICR2YWx1ZS0yMDExO1xufVxuIiwiQG1peGluIGZvbnQtZmFjZShcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkYXNzZXQtcGlwZWxpbmU6ICRhc3NldC1waXBlbGluZSxcbiAgJGZpbGUtZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Zykge1xuXG4gICRmb250LXVybC1wcmVmaXg6IGZvbnQtdXJsLXByZWZpeGVyKCRhc3NldC1waXBlbGluZSk7XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG5cbiAgICBzcmM6IGZvbnQtc291cmNlLWRlY2xhcmF0aW9uKFxuICAgICAgJGZvbnQtZmFtaWx5LFxuICAgICAgJGZpbGUtcGF0aCxcbiAgICAgICRhc3NldC1waXBlbGluZSxcbiAgICAgICRmaWxlLWZvcm1hdHMsXG4gICAgICAkZm9udC11cmwtcHJlZml4XG4gICAgKTtcbiAgfVxufVxuIiwiQG1peGluIGZvbnQtZmVhdHVyZS1zZXR0aW5ncygkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDAgeyAkc2V0dGluZ3M6IG5vbmU7IH1cbiAgQGluY2x1ZGUgcHJlZml4ZXIoZm9udC1mZWF0dXJlLXNldHRpbmdzLCAkc2V0dGluZ3MsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCIvLyBIaURQSSBtaXhpbi4gRGVmYXVsdCB2YWx1ZSBzZXQgdG8gMS4zIHRvIHRhcmdldCBHb29nbGUgTmV4dXMgNyAoaHR0cDovL2JqYW5nby5jb20vYXJ0aWNsZXMvbWluLWRldmljZS1waXhlbC1yYXRpby8pXG5AbWl4aW4gaGlkcGkoJHJhdGlvOiAxLjMpIHtcbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRyYXRpb30vMSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IHJvdW5kKCRyYXRpbyAqIDk2ZHBpKSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICRyYXRpbyAqIDFkcHB4KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBtaXhpbiBoeXBoZW5zKCRoeXBoZW5hdGlvbjogbm9uZSkge1xuICAvLyBub25lIHwgbWFudWFsIHwgYXV0b1xuICBAaW5jbHVkZSBwcmVmaXhlcihoeXBoZW5zLCAkaHlwaGVuYXRpb24sIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCJAbWl4aW4gaW1hZ2UtcmVuZGVyaW5nICgkbW9kZTphdXRvKSB7XG5cbiAgQGlmICgkbW9kZSA9PSBjcmlzcC1lZGdlcykge1xuICAgIC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IG5lYXJlc3QtbmVpZ2hib3I7IC8vIElFOCtcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtby1jcmlzcC1lZGdlcztcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlcztcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBpbWFnZS1yZW5kZXJpbmc6ICRtb2RlO1xuICB9XG59XG4iLCIvLyBBZGRzIGtleWZyYW1lcyBibG9ja3MgZm9yIHN1cHBvcnRlZCBwcmVmaXhlcywgcmVtb3ZpbmcgcmVkdW5kYW50IHByZWZpeGVzIGluIHRoZSBibG9jaydzIGNvbnRlbnRcbkBtaXhpbiBrZXlmcmFtZXMoJG5hbWUpIHtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0OiAgICAkcHJlZml4LWZvci13ZWJraXQ7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGE6ICAgJHByZWZpeC1mb3ItbW96aWxsYTtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbWljcm9zb2Z0OiAkcHJlZml4LWZvci1taWNyb3NvZnQ7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhOiAgICAgJHByZWZpeC1mb3Itb3BlcmE7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWM6ICAgICAgJHByZWZpeC1mb3Itc3BlYztcblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0IHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3Itd2Via2l0OiB0cnVlICFnbG9iYWw7XG4gICAgQC13ZWJraXQta2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3ItbW96aWxsYTogdHJ1ZSAhZ2xvYmFsO1xuICAgIEAtbW96LWtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCAgICAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGEgICAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1taWNyb3NvZnQ6ICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdCAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhICAgICAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWMgICAgICAhZ2xvYmFsO1xuXG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjIHtcbiAgICBAa2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIGxpbmVhci1ncmFkaWVudCgkcG9zLCAkZzEsICRnMjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGczOiBudWxsLCAkZzQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNTogbnVsbCwgJGc2OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzc6IG51bGwsICRnODogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc5OiBudWxsLCAkZzEwOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcbiAgLy8gRGV0ZWN0IHdoYXQgdHlwZSBvZiB2YWx1ZSBleGlzdHMgaW4gJHBvc1xuICAkcG9zLXR5cGU6IHR5cGUtb2YobnRoKCRwb3MsIDEpKTtcbiAgJHBvcy1zcGVjOiBudWxsO1xuICAkcG9zLWRlZ3JlZTogbnVsbDtcblxuICAvLyBJZiAkcG9zIGlzIG1pc3NpbmcgZnJvbSBtaXhpbiwgcmVhc3NpZ24gdmFycyBhbmQgYWRkIGRlZmF1bHQgcG9zaXRpb25cbiAgQGlmICgkcG9zLXR5cGUgPT0gY29sb3IpIG9yIChudGgoJHBvcywgMSkgPT0gXCJ0cmFuc3BhcmVudFwiKSAge1xuICAgICRnMTA6ICRnOTsgJGc5OiAkZzg7ICRnODogJGc3OyAkZzc6ICRnNjsgJGc2OiAkZzU7XG4gICAgJGc1OiAkZzQ7ICRnNDogJGczOyAkZzM6ICRnMjsgJGcyOiAkZzE7ICRnMTogJHBvcztcbiAgICAkcG9zOiBudWxsO1xuICB9XG5cbiAgQGlmICRwb3Mge1xuICAgICRwb3NpdGlvbnM6IF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKTtcbiAgICAkcG9zLWRlZ3JlZTogbnRoKCRwb3NpdGlvbnMsIDEpO1xuICAgICRwb3Mtc3BlYzogICBudGgoJHBvc2l0aW9ucywgMik7XG4gIH1cblxuICAkZnVsbDogJGcxLCAkZzIsICRnMywgJGc0LCAkZzUsICRnNiwgJGc3LCAkZzgsICRnOSwgJGcxMDtcblxuICAvLyBTZXQgJGcxIGFzIHRoZSBkZWZhdWx0IGZhbGxiYWNrIGNvbG9yXG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRnMSwgMSk7XG5cbiAgLy8gSWYgJGZhbGxiYWNrIGlzIGEgY29sb3IgdXNlIHRoYXQgY29sb3IgYXMgdGhlIGZhbGxiYWNrIGNvbG9yXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xuICAgICRmYWxsYmFjay1jb2xvcjogJGZhbGxiYWNrO1xuICB9XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgkcG9zLWRlZ3JlZSAkZnVsbCk7IC8vIFNhZmFyaSA1LjErLCBDaHJvbWVcbiAgYmFja2dyb3VuZC1pbWFnZTogdW5xdW90ZShcImxpbmVhci1ncmFkaWVudCgjeyRwb3Mtc3BlY30jeyRmdWxsfSlcIik7XG59XG4iLCJAbWl4aW4gcGVyc3BlY3RpdmUoJGRlcHRoOiBub25lKSB7XG4gIC8vIG5vbmUgfCA8bGVuZ3RoPlxuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZSwgJGRlcHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gcGVyc3BlY3RpdmUtb3JpZ2luKCR2YWx1ZTogNTAlIDUwJSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZS1vcmlnaW4sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBwbGFjZWhvbGRlciB7XG4gICRwbGFjZWhvbGRlcnM6IFwiOi13ZWJraXQtaW5wdXRcIiBcIjotbW96XCIgXCItbW96XCIgXCItbXMtaW5wdXRcIjtcbiAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xuICAgICY6I3skcGxhY2Vob2xkZXJ9LXBsYWNlaG9sZGVyIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUmVxdWlyZXMgU2FzcyAzLjErXG5AbWl4aW4gcmFkaWFsLWdyYWRpZW50KCRnMSwgJGcyLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzM6IG51bGwsICRnNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc1OiBudWxsLCAkZzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNzogbnVsbCwgJGc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzk6IG51bGwsICRnMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRwb3M6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRzaGFwZS1zaXplOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcblxuICAkZGF0YTogX3JhZGlhbC1hcmctcGFyc2VyKCRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZSk7XG4gICRnMTogIG50aCgkZGF0YSwgMSk7XG4gICRnMjogIG50aCgkZGF0YSwgMik7XG4gICRwb3M6IG50aCgkZGF0YSwgMyk7XG4gICRzaGFwZS1zaXplOiBudGgoJGRhdGEsIDQpO1xuXG4gICRmdWxsOiAkZzEsICRnMiwgJGczLCAkZzQsICRnNSwgJGc2LCAkZzcsICRnOCwgJGc5LCAkZzEwO1xuXG4gIC8vIFN0cmlwIGRlcHJlY2F0ZWQgY292ZXIvY29udGFpbiBmb3Igc3BlY1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgLy8gU2V0ICRnMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmlyc3QtY29sb3I6IG50aCgkZnVsbCwgMSk7XG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRmaXJzdC1jb2xvciwgMSk7XG5cbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cblxuICAvLyBBZGQgQ29tbWFzIGFuZCBzcGFjZXNcbiAgJHNoYXBlLXNpemU6IGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LCBcIiwgbnVsbCk7XG4gICRwb3M6ICAgICAgICBpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKTtcbiAgJHBvcy1zcGVjOiAgIGlmKCRwb3MsIFwiYXQgI3skcG9zfVwiLCBudWxsKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogaWYoKCRzaGFwZS1zaXplLXNwZWMgIT0gXCIgXCIpIGFuZCAoJHBvcyA9PSBudWxsKSwgXCIjeyRzaGFwZS1zaXplLXNwZWN9LCBcIiwgXCIjeyRzaGFwZS1zaXplLXNwZWN9IFwiKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAgJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudCgjeyRwb3N9I3skc2hhcGUtc2l6ZX0jeyRmdWxsfSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudCgjeyRzaGFwZS1zaXplLXNwZWN9I3skcG9zLXNwZWN9I3skZnVsbH0pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIE91dHB1dHMgdGhlIHNwZWMgYW5kIHByZWZpeGVkIHZlcnNpb25zIG9mIHRoZSBgOjpzZWxlY3Rpb25gIHBzZXVkby1lbGVtZW50LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Qm9vbH0gJGN1cnJlbnQtc2VsZWN0b3IgW2ZhbHNlXVxyXG4vLy8gICBJZiBzZXQgdG8gYHRydWVgLCBpdCB0YWtlcyB0aGUgY3VycmVudCBlbGVtZW50IGludG8gY29uc2lkZXJhdGlvbi5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIHNlbGVjdGlvbih0cnVlKSB7XHJcbi8vLyAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiYjUyO1xyXG4vLy8gICAgIH1cclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQ6Oi1tb3otc2VsZWN0aW9uIHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiYjUyO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAuZWxlbWVudDo6c2VsZWN0aW9uIHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiYjUyO1xyXG4vLy8gICB9XHJcblxyXG5AbWl4aW4gc2VsZWN0aW9uKCRjdXJyZW50LXNlbGVjdG9yOiBmYWxzZSkge1xyXG4gIEBpZiAkY3VycmVudC1zZWxlY3RvciB7XHJcbiAgICAmOjotbW96LXNlbGVjdGlvbiB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgICY6OnNlbGVjdGlvbiB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2Uge1xyXG4gICAgOjotbW96LXNlbGVjdGlvbiB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIDo6c2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBtaXhpbiB0ZXh0LWRlY29yYXRpb24oJHZhbHVlKSB7XG4vLyA8dGV4dC1kZWNvcmF0aW9uLWxpbmU+IHx8IDx0ZXh0LWRlY29yYXRpb24tc3R5bGU+IHx8IDx0ZXh0LWRlY29yYXRpb24tY29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbiwgJHZhbHVlLCBtb3opO1xufVxuXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLWxpbmUoJGxpbmU6IG5vbmUpIHtcbi8vIG5vbmUgfHwgdW5kZXJsaW5lIHx8IG92ZXJsaW5lIHx8IGxpbmUtdGhyb3VnaFxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tbGluZSwgJGxpbmUsIG1veik7XG59XG5cbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24tc3R5bGUoJHN0eWxlOiBzb2xpZCkge1xuLy8gc29saWQgfHwgZG91YmxlIHx8IGRvdHRlZCB8fCBkYXNoZWQgfHwgd2F2eVxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tc3R5bGUsICRzdHlsZSwgbW96IHdlYmtpdCk7XG59XG5cbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24tY29sb3IoJGNvbG9yOiBjdXJyZW50Q29sb3IpIHtcbi8vIGN1cnJlbnRDb2xvciB8fCA8Y29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbi1jb2xvciwgJGNvbG9yLCBtb3opO1xufVxuIiwiQG1peGluIHRyYW5zZm9ybSgkcHJvcGVydHk6IG5vbmUpIHtcbiAgLy8gbm9uZSB8IDx0cmFuc2Zvcm0tZnVuY3Rpb24+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybSwgJHByb3BlcnR5LCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0tb3JpZ2luKCRheGVzOiA1MCUpIHtcbiAgLy8geC1heGlzIC0gbGVmdCB8IGNlbnRlciB8IHJpZ2h0ICB8IGxlbmd0aCB8ICVcbiAgLy8geS1heGlzIC0gdG9wICB8IGNlbnRlciB8IGJvdHRvbSB8IGxlbmd0aCB8ICVcbiAgLy8gei1heGlzIC0gICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0tb3JpZ2luLCAkYXhlcywgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtLXN0eWxlKCRzdHlsZTogZmxhdCkge1xuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0tc3R5bGUsICRzdHlsZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuIiwiLy8gU2hvcnRoYW5kIG1peGluLiBTdXBwb3J0cyBtdWx0aXBsZSBwYXJlbnRoZXNlcy1kZWxpbWluYXRlZCB2YWx1ZXMgZm9yIGVhY2ggdmFyaWFibGUuXG4vLyBFeGFtcGxlOiBAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMnMgZWFzZS1pbi1vdXQpO1xuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbiAob3BhY2l0eSAxcyBlYXNlLWluIDJzLCB3aWR0aCAycyBlYXNlLW91dCk7XG4vLyAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uLXByb3BlcnR5ICh0cmFuc2Zvcm0sIG9wYWNpdHkpO1xuXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcGVydGllcy4uLikge1xuICAvLyBGaXggZm9yIHZlbmRvci1wcmVmaXggdHJhbnNmb3JtIHByb3BlcnR5XG4gICRuZWVkcy1wcmVmaXhlczogZmFsc2U7XG4gICR3ZWJraXQ6ICgpO1xuICAkbW96OiAoKTtcbiAgJHNwZWM6ICgpO1xuXG4gIC8vIENyZWF0ZSBsaXN0cyBmb3IgdmVuZG9yLXByZWZpeGVkIHRyYW5zZm9ybVxuICBAZWFjaCAkbGlzdCBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIG50aCgkbGlzdCwgMSkgPT0gXCJ0cmFuc2Zvcm1cIiB7XG4gICAgICAkbmVlZHMtcHJlZml4ZXM6IHRydWU7XG4gICAgICAkbGlzdDE6IC13ZWJraXQtdHJhbnNmb3JtO1xuICAgICAgJGxpc3QyOiAtbW96LXRyYW5zZm9ybTtcbiAgICAgICRsaXN0MzogKCk7XG5cbiAgICAgIEBlYWNoICR2YXIgaW4gJGxpc3Qge1xuICAgICAgICAkbGlzdDM6IGpvaW4oJGxpc3QzLCAkdmFyKTtcblxuICAgICAgICBAaWYgJHZhciAhPSBcInRyYW5zZm9ybVwiIHtcbiAgICAgICAgICAkbGlzdDE6IGpvaW4oJGxpc3QxLCAkdmFyKTtcbiAgICAgICAgICAkbGlzdDI6IGpvaW4oJGxpc3QyLCAkdmFyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkd2Via2l0OiBhcHBlbmQoJHdlYmtpdCwgJGxpc3QxKTtcbiAgICAgICRtb3o6ICAgIGFwcGVuZCgkbW96LCAgICAkbGlzdDIpO1xuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0Myk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2Via2l0OiBhcHBlbmQoJHdlYmtpdCwgJGxpc3QsIGNvbW1hKTtcbiAgICAgICRtb3o6ICAgIGFwcGVuZCgkbW96LCAgICAkbGlzdCwgY29tbWEpO1xuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0LCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICRuZWVkcy1wcmVmaXhlcyB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkd2Via2l0O1xuICAgICAgIC1tb3otdHJhbnNpdGlvbjogJG1vejtcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICRzcGVjO1xuICB9IEBlbHNlIHtcbiAgICBAaWYgbGVuZ3RoKCRwcm9wZXJ0aWVzKSA+PSAxIHtcbiAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByb3BlcnRpZXM6IGFsbCAwLjE1cyBlYXNlLW91dCAwcztcbiAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcHJvcGVydGllcy4uLikge1xuICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIFwid2Via2l0XCIpO1xuICAgICAtbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIFwibW96XCIpO1xuICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIGZhbHNlKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tZHVyYXRpb24sICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKCRtb3Rpb25zLi4uKSB7XG4gIC8vIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dCB8IGN1YmljLWJlemllcigpXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkbW90aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkoJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tZGVsYXksICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiB1c2VyLXNlbGVjdCgkdmFsdWU6IG5vbmUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodXNlci1zZWxlY3QsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1jb2xvcmAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLWNvbG9yKCNhNjBiNTUgIzc2Y2Q5YyBudWxsICNlOGFlMWEpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItbGVmdC1jb2xvcjogI2U4YWUxYTtcbi8vLyAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjNzZjZDljO1xuLy8vICAgICBib3JkZXItdG9wLWNvbG9yOiAjYTYwYjU1O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLWNvbG9yYFxuXG5AbWl4aW4gYm9yZGVyLWNvbG9yKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgY29sb3IsICR2YWxzLi4uKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1yYWRpdXNgIG9uIGJvdGggY29ybmVycyBvbiB0aGUgc2lkZSBvZiBhIGJveC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmFkaWlcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50LW9uZSB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDVweCk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50LXR3byB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygzcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQtb25lIHtcbi8vLyAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xuLy8vICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudC10d28ge1xuLy8vICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7XG4vLy8gICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci1yYWRpdXNgXG5cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLXN0eWxlYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZGFzaGVkIG51bGwgc29saWQpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbi8vLyAgICAgYm9yZGVyLXRvcC1zdHlsZTogZGFzaGVkO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLXN0eWxlYFxuXG5AbWl4aW4gYm9yZGVyLXN0eWxlKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgc3R5bGUsICR2YWxzLi4uKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci13aWR0aGAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXdpZHRoKDFlbSBudWxsIDIwcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAyMHB4O1xuLy8vICAgICBib3JkZXItdG9wLXdpZHRoOiAxZW07XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XG4vLy9cbi8vLyBAb3V0cHV0IGBib3JkZXItd2lkdGhgXG5cbkBtaXhpbiBib3JkZXItd2lkdGgoJHZhbHMuLi4pIHtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCB3aWR0aCwgJHZhbHMuLi4pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VuZXJhdGVzIHZhcmlhYmxlcyBmb3IgYWxsIGJ1dHRvbnMuIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgdXNlIGludGVycG9sYXRpb24gb24gdGhlIHZhcmlhYmxlOiBgI3skYWxsLWJ1dHRvbnN9YC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgI3skYWxsLWJ1dHRvbnN9IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLWJ1dHRvbnMtZm9jdXN9LFxuLy8vICAgI3skYWxsLWJ1dHRvbnMtaG92ZXJ9IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLWJ1dHRvbnMtYWN0aXZlfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBidXR0b24sXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGJ1dHRvbjpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmZvY3VzLFxuLy8vICAgYnV0dG9uOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06aG92ZXIge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBidXR0b246YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTphY3RpdmUge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUgYXNzaWduLWlucHV0c1xuLy8vXG4vLy8gQHR5cGUgTGlzdFxuLy8vXG4vLy8gQHRvZG8gUmVtb3ZlIGRvdWJsZSBhc3NpZ25lZCB2YXJpYWJsZXMgKExpbmVzIDU54oCTNjIpIGluIHY1LjAuMFxuXG4kYnV0dG9ucy1saXN0OiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJyxcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwicmVzZXRcIl0nLFxuICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzdWJtaXRcIl0nO1xuXG4kYWxsLWJ1dHRvbnM6ICAgICAgICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QpO1xuJGFsbC1idXR0b25zLWFjdGl2ZTogYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0LCBhY3RpdmUpO1xuJGFsbC1idXR0b25zLWZvY3VzOiAgYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0LCBmb2N1cyk7XG4kYWxsLWJ1dHRvbnMtaG92ZXI6ICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGhvdmVyKTtcblxuJGFsbC1idXR0b24taW5wdXRzOiAgICAgICAgJGFsbC1idXR0b25zO1xuJGFsbC1idXR0b24taW5wdXRzLWFjdGl2ZTogJGFsbC1idXR0b25zLWFjdGl2ZTtcbiRhbGwtYnV0dG9uLWlucHV0cy1mb2N1czogICRhbGwtYnV0dG9ucy1mb2N1cztcbiRhbGwtYnV0dG9uLWlucHV0cy1ob3ZlcjogICRhbGwtYnV0dG9ucy1ob3ZlcjtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGluY2x1ZGUgYSBjbGVhcmZpeCBmb3IgY29udGFpbmluZyBmbG9hdHMuXG4vLy9cbi8vLyBAbGluayBodHRwOi8vY3NzbW9qby5jb20vbGF0ZXN0X25ld19jbGVhcmZpeF9zb19mYXIvXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudDo6YWZ0ZXIge1xuLy8vICAgICBjbGVhcjogYm90aDtcbi8vLyAgICAgY29udGVudDogXCJcIjtcbi8vLyAgICAgZGlzcGxheTogdGFibGU7XG4vLy8gICB9XG5cbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBUcnVuY2F0ZXMgdGV4dCBhbmQgYWRkcyBhbiBlbGxpcHNpcyB0byByZXByZXNlbnQgb3ZlcmZsb3cuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFsxMDAlXVxuLy8vICAgTWF4LXdpZHRoIGZvciB0aGUgc3RyaW5nIHRvIHJlc3BlY3QgYmVmb3JlIGJlaW5nIHRydW5jYXRlZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGVsbGlwc2lzO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4vLy8gICAgIG1heC13aWR0aDogMTAwJTtcbi8vLyAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbi8vLyAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4vLy8gICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4vLy8gICAgIHdvcmQtd3JhcDogbm9ybWFsO1xuLy8vICAgfVxuXG5AbWl4aW4gZWxsaXBzaXMoJHdpZHRoOiAxMDAlKSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAkd2lkdGg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB3b3JkLXdyYXA6IG5vcm1hbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdlb3JnaWEgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJGdlb3JnaWE6IFwiR2VvcmdpYVwiLCBcIkNhbWJyaWFcIiwgXCJUaW1lcyBOZXcgUm9tYW5cIiwgXCJUaW1lc1wiLCBzZXJpZjtcblxuLy8vIEhlbHZldGljYSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kaGVsdmV0aWNhOiBcIkhlbHZldGljYSBOZXVlXCIsIFwiSGVsdmV0aWNhXCIsIFwiUm9ib3RvXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcblxuLy8vIEx1Y2lkYSBHcmFuZGUgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJGx1Y2lkYS1ncmFuZGU6IFwiTHVjaWRhIEdyYW5kZVwiLCBcIlRhaG9tYVwiLCBcIlZlcmRhbmFcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuXG4vLy8gTW9ub3NwYWNlIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRtb25vc3BhY2U6IFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiQ29uc29sYXNcIiwgXCJDb3VyaWVyXCIsIG1vbm9zcGFjZTtcblxuLy8vIFZlcmRhbmEgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJHZlcmRhbmE6IFwiVmVyZGFuYVwiLCBcIkdlbmV2YVwiLCBzYW5zLXNlcmlmO1xuIiwiLy8vIEhpZGVzIHRoZSB0ZXh0IGluIGFuIGVsZW1lbnQsIGNvbW1vbmx5IHVzZWQgdG8gc2hvdyBhbiBpbWFnZS4gU29tZSBlbGVtZW50cyB3aWxsIG5lZWQgYmxvY2stbGV2ZWwgc3R5bGVzIGFwcGxpZWQuXG4vLy9cbi8vLyBAbGluayBodHRwOi8vemVsZG1hbi5jb20vMjAxMi8wMy8wMS9yZXBsYWNpbmctdGhlLTk5OTlweC1oYWNrLW5ldy1pbWFnZS1yZXBsYWNlbWVudFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGhpZGUtdGV4dDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbi8vLyAgICAgdGV4dC1pbmRlbnQ6IDEwMSU7XG4vLy8gICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4vLy8gICB9XG4vLy9cbi8vLyBAdG9kbyBSZW1vdmUgaGVpZ2h0IGFyZ3VtZW50IGluIHY1LjAuMFxuXG5AbWl4aW4gaGlkZS10ZXh0KCRoZWlnaHQ6IG51bGwpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1pbmRlbnQ6IDEwMSU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgQGlmICRoZWlnaHQge1xuICAgIEB3YXJuIFwiVGhlIGBoaWRlLXRleHRgIG1peGluIGhhcyBjaGFuZ2VkIGFuZCBubyBsb25nZXIgcmVxdWlyZXMgYSBoZWlnaHQuIFRoZSBoZWlnaHQgYXJndW1lbnQgd2lsbCBubyBsb25nZXIgYmUgYWNjZXB0ZWQgaW4gdjUuMC4wXCI7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYG1hcmdpbmAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwgMTBweCAzZW0gMjB2aCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbi1ib3R0b206IDNlbTtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IDIwdmg7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMTBweDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYG1hcmdpbmBcblxuQG1peGluIG1hcmdpbigkdmFscy4uLikge1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShtYXJnaW4sIGZhbHNlLCAkdmFscy4uLik7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBwYWRkaW5nYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwYWRkaW5nKDEydmggbnVsbCAxMHB4IDUlKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4vLy8gICAgIHBhZGRpbmctbGVmdDogNSU7XG4vLy8gICAgIHBhZGRpbmctdG9wOiAxMnZoO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgcGFkZGluZ2BcblxuQG1peGluIHBhZGRpbmcoJHZhbHMuLi4pIHtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkocGFkZGluZywgZmFsc2UsICR2YWxzLi4uKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciBzZXR0aW5nIGFuIGVsZW1lbnTigJlzIHBvc2l0aW9uLiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge1Bvc2l0aW9ufSAkcG9zaXRpb24gW3JlbGF0aXZlXVxuLy8vICAgQSBDU1MgcG9zaXRpb24gdmFsdWVcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJGNvb3JkaW5hdGVzIFtudWxsIG51bGwgbnVsbCBudWxsXVxuLy8vICAgTGlzdCBvZiB2YWx1ZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSA0LXZhbHVlIHN5bnRheCBmb3IgdGhlIGVkZ2VzIG9mIGEgYm94XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDAgbnVsbCBudWxsIDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBsZWZ0OiAxMGVtO1xuLy8vICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4vLy8gICAgIHRvcDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gaXMtbGVuZ3RoXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSB1bnBhY2tcblxuQG1peGluIHBvc2l0aW9uKCRwb3NpdGlvbjogcmVsYXRpdmUsICRjb29yZGluYXRlczogbnVsbCBudWxsIG51bGwgbnVsbCkge1xuICBAaWYgdHlwZS1vZigkcG9zaXRpb24pID09IGxpc3Qge1xuICAgICRjb29yZGluYXRlczogJHBvc2l0aW9uO1xuICAgICRwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAkY29vcmRpbmF0ZXM6IHVucGFjaygkY29vcmRpbmF0ZXMpO1xuXG4gICRvZmZzZXRzOiAoXG4gICAgdG9wOiAgICBudGgoJGNvb3JkaW5hdGVzLCAxKSxcbiAgICByaWdodDogIG50aCgkY29vcmRpbmF0ZXMsIDIpLFxuICAgIGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyksXG4gICAgbGVmdDogICBudGgoJGNvb3JkaW5hdGVzLCA0KVxuICApO1xuXG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG5cbiAgQGVhY2ggJG9mZnNldCwgJHZhbHVlIGluICRvZmZzZXRzIHtcbiAgICBAaWYgaXMtbGVuZ3RoKCR2YWx1ZSkge1xuICAgICAgI3skb2Zmc2V0fTogJHZhbHVlO1xuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQSBtaXhpbiBmb3IgZ2VuZXJhdGluZyB2ZW5kb3IgcHJlZml4ZXMgb24gbm9uLXN0YW5kYXJkaXplZCBwcm9wZXJ0aWVzLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcm9wZXJ0eVxuLy8vICAgUHJvcGVydHkgdG8gcHJlZml4XG4vLy9cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZVxuLy8vICAgVmFsdWUgdG8gdXNlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRwcmVmaXhlc1xuLy8vICAgUHJlZml4ZXMgdG8gZGVmaW5lXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXJhZGl1cywgMTBweCwgd2Via2l0IG1zIHNwZWMpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICAgIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDtcbi8vLyAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itd2Via2l0XG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1tb3ppbGxhXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1taWNyb3NvZnRcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW9wZXJhXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1zcGVjXG5cbkBtaXhpbiBwcmVmaXhlcigkcHJvcGVydHksICR2YWx1ZSwgJHByZWZpeGVzKSB7XG4gIEBlYWNoICRwcmVmaXggaW4gJHByZWZpeGVzIHtcbiAgICBAaWYgJHByZWZpeCA9PSB3ZWJraXQge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IG1veiB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbW96aWxsYSB7XG4gICAgICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IG1zIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1taWNyb3NvZnQge1xuICAgICAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IG8ge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW9wZXJhIHtcbiAgICAgICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IHNwZWMge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLXNwZWMge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlICB7XG4gICAgICBAd2FybiBcIlVucmVjb2duaXplZCBwcmVmaXg6ICN7JHByZWZpeH1cIjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGRpc2FibGUtcHJlZml4LWZvci1hbGwoKSB7XG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbW96aWxsYTogICBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1taWNyb3NvZnQ6IGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW9wZXJhOiAgICAgZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itc3BlYzogICAgICBmYWxzZSAhZ2xvYmFsO1xufVxuIiwiQG1peGluIHJldGluYS1pbWFnZSgkZmlsZW5hbWUsICRiYWNrZ3JvdW5kLXNpemUsICRleHRlbnNpb246IHBuZywgJHJldGluYS1maWxlbmFtZTogbnVsbCwgJHJldGluYS1zdWZmaXg6IF8yeCwgJGFzc2V0LXBpcGVsaW5lOiAkYXNzZXQtcGlwZWxpbmUpIHtcbiAgQGlmICRhc3NldC1waXBlbGluZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgIHVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICB9XG5cbiAgQGluY2x1ZGUgaGlkcGkge1xuICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUge1xuICAgICAgQGlmICRyZXRpbmEtZmlsZW5hbWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAkcmV0aW5hLWZpbGVuYW1lIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skcmV0aW5hLWZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZC1zaXplOiAkYmFja2dyb3VuZC1zaXplO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBTZXRzIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBvZiB0aGUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNpemVcbi8vLyAgIEEgbGlzdCBvZiBhdCBtb3N0IDIgc2l6ZSB2YWx1ZXMuXG4vLy9cbi8vLyAgIElmIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgdmFsdWUgaW4gYCRzaXplYCBpdCBpcyB1c2VkIGZvciBib3RoIHdpZHRoIGFuZCBoZWlnaHQuIEFsbCB1bml0cyBhcmUgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZmlyc3QtZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNpemUoMmVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZShhdXRvIDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmZpcnN0LWVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogMmVtO1xuLy8vICAgICBoZWlnaHQ6IDJlbTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcbi8vLyAgICAgd2lkdGg6IGF1dG87XG4vLy8gICAgIGhlaWdodDogMTBlbTtcbi8vLyAgIH1cbi8vL1xuLy8vIEB0b2RvIFJlZmFjdG9yIGluIDUuMC4wIHRvIHVzZSBhIGNvbW1hLXNlcGFyYXRlZCBhcmd1bWVudFxuXG5AbWl4aW4gc2l6ZSgkdmFsdWUpIHtcbiAgJHdpZHRoOiBudGgoJHZhbHVlLCAxKTtcbiAgJGhlaWdodDogJHdpZHRoO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA+IDEge1xuICAgICRoZWlnaHQ6IG50aCgkdmFsdWUsIDIpO1xuICB9XG5cbiAgQGlmIGlzLXNpemUoJGhlaWdodCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJgI3skaGVpZ2h0fWAgaXMgbm90IGEgdmFsaWQgbGVuZ3RoIGZvciB0aGUgYCRoZWlnaHRgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xuICB9XG5cbiAgQGlmIGlzLXNpemUoJHdpZHRoKSB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJgI3skd2lkdGh9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJHdpZHRoYCBwYXJhbWV0ZXIgaW4gdGhlIGBzaXplYCBtaXhpbi5cIjtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VuZXJhdGVzIHZhcmlhYmxlcyBmb3IgYWxsIHRleHQtYmFzZWQgaW5wdXRzLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTogYCN7JGFsbC10ZXh0LWlucHV0c31gLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9IHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWZvY3VzfSxcbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1ob3Zlcn0ge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlfSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl0sXG4vLy8gICB0ZXh0YXJlYSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTpmb2N1cyxcbi8vLyAgIHRleHRhcmVhOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmhvdmVyLFxuLy8vICAgdGV4dGFyZWE6aG92ZXIge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmFjdGl2ZSxcbi8vLyAgIHRleHRhcmVhOmFjdGl2ZSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSBhc3NpZ24taW5wdXRzXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiR0ZXh0LWlucHV0cy1saXN0OiAnaW5wdXRbdHlwZT1cImNvbG9yXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGVcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZW1haWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibW9udGhcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInNlYXJjaFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGV4dFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0aW1lXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInVybFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ3ZWVrXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXQ6bm90KFt0eXBlXSknLFxuICAgICAgICAgICAgICAgICAgICd0ZXh0YXJlYSc7XG5cbiRhbGwtdGV4dC1pbnB1dHM6ICAgICAgICBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0KTtcbiRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBhY3RpdmUpO1xuJGFsbC10ZXh0LWlucHV0cy1mb2N1czogIGFzc2lnbi1pbnB1dHMoJHRleHQtaW5wdXRzLWxpc3QsIGZvY3VzKTtcbiRhbGwtdGV4dC1pbnB1dHMtaG92ZXI6ICBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBob3Zlcik7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDU1MgY3ViaWMtYmV6aWVyIHRpbWluZyBmdW5jdGlvbnMuIFRpbWluZyBmdW5jdGlvbnMgY291cnRlc3kgb2YganF1ZXJ5LmVhc2llIChnaXRodWIuY29tL2phdWtpYS9lYXNpZSlcbi8vL1xuLy8vIFRpbWluZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGRlbW9lZCBoZXJlOiBodHRwOi8vanF1ZXJ5dWkuY29tL3Jlc291cmNlcy9kZW1vcy9lZmZlY3QvZWFzaW5nLmh0bWxcbi8vL1xuLy8vIEB0eXBlIGN1YmljLWJlemllclxuXG4kZWFzZS1pbi1xdWFkOiAgICAgIGN1YmljLWJlemllcigwLjU1MCwgIDAuMDg1LCAwLjY4MCwgMC41MzApO1xuJGVhc2UtaW4tY3ViaWM6ICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA1NSwgMC42NzUsIDAuMTkwKTtcbiRlYXNlLWluLXF1YXJ0OiAgICAgY3ViaWMtYmV6aWVyKDAuODk1LCAgMC4wMzAsIDAuNjg1LCAwLjIyMCk7XG4kZWFzZS1pbi1xdWludDogICAgIGN1YmljLWJlemllcigwLjc1NSwgIDAuMDUwLCAwLjg1NSwgMC4wNjApO1xuJGVhc2UtaW4tc2luZTogICAgICBjdWJpYy1iZXppZXIoMC40NzAsICAwLjAwMCwgMC43NDUsIDAuNzE1KTtcbiRlYXNlLWluLWV4cG86ICAgICAgY3ViaWMtYmV6aWVyKDAuOTUwLCAgMC4wNTAsIDAuNzk1LCAwLjAzNSk7XG4kZWFzZS1pbi1jaXJjOiAgICAgIGN1YmljLWJlemllcigwLjYwMCwgIDAuMDQwLCAwLjk4MCwgMC4zMzUpO1xuJGVhc2UtaW4tYmFjazogICAgICBjdWJpYy1iZXppZXIoMC42MDAsIC0wLjI4MCwgMC43MzUsIDAuMDQ1KTtcblxuJGVhc2Utb3V0LXF1YWQ6ICAgICBjdWJpYy1iZXppZXIoMC4yNTAsICAwLjQ2MCwgMC40NTAsIDAuOTQwKTtcbiRlYXNlLW91dC1jdWJpYzogICAgY3ViaWMtYmV6aWVyKDAuMjE1LCAgMC42MTAsIDAuMzU1LCAxLjAwMCk7XG4kZWFzZS1vdXQtcXVhcnQ6ICAgIGN1YmljLWJlemllcigwLjE2NSwgIDAuODQwLCAwLjQ0MCwgMS4wMDApO1xuJGVhc2Utb3V0LXF1aW50OiAgICBjdWJpYy1iZXppZXIoMC4yMzAsICAxLjAwMCwgMC4zMjAsIDEuMDAwKTtcbiRlYXNlLW91dC1zaW5lOiAgICAgY3ViaWMtYmV6aWVyKDAuMzkwLCAgMC41NzUsIDAuNTY1LCAxLjAwMCk7XG4kZWFzZS1vdXQtZXhwbzogICAgIGN1YmljLWJlemllcigwLjE5MCwgIDEuMDAwLCAwLjIyMCwgMS4wMDApO1xuJGVhc2Utb3V0LWNpcmM6ICAgICBjdWJpYy1iZXppZXIoMC4wNzUsICAwLjgyMCwgMC4xNjUsIDEuMDAwKTtcbiRlYXNlLW91dC1iYWNrOiAgICAgY3ViaWMtYmV6aWVyKDAuMTc1LCAgMC44ODUsIDAuMzIwLCAxLjI3NSk7XG5cbiRlYXNlLWluLW91dC1xdWFkOiAgY3ViaWMtYmV6aWVyKDAuNDU1LCAgMC4wMzAsIDAuNTE1LCAwLjk1NSk7XG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXF1YXJ0OiBjdWJpYy1iZXppZXIoMC43NzAsICAwLjAwMCwgMC4xNzUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWludDogY3ViaWMtYmV6aWVyKDAuODYwLCAgMC4wMDAsIDAuMDcwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xuJGVhc2UtaW4tb3V0LWV4cG86ICBjdWJpYy1iZXppZXIoMS4wMDAsICAwLjAwMCwgMC4wMDAsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1jaXJjOiAgY3ViaWMtYmV6aWVyKDAuNzg1LCAgMC4xMzUsIDAuMTUwLCAwLjg2MCk7XG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xuIiwiQG1peGluIHRyaWFuZ2xlKCRzaXplLCAkY29sb3IsICRkaXJlY3Rpb24pIHtcbiAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAkaGVpZ2h0OiBudGgoJHNpemUsIGxlbmd0aCgkc2l6ZSkpO1xuICAkZm9yZWdyb3VuZC1jb2xvcjogbnRoKCRjb2xvciwgMSk7XG4gICRiYWNrZ3JvdW5kLWNvbG9yOiBpZihsZW5ndGgoJGNvbG9yKSA9PSAyLCBudGgoJGNvbG9yLCAyKSwgdHJhbnNwYXJlbnQpO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAkd2lkdGg6ICR3aWR0aCAvIDI7XG4gICAgJGhlaWdodDogaWYobGVuZ3RoKCRzaXplKSA+IDEsICRoZWlnaHQsICRoZWlnaHQvMik7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItbGVmdDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItbGVmdDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHVwLWxlZnQpIHtcbiAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQ6ICAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHVwLWxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGRvd24tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGRvd24tbGVmdCkge1xuICAgIGJvcmRlci1ib3R0b206ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LXVwKSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAkd2lkdGg7XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtZG93bikge1xuICAgIGJvcmRlci1jb2xvcjogJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgJHdpZHRoO1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LXJpZ2h0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICR3aWR0aCAkaGVpZ2h0O1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhbiBlYXN5IHdheSB0byBjaGFuZ2UgdGhlIGB3b3JkLXdyYXBgIHByb3BlcnR5LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR3cmFwIFticmVhay13b3JkXVxuLy8vICAgVmFsdWUgZm9yIHRoZSBgd29yZC1icmVha2AgcHJvcGVydHkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC53cmFwcGVyIHtcbi8vLyAgICAgQGluY2x1ZGUgd29yZC13cmFwKGJyZWFrLXdvcmQpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLndyYXBwZXIge1xuLy8vICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuLy8vICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLy8gICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbi8vLyAgIH1cblxuQG1peGluIHdvcmQtd3JhcCgkd3JhcDogYnJlYWstd29yZCkge1xuICBvdmVyZmxvdy13cmFwOiAkd3JhcDtcbiAgd29yZC13cmFwOiAkd3JhcDtcblxuICBAaWYgJHdyYXAgPT0gYnJlYWstd29yZCB7XG4gICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICB9IEBlbHNlIHtcbiAgICB3b3JkLWJyZWFrOiAkd3JhcDtcbiAgfVxufVxuIiwiLy8gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IE1BSk9SIHZlcnNpb24gcmVsZWFzZVxuXG5AbWl4aW4gaW5saW5lLWJsb2NrIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEB3YXJuIFwiVGhlIGlubGluZS1ibG9jayBtaXhpbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbkBtaXhpbiBidXR0b24gKCRzdHlsZTogc2ltcGxlLCAkYmFzZS1jb2xvcjogIzQyOTRmMCwgJHRleHQtc2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBzdHJpbmcgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IGNvbG9yIHtcbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IHN0cmluZyBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gbnVtYmVyIHtcbiAgICAkcGFkZGluZzogJHRleHQtc2l6ZTtcbiAgICAkdGV4dC1zaXplOiAkYmFzZS1jb2xvcjtcbiAgICAkYmFzZS1jb2xvcjogIzQyOTRmMDtcblxuICAgIEBpZiAkcGFkZGluZyA9PSBpbmhlcml0IHtcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IGNvbG9yIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBjb2xvciB7XG4gICAgJGJhc2UtY29sb3I6ICRzdHlsZTtcbiAgICAkc3R5bGU6IHNpbXBsZTtcbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IGNvbG9yIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBudW1iZXIge1xuICAgICRwYWRkaW5nOiAkdGV4dC1zaXplO1xuICAgICR0ZXh0LXNpemU6ICRiYXNlLWNvbG9yO1xuICAgICRiYXNlLWNvbG9yOiAkc3R5bGU7XG4gICAgJHN0eWxlOiBzaW1wbGU7XG5cbiAgICBAaWYgJHBhZGRpbmcgPT0gaW5oZXJpdCB7XG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBudW1iZXIge1xuICAgICRwYWRkaW5nOiAkYmFzZS1jb2xvcjtcbiAgICAkdGV4dC1zaXplOiAkc3R5bGU7XG4gICAgJGJhc2UtY29sb3I6ICM0Mjk0ZjA7XG4gICAgJHN0eWxlOiBzaW1wbGU7XG5cbiAgICBAaWYgJHBhZGRpbmcgPT0gIzQyOTRmMCB7XG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cblxuICBAd2FybiBcIlRoZSBidXR0b24gbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xufVxuXG4vLyBTZWxlY3RvciBTdHlsZSBCdXR0b25cbkBtaXhpbiBidXR0b25zdHlsZSgkdHlwZSwgJGItY29sb3IsICR0LXNpemUsICRwYWQpIHtcbiAgLy8gR3JheXNjYWxlIGJ1dHRvblxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGlmICR0eXBlID09IHNoaW55IGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gcGlsbCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gZmxhdCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICAvLyBDb2xvcmVkIGJ1dHRvblxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIHtcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBlbHNlIGlmICR0eXBlID09IHNoaW55IHtcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gcGlsbCB7XG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gZmxhdCB7XG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG59XG5cbi8vIFNpbXBsZSBCdXR0b25cbkBtaXhpbiBzaW1wbGUoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDklLCAgJGxpZ2h0bmVzczogLTE0JSk7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtOCUsICAkbGlnaHRuZXNzOiAgMTUlKTtcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xMSUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDE1JSwgJGxpZ2h0bmVzczogLTE4JSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgfVxuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLCAkc3RvcC1ncmFkaWVudCk7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIDFweCAwICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTQlLCAkbGlnaHRuZXNzOiAtNSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNyUsICRsaWdodG5lc3M6ICA1JSk7XG4gICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA4JSwgJGxpZ2h0bmVzczogLTE0JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWhvdmVyKTtcbiAgICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93LWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogOSUsICRsaWdodG5lc3M6IC0xNCUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA3JSwgJGxpZ2h0bmVzczogLTE3JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmUsIGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG5cbi8vIFNoaW55IEJ1dHRvblxuQG1peGluIHNoaW55KCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlcjogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExNywgJGdyZWVuOiAtMTExLCAkYmx1ZTogLTgxKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEyNiwgJGdyZWVuOiAtMTI3LCAkYmx1ZTogLTEyMik7XG4gICRmb3VydGgtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC03OSwgICRncmVlbjogLTcwLCAgJGJsdWU6IC00Nik7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6ICAzNywgICRncmVlbjogIDI5LCAgJGJsdWU6ICAxMik7XG4gICRzZWNvbmQtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC01NiwgICRncmVlbjogLTUwLCAgJGJsdWU6IC0zMyk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xNDAsICRncmVlbjogLTE0MSwgJGJsdWU6IC0xMTQpO1xuICAkdGhpcmQtc3RvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtODYsICAkZ3JlZW46IC03NSwgICRibHVlOiAtNDgpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgJGZvdXJ0aC1zdG9wOiAgIGdyYXlzY2FsZSgkZm91cnRoLXN0b3ApO1xuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XG4gICAgJHNlY29uZC1zdG9wOiAgIGdyYXlzY2FsZSgkc2Vjb25kLXN0b3ApO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgICAkdGhpcmQtc3RvcDogICAgZ3JheXNjYWxlKCR0aGlyZC1zdG9wKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRiYXNlLWNvbG9yIDAlLCAkc2Vjb25kLXN0b3AgNTAlLCAkdGhpcmQtc3RvcCA1MCUsICRmb3VydGgtc3RvcCAxMDAlKTtcblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEzLCAkZ3JlZW46IC0xNSwgJGJsdWU6IC0xOCk7XG4gICAgJHNlY29uZC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC02NiwgJGdyZWVuOiAtNjIsICRibHVlOiAtNTEpO1xuICAgICR0aGlyZC1zdG9wLWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtOTMsICRncmVlbjogLTg1LCAkYmx1ZTogLTY2KTtcbiAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAkZ3JlZW46IC04MCwgJGJsdWU6IC02Myk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRmaXJzdC1zdG9wLWhvdmVyOiAgZ3JheXNjYWxlKCRmaXJzdC1zdG9wLWhvdmVyKTtcbiAgICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogZ3JheXNjYWxlKCRzZWNvbmQtc3RvcC1ob3Zlcik7XG4gICAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkdGhpcmQtc3RvcC1ob3Zlcik7XG4gICAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkZm91cnRoLXN0b3AtaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRmaXJzdC1zdG9wLWhvdmVyICAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2Vjb25kLXN0b3AtaG92ZXIgNTAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlyZC1zdG9wLWhvdmVyICA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyIDEwMCUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTExLCAkZ3JlZW46IC0xMTYsICRibHVlOiAtMTIyKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDIwcHggMCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBQaWxsIEJ1dHRvblxuQG1peGluIHBpbGwoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyLWJvdHRvbTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC0xMSUsICRsaWdodG5lc3M6IC0yNiUpO1xuICAkYm9yZGVyLXNpZGVzOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yMSUsICRsaWdodG5lc3M6IC0yMSUpO1xuICAkYm9yZGVyLXRvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0zMCUsICRsaWdodG5lc3M6IC0xNSUpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0xJSwgICRsaWdodG5lc3M6ICA3JSk7XG4gICRzdG9wLWdyYWRpZW50OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDE0JSwgJGxpZ2h0bmVzczogLTEwJSk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTE5JSwgJGxpZ2h0bmVzczogLTE1JSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgJGJvcmRlci1zaWRlczogIGdyYXlzY2FsZSgkYm9yZGVyLXNpZGVzKTtcbiAgICAkYm9yZGVyLXRvcDogICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgfVxuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xuICBib3JkZXItY29sb3I6ICRib3JkZXItdG9wICRib3JkZXItc2lkZXMgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpZ2h0bmVzczogLTQuNSUpO1xuICAgICRib3JkZXItYm90dG9tOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDEzLjUlLCAkbGlnaHRuZXNzOiAtMzIlKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yJSwgICAgJGxpZ2h0bmVzczogLTI3JSk7XG4gICAgJGJvcmRlci10b3A6ICAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMTclLCAgICRsaWdodG5lc3M6IC0yMSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICAgICAgICAgICAkc2F0dXJhdGlvbjogLTElLCAgICAkbGlnaHRuZXNzOiAgMyUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTQlLCAgICAkbGlnaHRuZXNzOiAtMTUuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTUlLCAgICAkbGlnaHRuZXNzOiAtMjIlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAgICRib3JkZXItc2lkZXM6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgICAkYm9yZGVyLXRvcDogICAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWhvdmVyKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG5cbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xuICAgIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdy1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWhvdmVyO1xuICB9XG5cbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xuICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA0LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMTAlKTtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNiwgICRzYXR1cmF0aW9uOiAtMi41JSwgJGxpZ2h0bmVzczogLTMwJSk7XG4gICAgJGJvcmRlci1ib3R0b20tYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDExLCAkc2F0dXJhdGlvbjogIDYlLCAgICRsaWdodG5lc3M6IC0zMSUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA5LCAgJHNhdHVyYXRpb246ICAyJSwgICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1hY3RpdmU6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA1LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGdyYXlzY2FsZSgkYWN0aXZlLWNvbG9yKTtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItYWN0aXZlKTtcbiAgICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tLWFjdGl2ZSk7XG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgICAkdGV4dC1zaGFkb3ctYWN0aXZlOiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3ctYWN0aXZlKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kOiAkYWN0aXZlLWNvbG9yO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItYWN0aXZlO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWJvdHRvbS1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDZweCAzcHggJGluc2V0LXNoYWRvdy1hY3RpdmU7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBGbGF0IEJ1dHRvblxuQG1peGluIGZsYXQoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3JkZXI6IDA7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCl7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDQlLCAkbGlnaHRuZXNzOiA1JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgIH1cblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXNlLWNvbG9yLWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItYWN0aXZlOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItYWN0aXZlKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1hY3RpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbi8vIEZsZXhpYmxlIGdyaWRcbkBmdW5jdGlvbiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zKSB7XG4gICR3aWR0aDogJGNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCR3aWR0aCAvICRjb250YWluZXItd2lkdGgpO1xuXG4gIEB3YXJuIFwiVGhlIGZsZXgtZ3JpZCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbi8vIEZsZXhpYmxlIGd1dHRlclxuQGZ1bmN0aW9uIGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zLCAkZ3V0dGVyOiAkZmctZ3V0dGVyKSB7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJGd1dHRlciAvICRjb250YWluZXItd2lkdGgpO1xuXG4gIEB3YXJuIFwiVGhlIGZsZXgtZ3V0dGVyIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcbn1cblxuQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG5cbiAgQHdhcm4gXCJUaGUgZ3JpZC13aWR0aCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbkBmdW5jdGlvbiBnb2xkZW4tcmF0aW8oJHZhbHVlLCAkaW5jcmVtZW50KSB7XG4gIEByZXR1cm4gbW9kdWxhci1zY2FsZSgkaW5jcmVtZW50LCAkdmFsdWUsICRyYXRpbzogJGdvbGRlbik7XG5cbiAgQHdhcm4gXCJUaGUgZ29sZGVuLXJhdGlvIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuIFBsZWFzZSB1c2UgdGhlIG1vZHVsYXItc2NhbGUgZnVuY3Rpb24sIGluc3RlYWQuXCI7XG59XG5cbkBtaXhpbiBib3gtc2l6aW5nKCRib3gpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXNpemluZywgJGJveCwgd2Via2l0IG1veiBzcGVjKTtcblxuICBAd2FybiBcIlRoZSBib3gtc2l6aW5nIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuIFRoaXMgcHJvcGVydHkgY2FuIG5vdyBiZSB1c2VkIHVuLXByZWZpeGVkLlwiO1xufVxuIiwiLy8gSW1wb3J0IHRoZSBwYXJ0aWFscyBmb3IgWmVuIEdyaWRzLlxuXG5AaW1wb3J0IFwiemVuLWdyaWRzL2dyaWRzXCI7XG5AaW1wb3J0IFwiemVuLWdyaWRzL2Zsb3dcIjtcbkBpbXBvcnQgXCJ6ZW4tZ3JpZHMvbGF5b3V0XCI7XG5AaW1wb3J0IFwiemVuLWdyaWRzL3VuZG9cIjtcbiIsIi8vIEdyaWRzIG1vZHVsZVxuLy9cbi8vIFRoZSDigJxncmlkc+KAnSBtb2R1bGUgY29udGFpbnMgbW9zdCBvZiB0aGUgY29uZmlndXJhYmxlIHZhcmlhYmxlcyBhbmQgbWl4aW5zIHlvdeKAmWxsIG5lZWQgdG8gY3JlYXRlIGEgbGF5b3V0LlxuLy9cbi8vIFdlaWdodDogLTEwXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGdyaWRzXG5cbi8vIEltcG9ydCB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBuZWVkZWQgYnkgYWxsIG9mIFplbiBHcmlkcy5cbkBpbXBvcnQgXCIuL3ZhcmlhYmxlc1wiO1xuLy8gSW1wb3J0IHRoZSBoZWxwZXIgZnVuY3Rpb25zLlxuQGltcG9ydCBcIi4vZnVuY3Rpb25zXCI7XG5cbi8vIHplbi1ydGwoKVxuLy9cbi8vIEluY2x1ZGVzIGlubGluZSBSaWdodC1Uby1MZWZ0IGxhbmd1YWdlIHN1cHBvcnQgaWYgdGhlIGAkemVuLXJ0bC1zZWxlY3RvcmAgdmFyaWFibGUgaXMgc2V0IHRvIGBbZGlyPVwicnRsXCJdYCBvciBzb21lIG90aGVyIHVzZWZ1bCBDU1Mgc2VsZWN0b3IuXG4vL1xuLy8gU2luY2UgYCR6ZW4tcnRsLXNlbGVjdG9yYCBkZWZhdWx0cyB0byBgZmFsc2VgLCBpbmxpbmUgUmlnaHQtVG8tTGVmdCBsYW5ndWFnZSBzdXBwb3J0IGlzIG9mZiBieSBkZWZhdWx0LlxuLy9cbi8vICRzZWxlY3RvciA9ICR6ZW4tcnRsLXNlbGVjdG9yIC0gVGhlIFJUTCBzZWxlY3RvciBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXJ0bC1zZWxlY3RvcmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tcnRsLXNlbGVjdG9yKS5cbi8vXG4vLyB3ZWlnaHQ6IDIwXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGdyaWRzLnplbi1ydGxcblxuQG1peGluIHplbi1ydGwoJHNlbGVjdG9yOiAkemVuLXJ0bC1zZWxlY3Rvcikge1xuICBAaWYgJHNlbGVjdG9yIHtcbiAgICBAaWYgJiB7XG4gICAgICAjeyRzZWxlY3Rvcn0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAjeyRzZWxlY3Rvcn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gemVuLWdyaWQtY29udGFpbmVyKClcbi8vXG4vLyBBcHBseSB0aGlzIHRvIGNyZWF0ZSBhIGdyaWQgY29udGFpbmVyIGVsZW1lbnQuXG4vL1xuLy8gSWYgdGhpcyBncmlkIGlzIG5lc3RlZCBpbnNpZGUgYW5vdGhlciBncmlkLCB0aGUgYCRjb250ZXh0YCBwYXJhbWV0ZXIgY2FuIGJlIHVzZWQgdG8gYWxpZ24gdGhlIG5lc3RlZCBncmlkIHdpdGggdGhlIHBhcmVudCBncmlkLiBgJGNvbnRleHRgIGNhbiBiZSBzZXQgdG8gYG5vbmVgICh0aGUgZGVmYXVsdCksIGBncmlkLWl0ZW1gLCBvciBgZmxvd2AuXG4vL1xuLy8gSWYgdGhlIG5lc3RlZCBncmlk4oCZcyBjb250YWluZXIgaXMgYSBjaGlsZCBlbGVtZW50IG9mIHRoZSBwYXJlbnQgZ3JpZOKAmXMgZ3JpZCBpdGVtLCBzZXQgYCRjb250ZXh0OiBmbG93YC5cbi8vXG4vLyBPdGhlcndpc2UsIGlmIHRoZSBuZXN0ZWQgZ3JpZOKAmXMgY29udGFpbmVyIGlzIHRoZSBzYW1lIGVsZW1lbnQgYXMgdGhlIHBhcmVudCBncmlk4oCZcyBncmlkIGl0ZW0sIHNldCBgJGNvbnRleHQ6IGdyaWQtaXRlbWAgYW5kIGFwcGx5IHRoaXMgbWl4aW4gKmFmdGVyKiB0aGUgW2B6ZW4tZ3JpZC1pdGVtKClgXSgja3NzcmVmLWdyaWRzLXplbi1ncmlkLWl0ZW0pIG1peGluIGlzIGFwcGxpZWQgZm9yIHRoZSBwYXJlbnQgZ3JpZC4gVGhpcyBtaXhpbiByZW1vdmVzIGFueSBndXR0ZXJzIG9uIHRoZSBjb250YWluZXIgc2luY2UgdGhlIG5lc3RlZCBncmlkIHdpbGwgaGF2ZSBpdHMgb3duIGd1dHRlcnMuXG4vL1xuLy8gQ29tbW9uIHVzYWdlOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB6ZW4tZ3JpZC1jb250YWluZXIoKTtcbi8vIGBgYFxuLy8gb3I6XG4vLyBgYGBcbi8vIEBpbmNsdWRlIHplbi1ncmlkLWNvbnRhaW5lcihncmlkLWl0ZW0pO1xuLy8gYGBgXG4vL1xuLy8gJGNvbnRleHQgICAgICAgICAgICA9IG5vbmUgLSBJZiB0aGlzIGdyaWQgaXMgbmVzdGVkIGluc2lkZSBhbm90aGVyIGdyaWQsIHRoZSBgJGNvbnRleHRgIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBhbGlnbiB0aGUgbmVzdGVkIGdyaWQgd2l0aCB0aGUgcGFyZW50IGdyaWQuIEl0IGNhbiBiZSBzZXQgdG8gYG5vbmVgLCBgZ3JpZC1pdGVtYCwgb3IgYGZsb3dgLlxuLy8gJGd1dHRlcnMgICAgICAgICAgICA9ICR6ZW4tZ3V0dGVycyAtIFRoZSB3aWR0aCBvZiB0aGUgZ3V0dGVycyBmb3IgdGhpcyBjb250YWluZXIuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlcnNgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVycykuXG4vLyAkZ3V0dGVyLW1ldGhvZCAgICAgID0gJHplbi1ndXR0ZXItbWV0aG9kIC0gVGhlIGd1dHRlciBtZXRob2QgdG8gdXNlIGZvciB0aGlzIGNvbnRhaW5lci4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZ3V0dGVyLW1ldGhvZGBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1ndXR0ZXItbWV0aG9kKS5cbi8vICRkaXJlY3Rpb24gICAgICAgICAgPSAkemVuLWRpcmVjdGlvbiAtIFRoZSBkaXJlY3Rpb24gdG8gdXNlIGZvciB0aGlzIGNvbnRhaW5lci4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1kaXJlY3Rpb24pLlxuLy8gJHN3aXRjaC1kaXJlY3Rpb24gICA9ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbiAtIFdoZXRoZXIgdG8gc3dpdGNoIHRoZSBkZWZhdWx0IGRpcmVjdGlvbiBmb3IgdGhpcyBjb250YWluZXIuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXN3aXRjaC1kaXJlY3Rpb25gXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXN3aXRjaC1kaXJlY3Rpb24pLlxuLy8gJHJ0bC1zZWxlY3RvciAgICAgICA9ICR6ZW4tcnRsLXNlbGVjdG9yIC0gVGhlIFJUTCBzZWxlY3RvciBmb3IgdGhpcyBjb250YWluZXIuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXJ0bC1zZWxlY3RvcmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tcnRsLXNlbGVjdG9yKS5cbi8vXG4vLyBTdHlsZSBndWlkZTogZ3JpZHMuemVuLWdyaWQtY29udGFpbmVyXG5AbWl4aW4gemVuLWdyaWQtY29udGFpbmVyKFxuICAkY29udGV4dCAgICAgICAgICAgIDogbm9uZSxcbiAgJGd1dHRlcnMgICAgICAgICAgICA6ICR6ZW4tZ3V0dGVycyxcbiAgJGd1dHRlci1tZXRob2QgICAgICA6ICR6ZW4tZ3V0dGVyLW1ldGhvZCxcbiAgJGRpcmVjdGlvbiAgICAgICAgICA6ICR6ZW4tZGlyZWN0aW9uLFxuICAkc3dpdGNoLWRpcmVjdGlvbiAgIDogJHplbi1zd2l0Y2gtZGlyZWN0aW9uLFxuICAkcnRsLXNlbGVjdG9yICAgICAgIDogJHplbi1ydGwtc2VsZWN0b3Jcbikge1xuXG4gICRkaXI6ICRkaXJlY3Rpb247XG4gIEBpZiAkc3dpdGNoLWRpcmVjdGlvbiB7XG4gICAgJGRpcjogemVuLWRpcmVjdGlvbi1zd2l0Y2goJGRpcik7XG4gIH1cblxuICBAaWYgJGNvbnRleHQgPT0gZmxvdy1pdGVtIHtcbiAgICBAd2FybiBcInplbi1ncmlkLWNvbnRhaW5lcigpJ3MgJGNvbnRleHQgY2Fubm90IGJlIHNldCB0bzogZmxvdy1pdGVtLiBJdCBoYXMgYmVlbiBzZXQgdG86IGZsb3cuXCI7XG4gICAgJGNvbnRleHQ6IGZsb3c7XG4gIH1cbiAgQGVsc2UgaWYgJGNvbnRleHQgPT0gZ3JpZCB7XG4gICAgQHdhcm4gXCJ6ZW4tZ3JpZC1jb250YWluZXIoKSdzICRjb250ZXh0IGNhbm5vdCBiZSBzZXQgdG86IGdyaWQuIEl0IGhhcyBiZWVuIHNldCB0bzogZ3JpZC1pdGVtLlwiO1xuICAgICRjb250ZXh0OiBncmlkLWl0ZW07XG4gIH1cblxuICAvLyBAVE9ETzogVGhpcyBpcyBhIHByZS1JRTggbGluZSBvZiBjb2RlOyBkb24ndCByZW1lbWJlciB3aHkgaXRzIG5lZWRlZC5cbiAgQGlmIHplbi1zdXBwb3J0LWZvci1pZSg3KSB7XG4gICAgKnBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC8vIFdlIHVzZSB0aGUgXCJtaWNybyBjbGVhcmZpeFwiLCBvcHRpbWl6ZWQgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgJi5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuICBAaWYgemVuLXN1cHBvcnQtZm9yLWllKDcpIHtcbiAgICAqem9vbTogMTtcbiAgfVxuXG4gIC8vIFVuLWRvIHRoZSBndXR0ZXIgcGFkZGluZyBvZiB0aGUgcGFyZW50IGdyaWQgaXRlbS5cbiAgQGlmICRjb250ZXh0ID09IGZsb3cgYW5kICRndXR0ZXItbWV0aG9kID09IHBhZGRpbmcge1xuICAgIG1hcmdpbjoge1xuICAgICAgbGVmdDogLSh6ZW4taGFsZi1ndXR0ZXIoJGd1dHRlcnMsIGxlZnQsICRkaXIpKTtcbiAgICAgIHJpZ2h0OiAtKHplbi1oYWxmLWd1dHRlcigkZ3V0dGVycywgcmlnaHQsICRkaXIpKTtcbiAgICB9XG5cbiAgICAvLyBJZiAkZ3V0dGVycyBpcyBhbiBvZGQgbnVtYmVyIG9mIHBpeGVscywgd2UgbmVlZCBzcGVjaWFsIFJUTCBoYW5kbGluZy5cbiAgICBAaWYgemVuLWhhbGYtZ3V0dGVyKCRndXR0ZXJzLCBsZWZ0LCAkZGlyKSAhPSB6ZW4taGFsZi1ndXR0ZXIoJGd1dHRlcnMsIHJpZ2h0LCAkZGlyKSB7XG4gICAgICBAaW5jbHVkZSB6ZW4tcnRsKCRydGwtc2VsZWN0b3IpIHtcbiAgICAgICAgbWFyZ2luOiB7XG4gICAgICAgICAgbGVmdDogLSh6ZW4taGFsZi1ndXR0ZXIoJGd1dHRlcnMsIHJpZ2h0LCAkZGlyKSk7XG4gICAgICAgICAgcmlnaHQ6IC0oemVuLWhhbGYtZ3V0dGVyKCRndXR0ZXJzLCBsZWZ0LCAkZGlyKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQcmV2ZW50IGFueSBwYWRkaW5nIGZyb20gbWVzc2luZyB1cCB0aGUgYWxpZ25tZW50IG9mIHRoZSBuZXN0ZWQgZ3JpZC5cbiAgQGlmICRjb250ZXh0ID09IGdyaWQtaXRlbSBvciAkY29udGV4dCA9PSBmbG93IHtcbiAgICAvLyBDb3B5IG9mIHVuZG8temVuLWFwcGx5LWd1dHRlci1wYWRkaW5nKClcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgfVxuICB9XG59XG5cbi8vIHplbi1ncmlkLWl0ZW0oKVxuLy9cbi8vIEFwcGx5IHRoaXMgdG8gZWFjaCBncmlkIGl0ZW0uIFNldCB0aGUgYCRjb2x1bW4tc3BhbmAgdG8gdGhlIG51bWJlciBvZiBjb2x1bW5zIHRoYXQgdGhlIGdyaWQgaXRlbSBzcGFucy4gQW5kIHNldCB0aGUgYCRjb2x1bW4tcG9zaXRpb25gIHRvIHRoZSBjb2x1bW4gbnVtYmVyIHRoZSBncmlkIGl0ZW0gc3RhcnRzIG9uLlxuLy9cbi8vIFRvIG1ha2UgdGhlIGdyaWQgaXRlbSBmbG9hdCBmcm9tIHRoZSByaWdodCwgc2V0IHRoZSBgJGRpcmVjdGlvbmAgdG8gYHJpZ2h0YDsgaXQgZGVmYXVsdHMgdG8gYGxlZnRgICh0aGUgdmFsdWUgb2YgYCR6ZW4tZGlyZWN0aW9uYC4pIEZvciBncmlkIGl0ZW1zIHRoYXQgYXJlIGZsb2F0ZWQgcmlnaHQsIHRoZSBgJGNvbHVtbi1wb3NpdGlvbmAgaXMgY291bnRlZCBmcm9tIHRoZSByaWdodCBpbnN0ZWFkIG9mIGZyb20gdGhlIGxlZnQuXG4vL1xuLy8gQ29tbW9uIHVzYWdlOlxuLy8gYGBgXG4vLyAvLyBUaGUgZ3JpZCBpdGVtIHNwYW5zIDIgY29sdW1ucyBzdGFydGluZyBmcm9tIHRoZSAzcmQgY29sdW1uIGZyb20gdGhlIGxlZnQsXG4vLyAvLyBlLmcuIEl0IHNwYW5zIGNvbHVtbnMgMyBhbmQgNCBjb3VudGluZyBmcm9tIHRoZSBsZWZ0LlxuLy8gQGluY2x1ZGUgemVuLWdyaWQtaXRlbSgkY29sdW1uLXNwYW46IDIsICRjb2x1bW4tcG9zaXRpb246IDMpO1xuLy8gYGBgXG4vLyBvcjpcbi8vIGBgYFxuLy8gLy8gVGhlIGdyaWQgaXRlbSBzcGFucyAyIGNvbHVtbnMgc3RhcnRpbmcgZnJvbSB0aGUgM3JkIGNvbHVtbiBmcm9tIHRoZSByaWdodCxcbi8vIC8vIGUuZy4gSXQgc3BhbnMgY29sdW1ucyAzIGFuZCA0IGNvdW50aW5nIGZyb20gdGhlIHJpZ2h0LlxuLy8gQGluY2x1ZGUgemVuLWdyaWQtaXRlbSgyLCAzLCByaWdodCk7XG4vLyBgYGBcbi8vXG4vLyAkY29sdW1uLXNwYW4gICAgICAgIC0gUmVxdWlyZWQuIFRoZSBudW1iZXIgb2YgY29sdW1ucyB0aGUgZ3JpZCBpdGVtIHdpbGwgc3Bhbi5cbi8vICRjb2x1bW4tcG9zaXRpb24gICAgLSBSZXF1aXJlZC4gVGhlIGNvbHVtbiBudW1iZXIgdGhlIGdyaWQgaXRlbSBzdGFydHMgb24uXG4vLyAkZGlyZWN0aW9uICAgICAgICAgID0gJHplbi1kaXJlY3Rpb24gLSBUaGUgZmxvYXRpbmcgZGlyZWN0aW9uIHRvIHVzZSBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWRpcmVjdGlvbmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tZGlyZWN0aW9uKS5cbi8vICRndXR0ZXJzICAgICAgICAgICAgPSAkemVuLWd1dHRlcnMgLSBUaGUgd2lkdGggb2YgdGhlIGd1dHRlcnMgZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXJzYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlcnMpLlxuLy8gJGd1dHRlci1tZXRob2QgICAgICA9ICR6ZW4tZ3V0dGVyLW1ldGhvZCAtIFRoZSBndXR0ZXIgbWV0aG9kIHRvIHVzZSBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVyLW1ldGhvZCkuXG4vLyAkYm94LXNpemluZyAgICAgICAgID0gJHplbi1ib3gtc2l6aW5nIC0gVGhlIGJveCBzaXppbmcgdG8gdXNlIGZvciB0aGlzIGdyaWQgaXRlbS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tYm94LXNpemluZ2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1ib3gtc2l6aW5nKS5cbi8vICRzd2l0Y2gtZGlyZWN0aW9uICAgPSAkemVuLXN3aXRjaC1kaXJlY3Rpb24gLSBXaGV0aGVyIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBkaXJlY3Rpb24gZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1zd2l0Y2gtZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1zd2l0Y2gtZGlyZWN0aW9uKS5cbi8vICRydGwtc2VsZWN0b3IgICAgICAgPSAkemVuLXJ0bC1zZWxlY3RvciAtIFRoZSBSVEwgc2VsZWN0b3IgZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ydGwtc2VsZWN0b3JgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXJ0bC1zZWxlY3RvcikuXG4vLyAkaW5jbHVkZS1iYXNlICAgICAgID0gJHplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UgLSBXaGV0aGVyIHRvIGF1dG8taW5jbHVkZSB0aGUgemVuLWdyaWQtaXRlbS1iYXNlKCkgbWl4aW4uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWF1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZWBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UpLlxuLy9cbi8vIFN0eWxlIGd1aWRlOiBncmlkcy56ZW4tZ3JpZC1pdGVtXG5AbWl4aW4gemVuLWdyaWQtaXRlbShcbiAgJGNvbHVtbi1zcGFuLFxuICAkY29sdW1uLXBvc2l0aW9uLFxuICAkZGlyZWN0aW9uICAgICAgICAgIDogJHplbi1kaXJlY3Rpb24sXG4gICRjb2x1bW5zICAgICAgICAgICAgOiAkemVuLWNvbHVtbnMsXG4gICRndXR0ZXJzICAgICAgICAgICAgOiAkemVuLWd1dHRlcnMsXG4gICRndXR0ZXItbWV0aG9kICAgICAgOiAkemVuLWd1dHRlci1tZXRob2QsXG4gICRncmlkLXdpZHRoICAgICAgICAgOiAkemVuLWdyaWQtd2lkdGgsXG4gICRib3gtc2l6aW5nICAgICAgICAgOiAkemVuLWJveC1zaXppbmcsXG4gICRzd2l0Y2gtZGlyZWN0aW9uICAgOiAkemVuLXN3aXRjaC1kaXJlY3Rpb24sXG4gICRydGwtc2VsZWN0b3IgICAgICAgOiAkemVuLXJ0bC1zZWxlY3RvcixcbiAgJGluY2x1ZGUtYmFzZSAgICAgICA6ICR6ZW4tYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlXG4pIHtcblxuICAvLyBDYWxjdWxhdGUgdGhlIHVuaXQgd2lkdGguXG4gICR1bml0LXdpZHRoOiB6ZW4tdW5pdC13aWR0aCgkY29sdW1ucywgJGd1dHRlcnMsICRndXR0ZXItbWV0aG9kLCAkZ3JpZC13aWR0aCk7XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBpdGVtJ3Mgd2lkdGguXG4gICR3aWR0aDogemVuLWdyaWQtaXRlbS13aWR0aCgkY29sdW1uLXNwYW4sICRjb2x1bW5zLCAkZ3V0dGVycywgJGd1dHRlci1tZXRob2QsICRncmlkLXdpZHRoLCAkYm94LXNpemluZyk7XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBtYXJnaW4gZnJvbSB0aGUgY29udGFpbmVyJ3MgZWRnZS5cbiAgJG1hcmdpbjogKCRjb2x1bW4tcG9zaXRpb24gLSAxKSAqICR1bml0LXdpZHRoO1xuICBAaWYgJGd1dHRlci1tZXRob2QgPT0gbWFyZ2luIHtcbiAgICAkbWFyZ2luOiAkbWFyZ2luICsgKGZsb29yKCRjb2x1bW4tcG9zaXRpb24pIC0gMSkgKiAkZ3V0dGVycztcbiAgfVxuXG4gIC8vIERldGVybWluZSB0aGUgZmxvYXQgZGlyZWN0aW9uIGFuZCBpdHMgcmV2ZXJzZS5cbiAgJGRpcjogJGRpcmVjdGlvbjtcbiAgQGlmICRzd2l0Y2gtZGlyZWN0aW9uIHtcbiAgICAkZGlyOiB6ZW4tZGlyZWN0aW9uLXN3aXRjaCgkZGlyKTtcbiAgfVxuICAkcmV2OiB6ZW4tZGlyZWN0aW9uLXN3aXRjaCgkZGlyKTtcblxuICBmbG9hdDogJGRpcjtcbiAgd2lkdGg6ICR3aWR0aDtcbiAgbWFyZ2luOiB7XG4gICAgI3skZGlyfTogJG1hcmdpbjtcbiAgICAjeyRyZXZ9OiAtMTAwJTtcbiAgfVxuICBAaWYgemVuLXN1cHBvcnQtZm9yLWllKDcpIHtcbiAgICAvLyBAVE9ETzogVGhpcyBpbnRlcnBvbGF0aW9uIGZhaWxzIG9uIGxpYnNhc3MgMy4zLjA6ICptYXJnaW4tI3skcmV2fTogLTk5LjklO1xuICAgICN7JyptYXJnaW4tJyArICRyZXZ9OiAtOTkuOSU7XG4gIH1cbiAgQGluY2x1ZGUgemVuLXJ0bCgkcnRsLXNlbGVjdG9yKSB7XG4gICAgZmxvYXQ6ICRyZXY7XG4gICAgbWFyZ2luOiB7XG4gICAgICAjeyRyZXZ9OiAkbWFyZ2luO1xuICAgICAgI3skZGlyfTogLTEwMCU7XG4gICAgfVxuICAgIEBpZiB6ZW4tc3VwcG9ydC1mb3ItaWUoNykge1xuICAgICAgLy8gQFRPRE86IFRoaXMgaW50ZXJwb2xhdGlvbiBmYWlscyBvbiBsaWJzYXNzIDMuMy4wOiAqbWFyZ2luLSN7JHJldn06IC05OS45JTtcbiAgICAgICN7JyptYXJnaW4tJyArICRkaXJ9OiAtOTkuOSU7XG4gICAgfVxuICB9XG5cbiAgLy8gSW5jbHVkZSB0aGUgZ3JpZCBpdGVtIGJhc2UgbWl4aW4uXG4gIEBpZiAkaW5jbHVkZS1iYXNlIHtcbiAgICBAaW5jbHVkZSB6ZW4tZ3JpZC1pdGVtLWJhc2UoJGd1dHRlcnMsICRndXR0ZXItbWV0aG9kLCAkYm94LXNpemluZywgJGRpcmVjdGlvbiwgJHN3aXRjaC1kaXJlY3Rpb24sICRydGwtc2VsZWN0b3IpO1xuICB9XG4gIC8vIElmIHRoZSAkZ3V0dGVycyBwYXJhbWV0ZXIgaGFzIGJlZW4gdXNlZCwgc2V0IHRoZSBndXR0ZXJzIGV2ZW4gaWZcbiAgLy8gJGluY2x1ZGUtYmFzZSBpcyBmYWxzZS5cbiAgQGVsc2UgaWYgJGd1dHRlcnMgIT0gJHplbi1ndXR0ZXJzIGFuZCAkZ3V0dGVyLW1ldGhvZCA9PSBwYWRkaW5nIHtcbiAgICBAaW5jbHVkZSB6ZW4tYXBwbHktZ3V0dGVyLXBhZGRpbmcoJGd1dHRlcnMsICRkaXJlY3Rpb24sICRzd2l0Y2gtZGlyZWN0aW9uLCAkcnRsLXNlbGVjdG9yKTtcbiAgfVxufVxuXG4vLyB6ZW4tZ3JpZC1pdGVtLWJhc2UoKVxuLy9cbi8vIEFwcGxpZXMgYSBzdGFuZGFyZCBzZXQgb2YgcHJvcGVydGllcyBmb3IgZ3JpZCBpdGVtcyBpbiB0aGUgbGF5b3V0LlxuLy9cbi8vIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFtgJHplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2VgXSgja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlKSBhbmQgW2AkemVuLWF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZWBdKHNlY3Rpb24tZmxvdy5odG1sI2tzc3JlZi1mbG93LXZhcmlhYmxlcy16ZW4tYXV0by1pbmNsdWRlLWZsb3ctaXRlbS1iYXNlKSB2YXJpYWJsZXMgZm9yIHdoZW4gdG8gdXNlIHRoaXMgbWl4aW4uXG4vL1xuLy8gQ29tbW9uIHVzYWdlOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB6ZW4tZ3JpZC1pdGVtLWJhc2UoKTtcbi8vIGBgYFxuLy9cbi8vICRndXR0ZXJzICAgICAgICAgICAgPSAkemVuLWd1dHRlcnMgLSBUaGUgd2lkdGggb2YgdGhlIGd1dHRlcnMgZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXJzYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlcnMpLlxuLy8gJGd1dHRlci1tZXRob2QgICAgICA9ICR6ZW4tZ3V0dGVyLW1ldGhvZCAtIFRoZSBndXR0ZXIgbWV0aG9kIHRvIHVzZSBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVyLW1ldGhvZCkuXG4vLyAkYm94LXNpemluZyAgICAgICAgID0gJHplbi1ib3gtc2l6aW5nIC0gVGhlIGJveCBzaXppbmcgdG8gdXNlIGZvciB0aGlzIGdyaWQgaXRlbS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tYm94LXNpemluZ2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1ib3gtc2l6aW5nKS5cbi8vICRkaXJlY3Rpb24gICAgICAgICAgPSAkemVuLWRpcmVjdGlvbiAtIFRoZSBmbG9hdGluZyBkaXJlY3Rpb24gdG8gdXNlIGZvciB0aGlzIGdyaWQgaXRlbS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1kaXJlY3Rpb24pLlxuLy8gJHN3aXRjaC1kaXJlY3Rpb24gICA9ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbiAtIFdoZXRoZXIgdG8gc3dpdGNoIHRoZSBkZWZhdWx0IGRpcmVjdGlvbiBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXN3aXRjaC1kaXJlY3Rpb25gXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXN3aXRjaC1kaXJlY3Rpb24pLlxuLy8gJHJ0bC1zZWxlY3RvciAgICAgICA9ICR6ZW4tcnRsLXNlbGVjdG9yIC0gVGhlIFJUTCBzZWxlY3RvciBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXJ0bC1zZWxlY3RvcmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tcnRsLXNlbGVjdG9yKS5cbi8vXG4vLyB3ZWlnaHQ6IDEwXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGdyaWRzLnplbi1ncmlkLWl0ZW0tYmFzZVxuQG1peGluIHplbi1ncmlkLWl0ZW0tYmFzZShcbiAgJGd1dHRlcnMgICAgICAgICAgICA6ICR6ZW4tZ3V0dGVycyxcbiAgJGd1dHRlci1tZXRob2QgICAgICA6ICR6ZW4tZ3V0dGVyLW1ldGhvZCxcbiAgJGJveC1zaXppbmcgICAgICAgICA6ICR6ZW4tYm94LXNpemluZyxcbiAgJGRpcmVjdGlvbiAgICAgICAgICA6ICR6ZW4tZGlyZWN0aW9uLFxuICAkc3dpdGNoLWRpcmVjdGlvbiAgIDogJHplbi1zd2l0Y2gtZGlyZWN0aW9uLFxuICAkcnRsLXNlbGVjdG9yICAgICAgIDogJHplbi1ydGwtc2VsZWN0b3Jcbikge1xuXG4gIC8vIFNwZWNpZnkgdGhlIHBhZGRpbmcgaWYgdGhlIGd1dHRlciBtZXRob2QgdXNlcyBwYWRkaW5nLlxuICBAaWYgJGd1dHRlci1tZXRob2QgPT0gcGFkZGluZyB7XG4gICAgQGluY2x1ZGUgemVuLWFwcGx5LWd1dHRlci1wYWRkaW5nKCRndXR0ZXJzLCAkZGlyZWN0aW9uLCAkc3dpdGNoLWRpcmVjdGlvbiwgJHJ0bC1zZWxlY3Rvcik7XG4gIH1cblxuICAvLyBTcGVjaWZ5IHRoZSBib3JkZXItYm94IHByb3BlcnRpZXMuXG4gIEBpZiAkYm94LXNpemluZyA9PSBib3JkZXItYm94IHtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgLy8gUHJldmVudCBsZWZ0L3JpZ2h0IGJvcmRlcnMgc2luY2UgdGhleSdsbCBicmVhayB0aGUgbGF5b3V0IHdpdGggY29udGVudC1ib3guXG4gIEBlbHNlIGlmICRib3gtc2l6aW5nID09IGNvbnRlbnQtYm94IHtcbiAgICBib3JkZXI6IHtcbiAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIEBpZiAkZ3V0dGVyLW1ldGhvZCA9PSBtYXJnaW4ge1xuICAgICAgcGFkZGluZzoge1xuICAgICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmIHplbi1zdXBwb3J0LWZvci1pZSg3KSB7XG4gICAgQGlmICRib3gtc2l6aW5nID09IGJvcmRlci1ib3ggYW5kICRib3gtc2l6aW5nLXBvbHlmaWxsLXBhdGggPT0gXCJcIiB7XG4gICAgICBAd2FybiAnU2V0dGluZyAkYm94LXNpemluZyB0byBib3JkZXItYm94IHdpbGwgZmFpbCBmb3IgSUUgNyBhbmQgZWFybGllciBiZWNhdXNlIHRoZSAkYm94LXNpemluZy1wb2x5ZmlsbC1wYXRoIGlzIGVtcHR5Lic7XG4gICAgfVxuICAgIEBpZiAkYm94LXNpemluZy1wb2x5ZmlsbC1wYXRoICE9IFwiXCIge1xuICAgICAgKmJlaGF2aW9yOiB1cmwoJGJveC1zaXppbmctcG9seWZpbGwtcGF0aCk7XG4gICAgfVxuICAgIEBpZiB6ZW4tc3VwcG9ydC1mb3ItaWUoNikge1xuICAgICAgLy8gRGlzcGxheSBpbmxpbmUgb3IgZG91YmxlIHlvdXIgZmxvYXRlZCBtYXJnaW4hXG4gICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWxcbiAgICAgIF9kaXNwbGF5OiBpbmxpbmU7XG4gICAgICAvLyBQcmV2ZW50IG92ZXJmbG93aW5nIGNvbnRlbnQgZnJvbSBicmVha2luZyB0aGUgbGF5b3V0LlxuICAgICAgX292ZXJmbG93OiBoaWRkZW47XG4gICAgICAvLyBJbiBJRTYsIG92ZXJmbG93IHZpc2libGUgaXMgYnJva2VuLlxuICAgICAgLy8gQHNlZSBodHRwOi8vd3d3Lmhvd3RvY3JlYXRlLmNvLnVrL3dyb25nV2l0aElFLz9jaGFwdGVyPW92ZXJmbG93JTNBdmlzaWJsZSUzQlxuICAgICAgX292ZXJmbG93LXk6IHZpc2libGU7XG4gICAgfVxuICAgIC8vIFByZXZlbnQgb3ZlcmZsb3dpbmcgY29udGVudCBmcm9tIGJlaW5nIGhpZGRlbiBiZW5lYXRoIG90aGVyIGdyaWQgaXRlbXMuXG4gICAgKndvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgfVxufVxuXG4vLyB6ZW4tbmV3LXJvdygpXG4vL1xuLy8gQXBwbHkgdGhpcyB0byBhIGdyaWQgaXRlbSBzbyB0aGF0IGl0IHN0YXJ0cyBhIG5ldyByb3cuXG4vL1xuLy8gQ29tbW9uIHVzYWdlOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB6ZW4tbmV3LXJvdygpO1xuLy8gYGBgXG4vLyBvcjpcbi8vIGBgYFxuLy8gQGluY2x1ZGUgemVuLW5ldy1yb3cocmlnaHQpO1xuLy8gYGBgXG4vL1xuLy8gJGNsZWFyICAgICAgICAgICAgID0gJHplbi1kaXJlY3Rpb24gLSBUaGUgZmxvYXRpbmcgZGlyZWN0aW9uIHRvIHVzZSBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWRpcmVjdGlvbmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tZGlyZWN0aW9uKS5cbi8vICRzd2l0Y2gtZGlyZWN0aW9uICA9ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbiAtIFdoZXRoZXIgdG8gc3dpdGNoIHRoZSBkZWZhdWx0IGRpcmVjdGlvbiBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXN3aXRjaC1kaXJlY3Rpb25gXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXN3aXRjaC1kaXJlY3Rpb24pLlxuLy8gJHJ0bC1zZWxlY3RvciAgICAgID0gJHplbi1ydGwtc2VsZWN0b3IgLSBUaGUgUlRMIHNlbGVjdG9yIGZvciB0aGlzIGdyaWQgaXRlbS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tcnRsLXNlbGVjdG9yYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1ydGwtc2VsZWN0b3IpLlxuLy9cbi8vIFN0eWxlIGd1aWRlOiBncmlkcy56ZW4tbmV3LXJvd1xuQG1peGluIHplbi1uZXctcm93KFxuICAkY2xlYXIgICAgICAgICAgICAgIDogJHplbi1kaXJlY3Rpb24sXG4gICRzd2l0Y2gtZGlyZWN0aW9uICAgOiAkemVuLXN3aXRjaC1kaXJlY3Rpb24sXG4gICRydGwtc2VsZWN0b3IgICAgICAgOiAkemVuLXJ0bC1zZWxlY3RvclxuKSB7XG4gIC8vIERldGVybWluZSB0aGUgY2xlYXJpbmcgZGlyZWN0aW9uLlxuICBAaWYgJHN3aXRjaC1kaXJlY3Rpb24ge1xuICAgICRjbGVhcjogemVuLWRpcmVjdGlvbi1zd2l0Y2goJGNsZWFyKTtcbiAgfVxuICBjbGVhcjogJGNsZWFyO1xuXG4gIEBpZiAkY2xlYXIgPT0gbGVmdCBvciAkY2xlYXIgPT0gcmlnaHQge1xuICAgIEBpbmNsdWRlIHplbi1ydGwoJHJ0bC1zZWxlY3Rvcikge1xuICAgICAgY2xlYXI6IHplbi1kaXJlY3Rpb24tc3dpdGNoKCRjbGVhcik7XG4gICAgfVxuICB9XG59XG5cbi8vIHplbi1hcHBseS1ndXR0ZXItcGFkZGluZygpXG4vL1xuLy8gQXBwbGllcyB0aGUgZ3V0dGVyIHRvIGEgZ3JpZCBpdGVtIHdoZW4gdXNpbmcgdGhlIHBhZGRpbmcgZ3V0dGVyIG1ldGhvZC5cbi8vXG4vLyBDb21tb24gdXNhZ2U6XG4vLyBgYGBcbi8vIEBpbmNsdWRlIHplbi1hcHBseS1ndXR0ZXItcGFkZGluZygpO1xuLy8gYGBgXG4vL1xuLy8gJGd1dHRlcnMgICAgICAgICAgID0gJHplbi1ndXR0ZXJzIC0gVGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXJzYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlcnMpLlxuLy8gJGRpcmVjdGlvbiAgICAgICAgID0gJHplbi1kaXJlY3Rpb24gLSBUaGUgZmxvYXRpbmcgZGlyZWN0aW9uIHRvIHVzZS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1kaXJlY3Rpb24pLlxuLy8gJHN3aXRjaC1kaXJlY3Rpb24gID0gJHplbi1zd2l0Y2gtZGlyZWN0aW9uIC0gV2hldGhlciB0byBzd2l0Y2ggdGhlIGRlZmF1bHQgZGlyZWN0aW9uLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1zd2l0Y2gtZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1zd2l0Y2gtZGlyZWN0aW9uKS5cbi8vICRydGwtc2VsZWN0b3IgICAgICA9ICR6ZW4tcnRsLXNlbGVjdG9yIC0gVGhlIFJUTCBzZWxlY3Rvci4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tcnRsLXNlbGVjdG9yYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1ydGwtc2VsZWN0b3IpLlxuLy9cbi8vIHdlaWdodDogMzBcbi8vXG4vLyBTdHlsZSBndWlkZTogZ3JpZHMuemVuLWFwcGx5LWd1dHRlci1wYWRkaW5nXG5AbWl4aW4gemVuLWFwcGx5LWd1dHRlci1wYWRkaW5nKFxuICAkZ3V0dGVycyAgICAgICAgICAgIDogJHplbi1ndXR0ZXJzLFxuICAkZGlyZWN0aW9uICAgICAgICAgIDogJHplbi1kaXJlY3Rpb24sXG4gICRzd2l0Y2gtZGlyZWN0aW9uICAgOiAkemVuLXN3aXRjaC1kaXJlY3Rpb24sXG4gICRydGwtc2VsZWN0b3IgICAgICAgOiAkemVuLXJ0bC1zZWxlY3RvclxuKSB7XG5cbiAgJGRpcjogJGRpcmVjdGlvbjtcbiAgQGlmICRzd2l0Y2gtZGlyZWN0aW9uIHtcbiAgICAkZGlyOiB6ZW4tZGlyZWN0aW9uLXN3aXRjaCgkZGlyKTtcbiAgfVxuXG4gIHBhZGRpbmc6IHtcbiAgICBsZWZ0OiB6ZW4taGFsZi1ndXR0ZXIoJGd1dHRlcnMsIGxlZnQsICRkaXIpO1xuICAgIHJpZ2h0OiB6ZW4taGFsZi1ndXR0ZXIoJGd1dHRlcnMsIHJpZ2h0LCAkZGlyKTtcbiAgfVxuXG4gIC8vIElmICRndXR0ZXJzIGlzIGFuIG9kZCBudW1iZXIgb2YgcGl4ZWxzLCB3ZSBuZWVkIHNwZWNpYWwgUlRMIGhhbmRsaW5nLlxuICBAaWYgemVuLWhhbGYtZ3V0dGVyKCRndXR0ZXJzLCBsZWZ0LCAkZGlyKSAhPSB6ZW4taGFsZi1ndXR0ZXIoJGd1dHRlcnMsIHJpZ2h0LCAkZGlyKSB7XG4gICAgQGluY2x1ZGUgemVuLXJ0bCgkcnRsLXNlbGVjdG9yKSB7XG4gICAgICBwYWRkaW5nOiB7XG4gICAgICAgIGxlZnQ6IHplbi1oYWxmLWd1dHRlcigkZ3V0dGVycywgcmlnaHQsICRkaXIpO1xuICAgICAgICByaWdodDogemVuLWhhbGYtZ3V0dGVyKCRndXR0ZXJzLCBsZWZ0LCAkZGlyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBWYXJpYWJsZXMgbW9kdWxlIGZvciB0aGUgWmVuIEdyaWRzIHN5c3RlbTsgYXV0by1pbXBvcnRlZCBieSBvdGhlciBtb2R1bGVzLlxuLy9cblxuXG5cbi8vXG4vLyBHcmlkcyBNb2R1bGVcbi8vXG5cbi8vIENvbmZpZ3VyYWJsZSB2YXJpYWJsZXNcbi8vXG4vLyBaZW4gR3JpZHMgY29tZXMgd2l0aCBzZXZlcmFsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgYWZmZWN0IHdoYXQgQ1NTIGl0cyBtaXhpbnMgYW5kIGZ1bmN0aW9ucyBvdXRwdXQuIFRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGVzZSB2YXJpYWJsZXMgYXJlIGFsbCBzZXQgdXNpbmcgdGhlIOKAnGd1YXJkZWQgYXNzaWdubWVudOKAnSBmbGFnLCBgIWRlZmF1bHRgLiBTbyB5b3UgY2FuIHNhZmVseSBzZXQgdGhvc2UgdmFsdWVzIGJlZm9yZSB5b3UgYEBpbXBvcnRgIFplbiBHcmlkcyBhbmQgeW91ciB2YWx1ZXMgd2lsbCBiZSByZXNwZWN0ZWQuXG4vL1xuLy8gd2VpZ2h0OiAtMTBcbi8vXG4vLyBTdHlsZSBndWlkZTogZ3JpZHMudmFyaWFibGVzXG5cbi8vICR6ZW4tY29sdW1uc1xuLy9cbi8vIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQuIERlZmF1bHRzIHRvIDEgYXMgYSBoYXQgdGlwIHRvIG1vYmlsZSBmaXJzdCBkZXNpZ25zLiBZb3Ugc2hvdWxkIHNldCB0aGlzIHZhcmlhYmxlIGVhY2ggdGltZSB5b3Ugd2FudCB0byB1c2UgYSBkaWZmZXJlbnQgZ3JpZCBmb3IgYSBzZXQgb2YgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBgYGBcbi8vICR6ZW4tY29sdW1uczogMSAhZGVmYXVsdDtcbi8vIGBgYFxuLy9cbi8vIHdlaWdodDogLTJcbi8vXG4vLyBTdHlsZSBndWlkZTogZ3JpZHMudmFyaWFibGVzLnplbi1jb2x1bW5zXG4kemVuLWNvbHVtbnM6IDEgIWRlZmF1bHQ7XG5cbi8vICR6ZW4tZ3V0dGVyc1xuLy9cbi8vIFNwZWNpZmllcyB0aGUgd2lkdGggb2YgZWFjaCBndXR0ZXIsIHRoZSBob3Jpem9udGFsIHNwYWNlIGJldHdlZW4gdHdvIGFkamFjZW50IGdyaWQgaXRlbXMuXG4vL1xuLy8gRm9yIGEgc2Vuc2Ugb2YgYWVzdGhldGljcywgd2Ugc3VnZ2VzdCB0aGlzIHZhbHVlIGNvdWxkIGJlIHByb3BvcnRpb25hbCB0byB5b3VyIGJhc2UgZm9udCBieSBzZXR0aW5nIGAkemVuLWd1dHRlcnNgIGVxdWFsIHRvIGEgbXVsdGlwbGUgb2YgeW91ciBiYXNlIGxpbmUgaGVpZ2h0LlxuLy9cbi8vIElmIHRoZSBbYCR6ZW4tZ3V0dGVyLW1ldGhvZGBdKCN6ZW4tZ3V0dGVyLW1ldGhvZCkgaXMgc2V0IHRvIGBtYXJnaW5gLCB0aGUgdW5pdCBvZiBtZWFzdXJlbWVudCBvZiB0aGUgZ3V0dGVycyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHVuaXQgb2YgbWVhc3VyZW1lbnQgb2YgdGhlIFtgJHplbi1ncmlkLXdpZHRoYF0oI3plbi1ncmlkLXdpZHRoKSwgZS5nLiBpZiBgJHplbi1ncmlkLXdpZHRoOiAxMDAlYCwgdGhlbiBgJHplbi1ndXR0ZXJzYCBzaG91bGQgYWxzbyBiZSBtZWFzdXJlZCBpbiBgJWAuXG4vL1xuLy8gYGBgXG4vLyAkemVuLWd1dHRlcnM6IDIwcHggIWRlZmF1bHQ7XG4vLyBgYGBcbi8vXG4vLyB3ZWlnaHQ6IC0yXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGdyaWRzLnZhcmlhYmxlcy56ZW4tZ3V0dGVyc1xuJHplbi1ndXR0ZXJzOiAyMHB4ICFkZWZhdWx0O1xuXG4vLyAkemVuLWd1dHRlci1tZXRob2Rcbi8vXG4vLyBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgZ3V0dGVycyB1c2VkIGZvciB0aGUgZ3JpZCwgY2FuIGJlIHNldCB0byBgcGFkZGluZ2AgKHRoZSBkZWZhdWx0KSBvciBgbWFyZ2luYC5cbi8vIElmIHRoZSDigJxwYWRkaW5n4oCdIGd1dHRlciBtZXRob2QgaXMgY2hvc2VuLCBoYWxmIG9mIHRoZSBndXR0ZXIgd2lsbCBiZSBwbGFjZWQgb24gZWFjaCBzaWRlIG9mIGEgZ3JpZCBpdGVtIChhcyBwYWRkaW5nKS4gVGhpcyBtZWFucyB0aGVyZSB3aWxsIGJlIGEgZnVsbCBndXR0ZXIgYmV0d2VlbiB0aGUgY29udGVudCBvZiBhZGphY2VudCBncmlkIGl0ZW1zIGFuZCBoYWxmIG9mIGEgZ3V0dGVyIG9uIGVhY2ggZWRnZSBvZiB0aGUgZ3JpZC5cbi8vXG4vLyA8ZmlndXJlIGNsYXNzPVwiZXgtZ3V0dGVyLW1ldGhvZCBleC1ndXR0ZXItbWV0aG9kLXBhZGRpbmdcIj5cbi8vICAgPGRpdiBjbGFzcz1cImV4LWd1dHRlci1tZXRob2RfX2NvbnRhaW5lclwiPlxuLy8gICAgIDxkaXYgY2xhc3M9XCJleC1ndXR0ZXItbWV0aG9kX19jb250ZW50IGV4LWd1dHRlci1tZXRob2RfX2NvbnRlbnQtMVwiPlxuLy8gICAgICAgPHA+QSBncmlkIGl0ZW0uPC9wPlxuLy8gICAgIDwvZGl2PlxuLy8gICAgIDxkaXYgY2xhc3M9XCJleC1ndXR0ZXItbWV0aG9kX19jb250ZW50IGV4LWd1dHRlci1tZXRob2RfX2NvbnRlbnQtMlwiPlxuLy8gICAgICAgPHA+QSBncmlkIGl0ZW0uPC9wPlxuLy8gICAgIDwvZGl2PlxuLy8gICAgIDxkaXYgY2xhc3M9XCJleC1ndXR0ZXItbWV0aG9kX19jb250ZW50IGV4LWd1dHRlci1tZXRob2RfX2NvbnRlbnQtM1wiPlxuLy8gICAgICAgPHA+QSBncmlkIGl0ZW0uPC9wPlxuLy8gICAgIDwvZGl2PlxuLy8gICA8L2Rpdj5cbi8vIDwvZmlndXJlPlxuLy9cbi8vIElmIHRoZSDigJxtYXJnaW7igJ0gZ3V0dGVyIG1ldGhvZCBpcyBjaG9zZW4sIGEgZnVsbCBndXR0ZXIgd2lsbCBiZSBwbGFjZWQgYmV0d2VlbiBlYWNoIGdyaWQgaXRlbSAoYXMgbWFyZ2luKSwgYnV0IG5vIGd1dHRlciB3aWxsIGJlIHBsYWNlZCBvbiBlYWNoIGVkZ2Ugb2YgdGhlIGdyaWQuXG4vL1xuLy8gPGZpZ3VyZSBjbGFzcz1cImV4LWd1dHRlci1tZXRob2QgZXgtZ3V0dGVyLW1ldGhvZC1tYXJnaW5cIj5cbi8vICAgPGRpdiBjbGFzcz1cImV4LWd1dHRlci1tZXRob2RfX2NvbnRhaW5lclwiPlxuLy8gICAgIDxkaXYgY2xhc3M9XCJleC1ndXR0ZXItbWV0aG9kX19jb250ZW50IGV4LWd1dHRlci1tZXRob2RfX2NvbnRlbnQtMVwiPlxuLy8gICAgICAgPHA+QSBncmlkIGl0ZW0uPC9wPlxuLy8gICAgIDwvZGl2PlxuLy8gICAgIDxkaXYgY2xhc3M9XCJleC1ndXR0ZXItbWV0aG9kX19jb250ZW50IGV4LWd1dHRlci1tZXRob2RfX2NvbnRlbnQtMlwiPlxuLy8gICAgICAgPHA+QSBncmlkIGl0ZW0uPC9wPlxuLy8gICAgIDwvZGl2PlxuLy8gICAgIDxkaXYgY2xhc3M9XCJleC1ndXR0ZXItbWV0aG9kX19jb250ZW50IGV4LWd1dHRlci1tZXRob2RfX2NvbnRlbnQtM1wiPlxuLy8gICAgICAgPHA+QSBncmlkIGl0ZW0uPC9wPlxuLy8gICAgIDwvZGl2PlxuLy8gICA8L2Rpdj5cbi8vIDwvZmlndXJlPlxuLy9cbi8vIE5vdGU6IHRoYXQgdGhlIOKAnG1hcmdpbuKAnSBndXR0ZXIgbWV0aG9kIHJlcXVpcmVzIHRoYXQgdGhlIGd1dHRlcnMgYW5kIHRoZSB3aWR0aCBvZiB0aGUgZ3JpZCBoYXZlIHRoZSBzYW1lIHVuaXQgb2YgbWVhc3VyZW1lbnQsIGUuZy4gYm90aCBiZSBtZWFzdXJlZCBpbiBgJWAgb3IgYm90aCBpbiBgcHhgLiBUaGlzIG1lYW5zIHRoYXQgYSBmbHVpZCwgcmVzcG9uc2l2ZSBsYXlvdXQgdXNpbmcgdGhlIOKAnG1hcmdpbuKAnSBndXR0ZXIgbWV0aG9kIHdpbGwgaGF2ZSBndXR0ZXJzIHRoYXQgYXJlIGAlYC1iYXNlZC4gVGhpcyBpcyB3aHkgdGhlIGRlZmF1bHQgZ3V0dGVyIG1ldGhvZCBpcyDigJxwYWRkaW5n4oCdOyB0aGUgZ3JpZCBjYW4gYmUgYCVgLWJhc2VkLCB3aGlsZSB0aGUgZ3V0dGVycyByZW1haW4gYSBmaXhlZCBtZWFzdXJlbWVudCAobGlrZSBgMjBweGAgb3IgYDUgZW1gKSBhdCBhbGwgdmlld3BvcnQgc2l6ZXMuXG4vL1xuLy8gYGBgXG4vLyAkemVuLWd1dHRlci1tZXRob2Q6IHBhZGRpbmcgIWRlZmF1bHQ7XG4vLyBgYGBcbi8vXG4vLyB3ZWlnaHQ6IC0xXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGdyaWRzLnZhcmlhYmxlcy56ZW4tZ3V0dGVyLW1ldGhvZFxuJHplbi1ndXR0ZXItbWV0aG9kOiBwYWRkaW5nICFkZWZhdWx0O1xuXG4vLyAkemVuLWF1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZVxuLy9cbi8vIFlvdSBjYW4gZ2VuZXJhdGUgbW9yZSBlZmZpY2llbnQgQ1NTIGlmIHlvdSBzZXQgdGhpcyB0byBgZmFsc2VgIGFuZCBtYW51YWxseSBhcHBseSB0aGUgW2B6ZW4tZ3JpZC1pdGVtLWJhc2UoKWBdKCN6ZW4tZ3JpZC1pdGVtLWJhc2UpIG1peGluIHRvIGFsbCBncmlkIGl0ZW1zIChhbmQgZmxvdyBpdGVtcykgZnJvbSB3aXRoaW4gYSBzaW5nbGUgcnVsZXNldC5cbi8vXG4vLyBgYGBcbi8vICR6ZW4tYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlOiB0cnVlICFkZWZhdWx0O1xuLy8gYGBgXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGdyaWRzLnZhcmlhYmxlcy56ZW4tYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlXG4kemVuLWF1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gJHplbi1ib3gtc2l6aW5nXG4vL1xuLy8gU3BlY2lmeSB0aGUgQ1NTMyBib3gtc2l6aW5nIG1ldGhvZC4gVGhlIGRlZmF1bHQsIFwiYm9yZGVyLWJveFwiLCBpcyBjb21wYXRpYmxlIHdpdGggYWxsIG1vZGVybiBicm93c2VycywgaW5jbHVkaW5nIElFIDggYW5kIGxhdGVyLlxuLy9cbi8vIFNvbWUgZGV2ZWxvcGVycyB1c2UgYSB1bml2ZXJzYWwgc2VsZWN0b3IgdG8gYXBwbHkgQ1NT4oCZcyDigJxib3JkZXItYm944oCdIGJveCBzaXppbmcgdG8gYWxsIGVsZW1lbnRzLiBQYXVsIElyaXNoIGRlc2NyaWJlcyB0aGlzIG1ldGhvZCBpbiBtb3JlIGRldGFpbCBpbiBoaXMgYmxvZyBwb3N0IOKAnFsqIHsgQm94LXNpemluZzogQm9yZGVyLWJveCB9IEZUV10oaHR0cDovL3d3dy5wYXVsaXJpc2guY29tLzIwMTIvYm94LXNpemluZy1ib3JkZXItYm94LWZ0dy8p4oCdLiBTaW5jZSBaZW4gR3JpZHMgd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCBgYm94LXNpemluZzogYm9yZGVyLWJveDtgIHRvIHRob3NlIGVsZW1lbnRzIHRoYXQgbmVlZCBpdCwgeW91IGNhbiBwcmV2ZW50IGl0IGZyb20gb3V0cHV0dGluZyByZWR1bmRhbnQgYGJveC1zaXppbmdgIHByb3BlcnRpZXMgYnkgc2V0dGluZyBgJHplbi1ib3gtc2l6aW5nYCB0byBgdW5pdmVyc2FsLWJvcmRlci1ib3hgLlxuLy9cbi8vIFRvIGFkZCBJRTYgYW5kIElFNyBzdXBwb3J0LCB5b3XigJlsbCBuZWVkIHRvIHNldCBbYCRzdXBwb3J0LWZvcmBdKCNzdXBwb3J0LWZvcikgdG8gYChpZTogNilgIGFuZCB0aGVuIGVpdGhlciB1c2UgYSBwb2x5ZmlsbCAoc2VlIFtgJGJveC1zaXppbmctcG9seWZpbGwtcGF0aGBdKCNib3gtc2l6aW5nLXBvbHlmaWxsLXBhdGgpKSBvciBzZXQgYCR6ZW4tYm94LXNpemluZ2AgdG8gXCJjb250ZW50LWJveFwiLlxuLy9cbi8vIE5vdGU6IGlmIGAkemVuLWJveC1zaXppbmdgIGlzIHNldCB0byBcImNvbnRlbnQtYm94XCIsIHRoZW4gW2AkemVuLWd1dHRlcnNgXSgjemVuLWd1dHRlcnMpIHdpbGwgbmVlZCB0byB1c2UgdGhlIHNhbWUgdW5pdCBvZiBtZWFzdXJlbWVudCBhcyB0aGUgW2AkemVuLWdyaWQtd2lkdGhgXSgjemVuLWdyaWQtd2lkdGgpLlxuLy9cbi8vIGBgYFxuLy8gJHplbi1ib3gtc2l6aW5nOiBib3JkZXItYm94ICFkZWZhdWx0O1xuLy8gYGBgXG4vL1xuLy8gd2VpZ2h0OiAxXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGdyaWRzLnZhcmlhYmxlcy56ZW4tYm94LXNpemluZ1xuJHplbi1ib3gtc2l6aW5nOiBib3JkZXItYm94ICFkZWZhdWx0O1xuXG5cbi8vXG4vLyBHcmlkcyBNb2R1bGU6IGZpeGVkIHZhcmlhYmxlc1xuLy9cblxuLy8gQWRhcHRpdmUgb3IgZml4ZWQgZGVzaWduIHZhcmlhYmxlXG4vL1xuLy8gV2VpZ2h0OiAxMFxuLy9cbi8vIFN0eWxlIGd1aWRlOiBncmlkcy52YXJpYWJsZXMuZml4ZWRcblxuLy8gJHplbi1ncmlkLXdpZHRoXG4vL1xuLy8gU3BlY2lmeSB0aGUgd2lkdGggb2YgdGhlIGVudGlyZSBncmlkLiBEZWZhdWx0cyB0byBgMTAwJWAgZm9yIGEgZmx1aWQgcmVzcG9uc2l2ZSBkZXNpZ24sIGJ1dCB5b3UgY2FuIGNoYW5nZSB0aGlzIHRvIGFueSBmaXhlZCB2YWx1ZSAodXNpbmcgcHggb3IgZW0sIGV0Yy4pIGlmIHlvdSBuZWVkIGEgZml4ZWQgZ3JpZC5cbi8vXG4vLyBgYGBcbi8vICR6ZW4tZ3JpZC13aWR0aDogMTAwJSAhZGVmYXVsdDtcbi8vIGBgYFxuLy9cbi8vIFN0eWxlIGd1aWRlOiBncmlkcy52YXJpYWJsZXMuZml4ZWQuemVuLWdyaWQtd2lkdGhcbiR6ZW4tZ3JpZC13aWR0aDogMTAwJSAhZGVmYXVsdDtcblxuXG4vL1xuLy8gR3JpZHMgTW9kdWxlOiBydGwgdmFyaWFibGVzXG4vL1xuXG4vLyBSVEwgbGFuZ3VhZ2UgdmFyaWFibGVzXG4vL1xuLy8gV2VpZ2h0OiAxNVxuLy9cbi8vIFN0eWxlIGd1aWRlOiBncmlkcy52YXJpYWJsZXMucnRsXG5cbi8vICR6ZW4tZGlyZWN0aW9uXG4vL1xuLy8gU3BlY2lmeSB0aGUgZGVmYXVsdCBmbG9hdGluZyBkaXJlY3Rpb24gZm9yIHplbiBncmlkc+KAmSBtaXhpbnMuIElmIHlvdSBhcmUgb25seSBidWlsZGluZyBSVEwgbGF5b3V0cyAoYW5kIG5vdCBMVFIgbGF5b3V0cyksIHlvdSBzaG91bGQgc2V0IHRoaXMgdG8gYHJpZ2h0YC5cbi8vXG4vLyBgYGBcbi8vICR6ZW4tZGlyZWN0aW9uOiBsZWZ0ICFkZWZhdWx0O1xuLy8gYGBgXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGdyaWRzLnZhcmlhYmxlcy5ydGwuemVuLWRpcmVjdGlvblxuJHplbi1kaXJlY3Rpb246IGxlZnQgIWRlZmF1bHQ7XG5cbi8vICR6ZW4tcnRsLXNlbGVjdG9yXG4vL1xuLy8gSWYgeW91IHdpc2ggdG8gb3V0cHV0IGJvdGggTFRSIGxheW91dHMgYW5kIFJUTCBsYXlvdXRzIHNpbXVsdGFuZW91c2x5LCB5b3UgY2FuIHNwZWNpZnkgdGhlIHBhcmVudCBzZWxlY3RvciB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIHRyaWdnZXIgYW4gUlRMIG92ZXJyaWRlIGZvciBhbnkgb2YgWmVuIEdyaWRzJyBkaXJlY3Rpb24tc3BlY2lmaWMgQ1NTLlxuLy9cbi8vIEZvciBleGFtcGxlLCBzZXR0aW5nIHRoaXM6XG4vLyBgYGBcbi8vICR6ZW4tcnRsLXNlbGVjdG9yOiAnW2Rpcj1cInJ0bFwiXSc7XG4vLyBgYGBcbi8vXG4vLyBBZnRlciBidWlsZGluZyBhIGxheW91dCB3aXRoIFplbiBHcmlkcycgbWl4aW5zLCB0aGUgQ1NTIG91dHB1dCB3aWxsIGxvb2sgc2ltaWxhciB0byB0aGlzOlxuLy8gYGBgXG4vLyAubXktbGF5b3V0LWNvbHVtbiB7XG4vLyAgIG1hcmdpbi1sZWZ0OiAyMCU7XG4vLyAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4vLyB9XG4vLyBbZGlyPVwicnRsXCJdIC5teS1sYXlvdXQtY29sdW1uIHtcbi8vICAgbWFyZ2luLWxlZnQ6IC0xMDAlO1xuLy8gICBtYXJnaW4tcmlnaHQ6IDIwJTtcbi8vIH1cbi8vIGBgYFxuLy9cbi8vIGBgYFxuLy8gJHplbi1ydGwtc2VsZWN0b3I6IGZhbHNlICFkZWZhdWx0O1xuLy8gYGBgXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGdyaWRzLnZhcmlhYmxlcy5ydGwuemVuLXJ0bC1zZWxlY3RvclxuJHplbi1ydGwtc2VsZWN0b3I6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyAkemVuLXN3aXRjaC1kaXJlY3Rpb25cbi8vXG4vLyBSZXZlcnNlIHRoZSBmbG9hdGluZyBkaXJlY3Rpb24gaW4gYWxsIG9mIHplbiBncmlkc+KAmSBtaXhpbnMuXG4vL1xuLy8gSWYgeW91IGFyZSBjcmVhdGluZyBMVFIgYW5kIFJUTCBsYXlvdXRzIHRoYXQgYXJlIGluIHNlcGFyYXRlIHN0eWxlIHNoZWV0cywgdGhpcyBoZWxwZXIgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgb25lIHNldCBvZiBsYXlvdXRzIGJhc2VkIG9uIHRoZSBvdGhlciBzZXQgb2YgbGF5b3V0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gYGBgXG4vLyAkemVuLXN3aXRjaC1kaXJlY3Rpb246IHRydWU7XG4vLyBAaW1wb3J0IFwiYW4tTFRSLWxheW91dFwiO1xuLy8gYGBgXG4vL1xuLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSBleGlzdGluZyBMVFIgbGF5b3V0IGluIHRoZSBhbi1MVFItbGF5b3V0LnNjc3MgZmlsZSBpcyB1c2VkIHRvIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBSVEwgbGF5b3V0IGJ5IGZpcnN0IHNldHRpbmcgdGhlIGAkemVuLXN3aXRjaC1kaXJlY3Rpb25gIHZhcmlhYmxlIHRvIGB0cnVlYCBhbmQgdGhlbiBpbXBvcnRpbmcgdGhlIExUUiBsYXlvdXQgZmlsZS5cbi8vXG4vLyBgYGBcbi8vICR6ZW4tc3dpdGNoLWRpcmVjdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG4vLyBgYGBcbi8vXG4vLyBTdHlsZSBndWlkZTogZ3JpZHMudmFyaWFibGVzLnJ0bC56ZW4tc3dpdGNoLWRpcmVjdGlvblxuJHplbi1zd2l0Y2gtZGlyZWN0aW9uOiBmYWxzZSAhZGVmYXVsdDtcblxuXG4vL1xuLy8gR3JpZHMgTW9kdWxlOiBsZWdhY3kgSUUgdmFyaWFibGVzXG4vL1xuXG4vLyBMZWdhY3kgSUUgc3VwcG9ydCB2YXJpYWJsZXNcbi8vXG4vLyBJRSA2IGFuZCA3IHJlcXVpcmUgc3BlY2lhbCBDU1MgcHJvcGVydGllcyBpbiBvcmRlciBmb3IgWmVuIEdyaWRzIHRvIHdvcmsgd2l0aFxuLy8gc3VjaCBvbGQgYnJvd3NlcnMuXG4vL1xuLy8gSWYgeW91IG5lZWQgSUUgNi83IHN1cHBvcnQsIHlvdSB3aWxsIG5lZWQgdG8gaW5zdGFsbDpcbi8vXG4vLyAxLiBbc3VwcG9ydC1mb3JdKCkgU2FzcyBtb2R1bGVcbi8vIDIuIFtib3gtc2l6aW5nIHBvbHlmaWxsXShodHRwczovL2dpdGh1Yi5jb20vU2NoZXBwL2JveC1zaXppbmctcG9seWZpbGwpJ3MgYm94c2l6aW5nLmh0Y1xuLy9cbi8vIFdlaWdodDogMjBcbi8vXG4vLyBTdHlsZSBndWlkZTogZ3JpZHMudmFyaWFibGVzLmxlZ2FjeVxuXG4vLyAkYm94LXNpemluZy1wb2x5ZmlsbC1wYXRoXG4vL1xuLy8gVGhlIGJveC1zaXppbmcgcG9seWZpbGwgZm9yIElFIDYvNyByZXF1aXJlcyBhbiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBib3hzaXppbmcuaHRjIGZpbGUuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vU2NoZXBwL2JveC1zaXppbmctcG9seWZpbGxcbi8vXG4vLyBgYGBcbi8vICRib3gtc2l6aW5nLXBvbHlmaWxsLXBhdGg6ICcnICFkZWZhdWx0O1xuLy8gYGBgXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGdyaWRzLnZhcmlhYmxlcy5sZWdhY3kuYm94LXNpemluZy1wb2x5ZmlsbC1wYXRoXG4kYm94LXNpemluZy1wb2x5ZmlsbC1wYXRoOiAnJyAhZGVmYXVsdDtcblxuLy8gJHN1cHBvcnQtZm9yXG4vL1xuLy8gU3BlY2lmeSB0aGUgbWluaW11bSBicm93c2VyIHZlcnNpb25zIHRoYXQgbXVzdCBiZSBzdXBwb3J0ZWQuIEN1cnJlbnRseSwgWmVuIEdyaWRzIG9ubHkgdXNlcyB0aGUgYGllYCB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgYWRkaXRpb25hbCBDU1MgcHJvcGVydGllcyBhcmUgbmVlZGVkIGZvciBJRSA2IGFuZCBJRSA3IHN1cHBvcnQuIEZvciBleGFtcGxlLCB0byBhZGQgc3VwcG9ydCBmb3IgSUUgNywgc2V0IGAkc3VwcG9ydC1mb3I6IChpZTogNyk7YFxuLy9cbi8vIFRoaXMgdmFyaWFibGUgaXMgX29ubHlfIHVzZWQgaWYgdGhlIFtzdXBwb3J0LWZvcl0oaHR0cHM6Ly9naXRodWIuY29tL0pvaG5BbGJpbi9zdXBwb3J0LWZvcikgbW9kdWxlIGlzIGxvYWRlZCBpbnRvIHlvdXIgU2FzcyBzdHlsZSBzaGVldC4gT3RoZXJ3aXNlLCBsZWdhY3kgSUUgc3VwcG9ydCB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB5b3VyIGxheW91dHMuIFplbiBHcmlkcyBkb2VzIG5vdCByZXF1aXJlIHN1cHBvcnQtZm9yLCBidXQgd2lsbCB1c2UgaXQgaWYgYXZhaWxhYmxlLlxuLy9cbi8vIGBgYFxuLy8gJHN1cHBvcnQtZm9yOiAoXG4vLyAgIGNocm9tZTogIC00LFxuLy8gICBlZGdlOiAgICAtNCxcbi8vICAgZmlyZWZveDogLTQsXG4vLyAgIGllOiAgICAgIDksXG4vLyAgIG9wZXJhOiAgIC00LFxuLy8gICBzYWZhcmk6ICAtNCxcbi8vICAgJyonOiAgICAgLTQsXG4vLyApICFkZWZhdWx0O1xuLy8gYGBgXG4vL1xuLy8gV2VpZ2h0OiAtMVxuLy9cbi8vIFN0eWxlIGd1aWRlOiBncmlkcy52YXJpYWJsZXMubGVnYWN5LnN1cHBvcnQtZm9yXG5cblxuXG4vL1xuLy8gRmxvdyBtb2R1bGVcbi8vXG5cbi8vIENvbmZpZ3VyYWJsZSB2YXJpYWJsZXNcbi8vXG4vLyBaZW4gR3JpZHMgY29tZXMgd2l0aCBzZXZlcmFsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgYWZmZWN0IHdoYXQgQ1NTIGl0cyBtaXhpbnMgYW5kIGZ1bmN0aW9ucyBvdXRwdXQuIFRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGVzZSB2YXJpYWJsZXMgYXJlIGFsbCBzZXQgdXNpbmcgdGhlIOKAnGd1YXJkZWQgYXNzaWdubWVudOKAnSBmbGFnLCBgIWRlZmF1bHRgLiBTbyB5b3UgY2FuIHNhZmVseSBzZXQgdGhvc2UgdmFsdWVzIGJlZm9yZSB5b3UgYEBpbXBvcnRgIFplbiBHcmlkcyBhbmQgeW91ciB2YWx1ZXMgd2lsbCBiZSByZXNwZWN0ZWQuXG4vL1xuLy8gd2VpZ2h0OiAtMTBcbi8vXG4vLyBTdHlsZSBndWlkZTogZmxvdy52YXJpYWJsZXNcblxuLy8gJHplbi1hdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2Vcbi8vXG4vLyBUaGlzIHZhcmlhYmxlIHdvcmtzIHRoZSBzYW1lIGFzIFtgJHplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2VgXSguL3NlY3Rpb24tZ3JpZHMuaHRtbCN6ZW4tYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlKSwgZXhjZXB0IGl0IGlzIHVzZWQgZm9yIGZsb3cgaXRlbXMgaW5zdGVhZCBvZiBncmlkIGl0ZW1zLiBZb3UgY2FuIGdlbmVyYXRlIG1vcmUgZWZmaWNpZW50IENTUyBpZiB5b3Ugc2V0IHRoaXMgdG8gYGZhbHNlYCBhbmQgbWFudWFsbHkgYXBwbHkgdGhlIGB6ZW4tZ3JpZC1pdGVtLWJhc2UoKWAgbWl4aW4gdG8gYWxsIGZsb3cgaXRlbXMgZnJvbSB3aXRoaW4gYSBzaW5nbGUgcnVsZXNldC5cbi8vXG4vLyBgYGBcbi8vICR6ZW4tYXV0by1pbmNsdWRlLWZsb3ctaXRlbS1iYXNlOiB0cnVlICFkZWZhdWx0O1xuLy8gYGBgXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGZsb3cudmFyaWFibGVzLnplbi1hdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2VcbiR6ZW4tYXV0by1pbmNsdWRlLWZsb3ctaXRlbS1iYXNlOiB0cnVlICFkZWZhdWx0O1xuXG5cblxuLy9cbi8vIExheW91dCBNb2R1bGVcbi8vXG5cbi8vIENvbmZpZ3VyYWJsZSB2YXJpYWJsZXNcbi8vXG4vLyBaZW4gR3JpZHMgY29tZXMgd2l0aCBzZXZlcmFsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgYWZmZWN0IHdoYXQgQ1NTIGl0cyBtaXhpbnMgYW5kIGZ1bmN0aW9ucyBvdXRwdXQuIFRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGVzZSB2YXJpYWJsZXMgYXJlIGFsbCBzZXQgdXNpbmcgdGhlIOKAnGd1YXJkZWQgYXNzaWdubWVudOKAnSBmbGFnLCBgIWRlZmF1bHRgLiBTbyB5b3UgY2FuIHNhZmVseSBzZXQgdGhvc2UgdmFsdWVzIGJlZm9yZSB5b3UgYEBpbXBvcnRgIFplbiBHcmlkcyBhbmQgeW91ciB2YWx1ZXMgd2lsbCBiZSByZXNwZWN0ZWQuXG4vL1xuLy8gd2VpZ2h0OiAtMTBcbi8vXG4vLyBTdHlsZSBndWlkZTogbGF5b3V0LnZhcmlhYmxlc1xuXG4vLyAkemVuLWxheW91dHNcbi8vXG4vLyBBIG1hcCBvZiBsYXlvdXQgbmFtZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgcHJvcGVydGllcy4gQW55IHplbiBncmlkcyB2YXJpYWJsZSBuYW1lIGNhbiBiZSB1c2VkIGFzIGEgcHJvcGVydHkgb2YgYSBuYW1lZCBsYXlvdXQsIGJ1dCB0aGUgYHplbi1gIHByZWZpeCBzaG91bGQgYmUgcmVtb3ZlZC5cbi8vXG4vLyBGb3IgZXhhbXBsZTpcbi8vIGBgYFxuLy8gJHplbi1sYXlvdXRzOiAoXG4vLyAgIG1lZGl1bTogKFxuLy8gICAgIGNvbHVtbnM6IDMsICAgIC8vIEVxdWl2YWxlbnQgb2YgJHplbi1jb2x1bW5zIGZvciB0aGlzIGxheW91dC5cbi8vICAgICBndXR0ZXJzOiAxNXB4LCAvLyBFcXVpdmFsZW50IG9mICR6ZW4tZ3V0dGVycyBmb3IgdGhpcyBsYXlvdXQuXG4vLyAgICksXG4vLyApO1xuLy8gYGBgXG4vL1xuLy8gV2hlbiBhIG5hbWVkIGxheW91dCBpcyBnaXZlbiB0byB0aGUgYCRsYXlvdXRgIHBhcmFtZXRlciBvZiBvbmUgb2YgdGhlIGxheW91dCBtb2R1bGUncyBtaXhpbnMgdGhhdCBsYXlvdXQncyBwcm9wZXJ0aWVzIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFueSBnbG9iYWwgdmFyaWFibGVzIGZvciB0aGUgZW50aXJldHkgb2YgdGhlIG1peGluJ3MgYEBjb250ZW50YC5cbi8vXG4vLyBgYGBcbi8vICR6ZW4tbGF5b3V0czogKCkgIWRlZmF1bHQ7XG4vLyBgYGBcbi8vXG4vLyBTdHlsZSBndWlkZTogbGF5b3V0LnZhcmlhYmxlcy56ZW4tbGF5b3V0c1xuJHplbi1sYXlvdXRzOiAoKSAhZGVmYXVsdDtcblxuXG5cbi8vXG4vLyBCYWNrZ3JvdW5kIE1vZHVsZVxuLy9cblxuLy8gQ29uZmlndXJhYmxlIHZhcmlhYmxlc1xuLy9cbi8vIFplbiBHcmlkcyBjb21lcyB3aXRoIHNldmVyYWwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBhZmZlY3Qgd2hhdCBDU1MgaXRzIG1peGlucyBhbmQgZnVuY3Rpb25zIG91dHB1dC4gVGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZXNlIHZhcmlhYmxlcyBhcmUgYWxsIHNldCB1c2luZyB0aGUg4oCcZ3VhcmRlZCBhc3NpZ25tZW504oCdIGZsYWcsIGAhZGVmYXVsdGAuIFNvIHlvdSBjYW4gc2FmZWx5IHNldCB0aG9zZSB2YWx1ZXMgYmVmb3JlIHlvdSBgQGltcG9ydGAgWmVuIEdyaWRzIGFuZCB5b3VyIHZhbHVlcyB3aWxsIGJlIHJlc3BlY3RlZC5cbi8vXG4vLyB3ZWlnaHQ6IC0xMFxuLy9cbi8vIFN0eWxlIGd1aWRlOiBiYWNrZ3JvdW5kLnZhcmlhYmxlc1xuXG4vLyAkemVuLWdyaWQtY29sb3Jcbi8vXG4vLyBTcGVjaWZ5IHRoZSBjb2xvciB1c2VkIGluIHRoZSBiYWNrZ3JvdW5kIGdyaWQgaW1hZ2UgcHJvZHVjZWQgYnkgdGhlIGB6ZW4tZ3JpZC1iYWNrZ3JvdW5kKClgIG1peGluLlxuLy9cbi8vIGBgYFxuLy8gJHplbi1ncmlkLWNvbG9yOiAjZmZkZWRlICFkZWZhdWx0O1xuLy8gYGBgXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGJhY2tncm91bmQudmFyaWFibGVzLnplbi1ncmlkLWNvbG9yXG4kemVuLWdyaWQtY29sb3I6ICNmZmRlZGUgIWRlZmF1bHQ7XG5cbi8vICR6ZW4tZ3JpZC1udW1iZXJzXG4vL1xuLy8gU3BlY2lmeSBob3cgdG8gcGxhY2UgdGhlIGNvbHVtbiBudW1iZXJzIGluIHRoZSBiYWNrZ3JvdW5kIGdyaWQgaW1hZ2UuIE5vcm1hbGx5LCBjb2x1bW4gbnVtYmVycyBhcmUgZGlzcGxheWVkIGFjcm9zcyB0aGUgdG9wIG9mIHRoZSBiYWNrZ3JvdW5kIGdyaWQgaW1hZ2UgYW5kIHRoZW4gZGlzcGxheWVkIGluIHJldmVyc2Ugb3JkZXIgYWxvbmcgdGhlIGJvdHRvbSBvZiB0aGUgYmFja2dyb3VuZCBncmlkIGltYWdlLiBDYW4gYmUgc2V0IHRvOiBgYm90aGAsIGB0b3BgLCBvciBgbm9uZWAuXG4vL1xuLy8gYGBgXG4vLyAkemVuLWdyaWQtbnVtYmVyczogYm90aCAhZGVmYXVsdDtcbi8vIGBgYFxuLy9cbi8vIFN0eWxlIGd1aWRlOiBiYWNrZ3JvdW5kLnZhcmlhYmxlcy56ZW4tZ3JpZC1udW1iZXJzXG4kemVuLWdyaWQtbnVtYmVyczogYm90aCAhZGVmYXVsdDtcblxuLy8gJHplbi1ncmlkLW51bWJlci1pbWFnZXNcbi8vXG4vLyBTcGVjaWZ5IHRoZSBzZXQgb2YgaW1hZ2VzIHVzZWQgZm9yIHRoZSBudW1iZXJpbmcgb2YgdGhlIGNvbHVtbnMgaW4gdGhlIGJhY2tncm91bmQgZ3JpZCBpbWFnZS5cbi8vXG4vLyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgYCR6ZW4tZ3JpZC1udW1iZXItaW1hZ2VzYCB2YXJpYWJsZSBpcyBhIGxpc3Qgb2YgdGhlIG51bWJlcnMgMSB0aHJvdWdoIDI1LCBlYWNoIHJlbmRlcmVkIGFzIGFuIGltYWdlIGFuZCBlbmNvZGVkIGFzIGEgZGF0YSBVUkkuIFVzZXJzIHdobyBhcmUgY3JhenkgZW5vdWdoIHRvIHVzZSBhIDI2LWNvbHVtbiBncmlkIG9yIGxhcmdlciBhcmUgZnJlZSB0byBleHRlbmQgdGhpcyBzZXQuXG4vL1xuLy8gYGBgXG4vLyAkemVuLWdyaWQtbnVtYmVyLWltYWdlczogKHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCDigKYpLCDigKYpICFkZWZhdWx0O1xuLy8gYGBgXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGJhY2tncm91bmQudmFyaWFibGVzLnplbi1ncmlkLW51bWJlci1pbWFnZXNcbiR6ZW4tZ3JpZC1udW1iZXItaW1hZ2VzOiAoKSAhZGVmYXVsdDtcblxuLy8gJGRpc3BsYXktemVuLWdyaWQtYmFja2dyb3VuZFxuLy9cbi8vIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGdyaWQgaW1hZ2Ugc2hvdWxkIGJlIGRpc3BsYXllZC5cbi8vXG4vLyBTaW5jZSB0aGUgYmFja2dyb3VuZCBncmlkIGltYWdlIGlzIG9ubHkgdXNlZnVsIGR1cmluZyBkZXZlbG9wbWVudCBhbmQgZHVyaW5nIGRlYnVnZ2luZywgd2UgbmVlZCBhbiBlYXN5IHdheSB0byB0dXJuIG9mZiB0aGUgYmFja2dyb3VuZCBncmlkIGltYWdlIHdpdGhvdXQgcmVtb3ZpbmcgYWxsIHRoZSBjYWxscyB0byBgemVuLWdyaWQtYmFja2dyb3VuZCgpYCBmcm9tIHRoZSBjb2RlIGJhc2UuIFRvIHR1cm4gb2ZmIGFsbCBiYWNrZ3JvdW5kIGdyaWQgaW1hZ2VzLCBzZXQgYCRkaXNwbGF5LXplbi1ncmlkLWJhY2tncm91bmRgIHRvIGBmYWxzZWAuXG4vL1xuLy8gYGBgXG4vLyAkZGlzcGxheS16ZW4tZ3JpZC1iYWNrZ3JvdW5kOiB0cnVlICFkZWZhdWx0O1xuLy8gYGBgXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGJhY2tncm91bmQudmFyaWFibGVzLmRpc3BsYXktemVuLWdyaWQtYmFja2dyb3VuZFxuJGRpc3BsYXktemVuLWdyaWQtYmFja2dyb3VuZDogdHJ1ZSAhZGVmYXVsdDtcbiIsIi8vIEhlbHBlciBmdW5jdGlvbnMgbW9kdWxlXG4vL1xuLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgdGhlIFplbiBHcmlkcyBtaXhpbnMuXG4vL1xuLy8gVGhpcyBtb2R1bGUgY29udGFpbnMgbWFueSBTYXNzIGZ1bmN0aW9ucyB0aGF0IHlvdSBtYXkgZmluZCB1c2VmdWwgaW4geW91ciBzdHlsZSBzaGVldC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBhbHNvIHVzZWQgaW50ZXJuYWxseSBieSBhbGwgb2YgdGhlIG1peGlucyBpbiBaZW4gR3JpZHMuXG4vL1xuLy8gV2VpZ2h0OiAxMFxuLy9cbi8vIFN0eWxlIGd1aWRlOiBmdW5jdGlvbnNcblxuXG5AaW1wb3J0IFwiLi92YXJpYWJsZXNcIjtcblxuXG4vLyB6ZW4taGFsZi1ndXR0ZXIoKVxuLy9cbi8vIFJldHVybnMgYSBoYWxmIGd1dHRlciB3aWR0aC5cbi8vXG4vLyBJZiB0aGUgZ3V0dGVyIHdpZHRoIGlzIGluIHBpeGVscyBhbmQgaXMgYW4gb2RkIG51bWJlciwgdGhlbiBgJGd1dHRlci1zaWRlOiBsZWZ0YCB3aWxsIHJldHVybiBoYWxmIG9mIHRoZSBndXR0ZXIgcm91bmRlZCBkb3duIHRvIGEgd2hvbGUgcGl4ZWw7IGAkZ3V0dGVyLXNpZGU6IHJpZ2h0YCB3aWxsIHJldHVybiBoYWxmIG9mIHRoZSBndXR0ZXIgcm91bmRlZCB1cCB0byBhIHdob2xlIHBpeGVsLiBUaGUgYCRndXR0ZXItc2lkZWAgZGVmYXVsdHMgdG8gW2AkemVuLWRpcmVjdGlvbmBdKCN6ZW4tZGlyZWN0aW9uKS5cbi8vXG4vLyBDb21tb24gdXNhZ2U6XG4vLyBgYGBcbi8vIC5leCB7XG4vLyAgIHByb3BlcnR5OiB6ZW4taGFsZi1ndXR0ZXIoKTtcbi8vICAgLy8gb3I6XG4vLyAgIHByb3BlcnR5OiB6ZW4taGFsZi1ndXR0ZXIoJGd1dHRlci1zaWRlOiBbbGVmdCBvciByaWdodF0pO1xuLy8gfVxuLy8gYGBgXG4vL1xuLy8gJGd1dHRlcnMgICAgID0gJHplbi1ndXR0ZXJzIC0gVGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXJzYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlcnMpLlxuLy8gJGd1dHRlci1zaWRlID0gJHplbi1kaXJlY3Rpb24gLSBUaGUgc2lkZSBvZiB0aGUgZ3JpZCBpdGVtIHRoZSBndXR0ZXIgaXMgbmVlZGVkIGZvci5cbi8vICRkaXJlY3Rpb24gICA9ICR6ZW4tZGlyZWN0aW9uIC0gVGhlIGRpcmVjdGlvbiB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWRpcmVjdGlvbmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tZGlyZWN0aW9uKS5cbi8vXG4vLyB3ZWlnaHQ6IC0xXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGZ1bmN0aW9ucy56ZW4taGFsZi1ndXR0ZXJcbkBmdW5jdGlvbiB6ZW4taGFsZi1ndXR0ZXIoXG4gICRndXR0ZXJzICAgICAgICAgIDogJHplbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXNpZGUgICAgICA6ICR6ZW4tZGlyZWN0aW9uLFxuICAkZGlyZWN0aW9uICAgICAgICA6ICR6ZW4tZGlyZWN0aW9uXG4pIHtcbiAgJGhhbGYtZ3V0dGVyOiAkZ3V0dGVycyAvIDI7XG4gIC8vIFNwZWNpYWwgaGFuZGxpbmcgaW4gY2FzZSBndXR0ZXIgaGFzIGFuIG9kZCBudW1iZXIgb2YgcGl4ZWxzLlxuICBAaWYgdW5pdCgkZ3V0dGVycykgPT0gXCJweFwiIHtcbiAgICBAaWYgJGd1dHRlci1zaWRlID09ICRkaXJlY3Rpb24ge1xuICAgICAgQHJldHVybiBmbG9vcigkaGFsZi1ndXR0ZXIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGNlaWwoJGhhbGYtZ3V0dGVyKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkaGFsZi1ndXR0ZXI7XG59XG5cbi8vIHplbi1jb21wYXJlLXVuaXRzKClcbi8vXG4vLyBJbnRlcm5hbCBmdW5jdGlvbi4gV2FybnMgaWYgdGhlIGd1dHRlciBhbmQgZ3JpZCB3aWR0aCB1bml0cyBhcmUgbm90IGNvbXBhcmFibGUuIEl0IGRvZXMgbm90IHRocm93IGFuIGBAZXJyb3JgIGJlY2F1c2UgdGhlIGxpbmUgZm9sbG93aW5nIHRoZSBjYWxsIHRvIGB6ZW4tY29tcGFyZS11bml0cygpYCB3aWxsIGNhdXNlIGEgU2FzcyBtYXRoIGVycm9yIHdpdGggdGhlIGEgbGluZSBudW1iZXIgdGhhdCBpcyBtb3JlIHVzZWZ1bCB0aGFuIGlmIGl0IHdlcmUgdG8gZmFpbCBoZXJlLlxuLy9cbi8vIE5vIHN0eWxlIGd1aWRlXG5AZnVuY3Rpb24gemVuLWNvbXBhcmUtdW5pdHMoXG4gICRmZWF0dXJlLFxuICAkZ3V0dGVycyAgICAgICAgOiAkemVuLWd1dHRlcnMsXG4gICRncmlkLXdpZHRoICAgICA6ICR6ZW4tZ3JpZC13aWR0aFxuKSB7XG4gIEBpZiBub3QgY29tcGFyYWJsZSgkZ3V0dGVycywgJGdyaWQtd2lkdGgpIHtcbiAgICAkdW5pdHMtZ3V0dGVyOiB1bml0KCRndXR0ZXJzKTtcbiAgICAkdW5pdHMtZ3JpZDogdW5pdCgkZ3JpZC13aWR0aCk7XG4gICAgQHdhcm4gXCJUaGUgbGF5b3V0IGNhbm5vdCBiZSBjYWxjdWxhdGVkIGNvcnJlY3RseTsgd2hlbiB1c2luZyAjeyRmZWF0dXJlfSwgdGhlIHVuaXRzIG9mIHRoZSBndXR0ZXIgKCN7JHVuaXRzLWd1dHRlcn0gbXVzdCBtYXRjaCB0aGUgdW5pdHMgb2YgdGhlIGdyaWQgd2lkdGggKCN7JHVuaXRzLWdyaWR9KS5cIjtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8gemVuLXVuaXQtd2lkdGgoKVxuLy9cbi8vIFJldHVybnMgdGhlIHVuaXQgd2lkdGggb2YgYSBzaW5nbGUgY29sdW1uIGluIHRoZSBncmlkLlxuLy9cbi8vIENvbW1vbiB1c2FnZTpcbi8vIGBgYFxuLy8gLmV4IHtcbi8vICAgcHJvcGVydHk6IHplbi11bml0LXdpZHRoKCk7XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyAkY29sdW1ucyAgICAgICA9ICR6ZW4tY29sdW1ucyAtIFRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZC4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tY29sdW1uc2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1jb2x1bW5zKS5cbi8vICRndXR0ZXJzICAgICAgID0gJHplbi1ndXR0ZXJzIC0gVGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXJzYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlcnMpLlxuLy8gJGd1dHRlci1tZXRob2QgPSAkemVuLWd1dHRlci1tZXRob2QgLSBUaGUgZ3V0dGVyIG1ldGhvZCB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVyLW1ldGhvZCkuXG4vLyAkZ3JpZC13aWR0aCAgICA9ICR6ZW4tZ3JpZC13aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgZW50aXJlIGdyaWQuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1maXhlZC16ZW4tZ3JpZC13aWR0aCkuXG4vL1xuLy8gd2VpZ2h0OiAtMVxuLy9cbi8vIFN0eWxlIGd1aWRlOiBmdW5jdGlvbnMuemVuLXVuaXQtd2lkdGhcbkBmdW5jdGlvbiB6ZW4tdW5pdC13aWR0aChcbiAgJGNvbHVtbnMgICAgICAgIDogJHplbi1jb2x1bW5zLFxuICAkZ3V0dGVycyAgICAgICAgOiAkemVuLWd1dHRlcnMsXG4gICRndXR0ZXItbWV0aG9kICA6ICR6ZW4tZ3V0dGVyLW1ldGhvZCxcbiAgJGdyaWQtd2lkdGggICAgIDogJHplbi1ncmlkLXdpZHRoXG4pIHtcbiAgJHVuaXQtd2lkdGg6IDA7XG4gIEBpZiAkZ3V0dGVyLW1ldGhvZCA9PSBtYXJnaW4ge1xuICAgICR0ZXN0OiB6ZW4tY29tcGFyZS11bml0cygnZ3V0dGVyLW1ldGhvZDogbWFyZ2luJywgJGd1dHRlcnMsICRncmlkLXdpZHRoKTtcbiAgICAkdW5pdC13aWR0aDogKCRncmlkLXdpZHRoIC0gKCRjb2x1bW5zIC0gMSkgKiAkZ3V0dGVycykgLyAkY29sdW1ucztcbiAgfVxuICBAZWxzZSB7XG4gICAgJHVuaXQtd2lkdGg6ICRncmlkLXdpZHRoIC8gJGNvbHVtbnM7XG4gIH1cbiAgQGlmIHVuaXQoJHVuaXQtd2lkdGgpID09IFwicHhcIiBhbmQgZmxvb3IoJHVuaXQtd2lkdGgpICE9IGNlaWwoJHVuaXQtd2lkdGgpIHtcbiAgICBAaWYgJGd1dHRlci1tZXRob2QgPT0gbWFyZ2luIHtcbiAgICAgICRudW1fZ3V0dGVyczogJGNvbHVtbnMgLSAxO1xuICAgICAgQHdhcm4gXCJZb3UgbWF5IGV4cGVyaWVuY2Ugcm91bmRpbmcgZXJyb3JzIGFzIHRoZSBncmlkIHdpZHRoLCAjeyRncmlkLXdpZHRofSwgZG9lcyBub3QgZGl2aWRlIGV2ZW5seSBpbnRvICN7JGNvbHVtbnN9IGNvbHVtbnMgd2l0aCAjeyRudW1fZ3V0dGVyc30gb2YgI3skZ3V0dGVyc30gZ3V0dGVycy5cIjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJZb3UgbWF5IGV4cGVyaWVuY2Ugcm91bmRpbmcgZXJyb3JzIGFzIHRoZSBncmlkIHdpZHRoLCAjeyRncmlkLXdpZHRofSwgZG9lcyBub3QgZGl2aWRlIGV2ZW5seSBpbnRvICN7JGNvbHVtbnN9IGNvbHVtbnMuXCI7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHVuaXQtd2lkdGg7XG59XG5cbi8vIHplbi1ncmlkLWl0ZW0td2lkdGgoKVxuLy9cbi8vIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIGEgZ3JpZCBpdGVtIHRoYXQgc3BhbnMgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgY29sdW1ucy5cbi8vXG4vLyBDb21tb24gdXNhZ2U6XG4vLyBgYGBcbi8vIC5leCB7XG4vLyAgIHByb3BlcnR5OiB6ZW4tZ3JpZC1pdGVtLXdpZHRoKFtudW1iZXJdKTtcbi8vIH1cbi8vIGBgYFxuLy9cbi8vICRjb2x1bW4tc3BhbiAgIC0gUmVxdWlyZWQuIFRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBjYWxjdWxhdGUgdGhlIHdpZHRoIG9mLlxuLy8gJGNvbHVtbnMgICAgICAgPSAkemVuLWNvbHVtbnMgLSBUaGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWNvbHVtbnNgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tY29sdW1ucykuXG4vLyAkZ3V0dGVycyAgICAgICA9ICR6ZW4tZ3V0dGVycyAtIFRoZSB3aWR0aCBvZiB0aGUgZ3V0dGVycy4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZ3V0dGVyc2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1ndXR0ZXJzKS5cbi8vICRndXR0ZXItbWV0aG9kID0gJHplbi1ndXR0ZXItbWV0aG9kIC0gVGhlIGd1dHRlciBtZXRob2QgdG8gdXNlLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXItbWV0aG9kYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlci1tZXRob2QpLlxuLy8gJGdyaWQtd2lkdGggICAgPSAkemVuLWdyaWQtd2lkdGggLSBUaGUgd2lkdGggb2YgdGhlIGVudGlyZSBncmlkLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXItbWV0aG9kYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtZml4ZWQtemVuLWdyaWQtd2lkdGgpLlxuLy8gJGJveC1zaXppbmcgICAgPSAkemVuLWJveC1zaXppbmcgLSBUaGUgYm94IHNpemluZyB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWJveC1zaXppbmdgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tYm94LXNpemluZykuXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGZ1bmN0aW9ucy56ZW4tZ3JpZC1pdGVtLXdpZHRoXG5AZnVuY3Rpb24gemVuLWdyaWQtaXRlbS13aWR0aChcbiAgJGNvbHVtbi1zcGFuLFxuICAkY29sdW1ucyAgICAgICAgOiAkemVuLWNvbHVtbnMsXG4gICRndXR0ZXJzICAgICAgICA6ICR6ZW4tZ3V0dGVycyxcbiAgJGd1dHRlci1tZXRob2QgIDogJHplbi1ndXR0ZXItbWV0aG9kLFxuICAkZ3JpZC13aWR0aCAgICAgOiAkemVuLWdyaWQtd2lkdGgsXG4gICRib3gtc2l6aW5nICAgICA6ICR6ZW4tYm94LXNpemluZ1xuKSB7XG4gICR3aWR0aDogJGNvbHVtbi1zcGFuICogemVuLXVuaXQtd2lkdGgoJGNvbHVtbnMsICRndXR0ZXJzLCAkZ3V0dGVyLW1ldGhvZCwgJGdyaWQtd2lkdGgpO1xuXG4gIC8vIEFkZCB0aGUgbWFyZ2luIGd1dHRlcnMgaW50ZXJuYWwgdG8gdGhlIHNwYW5uaW5nIGdyaWQgaXRlbS5cbiAgQGlmICRndXR0ZXItbWV0aG9kID09IG1hcmdpbiB7XG4gICAgJHdpZHRoOiAkd2lkdGggKyAoZmxvb3IoJGNvbHVtbi1zcGFuKSAtIDEpICogJGd1dHRlcnM7XG4gIH1cbiAgLy8gRm9yIHRoZSBvcmlnaW5hbCBib3ggbW9kZWwsIHJlbW92ZSB0aGUgcGFkZGluZyBmcm9tIHRoZSB3aWR0aC5cbiAgQGVsc2UgaWYgJGJveC1zaXppbmcgPT0gY29udGVudC1ib3gge1xuICAgICR0ZXN0OiB6ZW4tY29tcGFyZS11bml0cygnYm94LXNpemluZzogY29udGVudC1ib3gnLCAkZ3V0dGVycywgJGdyaWQtd2lkdGgpO1xuICAgICR3aWR0aDogJHdpZHRoIC0gJGd1dHRlcnM7XG4gIH1cbiAgQHJldHVybiAkd2lkdGg7XG59XG5cbi8vIHplbi1kaXJlY3Rpb24tc3dpdGNoKClcbi8vXG4vLyBSZXR1cm5zIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24sIGdpdmVuIFwibGVmdFwiIG9yIFwicmlnaHRcIi5cbi8vXG4vLyBDb21tb24gdXNhZ2U6XG4vLyBgYGBcbi8vIC5leCB7XG4vLyAgIHByb3BlcnR5OiB6ZW4tZGlyZWN0aW9uLXN3aXRjaChbbGVmdCBvciByaWdodF0pO1xuLy8gfVxuLy8gYGBgXG4vL1xuLy8gJGRpcmVjdGlvbiAtIFJlcXVpcmVkLiBUaGUgZGlyZWN0aW9uIHlvdSB3YW50IHRvIHN3aXRjaC5cbi8vXG4vLyB3ZWlnaHQ6IDFcbi8vXG4vLyBTdHlsZSBndWlkZTogZnVuY3Rpb25zLnplbi1kaXJlY3Rpb24tc3dpdGNoXG5AZnVuY3Rpb24gemVuLWRpcmVjdGlvbi1zd2l0Y2goXG4gICRkaXJlY3Rpb25cbikge1xuICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICBAcmV0dXJuIHJpZ2h0O1xuICB9XG4gIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgIEByZXR1cm4gbGVmdDtcbiAgfVxuICBAZWxzZSBpZiAkZGlyZWN0aW9uICE9IG5vbmUgYW5kICRkaXJlY3Rpb24gIT0gYm90aCB7XG4gICAgQHdhcm4gXCJJbnZhbGlkIGRpcmVjdGlvbiBwYXNzZWQgdG8gemVuLWRpcmVjdGlvbi1zd2l0Y2goKS5cIjtcbiAgfVxuICBAcmV0dXJuICRkaXJlY3Rpb247XG59XG5cbi8vIHplbi1zdXBwb3J0LWZvci1pZSgpXG4vL1xuLy8gSW50ZXJuYWwgZnVuY3Rpb24uIElmIHlvdSd2ZSBpbnN0YWxsZWQgc3VwcG9ydC1mb3IsIHRoaXMgZnVuY3Rpb24gd2lsbCB0ZWxsIHlvdSBpZiBJRSA2IG9yIElFIDcgc2hvdWxkIGJlIHN1cHBvcnRlZC4gSWYgc3VwcG9ydC1mb3IgaXMgbm90IGluc3RhbGxlZCwgdGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBmYWxzZS5cbi8vXG4vLyBObyBzdHlsZSBndWlkZVxuQGZ1bmN0aW9uIHplbi1zdXBwb3J0LWZvci1pZSgkbWluLXZlcnNpb24pIHtcbiAgQGlmIGZ1bmN0aW9uLWV4aXN0cygnc3VwcG9ydC1mb3InKSB7XG4gICAgQHJldHVybiBzdXBwb3J0LWZvcihpZSwgJG1pbi12ZXJzaW9uKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8gRmxvdyBtb2R1bGVcbi8vXG4vLyBUaGUgXCJGbG93XCIgbW9kdWxlIGZvciB0aGUgWmVuIEdyaWRzIHN5c3RlbSBhbGxvd3MgYW4gaXRlbSBpbiB0aGUgbm9ybWFsIGZsb3cgb2YgYSBkb2N1bWVudCB0byBiZSBhbGlnbmVkIHRvIHRoZSBncmlkLCBlLmcuIGFuIGltYWdlIGNhbiBiZSBhbGlnbmVkIHRvIHRoZSBncmlkLlxuLy9cbi8vIFRvIHVuZGVyc3RhbmQgdGhpcyBtb2R1bGUsIGl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBDU1MgZGVmaW5pdGlvbiBvZiDigJxub3JtYWwgZmxvd+KAnS4gQWNjb3JkaW5nIHRvIENTUywgYWxsIGNvbnRlbnQgaXMgcGFydCBvZiB0aGUgW25vcm1hbCA8ZW0+ZmxvdzwvZW0+XShodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyL3Zpc3VyZW4uaHRtbCNwb3NpdGlvbmluZy1zY2hlbWUpIGJ5IGRlZmF1bHQuIEZvciBleGFtcGxlLCBwYXJhZ3JhcGggdGV4dCBhbmQgaW1hZ2VzIGFyZSBwYXJ0IG9mIHRoZSBub3JtYWwgZmxvdy5cbi8vXG4vLyBQb3NpdGlvbmVkIGVsZW1lbnRzIChmbG9hdHMsIGFic29sdXRlIHBvc2l0aW9uaW5nLCBldGMuKSBhcmUgbm90IHBhcnQgb2YgdGhlIG5vcm1hbCBmbG93LlxuLy9cbi8vIFplbiBHcmlk4oCZcyBncmlkIGl0ZW1zIGFyZSBhbHNvIHBvc2l0aW9uZWQgZWxlbWVudHMgYW5kLCB0aGVyZWZvcmUsIGFyZSBubyBsb25nZXIgcGFydCBvZiB0aGUgbm9ybWFsIGZsb3cuXG4vL1xuLy8gRm9yIGV4YW1wbGUsIGEgbGF5b3V0IGRlc2lnbmVyIHdpbGwgb2Z0ZW4gbWFrZSBvbmUgb2YgWmVuIEdyaWTigJlzIGdyaWQgaXRlbXMgc3BhbiBtdWx0aXBsZSBjb2x1bW5zLiBUaGUgZWxlbWVudHMgd2l0aGluIHRoYXQgZ3JpZCBpdGVtIGFyZSBwYXJ0IG9mIHRoZSBub3JtYWwgZmxvdyBhbmQgc3BhbiB0aGUgc2FtZSBudW1iZXIgb2YgY29sdW1ucyBhcyB0aGVpciBjb250YWluaW5nIGdyaWQgaXRlbS4gVGhlIGxheW91dCBkZXNpZ25lciBtYXkgd2lzaCB0byBoYXZlIGFuIGVsZW1lbnQgaW4gdGhlIG5vcm1hbCBmbG93IGFsaWduIHRvIG9uZSBvciBtb3JlIG9mIHRoZSBjb2x1bW5zIHdpdGhpbiB0aGUgZ3JpZCBpdGVtLiBGb3IgZXhhbXBsZSwgaWYgYSBncmlkIGl0ZW0gc3BhbnMgMyBjb2x1bW5zLCB0aGUgbGF5b3V0IGRlc2lnbmVyIG1heSB3YW50IHRvIGhhdmUgYWxsIG9mIHRoZSBpbWFnZXMgd2l0aGluIGl0IHRvIGFsaWduIHRvIHRoZSBmaXJzdCBjb2x1bW4gaW5zaWRlIHRoYXQgZ3JpZCBpdGVtIGFuZCBoYXZlIG90aGVyIGZsb3cgaXRlbXMgd3JhcCBhcm91bmQgdGhvc2UgaW1hZ2VzLlxuLy9cbi8vIFdlaWdodDogLThcbi8vXG4vLyBTdHlsZSBndWlkZTogZmxvd1xuXG5AaW1wb3J0IFwiLi9ncmlkc1wiO1xuXG5cbi8vIHplbi1mbG93LWl0ZW0td2lkdGgoKVxuLy9cbi8vIEFwcGx5IHRoaXMgdG8gYW4gSFRNTCBpdGVtIHRoYXQgaXMgaW4gdGhlIG5vcm1hbCBmbG93IG9mIGEgZG9jdW1lbnQgdG8gaGVscCBhbGlnbiBpdCB0byB0aGUgZ3JpZC4gU2V0IHRoZSBgJGNvbHVtbi1zcGFuYCB0byB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgdGhhdCB0aGUgSFRNTCBlbGVtZW50IHNob3VsZCBzcGFuLiBGb3IgcmVzcG9uc2l2ZSBsYXlvdXRzIHdpdGggYSBwZXJjZW50YWdlLWJhc2VkIGdyaWQgd2lkdGgsIHNldCB0aGUgYCRwYXJlbnQtY29sdW1uLXNwYW5gIHRvIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0aGF0IHRoZSBwYXJlbnQgZWxlbWVudCBzcGFuczsgZml4ZWQtdW5pdCBsYXlvdXRzIHVzaW5nIHB4LCBlbSwgZXRjLiBkbyBub3QgbmVlZCB0byBzcGVjaWZ5IHRoaXMuXG4vL1xuLy8gVW5saWtlIHRoZSBgemVuLWdyaWQtaXRlbSgpYCBtaXhpbiwgdGhpcyBtaXhpbiBkb2VzIG5vdCBmbG9hdCB0aGUgSFRNTCBpdGVtOyBzZWUgdGhlIHJlbGF0ZWQgYHplbi1mbG9hdCgpYCBtaXhpbi4gVGhpcyBtaXhpbiBhbHNvIGRvZXMgbm90IGhhdmUgYSBoYWxmLWd1dHRlciBvbiBlYWNoIHNpZGUuIEJ5IGRlZmF1bHQsIGl0IGhhcyBubyBndXR0ZXIgaW4gdGhlIFwiYWxwaGEgcG9zaXRpb25cIiAodGhlIGxlZnQgc2lkZSkgYW5kIGEgZnVsbCBndXR0ZXIgaW4gdGhlIFwib21lZ2EgcG9zaXRpb25cIiAodGhlIHJpZ2h0IHNpZGUuKSBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIHRoZSBhbHBoYSBhbmQgb21lZ2EgZ3V0dGVycyBieSBzZXR0aW5nIHRoZSBgJGFscGhhLWd1dHRlcmAgYW5kIGAkb21lZ2EtZ3V0dGVyYCBwYXJhbWV0ZXJzIHRvIGB0cnVlYCBvciBgZmFsc2VgLlxuLy9cbi8vIE5vdGU6IHdoZW4gdGhlIGAkZGlyZWN0aW9uYCBpcyBzZXQgdG8gYHJpZ2h0YCAoZm9yIFJUTCBsYW5ndWFnZXMpLCB0aGUgYWxwaGEgcG9zaXRpb24gaXMgb24gdGhlIHJpZ2h0IGFuZCB0aGUgb21lZ2EgcG9zaXRpb24gaXMgb24gdGhlIGxlZnQuXG4vL1xuLy8gQ29tbW9uIHVzYWdlOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB6ZW4tZmxvdy1pdGVtLXdpZHRoKFxuLy8gICBbY29sdW1uLXNwYW5dLFxuLy8gICAkcGFyZW50LWNvbHVtbi1zcGFuOiBbaW50ZWdlcl1cbi8vICk7XG4vLyBgYGBcbi8vIG9yOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB6ZW4tZmxvdy1pdGVtLXdpZHRoKFxuLy8gICBbY29sdW1uLXNwYW5dLFxuLy8gICAkcGFyZW50LWNvbHVtbi1zcGFuOiBbaW50ZWdlcl0sXG4vLyAgICRhbHBoYS1ndXR0ZXI6IFtib29sZWFuXSxcbi8vICAgJG9tZWdhLWd1dHRlcjogW2Jvb2xlYW5dXG4vLyApO1xuLy8gYGBgXG4vLyBvciBmb3IgZml4ZWQgbGVuZ3RoIChlbSwgcHgsIGV0Yy4pIGxheW91dHM6XG4vLyBgYGBcbi8vIEBpbmNsdWRlIHplbi1mbG93LWl0ZW0td2lkdGgoXG4vLyAgIFtjb2x1bW4tc3Bhbl1cbi8vICk7XG4vLyBgYGBcbi8vIG9yOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB6ZW4tZmxvdy1pdGVtLXdpZHRoKFxuLy8gICBbY29sdW1uLXNwYW5dLFxuLy8gICAkYWxwaGEtZ3V0dGVyOiBbYm9vbGVhbl0sXG4vLyAgICRvbWVnYS1ndXR0ZXI6IFtib29sZWFuXVxuLy8gKTtcbi8vIGBgYFxuLy9cbi8vICRjb2x1bW4tc3BhbiAgICAgICAgIC0gUmVxdWlyZWQuIFRoZSBudW1iZXIgb2YgY29sdW1ucyB0aGUgZmxvdyBpdGVtIHdpbGwgc3Bhbi5cbi8vICRwYXJlbnQtY29sdW1uLXNwYW4gID0gZmFsc2UgLSBSZXF1aXJlZCBmb3IgJS1iYXNlZCBsYXlvdXRzLCBidXQgbm90IGZvciBmaXhlZC13aWR0aCBsYXlvdXRzLiBUaGUgbnVtYmVyIG9mIGNvbHVtbnMgdGhlIHBhcmVudCBncmlkIGl0ZW0gc3BhbnMuXG4vLyAkYWxwaGEtZ3V0dGVyICAgICAgICA9IGZhbHNlIC0gV2hldGhlciB0aGUgZmxvdyBpdGVtIHNob3VsZCBoYXZlIGEgZ3V0dGVyIG9uIGl0cyBsZWZ0IChvciwgZm9yIFJUTCBsYXlvdXRzLCBvbiBpdHMgcmlnaHQuKVxuLy8gJG9tZWdhLWd1dHRlciAgICAgICAgPSB0cnVlIC0gV2hldGhlciB0aGUgZmxvdyBpdGVtIHNob3VsZCBoYXZlIGEgZ3V0dGVyIG9uIGl0cyByaWdodCAob3IsIGZvciBSVEwgbGF5b3V0cywgb24gaXRzIGxlZnQuKVxuLy8gJGRpcmVjdGlvbiAgICAgICAgICAgPSAkemVuLWRpcmVjdGlvbiAtIFRoZSBkaXJlY3Rpb24gdG8gdXNlLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1kaXJlY3Rpb25gXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLWRpcmVjdGlvbikuXG4vLyAkY29sdW1ucyAgICAgICAgICAgICA9ICR6ZW4tY29sdW1ucyAtIFRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZC4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tY29sdW1uc2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1jb2x1bW5zKS5cbi8vICRndXR0ZXJzICAgICAgICAgICAgID0gJHplbi1ndXR0ZXJzIC0gVGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXJzYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlcnMpLlxuLy8gJGd1dHRlci1tZXRob2QgICAgICAgPSAkemVuLWd1dHRlci1tZXRob2QgLSBUaGUgZ3V0dGVyIG1ldGhvZCB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVyLW1ldGhvZCkuXG4vLyAkZ3JpZC13aWR0aCAgICAgICAgICA9ICR6ZW4tZ3JpZC13aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgZW50aXJlIGdyaWQuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1maXhlZC16ZW4tZ3JpZC13aWR0aCkuXG4vLyAkYm94LXNpemluZyAgICAgICAgICA9ICR6ZW4tYm94LXNpemluZyAtIFRoZSBib3ggc2l6aW5nIHRvIHVzZS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tYm94LXNpemluZ2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1ib3gtc2l6aW5nKS5cbi8vICRzd2l0Y2gtZGlyZWN0aW9uICAgID0gJHplbi1zd2l0Y2gtZGlyZWN0aW9uIC0gV2hldGhlciB0byBzd2l0Y2ggdGhlIGRlZmF1bHQgZGlyZWN0aW9uLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1zd2l0Y2gtZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1zd2l0Y2gtZGlyZWN0aW9uKS5cbi8vICRydGwtc2VsZWN0b3IgICAgICAgID0gJHplbi1ydGwtc2VsZWN0b3IgLSBUaGUgUlRMIHNlbGVjdG9yIGZvciB0aGlzIGJhY2tncm91bmQuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXJ0bC1zZWxlY3RvcmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tcnRsLXNlbGVjdG9yKS5cbi8vICRpbmNsdWRlLWJhc2UgICAgICAgID0gJHplbi1hdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UgLSBXaGV0aGVyIHRvIGF1dG8taW5jbHVkZSB0aGUgemVuLWZsb3ctaXRlbS1iYXNlKCkgbWl4aW4uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZWBdKHNlY3Rpb24tZmxvdy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZSkuXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGZsb3cuemVuLWZsb3ctaXRlbS13aWR0aFxuQG1peGluIHplbi1mbG93LWl0ZW0td2lkdGgoXG4gICRjb2x1bW4tc3BhbixcbiAgJHBhcmVudC1jb2x1bW4tc3BhbiAgIDogZmFsc2UsXG4gICRhbHBoYS1ndXR0ZXIgICAgICAgICA6IGZhbHNlLFxuICAkb21lZ2EtZ3V0dGVyICAgICAgICAgOiB0cnVlLFxuICAkZGlyZWN0aW9uICAgICAgICAgICAgOiAkemVuLWRpcmVjdGlvbixcbiAgJGNvbHVtbnMgICAgICAgICAgICAgIDogJHplbi1jb2x1bW5zLFxuICAkZ3V0dGVycyAgICAgICAgICAgICAgOiAkemVuLWd1dHRlcnMsXG4gICRndXR0ZXItbWV0aG9kICAgICAgICA6ICR6ZW4tZ3V0dGVyLW1ldGhvZCxcbiAgJGdyaWQtd2lkdGggICAgICAgICAgIDogJHplbi1ncmlkLXdpZHRoLFxuICAkYm94LXNpemluZyAgICAgICAgICAgOiAkemVuLWJveC1zaXppbmcsXG4gICRzd2l0Y2gtZGlyZWN0aW9uICAgICA6ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbixcbiAgJHJ0bC1zZWxlY3RvciAgICAgICAgIDogJHplbi1ydGwtc2VsZWN0b3IsXG4gICRpbmNsdWRlLWJhc2UgICAgICAgICA6ICR6ZW4tYXV0by1pbmNsdWRlLWZsb3ctaXRlbS1iYXNlXG4pIHtcblxuICAvLyBTYXZlIHRoZSBjb2x1bW5zIGFuZCBndXR0ZXJzIGZyb20gdGhlIHBhcmVudCBjb250ZXh0LlxuICAkbWFpbi1jb2x1bW5zOiAkY29sdW1ucztcbiAgJG1haW4tZ3V0dGVyczogJGd1dHRlcnM7XG4gICRtYWluLWdyaWQtd2lkdGg6ICRncmlkLXdpZHRoO1xuXG4gIC8vIEZpbmQgdGhlIHBhcmVudCBjb250ZXh0IGZvciBmbHVpZCBsYXlvdXRzLlxuICBAaWYgdW5pdCgkZ3JpZC13aWR0aCkgPT0gXCIlXCIge1xuICAgIC8vIFRoZSBudW1iZXIgb2YgY29sdW1ucyB0aGUgcGFyZW50IGVsZW1lbnQgc3BhbnMgaXMgb3VyIG5ldyBjb2x1bW4gY291bnQuXG4gICAgQGlmICRwYXJlbnQtY29sdW1uLXNwYW4gIT0gZmFsc2Uge1xuICAgICAgJGNvbHVtbnM6ICRwYXJlbnQtY29sdW1uLXNwYW47XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIElmIHdlIGRvbid0IGtub3cgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRoZSBwYXJlbnQgZWxlbWVudCBzcGFucywgdGhlblxuICAgICAgLy8gd2FybiB0aGUgdXNlciBhbmQgZm9yY2UgdGhlIGZsb3cgaXRlbSB0byBzcGFuIDEwMCUgb2YgdGhlIHBhcmVudC5cbiAgICAgIEBlcnJvciBcIkZvciByZXNwb25zaXZlIGxheW91dHMgd2l0aCBhIHBlcmNlbnRhZ2UtYmFzZWQgZ3JpZCB3aWR0aCwgeW91IG11c3Qgc2V0IHRoZSAkcGFyZW50LWNvbHVtbi1zcGFuIHRvIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0aGF0IHRoZSBwYXJlbnQgZWxlbWVudCBzcGFucy5cIjtcbiAgICB9XG4gICAgLy8gV2Ugd2FudCBvdXIgaW5uZXIgZ3JpZCB0byBzcGFuIHRoZSBlbnRpcmUgd2lkdGggb2YgdGhlIHBhcmVudC5cbiAgICAkZ3JpZC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIERldGVybWluZSB0aGUgZmxvdyBkaXJlY3Rpb24gYW5kIGl0cyByZXZlcnNlLlxuICAkZGlyOiAkZGlyZWN0aW9uO1xuICBAaWYgJHN3aXRjaC1kaXJlY3Rpb24ge1xuICAgICRkaXI6IHplbi1kaXJlY3Rpb24tc3dpdGNoKCRkaXIpO1xuICB9XG4gICRyZXY6IHplbi1kaXJlY3Rpb24tc3dpdGNoKCRkaXIpO1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgbmV3IGd1dHRlcnMgd2hlbiB0aGUgbGF5b3V0IGFuZCBndXR0ZXJzIGFyZSBib3RoIGZsdWlkLlxuICBAaWYgdW5pdCgkZ3JpZC13aWR0aCkgPT0gXCIlXCIgYW5kIHVuaXQoJGd1dHRlcnMpID09IFwiJVwiIHtcbiAgICAvLyBDYWxjdWxhdGUgdGhlIHBhcmVudCdzIHdpZHRoLlxuICAgICRwYXJlbnQtd2lkdGg6IHplbi1ncmlkLWl0ZW0td2lkdGgoJHBhcmVudC1jb2x1bW4tc3BhbiwgJG1haW4tY29sdW1ucywgJG1haW4tZ3V0dGVycywgJGd1dHRlci1tZXRob2QsICRtYWluLWdyaWQtd2lkdGgsICRib3gtc2l6aW5nKTtcbiAgICAvLyBDYWxjdWxhdGUgdGhlIG5ldyBndXR0ZXJzLlxuICAgICRndXR0ZXJzOiAkbWFpbi1ndXR0ZXJzICogKCRncmlkLXdpZHRoIC8gJHBhcmVudC13aWR0aCk7XG4gIH1cblxuICAvLyBJbmNsdWRlIHRoZSBmbG93IGl0ZW0gYmFzZSBtaXhpbi5cbiAgQGlmICRpbmNsdWRlLWJhc2Uge1xuICAgIEBpbmNsdWRlIHplbi1mbG93LWl0ZW0tYmFzZSgkZ3V0dGVycywgJGd1dHRlci1tZXRob2QsICRib3gtc2l6aW5nLCAkZGlyZWN0aW9uLCAkc3dpdGNoLWRpcmVjdGlvbiwgJHJ0bC1zZWxlY3Rvcik7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgdGhlIGl0ZW0ncyB3aWR0aC5cbiAgJHdpZHRoOiB6ZW4tZ3JpZC1pdGVtLXdpZHRoKCRjb2x1bW4tc3BhbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkZ3V0dGVyLW1ldGhvZCwgJGdyaWQtd2lkdGgsICRib3gtc2l6aW5nKTtcbiAgQGlmICRndXR0ZXItbWV0aG9kID09IHBhZGRpbmcgYW5kIHVuaXQoJGdyaWQtd2lkdGgpICE9IFwiJVwiIGFuZCBub3QgJGFscGhhLWd1dHRlciBhbmQgbm90ICRvbWVnYS1ndXR0ZXIgYW5kICgkYm94LXNpemluZyA9PSBib3JkZXItYm94IG9yICRib3gtc2l6aW5nID09IHVuaXZlcnNhbC1ib3JkZXItYm94KSB7XG4gICAgJHdpZHRoOiAkd2lkdGggLSAkZ3V0dGVycztcbiAgfVxuICB3aWR0aDogJHdpZHRoO1xuXG4gIEBpZiAkZ3V0dGVyLW1ldGhvZCA9PSBtYXJnaW4ge1xuICAgIEBpZiAkYWxwaGEtZ3V0dGVyIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkZ3V0dGVycztcbiAgICB9XG4gICAgQGlmICRvbWVnYS1ndXR0ZXIge1xuICAgICAgbWFyZ2luLSN7JHJldn06ICRndXR0ZXJzO1xuICAgIH1cbiAgICBAaWYgbm90ICgkb21lZ2EtZ3V0dGVyIGFuZCAkb21lZ2EtZ3V0dGVyKSB7XG4gICAgICBAaW5jbHVkZSB6ZW4tcnRsKCRydGwtc2VsZWN0b3IpIHtcbiAgICAgICAgQGlmICRhbHBoYS1ndXR0ZXIge1xuICAgICAgICAgIG1hcmdpbi0jeyRkaXJ9OiAwO1xuICAgICAgICAgIG1hcmdpbi0jeyRyZXZ9OiAkZ3V0dGVycztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZiAkb21lZ2EtZ3V0dGVyIHtcbiAgICAgICAgICBtYXJnaW4tI3skcmV2fTogMDtcbiAgICAgICAgICBtYXJnaW4tI3skZGlyfTogJGd1dHRlcnM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgdW5pdCgkZ3JpZC13aWR0aCkgPT0gXCIlXCIge1xuICAgIC8vIE91ciBwZXJjZW50YWdlICR3aWR0aCBpcyBvZmYgc2luY2UgdGhlIHBhcmVudCBoYXMgJG1haW4tZ3V0dGVycyBwYWRkaW5nLlxuICAgIC8vIENhbGN1bGF0ZSBhbiBhZGp1c3RlZCBndXR0ZXIgdG8gZml4IHRoZSB3aWR0aC5cbiAgICAkYWRqdXN0ZWQtZ3V0dGVyOiAoJGNvbHVtbnMgLSAkY29sdW1uLXNwYW4pICogJGd1dHRlcnMgLyAkY29sdW1ucztcblxuICAgIC8vIEVuc3VyZSB0aGUgSFRNTCBpdGVtIGVpdGhlciBoYXMgYSBmdWxsIGd1dHRlciBvciBubyBndXR0ZXIgb24gZWFjaCBzaWRlLlxuICAgIHBhZGRpbmctI3skZGlyfTogMDtcbiAgICBAaWYgJGFscGhhLWd1dHRlciB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJGd1dHRlcnM7XG4gICAgfVxuICAgIHBhZGRpbmctI3skcmV2fTogJGFkanVzdGVkLWd1dHRlcjtcbiAgICBAaWYgJG9tZWdhLWd1dHRlciB7XG4gICAgICBtYXJnaW4tI3skcmV2fTogJGd1dHRlcnMgLSAkYWRqdXN0ZWQtZ3V0dGVyO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBtYXJnaW4tI3skcmV2fTogLSgkYWRqdXN0ZWQtZ3V0dGVyKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgemVuLXJ0bCgkcnRsLXNlbGVjdG9yKSB7XG4gICAgICBwYWRkaW5nLSN7JHJldn06IDA7XG4gICAgICBAaWYgJGFscGhhLWd1dHRlciB7XG4gICAgICAgIG1hcmdpbi0jeyRyZXZ9OiAkZ3V0dGVycztcbiAgICAgIH1cbiAgICAgIHBhZGRpbmctI3skZGlyfTogJGFkanVzdGVkLWd1dHRlcjtcbiAgICAgIEBpZiAkb21lZ2EtZ3V0dGVyIHtcbiAgICAgICAgbWFyZ2luLSN7JGRpcn06ICRndXR0ZXJzIC0gJGFkanVzdGVkLWd1dHRlcjtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgbWFyZ2luLSN7JGRpcn06IC0oJGFkanVzdGVkLWd1dHRlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGFscGhhLWd1dHRlciBhbmQgJG9tZWdhLWd1dHRlciB7XG4gICAgICBAaWYgJGd1dHRlcnMgIT0gMCB7XG4gICAgICAgIG1hcmdpbjoge1xuICAgICAgICAgICN7JGRpcn06IHplbi1oYWxmLWd1dHRlcigkZ3V0dGVycywgbGVmdCwgJGRpcik7XG4gICAgICAgICAgI3skcmV2fTogemVuLWhhbGYtZ3V0dGVyKCRndXR0ZXJzLCByaWdodCwgJGRpcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgJGd1dHRlcnMgaXMgYW4gb2RkIG51bWJlciBvZiBwaXhlbHMsIHdlIG5lZWQgc3BlY2lhbCBSVEwgaGFuZGxpbmcuXG4gICAgICAgIEBpZiB6ZW4taGFsZi1ndXR0ZXIoJGd1dHRlcnMsIGxlZnQsICRkaXIpICE9IHplbi1oYWxmLWd1dHRlcigkZ3V0dGVycywgcmlnaHQsICRkaXIpIHtcbiAgICAgICAgICBAaW5jbHVkZSB6ZW4tcnRsKCRydGwtc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIG1hcmdpbjoge1xuICAgICAgICAgICAgICBsZWZ0OiB6ZW4taGFsZi1ndXR0ZXIoJGd1dHRlcnMsIHJpZ2h0LCAkZGlyKTtcbiAgICAgICAgICAgICAgcmlnaHQ6IHplbi1oYWxmLWd1dHRlcigkZ3V0dGVycywgbGVmdCwgJGRpcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCAkYWxwaGEtZ3V0dGVyIGFuZCBub3QgJG9tZWdhLWd1dHRlciB7XG4gICAgICBAaWYgJGd1dHRlcnMgIT0gMCB7XG4gICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRvbWVnYS1ndXR0ZXIge1xuICAgICAgcGFkZGluZy0jeyRkaXJ9OiAwO1xuICAgICAgcGFkZGluZy0jeyRyZXZ9OiAkZ3V0dGVycztcbiAgICAgIEBpbmNsdWRlIHplbi1ydGwoJHJ0bC1zZWxlY3Rvcikge1xuICAgICAgICBwYWRkaW5nLSN7JHJldn06IDA7XG4gICAgICAgIHBhZGRpbmctI3skZGlyfTogJGd1dHRlcnM7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBhZGRpbmctI3skZGlyfTogJGd1dHRlcnM7XG4gICAgICBwYWRkaW5nLSN7JHJldn06IDA7XG4gICAgICBAaW5jbHVkZSB6ZW4tcnRsKCRydGwtc2VsZWN0b3IpIHtcbiAgICAgICAgcGFkZGluZy0jeyRyZXZ9OiAkZ3V0dGVycztcbiAgICAgICAgcGFkZGluZy0jeyRkaXJ9OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyB6ZW4tZmxvdy1pdGVtLWJhc2UoKVxuLy9cbi8vIEFwcGxpZXMgYSBzdGFuZGFyZCBzZXQgb2YgcHJvcGVydGllcyB0byBmbG93IGl0ZW1zIHRoYXQgYXJlIGFsaWduZWQgdG8gdGhlIGdyaWQuXG4vL1xuLy8gQ29tbW9uIHVzYWdlOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB6ZW4tZmxvdy1pdGVtLWJhc2UoKTtcbi8vIGBgYFxuLy9cbi8vICRndXR0ZXJzICAgICAgICAgICAgID0gJHplbi1ndXR0ZXJzIC0gVGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXJzYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlcnMpLlxuLy8gJGd1dHRlci1tZXRob2QgICAgICAgPSAkemVuLWd1dHRlci1tZXRob2QgLSBUaGUgZ3V0dGVyIG1ldGhvZCB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVyLW1ldGhvZCkuXG4vLyAkYm94LXNpemluZyAgICAgICAgICA9ICR6ZW4tYm94LXNpemluZyAtIFRoZSBib3ggc2l6aW5nIHRvIHVzZS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tYm94LXNpemluZ2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1ib3gtc2l6aW5nKS5cbi8vICRkaXJlY3Rpb24gICAgICAgICAgID0gJHplbi1kaXJlY3Rpb24gLSBUaGUgZGlyZWN0aW9uIHRvIHVzZS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1kaXJlY3Rpb24pLlxuLy8gJHN3aXRjaC1kaXJlY3Rpb24gICAgPSAkemVuLXN3aXRjaC1kaXJlY3Rpb24gLSBXaGV0aGVyIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBkaXJlY3Rpb24uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXN3aXRjaC1kaXJlY3Rpb25gXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXN3aXRjaC1kaXJlY3Rpb24pLlxuLy8gJHJ0bC1zZWxlY3RvciAgICAgICAgPSAkemVuLXJ0bC1zZWxlY3RvciAtIFRoZSBSVEwgc2VsZWN0b3IgZm9yIHRoaXMgYmFja2dyb3VuZC4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tcnRsLXNlbGVjdG9yYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1ydGwtc2VsZWN0b3IpLlxuLy9cbi8vIFN0eWxlIGd1aWRlOiBmbG93Lnplbi1mbG93LWl0ZW0tYmFzZVxuQG1peGluIHplbi1mbG93LWl0ZW0tYmFzZShcbiAgJGd1dHRlcnMgICAgICAgICAgICAgICAgICA6ICR6ZW4tZ3V0dGVycyxcbiAgJGd1dHRlci1tZXRob2QgICAgICAgICAgICA6ICR6ZW4tZ3V0dGVyLW1ldGhvZCxcbiAgJGJveC1zaXppbmcgICAgICAgICAgICAgICA6ICR6ZW4tYm94LXNpemluZyxcbiAgJGRpcmVjdGlvbiAgICAgICAgICAgICAgICA6ICR6ZW4tZGlyZWN0aW9uLFxuICAkc3dpdGNoLWRpcmVjdGlvbiAgICAgICAgIDogJHplbi1zd2l0Y2gtZGlyZWN0aW9uLFxuICAkcnRsLXNlbGVjdG9yICAgICAgICAgICAgIDogJHplbi1ydGwtc2VsZWN0b3Jcbikge1xuXG4gIC8vIFNpbmNlIHdlIGhhdmUgdG8gc2V0IHBhZGRpbmcgaW4gemVuLWZsb3ctaXRlbS13aWR0aCgpLCBzdXBwcmVzcyBleHRyYW5lb3VzXG4gIC8vIHBhZGRpbmcgZGVjbGFyYXRpb25zIGluIHRoZSBiYXNlIGJ5IHNldHRpbmcgJGd1dHRlci1tZXRob2QgdG8gbm9uZS5cbiAgQGlmICRndXR0ZXItbWV0aG9kID09IHBhZGRpbmcge1xuICAgICRndXR0ZXItbWV0aG9kOiBub25lO1xuICB9XG4gIEBpbmNsdWRlIHplbi1ncmlkLWl0ZW0tYmFzZSgkZ3V0dGVycywgJGd1dHRlci1tZXRob2QsICRib3gtc2l6aW5nLCAkZGlyZWN0aW9uLCAkc3dpdGNoLWRpcmVjdGlvbiwgJHJ0bC1zZWxlY3Rvcik7XG59XG5cbi8vIHplbi1mbG9hdCgpXG4vL1xuLy8gQXBwbHkgdGhpcyB0byBmbG93IGl0ZW1zIHRoYXQgbmVlZCB0byBiZSBmbG9hdGVkLlxuLy9cbi8vIFVzaW5nIHRoaXMgbWl4aW4gaXMgbG9uZ2VyIHRoYW4ganVzdCB0eXBpbmcgYGZsb2F0OiBsZWZ0O2AuIEhvd2V2ZXIsIHRoaXMgbWl4aW4gaW50ZWdyYXRlcyB3aXRoIHRoZSBSVEwgdmFyaWFibGVzIGFuZCBtaXhpbnMgc28gdGhhdCB0aGUgZGlyZWN0aW9uIG9mIGZsb2F0aW5nIGNhbiBiZSBjaGFuZ2VkIGF1dG9tYXRpY2FsbHkuXG4vL1xuLy8gQ29tbW9uIHVzYWdlOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB6ZW4tZmxvYXQoKTtcbi8vIGBgYFxuLy8gb3I6XG4vLyBgYGBcbi8vIEBpbmNsdWRlIHplbi1mbG9hdChyaWdodCk7XG4vLyBgYGBcbi8vXG4vLyAkZGlyZWN0aW9uICAgICAgICAgICA9ICR6ZW4tZGlyZWN0aW9uIC0gVGhlIGRpcmVjdGlvbiB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWRpcmVjdGlvbmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tZGlyZWN0aW9uKS5cbi8vICRzd2l0Y2gtZGlyZWN0aW9uICAgID0gJHplbi1zd2l0Y2gtZGlyZWN0aW9uIC0gV2hldGhlciB0byBzd2l0Y2ggdGhlIGRlZmF1bHQgZGlyZWN0aW9uLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1zd2l0Y2gtZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1zd2l0Y2gtZGlyZWN0aW9uKS5cbi8vICRydGwtc2VsZWN0b3IgICAgICAgID0gJHplbi1ydGwtc2VsZWN0b3IgLSBUaGUgUlRMIHNlbGVjdG9yIGZvciB0aGlzIGJhY2tncm91bmQuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXJ0bC1zZWxlY3RvcmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tcnRsLXNlbGVjdG9yKS5cbi8vXG4vLyBTdHlsZSBndWlkZTogZmxvdy56ZW4tZmxvYXRcbkBtaXhpbiB6ZW4tZmxvYXQoXG4gICRkaXJlY3Rpb24gICAgICAgICAgOiAkemVuLWRpcmVjdGlvbixcbiAgJHN3aXRjaC1kaXJlY3Rpb24gICA6ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbixcbiAgJHJ0bC1zZWxlY3RvciAgICAgICA6ICR6ZW4tcnRsLXNlbGVjdG9yXG4pIHtcbiAgLy8gRGV0ZXJtaW5lIHRoZSBmbG9hdCBkaXJlY3Rpb24uXG4gICRkaXI6ICRkaXJlY3Rpb247XG4gIEBpZiAkc3dpdGNoLWRpcmVjdGlvbiB7XG4gICAgJGRpcjogemVuLWRpcmVjdGlvbi1zd2l0Y2goJGRpcik7XG4gIH1cbiAgZmxvYXQ6ICRkaXI7XG5cbiAgQGluY2x1ZGUgemVuLXJ0bCgkcnRsLXNlbGVjdG9yKSB7XG4gICAgZmxvYXQ6IHplbi1kaXJlY3Rpb24tc3dpdGNoKCRkaXIpO1xuICB9XG59XG4iLCIvLyBMYXlvdXQgbW9kdWxlXG4vL1xuLy8gVGhlIFwiTGF5b3V0XCIgbW9kdWxlIGZvciB0aGUgWmVuIEdyaWRzIHN5c3RlbS5cbi8vXG4vLyBXaGVuIGJ1aWxkaW5nIGEgZ3JpZCBzeXN0ZW0gZm9yIHlvdXIgc2l0ZSwgcHJvcGVydGllcyAobGlrZSBudW1iZXIgb2YgY29sdW1ucyBvciBndXR0ZXIgc2l6ZSkgd2lsbCBuZWVkIGRpZmZlcmVudCB2YWx1ZXMgYXQgZGlmZmVyZW50IHZpZXdwb3J0IHdpZHRocy4gSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgWmVuIEdyaWRzLCB0aGlzIG1lYW50IGNoYW5naW5nIHRoZSBaZW4gR3JpZHMnIGdsb2JhbCB2YXJpYWJsZXMgZWFjaCB0aW1lIHlvdSB3YW50ZWQgdG8gYnVpbGQgYSBsYXlvdXQgYXQgYSBkaWZmZXJlbnQgdmlld3BvcnQgc2l6ZS4gV2l0aCB0aGUgbGF5b3V0IG1vZHVsZSwgeW91IGNhbiBpbnN0ZWFkIHNldCBncmlkIHN5c3RlbSBwcm9wZXJ0aWVzIHRoYXQgb3ZlcnJpZGUgeW91ciBkZWZhdWx0IGdsb2JhbCB2YXJpYWJsZXMgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgbGF5b3V0IG1peGluLlxuLy9cbi8vIEZvciBleGFtcGxlOlxuLy8gYGBgXG4vLyAkemVuLWNvbHVtbnM6IDE7IC8vIERlZmF1bHQgdG8gb25lIGNvbHVtbiBmb3IgbW9iaWxlIGxheW91dC5cbi8vIEBpbmNsdWRlIHplbi1sYXlvdXQoJGNvbHVtbnM6IDMpIHtcbi8vICAgLy8gJHplbi1jb2x1bW5zIGlzIHNldCB0byAzIGluc2lkZSB0aGlzIGJsb2NrIGFuZCBjYW4gYmUgdXNlZCB0byBidWlsZCBhXG4vLyAgIC8vIGxheW91dCBmb3IgdGhlIGZvbGxvd2luZyBicmVha3BvaW50LlxuLy8gICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NzdweCkge1xuLy8gICAgIC5zaWRlYmFyIHtcbi8vICAgICAgIC8vIFRoZSBzaWRlYmFyIHdpbGwgc3BhbiB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSAzIGNvbHVtbnMgZGVmaW5lZC5cbi8vICAgICAgIEBpbmNsdWRlIHplbi1ncmlkLWl0ZW0oMSwgMSk7XG4vLyAgICAgfVxuLy8gICB9XG4vLyB9XG4vLyAvLyAkemVuLWNvbHVtbnMgaXMgYmFjayB0byAxIGFmdGVyIHRoZSB6ZW4tbGF5b3V0KCkgYmxvY2suXG4vLyBgYGBcbi8vXG4vLyBXZWlnaHQ6IC02XG4vL1xuLy8gU3R5bGUgZ3VpZGU6IGxheW91dFxuXG5AaW1wb3J0IFwiLi9ncmlkc1wiO1xuXG4vLyB6ZW4tbGF5b3V0KC4uLilcbi8vXG4vLyBTaG91bGQgYmUgdXNlZCB0byBhZGQgYSB3cmFwcGluZyBibG9jayB3aGVyZSBpdHMgcGFyYW1ldGVycyB3aWxsIG92ZXJyaWRlIHRoZVxuLy8gY29ycmVzcG9uZGluZyBnbG9iYWwgYCR6ZW4tKmAgdmFyaWFibGVzIHdpdGhpbiBpdC5cbi8vXG4vLyBDb21tb24gdXNhZ2U6XG4vLyBgYGBcbi8vIEBpbmNsdWRlIHplbi1sYXlvdXQobSkge1xuLy8gICAvLyBVc2Ugb3RoZXIgWmVuIEdyaWRzIG1peGlucyBhbmQgbGF5b3V0cyB3aXRob3V0IGNoYW5naW5nIGdsb2JhbCB2YXJzLlxuLy8gfVxuLy8gYGBgXG4vLyBvcjpcbi8vIGBgYFxuLy8gQGluY2x1ZGUgemVuLWxheW91dCgkZ3V0dGVyczogMCkge1xuLy8gICAvLyBUaGUgY29kZSBpbiB0aGlzIGJsb2NrIHdpbGwgc2VlIGAkemVuLWd1dHRlcnM6IDBgLCBidXQgY29kZSBhZnRlciB0aGlzXG4vLyAgIC8vIGJsb2NrIHdpbGwgc2VlIHRoZSB1c3VhbCB2YWx1ZSBvZiB0aGF0IGdsb2JhbCB2YXJpYWJsZS5cbi8vIH1cbi8vIGBgYFxuLy9cbi8vICRsYXlvdXQgICAgICAgICAgICAgICAgICAgICAgPSBudWxsIC0gT3B0aW9uYWxseSBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBsYXlvdXQgZnJvbSBgJHplbi1sYXlvdXRzYCB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWxheW91dHNgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWxheW91dC12YXJpYWJsZXMtemVuLWxheW91dHMpLlxuLy8gJGNvbHVtbnMgICAgICAgICAgICAgICAgICAgICA9ICR6ZW4tY29sdW1ucyAtIFRoZSBudW1iZXIgb2YgY29sdW1ucy4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tY29sdW1uc2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1jb2x1bW5zKS5cbi8vICRndXR0ZXJzICAgICAgICAgICAgICAgICAgICAgPSAkemVuLWd1dHRlcnMgLSBUaGUgd2lkdGggb2YgdGhlIGd1dHRlcnMuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlcnNgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVycykuXG4vLyAkZ3V0dGVyLW1ldGhvZCAgICAgICAgICAgICAgID0gJHplbi1ndXR0ZXItbWV0aG9kIC0gVGhlIGd1dHRlciBtZXRob2QgdG8gdXNlLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXItbWV0aG9kYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlci1tZXRob2QpLlxuLy8gJGdyaWQtd2lkdGggICAgICAgICAgICAgICAgICA9ICR6ZW4tZ3JpZC13aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgZW50aXJlIGdyaWQuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1maXhlZC16ZW4tZ3JpZC13aWR0aCkuXG4vLyAkYm94LXNpemluZyAgICAgICAgICAgICAgICAgID0gJHplbi1ib3gtc2l6aW5nIC0gVGhlIGJveCBzaXppbmcgdG8gdXNlLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ib3gtc2l6aW5nYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWJveC1zaXppbmcpLlxuLy8gJGRpcmVjdGlvbiAgICAgICAgICAgICAgICAgICA9ICR6ZW4tZGlyZWN0aW9uIC0gVGhlIGRpcmVjdGlvbiB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWRpcmVjdGlvbmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tZGlyZWN0aW9uKS5cbi8vICRzd2l0Y2gtZGlyZWN0aW9uICAgICAgICAgICAgPSAkemVuLXN3aXRjaC1kaXJlY3Rpb24gLSBXaGV0aGVyIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBkaXJlY3Rpb24uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXN3aXRjaC1kaXJlY3Rpb25gXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXN3aXRjaC1kaXJlY3Rpb24pLlxuLy8gJHJ0bC1zZWxlY3RvciAgICAgICAgICAgICAgICA9ICR6ZW4tcnRsLXNlbGVjdG9yIC0gVGhlIFJUTCBzZWxlY3RvciBmb3IgdGhpcyBiYWNrZ3JvdW5kLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ydGwtc2VsZWN0b3JgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXJ0bC1zZWxlY3RvcikuXG4vLyAkYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlID0gJHplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UgLSBXaGV0aGVyIHRvIGF1dG8taW5jbHVkZSB0aGUgemVuLWdyaWQtaXRlbS1iYXNlKCkgbWl4aW4uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWF1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZWBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UpLlxuLy8gJGF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZSA9ICR6ZW4tYXV0by1pbmNsdWRlLWZsb3ctaXRlbS1iYXNlIC0gV2hldGhlciB0byBhdXRvLWluY2x1ZGUgdGhlIHplbi1mbG93LWl0ZW0tYmFzZSgpIG1peGluLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1hdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2VgXShzZWN0aW9uLWZsb3cuaHRtbCNrc3NyZWYtZmxvdy12YXJpYWJsZXMtemVuLWF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZSkuXG4vLyAkZ3JpZC1jb2xvciAgICAgICAgICAgICAgICAgID0gJHplbi1ncmlkLWNvbG9yIC0gVGhlIGNvbHVtbiBjb2xvciB0byB1c2UgZm9yIHRoZSBiYWNrZ3JvdW5kIGdyaWQgaW1hZ2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWdyaWQtY29sb3JgXShzZWN0aW9uLWJhY2tncm91bmQuaHRtbCNrc3NyZWYtYmFja2dyb3VuZC12YXJpYWJsZXMtemVuLWdyaWQtY29sb3IpLlxuLy8gJGdyaWQtbnVtYmVycyAgICAgICAgICAgICAgICA9ICR6ZW4tZ3JpZC1udW1iZXJzIC0gU3BlY2lmeSB0aGUgc2V0IG9mIGltYWdlcyB1c2VkIGZvciB0aGUgbnVtYmVyaW5nIG9mIHRoZSBjb2x1bW5zIGluIHRoZSBiYWNrZ3JvdW5kIGdyaWQgaW1hZ2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWdyaWQtbnVtYmVyc2BdKHNlY3Rpb24tYmFja2dyb3VuZC5odG1sI2tzc3JlZi1iYWNrZ3JvdW5kLXZhcmlhYmxlcy16ZW4tZ3JpZC1udW1iZXJzKS5cbi8vXG4vLyB3ZWlnaHQ6IC0xMFxuLy9cbi8vIFN0eWxlIGd1aWRlOiBsYXlvdXQuemVuLWxheW91dFxuQG1peGluIHplbi1sYXlvdXQoXG4gICRsYXlvdXQgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgJGNvbHVtbnMgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkZ3V0dGVycyAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRndXR0ZXItbWV0aG9kICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgJGdyaWQtd2lkdGggICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkYm94LXNpemluZyAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRkaXJlY3Rpb24gICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgJHN3aXRjaC1kaXJlY3Rpb24gICAgICAgICAgICAgOiBudWxsLFxuICAkcnRsLXNlbGVjdG9yICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRhdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UgIDogbnVsbCxcbiAgJGF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZSAgOiBudWxsLFxuICAkZ3JpZC1jb2xvciAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRncmlkLW51bWJlcnMgICAgICAgICAgICAgICAgIDogbnVsbFxuKSB7XG5cbiAgLy8gU2F2ZSB0aGUgcHJldmlvdXMgdmVyc2lvbnMgb2YgWmVuJ3MgZ2xvYmFsIHZhcmlhYmxlcy5cbiAgJGdsb2JhbC12YXJzICAgICAgICAgICAgICAgICAgICAgIDogKFxuICAgICdjb2x1bW5zJyAgICAgICAgICAgICAgICAgICAgICAgOiAkemVuLWNvbHVtbnMsXG4gICAgJ2d1dHRlcnMnICAgICAgICAgICAgICAgICAgICAgICA6ICR6ZW4tZ3V0dGVycyxcbiAgICAnZ3V0dGVyLW1ldGhvZCcgICAgICAgICAgICAgICAgIDogJHplbi1ndXR0ZXItbWV0aG9kLFxuICAgICdncmlkLXdpZHRoJyAgICAgICAgICAgICAgICAgICAgOiAkemVuLWdyaWQtd2lkdGgsXG4gICAgJ2JveC1zaXppbmcnICAgICAgICAgICAgICAgICAgICA6ICR6ZW4tYm94LXNpemluZyxcbiAgICAnZGlyZWN0aW9uJyAgICAgICAgICAgICAgICAgICAgIDogJHplbi1kaXJlY3Rpb24sXG4gICAgJ3N3aXRjaC1kaXJlY3Rpb24nICAgICAgICAgICAgICA6ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbixcbiAgICAncnRsLXNlbGVjdG9yJyAgICAgICAgICAgICAgICAgIDogJHplbi1ydGwtc2VsZWN0b3IsXG4gICAgJ2F1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZScgICA6ICR6ZW4tYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlLFxuICAgICdhdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UnICAgOiAkemVuLWF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZSxcbiAgICAnZ3JpZC1jb2xvcicgICAgICAgICAgICAgICAgICAgIDogJHplbi1ncmlkLWNvbG9yLFxuICAgICdncmlkLW51bWJlcnMnICAgICAgICAgICAgICAgICAgOiAkemVuLWdyaWQtbnVtYmVyc1xuICApO1xuXG4gIC8vIEdyYWIgYSBsYXlvdXQgZnJvbSAkemVuLWxheW91dHMgd2hpbGUgZGVmYXVsdGluZyB0byB0aGUgZ2xvYmFsIHZhbHVlcy5cbiAgJGxvY2FsLWRlZmF1bHRzOiAkZ2xvYmFsLXZhcnM7XG4gIEBpZiB0eXBlLW9mKCRsYXlvdXQpICE9ICdudWxsJyBhbmQgbWFwLWhhcy1rZXkoJHplbi1sYXlvdXRzLCAkbGF5b3V0KSB7XG4gICAgJGxvY2FsLWRlZmF1bHRzOiBtYXAtbWVyZ2UoJGxvY2FsLWRlZmF1bHRzLCBtYXAtZ2V0KCR6ZW4tbGF5b3V0cywgJGxheW91dCkpO1xuICB9XG5cbiAgLy8gRW5zdXJlIG91ciBsb2NhbCBwYXJhbWV0ZXJzIGFsbCBoYXZlIGEgdmFsdWUuXG4gIEBpZiB0eXBlLW9mKCRjb2x1bW5zKSA9PSAnbnVsbCcge1xuICAgICRjb2x1bW5zOiBtYXAtZ2V0KCRsb2NhbC1kZWZhdWx0cywgJ2NvbHVtbnMnKTtcbiAgfVxuICBAaWYgdHlwZS1vZigkZ3V0dGVycykgPT0gJ251bGwnIHtcbiAgICAkZ3V0dGVyczogbWFwLWdldCgkbG9jYWwtZGVmYXVsdHMsICdndXR0ZXJzJyk7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGd1dHRlci1tZXRob2QpID09ICdudWxsJyB7XG4gICAgJGd1dHRlci1tZXRob2Q6IG1hcC1nZXQoJGxvY2FsLWRlZmF1bHRzLCAnZ3V0dGVyLW1ldGhvZCcpO1xuICB9XG4gIEBpZiB0eXBlLW9mKCRncmlkLXdpZHRoKSA9PSAnbnVsbCcge1xuICAgICRncmlkLXdpZHRoOiBtYXAtZ2V0KCRsb2NhbC1kZWZhdWx0cywgJ2dyaWQtd2lkdGgnKTtcbiAgfVxuICBAaWYgdHlwZS1vZigkYm94LXNpemluZykgPT0gJ251bGwnIHtcbiAgICAkYm94LXNpemluZzogbWFwLWdldCgkbG9jYWwtZGVmYXVsdHMsICdib3gtc2l6aW5nJyk7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGRpcmVjdGlvbikgPT0gJ251bGwnIHtcbiAgICAkZGlyZWN0aW9uOiBtYXAtZ2V0KCRsb2NhbC1kZWZhdWx0cywgJ2RpcmVjdGlvbicpO1xuICB9XG4gIEBpZiB0eXBlLW9mKCRzd2l0Y2gtZGlyZWN0aW9uKSA9PSAnbnVsbCcge1xuICAgICRzd2l0Y2gtZGlyZWN0aW9uOiBtYXAtZ2V0KCRsb2NhbC1kZWZhdWx0cywgJ3N3aXRjaC1kaXJlY3Rpb24nKTtcbiAgfVxuICBAaWYgdHlwZS1vZigkcnRsLXNlbGVjdG9yKSA9PSAnbnVsbCcge1xuICAgICRydGwtc2VsZWN0b3I6IG1hcC1nZXQoJGxvY2FsLWRlZmF1bHRzLCAncnRsLXNlbGVjdG9yJyk7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGF1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZSkgPT0gJ251bGwnIHtcbiAgICAkYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlOiBtYXAtZ2V0KCRsb2NhbC1kZWZhdWx0cywgJ2F1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZScpO1xuICB9XG4gIEBpZiB0eXBlLW9mKCRhdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UpID09ICdudWxsJyB7XG4gICAgJGF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZTogbWFwLWdldCgkbG9jYWwtZGVmYXVsdHMsICdhdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UnKTtcbiAgfVxuICBAaWYgdHlwZS1vZigkZ3JpZC1jb2xvcikgPT0gJ251bGwnIHtcbiAgICAkZ3JpZC1jb2xvcjogbWFwLWdldCgkbG9jYWwtZGVmYXVsdHMsICdncmlkLWNvbG9yJyk7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGdyaWQtbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAkZ3JpZC1udW1iZXJzOiBtYXAtZ2V0KCRsb2NhbC1kZWZhdWx0cywgJ2dyaWQtbnVtYmVycycpO1xuICB9XG5cbiAgLy8gVGVtcG9yYXJpbHkgb3ZlcnJpZGUgWmVuJ3MgZ2xvYmFsIHZhcmlhYmxlcy5cbiAgJHplbi1jb2x1bW5zICAgICAgICAgICAgICAgICAgICAgIDogJGNvbHVtbnMgIWdsb2JhbDtcbiAgJHplbi1ndXR0ZXJzICAgICAgICAgICAgICAgICAgICAgIDogJGd1dHRlcnMgIWdsb2JhbDtcbiAgJHplbi1ndXR0ZXItbWV0aG9kICAgICAgICAgICAgICAgIDogJGd1dHRlci1tZXRob2QgIWdsb2JhbDtcbiAgJHplbi1ncmlkLXdpZHRoICAgICAgICAgICAgICAgICAgIDogJGdyaWQtd2lkdGggIWdsb2JhbDtcbiAgJHplbi1ib3gtc2l6aW5nICAgICAgICAgICAgICAgICAgIDogJGJveC1zaXppbmcgIWdsb2JhbDtcbiAgJHplbi1kaXJlY3Rpb24gICAgICAgICAgICAgICAgICAgIDogJGRpcmVjdGlvbiAhZ2xvYmFsO1xuICAkemVuLXN3aXRjaC1kaXJlY3Rpb24gICAgICAgICAgICAgOiAkc3dpdGNoLWRpcmVjdGlvbiAhZ2xvYmFsO1xuICAkemVuLXJ0bC1zZWxlY3RvciAgICAgICAgICAgICAgICAgOiAkcnRsLXNlbGVjdG9yICFnbG9iYWw7XG4gICR6ZW4tYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlICA6ICRhdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UgIWdsb2JhbDtcbiAgJHplbi1hdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UgIDogJGF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZSAhZ2xvYmFsO1xuICAkemVuLWdyaWQtY29sb3IgICAgICAgICAgICAgICAgICAgOiAkZ3JpZC1jb2xvciAhZ2xvYmFsO1xuICAkemVuLWdyaWQtbnVtYmVycyAgICAgICAgICAgICAgICAgOiAkZ3JpZC1udW1iZXJzICFnbG9iYWw7XG5cbiAgLy8gR2VuZXJhdGUgdGhlIGNvbnRlbnQgaW4gdGhlIG5ldyBnbG9iYWwgY29udGV4dC5cbiAgQGNvbnRlbnQ7XG5cbiAgLy8gUmVzdG9yZSBaZW4ncyBnbG9iYWwgdmFyaWFibGVzLlxuICAkemVuLWNvbHVtbnMgICAgICAgICAgICAgICAgICAgICAgOiBtYXAtZ2V0KCRnbG9iYWwtdmFycywgJ2NvbHVtbnMnKSAhZ2xvYmFsO1xuICAkemVuLWd1dHRlcnMgICAgICAgICAgICAgICAgICAgICAgOiBtYXAtZ2V0KCRnbG9iYWwtdmFycywgJ2d1dHRlcnMnKSAhZ2xvYmFsO1xuICAkemVuLWd1dHRlci1tZXRob2QgICAgICAgICAgICAgICAgOiBtYXAtZ2V0KCRnbG9iYWwtdmFycywgJ2d1dHRlci1tZXRob2QnKSAhZ2xvYmFsO1xuICAkemVuLWdyaWQtd2lkdGggICAgICAgICAgICAgICAgICAgOiBtYXAtZ2V0KCRnbG9iYWwtdmFycywgJ2dyaWQtd2lkdGgnKSAhZ2xvYmFsO1xuICAkemVuLWJveC1zaXppbmcgICAgICAgICAgICAgICAgICAgOiBtYXAtZ2V0KCRnbG9iYWwtdmFycywgJ2JveC1zaXppbmcnKSAhZ2xvYmFsO1xuICAkemVuLWRpcmVjdGlvbiAgICAgICAgICAgICAgICAgICAgOiBtYXAtZ2V0KCRnbG9iYWwtdmFycywgJ2RpcmVjdGlvbicpICFnbG9iYWw7XG4gICR6ZW4tc3dpdGNoLWRpcmVjdGlvbiAgICAgICAgICAgICA6IG1hcC1nZXQoJGdsb2JhbC12YXJzLCAnc3dpdGNoLWRpcmVjdGlvbicpICFnbG9iYWw7XG4gICR6ZW4tcnRsLXNlbGVjdG9yICAgICAgICAgICAgICAgICA6IG1hcC1nZXQoJGdsb2JhbC12YXJzLCAncnRsLXNlbGVjdG9yJykgIWdsb2JhbDtcbiAgJHplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UgIDogbWFwLWdldCgkZ2xvYmFsLXZhcnMsICdhdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UnKSAhZ2xvYmFsO1xuICAkemVuLWF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZSAgOiBtYXAtZ2V0KCRnbG9iYWwtdmFycywgJ2F1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZScpICFnbG9iYWw7XG4gICR6ZW4tZ3JpZC1jb2xvciAgICAgICAgICAgICAgICAgICA6IG1hcC1nZXQoJGdsb2JhbC12YXJzLCAnZ3JpZC1jb2xvcicpICFnbG9iYWw7XG4gICR6ZW4tZ3JpZC1udW1iZXJzICAgICAgICAgICAgICAgICA6IG1hcC1nZXQoJGdsb2JhbC12YXJzLCAnZ3JpZC1udW1iZXJzJykgIWdsb2JhbDtcbn1cblxuLy8gemVuLWJyZWFrcG9pbnQoLi4uKVxuLy9cbi8vIENvbWJpbmVzIHplbi1sYXlvdXQoKSB3aXRoIHRoZSBCcmVha3BvaW50IG1vZHVsZSdzIGJyZWFrcG9pbnQoKSBtaXhpbi5cbi8vXG4vLyBJbnN0ZWFkIG9mIG5lc3RpbmcgemVuLWxheW91dCgpIHdpdGggYnJlYWtwb2ludCgpIGxpa2UgdGhpczpcbi8vIGBgYFxuLy8gQGluY2x1ZGUgemVuLWxheW91dCgkbGF5b3V0OiAnbScpIHtcbi8vICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG4vLyAgICAgLy8gRG8gc29tZXRoaW5nLlxuLy8gICB9XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBZb3UgY2FuIHVzZSB0aGUgemVuLWJyZWFrcG9pbnQoKSBtaXhpbiBsaWtlIHRoaXM6XG4vLyBgYGBcbi8vIEBpbmNsdWRlIHplbi1icmVha3BvaW50KCRtZWRpdW0sICRsYXlvdXQ6ICdtJykge1xuLy8gICAvLyBEbyBzb21ldGhpbmcuXG4vLyB9XG4vLyBgYGBcbi8vXG4vLyAkcXVlcnkgICAgICAgICAgICAgICAgICAgICAgIC0gUmVxdWlyZWQuIFRoaXMgcGFyYW1ldGVyIGlzIHBhc3NlZCBvbiB0byB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4uXG4vLyAkbm8tcXVlcnkgICAgICAgICAgICAgICAgICAgID0gZmFsc2UgLSBUaGlzIHBhcmFtZXRlciBpcyBwYXNzZWQgb24gdG8gdGhlIGBicmVha3BvaW50KClgIG1peGluLlxuLy8gJGxheW91dCAgICAgICAgICAgICAgICAgICAgICA9IG51bGwgLSBPcHRpb25hbGx5IHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGxheW91dCBmcm9tIGAkemVuLWxheW91dHNgIHRvIHVzZS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tbGF5b3V0c2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtbGF5b3V0LXZhcmlhYmxlcy16ZW4tbGF5b3V0cykuXG4vLyAkY29sdW1ucyAgICAgICAgICAgICAgICAgICAgID0gJHplbi1jb2x1bW5zIC0gVGhlIG51bWJlciBvZiBjb2x1bW5zLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1jb2x1bW5zYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWNvbHVtbnMpLlxuLy8gJGd1dHRlcnMgICAgICAgICAgICAgICAgICAgICA9ICR6ZW4tZ3V0dGVycyAtIFRoZSB3aWR0aCBvZiB0aGUgZ3V0dGVycy4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZ3V0dGVyc2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1ndXR0ZXJzKS5cbi8vICRndXR0ZXItbWV0aG9kICAgICAgICAgICAgICAgPSAkemVuLWd1dHRlci1tZXRob2QgLSBUaGUgZ3V0dGVyIG1ldGhvZCB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVyLW1ldGhvZCkuXG4vLyAkZ3JpZC13aWR0aCAgICAgICAgICAgICAgICAgID0gJHplbi1ncmlkLXdpZHRoIC0gVGhlIHdpZHRoIG9mIHRoZSBlbnRpcmUgZ3JpZC4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZ3V0dGVyLW1ldGhvZGBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLWZpeGVkLXplbi1ncmlkLXdpZHRoKS5cbi8vICRib3gtc2l6aW5nICAgICAgICAgICAgICAgICAgPSAkemVuLWJveC1zaXppbmcgLSBUaGUgYm94IHNpemluZyB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWJveC1zaXppbmdgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tYm94LXNpemluZykuXG4vLyAkZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgID0gJHplbi1kaXJlY3Rpb24gLSBUaGUgZGlyZWN0aW9uIHRvIHVzZS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1kaXJlY3Rpb24pLlxuLy8gJHN3aXRjaC1kaXJlY3Rpb24gICAgICAgICAgICA9ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbiAtIFdoZXRoZXIgdG8gc3dpdGNoIHRoZSBkZWZhdWx0IGRpcmVjdGlvbi4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tc3dpdGNoLWRpcmVjdGlvbmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tc3dpdGNoLWRpcmVjdGlvbikuXG4vLyAkcnRsLXNlbGVjdG9yICAgICAgICAgICAgICAgID0gJHplbi1ydGwtc2VsZWN0b3IgLSBUaGUgUlRMIHNlbGVjdG9yIGZvciB0aGlzIGJhY2tncm91bmQuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXJ0bC1zZWxlY3RvcmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tcnRsLXNlbGVjdG9yKS5cbi8vICRhdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UgPSAkemVuLWF1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZSAtIFdoZXRoZXIgdG8gYXV0by1pbmNsdWRlIHRoZSB6ZW4tZ3JpZC1pdGVtLWJhc2UoKSBtaXhpbi4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWF1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZSkuXG4vLyAkYXV0by1pbmNsdWRlLWZsb3ctaXRlbS1iYXNlID0gJHplbi1hdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UgLSBXaGV0aGVyIHRvIGF1dG8taW5jbHVkZSB0aGUgemVuLWZsb3ctaXRlbS1iYXNlKCkgbWl4aW4uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZWBdKHNlY3Rpb24tZmxvdy5odG1sI2tzc3JlZi1mbG93LXZhcmlhYmxlcy16ZW4tYXV0by1pbmNsdWRlLWZsb3ctaXRlbS1iYXNlKS5cbi8vICRncmlkLWNvbG9yICAgICAgICAgICAgICAgICAgPSAkemVuLWdyaWQtY29sb3IgLSBUaGUgY29sdW1uIGNvbG9yIHRvIHVzZSBmb3IgdGhlIGJhY2tncm91bmQgZ3JpZCBpbWFnZS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZ3JpZC1jb2xvcmBdKHNlY3Rpb24tYmFja2dyb3VuZC5odG1sI2tzc3JlZi1iYWNrZ3JvdW5kLXZhcmlhYmxlcy16ZW4tZ3JpZC1jb2xvcikuXG4vLyAkZ3JpZC1udW1iZXJzICAgICAgICAgICAgICAgID0gJHplbi1ncmlkLW51bWJlcnMgLSBTcGVjaWZ5IHRoZSBzZXQgb2YgaW1hZ2VzIHVzZWQgZm9yIHRoZSBudW1iZXJpbmcgb2YgdGhlIGNvbHVtbnMgaW4gdGhlIGJhY2tncm91bmQgZ3JpZCBpbWFnZS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZ3JpZC1udW1iZXJzYF0oc2VjdGlvbi1iYWNrZ3JvdW5kLmh0bWwja3NzcmVmLWJhY2tncm91bmQtdmFyaWFibGVzLXplbi1ncmlkLW51bWJlcnMpLlxuLy9cbi8vIFN0eWxlIGd1aWRlOiBsYXlvdXQuemVuLWJyZWFrcG9pbnRcbkBtaXhpbiB6ZW4tYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6IGZhbHNlLFxuICAkbGF5b3V0ICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRjb2x1bW5zICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgJGd1dHRlcnMgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkZ3V0dGVyLW1ldGhvZCAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRncmlkLXdpZHRoICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgJGJveC1zaXppbmcgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRzd2l0Y2gtZGlyZWN0aW9uICAgICAgICAgICAgIDogbnVsbCxcbiAgJHJ0bC1zZWxlY3RvciAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlICA6IG51bGwsXG4gICRhdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UgIDogbnVsbCxcbiAgJGdyaWQtY29sb3IgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkZ3JpZC1udW1iZXJzICAgICAgICAgICAgICAgICA6IG51bGxcbikge1xuXG4gIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdicmVha3BvaW50Jykge1xuICAgIEBlcnJvciAnWW91IG5lZWQgdG8gQGltcG9ydCB0aGUgYnJlYWtwb2ludCBtaXhpbiBiZWZvcmUgdXNpbmcgemVuLWJyZWFrcG9pbnQoKS4nO1xuICB9XG5cbiAgQGluY2x1ZGUgemVuLWxheW91dChcbiAgICAkbGF5b3V0LFxuICAgICRjb2x1bW5zLFxuICAgICRndXR0ZXJzLFxuICAgICRndXR0ZXItbWV0aG9kLFxuICAgICRncmlkLXdpZHRoLFxuICAgICRib3gtc2l6aW5nLFxuICAgICRkaXJlY3Rpb24sXG4gICAgJHN3aXRjaC1kaXJlY3Rpb24sXG4gICAgJHJ0bC1zZWxlY3RvcixcbiAgICAkYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlLFxuICAgICRhdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UsXG4gICAgJGdyaWQtY29sb3IsXG4gICAgJGdyaWQtbnVtYmVyc1xuICApIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gemVuLW1xKC4uLilcbi8vXG4vLyBBbiBhbGlhcyBmb3IgdGhlIFtgemVuLWJyZWFrcG9pbnQoKWBdKCNrc3NyZWYtbGF5b3V0LXplbi1icmVha3BvaW50KSBtaXhpbi5cbi8vXG4vLyBTdHlsZSBndWlkZTogbGF5b3V0Lnplbi1tcVxuQG1peGluIHplbi1tcShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6IGZhbHNlLFxuICAkbGF5b3V0ICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRjb2x1bW5zICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgJGd1dHRlcnMgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkZ3V0dGVyLW1ldGhvZCAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRncmlkLXdpZHRoICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgJGJveC1zaXppbmcgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRzd2l0Y2gtZGlyZWN0aW9uICAgICAgICAgICAgIDogbnVsbCxcbiAgJHJ0bC1zZWxlY3RvciAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlICA6IG51bGwsXG4gICRhdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UgIDogbnVsbCxcbiAgJGdyaWQtY29sb3IgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkZ3JpZC1udW1iZXJzICAgICAgICAgICAgICAgICA6IG51bGxcbikge1xuXG4gIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdtcScpIHtcbiAgICBAZXJyb3IgJ1lvdSBuZWVkIHRvIEBpbXBvcnQgdGhlIG1xIG1peGluIGJlZm9yZSB1c2luZyB6ZW4tbXEoKS4nO1xuICB9XG5cbiAgQGluY2x1ZGUgemVuLWxheW91dChcbiAgICAkbGF5b3V0LFxuICAgICRjb2x1bW5zLFxuICAgICRndXR0ZXJzLFxuICAgICRndXR0ZXItbWV0aG9kLFxuICAgICRncmlkLXdpZHRoLFxuICAgICRib3gtc2l6aW5nLFxuICAgICRkaXJlY3Rpb24sXG4gICAgJHN3aXRjaC1kaXJlY3Rpb24sXG4gICAgJHJ0bC1zZWxlY3RvcixcbiAgICAkYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlLFxuICAgICRhdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UsXG4gICAgJGdyaWQtY29sb3IsXG4gICAgJGdyaWQtbnVtYmVyc1xuICApIHtcbiAgICBAaW5jbHVkZSBtcSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIHplbi1yZXNwb25kLXRvKC4uLilcbi8vXG4vLyBDb21iaW5lcyB6ZW4tbGF5b3V0KCkgd2l0aCB0aGUgQnJlYWtwb2ludCBtb2R1bGUncyByZXNwb25kLXRvKCkgbWl4aW4uXG4vL1xuLy8gSW5zdGVhZCBvZiBuZXN0aW5nIHplbi1sYXlvdXQoKSB3aXRoIHJlc3BvbmQtdG8oKSBsaWtlIHRoaXM6XG4vLyBgYGBcbi8vIEBpbmNsdWRlIHplbi1sYXlvdXQoJGxheW91dDogJ20nKSB7XG4vLyAgIEBpbmNsdWRlIHJlc3BvbmQtdG8oJ20nKSB7XG4vLyAgICAgLy8gRG8gc29tZXRoaW5nLlxuLy8gICB9XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBZb3UgY2FuIHVzZSB0aGUgemVuLXJlc3BvbmQtdG8oKSBtaXhpbiBsaWtlIHRoaXM6XG4vLyBgYGBcbi8vIEBpbmNsdWRlIHplbi1yZXNwb25kLXRvKCdtJykge1xuLy8gICAvLyBEbyBzb21ldGhpbmcuXG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBOb3RlIHRoYXQgdGhlICdtJyBpbiB0aGUgYWJvdmUgZXhhbXBsZSB1c2VzIHRoZSBzYW1lIG5hbWUgaW4gdGhlXG4vLyAkYnJlYWtwb2ludHMgbWFwIGFzIGlzIHVzZWQgaW4gdGhlICR6ZW4tbGF5b3V0cyBtYXAuXG4vL1xuLy8gWW91IGNhbiB1c2UgYSBkaWZmZXJlbnRseS1uYW1lZCBsYXlvdXQgYnkgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRoZSAkbGF5b3V0XG4vLyBwYXJhbWV0ZXIgbGlrZSB0aGlzOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB6ZW4tcmVzcG9uZC10bygnbScsICRsYXlvdXQ6ICdtZWRpdW0nKSB7XG4vLyAgIC8vIERvIHNvbWV0aGluZy5cbi8vIH1cbi8vIGBgYFxuLy9cbi8vICRjb250ZXh0ICAgICAgICAgICAgICAgICAgICAgLSBSZXF1aXJlZC4gVGhpcyBwYXJhbWV0ZXIgaXMgcGFzc2VkIG9uIHRvIHRoZSByZXNwb25kLXRvKCkgbWl4aW4uXG4vLyAkbm8tcXVlcnkgICAgICAgICAgICAgICAgICAgID0gZmFsc2UgLSBUaGlzIHBhcmFtZXRlciBpcyBwYXNzZWQgb24gdG8gdGhlIHJlc3BvbmQtdG8oKSBtaXhpbi5cbi8vICRsYXlvdXQgICAgICAgICAgICAgICAgICAgICAgPSBudWxsIC0gT3B0aW9uYWxseSBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBsYXlvdXQgZnJvbSBgJHplbi1sYXlvdXRzYCB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWxheW91dHNgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWxheW91dC12YXJpYWJsZXMtemVuLWxheW91dHMpLlxuLy8gJGNvbHVtbnMgICAgICAgICAgICAgICAgICAgICA9ICR6ZW4tY29sdW1ucyAtIFRoZSBudW1iZXIgb2YgY29sdW1ucy4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tY29sdW1uc2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1jb2x1bW5zKS5cbi8vICRndXR0ZXJzICAgICAgICAgICAgICAgICAgICAgPSAkemVuLWd1dHRlcnMgLSBUaGUgd2lkdGggb2YgdGhlIGd1dHRlcnMuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlcnNgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVycykuXG4vLyAkZ3V0dGVyLW1ldGhvZCAgICAgICAgICAgICAgID0gJHplbi1ndXR0ZXItbWV0aG9kIC0gVGhlIGd1dHRlciBtZXRob2QgdG8gdXNlLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXItbWV0aG9kYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlci1tZXRob2QpLlxuLy8gJGdyaWQtd2lkdGggICAgICAgICAgICAgICAgICA9ICR6ZW4tZ3JpZC13aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgZW50aXJlIGdyaWQuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1maXhlZC16ZW4tZ3JpZC13aWR0aCkuXG4vLyAkYm94LXNpemluZyAgICAgICAgICAgICAgICAgID0gJHplbi1ib3gtc2l6aW5nIC0gVGhlIGJveCBzaXppbmcgdG8gdXNlLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ib3gtc2l6aW5nYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWJveC1zaXppbmcpLlxuLy8gJGRpcmVjdGlvbiAgICAgICAgICAgICAgICAgICA9ICR6ZW4tZGlyZWN0aW9uIC0gVGhlIGRpcmVjdGlvbiB0byB1c2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWRpcmVjdGlvbmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tZGlyZWN0aW9uKS5cbi8vICRzd2l0Y2gtZGlyZWN0aW9uICAgICAgICAgICAgPSAkemVuLXN3aXRjaC1kaXJlY3Rpb24gLSBXaGV0aGVyIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBkaXJlY3Rpb24uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXN3aXRjaC1kaXJlY3Rpb25gXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXN3aXRjaC1kaXJlY3Rpb24pLlxuLy8gJHJ0bC1zZWxlY3RvciAgICAgICAgICAgICAgICA9ICR6ZW4tcnRsLXNlbGVjdG9yIC0gVGhlIFJUTCBzZWxlY3RvciBmb3IgdGhpcyBiYWNrZ3JvdW5kLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ydGwtc2VsZWN0b3JgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXJ0bC1zZWxlY3RvcikuXG4vLyAkYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlID0gJHplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UgLSBXaGV0aGVyIHRvIGF1dG8taW5jbHVkZSB0aGUgemVuLWdyaWQtaXRlbS1iYXNlKCkgbWl4aW4uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWF1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZWBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2UpLlxuLy8gJGF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZSA9ICR6ZW4tYXV0by1pbmNsdWRlLWZsb3ctaXRlbS1iYXNlIC0gV2hldGhlciB0byBhdXRvLWluY2x1ZGUgdGhlIHplbi1mbG93LWl0ZW0tYmFzZSgpIG1peGluLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1hdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2VgXShzZWN0aW9uLWZsb3cuaHRtbCNrc3NyZWYtZmxvdy12YXJpYWJsZXMtemVuLWF1dG8taW5jbHVkZS1mbG93LWl0ZW0tYmFzZSkuXG4vLyAkZ3JpZC1jb2xvciAgICAgICAgICAgICAgICAgID0gJHplbi1ncmlkLWNvbG9yIC0gVGhlIGNvbHVtbiBjb2xvciB0byB1c2UgZm9yIHRoZSBiYWNrZ3JvdW5kIGdyaWQgaW1hZ2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWdyaWQtY29sb3JgXShzZWN0aW9uLWJhY2tncm91bmQuaHRtbCNrc3NyZWYtYmFja2dyb3VuZC12YXJpYWJsZXMtemVuLWdyaWQtY29sb3IpLlxuLy8gJGdyaWQtbnVtYmVycyAgICAgICAgICAgICAgICA9ICR6ZW4tZ3JpZC1udW1iZXJzIC0gU3BlY2lmeSB0aGUgc2V0IG9mIGltYWdlcyB1c2VkIGZvciB0aGUgbnVtYmVyaW5nIG9mIHRoZSBjb2x1bW5zIGluIHRoZSBiYWNrZ3JvdW5kIGdyaWQgaW1hZ2UuIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWdyaWQtbnVtYmVyc2BdKHNlY3Rpb24tYmFja2dyb3VuZC5odG1sI2tzc3JlZi1iYWNrZ3JvdW5kLXZhcmlhYmxlcy16ZW4tZ3JpZC1udW1iZXJzKS5cbi8vXG4vLyBTdHlsZSBndWlkZTogbGF5b3V0Lnplbi1yZXNwb25kLXRvXG5AbWl4aW4gemVuLXJlc3BvbmQtdG8oXG4gICRjb250ZXh0LFxuICAkbm8tcXVlcnk6IGZhbHNlLFxuICAkbGF5b3V0ICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRjb2x1bW5zICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgJGd1dHRlcnMgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkZ3V0dGVyLW1ldGhvZCAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRncmlkLXdpZHRoICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgJGJveC1zaXppbmcgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICRzd2l0Y2gtZGlyZWN0aW9uICAgICAgICAgICAgIDogbnVsbCxcbiAgJHJ0bC1zZWxlY3RvciAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlICA6IG51bGwsXG4gICRhdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UgIDogbnVsbCxcbiAgJGdyaWQtY29sb3IgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAkZ3JpZC1udW1iZXJzICAgICAgICAgICAgICAgICA6IG51bGxcbikge1xuXG4gIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdyZXNwb25kLXRvJykge1xuICAgIEBlcnJvciAnWW91IG5lZWQgdG8gQGltcG9ydCB0aGUgcmVzcG9uZC10byBtaXhpbiBiZWZvcmUgdXNpbmcgemVuLXJlc3BvbmQtdG8oKS4nO1xuICB9XG5cbiAgLy8gQWxsb3cgdGhlIGZpcnN0IHBhcmFtZXRlciB0byBjb250cm9sIGJvdGggJGNvbnRleHQgYW5kICRsYXlvdXQuXG4gIEBpZiB0eXBlLW9mKCRsYXlvdXQpID09ICdudWxsJyBhbmQgbWFwLWhhcy1rZXkoJHplbi1sYXlvdXRzLCAkY29udGV4dCkge1xuICAgICRsYXlvdXQ6ICRjb250ZXh0O1xuICB9XG5cbiAgQGluY2x1ZGUgemVuLWxheW91dChcbiAgICAkbGF5b3V0LFxuICAgICRjb2x1bW5zLFxuICAgICRndXR0ZXJzLFxuICAgICRndXR0ZXItbWV0aG9kLFxuICAgICRncmlkLXdpZHRoLFxuICAgICRib3gtc2l6aW5nLFxuICAgICRkaXJlY3Rpb24sXG4gICAgJHN3aXRjaC1kaXJlY3Rpb24sXG4gICAgJHJ0bC1zZWxlY3RvcixcbiAgICAkYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlLFxuICAgICRhdXRvLWluY2x1ZGUtZmxvdy1pdGVtLWJhc2UsXG4gICAgJGdyaWQtY29sb3IsXG4gICAgJGdyaWQtbnVtYmVyc1xuICApIHtcbiAgICBAaW5jbHVkZSByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gVW5kbyBtb2R1bGVcbi8vXG4vLyBUaGUgdW5kbyBtb2R1bGUgZm9yIHRoZSBaZW4gR3JpZHMgc3lzdGVtLlxuLy9cbi8vIFdpdGggcmVzcG9uc2l2ZSBkZXNpZ24sIGl0IGlzIG5vdCB1bmNvbW1vbiB0byBoYXZlIHdyYXBwaW5nIGVsZW1lbnRzIHRoYXQgYXJlIGhhdmUgZ3JpZCBzdHlsaW5nIGF0IHNvbWUgYnJlYWtwb2ludHMsIGJ1dCBub3QgYXQgb3RoZXIgYnJlYWtwb2ludHMuIFRoZSB1bmRvIG1vZHVsZSBwcm92aWRlcyBhIHNldCBvZiBtaXhpbnMgdGhhdCBhbGxvdyB5b3UgdG8gdW5kbyB0aGUgQ1NTIG9mIG90aGVyIFplbiBHcmlkcyBtaXhpbnMuXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IHVuZG9cblxuQGltcG9ydCBcIi4vZ3JpZHNcIjtcblxuXG4vLyB1bmRvLXplbi1ncmlkLWNvbnRhaW5lcigpXG4vL1xuLy8gQXBwbHkgdGhpcyB0byB1bmRvIHRoZSBncmlkIGNvbnRhaW5lciBzdHlsaW5nIGFwcGxpZWQgd2l0aCBbYHplbi1ncmlkLWNvbnRhaW5lcigpYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy16ZW4tZ3JpZC1jb250YWluZXIpLlxuLy9cbi8vIE5PVEU6IGlmIGAkY29udGV4dGAgaXMgYGZsb3dgLCB0aGUgYHplbi1ncmlkLWNvbnRhaW5lcigpYCBzZXQgdGhlIGxlZnQgYW5kIHJpZ2h0IHBhZGRpbmcgdG8gYDBgIHRvIHByZXZlbnQgaXQgZnJvbSBtZXNzaW5nIHVwIHRoZSBhbGlnbm1lbnQgb2YgdGhlIG5lc3RlZCBncmlkLiBTaW5jZSBaZW4gR3JpZHMgZG9lc24ndCBrbm93IHdoYXQgeW91IHByZXZpb3VzbHkgdXNlZCBmb3IgdGhpcyBlbGVtZW50J3MgcGFkZGluZywgdGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdCBhdXRvbWF0aWNhbGx5OyB5b3Ugd2lsbCBuZWVkIHRvIG1hbnVhbGx5IHJlc2V0IHRoZSBwYWRkaW5nLlxuLy9cbi8vIENvbW1vbiB1c2FnZTpcbi8vIGBgYFxuLy8gQGluY2x1ZGUgdW5kby16ZW4tZ3JpZC1jb250YWluZXIoKTtcbi8vIGBgYFxuLy8gb3I6XG4vLyBgYGBcbi8vIEBpbmNsdWRlIHVuZG8temVuLWdyaWQtY29udGFpbmVyKGdyaWQtaXRlbSk7XG4vLyBgYGBcbi8vXG4vLyAkY29udGV4dCAgICAgICAgICAgID0gbm9uZSAtIElmIHRoaXMgZ3JpZCBpcyBuZXN0ZWQgaW5zaWRlIGFub3RoZXIgZ3JpZCwgdGhlIGAkY29udGV4dGAgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIGFsaWduIHRoZSBuZXN0ZWQgZ3JpZCB3aXRoIHRoZSBwYXJlbnQgZ3JpZC4gSXQgY2FuIGJlIHNldCB0byBgbm9uZWAsIGBncmlkLWl0ZW1gLCBvciBgZmxvd2AuXG4vLyAkZ3V0dGVycyAgICAgICAgICAgID0gJHplbi1ndXR0ZXJzIC0gVGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzIGZvciB0aGlzIGNvbnRhaW5lci4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZ3V0dGVyc2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1ndXR0ZXJzKS5cbi8vICRndXR0ZXItbWV0aG9kICAgICAgPSAkemVuLWd1dHRlci1tZXRob2QgLSBUaGUgZ3V0dGVyIG1ldGhvZCB0byB1c2UgZm9yIHRoaXMgY29udGFpbmVyLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXItbWV0aG9kYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlci1tZXRob2QpLlxuLy8gJGRpcmVjdGlvbiAgICAgICAgICA9ICR6ZW4tZGlyZWN0aW9uIC0gVGhlIGRpcmVjdGlvbiB0byB1c2UgZm9yIHRoaXMgY29udGFpbmVyLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1kaXJlY3Rpb25gXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLWRpcmVjdGlvbikuXG4vLyAkc3dpdGNoLWRpcmVjdGlvbiAgID0gJHplbi1zd2l0Y2gtZGlyZWN0aW9uIC0gV2hldGhlciB0byBzd2l0Y2ggdGhlIGRlZmF1bHQgZGlyZWN0aW9uIGZvciB0aGlzIGNvbnRhaW5lci4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tc3dpdGNoLWRpcmVjdGlvbmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tc3dpdGNoLWRpcmVjdGlvbikuXG4vLyAkcnRsLXNlbGVjdG9yICAgICAgID0gJHplbi1ydGwtc2VsZWN0b3IgLSBUaGUgUlRMIHNlbGVjdG9yIGZvciB0aGlzIGNvbnRhaW5lci4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tcnRsLXNlbGVjdG9yYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1ydGwtc2VsZWN0b3IpLlxuLy9cbi8vIHdlaWdodDogLTEwXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IHVuZG8udW5kby16ZW4tZ3JpZC1jb250YWluZXJcbkBtaXhpbiB1bmRvLXplbi1ncmlkLWNvbnRhaW5lcihcbiAgJGNvbnRleHQgICAgICAgICAgICA6IG5vbmUsXG4gICRndXR0ZXJzICAgICAgICAgICAgOiAkemVuLWd1dHRlcnMsXG4gICRndXR0ZXItbWV0aG9kICAgICAgOiAkemVuLWd1dHRlci1tZXRob2QsXG4gICRkaXJlY3Rpb24gICAgICAgICAgOiAkemVuLWRpcmVjdGlvbixcbiAgJHN3aXRjaC1kaXJlY3Rpb24gICA6ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbixcbiAgJHJ0bC1zZWxlY3RvciAgICAgICA6ICR6ZW4tcnRsLXNlbGVjdG9yXG4pIHtcblxuICAkZGlyOiAkZGlyZWN0aW9uO1xuICBAaWYgJHN3aXRjaC1kaXJlY3Rpb24ge1xuICAgICRkaXI6IHplbi1kaXJlY3Rpb24tc3dpdGNoKCRkaXIpO1xuICB9XG5cbiAgQGlmICRjb250ZXh0ID09IGZsb3ctaXRlbSB7XG4gICAgQHdhcm4gXCJ6ZW4tZ3JpZC1jb250YWluZXIoKSdzICRjb250ZXh0IGNhbm5vdCBiZSBzZXQgdG86IGZsb3ctaXRlbS4gSXQgaGFzIGJlZW4gc2V0IHRvOiBmbG93LlwiO1xuICAgICRjb250ZXh0OiBmbG93O1xuICB9XG4gIEBlbHNlIGlmICRjb250ZXh0ID09IGdyaWQge1xuICAgIEB3YXJuIFwiemVuLWdyaWQtY29udGFpbmVyKCkncyAkY29udGV4dCBjYW5ub3QgYmUgc2V0IHRvOiBncmlkLiBJdCBoYXMgYmVlbiBzZXQgdG86IGdyaWQtaXRlbS5cIjtcbiAgICAkY29udGV4dDogZ3JpZC1pdGVtO1xuICB9XG5cbiAgLy8gQFRPRE86IFRoaXMgaXMgYSBwcmUtSUU4IGxpbmUgb2YgY29kZTsgZG9uJ3QgcmVtZW1iZXIgd2h5IGl0cyBuZWVkZWQuXG4gIEBpZiB6ZW4tc3VwcG9ydC1mb3ItaWUoNykge1xuICAgICpwb3NpdGlvbjogc3RhdGljO1xuICB9XG5cbiAgLy8gVW4tZG8gdGhlIFwibWljcm8gY2xlYXJmaXhcIi5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IG5vcm1hbDtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogbm9ybWFsO1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBjbGVhcjogbm9uZTtcbiAgfVxuICBAaWYgemVuLXN1cHBvcnQtZm9yLWllKDcpIHtcbiAgICAqem9vbTogbm9ybWFsO1xuICB9XG5cbiAgLy8gUmVzZXQgdGhlIG5lZ2F0aXZlIG1hcmdpbnMgdGhhdCB1bi1kaWQgdGhlIGd1dHRlciBwYWRkaW5nIG9mIHRoZSBwYXJlbnRcbiAgLy8gZ3JpZCBpdGVtLlxuICBAaWYgJGNvbnRleHQgPT0gZmxvdyBhbmQgJGd1dHRlci1tZXRob2QgPT0gcGFkZGluZyB7XG4gICAgbWFyZ2luOiB7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgfVxuXG4gICAgLy8gSWYgJGd1dHRlcnMgaXMgYW4gb2RkIG51bWJlciBvZiBwaXhlbHMsIHdlIG5lZWQgc3BlY2lhbCBSVEwgaGFuZGxpbmcuXG4gICAgQGlmIHplbi1oYWxmLWd1dHRlcigkZ3V0dGVycywgbGVmdCwgJGRpcikgIT0gemVuLWhhbGYtZ3V0dGVyKCRndXR0ZXJzLCByaWdodCwgJGRpcikge1xuICAgICAgQGluY2x1ZGUgemVuLXJ0bCgkcnRsLXNlbGVjdG9yKSB7XG4gICAgICAgIG1hcmdpbjoge1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZS1hZGQgdGhlIG9yaWdpbmFsIGd1dHRlcnMgdG8gdGhlIGdyaWQgaXRlbS5cbiAgQGlmICRjb250ZXh0ID09IGdyaWQtaXRlbSBhbmQgJGd1dHRlci1tZXRob2QgPT0gcGFkZGluZyB7XG4gICAgQGluY2x1ZGUgemVuLWFwcGx5LWd1dHRlci1wYWRkaW5nKCRndXR0ZXJzLCAkZGlyZWN0aW9uLCAkc3dpdGNoLWRpcmVjdGlvbiwgJHJ0bC1zZWxlY3Rvcik7XG4gIH1cbn1cblxuLy8gdW5kby16ZW4tZ3JpZC1pdGVtKClcbi8vXG4vLyBBcHBseSB0aGlzIHRvIHVuZG8gdGhlIGdyaWQgaXRlbSBzdHlsaW5nIGFwcGxpZWQgd2l0aCBbYHplbi1ncmlkLWl0ZW0oKWBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtemVuLWdyaWQtaXRlbSkuXG4vL1xuLy8gQ29tbW9uIHVzYWdlOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB1bmRvLXplbi1ncmlkLWl0ZW0oKTtcbi8vIGBgYFxuLy9cbi8vICRkaXJlY3Rpb24gICAgICAgICAgPSAkemVuLWRpcmVjdGlvbiAtIFRoZSBmbG9hdGluZyBkaXJlY3Rpb24gdG8gdXNlIGZvciB0aGlzIGdyaWQgaXRlbS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1kaXJlY3Rpb24pLlxuLy8gJGd1dHRlcnMgICAgICAgICAgICA9ICR6ZW4tZ3V0dGVycyAtIFRoZSB3aWR0aCBvZiB0aGUgZ3V0dGVycyBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlcnNgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVycykuXG4vLyAkZ3V0dGVyLW1ldGhvZCAgICAgID0gJHplbi1ndXR0ZXItbWV0aG9kIC0gVGhlIGd1dHRlciBtZXRob2QgdG8gdXNlIGZvciB0aGlzIGdyaWQgaXRlbS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tZ3V0dGVyLW1ldGhvZGBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1ndXR0ZXItbWV0aG9kKS5cbi8vICRib3gtc2l6aW5nICAgICAgICAgPSAkemVuLWJveC1zaXppbmcgLSBUaGUgYm94IHNpemluZyB0byB1c2UgZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ib3gtc2l6aW5nYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWJveC1zaXppbmcpLlxuLy8gJHN3aXRjaC1kaXJlY3Rpb24gICA9ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbiAtIFdoZXRoZXIgdG8gc3dpdGNoIHRoZSBkZWZhdWx0IGRpcmVjdGlvbiBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXN3aXRjaC1kaXJlY3Rpb25gXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXN3aXRjaC1kaXJlY3Rpb24pLlxuLy8gJHJ0bC1zZWxlY3RvciAgICAgICA9ICR6ZW4tcnRsLXNlbGVjdG9yIC0gVGhlIFJUTCBzZWxlY3RvciBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLXJ0bC1zZWxlY3RvcmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tcnRsLXNlbGVjdG9yKS5cbi8vICRpbmNsdWRlLWJhc2UgICAgICAgPSAkemVuLWF1dG8taW5jbHVkZS1ncmlkLWl0ZW0tYmFzZSAtIFdoZXRoZXIgdG8gYXV0by1pbmNsdWRlIHRoZSB1bmRvLXplbi1ncmlkLWl0ZW0tYmFzZSgpIG1peGluLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2VgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tYXV0by1pbmNsdWRlLWdyaWQtaXRlbS1iYXNlKS5cbi8vXG4vLyBTdHlsZSBndWlkZTogdW5kby51bmRvLXplbi1ncmlkLWl0ZW1cbkBtaXhpbiB1bmRvLXplbi1ncmlkLWl0ZW0oXG4gICRkaXJlY3Rpb24gICAgICAgICAgOiAkemVuLWRpcmVjdGlvbixcbiAgJGd1dHRlcnMgICAgICAgICAgICA6ICR6ZW4tZ3V0dGVycyxcbiAgJGd1dHRlci1tZXRob2QgICAgICA6ICR6ZW4tZ3V0dGVyLW1ldGhvZCxcbiAgJGJveC1zaXppbmcgICAgICAgICA6ICR6ZW4tYm94LXNpemluZyxcbiAgJHN3aXRjaC1kaXJlY3Rpb24gICA6ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbixcbiAgJHJ0bC1zZWxlY3RvciAgICAgICA6ICR6ZW4tcnRsLXNlbGVjdG9yLFxuICAkaW5jbHVkZS1iYXNlICAgICAgIDogJHplbi1hdXRvLWluY2x1ZGUtZ3JpZC1pdGVtLWJhc2Vcbikge1xuXG4gIGZsb2F0OiBub25lO1xuICB3aWR0aDogYXV0bztcbiAgbWFyZ2luOiB7XG4gICAgbGVmdDogIDA7XG4gICAgcmlnaHQ6IDA7XG4gIH1cblxuICAvLyBJbmNsdWRlIHRoZSBncmlkIGl0ZW0gYmFzZSBtaXhpbi5cbiAgQGlmICRpbmNsdWRlLWJhc2Uge1xuICAgIEBpbmNsdWRlIHVuZG8temVuLWdyaWQtaXRlbS1iYXNlKCRndXR0ZXJzLCAkZ3V0dGVyLW1ldGhvZCwgJGJveC1zaXppbmcsICRkaXJlY3Rpb24sICRzd2l0Y2gtZGlyZWN0aW9uLCAkcnRsLXNlbGVjdG9yKTtcbiAgfVxuICAvLyBJZiB0aGUgJGd1dHRlcnMgcGFyYW1ldGVyIGhhcyBiZWVuIHVzZWQsIHVuZG8gdGhlIGd1dHRlcnMgZXZlbiBpZlxuICAvLyAkaW5jbHVkZS1iYXNlIGlzIGZhbHNlLlxuICBAZWxzZSBpZiAkZ3V0dGVycyAhPSAkemVuLWd1dHRlcnMgYW5kICRndXR0ZXItbWV0aG9kID09IHBhZGRpbmcge1xuICAgIEBpbmNsdWRlIHVuZG8temVuLWFwcGx5LWd1dHRlci1wYWRkaW5nKCRndXR0ZXJzLCAkZGlyZWN0aW9uLCAkc3dpdGNoLWRpcmVjdGlvbiwgJHJ0bC1zZWxlY3Rvcik7XG4gIH1cbn1cblxuLy8gdW5kby16ZW4tZ3JpZC1pdGVtLWJhc2UoKVxuLy9cbi8vIFVuZG9lcyB0aGUgc3RhbmRhcmQgc2V0IG9mIHByb3Blcml0ZXMgZm9yIGdyaWQgaXRlbXMgaW4gdGhlIGxheW91dC4gQXBwbHkgdGhpcyB0byB1bmRvIHRoZSBzdHlsaW5nIGFwcGxpZWQgd2l0aCBbYHplbi1ncmlkLWl0ZW0tYmFzZSgpYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy16ZW4tZ3JpZC1pdGVtLWJhc2UpLlxuLy9cbi8vIE5PVEU6IGlmIGAkYm94LXNpemluZ2AgaXMgYGNvbnRlbnQtYm94YCwgdGhlIGB6ZW4tZ3JpZC1pdGVtLWJhc2UoKWAgd2lsbCBhZGQgbGVmdCBhbmQgcmlnaHQgYm9yZGVycyBhbmQgcGFkZGluZyBvZiBgMCAhaW1wb3J0YW50YCBzaW5jZSBub24temVybyB2YWx1ZXMgd291bGQgYnJlYWsgdGhlIGxheW91dC4gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdCBhdXRvbWF0aWNhbGx5LiBZb3UnbGwgaGF2ZSB0byBtYW51YWxseSBzZXQgdGhlIGJvcmRlcnMgYW5kIHBhZGRpbmcgdG8gdGhlaXIgb3JpZ2luYWwgdmFsdWVzLlxuLy9cbi8vIENvbW1vbiB1c2FnZTpcbi8vIGBgYFxuLy8gQGluY2x1ZGUgdW5kby16ZW4tZ3JpZC1pdGVtLWJhc2UoKTtcbi8vIGBgYFxuLy9cbi8vICRndXR0ZXJzICAgICAgICAgICAgPSAkemVuLWd1dHRlcnMgLSBUaGUgd2lkdGggb2YgdGhlIGd1dHRlcnMgZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ndXR0ZXJzYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtemVuLWd1dHRlcnMpLlxuLy8gJGd1dHRlci1tZXRob2QgICAgICA9ICR6ZW4tZ3V0dGVyLW1ldGhvZCAtIFRoZSBndXR0ZXIgbWV0aG9kIHRvIHVzZSBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlci1tZXRob2RgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVyLW1ldGhvZCkuXG4vLyAkYm94LXNpemluZyAgICAgICAgID0gJHplbi1ib3gtc2l6aW5nIC0gVGhlIGJveCBzaXppbmcgdG8gdXNlIGZvciB0aGlzIGdyaWQgaXRlbS4gU2VlIHRoZSBkb2NzIGZvciBbYCR6ZW4tYm94LXNpemluZ2BdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXplbi1ib3gtc2l6aW5nKS5cbi8vICRzd2l0Y2gtZGlyZWN0aW9uICAgPSAkemVuLXN3aXRjaC1kaXJlY3Rpb24gLSBXaGV0aGVyIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBkaXJlY3Rpb24gZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1zd2l0Y2gtZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1zd2l0Y2gtZGlyZWN0aW9uKS5cbi8vICRydGwtc2VsZWN0b3IgICAgICAgPSAkemVuLXJ0bC1zZWxlY3RvciAtIFRoZSBSVEwgc2VsZWN0b3IgZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ydGwtc2VsZWN0b3JgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXJ0bC1zZWxlY3RvcikuXG4vL1xuLy8gd2VpZ2h0OiAxMFxuLy9cbi8vIFN0eWxlIGd1aWRlOiB1bmRvLnVuZG8temVuLWdyaWQtaXRlbS1iYXNlXG5AbWl4aW4gdW5kby16ZW4tZ3JpZC1pdGVtLWJhc2UoXG4gICRndXR0ZXJzICAgICAgICAgICAgOiAkemVuLWd1dHRlcnMsXG4gICRndXR0ZXItbWV0aG9kICAgICAgOiAkemVuLWd1dHRlci1tZXRob2QsXG4gICRib3gtc2l6aW5nICAgICAgICAgOiAkemVuLWJveC1zaXppbmcsXG4gICRkaXJlY3Rpb24gICAgICAgICAgOiAkemVuLWRpcmVjdGlvbixcbiAgJHN3aXRjaC1kaXJlY3Rpb24gICA6ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbixcbiAgJHJ0bC1zZWxlY3RvciAgICAgICA6ICR6ZW4tcnRsLXNlbGVjdG9yXG4pIHtcblxuICAvLyBTcGVjaWZ5IHRoZSBwYWRkaW5nIGlmIHRoZSBndXR0ZXIgbWV0aG9kIHVzZXMgcGFkZGluZy5cbiAgQGlmICRndXR0ZXItbWV0aG9kID09IHBhZGRpbmcge1xuICAgIEBpbmNsdWRlIHVuZG8temVuLWFwcGx5LWd1dHRlci1wYWRkaW5nKCRndXR0ZXJzLCAkZGlyZWN0aW9uLCAkc3dpdGNoLWRpcmVjdGlvbiwgJHJ0bC1zZWxlY3Rvcik7XG4gIH1cblxuICAvLyBTcGVjaWZ5IHRoZSBib3JkZXItYm94IHByb3BlcnRpZXMuXG4gIEBpZiAkYm94LXNpemluZyA9PSBib3JkZXItYm94IHtcbiAgICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIH1cblxuICBAaWYgemVuLXN1cHBvcnQtZm9yLWllKDcpIHtcbiAgICBAaWYgJGJveC1zaXppbmctcG9seWZpbGwtcGF0aCAhPSBcIlwiIHtcbiAgICAgICpiZWhhdmlvcjogbm9uZTtcbiAgICB9XG4gICAgQGlmIHplbi1zdXBwb3J0LWZvci1pZSg2KSB7XG4gICAgICBfZGlzcGxheTogYmxvY2s7XG4gICAgICBfb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgfVxuICAgICp3b3JkLXdyYXA6IG5vcm1hbDtcbiAgfVxufVxuXG4vLyB1bmRvLXplbi1uZXctcm93KClcbi8vXG4vLyBBcHBseSB0aGlzIHRvIHByZXZlbnQgYSBncmlkIGl0ZW0gZnJvbSBzdGFydGluZyBhIG5ldyByb3cgYnkgdW5kb2luZyB0aGUgc3R5bGluZyBhcHBsaWVkIHdpdGggW2B6ZW4tbmV3LXJvdygpYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy16ZW4tbmV3LXJvdykuXG4vL1xuLy8gQ29tbW9uIHVzYWdlOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB1bmRvLXplbi1uZXctcm93KCk7XG4vLyBgYGBcbi8vIG9yOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB1bmRvLXplbi1uZXctcm93KHJpZ2h0KTtcbi8vIGBgYFxuLy9cbi8vICRjbGVhciAgICAgICAgICAgICA9ICR6ZW4tZGlyZWN0aW9uIC0gVGhlIGNsZWFyaW5nIGRpcmVjdGlvbiB0byB1c2UgZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1kaXJlY3Rpb25gXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLWRpcmVjdGlvbikuXG4vLyAkcnRsLXNlbGVjdG9yICAgICAgPSAkemVuLXJ0bC1zZWxlY3RvciAtIFRoZSBSVEwgc2VsZWN0b3IgZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ydGwtc2VsZWN0b3JgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXJ0bC1zZWxlY3RvcikuXG4vL1xuLy8gU3R5bGUgZ3VpZGU6IHVuZG8udW5kby16ZW4tbmV3LXJvd1xuQG1peGluIHVuZG8temVuLW5ldy1yb3coXG4gICRjbGVhciAgICAgICAgICAgICAgOiAkemVuLWRpcmVjdGlvbixcbiAgJHJ0bC1zZWxlY3RvciAgICAgICA6ICR6ZW4tcnRsLXNlbGVjdG9yXG4pIHtcbiAgY2xlYXI6IG5vbmU7XG5cbiAgQGlmICRjbGVhciA9PSBsZWZ0IG9yICRjbGVhciA9PSByaWdodCB7XG4gICAgQGluY2x1ZGUgemVuLXJ0bCgkcnRsLXNlbGVjdG9yKSB7XG4gICAgICBjbGVhcjogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gdW5kby16ZW4tYXBwbHktZ3V0dGVyLXBhZGRpbmcoKVxuLy9cbi8vIFVuZG9lcyB0aGUgZ3V0dGVyIG9uIGEgZ3JpZCBpdGVtIHdoZW4gdXNpbmcgdGhlIHBhZGRpbmcgZ3V0dGVyIG1ldGhvZC4gQXBwbHkgdGhpcyB0byB1bmRvIHRoZSBndXR0ZXIgcGFkZGluZyBzdHlsZXMgYXBwbGllZCB3aXRoIFtgemVuLWFwcGx5LWd1dHRlci1wYWRkaW5nKClgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXplbi1hcHBseS1ndXR0ZXItcGFkZGluZykuXG4vL1xuLy8gQ29tbW9uIHVzYWdlOlxuLy8gYGBgXG4vLyBAaW5jbHVkZSB1bmRvLXplbi1hcHBseS1ndXR0ZXItcGFkZGluZygpO1xuLy8gYGBgXG4vL1xuLy8gJGd1dHRlcnMgICAgICAgICAgICA9ICR6ZW4tZ3V0dGVycyAtIFRoZSB3aWR0aCBvZiB0aGUgZ3V0dGVycyBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWd1dHRlcnNgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy16ZW4tZ3V0dGVycykuXG4vLyAkZGlyZWN0aW9uICAgICAgICAgID0gJHplbi1kaXJlY3Rpb24gLSBUaGUgZGlyZWN0aW9uIHRvIHVzZSBmb3IgdGhpcyBncmlkIGl0ZW0uIFNlZSB0aGUgZG9jcyBmb3IgW2AkemVuLWRpcmVjdGlvbmBdKHNlY3Rpb24tZ3JpZHMuaHRtbCNrc3NyZWYtZ3JpZHMtdmFyaWFibGVzLXJ0bC16ZW4tZGlyZWN0aW9uKS5cbi8vICRzd2l0Y2gtZGlyZWN0aW9uICAgPSAkemVuLXN3aXRjaC1kaXJlY3Rpb24gLSBXaGV0aGVyIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBkaXJlY3Rpb24gZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1zd2l0Y2gtZGlyZWN0aW9uYF0oc2VjdGlvbi1ncmlkcy5odG1sI2tzc3JlZi1ncmlkcy12YXJpYWJsZXMtcnRsLXplbi1zd2l0Y2gtZGlyZWN0aW9uKS5cbi8vICRydGwtc2VsZWN0b3IgICAgICAgPSAkemVuLXJ0bC1zZWxlY3RvciAtIFRoZSBSVEwgc2VsZWN0b3IgZm9yIHRoaXMgZ3JpZCBpdGVtLiBTZWUgdGhlIGRvY3MgZm9yIFtgJHplbi1ydGwtc2VsZWN0b3JgXShzZWN0aW9uLWdyaWRzLmh0bWwja3NzcmVmLWdyaWRzLXZhcmlhYmxlcy1ydGwtemVuLXJ0bC1zZWxlY3RvcikuXG4vL1xuLy8gd2VpZ2h0OiAxNVxuLy9cbi8vIFN0eWxlIGd1aWRlOiB1bmRvLnVuZG8temVuLWFwcGx5LWd1dHRlci1wYWRkaW5nXG5AbWl4aW4gdW5kby16ZW4tYXBwbHktZ3V0dGVyLXBhZGRpbmcoXG4gICRndXR0ZXJzICAgICAgICAgICAgOiAkemVuLWd1dHRlcnMsXG4gICRkaXJlY3Rpb24gICAgICAgICAgOiAkemVuLWRpcmVjdGlvbixcbiAgJHN3aXRjaC1kaXJlY3Rpb24gICA6ICR6ZW4tc3dpdGNoLWRpcmVjdGlvbixcbiAgJHJ0bC1zZWxlY3RvciAgICAgICA6ICR6ZW4tcnRsLXNlbGVjdG9yXG4pIHtcblxuICAkZGlyOiAkZGlyZWN0aW9uO1xuICBAaWYgJHN3aXRjaC1kaXJlY3Rpb24ge1xuICAgICRkaXI6IHplbi1kaXJlY3Rpb24tc3dpdGNoKCRkaXIpO1xuICB9XG5cbiAgcGFkZGluZzoge1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gIH1cblxuICAvLyBJZiAkZ3V0dGVycyBpcyBhbiBvZGQgbnVtYmVyIG9mIHBpeGVscywgd2UgbmVlZCBzcGVjaWFsIFJUTCBoYW5kbGluZy5cbiAgQGlmIHplbi1oYWxmLWd1dHRlcigkZ3V0dGVycywgbGVmdCwgJGRpcikgIT0gemVuLWhhbGYtZ3V0dGVyKCRndXR0ZXJzLCByaWdodCwgJGRpcikge1xuICAgIEBpbmNsdWRlIHplbi1ydGwoJHJ0bC1zZWxlY3Rvcikge1xuICAgICAgcGFkZGluZzoge1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEBmaWxlXG4vLyBDdXN0b20gc2FzcyBtaXhpbnNcbi8vXG4vLyBEZWZpbmUgdGhlIGN1c3RvbSBtaXhpbnMgZm9yIHlvdXIgcHJvamVjdCBoZXJlLlxuLy8gaHR0cDovL3Nhc3MtbGFuZy5jb20vZG9jcy95YXJkb2MvZmlsZS5TQVNTX1JFRkVSRU5DRS5odG1sI2RlZmluaW5nX2FfbWl4aW5cblxuLy8gTWFrZXMgYW4gZWxlbWVudCB2aXN1YWxseSBoaWRkZW4sIGJ1dCBhY2Nlc3NpYmxlLlxuLy8gQHNlZSBodHRwOi8vc25vb2suY2EvYXJjaGl2ZXMvaHRtbF9hbmRfY3NzL2hpZGluZy1jb250ZW50LWZvci1hY2Nlc3NpYmlsaXR5XG5AbWl4aW4gZWxlbWVudC1pbnZpc2libGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHdpZHRoOiAxcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtcbn1cblxuLy8gVHVybnMgb2ZmIHRoZSBlbGVtZW50LWludmlzaWJsZSBlZmZlY3QuXG5AbWl4aW4gZWxlbWVudC1pbnZpc2libGUtb2ZmIHtcbiAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuICBjbGlwOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLy8gTWFrZXMgYW4gZWxlbWVudCB2aXN1YWxseSBoaWRkZW4gYnkgZGVmYXVsdCwgYnV0IHZpc2libGUgd2hlbiBmb2N1c2VkLlxuQG1peGluIGVsZW1lbnQtZm9jdXNhYmxlIHtcbiAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGU7XG5cbiAgJjphY3RpdmUsXG4gICY6Zm9jdXMge1xuICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlLW9mZjtcbiAgfVxufVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tXG5cbi8vIFRoaXMgaXMgYSBtb2Rlcm4gcmVwbGFjZW1lbnQgZm9yICdjbGVhcmZpeCdcbkBtaXhpbiBncm91cCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7fVxufVxuLy8gQG1peGluIGNsZWFyZml4IHtcbi8vICAgQGluY2x1ZGUgZ3JvdXA7XG4vLyB9XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpdXMpO1xufVxuXG5AbWl4aW4gZWxsaXBzaXMge1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxuICAvKiBSZXF1aXJlZCBmb3IgdGV4dC1vdmVyZmxvdyB0byBkbyBhbnl0aGluZyAqL1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyBOYXZpZ2F0aW9uXG5AbWl4aW4gbWVudS12ZXJ0aWNhbCB7XG4gIGxpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIGEge1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG4gIH1cbn1cbkBtaXhpbiBtZW51LWhvcml6b250YWwge1xuICBAaW5jbHVkZSBkaXNwbGF5KGZsZXgpO1xuICBsaSB7XG4gICAgLy8gZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICBAaW5jbHVkZSBmbGV4KDEgMSBhdXRvKTtcblxuICAgIGEge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIEZsZXhib3hcblxuQG1peGluIGRpc3BsYXktZmxleCgpIHtcbiAgZGlzcGxheTogIC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAgICAgLW1vei1ib3g7XG4gIGRpc3BsYXk6ICAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuICBkaXNwbGF5OiAgICAgICAgIGZsZXg7XG59XG5cbkBtaXhpbiBmbGV4KCR2YWx1ZXMpIHtcbiAgLXdlYmtpdC1ib3gtZmxleDogJHZhbHVlcztcbiAgICAgLW1vei1ib3gtZmxleDogJHZhbHVlcztcbiAgICAgIC13ZWJraXQtZmxleDogJHZhbHVlcztcbiAgICAgICAgICAtbXMtZmxleDogJHZhbHVlcztcbiAgICAgICAgICAgICAgZmxleDogJHZhbHVlcztcbn1cblxuQG1peGluIGFsaWduLWl0ZW1zKCR2YWx1ZSkge1xuICAgIC13ZWJraXQtYm94LWFsaWduOiAkdmFsdWU7XG4gICAtd2Via2l0LWZsZXgtYWxpZ246ICR2YWx1ZTtcbiAgICAgICAtbXMtZmxleC1hbGlnbjogJHZhbHVlO1xuICAtd2Via2l0LWFsaWduLWl0ZW1zOiAkdmFsdWU7XG4gICAgICAgICAgYWxpZ24taXRlbXM6ICR2YWx1ZTtcbn1cblxuQG1peGluIGp1c3RpZnktY29udGVudCgkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnanVzdGlmeScge1xuICAgICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xuICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG4gIEBpZiAkdmFsdWUgPT0gJ2NlbnRlcicge1xuICAgICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XG4gICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuQG1peGluIG9yZGVyKCR2YWwpIHtcbiAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogJHZhbDtcbiAgLW1vei1ib3gtb3JkaW5hbC1ncm91cDogJHZhbDtcbiAgLW1zLWZsZXgtb3JkZXI6ICR2YWw7XG4gIC13ZWJraXQtb3JkZXI6ICR2YWw7XG4gIG9yZGVyOiAkdmFsO1xufVxuXG5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uc1xuXG5cblxuXG4vLyBDb2x1bW5cbi8vIEFuIGVsZW1lbnQgdGhhdCBpcyBpbiBhIHJvdyB3aXRoIG90aGVyIGVsZW1lbnRzLlxuLy8gSXQnbGwgaGF2ZSBhIGhvcml6b250YWwgZ2FwIGJldHdlZW4gdGhlIGVsZW1lbnRzICgkZ3V0dGVyLXdpZHRoKS5cbi8vIEl0IGNhbiBoYXZlIGEgbWFyZ2luLWJvdHRvbSAoJGd1dHRlci1oZWlnaHQpLlxuQG1peGluIGNvbHVtbigkY29sczogMiwgJGd1dHRlci13aWR0aDogJGd1dHRlci13aWRlLCAkZ3V0dGVyLWhlaWdodDogJGd1dHRlci13aWRlLCAkZmxvYXQtZGlyOiBsZWZ0KSB7XG4gICRjb2wtd2lkdGg6IGNhbGMoICgxMDAlIC0gI3skZ3V0dGVyLXdpZHRofSAqICgjeyRjb2xzfSAtIDEpKSAvICN7JGNvbHN9KTtcblxuICAkbGFzdC1jb2w6ICRjb2xzICsgXCJuXCI7XG4gICRmaXJzdC1jb2w6ICRsYXN0LWNvbCArIFwiIC0gXCIgKyAoJGNvbHMgLSAxKTtcblxuICBmbG9hdDogJGZsb2F0LWRpcjtcbiAgd2lkdGg6ICRjb2wtd2lkdGg7XG4gIG1hcmdpbi1sZWZ0OiAkZ3V0dGVyLXdpZHRoIC8gMjtcbiAgbWFyZ2luLXJpZ2h0OiAkZ3V0dGVyLXdpZHRoIC8gMjtcbiAgLy8gbWFyZ2luLWJvdHRvbTogJGd1dHRlci1oZWlnaHQ7XG4gIC8vIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAmOm50aC1jaGlsZCgjeyRmaXJzdC1jb2x9KSB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgY2xlYXI6ICRmbG9hdC1kaXI7XG4gIH1cbiAgJjpudGgtY2hpbGQoI3skbGFzdC1jb2x9KSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG4vLyBDb2x1bW5zLCBidXQgb25seSAxIHJvd1xuLy8gRG9lcyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gMSByb3cuXG5AbWl4aW4gY29scy11bmtub3duKCRndXR0ZXItd2lkdGg6ICRndXR0ZXItd2lkZSkge1xuICBAaW5jbHVkZSBkaXNwbGF5KGZsZXgpO1xuXG4gICYgPiBkaXYge1xuICAgIEBpbmNsdWRlIGZsZXgoMSAxIDApO1xuICAgIG1hcmdpbi1sZWZ0OiAkZ3V0dGVyLXdpZHRoIC8gMjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRndXR0ZXItd2lkdGggLyAyO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gIH1cbn1cblxuXG5AbWl4aW4gY29scy0yLTMtNC02IHtcbiAgICBAaW5jbHVkZSBncm91cDsgLy8gTmVlZGVkIGJlY2F1c2UgY2hpbGRyZW4gYXJlIGZsb2F0ZWQuXG5cbiAgICAmID4gKiB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIC8vICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIC8vICAgICAvLyBtYXJnaW4tYm90dG9tOiAwOyAvLyBOZWVkZWQgYmVjYXVzZSBjb250YWluZXIgaXMgZmxvYXRlZC5cbiAgICAgICAgLy8gfVxuICAgIH1cbn1cbkBtaXhpbiBjb2xzLTItMy00IHtcbiAgICAvLyAmID4gKiB7XG4gICAgLy8gICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICR3LW5hcnJvdykge1xuICAgIC8vICAgICAgICAgLy8gbWFyZ2luLXRvcDogM2VtO1xuICAgIC8vICAgICB9XG4gICAgLy8gfVxufVxuQG1peGluIGNvbHMtMigkZ3V0dGVyLXdpZHRoOiAkZ3V0dGVyLXdpZGUsICRndXR0ZXItaGVpZ2h0OiAkZ3V0dGVyLXdpZGUpIHtcbiAgICBAaW5jbHVkZSBjb2xzLTItMy00O1xuICAgIEBpbmNsdWRlIGNvbHMtMi0zLTQtNjtcblxuICAgICYgPiAqIHtcbiAgICAgICAgLy8gbWFyZ2luLWJvdHRvbTogJGd1dHRlci1oZWlnaHQ7XG5cbiAgICAgICAgQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJHctcmVndWxhcikge1xuICAgICAgICAgICAgQGluY2x1ZGUgY29sdW1uKDIsICRndXR0ZXItd2lkdGgpO1xuICAgICAgICB9XG4gICAgfVxufVxuQG1peGluIGNvbHMtMygkZ3V0dGVyLXdpZHRoOiAkZ3V0dGVyLXdpZGUsICRndXR0ZXItaGVpZ2h0OiAkZ3V0dGVyLXdpZGUpIHtcbiAgICBAaW5jbHVkZSBjb2xzLTItMy00O1xuICAgIEBpbmNsdWRlIGNvbHMtMi0zLTQtNjtcblxuICAgICYgPiAqIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci1oZWlnaHQ7XG4gICAgICAgIEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICR3LW5hcnJvdykgYW5kIChtYXgtd2lkdGg6ICR3LXJlZ3VsYXIpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNvbHVtbigyLCAkZ3V0dGVyLXdpZHRoLCAkZ3V0dGVyLWhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJHctcmVndWxhcikge1xuICAgICAgICAgICAgQGluY2x1ZGUgY29sdW1uKDMsICRndXR0ZXItd2lkdGgpO1xuICAgICAgICB9XG4gICAgfVxufVxuQG1peGluIGNvbHMtNCgkZ3V0dGVyLXdpZHRoOiAkZ3V0dGVyLXdpZGUsICRndXR0ZXItaGVpZ2h0OiAkZ3V0dGVyLXdpZGUpIHtcbiAgICBAaW5jbHVkZSBjb2xzLTItMy00O1xuXG4gICAgJiA+ICoge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyLWhlaWdodDtcbiAgICAgICAgQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJHctbmFycm93KSBhbmQgKG1heC13aWR0aDogJHctcmVndWxhcikge1xuICAgICAgICAgICAgQGluY2x1ZGUgY29sdW1uKDIsICRndXR0ZXItd2lkdGgsICRndXR0ZXItaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkdy1yZWd1bGFyKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjb2x1bW4oNCwgJGd1dHRlci13aWR0aCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5AbWl4aW4gY29scy02KCRndXR0ZXItd2lkdGg6ICRndXR0ZXItd2lkZSwgJGd1dHRlci1oZWlnaHQ6ICRndXR0ZXItd2lkZSkge1xuICAgIEBpbmNsdWRlIGNvbHMtMi0zLTQ7XG4gICAgQGluY2x1ZGUgY29scy0yLTMtNC02O1xuXG4gICAgJiA+ICoge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyLWhlaWdodDtcbiAgICAgICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHctbmFycm93KSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjb2x1bW4oMiwgJGd1dHRlci13aWR0aCwgJGd1dHRlci1oZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICR3LW5hcnJvdykgYW5kIChtYXgtd2lkdGg6ICR3LXJlZ3VsYXIpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNvbHVtbigzLCAkZ3V0dGVyLXdpZHRoLCAkZ3V0dGVyLWhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJHctcmVndWxhcikge1xuICAgICAgICAgICAgQGluY2x1ZGUgY29sdW1uKDYsICRndXR0ZXItd2lkdGgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gY29scy03KCRndXR0ZXItd2lkdGg6JGd1dHRlci1uYXJyb3csICRndXR0ZXItaGVpZ2h0OiAkZ3V0dGVyLXdpZGUpIHtcbiAgICBAaW5jbHVkZSBjb2xzLTItMy00O1xuICAgIEBpbmNsdWRlIGNvbHMtMi0zLTQtNjtcblxuICAgICYgPiAqIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci1oZWlnaHQ7XG4gICAgICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICR3LW5hcnJvdykge1xuICAgICAgICAgICAgQGluY2x1ZGUgY29sdW1uKDIsICRndXR0ZXItd2lkdGgsICRndXR0ZXItaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkdy1uYXJyb3cpIGFuZCAobWF4LXdpZHRoOiAkdy1yZWd1bGFyKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjb2x1bW4oNCwgJGd1dHRlci13aWR0aCwgJGd1dHRlci1oZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICR3LXJlZ3VsYXIpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNvbHVtbig3LCAkZ3V0dGVyLXdpZHRoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4uY29scy0yIHtAaW5jbHVkZSBjb2xzLTI7fVxuLmNvbHMtMyB7QGluY2x1ZGUgY29scy0zO31cbi5jb2xzLTQge0BpbmNsdWRlIGNvbHMtNDt9XG4uY29scy02IHtAaW5jbHVkZSBjb2xzLTY7fVxuLmNvbHMtNyB7QGluY2x1ZGUgY29scy03O31cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBOb3JtYWxpemUuc2NzcyBzZXR0aW5nc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogSW5jbHVkZXMgbGVnYWN5IGJyb3dzZXIgc3VwcG9ydCBJRTYvN1xuICpcbiAqIFNldCB0byBmYWxzZSBpZiB5b3Ugd2FudCB0byBkcm9wIHN1cHBvcnQgZm9yIElFNiBhbmQgSUU3XG4gKi9cblxuJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vKiBCYXNlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXG4gKiAyLiBQcmV2ZW50IGlPUyBhbmQgSUUgdGV4dCBzaXplIGFkanVzdCBhZnRlciBkZXZpY2Ugb3JpZW50YXRpb24gY2hhbmdlLFxuICogICAgd2l0aG91dCBkaXNhYmxpbmcgdXNlciB6b29tLlxuICogMy4gQ29ycmVjdHMgdGV4dCByZXNpemluZyBvZGRseSBpbiBJRSA2Lzcgd2hlbiBib2R5IGBmb250LXNpemVgIGlzIHNldCB1c2luZ1xuICogIGBlbWAgdW5pdHMuXG4gKi9cblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvKiAxICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICBAaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICAgICpmb250LXNpemU6IDEwMCU7IC8qIDMgKi9cbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IG1hcmdpbi5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYGRldGFpbHNgIG9yIGBzdW1tYXJ5YCBpbiBJRSAxMC8xMVxuICogYW5kIEZpcmVmb3guXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWFpbixcbm1lbnUsXG5uYXYsXG5zZWN0aW9uLFxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA2LzcvOC85IGFuZCBGaXJlZm94IDMuXG4gKiAyLiBOb3JtYWxpemUgdmVydGljYWwgYWxpZ25tZW50IG9mIGBwcm9ncmVzc2AgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxuYXVkaW8sXG5jYW52YXMsXG5wcm9ncmVzcyxcbnZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiAxICovXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgLyogMiAqL1xuICBAaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICAgICpkaXNwbGF5OiBpbmxpbmU7XG4gICAgKnpvb206IDE7XG4gIH1cbn1cblxuLyoqXG4gKiBQcmV2ZW50cyBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy5cbiAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXG4gKi9cblxuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbiAqL1xuXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogTGlua3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cbiAqIGFjdGl2ZS9ob3ZlciBzdGF0ZS5cbiAqL1xuXG5hIHtcbiAgJjphY3RpdmUsICY6aG92ZXIge1xuICAgIG91dGxpbmU6IDA7XG4gIH07XG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcbiAgYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAxZW0gNDBweDtcbiAgfVxufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qKlxuICogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuICogY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbkBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG4gIGgyIHtcbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIG1hcmdpbjogMC44M2VtIDA7XG4gIH1cblxuICBoMyB7XG4gICAgZm9udC1zaXplOiAxLjE3ZW07XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgfVxuXG4gIGg0IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBtYXJnaW46IDEuMzNlbSAwO1xuICB9XG5cbiAgaDUge1xuICAgIGZvbnQtc2l6ZTogMC44M2VtO1xuICAgIG1hcmdpbjogMS42N2VtIDA7XG4gIH1cblxuICBoNiB7XG4gICAgZm9udC1zaXplOiAwLjY3ZW07XG4gICAgbWFyZ2luOiAyLjMzZW0gMDtcbiAgfVxufVxuXG4vKipcbiAqIEFkZHJlc3NlcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xuXG5tYXJrIHtcbiAgYmFja2dyb3VuZDogI2ZmMDtcbiAgY29sb3I6ICMwMDA7XG59XG5cbkBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG5cbiAgLyoqXG4gICAqIEFkZHJlc3NlcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBJRSA2LzcuXG4gICAqL1xuXG4gIHAsXG4gIHByZSB7XG4gICAgKm1hcmdpbjogMWVtIDA7XG4gIH1cblxuICAvKlxuICAgKiBBZGRyZXNzZXMgQ1NTIHF1b3RlcyBub3Qgc3VwcG9ydGVkIGluIElFIDYvNy5cbiAgICovXG5cbiAgcSB7XG4gICAgKnF1b3Rlczogbm9uZTtcbiAgfVxuXG4gIC8qXG4gICAqIEFkZHJlc3NlcyBgcXVvdGVzYCBwcm9wZXJ0eSBub3Qgc3VwcG9ydGVkIGluIFNhZmFyaSA0LlxuICAgKi9cblxuICBxOmJlZm9yZSxcbiAgcTphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgY29udGVudDogbm9uZTtcbiAgfVxufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgYWZmZWN0aW5nIGBsaW5lLWhlaWdodGAgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbkBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG5cbiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgTGlzdHNcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAvKlxuICAgKiBBZGRyZXNzZXMgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gSUUgNi83LlxuICAgKi9cblxuICBkbCxcbiAgbWVudSxcbiAgb2wsXG4gIHVsIHtcbiAgICAqbWFyZ2luOiAxZW0gMDtcbiAgfVxuXG4gIGRkIHtcbiAgICAqbWFyZ2luOiAwIDAgMCA0MHB4O1xuICB9XG5cbiAgLypcbiAgICogQWRkcmVzc2VzIHBhZGRpbmdzIHNldCBkaWZmZXJlbnRseSBpbiBJRSA2LzcuXG4gICAqL1xuXG4gIG1lbnUsXG4gIG9sLFxuICB1bCB7XG4gICAgKnBhZGRpbmc6IDAgMCAwIDQwcHg7XG4gIH1cblxuICAvKlxuICAgKiBDb3JyZWN0cyBsaXN0IGltYWdlcyBoYW5kbGVkIGluY29ycmVjdGx5IGluIElFIDcuXG4gICAqL1xuXG4gIG5hdiB1bCxcbiAgbmF2IG9sIHtcbiAgICAqbGlzdC1zdHlsZTogbm9uZTtcbiAgICAqbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgfVxuXG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAuXG4gKiAyLiBJbXByb3ZlcyBpbWFnZSBxdWFsaXR5IHdoZW4gc2NhbGVkIGluIElFIDcuXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyOiAwO1xuICBAaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICAgICotbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyAvKiAyICovXG4gIH1cbn1cblxuLyoqXG4gKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAqL1xuXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkuXG4gKi9cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnByZSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgb2RkIGBlbWAtdW5pdCBmb250IHNpemUgcmVuZGVyaW5nIGluIGFsbCBicm93c2Vycy5cbiAqIENvcnJlY3QgZm9udCBmYW1pbHkgc2V0IG9kZGx5IGluIElFIDYsIFNhZmFyaSA0LzUsIGFuZCBDaHJvbWUuXG4gKi9cblxuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIEBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG4gICAgX2ZvbnQtZmFtaWx5OiAnY291cmllciBuZXcnLCBtb25vc3BhY2U7XG4gIH1cbiAgZm9udC1zaXplOiAxZW07XG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4gKiBzdHlsaW5nIG9mIGBzZWxlY3RgLCB1bmxlc3MgYSBgYm9yZGVyYCBwcm9wZXJ0eSBpcyBzZXQuXG4gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG4gKiAyLiBDb3JyZWN0IGZvbnQgcHJvcGVydGllcyBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKiA0LiBJbXByb3ZlcyBhcHBlYXJhbmNlIGFuZCBjb25zaXN0ZW5jeSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xuICBtYXJnaW46IDA7IC8qIDMgKi9cbiAgQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDMgKi9cbiAgICAqdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogMyAqL1xuICB9XG59XG5cbi8qKlxuICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cblxuYnV0dG9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLlxuICogQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy5cbiAqIENvcnJlY3QgYGJ1dHRvbmAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveCwgSUUgOC85LzEwLzExLCBhbmQgT3BlcmEuXG4gKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcbiAqICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAqIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cbiAqIDMuIEltcHJvdmUgdXNhYmlsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiBjdXJzb3Igc3R5bGUgYmV0d2VlbiBpbWFnZS10eXBlXG4gKiAgYGlucHV0YCBhbmQgb3RoZXJzLlxuICogNC4gUmVtb3ZlcyBpbm5lciBzcGFjaW5nIGluIElFIDcgd2l0aG91dCBhZmZlY3Rpbmcgbm9ybWFsIHRleHQgaW5wdXRzLlxuICogIEtub3duIGlzc3VlOiBpbm5lciBzcGFjaW5nIHJlbWFpbnMgaW4gSUUgNi5cbiAqL1xuXG5idXR0b24sXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xuICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbiAgQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcbiAgICAqb3ZlcmZsb3c6IHZpc2libGU7ICAvKiA0ICovXG4gIH1cbn1cblxuLyoqXG4gKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICovXG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuICogdGhlIFVBIHN0eWxlc2hlZXQuXG4gKi9cblxuaW5wdXQge1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG4vKipcbiAqIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuXG4gKiAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLlxuICogIEtub3duIGlzc3VlOiBleGNlc3MgcGFkZGluZyByZW1haW5zIGluIElFIDYuXG4gKi9cblxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG4gIEBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG4gICAgKmhlaWdodDogMTNweDsgLyogMyAqL1xuICAgICp3aWR0aDogMTNweDsgLyogMyAqL1xuICB9XG59XG5cbi8qKlxuICogRml4IHRoZSBjdXJzb3Igc3R5bGUgZm9yIENocm9tZSdzIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucy4gRm9yIGNlcnRhaW5cbiAqIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXG4gKiBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuXG4gKi9cblxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKiAyLiBBZGRyZXNzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLlxuICogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuICogcGFkZGluZyAoYW5kIGB0ZXh0ZmllbGRgIGFwcGVhcmFuY2UpLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy5cbiAqL1xuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG4gKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gKiAzLiBDb3JyZWN0cyB0ZXh0IG5vdCB3cmFwcGluZyBpbiBGaXJlZm94IDMuXG4gKiA0LiBDb3JyZWN0cyBhbGlnbm1lbnQgZGlzcGxheWVkIG9kZGx5IGluIElFIDYvNy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3JkZXI6IDA7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xuICBAaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDMgKi9cbiAgICAqbWFyZ2luLWxlZnQ6IC03cHg7IC8qIDQgKi9cbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiBEb24ndCBpbmhlcml0IHRoZSBgZm9udC13ZWlnaHRgIChhcHBsaWVkIGJ5IGEgcnVsZSBhYm92ZSkuXG4gKiBOT1RFOiB0aGUgZGVmYXVsdCBjYW5ub3Qgc2FmZWx5IGJlIGNoYW5nZWQgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWC5cbiAqL1xuXG5vcHRncm91cCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBUYWJsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuICovXG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG5cbnRkLFxudGgge1xuICBwYWRkaW5nOiAwO1xufVxuIiwiLyoqXG4gKiBAZmlsZSBFbGVtZW50c1xuICovXG5cbi8qIFxuICAgIFdlYnNpdGUgICAgIFRvdWNoZHJlYW1zXG4gICAgQXV0aG9yICAgICAgRGFuZSBSb3NzZW5yb2RlXG4gICAgQ3JlYXRpb24gICAgQXByaWwgMjAxM1xuICAgIFVwZGF0ZWQgICAgIE9jdG9iZXIgMjAxNFxuKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URU5UU1xuICAgIEluZGl2aWR1YWwgdGFnc1xuICAgIEhlYWRpbmdzXG4gICAgTGlua3NcbiAgICBUYWJsZXNcbiAgICBMaXN0c1xuICovXG5cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQmFzZSBzdHlsZXM6IG9waW5pb25hdGVkIGRlZmF1bHRzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5odG1sIHtcbiAgICBjb2xvcjogIzIyMjtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4vKlxuICogUmVtb3ZlIHRleHQtc2hhZG93IGluIHNlbGVjdGlvbiBoaWdobGlnaHQ6XG4gKiBodHRwczovL3R3aXR0ZXIuY29tL21pa2V0YXlsci9zdGF0dXMvMTIyMjg4MDUzMDFcbiAqXG4gKiBUaGVzZSBzZWxlY3Rpb24gcnVsZSBzZXRzIGhhdmUgdG8gYmUgc2VwYXJhdGUuXG4gKiBDdXN0b21pemUgdGhlIGJhY2tncm91bmQgY29sb3IgdG8gbWF0Y2ggeW91ciBkZXNpZ24uXG4gKi9cblxuOjotbW96LXNlbGVjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogI2IzZDRmYztcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcbn1cblxuOjpzZWxlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6ICNiM2Q0ZmM7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XG59XG5cbi8qXG4gKiBBIGJldHRlciBsb29raW5nIGRlZmF1bHQgaG9yaXpvbnRhbCBydWxlXG4gKi9cblxuaHIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMXB4O1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcbiAgICBtYXJnaW46IDFlbSAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbi8qXG4gKiBSZW1vdmUgdGhlIGdhcCBiZXR3ZWVuIGF1ZGlvLCBjYW52YXMsIGlmcmFtZXMsXG4gKiBpbWFnZXMsIHZpZGVvcyBhbmQgdGhlIGJvdHRvbSBvZiB0aGVpciBjb250YWluZXJzOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvaXNzdWVzLzQ0MFxuICovXG5cbmF1ZGlvLFxuY2FudmFzLFxuaWZyYW1lLFxuaW1nLFxuc3ZnLFxudmlkZW8ge1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qXG4gKiBSZW1vdmUgZGVmYXVsdCBmaWVsZHNldCBzdHlsZXMuXG4gKi9cblxuZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuLypcbiAqIEFsbG93IG9ubHkgdmVydGljYWwgcmVzaXppbmcgb2YgdGV4dGFyZWFzLlxuICovXG5cbnRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGl2aWR1YWwgdGFnc1xuKi9cbmJvZHkge1xuICAvLyBiYWNrZ3JvdW5kOiAkY29sb3VyLWJnLWJvZHk7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1ib2R5O1xuICBjb2xvcjogJGNvbG91ci10ZXh0O1xuXG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHctcmVndWxhcikge1xuICAgIGZvbnQtc2l6ZTogMC45MmVtO1xuICB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHctbmFycm93KSB7XG4gICAgZm9udC1zaXplOiAwLjg2ZW07XG4gIH1cbn1cblxucCxcbmxpLFxudGgsIHRkLFxuYmxvY2txdW90ZSB7XG4gIC8vIG1heC13aWR0aDogNjBlbTsgLy8gaGFzIGJlZW4gcHV0IG9uIE1BSU4gaW5zdGVhZFxufVxuXG5wIHtcbiAgLy8gbWFyZ2luOiAxLjJlbSAwIDA7IC8vIGlmIHRoZSBwIGhhcyBhIGJvdHRvbS1tYXJnaW4sIHNpbmNlIGZsb2F0ZWQgZWxlbWVudHMgYmVsb3cgaXQgZG9uJ3Qgb3ZlcmxhcCBpdHMgbWFyZ2luLCB3aWxsIGhhdmUgZG91YmxlLWhlaWdodCBzcGFjZSBiZWxvdyBpdFxuICBtYXJnaW4tdG9wOiAxLjJlbTtcbiAgLy8gbWFyZ2luLWJvdHRvbTogMS4yZW07XG4gIC8vIGZvbnQtZmFtaWx5OiAkZm9udC1wYXJhZ3JhcGhzO1xuICAvLyBjb2xvcjogJGNvbG91ci1wYXJhZ3JhcGhzO1xuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAvLyBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvZHk7XG59XG5cbmltZyB7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxudWwsXG5vbCB7XG4gIGxpIHt9XG59XG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiAwLjg1ZW07XG59XG5cbmZpZ3VyZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbmZpZ2NhcHRpb24ge1xuICBmb250LXNpemU6IDAuODVlbTtcbiAgY29sb3I6ICRjb2xvdXItZ3JlZW4tZGFyaztcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG5hY3JvbnltLCBhYmJyIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjMjIyO1xuICBjdXJzb3I6IGhlbHA7XG59XG5cbmhyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMXB4O1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAkY29sb3VyLWRpdmlkZXJzO1xuICBtYXJnaW46IDFlbSAwO1xuICBwYWRkaW5nOiAwO1xuICB3aWR0aDogNzAlO1xuICBtYXJnaW46IDIuNmVtIGF1dG87XG59XG5cbmJsb2NrcXVvdGUge1xuICBtYXJnaW46IDEuNWVtIDQlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6IHJnYmEoIGJsYWNrLCAwLjA0KTtcbiAgcGFkZGluZzogJHRleHQtZmllbGQtcGFkZGluZztcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgXG4gIC8qIHRoZSBmb2xsb3dpbmcgcnVsZXMgaW5zZXJ0IGxhcmdlIHF1b3RhdGlvbiBtYXJrcyAqL1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgZm9udC1zaXplOiAyLjVlbTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDFDXCI7XG4gICAgbGVmdDogLTAuNWVtO1xuICAgIHRvcDogIC0wLjVlbTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcMjAxRFwiO1xuICAgIHJpZ2h0OiAgLTAuNWVtO1xuICAgIGJvdHRvbTogLTFlbTtcbiAgfVxufVxuXG46OnNlbGVjdGlvbiB7fVxuXG4gLm5vZGVfX2NvbnRlbnQgcCwgcHJlIHtcbiAgICBtYXJnaW46IDFlbSAwcHg7XG4gICAgcGFkZGluZzogMCAxZW07XG59XG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmtzXG4qL1xuYSB7XG4gICAgY29sb3I6ICRjb2xvdXItbGlua3M7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIC8vIGxpbmUtaGVpZ2h0OiAxO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcblxuICAgICY6bGluayB7fVxuICAgICY6dmlzaXRlZCB7XG4gICAgICAgIC8vIGNvbG9yOiAkY29sb3VyLWxpbmtzO1xuICAgIH1cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBjb2xvcjogdGludCggJGNvbG91ci1saW5rcywgMzAlICk7XG4gICAgfVxuICAgICY6YWN0aXZlIHsgLyogYSBsaW5rIHdoZW4gaXQgaXMgJ2NsaWNrZWQnIG9uICovXG4gICAgICAgIGNvbG9yOiB0aW50KCAkY29sb3VyLWxpbmtzLCA0MCUgKTtcbiAgICB9XG4gICAgJi5hY3RpdmUsXG4gICAgJlthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB9XG59XG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGluZ3NcbiovXG5oMSwgaDIsIGgzLCBoNCB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuMTsgLy8ganVzdCBhIGJhY2t1cCBjYXRjaC1hbGxcblxuICAgIG1hcmdpbi10b3A6ICAgICAxZW07XG4gICAgbWFyZ2luLWJvdHRvbTogIDFlbTtcbiAgICBjb2xvcjogJGNvbG91ci1oZWFkaW5ncztcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB9XG59XG5oMywgaDQge1xuICBmb250LWZhbWlseTogJGZvbnQtaGVhZGluZ3M7XG59XG5cbmgxIHtcbiAgICBmb250LXNpemU6ICAgJGZvbnQtc2l6ZS1oMTtcbiAgICBsaW5lLWhlaWdodDogMS41ZW07XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogMWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbn1cbmgyIHtcbiAgICBmb250LXNpemU6ICAgJGZvbnQtc2l6ZS1oMjtcbiAgICBsaW5lLWhlaWdodDogMS41ZW07XG4gICAgY29sb3I6ICRjb2xvdXItZ3JlZW4tbGlnaHQ7XG59XG5oMyB7XG4gICAgZm9udC1zaXplOiAgICRmb250LXNpemUtaDM7XG4gICAgbWFyZ2luLXRvcDogMmVtO1xufVxuaDQge1xuICAgIGZvbnQtc2l6ZTogICAkZm9udC1zaXplLWg0O1xufVxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlc1xuKi9cbnRhYmxlIHtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyAvLyB1c2UgdGhpcyBvbmx5IHdoZW4gYSB0YWJsZSBhY3R1YWxseSBoYXMgYSBib3JkZXJcbiAgICAvLyBmb250LXNpemU6IDAuOWVtO1xuICAgIG1hcmdpbjogMS41ZW0gMDtcbiAgICAvLyB0YWJsZS1sYXlvdXQ6IGZpeGVkOyAvLyBzaG91bGQgb25seSBiZSB1c2VkIG9uIGZpeGVkLWNvbHVtbi13aWR0aCB0YWJsZXNcbiAgICBcbiAgICB0ZCwgdGgge1xuICAgICAgICBib3JkZXI6IHNvbGlkIDFweCAjYmJiO1xuICAgICAgICBwYWRkaW5nOiAkdGV4dC1maWVsZC1wYWRkaW5nO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIH1cbiAgICB0ZCB7fVxuICAgIHRoIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoIGJsYWNrLCAwLjA1ICk7XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSggYmxhY2ssIDAuMTUgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBBIGhlYWRlciBmb3IgYSB0YWJsZSByb3dcbiAgICAgICAgJltzY29wZT1cInJvd1wiXSB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHRoZWFkIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG4gICAgJi5ib3JkZXJsZXNzIHtcbiAgICAgICAgdGQsIHRoIHtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICB9XG4gICAgfVxuICAgICYuYnVsbGV0ZWQge1xuICAgICAgdGQ6Zmlyc3Qtb2YtdHlwZTo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcXDIwMjIgIFwiO1xuICAgICAgfVxuICAgIH1cbiAgICAuZXZlbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICB9XG4gICAgLm9kZCB7XG4gICAgICAgIC8vYmFja2dyb3VuZDogcmdiYSggYmxhY2ssIDAuMSk7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICB9XG59XG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHNcbiovXG51bCwgb2wge1xuICAgIC8vIG92ZXJmbG93OiBoaWRkZW47IC8vIHdoZW4gYmVzaWRlIGZsb2F0ZWQgY29udGVudCwga2VlcHMgaXQgdG9nZXRoZXJcbiAgICAvLyBsaW5lLWhlaWdodDogMS4xO1xuICB9XG4jYWRtaW4tbWVudSB1bCB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5saSArIGxpIHtcbiAgICAvLyBtYXJnaW4tdG9wOiAxZW07XG59XG4gICAgXG4vLyAubWVudSB7XG4vLyAgICAgcGFkZGluZy1sZWZ0OiAxLjJlbTtcbi8vICAgICAvL2xpc3Qtc3R5bGU6IG5vbmU7XG4vLyAgICAgbWFyZ2luOiAwO1xuICAgIFxuLy8gICAgIC5tZW51X19saW5rIHtcbi8vICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4vLyAgICAgfVxuLy8gfVxuLy8gbmF2IHVsIGxpIHtcbi8vICAgICBtYXJnaW46IDA7XG4vLyB9XG51bC5idXR0b25zIHtcbiAgICAgcGFkZGluZzogMDtcblxuICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazt9XG4gICAgaW1nIHtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyggJGNvcm5lcl9yYWRpdXMtc21hbGwgKTt9XG59XG5cblxuXG4iLCIvKipcbiAqIEBmaWxlXG4gKiBQb3NpdGlvbmluZywgc2l6aW5nLCBhbmQgc3BhY2luZyBvZiBwYWdlIGVsZW1lbnRzLiBBIHJlc3BvbnNpdmUgbGF5b3V0LlxuXG4gKi9cbm5hdiA+IFtyb2xlPVwicHJlc2VudGF0aW9uXCJdLFxuaGVhZGVyW3JvbGU9XCJiYW5uZXJcIl0sXG5zZWN0aW9uLFxuZm9vdGVyLCB7XG4gIG1heC13aWR0aDogJHBhZ2UtbWF4LXdpZHRoO1xuICBtYXJnaW46IDAgYXV0bztcbn1cbi53aWRlciB7XG4gIG1heC13aWR0aDogJHBhZ2UtbWF4LXdpZHRoICsgMjAwcHg7XG59XG5cbltyb2xlPVwicHJlc2VudGF0aW9uXCJdIHtcbiAgcGFkZGluZzogJGJsb2NrLXBhZGRpbmc7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1hcmdpbjogMCBhdXRvO1xuXG4gIGgxIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHctcmVndWxhcikge1xuICAgIHBhZGRpbmc6IDAgNSU7XG4gIH1cblxufVxuXG5cbm5hdiB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMTAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB0b3A6IDA7XG5cbiAgJiA+IFtyb2xlPVwicHJlc2VudGF0aW9uXCJdIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDo5MzBweCkge1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICB9XG59XG5cbi5sb2dvIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDU1MHB4KSB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuLnNpdGUtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAtMS41ZW07XG4gIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDY1MHB4KSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4uY29scy0xLTIge1xuICBAaW5jbHVkZSBkaXNwbGF5KGZsZXgpO1xuICBAaW5jbHVkZSBmbGV4LXdyYXAod3JhcCk7XG5cbiAgaDIge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICAmID4gZGl2IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgXG5cbiAgICAmOm50aC1jaGlsZCgxKSB7XG4gICAgICBAaW5jbHVkZSBmbGV4KDAgMCBhdXRvKTtcbiAgICAgIHdpZHRoOiAyNTBweDtcbiAgICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBpbWcge1xuICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICY6bnRoLWNoaWxkKDIpIHtcbiAgICAgIEBpbmNsdWRlIGZsZXgoMSAxIGF1dG8pO1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDI1MHB4KTtcbiAgICAgIHBhZGRpbmctbGVmdDogM2VtO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICR3LXdpZGUpIHtcbiAgICAgIH1cblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiA1cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG91ci1ncmVlbi1saWdodDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvdHRvbTogMS43ZW07XG4gICAgICAgIGxlZnQ6IDVweDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAxMDIwcHgpIHtcbiAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmNvbHMtMS0xIHtcbiAgQGluY2x1ZGUgZGlzcGxheShmbGV4ICFpbXBvcnRhbnQpOyAgXG4gIEBpbmNsdWRlIGZsZXgtd3JhcCh3cmFwKTtcblxuICAmID4gZGl2IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOm50aC1jaGlsZCgxKSB7XG4gICAgICBAaW5jbHVkZSBmbGV4KDAgMCBhdXRvKTtcbiAgICAgIHdpZHRoOiA2MCU7XG4gICAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAkdy13aWRlKSB7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB9XG4gICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDU1MHB4KSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfSAgICBcblxuICAgIH1cbiAgICAmOm50aC1jaGlsZCgyKSB7XG4gICAgICBAaW5jbHVkZSBmbGV4KDEgMSBhdXRvKTtcbiAgICAgIHdpZHRoOiA0MCU7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDNlbTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAkdy13aWRlKSB7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB9XG4gICAgICAgXG4gICAgfVxuICB9XG59IiwiLyogU2xpZGVyICovXG5cbi5zbGljay1zbGlkZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdG91Y2gtYWN0aW9uOiBwYW4teTtcbiAgICB0b3VjaC1hY3Rpb246IHBhbi15O1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uc2xpY2stbGlzdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG5cbiAgICAmLmRyYWdnaW5nIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjdXJzb3I6IGhhbmQ7XG4gICAgfVxufVxuLnNsaWNrLXNsaWRlciAuc2xpY2stdHJhY2ssXG4uc2xpY2stc2xpZGVyIC5zbGljay1saXN0IHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuLnNsaWNrLXRyYWNrIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cblxuICAgIC5zbGljay1sb2FkaW5nICYge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxufVxuLnNsaWNrLXNsaWRlIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMXB4O1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gICAgaW1nIHtcbiAgICAgICAgLy8gZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgICYuc2xpY2stbG9hZGluZyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAmLmRyYWdnaW5nIGltZyB7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC5zbGljay1pbml0aWFsaXplZCAmIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLnNsaWNrLWxvYWRpbmcgJiB7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAuc2xpY2stdmVydGljYWwgJiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIH1cbn1cbi5zbGljay1hcnJvdy5zbGljay1oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vIERlZmF1bHQgVmFyaWFibGVzXG5cbi8vIFNsaWNrIGljb24gZW50aXR5IGNvZGVzIG91dHB1dHMgdGhlIGZvbGxvd2luZ1xuLy8gXCJcXDIxOTBcIiBvdXRwdXRzIGFzY2lpIGNoYXJhY3RlciBcIuKGkFwiXG4vLyBcIlxcMjE5MlwiIG91dHB1dHMgYXNjaWkgY2hhcmFjdGVyIFwi4oaSXCJcbi8vIFwiXFwyMDIyXCIgb3V0cHV0cyBhc2NpaSBjaGFyYWN0ZXIgXCLigKJcIlxuXG4kc2xpY2stZm9udC1wYXRoOiBcIi4vZm9udHMvXCIgIWRlZmF1bHQ7XG4kc2xpY2stZm9udC1mYW1pbHk6IFwic2xpY2tcIiAhZGVmYXVsdDtcbiRzbGljay1sb2FkZXItcGF0aDogXCIuL1wiICFkZWZhdWx0O1xuJHNsaWNrLWFycm93LWNvbG9yOiAkY29sb3VyLWdyZWVuLWRhcms7XG4kc2xpY2stZG90LWNvbG9yOiBibGFjayAhZGVmYXVsdDtcbiRzbGljay1kb3QtY29sb3ItYWN0aXZlOiAkc2xpY2stZG90LWNvbG9yICFkZWZhdWx0O1xuJHNsaWNrLXByZXYtY2hhcmFjdGVyOiBcIjw8XCIgIWRlZmF1bHQ7XG4kc2xpY2stbmV4dC1jaGFyYWN0ZXI6IFwiPj5cIiAhZGVmYXVsdDtcbiRzbGljay1kb3QtY2hhcmFjdGVyOiBcIlxcMjAyMlwiICFkZWZhdWx0O1xuJHNsaWNrLWRvdC1zaXplOiA2cHggIWRlZmF1bHQ7XG4kc2xpY2stb3BhY2l0eS1kZWZhdWx0OiAwLjc1ICFkZWZhdWx0O1xuJHNsaWNrLW9wYWNpdHktb24taG92ZXI6IDEgIWRlZmF1bHQ7XG4kc2xpY2stb3BhY2l0eS1ub3QtYWN0aXZlOiAwLjI1ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2xpY2staW1hZ2UtdXJsKCR1cmwpIHtcbiAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGltYWdlLXVybCkge1xuICAgICAgICBAcmV0dXJuIGltYWdlLXVybCgkdXJsKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgICBAcmV0dXJuIHVybCgkc2xpY2stbG9hZGVyLXBhdGggKyAkdXJsKTtcbiAgICB9XG59XG5cbkBmdW5jdGlvbiBzbGljay1mb250LXVybCgkdXJsKSB7XG4gICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICBAcmV0dXJuIGZvbnQtdXJsKCR1cmwpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAgIEByZXR1cm4gdXJsKCRzbGljay1mb250LXBhdGggKyAkdXJsKTtcbiAgICB9XG59XG5cbi8qIFNsaWRlciAqL1xuXG4uc2xpY2stbGlzdCB7XG4gICAgLnNsaWNrLWxvYWRpbmcgJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmYgc2xpY2staW1hZ2UtdXJsKFwiYWpheC1sb2FkZXIuZ2lmXCIpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xuICAgIH1cbn1cblxuLyogSWNvbnMgKi9cbkBpZiAkc2xpY2stZm9udC1mYW1pbHkgPT0gXCJzbGlja1wiIHtcbiAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwic2xpY2tcIjtcbiAgICAgICAgc3JjOiBzbGljay1mb250LXVybChcInNsaWNrLmVvdFwiKTtcbiAgICAgICAgc3JjOiBzbGljay1mb250LXVybChcInNsaWNrLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHNsaWNrLWZvbnQtdXJsKFwic2xpY2sud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCBzbGljay1mb250LXVybChcInNsaWNrLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSwgc2xpY2stZm9udC11cmwoXCJzbGljay5zdmcjc2xpY2tcIikgZm9ybWF0KFwic3ZnXCIpO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgfVxufVxuXG4vKiBBcnJvd3MgKi9cblxuLnNsaWNrLXByZXYsXG4uc2xpY2stbmV4dCB7XG4gICAgei1pbmRleDogNTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwcHg7XG4gICAgZm9udC1zaXplOiAwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3R0b206IDE1cHg7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgb3BhY2l0eTogJHNsaWNrLW9wYWNpdHktb24taG92ZXI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5zbGljay1kaXNhYmxlZDpiZWZvcmUge1xuICAgICAgICBvcGFjaXR5OiAkc2xpY2stb3BhY2l0eS1ub3QtYWN0aXZlO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkc2xpY2stZm9udC1mYW1pbHk7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGNvbG9yOiAkc2xpY2stYXJyb3ctY29sb3I7XG4gICAgICAgIG9wYWNpdHk6ICRzbGljay1vcGFjaXR5LWRlZmF1bHQ7XG4gICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgICAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAgIH1cbn1cblxuLnNsaWNrLXByZXYge1xuICAgIGxlZnQ6IDUwcHg7XG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgcmlnaHQ6IC0yNXB4O1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICRzbGljay1wcmV2LWNoYXJhY3RlcjtcbiAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICRzbGljay1uZXh0LWNoYXJhY3RlcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNsaWNrLW5leHQge1xuICAgIHJpZ2h0OiA1MHB4O1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIGxlZnQ6IC0yNXB4O1xuICAgICAgICByaWdodDogYXV0bztcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkc2xpY2stbmV4dC1jaGFyYWN0ZXI7XG4gICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgICBjb250ZW50OiAkc2xpY2stcHJldi1jaGFyYWN0ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIERvdHMgKi9cblxuLnNsaWNrLWRvdHRlZC5zbGljay1zbGlkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG59XG5cbi5zbGljay1kb3RzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtMjVweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBsaSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBtYXJnaW46IDAgNXB4O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDBweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMHB4O1xuICAgICAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6ICRzbGljay1vcGFjaXR5LW9uLWhvdmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgY29udGVudDogJHNsaWNrLWRvdC1jaGFyYWN0ZXI7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkc2xpY2stZm9udC1mYW1pbHk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkc2xpY2stZG90LXNpemU7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2xpY2stZG90LWNvbG9yO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6ICRzbGljay1vcGFjaXR5LW5vdC1hY3RpdmU7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgICAgICAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmLnNsaWNrLWFjdGl2ZSBidXR0b246YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkc2xpY2stZG90LWNvbG9yLWFjdGl2ZTtcbiAgICAgICAgICAgIG9wYWNpdHk6ICRzbGljay1vcGFjaXR5LWRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcclxuICogVHlwb2dyYXBoeVxyXG4gKi9cclxuXHJcbmgxIHtcclxuICBtYXJnaW4tdG9wOiAxLjJlbTtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG5cclxuLmxhcmdlIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zZW07XHJcbn1cclxuXHJcblxyXG5hZGRyZXNzIHtcclxuICBAZXh0ZW5kIHA7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG59XHJcblxyXG5zZWN0aW9uIHtcclxuICAgIGgxIHtcclxuICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtaDE7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1oMTtcclxuICAgICAgICBjb2xvcjogJGNvbG91ci1oZWFkaW5ncztcclxuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtaDE7XHJcbiAgICAgICAgcGFkZGluZzogJGJsb2NrLXBhZGRpbmc7XHJcblxyXG4gICAgICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICR3LXJlZ3VsYXIpIHtcclxuICAgICAgICAgIHBhZGRpbmc6IDAgNSU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBiIHtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICR3LW5hcnJvdykge1xyXG4gICAgICAgICBmb250LXNpemU6IDNlbTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaDIge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1oMjtcclxuICAgICAgICBjb2xvcjogJGNvbG91ci1zdWJ0bGU7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgIH1cclxuXHJcbiAgICBoMyB7XHJcbiAgICAgICAgY29sb3I6ICRjb2xvdXItcmVkO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbi5zdGFuZG91dCB7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtaDI7XHJcbiAgICBjb2xvcjogJGNvbG91ci1zdWJ0bGU7XHJcbiAgICBsaW5lLWhlaWdodDogMS40O1xyXG59XHJcblxyXG4udGV4dC1yaWdodCB7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG5cclxuLnRleHQtY2VudGVyIHtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxufVxyXG5cclxuZW0ge1xyXG4gICAgY29sb3I6ICRjb2xvdXItZ3JlZW4tZGFyaztcclxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufVxyXG5cclxuZGV0YWlscyBzdW1tYXJ5IHtcclxuICAgIGNvbG9yOiAkY29sb3VyLWdyZWVuLWRhcms7XHJcbn1cclxuXHJcbi5sYXJnZS1zcGVjaWFsIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zZW07XHJcbiAgICBsaW5lLWhlaWdodDogMWVtO1xyXG4gICAgZm9udC1rZXJuaW5nOiAyO1xyXG4gICAgY29sb3I6ICRjb2xvdXItZ3JlZW4tZGFyaztcclxuXHJcbiAgICAmLnJlZCAge1xyXG4gICAgICAgIGNvbG9yOiAkY29sb3VyLXJlZDtcclxuICAgIH1cclxuXHJcbiAgICAmID4gZGl2OmZpcnN0LW9mLXR5cGUge1xyXG4gICAgICAgIHAge1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogM2VtO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICR3LXJlZ3VsYXIpIHtcclxuICAgICAgLmxhYmVsLWlubGluZSB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgICAgfVxyXG4gICAgICAmID4gZGl2Omxhc3Qtb2YtdHlwZSBwIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi5wYW5lbC1zdGFuZG91dCB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbmZvb3RlciB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBjb2xvcjogJGNvbG91ci1ncmVlbi1kYXJrO1xyXG59XHJcblxyXG5oZWFkZXJbcm9sZT1cImJhbm5lclwiXSB7XHJcbiAgICBtYXJnaW4tdG9wOiA5ZW07XHJcbiAgICBcclxuICAgIGgxLFxyXG4gICAgaDIge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiA1LjRyZW07XHJcbiAgICB9XHJcbiAgICBoMiB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxZW07XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMmVtO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gICAgfVxyXG4gICAgaDEge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcclxuXHJcbiAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDEuNGVtO1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMWVtO1xyXG4gICAgICAgIH0gICAgICBcclxuICAgICAgICBzcGFuOmxhc3Qtb2YtdHlwZSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi43ZW07XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwLjllbTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHctd2lkZSkge1xyXG4gICAgICBoMSxoMiB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDUlO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogNSU7XHJcbiAgICAgIH1cclxuICAgICAgaDEge1xyXG4gICAgICAgIHNwYW46bGFzdC1vZi10eXBlIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAyZW07XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwLjllbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA1NTBweCkge1xyXG4gICAgICBoMSxoMiB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICAgIGgxIHsgICAgICAgIFxyXG4gICAgICAgIGZvbnQtc2l6ZTogMi4yZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxufSIsIkBtaXhpbiBub25fbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIGxpIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICB9XG59XG4ubm9uLWxpc3Qge1xuICBAaW5jbHVkZSBub25fbGlzdDtcbn1cblxuLmhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbm5hdiB7XG5cbiAgbGkuYnVyZ2VyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgYnV0dG9uIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7ICAgXG4gIH1cblxuICB1bCB7XG4gICAgQGluY2x1ZGUgbm9uX2xpc3Q7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuXG4gICAgbGkge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcblxuICAgICAgYSAsIGJ1dHRvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiAkY29sb3VyLWdyZWVuLWRhcms7XG4gICAgICAgIG1pbi13aWR0aDogODBweDtcbiAgICAgICAgaGVpZ2h0OiA1LjhlbTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1sZWZ0OiBzb2xpZCAycHggJGNvbG91ci1ncmVlbi1kYXJrO1xuICAgICAgICBwYWRkaW5nOiAwLjJlbSAxZW0gMC4yZW0gMC44ZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICB9ICAgICAgXG4gICAgfVxuXG4gICAgbGk6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgYSAge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG91ci1ncmVlbi1saWdodDtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6OTMwcHgpIHtcbiAgICB1bCB7XG4gICAgICBsaTpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9ICAgICAgXG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBhICwgYnV0dG9uIHtcbiAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDJweCAkY29sb3VyLWdyZWVuLWRhcms7XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjVlbTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGk6bm90KC5idXJnZXIpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjkzMHB4KSB7XG4gICAgbGk6bm90KC5idXJnZXIpIHtcbiAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbi5yaWdodCB7XG4gIGZsb2F0OiByaWdodDtcbn1cblxuLmxlZnQge1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiAxZW07XG59XG5cbi5yZWQge1xuICBjb2xvcjogJGNvbG91ci1yZWQ7XG59XG4ub24tYmVpZ2Uge1xuICBiYWNrZ3JvdW5kOiAkY29sb3VyLWJlaWdlO1xufVxuXG4ucGFuZWwtYmFja2dyb3VuZCB7XG4gIGJhY2tncm91bmQ6ICRjb2xvdXItYmVpZ2U7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9jb250b3VyLWJhY2tncm91bmQuanBnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBtYXJnaW4tYm90dG9tOiAzLjVlbTtcbiAgcGFkZGluZzogMy41ZW0gNS40ZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHctcmVndWxhcikge1xuICAgIHBhZGRpbmc6IDMuNWVtIDUlO1xuICB9XG59XG4vLyBIYXZlIGEgcmVkIHRyaWFuZ2xlIGF0IHRoZSBib3R0b21cbi5pbmZvZ3JhcGhpYyxcbi5wYW5lbC1iYWNrZ3JvdW5kLFxuLnBhbmVsLXN0YW5kb3V0LFxuLmNhcm91c2VsLmxheW91dC1sYXJnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOm5vdCgubm8tYXJyb3cpOjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDAlO1xuICAgIHJpZ2h0OiA2MHB4O1xuXG4gICAgLy8gVHJpYW5nbGVcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG91ci1yZWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXdpZHRoOiA2M3B4IDYwcHggMCAxMjFweDtcblxuICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6NTUwcHgpIHtcbiAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgYm9yZGVyLXdpZHRoOiA0MHB4IDQwcHggMCAxMDBweDtcbiAgICB9XG4gIH1cbiAgJi5hcnJvdy10b3A6OmFmdGVyIHtcbiAgICB0b3A6IDA7XG4gIH1cbn1cblxuLnBhbmVsLW5vLXBhZGRpbmcge1xuICBwYWRkaW5nOiAzLjVlbSAwO1xuICAgIHAgLCBoMiB7XG4gICAgICBwYWRkaW5nOiAwIDUuNGVtO1xuICAgIH1cbn1cblxuLnBhbmVsLXN0YW5kb3V0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG91ci1ncmVlbi1kYXJrO1xuICBwYWRkaW5nOiAwLjFlbSA1LjRlbSAyLjFlbSAwO1xuXG4gIHAge1xuICAgIG1hcmdpbi10b3A6IDVlbTtcbiAgICBtYXJnaW4tbGVmdDogMmVtO1xuICB9XG59XG5cbi5wYW5lbC1saW5lZCB7XG4gIG1hcmdpbjogMmVtO1xuXG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA1cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJhY2tncm91bmQ6ICRjb2xvdXItZ3JlZW4tbGlnaHQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgJjo6YmVmb3JlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICB9XG4gICY6OmFmdGVyIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICB9XG5cbiAgJiA+IGRpdiB7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgQGluY2x1ZGUgZGlzcGxheShmbGV4KTtcbiAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgQGluY2x1ZGUgZmxleC13cmFwKHdyYXApO1xuICAgIH0gICAgIFxuICB9XG4gIC5sZWZ0IHtcbiAgICBAaW5jbHVkZSBmbGV4KDAgMCBhdXRvKTtcbiAgICB3aWR0aDogMzEwcHg7XG4gICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgfVxuICAucmlnaHQge1xuICAgIEBpbmNsdWRlIGZsZXgoMSAxIGF1dG8pO1xuICB9XG5cbiAgaDMsXG4gIHAge1xuICAgIHBhZGRpbmc6IDNweCA4cHg7XG4gIH1cbiAgaDMge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgZm9udC1zaXplOiAyLjJlbTtcbiAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgbWFyZ2luLWxlZnQ6IDQ1cHg7XG4gICAgfVxuICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDcwMHB4KSB7XG4gICAgICBmb250LXNpemU6IDEuN2VtO1xuICAgIH1cbiAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA2MjBweCkge1xuICAgICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICB9XG4gIH1cbiAgcCB7XG4gIH1cbn1cblxuLmxhYmVsIHtcbiAgLy8gYmFja2dyb3VuZC1jb2xvcjogJGNvbG91ci1ncmVlbi1saWdodDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1nL3JpYmJvbi5wbmdcIik7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0O1xuICBjb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6IDAuMWVtIDFlbTtcbiAgbWF4LXdpZHRoOiA1NTBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIC8vIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cblxuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgIHRvcDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIFxuICAgIC8vIFRyaWFuZ2xlXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvdXItZ3JlZW4tZGFyayB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItd2lkdGg6IDE0cHggMHB4IDBweCAyOXB4O1xuICB9XG5cbi8vICY6OmJlZm9yZSB7XG4vLyAgIGNvbnRlbnQ6IFwiXCI7XG4vLyAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4vLyAgIGJvcmRlci1jb2xvcjogJGNvbG91ci1ncmVlbi1saWdodCB0cmFuc3BhcmVudCAkY29sb3VyLWdyZWVuLWxpZ2h0ICRjb2xvdXItZ3JlZW4tbGlnaHQ7XG4vLyAgIGJvcmRlci13aWR0aDogMjdweCAzMHB4IDI3cHggMDtcbi8vICAgcG9zaXRpb246IGFic29sdXRlO1xuLy8gICBsZWZ0OiAxMDAlO1xuLy8gICB0b3A6IDA7XG4vLyB9XG5cbiAgICAmLmxhYmVsLXJlZCB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9yaWJib24tcmVkLnBuZ1wiKTtcblxuICAgICAgICAmOjphZnRlciB7ICAgICAgICBcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogYmxhY2sgdHJhbnNwYXJlbnQ7ICAgICAgICBcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICY6OmJlZm9yZSB7ICAgICAgICBcbiAgICAgICAgLy8gICAgIGJvcmRlci1jb2xvcjogJGNvbG91ci1yZWQgdHJhbnNwYXJlbnQgJGNvbG91ci1yZWQgJGNvbG91ci1yZWQ7ICAgICAgICBcbiAgICAgICAgLy8gfVxuICAgIH1cbiAgJi5mYXQge1xuICAgIGZvbnQtc2l6ZTogMi41ZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luLXRvcDogMWVtO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIG1hcmdpbjogMzBweCAwIDVweCAwO1xuICB9XG59XG4ubGFiZWwtZGV0YWlsIHtcbiAgY29sb3I6ICRjb2xvdXItZ3JlZW4tZGFyaztcbiAgbWFyZ2luLWxlZnQ6IDQwcHg7XG59XG5cbi5oZWFkZXItcmVkIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3VyLXJlZDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogNDVweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICBib3JkZXItd2lkdGg6IDQ1cHggMCAwIDM2cHg7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG91ci1yZWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICAgIHRvcDogMDtcbiAgICB9XG59XG5cbi5sYWJlbC1pbmxpbmUge1xuICAgIEBleHRlbmQgLmxhYmVsO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tbGVmdDogMWVtO1xuICAgIG1heC13aWR0aDogYXV0bztcbiAgICB3aWR0aDogMjQ1cHg7XG4gICAgZm9udC1zaXplOiAyZW07XG4gICAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHctd2lkZSkge1xuICAgICAgICB3aWR0aDogMjM1cHg7ICAgICAgICBcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xuICAgICB9XG59XG5cblxuLmxhYmVsLXNpbXBsZSB7XG4gIEBleHRlbmQgLmxhYmVsO1xuICBiYWNrZ3JvdW5kOiAkY29sb3VyLWdyZWVuLWxpZ2h0O1xuICBoZWlnaHQ6IDU1cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwZW07XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6IDU1cHggNTVweCAwIDA7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3VyLWdyZWVuLWxpZ2h0IHRyYW5zcGFyZW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAxMDAlO1xuICAgIHRvcDogMDtcbiAgfVxufVxuXG4jaW1wcm92ZW1lbnRzIHtcbiAgLmxhYmVsIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7IFxuICAgIHRvcDogMDtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgei1pbmRleDogNTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcblxuICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICBmb250LXNpemU6IDEuNmVtO1xuICAgIH1cbiAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA0NTBweCkge1xuICAgICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICB9XG4gICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNDAwcHgpIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgfVxuXG4gIH1cbn1cblxuLm1vcmUge1xuICBjb2xvcjogJGNvbG91ci1ncmVlbi1kYXJrO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWcvZG93bi5wbmdcIik7XG4gICAgd2lkdGg6IDE1cHg7XG4gICAgaGVpZ2h0OiAxM3B4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgfVxufVxuXG4ubGVmdC1saW5lIHsgICAgXG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAkY29sb3VyLXN1YnRsZTtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG59XG5cbi5ncm91cCB7XG4gICAgQGluY2x1ZGUgZ3JvdXA7XG59XG5cbi5uby1saW5lIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbn1cblxuLm5vLW1hcmdpbiAsIC5uby1tYXJnaW4gcHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5pY29ucyB7XG4gIGltZyB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgfVxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgbGkge1xuICAgIEBpbmNsdWRlIGdyb3VwO1xuICB9XG4gIFxufVxuXG5maWd1cmUge1xuICBtYXJnaW46IDA7XG5cbiAgZmlnY2FwdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogMWVtO1xuICB9XG59XG5cbi5idWxsZXQtY2hldnJvbnMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuICB9XG4gIHA6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9pbWcvYnVsbGV0LWNoZXZyb24ucG5nXCIpO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjdweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IGNhbGMoMTAwJSArIDAuNWVtKTtcbiAgfVxufVxuXG4uc2xpY2stcHJldiwuc2xpY2stbmV4dCB7XG4gIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICR3LXJlZ3VsYXIpIHtcbiAgIGJvdHRvbTogMDtcbiAgfVxufVxuXG4uY2Fyb3VzZWwsXG4uY2Fyb3VzZWwtYWx0IHtcbiAgLnNsaWNrLXByZXY6OmJlZm9yZSxcbiAgLnNsaWNrLW5leHQ6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICB3aWR0aDogMjZweDtcbiAgICBoZWlnaHQ6IDI3cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG4gIC5zbGljay1wcmV2OjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9jYXJvdXNlbC1sZWZ0LnBuZ1wiKTtcbiAgfVxuICAuc2xpY2stbmV4dDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWcvY2Fyb3VzZWwtcmlnaHQucG5nXCIpO1xuICB9XG59XG5cbi5jYXJvdXNlbCB7XG4gIC8vIGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXItYmVpZ2U7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcblxuICAmLmxheW91dC1zbWFsbCB7XG4gICAgaW1nIHsgICAgICBcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAzLjVlbTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNjYwcHgpIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxZW07XG4gICAgICB9XG4gICAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA2MTBweCkge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG4gICAgfVxuICAgIC5zbGljay1wcmV2IHtcbiAgICAgIGxlZnQ6IDM1MHB4O1xuICAgICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNjEwcHgpIHtcbiAgICAgICAgbGVmdDogNTBweDtcbiAgICAgIH1cbiAgICB9XG4gICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNjEwcHgpIHtcbiAgICAgICAgaDIgLCBwIHsgICAgICAgICAgXG4gICAgICAgICAgbWFyZ2luOiAwIDJlbTtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIC5jb2xzLTIge1xuICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICR3LXJlZ3VsYXIpIHtcbiAgICBpbWd7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuICB9XG5cblxuICAmLmxheW91dC1sYXJnZSB7XG4gICAgbGkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC5zbGljay1wcmV2IHtcbiAgICAgIGxlZnQ6IDEzMHB4O1xuICAgICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHctcmVndWxhcikge1xuICAgICAgICBsZWZ0OiAgMnB4O1xuICAgICAgfVxuICAgIH1cbiAgICAuc2xpY2stbmV4dCB7XG4gICAgICByaWdodDogMTM4cHg7XG4gICAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAkdy1yZWd1bGFyKSB7XG4gICAgICAgIHJpZ2h0OiAgMTBweDtcbiAgICAgIH1cbiAgICB9XG4gICAgLnNsaWNrLXByZXY6OmJlZm9yZSxcbiAgICAuc2xpY2stbmV4dDo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICB3aWR0aDogMzlweDtcbiAgICAgIGhlaWdodDogNDFweDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gICAgLnNsaWNrLXByZXY6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWcvY2Fyb3VzZWwtd2hpdGUtbGVmdC5wbmdcIik7XG4gICAgfVxuICAgIC5zbGljay1uZXh0OjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1nL2Nhcm91c2VsLXdoaXRlLXJpZ2h0LnBuZ1wiKTtcbiAgICB9XG4gICAgaW1nICwgYSB7XG4gICAgICArICBkaXYge1xuICAgICAgICB3aWR0aDogNjMwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIDAuOSk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAvLyBsZWZ0OiBjYWxjKDUwJSAtIDMxNXB4KTtcbiAgICAgICAgcGFkZGluZzogMS40ZW0gMmVtIDEuNGVtIDE0MHB4O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuXG4gICAgICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICR3LXdpZGUpIHtcbiAgICAgICAgICAgICB3aWR0aDogNTAwcHg7XG4gICAgICAgIH1cbiAgICAgICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNGVtIDFlbSAwLjRlbSA5MHB4O1xuICAgICAgICAgICAgd2lkdGg6IDQwMHB4O1xuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICR3LW5hcnJvdykge1xuICAgICAgICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgICAgICAgd2lkdGg6IDMwMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJHctbmFycm93KSB7XG5cbiAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAvLyBUcmlhbmdsZVxuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDEyMHB4IDAgMCAxMjBweDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgJGNvbG91ci1ncmVlbi1saWdodDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG5cbiAgICAgICAgICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDgwcHggMCAwIDgwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5zbGlkZS1udW1iZXIge1xuICAgICAgZm9udC1zaXplOiAyLjRlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwLjJlbTtcbiAgICAgIGxlZnQ6IDAuNWVtO1xuICAgICAgei1pbmRleDogMTA7XG4gICAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAkdy1uYXJyb3cpIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICAgICAgY29sb3I6ICRjb2xvdXItZ3JlZW4tbGlnaHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGgzIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgY29sb3I6ICRjb2xvdXItZ3JlZW4tZGFyaztcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuICAgIHAge1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG4gIH1cbiAgJi5sYXJnZS1waWMge1xuICAgIC5zbGljay1wcmV2IHtcbiAgICAgIGxlZnQ6IDY1JTtcbiAgICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDU1MHB4KSB7XG4gICAgICAgIGxlZnQ6IDUwcHg7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLnNsaWNrLXByZXYsLnNsaWNrLW5leHQge1xuICAgICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHctd2lkZSkge1xuICAgICAgICBib3R0b206IC0yNXB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAmLmJvcmRlci1ib3R0b20ge1xuICAgIHBhZGRpbmctYm90dG9tOiAyZW07XG4gICAgXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgLy8gZ3JlZW4gbGluZVxuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvdXItZ3JlZW4tbGlnaHQ7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogM3B4O1xuICAgICAgbGVmdDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICB9XG4gIH1cbn1cblxuXG5cbi5jYXJvdXNlbC1hbHQge1xuICAuc2xpY2stcHJldixcbiAgLnNsaWNrLW5leHQge1xuICAgIHRvcDogMjgwcHg7XG4gIH1cbiAgLnNsaWNrLXByZXYge1xuICAgIGxlZnQ6IC0xMCU7XG4gICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHctcmVndWxhcikge1xuICAgICAgbGVmdDogLTUlO1xuICAgIH1cbiAgfVxuICAuc2xpY2stbmV4dCB7XG4gICAgcmlnaHQ6IC0xMCU7XG4gICAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJHctcmVndWxhcikge1xuICAgICAgcmlnaHQ6IC01JTtcbiAgICB9XG4gIH1cbn1cblxuLmluZGVudCB7XG4gIG1hcmdpbi1sZWZ0OiAzLjVlbTtcbn1cblxuLmxhcmdlLXNwZWNpYWwge1xuICAgIHAge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxufVxuXG4ub3ZlcmxheS1saWdodCB7XG4gICAgbWFyZ2luOiAwIC01LjRlbSAtMy41ZW0gLTUuNGVtO1xuICAgIHBhZGRpbmc6IDFlbSA1LjRlbSAzLjVlbSA1LjRlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmODA7XG59XG5cblxuXG4jYWNoaWV2ZW1lbnRzIHtcbiAgICBsaSB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBwYWRkaW5nOiAwLjVlbTtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJSAxMDAlIDAgMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSggcm90YXRlKC05MGRlZykpO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbig2MSUgMTQlKTtcbiAgICAgICAgICAgIG1hcmdpbjogMWVtIDBlbTtcblxuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG91ci1ncmVlbi1kYXJrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwZW0gMC40ZW07XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgID4gZGl2IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyZW07XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6XCJcIjtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgMnB4IGJsYWNrO1xuICAgICAgICAgICAgdG9wOiAzNyU7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4udGVhbS1waWNzIHtcbiAgICBpbWcge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgfVxuXG4gICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLmZlYXRoZXJsaWdodC1jb250ZW50IHtcbiAgd2lkdGg6IDYwMHB4O1xuICBoZWlnaHQ6IDQwMHB4O1xuXG4gIGlmcmFtZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4udmlkZW8tdGh1bWJuYWlsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgLmJ1dHRvbiB7XG4gICAgLy8gcm91bmRlZCBncmVlbiBsaW5lXG4gICAgYmFja2dyb3VuZDogJGNvbG91ci1ncmVlbi1saWdodDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICBwYWRkaW5nOiA5cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gMzJweCk7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDMycHgpO1xuICB9XG59XG5cbi5pY29ucy1zb2NpYWwge1xuICBpbWcge1xuICAgIG1hcmdpbi1yaWdodDogMC4zZW07XG4gIH1cbn0iXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7QUFFSCwwREFBMEQ7QUVSMUQ7O0dBRUc7QUFtQndDLHFCQUFxQjtBQUczQix5Q0FBeUM7QUFROUUsNkJBQTZCO0FBQ0UsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFFN0IsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFxQjVELHFCQUFxQjtBQWtEckIsT0FBTyxDQUFDLHdFQUFJO0FzRjRLWixBQUFBLE9BQU8sQUFqUEosTUFBTSxDQUFDO0VBQ04sT0FBTyxFQUFFLEVBQUc7RUFDWixPQUFPLEVBQUUsS0FBTTtFQUNmLEtBQUssRUFBRSxJQUFLLEdBQUU7O0FBOE9sQixBQTNGUSxPQTJGRCxHQTNGQyxDQUFDLENBQUM7RUFDRixXQUFXLEVBQUUsQ0FBRTtFQUNmLFlBQVksRUFBRSxDQUFFLEdBSW5COztBQWdCRyxNQUFNLENBQU4sR0FBRyxNQUFNLFNBQVMsRUFBRSxLQUFLO0VBcUVqQyxBQXhFUSxPQXdFRCxHQXhFQyxDQUFDLENBQUM7SUF6RFIsS0FBSyxFQU53RixJQUFJO0lBT2pHLEtBQUssRUFOTyxrQ0FBSTtJQU9oQixXQUFXLEVBQUUsS0FBYTtJQUMxQixZQUFZLEVBQUUsS0FBYSxHQTREeEI7SUFrRUwsQUF4RVEsT0F3RUQsR0F4RUMsQ0FBQyxBQWxETixVQUFXLENBQUEsTUFBTSxFQUFsQjtNQUNF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 */
