/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
   ========================================================================== */
/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */
html {
  line-height: 1.15;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
}

/* Sections
     ========================================================================== */
/**
   * Remove the margin in all browsers.
   */
body {
  margin: 0;
}

/**
   * Render the `main` element consistently in IE.
   */
main {
  display: block;
}

/**
   * Correct the font size and margin on `h1` elements within `section` and
   * `article` contexts in Chrome, Firefox, and Safari.
   */
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/* Grouping content
     ========================================================================== */
/**
   * 1. Add the correct box sizing in Firefox.
   * 2. Show the overflow in Edge and IE.
   */
hr {
  box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */
}

/**
   * 1. Correct the inheritance and scaling of font size in all browsers.
   * 2. Correct the odd `em` font sizing in all browsers.
   */
pre {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */
}

/* Text-level semantics
     ========================================================================== */
/**
   * Remove the gray background on active links in IE 10.
   */
a {
  background-color: transparent;
}

/**
   * 1. Remove the bottom border in Chrome 57-
   * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
   */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  text-decoration: underline dotted;
  /* 2 */
}

/**
   * Add the correct font weight in Chrome, Edge, and Safari.
   */
b,
strong {
  font-weight: bolder;
}

/**
   * 1. Correct the inheritance and scaling of font size in all browsers.
   * 2. Correct the odd `em` font sizing in all browsers.
   */
code,
kbd,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */
}

/**
   * Add the correct font size in all browsers.
   */
small {
  font-size: 80%;
}

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

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/* Embedded content
     ========================================================================== */
/**
   * Remove the border on images inside links in IE 10.
   */
img {
  border-style: none;
}

/* Forms
     ========================================================================== */
/**
   * 1. Change the font styles in all browsers.
   * 2. Remove the margin in Firefox and Safari.
   */
button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-size: 100%;
  /* 1 */
  line-height: 1.15;
  /* 1 */
  margin: 0;
  /* 2 */
}

/**
   * Show the overflow in IE.
   * 1. Show the overflow in Edge.
   */
button,
input {
  /* 1 */
  overflow: visible;
}

/**
   * Remove the inheritance of text transform in Edge, Firefox, and IE.
   * 1. Remove the inheritance of text transform in Firefox.
   */
button,
select {
  /* 1 */
  text-transform: none;
}

/**
   * Correct the inability to style clickable types in iOS and Safari.
   */
button,
[type=button],
[type=reset],
[type=submit] {
  -webkit-appearance: button;
}

/**
   * Remove the inner border and padding in Firefox.
   */
button::-moz-focus-inner,
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/**
   * Restore the focus styles unset by the previous rule.
   */
button:-moz-focusring,
[type=button]:-moz-focusring,
[type=reset]:-moz-focusring,
[type=submit]:-moz-focusring {
  outline: 1px dotted ButtonText;
}

/**
   * Correct the padding in Firefox.
   */
fieldset {
  padding: 0.35em 0.75em 0.625em;
}

/**
   * 1. Correct the text wrapping in Edge and IE.
   * 2. Correct the color inheritance from `fieldset` elements in IE.
   * 3. Remove the padding so developers are not caught out when they zero out
   *    `fieldset` elements in all browsers.
   */
legend {
  box-sizing: border-box;
  /* 1 */
  color: inherit;
  /* 2 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  padding: 0;
  /* 3 */
  white-space: normal;
  /* 1 */
}

/**
   * Add the correct vertical alignment in Chrome, Firefox, and Opera.
   */
progress {
  vertical-align: baseline;
}

/**
   * Remove the default vertical scrollbar in IE 10+.
   */
textarea {
  overflow: auto;
}

/**
   * 1. Add the correct box sizing in IE 10.
   * 2. Remove the padding in IE 10.
   */
[type=checkbox],
[type=radio] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */
}

/**
   * Correct the cursor style of increment and decrement buttons in Chrome.
   */
[type=number]::-webkit-inner-spin-button,
[type=number]::-webkit-outer-spin-button {
  height: auto;
}

/**
   * 1. Correct the odd appearance in Chrome and Safari.
   * 2. Correct the outline style in Safari.
   */
[type=search] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
}

/**
   * Remove the inner padding in Chrome and Safari on macOS.
   */
[type=search]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
   * 1. Correct the inability to style clickable types in iOS and Safari.
   * 2. Change font properties to `inherit` in Safari.
   */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */
}

/* Interactive
     ========================================================================== */
/*
   * Add the correct display in Edge, IE 10+, and Firefox.
   */
details {
  display: block;
}

/*
   * Add the correct display in all browsers.
   */
summary {
  display: list-item;
}

/* Misc
     ========================================================================== */
/**
   * Add the correct display in IE 10+.
   */
template {
  display: none;
}

/**
   * Add the correct display in IE 10.
   */
[hidden] {
  display: none;
}

html {
  box-sizing: border-box;
  -webkit-text-size-adjust: 100%;
}

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

* {
  max-height: 1000000px;
}

main,
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
  display: block;
}

ul,
ol,
dl,
p,
h1,
h2,
h3,
h4,
h5,
h6,
address,
form,
table,
blockquote,
applet,
embed,
object,
iframe,
frameset {
  margin: 0 0 19px;
}

blockquote {
  border-left: 4px solid #ddd;
  padding-left: 10px;
  margin-left: 0;
}

table {
  border-collapse: collapse;
}

th,
td {
  border: 1px solid #ddd;
  padding: 3px;
  text-align: left;
  vertical-align: top;
}

th {
  text-align: center;
  vertical-align: middle;
}

ul,
ol {
  padding-left: 20px;
}

ul ul,
ul ol,
ol ul,
ol ol {
  padding-left: 20px;
  margin: 0;
}

ul {
  list-style-type: disc;
}

dl dt {
  float: left;
  clear: left;
  padding-right: 0.3em;
  font-weight: bold;
}
dl dd {
  overflow: hidden;
}

pre {
  max-width: 100%;
  overflow: auto;
}

body {
  color: #fff;
  background: #0F0F0F;
  font: 15px/1.3 "Open Sans", "Arial", "Helvetica Neue", "Helvetica", sans-serif;
  min-width: 320px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  margin: 0;
}
@media (min-width: 768px) {
  body {
    font-size: 15px;
    line-height: 1.3;
  }
}

img {
  max-width: 100%;
  height: auto;
  vertical-align: top;
  display: inline-block;
}

.gm-style img {
  max-width: none;
}

iframe {
  max-width: 100%;
}

.resize-active * {
  transition: none !important;
}

.clearfix:after {
  content: "";
  display: block;
  clear: both;
}

