/*!
Theme Name:   Timber Boilerplate Theme
Theme URI:    https://github.com/certainlyakey/timber-boilerplate
Description:  This is a boilerplate theme using Timber
Version:      1.0
Author:       Aleksandr Beliaev
Text Domain:  theme_domain
Domain Path:  /languages/
*/
/* stylelint-disable plugin/at-rule-import-path */
@import url("https://fonts.googleapis.com/css2?family=Yanone+Kaffeesatz:wght@500;700&display=swap");
.u-screenreader-text {
  position: absolute;
  overflow: hidden;
  clip: rect(0 0 0 0);
  height: 1px;
  width: 1px;
  margin: -1px;
  padding: 0;
  border: none;
  white-space: nowrap; }

html:not(.no-js) .js-hidden-if-js-on {
  display: none; }

.u-inner-layer {
  position: relative;
  z-index: 1; }

.u-nowrap {
  white-space: nowrap; }

.js-hidden,
.u-hidden {
  display: none; }

/* stylelint-enable plugin/at-rule-import-path */
/* stylelint-disable plugin/at-rule-import-path */
/*! 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 {
  -webkit-box-sizing: content-box;
          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 */
  -webkit-text-decoration: underline dotted;
          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 {
  -webkit-box-sizing: border-box;
          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"] {
  -webkit-box-sizing: border-box;
          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; }

/* stylelint-enable plugin/at-rule-import-path */
/* stylelint-disable color-no-hex */
/* stylelint-disable indentation */
/* stylelint-enable indentation */
/* stylelint-disable meowtec/no-px */
/* stylelint-enable meowtec/no-px */
/* stylelint-disable selector-max-universal, selector-max-type */
h1, h2, h3, h4, h5, h6, p, dl, dd, ul, ol, li, figure {
  margin: 0;
  padding: 0; }

h1, h2, h3, h4, h5, h6 {
  font-weight: normal;
  font-size: 100%; }

ul {
  list-style: none; }

html {
  -webkit-box-sizing: border-box;
          box-sizing: border-box; }

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

ol, ul {
  list-style-position: inside; }

textarea {
  max-width: 100%;
  resize: vertical; }

fieldset {
  border: none;
  margin: 0;
  padding: 0; }

select {
  color: black; }

iframe {
  border: none; }

/* stylelint-disable declaration-no-important, selector-max-universal */
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 1.6;
  background-color: white; }

a {
  color: #ee2d29;
  text-decoration: none; }

.s-textcontent {
  /* stylelint-disable selector-max-type, selector-max-compound-selectors */
  /* stylelint-enable selector-max-type, selector-max-compound-selectors */ }
  .s-textcontent > blockquote {
    font-style: italic; }
  .s-textcontent > p:not(:only-child), .s-textcontent > ul:not(:only-child), .s-textcontent > ol:not(:only-child) {
    margin-top: 10px;
    margin-bottom: 10px; }
  .s-textcontent > h2:first-child, .s-textcontent > h3:first-child, .s-textcontent > h4:first-child, .s-textcontent > h5:first-child, .s-textcontent > h6:first-child, .s-textcontent > p:first-child, .s-textcontent > ul:first-child, .s-textcontent > ol:first-child {
    margin-top: 0; }
  .s-textcontent > h2:last-child, .s-textcontent > h3:last-child, .s-textcontent > h4:last-child, .s-textcontent > h5:last-child, .s-textcontent > h6:last-child, .s-textcontent > p:last-child, .s-textcontent > ul:last-child, .s-textcontent > ol:last-child {
    margin-bottom: 0; }
  .s-textcontent > ul li {
    list-style-type: disc; }
  .s-textcontent > ul li li, .s-textcontent > ol li li {
    padding-left: 20px; }
  .s-textcontent img {
    display: block; }
    @media (max-width: 63.99em) {
      .s-textcontent img {
        max-width: 100%;
        display: block;
        height: auto; } }
  .s-textcontent iframe {
    width: 100%; }

.is-page-loading * {
  -webkit-transition: none !important;
  -o-transition: none !important;
  transition: none !important; }

.u-link {
  color: #ee2d29;
  text-decoration: none; }

.u-link-button {
  color: #ee2d29;
  text-decoration: none;
  border: none;
  background: none;
  -webkit-box-shadow: none;
          box-shadow: none;
  padding: 0; }

.c-edit-link {
  position: fixed;
  top: 1em;
  left: 1em;
  opacity: 0; }
  .c-edit-link:hover {
    opacity: 1; }

body h1, body h2, html h1, html h2 {
  font-weight: 700;
  text-align: center; }

.section-padding {
  padding: 80px 0px 80px 0px; }
  .section-padding h2 {
    padding-bottom: 50px; }

.wp-block-buttons {
  text-align: center; }
  .wp-block-buttons:not(:first-child) {
    padding-bottom: 50px; }
  .wp-block-buttons .button-center {
    margin: 0 auto; }

.background-blue {
  background-color: #2775a5;
  color: white; }

