/*! 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;
}

body {
  --gap__blt: 32px;
  --gap__blt-rdc: 16px;
  --gap__grd: 16px;
  --gap__cnt: 24px;
  --paddingcard: 12px;
}
@media only screen and (min-width: 640px) {
  body {
    --gap__blt: 64px;
    --gap__blt-rdc: 32px;
    --gap__grd: 16px;
    --gap__cnt: 24px;
    --paddingcard: 24px;
  }
}
@media only screen and (min-width: 1048px) {
  body {
    --gap__blt: 120px;
    --gap__blt-rdc: 64px;
    --gap__grd: 32px;
    --gap__cnt: 24px;
    --paddingcard: 32px;
  }
}

div, ul, li, article, main, aside, header, footer, section, p, a, h1, h2, h3, h4, h5, h6, pre, input, textarea, dialog {
  box-sizing: border-box;
}

@font-face {
  font-family: Malva;
  src: local(Malva-Book), url(font/Malva-Book.ttf) format("truetype"), url(../../css/font/Malva-Book.ttf) format("truetype");
  font-weight: normal;
  font-style: normal;
}
@font-face {
  font-family: Malva;
  src: local(Malva-Medium), url(font/Malva-Medium.ttf) format("truetype"), url(../../css/font/Malva-Medium.ttf) format("truetype");
  font-weight: 500;
  font-style: normal;
}
@font-face {
  font-family: Malva;
  src: local(Malva-Bold), url(font/Malva-Bold.ttf) format("truetype"), url(../../css/font/Malva-Bold.ttf) format("truetype");
  font-weight: bold;
  font-style: normal;
}
@font-face {
  font-family: Malva;
  src: local(Malva-ExtraBold), url(font/Malva-ExtraBold.ttf) format("truetype"), url(../../css/font/Malva-ExtraBold.ttf) format("truetype");
  font-weight: 800;
  font-style: normal;
}
body, .body {
  color: #000;
  -webkit-hyphens: auto;
  -moz-hyphens: auto;
  -ms-hyphens: auto;
  hyphens: auto;
  font-family: Malva, sans-serif;
  font-size: 1rem;
  line-height: 24px;
}

h1,
h2,
h3,
h4 {
  color: #003D76;
  font-family: Malva, sans-serif;
  font-weight: bold;
}

h1 {
  font-size: 1.25rem;
  color: #fff;
}

h2 {
  font-size: 1.25rem;
  margin: 0.5rem 0 0.75rem 0;
}

h2 + h3 {
  margin-top: 0;
}

h3 {
  font-size: 1rem;
  font-weight: bold;
}

h4 {
  font-size: 19px;
  line-height: 24px;
  margin: 0;
}

.bold {
  font-weight: bold;
}

.centered {
  text-align: center;
}

.underline {
  text-decoration: underline;
}

p {
  margin: 0;
}

@media only screen and (min-width: 640px) {
  h1 {
    font-size: 3rem;
    font-weight: bold;
    margin-bottom: 1.5rem;
    line-height: 4rem;
  }
  h2 {
    font-size: 2.25rem;
    font-weight: 800;
    margin-bottom: 1rem;
    line-height: 3rem;
  }
  h3 {
    font-size: 1.25rem;
    line-height: 1.5rem;
  }
}
p, .paragraph {
  line-height: 24px;
  font-weight: 400;
}
p:first-child, .paragraph:first-child {
  margin-top: 0;
  padding-top: 0;
}
p:last-child, .paragraph:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
}

a {
  text-decoration: none;
}

ul {
  list-style: none;
  padding: 0;
}

body, .body {
  margin: 0;
  position: relative;
  background-color: #F2F7FB;
  font-family: Malva, sans-serif;
  color: #000;
}

html {
  scroll-behavior: smooth;
}

.wrapper {
  margin: 0 1rem;
}

@media only screen and (min-width: 640px) {
  .wrapper {
    margin: 0 2rem;
  }
}
@media only screen and (min-width: 1360px) {
  .wrapper {
    margin: 0 auto;
    width: 1200px;
  }
}
section {
  margin: 3rem 0;
}

header {
  margin-bottom: 3rem;
}

footer {
  margin-top: 3rem;
}

@media only screen and (min-width: 640px) {
  section {
    margin: 4rem 0;
  }
  header {
    margin-bottom: 4rem;
  }
  footer {
    margin-top: 4rem;
  }
}
@media only screen and (min-width: 1360px) {
  section {
    margin: 6rem 0;
  }
  header {
    margin-bottom: 6rem;
  }
  footer {
    margin-top: 6rem;
  }
}
.CTA {
  display: block;
  width: fit-content;
  background-color: #009EE3;
  color: #fff;
  font-weight: bold;
  border-radius: 0.25rem;
  padding: 0.5rem 1.5rem;
  margin-top: 1.5rem;
  transition: 0.6s;
  cursor: pointer;
}
.CTA:hover {
  background-color: #003D76;
  transition: 0.6s;
}

@media only screen and (min-width: 640px) {
  .CTA {
    padding: 0.75rem 2.5rem;
  }
}
.footer {
  background-color: #003D76;
  padding: 2rem 0;
  color: #fff;
}
.footer .logo {
  height: 3rem;
}
.footer .wrapper > div {
  margin-bottom: 1.5rem;
}
.footer .wrapper > div h3 {
  margin-bottom: 0.5rem;
  margin-top: 0;
}
.footer .wrapper > div p {
  margin-top: 0;
}
.footer h3,
.footer a {
  color: #fff;
}
.footer .socials {
  margin-top: 1.5rem;
  display: flex;
  align-items: center;
}
.footer .socials a {
  height: 1.5rem;
  width: 1.5rem;
  margin-left: 1rem;
}
.footer .socials .languageSelect {
  background-color: white;
  border: none;
  border-radius: 1rem;
  padding: 0.25rem 0.5rem;
  color: #003D76;
  font-weight: 500;
  font-size: 1rem;
}
.footer .impressum {
  display: flex;
  flex-direction: column;
}
.footer .impressum img {
  height: 1.75rem;
  width: 10.8rem;
  margin-top: 0.5rem;
  margin-bottom: 1rem;
}

@media only screen and (min-width: 640px) {
  .footer {
    padding: 2.5rem 0;
  }
  .footer .wrapper {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
  }
  .footer .wrapper .logoSocials,
  .footer .wrapper .kontakt,
  .footer .wrapper .adresse,
  .footer .wrapper .impressum {
    width: 50%;
  }
}
@media only screen and (min-width: 1360px) {
  .footer {
    padding: 4rem 0;
  }
  .footer .wrapper {
    justify-content: space-between;
    flex-wrap: nowrap;
  }
  .footer .wrapper .logoSocials,
  .footer .wrapper .kontakt,
  .footer .wrapper .adresse,
  .footer .wrapper .impressum {
    width: auto;
  }
}
picture img {
  width: 100%;
}

.pageHeader {
  display: grid;
  grid-template-rows: 1fr;
  grid-template-columns: 1fr;
}
.pageHeader--flat {
  background-color: #003D76;
  height: 4rem;
  display: flex;
  align-items: center;
}
.pageHeader--flat h1 {
  margin: 0;
}
.pageHeader picture,
.pageHeader .wrapper {
  grid-row: 1/-1;
  grid-column: 1/-1;
}
.pageHeader .wrapper {
  display: flex;
  align-items: flex-end;
}
.pageHeader .wrapper .headContent {
  margin-bottom: 4rem;
}
.pageHeader .wrapper .headContent .engBreak {
  display: none;
}

@media only screen and (min-width: 640px) {
  .pageHeader--flat {
    height: 8rem;
  }
}
@media only screen and (min-width: 1360px) {
  .pageHeader--flat {
    height: 12rem;
  }
  .pageHeader .wrapper {
    align-items: center;
  }
  .pageHeader .wrapper .headContent {
    margin-bottom: 0;
    width: 50%;
  }
  .pageHeader .wrapper .headContent .engBreak {
    display: block;
  }
}
.split .splitImage {
  margin-top: 1.5rem;
}
.split .splitImage img {
  width: 100%;
  border-radius: 0.5rem;
}

@media only screen and (min-width: 640px) {
  .split .splitImage {
    margin-top: 4rem;
  }
  .split .splitImage img {
    border-radius: 1.5rem;
  }
}
@media only screen and (min-width: 1360px) {
  .split .wrapper {
    display: flex;
    flex-direction: row;
  }
  .split .wrapper .splitImage {
    margin-top: 0;
    width: 48%;
    margin-left: 2rem;
  }
  .split .wrapper .splitContent {
    width: 48%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-right: 2rem;
  }
}
.navigation {
  padding: 0.75rem;
  background-color: #fff;
}
.navigation .wrapper {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 0;
}
.navigation .wrapper .logo {
  height: 2rem;
  display: flex;
  align-items: center;
}
.navigation .wrapper .languageSelect {
  border: 2px solid #003D76;
  background-color: #fff;
  border-radius: 1rem;
  padding: 0.25rem 0.5rem;
  color: #003D76;
  font-weight: 500;
  font-size: 1rem;
}
.navigation .wrapper .navLink {
  display: none;
}

@media only screen and (min-width: 640px) {
  .navigation {
    padding: 1.5rem 2rem;
  }
  .navigation .wrapper .logo {
    height: 3rem;
  }
  .navigation .wrapper .navLink {
    display: inline-block;
    color: #6E6E6E;
    font-weight: 500;
    margin-right: 2rem;
  }
}
@media only screen and (min-width: 1360px) {
  .navigation .wrapper {
    margin: 0 auto;
  }
}
.iconList .iconlistBody {
  display: grid;
  grid-template-columns: repeat(1, 1fr);
  gap: 1.5rem;
  margin-top: 3rem;
}
.iconList .iconCard {
  color: #6E6E6E;
  background-color: #fff;
  display: flex;
  flex-direction: column;
  padding: 1.5rem;
  border-radius: 0.5rem;
  box-shadow: 2px 2px 0px 0px rgba(0, 61, 118, 0.1);
}
.iconList .iconCard img {
  height: 3.5rem;
  width: 3.5rem;
  margin-bottom: 1.5rem;
}
.iconList .iconCard .iconHeadline {
  color: #003D76;
  font-size: 1.25rem;
  font-weight: bold;
  margin-bottom: 0.5rem;
}

@media only screen and (min-width: 640px) {
  .iconList .iconlistBody {
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
  }
}
@media only screen and (min-width: 1360px) {
  .iconList .iconlistBody {
    grid-template-columns: repeat(3, 1fr);
  }
}
.bannerContent {
  display: grid;
  grid-template-rows: 1fr;
  grid-template-columns: 1fr;
}
.bannerContent picture,
.bannerContent .wrapper {
  grid-row: 1/-1;
  grid-column: 1/-1;
}
.bannerContent .wrapper {
  display: flex;
  align-items: flex-end;
}
.bannerContent .wrapper .bannerText {
  margin-bottom: 1.5rem;
}
.bannerContent .wrapper .bannerText h2,
.bannerContent .wrapper .bannerText h3 {
  color: #fff;
}

@media only screen and (min-width: 640px) {
  .bannerContent .wrapper .bannerText {
    margin-bottom: 4rem;
  }
}
@media only screen and (min-width: 1360px) {
  .bannerContent .wrapper {
    align-items: center;
    justify-content: flex-end;
  }
  .bannerContent .wrapper .bannerText {
    width: 50%;
    margin-bottom: 0;
  }
}
.contact {
  scroll-margin-top: 3rem;
}
.contact .contactform .formThanks {
  margin: 2rem 0;
  padding: 1rem;
  background-color: #77b447;
  border-radius: 0.25rem;
  color: #fff;
  font-weight: bold;
}
.contact .contactform .formContent {
  display: grid;
  row-gap: 2rem;
}
.contact .contactform .formContent > div {
  display: flex;
  flex-direction: column;
}
.contact .contactform .formContent > div input,
.contact .contactform .formContent > div textarea {
  background-color: #E4EEF7;
  border-radius: 0.25rem;
  box-shadow: 1px 1px 1px 0px rgba(0, 61, 118, 0.3) inset;
  border: none;
  resize: none;
  padding: 1rem;
}
.contact .contactform .formContent > div input:focus,
.contact .contactform .formContent > div textarea:focus {
  outline-color: #003D76;
}
.contact .contactform .formContent > div input {
  height: 3rem;
}
.contact .contactform .formContent > div label {
  font-weight: bold;
  color: #003D76;
  margin-bottom: 0.5rem;
}
.contact .contactform .CTA {
  border: none;
  height: auto;
  margin: 2rem 0;
}
.contact .contactform .mapFrame iframe {
  width: 100%;
  aspect-ratio: 1/1;
}

@media only screen and (min-width: 640px) {
  .contact .formContent {
    column-gap: 1.5rem;
    grid-template-columns: repeat(2, 1fr);
  }
  .contact .formContent > div {
    grid-column: span 2;
  }
  .contact .formContent .formNameField,
  .contact .formContent .formMailField {
    grid-column: span 1;
  }
}
@media only screen and (min-width: 1360px) {
  .contact .contactform {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    column-gap: 2rem;
  }
  .contact .contactform .formContent {
    order: 1;
  }
  .contact .contactform .mapFrame {
    order: 2;
  }
  .contact .contactform .mapFrame iframe {
    height: 100%;
    aspect-ratio: auto;
  }
  .contact .contactform .CTA {
    order: 3;
    grid-column: -1/1;
  }
  .contact .contactform .formThanks {
    order: 4;
    grid-column: -1/1;
  }
}
.imprint .wrapper .rightImprint span {
  font-size: 1.25rem;
}
.imprint .wrapper p {
  margin-bottom: 1.5rem;
}
.imprint .wrapper a {
  color: #000;
}

@media only screen and (min-width: 640px) {
  .imprint .wrapper {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 4rem;
  }
  .imprint .wrapper .leftImprint {
    grid-column: span 1;
  }
  .imprint .wrapper .rightImprint {
    grid-column: span 2;
  }
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnRpY2xlcy9fbm9ybWFsaXplLnNjc3MiLCJwYXJ0aWNsZXMvX2dhcHMuc2NzcyIsInBhcnRpY2xlcy9fYnJlYWtwb2ludHMuc2NzcyIsInBhcnRpY2xlcy9faGVscGVycy5zY3NzIiwiYXRvbXMvX2ZvbnRzLnNjc3MiLCJhdG9tcy9fdHlwby5zY3NzIiwicGFydGljbGVzL19jb2xvcnMuc2NzcyIsImF0b21zL19ib2R5LnNjc3MiLCJhdG9tcy9fd3JhcHBlci5zY3NzIiwiYXRvbXMvX3NlY3Rpb24uc2NzcyIsImF0b21zL19idXR0b24uc2NzcyIsIm9yZ2FuaXNtcy9fZm9vdGVyLnNjc3MiLCJvcmdhbmlzbXMvX2hlYWRlci5zY3NzIiwib3JnYW5pc21zL19zcGxpdC5zY3NzIiwib3JnYW5pc21zL19uYXZpZ2F0aW9uLnNjc3MiLCJvcmdhbmlzbXMvX2ljb25saXN0LnNjc3MiLCJvcmdhbmlzbXMvX2Jhbm5lci5zY3NzIiwib3JnYW5pc21zL19jb250YWN0Zm9ybS5zY3NzIiwib3JnYW5pc21zL19pbXByaW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFLQztFQUNDO0VBQ0E7OztBQUdGO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFJQTtFQUNFOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtFQUNFOzs7QUFHRjtBQUFBO0FBQUE7QUFBQTtBQUtBO0VBQ0U7RUFDQTs7O0FBR0Y7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBS0E7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7QUFBQTtBQUFBO0FBS0E7RUFDRTtFQUNBOzs7QUFHRjtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBSUE7RUFDRTs7O0FBR0Y7QUFBQTtBQUFBO0FBQUE7QUFLQTtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtBQUFBO0FBSUE7QUFBQTtFQUVFOzs7QUFHRjtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtFQUdFO0VBQ0E7OztBQUdGO0FBQUE7QUFBQTtBQUlBO0VBQ0U7OztBQUdGO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtFQUVFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBSUE7RUFDRTs7O0FBR0Y7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUtFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUEsUUFDUTtFQUNOOzs7QUFHRjtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUEsU0FDUztFQUNQOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtFQUlFOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtFQUlFO0VBQ0E7OztBQUdGO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0VBSUU7OztBQUdGO0FBQUE7QUFBQTtBQUlBO0VBQ0U7OztBQUdGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtFQUNFOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtFQUNFOzs7QUFHRjtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUE7RUFFRTtFQUNBOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtBQUFBO0VBRUU7OztBQUdGO0FBQUE7QUFBQTtBQUFBO0FBS0E7RUFDRTtFQUNBOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtFQUNFOzs7QUFHRjtBQUFBO0FBQUE7QUFBQTtBQUtBO0VBQ0U7RUFDQTs7O0FBR0Y7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUlBO0VBQ0U7OztBQUdGO0FBQUE7QUFBQTtBQUlBO0VBQ0U7OztBQUdGO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFJQTtFQUNFOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtFQUNFOzs7QUN2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ZW50IjpbIi8qISBub3JtYWxpemUuY3NzIHY4LjAuMSB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cclxuXHJcbi8qIERvY3VtZW50XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cclxuICovXHJcblxyXG4gaHRtbCB7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cclxuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cclxufVxyXG5cclxuLyogU2VjdGlvbnNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuYm9keSB7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4vKipcclxuICogUmVuZGVyIHRoZSBgbWFpbmAgZWxlbWVudCBjb25zaXN0ZW50bHkgaW4gSUUuXHJcbiAqL1xyXG5cclxubWFpbiB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXHJcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuaDEge1xyXG4gIGZvbnQtc2l6ZTogMmVtO1xyXG4gIG1hcmdpbjogMC42N2VtIDA7XHJcbn1cclxuXHJcbi8qIEdyb3VwaW5nIGNvbnRlbnRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxyXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cclxuICovXHJcblxyXG5ociB7XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cclxuICBoZWlnaHQ6IDA7IC8qIDEgKi9cclxuICBvdmVyZmxvdzogdmlzaWJsZTsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbnByZSB7XHJcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXHJcbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cclxufVxyXG5cclxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXHJcbiAqL1xyXG5cclxuYSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxyXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxyXG4gKi9cclxuXHJcbmFiYnJbdGl0bGVdIHtcclxuICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXHJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuYixcclxuc3Ryb25nIHtcclxuICBmb250LXdlaWdodDogYm9sZGVyO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbmNvZGUsXHJcbmtiZCxcclxuc2FtcCB7XHJcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXHJcbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbnNtYWxsIHtcclxuICBmb250LXNpemU6IDgwJTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxyXG4gKiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuc3ViLFxyXG5zdXAge1xyXG4gIGZvbnQtc2l6ZTogNzUlO1xyXG4gIGxpbmUtaGVpZ2h0OiAwO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbn1cclxuXHJcbnN1YiB7XHJcbiAgYm90dG9tOiAtMC4yNWVtO1xyXG59XHJcblxyXG5zdXAge1xyXG4gIHRvcDogLTAuNWVtO1xyXG59XHJcblxyXG4vKiBFbWJlZGRlZCBjb250ZW50XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC5cclxuICovXHJcblxyXG5pbWcge1xyXG4gIGJvcmRlci1zdHlsZTogbm9uZTtcclxufVxyXG5cclxuLyogRm9ybXNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuaW5wdXQsXHJcbm9wdGdyb3VwLFxyXG5zZWxlY3QsXHJcbnRleHRhcmVhIHtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xyXG4gIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXHJcbiAgbWFyZ2luOiAwOyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cclxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cclxuICovXHJcblxyXG5idXR0b24sXHJcbmlucHV0IHsgLyogMSAqL1xyXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXHJcbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cclxuICovXHJcblxyXG5idXR0b24sXHJcbnNlbGVjdCB7IC8qIDEgKi9cclxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuYnV0dG9uLFxyXG5bdHlwZT1cImJ1dHRvblwiXSxcclxuW3R5cGU9XCJyZXNldFwiXSxcclxuW3R5cGU9XCJzdWJtaXRcIl0ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cclxuICovXHJcblxyXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXHJcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxyXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxyXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XHJcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXHJcbiAqL1xyXG5cclxuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxyXG5bdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcclxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcclxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xyXG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cclxuICovXHJcblxyXG5maWVsZHNldCB7XHJcbiAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cclxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxyXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XHJcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbmxlZ2VuZCB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xyXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXHJcbiAgZGlzcGxheTogdGFibGU7IC8qIDEgKi9cclxuICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cclxuICBwYWRkaW5nOiAwOyAvKiAzICovXHJcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMSAqL1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cclxuICovXHJcblxyXG5wcm9ncmVzcyB7XHJcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXHJcbiAqL1xyXG5cclxudGV4dGFyZWEge1xyXG4gIG92ZXJmbG93OiBhdXRvO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXHJcbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cclxuICovXHJcblxyXG5bdHlwZT1cImNoZWNrYm94XCJdLFxyXG5bdHlwZT1cInJhZGlvXCJdIHtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXHJcbiAgcGFkZGluZzogMDsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxyXG4gKi9cclxuXHJcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxyXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXHJcbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxyXG4gKi9cclxuXHJcblt0eXBlPVwic2VhcmNoXCJdIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xyXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXHJcbiAqL1xyXG5cclxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXHJcbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cclxuICovXHJcblxyXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xyXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cclxufVxyXG5cclxuLyogSW50ZXJhY3RpdmVcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXHJcbiAqL1xyXG5cclxuZGV0YWlscyB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi8qXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cclxuICovXHJcblxyXG5zdW1tYXJ5IHtcclxuICBkaXNwbGF5OiBsaXN0LWl0ZW07XHJcbn1cclxuXHJcbi8qIE1pc2NcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXHJcbiAqL1xyXG5cclxudGVtcGxhdGUge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC5cclxuICovXHJcblxyXG5baGlkZGVuXSB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG4iLCJAdXNlICdicmVha3BvaW50cycgYXMgKjtcclxuXHJcblxyXG4vL1NwYWNpbmcgRmVhdHVyZSBVTkktMTM3XHJcbiRzcGFjaW5nLXh4czogNHB4OyAvLyAwLjI1cmVtXHJcbiRzcGFjaW5nLXhzOiA4cHg7IC8vIDAuNXJlbVxyXG4kc3BhY2luZy1zOiAxMnB4OyAvLyAwLjc1cmVtXHJcbiRzcGFjaW5nLW06IDE2cHg7IC8vIDFyZW1cclxuJHNwYWNpbmctbDogMjRweDsgLy8gMS41cmVtXHJcbiRzcGFjaW5nLXhsOiAzMnB4OyAvLyAycmVtXHJcbiRzcGFjaW5nLXh4bDogNTZweDsgLy8gMy41cmVtXHJcbiRzcGFjaW5nLXh4bC0yOiA2NHB4OyAvLyA0cmVtXHJcbiRzcGFjaW5nLXh4bC0zOiAxMjBweDsgLy8gNy41cmVtXHJcblxyXG4vL2JlbHQgc3BhY2luZy4gdG9wICYgYm90dG9tIFBhZGRpbmcgZWluZXMgYmVsdC5cclxuJGdhcF9fYmx0OiAoXHJcbiAgbW46ICRzcGFjaW5nLXhsLFxyXG4gIG1kOiAkc3BhY2luZy14eGwtMixcclxuICBsZzogJHNwYWNpbmcteHhsLTMsXHJcbik7XHJcblxyXG4vL2JlbHQgc3BhY2luZyBmw7xyIFNla3Rpb25lbi5IYWxiaWVydCB2b24gU3RhbmRhcmR3ZXJ0ZW4gZGVyIFNla3Rpb25lbi5cclxuJGdhcF9fc2VjLXJkYzogKFxyXG4gIG1uOiAkc3BhY2luZy14cyxcclxuICBtZDogJHNwYWNpbmctbSxcclxuICBsZzogJHNwYWNpbmcteGwsXHJcbik7XHJcblxyXG4vL2JlbHQgc3BhY2luZy4gdG9wICYgYm90dG9tIFBhZGRpbmcgZWluZXMgYmVsdC4gSGFsYmllcnQgdm9uIFN0YW5kYXJkd2VydGVuXHJcbiRnYXBfX2JsdC1yZGM6IChcclxuICBtbjogJHNwYWNpbmctbSxcclxuICBtZDogJHNwYWNpbmcteGwsXHJcbiAgbGc6ICRzcGFjaW5nLXh4bC0yLCAvLyBub3QgcHJlY2lzZSA1MHByYyBvZiAxMjBcclxuKTtcclxuXHJcbi8vSG9yaXpvbnRhbGVzL3ZlcmlrYWxlcyBHYXAgendpc2NoZW4gTGlzdGl0ZW1zXHJcbiRnYXBfX2dyZDogKFxyXG4gIDA6IDAsXHJcbiAgbW46ICRzcGFjaW5nLW0sXHJcbiAgbWQ6ICRzcGFjaW5nLW0sXHJcbiAgbGc6ICRzcGFjaW5nLXhsLFxyXG4pO1xyXG5cclxuLy9TcGFjaW5nIGbDvHIgQ29udGVudC4gV2llIFAsIExpIGV0Yy5cclxuXHJcbi8vIFRPRE86IEZpbmFsZSBXZXJ0ZSBkZWZpbmllcmVuIVxyXG4kZ2FwX19jbnQ6IChcclxuICBtbjogJHNwYWNpbmctbCxcclxuICBtZDogJHNwYWNpbmctbCxcclxuICBsZzogJHNwYWNpbmctbCxcclxuKTtcclxuXHJcbi8vV3JhcHBlciBQYWRkaW5nLiBBdXNzZW5hYnN0YW5kIHZvbSB3cmFwcGVyLiBXaXJkIHZvbSB3cmFwcGVyIG1peGluIHZlcndlbmRldC5cclxuJHdyYXBwZXJwYWRkaW5nOiAoXHJcbiAgbW46ICRzcGFjaW5nLXMsXHJcbiAgbWQ6ICRzcGFjaW5nLWwsXHJcbiAgbGc6ICRzcGFjaW5nLWwsXHJcbiAgeGw6ICRzcGFjaW5nLXhsLFxyXG4gIHdlOiBhdXRvXHJcbik7XHJcblxyXG4vL3BhZGRpbmcgY2FyZHNcclxuJHBhZGRpbmdjYXJkOiAoXHJcbiAgbW46ICRzcGFjaW5nLXMsXHJcbiAgbWQ6ICRzcGFjaW5nLWwsXHJcbiAgbGc6ICRzcGFjaW5nLXhsLFxyXG4pO1xyXG5cclxuYm9keSB7XHJcbiAgLS1nYXBfX2JsdDogI3ttYXAtZ2V0KCRnYXBfX2JsdCxtbil9O1xyXG4gIC0tZ2FwX19ibHQtcmRjOiAje21hcC1nZXQoJGdhcF9fYmx0LXJkYyxtbil9O1xyXG4gIC0tZ2FwX19ncmQ6ICN7bWFwLWdldCgkZ2FwX19ncmQsbW4pfTtcclxuICAtLWdhcF9fY250OiAje21hcC1nZXQoJGdhcF9fY250LG1uKX07XHJcbiAgLS1wYWRkaW5nY2FyZDogI3ttYXAtZ2V0KCRwYWRkaW5nY2FyZCxtbil9O1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWQpIHtcclxuICAgIC0tZ2FwX19ibHQ6ICN7bWFwLWdldCgkZ2FwX19ibHQsbWQpfTtcclxuICAgIC0tZ2FwX19ibHQtcmRjOiAje21hcC1nZXQoJGdhcF9fYmx0LXJkYyxtZCl9O1xyXG4gICAgLS1nYXBfX2dyZDogI3ttYXAtZ2V0KCRnYXBfX2dyZCxtZCl9O1xyXG4gICAgLS1nYXBfX2NudDogI3ttYXAtZ2V0KCRnYXBfX2NudCxtZCl9O1xyXG4gICAgLS1wYWRkaW5nY2FyZDogI3ttYXAtZ2V0KCRwYWRkaW5nY2FyZCxtZCl9O1xyXG4gIH1cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGxnKSB7XHJcbiAgICAtLWdhcF9fYmx0OiAje21hcC1nZXQoJGdhcF9fYmx0LGxnKX07XHJcbiAgICAtLWdhcF9fYmx0LXJkYzogI3ttYXAtZ2V0KCRnYXBfX2JsdC1yZGMsbGcpfTtcclxuICAgIC0tZ2FwX19ncmQ6ICN7bWFwLWdldCgkZ2FwX19ncmQsbGcpfTtcclxuICAgIC0tZ2FwX19jbnQ6ICN7bWFwLWdldCgkZ2FwX19jbnQsbGcpfTtcclxuICAgIC0tcGFkZGluZ2NhcmQ6ICN7bWFwLWdldCgkcGFkZGluZ2NhcmQsbGcpfTtcclxuICB9XHJcbiAgLy8gQGluY2x1ZGUgYnJlYWtwb2ludCh4bCkge1xyXG4gIC8vICAgLS1nYXBfX2JsdDogI3ttYXAtZ2V0KCRnYXBfX2JsdCx4bCl9O1xyXG4gIC8vIH1cclxufVxyXG5cclxuLy8gVE9ETyBtdWx0aWRpbWVuc2lvbiBzY3NzIHNldCB3LyBzY3NzLXZhciAmIGN1c3RvbSBwcm9iXHJcbiRnYXBfX2NvbWJpZXM6IChcclxuICBudWxsOiAoMCwwKSxcclxuICBibHQ6IChtYXAtZ2V0KCRnYXBfX2JsdCxtbiksdmFyKC0tZ2FwX19ibHQpKSxcclxuICBibHQtcmRjOiAobWFwLWdldCgkZ2FwX19ibHQtcmRjLG1uKSx2YXIoLS1nYXBfX2JsdC1yZGMpKSxcclxuICBncmQ6IChtYXAtZ2V0KCRnYXBfX2dyZCxtbiksdmFyKC0tZ2FwX19ncmQpKSxcclxuICBjbnQ6IChtYXAtZ2V0KCRnYXBfX2NudCxtbiksdmFyKC0tZ2FwX19jbnQpKVxyXG4pO1xyXG5cclxuQG1peGluIHJlc3BvbnNpdmUtZ2FwKCRhdHRyLCRzZXQsJHNpemU6bW4pe1xyXG4gIEBpZiAoJHNldCA9PSBjb250ZW50KSB7XHJcbiAgICAjeyRhdHRyfTogbWFwLWdldCgkZ2FwX19jb250ZW50LCRzaXplKTtcclxuICB9XHJcbiAgQGVsc2UgaWYgKCRzZXQgPT0gZ3JkKSB7XHJcbiAgICAjeyRhdHRyfTogbWFwLWdldCgkZ2FwX19ncmQsJHNpemUpO1xyXG4gIH1cclxuICBAZWxzZSBpZiAoJHNldCA9PSBibHQpIHtcclxuICAgICN7JGF0dHJ9OiBtYXAtZ2V0KCRnYXBfX2JsdCwkc2l6ZSk7XHJcbiAgfSBcclxuICAvLyAjeyRhdHRyfTogI3skc2V0fTtcclxuICAjeyRhdHRyfTogdmFyKC0tZ2FwX18jeyRzZXR9KTtcclxufVxyXG4iLCIvLyAvKiBzY3NzL3BhcnRpY2xlcy9fYnJlYWtwb2ludC5zY3NzICovXHJcbi8vR3JpZHMgU2l6ZVxyXG4kbW46MHB4OyAvLyBNaW5pbWFsXHJcbiRzbTozMjBweDsgLy8gU21hbGwgLSBQaG9uZVxyXG4kbWQ6NjQwcHg7IC8vIE1lZGl1bSAtIFRhYmxldFxyXG4kbGc6MTA0OHB4OyAvLyBMYXJnZSAtIFRhYmxldCBcIkVkZ2VcIiBXaWRlXHJcbiR4bDoxMzYwcHg7IC8vIFh0cmEgTGFyZ2UgLSBEZXNrdG9wXHJcbiR3ZToxOTIwcHg7IC8vIFdpZHRoIEV4Y2VwdGlvbmFsXHJcblxyXG5cclxuLy8gQWx0ZXJuYXRpdmVzXHJcblxyXG4vLyAkc21hbGwgOiAkc207XHJcbiRtZWRpdW0gOiAkbWQ7XHJcbiRsYXJnZSA6ICRsZztcclxuJHhsYXJnZSA6ICR4bDtcclxuXHJcblxyXG4kYnJlYWtwb2ludG1hcDogKG1uOiRtbixzbTokc20sbWQ6JG1kLGxnOiRsZyx4bDokeGwsd2U6JHdlKTtcclxuXHJcbkBtaXhpbiBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAje21hcC1nZXQoJGJyZWFrcG9pbnRtYXAsJHNpemUpfSkge1xyXG4gICAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuQG1peGluIGJyZWFrcG9pbnQtbWlubWF4KCRtaW5zaXplLCAkbWF4c2l6ZSkge1xyXG5cdEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogI3ttYXAtZ2V0KCRicmVha3BvaW50bWFwLCRtaW5zaXplKX0pIGFuZCAobWF4LXdpZHRoOiAje21hcC1nZXQoJGJyZWFrcG9pbnRtYXAsJG1heHNpemUpfSkge1xyXG5cdFx0QGNvbnRlbnQ7XHJcblx0fVxyXG59XHJcbkBtaXhpbiBicmVha3BvaW50LW1heCgkc2l6ZSkge1xyXG5cdEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogI3ttYXAtZ2V0KCRicmVha3BvaW50bWFwLCRzaXplKX0pIHtcclxuXHRcdEBjb250ZW50O1xyXG5cdH1cclxufVxyXG4iLCJAdXNlICdnYXBzJyBhcyAqO1xyXG5AdXNlICdzYXNzOm1hdGgnO1xyXG5cclxuLy8gcHggdG8gcmVtXHJcbkBmdW5jdGlvbiByZW0oJHB4KSB7XHJcbiAgQHJldHVybiBtYXRoLmRpdigkcHgsIDE2cHgpICogMXJlbTtcclxufVxyXG5cclxuQG1peGluIGJveC0tZXZlbigkc2l6ZSkge1xyXG5cdHdpZHRoOiAkc2l6ZTtoZWlnaHQ6JHNpemU7XHJcbn1cclxuQG1peGluIGJveC0tbWluZXZlbigkc2l6ZSkge1xyXG5cdG1pbi13aWR0aDogJHNpemU7bWluLWhlaWdodDokc2l6ZTtcclxufVxyXG5AbWl4aW4gYm94LS1vZGQoJHNpemUsJG11bHRpKSB7XHJcblx0d2lkdGg6JHNpemU7IGhlaWdodDokc2l6ZSokbXVsdGk7XHJcbn1cclxuQG1peGluIG1hcmdpbi0td2lkdGgoJHNpemU6YXV0byl7XHJcbiAgbWFyZ2luLWxlZnQ6ICRzaXplO1xyXG4gIG1hcmdpbi1yaWdodDogJHNpemU7XHJcbn1cclxuQG1peGluIG1hcmdpbi0taGVpZ2h0KCRzaXplKXtcclxuICBtYXJnaW4tdG9wOiAkc2l6ZTtcclxuICBtYXJnaW4tYm90dG9tOiAkc2l6ZTtcclxufVxyXG5cclxuQG1peGluIHBhZC0taGVpZ2h0KCRzaXplKXtcclxuICBwYWRkaW5nLXRvcDogJHNpemU7XHJcbiAgcGFkZGluZy1ib3R0b206ICRzaXplO1xyXG59XHJcbkBtaXhpbiBwYWQtLXdpZHRoKCRzaXplKXtcclxuICBwYWRkaW5nLWxlZnQ6ICRzaXplO1xyXG4gIHBhZGRpbmctcmlnaHQ6ICRzaXplO1xyXG59XHJcbkBtaXhpbiBwYWQtLWFsbCgkc2l6ZSl7XHJcbiAgcGFkZGluZzogJHNpemU7XHJcbn1cclxuXHJcbkBtaXhpbiBsaXN0LS1jbGVhbigpIHtcclxuXHRsaXN0LXN0eWxlOm5vbmU7XHJcbiAgcGFkZGluZzogMDtcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbkBtaXhpbiBmbG9hdC1jbGVhcntcclxuICAmOmFmdGVyIHtcclxuICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICBkaXNwbGF5OiB0YWJsZTtcclxuICAgIGNsZWFyOiBib3RoO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIHRibF9fYm94KCR3aWR0aDogMTAwJSkge1xyXG5cdGRpc3BsYXk6dGFibGU7d2lkdGg6ICR3aWR0aDtcclxuXHQ+ICp7ZGlzcGxheTp0YWJsZS1jZWxsO31cclxufVxyXG5cclxuZGl2LCB1bCwgbGksIGFydGljbGUsIG1haW4sIGFzaWRlLCBoZWFkZXIsIGZvb3Rlciwgc2VjdGlvbiwgcCwgYSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcHJlLCBpbnB1dCwgdGV4dGFyZWEsIGRpYWxvZyB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuQG1peGluIGZpcnN0bGFzdC1yZXNldHtcclxuICAmOmZpcnN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICBwYWRkaW5nLXRvcDogMDtcclxuICB9XHJcbiAgJjpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmbGV4Z2FwKCR2YWwsJGNvbnRhaW5lcikgeyAvL2NvbnRhaW5lciBpcyBwKGFyZW50KSBvciBjKGNoaWxkKVxyXG4gICRyZXR1cm46IDA7XHJcbiAgQGlmICRjb250YWluZXIgPT0gcCB7XHJcbiAgICAkcmV0dXJuOiAkdmFsICogKC0gMSk7XHJcbiAgfVxyXG4gIEBpZiAkY29udGFpbmVyID09IGMge1xyXG4gICAgJHJldHVybjogJHZhbDtcclxuICB9XHJcbiAgQGluY2x1ZGUgbWFyZ2luLS13aWR0aCgkcmV0dXJuKTtcclxufVxyXG5cclxuQG1peGluIHJlc3BNKCRhdHRyLCRzaXplLCRzaXplVzpudWxsKXtcclxuICBAaWYgJGF0dHIgPT0gYSB7XHJcbiAgICBtYXJnaW46IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAxKTtcclxuICAgIG1hcmdpbjogbnRoKG1hcC1nZXQoJGdhcF9fY29tYmllcywkc2l6ZSksIDIpO1xyXG4gIH1cclxuICBAZWxzZSBpZiAkYXR0ciA9PSBodyB7XHJcbiAgICBtYXJnaW46IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAxKSBudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplVyksIDEpO1xyXG4gICAgbWFyZ2luOiBudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMikgbnRoKG1hcC1nZXQoJGdhcF9fY29tYmllcywkc2l6ZVcpLCAyKTtcclxuICB9XHJcbiAgQGVsc2UgaWYgJGF0dHIgPT0gdyB7XHJcbiAgICBAaW5jbHVkZSBtYXJnaW4tLXdpZHRoKG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAxKSk7XHJcbiAgICBAaW5jbHVkZSBtYXJnaW4tLXdpZHRoKG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAyKSk7XHJcbiAgfSBcclxuICBAZWxzZSBpZiAkYXR0ciA9PSBoIHtcclxuICAgIEBpbmNsdWRlIG1hcmdpbi0taGVpZ2h0KG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAxKSk7XHJcbiAgICBAaW5jbHVkZSBtYXJnaW4tLWhlaWdodChudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMikpO1xyXG4gIH1cclxuICBAZWxzZSBpZiAkYXR0ciA9PSB0IHtcclxuICAgIG1hcmdpbi10b3A6IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAxKTtcclxuICAgIG1hcmdpbi10b3A6IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAyKTtcclxuICB9XHJcbiAgQGVsc2UgaWYgJGF0dHIgPT0gciB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAxKTtcclxuICAgIG1hcmdpbi1yaWdodDogbnRoKG1hcC1nZXQoJGdhcF9fY29tYmllcywkc2l6ZSksIDIpO1xyXG4gIH1cclxuICBAZWxzZSBpZiAkYXR0ciA9PSBiIHtcclxuICAgIG1hcmdpbi1ib3R0b206IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAxKTtcclxuICAgIG1hcmdpbi1ib3R0b206IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAyKTtcclxuICB9XHJcbiAgQGVsc2UgaWYgJGF0dHIgPT0gbCB7XHJcbiAgICBtYXJnaW4tbGVmdDogbnRoKG1hcC1nZXQoJGdhcF9fY29tYmllcywkc2l6ZSksIDEpO1xyXG4gICAgbWFyZ2luLWxlZnQ6IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAyKTtcclxuICB9XHJcbn1cclxuQG1peGluIHJlc3BQKCRhdHRyLCRzaXplLCRzaXplVzpudWxsKXtcclxuICBAaWYgJGF0dHIgPT0gYSB7XHJcbiAgICBwYWRkaW5nOiBudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMSk7XHJcbiAgICBwYWRkaW5nOiBudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMik7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRhdHRyID09IGh3IHtcclxuICAgIHBhZGRpbmc6IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAxKSBudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplVyksIDEpO1xyXG4gICAgcGFkZGluZzogbnRoKG1hcC1nZXQoJGdhcF9fY29tYmllcywkc2l6ZSksIDIpIG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemVXKSwgMik7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRhdHRyID09IHcge1xyXG4gICAgQGluY2x1ZGUgcGFkLS13aWR0aChudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMSkpO1xyXG4gICAgQGluY2x1ZGUgcGFkLS13aWR0aChudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMikpO1xyXG4gIH0gXHJcbiAgQGVsc2UgaWYgJGF0dHIgPT0gaCB7XHJcbiAgICBAaW5jbHVkZSBwYWQtLWhlaWdodChudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMSkpO1xyXG4gICAgQGluY2x1ZGUgcGFkLS1oZWlnaHQobnRoKG1hcC1nZXQoJGdhcF9fY29tYmllcywkc2l6ZSksIDIpKTtcclxuICB9XHJcbiAgQGVsc2UgaWYgJGF0dHIgPT0gdCB7XHJcbiAgICBwYWRkaW5nLXRvcDogbnRoKG1hcC1nZXQoJGdhcF9fY29tYmllcywkc2l6ZSksIDEpO1xyXG4gICAgcGFkZGluZy10b3A6IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAyKTtcclxuICB9XHJcbiAgQGVsc2UgaWYgJGF0dHIgPT0gciB7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiBudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMSk7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiBudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMik7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRhdHRyID09IGIge1xyXG4gICAgcGFkZGluZy1ib3R0b206IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAxKTtcclxuICAgIHBhZGRpbmctYm90dG9tOiBudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMik7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRhdHRyID09IGwge1xyXG4gICAgcGFkZGluZy1sZWZ0OiBudGgobWFwLWdldCgkZ2FwX19jb21iaWVzLCRzaXplKSwgMSk7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IG50aChtYXAtZ2V0KCRnYXBfX2NvbWJpZXMsJHNpemUpLCAyKTtcclxuICB9XHJcbn1cclxuXHJcbiIsIkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBNYWx2YTtcclxuICBzcmM6IGxvY2FsKE1hbHZhLUJvb2spLFxyXG4gICAgdXJsKGZvbnQvTWFsdmEtQm9vay50dGYpIGZvcm1hdChcInRydWV0eXBlXCIpLFxyXG4gICAgdXJsKC4uLy4uL2Nzcy9mb250L01hbHZhLUJvb2sudHRmKSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcclxuICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufSBcclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBNYWx2YTtcclxuICBzcmM6IGxvY2FsKE1hbHZhLU1lZGl1bSksXHJcbiAgICB1cmwoZm9udC9NYWx2YS1NZWRpdW0udHRmKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSxcclxuICAgIHVybCguLi8uLi9jc3MvZm9udC9NYWx2YS1NZWRpdW0udHRmKSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufSBcclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBNYWx2YTtcclxuICBzcmM6IGxvY2FsKE1hbHZhLUJvbGQpLFxyXG4gICAgdXJsKGZvbnQvTWFsdmEtQm9sZC50dGYpIGZvcm1hdChcInRydWV0eXBlXCIpLFxyXG4gICAgdXJsKC4uLy4uL2Nzcy9mb250L01hbHZhLUJvbGQudHRmKSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn0gXHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogTWFsdmE7XHJcbiAgc3JjOiBsb2NhbChNYWx2YS1FeHRyYUJvbGQpLFxyXG4gICAgdXJsKGZvbnQvTWFsdmEtRXh0cmFCb2xkLnR0ZikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksXHJcbiAgICB1cmwoLi4vLi4vY3NzL2ZvbnQvTWFsdmEtRXh0cmFCb2xkLnR0ZikgZm9ybWF0KFwidHJ1ZXR5cGVcIik7XHJcbiAgZm9udC13ZWlnaHQ6IDgwMDtcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn0gXHJcblxyXG5AbWl4aW4gbWFsdmEge1xyXG4gIGZvbnQtZmFtaWx5OiBNYWx2YSwgc2Fucy1zZXJpZjtcclxufVxyXG5cclxuICAiLCJAdXNlICdwYXJ0aWNsZXMnIGFzICo7XHJcbkB1c2UgJ2ZvbnRzJztcclxuQHVzZSAnc2FzczptYXRoJztcclxuXHJcbkBtaXhpbiBDb3B5IHtcclxuICBmb250LWZhbWlseTogTWFsdmEsIHNhbnMtc2VyaWY7XHJcbiAgZm9udC1zaXplOiByZW0oMTZweCk7XHJcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XHJcbn1cclxuXHJcbkBtaXhpbiBwYXJhZ3JhcGgge1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xyXG4gIC1tb3otaHlwaGVuczogYXV0bztcclxuICAtbXMtaHlwaGVuczogYXV0bztcclxuICBoeXBoZW5zOiBhdXRvO1xyXG4gIEBpbmNsdWRlIENvcHkoKTtcclxufVxyXG5cclxuYm9keSwuYm9keSB7XHJcbiAgQGluY2x1ZGUgcGFyYWdyYXBoKCk7XHJcbn1cclxuXHJcbmgxLFxyXG5oMixcclxuaDMsXHJcbmg0e1xyXG4gIGNvbG9yOiAkYmFsdGljby1ibGF1O1xyXG4gIGZvbnQtZmFtaWx5OiBNYWx2YSwgc2Fucy1zZXJpZjtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuaDF7XHJcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbn1cclxuXHJcbmgye1xyXG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcclxuICBtYXJnaW46IC41cmVtIDAgLjc1cmVtIDA7XHJcbn1cclxuXHJcbmgyK2gze1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbmgze1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuaDR7XHJcbiAgZm9udC1zaXplOiAxOXB4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmJvbGR7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbi5jZW50ZXJlZHtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbi51bmRlcmxpbmV7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbn1cclxuXHJcbnB7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG5AaW5jbHVkZSBicmVha3BvaW50KG1kKXtcclxuICBoMXtcclxuICAgIGZvbnQtc2l6ZTogM3JlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDRyZW07XHJcbiAgfVxyXG4gIGgye1xyXG4gICAgZm9udC1zaXplOiAyLjI1cmVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICBsaW5lLWhlaWdodDogM3JlbTtcclxuICB9XHJcbiAgaDN7XHJcbiAgICBmb250LXNpemU6IDEuMjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS41cmVtXHJcbiAgfVxyXG59XHJcblxyXG5wLC5wYXJhZ3JhcGgge1xyXG4gIC8vIEBpbmNsdWRlIHJlc3BNKGgsY250KTtcclxuICBAaW5jbHVkZSBmaXJzdGxhc3QtcmVzZXQ7XHJcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuYSB7XHJcbiAgLy8gY29sb3I6ICRiYWx0aWNvLWJsYXU7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG59XHJcblxyXG51bHtcclxuICBsaXN0LXN0eWxlOiBub25lO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuIiwiJHdoaXRlOiAjZmZmO1xyXG4kYmxhY2s6ICMwMDA7XHJcbiRzaXRlLWJhY2tncm91bmQ6ICNGMkY3RkI7XHJcbiRva2F5OiAjNzdiNDQ3O1xyXG4kYWxlcnQ6ICNmYTQzNDM7XHJcbiRiYWx0aWNvLWN5YW46ICMwMDlFRTM7XHJcbiRiYWx0aWNvLWJsYXU6ICMwMDNENzY7XHJcbiRiYWx0aWNvLWdyYXU6ICM2RTZFNkU7XHJcbiRiYWx0aWNvLWZvcm06ICNFNEVFRjc7XHJcbiIsIkB1c2UgJ3BhcnRpY2xlcycgYXMgKjtcclxuYm9keSwuYm9keSB7XHJcbiAgbWFyZ2luOiAwOztcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNpdGUtYmFja2dyb3VuZDtcclxuICBmb250LWZhbWlseTogTWFsdmEsIHNhbnMtc2VyaWY7XHJcbiAgY29sb3I6ICRibGFjaztcclxufVxyXG5cclxuaHRtbHtcclxuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcclxufVxyXG4iLCJAdXNlICdwYXJ0aWNsZXMnIGFzICo7XHJcblxyXG4ud3JhcHBlcntcclxuICBtYXJnaW46IDAgMXJlbTtcclxufVxyXG5AaW5jbHVkZSBicmVha3BvaW50KG1kKXtcclxuICAud3JhcHBlcntcclxuICAgIG1hcmdpbjogMCAycmVtO1xyXG4gIH1cclxufVxyXG5AaW5jbHVkZSBicmVha3BvaW50KHhsKXtcclxuICAud3JhcHBlcntcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgd2lkdGg6IDEyMDBweDtcclxuICB9XHJcbn0iLCJAdXNlICdwYXJ0aWNsZXMnIGFzICo7XHJcblxyXG5zZWN0aW9ue1xyXG4gIG1hcmdpbjogM3JlbSAwO1xyXG59XHJcblxyXG5oZWFkZXJ7XHJcbiAgbWFyZ2luLWJvdHRvbTogM3JlbTtcclxufVxyXG5cclxuZm9vdGVye1xyXG4gIG1hcmdpbi10b3A6IDNyZW07XHJcbn1cclxuXHJcbkBpbmNsdWRlIGJyZWFrcG9pbnQobWQpe1xyXG4gIHNlY3Rpb257XHJcbiAgICBtYXJnaW46IDRyZW0gMDtcclxuICB9XHJcbiAgaGVhZGVye1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNHJlbTtcclxuICB9XHJcbiAgZm9vdGVye1xyXG4gICAgbWFyZ2luLXRvcDogNHJlbTtcclxuICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIGJyZWFrcG9pbnQoeGwpe1xyXG4gIHNlY3Rpb257XHJcbiAgICBtYXJnaW46IDZyZW0gMDtcclxuICB9XHJcbiAgaGVhZGVye1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNnJlbTtcclxuICB9XHJcbiAgZm9vdGVye1xyXG4gICAgbWFyZ2luLXRvcDogNnJlbTtcclxuICB9XHJcbn0iLCJAdXNlICdwYXJ0aWNsZXMnIGFzICo7XHJcblxyXG4uQ1RBe1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHdpZHRoOiBmaXQtY29udGVudDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFsdGljby1jeWFuO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcclxuICBwYWRkaW5nOiAuNXJlbSAxLjVyZW07XHJcbiAgbWFyZ2luLXRvcDogMS41cmVtO1xyXG4gIHRyYW5zaXRpb246IC42cztcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgJjpob3ZlcntcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWx0aWNvLWJsYXU7XHJcbiAgICB0cmFuc2l0aW9uOiAuNnM7XHJcbiAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBicmVha3BvaW50KG1kKXtcclxuICAuQ1RBe1xyXG4gICAgcGFkZGluZzogLjc1cmVtIDIuNXJlbTtcclxuICB9XHJcbn0iLCJAdXNlICdwYXJ0aWNsZXMnIGFzICo7XHJcblxyXG4uZm9vdGVye1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWx0aWNvLWJsYXU7XHJcbiAgcGFkZGluZzogMnJlbSAwO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgLmxvZ297XHJcbiAgICBoZWlnaHQ6IDNyZW07XHJcbiAgfVxyXG4gIC53cmFwcGVyPmRpdntcclxuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcclxuICAgIGgze1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcclxuICAgICAgbWFyZ2luLXRvcDogMDtcclxuICAgIH1cclxuICAgIHB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGgzLFxyXG4gIGF7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gIH1cclxuICAuc29jaWFsc3tcclxuICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYXtcclxuICAgICAgaGVpZ2h0OiAxLjVyZW07XHJcbiAgICAgIHdpZHRoOiAxLjVyZW07XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG4gICAgfVxyXG4gICAgLmxhbmd1YWdlU2VsZWN0e1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xyXG4gICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcclxuICAgICAgY29sb3I6ICRiYWx0aWNvLWJsYXU7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgIGZvbnQtc2l6ZTogMXJlbTtcclxuICAgIH1cclxuICB9XHJcbiAgLmltcHJlc3N1bXtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgaW1ne1xyXG4gICAgICBoZWlnaHQ6IDEuNzVyZW07XHJcbiAgICAgIHdpZHRoOiAxMC44cmVtO1xyXG4gICAgICBtYXJnaW4tdG9wOiAuNXJlbTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIGJyZWFrcG9pbnQobWQpe1xyXG4gIC5mb290ZXJ7XHJcbiAgICBwYWRkaW5nOiAyLjVyZW0gMDtcclxuICAgIC53cmFwcGVye1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgIC5sb2dvU29jaWFscyxcclxuICAgICAgLmtvbnRha3QsXHJcbiAgICAgIC5hZHJlc3NlLFxyXG4gICAgICAuaW1wcmVzc3Vte1xyXG4gICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIGJyZWFrcG9pbnQoeGwpe1xyXG4gIC5mb290ZXJ7XHJcbiAgICBwYWRkaW5nOiA0cmVtIDA7XHJcbiAgICAud3JhcHBlcntcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgICAgLmxvZ29Tb2NpYWxzLFxyXG4gICAgICAua29udGFrdCxcclxuICAgICAgLmFkcmVzc2UsXHJcbiAgICAgIC5pbXByZXNzdW17XHJcbiAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iLCJAdXNlICdwYXJ0aWNsZXMnIGFzICo7XHJcblxyXG5waWN0dXJle1xyXG4gIGltZ3tcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuLnBhZ2VIZWFkZXJ7XHJcbiAgZGlzcGxheTogZ3JpZDtcclxuICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcclxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcclxuICAmLS1mbGF0e1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhbHRpY28tYmxhdTtcclxuICAgIGhlaWdodDogNHJlbTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgaDF7XHJcbiAgICAgIG1hcmdpbjogMDtcclxuICAgIH1cclxuICB9XHJcbiAgcGljdHVyZSxcclxuICAud3JhcHBlcntcclxuICAgIGdyaWQtcm93OiAxIC8gLTE7XHJcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xyXG4gIH1cclxuICAud3JhcHBlcntcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgICAuaGVhZENvbnRlbnR7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDRyZW07XHJcbiAgICAgIC5lbmdCcmVha3tcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBicmVha3BvaW50KG1kKXtcclxuICAucGFnZUhlYWRlci0tZmxhdHtcclxuICAgIGhlaWdodDogOHJlbTtcclxuICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIGJyZWFrcG9pbnQoeGwpe1xyXG4gIC5wYWdlSGVhZGVye1xyXG4gICAgJi0tZmxhdHtcclxuICAgICAgaGVpZ2h0OiAxMnJlbTtcclxuICAgIH1cclxuICAgIC53cmFwcGVye1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAuaGVhZENvbnRlbnR7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgICAgIC5lbmdCcmVha3tcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSIsIkB1c2UgJ3BhcnRpY2xlcycgYXMgKjtcclxuXHJcbi5zcGxpdHtcclxuICAuc3BsaXRJbWFnZXtcclxuICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcclxuICAgIGltZ3tcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IC41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGluY2x1ZGUgYnJlYWtwb2ludChtZCl7XHJcbiAgLnNwbGl0e1xyXG4gICAgLnNwbGl0SW1hZ2V7XHJcbiAgICAgIG1hcmdpbi10b3A6IDRyZW07XHJcbiAgICAgIGltZ3tcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIGJyZWFrcG9pbnQoeGwpe1xyXG4gIC5zcGxpdHtcclxuICAgIC53cmFwcGVye1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICAuc3BsaXRJbWFnZXtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgIHdpZHRoOiA0OCU7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDJyZW07XHJcbiAgICAgIH1cclxuICAgICAgLnNwbGl0Q29udGVudHtcclxuICAgICAgICB3aWR0aDogNDglO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iLCJAdXNlICdwYXJ0aWNsZXMnIGFzICo7XHJcblxyXG4ubmF2aWdhdGlvbntcclxuICBwYWRkaW5nOiAuNzVyZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xyXG4gIC53cmFwcGVye1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICAubG9nb3tcclxuICAgICAgaGVpZ2h0OiAycmVtO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgfVxyXG4gICAgLmxhbmd1YWdlU2VsZWN0e1xyXG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkYmFsdGljby1ibGF1O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xyXG4gICAgICBjb2xvcjogJGJhbHRpY28tYmxhdTtcclxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgfVxyXG4gICAgLm5hdkxpbmt7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBicmVha3BvaW50KG1kKXtcclxuICAubmF2aWdhdGlvbntcclxuICAgIHBhZGRpbmc6IDEuNXJlbSAycmVtO1xyXG4gICAgLndyYXBwZXJ7XHJcbiAgICAgIC5sb2dve1xyXG4gICAgICAgIGhlaWdodDogM3JlbTtcclxuICAgICAgfVxyXG4gICAgICAubmF2TGlua3tcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgY29sb3I6ICRiYWx0aWNvLWdyYXU7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIGJyZWFrcG9pbnQoeGwpe1xyXG4gIC5uYXZpZ2F0aW9ue1xyXG4gICAgLndyYXBwZXJ7XHJcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIkB1c2UgJ3BhcnRpY2xlcycgYXMgKjtcclxuXHJcbi5pY29uTGlzdHtcclxuICAuaWNvbmxpc3RCb2R5e1xyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcik7XHJcbiAgICBnYXA6IDEuNXJlbTtcclxuICAgIG1hcmdpbi10b3A6IDNyZW07XHJcbiAgfVxyXG4gIC5pY29uQ2FyZHtcclxuICAgIGNvbG9yOiAkYmFsdGljby1ncmF1O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBwYWRkaW5nOiAxLjVyZW07XHJcbiAgICBib3JkZXItcmFkaXVzOiAuNXJlbTtcclxuICAgIGJveC1zaGFkb3c6IDJweCAycHggMHB4IDBweCByZ2JhKDAsIDYxLCAxMTgsIDAuMTApO1xyXG4gICAgaW1ne1xyXG4gICAgICBoZWlnaHQ6IDMuNXJlbTtcclxuICAgICAgd2lkdGg6IDMuNXJlbTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xyXG4gICAgfVxyXG4gICAgLmljb25IZWFkbGluZXtcclxuICAgICAgY29sb3I6ICRiYWx0aWNvLWJsYXU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IC41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGluY2x1ZGUgYnJlYWtwb2ludChtZCl7XHJcbiAgICAuaWNvbkxpc3R7XHJcbiAgICAgIC5pY29ubGlzdEJvZHl7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcclxuICAgICAgICBnYXA6IDJyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuQGluY2x1ZGUgYnJlYWtwb2ludCh4bCl7XHJcbiAgICAuaWNvbkxpc3R7XHJcbiAgICAgIC5pY29ubGlzdEJvZHl7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG59IiwiQHVzZSAncGFydGljbGVzJyBhcyAqO1xyXG5cclxuLmJhbm5lckNvbnRlbnR7XHJcbiAgZGlzcGxheTogZ3JpZDtcclxuICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcclxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcclxuICBwaWN0dXJlLFxyXG4gIC53cmFwcGVye1xyXG4gICAgZ3JpZC1yb3c6IDEgLyAtMTtcclxuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XHJcbiAgfVxyXG4gIC53cmFwcGVye1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICAgIC5iYW5uZXJUZXh0e1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XHJcbiAgICAgIGgyLFxyXG4gICAgICBoM3tcclxuICAgICAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBicmVha3BvaW50KG1kKXtcclxuICAuYmFubmVyQ29udGVudHtcclxuICAgIC53cmFwcGVye1xyXG4gICAgICAuYmFubmVyVGV4dHtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBicmVha3BvaW50KHhsKXtcclxuICAuYmFubmVyQ29udGVudHtcclxuICAgIC53cmFwcGVye1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgICAuYmFubmVyVGV4dHtcclxuICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iLCJAdXNlICdwYXJ0aWNsZXMnIGFzICo7XHJcblxyXG4uY29udGFjdHtcclxuICBzY3JvbGwtbWFyZ2luLXRvcDogM3JlbTtcclxuICAuY29udGFjdGZvcm17XHJcbiAgICAuZm9ybVRoYW5rc3tcclxuICAgICAgbWFyZ2luOiAycmVtIDA7XHJcbiAgICAgIHBhZGRpbmc6IDFyZW07XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRva2F5O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAuMjVyZW07XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG4gICAgLmZvcm1Db250ZW50e1xyXG4gICAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgICByb3ctZ2FwOiAycmVtO1xyXG4gICAgICAmPmRpdntcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgdGV4dGFyZWF7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFsdGljby1mb3JtO1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogLjI1cmVtO1xyXG4gICAgICAgICAgYm94LXNoYWRvdzogMXB4IDFweCAxcHggMHB4IHJnYmEoMCwgNjEsIDExOCwgMC4zMCkgaW5zZXQ7XHJcbiAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICByZXNpemU6IG5vbmU7XHJcbiAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgICAgICAgJjpmb2N1c3tcclxuICAgICAgICAgICAgb3V0bGluZS1jb2xvcjogJGJhbHRpY28tYmxhdTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaW5wdXR7XHJcbiAgICAgICAgICBoZWlnaHQ6IDNyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxhYmVse1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICBjb2xvcjogJGJhbHRpY28tYmxhdTtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206IC41cmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLkNUQXtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbjogMnJlbSAwO1xyXG4gICAgfVxyXG4gICAgLm1hcEZyYW1le1xyXG4gICAgICBpZnJhbWV7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxLzE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIGJyZWFrcG9pbnQobWQpe1xyXG4gIC5jb250YWN0e1xyXG4gICAgLmZvcm1Db250ZW50e1xyXG4gICAgICBjb2x1bW4tZ2FwOiAxLjVyZW07XHJcbiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XHJcbiAgICAgICY+ZGl2e1xyXG4gICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDI7XHJcbiAgICAgIH1cclxuICAgICAgLmZvcm1OYW1lRmllbGQsXHJcbiAgICAgIC5mb3JtTWFpbEZpZWxke1xyXG4gICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIGJyZWFrcG9pbnQoeGwpe1xyXG4gIC5jb250YWN0e1xyXG4gICAgLmNvbnRhY3Rmb3Jte1xyXG4gICAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xyXG4gICAgICBjb2x1bW4tZ2FwOiAycmVtO1xyXG4gICAgICAuZm9ybUNvbnRlbnR7XHJcbiAgICAgICAgb3JkZXI6IDE7XHJcbiAgICAgIH1cclxuICAgICAgLm1hcEZyYW1le1xyXG4gICAgICAgIG9yZGVyOiAyO1xyXG4gICAgICAgIGlmcmFtZXtcclxuICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgIGFzcGVjdC1yYXRpbzogYXV0bztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLkNUQXtcclxuICAgICAgICBvcmRlcjogMztcclxuICAgICAgICBncmlkLWNvbHVtbjogLTEgLyAxO1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtVGhhbmtze1xyXG4gICAgICAgIG9yZGVyOiA0O1xyXG4gICAgICAgIGdyaWQtY29sdW1uOiAtMSAvIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iLCJAdXNlICdwYXJ0aWNsZXMnIGFzICo7XHJcblxyXG4uaW1wcmludHtcclxuICAud3JhcHBlcntcclxuICAgIC5yaWdodEltcHJpbnR7XHJcbiAgICAgIHNwYW57XHJcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBwe1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XHJcbiAgICB9XHJcbiAgICBhe1xyXG4gICAgICBjb2xvcjogJGJsYWNrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGluY2x1ZGUgYnJlYWtwb2ludChtZCl7XHJcbiAgLmltcHJpbnR7XHJcbiAgICAud3JhcHBlcntcclxuICAgICAgZGlzcGxheTogZ3JpZDtcclxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcclxuICAgICAgZ2FwOiA0cmVtO1xyXG4gICAgICAubGVmdEltcHJpbnR7XHJcbiAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMTtcclxuICAgICAgfVxyXG4gICAgICAucmlnaHRJbXByaW50e1xyXG4gICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iXX0= */