.ellipsis {
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.df-row {
  display: flex;
  flex-wrap: wrap;
  margin: 0 -15px;
}
@media (min-width: 576px) {
  .df-row .col-ph-1 {
    flex: 1 0 calc(8.3333333333% * 1);
    max-width: calc(8.3333333333% * 1);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-2 {
    flex: 1 0 calc(8.3333333333% * 2);
    max-width: calc(8.3333333333% * 2);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-3 {
    flex: 1 0 calc(8.3333333333% * 3);
    max-width: calc(8.3333333333% * 3);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-4 {
    flex: 1 0 calc(8.3333333333% * 4);
    max-width: calc(8.3333333333% * 4);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-5 {
    flex: 1 0 calc(8.3333333333% * 5);
    max-width: calc(8.3333333333% * 5);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-6 {
    flex: 1 0 calc(8.3333333333% * 6);
    max-width: calc(8.3333333333% * 6);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-7 {
    flex: 1 0 calc(8.3333333333% * 7);
    max-width: calc(8.3333333333% * 7);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-8 {
    flex: 1 0 calc(8.3333333333% * 8);
    max-width: calc(8.3333333333% * 8);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-9 {
    flex: 1 0 calc(8.3333333333% * 9);
    max-width: calc(8.3333333333% * 9);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-10 {
    flex: 1 0 calc(8.3333333333% * 10);
    max-width: calc(8.3333333333% * 10);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-11 {
    flex: 1 0 calc(8.3333333333% * 11);
    max-width: calc(8.3333333333% * 11);
  }
}
@media (min-width: 576px) {
  .df-row .col-ph-12 {
    flex: 1 0 calc(8.3333333333% * 12);
    max-width: calc(8.3333333333% * 12);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-0 {
    margin-left: calc(8.3333333333% * 0);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-1 {
    margin-left: calc(8.3333333333% * 1);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-2 {
    margin-left: calc(8.3333333333% * 2);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-3 {
    margin-left: calc(8.3333333333% * 3);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-4 {
    margin-left: calc(8.3333333333% * 4);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-5 {
    margin-left: calc(8.3333333333% * 5);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-6 {
    margin-left: calc(8.3333333333% * 6);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-7 {
    margin-left: calc(8.3333333333% * 7);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-8 {
    margin-left: calc(8.3333333333% * 8);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-9 {
    margin-left: calc(8.3333333333% * 9);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-10 {
    margin-left: calc(8.3333333333% * 10);
  }
}
@media (min-width: 576px) {
  .df-row .col-offset-ph-11 {
    margin-left: calc(8.3333333333% * 11);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-1 {
    flex: 1 0 calc(8.3333333333% * 1);
    max-width: calc(8.3333333333% * 1);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-2 {
    flex: 1 0 calc(8.3333333333% * 2);
    max-width: calc(8.3333333333% * 2);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-3 {
    flex: 1 0 calc(8.3333333333% * 3);
    max-width: calc(8.3333333333% * 3);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-4 {
    flex: 1 0 calc(8.3333333333% * 4);
    max-width: calc(8.3333333333% * 4);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-5 {
    flex: 1 0 calc(8.3333333333% * 5);
    max-width: calc(8.3333333333% * 5);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-6 {
    flex: 1 0 calc(8.3333333333% * 6);
    max-width: calc(8.3333333333% * 6);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-7 {
    flex: 1 0 calc(8.3333333333% * 7);
    max-width: calc(8.3333333333% * 7);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-8 {
    flex: 1 0 calc(8.3333333333% * 8);
    max-width: calc(8.3333333333% * 8);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-9 {
    flex: 1 0 calc(8.3333333333% * 9);
    max-width: calc(8.3333333333% * 9);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-10 {
    flex: 1 0 calc(8.3333333333% * 10);
    max-width: calc(8.3333333333% * 10);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-11 {
    flex: 1 0 calc(8.3333333333% * 11);
    max-width: calc(8.3333333333% * 11);
  }
}
@media (min-width: 768px) {
  .df-row .col-sm-12 {
    flex: 1 0 calc(8.3333333333% * 12);
    max-width: calc(8.3333333333% * 12);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-0 {
    margin-left: calc(8.3333333333% * 0);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-1 {
    margin-left: calc(8.3333333333% * 1);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-2 {
    margin-left: calc(8.3333333333% * 2);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-3 {
    margin-left: calc(8.3333333333% * 3);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-4 {
    margin-left: calc(8.3333333333% * 4);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-5 {
    margin-left: calc(8.3333333333% * 5);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-6 {
    margin-left: calc(8.3333333333% * 6);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-7 {
    margin-left: calc(8.3333333333% * 7);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-8 {
    margin-left: calc(8.3333333333% * 8);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-9 {
    margin-left: calc(8.3333333333% * 9);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-10 {
    margin-left: calc(8.3333333333% * 10);
  }
}
@media (min-width: 768px) {
  .df-row .col-offset-sm-11 {
    margin-left: calc(8.3333333333% * 11);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-1 {
    flex: 1 0 calc(8.3333333333% * 1);
    max-width: calc(8.3333333333% * 1);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-2 {
    flex: 1 0 calc(8.3333333333% * 2);
    max-width: calc(8.3333333333% * 2);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-3 {
    flex: 1 0 calc(8.3333333333% * 3);
    max-width: calc(8.3333333333% * 3);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-4 {
    flex: 1 0 calc(8.3333333333% * 4);
    max-width: calc(8.3333333333% * 4);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-5 {
    flex: 1 0 calc(8.3333333333% * 5);
    max-width: calc(8.3333333333% * 5);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-6 {
    flex: 1 0 calc(8.3333333333% * 6);
    max-width: calc(8.3333333333% * 6);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-7 {
    flex: 1 0 calc(8.3333333333% * 7);
    max-width: calc(8.3333333333% * 7);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-8 {
    flex: 1 0 calc(8.3333333333% * 8);
    max-width: calc(8.3333333333% * 8);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-9 {
    flex: 1 0 calc(8.3333333333% * 9);
    max-width: calc(8.3333333333% * 9);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-10 {
    flex: 1 0 calc(8.3333333333% * 10);
    max-width: calc(8.3333333333% * 10);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-11 {
    flex: 1 0 calc(8.3333333333% * 11);
    max-width: calc(8.3333333333% * 11);
  }
}
@media (min-width: 1024px) {
  .df-row .col-md-12 {
    flex: 1 0 calc(8.3333333333% * 12);
    max-width: calc(8.3333333333% * 12);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-0 {
    margin-left: calc(8.3333333333% * 0);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-1 {
    margin-left: calc(8.3333333333% * 1);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-2 {
    margin-left: calc(8.3333333333% * 2);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-3 {
    margin-left: calc(8.3333333333% * 3);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-4 {
    margin-left: calc(8.3333333333% * 4);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-5 {
    margin-left: calc(8.3333333333% * 5);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-6 {
    margin-left: calc(8.3333333333% * 6);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-7 {
    margin-left: calc(8.3333333333% * 7);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-8 {
    margin-left: calc(8.3333333333% * 8);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-9 {
    margin-left: calc(8.3333333333% * 9);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-10 {
    margin-left: calc(8.3333333333% * 10);
  }
}
@media (min-width: 1024px) {
  .df-row .col-offset-md-11 {
    margin-left: calc(8.3333333333% * 11);
  }
}
.df-row [class*=col-] {
  padding: 0 15px;
}

h1,
.h1 {
  font-size: 20px;
}

h2,
.h2 {
  font-size: 20px;
}

h3,
.h3 {
  font-size: 15px;
}

h4,
.h4 {
  font-size: 14px;
}

h5,
.h5 {
  font-size: 14px;
}

h6,
.h6 {
  font-size: 14px;
}

@media (min-width: 768px) {
  h1,
  .h1 {
    font-size: 30px;
  }
  h2,
  .h2 {
    font-size: 30px;
  }
  h3,
  .h3 {
    font-size: 28px;
  }
  h4,
  .h4 {
    font-size: 20px;
  }
  h5,
  .h5 {
    font-size: 18px;
  }
  h6,
  .h6 {
    font-size: 16px;
  }
}
@media (min-width: 1024px) {
  h1,
  .h1 {
    font-size: 40px;
  }
  h2,
  .h2 {
    font-size: 40px;
  }
  h3,
  .h3 {
    font-size: 28px;
  }
  h4,
  .h4 {
    font-size: 20px;
  }
  h5,
  .h5 {
    font-size: 18px;
  }
  h6,
  .h6 {
    font-size: 16px;
  }
}
@media (min-width: 1200px) {
  h1,
  .h1 {
    font-size: 40px;
  }
  h2,
  .h2 {
    font-size: 40px;
  }
  h3,
  .h3 {
    font-size: 28px;
  }
  h4,
  .h4 {
    font-size: 20px;
  }
  h5,
  .h5 {
    font-size: 18px;
  }
  h6,
  .h6 {
    font-size: 16px;
  }
}
h1,
.h1,
h2,
.h2,
h3,
.h3,
h4,
.h4,
h5,
.h5,
h6,
.h6,
.h {
  font-family: "Open Sans", "Arial", "Helvetica Neue", "Helvetica", sans-serif;
  color: inherit;
  font-weight: bold;
  margin: 0 0 10px;
}
@media (min-width: 768px) {
  h1,
  .h1,
  h2,
  .h2,
  h3,
  .h3,
  h4,
  .h4,
  h5,
  .h5,
  h6,
  .h6,
  .h {
    margin-bottom: 20px;
  }
}

h1 {
  text-transform: uppercase;
  line-height: 1.2;
}

h2 {
  color: #7CB025;
  text-transform: uppercase;
  line-height: 1.2;
}

p {
  margin: 0 0 20px;
}

a {
  color: #007bff;
  text-decoration: none;
}
a:hover, a:focus {
  color: #000;
  text-decoration: none;
}

a[href*="mailto:"] {
  word-wrap: break-word;
}

form,
fieldset {
  margin: 0;
  padding: 0;
  border-style: none;
}

input[type=text],
input[type=tel],
input[type=email],
input[type=search],
input[type=password],
input[type=url],
textarea {
  -webkit-appearance: none;
  -webkit-border-radius: 0;
  padding: 10px 20px;
  font-size: 15px;
  line-height: 17px;
  font-family: "Open Sans", "Arial", "Helvetica Neue", "Helvetica", sans-serif;
  box-sizing: border-box;
  border: 1px solid #000;
  border-radius: 0;
}
input[type=text]:not(textarea),
input[type=tel]:not(textarea),
input[type=email]:not(textarea),
input[type=search]:not(textarea),
input[type=password]:not(textarea),
input[type=url]:not(textarea),
textarea:not(textarea) {
  height: 39px;
}
input[type=text]:focus,
input[type=tel]:focus,
input[type=email]:focus,
input[type=search]:focus,
input[type=password]:focus,
input[type=url]:focus,
textarea:focus {
  outline: none;
  border-color: #000;
}
input[type=text]::-webkit-input-placeholder,
input[type=tel]::-webkit-input-placeholder,
input[type=email]::-webkit-input-placeholder,
input[type=search]::-webkit-input-placeholder,
input[type=password]::-webkit-input-placeholder,
input[type=url]::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
  color: #ddd;
}
input[type=text]::-moz-placeholder,
input[type=tel]::-moz-placeholder,
input[type=email]::-moz-placeholder,
input[type=search]::-moz-placeholder,
input[type=password]::-moz-placeholder,
input[type=url]::-moz-placeholder,
textarea::-moz-placeholder {
  opacity: 1;
  color: #ddd;
}
input[type=text]:-moz-placeholder,
input[type=tel]:-moz-placeholder,
input[type=email]:-moz-placeholder,
input[type=search]:-moz-placeholder,
input[type=password]:-moz-placeholder,
input[type=url]:-moz-placeholder,
textarea:-moz-placeholder {
  color: #ddd;
}
input[type=text]:-ms-input-placeholder,
input[type=tel]:-ms-input-placeholder,
input[type=email]:-ms-input-placeholder,
input[type=search]:-ms-input-placeholder,
input[type=password]:-ms-input-placeholder,
input[type=url]:-ms-input-placeholder,
textarea:-ms-input-placeholder {
  color: #ddd;
}
input[type=text].placeholder,
input[type=tel].placeholder,
input[type=email].placeholder,
input[type=search].placeholder,
input[type=password].placeholder,
input[type=url].placeholder,
textarea.placeholder {
  color: #ddd;
}

input[type=search]::-webkit-search-cancel-button {
  -webkit-appearance: none;
}

textarea {
  resize: vertical;
  vertical-align: top;
  overflow: auto;
}

button,
input[type=button],
input[type=reset],
input[type=file],
input[type=submit] {
  transition: background 0.5s ease-in-out;
  -webkit-appearance: none;
  -webkit-border-radius: 0;
  height: 39px;
  padding: 5px 16px;
  font-size: 15px;
  line-height: 1.5;
  color: #fff;
  background: #000;
  border-width: 1px;
  border-style: solid;
  border-color: #000;
  border-radius: 9px;
  cursor: pointer;
  transition: all 0.5s;
}
button:hover,
input[type=button]:hover,
input[type=reset]:hover,
input[type=file]:hover,
input[type=submit]:hover {
  background: #fff;
  color: #000;
}

noscript {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  margin: 0;
  font-size: 14px;
  color: #f8f9fa;
  background: #007bff;
  display: block;
  padding: 5px 0;
  text-align: center;
  z-index: 99999;
}

.accessibility {
  position: absolute;
  left: -200vw;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.accessibility:focus {
  position: static;
  width: auto;
  height: auto;
}

.visually-hidden {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

[id=header] {
  position: relative;
  padding: 15px 0;
  border-bottom: 3px solid #7CB025;
  z-index: 2;
  font-family: Arial, Helvetica, sans-serif;
}
@media (min-width: 1024px) {
  [id=header] {
    padding: 30px 0;
  }
}
[id=header] .inner {
  display: flex;
  align-items: center;
}

.logo {
  width: 180px;
  margin-right: 20px;
}
@media (min-width: 1024px) {
  .logo {
    width: 237px;
  }
}
.logo img {
  width: 100%;
}

#nav {
  max-width: 1100px;
  margin-left: auto;
  transition: 0.4s all;
  margin-right: -20px;
}
@media (max-width: 1023px) {
  #nav {
    position: absolute;
    top: calc(100% + 3px);
    width: 100vw;
    left: 0;
    background-color: #000;
    opacity: 0;
    pointer-events: none;
    height: calc(100vh - 93px);
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.7);
  }
}
@media (max-width: 1023px) {
  #nav:after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 100vh;
    pointer-events: none;
    z-index: -1;
  }
}
.nav-active #nav {
  opacity: 1;
  pointer-events: all;
}
#nav > ul {
  background-color: #000;
  list-style: none;
  margin: 0;
  font-weight: 700;
  text-transform: uppercase;
  color: #fff;
  padding: 50px 15px;
  text-align: center;
}
@media (min-width: 1024px) {
  #nav > ul {
    display: flex;
    flex-wrap: wrap;
    padding: 0;
    background: transparent;
  }
}
#nav > ul > li {
  position: relative;
  padding: 5px 0;
}
@media (min-width: 1024px) {
  #nav > ul > li {
    padding: 15px 0;
  }
}
#nav > ul > li:hover > .dropdown, #nav > ul > li.hover > .dropdown {
  opacity: 1;
  pointer-events: all;
  display: block;
}
#nav > ul > li > a {
  display: inline-block;
  padding: 10px 20px;
}
@media (min-width: 1024px) {
  #nav > ul > li > a {
    padding: 22px 20px;
  }
}
#nav > ul a {
  color: inherit;
  transition: 0.4s all;
}
#nav > ul a:hover {
  color: #7CB025;
}
#nav .dropdown {
  position: absolute;
  left: 0;
  opacity: 0;
  width: 255px;
  background-color: #638825;
  color: #fff;
  text-align: left;
  padding: 8px 20px;
  font-size: 13px;
  transition: 0.4s all;
  pointer-events: none;
}
@media (max-width: 1023px) {
  #nav .dropdown {
    position: relative;
    width: 100vw;
    left: -15px;
    text-align: center;
    z-index: 1;
    display: none;
  }
}
#nav .dropdown ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
#nav .dropdown a {
  display: block;
  padding: 6px 0;
}
#nav .dropdown a:hover {
  color: #bcda89;
}

.nav-opener {
  position: relative;
  width: 35px;
  height: 25px;
  margin-left: 15px;
  padding: 0;
  background: transparent;
  z-index: 9999;
  border: 0;
  box-shadow: none;
  border-radius: 0;
  margin-left: auto;
}
@media (min-width: 1024px) {
  .nav-opener {
    display: none;
  }
}
.nav-opener:hover {
  background-color: transparent;
}
.nav-opener:before, .nav-opener:after {
  content: "";
  transition: 0.3s transform;
}
.nav-opener:before, .nav-opener:after,
.nav-opener span {
  position: absolute;
  height: 2px;
  background-color: #7CB025;
  left: 0;
  right: 0;
}
.nav-opener:before {
  top: 0;
}
.nav-opener:after {
  bottom: 0;
}
.nav-opener span {
  top: calc(50% - 1px);
}
.nav-active .nav-opener span {
  opacity: 0;
}
.nav-active .nav-opener:before {
  top: calc(50% - 1px);
  transform: rotate(-45deg);
}
.nav-active .nav-opener:after {
  top: calc(50% - 1px);
  transform: rotate(45deg);
}

body.nav-active {
  overflow: hidden;
  height: 100vh;
}

[id=wrapper] {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: 100vh;
}

[id=main] {
  flex-grow: 1;
}

.container {
  width: 100%;
  max-width: 1090px;
  padding: 0 15px;
  margin: 0 auto;
}

.accordion {
  list-style: none;
}
.accordion > li {
  margin-block: 10px;
}
.accordion > li > a {
  display: block;
  text-align: left;
}
.accordion .js-acc-hidden {
  visibility: hidden;
}

.burger-holder {
  position: relative;
}
.burger-holder .burger-drop {
  position: absolute;
  top: 100%;
  left: 0;
  width: 300px;
  background: #fff;
  border: 1px solid #000;
  padding: 20px;
  visibility: hidden;
}
.burger-holder .burger-drop button {
  transition: none;
}
.burger-holder.burger-active .burger-drop {
  visibility: visible;
}

.popup-holder {
  position: relative;
}
.popup-holder .popup {
  position: absolute;
  top: 100%;
  left: 0;
  width: 300px;
  background: #fff;
  border: 1px solid #000;
  padding: 20px;
  visibility: hidden;
}
.popup-holder .popup button {
  transition: none;
}
.popup-holder.popup-active .popup {
  visibility: visible;
}

.open-close {
  position: relative;
}
.open-close .slide {
  width: 300px;
  background: #fff;
  border: 1px solid #000;
  padding: 20px;
}
.open-close .js-slide-hidden {
  visibility: hidden;
}

.line-box {
  width: 600px;
}
.line-box .mask {
  overflow: hidden;
}
.line-box .line {
  width: 99999px;
  display: flex;
}
.line-box .line > * {
  flex: 0 0 auto;
}

/*!
 * tabbyjs v12.0.3
 * Lightweight, accessible vanilla JS toggle tabs.
 * (c) 2019 Chris Ferdinandi
 * MIT License
 * http://github.com/cferdinandi/tabby
 */
/**
 * The tablist
 */
[role=tablist] {
  border-bottom: 1px solid lightgray;
  list-style: none;
  margin: 0;
  padding: 0;
}

[role=tablist] * {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

/**
 * The tablist item
 */
@media (min-width: 30em) {
  [role=tablist] li {
    display: inline-block;
  }
}
/**
 * The tabs
 */
[role=tab] {
  border: 1px solid transparent;
  border-top-color: lightgray;
  display: block;
  padding: 0.5em 1em;
  text-decoration: none;
  /**
     * Active tab styling
     */
  /**
     * Tabs on hover
     */
}

@media (min-width: 30em) {
  [role=tab] {
    border-top-color: transparent;
    border-top-left-radius: 0.5em;
    border-top-right-radius: 0.5em;
    display: inline-block;
    margin-bottom: -1px;
  }
}
[role=tab][aria-selected=true] {
  background-color: lightgray;
}

@media (min-width: 30em) {
  [role=tab][aria-selected=true] {
    background-color: transparent;
    border: 1px solid lightgray;
    border-bottom-color: #ffffff;
  }
}
[role=tab]:hover:not([aria-selected=true]) {
  background-color: #f7f7f7;
}

@media (min-width: 30em) {
  [role=tab]:hover:not([aria-selected=true]) {
    border: 1px solid lightgray;
  }
}
/**
 * [hidden] fallback for IE10 and lower
 */
[hidden] {
  display: none;
}

[id=footer] {
  padding: 40px 0;
  background: #0F0F0F;
  font-size: 14px;
  line-height: 1.2142857143;
  font-family: Arial, Helvetica, sans-serif;
  color: #9a9a9a;
}
[id=footer] .container {
  max-width: 1150px;
}
[id=footer] .inner {
  text-align: center;
}
@media (min-width: 1024px) {
  [id=footer] .inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
}
[id=footer] .copyright {
  font-weight: 700;
}
[id=footer] .copyright p {
  margin-bottom: 0;
}
[id=footer] .footer-nav {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 13px;
  list-style: none;
  padding: 0;
  margin: 0;
  font-weight: 700;
  font-size: 14px;
}
@media (max-width: 1023px) {
  [id=footer] .footer-nav {
    margin-top: 20px;
  }
}
[id=footer] .footer-nav a {
  color: inherit;
  transition: 0.4s all;
}
[id=footer] .footer-nav a:hover {
  color: #7CB025;
}

.btn {
  display: inline-block;
  padding: 5px 16px;
  font-size: 14px;
  text-align: center;
  line-height: 1.5;
  vertical-align: top;
  transition: all 0.5s;
  text-transform: uppercase;
  font-weight: 500;
  border-style: solid;
  border-color: transparent;
  border-width: 1px;
  border-radius: 9px;
}
@media (min-width: 768px) {
  .btn {
    font-size: 16px;
  }
}
.btn-default {
  color: #fff;
  background: #000;
  border-color: #000;
}
.btn-default:hover {
  color: #000;
  background: #fff;
  border-color: #000;
}
.btn-primary {
  color: #fff;
  background: #007bff;
  border-color: #007bff;
}
.btn-primary:hover {
  color: #fff;
  background: rgba(0, 123, 255, 0.5);
  border-color: rgba(0, 123, 255, 0.5);
}
.btn-success {
  color: #fff;
  background: #7CB025;
  border-color: #7CB025;
}
.btn-success:hover {
  color: #fff;
  background: rgba(124, 176, 37, 0.8);
  border-color: rgba(124, 176, 37, 0.8);
}
.btn-secondary {
  color: #fff;
  background: #6c757d;
  border-color: #6c757d;
}
.btn-secondary:hover {
  color: #fff;
  background: rgba(108, 117, 125, 0.1);
  border-color: #6c757d;
}
.btn-sm {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 14px;
  border-radius: 4.5px;
}
.btn-lg {
  padding: 20px 40px;
  font-size: 18px;
  line-height: 20px;
  border-radius: 18px;
}

.btn-group {
  margin: 0 -5px -10px;
  display: flex;
  flex-wrap: wrap;
}
.btn-group .btn {
  margin: 0 5px 10px;
}

.btn-holder {
  display: flex;
  flex-wrap: wrap;
  gap: 22px;
}

.heading {
  line-height: 1.6666666667;
  margin-bottom: 40px;
}
@media (min-width: 1024px) {
  .heading {
    font-size: 18px;
  }
}
.heading.text-center {
  text-align: center;
}
.heading h2 {
  margin-bottom: 12px;
}
.heading h4 {
  font-size: 20px;
  font-weight: 600;
  font-style: italic;
  margin-bottom: 0;
}
@media (min-width: 1024px) {
  .heading h4 {
    font-size: 24px;
  }
}
.heading p {
  font-weight: 500;
}
.heading .btn-holder {
  justify-content: center;
  margin-top: 20px;
}
@media (min-width: 1024px) {
  .heading .btn-holder {
    margin-top: 37px;
  }
}

.section-hero {
  position: relative;
  padding: 70px 0;
  z-index: 1;
}
@media (min-width: 768px) {
  .section-hero {
    padding: 105px 0 130px;
  }
}
@media (min-width: 1024px) {
  .section-hero .container {
    padding: 0 58px;
  }
}
.section-hero .hero--img {
  position: absolute;
  inset: 0;
  z-index: -1;
}
.section-hero .hero--img img {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.section-hero .hero--copy {
  max-width: 880px;
}
.section-hero .hero--copy p {
  font-weight: 500;
  line-height: 1.2;
}
@media (min-width: 768px) {
  .section-hero .hero--copy p {
    font-size: 20px;
    margin-bottom: 33px;
  }
}

.section-two-col {
  padding: 40px 0;
  font-size: 15px;
  line-height: 1.3333333333;
}
@media (min-width: 576px) {
  .section-two-col {
    padding: 70px 0;
  }
}
.section-two-col.top-border {
  border-top: 1px solid #7CB025;
}
.section-two-col .heading {
  font-size: 17px;
  line-height: 1.4705882353;
}
.section-two-col .heading + p {
  font-weight: 500;
}
@media (min-width: 1024px) {
  .section-two-col .heading + p {
    font-size: 17px;
  }
}
.section-two-col .grid {
  display: grid;
  grid-template-columns: 1fr;
  grid-gap: 40px;
}
@media (min-width: 768px) {
  .section-two-col .grid {
    grid-template-columns: 1fr 1fr;
    grid-gap: 80px;
  }
}
@media (min-width: 1024px) {
  .section-two-col .grid {
    grid-template-columns: 0.8fr 1.1fr;
  }
}
.section-two-col ul {
  padding-left: 23px;
  list-style: none;
}
@media (min-width: 1024px) {
  .section-two-col ul {
    padding-right: 60px;
  }
}
.section-two-col ul li {
  position: relative;
  padding-left: 16px;
}
.section-two-col ul li:before {
  content: "";
  width: 3px;
  height: 3px;
  background-color: #fff;
  border-radius: 50%;
  top: 0.5em;
  position: absolute;
  left: 0;
}
@media (min-width: 420px) {
  .section-two-col .copy-img-holder {
    display: flex;
    gap: 20px;
  }
}
.section-two-col .copy-img-holder .img {
  overflow: hidden;
  border-radius: 18px;
  margin-bottom: 20px;
}
@media (min-width: 420px) {
  .section-two-col .copy-img-holder .img {
    max-width: 200px;
  }
}
@media (min-width: 576px) {
  .section-two-col .copy-img-holder .img {
    max-width: 278px;
  }
}
.section-two-col .copy-img-holder .img img {
  width: 100%;
}
.section-two-col .block-copy h5 {
  color: #7CB025;
  font-size: 18px;
  line-height: 1.1111111111;
}
.section-two-col .block-copy p {
  margin-bottom: 0;
}

.section-three-col {
  padding: 58px 0;
}
.section-three-col .heading {
  text-align: center;
  margin-bottom: 20px;
}
@media (min-width: 1024px) {
  .section-three-col .heading {
    margin-bottom: 53px;
  }
}
.section-three-col .grid {
  display: grid;
  grid-template-columns: repeat(1, 1fr);
  gap: 15px;
}
@media (min-width: 768px) {
  .section-three-col .grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

.card--icon {
  text-align: center;
  margin-bottom: 33px;
}
.card h5 {
  font-size: 20px;
  line-height: 1;
  font-weight: 700;
  text-align: center;
  color: #7CB025;
}
.card ul {
  margin: 0;
  font-size: 15px;
  line-height: 1.3333333333;
  max-width: 285px;
  margin: 0 auto 0;
  list-style: none;
}
.card ul li {
  position: relative;
  padding-left: 16px;
}
.card ul li:before {
  content: "";
  width: 3px;
  height: 3px;
  background-color: #fff;
  border-radius: 50%;
  top: 0.5em;
  position: absolute;
  left: 0;
}

.section-text-box {
  padding: 40px 0;
}
@media (min-width: 768px) {
  .section-text-box {
    padding: 97px 0;
  }
}
.section-text-box .heading {
  margin-bottom: 40px;
}
.section-text-box .grid {
  display: grid;
  grid-template-columns: repeat(1, 1fr);
  gap: 18px;
}
@media (min-width: 768px) {
  .section-text-box .grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.section-text-box .text-box {
  border: 1px solid #393939;
  padding: 20px 10px 25px 10px;
  text-align: center;
  border-radius: 18px;
  font-size: 18px;
  line-height: 1.3333333333;
}
.section-text-box .text-box p:last-child {
  margin-bottom: 0;
}
.section-text-box .text-box h5 {
  font-size: 18px;
  line-height: 1;
  color: #7CB025;
}
@media (min-width: 768px) {
  .section-text-box .text-box h5 {
    font-size: 22px;
  }
}

.section-descr {
  padding: 40px 0;
}
@media (min-width: 768px) {
  .section-descr {
    padding: 70px 0;
  }
}
@media (min-width: 1024px) {
  .section-descr .heading {
    margin-bottom: 66px;
  }
}
.section-descr .grid {
  display: grid;
  grid-template-columns: repeat(1, 1fr);
  gap: 18px;
}
@media (min-width: 768px) {
  .section-descr .grid {
    gap: 50px;
    grid-template-columns: repeat(2, 1fr);
  }
}

.card-decr header {
  margin-bottom: 18px;
}
@media (min-width: 1024px) {
  .card-decr header {
    margin-bottom: 24px;
  }
}
.card-decr header strong {
  display: block;
  color: #7CB025;
  font-size: 18px;
  line-height: 1;
}
@media (min-width: 768px) {
  .card-decr header strong {
    font-size: 20px;
  }
}
.card-decr > p {
  line-height: 1.6;
}
@media (min-width: 1024px) {
  .card-decr > p {
    margin-bottom: 27px;
  }
}
.card-decr ul {
  padding-left: 20px;
  list-style: none;
}
@media (min-width: 1024px) {
  .card-decr ul {
    padding-left: 37px;
  }
}
.card-decr ul li {
  position: relative;
  padding-left: 24px;
}
.card-decr ul li:before {
  content: "";
  width: 4px;
  height: 4px;
  background-color: #fff;
  border-radius: 50%;
  top: 0.5em;
  position: absolute;
  left: 0;
}

.section-contact {
  padding-bottom: 40px;
  padding-top: 40px;
}
@media (min-width: 1024px) {
  .section-contact {
    padding-bottom: 173px;
    padding-top: 90px;
  }
}
@media (min-width: 1024px) {
  .section-contact .heading {
    margin-bottom: 67px;
  }
}
.section-contact .grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 30px;
}
@media (min-width: 1024px) {
  .section-contact .grid {
    gap: 145px;
    grid-template-columns: 315px 1fr;
  }
}

@media (min-width: 1024px) {
  .form-box p {
    margin-bottom: 30px;
  }
}
.form-box form button {
  width: 166px;
}
.form-box .form-row {
  margin-bottom: 16px;
}
@media (min-width: 1024px) {
  .form-box .form-row {
    margin-bottom: 26px;
  }
}
.form-box .form-row label {
  display: block;
  line-height: 1.6;
}
.form-box .form-row input {
  height: 25px;
}
.form-box .form-row input,
.form-box .form-row textarea {
  width: 100%;
  background-color: #444444;
  color: #fff;
  padding-left: 15px;
  padding-right: 15px;
  line-height: 1;
}
.form-box .form-row textarea {
  height: 117px;
  resize: none;
}

.contact-box h5 {
  font-size: 18px;
  color: #7CB025;
}
@media (min-width: 768px) {
  .contact-box h5 {
    font-size: 20px;
  }
}
.contact-box--item {
  color: #fff;
  margin-bottom: 16px;
}
@media (min-width: 1024px) {
  .contact-box--item {
    margin-bottom: 26px;
  }
}
.contact-box--item strong {
  display: inline-block;
  vertical-align: middle;
  color: #fff;
  font-weight: 700;
  margin-right: 4px;
  margin-bottom: 4px;
}
.contact-box--item a {
  color: inherit;
  text-decoration: none;
  transition: 0.4s all;
}
.contact-box--item a:hover {
  color: #7CB025;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlbmRvcnMvX25vcm1hbGl6ZS5zY3NzIiwiYmFzZS9fYmFzZS5zY3NzIiwiYWJzdHJhY3RzL192YXJpYWJsZXMuc2NzcyIsImFic3RyYWN0cy9fbWVkaWEuc2NzcyIsImJhc2UvX2hlbHBlcnMuc2NzcyIsImFic3RyYWN0cy9fbWl4aW5zLnNjc3MiLCJhYnN0cmFjdHMvX2Z1bmN0aW9ucy5zY3NzIiwiYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwiYmFzZS9fZm9ybXMuc2NzcyIsImJhc2UvX3dlYl9hY2Nlc3NpYmlsaXR5LnNjc3MiLCJsYXlvdXQvX2hlYWRlci5zY3NzIiwibGF5b3V0L19jb21tb24uc2NzcyIsImxheW91dC9fZm9vdGVyLnNjc3MiLCJjb21wb25lbnRzL19idXR0b24uc2NzcyIsImNvbXBvbmVudHMvX2hlYWRpbmcuc2NzcyIsImNvbXBvbmVudHMvX3NlY3Rpb24taGVyby5zY3NzIiwiY29tcG9uZW50cy9fc2VjdGlvbi10d28tY29sLnNjc3MiLCJjb21wb25lbnRzL19zZWN0aW9uLXRocmVlLWNvbC5zY3NzIiwiY29tcG9uZW50cy9fc2VjdGlvbi10ZXh0LWJveC5zY3NzIiwiY29tcG9uZW50cy9fc2VjdGlvbi1kZXNjci5zY3NzIiwiY29tcG9uZW50cy9fc2VjdGlvbi1jb250YWN0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtFQUNJO0FBQ0E7RUFDQTtBQUNBOzs7QUFHSjtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFLQTtFQUNJO0VBQ0E7OztBQUdKO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0VBQ0k7QUFDQTtFQUNBO0FBQ0E7RUFDQTtBQUNBOzs7QUFHSjtBQUFBO0FBQUE7QUFBQTtBQUtBO0VBQ0k7QUFDQTtFQUNBO0FBQ0E7OztBQUdKO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFJQTtFQUNJOzs7QUFHSjtBQUFBO0FBQUE7QUFBQTtBQUtBO0VBQ0k7QUFDQTtFQUNBO0FBQ0E7RUFDQTtBQUNBOzs7QUFHSjtBQUFBO0FBQUE7QUFJQTtBQUFBO0VBRUk7OztBQUdKO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0VBR0k7QUFDQTtFQUNBO0FBQ0E7OztBQUdKO0FBQUE7QUFBQTtBQUlBO0VBQ0k7OztBQUdKO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtFQUVJO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUtJO0FBQ0E7RUFDQTtBQUNBO0VBQ0E7QUFDQTtFQUNBO0FBQ0E7OztBQUdKO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUVJO0VBQ0E7OztBQUdKO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUVJO0VBQ0E7OztBQUdKO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0VBSUk7OztBQUdKO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0VBSUk7RUFDQTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7RUFJSTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT0E7RUFDSTtBQUNBO0VBQ0E7QUFDQTtFQUNBO0FBQ0E7RUFDQTtBQUNBO0VBQ0E7QUFDQTtFQUNBO0FBQ0E7OztBQUdKO0FBQUE7QUFBQTtBQUlBO0VBQ0k7OztBQUdKO0FBQUE7QUFBQTtBQUlBO0VBQ0k7OztBQUdKO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtFQUVJO0FBQ0E7RUFDQTtBQUNBOzs7QUFHSjtBQUFBO0FBQUE7QUFJQTtBQUFBO0VBRUk7OztBQUdKO0FBQUE7QUFBQTtBQUFBO0FBS0E7RUFDSTtBQUNBO0VBQ0E7QUFDQTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFLQTtFQUNJO0FBQ0E7RUFDQTtBQUNBOzs7QUFHSjtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUlBO0VBQ0k7OztBQUdKO0FBQUE7QUFBQTtBQUlBO0VBQ0k7OztBQ3ZYSjtFQUNJO0VBQ0E7OztBQUdKO0FBQUE7QUFBQTtFQUdJOzs7QUFHSjtFQUNJOzs7QUFJSjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFZSTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFtQkk7OztBQUdKO0VBQ0k7RUFDQTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtBQUFBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTs7O0FBR0o7QUFBQTtFQUVJOzs7QUFHSjtBQUFBO0FBQUE7QUFBQTtFQUlJO0VBQ0E7OztBQUdKO0VBQ0k7OztBQU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7O0FBSVI7RUFDSTtFQUNBOzs7QUFHSjtFQUNJLE9DNUdJO0VENkdKLFlDckJtQjtFRHNCbkI7RUFDQSxXQ2hCYTtFRGlCYjtFQUNBO0VBQ0E7O0FFOGNBO0VGcmRKO0lBVVEsV0N6QmU7SUQwQmYsYUN6QmlCOzs7O0FEOEJ6QjtFQUNJO0VBQ0E7RUFDQTtFQUNBOzs7QUFJSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUd4SUE7RUFDSTtFQUNBO0VBQ0E7OztBQXNEUjtFQUNJO0VBQ0E7RUFDQTs7O0FBR0o7RUFFQztFQUNHO0VBQ0E7O0FEeWZBO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFclBRO0lBRVE7SUFDQTs7O0FGa1BoQjtFRXJQUTtJQUVRO0lBQ0E7OztBRmtQaEI7RUVyUFE7SUFFUTtJQUNBOzs7QUZrUGhCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUYwT2hCO0VFNU9RO0lBRVE7OztBRjBPaEI7RUU1T1E7SUFFUTs7O0FGME9oQjtFRTVPUTtJQUVROzs7QUQ1UWhCO0VBQ0k7OztBRXZFUTtBQUFBO0VBRUk7OztBQUZKO0FBQUE7RUFFSTs7O0FBRko7QUFBQTtFQUVJOzs7QUFGSjtBQUFBO0VBRUk7OztBQUZKO0FBQUE7RUFFSTs7O0FBRko7QUFBQTtFQUVJOzs7QUgwakJoQjtFRy9pQmdCO0FBQUE7SUFFSTs7RUFGSjtBQUFBO0lBRUk7O0VBRko7QUFBQTtJQUVJOztFQUZKO0FB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QmdpQkM7RWdCcGlCRjtJQU9DOzs7QUFNRjtFQUNDOztBaEJzaEJFO0VnQnZoQkg7SUFJRTs7O0FBSUY7RUFDQztFQUNBOztBaEI2Z0JFO0VnQi9nQkg7SUFLRTs7O0FBR0Q7RUFDQztFQUNBOztBQUVBO0VBQ0M7RUFDQTtFQUNBO0VBQ0Esa0JqQmpFSTtFaUJrRUo7RUFDQTtFQUNBO0VBQ0E7OztBQzNFSjtFQUNDO0VBQ0E7O0FqQm9rQkc7RWlCdGtCSjtJQUtFO0lBQ0E7OztBakJna0JFO0VpQjdqQkg7SUFFRTs7O0FBSUY7RUFDQztFQUNBO0VBQ0E7O0FqQm9qQkU7RWlCdmpCSDtJQU1FO0lBQ0E7Ozs7QWpCZ2pCQztFaUIxaUJIO0lBR0U7OztBQUtEO0VBQ0M7O0FBSUY7RUFDQzs7QWpCNGhCRTtFaUI3aEJIO0lBSUU7OztBQUdEO0VBQ0M7RUFDQTs7QUFHRDtFQUNDOztBQUdEO0FBQUE7RUFFQztFQUNBO0VBQ0EsT2xCdkRLO0VrQndETDtFQUNBO0VBQ0E7O0FBR0Q7RUFDQztFQUNBOzs7QUFNRjtFQUNDO0VBQ0EsT2xCcENNOztBQzZoQko7RWlCM2ZIO0lBS0U7OztBQUlGO0VBQ0MsT2xCL0VNO0VrQmdGTjs7QWpCZ2ZFO0VpQmxmSDtJQUtFOzs7QUFHRDtFQUNDO0VBQ0E7RUFDQSxPbEJ6Rks7RWtCMEZMO0VBQ0E7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7RUFDQTs7QUFFQTtFQUNDLE9sQmxFSSIsInNvdXJjZXNDb250ZW50IjpbIi8qISBub3JtYWxpemUuY3NzIHY4LjAuMSB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyogRG9jdW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4gKi9cblxuaHRtbCB7XG4gICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgLyogMSAqL1xuICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgICAvKiAyICovXG59XG5cbi8qIFNlY3Rpb25zXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICAgKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4gICAqL1xuXG5ib2R5IHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi8qKlxuICAgKiBSZW5kZXIgdGhlIGBtYWluYCBlbGVtZW50IGNvbnNpc3RlbnRseSBpbiBJRS5cbiAgICovXG5cbm1haW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAgICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICAgKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICAgKi9cblxuaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gICAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gICAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICAgKi9cblxuaHIge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIC8qIDEgKi9cbiAgICBoZWlnaHQ6IDA7XG4gICAgLyogMSAqL1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIC8qIDIgKi9cbn1cblxuLyoqXG4gICAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gICAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbnByZSB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICAgIC8qIDEgKi9cbiAgICBmb250LXNpemU6IDFlbTtcbiAgICAvKiAyICovXG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICAgKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gICAqL1xuXG5hIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLyoqXG4gICAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gICAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gICAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAvKiAxICovXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgLyogMiAqL1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgICAvKiAyICovXG59XG5cbi8qKlxuICAgKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICAgKi9cblxuYixcbnN0cm9uZyB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuLyoqXG4gICAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gICAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gICAgLyogMSAqL1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIC8qIDIgKi9cbn1cblxuLyoqXG4gICAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAgKi9cblxuc21hbGwge1xuICAgIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAgICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gICAqIGFsbCBicm93c2Vycy5cbiAgICovXG5cbnN1YixcbnN1cCB7XG4gICAgZm9udC1zaXplOiA3NSU7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gICAgdG9wOiAtMC41ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gICAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAuXG4gICAqL1xuXG5pbWcge1xuICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxuLyogRm9ybXNcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gICAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzLlxuICAgKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gICAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIC8qIDEgKi9cbiAgICBmb250LXNpemU6IDEwMCU7XG4gICAgLyogMSAqL1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgIC8qIDEgKi9cbiAgICBtYXJnaW46IDA7XG4gICAgLyogMiAqL1xufVxuXG4vKipcbiAgICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gICAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gICAqL1xuXG5idXR0b24sXG5pbnB1dCB7XG4gICAgLyogMSAqL1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAgICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gICAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAgICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gICAgLyogMSAqL1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAgICogQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAgICovXG5cbmJ1dHRvbixcblt0eXBlPVwiYnV0dG9uXCJdLFxuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuLyoqXG4gICAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gICAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICAgKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gICAqL1xuXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZyB7XG4gICAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuXG4vKipcbiAgICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICAgKi9cblxuZmllbGRzZXQge1xuICAgIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbn1cblxuLyoqXG4gICAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gICAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAgICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICAgKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbmxlZ2VuZCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAvKiAxICovXG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgLyogMiAqL1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIC8qIDEgKi9cbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgLyogMSAqL1xuICAgIHBhZGRpbmc6IDA7XG4gICAgLyogMyAqL1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgLyogMSAqL1xufVxuXG4vKipcbiAgICogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAgICovXG5cbnByb2dyZXNzIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8qKlxuICAgKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDEwKy5cbiAgICovXG5cbnRleHRhcmVhIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gICAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxuICAgKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG4gICAqL1xuXG5bdHlwZT1cImNoZWNrYm94XCJdLFxuW3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAvKiAxICovXG4gICAgcGFkZGluZzogMDtcbiAgICAvKiAyICovXG59XG5cbi8qKlxuICAgKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gICAqL1xuXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICAgKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAgICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gICAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gICAgLyogMSAqL1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgIC8qIDIgKi9cbn1cblxuLyoqXG4gICAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbiAgICovXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICAgKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICAgKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG4gICAqL1xuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgICAvKiAxICovXG4gICAgZm9udDogaW5oZXJpdDtcbiAgICAvKiAyICovXG59XG5cbi8qIEludGVyYWN0aXZlXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXG4gICAqL1xuXG5kZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLypcbiAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxuICAgKi9cblxuc3VtbWFyeSB7XG4gICAgZGlzcGxheTogbGlzdC1pdGVtO1xufVxuXG4vKiBNaXNjXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gICAqL1xuXG50ZW1wbGF0ZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLyoqXG4gICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuICAgKi9cblxuW2hpZGRlbl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59IiwiQHVzZSAnLi4vYWJzdHJhY3RzLycgYXMgKjtcblxuaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG59XG5cbiosXG4qOmJlZm9yZSxcbio6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5cbioge1xuICAgIG1heC1oZWlnaHQ6IDEwMDAwMDBweDtcbn1cblxuLy8tIEhUTUw1IGRpc3BsYXktcm9sZSByZXNldCBmb3Igb2xkZXIgYnJvd3NlcnNcbm1haW4sXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1lbnUsXG5uYXYsXG5zZWN0aW9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxudWwsXG5vbCxcbmRsLFxucCxcbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNixcbmFkZHJlc3MsXG5mb3JtLFxudGFibGUsXG5ibG9ja3F1b3RlLFxuYXBwbGV0LFxuZW1iZWQsXG5vYmplY3QsXG5pZnJhbWUsXG5mcmFtZXNldCB7XG4gICAgbWFyZ2luOiAwIDAgJHZlcnRpY2FsLXJoeXRobTtcbn1cblxuYmxvY2txdW90ZSB7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAkZ3JheTtcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbnRhYmxlIHtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xufVxuXG50aCxcbnRkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheTtcbiAgICBwYWRkaW5nOiAzcHg7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG50aCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbnVsLFxub2wge1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcbn1cblxudWwgdWwsXG51bCBvbCxcbm9sIHVsLFxub2wgb2wge1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICBtYXJnaW46IDA7XG59XG5cbnVsIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG59XG5cbmRsIHtcbiAgICBAZXh0ZW5kICVjbGVhcmZpeCAhb3B0aW9uYWw7XG5cbiAgICBkdCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMC4zZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICAgIGRkIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG59XG5cbnByZSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93OiBhdXRvO1xufVxuXG5ib2R5IHtcbiAgICBjb2xvcjogJGJhc2UtdGV4dC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kOiAkYmFzZS1iYWNrZ3JvdW5kLWJvZHk7XG4gICAgZm9udDogI3skZm9udC1zaXplLWJhc2V9LyN7JGxpbmUtaGVpZ2h0LWJhc2V9ICRiYXNlLWZvbnQtZmFtaWx5O1xuICAgIG1pbi13aWR0aDogJGJhc2UtbWluLXdpZHRoO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgbWFyZ2luOiAwO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJ+KJpXRhYmxldCcpIHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UtbGFncmU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZS1sYWdyZTtcbiAgICB9XG59XG5cbi8vIGFkYXB0aXZlIGltYWdlc1xuaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4vLyBnb29nbGUgbWFwIGZpeFxuLmdtLXN0eWxlIGltZyB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuXG5pZnJhbWUge1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLnJlc2l6ZS1hY3RpdmUgKiB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xufSIsIi8vIENvbG9yc1xuLy8gQ29sb3IgY2FsY3VsYXRvciAtIGh0dHA6Ly9yYXpvcmphbS5naXRodWIuaW8vc2Fzc2NvbG91cmZ1bmN0aW9uY2FsY3VsYXRvci9cbi8vIENvbG9yIG5hbWVzIC0gaHR0cDovL25hbWUtb2YtY29sb3IuY29tL1xuLy8gQ29sb3Igc3lzdGVtXG5cbkB1c2UgXCJzYXNzOm1hcFwiO1xuQHVzZSBcInNhc3M6Y29sb3JcIjtcblxuJHdoaXRlOiAjZmZmICFkZWZhdWx0O1xuJGdyYXk6ICNkZGQgIWRlZmF1bHQ7XG4kZ3JheS0xMDA6ICNmOGY5ZmEgIWRlZmF1bHQ7XG4kZ3JheS0yMDA6ICNlOWVjZWYgIWRlZmF1bHQ7XG4kZ3JheS0zMDA6ICNkZWUyZTYgIWRlZmF1bHQ7XG4kZ3JheS00MDA6ICNjZWQ0ZGEgIWRlZmF1bHQ7XG4kZ3JheS01MDA6ICNhZGI1YmQgIWRlZmF1bHQ7XG4kZ3JheS02MDA6ICM2Yzc1N2QgIWRlZmF1bHQ7XG4kZ3JheS03MDA6ICM0OTUwNTcgIWRlZmF1bHQ7XG4kZ3JheS04MDA6ICMzNDNhNDAgIWRlZmF1bHQ7XG4kZ3JheS05MDA6ICMyMTI1MjkgIWRlZmF1bHQ7XG4kYmxhY2s6ICMwMDAgIWRlZmF1bHQ7XG5cbiRncmF5czogKFxuICAgICkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJGdyYXlzOiBtYXAubWVyZ2UoKFwiMTAwXCI6ICRncmF5LTEwMCxcbiAgICAgICAgICAgIFwiMjAwXCI6ICRncmF5LTIwMCxcbiAgICAgICAgICAgIFwiMzAwXCI6ICRncmF5LTMwMCxcbiAgICAgICAgICAgIFwiNDAwXCI6ICRncmF5LTQwMCxcbiAgICAgICAgICAgIFwiNTAwXCI6ICRncmF5LTUwMCxcbiAgICAgICAgICAgIFwiNjAwXCI6ICRncmF5LTYwMCxcbiAgICAgICAgICAgIFwiNzAwXCI6ICRncmF5LTcwMCxcbiAgICAgICAgICAgIFwiODAwXCI6ICRncmF5LTgwMCxcbiAgICAgICAgICAgIFwiOTAwXCI6ICRncmF5LTkwMCApLFxuICAgICAgICAkZ3JheXNcbik7XG5cbiRibHVlOiAjMDA3YmZmICFkZWZhdWx0O1xuJGluZGlnbzogIzY2MTBmMiAhZGVmYXVsdDtcbiRwdXJwbGU6ICM2ZjQyYzEgIWRlZmF1bHQ7XG4kcGluazogI2U4M2U4YyAhZGVmYXVsdDtcbiRyZWQ6ICNkYzM1NDUgIWRlZmF1bHQ7XG4kb3JhbmdlOiAjZmQ3ZTE0ICFkZWZhdWx0O1xuJHllbGxvdzogI2ZmYzEwNyAhZGVmYXVsdDtcbiRncmVlbjogIzdDQjAyNSAhZGVmYXVsdDtcbiR0ZWFsOiAjMjBjOTk3ICFkZWZhdWx0O1xuJGN5YW46ICMxN2EyYjggIWRlZmF1bHQ7XG5cbiRjb2xvcnM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRjb2xvcnM6IG1hcC5tZXJnZShcblx0XHQoXCJibHVlXCI6ICRibHVlLFxuICAgICAgICAgICAgXCJpbmRpZ29cIjogJGluZGlnbyxcbiAgICAgICAgICAgIFwicHVycGxlXCI6ICRwdXJwbGUsXG4gICAgICAgICAgICBcInBpbmtcIjogJHBpbmssXG4gICAgICAgICAgICBcInJlZFwiOiAkcmVkLFxuICAgICAgICAgICAgXCJvcmFuZ2VcIjogJG9yYW5nZSxcbiAgICAgICAgICAgIFwieWVsbG93XCI6ICR5ZWxsb3csXG4gICAgICAgICAgICBcImdyZWVuXCI6ICRncmVlbixcbiAgICAgICAgICAgIFwidGVhbFwiOiAkdGVhbCxcbiAgICAgICAgICAgIFwiY3lhblwiOiAkY3lhbixcbiAgICAgICAgICAgIFwid2hpdGVcIjogJHdoaXRlLFxuICAgICAgICAgICAgXCJncmF5XCI6ICRncmF5LTYwMCxcbiAgICAgICAgICAgIFwiZ3JheS1kYXJrXCI6ICRncmF5LTgwMCApLFxuICAgICAgICAkY29sb3JzXG4pO1xuXG4kcHJpbWFyeTogJGJsdWUgIWRlZmF1bHQ7XG4kc2Vjb25kYXJ5OiAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kc3VjY2VzczogJGdyZWVuICFkZWZhdWx0O1xuJGluZm86ICRjeWFuICFkZWZhdWx0O1xuJHdhcm5pbmc6ICR5ZWxsb3cgIWRlZmF1bHQ7XG4kZGFuZ2VyOiAkcmVkICFkZWZhdWx0O1xuJGxpZ2h0OiAkZ3JheS0xMDAgIWRlZmF1bHQ7XG4kZGFyazogJGdyYXktODAwICFkZWZhdWx0O1xuXG4kdGhlbWUtY29sb3JzOiAoKSAhZGVmYXVsdDtcblxuJHRoZW1lLWNvbG9yczogbWFwLm1lcmdlKChcInByaW1hcnlcIjogJHByaW1hcnksXG4gICAgICAgICAgICBcInNlY29uZGFyeVwiOiAkc2Vjb25kYXJ5LFxuICAgICAgICAgICAgXCJzdWNjZXNzXCI6ICRzdWNjZXNzLFxuICAgICAgICAgICAgXCJpbmZvXCI6ICRpbmZvLFxuICAgICAgICAgICAgXCJ3YXJuaW5nXCI6ICR3YXJuaW5nLFxuICAgICAgICAgICAgXCJkYW5nZXJcIjogJGRhbmdlcixcbiAgICAgICAgICAgIFwibGlnaHRcIjogJGxpZ2h0LFxuICAgICAgICAgICAgXCJkYXJrXCI6ICRkYXJrICksXG4gICAgICAgICR0aGVtZS1jb2xvcnNcbik7XG5cbi8vIGZvbnRzIG5hbWVcbiRiYXNlLWZvbnQtc2Fucy1zZXJpZjogJ09wZW4gU2FucycsICdBcmlhbCcsICdIZWx2ZXRpY2EgTmV1ZScsICdIZWx2ZXRpY2EnLCBzYW5zLXNlcmlmO1xuJGJhc2UtZm9udC1zZXJpZjogJ1RpbWVzIE5ldyBSb21hbicsICdUaW1lcycsICdCYXNrZXJ2aWxsZScsICdHZW9yZ2lhJywgc2VyaWY7XG5cbiRiYXNlLWZvbnQ6ICRiYXNlLWZvbnQtc2Fucy1zZXJpZjtcblxuLy8gQm9keVxuJGJhc2UtdGV4dC1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuJGJhc2UtYmFja2dyb3VuZC1ib2R5OiAjMEYwRjBGICFkZWZhdWx0O1xuJGJhc2UtYmFja2dyb3VuZC1mb290ZXI6ICRiYXNlLWJhY2tncm91bmQtYm9keSAhZGVmYXVsdDtcbiRmb250LXNpemUtYmFzZTogMTVweCAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1iYXNlOiAxLjMgIWRlZmF1bHQ7XG4kZm9udC1zaXplLWJhc2UtbGFncmU6IDE1cHggIWRlZmF1bHQ7XG4kbGluZS1oZWlnaHQtYmFzZS1sYWdyZTogMS4zICFkZWZhdWx0O1xuJGJhc2UtZm9udC1mYW1pbHk6ICRiYXNlLWZvbnQgIWRlZmF1bHQ7XG4kYmFzZS1taW4td2lkdGg6IDMyMHB4O1xuXG4vLyBiYXNlIHZhcmlhYmxlc1xuJGJhc2UtcmFkaXVzOiAwO1xuJGJhc2UtcmFkaXVzLXNtYWxsOiAwO1xuXG4vLyBjb250YWluZXIgc2V0dGluZ3NcbiRtYXgtd2lkdGgtY2VudGVyLWNvbnRhaW5lcjogMTA5MHB4O1xuJGd1dHRlcjogMTVweDtcbiRwYWRkaW5nLWNvbnRhaW5lcjogMCAkZ3V0dGVyO1xuXG4vLyAkdW5pdC1pbnRlcnZhbHM6IChcbi8vICAgICAncHgnOiAwLjAyLFxuLy8gICAgICdlbSc6IDAuMDEsXG4vLyAgICAgJ3JlbSc6IDAuMSxcbi8vICAgICAnJzogMFxuLy8gKTtcblxuLy8gZ3JpZCBzaXN0ZW1cbiRncmlkOiAoXG4gICAgcGg6ICdwaG9uZScsXG4gICAgc206ICd0YWJsZXQnLFxuICAgIG1kOiAnZGVza3RvcCdcbik7XG5cbi8vIGZvbnQgd2VpZ2h0XG4kdGhpbjogMTAwO1xuJGxpZ2h0LWZvbnQ6IDMwMDtcbiRub3JtYWw6IDQwMDtcbiRtZWRpdW06IDUwMDtcbiRzZW1pYm9sZDogNjAwO1xuJGJvbGQ6IDcwMDtcbiRleHRyYTogODAwO1xuJGJsYWNrLWZvbnQ6IDkwMDtcblxuLy8gZGVmYXVsdCBtYXJnaW5zXG4kdmVydGljYWwtcmh5dGhtOiAkZm9udC1zaXplLWJhc2UgKyA0O1xuJHdpZGdldC1tYXJnaW46IDIwcHg7XG5cbi8vIExpa3NcbiRiYXNlLWxpbmstY29sb3I6ICRibHVlO1xuJGJhc2UtbGluay1ob3Zlci1jb2xvcjogJGJsYWNrO1xuJHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiR0ZXh0LWRlY29yYXRpb24taG92ZXI6IG5vbmU7XG5cbi8vIEhlYWRlcnMgc2l6ZVxuJHRpdGxlLXBhbGV0dGU6IChcbiAgICBtb2JpbGU6ICgnaDEnOiAyMCxcbiAgICAgICAgJ2gyJzogMjAsXG4gICAgICAgICdoMyc6IDE1LFxuICAgICAgICAnaDQnOiAxNCxcbiAgICAgICAgJ2g1JzogMTQsXG4gICAgICAgICdoNic6IDE0KSxcbiAgICB0YWJsZXQ6ICgnaDEnOiAzMCxcbiAgICAgICAgJ2gyJzogMzAsXG4gICAgICAgICdoMyc6IDI4LFxuICAgICAgICAnaDQnOiAyMCxcbiAgICAgICAgJ2g1JzogMTgsXG4gICAgICAgICdoNic6IDE2KSxcbiAgICBkZXNrdG9wOiAoJ2gxJzogNDAsXG4gICAgICAgICdoMic6IDQwLFxuICAgICAgICAnaDMnOiAyOCxcbiAgICAgICAgJ2g0JzogMjAsXG4gICAgICAgICdoNSc6IDE4LFxuICAgICAgICAnaDYnOiAxNiksXG4gICAgd2lkZXNjcmVlbjogKCdoMSc6IDQwLFxuICAgICAgICAnaDInOiA0MCxcbiAgICAgICAgJ2gzJzogMjgsXG4gICAgICAgICdoNCc6IDIwLFxuICAgICAgICAnaDUnOiAxOCxcbiAgICAgICAgJ2g2JzogMTYpXG4pO1xuXG4vLyBoZWFkaW5ncyBzdHlsZVxuJGhlYWRpbmdzLWZvbnQtZmFtaWx5OiAkYmFzZS1mb250LWZhbWlseTtcbiRoZWFkaW5ncy1jb2xvcjogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8gQnV0dG9uc1xuJGJ0bi1ib3JkZXItd2lkdGg6IDFweCAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1czogOXB4ICFkZWZhdWx0O1xuJGJ0bi1ib3JkZXItcmFkaXVzLXNtOiBjYWxjKCRidG4tYm9yZGVyLXJhZGl1cyAvIDIpICFkZWZhdWx0O1xuJGJ0bi1ib3JkZXItcmFkaXVzLWxnOiBjYWxjKCRidG4tYm9yZGVyLXJhZGl1cyAqIDIpICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nOiA1cHggMTZweCAhZGVmYXVsdDtcbiRidG4tcGFkZGluZy1zbTogNXB4IDEwcHggIWRlZmF1bHQ7XG4kYnRuLXBhZGRpbmctbGc6IDIwcHggNDBweCAhZGVmYXVsdDtcbiRidG4tZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemUtc206IDEycHggIWRlZmF1bHQ7XG4kYnRuLWZvbnQtc2l6ZS1sZzogMThweCAhZGVmYXVsdDtcbiRidG4tbGluZS1oZWlnaHQ6IDEuNTtcbiRidG4tbGluZS1oZWlnaHQtc206ICRidG4tZm9udC1zaXplLXNtICsgMjtcbiRidG4tbGluZS1oZWlnaHQtbGc6ICRidG4tZm9udC1zaXplLWxnICsgMjtcblxuLy8gYnRuIGRlZmF1bHRcbiRidG4tY29sb3ItZGVmYXVsdDogJHdoaXRlICFkZWZhdWx0O1xuJGJ0bi1iYWNrZ3JvdW5kLWRlZmF1bHQ6ICRibGFjayAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLWNvbG9yLWRlZmF1bHQ6ICRidG4tYmFja2dyb3VuZC1kZWZhdWx0ICFkZWZhdWx0O1xuXG4vLyBob3ZlclxuJGJ0bi1ob3Zlci1jb2xvci1kZWZhdWx0OiAkYnRuLWJhY2tncm91bmQtZGVmYXVsdCAhZGVmYXVsdDtcbiRidG4taG92ZXItYmFja2dyb3VuZC1kZWZhdWx0OiAkYnRuLWNvbG9yLWRlZmF1bHQgIWRlZmF1bHQ7XG4kYnRuLWhvdmVyLWJvcmRlci1jb2xvci1kZWZhdWx0OiAkYnRuLWJhY2tncm91bmQtZGVmYXVsdCAhZGVmYXVsdDtcblxuLy8gYnRuIHByaW1hcnlcbiRidG4tY29sb3ItcHJpbWFyeTogJHdoaXRlICFkZWZhdWx0O1xuJGJ0bi1iYWNrZ3JvdW5kLXByaW1hcnk6ICRwcmltYXJ5ICFkZWZhdWx0O1xuJGJ0bi1ib3JkZXItY29sb3ItcHJpbWFyeTogJHByaW1hcnkgIWRlZmF1bHQ7XG4vLyBob3ZlclxuJGJ0bi1ob3Zlci1jb2xvci1wcmltYXJ5OiAkd2hpdGUgIWRlZmF1bHQ7XG4kYnRuLWhvdmVyLWJhY2tncm91bmQtcHJpbWFyeTogcmdiYSgkY29sb3I6ICRwcmltYXJ5LCAkYWxwaGE6IDUwJSkgIWRlZmF1bHQ7XG4kYnRuLWhvdmVyLWJvcmRlci1jb2xvci1wcmltYXJ5OiAkYnRuLWhvdmVyLWJhY2tncm91bmQtcHJpbWFyeSAhZGVmYXVsdDtcblxuLy8gYnRuIHN1Y2Nlc3NcbiRidG4tY29sb3Itc3VjY2VzczogJHdoaXRlICFkZWZhdWx0O1xuJGJ0bi1iYWNrZ3JvdW5kLXN1Y2Nlc3M6ICRzdWNjZXNzICFkZWZhdWx0O1xuJGJ0bi1ib3JkZXItY29sb3Itc3VjY2VzczogJHN1Y2Nlc3MgIWRlZmF1bHQ7XG4vLyBob3ZlclxuJGJ0bi1ob3Zlci1jb2xvci1zdWNjZXNzOiAkd2hpdGUgIWRlZmF1bHQ7XG4kYnRuLWhvdmVyLWJhY2tncm91bmQtc3VjY2VzczogcmdiYSgkY29sb3I6ICRzdWNjZXNzLCAkYWxwaGE6IDgwJSkgIWRlZmF1bHQ7XG4kYnRuLWhvdmVyLWJvcmRlci1jb2xvci1zdWNjZXNzOiAkYnRuLWhvdmVyLWJhY2tncm91bmQtc3VjY2VzcyAhZGVmYXVsdDtcblxuLy8gYnRuIHNlY29uZGFyeVxuJGJ0bi1jb2xvci1zZWNvbmRhcnk6ICR3aGl0ZSAhZGVmYXVsdDtcbiRidG4tYmFja2dyb3VuZC1zZWNvbmRhcnk6ICRzZWNvbmRhcnkgIWRlZmF1bHQ7XG4kYnRuLWJvcmRlci1jb2xvci1zZWNvbmRhcnk6ICRzZWNvbmRhcnkgIWRlZmF1bHQ7XG4vLyBob3ZlclxuJGJ0bi1ob3Zlci1jb2xvci1zZWNvbmRhcnk6ICR3aGl0ZSAhZGVmYXVsdDtcbiRidG4taG92ZXItYmFja2dyb3VuZC1zZWNvbmRhcnk6IHJnYmEoJGNvbG9yOiAkc2Vjb25kYXJ5LCAkYWxwaGE6IDEwJSkgIWRlZmF1bHQ7XG4kYnRuLWhvdmVyLWJvcmRlci1jb2xvci1zZWNvbmRhcnk6ICRzZWNvbmRhcnkgIWRlZmF1bHQ7XG5cbi8vIEZvcm1zXG4kaW5wdXQtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7IC8vIGZvbnQgc2l6ZSBmb3IgZm9ybXMgZWxlbWVudHNcbiRpbnB1dC1saW5lLWhlaWdodDogJGlucHV0LWZvbnQtc2l6ZSArIDI7IC8vIGxpbmUgaGVpZ2h0IGZvciBmb3JtcyBlbGVtZW50c1xuJGlucHV0LWZvbnQtZmFtaWx5OiAkYmFzZS1mb250O1xuJGlucHV0LXBhZGRpbmctdmVydGljYWw6IDEwcHggIWRlZmF1bHQ7IC8vIHBhZGRpbmcgZm9yIGZvcm1zIGVsZW1lbnRzXG4kaW5wdXQtcGFkZGluZy1ob3Jpem9udGFsOiAyMHB4ICFkZWZhdWx0OyAvLyBwYWRkaW5nIGZvciBmb3JtcyBlbGVtZW50c1xuJGlucHV0LXBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXZlcnRpY2FsICRpbnB1dC1wYWRkaW5nLWhvcml6b250YWwgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLXdpZHRoOiAxcHggIWRlZmF1bHQ7IC8vIGJvcmRlciBpbnB1dCdzIHdpZHRoXG4kaW5wdXQtYm9yZGVyOiAkaW5wdXQtYm9yZGVyLXdpZHRoIHNvbGlkICRibGFjayAhZGVmYXVsdDsgLy8gYm9yZGVyIGZvciBmb3JtcyBlbGVtZW50c1xuJGlucHV0LWJvcmRlci1yYWRpdXM6IDAgIWRlZmF1bHQ7IC8vIGJvcmRlciByYWRpdXMgZm9yIGZvcm1zIGVsZW1lbnRzXG4kaW5wSDogJGlucHV0LWJvcmRlci13aWR0aCArIDIgKiAkaW5wdXQtcGFkZGluZy12ZXJ0aWNhbCArICRpbnB1dC1saW5lLWhlaWdodDtcbiRpbnB1dC1oZWlnaHQ6IChcbiAgICAyICogKCRpbnB1dC1ib3JkZXItd2lkdGggKyAkaW5wdXQtcGFkZGluZy12ZXJ0aWNhbCkgKyAkaW5wdXQtbGluZS1oZWlnaHQpICFkZWZhdWx0OyAvLyBoZWlnaHQgZm9yIGZvcm1zIGVsZW1lbnRzXG4vL3N1Ym1pdFxuJHN1Ym1pdC1iYWNrZ3JvdW5kOiAkYnRuLWJhY2tncm91bmQtZGVmYXVsdDtcbiRzdWJtaXQtY29sb3I6ICRidG4tY29sb3ItZGVmYXVsdDtcbiRzdWJtaXQtaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuJHN1Ym1pdC1ib3JkZXItd2lkdGg6ICRidG4tYm9yZGVyLXdpZHRoO1xuJHN1Ym1pdC1ib3JkZXItc3R5bGU6IHNvbGlkO1xuJHN1Ym1pdC1ib3JkZXItY29sb3I6ICRidG4tYm9yZGVyLWNvbG9yLWRlZmF1bHQ7XG4kc3VibWl0LXBhZGRpbmc6ICRidG4tcGFkZGluZztcbiRzdWJtaXQtZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuJHN1Ym1pdC1saW5lLWhlaWdodDogJGJ0bi1saW5lLWhlaWdodDtcbiRzdWJtaXQtcmFkaXVzOiAkYnRuLWJvcmRlci1yYWRpdXM7XG4vLyBzdWJtaXQgaG92ZXJcbiRzdWJtaXQtaG92ZXItYmFja2dyb3VuZDogJHN1Ym1pdC1jb2xvcjsgLy8gc3VibWl0IGJhY2tncm91bmQgaG92ZXJcbiRzdWJtaXQtaG92ZXItY29sb3I6ICRzdWJtaXQtYmFja2dyb3VuZDsgLy8gc3VibWl0IGNvbG9yIGhvdmVyXG4kc3VibWl0LWhvdmVyLWJvcmRlci1jb2xvcjogJHN1Ym1pdC1iYWNrZ3JvdW5kOyAvLyBzdWJtaXQgY29sb3IgaG92ZXJcblxuLy9mb2N1c1xuJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvcjogJGJsYWNrICFkZWZhdWx0OyAvLyBib3JkZXIgY29sb3IgZm9yIGZvcm1zIGVsZW1lbnRzXG4vL3BsYWNlaG9sZGVyXG4kcGxhY2Vob2xkZXItY29sb3I6ICRncmF5ICFkZWZhdWx0O1xuLy8gc2VsZWN0XG4kc2VsZWN0LWhlaWdodDogJGlucHV0LWhlaWdodDtcbiRzZWxlY3QtYm9yZGVyOiAkaW5wdXQtYm9yZGVyO1xuJHNlbGVjdC1ib3JkZXItcmFkaXVzOiAkaW5wdXQtYm9yZGVyLXJhZGl1cztcbiRzZWxlY3QtcGFkZGluZzogJGlucHV0LXBhZGRpbmc7XG4kc2VsZWN0LWZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcbiRzZWxlY3QtbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcblxuLy8gYW5pbWF0aW9uIHNwZWVkXG4kYW5pbWF0aW9uLXNwZWVkOiAwLjVzOyIsIi8vICAgICBfICAgICAgICAgICAgXyAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gX1xuLy8gICAgKF8pICAgICAgICAgIHwgfCAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IChfKVxuLy8gICAgIF8gXyBfXyAgIF9fX3wgfF8gICBfICBfX3wgfCBfX18gICBfIF9fIF9fXyAgIF9fXyAgX198IHxfICBfXyBfXG4vLyAgICB8IHwgJ18gXFwgLyBfX3wgfCB8IHwgfC8gX2AgfC8gXyBcXCB8ICdfIGAgXyBcXCAvIF8gXFwvIF9gIHwgfC8gX2AgfFxuLy8gICAgfCB8IHwgfCB8IChfX3wgfCB8X3wgfCAoX3wgfCAgX18vIHwgfCB8IHwgfCB8ICBfXy8gKF98IHwgfCAoX3wgfFxuLy8gICAgfF98X3wgfF98XFxfX198X3xcXF9fLF98XFxfXyxffFxcX19ffCB8X3wgfF98IHxffFxcX19ffFxcX18sX3xffFxcX18sX3xcbi8vXG4vLyAgICAgIFNpbXBsZSwgZWxlZ2FudCBhbmQgbWFpbnRhaW5hYmxlIG1lZGlhIHF1ZXJpZXMgaW4gU2Fzc1xuLy8gICAgICAgICAgICAgICAgICAgICAgICB2Mi4wLjBcbi8vXG4vLyAgICAgICAgaHR0cHM6Ly9lZHVhcmRvYm91Y2FzLmdpdGh1Yi5pby9pbmNsdWRlLW1lZGlhXG4vL1xuLy8gICAgICAgICBBdXRob3JzOiBFZHVhcmRvIEJvdWNhcyAoQGVkdWFyZG9ib3VjYXMpXG4vLyAgICAgICAgICAgICAgICAgIEtpdHR5IEdpcmF1ZGVsIChAa2l0dHlnaXJhdWRlbClcbi8vXG4vLyAgICAgIFRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlXG5AY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLy9cbi8vLyBpbmNsdWRlLW1lZGlhIGxpYnJhcnkgcHVibGljIGNvbmZpZ3VyYXRpb25cbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLy9cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnc2FzczptZXRhJztcblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2YgZ2xvYmFsIGJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHdpdGggdGhlIGxhYmVsIGBwaG9uZWBcbi8vLyAgJGJyZWFrcG9pbnRzOiAoJ3Bob25lJzogMzIwcHgpO1xuLy8vXG4vLy8gXG4kYnJlYWtwb2ludHM6IChcbiAgJ3Bob25lJzogMzIwcHgsXG4gICd0YWJsZXQnOiA3NjhweCxcbiAgJ2Rlc2t0b3AnOiAxMDI0cHgsXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBDcmVhdGVzIGEgbGlzdCBvZiBzdGF0aWMgZXhwcmVzc2lvbnMgb3IgbWVkaWEgdHlwZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc2luZ2xlIG1lZGlhIHR5cGUgKHNjcmVlbilcbi8vLyAgJG1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbic6ICdzY3JlZW4nKTtcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc3RhdGljIGV4cHJlc3Npb24gd2l0aCBsb2dpY2FsIGRpc2p1bmN0aW9uIChPUiBvcGVyYXRvcilcbi8vLyAgJG1lZGlhLWV4cHJlc3Npb25zOiAoXG4vLy8gICAgJ3JldGluYTJ4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSknXG4vLy8gICk7XG4vLy9cbiRtZWRpYS1leHByZXNzaW9uczogKFxuICAnc2NyZWVuJzogJ3NjcmVlbicsXG4gICdwcmludCc6ICdwcmludCcsXG4gICdoYW5kaGVsZCc6ICdoYW5kaGVsZCcsXG4gICdsYW5kc2NhcGUnOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3BvcnRyYWl0JzogJyhvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3JldGluYTJ4JzpcbiAgICAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCknLFxuICAncmV0aW5hM3gnOlxuICAgICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAzKSwgKG1pbi1yZXNvbHV0aW9uOiAzNTBkcGkpLCAobWluLXJlc29sdXRpb246IDNkcHB4KScsXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBEZWZpbmVzIGEgbnVtYmVyIHRvIGJlIGFkZGVkIG9yIHN1YnRyYWN0ZWQgZnJvbSBlYWNoIHVuaXQgd2hlbiBkZWNsYXJpbmcgYnJlYWtwb2ludHMgd2l0aCBleGNsdXNpdmUgaW50ZXJ2YWxzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIHBpeGVscyBpcyBkZWZpbmVkIGFzIGAxYCBieSBkZWZhdWx0XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+MTI4cHgnKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDEyOXB4KSB7fVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciBlbXMgaXMgZGVmaW5lZCBhcyBgMC4wMWAgYnkgZGVmYXVsdFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjIwZW0nKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIwLjAxZW0pIHt9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIHJlbXMgaXMgZGVmaW5lZCBhcyBgMC4xYCBieSBkZWZhdWx0LCB0byBiZSB1c2VkIHdpdGggYGZvbnQtc2l6ZTogNjIuNSU7YFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjIuMHJlbScpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMi4xcmVtKSB7fVxuLy8vXG4kdW5pdC1pbnRlcnZhbHM6IChcbiAgJ3B4JzogMSxcbiAgJ2VtJzogMC4wMSxcbiAgJ3JlbSc6IDAuMSxcbiAgJyc6IDAsXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBEZWZpbmVzIHdoZXRoZXIgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllcyBpcyBhdmFpbGFibGUsIHVzZWZ1bCBmb3IgY3JlYXRpbmcgc2VwYXJhdGUgc3R5bGVzaGVldHNcbi8vLyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IG1lZGlhIHF1ZXJpZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRGlzYWJsZXMgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbiRpbS1tZWRpYS1zdXBwb3J0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIGJyZWFrcG9pbnQgdG8gZW11bGF0ZSB3aGVuIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgZGlzYWJsZWQuIE1lZGlhIHF1ZXJpZXMgdGhhdCBzdGFydCBhdCBvclxuLy8vIGludGVyY2VwdCB0aGUgYnJlYWtwb2ludCB3aWxsIGJlIGRpc3BsYXllZCwgYW55IG90aGVycyB3aWxsIGJlIGlnbm9yZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIE5PVCBzaG93IGJlY2F1c2UgaXQgZG9lcyBub3QgaW50ZXJjZXB0IHRoZSBkZXNrdG9wIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ3RhYmxldCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIG1lZGlhIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIGFuIGV4cHJlc3Npb24gZm9yIGl0IHRvIGJlIHVzZWQgd2hlbiBtZWRpYSBxdWVyaWVzXG4vLy8gYXJlIG5vdCBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBhbmQgY29udGFpbnMgb25seSBhY2NlcHRlZCBtZWRpYSBleHByZXNzaW9uc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3NjcmVlbicpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgIC5mb28ge1xuLy8vICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGJ1dCBjb250YWlucyBhIG1lZGlhIGV4cHJlc3Npb24gdGhhdCBpcyBub3QgYWNjZXB0ZWRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdyZXRpbmEyeCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogTm8gb3V0cHV0ICovXG4vLy9cbiRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nLCAncG9ydHJhaXQnLCAnbGFuZHNjYXBlJykgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBDcm9zcy1lbmdpbmUgbG9nZ2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cbi8vL1xuLy8vIExvZyBhIG1lc3NhZ2UgZWl0aGVyIHdpdGggYEBlcnJvcmAgaWYgc3VwcG9ydGVkXG4vLy8gZWxzZSB3aXRoIGBAd2FybmAsIHVzaW5nIGBmZWF0dXJlLWV4aXN0cygnYXQtZXJyb3InKWBcbi8vLyB0byBkZXRlY3Qgc3VwcG9ydC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBmdW5jdGlvbiBpbS1sb2coJG1lc3NhZ2UpIHtcbiAgQGlmIG1ldGEuZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJykge1xuICAgIEBlcnJvciAkbWVzc2FnZTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJG1lc3NhZ2U7XG4gICAgJF86IG5vb3AoKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1lc3NhZ2U7XG59XG5cbi8vL1xuLy8vIFdyYXBwZXIgbWl4aW4gZm9yIHRoZSBsb2cgZnVuY3Rpb24gc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBhIG1vcmUgZnJpZW5kbHlcbi8vLyBBUEkgdGhhbiBgQGlmIGltLWxvZygnLi4nKSB7fWAgb3IgYCRfOiBpbS1sb2coJy4uJylgLiBCYXNpY2FsbHksIHVzZSB0aGUgZnVuY3Rpb25cbi8vLyB3aXRoaW4gZnVuY3Rpb25zIGJlY2F1c2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbiBhIGZ1bmN0aW9uXG4vLy8gYW5kIHVzZSB0aGUgbWl4aW4gZXZlcnl3aGVyZSBlbHNlIGJlY2F1c2UgaXQncyBtdWNoIG1vcmUgZWxlZ2FudC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBtaXhpbiBsb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGltLWxvZygkbWVzc2FnZSkge1xuICB9XG59XG5cbi8vL1xuLy8vIEZ1bmN0aW9uIHdpdGggbm8gYEByZXR1cm5gIGNhbGxlZCBuZXh0IHRvIGBAd2FybmAgaW4gU2FzcyAzLjNcbi8vLyB0byB0cmlnZ2VyIGEgY29tcGlsaW5nIGVycm9yIGFuZCBzdG9wIHRoZSBwcm9jZXNzLlxuLy8vXG5AZnVuY3Rpb24gbm9vcCgpIHtcbn1cblxuLy8vXG4vLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbGlzdCBvZiBjb25kaXRpb25zIGlzIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9ucyBhcmUgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50XG4vLy9cbkBmdW5jdGlvbiBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSB7XG4gICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlOiBtYXAuZ2V0KCRicmVha3BvaW50cywgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQpO1xuXG4gIEBpZiBub3QgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUge1xuICAgIEBpZiBpbS1sb2coJ2AjeyRpbS1uby1tZWRpYS1icmVha3BvaW50fWAgaXMgbm90IGEgdmFsaWQgYnJlYWtwb2ludC4nKSB7XG4gICAgfVxuICB9XG5cbiAgQGVhY2ggJGNvbmRpdGlvbiBpbiAkY29uZGl0aW9ucyB7XG4gICAgQGlmIG5vdCBtYXAuaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcbiAgICAgICRvcGVyYXRvcjogZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGNvbmRpdGlvbik7XG4gICAgICAkcHJlZml4OiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKTtcbiAgICAgICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGNvbmRpdGlvbiwgJG9wZXJhdG9yKTtcblxuICAgICAgQGlmICgkcHJlZml4ID09ICdtYXgnIGFuZCAkdmFsdWUgPD0gJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUpIG9yXG4gICAgICAgICgkcHJlZml4ID09ICdtaW4nIGFuZCAkdmFsdWUgPiAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSlcbiAgICAgIHtcbiAgICAgICAgQHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmIG5vdCBsaXN0LmluZGV4KCRpbS1uby1tZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy9cbi8vLyBQYXJzaW5nIGVuZ2luZVxuLy8vIEBhdXRob3IgS2l0dHkgR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuLy8vXG4vLy8gR2V0IG9wZXJhdG9yIG9mIGFuIGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gQW55IG9mIGA+PWAsIGA+YCwgYDw9YCwgYDxgLCBg4omlYCwgYOKJpGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKSB7XG4gIEBlYWNoICRvcGVyYXRvciBpbiAoJz49JywgJz4nLCAnPD0nLCAnPCcsICfiiaUnLCAn4omkJykge1xuICAgIEBpZiBzdHJpbmcuaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAgICAgQHJldHVybiAkb3BlcmF0b3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAkXzogaW0tbG9nKCdObyBvcGVyYXRvciBmb3VuZCBpbiBgI3skZXhwcmVzc2lvbn1gLicpO1xufVxuXG4vLy9cbi8vLyBHZXQgZGltZW5zaW9uIG9mIGFuIGV4cHJlc3Npb24sIGJhc2VkIG9uIGEgZm91bmQgb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBkaW1lbnNpb24gZnJvbVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvciBmcm9tIGAkZXhwcmVzc2lvbmBcbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBgd2lkdGhgIG9yIGBoZWlnaHRgIChvciBwb3RlbnRpYWxseSBhbnl0aGluZyBlbHNlKVxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tZGltZW5zaW9uKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcbiAgJG9wZXJhdG9yLWluZGV4OiBzdHJpbmcuaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG4gICRwYXJzZWQtZGltZW5zaW9uOiBzdHJpbmcuc2xpY2UoJGV4cHJlc3Npb24sIDAsICRvcGVyYXRvci1pbmRleCAtIDEpO1xuICAkZGltZW5zaW9uOiAnd2lkdGgnO1xuXG4gIEBpZiBzdHJpbmcubGVuZ3RoKCRwYXJzZWQtZGltZW5zaW9uKSA+IDAge1xuICAgICRkaW1lbnNpb246ICRwYXJzZWQtZGltZW5zaW9uO1xuICB9XG5cbiAgQHJldHVybiAkZGltZW5zaW9uO1xufVxuXG4vLy9cbi8vLyBHZXQgZGltZW5zaW9uIHByZWZpeCBiYXNlZCBvbiBhbiBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYG1pbmAgb3IgYG1heGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpIHtcbiAgQHJldHVybiBpZihsaXN0LmluZGV4KCgnPCcsICc8PScsICfiiaQnKSwgJG9wZXJhdG9yKSwgJ21heCcsICdtaW4nKTtcbn1cblxuLy8vXG4vLy8gR2V0IHZhbHVlIG9mIGFuIGV4cHJlc3Npb24sIGJhc2VkIG9uIGEgZm91bmQgb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIEEgbnVtZXJpYyB2YWx1ZVxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0cmluZy5pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHZhbHVlOiBzdHJpbmcuc2xpY2UoJGV4cHJlc3Npb24sICRvcGVyYXRvci1pbmRleCArIHN0cmluZy5sZW5ndGgoJG9wZXJhdG9yKSk7XG5cbiAgQGlmIG1hcC5oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgJHZhbHVlOiBtYXAuZ2V0KCRicmVha3BvaW50cywgJHZhbHVlKTtcbiAgfSBAZWxzZSB7XG4gICAgJHZhbHVlOiB0by1udW1iZXIoJHZhbHVlKTtcbiAgfVxuXG4gICRpbnRlcnZhbDogbWFwLmdldCgkdW5pdC1pbnRlcnZhbHMsIG1hdGgudW5pdCgkdmFsdWUpKTtcblxuICBAaWYgbm90ICRpbnRlcnZhbCB7XG4gICAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAgIC8vIHJlbHkgb24gdGhlIGBpbS1sb2coLi4pYCBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgYGxvZyguLilgIG1peGluLiBCZWNhdXNlXG4gICAgLy8gZnVuY3Rpb25zIGNhbm5vdCBiZSBjYWxsZWQgYW55d2hlcmUgaW4gU2Fzcywgd2UgbmVlZCB0byBoYWNrIHRoZSBjYWxsIGluXG4gICAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgICAvLyBTYXNzIDMuMywgY2hhbmdlIHRoaXMgbGluZSBpbiBgQGlmIGltLWxvZyguLikge31gIGluc3RlYWQuXG4gICAgJF86IGltLWxvZygnVW5rbm93biB1bml0IGAje21hdGgudW5pdCgkdmFsdWUpfWAuJyk7XG4gIH1cblxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgKyAkaW50ZXJ2YWw7XG4gIH0gQGVsc2UgaWYgJG9wZXJhdG9yID09ICc8JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgLSAkaW50ZXJ2YWw7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8vXG4vLy8gUGFyc2UgYW4gZXhwcmVzc2lvbiB0byByZXR1cm4gYSB2YWxpZCBtZWRpYS1xdWVyeSBleHByZXNzaW9uXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIHBhcnNlXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gVmFsaWQgbWVkaWEgcXVlcnlcbi8vL1xuQGZ1bmN0aW9uIHBhcnNlLWV4cHJlc3Npb24oJGV4cHJlc3Npb24pIHtcbiAgLy8gSWYgaXQgaXMgcGFydCBvZiAkbWVkaWEtZXhwcmVzc2lvbnMsIGl0IGhhcyBubyBvcGVyYXRvclxuICAvLyB0aGVuIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ28gYW55IGZ1cnRoZXIsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxuICBAaWYgbWFwLmhhcy1rZXkoJG1lZGlhLWV4cHJlc3Npb25zLCAkZXhwcmVzc2lvbikge1xuICAgIEByZXR1cm4gbWFwLmdldCgkbWVkaWEtZXhwcmVzc2lvbnMsICRleHByZXNzaW9uKTtcbiAgfVxuXG4gICRvcGVyYXRvcjogZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGV4cHJlc3Npb24pO1xuICAkZGltZW5zaW9uOiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG4gICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xuICAkdmFsdWU6IGdldC1leHByZXNzaW9uLXZhbHVlKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuXG4gIEByZXR1cm4gJygjeyRwcmVmaXh9LSN7JGRpbWVuc2lvbn06ICN7JHZhbHVlfSknO1xufVxuXG4vLy9cbi8vLyBTbGljZSBgJGxpc3RgIGJldHdlZW4gYCRzdGFydGAgYW5kIGAkZW5kYCBpbmRleGVzXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBMaXN0IHRvIHNsaWNlXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzdGFydCBbMV0gLSBTdGFydCBpbmRleFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZW5kIFtsZW5ndGgoJGxpc3QpXSAtIEVuZCBpbmRleFxuLy8vXG4vLy8gQHJldHVybiB7TGlzdH0gU2xpY2VkIGxpc3Rcbi8vL1xuQGZ1bmN0aW9uIHNsaWNlKCRsaXN0LCAkc3RhcnQ6IDEsICRlbmQ6IGxpc3QubGVuZ3RoKCRsaXN0KSkge1xuICBAaWYgbGlzdC5sZW5ndGgoJGxpc3QpIDwgMSBvciAkc3RhcnQgPiAkZW5kIHtcbiAgICBAcmV0dXJuICgpO1xuICB9XG5cbiAgJHJlc3VsdDogKCk7XG5cbiAgQGZvciAkaSBmcm9tICRzdGFydCB0aHJvdWdoICRlbmQge1xuICAgICRyZXN1bHQ6IGxpc3QuYXBwZW5kKCRyZXN1bHQsIGxpc3QubnRoKCRsaXN0LCAkaSksIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuLy8vL1xuLy8vIFN0cmluZyB0byBudW1iZXIgY29udmVydGVyXG4vLy8gQGF1dGhvciBLaXR0eSBHaXJhdWRlbFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vL1xuXG4vLy9cbi8vLyBDYXN0cyBhIHN0cmluZyBpbnRvIGEgbnVtYmVyXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYmUgcGFyc2VkXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy9cblxuQGZ1bmN0aW9uIHRvLW51bWJlcigkdmFsdWUpIHtcbiAgQGlmIG1ldGEudHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfSBAZWxzZSBpZiBtZXRhLnR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XG4gICAgJF86IGltLWxvZygnVmFsdWUgZm9yIGB0by1udW1iZXJgIHNob3VsZCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcbiAgfVxuXG4gICRmaXJzdC1jaGFyYWN0ZXI6IHN0cmluZy5zbGljZSgkdmFsdWUsIDEsIDEpO1xuICAkcmVzdWx0OiAwO1xuICAkZGlnaXRzOiAwO1xuICAkbWludXM6ICgkZmlyc3QtY2hhcmFjdGVyID09ICctJyk7XG4gICRudW1iZXJzOiAoXG4gICAgJzAnOiAwLFxuICAgICcxJzogMSxcbiAgICAnMic6IDIsXG4gICAgJzMnOiAzLFxuICAgICc0JzogNCxcbiAgICAnNSc6IDUsXG4gICAgJzYnOiA2LFxuICAgICc3JzogNyxcbiAgICAnOCc6IDgsXG4gICAgJzknOiA5LFxuICApO1xuXG4gIC8vIFJlbW92ZSArLy0gc2lnbiBpZiBwcmVzZW50IGF0IGZpcnN0IGNoYXJhY3RlclxuICBAaWYgKCRmaXJzdC1jaGFyYWN0ZXIgPT0gJysnIG9yICRmaXJzdC1jaGFyYWN0ZXIgPT0gJy0nKSB7XG4gICAgJHZhbHVlOiBzdHJpbmcuc2xpY2UoJHZhbHVlLCAyKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyaW5nLmxlbmd0aCgkdmFsdWUpIHtcbiAgICAkY2hhcmFjdGVyOiBzdHJpbmcuc2xpY2UoJHZhbHVlLCAkaSwgJGkpO1xuXG4gICAgQGlmIG5vdChsaXN0LmluZGV4KG1hcC5rZXlzKCRudW1iZXJzKSwgJGNoYXJhY3Rlcikgb3IgJGNoYXJhY3RlciA9PSAnLicpIHtcbiAgICAgIEByZXR1cm4gdG8tbGVuZ3RoKGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpLCBzdHJpbmcuc2xpY2UoJHZhbHVlLCAkaSkpO1xuICAgIH1cblxuICAgIEBpZiAkY2hhcmFjdGVyID09ICcuJyB7XG4gICAgICAkZGlnaXRzOiAxO1xuICAgIH0gQGVsc2UgaWYgJGRpZ2l0cyA9PSAwIHtcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMCArIG1hcC5nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGRpZ2l0czogJGRpZ2l0cyAqIDEwO1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCArIG1hdGguZGl2KG1hcC5nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpLCAkZGlnaXRzKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpO1xufVxuXG4vLy9cbi8vLyBBZGQgYCR1bml0YCB0byBgJHZhbHVlYFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGFkZCB1bml0IHRvXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR1bml0IC0gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB1bml0XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gYCR2YWx1ZWAgZXhwcmVzc2VkIGluIGAkdW5pdGBcbi8vL1xuQGZ1bmN0aW9uIHRvLWxlbmd0aCgkdmFsdWUsICR1bml0KSB7XG4gICR1bml0czogKFxuICAgICdweCc6IDFweCxcbiAgICAnY20nOiAxY20sXG4gICAgJ21tJzogMW1tLFxuICAgICclJzogMSUsXG4gICAgJ2NoJzogMWNoLFxuICAgICdwYyc6IDFwYyxcbiAgICAnaW4nOiAxaW4sXG4gICAgJ2VtJzogMWVtLFxuICAgICdyZW0nOiAxcmVtLFxuICAgICdwdCc6IDFwdCxcbiAgICAnZXgnOiAxZXgsXG4gICAgJ3Z3JzogMXZ3LFxuICAgICd2aCc6IDF2aCxcbiAgICAndm1pbic6IDF2bWluLFxuICAgICd2bWF4JzogMXZtYXgsXG4gICk7XG5cbiAgQGlmIG5vdCBsaXN0LmluZGV4KG1hcC5rZXlzKCR1bml0cyksICR1bml0KSB7XG4gICAgJF86IGltLWxvZygnSW52YWxpZCB1bml0IGAjeyR1bml0fWAuJyk7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZSAqIG1hcC5nZXQoJHVuaXRzLCAkdW5pdCk7XG59XG5cbi8vL1xuLy8vIFRoaXMgbWl4aW4gYWltcyBhdCByZWRlZmluaW5nIHRoZSBjb25maWd1cmF0aW9uIGp1c3QgZm9yIHRoZSBzY29wZSBvZlxuLy8vIHRoZSBjYWxsLiBJdCBpcyBoZWxwZnVsIHdoZW4gaGF2aW5nIGEgY29tcG9uZW50IG5lZWRpbmcgYW4gZXh0ZW5kZWRcbi8vLyBjb25maWd1cmF0aW9uIHN1Y2ggYXMgY3VzdG9tIGJyZWFrcG9pbnRzIChyZWZlcnJlZCB0byBhcyB0d2Vha3BvaW50cylcbi8vLyBmb3IgaW5zdGFuY2UuXG4vLy9cbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrcG9pbnRzIFsoKV0gLSBNYXAgb2YgdHdlYWtwb2ludHMgdG8gYmUgbWVyZ2VkIHdpdGggYCRicmVha3BvaW50c2Bcbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zIFsoKV0gLSBNYXAgb2YgdHdlYWtlZCBtZWRpYSBleHByZXNzaW9ucyB0byBiZSBtZXJnZWQgd2l0aCBgJG1lZGlhLWV4cHJlc3Npb25gXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgYnJlYWtwb2ludHMgd2l0aCBhIHR3ZWFrcG9pbnRcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PWN1c3RvbScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBtZWRpYSBleHByZXNzaW9ucyB3aXRoIGEgY3VzdG9tIG9uZVxuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCBib3RoIGNvbmZpZ3VyYXRpb24gbWFwc1xuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCgnY3VzdG9tJzogNjc4cHgpLCAoJ2FsbCc6ICdhbGwnKSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbkBtaXhpbiBtZWRpYS1jb250ZXh0KCR0d2Vha3BvaW50czogKCksICR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCkpIHtcbiAgLy8gU2F2ZSBnbG9iYWwgY29uZmlndXJhdGlvblxuICAkZ2xvYmFsLWJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHM7XG4gICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnM6ICRtZWRpYS1leHByZXNzaW9ucztcblxuICAvLyBVcGRhdGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiBtYXAubWVyZ2UoJGJyZWFrcG9pbnRzLCAkdHdlYWtwb2ludHMpICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogbWFwLm1lcmdlKCRtZWRpYS1leHByZXNzaW9ucywgJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zKSAhZ2xvYmFsO1xuXG4gIEBjb250ZW50O1xuXG4gIC8vIFJlc3RvcmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiAkZ2xvYmFsLWJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogJGdsb2JhbC1tZWRpYS1leHByZXNzaW9ucyAhZ2xvYmFsO1xufVxuXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBwdWJsaWMgZXhwb3NlZCBBUElcbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLy9cblxuLy8vXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgYmFzZWQgb24gYSBsaXN0IG9mIGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHNpbmdsZSBzZXQgYnJlYWtwb2ludFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCB0d28gc2V0IGJyZWFrcG9pbnRzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD10YWJsZXQnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49MzU4cHgnLCAnPDg1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBzZXQgYnJlYWtwb2ludHMgd2l0aCBjdXN0b20gdmFsdWVzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+ZGVza3RvcCcsICc8PTEzNTBweCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzdGF0aWMgZXhwcmVzc2lvblxuLy8vICBAaW5jbHVkZSBtZWRpYSgncmV0aW5hMngnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBNaXhpbmcgZXZlcnl0aGluZ1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNTBweCcsICc8dGFibGV0JywgJ3JldGluYTN4JykgeyB9XG4vLy9cbkBtaXhpbiBtZWRpYSgkY29uZGl0aW9ucy4uLikge1xuICBAaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsaXN0Lmxlbmd0aCgkY29uZGl0aW9ucykgPT0gMCkgb3JcbiAgICAobm90ICRpbS1tZWRpYS1zdXBwb3J0IGFuZCBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSlcbiAge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIGlmICgkaW0tbWVkaWEtc3VwcG9ydCBhbmQgbGlzdC5sZW5ndGgoJGNvbmRpdGlvbnMpID4gMCkge1xuICAgIEBtZWRpYSAje3N0cmluZy51bnF1b3RlKHBhcnNlLWV4cHJlc3Npb24obGlzdC5udGgoJGNvbmRpdGlvbnMsIDEpKSl9IHtcbiAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgICBAaW5jbHVkZSBtZWRpYShzbGljZSgkY29uZGl0aW9ucywgMikuLi4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICcuLi9hYnN0cmFjdHMvJyBhcyAqO1xuXG4vLyBsaXN0IHJlc2V0XG5cbiVsaXN0cmVzZXQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi8vIGNsZWFyZml4XG4lY2xlYXJmaXgge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbn1cblxuLmNsZWFyZml4IHtcbiAgICBAZXh0ZW5kICVjbGVhcmZpeDtcbn1cblxuLy8gdHJhbnNpdGlvblxuJXRyYW5zaXRpb24ge1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xufVxuXG4vLyBqdXN0aWZ5IG5hdlxuJWp1c3RpZnkge1xuICAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICAgZm9udC1zaXplOiAxcHg7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG5cbiAgICA+ICoge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuICAgICAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIH1cbn1cblxuJWJnQ292ZXIge1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG59XG5cbiVhYnNvbHV0ZUNvdmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xufVxuXG4vLy8gKiBIZWxwZXIgY2xhc3MgdG8gdHJ1bmNhdGUgYW5kIGFkZCBlbGxpcHNpcyB0byBhIHN0cmluZyB0b28gbG9uZyBmb3IgaXQgdG8gZml0XG4vLy8gKiBvbiBhIHNpbmdsZSBsaW5lLlxuLy8vICogMS4gUHJldmVudCBjb250ZW50IGZyb20gd3JhcHBpbmcsIGZvcmNpbmcgaXQgb24gYSBzaW5nbGUgbGluZS5cbi8vLyAqIDIuIEFkZCBlbGxpcHNpcyBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLlxuXG4uZWxsaXBzaXMge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRmLXJvdyB7XG4gICAgLy8gQGluY2x1ZGUgYWRkLXBhcmFtcygpO1xuXHRkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBtYXJnaW46IDAgKC0kZ3V0dGVyKTtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQoKTtcblxuICAgIFtjbGFzcyo9XCJjb2wtXCJdIHtcbiAgICAgICAgcGFkZGluZzogMCAkZ3V0dGVyO1xuICAgIH1cbn0iLCJAdXNlIFwiLi92YXJpYWJsZXNcIiBhcyAqO1xuQHVzZSBcIi4vbWVkaWFcIiBhcyAqO1xuQHVzZSAnc2FzczpsaXN0Jztcbi8vIEBmb3J3YXJkICd+aW5jbHVkZS1tZWRpYS9kaXN0L2luY2x1ZGUtbWVkaWEnO1xuXG4vLyB2ZXJ0aWNhbCBhbGlnbiBlbCBpbnNpZGUgcGFyZW50IHdpdGggZml4ZWQgaGVpZ2h0L21pbi1oZWlnaHRcbi8vIHVzYWdlXG4vLyBodG1sIC0gLnBhcmVudD4uY2hpbGRcbi8vIHNjc3MgLSBAaW5jbHVkZSB2LWFsaWduO1xuLy8gICAgIG9yIEBpbmNsdWRlIHYtYWxpZ24oMjUwcHgpO1xuLy8gICAgIG9yIEBpbmNsdWRlIHYtYWxpZ24oMjUwcHgsIGJvdHRvbSwgYmVmb3JlKTtcbi8vXG5AbWl4aW4gdi1hbGlnbigkdmEtaGVpZ2h0OiAxMDAlLCAkdmEtZGlyZWN0aW9uOiBtaWRkbGUsICR2YS1wc2V1ZG86IGFmdGVyKSB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmOiN7JHZhLXBzZXVkb30ge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogJHZhLWRpcmVjdGlvbjtcbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6ICR2YS1oZWlnaHQ7XG4gICAgfVxuXG4gICAgPioge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiAkdmEtZGlyZWN0aW9uO1xuICAgICAgICBtYXgtd2lkdGg6IDk5JTtcbiAgICB9XG59XG5cbi8vIHZlcnRpY2FsIGFsaWduIGEgcGFpciBvZiBjaGlsZCBlbCBpbnNpZGUgcGFyZW50XG4vLyB1c2FnZcOnXG4vLyBodG1sIC0gLnBvc3Q+LmltYWdlKy50ZXh0XG4vLyBzY3NzIC0gQGluY2x1ZGUgdi1hbGlnbi1wYWlyKGltYWdlLCB0ZXh0KTtcbi8vICAgICBvciBAaW5jbHVkZSB2LWFsaWduLXBhaXIoaW1hZ2UsIHRleHQsIGJvdHRvbSk7XG4vLyAgICAgb3IgQGluY2x1ZGUgdi1hbGlnbi1wYWlyKGltYWdlLCB0ZXh0LCBtaWRkbGUsIDIwMHB4KTtcbi8vXG5AbWl4aW4gdi1hbGlnbi1wYWlyKCRjaGlsZC1uYW1lMSwgJGNoaWxkLW5hbWUyLCAkdmFsaWduOiBtaWRkbGUsICR3aWR0aDE6IGF1dG8sICR3aWR0aDI6IGF1dG8pIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcblxuICAgIC4jeyRjaGlsZC1uYW1lMX0ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogJHZhbGlnbjtcbiAgICAgICAgd2lkdGg6ICR3aWR0aDE7XG4gICAgfVxuXG4gICAgLiN7JGNoaWxkLW5hbWUyfSB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiAkdmFsaWduO1xuICAgICAgICB3aWR0aDogJHdpZHRoMjtcbiAgICB9XG59XG5cbi8vIHZlcnRpY2FsIGFsaWduIGVsXG4vLyB1c2FnZTogQGluY2x1ZGUgdmVydGljYWwtYWxpZ24tZWw7XG4vL1xuQG1peGluIHZlcnRpY2FsLWFsaWduLWVsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vLy8gTWl4aW4gaGVscGluZyBkZWZpbmluZyBib3RoIGB3aWR0aGAgYW5kIGBoZWlnaHRgIHNpbXVsdGFuZW91c2x5LlxuLy8vXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG4vLy8gQHBhcmFtIHtMZW5ndGh9ICR3aWR0aCAtIEVsZW1lbnTigJlzIGB3aWR0aGBcbi8vLyBAcGFyYW0ge0xlbmd0aH0gJGhlaWdodCAoJHdpZHRoKSAtIEVsZW1lbnTigJlzIGBoZWlnaHRgXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5mb28ge1xuLy8vICAgICBAaW5jbHVkZSBzaXplKDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuYmFyIHtcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZSgxMDAlLCAxMGVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBvdXRwdXRcbi8vLyAgIC5mb28ge1xuLy8vICAgICB3aWR0aDogMTBlbTtcbi8vLyAgICAgaGVpZ2h0OiAxMGVtO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuYmFyIHtcbi8vLyAgICAgd2lkdGg6IDEwMCU7XG4vLy8gICAgIGhlaWdodDogMTBlbTtcbi8vLyAgIH1cbi8vL1xuQG1peGluIHNpemUoJHdpZHRoLCAkaGVpZ2h0OiAkd2lkdGgpIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGhlaWdodDogJGhlaWdodDtcbn1cblxuLy8vIGZvbnQtc21vdGhpbmdcbi8vLyBAaW5jbHVkZSBmb250LXNtb290aGluZyhvbik7XG4vLy8gQGluY2x1ZGUgZm9udC1zbW9vdGhpbmcob2ZmKTtcbkBtaXhpbiBmb250LXNtb290aGluZygkdmFsdWU6IG9uKSB7XG4gICAgQGlmICR2YWx1ZSA9PW9uIHtcbiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBzdWJwaXhlbC1hbnRpYWxpYXNlZDtcbiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGF1dG87XG4gICAgfVxufVxuXG5cbi8vLyBIaWRlcyB0aGUgdGV4dCBpbiBhbiBlbGVtZW50LCBjb21tb25seSB1c2VkIHRvIHNob3cgYW4gaW1hZ2UuIFNvbWUgZWxlbWVudHMgd2lsbCBuZWVkIGJsb2NrLWxldmVsIHN0eWxlcyBhcHBsaWVkLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL3plbGRtYW4uY29tLzIwMTIvMDMvMDEvcmVwbGFjaW5nLXRoZS05OTk5cHgtaGFjay1uZXctaW1hZ2UtcmVwbGFjZW1lbnRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XG4vLy8gICAgIHRleHQtaW5kZW50OiAxMDElO1xuLy8vICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuLy8vICAgfVxuLy8vXG5AbWl4aW4gaGlkZS10ZXh0IHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtaW5kZW50OiAxMDElO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cblxuLy8vIENyZWF0ZXMgYSB2aXN1YWwgdHJpYW5nbGUuXG4vLy8gTWl4aW4gdGFrZXMgKCRzaXplLCAkY29sb3IsICRkaXJlY3Rpb24pXG4vLy8gVGhlICRzaXplIGFyZ3VtZW50IGNhbiB0YWtlIG9uZSBvciB0d28gdmFsdWVz4oCUd2lkdGggaGVpZ2h0LlxuLy8vIFRoZSAkY29sb3IgYXJndW1lbnQgY2FuIHRha2Ugb25lIG9yIHR3b1xuLy8vIHZhbHVlc+KAlGZvcmVncm91bmQtY29sb3IgYmFja2dyb3VuZC1jb2xvci5cbi8vL1xuLy8vIEBhdXRob3IgaHR0cDovL2JvdXJib24uaW8vZG9jcy8jdHJpYW5nbGVcbi8vL1xuLy8vICRkaXJlY3Rpb246XG4vLy8gdXAsIGRvd24sIGxlZnQsIHJpZ2h0LCB1cC1yaWdodCwgdXAtbGVmdCwgZG93bi1yaWdodCwgZG93bi1sZWZ0XG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICBAaW5jbHVkZSB0cmlhbmdsZSgxMnB4LCBncmF5LCBkb3duKTtcbi8vLyAgIEBpbmNsdWRlIHRyaWFuZ2xlKDEycHggNnB4LCBncmF5IGJsdWUsIHVwLWxlZnQpO1xuLy8vXG5AbWl4aW4gdHJpYW5nbGUoJHNpemUsICRjb2xvciwgJGRpcmVjdGlvbikge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIGxlbmd0aCgkc2l6ZSkpO1xuICAgICRmb3JlZ3JvdW5kLWNvbG9yOiBudGgoJGNvbG9yLCAxKTtcbiAgICAkYmFja2dyb3VuZC1jb2xvcjogaWYobGVuZ3RoKCRjb2xvcik9PTIsIG50aCgkY29sb3IsIDIpLCB0cmFuc3BhcmVudCk7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuXG4gICAgQGlmICgkZGlyZWN0aW9uID09dXApIG9yICgkZGlyZWN0aW9uID09ZG93bikgb3IgKCRkaXJlY3Rpb24gPT1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT1sZWZ0KSB7XG4gICAgICAgICR3aWR0aDogJHdpZHRoIC8gMjtcbiAgICAgICAgJGhlaWdodDogaWYobGVuZ3RoKCRzaXplKSA+IDEsICRoZWlnaHQsICRoZWlnaHQvMik7XG5cbiAgICAgICAgQGlmICRkaXJlY3Rpb24gPT11cCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PXJpZ2h0IHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PWRvd24ge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT1sZWZ0IHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICgkZGlyZWN0aW9uID09dXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09dXAtbGVmdCkge1xuICAgICAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgICAgIEBpZiAkZGlyZWN0aW9uID09dXAtcmlnaHQge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT11cC1sZWZ0IHtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT1kb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PWRvd24tbGVmdCkge1xuICAgICAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgICAgIEBpZiAkZGlyZWN0aW9uID09ZG93bi1yaWdodCB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PWRvd24tbGVmdCB7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICgkZGlyZWN0aW9uID09aW5zZXQtdXApIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PWluc2V0LWRvd24pIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkZm9yZWdyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PWluc2V0LXJpZ2h0KSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT1pbnNldC1sZWZ0KSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XG4gICAgfVxufVxuXG5cbi8vLyBBbmltYXRlIGNzcyBwcm9wZXJ0aWVzXG4vLyB1c2FnZVxuLy8gc2NzcyAtIEBpbmNsdWRlIGFuaW1hdGUoY29sb3IpO1xuLy8gICAgIG9yIEBpbmNsdWRlIGFuaW1hdGUoY29sb3Igd2lkdGgpO1xuLy8gICAgIG9yIEBpbmNsdWRlIGFuaW1hdGUoY29sb3Igd2lkdGgsIDFzLCBsaW5lYXIpO1xuLy9cblxuQG1peGluIGFuaW1hdGUoJHByb3BlcnRpZXMsICRkdXJhdGlvbjogJGFuaW1hdGlvbi1zcGVlZCwgJGVhc2luZzogZWFzZS1pbi1vdXQpIHtcbiAgICAkbGlzdDogKCk7XG5cbiAgICBAZWFjaCAkcHJvcCBpbiAkcHJvcGVydGllcyB7XG4gICAgICAgICRzdHI6ICN7JHByb3B9ICN7JGR1cmF0aW9ufSAjeyRlYXNpbmd9O1xuICAgICAgICAkbGlzdDogbGlzdC5qb2luKCRsaXN0LCAjeyRzdHJ9LCBjb21tYSk7XG4gICAgfVxuXG4gICAgdHJhbnNpdGlvbjogJGxpc3Q7XG59XG5cblxuLy8vIE1peGluIGZvciBzdHlsaW5nIGZvcm0tcGxhY2Vob2xkZXJzXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICBAaW5jbHVkZSBwbGFjZWhvbGRlciB7XG4vLy8gICAgY29sb3I6ICMzMzM7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGlucHV0W3R5cGU9J3RleHQnXSxcbi8vLyAgIGlucHV0W3R5cGU9J3RlbCddLFxuLy8vICAgaW5wdXRbdHlwZT0nZW1haWwnXSB7XG4vLy8gICAgIEBpbmNsdWRlIHBsYWNlaG9sZGVyIHtcbi8vLyAgICAgIGNvbG9yOiByZWQ7XG4vLy8gICAgIH1cbi8vLyAgIH1cblxuQG1peGluIHBsYWNlaG9sZGVyIHtcbiAgICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgJjo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgICY6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgJi5wbGFjZWhvbGRlciB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLy8vIEZvbnQtc2l6ZSBweCB0byByZW0gY2FsY1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vIHNlbGVjdG9yIHtcbi8vLyAgICBAaW5jbHVkZSByZW0tZm9udC1zaXplKDE2cHgpO1xuLy8vIH1cblxuQG1peGluIHJlbS1mb250LXNpemUoJHB4LXNpemUpIHtcbiAgICBmb250LXNpemU6ICRweC1zaXplO1xuICAgIGZvbnQtc2l6ZTogKCRweC1zaXplIC8gMTBweCkgKyByZW07XG59XG5cbi8vZm9udC1mYWNlXG5AbWl4aW4gZm9udC1mYWNlKCRmb250LW5hbWUsICRmb250LXBhdGgsICR3ZWlnaHQsICRzdHlsZSkge1xuICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogJyN7JGZvbnQtbmFtZX0nO1xuICAgICAgICBzcmM6IHVybCgnZm9udHMvI3skZm9udC1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZicpO1xuICAgICAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICAgICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIH1cbn1cblxuXG4vLyBAbWl4aW4gYWRkLXBhcmFtcygpIHtcblxuLy8gICAgIEBlYWNoICR2YWwsXG4vLyAgICAgJG1lZGlhIGluICRncmlkIHtcbi8vICAgICAgICAgJi5kZi1yci0jeyR2YWx9IHtcbi8vICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCfiiaUnICsgJG1lZGlhKSB7XG4vLyAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuLy8gICAgICAgICAgICAgfVxuLy8gICAgICAgICB9XG5cbi8vICAgICAgICAgJi5kZi1haWMtI3skdmFsfSB7XG4vLyAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgn4omlJyArICRtZWRpYSkge1xuLy8gICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4vLyAgICAgICAgICAgICB9XG4vLyAgICAgICAgIH1cbi8vICAgICB9XG4vLyB9XG5cbi8vIGZsZXggZ3JpZFxuQG1peGluIGZsZXgtZ3JpZCgpIHtcbiAgICBAZWFjaCAkdmFsLFxuICAgICRtZWRpYSBpbiAkZ3JpZCB7XG4gICAgICAgIEBmb3IgJGd1dHRlciBmcm9tIDEgdGhyb3VnaCAxMiB7XG4gICAgICAgICAgICAuY29sLSN7JHZhbH0tI3skZ3V0dGVyfSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJ+KJpScgKyAkbWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleDogMSAwIGNhbGMoMTAwJSAvIDEyICogI3skZ3V0dGVyfSk7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC8gMTIgKiAjeyRndXR0ZXJ9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAZm9yICRndXR0ZXIgZnJvbSAwIHRocm91Z2ggMTEge1xuICAgICAgICAgICAgLmNvbC1vZmZzZXQtI3skdmFsfS0jeyRndXR0ZXJ9IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgn4omlJyArICRtZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygxMDAlIC8gMTIgKiAjeyRndXR0ZXJ9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiB2LWNlbnRlcigkbWluLWhlaWdodDogNDAwcHgpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgPioge1xuICAgICAgICBtaW4taGVpZ2h0OiAkbWluLWhlaWdodDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuLy8gb2JqZWN0IGZpdCBmb3IgaW1hZ2VcbkBtaXhpbiBpbWctc2NhbGUge1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLy8gQG1peGluIHNjcm9sbC1jdXN0b20oJHdpZHRoOiA4cHgsICRoZWlnaHQ6IDhweCwgJHNjcm9sbC1iZzogI2U5ZTllOSwgJHNjcm9sbC1zbGlkZXItYmc6ICNhMWE1YWQpIHtcbkBtaXhpbiBzY3JvbGwtY3VzdG9tKCR3aWR0aDogNXB4LCAkaGVpZ2h0OiA1cHgsICRzY3JvbGwtYmc6ICNmZmYsICRzY3JvbGwtc2xpZGVyLWJnOiByZ2JhKCNCNEI0QjQsIDEpKSB7XG4gICAgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgICAgYmFja2dyb3VuZDogJHNjcm9sbC1iZztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogY2FsYygjeyR3aWR0aH0gLyAyKTtcbiAgICAgICAgbWFyZ2luOiAwIDZweCAwIDA7XG4gICAgfVxuICAgIFxuICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgICBib3JkZXItcmFkaXVzOiBjYWxjKCN7JHdpZHRofSAvIDIpO1xuICAgICAgICAvLyBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL3RyYWNrLmpwZykgdG9wIGNlbnRlciByZXBlYXQteTtcbiAgICB9XG4gICAgXG4gICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgYmFja2dyb3VuZDogJHNjcm9sbC1zbGlkZXItYmc7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGNhbGMoI3skd2lkdGh9IC8gMik7XG4gICAgfVxufSIsIkB1c2UgXCIuL3ZhcmlhYmxlc1wiIGFzICo7XG5AdXNlIFwiLi9tZWRpYVwiIGFzICo7XG5cbkBtaXhpbiB0aXRsZS1zaXplKCRzeW1ib2wpIHtcblxuICAgIEBlYWNoICRtZWRpYSxcbiAgICAkdGl0bGVzLXNpemUgaW4gJHRpdGxlLXBhbGV0dGUge1xuICAgICAgICBAaWYgJG1lZGlhID09bW9iaWxlIHtcblxuICAgICAgICAgICAgQGVhY2ggJHRpdGxlLFxuICAgICAgICAgICAgJHNpemUgaW4gJHRpdGxlcy1zaXplIHtcblxuICAgICAgICAgICAgICAgICN7JHRpdGxlfSxcbiAgICAgICAgICAgICAgICAuI3skdGl0bGV9IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkc2l6ZSArIHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCN7JHN5bWJvbH0jeyRtZWRpYX0pIHtcblxuICAgICAgICAgICAgICAgIEBlYWNoICR0aXRsZSxcbiAgICAgICAgICAgICAgICAkc2l6ZSBpbiAkdGl0bGVzLXNpemUge1xuXG4gICAgICAgICAgICAgICAgICAgICN7JHRpdGxlfSxcbiAgICAgICAgICAgICAgICAgICAgLiN7JHRpdGxlfSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRzaXplICsgcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vXG4vLyBAZnVuY3Rpb25zXG4vL1xuXG4vLyBDT05WRVJUIFRPIFJFTVxuQGZ1bmN0aW9uIGNvbnZlcnQtdG8tcmVtKCR2YWx1ZSwgJGJhc2UtdmFsdWU6ICRyZW0tYmFzZSkge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZS12YWx1ZSkgKiAxcmVtO1xuXG4gICAgQGlmICgkdmFsdWUgPT0wcmVtKSB7XG4gICAgICAgICR2YWx1ZTogMDtcbiAgICB9XG5cbiAgICAvLyBUdXJuIDByZW0gaW50byAwXG4gICAgQHJldHVybiAkdmFsdWU7XG59XG5cbi8vIFJFTSBDQUxDXG5cbi8vIE5ldyBTeW50YXgsIGFsbG93cyB0byBvcHRpb25hbGx5IGNhbGN1bGF0ZSBvbiBhIGRpZmZlcmVudCBiYXNlIHZhbHVlIHRvIGNvdW50ZXIgY29tcG91bmRpbmcgZWZmZWN0IG9mIHJlbSdzLlxuLy8gQ2FsbCB3aXRoIDEsIDIsIDMgb3IgNCBwYXJhbWV0ZXJzLCAncHgnIGlzIG5vdCByZXF1aXJlZCBidXQgc3VwcG9ydGVkOlxuLy9cbi8vICAgcmVtLWNhbGMoMTAgMjAgMzBweCA0MCk7XG4vL1xuLy8gU3BhY2UgZGVsaW1pdGVkLCBpZiB5b3Ugd2FudCB0byBkZWxpbWl0IHVzaW5nIGNvbW1hJ3MsIHdyYXAgaXQgaW4gYW5vdGhlciBwYWlyIG9mIGJyYWNrZXRzXG4vL1xuLy8gICByZW0tY2FsYygoMTAsIDIwLCAzMCwgNDBweCkpO1xuLy9cbi8vIE9wdGlvbmFsbHkgY2FsbCB3aXRoIGEgZGlmZmVyZW50IGJhc2UgKGVnOiA4cHgpIHRvIGNhbGN1bGF0ZSByZW0uXG4vL1xuLy8gICByZW0tY2FsYygxNnB4IDMycHggNDhweCwgOHB4KTtcbi8vXG4vLyBJZiB5b3UgcmVxdWlyZSB0byBjb21tYSBzZXBhcmF0ZSB5b3VyIGxpc3Rcbi8vXG4vLyAgIHJlbS1jYWxjKCgxNnB4LCAzMnB4LCA0OCksIDhweCk7XG5cbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZS12YWx1ZTogJHJlbS1iYXNlKSB7XG4gICAgJG1heDogbGVuZ3RoKCR2YWx1ZXMpO1xuXG4gICAgQGlmICRtYXggPT0xIHtcbiAgICAgICAgQHJldHVybiBjb252ZXJ0LXRvLXJlbShudGgoJHZhbHVlcywgMSksICRiYXNlLXZhbHVlKTtcbiAgICB9XG5cbiAgICAkcmVtVmFsdWVzOiAoXG4gICAgKTtcblxuQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbWF4IHtcbiAgICAkcmVtVmFsdWVzOiBhcHBlbmQoJHJlbVZhbHVlcywgY29udmVydC10by1yZW0obnRoKCR2YWx1ZXMsICRpKSwgJGJhc2UtdmFsdWUpKTtcbn1cblxuQHJldHVybiAkcmVtVmFsdWVzO1xufVxuXG5AZnVuY3Rpb24gZW0tY2FsYygkdmFsdWVzLCAkYmFzZS12YWx1ZTogJHJlbS1iYXNlKSB7XG4gICAgJHJlbVZhbHVlczogcmVtLWNhbGMoJHZhbHVlcywgJGJhc2UtdmFsdWU6ICRyZW0tYmFzZSk7XG5cbiAgICAkbWF4OiBsZW5ndGgoJHJlbVZhbHVlcyk7XG5cbiAgICBAaWYgJG1heCA9PTEge1xuICAgICAgICBAcmV0dXJuIHN0cmlwLXVuaXQobnRoKCRyZW1WYWx1ZXMsIDEpKSAqIDFlbTtcbiAgICB9XG5cbiAgICAkZW1WYWx1ZXM6IChcbiAgICApO1xuXG5AZm9yICRpIGZyb20gMSB0aHJvdWdoICRtYXgge1xuICAgICRlbVZhbHVlczogYXBwZW5kKCRlbVZhbHVlcywgc3RyaXAtdW5pdChudGgoJHJlbVZhbHVlcywgJGkpKSAqIDFlbSk7XG59XG5cbkByZXR1cm4gJGVtVmFsdWVzO1xufSIsIi8vIFR5cG9ncmFwaHlcbkB1c2UgJy4uL2Fic3RyYWN0cy8nIGFzICo7XG5cbkBpbmNsdWRlIHRpdGxlLXNpemUoJ+KJpScpO1xuXG5oMSxcbi5oMSxcbmgyLFxuLmgyLFxuaDMsXG4uaDMsXG5oNCxcbi5oNCxcbmg1LFxuLmg1LFxuaDYsXG4uaDYsXG4uaCB7XG4gICAgZm9udC1mYW1pbHk6ICRoZWFkaW5ncy1mb250LWZhbWlseTtcbiAgICBjb2xvcjogJGhlYWRpbmdzLWNvbG9yO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbjogMCAwIDEwcHg7XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgn4omldGFibGV0Jykge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cbn1cblxuaDEge1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRsaW5lLWhlaWdodDogY2FsYyg0OCAvIDQwKTtcbn1cblxuaDIge1xuXHRjb2xvcjogJGdyZWVuO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRsaW5lLWhlaWdodDogY2FsYyg0OCAvIDQwKTtcbn1cblxucCB7XG4gICAgbWFyZ2luOiAwIDAgMjBweDtcbn1cblxuYSB7XG4gICAgY29sb3I6ICRiYXNlLWxpbmstY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkdGV4dC1kZWNvcmF0aW9uO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6ICRiYXNlLWxpbmstaG92ZXItY29sb3I7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJHRleHQtZGVjb3JhdGlvbi1ob3ZlcjtcbiAgICB9XG59XG5cbmFbaHJlZio9XCJtYWlsdG86XCJdIHtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59IiwiQHVzZSAnLi4vYWJzdHJhY3RzLycgYXMgKjtcblxuLy8gZm9ybXNcbmZvcm0sXG5maWVsZHNldCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG5pbnB1dFt0eXBlPSd0ZXh0J10sXG5pbnB1dFt0eXBlPSd0ZWwnXSxcbmlucHV0W3R5cGU9J2VtYWlsJ10sXG5pbnB1dFt0eXBlPSdzZWFyY2gnXSxcbmlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sXG5pbnB1dFt0eXBlPSd1cmwnXSxcbi8vIGlucHV0W3R5cGU9J2RhdGUnXSxcbnRleHRhcmVhIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwO1xuICAgIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xuICAgIGZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICAgIGZvbnQtZmFtaWx5OiAkaW5wdXQtZm9udC1mYW1pbHk7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogJGlucHV0LWJvcmRlci1yYWRpdXM7XG5cbiAgICAmOm5vdCh0ZXh0YXJlYSkge1xuICAgICAgICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvcjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiAkcGxhY2Vob2xkZXItY29sb3I7XG4gICAgfVxufVxuXG5pbnB1dFt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vLyBpbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbi8vICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4vLyB9XG5cbnRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbmJ1dHRvbixcbmlucHV0W3R5cGU9J2J1dHRvbiddLFxuaW5wdXRbdHlwZT0ncmVzZXQnXSxcbmlucHV0W3R5cGU9J2ZpbGUnXSxcbmlucHV0W3R5cGU9J3N1Ym1pdCddIHtcbiAgICBAaW5jbHVkZSBhbmltYXRlKGJhY2tncm91bmQpO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7XG4gICAgaGVpZ2h0OiAkc3VibWl0LWhlaWdodDtcbiAgICBwYWRkaW5nOiAkc3VibWl0LXBhZGRpbmc7XG4gICAgZm9udC1zaXplOiAkc3VibWl0LWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJHN1Ym1pdC1saW5lLWhlaWdodDtcbiAgICBjb2xvcjogJHN1Ym1pdC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kOiAkc3VibWl0LWJhY2tncm91bmQ7XG5cbiAgICBib3JkZXI6IHtcbiAgICAgICAgd2lkdGg6ICRzdWJtaXQtYm9yZGVyLXdpZHRoO1xuICAgICAgICBzdHlsZTogJHN1Ym1pdC1ib3JkZXItc3R5bGU7XG4gICAgICAgIGNvbG9yOiAkc3VibWl0LWJvcmRlci1jb2xvcjtcbiAgICAgICAgcmFkaXVzOiAkc3VibWl0LXJhZGl1cztcbiAgICB9XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsICRhbmltYXRpb24tc3BlZWQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHN1Ym1pdC1ob3Zlci1iYWNrZ3JvdW5kO1xuICAgICAgICBjb2xvcjogJHN1Ym1pdC1ob3Zlci1jb2xvcjtcbiAgICB9XG59IiwiQHVzZSAnLi4vYWJzdHJhY3RzLycgYXMgKjtcblxubm9zY3JpcHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAkbGlnaHQ7XG4gICAgYmFja2dyb3VuZDogJHByaW1hcnk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHotaW5kZXg6IDk5OTk5O1xufVxuXG4uYWNjZXNzaWJpbGl0eSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IC0yMDB2dztcbiAgICB0b3A6IGF1dG87XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxufVxuXG4udmlzdWFsbHktaGlkZGVuIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogLTk5OTlweDtcbiAgICB0b3A6IGF1dG87XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufSIsIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHN0eWxlcyByZWxhdGVkIHRvIHRoZSBoZWFkZXIgb2YgdGhlIHNpdGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AdXNlICcuLi9hYnN0cmFjdHMvJyBhcyAqO1xuXG5baWQ9XCJoZWFkZXJcIl0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAxNXB4IDA7XG5cdGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAkZ3JlZW47XG4gICAgei1pbmRleDogMjtcblx0Zm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG5cblx0QGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcblx0XHQgcGFkZGluZzogMzBweCAwO1xuXHR9XG5cblx0LmlubmVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdH1cbn1cblxuLmxvZ28ge1xuICAgIHdpZHRoOiAxODBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cblx0QGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcblx0XHR3aWR0aDogMjM3cHg7XG5cdH1cblxuXHRpbWcge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbiNuYXYge1xuXHRtYXgtd2lkdGg6IDExMDBweDtcblx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdHRyYW5zaXRpb246IC40cyBhbGw7XG5cdG1hcmdpbi1yaWdodDogLTIwcHg7XG5cblx0QGluY2x1ZGUgbWVkaWEoJzxkZXNrdG9wJykge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IGNhbGMoMTAwJSArIDNweCApO1xuXHRcdHdpZHRoOiAxMDB2dztcblx0XHRsZWZ0OiAwO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRibGFjaztcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdGhlaWdodDogY2FsYyggMTAwdmggLSA5M3B4KTtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNzApO1xuXHR9XG5cblx0JjphZnRlciB7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJzxkZXNrdG9wJykge1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRoZWlnaHQ6IDEwMHZoO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0XHR6LWluZGV4OiAtMTtcblx0XHR9XG5cdH1cblxuXHQubmF2LWFjdGl2ZSAmIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHBvaW50ZXItZXZlbnRzOiBhbGw7XG5cdH1cblxuXHQ+IHVsIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0cGFkZGluZzogNTBweCAxNXB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRcdH1cblxuXHRcdD4gbGkge1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0cGFkZGluZzogNXB4IDA7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRcdHBhZGRpbmc6IDE1cHggMDtcblx0XHRcdH1cblxuXHRcdFx0Jjpob3Zlcixcblx0XHRcdCYuaG92ZXIge1xuXHRcdFx0XHQ+IC5kcm9wZG93biB7XG5cdFx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdFx0XHRwb2ludGVyLWV2ZW50czogYWxsO1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdD4gYSB7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0cGFkZGluZzogMTBweCAyMHB4O1xuXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRcdFx0cGFkZGluZzogMjJweCAyMHB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0YSB7XG5cdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdHRyYW5zaXRpb246IC40cyBhbGw7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5kcm9wZG93biB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDA7XG5cdFx0b3BhY2l0eTogMDtcblx0XHR3aWR0aDogMjU1cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzYzODgyNTtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0cGFkZGluZzogOHB4IDIwcHg7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdHRyYW5zaXRpb246IC40cyBhbGw7XG5cdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgnPGRlc2t0b3AnKSB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHR3aWR0aDogMTAwdnc7XG5cdFx0XHRsZWZ0OiAtMTVweDtcbiAgICAgICAgXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHR6LWluZGV4OiAxO1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdFxuXHRcdHVsIHtcblx0XHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0XG5cdFx0YSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdHBhZGRpbmc6IDZweCAwO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Y29sb3I6ICNiY2RhODk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi5uYXYtb3BlbmVyIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR3aWR0aDogMzVweDtcblx0aGVpZ2h0OiAyNXB4O1xuXHRtYXJnaW4tbGVmdDogMTVweDtcblx0cGFkZGluZzogMDtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdHotaW5kZXg6IDk5OTk7XG5cdGJvcmRlcjogMDtcblx0Ym94LXNoYWRvdzogbm9uZTtcblx0Ym9yZGVyLXJhZGl1czogMDtcblx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cblx0QGluY2x1ZGUgbWVkaWEoXCI+PWRlc2t0b3BcIikge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQmOmhvdmVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0fVxuXG5cdCY6YmVmb3JlLFxuXHQmOmFmdGVyIHtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdHRyYW5zaXRpb246IDAuM3MgdHJhbnNmb3JtO1xuXHR9XG5cblx0JjpiZWZvcmUsXG5cdCY6YWZ0ZXIsXG5cdHNwYW4ge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRoZWlnaHQ6IDJweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW47XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0fVxuXG5cdCY6YmVmb3JlIHtcblx0XHR0b3A6IDA7XG5cdH1cblxuXHQmOmFmdGVyIHtcblx0XHRib3R0b206IDA7XG5cdH1cblxuXHRzcGFuIHtcblx0XHR0b3A6IGNhbGMoNTAlIC0gMXB4KTtcblx0fVxuXG5cdC5uYXYtYWN0aXZlICYge1xuXHRcdHNwYW4ge1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHR9XG5cblx0XHQmOmJlZm9yZSB7XG5cdFx0XHR0b3A6IGNhbGMoNTAlIC0gMXB4KTtcblx0XHRcdHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG5cdFx0fVxuXG5cdFx0JjphZnRlciB7XG5cdFx0XHR0b3A6IGNhbGMoNTAlIC0gMXB4KTtcblxuXHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuXHRcdH1cblx0fVxufSIsIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHN0eWxlcyByZWxhdGVkIHRvIHRoZSBjb21tb24gbGF5b3V0IG9mIHRoZSBzaXRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQHVzZSAnLi4vYWJzdHJhY3RzLycgYXMgKjtcblxuYm9keSB7XG5cdCYubmF2LWFjdGl2ZSB7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRoZWlnaHQ6IDEwMHZoO1xuXHR9XG59XG5cbltpZD1cIndyYXBwZXJcIl0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbn1cblxuW2lkPVwibWFpblwiXSB7XG4gICAgZmxleC1ncm93OiAxO1xufVxuXG4uY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGgtY2VudGVyLWNvbnRhaW5lcjtcbiAgICBwYWRkaW5nOiAkcGFkZGluZy1jb250YWluZXI7XG4gICAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5hY2NvcmRpb24ge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgICA+bGkge1xuICAgICAgICBtYXJnaW4tYmxvY2s6IDEwcHg7XG5cbiAgICAgICAgPmEge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmpzLWFjYy1oaWRkZW4ge1xuICAgICAgICAvLyBmb3Igd2ViIGFjY2Vzc2liaWxpdHkgOiB2aXNpYmlsaXR5OiBoaWRkZW47IG9yIGRpc3BsYXk6IG5vbmUgKyBrZXlmcmFtZVxuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxufVxuXG4uYnVyZ2VyLWhvbGRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLmJ1cmdlci1kcm9wIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAzMDBweDtcbiAgICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICAvLyBmb3Igd2ViIGFjY2Vzc2liaWxpdHkgOiB2aXNpYmlsaXR5OiBoaWRkZW47IG9yIGRpc3BsYXk6IG5vbmUgKyBrZXlmcmFtZVxuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgICYuYnVyZ2VyLWFjdGl2ZSB7XG4gICAgICAgIC5idXJnZXItZHJvcCB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cbi5wb3B1cC1ob2xkZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5wb3B1cCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogMzAwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDtcbiAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgLy8gZm9yIHdlYiBhY2Nlc3NpYmlsaXR5IDogdmlzaWJpbGl0eTogaGlkZGVuOyBvciBkaXNwbGF5OiBub25lICsga2V5ZnJhbWVcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAmLnBvcHVwLWFjdGl2ZSB7XG4gICAgICAgIC5wb3B1cCB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cbi5vcGVuLWNsb3NlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAuc2xpZGUge1xuICAgICAgICB3aWR0aDogMzAwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDtcbiAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICB9XG5cbiAgICAuanMtc2xpZGUtaGlkZGVuIHtcbiAgICAgICAgLy8gZm9yIHdlYiBhY2Nlc3NpYmlsaXR5IDogdmlzaWJpbGl0eTogaGlkZGVuOyBvciBkaXNwbGF5OiBub25lICsga2V5ZnJhbWVcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbn1cblxuXG4ubGluZS1ib3gge1xuICAgIHdpZHRoOiA2MDBweDtcblxuICAgIC5tYXNrIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAubGluZSB7XG4gICAgICAgIHdpZHRoOiA5OTk5OXB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgID4qIHtcbiAgICAgICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cblxuXG4vKiFcbiAqIHRhYmJ5anMgdjEyLjAuM1xuICogTGlnaHR3ZWlnaHQsIGFjY2Vzc2libGUgdmFuaWxsYSBKUyB0b2dnbGUgdGFicy5cbiAqIChjKSAyMDE5IENocmlzIEZlcmRpbmFuZGlcbiAqIE1JVCBMaWNlbnNlXG4gKiBodHRwOi8vZ2l0aHViLmNvbS9jZmVyZGluYW5kaS90YWJieVxuICovXG5cbi8qKlxuICogVGhlIHRhYmxpc3RcbiAqL1xuW3JvbGU9XCJ0YWJsaXN0XCJdIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG5bcm9sZT1cInRhYmxpc3RcIl0gKiB7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4vKipcbiAqIFRoZSB0YWJsaXN0IGl0ZW1cbiAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDMwZW0pIHtcbiAgW3JvbGU9XCJ0YWJsaXN0XCJdIGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgdGFic1xuICovXG5bcm9sZT1cInRhYlwiXSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItdG9wLWNvbG9yOiBsaWdodGdyYXk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbSAxZW07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgLyoqXG4gICAgICogQWN0aXZlIHRhYiBzdHlsaW5nXG4gICAgICovXG4gIC8qKlxuICAgICAqIFRhYnMgb24gaG92ZXJcbiAgICAgKi9cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDMwZW0pIHtcbiAgW3JvbGU9XCJ0YWJcIl0ge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuNWVtO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjVlbTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgfVxufVxuXG5bcm9sZT1cInRhYlwiXVthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSB7XG4gIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JheTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDMwZW0pIHtcbiAgW3JvbGU9XCJ0YWJcIl1bYXJpYS1zZWxlY3RlZD1cInRydWVcIl0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmZmZmO1xuICB9XG59XG5cbltyb2xlPVwidGFiXCJdOmhvdmVyOm5vdChbYXJpYS1zZWxlY3RlZD1cInRydWVcIl0pIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDMwZW0pIHtcbiAgW3JvbGU9XCJ0YWJcIl06aG92ZXI6bm90KFthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSkge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcbiAgfVxufVxuXG4vKipcbiAqIFtoaWRkZW5dIGZhbGxiYWNrIGZvciBJRTEwIGFuZCBsb3dlclxuICovXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59IiwiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoaXMgZmlsZSBjb250YWlucyBhbGwgc3R5bGVzIHJlbGF0ZWQgdG8gdGhlIGZvb3RlciBvZiB0aGUgc2l0ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkB1c2UgXCIuLi9hYnN0cmFjdHMvXCIgYXMgKjtcblxuW2lkPVwiZm9vdGVyXCJdIHtcblx0cGFkZGluZzogNDBweCAwO1xuXHRiYWNrZ3JvdW5kOiAkYmFzZS1iYWNrZ3JvdW5kLWZvb3Rlcjtcblx0Zm9udC1zaXplOiAxNHB4O1xuXHRsaW5lLWhlaWdodDogY2FsYygxNyAvIDE0KTtcblx0Zm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG5cdGNvbG9yOiAjOWE5YTlhO1xuXG5cdC5jb250YWluZXIge1xuXHRcdG1heC13aWR0aDogMTE1MHB4O1xuXHR9XG5cblx0LmlubmVyIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRAaW5jbHVkZSBtZWRpYShcIj49ZGVza3RvcFwiKSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHR9XG5cdH1cblxuXHQuY29weXJpZ2h0IHtcblx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFxuXHRcdHAge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHR9XG5cdH1cblxuXHQuZm9vdGVyLW5hdiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiAxM3B4O1xuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0cGFkZGluZzogMDtcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cblx0XHRAaW5jbHVkZSBtZWRpYShcIjxkZXNrdG9wXCIpIHtcblx0XHRcdG1hcmdpbi10b3A6IDIwcHg7XG5cdFx0fVxuXG5cdFx0YSB7XG5cdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdHRyYW5zaXRpb246IDAuNHMgYWxsO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Y29sb3I6ICRncmVlbjtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHN0eWxlcyByZWxhdGVkIHRvIHRoZSBidXR0b24gY29tcG9uZW50LlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkB1c2UgJy4uL2Fic3RyYWN0cy8nIGFzICo7XG5cbi5idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAkYnRuLXBhZGRpbmc7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogJGJ0bi1saW5lLWhlaWdodDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIHRyYW5zaXRpb246IGFsbCAkYW5pbWF0aW9uLXNwZWVkO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRmb250LXdlaWdodDogNTAwO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHQgZm9udC1zaXplOiAkYnRuLWZvbnQtc2l6ZTtcblx0fVxuXG4gICAgYm9yZGVyOiB7XG4gICAgICAgIHN0eWxlOiBzb2xpZDtcbiAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB3aWR0aDogJGJ0bi1ib3JkZXItd2lkdGg7XG4gICAgICAgIHJhZGl1czogJGJ0bi1ib3JkZXItcmFkaXVzO1xuICAgIH1cblxuICAgICYtZGVmYXVsdCB7XG4gICAgICAgIGNvbG9yOiAkYnRuLWNvbG9yLWRlZmF1bHQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICRidG4tYmFja2dyb3VuZC1kZWZhdWx0O1xuICAgICAgICBib3JkZXItY29sb3I6ICRidG4tYm9yZGVyLWNvbG9yLWRlZmF1bHQ7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogJGJ0bi1ob3Zlci1jb2xvci1kZWZhdWx0O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGJ0bi1ob3Zlci1iYWNrZ3JvdW5kLWRlZmF1bHQ7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRidG4taG92ZXItYm9yZGVyLWNvbG9yLWRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLXByaW1hcnkge1xuICAgICAgICBjb2xvcjogJGJ0bi1jb2xvci1wcmltYXJ5O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYnRuLWJhY2tncm91bmQtcHJpbWFyeTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYnRuLWJvcmRlci1jb2xvci1wcmltYXJ5O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6ICRidG4taG92ZXItY29sb3ItcHJpbWFyeTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRidG4taG92ZXItYmFja2dyb3VuZC1wcmltYXJ5O1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYnRuLWhvdmVyLWJvcmRlci1jb2xvci1wcmltYXJ5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi1zdWNjZXNzIHtcbiAgICAgICAgY29sb3I6ICRidG4tY29sb3Itc3VjY2VzcztcbiAgICAgICAgYmFja2dyb3VuZDogJGJ0bi1iYWNrZ3JvdW5kLXN1Y2Nlc3M7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGJ0bi1ib3JkZXItY29sb3Itc3VjY2VzcztcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYnRuLWhvdmVyLWNvbG9yLXN1Y2Nlc3M7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYnRuLWhvdmVyLWJhY2tncm91bmQtc3VjY2VzcztcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGJ0bi1ob3Zlci1ib3JkZXItY29sb3Itc3VjY2VzcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtc2Vjb25kYXJ5IHtcbiAgICAgICAgY29sb3I6ICRidG4tY29sb3Itc2Vjb25kYXJ5O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYnRuLWJhY2tncm91bmQtc2Vjb25kYXJ5O1xuICAgICAgICBib3JkZXItY29sb3I6ICRidG4tYm9yZGVyLWNvbG9yLXNlY29uZGFyeTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYnRuLWhvdmVyLWNvbG9yLXNlY29uZGFyeTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRidG4taG92ZXItYmFja2dyb3VuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRidG4taG92ZXItYm9yZGVyLWNvbG9yLXNlY29uZGFyeTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtc20ge1xuICAgICAgICBwYWRkaW5nOiAkYnRuLXBhZGRpbmctc207XG4gICAgICAgIGZvbnQtc2l6ZTogJGJ0bi1mb250LXNpemUtc207XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkYnRuLWxpbmUtaGVpZ2h0LXNtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkYnRuLWJvcmRlci1yYWRpdXMtc207XG4gICAgfVxuXG4gICAgJi1sZyB7XG4gICAgICAgIHBhZGRpbmc6ICRidG4tcGFkZGluZy1sZztcbiAgICAgICAgZm9udC1zaXplOiAkYnRuLWZvbnQtc2l6ZS1sZztcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRidG4tbGluZS1oZWlnaHQtbGc7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRidG4tYm9yZGVyLXJhZGl1cy1sZztcbiAgICB9XG59XG5cbi5idG4tZ3JvdXAge1xuICAgIG1hcmdpbjogMCAtNXB4IC0xMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgLmJ0biB7XG4gICAgICAgIG1hcmdpbjogMCA1cHggMTBweDtcbiAgICB9XG59XG5cbi5idG4taG9sZGVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRnYXA6IDIycHg7XG59IiwiQHVzZSBcIi4uL2Fic3RyYWN0cy9cIiBhcyAqO1xuXG4uaGVhZGluZyB7XG5cdGxpbmUtaGVpZ2h0OiBjYWxjKDMwIC8gMTgpO1xuXHRtYXJnaW4tYm90dG9tOiA0MHB4O1xuXHRcblx0QGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcblx0XHRmb250LXNpemU6IDE4cHg7XG5cdH1cblxuXHQmLnRleHQtY2VudGVyIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHRoMiB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0fVxuXG5cdGg0IHtcblx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRmb250LXNpemU6IDI0cHg7XG5cdFx0fVxuXHR9XG5cblx0cCB7XG5cdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0fVxuXG5cdC5idG4taG9sZGVyIHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRtYXJnaW4tdG9wOiAyMHB4O1xuXHRcdFxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRtYXJnaW4tdG9wOiAzN3B4O1xuXHRcdH1cblx0fVxufSIsIkB1c2UgXCIuLi9hYnN0cmFjdHMvXCIgYXMgKjtcblxuLnNlY3Rpb24taGVybyB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0cGFkZGluZzogNzBweCAwO1xuXHR6LWluZGV4OiAxO1xuXG5cdEBpbmNsdWRlIG1lZGlhKFwiPj10YWJsZXRcIikge1xuXHRcdHBhZGRpbmc6IDEwNXB4IDAgMTMwcHg7XG5cdH1cblxuXHQuY29udGFpbmVyIHtcblx0XHRAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xuXHRcdCAgICBwYWRkaW5nOiAwIDU4cHg7XG5cdFx0fVxuXHR9XG5cblx0Lmhlcm8tLWltZyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGluc2V0OiAwO1xuXHRcdHotaW5kZXg6IC0xO1xuXG5cdFx0aW1nIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdG9iamVjdC1maXQ6IGNvdmVyO1xuXHRcdFx0b2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG5cdFx0fVxuXHR9XG5cblx0Lmhlcm8tLWNvcHkge1xuXHRcdG1heC13aWR0aDogODgwcHg7XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRsaW5lLWhlaWdodDogY2FsYygyNCAvIDIwKTtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI+PXRhYmxldFwiKSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMzNweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIkB1c2UgXCIuLi9hYnN0cmFjdHMvXCIgYXMgKjtcblxuLnNlY3Rpb24tdHdvLWNvbCB7XG5cdHBhZGRpbmc6IDQwcHggMDtcblx0Zm9udC1zaXplOiAxNXB4O1xuXHRsaW5lLWhlaWdodDogY2FsYygyMCAvIDE1KTtcblxuXHRAaW5jbHVkZSBtZWRpYSgnPj1waG9uZScpIHtcblx0XHRwYWRkaW5nOiA3MHB4IDA7XG5cdH1cblxuXHQmLnRvcC1ib3JkZXIge1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JlZW47XG5cdH1cblxuXHQuaGVhZGluZyB7XG5cdFx0Zm9udC1zaXplOiAxN3B4O1xuXHRcdGxpbmUtaGVpZ2h0OiBjYWxjKDI1IC8gMTcpO1xuXG5cdFx0KyBwIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTdweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblx0XHRncmlkLWdhcDogNDBweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcblx0XHRcdGdyaWQtZ2FwOiA4MHB4O1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDAuOGZyIDEuMWZyO1xuXHRcdH1cblx0fVxuXG5cdHVsIHtcblx0XHRwYWRkaW5nLWxlZnQ6IDIzcHg7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKFwiPj1kZXNrdG9wXCIpIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDYwcHg7XG5cdFx0fVxuXG5cdFx0bGkge1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAxNnB4O1xuXG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHR3aWR0aDogM3B4O1xuXHRcdFx0XHRoZWlnaHQ6IDNweDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRcdHRvcDogLjVlbTtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5jb3B5LWltZy1ob2xkZXIge1xuXHRcdFxuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49NDIwcHgnKSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0Z2FwOiAyMHB4O1xuXHRcdH1cblxuXHRcdC5pbWcge1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDE4cHg7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYSgnPj00MjBweCcpIHtcblx0XHRcdFx0bWF4LXdpZHRoOiAyMDBweDtcblx0XHRcdH1cblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoJz49cGhvbmUnKSB7XG5cdFx0XHRcdG1heC13aWR0aDogMjc4cHg7XG5cdFx0XHR9XG5cblx0XHRcdGltZyB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5ibG9jay1jb3B5IHtcblx0XHRoNSB7XG5cdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IGNhbGMoMjAgLyAxOCk7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdH1cblx0fVxufVxuIiwiQHVzZSBcIi4uL2Fic3RyYWN0cy9cIiBhcyAqO1xuXG4uc2VjdGlvbi10aHJlZS1jb2wge1xuXHRwYWRkaW5nOiA1OHB4IDA7XG5cblx0LmhlYWRpbmcge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDUzcHg7XG5cdFx0fVxuXHR9XG5cblx0LmdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMSwgMWZyKTtcblx0XHRnYXA6IDE1cHg7XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuXHRcdH1cblx0fVxufVxuXG4uY2FyZCB7XG5cdCYtLWljb24ge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRtYXJnaW4tYm90dG9tOiAzM3B4O1xuXHR9XG5cblx0aDUge1xuXHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogJGdyZWVuO1xuXHR9XG5cblx0dWwge1xuXG5cdH1cblxuXHR1bCB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRsaW5lLWhlaWdodDogY2FsYygyMCAvIDE1KTtcblx0XHRtYXgtd2lkdGg6IDI4NXB4O1xuXHRcdG1hcmdpbjogMCBhdXRvIDA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblxuXHRcdGxpIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdHBhZGRpbmctbGVmdDogMTZweDtcblxuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRjb250ZW50OiAnJztcblx0XHRcdFx0d2lkdGg6IDNweDtcblx0XHRcdFx0aGVpZ2h0OiAzcHg7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0XHR0b3A6IC41ZW07XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0bGVmdDogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0iLCJAdXNlIFwiLi4vYWJzdHJhY3RzL1wiIGFzICo7XG5cbi5zZWN0aW9uLXRleHQtYm94IHtcblx0cGFkZGluZzogNDBweCAwO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRwYWRkaW5nOiA5N3B4IDA7XG5cdH1cblxuXHQuaGVhZGluZyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogNDBweDtcblx0fVxuXG5cdC5ncmlkIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcik7XG5cdFx0Z2FwOiAxOHB4O1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcblx0XHR9XG5cdH1cblxuXHQudGV4dC1ib3gge1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICMzOTM5Mzk7XG5cdFx0cGFkZGluZzogMjBweCAxMHB4IDI1cHggMTBweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Ym9yZGVyLXJhZGl1czogMThweDtcblx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0bGluZS1oZWlnaHQ6IGNhbGMoMjQgLyAxOCk7XG5cblx0XHRwIHtcblx0XHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aDUge1x0XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMTtcblx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRcdFx0Zm9udC1zaXplOiAyMnB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiQHVzZSBcIi4uL2Fic3RyYWN0cy9cIiBhcyAqO1xuXG4uc2VjdGlvbi1kZXNjciB7XG5cdHBhZGRpbmc6IDQwcHggMDtcblxuXHRAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG5cdFx0cGFkZGluZzogNzBweCAwO1xuXG5cdH1cblxuXHQuaGVhZGluZyB7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDY2cHg7XG5cdFx0fVxuXHR9XG5cblx0LmdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMSwgMWZyKTtcblx0XHRnYXA6IDE4cHg7XG5cblx0XHRAaW5jbHVkZSBtZWRpYShcIj49dGFibGV0XCIpIHtcblx0XHRcdGdhcDogNTBweDtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG5cdFx0fVxuXHR9XG59XG5cbi5jYXJkLWRlY3Ige1xuXHRoZWFkZXIge1xuXHRcdG1hcmdpbi1ib3R0b206IDE4cHg7XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjRweDtcblx0XHR9XG5cblx0XHRzdHJvbmcge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDE7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdD4gcCB7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNjtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyN3B4O1xuXHRcdH1cblx0fVxuXG5cdHVsIHtcblx0XHRwYWRkaW5nLWxlZnQ6IDIwcHg7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDM3cHg7XG5cdFx0fVxuXG5cdFx0bGkge1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAyNHB4O1xuXG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHR3aWR0aDogNHB4O1xuXHRcdFx0XHRoZWlnaHQ6IDRweDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRcdHRvcDogLjVlbTtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSIsIkB1c2UgXCIuLi9hYnN0cmFjdHMvXCIgYXMgKjtcblxuLnNlY3Rpb24tY29udGFjdCB7XG5cdHBhZGRpbmctYm90dG9tOiA0MHB4O1xuXHRwYWRkaW5nLXRvcDogNDBweDtcblxuXHRAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xuXHRcdHBhZGRpbmctYm90dG9tOiAxNzNweDtcblx0XHRwYWRkaW5nLXRvcDogOTBweDtcblx0fVxuXG5cdC5oZWFkaW5nIHtcblx0XHRAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNjdweDtcblx0XHR9XG5cdH1cblxuXHQuZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblx0XHRnYXA6IDMwcHg7XG5cblx0XHRAaW5jbHVkZSBtZWRpYShcIj49ZGVza3RvcFwiKSB7XG5cdFx0XHRnYXA6IDE0NXB4O1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMTVweCAxZnI7XG5cdFx0fVxuXHR9XG59XG5cbi5mb3JtLWJveCB7XG5cdHAge1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDMwcHg7XG5cdFx0fVxuXHR9XG5cblx0XHRmb3JtIHtcblx0XHRidXR0b24ge1xuXHRcdFx0d2lkdGg6IDE2NnB4O1xuXHRcdH1cblx0fVxuXG5cdC5mb3JtLXJvdyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyNnB4O1xuXHRcdH1cblxuXHRcdGxhYmVsIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bGluZS1oZWlnaHQ6IGNhbGMoMjQgLyAxNSk7XG5cdFx0fVxuXG5cdFx0aW5wdXQge1xuXHRcdFx0aGVpZ2h0OiAyNXB4O1xuXHRcdH1cblxuXHRcdGlucHV0LFxuXHRcdHRleHRhcmVhIHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogIzQ0NDQ0NDtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDE1cHg7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDE7XG5cdFx0fVxuXG5cdFx0dGV4dGFyZWEge1xuXHRcdFx0aGVpZ2h0OiAxMTdweDtcblx0XHRcdHJlc2l6ZTogbm9uZTtcblx0XHR9XG5cdH1cbn1cblxuLmNvbnRhY3QtYm94IHtcblx0aDUge1xuXHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRjb2xvcjogJGdyZWVuO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdH1cblx0fVxuXG5cdCYtLWl0ZW0ge1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyNnB4O1xuXHRcdH1cblxuXHRcdHN0cm9uZyB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDRweDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDRweDtcblx0XHR9XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0dHJhbnNpdGlvbjogMC40cyBhbGw7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl0sImZpbGUiOiJzdHlsZS5jc3MifQ== */