.background-orange {
  background-color: #D97623;
  color: #2775a5; }

.background-yellow {
  background-color: #fdc81f;
  color: black; }
  .background-yellow a {
    color: #2775a5; }

.the_content .wp-block-cover {
  height: auto;
  margin-bottom: 60px; }

.the_content html body h2 {
  font-size: 4rem;
  text-align: center; }

.the_content body h3, .the_content html h3 {
  font-size: 3em; }

.the_content p, .the_content h1, .the_content h2, .the_content h3, .the_content h4, .the_content h5, .the_content .wp-block-buttons, .the_content ul, .the_content img, .the_content iframe {
  width: 100%;
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto; }
  @media (min-width: 576px) {
    .the_content p, .the_content h1, .the_content h2, .the_content h3, .the_content h4, .the_content h5, .the_content .wp-block-buttons, .the_content ul, .the_content img, .the_content iframe {
      max-width: 540px; } }
  @media (min-width: 768px) {
    .the_content p, .the_content h1, .the_content h2, .the_content h3, .the_content h4, .the_content h5, .the_content .wp-block-buttons, .the_content ul, .the_content img, .the_content iframe {
      max-width: 720px;
      padding: 0px 100px 0px 100px; } }
  @media (min-width: 992px) {
    .the_content p, .the_content h1, .the_content h2, .the_content h3, .the_content h4, .the_content h5, .the_content .wp-block-buttons, .the_content ul, .the_content img, .the_content iframe {
      max-width: 960px;
      padding: 0px 100px 0px 175px; } }
  @media (min-width: 1200px) {
    .the_content p, .the_content h1, .the_content h2, .the_content h3, .the_content h4, .the_content h5, .the_content .wp-block-buttons, .the_content ul, .the_content img, .the_content iframe {
      max-width: 1140px;
      padding: 0px 100px 0px 200px; } }

.graywrap {
  background-color: whitesmoke; }

.p-home section {
  padding: 100px 0px 100px 0px; }

.element_loop .element {
  padding: 30px 0px 30px 0px; }
  .element_loop .element h2 a {
    text-decoration: none;
    color: #2775a5; }
    .element_loop .element h2 a:hover {
      color: #00a9ac; }

section.frontpage_hero {
  background-color: #2775a5;
  padding: 100px 0px 100px 0px; }
  section.frontpage_hero h1 {
    text-align: center;
    font-weight: 200;
    color: white; }
  section.frontpage_hero .hero_image {
    display: block;
    margin: auto; }

section#what_is_civil_forfeiture h1 {
  margin-top: 30px;
  text-align: center; }

footer section.footer {
  background-color: #175b81;
  color: white; }

section.pfp {
  background-color: #2775a5;
  padding: 60px 0px; }
  section.pfp h1, section.pfp h2, section.pfp h3, section.pfp h4, section.pfp h5, section.pfp p {
    color: white; }
  section.pfp h2, section.pfp h3 {
    text-align: center; }
  section.pfp h2 {
    padding-bottom: 50px; }
  section.pfp .btn {
    margin-top: 30px;
    width: 80%;
    margin-left: 10%;
    background-color: #fdc81f;
    color: black;
    font-weight: 800; }

.cases-fluid-container h3 {
  text-align: center;
  padding-bottom: 50px; }

.cases-fluid-container .case-fluid {
  height: 350px;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  padding: 0px; }
  .cases-fluid-container .case-fluid .darken {
    background-color: black;
    opacity: .25;
    height: 100%;
    width: 100%;
    z-index: 1;
    position: absolute;
    top: 0;
    left: 0; }
  .cases-fluid-container .case-fluid .darken:hover {
    opacity: 0; }
  .cases-fluid-container .case-fluid .case-name:hover + .darken {
    opacity: 0; }
  .cases-fluid-container .case-fluid .case-name {
    color: white;
    position: absolute;
    width: 100%;
    height: 100%;
    z-index: 10;
    text-decoration: none; }
    .cases-fluid-container .case-fluid .case-name:hover {
      color: #fdc81f; }
    .cases-fluid-container .case-fluid .case-name h5 {
      text-align: center;
      width: 100%;
      bottom: 0;
      left: 0;
      padding: 0px 15px 0px 15px;
      position: absolute; }
    .cases-fluid-container .case-fluid .case-name h3 {
      font-size: 2em;
      padding: 30px;
      padding-top: 100px; }

section.updates .update-label {
  text-align: right; }
  @media (min-width: 576px) {
    section.updates .update-label {
      text-align: left; } }

section.updates li {
  padding-bottom: 40px;
  overflow: auto; }
  section.updates li .update-image {
    float: left;
    padding-right: 15px; }
  section.updates li h5 {
    text-transform: uppercase;
    font-size: .8rem; }

section.polling h2 {
  text-align: center;
  padding-bottom: 50px; }

section.other-research h2 {
  text-align: center; }

section.reforms h2 {
  text-align: center;
  padding-bottom: 50px; }

section.reforms .reform_map_container h4 {
  height: 100px; }

section.federal-reforms h2 {
  text-align: center;
  padding-bottom: 50px; }

section.model-legislation h3 a {
  color: #2775a5; }

section.footer .about p {
  font-size: .9em; }

section.footer .about h3 {
  font-size: 1.5em; }

section.footer li a {
  color: white; }

section.footer h3 a {
  color: white; }

section.footer .support-ij {
  width: 80%;
  background-color: #fdc81f;
  margin: 0 auto;
  margin-top: 30px; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLnNjc3MiLCJfZGVwZW5kZW5jaWVzLnNjc3MiLCJlbmRmb3JmZWl0dXJlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tbW9uLXNhc3MtdXRpbGl0aWVzL3V0aWxpdGllcy9fY2xhc3Nlcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbW1vbi1zYXNzLXV0aWxpdGllcy91dGlsaXRpZXMvbWl4aW5zL191LXNjcmVlbnJlYWRlci10ZXh0LnNjc3MiLCJfdmVuZG9ycy5zY3NzIiwiLi4vfm5vcm1hbGl6ZS5jc3Mvbm9ybWFsaXplLmNzcyIsInN0eWxlLmNzcyIsImFic3RyYWN0cy92YXJpYWJsZXMvX2NvbG9ycy5zY3NzIiwiYWJzdHJhY3RzL3ZhcmlhYmxlcy9fdHlwb2dyYXBoeS5zY3NzIiwiYWJzdHJhY3RzL3ZhcmlhYmxlcy9fb3RoZXJzLnNjc3MiLCJiYXNlL19ub3JtYWxpemVfdHdlYWtzLnNjc3MiLCJiYXNlL19iYXNlLnNjc3MiLCJhYnN0cmFjdHMvX21peGlucy5zY3NzIiwiYWJzdHJhY3RzL190ZXh0Y29udGVudC1taXhpbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21tb24tc2Fzcy11dGlsaXRpZXMvdXRpbGl0aWVzL21peGlucy9fdS1zcGFjaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc2Fzcy1tcS9fbXEuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21tb24tc2Fzcy11dGlsaXRpZXMvdXRpbGl0aWVzL21peGlucy9fdS1pbWFnZS1hdXRvd2lkdGguc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21tb24tc2Fzcy11dGlsaXRpZXMvdXRpbGl0aWVzL21peGlucy9fdS1yZW1vdmUtYnV0dG9uLXN0eWxpbmcuc2NzcyIsImJhc2UvX3NjYWZmb2xkaW5nLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7Ozs7O0VBUUU7QUNYRixrREFBa0Q7QUNXbEQsb0dBQVk7QUNYWjtFQ0NFLG1CQUFrQjtFQUNsQixpQkFB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QixPQUFLO0lBQ0wsUUFBTSxFQUVQO0VBckJMO0lBdUJNLFdBQVMsRUFDVjtFQXhCTDtJQXlCZ0MsV0FBUyxFQUFFO0VBekIzQztJQTJCTSxhQUFXO0lBQ1gsbUJBQWlCO0lBQ2pCLFlBQVU7SUFDVixhQUFXO0lBQ1gsWUFBVztJQUNYLHNCQUFxQixFQWtCdEI7SUFsREw7TUFrQ1EsZUFsTVEsRUFtTVQ7SUFuQ1A7TUFxQ1EsbUJBQWtCO01BQ2xCLFlBQVU7TUFDVixVQUFRO01BQ1IsUUFBTTtNQUNOLDJCQUF5QjtNQUN6QixtQkFBa0IsRUFFbkI7SUE1Q1A7TUE4Q1EsZUFBYztNQUNkLGNBQVk7TUFDWixtQkFBaUIsRUFDbEI7O0FBSVA7RUFFSSxrQkFBaUIsRUFLbEI7RUFKQztJQUhKO01BR2tDLGlCQUFnQixFQUkvQyxFQUFBOztBQVBIO0VBU0kscUJBQW9CO0VBQ3BCLGVBQWMsRUFZZjtFQXRCSDtJQVlNLFlBQVU7SUFDVixvQkFBa0IsRUFDbkI7RUFkTDtJQW1CTSwwQkFBeUI7SUFDekIsaUJBQWdCLEVBQ2pCOztBQUlMO0VBRUksbUJBQWtCO0VBQ2xCLHFCQUFtQixFQUNwQjs7QUFFSDtFQUVJLG1CQUFrQixFQUNuQjs7QUFFSDtFQUVJLG1CQUFrQjtFQUNsQixxQkFBb0IsRUFDckI7O0FBSkg7RUFPTyxjQUFZLEVBQ2I7O0FBR047RUFDSyxtQkFBa0I7RUFDckIscUJBQW1CLEVBQUU7O0FBRXZCO0VBRUksZUE5UVUsRUErUVg7O0FBRUg7RUFHTSxnQkFBZSxFQUNoQjs7QUFKTDtFQU1NLGlCQUFnQixFQUNqQjs7QUFQTDtFQVlNLGFBQVcsRUFDWjs7QUFiTDtFQWdCSSxhQUFXLEVBQ1o7O0FBakJIO0VBbUJJLFdBQVM7RUFDVCwwQkFqU1k7RUFrU1osZUFBYTtFQUNiLGlCQUFlLEVBQ2hCIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIiRfYXZhdGFyX3dpZHRoOiA4MDtcbiRfYXZhdGFyX2hlaWdodDogODA7XG4kX2lzLWVudi1kZXY6IHRydWU7XG4vKiFcblRoZW1lIE5hbWU6ICAgVGltYmVyIEJvaWxlcnBsYXRlIFRoZW1lXG5UaGVtZSBVUkk6ICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9jZXJ0YWlubHlha2V5L3RpbWJlci1ib2lsZXJwbGF0ZVxuRGVzY3JpcHRpb246ICBUaGlzIGlzIGEgYm9pbGVycGxhdGUgdGhlbWUgdXNpbmcgVGltYmVyXG5WZXJzaW9uOiAgICAgIDEuMFxuQXV0aG9yOiAgICAgICBBbGVrc2FuZHIgQmVsaWFldlxuVGV4dCBEb21haW46ICB0aGVtZV9kb21haW5cbkRvbWFpbiBQYXRoOiAgL2xhbmd1YWdlcy9cbiovXG5cbi8vICFEZXBlbmRlbmNpZXNcbkBpbXBvcnQgJ2RlcGVuZGVuY2llcyc7XG5AaW1wb3J0ICd2ZW5kb3JzJztcblxuLy8gIVNpdGUgYWJzdHJhY3RzXG5AaW1wb3J0ICdhYnN0cmFjdHMvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ2Fic3RyYWN0cy92YXJpYWJsZXMvY29sb3JzJztcbkBpbXBvcnQgJ2Fic3RyYWN0cy92YXJpYWJsZXMvdHlwb2dyYXBoeSc7XG5AaW1wb3J0ICdhYnN0cmFjdHMvdmFyaWFibGVzL290aGVycyc7XG5AaW1wb3J0ICdhYnN0cmFjdHMvbWl4aW5zJztcbi8vIEBpbXBvcnQgJ2Fic3RyYWN0cy9hbmltYXRpb25zJztcbkBpbXBvcnQgJ2Fic3RyYWN0cy90ZXh0Y29udGVudC1taXhpbnMnO1xuXG4vLyAhQmFzZVxuQGltcG9ydCAnYmFzZS9mb250ZmFjZSc7XG5AaW1wb3J0ICdiYXNlL25vcm1hbGl6ZV90d2Vha3MnO1xuQGltcG9ydCAnYmFzZS9iYXNlJztcbkBpbXBvcnQgJ2Jhc2Uvc2NhZmZvbGRpbmcnO1xuXG4vLyAhR2VuZXJhdGVkXG4vLyBAaW1wb3J0ICdhdXRvZ2VuZXJhdGVkL3N2Zy1zcHJpdGUnO1xuXG4vLyAhQ29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50cy9leGFtcGxlLWNvbXBvbmVudC9leGFtcGxlLWNvbXBvbmVudCc7XG5AaW1wb3J0ICdlbmRmb3JmZWl0dXJlLnNjc3MnO1xuLy8gQXBwbHkgdGhlIGNvbXBvbmVudHMgdG8gY29ycmVzcG9uZGluZyBjb21wb25lbnQgY2xhc3Nlc1xuQGltcG9ydCAnYXBwbHknO1xuIiwiLyogc3R5bGVsaW50LWRpc2FibGUgcGx1Z2luL2F0LXJ1bGUtaW1wb3J0LXBhdGggKi9cblxuLy8gU0FTUyBjb21waWxlLXRpbWUgZGVwZW5kZW5jaWVzXG5AaW1wb3J0ICd+c2Fzcy1tcS9fbXEuc2Nzcyc7XG5AaW1wb3J0ICd+Y29tbW9uLXNhc3MtdXRpbGl0aWVzJztcbkBpbXBvcnQgJ35zYXNzLXJlbSc7XG5cbi8qIHN0eWxlbGludC1lbmFibGUgcGx1Z2luL2F0LXJ1bGUtaW1wb3J0LXBhdGggKi9cbiIsIiRpanRlYWw6ICMwMGE5YWM7XG4kYmx1ZTogIzI3NzVhNTtcbiRsaWdodGJsdWU6ICNBNkJCQ0U7XG4kcmVkOiAjQTcyMjM3O1xuJGxpZ2h0cmVkOiAjRDgzRjVCO1xuJHllbGxvdzogI2ZkYzgxZjtcbiRsaWdodG9yYW5nZTojREE4NzIzO1xuJG9yYW5nZTojRDk3NjIzO1xuJGRhcmtvcmFuZ2U6ICNEQzQ2MjA7XG5cblxuQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9WWFub25lK0thZmZlZXNhdHo6d2dodEA1MDA7NzAwJmRpc3BsYXk9c3dhcCcpO1xuXG5cbmJvZHkgaDEsIGJvZHkgaDIsIGh0bWwgaDEsIGh0bWwgaDJ7XG4gIC8vZm9udC1mYW1pbHk6ICdZYW5vbmUgS2FmZmVlc2F0eicsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5zZWN0aW9uLXBhZGRpbmd7XG4gIHBhZGRpbmc6IDgwcHggMHB4IDgwcHggMHB4O1xuICBoMntwYWRkaW5nLWJvdHRvbTo1MHB4O31cbn1cblxuLndwLWJsb2NrLWJ1dHRvbnN7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgJjpub3QoOmZpcnN0LWNoaWxkKXtcbiAgICBwYWRkaW5nLWJvdHRvbTo1MHB4O1xuICB9XG4gIC5idXR0b24tY2VudGVye1xuICAgIG1hcmdpbjowIGF1dG87XG4gIH1cbn1cblxuLmJhY2tncm91bmQtYmx1ZXtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJsdWU7XG4gIGNvbG9yOndoaXRlO1xufVxuLmJhY2tncm91bmQtb3Jhbmdle1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JhbmdlO1xuICBjb2xvcjokYmx1ZTtcbn1cbi5iYWNrZ3JvdW5kLXllbGxvd3tcbiAgYmFja2dyb3VuZC1jb2xvcjokeWVsbG93O1xuICBjb2xvcjpibGFjaztcbiAgYXtcbiAgICBjb2xvcjokYmx1ZTtcbiAgfVxufVxuXG4udGhlX2NvbnRlbnR7XG4gIC53cC1ibG9jay1jb3ZlcntcbiAgICBoZWlnaHQ6YXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiA2MHB4O1xuICB9XG5odG1sIGJvZHkgaDJ7XG4gIGZvbnQtc2l6ZTogNHJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuYm9keSBoMywgaHRtbCBoM3tcbiAgZm9udC1zaXplOiAzZW07XG59XG5cbmgxLGgyLGgzLGg0LGg1LC53cC1ibG9jay1idXR0b25ze1xuXG59XG5cblxuXG5cbiBwLGgxLGgyLGgzLGg0LGg1LC53cC1ibG9jay1idXR0b25zLCB1bCwgaW1nLGlmcmFtZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG5cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgICBtYXgtd2lkdGg6IDU0MHB4O31cblxuICAvLyBNZWRpdW0gZGV2aWNlcyAodGFibGV0cywgNzY4cHggYW5kIHVwKVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgICAgIHBhZGRpbmc6IDBweCAxMDBweCAwcHggMTAwcHg7XG4gICAgfVxuXG4gICAgLy8gTGFyZ2UgZGV2aWNlcyAoZGVza3RvcHMsIDk5MnB4IGFuZCB1cClcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgICAgIG1heC13aWR0aDogOTYwcHg7XG4gICAgICBwYWRkaW5nOiAwcHggMTAwcHggMHB4IDE3NXB4O1xuICAgICAgfVxuXG4gICAgLy8gRXh0cmEgbGFyZ2UgZGV2aWNlcyAobGFyZ2UgZGVza3RvcHMsIDEyMDBweCBhbmQgdXApXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyBtYXgtd2lkdGg6IDExNDBweDtcbiAgICBwYWRkaW5nOiAwcHggMTAwcHggMHB4IDIwMHB4O1xuICAgfVxufVxufVxuXG4uZ3JheXdyYXB7XG4gIGJhY2tncm91bmQtY29sb3I6cmdiKDI0NSwyNDUsMjQ1KTtcbn1cbi5wLWhvbWUgc2VjdGlvbntcbiAgcGFkZGluZzogMTAwcHggMHB4IDEwMHB4IDBweDtcbn1cblxuLmVsZW1lbnRfbG9vcCAuZWxlbWVudHtcbiAgcGFkZGluZzogMzBweCAwcHggMzBweCAwcHg7XG4gIGgyIGF7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiRibHVlO1xuICAgICY6aG92ZXJ7XG4gICAgICBjb2xvcjokaWp0ZWFsO1xuICAgIH1cbiAgfVxufVxuXG5zZWN0aW9uLmZyb250cGFnZV9oZXJve1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRibHVlO1xuICBwYWRkaW5nOiAxMDBweCAwcHggMTAwcHggMHB4O1xuICBoMXtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICBjb2xvcjp3aGl0ZTtcbiAgfVxuXG4gIC5oZXJvX2ltYWdle1xuXG4gICAgZGlzcGxheTpibG9jaztcbiAgIG1hcmdpbjphdXRvO1xuICB9XG59XG5zZWN0aW9uI3doYXRfaXNfY2l2aWxfZm9yZmVpdHVyZXtcbiAgaDF7XG4gICAgbWFyZ2luLXRvcDozMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG5mb290ZXIgc2VjdGlvbi5mb290ZXJ7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxNzViODE7XG4gIGNvbG9yOndoaXRlO1xufVxuXG5zZWN0aW9uLnBmcHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJsdWU7XG4gIHBhZGRpbmc6NjBweCAwcHg7XG4gIGgxLGgyLGgzLGg0LGg1LHB7XG4gICAgY29sb3I6d2hpdGU7XG5cbiAgfVxuICBoMiwgaDMge3RleHQtYWxpZ246IGNlbnRlcjt9XG4gIGgye1xuICAgIHBhZGRpbmctYm90dG9tOiA1MHB4O1xuICB9XG4gIC5idG57XG4gICAgbWFyZ2luLXRvcDozMHB4O1xuICAgIHdpZHRoOjgwJTtcbiAgICBtYXJnaW4tbGVmdDoxMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHllbGxvdztcbiAgICBjb2xvcjpibGFjaztcbiAgICBmb250LXdlaWdodDogODAwO1xuXG4gIH1cbn1cbi5jYXNlcy1mbHVpZC1jb250YWluZXJ7XG4gIGgze1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nLWJvdHRvbTogNTBweDtcbiAgfVxuICAuY2FzZS1mbHVpZHtcbiAgICBoZWlnaHQ6MzUwcHg7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBwYWRkaW5nOjBweDtcbiAgICAuZGFya2Vue1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICAgICBvcGFjaXR5OiAuMjU7XG4gICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICB6LWluZGV4OjE7XG4gICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgIHRvcDowO1xuICAgICAgbGVmdDowO1xuXG4gICAgfVxuICAgIC5kYXJrZW46aG92ZXJ7XG4gICAgICBvcGFjaXR5OjA7XG4gICAgfVxuICAgIC5jYXNlLW5hbWU6aG92ZXIgKyAuZGFya2VueyBvcGFjaXR5OjB9XG4gICAgLmNhc2UtbmFtZXtcbiAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICB3aWR0aDoxMDAlO1xuICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICB6LWluZGV4OiAxMDtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICY6aG92ZXJ7XG4gICAgICAgIGNvbG9yOiR5ZWxsb3c7XG4gICAgICB9XG4gICAgICBoNSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgYm90dG9tOjA7XG4gICAgICAgIGxlZnQ6MDtcbiAgICAgICAgcGFkZGluZzowcHggMTVweCAwcHggMTVweDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gICAgICB9XG4gICAgIGgze1xuICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgICAgcGFkZGluZzozMHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDoxMDBweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbnNlY3Rpb24udXBkYXRlc3tcbiAgLnVwZGF0ZS1sYWJlbHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgfVxuXG4gIH1cbiAgbGl7XG4gICAgcGFkZGluZy1ib3R0b206IDQwcHg7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgLnVwZGF0ZS1pbWFnZXtcbiAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICBwYWRkaW5nLXJpZ2h0OjE1cHg7XG4gICAgfVxuICAgIGF7XG5cbiAgICB9XG4gICAgaDUge1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGZvbnQtc2l6ZTogLjhyZW07XG4gICAgfVxuICB9XG5cbn1cbnNlY3Rpb24ucG9sbGluZ3tcbiAgaDJ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmctYm90dG9tOjUwcHg7XG4gIH1cbn1cbnNlY3Rpb24ub3RoZXItcmVzZWFyY2h7XG4gIGgye1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuc2VjdGlvbi5yZWZvcm1ze1xuICBoMntcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZy1ib3R0b206IDUwcHg7XG4gIH1cbiAgIC5yZWZvcm1fbWFwX2NvbnRhaW5lcntcbiAgICAgaDR7XG4gICAgICAgaGVpZ2h0OjEwMHB4O1xuICAgICB9XG4gICB9XG59XG5zZWN0aW9uLmZlZGVyYWwtcmVmb3Jtc3tcbiAgaDJ7dGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nLWJvdHRvbTo1MHB4O31cbn1cbnNlY3Rpb24ubW9kZWwtbGVnaXNsYXRpb257XG4gIGgzIGF7XG4gICAgY29sb3I6JGJsdWU7XG4gIH1cbn1cbnNlY3Rpb24uZm9vdGVye1xuICAuYWJvdXR7XG4gICAgcHtcbiAgICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgICB9XG4gICAgaDN7XG4gICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIH1cblxuICB9XG4gIGxpe1xuICAgIGF7XG4gICAgICBjb2xvcjp3aGl0ZTtcbiAgICB9XG4gIH1cbiAgaDMgYSB7XG4gICAgY29sb3I6d2hpdGU7XG4gIH1cbiAgLnN1cHBvcnQtaWp7XG4gICAgd2lkdGg6ODAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3c7XG4gICAgbWFyZ2luOjAgYXV0bztcbiAgICBtYXJnaW4tdG9wOjMwcHg7XG4gIH1cbn1cbiIsIi51LXNjcmVlbnJlYWRlci10ZXh0IHtcbiAgQGluY2x1ZGUgdS1zY3JlZW5yZWFkZXItdGV4dDtcbn1cblxuLmpzLWhpZGRlbi1pZi1qcy1vbiB7XG4gICN7JGpzLW9ufSB7XG4gICAgZGlzcGxheTpub25lOyBcbiAgfVxufVxuXG4udS1pbm5lci1sYXllciB7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBcbiAgei1pbmRleDoxOyBcbn1cblxuLnUtbm93cmFwIHtcbiAgd2hpdGUtc3BhY2U6bm93cmFwO1xufVxuXG4uanMtaGlkZGVuLFxuLnUtaGlkZGVuIHtcbiAgZGlzcGxheTpub25lOyBcbn1cbiIsIkBtaXhpbiB1LXNjcmVlbnJlYWRlci10ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlOyBcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgXG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7IFxuICBoZWlnaHQ6IDFweDsgXG4gIHdpZHRoOiAxcHg7IFxuICBtYXJnaW46IC0xcHg7IFxuICBwYWRkaW5nOiAwOyBcbiAgYm9yZGVyOiBub25lOyBcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn0iLCIvKiBzdHlsZWxpbnQtZGlzYWJsZSBwbHVnaW4vYXQtcnVsZS1pbXBvcnQtcGF0aCAqL1xuXG4vLyBDU1MgYW5kIEphdmFzY3JpcHQgZGVwZW5kZW5jaWVzXG4vLyBUaGFua3MgdG8gc2Fzcy1tb2R1bGUtaW1wb3J0ZXIgZ3VscCBwbHVnaW4gd2UgY2FuIGltcG9ydCBjc3MgZmlsZXMgZnJvbSBub2RlX21vZHVsZXMgd2l0aG91dCByZW5hbWluZyBsaWtlIHRoaXM6IFwiQGltcG9ydCAnZnVsbHBhZ2UuanMvZGlzdC9qcXVlcnkuZnVsbHBhZ2UubWluLmNzcyc7XCJcbkBpbXBvcnQgJ35ub3JtYWxpemUuY3NzL25vcm1hbGl6ZS5jc3MnO1xuXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHBsdWdpbi9hdC1ydWxlLWltcG9ydC1wYXRoICovXG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbi8qIERvY3VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuICovXG5cbmh0bWwge1xuICBsaW5lLWhlaWdodDogMS4xNTsgLyogMSAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbn1cblxuLyogU2VjdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBgbWFpbmAgZWxlbWVudCBjb25zaXN0ZW50bHkgaW4gSUUuXG4gKi9cblxubWFpbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gKi9cblxuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG4gKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMSAqL1xuICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnByZSB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xufVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICovXG5cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTsgLyogMSAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0OyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTsgLyogMSAqL1xuICBtYXJnaW46IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQgeyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7IC8qIDEgKi9cbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuXG5maWVsZHNldCB7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxubGVnZW5kIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICBkaXNwbGF5OiB0YWJsZTsgLyogMSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMyAqL1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDEwKy5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLlxuICovXG5cblt0eXBlPVwiY2hlY2tib3hcIl0sXG5bdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuICovXG5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gKiAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG4gKi9cblxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbn1cblxuLyogSW50ZXJhY3RpdmVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxuICovXG5cbmRldGFpbHMge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xufVxuXG4vKiBNaXNjXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwKy5cbiAqL1xuXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG4gKi9cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuIiwiLyohXG5UaGVtZSBOYW1lOiAgIFRpbWJlciBCb2lsZXJwbGF0ZSBUaGVtZVxuVGhlbWUgVVJJOiAgICBodHRwczovL2dpdGh1Yi5jb20vY2VydGFpbmx5YWtleS90aW1iZXItYm9pbGVycGxhdGVcbkRlc2NyaXB0aW9uOiAgVGhpcyBpcyBhIGJvaWxlcnBsYXRlIHRoZW1lIHVzaW5nIFRpbWJlclxuVmVyc2lvbjogICAgICAxLjBcbkF1dGhvcjogICAgICAgQWxla3NhbmRyIEJlbGlhZXZcblRleHQgRG9tYWluOiAgdGhlbWVfZG9tYWluXG5Eb21haW4gUGF0aDogIC9sYW5ndWFnZXMvXG4qL1xuLyogc3R5bGVsaW50LWRpc2FibGUgcGx1Z2luL2F0LXJ1bGUtaW1wb3J0LXBhdGggKi9cbkBpbXBvcnQgdXJsKFwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1ZYW5vbmUrS2FmZmVlc2F0ejp3Z2h0QDUwMDs3MDAmZGlzcGxheT1zd2FwXCIpO1xuLnUtc2NyZWVucmVhZGVyLXRleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICB3aWR0aDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG5odG1sOm5vdCgubm8tanMpIC5qcy1oaWRkZW4taWYtanMtb24ge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi51LWlubmVyLWxheWVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxOyB9XG5cbi51LW5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cblxuLmpzLWhpZGRlbixcbi51LWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLyogc3R5bGVsaW50LWVuYWJsZSBwbHVnaW4vYXQtcnVsZS1pbXBvcnQtcGF0aCAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgcGx1Z2luL2F0LXJ1bGUtaW1wb3J0LXBhdGggKi9cbi8qISBub3JtYWxpemUuY3NzIHY4LjAuMSB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cbi8qIERvY3VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cbiAqL1xuaHRtbCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLyogMiAqLyB9XG5cbi8qIFNlY3Rpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbmJvZHkge1xuICBtYXJnaW46IDA7IH1cblxuLyoqXG4gKiBSZW5kZXIgdGhlIGBtYWluYCBlbGVtZW50IGNvbnNpc3RlbnRseSBpbiBJRS5cbiAqL1xubWFpbiB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cbiAqL1xuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDsgfVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG4gKi9cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIC8qIDEgKi9cbiAgaGVpZ2h0OiAwO1xuICAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5wcmUge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07XG4gIC8qIDIgKi8gfVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICovXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiBub25lO1xuICAvKiAxICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAvKiAyICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7IH1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAqIGFsbCBicm93c2Vycy5cbiAqL1xuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07IH1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07IH1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lOyB9XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAqL1xuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxMDAlO1xuICAvKiAxICovXG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAvKiAxICovXG4gIG1hcmdpbjogMDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5idXR0b24sXG5pbnB1dCB7XG4gIC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7IH1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuYnV0dG9uLFxuc2VsZWN0IHtcbiAgLyogMSAqL1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKi9cbmJ1dHRvbixcblt0eXBlPVwiYnV0dG9uXCJdLFxuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IH1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDsgfVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7IH1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cbmZpZWxkc2V0IHtcbiAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtOyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0O1xuICAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlO1xuICAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIC8qIDEgKi8gfVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG4gKi9cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cbiAqL1xuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bzsgfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gKi9cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIC8qIDEgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbiAqL1xuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICovXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gIC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDtcbiAgLyogMiAqLyB9XG5cbi8qIEludGVyYWN0aXZlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXG4gKi9cbmRldGFpbHMge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtOyB9XG5cbi8qIE1pc2NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwKy5cbiAqL1xudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG4gKi9cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHBsdWdpbi9hdC1ydWxlLWltcG9ydC1wYXRoICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBjb2xvci1uby1oZXggKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIGluZGVudGF0aW9uICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIGluZGVudGF0aW9uICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBtZW93dGVjL25vLXB4ICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIG1lb3d0ZWMvbm8tcHggKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW1heC11bml2ZXJzYWwsIHNlbGVjdG9yLW1heC10eXBlICovXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBkbCwgZGQsIHVsLCBvbCwgbGksIGZpZ3VyZSB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxMDAlOyB9XG5cbnVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4qLCAqOjpiZWZvcmUsICo6OmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDsgfVxuXG5vbCwgdWwge1xuICBsaXN0LXN0eWxlLXBvc2l0aW9uOiBpbnNpZGU7IH1cblxudGV4dGFyZWEge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHJlc2l6ZTogdmVydGljYWw7IH1cblxuZmllbGRzZXQge1xuICBib3JkZXI6IG5vbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG5zZWxlY3Qge1xuICBjb2xvcjogYmxhY2s7IH1cblxuaWZyYW1lIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8qIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCwgc2VsZWN0b3ItbWF4LXVuaXZlcnNhbCAqL1xuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH1cblxuYSB7XG4gIGNvbG9yOiAjZWUyZDI5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cblxuLnMtdGV4dGNvbnRlbnQge1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1tYXgtdHlwZSwgc2VsZWN0b3ItbWF4LWNvbXBvdW5kLXNlbGVjdG9ycyAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW1heC10eXBlLCBzZWxlY3Rvci1tYXgtY29tcG91bmQtc2VsZWN0b3JzICovIH1cbiAgLnMtdGV4dGNvbnRlbnQgPiBibG9ja3F1b3RlIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7IH1cbiAgLnMtdGV4dGNvbnRlbnQgPiBwOm5vdCg6b25seS1jaGlsZCksIC5zLXRleHRjb250ZW50ID4gdWw6bm90KDpvbmx5LWNoaWxkKSwgLnMtdGV4dGNvbnRlbnQgPiBvbDpub3QoOm9ubHktY2hpbGQpIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7IH1cbiAgLnMtdGV4dGNvbnRlbnQgPiBoMjpmaXJzdC1jaGlsZCwgLnMtdGV4dGNvbnRlbnQgPiBoMzpmaXJzdC1jaGlsZCwgLnMtdGV4dGNvbnRlbnQgPiBoNDpmaXJzdC1jaGlsZCwgLnMtdGV4dGNvbnRlbnQgPiBoNTpmaXJzdC1jaGlsZCwgLnMtdGV4dGNvbnRlbnQgPiBoNjpmaXJzdC1jaGlsZCwgLnMtdGV4dGNvbnRlbnQgPiBwOmZpcnN0LWNoaWxkLCAucy10ZXh0Y29udGVudCA+IHVsOmZpcnN0LWNoaWxkLCAucy10ZXh0Y29udGVudCA+IG9sOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwOyB9XG4gIC5zLXRleHRjb250ZW50ID4gaDI6bGFzdC1jaGlsZCwgLnMtdGV4dGNvbnRlbnQgPiBoMzpsYXN0LWNoaWxkLCAucy10ZXh0Y29udGVudCA+IGg0Omxhc3QtY2hpbGQsIC5zLXRleHRjb250ZW50ID4gaDU6bGFzdC1jaGlsZCwgLnMtdGV4dGNvbnRlbnQgPiBoNjpsYXN0LWNoaWxkLCAucy10ZXh0Y29udGVudCA+IHA6bGFzdC1jaGlsZCwgLnMtdGV4dGNvbnRlbnQgPiB1bDpsYXN0LWNoaWxkLCAucy10ZXh0Y29udGVudCA+IG9sOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7IH1cbiAgLnMtdGV4dGNvbnRlbnQgPiB1bCBsaSB7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBkaXNjOyB9XG4gIC5zLXRleHRjb250ZW50ID4gdWwgbGkgbGksIC5zLXRleHRjb250ZW50ID4gb2wgbGkgbGkge1xuICAgIHBhZGRpbmctbGVmdDogMjBweDsgfVxuICAucy10ZXh0Y29udGVudCBpbWcge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDYzLjk5ZW0pIHtcbiAgICAgIC5zLXRleHRjb250ZW50IGltZyB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogYXV0bzsgfSB9XG4gIC5zLXRleHRjb250ZW50IGlmcmFtZSB7XG4gICAgd2lkdGg6IDEwMCU7IH1cblxuLmlzLXBhZ2UtbG9hZGluZyAqIHtcbiAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi51LWxpbmsge1xuICBjb2xvcjogI2VlMmQyOTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbi51LWxpbmstYnV0dG9uIHtcbiAgY29sb3I6ICNlZTJkMjk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3gtc2hhZG93OiBub25lO1xuICBwYWRkaW5nOiAwOyB9XG5cbi5jLWVkaXQtbGluayB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAxZW07XG4gIGxlZnQ6IDFlbTtcbiAgb3BhY2l0eTogMDsgfVxuICAuYy1lZGl0LWxpbms6aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7IH1cblxuYm9keSBoMSwgYm9keSBoMiwgaHRtbCBoMSwgaHRtbCBoMiB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG4uc2VjdGlvbi1wYWRkaW5nIHtcbiAgcGFkZGluZzogODBweCAwcHggODBweCAwcHg7IH1cbiAgLnNlY3Rpb24tcGFkZGluZyBoMiB7XG4gICAgcGFkZGluZy1ib3R0b206IDUwcHg7IH1cblxuLndwLWJsb2NrLWJ1dHRvbnMge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLndwLWJsb2NrLWJ1dHRvbnM6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIHBhZGRpbmctYm90dG9tOiA1MHB4OyB9XG4gIC53cC1ibG9jay1idXR0b25zIC5idXR0b24tY2VudGVyIHtcbiAgICBtYXJnaW46IDAgYXV0bzsgfVxuXG4uYmFja2dyb3VuZC1ibHVlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI3NzVhNTtcbiAgY29sb3I6IHdoaXRlOyB9XG5cbi5iYWNrZ3JvdW5kLW9yYW5nZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNEOTc2MjM7XG4gIGNvbG9yOiAjMjc3NWE1OyB9XG5cbi5iYWNrZ3JvdW5kLXllbGxvdyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZGM4MWY7XG4gIGNvbG9yOiBibGFjazsgfVxuICAuYmFja2dyb3VuZC15ZWxsb3cgYSB7XG4gICAgY29sb3I6ICMyNzc1YTU7IH1cblxuLnRoZV9jb250ZW50IC53cC1ibG9jay1jb3ZlciB7XG4gIGhlaWdodDogYXV0bztcbiAgbWFyZ2luLWJvdHRvbTogNjBweDsgfVxuXG4udGhlX2NvbnRlbnQgaHRtbCBib2R5IGgyIHtcbiAgZm9udC1zaXplOiA0cmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLnRoZV9jb250ZW50IGJvZHkgaDMsIC50aGVfY29udGVudCBodG1sIGgzIHtcbiAgZm9udC1zaXplOiAzZW07IH1cblxuLnRoZV9jb250ZW50IHAsIC50aGVfY29udGVudCBoMSwgLnRoZV9jb250ZW50IGgyLCAudGhlX2NvbnRlbnQgaDMsIC50aGVfY29udGVudCBoNCwgLnRoZV9jb250ZW50IGg1LCAudGhlX2NvbnRlbnQgLndwLWJsb2NrLWJ1dHRvbnMsIC50aGVfY29udGVudCB1bCwgLnRoZV9jb250ZW50IGltZywgLnRoZV9jb250ZW50IGlmcmFtZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgLnRoZV9jb250ZW50IHAsIC50aGVfY29udGVudCBoMSwgLnRoZV9jb250ZW50IGgyLCAudGhlX2NvbnRlbnQgaDMsIC50aGVfY29udGVudCBoNCwgLnRoZV9jb250ZW50IGg1LCAudGhlX2NvbnRlbnQgLndwLWJsb2NrLWJ1dHRvbnMsIC50aGVfY29udGVudCB1bCwgLnRoZV9jb250ZW50IGltZywgLnRoZV9jb250ZW50IGlmcmFtZSB7XG4gICAgICBtYXgtd2lkdGg6IDU0MHB4OyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLnRoZV9jb250ZW50IHAsIC50aGVfY29udGVudCBoMSwgLnRoZV9jb250ZW50IGgyLCAudGhlX2NvbnRlbnQgaDMsIC50aGVfY29udGVudCBoNCwgLnRoZV9jb250ZW50IGg1LCAudGhlX2NvbnRlbnQgLndwLWJsb2NrLWJ1dHRvbnMsIC50aGVfY29udGVudCB1bCwgLnRoZV9jb250ZW50IGltZywgLnRoZV9jb250ZW50IGlmcmFtZSB7XG4gICAgICBtYXgtd2lkdGg6IDcyMHB4O1xuICAgICAgcGFkZGluZzogMHB4IDEwMHB4IDBweCAxMDBweDsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aGVfY29udGVudCBwLCAudGhlX2NvbnRlbnQgaDEsIC50aGVfY29udGVudCBoMiwgLnRoZV9jb250ZW50IGgzLCAudGhlX2NvbnRlbnQgaDQsIC50aGVfY29udGVudCBoNSwgLnRoZV9jb250ZW50IC53cC1ibG9jay1idXR0b25zLCAudGhlX2NvbnRlbnQgdWwsIC50aGVfY29udGVudCBpbWcsIC50aGVfY29udGVudCBpZnJhbWUge1xuICAgICAgbWF4LXdpZHRoOiA5NjBweDtcbiAgICAgIHBhZGRpbmc6IDBweCAxMDBweCAwcHggMTc1cHg7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLnRoZV9jb250ZW50IHAsIC50aGVfY29udGVudCBoMSwgLnRoZV9jb250ZW50IGgyLCAudGhlX2NvbnRlbnQgaDMsIC50aGVfY29udGVudCBoNCwgLnRoZV9jb250ZW50IGg1LCAudGhlX2NvbnRlbnQgLndwLWJsb2NrLWJ1dHRvbnMsIC50aGVfY29udGVudCB1bCwgLnRoZV9jb250ZW50IGltZywgLnRoZV9jb250ZW50IGlmcmFtZSB7XG4gICAgICBtYXgtd2lkdGg6IDExNDBweDtcbiAgICAgIHBhZGRpbmc6IDBweCAxMDBweCAwcHggMjAwcHg7IH0gfVxuXG4uZ3JheXdyYXAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZXNtb2tlOyB9XG5cbi5wLWhvbWUgc2VjdGlvbiB7XG4gIHBhZGRpbmc6IDEwMHB4IDBweCAxMDBweCAwcHg7IH1cblxuLmVsZW1lbnRfbG9vcCAuZWxlbWVudCB7XG4gIHBhZGRpbmc6IDMwcHggMHB4IDMwcHggMHB4OyB9XG4gIC5lbGVtZW50X2xvb3AgLmVsZW1lbnQgaDIgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiAjMjc3NWE1OyB9XG4gICAgLmVsZW1lbnRfbG9vcCAuZWxlbWVudCBoMiBhOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAjMDBhOWFjOyB9XG5cbnNlY3Rpb24uZnJvbnRwYWdlX2hlcm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjc3NWE1O1xuICBwYWRkaW5nOiAxMDBweCAwcHggMTAwcHggMHB4OyB9XG4gIHNlY3Rpb24uZnJvbnRwYWdlX2hlcm8gaDEge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXdlaWdodDogMjAwO1xuICAgIGNvbG9yOiB3aGl0ZTsgfVxuICBzZWN0aW9uLmZyb250cGFnZV9oZXJvIC5oZXJvX2ltYWdlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IGF1dG87IH1cblxuc2VjdGlvbiN3aGF0X2lzX2NpdmlsX2ZvcmZlaXR1cmUgaDEge1xuICBtYXJnaW4tdG9wOiAzMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuZm9vdGVyIHNlY3Rpb24uZm9vdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3NWI4MTtcbiAgY29sb3I6IHdoaXRlOyB9XG5cbnNlY3Rpb24ucGZwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI3NzVhNTtcbiAgcGFkZGluZzogNjBweCAwcHg7IH1cbiAgc2VjdGlvbi5wZnAgaDEsIHNlY3Rpb24ucGZwIGgyLCBzZWN0aW9uLnBmcCBoMywgc2VjdGlvbi5wZnAgaDQsIHNlY3Rpb24ucGZwIGg1LCBzZWN0aW9uLnBmcCBwIHtcbiAgICBjb2xvcjogd2hpdGU7IH1cbiAgc2VjdGlvbi5wZnAgaDIsIHNlY3Rpb24ucGZwIGgzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgc2VjdGlvbi5wZnAgaDIge1xuICAgIHBhZGRpbmctYm90dG9tOiA1MHB4OyB9XG4gIHNlY3Rpb24ucGZwIC5idG4ge1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgd2lkdGg6IDgwJTtcbiAgICBtYXJnaW4tbGVmdDogMTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZGM4MWY7XG4gICAgY29sb3I6IGJsYWNrO1xuICAgIGZvbnQtd2VpZ2h0OiA4MDA7IH1cblxuLmNhc2VzLWZsdWlkLWNvbnRhaW5lciBoMyB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IDUwcHg7IH1cblxuLmNhc2VzLWZsdWlkLWNvbnRhaW5lciAuY2FzZS1mbHVpZCB7XG4gIGhlaWdodDogMzUwcHg7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgcGFkZGluZzogMHB4OyB9XG4gIC5jYXNlcy1mbHVpZC1jb250YWluZXIgLmNhc2UtZmx1aWQgLmRhcmtlbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICAgb3BhY2l0eTogLjI1O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB6LWluZGV4OiAxO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDsgfVxuICAuY2FzZXMtZmx1aWQtY29udGFpbmVyIC5jYXNlLWZsdWlkIC5kYXJrZW46aG92ZXIge1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgLmNhc2VzLWZsdWlkLWNvbnRhaW5lciAuY2FzZS1mbHVpZCAuY2FzZS1uYW1lOmhvdmVyICsgLmRhcmtlbiB7XG4gICAgb3BhY2l0eTogMDsgfVxuICAuY2FzZXMtZmx1aWQtY29udGFpbmVyIC5jYXNlLWZsdWlkIC5jYXNlLW5hbWUge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICAgIC5jYXNlcy1mbHVpZC1jb250YWluZXIgLmNhc2UtZmx1aWQgLmNhc2UtbmFtZTpob3ZlciB7XG4gICAgICBjb2xvcjogI2ZkYzgxZjsgfVxuICAgIC5jYXNlcy1mbHVpZC1jb250YWluZXIgLmNhc2UtZmx1aWQgLmNhc2UtbmFtZSBoNSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBwYWRkaW5nOiAwcHggMTVweCAwcHggMTVweDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxuICAgIC5jYXNlcy1mbHVpZC1jb250YWluZXIgLmNhc2UtZmx1aWQgLmNhc2UtbmFtZSBoMyB7XG4gICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgICBwYWRkaW5nLXRvcDogMTAwcHg7IH1cblxuc2VjdGlvbi51cGRhdGVzIC51cGRhdGUtbGFiZWwge1xuICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgICBzZWN0aW9uLnVwZGF0ZXMgLnVwZGF0ZS1sYWJlbCB7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9IH1cblxuc2VjdGlvbi51cGRhdGVzIGxpIHtcbiAgcGFkZGluZy1ib3R0b206IDQwcHg7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG4gIHNlY3Rpb24udXBkYXRlcyBsaSAudXBkYXRlLWltYWdlIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OyB9XG4gIHNlY3Rpb24udXBkYXRlcyBsaSBoNSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6IC44cmVtOyB9XG5cbnNlY3Rpb24ucG9sbGluZyBoMiB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IDUwcHg7IH1cblxuc2VjdGlvbi5vdGhlci1yZXNlYXJjaCBoMiB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG5zZWN0aW9uLnJlZm9ybXMgaDIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmctYm90dG9tOiA1MHB4OyB9XG5cbnNlY3Rpb24ucmVmb3JtcyAucmVmb3JtX21hcF9jb250YWluZXIgaDQge1xuICBoZWlnaHQ6IDEwMHB4OyB9XG5cbnNlY3Rpb24uZmVkZXJhbC1yZWZvcm1zIGgyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nLWJvdHRvbTogNTBweDsgfVxuXG5zZWN0aW9uLm1vZGVsLWxlZ2lzbGF0aW9uIGgzIGEge1xuICBjb2xvcjogIzI3NzVhNTsgfVxuXG5zZWN0aW9uLmZvb3RlciAuYWJvdXQgcCB7XG4gIGZvbnQtc2l6ZTogLjllbTsgfVxuXG5zZWN0aW9uLmZvb3RlciAuYWJvdXQgaDMge1xuICBmb250LXNpemU6IDEuNWVtOyB9XG5cbnNlY3Rpb24uZm9vdGVyIGxpIGEge1xuICBjb2xvcjogd2hpdGU7IH1cblxuc2VjdGlvbi5mb290ZXIgaDMgYSB7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuXG5zZWN0aW9uLmZvb3RlciAuc3VwcG9ydC1paiB7XG4gIHdpZHRoOiA4MCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZGM4MWY7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBtYXJnaW4tdG9wOiAzMHB4OyB9XG4iLCIvKiBzdHlsZWxpbnQtZGlzYWJsZSBjb2xvci1uby1oZXggKi9cbiRjb2xvci1wb21lZ3JhbmF0ZTogI2VlMmQyOTtcbiRjb2xvci1jb25jcmV0ZTogI2YzZjNmMztcblxuJGNvbG9yLWFjY2VudDogJGNvbG9yLXBvbWVncmFuYXRlO1xuXG4kY29sb3ItbGluazogJGNvbG9yLWFjY2VudDtcbiRjb2xvci1iZzogd2hpdGU7XG4iLCIkZmYtYm9keTogJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcblxuXG4kZm9udC1zaXplLWJhc2U6IHJlbS1jYWxjKDE2cHgpO1xuXG4vLyBBIG1hcCBjb250YWluaW5nIHRoZSBiYXNpYyB0eXBvZ3JhcGh5IGZvciBhbGwgdGhlIHNpdGVcbi8vIFRoZSAybmQgbGV2ZWwgb2YgdGhlIG1hcCAoYm9keSBhbmQgaGVhZGluZykgY29ycmVzcG9uZHMgdG8gdGhlIG1haW4gdHlwZWZhY2VzLlxuLy8gVGhlIDNyZCBsZXZlbCBvZiB0aGUgbWFwIGNvcnJlc3BvbmRzIHRvIGZvbnQgcHJvcGVydHkgY29tYmluYXRpb25zIHRoYXQgZnJlcXVlbnRseSBnbyB0b2dldGhlci4gQW55IGFyYml0cmFyeSB3b3JkIGdvZXMgYXMgYSBncm91cCBuYW1lLiBUaGUgcHJvcGVydGllcyBhcmUgdXN1YWxseSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IGJ1dCBjYW4gYmUgYWxzbyBhbnkgb3RoZXIuIFBsZWFzZSBhdm9pZCBpbmNsdWRpbmcgY29sb3IgYW5kIG90aGVyIG5vbiB0eXBvZ3JhcGh5IHByb3BlcnRpZXMgaGVyZSwgdGhvdWdoLlxuLy8gVXNhZ2U6IEBpbmNsdWRlIHUtc2V0LXR5cG9ncmFwaHkoJHR5cGVmYWNlLCAkc3R5bGUtbmFtZSk7XG5cbi8qIHN0eWxlbGludC1kaXNhYmxlIGluZGVudGF0aW9uICovXG4kZm9udC1zdHlsZXM6IChcbiAgXG4gICdib2R5JzogKCAvLyBha2EgSGVsdmV0aWNhIE5ldWVcblxuICAgICdyZWd1bGFyJzogKFxuICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UsXG4gICAgICBsaW5lLWhlaWdodDogMS42XG4gICAgKSxcbiAgKSxcblxuICAvLyAnaGVhZGluZyc6ICggLy8gYWthIGhlYWRpbmcgZm9udFxuXG4gIC8vICAgJ3NlY3Rpb24tdGl0bGUnOiAoXG4gIC8vICAgICBmb250LXNpemU6MTZweCxcbiAgLy8gICAgIGxpbmUtaGVpZ2h0OjFcbiAgLy8gICApLFxuICAvLyApXG5cbik7XG5cbi8qIHN0eWxlbGludC1lbmFibGUgaW5kZW50YXRpb24gKi9cbiIsIi8qIHN0eWxlbGludC1kaXNhYmxlIG1lb3d0ZWMvbm8tcHggKi9cblxuLy8gUHJvcG9ydGlvbnNcbiR1bml0LXg6IHJlbS1jYWxjKDEwcHgpO1xuJHVuaXQteTogJHVuaXQteDtcblxuLy8gV2lkdGhzXG5cbi8vVGh1bWJuYWlsIHNpemVzIOKAlCBzYW1lIGFzIHdwIHJlZ2lzdGVyZWQgc2l6ZXMgdW5sZXNzIG5vdGVkIG90aGVyd2lzZVxuLy8gJHRoaXJkLWxvdy1oZWlnaHQ6MzAwcHg7XG5cbi8vIFZpc3VhbCBlZmZlY3RzXG5cbi8vIFRyYW5zaXRpb25zICYgYW5pbWF0aW9uc1xuLy8gbm90ZSB0aGF0IHByb3BlcnR5IGlzIG9taXR0ZWQgXG4vLyAkdHJhbnNpdGlvbi1tYWluOmVhc2Utb3V0IC40cztcblxuLy8gRXhjbHVkZWQgc2VsZWN0b3JzIChvbmx5IHNpbXBsZSBzZWxlY3RvcnMpXG4vLyB1c2UgQGluY2x1ZGUgdC1mb2N1c2VkIHdpdGggYXJndW1lbnRzIHRvIHNldCB5b3VyIG93biBzdHlsaW5nIHdoZW4gZWxlbWVudCBpcyBmb2N1c2VkXG4kY2xhc3Nlcy1leGNsdWRlLWZyb20tZm9jdXM6IChcbiAgJ2Mtc2VsZWN0b3ItMSdcbiAgJ2Mtc2VsZWN0b3ItMidcbik7XG5cblxuLy8gQnJlYWtwb2ludHNcbi8vIHVzYWdlOiBAaW5jbHVkZSBtcSgkZnJvbTogeGxhcmdlKSB7fVxuJG1xLWJyZWFrcG9pbnRzOiAoXG4gIHNtYWxsOiAgMzgwcHgsXG4gIG1lZGl1bTogNzY4cHgsXG4gIGxhcmdlOiAgMTAyNHB4LFxuICB4bGFyZ2U6IDEyODBweCxcbik7XG5cbi8qIHN0eWxlbGludC1lbmFibGUgbWVvd3RlYy9uby1weCAqL1xuIiwiLyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItbWF4LXVuaXZlcnNhbCwgc2VsZWN0b3ItbWF4LXR5cGUgKi9cbi8vIFR3ZWFrcyBmb3IgTm9ybWFsaXplIDMuMFxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgZGwsIGRkLCB1bCwgb2wsIGxpLCBmaWd1cmUge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7IFxufVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsgIFxuICBmb250LXdlaWdodDogbm9ybWFsOyBcbiAgZm9udC1zaXplOiAxMDAlOyBcbn1cblxudWwge1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5cbm9sLCB1bCB7XG4gIGxpc3Qtc3R5bGUtcG9zaXRpb246IGluc2lkZTsgXG59XG5cbnRleHRhcmVhIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogbm9uZTsgXG4gIG1hcmdpbjogMDsgXG4gIHBhZGRpbmc6IDA7IFxufVxuXG5zZWxlY3Qge1xuICBjb2xvcjogYmxhY2s7IFxufVxuXG5pZnJhbWUge1xuICBib3JkZXI6IG5vbmU7IFxufVxuIiwiLyogc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50LCBzZWxlY3Rvci1tYXgtdW5pdmVyc2FsICovXG5ib2R5IHtcbiAgQGluY2x1ZGUgdS1zZXQtdHlwb2dyYXBoeTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJnOyBcbn1cblxuYSB7XG4gIEBpbmNsdWRlIHQtbGluay1iYXNlO1xufVxuXG4ucy10ZXh0Y29udGVudCB7XG4gIEBpbmNsdWRlIHQtdGV4dGNvbnRlbnQ7XG59XG5cbi5pcy1wYWdlLWxvYWRpbmcgKiB7XG4gIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLnUtbGluayB7XG4gIEBpbmNsdWRlIHQtbGluay1iYXNlO1xufVxuXG4udS1saW5rLWJ1dHRvbiB7XG4gIEBpbmNsdWRlIHQtbGluay1iYXNlO1xuICBAaW5jbHVkZSB1LXJlbW92ZS1idXR0b24tc3R5bGluZztcbn1cbiIsIi8vIFByb2plY3QgbWl4aW5zXG5cbi8vICFVdGlsaXRpZXNcbi8vIFRoZXNlIGRvIG9uZSBzaW5nbGUgdGhpbmdcbkBtaXhpbiB1LXNldC10eXBvZ3JhcGh5KCR0eXBlZmFjZS1uYW1lOiAnYm9keScsICRzdHlsZS1uYW1lOiAncmVndWxhcicpIHtcbiAgXG4gICR0aGlzLXR5cGVmYWNlOiBtYXAtZ2V0KCRmb250LXN0eWxlcywgJHR5cGVmYWNlLW5hbWUpO1xuICAkdGhpcy1zdHlsZTogbWFwLWdldCgkdGhpcy10eXBlZmFjZSwgJHN0eWxlLW5hbWUpO1xuICBcbiAgQGlmICR0eXBlZmFjZS1uYW1lID09ICdib2R5JyB7XG4gICAgZm9udC1mYW1pbHk6ICRmZi1ib2R5OyBcbiAgfVxuICBAaWYgJHR5cGVmYWNlLW5hbWUgPT0gJ2hlYWRpbmcnIHtcbiAgICBmb250LWZhbWlseTogJGZmLWhlYWRpbmc7IFxuICAgIGZvbnQtd2VpZ2h0OiA4MDA7IFxuICB9XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHRoaXMtc3R5bGUge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkbXEtYnJlYWtwb2ludHMsICRwcm9wZXJ0eSkgYW5kIHR5cGUtb2YoJHZhbHVlKSA9PSAnbWFwJyB7XG4gICAgICBAaW5jbHVkZSBtcSgkZnJvbTogJHByb3BlcnR5KSB7XG4gICAgICAgIEBlYWNoICRzdWJwcm9wZXJ0eSwgJHN1YnZhbHVlIGluICR2YWx1ZSB7XG4gICAgICAgICAgQGlmICRzdWJwcm9wZXJ0eSA9PSAnZm9udC1zaXplJyB7XG4gICAgICAgICAgICAkc3VidmFsdWU6IHJlbS1jYWxjKCRzdWJ2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgI3skc3VicHJvcGVydHl9OiAkc3VidmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAkcHJvcGVydHkgPT0gJ2ZvbnQtc2l6ZScge1xuICAgICAgICAkdmFsdWU6IHJlbS1jYWxjKCR2YWx1ZSk7XG4gICAgICB9XG4gICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyAhT2JqZWN0c1xuLy8gKHN0cnVjdHVyZS1yZWxhdGVkIHN0eWxlcylcblxuXG5cblxuLy8gIVRoZW1pbmcgbWl4aW5zXG4vLyBwdXJlIGFwcGVhcmFuY2UgKHR5cG9ncmFwaGljL2Nvc21ldGljKSBzdHlsZXNcblxuQG1peGluIHQtbGluay1iYXNlIHtcbiAgY29sb3I6ICRjb2xvci1saW5rOyBcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBcbn1cblxuXG5AbWl4aW4gdC1mb2N1c2VkIHtcbn1cbiIsIi8vIHB1cmUgYXBwZWFyYW5jZSAodHlwb2dyYXBoaWMvY29zbWV0aWMpIHN0eWxlc1xuLy8gcGxlYXNlIGtlZXAgaGVyZSBvbmx5IHRob3NlIG1peGlucyB0aGF0IGFyZSByZWxhdGVkIHRvIHNpbmdsZSBwb3N0IHN0eWxpbmcgXG5cbkBtaXhpbiB0LXRleHRjb250ZW50IHtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItbWF4LXR5cGUsIHNlbGVjdG9yLW1heC1jb21wb3VuZC1zZWxlY3RvcnMgKi9cblxuICAvLyBwcmV2ZW50aW5nIHRleHQgc3R5bGVzIGxlYWtpbmcgaW50byB3aWRnZXRzIHBhc3RlZCBpbnRvIGNvbnRlbnQgYXJlYSB2aWEgc2hvcnRjb2Rlc1xuICAmID4ge1xuICAgIGJsb2NrcXVvdGUge1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljOyBcbiAgICB9XG4gICAgLy8gaDIge1xuICAgIC8vICAgQGluY2x1ZGUgdC1oZWFkaW5nLXh4eGw7XG4gICAgLy8gfVxuICAgIC8vIGgzIHtcbiAgICAvLyAgIEBpbmNsdWRlIHQtaGVhZGluZy14eGw7XG4gICAgLy8gfVxuICAgIC8vIGg0IHtcbiAgICAvLyAgIEBpbmNsdWRlIHQtaGVhZGluZy14bDtcbiAgICAvLyB9XG4gICAgLy8gaDUge1xuICAgIC8vICAgQGluY2x1ZGUgdC1oZWFkaW5nLWw7XG4gICAgLy8gfVxuICAgIC8vIGg2IHtcbiAgICAvLyAgIEBpbmNsdWRlIHQtaGVhZGluZy1tO1xuICAgIC8vIH1cbiAgICBwLCB1bCwgb2wge1xuICAgICAgJjpub3QoOm9ubHktY2hpbGQpIHtcbiAgICAgICAgQGluY2x1ZGUgdS1zcGFjaW5nLXkoJHVuaXQteSwgJ21hcmdpbicpO1xuICAgICAgfVxuICAgIH1cbiAgICBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIHVsLCBvbCB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDsgXG4gICAgICB9XG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwOyBcbiAgICAgIH1cbiAgICB9XG4gICAgdWwgbGkge1xuICAgICAgbGlzdC1zdHlsZS10eXBlOiBkaXNjOyBcbiAgICB9XG4gICAgdWwsIG9sIHtcbiAgICAgIGxpIGxpIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkdW5pdC14ICogMjsgXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGltZyB7XG4gICAgZGlzcGxheTpibG9jazsgXG4gICAgQGluY2x1ZGUgbXEoJHVudGlsOiBsYXJnZSkge1xuICAgICAgQGluY2x1ZGUgdS1pbWFnZS1hdXRvd2lkdGg7XG4gICAgfVxuICB9XG4gIGlmcmFtZSB7XG4gICAgd2lkdGg6IDEwMCU7IFxuICB9XG5cbiAgLyogc3R5bGVsaW50LWVuYWJsZSBzZWxlY3Rvci1tYXgtdHlwZSwgc2VsZWN0b3ItbWF4LWNvbXBvdW5kLXNlbGVjdG9ycyAqL1xufVxuXG5cbi8vIH4gaGVhZGluZyBsZXZlbCAyXG4vLyBAbWl4aW4gdC1oZWFkaW5nLXh4eGwge1xuLy8gICBAaW5jbHVkZSB1LXNldC10eXBvZ3JhcGh5KCdib2R5JywgJ2JpZy1oZWFkaW5nJyk7XG4vLyB9XG5cblxuLy8gfiBoZWFkaW5nIGxldmVsIDNcbi8vIEBtaXhpbiB0LWhlYWRpbmcteHhsIHtcbi8vIH1cblxuXG4vLyAvLyB+IGhlYWRpbmcgbGV2ZWwgNFxuLy8gQG1peGluIHQtaGVhZGluZy14bCB7XG4vLyB9XG5cblxuLy8gLy8gfiBoZWFkaW5nIGxldmVsIDVcbi8vIEBtaXhpbiB0LWhlYWRpbmctbCB7XG4vLyB9XG5cblxuLy8gLy8gfiBoZWFkaW5nIGxldmVsIDZcbi8vIEBtaXhpbiB0LWhlYWRpbmctbSB7XG4vLyB9XG4iLCJAbWl4aW4gdS1zcGFjaW5nLXgoJHNwYWNpbmcsICRzcGFjaW5nLXR5cGU6J3BhZGRpbmcnKSB7XG4gICN7JHNwYWNpbmctdHlwZX0tbGVmdDokc3BhY2luZzsgXG4gICN7JHNwYWNpbmctdHlwZX0tcmlnaHQ6JHNwYWNpbmc7IFxufVxuXG5AbWl4aW4gdS1zcGFjaW5nLXkoJHNwYWNpbmcsICRzcGFjaW5nLXR5cGU6J3BhZGRpbmcnKSB7XG4gICN7JHNwYWNpbmctdHlwZX0tdG9wOiRzcGFjaW5nOyBcbiAgI3skc3BhY2luZy10eXBlfS1ib3R0b206JHNwYWNpbmc7IFxufSIsIkBjaGFyc2V0IFwiVVRGLThcIjsgLy8gRml4ZXMgYW4gaXNzdWUgd2hlcmUgUnVieSBsb2NhbGUgaXMgbm90IHNldCBwcm9wZXJseVxuICAgICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvcHVsbC8xMFxuXG4vLy8gQmFzZSBmb250IHNpemUgb24gdGhlIGA8Ym9keT5gIGVsZW1lbnRcbi8vL1xuLy8vIERvIG5vdCBvdmVycmlkZSB0aGlzIHZhbHVlLCBvciB0aGluZ3Mgd2lsbCBicmVha1xuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyXG4vLy8gQGRlcHJlY2F0ZWQgVGhpcyBzZXR0aW5nIHdpbGwgYmUgcmVtb3ZlZCBpbiBzYXNzLW1xIHY2LjAuMFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE51bWJlciAodW5pdClcbiRtcS1iYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8vIFJlc3BvbnNpdmUgbW9kZVxuLy8vXG4vLy8gU2V0IHRvIGBmYWxzZWAgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSlcbi8vL1xuLy8vIFlvdSBjb3VsZCBjcmVhdGUgYSBzdHlsZXNoZWV0IHNlcnZlZCBleGNsdXNpdmVseSB0byBvbGRlciBicm93c2Vycyxcbi8vLyB3aGVyZSBAbWVkaWEgcXVlcmllcyBhcmUgcmFzdGVyaXplZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBvbGQtaWUuc2Nzc1xuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vZmYgRGlzYWJsZWQgcmVzcG9uc2l2ZSBtb2RlIGRvY3VtZW50YXRpb25cbiRtcS1yZXNwb25zaXZlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBsaXN0XG4vLy9cbi8vLyBOYW1lIHlvdXIgYnJlYWtwb2ludHMgaW4gYSB3YXkgdGhhdCBjcmVhdGVzIGEgdWJpcXVpdG91cyBsYW5ndWFnZVxuLy8vIGFjcm9zcyB0ZWFtIG1lbWJlcnMuIEl0IHdpbGwgaW1wcm92ZSBjb21tdW5pY2F0aW9uIGJldHdlZW5cbi8vLyBzdGFrZWhvbGRlcnMsIGRlc2lnbmVycywgZGV2ZWxvcGVycywgYW5kIHRlc3RlcnMuXG4vLy9cbi8vLyBAdHlwZSBNYXBcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1icmVha3BvaW50czogKFxuICAgIG1vYmlsZTogIDMyMHB4LFxuICAgIHRhYmxldDogIDc0MHB4LFxuICAgIGRlc2t0b3A6IDk4MHB4LFxuICAgIHdpZGU6ICAgIDEzMDBweFxuKSAhZGVmYXVsdDtcblxuLy8vIFN0YXRpYyBicmVha3BvaW50IChmb3IgZml4ZWQtd2lkdGggbGF5b3V0cylcbi8vL1xuLy8vIERlZmluZSB0aGUgYnJlYWtwb2ludCBmcm9tICRtcS1icmVha3BvaW50cyB0aGF0IHNob3VsZFxuLy8vIGJlIHVzZWQgYXMgdGhlIHRhcmdldCB3aWR0aCBmb3IgdGhlIGZpeGVkLXdpZHRoIGxheW91dFxuLy8vIChpLmUuIHdoZW4gJG1xLXJlc3BvbnNpdmUgaXMgc2V0IHRvICdmYWxzZScpIGluIGEgb2xkLWllLnNjc3Ncbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gdGFibGV0LW9ubHkuc2Nzc1xuLy8vICAvL1xuLy8vICAvLyBJZ25vcmUgYWxsIHN0eWxlcyBhYm92ZSB0YWJsZXQgYnJlYWtwb2ludCxcbi8vLyAgLy8gYW5kIGZpeCB0aGUgc3R5bGVzIChzdWNoIGFzIHRoZSBsYXlvdXQpIGF0IHRhYmxldCB3aWR0aFxuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gICRtcS1zdGF0aWMtYnJlYWtwb2ludDogdGFibGV0O1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byB0YWJsZXRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2FkZGluZy1jdXN0b20tYnJlYWtwb2ludHMgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLXN0YXRpYy1icmVha3BvaW50OiBkZXNrdG9wICFkZWZhdWx0O1xuXG4vLy8gU2hvdyBicmVha3BvaW50cyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vXG4vLy8gSWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3Bcbi8vLyByaWdodCBjb3JuZXIgb2YgeW91ciBzaXRlIGR1cmluZyBkZXZlbG9wbWVudCwgYWRkIHRoZSBicmVha3BvaW50c1xuLy8vIHRvIHRoaXMgbGlzdCwgb3JkZXJlZCBieSB3aWR0aC4gRm9yIGV4YW1wbGU6IChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkbXEtc2hvdy1icmVha3BvaW50czogKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKTtcbi8vLyAgIEBpbXBvcnQgJ3BhdGgvdG8vbXEnO1xuLy8vXG4vLy8gQHR5cGUgbWFwXG4kbXEtc2hvdy1icmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG5cbi8vLyBDdXN0b21pemUgdGhlIG1lZGlhIHR5cGUgKGZvciBleGFtcGxlOiBgQG1lZGlhIHNjcmVlbmAgb3IgYEBtZWRpYSBwcmludGApXG4vLy8gQnkgZGVmYXVsdCBzYXNzLW1xIHVzZXMgYW4gXCJhbGxcIiBtZWRpYSB0eXBlIChgQG1lZGlhIGFsbCBhbmQg4oCmYClcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjY2hhbmdpbmctbWVkaWEtdHlwZSBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtbWVkaWEtdHlwZTogYWxsICFkZWZhdWx0O1xuXG4vLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHB4IC0gdmFsdWUgdG8gY29udmVydFxuLy8vIEBpZ25vcmUgQHBhcmFtIHtOdW1iZXJ9ICRiYXNlLWZvbnQtc2l6ZSBbJG1xLWJhc2UtZm9udC1zaXplXSAtIGA8Ym9keT5gIGZvbnQgc2l6ZSAoZGVwcmVjYXRlZClcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJGZvbnQtc2l6ZS1pbi1lbXM6IG1xLXB4MmVtKDE2cHgpO1xuLy8vICBwIHsgZm9udC1zaXplOiBtcS1weDJlbSgxNnB4KTsgfVxuLy8vXG4vLy8gQHJlcXVpcmVzICRtcS1iYXNlLWZvbnQtc2l6ZVxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9XG5AZnVuY3Rpb24gbXEtcHgyZW0oJHB4LCAkYmFzZS1mb250LXNpemU6ICRtcS1iYXNlLWZvbnQtc2l6ZSkge1xuICAgIEBpZiAoJG1xLWJhc2UtZm9udC1zaXplICE9IDE2cHgpIHtcbiAgICAgICAgQHdhcm4gXCJPdmVycmlkaW5nICRtcS1iYXNlLWZvbnQtc2l6ZSB3aWxsIGJyZWFrIHRoaW5ncywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMi5cIjtcbiAgICB9XG4gICAgQGlmICgkYmFzZS1mb250LXNpemUgIT0gMTZweCkge1xuICAgICAgICBAd2FybiBcIlRoZSAkYmFzZS1mb250LXNpemUgYXJndW1lbnQgd2lsbCBiZSByZW1vdmVkIGluIHNhc3MtbXEgdjYuMC4wLCBhcyBvdmVycmlkaW5nIGl0IGJyZWFrcyB0aGluZ3MsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjIuXCI7XG4gICAgfVxuICAgIEBpZiB1bml0bGVzcygkcHgpIHtcbiAgICAgICAgQHdhcm4gXCJBc3N1bWluZyAjeyRweH0gdG8gYmUgaW4gcGl4ZWxzLCBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgaXQgaW50byBwaXhlbHMuXCI7XG4gICAgICAgIEByZXR1cm4gbXEtcHgyZW0oJHB4ICogMXB4LCAkYmFzZS1mb250LXNpemUpO1xuICAgIH0gQGVsc2UgaWYgdW5pdCgkcHgpID09IGVtIHtcbiAgICAgICAgQHJldHVybiAkcHg7XG4gICAgfVxuICAgIEByZXR1cm4gKCRweCAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxZW07XG59XG5cbi8vLyBHZXQgYSBicmVha3BvaW50J3Mgd2lkdGhcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnQuIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJHRhYmxldC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgodGFibGV0KTtcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKGRlc2t0b3ApKSB7fVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBWYWx1ZSBpbiBwaXhlbHNcbkBmdW5jdGlvbiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkge1xuICAgICAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEB3YXJuIFwiQnJlYWtwb2ludCAjeyRuYW1lfSB3YXNuJ3QgZm91bmQgaW4gJGJyZWFrcG9pbnRzLlwiO1xuICAgIH1cbn1cblxuLy8vIE1lZGlhIFF1ZXJ5IG1peGluXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRmcm9tIFtmYWxzZV0gLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkdW50aWwgW2ZhbHNlXSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRhbmQgW2ZhbHNlXSAtIEFkZGl0aW9uYWwgbWVkaWEgcXVlcnkgcGFyYW1ldGVyc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVkaWEtdHlwZSBbJG1xLW1lZGlhLXR5cGVdIC0gTWVkaWEgdHlwZTogc2NyZWVuLCBwcmludOKAplxuLy8vXG4vLy8gQGlnbm9yZSBVbmRvY3VtZW50ZWQgQVBJLCBmb3IgYWR2YW5jZWQgdXNlIG9ubHk6XG4vLy8gQGlnbm9yZSBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskbXEtYnJlYWtwb2ludHNdXG4vLy8gQGlnbm9yZSBAcGFyYW0ge1N0cmluZ30gJHN0YXRpYy1icmVha3BvaW50IFskbXEtc3RhdGljLWJyZWFrcG9pbnRdXG4vLy9cbi8vLyBAY29udGVudCBzdHlsaW5nIHJ1bGVzLCB3cmFwcGVkIGludG8gYSBAbWVkaWEgcXVlcnkgd2hlbiAkcmVzcG9uc2l2ZSBpcyB0cnVlXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtbWVkaWEtdHlwZVxuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLXB4MmVtXG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGhcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9uLWRlZmF1bHQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAuZWxlbWVudCB7XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IG1vYmlsZSkge1xuLy8vICAgICAgY29sb3I6IHJlZDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJHVudGlsOiB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBibHVlO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcShtb2JpbGUsIHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGdyZWVuO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogdGFibGV0LCAkYW5kOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJykge1xuLy8vICAgICAgY29sb3I6IHRlYWw7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKDk1MHB4KSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEodGFibGV0LCAkbWVkaWEtdHlwZTogc2NyZWVuKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgLy8gQWR2YW5jZWQgdXNlOlxuLy8vICAgICRteS1icmVha3BvaW50czogKEw6IDkwMHB4LCBYTDogMTIwMHB4KTtcbi8vLyAgICBAaW5jbHVkZSBtcShMLCAkYnJlYWtwb2ludHM6ICRteS1icmVha3BvaW50cywgJHN0YXRpYy1icmVha3BvaW50OiBMKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gIH1cbkBtaXhpbiBtcShcbiAgICAkZnJvbTogZmFsc2UsXG4gICAgJHVudGlsOiBmYWxzZSxcbiAgICAkYW5kOiBmYWxzZSxcbiAgICAkbWVkaWEtdHlwZTogJG1xLW1lZGlhLXR5cGUsXG4gICAgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMsXG4gICAgJHJlc3BvbnNpdmU6ICRtcS1yZXNwb25zaXZlLFxuICAgICRzdGF0aWMtYnJlYWtwb2ludDogJG1xLXN0YXRpYy1icmVha3BvaW50XG4pIHtcbiAgICAkbWluLXdpZHRoOiAwO1xuICAgICRtYXgtd2lkdGg6IDA7XG4gICAgJG1lZGlhLXF1ZXJ5OiAnJztcblxuICAgIC8vIEZyb206IHRoaXMgYnJlYWtwb2ludCAoaW5jbHVzaXZlKVxuICAgIEBpZiAkZnJvbSB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmcm9tKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0oJGZyb20pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRmcm9tLCAkYnJlYWtwb2ludHMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVudGlsOiB0aGF0IGJyZWFrcG9pbnQgKGV4Y2x1c2l2ZSlcbiAgICBAaWYgJHVudGlsIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJHVudGlsKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0oJHVudGlsKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkdW50aWwsICRicmVha3BvaW50cykpIC0gLjAxZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZGlzYWJsZWQsIHJhc3Rlcml6ZSB0aGUgb3V0cHV0IG91dHNpZGUgQG1lZGlhIGJsb2Nrc1xuICAgIC8vIFRoZSBicm93c2VyIHdpbGwgcmVseSBvbiB0aGUgY2FzY2FkZSBpdHNlbGYuXG4gICAgQGlmICRyZXNwb25zaXZlID09IGZhbHNlIHtcbiAgICAgICAgJHN0YXRpYy1icmVha3BvaW50LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc3RhdGljLWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICR0YXJnZXQtd2lkdGg6IG1xLXB4MmVtKCRzdGF0aWMtYnJlYWtwb2ludC13aWR0aCk7XG5cbiAgICAgICAgLy8gT3V0cHV0IG9ubHkgcnVsZXMgdGhhdCBzdGFydCBhdCBvciBzcGFuIG91ciB0YXJnZXQgd2lkdGhcbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgICRhbmQgPT0gZmFsc2VcbiAgICAgICAgICAgIGFuZCAkbWluLXdpZHRoIDw9ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIGFuZCAoXG4gICAgICAgICAgICAgICAgJHVudGlsID09IGZhbHNlIG9yICRtYXgtd2lkdGggPj0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYW5kICRtZWRpYS10eXBlICE9ICdwcmludCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBlbmFibGVkLCBvdXRwdXQgcnVsZXMgaW5zaWRlIEBtZWRpYSBxdWVyaWVzXG4gICAgQGVsc2Uge1xuICAgICAgICBAaWYgJG1pbi13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWluLXdpZHRoOiAjeyRtaW4td2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRtYXgtd2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1heC13aWR0aDogI3skbWF4LXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkYW5kICAgICAgICAgICAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kICN7JGFuZH0nOyB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIHVubmVjZXNzYXJ5IG1lZGlhIHF1ZXJ5IHByZWZpeCAnYWxsIGFuZCAnXG4gICAgICAgIEBpZiAoJG1lZGlhLXR5cGUgPT0gJ2FsbCcgYW5kICRtZWRpYS1xdWVyeSAhPSAnJykge1xuICAgICAgICAgICAgJG1lZGlhLXR5cGU6ICcnO1xuICAgICAgICAgICAgJG1lZGlhLXF1ZXJ5OiBzdHItc2xpY2UodW5xdW90ZSgkbWVkaWEtcXVlcnkpLCA2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAjeyRtZWRpYS10eXBlICsgJG1lZGlhLXF1ZXJ5fSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8vIFF1aWNrIHNvcnRcbi8vL1xuLy8vIEBhdXRob3IgU2FtIFJpY2hhcmRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc29ydFxuLy8vIEByZXR1cm5zIHtMaXN0fSBTb3J0ZWQgTGlzdFxuQGZ1bmN0aW9uIF9tcS1xdWljay1zb3J0KCRsaXN0KSB7XG4gICAgJGxlc3M6ICAoKTtcbiAgICAkZXF1YWw6ICgpO1xuICAgICRsYXJnZTogKCk7XG5cbiAgICBAaWYgbGVuZ3RoKCRsaXN0KSA+IDEge1xuICAgICAgICAkc2VlZDogbnRoKCRsaXN0LCBjZWlsKGxlbmd0aCgkbGlzdCkgLyAyKSk7XG5cbiAgICAgICAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgICAgICAgICAgQGlmICgkaXRlbSA9PSAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRlcXVhbDogYXBwZW5kKCRlcXVhbCwgJGl0ZW0pO1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPCAkc2VlZCkge1xuICAgICAgICAgICAgICAgICRsZXNzOiBhcHBlbmQoJGxlc3MsICRpdGVtKTtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtID4gJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkbGFyZ2U6IGFwcGVuZCgkbGFyZ2UsICRpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEByZXR1cm4gam9pbihqb2luKF9tcS1xdWljay1zb3J0KCRsZXNzKSwgJGVxdWFsKSwgX21xLXF1aWNrLXNvcnQoJGxhcmdlKSk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFNvcnQgYSBtYXAgYnkgdmFsdWVzICh3b3JrcyB3aXRoIG51bWJlcnMgb25seSlcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TWFwfSBNYXAgc29ydGVkIGJ5IHZhbHVlXG5AZnVuY3Rpb24gX21xLW1hcC1zb3J0LWJ5LXZhbHVlKCRtYXApIHtcbiAgICAkbWFwLXNvcnRlZDogKCk7XG4gICAgJG1hcC1rZXlzOiBtYXAta2V5cygkbWFwKTtcbiAgICAkbWFwLXZhbHVlczogbWFwLXZhbHVlcygkbWFwKTtcbiAgICAkbWFwLXZhbHVlcy1zb3J0ZWQ6IF9tcS1xdWljay1zb3J0KCRtYXAtdmFsdWVzKTtcblxuICAgIC8vIFJlb3JkZXIga2V5L3ZhbHVlIHBhaXJzIGJhc2VkIG9uIGtleSB2YWx1ZXNcbiAgICBAZWFjaCAkdmFsdWUgaW4gJG1hcC12YWx1ZXMtc29ydGVkIHtcbiAgICAgICAgJGluZGV4OiBpbmRleCgkbWFwLXZhbHVlcywgJHZhbHVlKTtcbiAgICAgICAgJGtleTogbnRoKCRtYXAta2V5cywgJGluZGV4KTtcbiAgICAgICAgJG1hcC1zb3J0ZWQ6IG1hcC1tZXJnZSgkbWFwLXNvcnRlZCwgKCRrZXk6ICR2YWx1ZSkpO1xuXG4gICAgICAgIC8vIFVuc2V0IHRoZSB2YWx1ZSBpbiAkbWFwLXZhbHVlcyB0byBwcmV2ZW50IHRoZSBsb29wXG4gICAgICAgIC8vIGZyb20gZmluZGluZyB0aGUgc2FtZSBpbmRleCB0d2ljZVxuICAgICAgICAkbWFwLXZhbHVlczogc2V0LW50aCgkbWFwLXZhbHVlcywgJGluZGV4LCAwKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRtYXAtc29ydGVkO1xufVxuXG4vLy8gQWRkIGEgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIEBpbmNsdWRlIG1xLWFkZC1icmVha3BvaW50KHR2c2NyZWVuLCAxOTIwcHgpO1xuLy8vICBAaW5jbHVkZSBtcSh0dnNjcmVlbikge31cbkBtaXhpbiBtcS1hZGQtYnJlYWtwb2ludCgkbmFtZSwgJHdpZHRoKSB7XG4gICAgJG5ldy1icmVha3BvaW50OiAoJG5hbWU6ICR3aWR0aCk7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJG1xLWJyZWFrcG9pbnRzLCAkbmV3LWJyZWFrcG9pbnQpICFnbG9iYWw7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1xLWJyZWFrcG9pbnRzKSAhZ2xvYmFsO1xufVxuXG4vLy8gU2hvdyB0aGUgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcCByaWdodCBjb3JuZXIgb2YgdGhlIHZpZXdwb3J0XG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hvdy1icmVha3BvaW50cyBbJG1xLXNob3ctYnJlYWtwb2ludHNdIC0gTGlzdCBvZiBicmVha3BvaW50cyB0byBzaG93IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy8gQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJG1xLWJyZWFrcG9pbnRzXSAtIEJyZWFrcG9pbnQgbmFtZXMgYW5kIHNpemVzXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc2hvdy1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGdsb2JhbCBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xuLy8vXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgY3VzdG9tIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHMoKEwsIFhMKSwgKFM6IDMwMHB4LCBMOiA4MDBweCwgWEw6IDEyMDBweCkpO1xuQG1peGluIG1xLXNob3ctYnJlYWtwb2ludHMoJHNob3ctYnJlYWtwb2ludHM6ICRtcS1zaG93LWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIGJvZHk6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZDRjhFMztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgY29sb3I6ICNDMDk4NTM7XG4gICAgICAgIGZvbnQ6IHNtYWxsLWNhcHRpb247XG4gICAgICAgIHBhZGRpbmc6IDNweCA2cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHotaW5kZXg6IDEwMDtcblxuICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkIGJlIHNob3duXG4gICAgICAgIEBlYWNoICRzaG93LWJyZWFrcG9pbnQgaW4gJHNob3ctYnJlYWtwb2ludHMge1xuICAgICAgICAgICAgJHdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIiN7JHNob3ctYnJlYWtwb2ludH0g4omlICN7JHdpZHRofSAoI3ttcS1weDJlbSgkd2lkdGgpfSlcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGlmIGxlbmd0aCgkbXEtc2hvdy1icmVha3BvaW50cykgPiAwIHtcbiAgICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xufVxuIiwiQG1peGluIHUtaW1hZ2UtYXV0b3dpZHRoIHtcbiAgbWF4LXdpZHRoOjEwMCU7IFxuICBkaXNwbGF5OmJsb2NrOyBcbiAgaGVpZ2h0OmF1dG87IFxufSIsIkBtaXhpbiB1LXJlbW92ZS1idXR0b24tc3R5bGluZyB7XG4gIGJvcmRlcjpub25lOyBcbiAgYmFja2dyb3VuZDpub25lOyBcbiAgYm94LXNoYWRvdzpub25lOyBcbiAgcGFkZGluZzowOyBcbn0iLCIvLyAhRGV2IHJlbGF0ZWQgc3R5bGVzXG4uYy1lZGl0LWxpbmsge1xuICBwb3NpdGlvbjogZml4ZWQ7IFxuICB0b3A6IDFlbTsgXG4gIGxlZnQ6IDFlbTsgXG4gIG9wYWNpdHk6IDA7IFxuICAmOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxOyBcbiAgfVxufVxuIl19 */
