/*! 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 20px;
}

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: #3e3c39;
  background: #fff;
  font: 16px/1.2 "mestiza", "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: 20px;
    line-height: 1.2;
  }
}

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, dl:after {
  content: "";
  display: block;
  clear: both;
}

.ellipsis {
  white-space: nowrap;
  /* 1 */
  text-overflow: ellipsis;
  /* 2 */
  overflow: hidden;
}

.df-row {
  display: flex;
  flex-wrap: wrap;
  margin: 0 -88px;
}
@media (min-width: 576px) {
  .df-row.df-rr-ph {
    flex-direction: row-reverse;
  }
}
@media (min-width: 576px) {
  .df-row.df-aic-ph {
    align-items: center;
  }
}
@media (min-width: 768px) {
  .df-row.df-rr-sm {
    flex-direction: row-reverse;
  }
}
@media (min-width: 768px) {
  .df-row.df-aic-sm {
    align-items: center;
  }
}
@media (min-width: 1024px) {
  .df-row.df-rr-md {
    flex-direction: row-reverse;
  }
}
@media (min-width: 1024px) {
  .df-row.df-aic-md {
    align-items: center;
  }
}
@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 88px;
}

@font-face {
  font-family: "mestiza";
  src: url("../fonts/mestiza_sans_regular-webfont.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
}
h1,
.h1 {
  font-size: 20px;
}

h2,
.h2 {
  font-size: 16px;
}

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: 40px;
  }
  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: 30px;
  }
  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: 30px;
  }
  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: "mestiza", "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;
  }
}

h2 {
  font-size: calc(1.3rem + 0.6vw);
  position: relative;
  color: #164a85;
  font-weight: 300;
  padding-bottom: 25px;
  margin-bottom: 50px;
  z-index: 1;
}
@media (min-width: 1200px) {
  h2 {
    font-size: 1.75rem;
  }
}
@media (min-width: 768px) {
  h2 {
    font-size: calc(1.34375rem + 1.125vw);
  }
}
@media (min-width: 768px) and (min-width: 1200px) {
  h2 {
    font-size: 2.1875rem;
  }
}
@media (min-width: 1200px) {
  h2 {
    padding-bottom: 35px;
    margin-bottom: 70px;
  }
}
h2:after {
  content: "";
  position: absolute;
  bottom: 0;
  left: -6.2%;
  height: 2px;
  width: 200px;
  background-color: #64ccea;
}

h6 {
  font-weight: 500;
}

p {
  margin: 0 0 20px;
  font-weight: 300;
}

a {
  color: #2b9ebf;
  text-decoration: none;
  transition: 0.4s all;
}
a:hover, a:focus {
  color: #164a85;
  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: 16px;
  line-height: 18px;
  font-family: "mestiza", "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: 40px;
}
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: 40px;
  padding: 10px 20px;
  font-size: 16px;
  line-height: 17px;
  color: #fff;
  background: #000;
  border-width: 1px;
  border-style: solid;
  border-color: #000;
  border-radius: 5px;
  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: #2b9ebf;
  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: absolute;
  top: 0;
  left: 0;
  right: 0;
  width: calc(100% - 50px);
  margin: 25px auto 0;
  padding: 25px;
  z-index: 10;
}
@media (min-width: 1200px) {
  [id=header] {
    margin: 80px auto 0;
    width: calc(100% - 160px);
  }
}
@media (min-width: 1024px) {
  [id=header] {
    padding: 50px;
  }
}
[id=header] .container {
  max-width: 100%;
  padding: 0;
}
[id=header]:before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100vh;
  background: linear-gradient(130deg, #fff 11%, transparent 28%);
  pointer-events: none;
}
[id=header] .btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border: 2px solid #50584c;
  color: #fff;
  font-size: 16px;
  height: auto;
  border-radius: 10px;
  padding: 10px;
  line-height: 1;
  text-align: left;
  font-weight: 300;
}
@media (min-width: 576px) {
  [id=header] .btn {
    font-size: 18px;
    padding: 12px 20px;
  }
}
@media (min-width: 768px) {
  [id=header] .btn {
    font-size: 20px;
  }
}
@media (min-width: 1440px) {
  [id=header] .btn {
    padding: 15px 20px;
  }
}
[id=header] .btn span {
  position: relative;
  bottom: -2px;
}
[id=header] .btn:hover {
  background-color: #50584c;
}
[id=header] .btn i {
  color: #64ccea;
  margin-left: 15px;
}
@media (min-width: 576px) {
  [id=header] .btn i {
    margin-left: 50px;
  }
}

.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.logo {
  position: relative;
  width: 110px;
  max-width: 110px;
  margin-right: 20px;
  z-index: 1;
}
@media (min-width: 768px) {
  .logo {
    width: 150px;
    max-width: 150px;
  }
}
@media (min-width: 1440px) {
  .logo {
    width: 222px;
    max-width: 222px;
  }
}

.nav-opener {
  position: relative;
  width: 30px;
  height: 30px;
  font-size: 0;
  line-height: 0;
  float: right;
}
@media (min-width: 768px) {
  .nav-opener {
    display: none;
  }
}
.nav-opener:before, .nav-opener:after,
.nav-opener span {
  transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out;
  background: #000;
  position: absolute;
  top: 50%;
  left: 15%;
  right: 15%;
  height: 3px;
  transform: translateY(-50%);
}
.nav-opener:before, .nav-opener:after {
  content: "";
}
.nav-opener:before {
  transform: translateY(-9px);
}
.nav-opener:after {
  transform: translateY(6px);
}
.nav-opener:hover:before, .nav-opener:hover:after,
.nav-opener:hover span {
  background-color: gray;
}
.nav-active .nav-opener span {
  opacity: 0;
  transform: rotate(45deg);
}
.nav-active .nav-opener:before {
  transform: rotate(45deg) translateY(0);
}
.nav-active .nav-opener:after {
  transform: rotate(-45deg) translateY(0);
}

body {
  background: #edeae7;
}

[id=wrapper] {
  display: flex;
  flex-direction: column;
  width: calc(100% - 50px);
  min-height: 100vh;
  padding-top: 25px;
  margin: 0 auto;
  overflow: hidden;
}
@media (min-width: 1200px) {
  [id=wrapper] {
    width: calc(100% - 160px);
    padding-top: 80px;
  }
}

[id=main] {
  flex-grow: 1;
}

.container {
  width: 100%;
  max-width: 100%;
  padding: 0 20px;
  margin: 0 auto;
}
@media (min-width: 768px) {
  .container {
    padding: 0 60px;
  }
}
@media (min-width: 1600px) {
  .container {
    padding: 0 88px;
  }
}

.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;
}

.page-dots {
  position: fixed;
  background-color: #edeae7;
  border-radius: 0 30px 30px 0;
  z-index: 10;
  font-size: 0;
  left: 0;
  padding: 20px 20px;
  top: 50%;
  transform: translateY(-50%);
}
@media (min-width: 1024px) {
  .page-dots {
    padding: 37px 20px;
  }
}
@media (min-width: 1700px) {
  .page-dots {
    padding: 37px;
  }
}
.page-dots .dot {
  position: relative;
  display: block;
  width: 18px;
  height: 18px;
}
.page-dots .dot:after {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background-color: #c3c1ba;
  transition: 0.4s all;
  border-radius: 50%;
}
.page-dots .dot.anchor-active:after {
  transform: translate(-50%, -50%) scale(1.3);
  background-color: #19469c;
}
.page-dots .dot + .dot {
  margin-top: 10px;
}
@media (min-width: 768px) {
  .page-dots .dot + .dot {
    margin-top: 20px;
  }
}

@media (min-width: 768px) {
  [data-skrollr-effect=parallax] {
    transform: translate3d(0px, var(--y, 0px), 0px);
  }
}

[id=footer] {
  background: transparent;
  text-align: center;
  font-weight: 300;
  font-size: 18px;
  padding: 45px 0;
}
@media (min-width: 768px) {
  [id=footer] {
    font-size: 22px;
  }
}
[id=footer] p {
  margin-bottom: 0;
}

.btn {
  display: inline-block;
  padding: 10px 20px;
  font-size: 15px;
  text-align: center;
  line-height: 17px;
  vertical-align: top;
  transition: all 0.5s;
  border-style: solid;
  border-color: transparent;
  border-width: 1px;
  border-radius: 5px;
}
.btn-default {
  color: #fff;
  background: #000;
  border-color: #000;
}
.btn-default:hover {
  color: #000;
  background: #fff;
  border-color: #000;
}
.btn-primary {
  color: #fff;
  background: #2b9ebf;
  border-color: #2b9ebf;
}
.btn-primary:hover {
  color: #fff;
  background: rgb(33.6282051282, 123.5641025641, 149.3717948718);
  border-color: rgb(33.6282051282, 123.5641025641, 149.3717948718);
}
.btn-secondary {
  color: #fff;
  background: #6c757d;
  border-color: #6c757d;
}
.btn-secondary:hover {
  color: #fff;
  background: rgb(84.3605150215, 91.3905579399, 97.6394849785);
  border-color: #6c757d;
}
.btn-sm {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 14px;
  border-radius: 2.5px;
}
.btn-lg {
  padding: 20px 40px;
  font-size: 18px;
  line-height: 20px;
  border-radius: 10px;
}

.btn-group {
  margin: 0 -5px -10px;
  display: flex;
  flex-wrap: wrap;
}
.btn-group .btn {
  margin: 0 5px 10px;
}

.section-hero {
  position: relative;
  min-height: 60vh;
}
@media (min-width: 768px) {
  .section-hero {
    min-height: 90vh;
  }
}
@media (min-width: 1024px) {
  .section-hero {
    min-height: 94vh;
  }
}
.section-hero .img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  clip-path: polygon(0 0, 100% 0%, 100% 87%, 0% 100%);
  background-color: #64ccea;
}
.section-hero .img img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 95%;
  object-fit: cover;
  object-position: center;
  z-index: 1;
}
.section-hero .img::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(270deg, #242d20, transparent);
}
.section-hero .img::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 200px;
  z-index: 3;
  pointer-events: none;
  background-image: url("../images/hero-decor.png");
  background-position: bottom center;
  background-size: contain;
}
.section-hero .text-block {
  font-size: 1rem;
  position: absolute;
  color: #fff;
  z-index: 4;
  max-width: 225px;
  margin-left: auto;
  right: 25px;
  bottom: 15%;
  padding-bottom: 40px;
}
@media (min-width: 576px) {
  .section-hero .text-block {
    bottom: 24%;
    max-width: 250px;
  }
}
@media (min-width: 768px) {
  .section-hero .text-block {
    font-size: 1.125rem;
    max-width: 300px;
  }
}
@media (min-width: 1024px) {
  .section-hero .text-block {
    max-width: 310px;
    right: 50px;
  }
}
@media (min-width: 1200px) {
  .section-hero .text-block {
    font-size: calc(1.25625rem + 0.075vw);
  }
}
@media (min-width: 1200px) and (min-width: 1200px) {
  .section-hero .text-block {
    font-size: 1.3125rem;
  }
}
@media (min-width: 1440px) {
  .section-hero .text-block {
    font-size: calc(1.26875rem + 0.225vw);
    right: 100px;
    max-width: 350px;
  }
}
@media (min-width: 1440px) and (min-width: 1200px) {
  .section-hero .text-block {
    font-size: 1.4375rem;
  }
}
.section-hero .text-block h1 {
  font-size: calc(1.2625rem + 0.15vw);
  font-weight: 300;
  margin-bottom: 50px;
}
@media (min-width: 1200px) {
  .section-hero .text-block h1 {
    font-size: 1.375rem;
  }
}
@media (min-width: 768px) {
  .section-hero .text-block h1 {
    font-size: calc(1.2875rem + 0.45vw);
  }
}
@media (min-width: 768px) and (min-width: 1200px) {
  .section-hero .text-block h1 {
    font-size: 1.625rem;
  }
}
@media (min-width: 1440px) {
  .section-hero .text-block h1 {
    font-size: calc(1.325rem + 0.9vw);
  }
}
@media (min-width: 1440px) and (min-width: 1200px) {
  .section-hero .text-block h1 {
    font-size: 2rem;
  }
}
.section-hero .text-block p {
  margin-bottom: 0;
  font-weight: 300;
}
.section-hero .line-hail {
  transition: opacity 0.5s ease-in-out;
  position: absolute;
  left: 0;
  top: 100%;
  transform: translateX(-50%);
  width: 2px;
  height: 130px;
  background-color: #64ccea;
  pointer-events: none;
  overflow: hidden;
}
@media (min-width: 768px) {
  .section-hero .line-hail {
    height: 220px;
    top: 114%;
  }
}
.section-hero .line-hail:after {
  background: #19469c;
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 37%;
  animation: 2.5s linear infinite slideLine;
}

@keyframes slideLine {
  0% {
    -webkit-transform: translateY(-300%);
    transform: translateY(-300%);
  }
  50% {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(300%);
    transform: translateY(300%);
  }
}
.section-img-text {
  padding-top: 100px;
  padding-bottom: 100px;
  color: #4b4742;
  font-weight: 300;
}
@media (min-width: 768px) {
  .section-img-text {
    padding-top: 165px;
    padding-bottom: 200px;
  }
}
.section-img-text .img-top {
  text-align: center;
}
.section-img-text .inner {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  margin: 0 -15px;
}
@media (min-width: 768px) {
  .section-img-text .inner {
    flex-wrap: nowrap;
  }
}
@media (min-width: 1500px) {
  .section-img-text .inner {
    margin: 0 -35px;
  }
}
.section-img-text .col-text {
  max-width: 100%;
  flex: 0 0 100%;
  padding: 0 15px;
  line-height: 1.5;
  margin-bottom: 40px;
  margin-top: 40px;
}
@media (min-width: 768px) {
  .section-img-text .col-text {
    max-width: 50%;
    flex: 0 0 50%;
  }
}
@media (min-width: 1500px) {
  .section-img-text .col-text {
    padding: 0 35px;
    max-width: 470px;
    flex: 0 0 470px;
    padding-top: 482px;
    padding: 0 35px 0 35px;
  }
}
.section-img-text .col-text h2::after {
  left: -14.2%;
}
.section-img-text .col-text p {
  margin-bottom: 0;
}
.section-img-text .col-text p + p {
  margin-top: 30px;
}
.section-img-text .col-img {
  padding: 0 15px;
}
@media (min-width: 1500px) {
  .section-img-text .col-img {
    padding: 0 35px;
  }
}
.section-img-text .col-img .img {
  position: relative;
  padding-left: 15px;
  padding-bottom: 15px;
  z-index: 1;
}
@media (min-width: 1024px) {
  .section-img-text .col-img .img {
    padding-left: 50px;
    padding-bottom: 50px;
  }
}
.section-img-text .col-img .img::after {
  content: "";
  position: absolute;
  width: 20%;
  height: 100%;
  left: 0;
  top: 0;
  background-color: #c9c4af;
  z-index: -1;
}

.section-img-two-col {
  position: relative;
  padding: 150px 0;
  color: #fff;
  z-index: 1;
}
@media (min-width: 768px) {
  .section-img-two-col {
    padding: 200px 0;
  }
}
@media (min-width: 1200px) {
  .section-img-two-col {
    padding: 400px 0;
  }
}
.section-img-two-col .bg-decor {
  position: absolute;
  width: 100%;
  height: 260vh;
  top: -30%;
  background: url("../images/bp-copy.png") no-repeat left top/contain;
  z-index: 1;
}
@media (min-width: 1441px) {
  .section-img-two-col .bg-decor {
    height: 200vh;
  }
}
.section-img-two-col h2 {
  position: relative;
  color: #fff;
  z-index: 2;
}
.section-img-two-col .inner {
  position: relative;
  max-width: 760px;
  z-index: 2;
}
@media (min-width: 768px) {
  .section-img-two-col .inner {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 80px;
  }
}
@media (min-width: 1200px) {
  .section-img-two-col .inner {
    gap: 120px;
  }
}
@media (min-width: 768px) {
  .section-img-two-col .inner .text:last-child {
    padding-top: 100px;
  }
}
@media (min-width: 1200px) {
  .section-img-two-col .inner .text:last-child {
    padding-top: 200px;
  }
}
.section-img-two-col .img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  clip-path: polygon(0 10%, 100% 0, 100% 100%, 0 90%);
  background-color: #19469c;
  z-index: -1;
}
.section-img-two-col .img img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 97%;
  object-fit: cover;
  object-position: center;
  z-index: 1;
}
.section-img-two-col .img::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 3;
  pointer-events: none;
  background: linear-gradient(265deg, rgba(0, 0, 0, 0.8), rgba(255, 255, 255, 0));
}
.section-img-two-col .img::before {
  content: "";
  position: absolute;
  bottom: 0;
  right: 0;
  width: 0;
  height: 0;
  border-top: 42px solid transparent;
  border-bottom: 67px solid transparent;
  border-right: 900px solid #19469c;
  z-index: 8;
}

.section-contact-us {
  position: relative;
  color: #fff;
  padding: 0 0 100px;
}
@media (min-width: 1200px) {
  .section-contact-us {
    padding: 50px 0 115px;
  }
}
@media (min-width: 1500px) {
  .section-contact-us {
    padding: 400px 0 115px;
  }
}
.section-contact-us .img {
  position: absolute;
  inset: 0;
  z-index: 1;
}
.section-contact-us .img:after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 3;
  background: url("../images/decor-01.png") no-repeat bottom center/cover;
  pointer-events: none;
  z-index: 1;
}
.section-contact-us .img img {
  position: absolute;
  width: 100%;
  height: 100%;
  inset: 0;
  object-fit: cover;
  object-position: bottom center;
  z-index: 1;
}
.section-contact-us .text {
  position: relative;
  z-index: 2;
  line-height: 1.5;
  padding-top: 250px;
}
@media (min-width: 1200px) {
  .section-contact-us .text {
    font-size: calc(1.2625rem + 0.15vw);
    padding-top: 200px;
  }
}
@media (min-width: 1200px) and (min-width: 1200px) {
  .section-contact-us .text {
    font-size: 1.375rem;
  }
}
.section-contact-us .text address {
  font-style: normal;
}
.section-contact-us .text strong {
  display: block;
}
.section-contact-us .text p {
  margin: 0;
}
.section-contact-us h2 {
  color: inherit;
}
@media (min-width: 1500px) {
  .section-contact-us h2 {
    font-size: calc(1.3875rem + 1.65vw);
  }
}
@media (min-width: 1500px) and (min-width: 1200px) {
  .section-contact-us h2 {
    font-size: 2.625rem;
  }
}

.section-two-col {
  position: relative;
  padding-top: 100px;
  z-index: 2;
}
.section-two-col:after {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  right: 0;
  top: 50%;
  background: linear-gradient(#eeeae7 54%, transparent 58%);
  z-index: -1;
}
@media (min-width: 1024px) {
  .section-two-col:after {
    background: linear-gradient(#eeeae7 52%, transparent 69%);
  }
}
@media (min-width: 576px) {
  .section-two-col .inner {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
  }
}
@media (min-width: 768px) {
  .section-two-col .inner {
    gap: 30px;
  }
}
@media (min-width: 1200px) {
  .section-two-col .inner {
    gap: 85px;
  }
}
.section-two-col .card {
  line-height: 1.5;
  margin-bottom: 50px;
}
@media (min-width: 1200px) {
  .section-two-col .card {
    font-size: calc(1.2625rem + 0.15vw);
  }
}
@media (min-width: 1200px) and (min-width: 1200px) {
  .section-two-col .card {
    font-size: 1.375rem;
  }
}
.section-two-col .card p {
  margin-bottom: 0;
}
.section-two-col .card p + p {
  margin-top: 15px;
}
@media (min-width: 768px) {
  .section-two-col .card p + p {
    margin-top: 20px;
  }
}
.section-two-col .card .img {
  position: relative;
  max-width: 400px;
  padding: 32px 32px 0 0;
  z-index: 1;
}
.section-two-col .card .img:after {
  content: "";
  position: absolute;
  width: 20%;
  height: 85%;
  right: 0;
  top: 0;
  background-color: #c9c4af;
  z-index: -1;
}
.section-two-col .card .img img {
  width: 100%;
}
.section-two-col .card .heading {
  font-size: 1.125rem;
  color: #164a85;
  padding: 18px 0;
}
@media (min-width: 768px) {
  .section-two-col .card .heading {
    font-size: calc(1.26875rem + 0.225vw);
  }
}
@media (min-width: 768px) and (min-width: 1200px) {
  .section-two-col .card .heading {
    font-size: 1.4375rem;
  }
}
@media (min-width: 1200px) {
  .section-two-col .card .heading {
    padding: 40px 0;
  }
}
.section-two-col .card .heading > * {
  color: inherit;
  font-size: inherit;
  margin: 0;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlbmRvcnMvX25vcm1hbGl6ZS5zY3NzIiwiYmFzZS9fYmFzZS5zY3NzIiwiYWJzdHJhY3RzL192YXJpYWJsZXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pbmNsdWRlLW1lZGlhL2Rpc3QvX2luY2x1ZGUtbWVkaWEuc2NzcyIsImJhc2UvX2hlbHBlcnMuc2NzcyIsImFic3RyYWN0cy9fbWl4aW5zLnNjc3MiLCJiYXNlL19mb250cy5zY3NzIiwiYWJzdHJhY3RzL19mdW5jdGlvbnMuc2NzcyIsImJhc2UvX3R5cG9ncmFwaHkuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZnMvc2Nzcy5zY3NzIiwiYmFzZS9fZm9ybXMuc2NzcyIsImJhc2UvX3dlYl9hY2Nlc3NpYmlsaXR5LnNjc3MiLCJsYXlvdXQvX2hlYWRlci5zY3NzIiwibGF5b3V0L19jb21tb24uc2NzcyIsImxheW91dC9fZm9vdGVyLnNjc3MiLCJjb21wb25lbnRzL19idXR0b24uc2NzcyIsImNvbXBvbmVudHMvX3NlY3Rpb24taGVyby5zY3NzIiwiY29tcG9uZW50cy9fc2VjdGlvbi1pbWctdGV4dC5zY3NzIiwiY29tcG9uZW50cy9fc2VjdGlvbi1pbWctdHdvLWNvbC5zY3NzIiwiY29tcG9uZW50cy9fc2VjdGlvbi1jb250YWN0LXVzLnNjc3MiLCJjb21wb25lbnRzL19zZWN0aW9uLXR3by1jb2wuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUVBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0VBQ0k7QUFDQTtFQUNBO0FBQ0E7OztBQUdKO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFJQTtFQUNJOzs7QUFHSjtBQUFBO0FBQUE7QUFJQTtFQUNJOzs7QUFHSjtBQUFBO0FBQUE7QUFBQTtBQUtBO0VBQ0k7RUFDQTs7O0FBR0o7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBS0E7RUFDSTtBQUNBO0VBQ0E7QUFDQTtFQUNBO0FBQ0E7OztBQUdKO0FBQUE7QUFBQTtBQUFBO0FBS0E7RUFDSTtBQUNBO0VBQ0E7QUFDQTs7O0FBR0o7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUlBO0VBQ0k7OztBQUdKO0FBQUE7QUFBQTtBQUFBO0FBS0E7RUFDSTtBQUNBO0VBQ0E7QUFDQTtFQUNBO0FBQ0E7OztBQUdKO0FBQUE7QUFBQTtBQUlBO0FBQUE7RUFFSTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7RUFHSTtBQUNBO0VBQ0E7QUFDQTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0k7OztBQUdKO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFJQTtFQUNJOzs7QUFHSjtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0VBS0k7QUFDQTtFQUNBO0FBQ0E7RUFDQTtBQUNBO0VBQ0E7QUFDQTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBRUk7RUFDQTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBRUk7RUFDQTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7RUFJSTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7RUFJSTtFQUNBOzs7QUFHSjtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtFQUlJOzs7QUFHSjtBQUFBO0FBQUE7QUFJQTtFQUNJOzs7QUFHSjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtFQUNJO0FBQ0E7RUFDQTtBQUNBO0VBQ0E7QUFDQTtFQUNBO0FBQ0E7RUFDQTtBQUNBO0VBQ0E7QUFDQTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0VBRUk7QUFDQTtFQUNBO0FBQ0E7OztBQUdKO0FBQUE7QUFBQTtBQUlBO0FBQUE7RUFFSTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFLQTtFQUNJO0FBQ0E7RUFDQTtBQUNBOzs7QUFHSjtBQUFBO0FBQUE7QUFJQTtFQUNJOzs7QUFHSjtBQUFBO0FBQUE7QUFBQTtBQUtBO0VBQ0k7QUFDQTtFQUNBO0FBQ0E7OztBQUdKO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFJQTtFQUNJOzs7QUFHSjtBQUFBO0FBQUE7QUFJQTtFQUNJOzs7QUFHSjtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FBR0o7QUFBQTtBQUFBO0FBSUE7RUFDSTs7O0FDelhKO0VBQ0k7RUFDQTs7O0FBR0o7QUFBQTtBQUFBO0VBR0k7OztBQUdKO0VBQ0k7OztBQUlKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQVlJOzs7QUFHSjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQW1CSTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7OztBQUdKO0FBQUE7RUFFSTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtBQUFBO0VBRUk7OztBQUdKO0FBQUE7QUFBQTtBQUFBO0VBSUk7RUFDQTs7O0FBR0o7RUFDSTs7O0FBTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOzs7QUFJUjtFQUNJO0VBQ0E7OztBQUdKO0VBQ0ksT0NyQmM7RURzQmQsWUM5R0k7RUQrR0o7RUFDQSxXQ2hCYTtFRGlCYjtFQUNBO0VBQ0E7O0FFcWJBO0VGNWJKO0lBVVEsV0N6QmU7SUQwQmYsYUN6QmlCOzs7O0FEOEJ6QjtFQUNJO0VBQ0E7RUFDQTtFQUNBOzs7QUFJSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUd6SUE7RUFDSTtFQUNBO0VBQ0E7OztBQXNEUjtFQUNJO0FBQ0E7RUFDQTtBQUNBO0VBQ0E7OztBQUdKO0VBSUk7RUFDQTtFQUNBOztBRDZkQTtFRXJPSTtJQUVROzs7QUZtT1o7RUUvTkk7SUFFUTs7O0FGNk5aO0VFck9JO0lBRVE7OztBRm1PWjtFRS9OSTtJQUVROzs7QUY2Tlo7RUVyT0k7SUFFUTs7O0FGbU9aO0VFL05JO0lBRVE7OztBRjZOWjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRWpOUTtJQUVRO0lBQ0E7OztBRjhNaEI7RUVqTlE7SUFFUTtJQUNBOzs7QUY4TWhCO0VFak5RO0lBRVE7SUFDQTs7O0FGOE1oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FGc01oQjtFRXhNUTtJQUVROzs7QUZzTWhCO0VFeE1RO0lBRVE7OztBRnNNaEI7RUV4TVE7SUFFUTs7O0FEclJoQjtFQUNJOzs7QUM0Tko7RUFDSTtFQUNBO0VBQ0EsYUMvUXNEO0VEZ1J0RCxZQ2hSMkQ7O0FDWm5EO0FBQUE7RUFFSTs7O0FBRko7QUFBQTtFQUVJOzs7QUFGSjtBQUFBO0VBRUk7OztBQUZKO0FBQUE7RUFFSTs7O0FBRko7QUFBQTtFQUVJOzs7QUFGSjtBQUFBO0VBRUk7OztBSm9oQmhCO0VJemdCZ0I7QUFBQTtJQUVJOztFQUZKO0FBQUE7SUFFSTs7RUFGSjtBQUFBO0lBRUk7O0VBRko7QUFBQTtJQUVJOztFQUZKO0FBQUE7SUFFSTs7RUFGSjtBQUFBO0lBRUk7OztBSnVnQnBCO0VJemdCZ0I7QUFBQTtJQUVJOztFQUZKO0FBQUE7SUFFSTs7RUFGSjtBQUFBO0lBRUk7O0VBRko7QUFBQTtJQUVJOztFQUZKO0FBQUE7SUFFSTs7RUFGSjtBQUFBO0lBRUk7OztBSnVnQnBCO0VJemdCZ0I7QUFBQTtJQUVJOztFQUZKO0FBQUE7SUFFSTs7RUFGSjtBQUFBO0lBRUk7O0VBRko7QUFBQTtJQUVJOztFQUZKO0FBQUE7SUFFSTs7RUFGSjtBQUFBO0lBRUk7OztBQ2xDeEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFhSSxhTnNFbUI7RU1yRW5CLE9OOEphO0VNN0piO0VBQ0E7O0FMeWhCQTtFS3ppQko7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFtQlE7Ozs7QUFJUjtFQ3dRUTtFRHRRUDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FDcUdHO0VENUdKO0lDK1FROzs7QU5tUUo7RUtsaEJKO0lDd1FROzs7QUE1Sko7RUQ1R0o7SUMrUVE7OztBTm1RSjtFS2xoQko7SUFjRTtJQUNBOzs7QUFHRDtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFJRjtFQUNDOzs7QUFHRDtFQUNJO0VBQ0g7OztBQUdEO0VBQ0ksT05qQ0c7RU1rQ0gsaUJONEVjO0VNM0VqQjs7QUFFRztFQUVJLE9Oc0VnQjtFTXJFaEIsaUJOdUVnQjs7O0FNbkV4QjtFQUNJOzs7QUU3RUo7QUFBQTtFQUVJO0VBQ0E7RUFDQTs7O0FBR0o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFRSTtFQUNBO0VBQ0EsU1JpTlk7RVFoTlosV1I2RWE7RVE1RWIsYVIyTWdCO0VRMU1oQixhUmtFbUI7RVFqRW5CO0VBQ0EsUVI4TVc7RVE3TVgsZVI4TWtCOztBUTVNbEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFDSSxRUjZNTzs7QVExTVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFDSTtFQUNBLGNSaEJBOztBRzRQSjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFS3hPSSxPUjlCRDs7QUcwUUg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFDSTtFSzdPQSxPUjlCRDs7QUcrUUg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUtqUEksT1I5QkQ7O0FHbVJIO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0VLclBJLE9SOUJEOztBR3VSSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFS3pQSSxPUjlCRDs7O0FRa0NQO0VBQ0k7OztBQU9KO0VBQ0k7RUFDQTtFQUNBOzs7QUFHSjtBQUFBO0FBQUE7QUFBQTtBQUFBO0VMbU1JLFlBSFc7RUsxTFg7RUFDQTtFQUNBLFFSMEtXO0VRektYLFNSd0hVO0VRdkhWLFdSZ0NhO0VRL0JiLGFSNEhjO0VRM0hkLE9SN0RJO0VROERKLFlSbkRJO0VRc0RBLGNSNkdXO0VRNUdYLGNSd0tjO0VRdktkLGNSeERBO0VReURBLGVSMkdZO0VReEdoQjtFQUNBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFDSSxZUjNFQTtFUTRFQSxPUmpFQTs7O0FTaEJSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZVHlCRztFU3hCSDtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7OztBQUlSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUNqQ0o7RUFDSTtFQUNIO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNHOztBVGtpQkE7RVMxaUJKO0lBV0U7SUFDQTs7O0FUOGhCRTtFUzFpQko7SUFnQkU7OztBQUdEO0VBQ0M7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBLE9WdENNO0VVdUNOO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBVDJmRTtFU3ZnQkg7SUFlRTtJQUNBOzs7QVR1ZkM7RVN2Z0JIO0lBb0JFOzs7QVRtZkM7RVN2Z0JIO0lBd0JFOzs7QUFHRDtFQUNDO0VBQ0c7O0FBR0o7RUFDQzs7QUFHRDtFQUNDO0VBQ0E7O0FUaWVDO0VTbmVGO0lBS0U7Ozs7QUFNSjtFQUNJO0VBQ0g7RUFDQTs7O0FBR0Q7RUFDQztFQUNHO0VBQ0g7RUFDRztFQUNIOztBVDZjRztFU2xkSjtJQVFFO0lBQ0E7OztBVHljRTtFU2xkSjtJQWFFO0lBQ0E7Ozs7QUFJRjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QVQwYkE7RVNoY0o7SUFTUTs7O0FBR0o7QUFBQTtFUGdJQSxZQUhXO0VPekhQLFlWN0dBO0VVOEdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUVJOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTs7QUFJQTtBQUFBO0VBR0k7O0FBS0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTs7O0FDbktaO0VBQ0M7OztBQUdEO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDSDtFQUNBO0VBQ0E7O0FWK2hCRztFVXRpQko7SUFVRTtJQUNBOzs7O0FBSUY7RUFDSTs7O0FBR0o7RUFDSTtFQUNBLFdYZ0Z5QjtFVy9FekI7RUFDQTs7QVYrZ0JBO0VVbmhCSjtJQU9FOzs7QVY0Z0JFO0VVbmhCSjtJQVdFLFNYeUVrQjs7OztBV3JFcEI7RUFDSTs7QUFFQTtFQUNJOztBQUVBO0VBQ0k7RUFDQTs7QUFJUjtFQUVJOzs7QUFJUjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZWDlEQTtFVytEQTtFQUNBO0VBRUE7O0FBRUE7RUFDSTs7QUFNSjtFQUNJOzs7QUFNWjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZWDFGQTtFVzJGQTtFQUNBO0VBRUE7O0FBRUE7RUFDSTs7QUFNSjtFQUNJOzs7QUFNWjtFQUNJOztBQUVBO0VBQ0k7RUFDQSxZWG5IQTtFV29IQTtFQUNBOztBQUdKO0VBRUk7OztBQUtSO0VBQ0k7O0FBRUE7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTs7O0FBUVo7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUFBO0FBQUE7QUFHQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ1E7OztBQUdWO0FBQUE7QUFBQTtBQUdBO0VBQ0U7SUFDRTs7O0FBSUo7QUFBQTtBQUFBO0FBR0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBOzs7QUFLRjtFQUNFO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOzs7QUFJSjtBQUFBO0FBQUE7QUFHQTtFQUNFOzs7QUFHRjtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QVZvVEc7RVU3VEo7SUFZRTs7O0FWaVRFO0VVN1RKO0lBZ0JFOzs7QUFHRDtFQUNDO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUE7RUFDQztFQUNBOztBQUlGO0VBQ0M7O0FWK1FDO0VVaFJGO0lBSUU7Ozs7QVY0UUE7RVV0UUo7SUFFRTs7OztBQ3RTRjtFQUNJO0VBQ0g7RUFDQTtFQUNBO0VBQ0E7O0FYcWlCRztFVzFpQko7SUFRRTs7O0FBR0Q7RUFDQzs7O0FDWkY7RUFDSTtFQUNBLFNia0xVO0VhakxWLFdib0xZO0VhbkxaO0VBQ0EsYWJxTGM7RWFwTGQ7RUFDQTtFQUdJO0VBQ0E7RUFDQSxjYm9LVztFYW5LWCxlYm9LWTs7QWFqS2hCO0VBQ0ksT2JmQTtFYWdCQSxZYkxBO0VhTUEsY2JOQTs7QWFRQTtFQUNJLE9iVEo7RWFVSSxZYnJCSjtFYXNCSSxjYlhKOztBYWVKO0VBQ0ksT2IzQkE7RWE0QkE7RUFDQSxjYkREOztBYUdDO0VBQ0ksT2JoQ0o7RWFpQ0ksWWIyS21CO0VhMUtuQixjYjBLbUI7O0FhdEszQjtFQUNJLE9idkNBO0Vhd0NBLFliakNHO0Vha0NILGNibENHOztBYW9DSDtFQUNJLE9iNUNKO0VhNkNJLFlid0txQjtFYXZLckIsY2J2Q0Q7O0FhMkNQO0VBQ0ksU2JnSVM7RWEvSFQsV2JrSVc7RWFqSVgsYWJvSWE7RWFuSWIsZWIwSGU7O0FhdkhuQjtFQUNJLFNiMEhTO0VhekhULFdiNEhXO0VhM0hYLGFiOEhhO0VhN0hiLGVib0hlOzs7QWFoSHZCO0VBQ0k7RUFDQTtFQUNBOztBQUVBO0VBQ0k7OztBQzVFUjtFQUNDO0VBQ0E7O0FiMmlCRztFYTdpQko7SUFLRTs7O0Fid2lCRTtFYTdpQko7SUFTRTs7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUQ7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0VQbU9LLFdBTEk7RU81TlI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QWJ3ZUU7RWFqZkg7SUFZRTtJQUNBOzs7QWJvZUM7RWFqZkg7SVBtT0ssV0FMSTtJTzVNUDs7O0FiK2RDO0VhamZIO0lBc0JFO0lBQ0E7OztBYjBkQztFYWpmSDtJUHVPTzs7O0FBNUpKO0VPM0VIO0lQOE9POzs7QU5tUUo7RWFqZkg7SVB1T087SU92TUw7SUFDQTs7O0FQMENDO0VPM0VIO0lQOE9POzs7QU96TU47RVBrTU07RU9oTUw7RUFDQTs7QVBtQ0M7RU90Q0Y7SVB5TU07OztBTm1RSjtFYTVjRjtJUGtNTTs7O0FBNUpKO0VPdENGO0lQeU1NOzs7QU5tUUo7RWE1Y0Y7SVBrTU07OztBQTVKSjtFT3RDRjtJUHlNTTs7O0FPM0xOO0VBQ0M7RUFDQTs7QUFJRjtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBYjhhRTtFYXhiSDtJQWFFO0lBQ0E7OztBQU9EO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBS0g7RUFDQztJQUNDO0lBQ0E7O0VBRUQ7SUFDQztJQUNBOztFQUVEO0lBQ0M7SUFDQTs7O0FDbEtGO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7O0FkeWlCRztFYzdpQko7SUFPRTtJQUNBOzs7QUFHRDtFQUNDOztBQUdEO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7O0FkMGhCRTtFYzloQkg7SUFPRTs7O0FkdWhCQztFYzloQkg7SUFXRTs7O0FBSUY7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FkeWdCRTtFYy9nQkg7SUFTRTtJQUNBOzs7QWRxZ0JDO0VjL2dCSDtJQWNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7OztBQUlBO0VBQ0M7O0FBSUY7RUFDQzs7QUFFQTtFQUNDOztBQUtIO0VBQ0M7O0FkMGVFO0VjM2VIO0lBSUU7OztBQUdEO0VBQ0M7RUFDQTtFQUNHO0VBQ0g7O0FkZ2VDO0VjcGVGO0lBT0U7SUFDQTs7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUM1Rko7RUFDQztFQUNBO0VBQ0EsT2hCRU87RWdCRFA7O0FmeWlCRztFZTdpQko7SUFPRTs7O0Fmc2lCRTtFZTdpQko7SUFXRTs7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FmeWhCRTtFZS9oQkg7SUFTRTs7O0FBSUY7RUFDQztFQUNBLE9oQnhCTTtFZ0J5Qk47O0FBR0Q7RUFDQztFQUNBO0VBQ0E7O0FmeWdCRTtFZTVnQkg7SUFNRTtJQUNBO0lBQ0E7OztBZm9nQkM7RWU1Z0JIO0lBWUU7OztBZmdnQkM7RWU1ZkQ7SUFFRTs7O0FmMGZEO0VlNWZEO0lBTUU7OztBQU1KO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FDeEdIO0VBQ0M7RUFDQSxPakJHTztFaUJGUDs7QWhCMGlCRztFZ0I3aUJKO0lBTUU7OztBaEJ1aUJFO0VnQjdpQko7SUFVRTs7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7O0FBRUE7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7O0FoQitmRTtFZ0JuZ0JIO0lWeVBPO0lValBMOzs7QVZxRkM7RVU3Rkg7SVZnUU87OztBVXJQTjtFQUNDOztBQUdEO0VBQ0M7O0FBR0Q7RUFDQzs7QUFJRjtFQUNDOztBaEIwZUU7RWdCM2VIO0lWaU9POzs7QUE1Sko7RVVyRUg7SVZ3T087Ozs7QVcxU1I7RUFDQztFQUNBO0VBQ0E7O0FBRUE7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBakJnaUJFO0VpQnhpQkg7SUFXRTs7O0FqQjZoQkM7RWlCemhCSDtJQUVFO0lBQ0E7SUFDQTs7O0FqQnFoQkM7RWlCemhCSDtJQVFFOzs7QWpCaWhCQztFaUJ6aEJIO0lBWUU7OztBQUlGO0VBQ0M7RUFDQTs7QWpCdWdCRTtFaUJ6Z0JIO0lYK1BPOzs7QUE1Sko7RVduR0g7SVhzUU87OztBVzlQTjtFQUNDOztBQUVBO0VBQ0M7O0FqQjZmQTtFaUI5ZkQ7SUFJRTs7O0FBS0g7RUFDQztFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Q7RUFDQzs7QUFJRjtFWGlOSSxXQUxJO0VXMU1QO0VBQ0E7O0FqQjRkQztFaUIvZEY7SVhxTk07OztBQTVKSjtFV3pERjtJWDROTTs7O0FObVFKO0VpQi9kRjtJQVVFOzs7QUFHRDtFQUNDO0VBQ0E7RUFDQSIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbi8qIERvY3VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuICovXG5cbmh0bWwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgIC8qIDEgKi9cbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gICAgLyogMiAqL1xufVxuXG4vKiBTZWN0aW9uc1xuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAgICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxuICAgKi9cblxuYm9keSB7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vKipcbiAgICogUmVuZGVyIHRoZSBgbWFpbmAgZWxlbWVudCBjb25zaXN0ZW50bHkgaW4gSUUuXG4gICAqL1xuXG5tYWluIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gICAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAgICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cbiAgICovXG5cbmgxIHtcbiAgICBmb250LXNpemU6IDJlbTtcbiAgICBtYXJnaW46IDAuNjdlbSAwO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICAgKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuICAgKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAgICovXG5cbmhyIHtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAvKiAxICovXG4gICAgaGVpZ2h0OiAwO1xuICAgIC8qIDEgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAvKiAyICovXG59XG5cbi8qKlxuICAgKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAgKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gICAqL1xuXG5wcmUge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgICAvKiAxICovXG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgLyogMiAqL1xufVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAgICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICAgKi9cblxuYSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qKlxuICAgKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICAgKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICAgKi9cblxuYWJiclt0aXRsZV0ge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgLyogMSAqL1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIC8qIDIgKi9cbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gICAgLyogMiAqL1xufVxuXG4vKipcbiAgICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAgICovXG5cbmIsXG5zdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICAgKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAgKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gICAqL1xuXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICAgIC8qIDEgKi9cbiAgICBmb250LXNpemU6IDFlbTtcbiAgICAvKiAyICovXG59XG5cbi8qKlxuICAgKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbnNtYWxsIHtcbiAgICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gICAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICAgKiBhbGwgYnJvd3NlcnMuXG4gICAqL1xuXG5zdWIsXG5zdXAge1xuICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gICAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuICAgIHRvcDogLTAuNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICAgKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuICAgKi9cblxuaW1nIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8qIEZvcm1zXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICAgKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAgICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICAgKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAvKiAxICovXG4gICAgZm9udC1zaXplOiAxMDAlO1xuICAgIC8qIDEgKi9cbiAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAvKiAxICovXG4gICAgbWFyZ2luOiAwO1xuICAgIC8qIDIgKi9cbn1cblxuLyoqXG4gICAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICAgKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICAgKi9cblxuYnV0dG9uLFxuaW5wdXQge1xuICAgIC8qIDEgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gICAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICAgKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gICAqL1xuXG5idXR0b24sXG5zZWxlY3Qge1xuICAgIC8qIDEgKi9cbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gICAqIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gICAqL1xuXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG59XG5cbi8qKlxuICAgKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICAgKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAgICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICAgKi9cblxuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cblxuLyoqXG4gICAqIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAgICovXG5cbmZpZWxkc2V0IHtcbiAgICBwYWRkaW5nOiAwLjM1ZW0gMC43NWVtIDAuNjI1ZW07XG59XG5cbi8qKlxuICAgKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICAgKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gICAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAgICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gICAqL1xuXG5sZWdlbmQge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLyogMSAqL1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIC8qIDIgKi9cbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAvKiAxICovXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIC8qIDEgKi9cbiAgICBwYWRkaW5nOiAwO1xuICAgIC8qIDMgKi9cbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIC8qIDEgKi9cbn1cblxuLyoqXG4gICAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gICAqL1xuXG5wcm9ncmVzcyB7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4vKipcbiAgICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG4gICAqL1xuXG50ZXh0YXJlYSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICAgKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC5cbiAgICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLlxuICAgKi9cblxuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLyogMSAqL1xuICAgIHBhZGRpbmc6IDA7XG4gICAgLyogMiAqL1xufVxuXG4vKipcbiAgICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuICAgKi9cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAgICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gICAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICAgKi9cblxuW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICAgIC8qIDEgKi9cbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAvKiAyICovXG59XG5cbi8qKlxuICAgKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gICAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAgICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAgICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICAgKi9cblxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gICAgLyogMSAqL1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgLyogMiAqL1xufVxuXG4vKiBJbnRlcmFjdGl2ZVxuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxuICAgKi9cblxuZGV0YWlscyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qXG4gICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbnN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbn1cblxuLyogTWlzY1xuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxuICAgKi9cblxudGVtcGxhdGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qKlxuICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC5cbiAgICovXG5cbltoaWRkZW5dIHtcbiAgICBkaXNwbGF5OiBub25lO1xufSIsImh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xufVxuXG4qLFxuKjpiZWZvcmUsXG4qOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG4qIHtcbiAgICBtYXgtaGVpZ2h0OiAxMDAwMDAwcHg7XG59XG5cbi8vLSBIVE1MNSBkaXNwbGF5LXJvbGUgcmVzZXQgZm9yIG9sZGVyIGJyb3dzZXJzXG5tYWluLFxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tZW51LFxubmF2LFxuc2VjdGlvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbnVsLFxub2wsXG5kbCxcbnAsXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYsXG5hZGRyZXNzLFxuZm9ybSxcbnRhYmxlLFxuYmxvY2txdW90ZSxcbmFwcGxldCxcbmVtYmVkLFxub2JqZWN0LFxuaWZyYW1lLFxuZnJhbWVzZXQge1xuICAgIG1hcmdpbjogMCAwICR2ZXJ0aWNhbC1yaHl0aG07XG59XG5cbmJsb2NrcXVvdGUge1xuICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgJGdyYXk7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG50YWJsZSB7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxudGgsXG50ZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyYXk7XG4gICAgcGFkZGluZzogM3B4O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxudGgge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG51bCxcbm9sIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG59XG5cbnVsIHVsLFxudWwgb2wsXG5vbCB1bCxcbm9sIG9sIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gICAgbWFyZ2luOiAwO1xufVxuXG51bCB7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xufVxuXG5kbCB7XG4gICAgQGV4dGVuZCAlY2xlYXJmaXg7XG5cbiAgICBkdCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMC4zZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICAgIGRkIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG59XG5cbnByZSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93OiBhdXRvO1xufVxuXG5ib2R5IHtcbiAgICBjb2xvcjogJGJhc2UtdGV4dC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kOiAkYmFzZS1iYWNrZ3JvdW5kLWJvZHk7XG4gICAgZm9udDogI3skZm9udC1zaXplLWJhc2V9LyN7JGxpbmUtaGVpZ2h0LWJhc2V9ICRiYXNlLWZvbnQtZmFtaWx5O1xuICAgIG1pbi13aWR0aDogJGJhc2UtbWluLXdpZHRoO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgbWFyZ2luOiAwO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJ+KJpXRhYmxldCcpIHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UtbGFncmU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZS1sYWdyZTtcbiAgICB9XG59XG5cbi8vIGFkYXB0aXZlIGltYWdlc1xuaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4vLyBnb29nbGUgbWFwIGZpeFxuLmdtLXN0eWxlIGltZyB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuXG5pZnJhbWUge1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLnJlc2l6ZS1hY3RpdmUgKiB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xufSIsIi8vIENvbG9yc1xuLy8gQ29sb3IgY2FsY3VsYXRvciAtIGh0dHA6Ly9yYXpvcmphbS5naXRodWIuaW8vc2Fzc2NvbG91cmZ1bmN0aW9uY2FsY3VsYXRvci9cbi8vIENvbG9yIG5hbWVzIC0gaHR0cDovL25hbWUtb2YtY29sb3IuY29tL1xuLy8gQ29sb3Igc3lzdGVtXG5cbiR3aGl0ZTogI2ZmZiAhZGVmYXVsdDtcbiRncmF5OiAjZGRkICFkZWZhdWx0O1xuJGdyYXktMTAwOiAjZjhmOWZhICFkZWZhdWx0O1xuJGdyYXktMjAwOiAjZTllY2VmICFkZWZhdWx0O1xuJGdyYXktMzAwOiAjZGVlMmU2ICFkZWZhdWx0O1xuJGdyYXktNDAwOiAjY2VkNGRhICFkZWZhdWx0O1xuJGdyYXktNTAwOiAjYWRiNWJkICFkZWZhdWx0O1xuJGdyYXktNjAwOiAjNmM3NTdkICFkZWZhdWx0O1xuJGdyYXktNzAwOiAjNDk1MDU3ICFkZWZhdWx0O1xuJGdyYXktODAwOiAjMzQzYTQwICFkZWZhdWx0O1xuJGdyYXktOTAwOiAjMjEyNTI5ICFkZWZhdWx0O1xuJGJsYWNrOiAjMDAwICFkZWZhdWx0O1xuXG4kZ3JheXM6IChcbiAgICApICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRncmF5czogbWFwLW1lcmdlKChcIjEwMFwiOiAkZ3JheS0xMDAsXG4gICAgICAgICAgICBcIjIwMFwiOiAkZ3JheS0yMDAsXG4gICAgICAgICAgICBcIjMwMFwiOiAkZ3JheS0zMDAsXG4gICAgICAgICAgICBcIjQwMFwiOiAkZ3JheS00MDAsXG4gICAgICAgICAgICBcIjUwMFwiOiAkZ3JheS01MDAsXG4gICAgICAgICAgICBcIjYwMFwiOiAkZ3JheS02MDAsXG4gICAgICAgICAgICBcIjcwMFwiOiAkZ3JheS03MDAsXG4gICAgICAgICAgICBcIjgwMFwiOiAkZ3JheS04MDAsXG4gICAgICAgICAgICBcIjkwMFwiOiAkZ3JheS05MDAgKSxcbiAgICAgICAgJGdyYXlzXG4pO1xuXG4kYmx1ZTogIzJiOWViZiAhZGVmYXVsdDtcbiRpbmRpZ286ICM2NjEwZjIgIWRlZmF1bHQ7XG4kcHVycGxlOiAjNmY0MmMxICFkZWZhdWx0O1xuJHBpbms6ICNlODNlOGMgIWRlZmF1bHQ7XG4kcmVkOiAjZGMzNTQ1ICFkZWZhdWx0O1xuJG9yYW5nZTogI2ZkN2UxNCAhZGVmYXVsdDtcbiR5ZWxsb3c6ICNmZmMxMDcgIWRlZmF1bHQ7XG4kZ3JlZW46ICMyOGE3NDUgIWRlZmF1bHQ7XG4kdGVhbDogIzIwYzk5NyAhZGVmYXVsdDtcbiRjeWFuOiAjMTdhMmI4ICFkZWZhdWx0O1xuXG4kY29sb3JzOiAoXG4gICAgKSAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzY3NzL2RvbGxhci12YXJpYWJsZS1kZWZhdWx0XG4kY29sb3JzOiBtYXAtbWVyZ2UoKFwiYmx1ZVwiOiAkYmx1ZSxcbiAgICAgICAgICAgIFwiaW5kaWdvXCI6ICRpbmRpZ28sXG4gICAgICAgICAgICBcInB1cnBsZVwiOiAkcHVycGxlLFxuICAgICAgICAgICAgXCJwaW5rXCI6ICRwaW5rLFxuICAgICAgICAgICAgXCJyZWRcIjogJHJlZCxcbiAgICAgICAgICAgIFwib3JhbmdlXCI6ICRvcmFuZ2UsXG4gICAgICAgICAgICBcInllbGxvd1wiOiAkeWVsbG93LFxuICAgICAgICAgICAgXCJncmVlblwiOiAkZ3JlZW4sXG4gICAgICAgICAgICBcInRlYWxcIjogJHRlYWwsXG4gICAgICAgICAgICBcImN5YW5cIjogJGN5YW4sXG4gICAgICAgICAgICBcIndoaXRlXCI6ICR3aGl0ZSxcbiAgICAgICAgICAgIFwiZ3JheVwiOiAkZ3JheS02MDAsXG4gICAgICAgICAgICBcImdyYXktZGFya1wiOiAkZ3JheS04MDAgKSxcbiAgICAgICAgJGNvbG9yc1xuKTtcblxuJHByaW1hcnk6ICRibHVlICFkZWZhdWx0O1xuJHNlY29uZGFyeTogJGdyYXktNjAwICFkZWZhdWx0O1xuJHN1Y2Nlc3M6ICRncmVlbiAhZGVmYXVsdDtcbiRpbmZvOiAkY3lhbiAhZGVmYXVsdDtcbiR3YXJuaW5nOiAkeWVsbG93ICFkZWZhdWx0O1xuJGRhbmdlcjogJHJlZCAhZGVmYXVsdDtcbiRsaWdodDogJGdyYXktMTAwICFkZWZhdWx0O1xuJGRhcms6ICRncmF5LTgwMCAhZGVmYXVsdDtcblxuJHRoZW1lLWNvbG9yczogKFxuICAgICkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJHRoZW1lLWNvbG9yczogbWFwLW1lcmdlKChcInByaW1hcnlcIjogJHByaW1hcnksXG4gICAgICAgICAgICBcInNlY29uZGFyeVwiOiAkc2Vjb25kYXJ5LFxuICAgICAgICAgICAgXCJzdWNjZXNzXCI6ICRzdWNjZXNzLFxuICAgICAgICAgICAgXCJpbmZvXCI6ICRpbmZvLFxuICAgICAgICAgICAgXCJ3YXJuaW5nXCI6ICR3YXJuaW5nLFxuICAgICAgICAgICAgXCJkYW5nZXJcIjogJGRhbmdlcixcbiAgICAgICAgICAgIFwibGlnaHRcIjogJGxpZ2h0LFxuICAgICAgICAgICAgXCJkYXJrXCI6ICRkYXJrICksXG4gICAgICAgICR0aGVtZS1jb2xvcnNcbik7XG5cbi8vIGZvbnRzIG5hbWVcbiRiYXNlLWZvbnQtc2Fucy1zZXJpZjogJ21lc3RpemEnLCAnQXJpYWwnICwgJ0hlbHZldGljYSBOZXVlJywgJ0hlbHZldGljYScsIHNhbnMtc2VyaWY7XG4kYmFzZS1mb250LXNlcmlmOiAnVGltZXMgTmV3IFJvbWFuJywgJ1RpbWVzJywgJ0Jhc2tlcnZpbGxlJywgJ0dlb3JnaWEnLCBzZXJpZjtcblxuJGJhc2UtZm9udDogJGJhc2UtZm9udC1zYW5zLXNlcmlmO1xuXG4vLyBCb2R5XG4kYmFzZS10ZXh0LWNvbG9yOiAjM2UzYzM5ICFkZWZhdWx0O1xuJGJhc2UtYmFja2dyb3VuZC1ib2R5OiAkd2hpdGUgIWRlZmF1bHQ7XG4kYmFzZS1iYWNrZ3JvdW5kLWZvb3RlcjogJGJhc2UtYmFja2dyb3VuZC1ib2R5ICFkZWZhdWx0O1xuJGZvbnQtc2l6ZS1iYXNlOiAxNnB4ICFkZWZhdWx0O1xuJGxpbmUtaGVpZ2h0LWJhc2U6IDEuMiAhZGVmYXVsdDtcbiRmb250LXNpemUtYmFzZS1sYWdyZTogMjBweCAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1iYXNlLWxhZ3JlOiAxLjIgIWRlZmF1bHQ7XG4kYmFzZS1mb250LWZhbWlseTogJGJhc2UtZm9udCAhZGVmYXVsdDtcbiRiYXNlLW1pbi13aWR0aDogMzIwcHg7XG5cbi8vIGJhc2UgdmFyaWFibGVzXG4kYmFzZS1yYWRpdXM6IDA7XG4kYmFzZS1yYWRpdXMtc21hbGw6IDA7XG5cbi8vIGNvbnRhaW5lciBzZXR0aW5nc1xuJG1heC13aWR0aC1jZW50ZXItY29udGFpbmVyOiAxMDAlO1xuJGd1dHRlcjogODhweDtcbiRwYWRkaW5nLWNvbnRhaW5lcjogMCAkZ3V0dGVyO1xuXG4kdW5pdC1pbnRlcnZhbHM6IChcbiAgICAncHgnOiAwLjAyLFxuICAgICdlbSc6IDAuMDEsXG4gICAgJ3JlbSc6IDAuMSxcbiAgICAnJzogMFxuKTtcblxuLy8gZ3JpZCBzaXN0ZW1cbiRncmlkOiAoXG4gICAgcGg6ICdwaG9uZScsXG4gICAgc206ICd0YWJsZXQnLFxuICAgIG1kOiAnZGVza3RvcCdcbik7XG5cbi8vIGZvbnQgd2VpZ2h0XG4kdGhpbjogMTAwO1xuJGxpZ2h0LWZvbnQ6IDMwMDtcbiRub3JtYWw6IDQwMDtcbiRtZWRpdW06IDUwMDtcbiRzZW1pYm9sZDogNjAwO1xuJGJvbGQ6IDcwMDtcbiRleHRyYTogODAwO1xuJGJsYWNrLWZvbnQ6IDkwMDtcblxuLy8gZGVmYXVsdCBtYXJnaW5zXG4kdmVydGljYWwtcmh5dGhtOiAkZm9udC1zaXplLWJhc2UgKyA0O1xuJHdpZGdldC1tYXJnaW46IDIwcHg7XG5cbi8vIExpa3NcbiRiYXNlLWxpbmstY29sb3I6ICRibHVlO1xuJGJhc2UtbGluay1ob3Zlci1jb2xvcjogIzE2NGE4NTtcbiR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4kdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lO1xuXG4vLyBIZWFkZXJzIHNpemVcbiR0aXRsZS1wYWxldHRlOiAoXG4gICAgbW9iaWxlOiAoJ2gxJzogMjAsXG4gICAgICAgICdoMic6IDE2LFxuICAgICAgICAnaDMnOiAxNSxcbiAgICAgICAgJ2g0JzogMTQsXG4gICAgICAgICdoNSc6IDE0LFxuICAgICAgICAnaDYnOiAxNCksXG4gICAgdGFibGV0OiAoJ2gxJzogNDAsXG4gICAgICAgICdoMic6IDMwLFxuICAgICAgICAnaDMnOiAyOCxcbiAgICAgICAgJ2g0JzogMjAsXG4gICAgICAgICdoNSc6IDE4LFxuICAgICAgICAnaDYnOiAxNiksXG4gICAgZGVza3RvcDogKCdoMSc6IDQwLFxuICAgICAgICAnaDInOiAzMCxcbiAgICAgICAgJ2gzJzogMjgsXG4gICAgICAgICdoNCc6IDIwLFxuICAgICAgICAnaDUnOiAxOCxcbiAgICAgICAgJ2g2JzogMTYpLFxuICAgIHdpZGVzY3JlZW46ICgnaDEnOiA0MCxcbiAgICAgICAgJ2gyJzogMzAsXG4gICAgICAgICdoMyc6IDI4LFxuICAgICAgICAnaDQnOiAyMCxcbiAgICAgICAgJ2g1JzogMTgsXG4gICAgICAgICdoNic6IDE2KVxuKTtcblxuLy8gaGVhZGluZ3Mgc3R5bGVcbiRoZWFkaW5ncy1mb250LWZhbWlseTogJGJhc2UtZm9udC1mYW1pbHk7XG4kaGVhZGluZ3MtY29sb3I6IGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vIEJ1dHRvbnNcbiRidG4tYm9yZGVyLXdpZHRoOiAxcHggIWRlZmF1bHQ7XG4kYnRuLWJvcmRlci1yYWRpdXM6IDVweCAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1zbTogY2FsYygkYnRuLWJvcmRlci1yYWRpdXMgLyAyKSAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1sZzogY2FsYygkYnRuLWJvcmRlci1yYWRpdXMgKiAyKSAhZGVmYXVsdDtcbiRidG4tcGFkZGluZzogMTBweCAyMHB4ICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXNtOiA1cHggMTBweCAhZGVmYXVsdDtcbiRidG4tcGFkZGluZy1sZzogMjBweCA0MHB4ICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemU6IDE1cHggIWRlZmF1bHQ7XG4kYnRuLWZvbnQtc2l6ZS1zbTogMTJweCAhZGVmYXVsdDtcbiRidG4tZm9udC1zaXplLWxnOiAxOHB4ICFkZWZhdWx0O1xuJGJ0bi1saW5lLWhlaWdodDogJGJ0bi1mb250LXNpemUgKyAyO1xuJGJ0bi1saW5lLWhlaWdodC1zbTogJGJ0bi1mb250LXNpemUtc20gKyAyO1xuJGJ0bi1saW5lLWhlaWdodC1sZzogJGJ0bi1mb250LXNpemUtbGcgKyAyO1xuXG4vLyBidG4gZGVmYXVsdFxuJGJ0bi1jb2xvci1kZWZhdWx0OiAkd2hpdGUgIWRlZmF1bHQ7XG4kYnRuLWJhY2tncm91bmQtZGVmYXVsdDogJGJsYWNrICFkZWZhdWx0O1xuJGJ0bi1ib3JkZXItY29sb3ItZGVmYXVsdDogJGJ0bi1iYWNrZ3JvdW5kLWRlZmF1bHQgIWRlZmF1bHQ7XG5cbi8vIGhvdmVyXG4kYnRuLWhvdmVyLWNvbG9yLWRlZmF1bHQ6ICRidG4tYmFja2dyb3VuZC1kZWZhdWx0ICFkZWZhdWx0O1xuJGJ0bi1ob3Zlci1iYWNrZ3JvdW5kLWRlZmF1bHQ6ICRidG4tY29sb3ItZGVmYXVsdCAhZGVmYXVsdDtcbiRidG4taG92ZXItYm9yZGVyLWNvbG9yLWRlZmF1bHQ6ICRidG4tYmFja2dyb3VuZC1kZWZhdWx0ICFkZWZhdWx0O1xuXG4vLyBidG4gcHJpbWFyeVxuJGJ0bi1jb2xvci1wcmltYXJ5OiAkd2hpdGUgIWRlZmF1bHQ7XG4kYnRuLWJhY2tncm91bmQtcHJpbWFyeTogJHByaW1hcnkgIWRlZmF1bHQ7XG4kYnRuLWJvcmRlci1jb2xvci1wcmltYXJ5OiAkcHJpbWFyeSAhZGVmYXVsdDtcbi8vIGhvdmVyXG4kYnRuLWhvdmVyLWNvbG9yLXByaW1hcnk6ICR3aGl0ZSAhZGVmYXVsdDtcbiRidG4taG92ZXItYmFja2dyb3VuZC1wcmltYXJ5OiBkYXJrZW4oJHByaW1hcnksIDEwJSkgIWRlZmF1bHQ7XG4kYnRuLWhvdmVyLWJvcmRlci1jb2xvci1wcmltYXJ5OiAkYnRuLWhvdmVyLWJhY2tncm91bmQtcHJpbWFyeSAhZGVmYXVsdDtcblxuLy8gYnRuIHNlY29uZGFyeVxuJGJ0bi1jb2xvci1zZWNvbmRhcnk6ICR3aGl0ZSAhZGVmYXVsdDtcbiRidG4tYmFja2dyb3VuZC1zZWNvbmRhcnk6ICRzZWNvbmRhcnkgIWRlZmF1bHQ7XG4kYnRuLWJvcmRlci1jb2xvci1zZWNvbmRhcnk6ICRzZWNvbmRhcnkgIWRlZmF1bHQ7XG4vLyBob3ZlclxuJGJ0bi1ob3Zlci1jb2xvci1zZWNvbmRhcnk6ICR3aGl0ZSAhZGVmYXVsdDtcbiRidG4taG92ZXItYmFja2dyb3VuZC1zZWNvbmRhcnk6IGRhcmtlbigkc2Vjb25kYXJ5LCAxMCUpICFkZWZhdWx0O1xuJGJ0bi1ob3Zlci1ib3JkZXItY29sb3Itc2Vjb25kYXJ5OiAkc2Vjb25kYXJ5ICFkZWZhdWx0O1xuXG4vLyBGb3Jtc1xuJGlucHV0LWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlOyAvLyBmb250IHNpemUgZm9yIGZvcm1zIGVsZW1lbnRzXG4kaW5wdXQtbGluZS1oZWlnaHQ6ICRpbnB1dC1mb250LXNpemUgKyAyOyAvLyBsaW5lIGhlaWdodCBmb3IgZm9ybXMgZWxlbWVudHNcbiRpbnB1dC1mb250LWZhbWlseTogJGJhc2UtZm9udDtcbiRpbnB1dC1wYWRkaW5nLXZlcnRpY2FsOiAxMHB4ICFkZWZhdWx0OyAvLyBwYWRkaW5nIGZvciBmb3JtcyBlbGVtZW50c1xuJGlucHV0LXBhZGRpbmctaG9yaXpvbnRhbDogMjBweCAhZGVmYXVsdDsgLy8gcGFkZGluZyBmb3IgZm9ybXMgZWxlbWVudHNcbiRpbnB1dC1wYWRkaW5nOiAkaW5wdXQtcGFkZGluZy12ZXJ0aWNhbCAkaW5wdXQtcGFkZGluZy1ob3Jpem9udGFsICFkZWZhdWx0O1xuJGlucHV0LWJvcmRlci13aWR0aDogMXB4ICFkZWZhdWx0OyAvLyBib3JkZXIgaW5wdXQncyB3aWR0aFxuJGlucHV0LWJvcmRlcjogJGlucHV0LWJvcmRlci13aWR0aCBzb2xpZCAkYmxhY2sgIWRlZmF1bHQ7IC8vIGJvcmRlciBmb3IgZm9ybXMgZWxlbWVudHNcbiRpbnB1dC1ib3JkZXItcmFkaXVzOiAwICFkZWZhdWx0OyAvLyBib3JkZXIgcmFkaXVzIGZvciBmb3JtcyBlbGVtZW50c1xuJGlucEg6ICRpbnB1dC1ib3JkZXItd2lkdGggKyAyICogJGlucHV0LXBhZGRpbmctdmVydGljYWwgKyAkaW5wdXQtbGluZS1oZWlnaHQ7XG4kaW5wdXQtaGVpZ2h0OiAoXG4gICAgMiAqICgkaW5wdXQtYm9yZGVyLXdpZHRoICsgJGlucHV0LXBhZGRpbmctdmVydGljYWwpICsgJGlucHV0LWxpbmUtaGVpZ2h0KSAhZGVmYXVsdDsgLy8gaGVpZ2h0IGZvciBmb3JtcyBlbGVtZW50c1xuLy9zdWJtaXRcbiRzdWJtaXQtYmFja2dyb3VuZDogJGJ0bi1iYWNrZ3JvdW5kLWRlZmF1bHQ7XG4kc3VibWl0LWNvbG9yOiAkYnRuLWNvbG9yLWRlZmF1bHQ7XG4kc3VibWl0LWhlaWdodDogJGlucHV0LWhlaWdodDtcbiRzdWJtaXQtYm9yZGVyLXdpZHRoOiAkYnRuLWJvcmRlci13aWR0aDtcbiRzdWJtaXQtYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiRzdWJtaXQtYm9yZGVyLWNvbG9yOiAkYnRuLWJvcmRlci1jb2xvci1kZWZhdWx0O1xuJHN1Ym1pdC1wYWRkaW5nOiAkYnRuLXBhZGRpbmc7XG4kc3VibWl0LWZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcbiRzdWJtaXQtbGluZS1oZWlnaHQ6ICRidG4tbGluZS1oZWlnaHQ7XG4kc3VibWl0LXJhZGl1czogJGJ0bi1ib3JkZXItcmFkaXVzO1xuLy8gc3VibWl0IGhvdmVyXG4kc3VibWl0LWhvdmVyLWJhY2tncm91bmQ6ICRzdWJtaXQtY29sb3I7IC8vIHN1Ym1pdCBiYWNrZ3JvdW5kIGhvdmVyXG4kc3VibWl0LWhvdmVyLWNvbG9yOiAkc3VibWl0LWJhY2tncm91bmQ7IC8vIHN1Ym1pdCBjb2xvciBob3ZlclxuJHN1Ym1pdC1ob3Zlci1ib3JkZXItY29sb3I6ICRzdWJtaXQtYmFja2dyb3VuZDsgLy8gc3VibWl0IGNvbG9yIGhvdmVyXG5cbi8vZm9jdXNcbiRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3I6ICRibGFjayAhZGVmYXVsdDsgLy8gYm9yZGVyIGNvbG9yIGZvciBmb3JtcyBlbGVtZW50c1xuLy9wbGFjZWhvbGRlclxuJHBsYWNlaG9sZGVyLWNvbG9yOiAkZ3JheSAhZGVmYXVsdDtcbi8vIHNlbGVjdFxuJHNlbGVjdC1oZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4kc2VsZWN0LWJvcmRlcjogJGlucHV0LWJvcmRlcjtcbiRzZWxlY3QtYm9yZGVyLXJhZGl1czogJGlucHV0LWJvcmRlci1yYWRpdXM7XG4kc2VsZWN0LXBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xuJHNlbGVjdC1mb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4kc2VsZWN0LWxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG5cbi8vIGFuaW1hdGlvbiBzcGVlZFxuJGFuaW1hdGlvbi1zcGVlZDogMC41czsiLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vICAgICBfICAgICAgICAgICAgXyAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gX1xuLy8gICAgKF8pICAgICAgICAgIHwgfCAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IChfKVxuLy8gICAgIF8gXyBfXyAgIF9fX3wgfF8gICBfICBfX3wgfCBfX18gICBfIF9fIF9fXyAgIF9fXyAgX198IHxfICBfXyBfXG4vLyAgICB8IHwgJ18gXFwgLyBfX3wgfCB8IHwgfC8gX2AgfC8gXyBcXCB8ICdfIGAgXyBcXCAvIF8gXFwvIF9gIHwgfC8gX2AgfFxuLy8gICAgfCB8IHwgfCB8IChfX3wgfCB8X3wgfCAoX3wgfCAgX18vIHwgfCB8IHwgfCB8ICBfXy8gKF98IHwgfCAoX3wgfFxuLy8gICAgfF98X3wgfF98XFxfX198X3xcXF9fLF98XFxfXyxffFxcX19ffCB8X3wgfF98IHxffFxcX19ffFxcX18sX3xffFxcX18sX3xcbi8vXG4vLyAgICAgIFNpbXBsZSwgZWxlZ2FudCBhbmQgbWFpbnRhaW5hYmxlIG1lZGlhIHF1ZXJpZXMgaW4gU2Fzc1xuLy8gICAgICAgICAgICAgICAgICAgICAgICB2MS40Ljlcbi8vXG4vLyAgICAgICAgaHR0cHM6Ly9lZHVhcmRvYm91Y2FzLmdpdGh1Yi5pby9pbmNsdWRlLW1lZGlhXG4vL1xuLy8gICAgICAgICBBdXRob3JzOiBFZHVhcmRvIEJvdWNhcyAoQGVkdWFyZG9ib3VjYXMpXG4vLyAgICAgICAgICAgICAgICAgIEtpdHR5IEdpcmF1ZGVsIChAa2l0dHlnaXJhdWRlbClcbi8vXG4vLyAgICAgIFRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBsaWJyYXJ5IHB1YmxpYyBjb25maWd1cmF0aW9uXG4vLy8gQGF1dGhvciBFZHVhcmRvIEJvdWNhc1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8vXG5cblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2YgZ2xvYmFsIGJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHdpdGggdGhlIGxhYmVsIGBwaG9uZWBcbi8vLyAgJGJyZWFrcG9pbnRzOiAoJ3Bob25lJzogMzIwcHgpO1xuLy8vXG4kYnJlYWtwb2ludHM6IChcbiAgJ3Bob25lJzogMzIwcHgsXG4gICd0YWJsZXQnOiA3NjhweCxcbiAgJ2Rlc2t0b3AnOiAxMDI0cHhcbikgIWRlZmF1bHQ7XG5cblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2Ygc3RhdGljIGV4cHJlc3Npb25zIG9yIG1lZGlhIHR5cGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBtZWRpYSB0eXBlIChzY3JlZW4pXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nOiAnc2NyZWVuJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHN0YXRpYyBleHByZXNzaW9uIHdpdGggbG9naWNhbCBkaXNqdW5jdGlvbiAoT1Igb3BlcmF0b3IpXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKFxuLy8vICAgICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJ1xuLy8vICApO1xuLy8vXG4kbWVkaWEtZXhwcmVzc2lvbnM6IChcbiAgJ3NjcmVlbic6ICdzY3JlZW4nLFxuICAncHJpbnQnOiAncHJpbnQnLFxuICAnaGFuZGhlbGQnOiAnaGFuZGhlbGQnLFxuICAnbGFuZHNjYXBlJzogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdwb3J0cmFpdCc6ICcob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLCAobWluLXJlc29sdXRpb246IDJkcHB4KScsXG4gICdyZXRpbmEzeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAzKSwgKG1pbi1yZXNvbHV0aW9uOiAzNTBkcGkpLCAobWluLXJlc29sdXRpb246IDNkcHB4KSdcbikgIWRlZmF1bHQ7XG5cblxuLy8vXG4vLy8gRGVmaW5lcyBhIG51bWJlciB0byBiZSBhZGRlZCBvciBzdWJ0cmFjdGVkIGZyb20gZWFjaCB1bml0IHdoZW4gZGVjbGFyaW5nIGJyZWFrcG9pbnRzIHdpdGggZXhjbHVzaXZlIGludGVydmFsc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciBwaXhlbHMgaXMgZGVmaW5lZCBhcyBgMWAgYnkgZGVmYXVsdFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjEyOHB4Jykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAxMjlweCkge31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgZW1zIGlzIGRlZmluZWQgYXMgYDAuMDFgIGJ5IGRlZmF1bHRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yMGVtJykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyMC4wMWVtKSB7fVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciByZW1zIGlzIGRlZmluZWQgYXMgYDAuMWAgYnkgZGVmYXVsdCwgdG8gYmUgdXNlZCB3aXRoIGBmb250LXNpemU6IDYyLjUlO2Bcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yLjByZW0nKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIuMXJlbSkge31cbi8vL1xuJHVuaXQtaW50ZXJ2YWxzOiAoXG4gICdweCc6IDEsXG4gICdlbSc6IDAuMDEsXG4gICdyZW0nOiAwLjEsXG4gICcnOiAwXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBEZWZpbmVzIHdoZXRoZXIgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllcyBpcyBhdmFpbGFibGUsIHVzZWZ1bCBmb3IgY3JlYXRpbmcgc2VwYXJhdGUgc3R5bGVzaGVldHNcbi8vLyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IG1lZGlhIHF1ZXJpZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRGlzYWJsZXMgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbiRpbS1tZWRpYS1zdXBwb3J0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIGJyZWFrcG9pbnQgdG8gZW11bGF0ZSB3aGVuIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgZGlzYWJsZWQuIE1lZGlhIHF1ZXJpZXMgdGhhdCBzdGFydCBhdCBvclxuLy8vIGludGVyY2VwdCB0aGUgYnJlYWtwb2ludCB3aWxsIGJlIGRpc3BsYXllZCwgYW55IG90aGVycyB3aWxsIGJlIGlnbm9yZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIE5PVCBzaG93IGJlY2F1c2UgaXQgZG9lcyBub3QgaW50ZXJjZXB0IHRoZSBkZXNrdG9wIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ3RhYmxldCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIG1lZGlhIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIGFuIGV4cHJlc3Npb24gZm9yIGl0IHRvIGJlIHVzZWQgd2hlbiBtZWRpYSBxdWVyaWVzXG4vLy8gYXJlIG5vdCBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBhbmQgY29udGFpbnMgb25seSBhY2NlcHRlZCBtZWRpYSBleHByZXNzaW9uc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3NjcmVlbicpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgIC5mb28ge1xuLy8vICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGJ1dCBjb250YWlucyBhIG1lZGlhIGV4cHJlc3Npb24gdGhhdCBpcyBub3QgYWNjZXB0ZWRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdyZXRpbmEyeCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogTm8gb3V0cHV0ICovXG4vLy9cbiRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nLCAncG9ydHJhaXQnLCAnbGFuZHNjYXBlJykgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBDcm9zcy1lbmdpbmUgbG9nZ2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gTG9nIGEgbWVzc2FnZSBlaXRoZXIgd2l0aCBgQGVycm9yYCBpZiBzdXBwb3J0ZWRcbi8vLyBlbHNlIHdpdGggYEB3YXJuYCwgdXNpbmcgYGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpYFxuLy8vIHRvIGRldGVjdCBzdXBwb3J0LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZXNzYWdlIC0gTWVzc2FnZSB0byBsb2dcbi8vL1xuQGZ1bmN0aW9uIGltLWxvZygkbWVzc2FnZSkge1xuICBAaWYgZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJykge1xuICAgIEBlcnJvciAkbWVzc2FnZTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJG1lc3NhZ2U7XG4gICAgJF86IG5vb3AoKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1lc3NhZ2U7XG59XG5cblxuLy8vXG4vLy8gV3JhcHBlciBtaXhpbiBmb3IgdGhlIGxvZyBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIGEgbW9yZSBmcmllbmRseVxuLy8vIEFQSSB0aGFuIGBAaWYgaW0tbG9nKCcuLicpIHt9YCBvciBgJF86IGltLWxvZygnLi4nKWAuIEJhc2ljYWxseSwgdXNlIHRoZSBmdW5jdGlvblxuLy8vIHdpdGhpbiBmdW5jdGlvbnMgYmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluIGEgZnVuY3Rpb25cbi8vLyBhbmQgdXNlIHRoZSBtaXhpbiBldmVyeXdoZXJlIGVsc2UgYmVjYXVzZSBpdCdzIG11Y2ggbW9yZSBlbGVnYW50LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZXNzYWdlIC0gTWVzc2FnZSB0byBsb2dcbi8vL1xuQG1peGluIGxvZygkbWVzc2FnZSkge1xuICBAaWYgaW0tbG9nKCRtZXNzYWdlKSB7fVxufVxuXG5cbi8vL1xuLy8vIEZ1bmN0aW9uIHdpdGggbm8gYEByZXR1cm5gIGNhbGxlZCBuZXh0IHRvIGBAd2FybmAgaW4gU2FzcyAzLjNcbi8vLyB0byB0cmlnZ2VyIGEgY29tcGlsaW5nIGVycm9yIGFuZCBzdG9wIHRoZSBwcm9jZXNzLlxuLy8vXG5AZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8vL1xuLy8vIERldGVybWluZXMgd2hldGhlciBhIGxpc3Qgb2YgY29uZGl0aW9ucyBpcyBpbnRlcmNlcHRlZCBieSB0aGUgc3RhdGljIGJyZWFrcG9pbnQuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICAgJGNvbmRpdGlvbnMgIC0gTWVkaWEgcXVlcnkgY29uZGl0aW9uc1xuLy8vXG4vLy8gQHJldHVybiB7Qm9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmRpdGlvbnMgYXJlIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludFxuLy8vXG5AZnVuY3Rpb24gaW0taW50ZXJjZXB0cy1zdGF0aWMtYnJlYWtwb2ludCgkY29uZGl0aW9ucy4uLikge1xuICAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRpbS1uby1tZWRpYS1icmVha3BvaW50KTtcblxuICBAaWYgbm90ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlIHtcbiAgICBAaWYgaW0tbG9nKCdgI3skaW0tbm8tbWVkaWEtYnJlYWtwb2ludH1gIGlzIG5vdCBhIHZhbGlkIGJyZWFrcG9pbnQuJykge31cbiAgfVxuXG4gIEBlYWNoICRjb25kaXRpb24gaW4gJGNvbmRpdGlvbnMge1xuICAgIEBpZiBub3QgbWFwLWhhcy1rZXkoJG1lZGlhLWV4cHJlc3Npb25zLCAkY29uZGl0aW9uKSB7XG4gICAgICAkb3BlcmF0b3I6IGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRjb25kaXRpb24pO1xuICAgICAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XG4gICAgICAkdmFsdWU6IGdldC1leHByZXNzaW9uLXZhbHVlKCRjb25kaXRpb24sICRvcGVyYXRvcik7XG5cbiAgICAgIEBpZiAoJHByZWZpeCA9PSAnbWF4JyBhbmQgJHZhbHVlIDw9ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSBvclxuICAgICAgICAgICgkcHJlZml4ID09ICdtaW4nIGFuZCAkdmFsdWUgPiAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSkge1xuICAgICAgICBAcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgbm90IGluZGV4KCRpbS1uby1tZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy9cbi8vLyBQYXJzaW5nIGVuZ2luZVxuLy8vIEBhdXRob3IgS2l0dHkgR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBHZXQgb3BlcmF0b3Igb2YgYW4gZXhwcmVzc2lvblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IG9wZXJhdG9yIGZyb21cbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBBbnkgb2YgYD49YCwgYD5gLCBgPD1gLCBgPGAsIGDiiaVgLCBg4omkYFxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGV4cHJlc3Npb24pIHtcbiAgQGVhY2ggJG9wZXJhdG9yIGluICgnPj0nLCAnPicsICc8PScsICc8JywgJ+KJpScsICfiiaQnKSB7XG4gICAgQGlmIHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XG4gICAgICBAcmV0dXJuICRvcGVyYXRvcjtcbiAgICB9XG4gIH1cblxuICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXG4gIC8vIHJlbHkgb24gdGhlIGBpbS1sb2coLi4pYCBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgYGxvZyguLilgIG1peGluLiBCZWNhdXNlXG4gIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxuICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxuICAvLyBTYXNzIDMuMywgY2hhbmdlIHRoaXMgbGluZSBpbiBgQGlmIGltLWxvZyguLikge31gIGluc3RlYWQuXG4gICRfOiBpbS1sb2coJ05vIG9wZXJhdG9yIGZvdW5kIGluIGAjeyRleHByZXNzaW9ufWAuJyk7XG59XG5cblxuLy8vXG4vLy8gR2V0IGRpbWVuc2lvbiBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3QgZGltZW5zaW9uIGZyb21cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3IgZnJvbSBgJGV4cHJlc3Npb25gXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYHdpZHRoYCBvciBgaGVpZ2h0YCAob3IgcG90ZW50aWFsbHkgYW55dGhpbmcgZWxzZSlcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XG4gICRvcGVyYXRvci1pbmRleDogc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuICAkcGFyc2VkLWRpbWVuc2lvbjogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAwLCAkb3BlcmF0b3ItaW5kZXggLSAxKTtcbiAgJGRpbWVuc2lvbjogJ3dpZHRoJztcblxuICBAaWYgc3RyLWxlbmd0aCgkcGFyc2VkLWRpbWVuc2lvbikgPiAwIHtcbiAgICAkZGltZW5zaW9uOiAkcGFyc2VkLWRpbWVuc2lvbjtcbiAgfVxuXG4gIEByZXR1cm4gJGRpbWVuc2lvbjtcbn1cblxuXG4vLy9cbi8vLyBHZXQgZGltZW5zaW9uIHByZWZpeCBiYXNlZCBvbiBhbiBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYG1pbmAgb3IgYG1heGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpIHtcbiAgQHJldHVybiBpZihpbmRleCgoJzwnLCAnPD0nLCAn4omkJyksICRvcGVyYXRvciksICdtYXgnLCAnbWluJyk7XG59XG5cblxuLy8vXG4vLy8gR2V0IHZhbHVlIG9mIGFuIGV4cHJlc3Npb24sIGJhc2VkIG9uIGEgZm91bmQgb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIEEgbnVtZXJpYyB2YWx1ZVxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHZhbHVlOiBzdHItc2xpY2UoJGV4cHJlc3Npb24sICRvcGVyYXRvci1pbmRleCArIHN0ci1sZW5ndGgoJG9wZXJhdG9yKSk7XG5cbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgJHZhbHVlOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHZhbHVlKTtcbiAgfSBAZWxzZSB7XG4gICAgJHZhbHVlOiB0by1udW1iZXIoJHZhbHVlKTtcbiAgfVxuXG4gICRpbnRlcnZhbDogbWFwLWdldCgkdW5pdC1pbnRlcnZhbHMsIHVuaXQoJHZhbHVlKSk7XG5cbiAgQGlmIG5vdCAkaW50ZXJ2YWwge1xuICAgIC8vIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbmNsdWRlIGEgbWl4aW4gaW5zaWRlIGEgZnVuY3Rpb24sIHNvIHdlIGhhdmUgdG9cbiAgICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAgIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxuICAgIC8vIGEgZHVtbXkgdmFyaWFibGUsIHN1Y2ggYXMgYCRfYC4gSWYgYW55Ym9keSBldmVyIHJhaXNlIGEgc2NvcGluZyBpc3N1ZSB3aXRoXG4gICAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAgICRfOiBpbS1sb2coJ1Vua25vd24gdW5pdCBgI3t1bml0KCR2YWx1ZSl9YC4nKTtcbiAgfVxuXG4gIEBpZiAkb3BlcmF0b3IgPT0gJz4nIHtcbiAgICAkdmFsdWU6ICR2YWx1ZSArICRpbnRlcnZhbDtcbiAgfSBAZWxzZSBpZiAkb3BlcmF0b3IgPT0gJzwnIHtcbiAgICAkdmFsdWU6ICR2YWx1ZSAtICRpbnRlcnZhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5cbi8vL1xuLy8vIFBhcnNlIGFuIGV4cHJlc3Npb24gdG8gcmV0dXJuIGEgdmFsaWQgbWVkaWEtcXVlcnkgZXhwcmVzc2lvblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBwYXJzZVxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIFZhbGlkIG1lZGlhIHF1ZXJ5XG4vLy9cbkBmdW5jdGlvbiBwYXJzZS1leHByZXNzaW9uKCRleHByZXNzaW9uKSB7XG4gIC8vIElmIGl0IGlzIHBhcnQgb2YgJG1lZGlhLWV4cHJlc3Npb25zLCBpdCBoYXMgbm8gb3BlcmF0b3JcbiAgLy8gdGhlbiB0aGVyZSBpcyBubyBuZWVkIHRvIGdvIGFueSBmdXJ0aGVyLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcbiAgQGlmIG1hcC1oYXMta2V5KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1lZGlhLWV4cHJlc3Npb25zLCAkZXhwcmVzc2lvbik7XG4gIH1cblxuICAkb3BlcmF0b3I6IGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKTtcbiAgJGRpbWVuc2lvbjogZ2V0LWV4cHJlc3Npb24tZGltZW5zaW9uKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuICAkcHJlZml4OiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKTtcbiAgJHZhbHVlOiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcblxuICBAcmV0dXJuICcoI3skcHJlZml4fS0jeyRkaW1lbnNpb259OiAjeyR2YWx1ZX0pJztcbn1cblxuLy8vXG4vLy8gU2xpY2UgYCRsaXN0YCBiZXR3ZWVuIGAkc3RhcnRgIGFuZCBgJGVuZGAgaW5kZXhlc1xuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gTGlzdCB0byBzbGljZVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3RhcnQgWzFdIC0gU3RhcnQgaW5kZXhcbi8vLyBAcGFyYW0ge051bWJlcn0gJGVuZCBbbGVuZ3RoKCRsaXN0KV0gLSBFbmQgaW5kZXhcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9IFNsaWNlZCBsaXN0XG4vLy9cbkBmdW5jdGlvbiBzbGljZSgkbGlzdCwgJHN0YXJ0OiAxLCAkZW5kOiBsZW5ndGgoJGxpc3QpKSB7XG4gIEBpZiBsZW5ndGgoJGxpc3QpIDwgMSBvciAkc3RhcnQgPiAkZW5kIHtcbiAgICBAcmV0dXJuICgpO1xuICB9XG5cbiAgJHJlc3VsdDogKCk7XG5cbiAgQGZvciAkaSBmcm9tICRzdGFydCB0aHJvdWdoICRlbmQge1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBudGgoJGxpc3QsICRpKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbi8vLy9cbi8vLyBTdHJpbmcgdG8gbnVtYmVyIGNvbnZlcnRlclxuLy8vIEBhdXRob3IgS2l0dHkgR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBDYXN0cyBhIHN0cmluZyBpbnRvIGEgbnVtYmVyXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYmUgcGFyc2VkXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy9cbkBmdW5jdGlvbiB0by1udW1iZXIoJHZhbHVlKSB7XG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XG4gICAgJF86IGltLWxvZygnVmFsdWUgZm9yIGB0by1udW1iZXJgIHNob3VsZCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcbiAgfVxuXG4gICRmaXJzdC1jaGFyYWN0ZXI6IHN0ci1zbGljZSgkdmFsdWUsIDEsIDEpO1xuICAkcmVzdWx0OiAwO1xuICAkZGlnaXRzOiAwO1xuICAkbWludXM6ICgkZmlyc3QtY2hhcmFjdGVyID09ICctJyk7XG4gICRudW1iZXJzOiAoJzAnOiAwLCAnMSc6IDEsICcyJzogMiwgJzMnOiAzLCAnNCc6IDQsICc1JzogNSwgJzYnOiA2LCAnNyc6IDcsICc4JzogOCwgJzknOiA5KTtcblxuICAvLyBSZW1vdmUgKy8tIHNpZ24gaWYgcHJlc2VudCBhdCBmaXJzdCBjaGFyYWN0ZXJcbiAgQGlmICgkZmlyc3QtY2hhcmFjdGVyID09ICcrJyBvciAkZmlyc3QtY2hhcmFjdGVyID09ICctJykge1xuICAgICR2YWx1ZTogc3RyLXNsaWNlKCR2YWx1ZSwgMik7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0ci1sZW5ndGgoJHZhbHVlKSB7XG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgJGksICRpKTtcblxuICAgIEBpZiBub3QgKGluZGV4KG1hcC1rZXlzKCRudW1iZXJzKSwgJGNoYXJhY3Rlcikgb3IgJGNoYXJhY3RlciA9PSAnLicpIHtcbiAgICAgIEByZXR1cm4gdG8tbGVuZ3RoKGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpLCBzdHItc2xpY2UoJHZhbHVlLCAkaSkpXG4gICAgfVxuXG4gICAgQGlmICRjaGFyYWN0ZXIgPT0gJy4nIHtcbiAgICAgICRkaWdpdHM6IDE7XG4gICAgfSBAZWxzZSBpZiAkZGlnaXRzID09IDAge1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwICsgbWFwLWdldCgkbnVtYmVycywgJGNoYXJhY3Rlcik7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZGlnaXRzOiAkZGlnaXRzICogMTA7XG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgbWFwLWdldCgkbnVtYmVycywgJGNoYXJhY3RlcikgLyAkZGlnaXRzO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCk7XG59XG5cblxuLy8vXG4vLy8gQWRkIGAkdW5pdGAgdG8gYCR2YWx1ZWBcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBhZGQgdW5pdCB0b1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdW5pdCAtIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdW5pdFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIGAkdmFsdWVgIGV4cHJlc3NlZCBpbiBgJHVuaXRgXG4vLy9cbkBmdW5jdGlvbiB0by1sZW5ndGgoJHZhbHVlLCAkdW5pdCkge1xuICAkdW5pdHM6ICgncHgnOiAxcHgsICdjbSc6IDFjbSwgJ21tJzogMW1tLCAnJSc6IDElLCAnY2gnOiAxY2gsICdwYyc6IDFwYywgJ2luJzogMWluLCAnZW0nOiAxZW0sICdyZW0nOiAxcmVtLCAncHQnOiAxcHQsICdleCc6IDFleCwgJ3Z3JzogMXZ3LCAndmgnOiAxdmgsICd2bWluJzogMXZtaW4sICd2bWF4JzogMXZtYXgpO1xuXG4gIEBpZiBub3QgaW5kZXgobWFwLWtleXMoJHVuaXRzKSwgJHVuaXQpIHtcbiAgICAkXzogaW0tbG9nKCdJbnZhbGlkIHVuaXQgYCN7JHVuaXR9YC4nKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlICogbWFwLWdldCgkdW5pdHMsICR1bml0KTtcbn1cblxuLy8vXG4vLy8gVGhpcyBtaXhpbiBhaW1zIGF0IHJlZGVmaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24ganVzdCBmb3IgdGhlIHNjb3BlIG9mXG4vLy8gdGhlIGNhbGwuIEl0IGlzIGhlbHBmdWwgd2hlbiBoYXZpbmcgYSBjb21wb25lbnQgbmVlZGluZyBhbiBleHRlbmRlZFxuLy8vIGNvbmZpZ3VyYXRpb24gc3VjaCBhcyBjdXN0b20gYnJlYWtwb2ludHMgKHJlZmVycmVkIHRvIGFzIHR3ZWFrcG9pbnRzKVxuLy8vIGZvciBpbnN0YW5jZS5cbi8vL1xuLy8vIEBhdXRob3IgS2l0dHkgR2lyYXVkZWxcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkdHdlYWtwb2ludHMgWygpXSAtIE1hcCBvZiB0d2Vha3BvaW50cyB0byBiZSBtZXJnZWQgd2l0aCBgJGJyZWFrcG9pbnRzYFxuLy8vIEBwYXJhbSB7TWFwfSAkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnMgWygpXSAtIE1hcCBvZiB0d2Vha2VkIG1lZGlhIGV4cHJlc3Npb25zIHRvIGJlIG1lcmdlZCB3aXRoIGAkbWVkaWEtZXhwcmVzc2lvbmBcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBicmVha3BvaW50cyB3aXRoIGEgdHdlYWtwb2ludFxuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCgnY3VzdG9tJzogNjc4cHgpKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJywgJzw9Y3VzdG9tJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCB0aGUgZ2xvYmFsIG1lZGlhIGV4cHJlc3Npb25zIHdpdGggYSBjdXN0b20gb25lXG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zOiAoJ2FsbCc6ICdhbGwnKSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIGJvdGggY29uZmlndXJhdGlvbiBtYXBzXG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoKCdjdXN0b20nOiA2NzhweCksICgnYWxsJzogJ2FsbCcpKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnYWxsJywgJz5waG9uZScsICc8PWN1c3RvbScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuQG1peGluIG1lZGlhLWNvbnRleHQoJHR3ZWFrcG9pbnRzOiAoKSwgJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zOiAoKSkge1xuICAvLyBTYXZlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRnbG9iYWwtYnJlYWtwb2ludHM6ICRicmVha3BvaW50cztcbiAgJGdsb2JhbC1tZWRpYS1leHByZXNzaW9uczogJG1lZGlhLWV4cHJlc3Npb25zO1xuXG4gIC8vIFVwZGF0ZSBnbG9iYWwgY29uZmlndXJhdGlvblxuICAkYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICR0d2Vha3BvaW50cykgIWdsb2JhbDtcbiAgJG1lZGlhLWV4cHJlc3Npb25zOiBtYXAtbWVyZ2UoJG1lZGlhLWV4cHJlc3Npb25zLCAkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnMpICFnbG9iYWw7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgLy8gUmVzdG9yZSBnbG9iYWwgY29uZmlndXJhdGlvblxuICAkYnJlYWtwb2ludHM6ICRnbG9iYWwtYnJlYWtwb2ludHMgIWdsb2JhbDtcbiAgJG1lZGlhLWV4cHJlc3Npb25zOiAkZ2xvYmFsLW1lZGlhLWV4cHJlc3Npb25zICFnbG9iYWw7XG59XG5cbi8vLy9cbi8vLyBpbmNsdWRlLW1lZGlhIHB1YmxpYyBleHBvc2VkIEFQSVxuLy8vIEBhdXRob3IgRWR1YXJkbyBCb3VjYXNcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vL1xuXG5cbi8vL1xuLy8vIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IGJhc2VkIG9uIGEgbGlzdCBvZiBjb25kaXRpb25zXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICAgJGNvbmRpdGlvbnMgIC0gTWVkaWEgcXVlcnkgY29uZGl0aW9uc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzaW5nbGUgc2V0IGJyZWFrcG9pbnRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggdHdvIHNldCBicmVha3BvaW50c1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJywgJzw9dGFibGV0JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBjdXN0b20gdmFsdWVzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PTM1OHB4JywgJzw4NTBweCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggc2V0IGJyZWFrcG9pbnRzIHdpdGggY3VzdG9tIHZhbHVlc1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPmRlc2t0b3AnLCAnPD0xMzUwcHgnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGEgc3RhdGljIGV4cHJlc3Npb25cbi8vLyAgQGluY2x1ZGUgbWVkaWEoJ3JldGluYTJ4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gTWl4aW5nIGV2ZXJ5dGhpbmdcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49MzUwcHgnLCAnPHRhYmxldCcsICdyZXRpbmEzeCcpIHsgfVxuLy8vXG5AbWl4aW4gbWVkaWEoJGNvbmRpdGlvbnMuLi4pIHtcbiAgQGlmICgkaW0tbWVkaWEtc3VwcG9ydCBhbmQgbGVuZ3RoKCRjb25kaXRpb25zKSA9PSAwKSBvclxuICAgICAgKG5vdCAkaW0tbWVkaWEtc3VwcG9ydCBhbmQgaW0taW50ZXJjZXB0cy1zdGF0aWMtYnJlYWtwb2ludCgkY29uZGl0aW9ucy4uLikpIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSBpZiAoJGltLW1lZGlhLXN1cHBvcnQgYW5kIGxlbmd0aCgkY29uZGl0aW9ucykgPiAwKSB7XG4gICAgQG1lZGlhICN7dW5xdW90ZShwYXJzZS1leHByZXNzaW9uKG50aCgkY29uZGl0aW9ucywgMSkpKX0ge1xuICAgICAgLy8gUmVjdXJzaXZlIGNhbGxcbiAgICAgIEBpbmNsdWRlIG1lZGlhKHNsaWNlKCRjb25kaXRpb25zLCAyKS4uLikge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIGxpc3QgcmVzZXRcbiVsaXN0cmVzZXQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi8vIGNsZWFyZml4XG4lY2xlYXJmaXgge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbn1cblxuLmNsZWFyZml4IHtcbiAgICBAZXh0ZW5kICVjbGVhcmZpeDtcbn1cblxuLy8gdHJhbnNpdGlvblxuJXRyYW5zaXRpb24ge1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xufVxuXG4vLyBqdXN0aWZ5IG5hdlxuJWp1c3RpZnkge1xuICAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICAgZm9udC1zaXplOiAxcHg7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG5cbiAgICA+KiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgfVxufVxuXG4lYmdDb3ZlciB7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbn1cblxuJWFic29sdXRlQ292ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG59XG5cbi8vLyAqIEhlbHBlciBjbGFzcyB0byB0cnVuY2F0ZSBhbmQgYWRkIGVsbGlwc2lzIHRvIGEgc3RyaW5nIHRvbyBsb25nIGZvciBpdCB0byBmaXRcbi8vLyAqIG9uIGEgc2luZ2xlIGxpbmUuXG4vLy8gKiAxLiBQcmV2ZW50IGNvbnRlbnQgZnJvbSB3cmFwcGluZywgZm9yY2luZyBpdCBvbiBhIHNpbmdsZSBsaW5lLlxuLy8vICogMi4gQWRkIGVsbGlwc2lzIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuXG5cbi5lbGxpcHNpcyB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAvKiAxICovXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgLyogMiAqL1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kZi1yb3cge1xuICAgIEBpbmNsdWRlIGFkZC1wYXJhbXMoKTtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQoKTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIG1hcmdpbjogMCAoLSRndXR0ZXIpO1xuXG4gICAgW2NsYXNzKj1cImNvbC1cIl0ge1xuICAgICAgICBwYWRkaW5nOiAwICRndXR0ZXI7XG4gICAgfVxufSIsIi8vIHZlcnRpY2FsIGFsaWduIGVsIGluc2lkZSBwYXJlbnQgd2l0aCBmaXhlZCBoZWlnaHQvbWluLWhlaWdodFxuLy8gdXNhZ2Vcbi8vIGh0bWwgLSAucGFyZW50Pi5jaGlsZFxuLy8gc2NzcyAtIEBpbmNsdWRlIHYtYWxpZ247XG4vLyAgICAgb3IgQGluY2x1ZGUgdi1hbGlnbigyNTBweCk7XG4vLyAgICAgb3IgQGluY2x1ZGUgdi1hbGlnbigyNTBweCwgYm90dG9tLCBiZWZvcmUpO1xuLy9cbkBtaXhpbiB2LWFsaWduKCR2YS1oZWlnaHQ6IDEwMCUsICR2YS1kaXJlY3Rpb246IG1pZGRsZSwgJHZhLXBzZXVkbzogYWZ0ZXIpIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICY6I3skdmEtcHNldWRvfSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiAkdmEtZGlyZWN0aW9uO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogJHZhLWhlaWdodDtcbiAgICB9XG5cbiAgICA+KiB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmVydGljYWwtYWxpZ246ICR2YS1kaXJlY3Rpb247XG4gICAgICAgIG1heC13aWR0aDogOTklO1xuICAgIH1cbn1cblxuLy8gdmVydGljYWwgYWxpZ24gYSBwYWlyIG9mIGNoaWxkIGVsIGluc2lkZSBwYXJlbnRcbi8vIHVzYWdlXG4vLyBodG1sIC0gLnBvc3Q+LmltYWdlKy50ZXh0XG4vLyBzY3NzIC0gQGluY2x1ZGUgdi1hbGlnbi1wYWlyKGltYWdlLCB0ZXh0KTtcbi8vICAgICBvciBAaW5jbHVkZSB2LWFsaWduLXBhaXIoaW1hZ2UsIHRleHQsIGJvdHRvbSk7XG4vLyAgICAgb3IgQGluY2x1ZGUgdi1hbGlnbi1wYWlyKGltYWdlLCB0ZXh0LCBtaWRkbGUsIDIwMHB4KTtcbi8vXG5AbWl4aW4gdi1hbGlnbi1wYWlyKCRjaGlsZC1uYW1lMSwgJGNoaWxkLW5hbWUyLCAkdmFsaWduOiBtaWRkbGUsICR3aWR0aDE6IGF1dG8sICR3aWR0aDI6IGF1dG8pIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcblxuICAgIC4jeyRjaGlsZC1uYW1lMX0ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogJHZhbGlnbjtcbiAgICAgICAgd2lkdGg6ICR3aWR0aDE7XG4gICAgfVxuXG4gICAgLiN7JGNoaWxkLW5hbWUyfSB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiAkdmFsaWduO1xuICAgICAgICB3aWR0aDogJHdpZHRoMjtcbiAgICB9XG59XG5cbi8vIHZlcnRpY2FsIGFsaWduIGVsXG4vLyB1c2FnZTogQGluY2x1ZGUgdmVydGljYWwtYWxpZ24tZWw7XG4vL1xuQG1peGluIHZlcnRpY2FsLWFsaWduLWVsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vLy8gTWl4aW4gaGVscGluZyBkZWZpbmluZyBib3RoIGB3aWR0aGAgYW5kIGBoZWlnaHRgIHNpbXVsdGFuZW91c2x5LlxuLy8vXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG4vLy8gQHBhcmFtIHtMZW5ndGh9ICR3aWR0aCAtIEVsZW1lbnTigJlzIGB3aWR0aGBcbi8vLyBAcGFyYW0ge0xlbmd0aH0gJGhlaWdodCAoJHdpZHRoKSAtIEVsZW1lbnTigJlzIGBoZWlnaHRgXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5mb28ge1xuLy8vICAgICBAaW5jbHVkZSBzaXplKDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuYmFyIHtcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZSgxMDAlLCAxMGVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBvdXRwdXRcbi8vLyAgIC5mb28ge1xuLy8vICAgICB3aWR0aDogMTBlbTtcbi8vLyAgICAgaGVpZ2h0OiAxMGVtO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuYmFyIHtcbi8vLyAgICAgd2lkdGg6IDEwMCU7XG4vLy8gICAgIGhlaWdodDogMTBlbTtcbi8vLyAgIH1cbi8vL1xuQG1peGluIHNpemUoJHdpZHRoLCAkaGVpZ2h0OiAkd2lkdGgpIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGhlaWdodDogJGhlaWdodDtcbn1cblxuLy8vIGZvbnQtc21vdGhpbmdcbi8vLyBAaW5jbHVkZSBmb250LXNtb290aGluZyhvbik7XG4vLy8gQGluY2x1ZGUgZm9udC1zbW9vdGhpbmcob2ZmKTtcbkBtaXhpbiBmb250LXNtb290aGluZygkdmFsdWU6IG9uKSB7XG4gICAgQGlmICR2YWx1ZSA9PW9uIHtcbiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBzdWJwaXhlbC1hbnRpYWxpYXNlZDtcbiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGF1dG87XG4gICAgfVxufVxuXG5cbi8vLyBIaWRlcyB0aGUgdGV4dCBpbiBhbiBlbGVtZW50LCBjb21tb25seSB1c2VkIHRvIHNob3cgYW4gaW1hZ2UuIFNvbWUgZWxlbWVudHMgd2lsbCBuZWVkIGJsb2NrLWxldmVsIHN0eWxlcyBhcHBsaWVkLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL3plbGRtYW4uY29tLzIwMTIvMDMvMDEvcmVwbGFjaW5nLXRoZS05OTk5cHgtaGFjay1uZXctaW1hZ2UtcmVwbGFjZW1lbnRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XG4vLy8gICAgIHRleHQtaW5kZW50OiAxMDElO1xuLy8vICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuLy8vICAgfVxuLy8vXG5AbWl4aW4gaGlkZS10ZXh0IHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtaW5kZW50OiAxMDElO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cblxuLy8vIENyZWF0ZXMgYSB2aXN1YWwgdHJpYW5nbGUuXG4vLy8gTWl4aW4gdGFrZXMgKCRzaXplLCAkY29sb3IsICRkaXJlY3Rpb24pXG4vLy8gVGhlICRzaXplIGFyZ3VtZW50IGNhbiB0YWtlIG9uZSBvciB0d28gdmFsdWVz4oCUd2lkdGggaGVpZ2h0LlxuLy8vIFRoZSAkY29sb3IgYXJndW1lbnQgY2FuIHRha2Ugb25lIG9yIHR3b1xuLy8vIHZhbHVlc+KAlGZvcmVncm91bmQtY29sb3IgYmFja2dyb3VuZC1jb2xvci5cbi8vL1xuLy8vIEBhdXRob3IgaHR0cDovL2JvdXJib24uaW8vZG9jcy8jdHJpYW5nbGVcbi8vL1xuLy8vICRkaXJlY3Rpb246XG4vLy8gdXAsIGRvd24sIGxlZnQsIHJpZ2h0LCB1cC1yaWdodCwgdXAtbGVmdCwgZG93bi1yaWdodCwgZG93bi1sZWZ0XG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICBAaW5jbHVkZSB0cmlhbmdsZSgxMnB4LCBncmF5LCBkb3duKTtcbi8vLyAgIEBpbmNsdWRlIHRyaWFuZ2xlKDEycHggNnB4LCBncmF5IGJsdWUsIHVwLWxlZnQpO1xuLy8vXG5AbWl4aW4gdHJpYW5nbGUoJHNpemUsICRjb2xvciwgJGRpcmVjdGlvbikge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIGxlbmd0aCgkc2l6ZSkpO1xuICAgICRmb3JlZ3JvdW5kLWNvbG9yOiBudGgoJGNvbG9yLCAxKTtcbiAgICAkYmFja2dyb3VuZC1jb2xvcjogaWYobGVuZ3RoKCRjb2xvcik9PTIsIG50aCgkY29sb3IsIDIpLCB0cmFuc3BhcmVudCk7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuXG4gICAgQGlmICgkZGlyZWN0aW9uID09dXApIG9yICgkZGlyZWN0aW9uID09ZG93bikgb3IgKCRkaXJlY3Rpb24gPT1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT1sZWZ0KSB7XG4gICAgICAgICR3aWR0aDogJHdpZHRoIC8gMjtcbiAgICAgICAgJGhlaWdodDogaWYobGVuZ3RoKCRzaXplKSA+IDEsICRoZWlnaHQsICRoZWlnaHQvMik7XG5cbiAgICAgICAgQGlmICRkaXJlY3Rpb24gPT11cCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PXJpZ2h0IHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PWRvd24ge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT1sZWZ0IHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICgkZGlyZWN0aW9uID09dXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09dXAtbGVmdCkge1xuICAgICAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgICAgIEBpZiAkZGlyZWN0aW9uID09dXAtcmlnaHQge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT11cC1sZWZ0IHtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT1kb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PWRvd24tbGVmdCkge1xuICAgICAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgICAgIEBpZiAkZGlyZWN0aW9uID09ZG93bi1yaWdodCB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PWRvd24tbGVmdCB7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICgkZGlyZWN0aW9uID09aW5zZXQtdXApIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PWluc2V0LWRvd24pIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkZm9yZWdyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PWluc2V0LXJpZ2h0KSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT1pbnNldC1sZWZ0KSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XG4gICAgfVxufVxuXG5cbi8vLyBBbmltYXRlIGNzcyBwcm9wZXJ0aWVzXG4vLyB1c2FnZVxuLy8gc2NzcyAtIEBpbmNsdWRlIGFuaW1hdGUoY29sb3IpO1xuLy8gICAgIG9yIEBpbmNsdWRlIGFuaW1hdGUoY29sb3Igd2lkdGgpO1xuLy8gICAgIG9yIEBpbmNsdWRlIGFuaW1hdGUoY29sb3Igd2lkdGgsIDFzLCBsaW5lYXIpO1xuLy9cbiRhbmltYXRpb24tc3BlZWQ6IDAuM3MgIWRlZmF1bHQ7XG5cbkBtaXhpbiBhbmltYXRlKCRwcm9wZXJ0aWVzLCAkZHVyYXRpb246ICRhbmltYXRpb24tc3BlZWQsICRlYXNpbmc6IGVhc2UtaW4tb3V0KSB7XG4gICAgJGxpc3Q6ICgpO1xuXG4gICAgQGVhY2ggJHByb3AgaW4gJHByb3BlcnRpZXMge1xuICAgICAgICAkc3RyOiAjeyRwcm9wfSAjeyRkdXJhdGlvbn0gI3skZWFzaW5nfTtcbiAgICAgICAgJGxpc3Q6IGpvaW4oJGxpc3QsICN7JHN0cn0sIGNvbW1hKTtcbiAgICB9XG5cbiAgICB0cmFuc2l0aW9uOiAkbGlzdDtcbn1cblxuXG4vLy8gTWl4aW4gZm9yIHN0eWxpbmcgZm9ybS1wbGFjZWhvbGRlcnNcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIEBpbmNsdWRlIHBsYWNlaG9sZGVyIHtcbi8vLyAgICBjb2xvcjogIzMzMztcbi8vLyAgIH1cbi8vL1xuLy8vICAgaW5wdXRbdHlwZT0ndGV4dCddLFxuLy8vICAgaW5wdXRbdHlwZT0ndGVsJ10sXG4vLy8gICBpbnB1dFt0eXBlPSdlbWFpbCddIHtcbi8vLyAgICAgQGluY2x1ZGUgcGxhY2Vob2xkZXIge1xuLy8vICAgICAgY29sb3I6IHJlZDtcbi8vLyAgICAgfVxuLy8vICAgfVxuXG5AbWl4aW4gcGxhY2Vob2xkZXIge1xuICAgICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAmOjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgJjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAmLnBsYWNlaG9sZGVyIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vLy8gRm9udC1zaXplIHB4IHRvIHJlbSBjYWxjXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gc2VsZWN0b3Ige1xuLy8vICAgIEBpbmNsdWRlIHJlbS1mb250LXNpemUoMTZweCk7XG4vLy8gfVxuXG5AbWl4aW4gcmVtLWZvbnQtc2l6ZSgkcHgtc2l6ZSkge1xuICAgIGZvbnQtc2l6ZTogJHB4LXNpemU7XG4gICAgZm9udC1zaXplOiAoJHB4LXNpemUgLyAxMHB4KSArIHJlbTtcbn1cblxuLy9mb250LWZhY2VcbkBtaXhpbiBmb250LWZhY2UoJGZvbnQtbmFtZSwgJGZvbnQtcGF0aCwgJHdlaWdodCwgJHN0eWxlKSB7XG4gICAgQGZvbnQtZmFjZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnI3skZm9udC1uYW1lfSc7XG4gICAgICAgIHNyYzogdXJsKCcuLi9mb250cy8jeyRmb250LXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICAgICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIH1cbn1cblxuLy8gQnV0dG9uIHNpemVzXG5AbWl4aW4gYnV0dG9uLWNvbG9yKCRidG4tYmFja2dyb3VuZCwgJGJ0bi1jb2xvciwgJGJ0bi1ib3JkZXIsICRidG4taG92ZXItYmFja2dyb3VuZCwgJGJ0bi1ob3Zlci1ib3JkZXIsICRidG4taG92ZXItY29sb3IpIHtcbiAgICBiYWNrZ3JvdW5kOiAkYnRuLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRidG4tY29sb3I7XG4gICAgYm9yZGVyOiAkYnRuLWJvcmRlcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYnRuLWhvdmVyLWJhY2tncm91bmQ7XG4gICAgICAgIGNvbG9yOiAkYnRuLWhvdmVyLWNvbG9yO1xuICAgICAgICBib3JkZXI6ICRidG4taG92ZXItYm9yZGVyO1xuICAgIH1cbn1cblxuQG1peGluIGFkZC1wYXJhbXMoKSB7XG5cbiAgICBAZWFjaCAkdmFsLFxuICAgICRtZWRpYSBpbiAkZ3JpZCB7XG4gICAgICAgICYuZGYtcnItI3skdmFsfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgn4omlJyArICRtZWRpYSkge1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuZGYtYWljLSN7JHZhbH0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJ+KJpScgKyAkbWVkaWEpIHtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBmbGV4IGdyaWRcbkBtaXhpbiBmbGV4LWdyaWQoKSB7XG5cbiAgICBAZWFjaCAkdmFsLFxuICAgICRtZWRpYSBpbiAkZ3JpZCB7XG4gICAgICAgIEBmb3IgJGd1dHRlciBmcm9tIDEgdGhyb3VnaCAxMiB7XG4gICAgICAgICAgICAuY29sLSN7JHZhbH0tI3skZ3V0dGVyfSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJ+KJpScgKyAkbWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleDogMSAwIGNhbGMoMTAwJSAvIDEyICogI3skZ3V0dGVyfSk7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC8gMTIgKiAjeyRndXR0ZXJ9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAZm9yICRndXR0ZXIgZnJvbSAwIHRocm91Z2ggMTEge1xuICAgICAgICAgICAgLmNvbC1vZmZzZXQtI3skdmFsfS0jeyRndXR0ZXJ9IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgn4omlJyArICRtZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygxMDAlIC8gMTIgKiAjeyRndXR0ZXJ9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiB2LWNlbnRlcigkbWluLWhlaWdodDogNDAwcHgpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgPioge1xuICAgICAgICBtaW4taGVpZ2h0OiAkbWluLWhlaWdodDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuLy8gb2JqZWN0IGZpdCBmb3IgaW1hZ2VcbkBtaXhpbiBpbWctc2NhbGUge1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLy8gQG1peGluIHNjcm9sbC1jdXN0b20oJHdpZHRoOiA4cHgsICRoZWlnaHQ6IDhweCwgJHNjcm9sbC1iZzogI2U5ZTllOSwgJHNjcm9sbC1zbGlkZXItYmc6ICNhMWE1YWQpIHtcbkBtaXhpbiBzY3JvbGwtY3VzdG9tKCR3aWR0aDogNXB4LCAkaGVpZ2h0OiA1cHgsICRzY3JvbGwtYmc6ICNmZmYsICRzY3JvbGwtc2xpZGVyLWJnOiByZ2JhKCNCNEI0QjQsIDEpKSB7XG4gICAgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgICAgYmFja2dyb3VuZDogJHNjcm9sbC1iZztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogY2FsYygjeyR3aWR0aH0gLyAyKTtcbiAgICAgICAgbWFyZ2luOiAwIDZweCAwIDA7XG4gICAgfVxuICAgIFxuICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgICBib3JkZXItcmFkaXVzOiBjYWxjKCN7JHdpZHRofSAvIDIpO1xuICAgICAgICAvLyBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL3RyYWNrLmpwZykgdG9wIGNlbnRlciByZXBlYXQteTtcbiAgICB9XG4gICAgXG4gICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgYmFja2dyb3VuZDogJHNjcm9sbC1zbGlkZXItYmc7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGNhbGMoI3skd2lkdGh9IC8gMik7XG4gICAgfVxufSIsIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGlzIGZpbGUgY29udGFpbnMgYWxsIEBmb250LWZhY2UgZGVjbGFyYXRpb25zLCBpZiBhbnkuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAgQEV4YW1wbGUgdXNhZ2Ugb2YgZm9udC1mYW1pbHkgbWl4aW47XG4vL1xuLy8gICRmb250LXByaW1hcnk6IChcbi8vICAgICdMaWdodCc6ICRmb250LXdlaWdodC1saWdodCxcbi8vICAgICdSZWd1bGFyJzogJGZvbnQtd2VpZ2h0LW5vcm1hbCxcbi8vICApO1xuLy9cbi8vICAkZm9udC1zZWNvbmRhcnk6IChcbi8vICAgICdUaGluJzogJGZvbnQtd2VpZ2h0LXRoaW4sXG4vLyAgICAnQm9sZCc6ICRmb250LXdlaWdodC1ib2xkLFxuLy8gICk7XG4vL1xuLy8gIEBwYXJhbSB7XG4vLyAgICAkZm9udE5hbWU6IEZpbGVuYW1lOiBzdHJpbmc7XG4vLyAgICAkZm9udFdlaWdodDogMTAwfDMwMHw0MDB8bm9ybWFsfGJvbGQ7XG4vLyAgICAkZm9udFN0eWxlOiBub3JtYWwvaXRhbGljL2V0Yztcbi8vICB9XG4vL1xuLy8gIC8vIEZpbGVuYW1lOiBCYXNlLVJlZ3VsYXIud29mZlxuLy8gIEBlYWNoICRzdWZmaXgsICR3ZWlnaHQgaW4gJGZvbnQtcHJpbWFyeSB7XG4vLyAgICBAaW5jbHVkZSBmb250ZmFjZSgnQmFzZScsICdCYXNlLSN7JHN1ZmZpeH0nLCAkd2VpZ2h0LCBub3JtYWwpO1xuLy8gIH1cbi8vXG4vLyAgQGVhY2ggJHN1ZmZpeCwgJHdlaWdodCBpbiAkZm9udC1zZWNvbmRhcnkge1xuLy8gICAgQGluY2x1ZGUgZm9udGZhY2UoJ1NlY29uZCBGb250JywgJyR7TG9jYWxGb250TmFtZX0tI3skc3VmZml4fScsICR3ZWlnaHQsIG5vcm1hbCk7XG4vLyAgICBAaW5jbHVkZSBmb250ZmFjZSgnU2Vjb25kIEZvbnQnLCAnJHtMb2NhbEZvbnROYW1lfS0jeyRzdWZmaXh9SXRhbGljJywgJHdlaWdodCwgaXRhbGljKTtcbi8vICB9XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBmb250LWZhY2UoJ21lc3RpemEnLCAnbWVzdGl6YV9zYW5zX3JlZ3VsYXItd2ViZm9udCcgLDQwMCwgbm9ybWFsKTsiLCIvLy8gY29sb3JzIGJsYWNrICYgd2hpdGVcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5teS1jbGFzcyB7XG4vLy8gICAgIGJhY2tncm91bmQ6IGJsYWNrKDAuMTUpO1xuLy8vICAgICBjb2xvcjogd2hpdGUoMC45KTtcbi8vLyAgIH1cbkBmdW5jdGlvbiBibGFjaygkb3BhY2l0eSkge1xuICAgIEByZXR1cm4gcmdiYShibGFjaywgJG9wYWNpdHkpO1xufVxuXG5AZnVuY3Rpb24gd2hpdGUoJG9wYWNpdHkpIHtcbiAgICBAcmV0dXJuIHJnYmEod2hpdGUsICRvcGFjaXR5KTtcbn1cblxuQG1peGluIHRpdGxlLXNpemUoJHN5bWJvbCkge1xuXG4gICAgQGVhY2ggJG1lZGlhLFxuICAgICR0aXRsZXMtc2l6ZSBpbiAkdGl0bGUtcGFsZXR0ZSB7XG4gICAgICAgIEBpZiAkbWVkaWEgPT1tb2JpbGUge1xuXG4gICAgICAgICAgICBAZWFjaCAkdGl0bGUsXG4gICAgICAgICAgICAkc2l6ZSBpbiAkdGl0bGVzLXNpemUge1xuXG4gICAgICAgICAgICAgICAgI3skdGl0bGV9LFxuICAgICAgICAgICAgICAgIC4jeyR0aXRsZX0ge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRzaXplICsgcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoI3skc3ltYm9sfSN7JG1lZGlhfSkge1xuXG4gICAgICAgICAgICAgICAgQGVhY2ggJHRpdGxlLFxuICAgICAgICAgICAgICAgICRzaXplIGluICR0aXRsZXMtc2l6ZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgI3skdGl0bGV9LFxuICAgICAgICAgICAgICAgICAgICAuI3skdGl0bGV9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHNpemUgKyBweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy9cbi8vIEBmdW5jdGlvbnNcbi8vXG5cbi8vIFNUUklQIFVOSVRcbi8vIEl0IHN0cmlwcyB0aGUgdW5pdCBvZiBtZWFzdXJlIGFuZCByZXR1cm5zIGl0XG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtKSB7XG4gICAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG59XG5cbi8vIENPTlZFUlQgVE8gUkVNXG5AZnVuY3Rpb24gY29udmVydC10by1yZW0oJHZhbHVlLCAkYmFzZS12YWx1ZTogJHJlbS1iYXNlKSB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlLXZhbHVlKSAqIDFyZW07XG5cbiAgICBAaWYgKCR2YWx1ZSA9PTByZW0pIHtcbiAgICAgICAgJHZhbHVlOiAwO1xuICAgIH1cblxuICAgIC8vIFR1cm4gMHJlbSBpbnRvIDBcbiAgICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8gUkVNIENBTENcblxuLy8gTmV3IFN5bnRheCwgYWxsb3dzIHRvIG9wdGlvbmFsbHkgY2FsY3VsYXRlIG9uIGEgZGlmZmVyZW50IGJhc2UgdmFsdWUgdG8gY291bnRlciBjb21wb3VuZGluZyBlZmZlY3Qgb2YgcmVtJ3MuXG4vLyBDYWxsIHdpdGggMSwgMiwgMyBvciA0IHBhcmFtZXRlcnMsICdweCcgaXMgbm90IHJlcXVpcmVkIGJ1dCBzdXBwb3J0ZWQ6XG4vL1xuLy8gICByZW0tY2FsYygxMCAyMCAzMHB4IDQwKTtcbi8vXG4vLyBTcGFjZSBkZWxpbWl0ZWQsIGlmIHlvdSB3YW50IHRvIGRlbGltaXQgdXNpbmcgY29tbWEncywgd3JhcCBpdCBpbiBhbm90aGVyIHBhaXIgb2YgYnJhY2tldHNcbi8vXG4vLyAgIHJlbS1jYWxjKCgxMCwgMjAsIDMwLCA0MHB4KSk7XG4vL1xuLy8gT3B0aW9uYWxseSBjYWxsIHdpdGggYSBkaWZmZXJlbnQgYmFzZSAoZWc6IDhweCkgdG8gY2FsY3VsYXRlIHJlbS5cbi8vXG4vLyAgIHJlbS1jYWxjKDE2cHggMzJweCA0OHB4LCA4cHgpO1xuLy9cbi8vIElmIHlvdSByZXF1aXJlIHRvIGNvbW1hIHNlcGFyYXRlIHlvdXIgbGlzdFxuLy9cbi8vICAgcmVtLWNhbGMoKDE2cHgsIDMycHgsIDQ4KSwgOHB4KTtcblxuQGZ1bmN0aW9uIHJlbS1jYWxjKCR2YWx1ZXMsICRiYXNlLXZhbHVlOiAkcmVtLWJhc2UpIHtcbiAgICAkbWF4OiBsZW5ndGgoJHZhbHVlcyk7XG5cbiAgICBAaWYgJG1heCA9PTEge1xuICAgICAgICBAcmV0dXJuIGNvbnZlcnQtdG8tcmVtKG50aCgkdmFsdWVzLCAxKSwgJGJhc2UtdmFsdWUpO1xuICAgIH1cblxuICAgICRyZW1WYWx1ZXM6IChcbiAgICApO1xuXG5AZm9yICRpIGZyb20gMSB0aHJvdWdoICRtYXgge1xuICAgICRyZW1WYWx1ZXM6IGFwcGVuZCgkcmVtVmFsdWVzLCBjb252ZXJ0LXRvLXJlbShudGgoJHZhbHVlcywgJGkpLCAkYmFzZS12YWx1ZSkpO1xufVxuXG5AcmV0dXJuICRyZW1WYWx1ZXM7XG59XG5cbkBmdW5jdGlvbiBlbS1jYWxjKCR2YWx1ZXMsICRiYXNlLXZhbHVlOiAkcmVtLWJhc2UpIHtcbiAgICAkcmVtVmFsdWVzOiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZS12YWx1ZTogJHJlbS1iYXNlKTtcblxuICAgICRtYXg6IGxlbmd0aCgkcmVtVmFsdWVzKTtcblxuICAgIEBpZiAkbWF4ID09MSB7XG4gICAgICAgIEByZXR1cm4gc3RyaXAtdW5pdChudGgoJHJlbVZhbHVlcywgMSkpICogMWVtO1xuICAgIH1cblxuICAgICRlbVZhbHVlczogKFxuICAgICk7XG5cbkBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG1heCB7XG4gICAgJGVtVmFsdWVzOiBhcHBlbmQoJGVtVmFsdWVzLCBzdHJpcC11bml0KG50aCgkcmVtVmFsdWVzLCAkaSkpICogMWVtKTtcbn1cblxuQHJldHVybiAkZW1WYWx1ZXM7XG59XG5cbi8vLyBjb2xvcnMgYmxhY2sgJiB3aGl0ZVxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLm15LWNsYXNzIHtcbi8vLyAgICAgYmFja2dyb3VuZDogYmxhY2soMC4xNSk7XG4vLy8gICAgIGNvbG9yOiB3aGl0ZSgwLjkpO1xuLy8vICAgfVxuQGZ1bmN0aW9uIGJsYWNrKCRvcGFjaXR5KSB7XG4gICAgQHJldHVybiByZ2JhKGJsYWNrLCAkb3BhY2l0eSk7XG59XG5cbkBmdW5jdGlvbiB3aGl0ZSgkb3BhY2l0eSkge1xuICAgIEByZXR1cm4gcmdiYSh3aGl0ZSwgJG9wYWNpdHkpO1xufVxuXG4iLCIvLyBUeXBvZ3JhcGh5XG5cbkBpbmNsdWRlIHRpdGxlLXNpemUoJ+KJpScpO1xuXG5oMSxcbi5oMSxcbmgyLFxuLmgyLFxuaDMsXG4uaDMsXG5oNCxcbi5oNCxcbmg1LFxuLmg1LFxuaDYsXG4uaDYsXG4uaCB7XG4gICAgZm9udC1mYW1pbHk6ICRoZWFkaW5ncy1mb250LWZhbWlseTtcbiAgICBjb2xvcjogJGhlYWRpbmdzLWNvbG9yO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbjogMCAwIDEwcHg7XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgn4omldGFibGV0Jykge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cbn1cblxuaDIge1xuXHRAaW5jbHVkZSBmb250LXNpemUoMjhweCk7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0Y29sb3I6ICMxNjRhODU7XG5cdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdHBhZGRpbmctYm90dG9tOiAyNXB4O1xuXHRtYXJnaW4tYm90dG9tOiA1MHB4O1xuXHR6LWluZGV4OiAxO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRAaW5jbHVkZSBmb250LXNpemUoMzVweCk7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgnPj13aWRlc2NyZWVuJykge1xuXHRcdHBhZGRpbmctYm90dG9tOiAzNXB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDcwcHg7XG5cdH1cblxuXHQmOmFmdGVyIHtcblx0XHRjb250ZW50OiAnJztcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdGxlZnQ6IC02LjIlO1xuXHRcdGhlaWdodDogMnB4O1xuXHRcdHdpZHRoOiAyMDBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjNjRjY2VhO1xuXHR9XG59XG5cbmg2IHtcblx0Zm9udC13ZWlnaHQ6IDUwMDtcbn1cblxucCB7XG4gICAgbWFyZ2luOiAwIDAgMjBweDtcblx0Zm9udC13ZWlnaHQ6IDMwMDtcbn1cblxuYSB7XG4gICAgY29sb3I6ICRiYXNlLWxpbmstY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkdGV4dC1kZWNvcmF0aW9uO1xuXHR0cmFuc2l0aW9uOiAuNHMgYWxsO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6ICRiYXNlLWxpbmstaG92ZXItY29sb3I7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJHRleHQtZGVjb3JhdGlvbi1ob3ZlcjtcbiAgICB9XG59XG5cbmFbaHJlZio9XCJtYWlsdG86XCJdIHtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59IiwiLy8gc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kaW1lbnNpb24tbm8tbm9uLW51bWVyaWMtdmFsdWVzXG5cbi8vIFNDU1MgUkZTIG1peGluXG4vL1xuLy8gQXV0b21hdGVkIHJlc3BvbnNpdmUgdmFsdWVzIGZvciBmb250IHNpemVzLCBwYWRkaW5ncywgbWFyZ2lucyBhbmQgbXVjaCBtb3JlXG4vL1xuLy8gTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9yZnMvYmxvYi9tYWluL0xJQ0VOU0UpXG5cbi8vIENvbmZpZ3VyYXRpb25cblxuLy8gQmFzZSB2YWx1ZVxuJHJmcy1iYXNlLXZhbHVlOiAxLjI1cmVtICFkZWZhdWx0O1xuJHJmcy11bml0OiByZW0gIWRlZmF1bHQ7XG5cbkBpZiAkcmZzLXVuaXQgIT0gcmVtIGFuZCAkcmZzLXVuaXQgIT0gcHgge1xuICBAZXJyb3IgXCJgI3skcmZzLXVuaXR9YCBpcyBub3QgYSB2YWxpZCB1bml0IGZvciAkcmZzLXVuaXQuIFVzZSBgcHhgIG9yIGByZW1gLlwiO1xufVxuXG4vLyBCcmVha3BvaW50IGF0IHdoZXJlIHZhbHVlcyBzdGFydCBkZWNyZWFzaW5nIGlmIHNjcmVlbiB3aWR0aCBpcyBzbWFsbGVyXG4kcmZzLWJyZWFrcG9pbnQ6IDEyMDBweCAhZGVmYXVsdDtcbiRyZnMtYnJlYWtwb2ludC11bml0OiBweCAhZGVmYXVsdDtcblxuQGlmICRyZnMtYnJlYWtwb2ludC11bml0ICE9IHB4IGFuZCAkcmZzLWJyZWFrcG9pbnQtdW5pdCAhPSBlbSBhbmQgJHJmcy1icmVha3BvaW50LXVuaXQgIT0gcmVtIHtcbiAgQGVycm9yIFwiYCN7JHJmcy1icmVha3BvaW50LXVuaXR9YCBpcyBub3QgYSB2YWxpZCB1bml0IGZvciAkcmZzLWJyZWFrcG9pbnQtdW5pdC4gVXNlIGBweGAsIGBlbWAgb3IgYHJlbWAuXCI7XG59XG5cbi8vIFJlc2l6ZSB2YWx1ZXMgYmFzZWQgb24gc2NyZWVuIGhlaWdodCBhbmQgd2lkdGhcbiRyZnMtdHdvLWRpbWVuc2lvbmFsOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRmFjdG9yIG9mIGRlY3JlYXNlXG4kcmZzLWZhY3RvcjogMTAgIWRlZmF1bHQ7XG5cbkBpZiB0eXBlLW9mKCRyZnMtZmFjdG9yKSAhPSBudW1iZXIgb3IgJHJmcy1mYWN0b3IgPD0gMSB7XG4gIEBlcnJvciBcImAjeyRyZnMtZmFjdG9yfWAgaXMgbm90IGEgdmFsaWQgICRyZnMtZmFjdG9yLCBpdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxLlwiO1xufVxuXG4vLyBNb2RlLiBQb3NzaWJpbGl0aWVzOiBcIm1pbi1tZWRpYS1xdWVyeVwiLCBcIm1heC1tZWRpYS1xdWVyeVwiXG4kcmZzLW1vZGU6IG1pbi1tZWRpYS1xdWVyeSAhZGVmYXVsdDtcblxuLy8gR2VuZXJhdGUgZW5hYmxlIG9yIGRpc2FibGUgY2xhc3Nlcy4gUG9zc2liaWxpdGllczogZmFsc2UsIFwiZW5hYmxlXCIgb3IgXCJkaXNhYmxlXCJcbiRyZnMtY2xhc3M6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyAxIHJlbSA9ICRyZnMtcmVtLXZhbHVlIHB4XG4kcmZzLXJlbS12YWx1ZTogMTYgIWRlZmF1bHQ7XG5cbi8vIFNhZmFyaSBpZnJhbWUgcmVzaXplIGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvcmZzL2lzc3Vlcy8xNFxuJHJmcy1zYWZhcmktaWZyYW1lLXJlc2l6ZS1idWctZml4OiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRGlzYWJsZSBSRlMgYnkgc2V0dGluZyAkZW5hYmxlLXJmcyB0byBmYWxzZVxuJGVuYWJsZS1yZnM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIENhY2hlICRyZnMtYmFzZS12YWx1ZSB1bml0XG4kcmZzLWJhc2UtdmFsdWUtdW5pdDogdW5pdCgkcmZzLWJhc2UtdmFsdWUpO1xuXG5AZnVuY3Rpb24gZGl2aWRlKCRkaXZpZGVuZCwgJGRpdmlzb3IsICRwcmVjaXNpb246IDEwKSB7XG4gICRzaWduOiBpZigkZGl2aWRlbmQgPiAwIGFuZCAkZGl2aXNvciA+IDAgb3IgJGRpdmlkZW5kIDwgMCBhbmQgJGRpdmlzb3IgPCAwLCAxLCAtMSk7XG4gICRkaXZpZGVuZDogYWJzKCRkaXZpZGVuZCk7XG4gICRkaXZpc29yOiBhYnMoJGRpdmlzb3IpO1xuICBAaWYgJGRpdmlkZW5kID09IDAge1xuICAgIEByZXR1cm4gMDtcbiAgfVxuICBAaWYgJGRpdmlzb3IgPT0gMCB7XG4gICAgQGVycm9yIFwiQ2Fubm90IGRpdmlkZSBieSAwXCI7XG4gIH1cbiAgJHJlbWFpbmRlcjogJGRpdmlkZW5kO1xuICAkcmVzdWx0OiAwO1xuICAkZmFjdG9yOiAxMDtcbiAgQHdoaWxlICgkcmVtYWluZGVyID4gMCBhbmQgJHByZWNpc2lvbiA+PSAwKSB7XG4gICAgJHF1b3RpZW50OiAwO1xuICAgIEB3aGlsZSAoJHJlbWFpbmRlciA+PSAkZGl2aXNvcikge1xuICAgICAgJHJlbWFpbmRlcjogJHJlbWFpbmRlciAtICRkaXZpc29yO1xuICAgICAgJHF1b3RpZW50OiAkcXVvdGllbnQgKyAxO1xuICAgIH1cbiAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTAgKyAkcXVvdGllbnQ7XG4gICAgJGZhY3RvcjogJGZhY3RvciAqIC4xO1xuICAgICRyZW1haW5kZXI6ICRyZW1haW5kZXIgKiAxMDtcbiAgICAkcHJlY2lzaW9uOiAkcHJlY2lzaW9uIC0gMTtcbiAgICBAaWYgKCRwcmVjaXNpb24gPCAwIGFuZCAkcmVtYWluZGVyID49ICRkaXZpc29yICogNSkge1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCArIDE7XG4gICAgfVxuICB9XG4gICRyZXN1bHQ6ICRyZXN1bHQgKiAkZmFjdG9yICogJHNpZ247XG4gICRkaXZpZGVuZC11bml0OiB1bml0KCRkaXZpZGVuZCk7XG4gICRkaXZpc29yLXVuaXQ6IHVuaXQoJGRpdmlzb3IpO1xuICAkdW5pdC1tYXA6IChcbiAgICBcInB4XCI6IDFweCxcbiAgICBcInJlbVwiOiAxcmVtLFxuICAgIFwiZW1cIjogMWVtLFxuICAgIFwiJVwiOiAxJVxuICApO1xuICBAaWYgKCRkaXZpZGVuZC11bml0ICE9ICRkaXZpc29yLXVuaXQgYW5kIG1hcC1oYXMta2V5KCR1bml0LW1hcCwgJGRpdmlkZW5kLXVuaXQpKSB7XG4gICAgJHJlc3VsdDogJHJlc3VsdCAqIG1hcC1nZXQoJHVuaXQtbWFwLCAkZGl2aWRlbmQtdW5pdCk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vLyBSZW1vdmUgcHgtdW5pdCBmcm9tICRyZnMtYmFzZS12YWx1ZSBmb3IgY2FsY3VsYXRpb25zXG5AaWYgJHJmcy1iYXNlLXZhbHVlLXVuaXQgPT0gcHgge1xuICAkcmZzLWJhc2UtdmFsdWU6IGRpdmlkZSgkcmZzLWJhc2UtdmFsdWUsICRyZnMtYmFzZS12YWx1ZSAqIDAgKyAxKTtcbn1cbkBlbHNlIGlmICRyZnMtYmFzZS12YWx1ZS11bml0ID09IHJlbSB7XG4gICRyZnMtYmFzZS12YWx1ZTogZGl2aWRlKCRyZnMtYmFzZS12YWx1ZSwgZGl2aWRlKCRyZnMtYmFzZS12YWx1ZSAqIDAgKyAxLCAkcmZzLXJlbS12YWx1ZSkpO1xufVxuXG4vLyBDYWNoZSAkcmZzLWJyZWFrcG9pbnQgdW5pdCB0byBwcmV2ZW50IG11bHRpcGxlIGNhbGxzXG4kcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZTogdW5pdCgkcmZzLWJyZWFrcG9pbnQpO1xuXG4vLyBSZW1vdmUgdW5pdCBmcm9tICRyZnMtYnJlYWtwb2ludCBmb3IgY2FsY3VsYXRpb25zXG5AaWYgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gcHgge1xuICAkcmZzLWJyZWFrcG9pbnQ6IGRpdmlkZSgkcmZzLWJyZWFrcG9pbnQsICRyZnMtYnJlYWtwb2ludCAqIDAgKyAxKTtcbn1cbkBlbHNlIGlmICRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlID09IHJlbSBvciAkcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZSA9PSBcImVtXCIge1xuICAkcmZzLWJyZWFrcG9pbnQ6IGRpdmlkZSgkcmZzLWJyZWFrcG9pbnQsIGRpdmlkZSgkcmZzLWJyZWFrcG9pbnQgKiAwICsgMSwgJHJmcy1yZW0tdmFsdWUpKTtcbn1cblxuLy8gQ2FsY3VsYXRlIHRoZSBtZWRpYSBxdWVyeSB2YWx1ZVxuJHJmcy1tcS12YWx1ZTogaWYoJHJmcy1icmVha3BvaW50LXVuaXQgPT0gcHgsICN7JHJmcy1icmVha3BvaW50fXB4LCAje2RpdmlkZSgkcmZzLWJyZWFrcG9pbnQsICRyZnMtcmVtLXZhbHVlKX0jeyRyZnMtYnJlYWtwb2ludC11bml0fSk7XG4kcmZzLW1xLXByb3BlcnR5LXdpZHRoOiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCBtYXgtd2lkdGgsIG1pbi13aWR0aCk7XG4kcmZzLW1xLXByb3BlcnR5LWhlaWdodDogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgbWF4LWhlaWdodCwgbWluLWhlaWdodCk7XG5cbi8vIEludGVybmFsIG1peGluIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIG1lZGlhIHF1ZXJ5IG5lZWRzIHRvIGJlIHVzZWRcbkBtaXhpbiBfcmZzLW1lZGlhLXF1ZXJ5IHtcbiAgQGlmICRyZnMtdHdvLWRpbWVuc2lvbmFsIHtcbiAgICBAaWYgJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSB7XG4gICAgICBAbWVkaWEgKCN7JHJmcy1tcS1wcm9wZXJ0eS13aWR0aH06ICN7JHJmcy1tcS12YWx1ZX0pLCAoI3skcmZzLW1xLXByb3BlcnR5LWhlaWdodH06ICN7JHJmcy1tcS12YWx1ZX0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBtZWRpYSAoI3skcmZzLW1xLXByb3BlcnR5LXdpZHRofTogI3skcmZzLW1xLXZhbHVlfSkgYW5kICgjeyRyZnMtbXEtcHJvcGVydHktaGVpZ2h0fTogI3skcmZzLW1xLXZhbHVlfSkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBtZWRpYSAoI3skcmZzLW1xLXByb3BlcnR5LXdpZHRofTogI3skcmZzLW1xLXZhbHVlfSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIEludGVybmFsIG1peGluIHRoYXQgYWRkcyBkaXNhYmxlIGNsYXNzZXMgdG8gdGhlIHNlbGVjdG9yIGlmIG5lZWRlZC5cbkBtaXhpbiBfcmZzLXJ1bGUge1xuICBAaWYgJHJmcy1jbGFzcyA9PSBkaXNhYmxlIGFuZCAkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5IHtcbiAgICAvLyBBZGRpbmcgYW4gZXh0cmEgY2xhc3MgaW5jcmVhc2VzIHNwZWNpZmljaXR5LCB3aGljaCBwcmV2ZW50cyB0aGUgbWVkaWEgcXVlcnkgdG8gb3ZlcnJpZGUgdGhlIHByb3BlcnR5XG4gICAgJixcbiAgICAuZGlzYWJsZS1yZnMgJixcbiAgICAmLmRpc2FibGUtcmZzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcmZzLWNsYXNzID09IGVuYWJsZSBhbmQgJHJmcy1tb2RlID09IG1pbi1tZWRpYS1xdWVyeSB7XG4gICAgLmVuYWJsZS1yZnMgJixcbiAgICAmLmVuYWJsZS1yZnMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBJbnRlcm5hbCBtaXhpbiB0aGF0IGFkZHMgZW5hYmxlIGNsYXNzZXMgdG8gdGhlIHNlbGVjdG9yIGlmIG5lZWRlZC5cbkBtaXhpbiBfcmZzLW1lZGlhLXF1ZXJ5LXJ1bGUge1xuXG4gIEBpZiAkcmZzLWNsYXNzID09IGVuYWJsZSB7XG4gICAgQGlmICRyZnMtbW9kZSA9PSBtaW4tbWVkaWEtcXVlcnkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgX3Jmcy1tZWRpYS1xdWVyeSAoKSB7XG4gICAgICAuZW5hYmxlLXJmcyAmLFxuICAgICAgJi5lbmFibGUtcmZzIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJHJmcy1jbGFzcyA9PSBkaXNhYmxlIGFuZCAkcmZzLW1vZGUgPT0gbWluLW1lZGlhLXF1ZXJ5IHtcbiAgICAgIC5kaXNhYmxlLXJmcyAmLFxuICAgICAgJi5kaXNhYmxlLXJmcyB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBfcmZzLW1lZGlhLXF1ZXJ5ICgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBmb3JtYXR0ZWQgbm9uLXJlc3BvbnNpdmUgdmFsdWVcbkBmdW5jdGlvbiByZnMtdmFsdWUoJHZhbHVlcykge1xuICAvLyBDb252ZXJ0IHRvIGxpc3RcbiAgJHZhbHVlczogaWYodHlwZS1vZigkdmFsdWVzKSAhPSBsaXN0LCAoJHZhbHVlcywpLCAkdmFsdWVzKTtcblxuICAkdmFsOiBcIlwiO1xuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHZhbHVlIGFuZCBjYWxjdWxhdGUgdmFsdWVcbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuICAgIEBpZiAkdmFsdWUgPT0gMCB7XG4gICAgICAkdmFsOiAkdmFsICsgXCIgMFwiO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBDYWNoZSAkdmFsdWUgdW5pdFxuICAgICAgJHVuaXQ6IGlmKHR5cGUtb2YoJHZhbHVlKSA9PSBcIm51bWJlclwiLCB1bml0KCR2YWx1ZSksIGZhbHNlKTtcblxuICAgICAgQGlmICR1bml0ID09IHB4IHtcbiAgICAgICAgLy8gQ29udmVydCB0byByZW0gaWYgbmVlZGVkXG4gICAgICAgICR2YWw6ICR2YWwgKyBcIiBcIiArIGlmKCRyZnMtdW5pdCA9PSByZW0sICN7ZGl2aWRlKCR2YWx1ZSwgJHZhbHVlICogMCArICRyZnMtcmVtLXZhbHVlKX1yZW0sICR2YWx1ZSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiAkdW5pdCA9PSByZW0ge1xuICAgICAgICAvLyBDb252ZXJ0IHRvIHB4IGlmIG5lZWRlZFxuICAgICAgICAkdmFsOiAkdmFsICsgXCIgXCIgKyBpZigkcmZzLXVuaXQgPT0gcHgsICN7ZGl2aWRlKCR2YWx1ZSwgJHZhbHVlICogMCArIDEpICogJHJmcy1yZW0tdmFsdWV9cHgsICR2YWx1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLy8gSWYgJHZhbHVlIGlzbid0IGEgbnVtYmVyIChsaWtlIGluaGVyaXQpIG9yICR2YWx1ZSBoYXMgYSB1bml0IChub3QgcHggb3IgcmVtLCBsaWtlIDEuNWVtKSBvciAkIGlzIDAsIGp1c3QgcHJpbnQgdGhlIHZhbHVlXG4gICAgICAgICR2YWw6ICR2YWwgKyBcIiBcIiArICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmUgZmlyc3Qgc3BhY2VcbiAgQHJldHVybiB1bnF1b3RlKHN0ci1zbGljZSgkdmFsLCAyKSk7XG59XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIHJlc3BvbnNpdmUgdmFsdWUgY2FsY3VsYXRlZCBieSBSRlNcbkBmdW5jdGlvbiByZnMtZmx1aWQtdmFsdWUoJHZhbHVlcykge1xuICAvLyBDb252ZXJ0IHRvIGxpc3RcbiAgJHZhbHVlczogaWYodHlwZS1vZigkdmFsdWVzKSAhPSBsaXN0LCAoJHZhbHVlcywpLCAkdmFsdWVzKTtcblxuICAkdmFsOiBcIlwiO1xuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHZhbHVlIGFuZCBjYWxjdWxhdGUgdmFsdWVcbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuICAgIEBpZiAkdmFsdWUgPT0gMCB7XG4gICAgICAkdmFsOiAkdmFsICsgXCIgMFwiO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLy8gQ2FjaGUgJHZhbHVlIHVuaXRcbiAgICAgICR1bml0OiBpZih0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiwgdW5pdCgkdmFsdWUpLCBmYWxzZSk7XG5cbiAgICAgIC8vIElmICR2YWx1ZSBpc24ndCBhIG51bWJlciAobGlrZSBpbmhlcml0KSBvciAkdmFsdWUgaGFzIGEgdW5pdCAobm90IHB4IG9yIHJlbSwgbGlrZSAxLjVlbSkgb3IgJCBpcyAwLCBqdXN0IHByaW50IHRoZSB2YWx1ZVxuICAgICAgQGlmIG5vdCAkdW5pdCBvciAkdW5pdCAhPSBweCBhbmQgJHVuaXQgIT0gcmVtIHtcbiAgICAgICAgJHZhbDogJHZhbCArIFwiIFwiICsgJHZhbHVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSB1bml0IGZyb20gJHZhbHVlIGZvciBjYWxjdWxhdGlvbnNcbiAgICAgICAgJHZhbHVlOiBkaXZpZGUoJHZhbHVlLCAkdmFsdWUgKiAwICsgaWYoJHVuaXQgPT0gcHgsIDEsIGRpdmlkZSgxLCAkcmZzLXJlbS12YWx1ZSkpKTtcblxuICAgICAgICAvLyBPbmx5IGFkZCB0aGUgbWVkaWEgcXVlcnkgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZVxuICAgICAgICBAaWYgYWJzKCR2YWx1ZSkgPD0gJHJmcy1iYXNlLXZhbHVlIG9yIG5vdCAkZW5hYmxlLXJmcyB7XG4gICAgICAgICAgJHZhbDogJHZhbCArIFwiIFwiICsgaWYoJHJmcy11bml0ID09IHJlbSwgI3tkaXZpZGUoJHZhbHVlLCAkcmZzLXJlbS12YWx1ZSl9cmVtLCAjeyR2YWx1ZX1weCk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgbWluaW11bSB2YWx1ZVxuICAgICAgICAgICR2YWx1ZS1taW46ICRyZnMtYmFzZS12YWx1ZSArIGRpdmlkZShhYnMoJHZhbHVlKSAtICRyZnMtYmFzZS12YWx1ZSwgJHJmcy1mYWN0b3IpO1xuXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIGRpZmZlcmVuY2UgYmV0d2VlbiAkdmFsdWUgYW5kIHRoZSBtaW5pbXVtIHZhbHVlXG4gICAgICAgICAgJHZhbHVlLWRpZmY6IGFicygkdmFsdWUpIC0gJHZhbHVlLW1pbjtcblxuICAgICAgICAgIC8vIEJhc2UgdmFsdWUgZm9ybWF0dGluZ1xuICAgICAgICAgICRtaW4td2lkdGg6IGlmKCRyZnMtdW5pdCA9PSByZW0sICN7ZGl2aWRlKCR2YWx1ZS1taW4sICRyZnMtcmVtLXZhbHVlKX1yZW0sICN7JHZhbHVlLW1pbn1weCk7XG5cbiAgICAgICAgICAvLyBVc2UgbmVnYXRpdmUgdmFsdWUgaWYgbmVlZGVkXG4gICAgICAgICAgJG1pbi13aWR0aDogaWYoJHZhbHVlIDwgMCwgLSRtaW4td2lkdGgsICRtaW4td2lkdGgpO1xuXG4gICAgICAgICAgLy8gVXNlIGB2bWluYCBpZiB0d28tZGltZW5zaW9uYWwgaXMgZW5hYmxlZFxuICAgICAgICAgICR2YXJpYWJsZS11bml0OiBpZigkcmZzLXR3by1kaW1lbnNpb25hbCwgdm1pbiwgdncpO1xuXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB2YXJpYWJsZSB3aWR0aCBiZXR3ZWVuIDAgYW5kICRyZnMtYnJlYWtwb2ludFxuICAgICAgICAgICR2YXJpYWJsZS13aWR0aDogI3tkaXZpZGUoJHZhbHVlLWRpZmYgKiAxMDAsICRyZnMtYnJlYWtwb2ludCl9I3skdmFyaWFibGUtdW5pdH07XG5cbiAgICAgICAgICAvLyBSZXR1cm4gdGhlIGNhbGN1bGF0ZWQgdmFsdWVcbiAgICAgICAgICAkdmFsOiAkdmFsICsgXCIgY2FsYyhcIiArICRtaW4td2lkdGggKyBpZigkdmFsdWUgPCAwLCBcIiAtIFwiLCBcIiArIFwiKSArICR2YXJpYWJsZS13aWR0aCArIFwiKVwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIGZpcnN0IHNwYWNlXG4gIEByZXR1cm4gdW5xdW90ZShzdHItc2xpY2UoJHZhbCwgMikpO1xufVxuXG4vLyBSRlMgbWl4aW5cbkBtaXhpbiByZnMoJHZhbHVlcywgJHByb3BlcnR5OiBmb250LXNpemUpIHtcbiAgQGlmICR2YWx1ZXMgIT0gbnVsbCB7XG4gICAgJHZhbDogcmZzLXZhbHVlKCR2YWx1ZXMpO1xuICAgICRmbHVpZC12YWw6IHJmcy1mbHVpZC12YWx1ZSgkdmFsdWVzKTtcblxuICAgIC8vIERvIG5vdCBwcmludCB0aGUgbWVkaWEgcXVlcnkgaWYgcmVzcG9uc2l2ZSAmIG5vbi1yZXNwb25zaXZlIHZhbHVlcyBhcmUgdGhlIHNhbWVcbiAgICBAaWYgJHZhbCA9PSAkZmx1aWQtdmFsIHtcbiAgICAgICN7JHByb3BlcnR5fTogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgX3Jmcy1ydWxlICgpIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCAkdmFsLCAkZmx1aWQtdmFsKTtcblxuICAgICAgICAvLyBJbmNsdWRlIHNhZmFyaSBpZnJhbWUgcmVzaXplIGZpeCBpZiBuZWVkZWRcbiAgICAgICAgbWluLXdpZHRoOiBpZigkcmZzLXNhZmFyaS1pZnJhbWUtcmVzaXplLWJ1Zy1maXgsICgwICogMXZ3KSwgbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIF9yZnMtbWVkaWEtcXVlcnktcnVsZSAoKSB7XG4gICAgICAgICN7JHByb3BlcnR5fTogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgJGZsdWlkLXZhbCwgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFNob3J0aGFuZCBoZWxwZXIgbWl4aW5zXG5AbWl4aW4gZm9udC1zaXplKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlKTtcbn1cblxuQG1peGluIHBhZGRpbmcoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmcpO1xufVxuXG5AbWl4aW4gcGFkZGluZy10b3AoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmctdG9wKTtcbn1cblxuQG1peGluIHBhZGRpbmctcmlnaHQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmctcmlnaHQpO1xufVxuXG5AbWl4aW4gcGFkZGluZy1ib3R0b20oJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmctYm90dG9tKTtcbn1cblxuQG1peGluIHBhZGRpbmctbGVmdCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZy1sZWZ0KTtcbn1cblxuQG1peGluIG1hcmdpbigkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luKTtcbn1cblxuQG1peGluIG1hcmdpbi10b3AoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi10b3ApO1xufVxuXG5AbWl4aW4gbWFyZ2luLXJpZ2h0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4tcmlnaHQpO1xufVxuXG5AbWl4aW4gbWFyZ2luLWJvdHRvbSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luLWJvdHRvbSk7XG59XG5cbkBtaXhpbiBtYXJnaW4tbGVmdCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luLWxlZnQpO1xufVxuIiwiLy8gZm9ybXNcbmZvcm0sXG5maWVsZHNldCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG5pbnB1dFt0eXBlPSd0ZXh0J10sXG5pbnB1dFt0eXBlPSd0ZWwnXSxcbmlucHV0W3R5cGU9J2VtYWlsJ10sXG5pbnB1dFt0eXBlPSdzZWFyY2gnXSxcbmlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sXG5pbnB1dFt0eXBlPSd1cmwnXSxcbi8vIGlucHV0W3R5cGU9J2RhdGUnXSxcbnRleHRhcmVhIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwO1xuICAgIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xuICAgIGZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICAgIGZvbnQtZmFtaWx5OiAkaW5wdXQtZm9udC1mYW1pbHk7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogJGlucHV0LWJvcmRlci1yYWRpdXM7XG5cbiAgICAmOm5vdCh0ZXh0YXJlYSkge1xuICAgICAgICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvcjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiAkcGxhY2Vob2xkZXItY29sb3I7XG4gICAgfVxufVxuXG5pbnB1dFt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vLyBpbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbi8vICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4vLyB9XG5cbnRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbmJ1dHRvbixcbmlucHV0W3R5cGU9J2J1dHRvbiddLFxuaW5wdXRbdHlwZT0ncmVzZXQnXSxcbmlucHV0W3R5cGU9J2ZpbGUnXSxcbmlucHV0W3R5cGU9J3N1Ym1pdCddIHtcbiAgICBAaW5jbHVkZSBhbmltYXRlKGJhY2tncm91bmQpO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7XG4gICAgaGVpZ2h0OiAkc3VibWl0LWhlaWdodDtcbiAgICBwYWRkaW5nOiAkc3VibWl0LXBhZGRpbmc7XG4gICAgZm9udC1zaXplOiAkc3VibWl0LWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJHN1Ym1pdC1saW5lLWhlaWdodDtcbiAgICBjb2xvcjogJHN1Ym1pdC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kOiAkc3VibWl0LWJhY2tncm91bmQ7XG5cbiAgICBib3JkZXI6IHtcbiAgICAgICAgd2lkdGg6ICRzdWJtaXQtYm9yZGVyLXdpZHRoO1xuICAgICAgICBzdHlsZTogJHN1Ym1pdC1ib3JkZXItc3R5bGU7XG4gICAgICAgIGNvbG9yOiAkc3VibWl0LWJvcmRlci1jb2xvcjtcbiAgICAgICAgcmFkaXVzOiAkc3VibWl0LXJhZGl1cztcbiAgICB9XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsICRhbmltYXRpb24tc3BlZWQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHN1Ym1pdC1ob3Zlci1iYWNrZ3JvdW5kO1xuICAgICAgICBjb2xvcjogJHN1Ym1pdC1ob3Zlci1jb2xvcjtcbiAgICB9XG59Iiwibm9zY3JpcHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAkbGlnaHQ7XG4gICAgYmFja2dyb3VuZDogJHByaW1hcnk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHotaW5kZXg6IDk5OTk5O1xufVxuXG4uYWNjZXNzaWJpbGl0eSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IC0yMDB2dztcbiAgICB0b3A6IGF1dG87XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxufVxuXG4udmlzdWFsbHktaGlkZGVuIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogLTk5OTlweDtcbiAgICB0b3A6IGF1dG87XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufSIsIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHN0eWxlcyByZWxhdGVkIHRvIHRoZSBoZWFkZXIgb2YgdGhlIHNpdGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5baWQ9XCJoZWFkZXJcIl0ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiAwO1xuXHRsZWZ0OiAwO1xuXHRyaWdodDogMDtcblx0d2lkdGg6IGNhbGMoMTAwJSAtIDUwcHgpO1xuXHRtYXJnaW46IDI1cHggYXV0byAwO1xuXHRwYWRkaW5nOiAyNXB4O1xuICAgIHotaW5kZXg6IDEwO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCc+PXdpZGVzY3JlZW4nKSB7XG5cdFx0bWFyZ2luOiA4MHB4IGF1dG8gMDtcblx0XHR3aWR0aDogY2FsYygxMDAlIC0gMTYwcHgpO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcblx0XHRwYWRkaW5nOiA1MHB4O1xuXHR9XG5cblx0LmNvbnRhaW5lciB7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IDA7XG5cdH1cblxuXHQmOmJlZm9yZSB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogMDtcblx0XHR0b3A6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDB2aDtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTMwZGVnLCAjZmZmIDExJSwgdHJhbnNwYXJlbnQgMjglKTtcblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0fVxuXG5cdC5idG4ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Ym9yZGVyOiAycHggc29saWQgIzUwNTg0Yztcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcblx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0Zm9udC13ZWlnaHQ6IDMwMDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PXBob25lJykge1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0cGFkZGluZzogMTJweCAyMHB4O1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHR9XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgnPj0xNDQwcHgnKSB7XG5cdFx0XHRwYWRkaW5nOiAxNXB4IDIwcHg7XG5cdFx0fVxuXG5cdFx0c3BhbiB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgXHRcdGJvdHRvbTogLTJweDtcblx0XHR9XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICM1MDU4NGM7XG5cdFx0fVxuXG5cdFx0aSB7XG5cdFx0XHRjb2xvcjogIzY0Y2NlYTtcblx0XHRcdG1hcmdpbi1sZWZ0OiAxNXB4O1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYSgnPj1waG9uZScpIHtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDUwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi5oZWFkZXItaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLmxvZ28ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDExMHB4O1xuXHRtYXgtd2lkdGg6IDExMHB4O1xuICAgIG1hcmdpbi1yaWdodDogMjBweDtcblx0ei1pbmRleDogMTtcblxuXHRAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG5cdFx0d2lkdGg6IDE1MHB4O1xuXHRcdG1heC13aWR0aDogMTUwcHg7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgnPj0xNDQwcHgnKSB7XG5cdFx0d2lkdGg6IDIyMnB4O1xuXHRcdG1heC13aWR0aDogMjIycHg7XG5cdH1cbn1cblxuLm5hdi1vcGVuZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgZm9udC1zaXplOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIGZsb2F0OiByaWdodDtcblxuICAgIEBpbmNsdWRlIG1lZGlhKCfiiaV0YWJsZXQnKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlcixcbiAgICBzcGFuIHtcbiAgICAgICAgQGluY2x1ZGUgYW5pbWF0ZSh0cmFuc2Zvcm0gb3BhY2l0eSk7XG4gICAgICAgIGJhY2tncm91bmQ6ICRibGFjaztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogMTUlO1xuICAgICAgICByaWdodDogMTUlO1xuICAgICAgICBoZWlnaHQ6IDNweDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cblxuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICB9XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOXB4KTtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDZweCk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgICY6YmVmb3JlLFxuICAgICAgICAmOmFmdGVyLFxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubmF2LWFjdGl2ZSAmIHtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgdHJhbnNsYXRlWSgwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHN0eWxlcyByZWxhdGVkIHRvIHRoZSBjb21tb24gbGF5b3V0IG9mIHRoZSBzaXRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuYm9keSB7XG5cdGJhY2tncm91bmQ6ICNlZGVhZTc7XG59XG5cbltpZD1cIndyYXBwZXJcIl0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gNTBweCk7XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG5cdHBhZGRpbmctdG9wOiAyNXB4O1xuXHRtYXJnaW46IDAgYXV0bztcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRAaW5jbHVkZSBtZWRpYSgnPj13aWRlc2NyZWVuJykge1xuXHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAxNjBweCk7XG5cdFx0cGFkZGluZy10b3A6IDgwcHg7XG5cdH1cbn1cblxuW2lkPVwibWFpblwiXSB7XG4gICAgZmxleC1ncm93OiAxO1xufVxuXG4uY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGgtY2VudGVyLWNvbnRhaW5lcjtcbiAgICBwYWRkaW5nOiAwIDIwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG5cblx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdHBhZGRpbmc6IDAgNjBweDtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCc+PTE2MDBweCcpIHtcblx0XHRwYWRkaW5nOiAkcGFkZGluZy1jb250YWluZXI7XG5cdH1cbn1cblxuLmFjY29yZGlvbiB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgID5saSB7XG4gICAgICAgIG1hcmdpbi1ibG9jazogMTBweDtcblxuICAgICAgICA+YSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuanMtYWNjLWhpZGRlbiB7XG4gICAgICAgIC8vIGZvciB3ZWIgYWNjZXNzaWJpbGl0eSA6IHZpc2liaWxpdHk6IGhpZGRlbjsgb3IgZGlzcGxheTogbm9uZSArIGtleWZyYW1lXG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG59XG5cbi5idXJnZXItaG9sZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAuYnVyZ2VyLWRyb3Age1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDMwMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIC8vIGZvciB3ZWIgYWNjZXNzaWJpbGl0eSA6IHZpc2liaWxpdHk6IGhpZGRlbjsgb3IgZGlzcGxheTogbm9uZSArIGtleWZyYW1lXG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgJi5idXJnZXItYWN0aXZlIHtcbiAgICAgICAgLmJ1cmdlci1kcm9wIHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgIH1cbn1cblxuLnBvcHVwLWhvbGRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLnBvcHVwIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAzMDBweDtcbiAgICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICAvLyBmb3Igd2ViIGFjY2Vzc2liaWxpdHkgOiB2aXNpYmlsaXR5OiBoaWRkZW47IG9yIGRpc3BsYXk6IG5vbmUgKyBrZXlmcmFtZVxuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgICYucG9wdXAtYWN0aXZlIHtcbiAgICAgICAgLnBvcHVwIHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgIH1cbn1cblxuLm9wZW4tY2xvc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5zbGlkZSB7XG4gICAgICAgIHdpZHRoOiAzMDBweDtcbiAgICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgIH1cblxuICAgIC5qcy1zbGlkZS1oaWRkZW4ge1xuICAgICAgICAvLyBmb3Igd2ViIGFjY2Vzc2liaWxpdHkgOiB2aXNpYmlsaXR5OiBoaWRkZW47IG9yIGRpc3BsYXk6IG5vbmUgKyBrZXlmcmFtZVxuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxufVxuXG5cbi5saW5lLWJveCB7XG4gICAgd2lkdGg6IDYwMHB4O1xuXG4gICAgLm1hc2sge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgIC5saW5lIHtcbiAgICAgICAgd2lkdGg6IDk5OTk5cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAgICAgPioge1xuICAgICAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuXG5cbi8qIVxuICogdGFiYnlqcyB2MTIuMC4zXG4gKiBMaWdodHdlaWdodCwgYWNjZXNzaWJsZSB2YW5pbGxhIEpTIHRvZ2dsZSB0YWJzLlxuICogKGMpIDIwMTkgQ2hyaXMgRmVyZGluYW5kaVxuICogTUlUIExpY2Vuc2VcbiAqIGh0dHA6Ly9naXRodWIuY29tL2NmZXJkaW5hbmRpL3RhYmJ5XG4gKi9cblxuLyoqXG4gKiBUaGUgdGFibGlzdFxuICovXG5bcm9sZT1cInRhYmxpc3RcIl0ge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgbGlnaHRncmF5O1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbltyb2xlPVwidGFibGlzdFwiXSAqIHtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi8qKlxuICogVGhlIHRhYmxpc3QgaXRlbVxuICovXG5AbWVkaWEgKG1pbi13aWR0aDogMzBlbSkge1xuICBbcm9sZT1cInRhYmxpc3RcIl0gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuXG4vKipcbiAqIFRoZSB0YWJzXG4gKi9cbltyb2xlPVwidGFiXCJdIHtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci10b3AtY29sb3I6IGxpZ2h0Z3JheTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNWVtIDFlbTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAvKipcbiAgICAgKiBBY3RpdmUgdGFiIHN0eWxpbmdcbiAgICAgKi9cbiAgLyoqXG4gICAgICogVGFicyBvbiBob3ZlclxuICAgICAqL1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMzBlbSkge1xuICBbcm9sZT1cInRhYlwiXSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC41ZW07XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuNWVtO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICB9XG59XG5cbltyb2xlPVwidGFiXCJdW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmF5O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMzBlbSkge1xuICBbcm9sZT1cInRhYlwiXVthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmF5O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmZmZmY7XG4gIH1cbn1cblxuW3JvbGU9XCJ0YWJcIl06aG92ZXI6bm90KFthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMzBlbSkge1xuICBbcm9sZT1cInRhYlwiXTpob3Zlcjpub3QoW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdKSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmF5O1xuICB9XG59XG5cbi8qKlxuICogW2hpZGRlbl0gZmFsbGJhY2sgZm9yIElFMTAgYW5kIGxvd2VyXG4gKi9cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnBhZ2UtZG90cyB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2VkZWFlNztcblx0Ym9yZGVyLXJhZGl1czogMCAzMHB4IDMwcHggMDtcblx0ei1pbmRleDogMTA7XG5cdGZvbnQtc2l6ZTogMDtcblx0bGVmdDogMDtcblx0cGFkZGluZzogMjBweCAyMHB4O1xuXHR0b3A6IDUwJTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG5cdFx0cGFkZGluZzogMzdweCAyMHB4O1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJz49MTcwMHB4Jykge1xuXHRcdHBhZGRpbmc6IDM3cHg7XG5cdH1cblxuXHQuZG90IHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0d2lkdGg6IDE4cHg7XG5cdFx0aGVpZ2h0OiAxOHB4O1xuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2MzYzFiYTtcblx0XHRcdHRyYW5zaXRpb246IC40cyBhbGw7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0fVxuXG5cdFx0Ji5hbmNob3ItYWN0aXZlIHtcblx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDEuMyk7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICMxOTQ2OWM7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0KyAuZG90IHtcblx0XHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRcdFx0bWFyZ2luLXRvcDogMjBweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuW2RhdGEtc2tyb2xsci1lZmZlY3Q9cGFyYWxsYXhdIHtcblx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LHZhcigtLXksMHB4KSwwcHgpO1xuXHR9XG59IiwiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoaXMgZmlsZSBjb250YWlucyBhbGwgc3R5bGVzIHJlbGF0ZWQgdG8gdGhlIGZvb3RlciBvZiB0aGUgc2l0ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbltpZD1cImZvb3RlclwiXSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Zm9udC13ZWlnaHQ6IDMwMDtcblx0Zm9udC1zaXplOiAxOHB4O1xuXHRwYWRkaW5nOiA0NXB4IDA7XG5cblx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdGZvbnQtc2l6ZTogMjJweDtcblx0fVxuXG5cdHAge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cbn0iLCIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCBzdHlsZXMgcmVsYXRlZCB0byB0aGUgYnV0dG9uIGNvbXBvbmVudC5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4uYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogJGJ0bi1wYWRkaW5nO1xuICAgIGZvbnQtc2l6ZTogJGJ0bi1mb250LXNpemU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAkYnRuLWxpbmUtaGVpZ2h0O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgdHJhbnNpdGlvbjogYWxsICRhbmltYXRpb24tc3BlZWQ7XG5cbiAgICBib3JkZXI6IHtcbiAgICAgICAgc3R5bGU6IHNvbGlkO1xuICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHdpZHRoOiAkYnRuLWJvcmRlci13aWR0aDtcbiAgICAgICAgcmFkaXVzOiAkYnRuLWJvcmRlci1yYWRpdXM7XG4gICAgfVxuXG4gICAgJi1kZWZhdWx0IHtcbiAgICAgICAgY29sb3I6ICRidG4tY29sb3ItZGVmYXVsdDtcbiAgICAgICAgYmFja2dyb3VuZDogJGJ0bi1iYWNrZ3JvdW5kLWRlZmF1bHQ7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGJ0bi1ib3JkZXItY29sb3ItZGVmYXVsdDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYnRuLWhvdmVyLWNvbG9yLWRlZmF1bHQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYnRuLWhvdmVyLWJhY2tncm91bmQtZGVmYXVsdDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGJ0bi1ob3Zlci1ib3JkZXItY29sb3ItZGVmYXVsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtcHJpbWFyeSB7XG4gICAgICAgIGNvbG9yOiAkYnRuLWNvbG9yLXByaW1hcnk7XG4gICAgICAgIGJhY2tncm91bmQ6ICRidG4tYmFja2dyb3VuZC1wcmltYXJ5O1xuICAgICAgICBib3JkZXItY29sb3I6ICRidG4tYm9yZGVyLWNvbG9yLXByaW1hcnk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogJGJ0bi1ob3Zlci1jb2xvci1wcmltYXJ5O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGJ0bi1ob3Zlci1iYWNrZ3JvdW5kLXByaW1hcnk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRidG4taG92ZXItYm9yZGVyLWNvbG9yLXByaW1hcnk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLXNlY29uZGFyeSB7XG4gICAgICAgIGNvbG9yOiAkYnRuLWNvbG9yLXNlY29uZGFyeTtcbiAgICAgICAgYmFja2dyb3VuZDogJGJ0bi1iYWNrZ3JvdW5kLXNlY29uZGFyeTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYnRuLWJvcmRlci1jb2xvci1zZWNvbmRhcnk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogJGJ0bi1ob3Zlci1jb2xvci1zZWNvbmRhcnk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYnRuLWhvdmVyLWJhY2tncm91bmQtc2Vjb25kYXJ5O1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYnRuLWhvdmVyLWJvcmRlci1jb2xvci1zZWNvbmRhcnk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLXNtIHtcbiAgICAgICAgcGFkZGluZzogJGJ0bi1wYWRkaW5nLXNtO1xuICAgICAgICBmb250LXNpemU6ICRidG4tZm9udC1zaXplLXNtO1xuICAgICAgICBsaW5lLWhlaWdodDogJGJ0bi1saW5lLWhlaWdodC1zbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJGJ0bi1ib3JkZXItcmFkaXVzLXNtO1xuICAgIH1cblxuICAgICYtbGcge1xuICAgICAgICBwYWRkaW5nOiAkYnRuLXBhZGRpbmctbGc7XG4gICAgICAgIGZvbnQtc2l6ZTogJGJ0bi1mb250LXNpemUtbGc7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkYnRuLWxpbmUtaGVpZ2h0LWxnO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkYnRuLWJvcmRlci1yYWRpdXMtbGc7XG4gICAgfVxufVxuXG4uYnRuLWdyb3VwIHtcbiAgICBtYXJnaW46IDAgLTVweCAtMTBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC5idG4ge1xuICAgICAgICBtYXJnaW46IDAgNXB4IDEwcHg7XG4gICAgfVxufSIsIi5zZWN0aW9uLWhlcm8ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG1pbi1oZWlnaHQ6IDYwdmg7XG5cblx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdG1pbi1oZWlnaHQ6IDkwdmg7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xuXHRcdG1pbi1oZWlnaHQ6IDk0dmg7XG5cdH1cblxuXHQuaW1nIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDEwMCUgMCUsIDEwMCUgODclLCAwJSAxMDAlKTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjNjRjY2VhO1xuXG5cdFx0aW1nIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogOTUlO1xuXHRcdFx0b2JqZWN0LWZpdDogY292ZXI7XG5cdFx0XHRvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcblx0XHRcdHotaW5kZXg6IDE7XG5cdFx0fVxuXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdHotaW5kZXg6IDI7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgyNzBkZWcsIzI0MmQyMCx0cmFuc3BhcmVudCk7XG5cdFxuXHRcdH1cblx0XHRcblx0XHQmOjpiZWZvcmUge1xuXHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMjAwcHg7XG5cdFx0XHR6LWluZGV4OiAzO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9oZXJvLWRlY29yLnBuZycpO1xuXHRcdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogYm90dG9tIGNlbnRlcjtcblx0XHRcdGJhY2tncm91bmQtc2l6ZTogY29udGFpblxuXHRcdH1cblx0fVxuXG5cdC50ZXh0LWJsb2NrIHtcblx0XHRAaW5jbHVkZSBmb250LXNpemUoMTZweCk7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGNvbG9yOiAjZmZmO1xuXHRcdHotaW5kZXg6IDQ7XG5cdFx0bWF4LXdpZHRoOiAyMjVweDtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRyaWdodDogMjVweDtcblx0XHRib3R0b206IDE1JTtcblx0XHRwYWRkaW5nLWJvdHRvbTogNDBweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PXBob25lJykge1xuXHRcdFx0Ym90dG9tOiAyNCU7XG5cdFx0XHRtYXgtd2lkdGg6IDI1MHB4O1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRcdEBpbmNsdWRlIGZvbnQtc2l6ZSgxOHB4KTtcblx0XHRcdG1heC13aWR0aDogMzAwcHg7XG5cdFx0fVxuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcblx0XHRcdG1heC13aWR0aDogMzEwcHg7XG5cdFx0XHRyaWdodDogNTBweDtcblx0XHR9XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgnPj13aWRlc2NyZWVuJykge1xuXHRcdFx0QGluY2x1ZGUgZm9udC1zaXplKDIxcHgpO1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PTE0NDBweCcpIHtcblx0XHRcdEBpbmNsdWRlIGZvbnQtc2l6ZSgyM3B4KTtcblx0XHRcdHJpZ2h0OiAxMDBweDtcblx0XHRcdG1heC13aWR0aDogMzUwcHg7XG5cdFx0fVxuXG5cblx0XHRoMSB7XG5cdFx0XHRAaW5jbHVkZSBmb250LXNpemUoMjJweCk7XG5cdFx0XHRmb250LXdlaWdodDogMzAwO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNTBweDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdFx0XHRAaW5jbHVkZSBmb250LXNpemUoMjZweCk7XG5cdFx0XHR9XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKCc+PTE0NDBweCcpIHtcblx0XHRcdFx0QGluY2x1ZGUgZm9udC1zaXplKDMycHgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdFx0fVxuXHR9XG5cblx0LmxpbmUtaGFpbCB7XG5cdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0O1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRsZWZ0OiAwO1xuXHRcdHRvcDogMTAwJTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG5cdFx0d2lkdGg6IDJweDtcblx0XHRoZWlnaHQ6IDEzMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICM2NGNjZWE7XG5cdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRcdGhlaWdodDogMjIwcHg7XG5cdFx0XHR0b3A6IDExNCU7XG5cdFx0fVxuXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI+PXdpZGVzY3JlZW5cIikge1xuXHRcdFx0XG5cdFx0fVxuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAjMTk0NjljO1xuXHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMzclO1xuXHRcdFx0YW5pbWF0aW9uOiAyLjVzIGxpbmVhciBpbmZpbml0ZSBzbGlkZUxpbmU7XG5cdFx0fVxuXHR9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVMaW5lIHtcblx0MCUge1xuXHRcdC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMDAlKTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwMCUpO1xuXHR9XG5cdDUwJSB7XG5cdFx0LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHR9XG5cdDEwMCUge1xuXHRcdC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwMCUpO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMDAlKTtcblx0fVxufVxuIiwiLnNlY3Rpb24taW1nLXRleHQge1xuXHRwYWRkaW5nLXRvcDogMTAwcHg7XG5cdHBhZGRpbmctYm90dG9tOiAxMDBweDtcblx0Y29sb3I6ICM0YjQ3NDI7XG5cdGZvbnQtd2VpZ2h0OiAzMDA7XG5cblx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdHBhZGRpbmctdG9wOiAxNjVweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMjAwcHg7XG5cdH1cblxuXHQuaW1nLXRvcCB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0LmlubmVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdFx0bWFyZ2luOiAwIC0xNXB4O1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdFx0ZmxleC13cmFwOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49MTUwMHB4Jykge1xuXHRcdFx0bWFyZ2luOiAwIC0zNXB4O1xuXHRcdH1cblx0fVxuXG5cdC5jb2wtdGV4dCB7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdGZsZXg6IDAgMCAxMDAlO1xuXHRcdHBhZGRpbmc6IDAgMTVweDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdG1hcmdpbi1ib3R0b206IDQwcHg7XG5cdFx0bWFyZ2luLXRvcDogNDBweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRcdG1heC13aWR0aDogNTAlO1xuXHRcdFx0ZmxleDogMCAwIDUwJTtcblx0XHR9XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgnPj0xNTAwcHgnKSB7XG5cdFx0XHRwYWRkaW5nOiAwIDM1cHg7XG5cdFx0XHRtYXgtd2lkdGg6IDQ3MHB4O1xuXHRcdFx0ZmxleDogMCAwIDQ3MHB4O1xuXHRcdFx0cGFkZGluZy10b3A6IDQ4MnB4O1xuXHRcdFx0cGFkZGluZzogMCAzNXB4IDAgMzVweDtcblx0XHR9XG5cblx0XHRoMiB7XG5cdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdGxlZnQ6IC0xNC4yJTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cblx0XHRcdCsgcCB7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDMwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmNvbC1pbWcge1xuXHRcdHBhZGRpbmc6IDAgMTVweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PTE1MDBweCcpIHtcblx0XHRcdHBhZGRpbmc6IDAgMzVweDtcblx0XHR9XG5cblx0XHQuaW1nIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdHBhZGRpbmctbGVmdDogMTVweDtcbiAgICBcdFx0cGFkZGluZy1ib3R0b206IDE1cHg7XG5cdFx0XHR6LWluZGV4OiAxO1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDUwcHg7XG5cdFx0XHRcdHBhZGRpbmctYm90dG9tOiA1MHB4O1xuXHRcdFx0fVxuXHRcblx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0d2lkdGg6IDIwJTtcblx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNjOWM0YWY7XG5cdFx0XHRcdHotaW5kZXg6IC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSIsIi5zZWN0aW9uLWltZy10d28tY29sIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRwYWRkaW5nOiAxNTBweCAwO1xuXHRjb2xvcjogJHdoaXRlO1xuXHR6LWluZGV4OiAxO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcblx0XHRwYWRkaW5nOiAyMDBweCAwO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJz49d2lkZXNjcmVlbicpIHtcblx0XHRwYWRkaW5nOiA0MDBweCAwO1xuXHR9XG5cblx0LmJnLWRlY29yIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAyNjB2aDtcblx0XHR0b3A6IC0zMCU7XG5cdFx0YmFja2dyb3VuZDogdXJsKFwiLi4vaW1hZ2VzL2JwLWNvcHkucG5nXCIpIG5vLXJlcGVhdCBsZWZ0IHRvcC9jb250YWluO1xuXHRcdHotaW5kZXg6IDE7XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgnPj0xNDQxcHgnKSB7XG5cdFx0XHRoZWlnaHQ6IDIwMHZoO1xuXHRcdH1cblx0fVxuXG5cdGgyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR6LWluZGV4OiAyO1xuXHR9XG5cblx0LmlubmVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bWF4LXdpZHRoOiA3NjBweDtcblx0XHR6LWluZGV4OiAyO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsMWZyKTtcblx0XHRcdGdhcDogODBweDtcblx0XHR9XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgnPj13aWRlc2NyZWVuJykge1xuXHRcdFx0Z2FwOiAxMjBweDtcblx0XHR9XG5cblx0XHQudGV4dCB7XG5cdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG5cdFx0XHRcdFx0cGFkZGluZy10b3A6IDEwMHB4O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoJz49d2lkZXNjcmVlbicpIHtcblx0XHRcdFx0XHRwYWRkaW5nLXRvcDogMjAwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuaW1nIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGNsaXAtcGF0aDogcG9seWdvbigwIDEwJSwgMTAwJSAwLCAxMDAlIDEwMCUsIDAgOTAlKTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMTk0NjljO1xuXHRcdHotaW5kZXg6IC0xO1xuXG5cdFx0aW1nIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogOTclO1xuXHRcdFx0b2JqZWN0LWZpdDogY292ZXI7XG5cdFx0XHRvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcblx0XHRcdHotaW5kZXg6IDE7XG5cdFx0fVxuXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdHotaW5kZXg6IDM7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgyNjVkZWcsICMwMDAwMDBjYywgI2ZmZmZmZjAwKTtcblx0XHR9XG5cdFx0XG5cdFx0Jjo6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRib3R0b206IDA7XG5cdFx0XHRyaWdodDogMDtcblx0XHRcdHdpZHRoOiAwO1xuXHRcdFx0aGVpZ2h0OiAwO1xuXHRcdFx0Ym9yZGVyLXRvcDogNDJweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0XHRcdGJvcmRlci1ib3R0b206IDY3cHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdFx0XHRib3JkZXItcmlnaHQ6IDkwMHB4IHNvbGlkICMxOTQ2OWM7XG5cdFx0XHR6LWluZGV4OiA4O1xuXHRcdH1cblx0fVxufSIsIi5zZWN0aW9uLWNvbnRhY3QtdXMge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGNvbG9yOiAkd2hpdGU7XG5cdHBhZGRpbmc6IDAgMCAxMDBweDtcblxuXHRAaW5jbHVkZSBtZWRpYSgnPj13aWRlc2NyZWVuJykge1xuXHRcdHBhZGRpbmc6IDUwcHggMCAxMTVweDtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCc+PTE1MDBweCcpIHtcblx0XHRwYWRkaW5nOiA0MDBweCAwIDExNXB4O1xuXHR9XG5cblx0LmltZyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGluc2V0OiAwO1xuXHRcdHotaW5kZXg6IDE7XG5cblx0XHQmOmFmdGVyIHtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHR6LWluZGV4OiAzO1xuXHRcdFx0YmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvZGVjb3ItMDEucG5nJykgbm8tcmVwZWF0IGJvdHRvbSBjZW50ZXIvY292ZXI7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHRcdHotaW5kZXg6IDE7XG5cdFx0fVxuXG5cdFx0aW1nIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0aW5zZXQ6IDA7XG5cdFx0XHRvYmplY3QtZml0OiBjb3Zlcjtcblx0XHRcdG9iamVjdC1wb3NpdGlvbjogYm90dG9tIGNlbnRlcjtcblx0XHRcdHotaW5kZXg6IDE7XG5cdFx0fVxuXHR9XG5cblx0LnRleHQge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR6LWluZGV4OiAyO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0cGFkZGluZy10b3A6IDI1MHB4O1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49d2lkZXNjcmVlbicpIHtcblx0XHRcdEBpbmNsdWRlIGZvbnQtc2l6ZSgyMnB4KTtcblx0XHRcdHBhZGRpbmctdG9wOiAyMDBweDtcblx0XHR9XG5cblx0XHRhZGRyZXNzIHtcblx0XHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0XHR9XG5cblx0XHRzdHJvbmcge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0aDIge1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49MTUwMHB4Jykge1xuXHRcdFx0QGluY2x1ZGUgZm9udC1zaXplKDQycHgpO1xuXHRcdH1cblx0fVxufSIsIi5zZWN0aW9uLXR3by1jb2wge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHBhZGRpbmctdG9wOiAxMDBweDtcblx0ei1pbmRleDogMjtcblxuXHQmOmFmdGVyIHtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0dG9wOiA1MCU7XG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCNlZWVhZTcgNTQlLCB0cmFuc3BhcmVudCA1OCUpO1xuXHRcdHotaW5kZXg6IC0xO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcblx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgjZWVlYWU3IDUyJSwgdHJhbnNwYXJlbnQgNjklKTtcblx0XHR9XG5cdH1cblxuXHQuaW5uZXIge1xuXHRcdEBpbmNsdWRlIG1lZGlhKCc+PTU3NnB4Jykge1xuXHRcdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsMWZyKTtcblx0XHRcdGdhcDogMjBweDtcblx0XHR9XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG5cdFx0XHRnYXA6IDMwcHg7XG5cdFx0fVxuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49d2lkZXNjcmVlbicpIHtcblx0XHRcdGdhcDogODVweDtcblx0XHR9XG5cdH1cblxuXHQuY2FyZCB7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHRtYXJnaW4tYm90dG9tOiA1MHB4O1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJz49d2lkZXNjcmVlbicpIHtcblx0XHRcdEBpbmNsdWRlIGZvbnQtc2l6ZSgyMnB4KTtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cblx0XHRcdCsgcCB7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDE1cHg7XG5cblx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdFx0XHRcdG1hcmdpbi10b3A6IDIwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQuaW1nIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdG1heC13aWR0aDogNDAwcHg7XG5cdFx0XHRwYWRkaW5nOiAzMnB4IDMycHggMCAwO1xuXHRcdFx0ei1pbmRleDogMTtcblxuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0d2lkdGg6IDIwJTtcblx0XHRcdFx0aGVpZ2h0OiA4NSU7XG5cdFx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNjOWM0YWY7XG5cdFx0XHRcdHotaW5kZXg6IC0xO1xuXHRcdFx0fVxuXG5cdFx0XHRpbWcge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuaGVhZGluZyB7XG5cdFx0XHRAaW5jbHVkZSBmb250LXNpemUoMThweCk7XG5cdFx0XHRjb2xvcjogIzE2NGE4NTtcblx0XHRcdHBhZGRpbmc6IDE4cHggMDtcblxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuXHRcdFx0XHRAaW5jbHVkZSBmb250LXNpemUoMjNweCk7XG5cdFx0XHR9XG5cdFx0XG5cdFx0XHRAaW5jbHVkZSBtZWRpYSgnPj13aWRlc2NyZWVuJykge1xuXHRcdFx0XHRwYWRkaW5nOiA0MHB4IDA7XG5cdFx0XHR9XG5cblx0XHRcdD4gKiB7XG5cdFx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdFx0XHRmb250LXNpemU6IGluaGVyaXQ7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0iXX0= */
