/*
Theme Name: buntpress
Theme URI: http://buntport.com
Author: OddBird
Author URI: http://oddbird.com/
Description: Custom theme for Buntport based on wd_s' version
of Automattic's _s
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: buntpress
Tags: custom
*/
html {
  -ms-overflow-style: -ms-autohiding-scrollbar;
  -webkit-text-size-adjust: 100%;
      -ms-text-size-adjust: 100%;
          text-size-adjust: 100%;
}

main {
  display: block;
}

details {
  display: block;
}

pre {
  overflow: auto;
}

progress {
  display: inline-block;
}

summary {
  display: block;
}

template {
  display: none;
}

*,
::before,
::after {
  border-style: solid;
  border-width: 0;
  box-sizing: border-box;
}

* {
  font-size: inherit;
  line-height: inherit;
  margin: 0;
  padding: 0;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

audio :not([controls]) {
  display: none;
}

[aria-busy='true'] {
  cursor: progress;
}

[aria-controls] {
  cursor: pointer;
}

[aria-disabled] {
  cursor: default;
}

[hidden] {
  display: none;
}

button {
  overflow: visible;
}

input {
  border-radius: 0;
  line-height: normal;
}

button,
[type='button'],
[type='reset'],
[type='submit'] {
  -webkit-appearance: button;
     -moz-appearance: button;
          appearance: button;
  cursor: pointer;
}

button::-moz-focus-inner,
[type='button']::-moz-focus-inner,
[type='reset']::-moz-focus-inner,
[type='submit']::-moz-focus-inner {
  border: 0 none !important;
  padding: 0 !important;
}

[type='checkbox'],
[type='radio'] {
  box-sizing: border-box;
  padding: 0;
}

[type='number'] {
  width: auto;
}

[type='search'] {
  -webkit-appearance: textfield;
     -moz-appearance: textfield;
          appearance: textfield;
}

button,
input,
select,
textarea {
  background-color: transparent;
  color: inherit;
  font-family: inherit;
  font-style: inherit;
  font-weight: inherit;
}

textarea {
  overflow: auto;
  resize: vertical;
}

img {
  border: 0;
}

svg:not(:root) {
  overflow: hidden;
}

audio,
canvas,
iframe,
img,
svg,
video {
  max-width: 100%;
  vertical-align: middle;
}

a {
  background-color: transparent;
}

a:active, a:hover {
  outline: 0;
}

abbr[title] {
  border-bottom: 1px dotted;
}

b,
strong {
  font-weight: bold;
}

code,
kbd,
pre,
samp {
  font-family: monospace;
  font-size: inherit;
}

dfn {
  font-style: italic;
}

nav ol,
nav ul {
  list-style: none;
}

small {
  font-size: 0.75em;
}

sub,
sup {
  font-size: 0.75em;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

:root {
  background-color: #fff;
  color: #23090f;
  overflow-x: hidden;
  overflow-y: auto;
}

body {
  overflow-x: hidden;
  overflow-y: auto;
}

@font-face {
  font-family: "amatic";
  font-style: normal;
  font-weight: bold;
  src: url("assets/fonts/amatic-bold-webfont.woff2") format("woff2"), url("assets/fonts/amatic-bold-webfont.woff") format("woff"), url("assets/fonts/amatic-bold-webfont.ttf") format("truetype");
}

html {
  font-family: azo-sans-web, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 125%;
  font-size: calc(1em + 0.3vw);
  line-height: 1.5;
}

h1,
h2,
h3,
h4 {
  clear: both;
  display: block;
}

h1,
h2 {
  font-weight: normal;
}

h1 {
  font-size: calc(1rem + 2vw);
}

h2 {
  font-size: calc(1rem + 1vw);
}

h3 {
  font-size: calc(1rem + 0.5vw);
}

a:link, a:visited {
  color: #d03257;
  text-decoration: none;
}

a:focus, a:hover, a:active {
  color: #a22b46;
  text-decoration: underline;
}

p,
ul,
ol,
li,
blockquote {
  margin: 0.75rem 0;
}

ul,
ol,
blockquote {
  padding: 0 0.75rem;
}

img {
  max-width: 100%;
}

.site-messages {
  background-color: #f9e1e7;
  padding: 30px;
  position: relative;
  text-align: center;
}

.site-messages::after {
  content: " ";
  bottom: auto;
  left: 0;
  position: absolute;
  right: 0;
  top: 100%;
  background-image: linear-gradient(to bottom right, #f9e1e7 49.9%, #fff 50%);
  height: 30px;
}

.screen-reader-text {
  clip: rect(1px, 1px, 1px, 1px);
  -webkit-clip-path: inset(1px 1px 1px 1px);
          clip-path: inset(1px 1px 1px 1px);
  height: 1px;
  overflow: hidden;
  pointer-events: none;
  position: absolute;
  width: 1px;
}

[data-icon] {
  fill: currentColor;
  height: 1em;
  width: 1em;
}

[data-size='face'] {
  float: left;
  height: 6rem;
  margin-right: 0.5rem;
  width: 6rem;
}

input[type="text"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="tel"],
input[type="range"],
input[type="date"],
input[type="month"],
input[type="week"],
input[type="time"],
input[type="datetime"],
input[type="datetime-local"],
input[type="color"],
textarea {
  border: 1px solid;
  display: block;
  padding: 0.25rem 0.5rem;
  width: 100%;
}

textarea {
  min-height: 8rem;
}

button, button:link, button:visited,
.btn,
.btn:link,
.btn:visited,
.donate,
.donate:link,
.donate:visited,
.woocommerce #respond input#submit.alt,
.woocommerce #respond input#submit.alt:link,
.woocommerce #respond input#submit.alt:visited,
.woocommerce a.button.alt,
.woocommerce a.button.alt:link,
.woocommerce a.button.alt:visited,
.woocommerce button.button.alt,
.woocommerce button.button.alt:link,
.woocommerce button.button.alt:visited,
.woocommerce input.button.alt,
.woocommerce input.button.alt:link,
.woocommerce input.button.alt:visited {
  background-color: #d03257;
  color: #fff;
  border-radius: 6px;
  display: inline-block;
  font: inherit;
  font-weight: inherit;
  padding: 7.5px 30px;
  text-decoration: none;
}

button:focus, button:hover, button:active,
.btn:focus,
.btn:hover,
.btn:active,
.donate:focus,
.donate:hover,
.donate:active,
.woocommerce #respond input#submit.alt:focus,
.woocommerce #respond input#submit.alt:hover,
.woocommerce #respond input#submit.alt:active,
.woocommerce a.button.alt:focus,
.woocommerce a.button.alt:hover,
.woocommerce a.button.alt:active,
.woocommerce button.button.alt:focus,
.woocommerce button.button.alt:hover,
.woocommerce button.button.alt:active,
.woocommerce input.button.alt:focus,
.woocommerce input.button.alt:hover,
.woocommerce input.button.alt:active {
  background-color: #a22b46;
}

.donate {
  font-size: 30px;
  display: block;
  margin: 30px 0;
  padding: 30px;
  width: 100%;
}

.tribe-events-page-title {
  text-align: left !important;
}

[data-feature-section] {
  margin: 0 -30px;
  padding: 30px 30px 0;
}

[data-feature-section]:after {
  clear: both;
  content: ' ';
  display: block;
}

[data-feature-section] + [data-feature-section] {
  border-top: 2px dashed #f5ced7;
  padding-top: 60px;
}

.category-title {
  font-family: amatic, azo-sans-web, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 45px;
  font-weight: bold;
  margin: -30px 0 30px;
}

[data-feature] {
  margin-bottom: 60px;
}

[data-feature]:after {
  clear: both;
  content: ' ';
  display: block;
}

[data-feature-section='third-tuesdays'] {
  background-color: #fbf4ee;
}

[data-feature-section='all-ages'] {
  background-color: #f5fbee;
  border-bottom: 2px dashed #f5ced7;
}

[data-feature-image='large'] {
  margin: 0 -4vw;
  overflow: hidden;
}

[data-feature-image='large'] .wp-post-image {
  width: 100%;
  height: auto;
}

[data-feature-image='thumbnail'] {
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  padding-top: 56.25%;
}

[data-feature-image='thumbnail'] .wp-post-image {
  display: none;
}

.ticket-link:link, .ticket-link:visited {
  background-color: #d03257;
  color: #fff;
  height: 6em;
  width: 6em;
  -ms-flex-align: center;
      align-items: center;
  border: 1px solid;
  border-radius: 100%;
  float: right;
  font-weight: bold;
  margin: 0 1.5rem;
  position: relative;
}

[data-feature-image='large'] + .ticket-link:link, [data-feature-image='large'] + .ticket-link:visited {
  margin-top: -3em;
}

.ticket-link:focus, .ticket-link:hover, .ticket-link:active {
  background: #a22b46;
}

.ticket-link span {
  left: 50%;
  position: absolute;
  transform: translate3d(-50%, -50%, 0);
  top: 50%;
}

.show-dates {
  font-weight: bold;
}

.alignleft,
.alignright,
.aligncenter {
  margin-bottom: 30px;
}

.alignleft {
  display: inline;
  float: left;
  margin-right: 30px;
}

.alignright {
  display: inline;
  float: right;
  margin-left: 30px;
}

.aligncenter {
  clear: both;
  display: block;
  margin-left: auto;
  margin-right: auto;
}

[data-region] {
  margin: 0 auto;
  max-width: 50rem;
  padding: 15px 30px;
  width: 100%;
}

[data-region='main'] {
  padding: 0 30px 90px;
}

[data-region='banner'] {
  border-bottom: 2px dashed #f5ced7;
  margin: -30px auto 0;
  position: relative;
  z-index: 1;
}

.brand {
  font-family: amatic, azo-sans-web, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: calc(2.5rem + 2vw);
  line-height: 1;
  margin: 0;
  text-align: center;
  text-transform: uppercase;
}

.brand .buntport {
  font-weight: bold;
}

[rel='home']:link, [rel='home']:visited {
  color: #23090f;
}

[rel='home']:focus, [rel='home']:hover, [rel='home']:active {
  color: #d03257;
  text-decoration: none;
}

.nav {
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;
}

.menu {
  margin: 30px 0 0;
  padding: 0;
  text-align: center;
}

.menu-item {
  display: inline-block;
  margin: 0;
  padding: 2px 15px;
}

.menu-item [href]:link, .menu-item [href]:visited {
  color: #23090f;
  border-bottom: 2px solid transparent;
}

.menu-item [href]:focus, .menu-item [href]:hover, .menu-item [href]:active {
  color: #d03257;
  text-decoration: none;
}

.current-menu-item [href]:link, .current-menu-item [href]:visited {
  color: inherit;
  border-bottom-color: inherit;
}

.footer {
  background-color: #591826;
  color: #fff;
  clear: both;
  padding: 60px 0;
}

.footer [href]:link, .footer [href]:visited {
  color: inherit;
  text-decoration: underline;
}

.footer .btn, .footer .btn:link, .footer .btn:visited {
  background-color: #fff;
  color: #a22b46;
}

[data-region='footer']:after {
  clear: both;
  content: ' ';
  display: block;
}

.copyright,
.email-signup {
  font-size: 14.75576px;
  margin-bottom: 30px;
}

.email-header {
  font-size: 20px;
  margin: 0;
}

.email-intro {
  margin: 0;
}

.form-actions {
  margin: 7.5px 0;
  text-align: right;
}

.tribe-events-widget-link,
.woocommerce .product-thumbnail {
  display: none;
}

@media (min-width: 30rem) {
  .site-messages {
    font-size: 30px;
  }
  [data-feature='thumbnail'] {
    display: -ms-flexbox;
    display: flex;
  }
  [data-feature='thumbnail'] .ticket-link {
    -ms-flex: 0 0 auto;
    flex: 0 0 auto;
    float: none;
    -ms-flex-order: 2;
    order: 2;
  }
  [data-feature='thumbnail'] .show-details {
    -ms-flex: 1 1 auto;
    flex: 1 1 auto;
    -ms-flex-order: 1;
    order: 1;
  }
  [data-feature-image='thumbnail'] {
    background-position: 100vw;
    -ms-flex: 0 0 auto;
    flex: 0 0 auto;
    margin-right: 1.5rem;
    -ms-flex-order: 0;
    order: 0;
    padding: 0;
  }
  [data-feature-image='thumbnail'] .wp-post-image {
    display: block;
  }
  [data-region='banner'] {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
    align-items: flex-end;
  }
  .brand {
    -ms-flex: 0 0 auto;
    flex: 0 0 auto;
    padding-right: 30px;
  }
  .brand span {
    display: block;
  }
  .brand .theater {
    font-size: 1.24em;
  }
  .menu {
    text-align: right;
  }
  .copyright,
  .email-signup {
    float: left;
    width: 45%;
  }
  .email-signup {
    float: right;
  }
}

@media (max-width: 30rem) {
  .ticket-link:link, .ticket-link:visited {
    margin-top: -3em;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYWNjb3V0cmVtZW50LWluaXQvc2Fzcy9fcm9vdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FjY291dHJlbWVudC1pbml0L3Nhc3MvX2ExMXkuc2NzcyIsInN0eWxlLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hY2NvdXRyZW1lbnQtaW5pdC9zYXNzL19mb3Jtcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FjY291dHJlbWVudC1pbml0L3Nhc3MvX21lZGlhLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYWNjb3V0cmVtZW50LWluaXQvc2Fzcy9fdHlwb2dyYXBoeS5zY3NzIiwiaW5pdGlhbC9fcm9vdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FjY291dHJlbWVudC9zYXNzL3BsdWdpbi9jb2xvci9fY29udHJhc3Quc2NzcyIsImNvbmZpZy9fY29sb3Iuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hY2NvdXRyZW1lbnQvc2Fzcy9wbHVnaW4vdHlwZS9faGVscGVycy5zY3NzIiwiaW5pdGlhbC9fdHlwZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FjY291dHJlbWVudC9zYXNzL3BsdWdpbi90eXBlL19mb250cy5zY3NzIiwiY29uZmlnL19mb250cy5zY3NzIiwiY29uZmlnL19zY2FsZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FjY291dHJlbWVudC9zYXNzL3BsdWdpbi9jb2xvci9fdXRpbHMuc2NzcyIsImluaXRpYWwvX3NpdGUtbWVzc2FnZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FjY291dHJlbWVudC9zYXNzL2NvcmUvX3BhcnNlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FjY291dHJlbWVudC9zYXNzL3BsdWdpbi90eXBlL19wc2V1ZG8tZWxlbWVudHMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hY2NvdXRyZW1lbnQtbGF5b3V0L3Nhc3MvX3N0cmV0Y2guc2NzcyIsInBhdHRlcm5zL19hMTF5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYWNjb3V0cmVtZW50L3Nhc3MvcGx1Z2luL3R5cGUvX2ExMXkuc2NzcyIsInBhdHRlcm5zL19pY29ucy5zY3NzIiwicGF0dGVybnMvX2Zvcm1zLnNjc3MiLCJwYXR0ZXJucy9fZXZlbnRzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYWNjb3V0cmVtZW50L3Nhc3MvcGx1Z2luL3NjYWxlL19zaXplLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYWNjb3V0cmVtZW50LWxheW91dC9zYXNzL19jbGVhcmZpeC5zY3NzIiwicGF0dGVybnMvX3R5cGUuc2NzcyIsImxheW91dC9fcGFnZS5zY3NzIiwibGF5b3V0L19iYW5uZXIuc2NzcyIsImxheW91dC9faW5mby5zY3NzIiwib3ZlcnJpZGVzL19ldmVudHMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hY2NvdXRyZW1lbnQtbGF5b3V0L3Nhc3MvX3F1ZXJpZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0VBWUU7QUNKRjtFQUNFLDZDQUE0QztFQUM1QywrQkFBc0I7TUFBdEIsMkJBQXNCO1VBQXRCLHVCQUFzQjtDQUN2Qjs7QUFPRDtFQUNFLGVBQWM7Q0FDZjs7QUFRRDtFQUNFLGVBQWM7Q0FDZjs7QUFLRDtFQUNFLGVBQWM7Q0FDZjs7QUFNRDtFQUNFLHNCQUFxQjtDQUN0Qjs7QUFPRDtFQUNFLGVBQWM7Q0FDZjs7QUFTRDtFQUNFLGNBQWE7Q0FDZDs7QUFLRDs7O0VBR0Usb0JBQW1CO0VBQ25CLGdCQUFlO0VBQ2YsdUJBQXNCO0NBQ3ZCOztBQUtEO0VBQ0UsbUJBQWtCO0VBQ2xCLHFCQUFvQjtFQUNwQixVQUFTO0VBQ1QsV0FBVTtDQUNYOztBQUtEO0VBQ0UsMEJBQXlCO0VBQ3pCLGtCQUFpQjtDQUNsQjs7QUN4RkQ7RUFFSSxjQUFhO0NBQ2Q7O0FDeURIO0VEbERFLGlCQUFnQjtDQUNqQjs7QUNxREQ7RUQv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dUw4QjtHWTdLakM7RUF4QkQ7SUFpQk0sZUFBYztHQUNmO0VBbEJMO0lBcUJNLGtCQUFpQjtHQUNsQjtFQXVCTDtJQU1JLGtCQUFpQjtHQUVwQjtFQ2hERDs7SUFNSSxZQUFXO0lBQ1gsV0FBVTtHQUViO0VBRUQ7SUFFSSxhQUFZO0dBRWY7QzNCMlFBOztBNkJuUUM7RVJ5Q0Y7SUFhTSxpQkFBZ0I7R0FNbkI7Q3JCc2FGIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5UaGVtZSBOYW1lOiBidW50cHJlc3NcblRoZW1lIFVSSTogaHR0cDovL2J1bnRwb3J0LmNvbVxuQXV0aG9yOiBPZGRCaXJkXG5BdXRob3IgVVJJOiBodHRwOi8vb2RkYmlyZC5jb20vXG5EZXNjcmlwdGlvbjogQ3VzdG9tIHRoZW1lIGZvciBCdW50cG9ydCBiYXNlZCBvbiB3ZF9zJyB2ZXJzaW9uXG5vZiBBdXRvbWF0dGljJ3MgX3NcblZlcnNpb246IDEuMC4wXG5MaWNlbnNlOiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MiBvciBsYXRlclxuTGljZW5zZSBVUkk6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWxcblRleHQgRG9tYWluOiBidW50cHJlc3NcblRhZ3M6IGN1c3RvbVxuKi9cblxuQGltcG9ydCAnY29uZmlnL21hbmlmZXN0JztcbkBpbXBvcnQgJ2luaXRpYWwvbWFuaWZlc3QnO1xuQGltcG9ydCAncGF0dGVybnMvbWFuaWZlc3QnO1xuQGltcG9ydCAnbGF5b3V0L21hbmlmZXN0JztcbkBpbXBvcnQgJ292ZXJyaWRlcy9pbmRleCc7XG4iLCIvLyBSb290IEluaXRcbi8vID09PT09PT09PVxuXG5cbi8vLyBQcmV2ZW50IGlPUyBhbmQgSUUgdGV4dCBzaXplIGFkanVzdCBhZnRlciBkZXZpY2Ugb3JpZW50YXRpb24gY2hhbmdlLlxuLy8vXG4vLy8gLSBPdmVyZmxvdy1zdHlsZTogRWRnZSAxMissIEludGVybmV0IEV4cGxvcmVyIDExLVxuLy8vIEBncm91cCBnZW5lcmFsXG5odG1sIHtcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gIHRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG59XG5cblxuLy8vIC0gQW5kcm9pZCA0LjMtXG4vLy8gLSBJbnRlcm5ldCBFeHBsb3JlciAxMS1cbi8vLyAtIFdpbmRvd3MgUGhvbmUgOC4xK1xuLy8vIEBncm91cCBnZW5lcmFsXG5tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cblxuLy8vIC0gRWRnZSAxMitcbi8vLyAtIEZpcmVmb3ggNDArXG4vLy8gLSBJbnRlcm5ldCBFeHBsb3JlciAxMS1cbi8vLyAtIFdpbmRvd3MgUGhvbmUgOC4xK1xuLy8vIEBncm91cCBnZW5lcmFsXG5kZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cblxuLy8vIEludGVybmV0IEV4cGxvcmVyIDExLVxuLy8vIEBncm91cCBnZW5lcmFsXG5wcmUge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuXG4vLy8gLSBJbnRlcm5ldCBFeHBsb3JlciAxMS1cbi8vLyAtIFdpbmRvd3MgUGhvbmUgOC4xK1xuLy8vIEBncm91cCBnZW5lcmFsXG5wcm9ncmVzcyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuXG4vLy8gLSBGaXJlZm94IDQwK1xuLy8vIC0gSW50ZXJuZXQgRXhwbG9yZXIgMTEtXG4vLy8gLSBXaW5kb3dzIFBob25lIDguMStcbi8vLyBAZ3JvdXAgZ2VuZXJhbFxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5cbi8vLyAtIEFuZHJvaWQgNC4zLVxuLy8vIC0gSW50ZXJuZXQgRXhwbG9yZXIgMTEtXG4vLy8gLSBpT1MgNy1cbi8vLyAtIFNhZmFyaSA3LVxuLy8vIC0gV2luZG93cyBQaG9uZSA4LjErXG4vLy8gQGdyb3VwIGdlbmVyYWxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuXG4vLy8gU3BlY2lmeSB0aGUgYm9yZGVyIHN0eWxlLCB3aWR0aCwgYW5kIGJveC1zaXppbmcgb2YgYWxsIGVsZW1lbnRzLlxuLy8vIEBncm91cCBnZW5lcmFsXG4qLFxuOjpiZWZvcmUsXG46OmFmdGVyIHtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAwO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5cbi8vLyBTcGVjaWZ5IHRoZSBjb3JlIHN0eWxlcyBvZiBhbGwgZWxlbWVudHMuXG4vLy8gQGdyb3VwIGdlbmVyYWxcbioge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cblxuLy8vIFNwZWNpZnkgdGhlIGJvcmRlciBzdHlsaW5nIG9mIHRhYmxlcy5cbi8vLyBAZ3JvdXAgZ2VuZXJhbFxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cbiIsIi8vIEFjY2Vzc2liaWxpdHkgSW5pdFxuLy8gPT09PT09PT09PT09PT09PT09XG5cblxuLy8vIENocm9tZSA0NC0sIGlPUyA4KywgU2FmYXJpIDkrXG4vLy8gQGdyb3VwIGExMXlcbmF1ZGlvIHtcbiAgOm5vdChbY29udHJvbHNdKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5cbi8vLyBTcGVjaWZ5IHRoZSBwcm9ncmVzcyBjdXJzb3Igb2YgdXBkYXRpbmcgZWxlbWVudHMuXG4vLy8gQGdyb3VwIGExMXlcblthcmlhLWJ1c3k9J3RydWUnXSB7XG4gIGN1cnNvcjogcHJvZ3Jlc3M7XG59XG5cblxuLy8vIFNwZWNpZnkgdGhlIHBvaW50ZXIgY3Vyc29yIG9mIHRyaWdnZXIgZWxlbWVudHMuXG4vLy8gQGdyb3VwIGExMXlcblthcmlhLWNvbnRyb2xzXSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuXG4vLy8gU3BlY2lmeSB0aGUgdW5zdHlsZWQgY3Vyc29yIG9mIGRpc2FibGVkLFxuLy8vIG5vdC1lZGl0YWJsZSwgb3Igb3RoZXJ3aXNlIGlub3BlcmFibGUgZWxlbWVudHMuXG4vLy8gQGdyb3VwIGExMXlcblthcmlhLWRpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuXG4vLy8gSW50ZXJuZXQgRXhwbG9yZXIgMTAtXG4vLy8gQGdyb3VwIGExMXlcbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsIi8qXG5UaGVtZSBOYW1lOiBidW50cHJlc3NcblRoZW1lIFVSSTogaHR0cDovL2J1bnRwb3J0LmNvbVxuQXV0aG9yOiBPZGRCaXJkXG5BdXRob3IgVVJJOiBodHRwOi8vb2RkYmlyZC5jb20vXG5EZXNjcmlwdGlvbjogQ3VzdG9tIHRoZW1lIGZvciBCdW50cG9ydCBiYXNlZCBvbiB3ZF9zJyB2ZXJzaW9uXG5vZiBBdXRvbWF0dGljJ3MgX3NcblZlcnNpb246IDEuMC4wXG5MaWNlbnNlOiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MiBvciBsYXRlclxuTGljZW5zZSBVUkk6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWxcblRleHQgRG9tYWluOiBidW50cHJlc3NcblRhZ3M6IGN1c3RvbVxuKi9cbmh0bWwge1xuICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjtcbiAgdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbn1cblxubWFpbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5kZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbnByZSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG5wcm9ncmVzcyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbiosXG46OmJlZm9yZSxcbjo6YWZ0ZXIge1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbioge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG5cbmF1ZGlvIDpub3QoW2NvbnRyb2xzXSkge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5bYXJpYS1idXN5PSd0cnVlJ10ge1xuICBjdXJzb3I6IHByb2dyZXNzO1xufVxuXG5bYXJpYS1jb250cm9sc10ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cblthcmlhLWRpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuaW5wdXQge1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG5idXR0b24sXG5bdHlwZT0nYnV0dG9uJ10sXG5bdHlwZT0ncmVzZXQnXSxcblt0eXBlPSdzdWJtaXQnXSB7XG4gIGFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0nYnV0dG9uJ106Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0ncmVzZXQnXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPSdzdWJtaXQnXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMCBub25lICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cblxuW3R5cGU9J2NoZWNrYm94J10sXG5bdHlwZT0ncmFkaW8nXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDA7XG59XG5cblt0eXBlPSdudW1iZXInXSB7XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5bdHlwZT0nc2VhcmNoJ10ge1xuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG59XG5cbmJ1dHRvbixcbmlucHV0LFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXN0eWxlOiBpbmhlcml0O1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbn1cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcbn1cblxuaW1nIHtcbiAgYm9yZGVyOiAwO1xufVxuXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbmF1ZGlvLFxuY2FudmFzLFxuaWZyYW1lLFxuaW1nLFxuc3ZnLFxudmlkZW8ge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuYTphY3RpdmUsIGE6aG92ZXIge1xuICBvdXRsaW5lOiAwO1xufVxuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG59XG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG59XG5cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxubmF2IG9sLFxubmF2IHVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuc21hbGwge1xuICBmb250LXNpemU6IDAuNzVlbTtcbn1cblxuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiAwLjc1ZW07XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuOnJvb3Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjb2xvcjogIzIzMDkwZjtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG5ib2R5IHtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiYW1hdGljXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHNyYzogdXJsKFwiYXNzZXRzL2ZvbnRzL2FtYXRpYy1ib2xkLXdlYmZvbnQud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksIHVybChcImFzc2V0cy9mb250cy9hbWF0aWMtYm9sZC13ZWJmb250LndvZmZcIikgZm9ybWF0KFwid29mZlwiKSwgdXJsKFwiYXNzZXRzL2ZvbnRzL2FtYXRpYy1ib2xkLXdlYmZvbnQudHRmXCIpIGZvcm1hdChcInRydWV0eXBlXCIpO1xufVxuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IGF6by1zYW5zLXdlYiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEyNSU7XG4gIGZvbnQtc2l6ZTogY2FsYygxZW0gKyAwLjN2dyk7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbmgxLFxuaDIsXG5oMyxcbmg0IHtcbiAgY2xlYXI6IGJvdGg7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5oMSxcbmgyIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cblxuaDEge1xuICBmb250LXNpemU6IGNhbGMoMXJlbSArIDJ2dyk7XG59XG5cbmgyIHtcbiAgZm9udC1zaXplOiBjYWxjKDFyZW0gKyAxdncpO1xufVxuXG5oMyB7XG4gIGZvbnQtc2l6ZTogY2FsYygxcmVtICsgMC41dncpO1xufVxuXG5hOmxpbmssIGE6dmlzaXRlZCB7XG4gIGNvbG9yOiAjZDgzYTVkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbmE6Zm9jdXMsIGE6aG92ZXIsIGE6YWN0aXZlIHtcbiAgY29sb3I6ICNhMjJiNDY7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG5wLFxudWwsXG5vbCxcbmxpLFxuYmxvY2txdW90ZSB7XG4gIG1hcmdpbjogMC43NXJlbSAwO1xufVxuXG51bCxcbm9sLFxuYmxvY2txdW90ZSB7XG4gIHBhZGRpbmc6IDAgMC43NXJlbTtcbn1cblxuaW1nIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4uc2l0ZS1tZXNzYWdlcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWUxZTc7XG4gIHBhZGRpbmc6IDMwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uc2l0ZS1tZXNzYWdlczo6YWZ0ZXIge1xuICBjb250ZW50OiBcIiBcIjtcbiAgYm90dG9tOiBhdXRvO1xuICBsZWZ0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwO1xuICB0b3A6IDEwMCU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20gcmlnaHQsICNmOWUxZTcgNDkuOSUsICNmZmYgNTAlKTtcbiAgaGVpZ2h0OiAzMHB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMzByZW0pIHtcbiAgLnNpdGUtbWVzc2FnZXMge1xuICAgIGZvbnQtc2l6ZTogMzBweDtcbiAgfVxufVxuXG4uc2NyZWVuLXJlYWRlci10ZXh0IHtcbiAgY2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO1xuICBjbGlwLXBhdGg6IGluc2V0KDFweCAxcHggMXB4IDFweCk7XG4gIGhlaWdodDogMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG5bZGF0YS1pY29uXSB7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgaGVpZ2h0OiAxZW07XG4gIHdpZHRoOiAxZW07XG59XG5cbltkYXRhLXNpemU9J2ZhY2UnXSB7XG4gIGZsb2F0OiBsZWZ0O1xuICBoZWlnaHQ6IDZyZW07XG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICB3aWR0aDogNnJlbTtcbn1cblxuaW5wdXRbdHlwZT1cInRleHRcIl0sXG5pbnB1dFt0eXBlPVwiZW1haWxcIl0sXG5pbnB1dFt0eXBlPVwidXJsXCJdLFxuaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSxcbmlucHV0W3R5cGU9XCJudW1iZXJcIl0sXG5pbnB1dFt0eXBlPVwidGVsXCJdLFxuaW5wdXRbdHlwZT1cInJhbmdlXCJdLFxuaW5wdXRbdHlwZT1cImRhdGVcIl0sXG5pbnB1dFt0eXBlPVwibW9udGhcIl0sXG5pbnB1dFt0eXBlPVwid2Vla1wiXSxcbmlucHV0W3R5cGU9XCJ0aW1lXCJdLFxuaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdLFxuaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdLFxuaW5wdXRbdHlwZT1cImNvbG9yXCJdLFxudGV4dGFyZWEge1xuICBib3JkZXI6IDFweCBzb2xpZDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICB3aWR0aDogMTAwJTtcbn1cblxudGV4dGFyZWEge1xuICBtaW4taGVpZ2h0OiA4cmVtO1xufVxuXG5idXR0b24sIGJ1dHRvbjpsaW5rLCBidXR0b246dmlzaXRlZCxcbi5idG4sXG4uYnRuOmxpbmssXG4uYnRuOnZpc2l0ZWQsXG4uZG9uYXRlLFxuLmRvbmF0ZTpsaW5rLFxuLmRvbmF0ZTp2aXNpdGVkLFxuLndvb2NvbW1lcmNlICNyZXNwb25kIGlucHV0I3N1Ym1pdC5hbHQsXG4ud29vY29tbWVyY2UgI3Jlc3BvbmQgaW5wdXQjc3VibWl0LmFsdDpsaW5rLFxuLndvb2NvbW1lcmNlICNyZXNwb25kIGlucHV0I3N1Ym1pdC5hbHQ6dmlzaXRlZCxcbi53b29jb21tZXJjZSBhLmJ1dHRvbi5hbHQsXG4ud29vY29tbWVyY2UgYS5idXR0b24uYWx0OmxpbmssXG4ud29vY29tbWVyY2UgYS5idXR0b24uYWx0OnZpc2l0ZWQsXG4ud29vY29tbWVyY2UgYnV0dG9uLmJ1dHRvbi5hbHQsXG4ud29vY29tbWVyY2UgYnV0dG9uLmJ1dHRvbi5hbHQ6bGluayxcbi53b29jb21tZXJjZSBidXR0b24uYnV0dG9uLmFsdDp2aXNpdGVkLFxuLndvb2NvbW1lcmNlIGlucHV0LmJ1dHRvbi5hbHQsXG4ud29vY29tbWVyY2UgaW5wdXQuYnV0dG9uLmFsdDpsaW5rLFxuLndvb2NvbW1lcmNlIGlucHV0LmJ1dHRvbi5hbHQ6dmlzaXRlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkODNhNWQ7XG4gIGNvbG9yOiAjZmZmO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gIHBhZGRpbmc6IDcuNXB4IDMwcHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuYnV0dG9uOmZvY3VzLCBidXR0b246aG92ZXIsIGJ1dHRvbjphY3RpdmUsXG4uYnRuOmZvY3VzLFxuLmJ0bjpob3Zlcixcbi5idG46YWN0aXZlLFxuLmRvbmF0ZTpmb2N1cyxcbi5kb25hdGU6aG92ZXIsXG4uZG9uYXRlOmFjdGl2ZSxcbi53b29jb21tZXJjZSAjcmVzcG9uZCBpbnB1dCNzdWJtaXQuYWx0OmZvY3VzLFxuLndvb2NvbW1lcmNlICNyZXNwb25kIGlucHV0I3N1Ym1pdC5hbHQ6aG92ZXIsXG4ud29vY29tbWVyY2UgI3Jlc3BvbmQgaW5wdXQjc3VibWl0LmFsdDphY3RpdmUsXG4ud29vY29tbWVyY2UgYS5idXR0b24uYWx0OmZvY3VzLFxuLndvb2NvbW1lcmNlIGEuYnV0dG9uLmFsdDpob3Zlcixcbi53b29jb21tZXJjZSBhLmJ1dHRvbi5hbHQ6YWN0aXZlLFxuLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b24uYWx0OmZvY3VzLFxuLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b24uYWx0OmhvdmVyLFxuLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b24uYWx0OmFjdGl2ZSxcbi53b29jb21tZXJjZSBpbnB1dC5idXR0b24uYWx0OmZvY3VzLFxuLndvb2NvbW1lcmNlIGlucHV0LmJ1dHRvbi5hbHQ6aG92ZXIsXG4ud29vY29tbWVyY2UgaW5wdXQuYnV0dG9uLmFsdDphY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTIyYjQ2O1xufVxuXG4uZG9uYXRlIHtcbiAgZm9udC1zaXplOiAzMHB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAzMHB4IDA7XG4gIHBhZGRpbmc6IDMwcHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udHJpYmUtZXZlbnRzLXBhZ2UtdGl0bGUge1xuICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG59XG5cbltkYXRhLWZlYXR1cmUtc2VjdGlvbl0ge1xuICBtYXJnaW46IDAgLTMwcHg7XG4gIHBhZGRpbmc6IDMwcHggMzBweCAwO1xufVxuXG5bZGF0YS1mZWF0dXJlLXNlY3Rpb25dOmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGNvbnRlbnQ6ICcgJztcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbltkYXRhLWZlYXR1cmUtc2VjdGlvbl0gKyBbZGF0YS1mZWF0dXJlLXNlY3Rpb25dIHtcbiAgYm9yZGVyLXRvcDogMnB4IGRhc2hlZCAjZjVjZWQ3O1xuICBwYWRkaW5nLXRvcDogNjBweDtcbn1cblxuLmNhdGVnb3J5LXRpdGxlIHtcbiAgZm9udC1mYW1pbHk6IGFtYXRpYywgYXpvLXNhbnMtd2ViLCBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogNDVweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbjogLTMwcHggMCAzMHB4O1xufVxuXG5bZGF0YS1mZWF0dXJlXSB7XG4gIG1hcmdpbi1ib3R0b206IDYwcHg7XG59XG5cbltkYXRhLWZlYXR1cmVdOmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGNvbnRlbnQ6ICcgJztcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAzMHJlbSkge1xuICBbZGF0YS1mZWF0dXJlPSd0aHVtYm5haWwnXSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuICBbZGF0YS1mZWF0dXJlPSd0aHVtYm5haWwnXSAudGlja2V0LWxpbmsge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGZsb2F0OiBub25lO1xuICAgIG9yZGVyOiAyO1xuICB9XG4gIFtkYXRhLWZlYXR1cmU9J3RodW1ibmFpbCddIC5zaG93LWRldGFpbHMge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG9yZGVyOiAxO1xuICB9XG59XG5cbltkYXRhLWZlYXR1cmUtc2VjdGlvbj0ndGhpcmQtdHVlc2RheXMnXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYmY0ZWU7XG59XG5cbltkYXRhLWZlYXR1cmUtc2VjdGlvbj0nYWxsLWFnZXMnXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWZiZWU7XG4gIGJvcmRlci1ib3R0b206IDJweCBkYXNoZWQgI2Y1Y2VkNztcbn1cblxuW2RhdGEtZmVhdHVyZS1pbWFnZT0nbGFyZ2UnXSB7XG4gIG1hcmdpbjogMCAtNHZ3O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5bZGF0YS1mZWF0dXJlLWltYWdlPSdsYXJnZSddIC53cC1wb3N0LWltYWdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbn1cblxuW2RhdGEtZmVhdHVyZS1pbWFnZT0ndGh1bWJuYWlsJ10ge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIHBhZGRpbmctdG9wOiA1Ni4yNSU7XG59XG5cbltkYXRhLWZlYXR1cmUtaW1hZ2U9J3RodW1ibmFpbCddIC53cC1wb3N0LWltYWdlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDMwcmVtKSB7XG4gIFtkYXRhLWZlYXR1cmUtaW1hZ2U9J3RodW1ibmFpbCddIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDB2dztcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcbiAgICBvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIFtkYXRhLWZlYXR1cmUtaW1hZ2U9J3RodW1ibmFpbCddIC53cC1wb3N0LWltYWdlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG4udGlja2V0LWxpbms6bGluaywgLnRpY2tldC1saW5rOnZpc2l0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDgzYTVkO1xuICBjb2xvcjogI2ZmZjtcbiAgaGVpZ2h0OiA2ZW07XG4gIHdpZHRoOiA2ZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICBmbG9hdDogcmlnaHQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXJnaW46IDAgMS41cmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAzMHJlbSkge1xuICAudGlja2V0LWxpbms6bGluaywgLnRpY2tldC1saW5rOnZpc2l0ZWQge1xuICAgIG1hcmdpbi10b3A6IC0zZW07XG4gIH1cbn1cblxuW2RhdGEtZmVhdHVyZS1pbWFnZT0nbGFyZ2UnXSArIC50aWNrZXQtbGluazpsaW5rLCBbZGF0YS1mZWF0dXJlLWltYWdlPSdsYXJnZSddICsgLnRpY2tldC1saW5rOnZpc2l0ZWQge1xuICBtYXJnaW4tdG9wOiAtM2VtO1xufVxuXG4udGlja2V0LWxpbms6Zm9jdXMsIC50aWNrZXQtbGluazpob3ZlciwgLnRpY2tldC1saW5rOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICNhMjJiNDY7XG59XG5cbi50aWNrZXQtbGluayBzcGFuIHtcbiAgbGVmdDogNTAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XG4gIHRvcDogNTAlO1xufVxuXG4uc2hvdy1kYXRlcyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uYWxpZ25sZWZ0LFxuLmFsaWducmlnaHQsXG4uYWxpZ25jZW50ZXIge1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xufVxuXG4uYWxpZ25sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiAzMHB4O1xufVxuXG4uYWxpZ25yaWdodCB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBtYXJnaW4tbGVmdDogMzBweDtcbn1cblxuLmFsaWduY2VudGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG5bZGF0YS1yZWdpb25dIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG1heC13aWR0aDogNTByZW07XG4gIHBhZGRpbmc6IDE1cHggMzBweDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbltkYXRhLXJlZ2lvbj0nbWFpbiddIHtcbiAgcGFkZGluZzogMCAzMHB4IDkwcHg7XG59XG5cbltkYXRhLXJlZ2lvbj0nYmFubmVyJ10ge1xuICBib3JkZXItYm90dG9tOiAycHggZGFzaGVkICNmNWNlZDc7XG4gIG1hcmdpbjogLTMwcHggYXV0byAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAzMHJlbSkge1xuICBbZGF0YS1yZWdpb249J2Jhbm5lciddIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgfVxufVxuXG4uYnJhbmQge1xuICBmb250LWZhbWlseTogYW1hdGljLCBhem8tc2Fucy13ZWIsIFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiBjYWxjKDIuNXJlbSArIDJ2dyk7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBtYXJnaW46IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmJyYW5kIC5idW50cG9ydCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMzByZW0pIHtcbiAgLmJyYW5kIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4O1xuICB9XG4gIC5icmFuZCBzcGFuIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICAuYnJhbmQgLnRoZWF0ZXIge1xuICAgIGZvbnQtc2l6ZTogMS4yNGVtO1xuICB9XG59XG5cbltyZWw9J2hvbWUnXTpsaW5rLCBbcmVsPSdob21lJ106dmlzaXRlZCB7XG4gIGNvbG9yOiAjMjMwOTBmO1xufVxuXG5bcmVsPSdob21lJ106Zm9jdXMsIFtyZWw9J2hvbWUnXTpob3ZlciwgW3JlbD0naG9tZSddOmFjdGl2ZSB7XG4gIGNvbG9yOiAjZDgzYTVkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5uYXYge1xuICBmbGV4OiAxIDEgYXV0bztcbn1cblxuLm1lbnUge1xuICBtYXJnaW46IDMwcHggMCAwO1xuICBwYWRkaW5nOiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAzMHJlbSkge1xuICAubWVudSB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIH1cbn1cblxuLm1lbnUtaXRlbSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAycHggMTVweDtcbn1cblxuLm1lbnUtaXRlbSBbaHJlZl06bGluaywgLm1lbnUtaXRlbSBbaHJlZl06dmlzaXRlZCB7XG4gIGNvbG9yOiAjMjMwOTBmO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi5tZW51LWl0ZW0gW2hyZWZdOmZvY3VzLCAubWVudS1pdGVtIFtocmVmXTpob3ZlciwgLm1lbnUtaXRlbSBbaHJlZl06YWN0aXZlIHtcbiAgY29sb3I6ICNkODNhNWQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmN1cnJlbnQtbWVudS1pdGVtIFtocmVmXTpsaW5rLCAuY3VycmVudC1tZW51LWl0ZW0gW2hyZWZdOnZpc2l0ZWQge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogaW5oZXJpdDtcbn1cblxuLmZvb3RlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1OTE4MjY7XG4gIGNvbG9yOiAjZmZmO1xuICBjbGVhcjogYm90aDtcbiAgcGFkZGluZzogNjBweCAwO1xufVxuXG4uZm9vdGVyIFtocmVmXTpsaW5rLCAuZm9vdGVyIFtocmVmXTp2aXNpdGVkIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uZm9vdGVyIC5idG4sIC5mb290ZXIgLmJ0bjpsaW5rLCAuZm9vdGVyIC5idG46dmlzaXRlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjYTIyYjQ2O1xufVxuXG5bZGF0YS1yZWdpb249J2Zvb3RlciddOmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGNvbnRlbnQ6ICcgJztcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jb3B5cmlnaHQsXG4uZW1haWwtc2lnbnVwIHtcbiAgZm9udC1zaXplOiAxNC43NTU3NnB4O1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMzByZW0pIHtcbiAgLmNvcHlyaWdodCxcbiAgLmVtYWlsLXNpZ251cCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgd2lkdGg6IDQ1JTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMzByZW0pIHtcbiAgLmVtYWlsLXNpZ251cCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICB9XG59XG5cbi5lbWFpbC1oZWFkZXIge1xuICBmb250LXNpemU6IDIwcHg7XG4gIG1hcmdpbjogMDtcbn1cblxuLmVtYWlsLWludHJvIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4uZm9ybS1hY3Rpb25zIHtcbiAgbWFyZ2luOiA3LjVweCAwO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLnRyaWJlLWV2ZW50cy13aWRnZXQtbGluayxcbi53b29jb21tZXJjZSAucHJvZHVjdC10aHVtYm5haWwge1xuICBkaXNwbGF5OiBub25lO1xufVxuIiwiLy8gRm9ybXMgSW5pdFxuLy8gPT09PT09PT09PVxuXG5cbi8vLyBJbnRlcm5ldCBFeHBsb3JlciAxMS1cbi8vLyBAZ3JvdXAgZm9ybXNcbmJ1dHRvbiB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5cbi8vLyAtIEJvcmRlci1yYWRpdXM6IGlPUyA4KyB8XG4vLy8gLSBMaW5lLWhlaWdodDogRmlyZWZveCA0K1xuLy8vIEBncm91cCBmb3Jtc1xuaW5wdXQge1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG5cbi8vLyBBcHBlYXJhbmNlLCBjdXJzb3JzLCBhbmQgaW5uZXItZm9jdXNcbi8vLyBmb3IgYnV0dG9ucyBhbmQgYnV0dG9uLWxpa2UgaW5wdXRzLlxuLy8vXG4vLy8gLSBBcHBlYXJhbmNlOiBpT1MgOCtcbi8vLyBAZ3JvdXAgZm9ybXNcbmJ1dHRvbixcblt0eXBlPSdidXR0b24nXSxcblt0eXBlPSdyZXNldCddLFxuW3R5cGU9J3N1Ym1pdCddIHtcbiAgYXBwZWFyYW5jZTogYnV0dG9uO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeGVzLCBuby1pbXBvcnRhbnRcbiAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgYm9yZGVyOiAwIG5vbmUgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuXG4vLy8gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS8xMC5cbi8vLyBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLlxuLy8vIEBncm91cCBmb3Jtc1xuW3R5cGU9J2NoZWNrYm94J10sXG5bdHlwZT0ncmFkaW8nXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDA7XG59XG5cblxuLy8vIEZpcmVmb3ggMzYrXG4vLy8gQGdyb3VwIGZvcm1zXG5bdHlwZT0nbnVtYmVyJ10ge1xuICB3aWR0aDogYXV0bztcbn1cblxuXG4vLy8gQ2hyb21lIDQ1KywgU2FmYXJpIDkrXG4vLy8gQGdyb3VwIGZvcm1zXG5bdHlwZT0nc2VhcmNoJ10ge1xuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG59XG5cblxuLy8vIFNwZWNpZnkgdGhlIGJhY2tncm91bmQtY29sb3IsXG4vLy8gYW5kIHRoZSBpbmhlcml0ZWQgY29sb3IvZm9udCBvZiBmb3JtIGVsZW1lbnRzLlxuLy8vIEBncm91cCBmb3Jtc1xuYnV0dG9uLFxuaW5wdXQsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogaW5oZXJpdDtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGZvbnQtc3R5bGU6IGluaGVyaXQ7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuXG5cbi8vLyBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLFxuLy8vIGFuZCBzcGVjaWZ5IHRoZSByZXNpemFiaWxpdHkgb2YgdGV4dGFyZWFzLlxuLy8vIEBncm91cCBmb3Jtc1xudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcbn1cbiIsIi8vIE1lZGlhIEluaXRcbi8vID09PT09PT09PT1cblxuXG4vLy8gUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAuXG4vLy8gQGdyb3VwIG1lZGlhXG5pbWcge1xuICBib3JkZXI6IDA7XG59XG5cblxuLy8vIEludGVybmV0IEV4cGxvcmVyIDExLVxuLy8vIEBncm91cCBtZWRpYVxuc3ZnIHtcbiAgJjpub3QoOnJvb3QpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG5cblxuLy8vIFNwZWNpZnkgdGhlIGFsaWdubWVudCBvZiBtZWRpYSBlbGVtZW50cy5cbi8vLyBAZ3JvdXAgbWVkaWFcbmF1ZGlvLFxuY2FudmFzLFxuaWZyYW1lLFxuaW1nLFxuc3ZnLFxudmlkZW8ge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4iLCIvLyBUeXBvZ3JhcGh5IEluaXRcbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vLyBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBjb2xvciBmcm9tIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbi8vLyBJbXByb3ZlIHJlYWRhYmlsaXR5IG9mIGZvY3VzZWQgZWxlbWVudHNcbi8vLyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW4gYWN0aXZlL2hvdmVyIHN0YXRlLlxuLy8vIEBncm91cCB0eXBlXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgJjphY3RpdmUsXG4gICY6aG92ZXIge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuXG4vLy8gQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxuLy8vIEBncm91cCB0eXBlXG5hYmJyIHtcbiAgJlt0aXRsZV0ge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG4gIH1cbn1cblxuXG4vLy8gQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuLy8vIEBncm91cCB0eXBlXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cblxuLy8vIFNwZWNpZnkgdGhlIGZvbnQgZmFtaWx5IG9mIGNvZGUgZWxlbWVudHMuXG4vLy8gQGdyb3VwIHR5cGVcbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG5cbi8vLyBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4vLy8gQGdyb3VwIHR5cGVcbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuXG4vLy8gUmVtb3ZlIGxpc3Qgc3R5bGUgb2YgbmF2IGxpc3RzLlxuLy8vIEBncm91cCB0eXBlXG5uYXYge1xuICBvbCxcbiAgdWwge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIH1cbn1cblxuXG4vLy8gQWxsIGJyb3dzZXJz4oCmXG4vLy8gQGdyb3VwIHR5cGVcbnNtYWxsIHtcbiAgZm9udC1zaXplOiAwLjc1ZW07XG59XG5cblxuLy8vIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cbi8vLyBAZ3JvdXAgdHlwZVxuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiAwLjc1ZW07XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuXG4vLy8gTW92ZSBzdXBlci1zY3JpcHQgdXAuXG4vLy8gQGdyb3VwIHR5cGVcbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5cbi8vLyBNb3ZlIHN1Yi1zY3JpcHQgZG93bi5cbi8vLyBAZ3JvdXAgdHlwZVxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuIiwiLy8gUm9vdCBJbml0aWFsaXphdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG5cblxuLy8gUm9vdCBTdHlsZXNcbi8vIC0tLS0tLS0tLS0tXG5cbjpyb290IHtcbiAgQGluY2x1ZGUgY29udHJhc3RlZCgnYmFja2dyb3VuZCcpO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbmJvZHkge1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG4iLCIvLy8gIyBDb250cmFzdCAmIEFjY2Vzc2liaWxpdHlcbi8vLyBAZ3JvdXAgY29sb3ItY29udHJhc3RcblxuXG4vLyBXQ0FHIENvbnRyYXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLy8gVGhlc2UgbmFtZWQgY29udHJhc3QtcmF0aW9zIGFyZSBkZWZpbmVkIGJ5IHRoZSBbV0NBR11bV0NBR10uXG4vLy9cbi8vLyBbV0NBR106IGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3Zpc3VhbC1hdWRpby1jb250cmFzdC1jb250cmFzdFxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4kV0NBRy1DT05UUkFTVDogKFxuICAnQUEtbGFyZ2UnOiAzLFxuICAnQUEnOiA0LjUsXG4gICdBQUEnOiA3LFxuKTtcblxuXG4vLyBDb250cmFzdFxuLy8gLS0tLS0tLS1cbi8vLyBGb3IgYW55IGNvbG9yLCBzZWxlY3QgdGhlIGJlc3QgY29udHJhc3QgYW1vbmcgYSBzZXQgb2Ygb3B0aW9ucy5cbi8vLyBGb3IgYmVzdCByZXN1bHRzLCBwYXNzIGluIGEgY29tYmluYXRpb24gb2YgbGlnaHQgYW5kIGRhcmsgY29sb3JzXG4vLy8gdG8gY29udHJhc3QgYWdhaW5zdCDigJPCoFxuLy8vIG9yIGRlZmluZSBkZWZhdWx0IGBjb250cmFzdC1saWdodGAgYW5kIGBjb250cmFzdC1kYXJrYCB2YWx1ZXNcbi8vLyAod2l0aCBvciB3aXRob3V0IGEgcHJpdmF0ZSBgX2AgcHJlZml4KVxuLy8vIGluIHlvdXIgZ2xvYmFsIGAkY29sb3JzYCBtYXAuXG4vLy9cbi8vLyBAZ3JvdXAgY29sb3ItY29udHJhc3Rcbi8vLyBAZXhhbXBsZSBzY3NzIC0gbWF4IGNvbnRyYXN0XG4vLy8gICAkY29sb3JzOiAoXG4vLy8gICAgICdiYWNrZ3JvdW5kJzogYmx1ZSxcbi8vLyAgICAgJ2xpZ2h0JzogI2VlZSxcbi8vLyAgICAgJ2RhcmsnOiAjMTExLFxuLy8vICAgKTtcbi8vLyAgIGh0bWwge1xuLy8vICAgICBjb2xvcjogY29udHJhc3QoXG4vLy8gICAgICAgJ2JhY2tncm91bmQnLFxuLy8vICAgICAgICdsaWdodCcsICdkYXJrJywgYmxhY2ssIHdoaXRlXG4vLy8gICAgICk7XG4vLy8gICB9XG4vLy8gQGV4YW1wbGUgc2NzcyAtIG1pbiBjb250cmFzdFxuLy8vICAgJGNvbG9yczogKFxuLy8vICAgICAnYmFja2dyb3VuZCc6IGJsdWUsXG4vLy8gICAgICdsaWdodCc6ICNlZWUsXG4vLy8gICAgICdkYXJrJzogIzExMSxcbi8vLyAgICk7XG4vLy8gICBodG1sIHtcbi8vLyAgICAgY29sb3I6IGNvbnRyYXN0KFxuLy8vICAgICAgICdiYWNrZ3JvdW5kJyxcbi8vLyAgICAgICAnbGlnaHQnLCAnZGFyaycsIGJsYWNrLCB3aGl0ZSxcbi8vLyAgICAgICAnQUFBJ1xuLy8vICAgICApO1xuLy8vICAgfVxuLy8vXG4vLy8gQHBhcmFtIHtzdHJpbmcgfCBsaXN0fSAkY29sb3IgLVxuLy8vICAgVGhlIG5hbWUgb3IgdmFsdWUgb2YgYSBjb2xvci5cbi8vLyBAcGFyYW0ge2NvbG9ycyB8IG1pbi1jb250cmFzdH0gJG9wdGlvbnMuLi4gLVxuLy8vICAgTGlzdCBvZiBjb2xvcnMgdG8gY29udHJhc3QgYWdhaW5zdC5cbi8vLyAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjaG9vc2UgdGhlIGJlc3QgY29udHJhc3Rcbi8vLyAgIG9mIGFsbCB0aGUgb3B0aW9ucyBwcm92aWRlZCxcbi8vLyAgIG9yIHRoZSBgY29udHJhc3QtbGlnaHRgIGFuZCBgY29udHJhc3QtZGFya2AgZGVmYXVsdHNcbi8vLyAgIGRlZmluZWQgaW4geW91ciBjb2xvciBwYWxldHRlIG9yIHRoZSBmYWN0b3J5IHNldHRpbmdzLlxuLy8vXG4vLy8gICAtIEFueSAgYHsnQUEnIHwgJ0FBLWxhcmdlJyB8ICdBQUEnIHwgMC0yMSB9YCB2YWx1ZXNcbi8vLyAgICAgd2lsbCBiZSB0cmVhdGVkIGFzIGEgbWluaW11bSBjb2xvci1jb250cmFzdCByYXRpbyDigJNcbi8vLyAgICAgYW5kIHdpbGwgcmV0dXJuIHRoZSBtaW5pbXVtIGFjY2Vzc2libGUgb3B0aW9uLFxuLy8vICAgICByYXRoZXIgdGhhbiB0aGUgbWF4aW11bSBjb250cmFzdC5cbi8vLyBAcmV0dXJuIHtjb2xvcn0gLVxuLy8vICAgV2hpY2hldmVyIGNvbG9yLW9wdGlvbiBoYXMgdGhlIGhpZ2hlc3QgY29udHJhc3QtcmF0aW8gdG8gYCRjb2xvcmAsXG4vLy8gICBvciB0aGUgbWluaW11bSBuZWVkZWQgY29udHJhc3QgdG8gbWVldCBhIGdpdmVuIGFjY2Vzc2liaWxpdHkgcmF0aW8uXG5AZnVuY3Rpb24gY29udHJhc3QoXG4gICRjb2xvcixcbiAgJG9wdGlvbnMuLi5cbikge1xuICBAcmV0dXJuIF9hX2Jlc3QtY29udHJhc3QoJGNvbG9yLCAkb3B0aW9ucywgJ2NvbG9yJyk7XG59XG5AaW5jbHVkZSBfYV9yZWdpc3Rlci1mdW5jdGlvbignY29udHJhc3QnKTtcblxuXG4vLyBWYXItQ29udHJhc3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8vIEFuIGV4dGVuc2lvbiBvZiB0aGUgYGNvbnRyYXN0YCBmdW5jdGlvbixcbi8vLyBkZXNpZ25lZCB0byBvdXRwdXQgQ1NTIHZhcmlhYmxlc1xuLy8vIHJhdGhlciB0aGFuIHNpbXBsZSBjb2xvciB2YWx1ZXMuXG4vLy9cbi8vLyBAZ3JvdXAgY29sb3ItY29udHJhc3Rcbi8vLyBAc2luY2UgMi4xLjAgLVxuLy8vIC0gTkVXOiBQcm92aWRlcyBhY2Nlc3MgdG8gY29udHJhc3QgY29sb3JzIGFzIENTUy12YXJpYWJsZXMsIHdoZW4gZGVmaW5lZFxuLy8vIEBleGFtcGxlIHNjc3MgLSBtYXggY29udHJhc3QgLyBubyB2YXJpYWJsZSBuYW1lc1xuLy8vICAgJGNvbG9yczogKFxuLy8vICAgICAnYmFja2dyb3VuZCc6IGJsdWUsXG4vLy8gICAgICdsaWdodCc6ICNlZWUsXG4vLy8gICAgICdkYXJrJzogIzExMSxcbi8vLyAgICk7XG4vLy8gICBodG1sIHtcbi8vLyAgICAgY29sb3I6IHZhci1jb250cmFzdChcbi8vLyAgICAgICAnYmFja2dyb3VuZCcsXG4vLy8gICAgICAgJ2xpZ2h0JywgJ2RhcmsnLCBibGFjaywgd2hpdGVcbi8vLyAgICAgKTtcbi8vLyAgIH1cbi8vLyBAZXhhbXBsZSBzY3NzIC0gbWluIGNvbnRyYXN0IC8gdmFyaWFibGUgbmFtZXNcbi8vLyAgICRjb2xvcnM6IChcbi8vLyAgICAgJ2JhY2tncm91bmQnOiBibHVlLFxuLy8vICAgICAnbGlnaHQnOiAjZWVlLFxuLy8vICAgICAnZGFyayc6ICMxMTEsXG4vLy8gICApO1xuLy8vICAgaHRtbCB7XG4vLy8gICAgIGNvbG9yOiB2YXItY29udHJhc3QoXG4vLy8gICAgICAgJ2JhY2tncm91bmQnLFxuLy8vICAgICAgICdsaWdodCcsICdkYXJrJywgYmxhY2ssIHdoaXRlLFxuLy8vICAgICAgICdBQUEnXG4vLy8gICAgICk7XG4vLy8gICB9XG4vLy9cbi8vLyBAcGFyYW0ge3N0cmluZyB8IGxpc3R9ICRjb2xvciAtXG4vLy8gICBUaGUgbmFtZSBvciB2YWx1ZSBvZiBhIGNvbG9yLlxuLy8vIEBwYXJhbSB7Y29sb3JzIHwgbWluLWNvbnRyYXN0fSAkb3B0aW9ucy4uLiAtXG4vLy8gICBMaXN0IG9mIGNvbG9ycyB0byBjb250cmFzdCBhZ2FpbnN0LlxuLy8vICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNob29zZSB0aGUgYmVzdCBjb250cmFzdFxuLy8vICAgb2YgYWxsIHRoZSBvcHRpb25zIHByb3ZpZGVkLFxuLy8vICAgb3IgdGhlIGBjb250cmFzdC1saWdodGAgYW5kIGBjb250cmFzdC1kYXJrYCBkZWZhdWx0c1xuLy8vICAgZGVmaW5lZCBpbiB5b3VyIGNvbG9yIHBhbGV0dGUgb3IgdGhlIGZhY3Rvcnkgc2V0dGluZ3MuXG4vLy9cbi8vLyAgIC0gQW55ICBgeydBQScgfCAnQUEtbGFyZ2UnIHwgJ0FBQScgfCAwLTIxIH1gIHZhbHVlc1xuLy8vICAgICB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBtaW5pbXVtIGNvbG9yLWNvbnRyYXN0IHJhdGlvIOKAk1xuLy8vICAgICBhbmQgd2lsbCByZXR1cm4gdGhlIG1pbmltdW0gYWNjZXNzaWJsZSBvcHRpb24sXG4vLy8gICAgIHJhdGhlciB0aGFuIHRoZSBtYXhpbXVtIGNvbnRyYXN0LlxuLy8vIEByZXR1cm4ge2NvbG9yIHwgdmFyKCl9IC1cbi8vLyAgIENTUyBWYXJpYWJsZSBmb3IgdGhlIGNvbG9yLW9wdGlvblxuLy8vICAgdGhhdCBoYXMgdGhlIGhpZ2hlc3QgY29udHJhc3QtcmF0aW8gdG8gYCRjb2xvcmAsXG4vLy8gICBvciB0aGUgY29sb3IgaWYgbm8gdmFyaWFibGUgZXhpc3RzLlxuQGZ1bmN0aW9uIHZhci1jb250cmFzdChcbiAgJGNvbG9yLFxuICAkb3B0aW9ucy4uLlxuICApIHtcbiAgJGNvbnRyYXN0OiBfYV9iZXN0LWNvbnRyYXN0KCRjb2xvciwgJG9wdGlvbnMpO1xuICAkbmFtZTogbWFwLWdldCgkY29udHJhc3QsICduYW1lJyk7XG4gICRjb2xvcjogbWFwLWdldCgkY29udHJhc3QsICdjb2xvcicpO1xuXG4gIEBpZiAoJG5hbWUgIT0gJGNvbG9yKSBhbmQgbm90IGlzLXByaXZhdGUtdG9rZW4oJG5hbWUpIHtcbiAgICAkbmFtZTogX2FfdmFyLW5hbWUoJG5hbWUsICRjb2xvci12YXItcHJlZml4KTtcbiAgICBAcmV0dXJuIHZhcigkbmFtZSwgJGNvbG9yKTtcbiAgfVxuXG4gIEByZXR1cm4gJGNvbG9yO1xufVxuQGluY2x1ZGUgX2FfcmVnaXN0ZXItZnVuY3Rpb24oJ3Zhci1jb250cmFzdCcpO1xuXG5cbi8vIENvbnRyYXN0ZWRcbi8vIC0tLS0tLS0tLS1cbi8vLyBBcHBseSBhbnkgYmFja2dyb3VuZCBjb2xvcixcbi8vLyBhbG9uZyB3aXRoIHRoZSBoaWdoZXN0LWNvbnRyYXN0IHRleHQgY29sb3IgZnJvbSBhIHNldCBvZiBvcHRpb25zLlxuLy8vIFRoaXMgd29ya3MgdGhlIHNhbWUgYXMgdGhlIGBjb250cmFzdGAgZnVuY3Rpb24sXG4vLy8gYnV0IGFwcGxpZXMgdGhlIHJlc3VsdGluZyB2YWx1ZXMgdG8gYGJhY2tncm91bmQtY29sb3JgXG4vLy8gYW5kIHRleHQgYGNvbG9yYCBwcm9wZXJ0aWVzLlxuLy8vXG4vLy8gQGdyb3VwIGNvbG9yLWNvbnRyYXN0XG4vLy8gQGV4YW1wbGUgc2NzcyAtIG1heCBjb250cmFzdFxuLy8vICAgJGNvbG9yczogKFxuLy8vICAgICAnYmFja2dyb3VuZCc6IGJsdWUsXG4vLy8gICAgICdsaWdodCc6ICNlZWUsXG4vLy8gICAgICdkYXJrJzogIzExMSxcbi8vLyAgICk7XG4vLy8gICBodG1sIHtcbi8vLyAgICAgQGluY2x1ZGUgY29udHJhc3RlZChcbi8vLyAgICAgICAnYmFja2dyb3VuZCcsXG4vLy8gICAgICAgJ2xpZ2h0JywgJ2RhcmsnLCBibGFjaywgd2hpdGVcbi8vLyAgICAgKTtcbi8vLyAgIH1cbi8vLyBAZXhhbXBsZSBzY3NzIC0gbWluIGNvbnRyYXN0XG4vLy8gICAkY29sb3JzOiAoXG4vLy8gICAgICdiYWNrZ3JvdW5kJzogYmx1ZSxcbi8vLyAgICAgJ2xpZ2h0JzogI2VlZSxcbi8vLyAgICAgJ2RhcmsnOiAjMTExLFxuLy8vICAgKTtcbi8vLyAgIGh0bWwge1xuLy8vICAgICBAaW5jbHVkZSBjb250cmFzdGVkKFxuLy8vICAgICAgICdiYWNrZ3JvdW5kJyxcbi8vLyAgICAgICAnbGlnaHQnLCAnZGFyaycsIGJsYWNrLCB3aGl0ZSxcbi8vLyAgICAgICAnQUFBJ1xuLy8vICAgICApO1xuLy8vICAgfVxuLy8vXG4vLy8gQHBhcmFtIHtzdHJpbmcgfCBsaXN0fSAkYmFja2dyb3VuZCAtXG4vLy8gICBUaGUgbmFtZSBvciB2YWx1ZSBvZiB5b3VyIGRlc2lyZWQgYmFja2dyb3VuZCBjb2xvci5cbi8vLyBAcGFyYW0ge2NvbG9ycyB8IG1pbi1jb250cmFzdH0gJG9wdGlvbnMuLi4gLVxuLy8vICAgTGlzdCBvZiBjb2xvcnMgdG8gY29udHJhc3QgYWdhaW5zdC5cbi8vLyAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjaG9vc2UgdGhlIGJlc3QgY29udHJhc3Rcbi8vLyAgIG9mIGFsbCB0aGUgb3B0aW9ucyBwcm92aWRlZCxcbi8vLyAgIG9yIHRoZSBgY29udHJhc3QtbGlnaHRgIGFuZCBgY29udHJhc3QtZGFya2AgZGVmYXVsdHNcbi8vLyAgIGRlZmluZWQgaW4geW91ciBjb2xvciBwYWxldHRlIG9yIHRoZSBmYWN0b3J5IHNldHRpbmdzLlxuLy8vXG4vLy8gICAtIEFueSAgYHsnQUEnIHwgJ0FBLWxhcmdlJyB8ICdBQUEnIHwgMC0yMSB9YCB2YWx1ZXNcbi8vLyAgICAgd2lsbCBiZSB0cmVhdGVkIGFzIGEgbWluaW11bSBjb2xvci1jb250cmFzdCByYXRpbyDigJNcbi8vLyAgICAgYW5kIHdpbGwgcmV0dXJuIHRoZSBtaW5pbXVtIGFjY2Vzc2libGUgb3B0aW9uLFxuLy8vICAgICByYXRoZXIgdGhhbiB0aGUgbWF4aW11bSBjb250cmFzdC5cbi8vLyBAb3V0cHV0IC1cbi8vLyAgIFNldHMgdGhlIGBiYWNrZ3JvdW5kLWNvbG9yYCB0byBgJGJhY2tncm91bmRgXG4vLy8gICBhbmQgYGNvbG9yYCB0byB0aGUgb3B0aW9uIHdpdGhcbi8vLyAgIGhpZ2hlc3QgY29udHJhc3QgYWdhaW5zdCB0aGF0IGJhY2tncm91bmQsXG4vLy8gICBvciBtaW5pbXVtIGNvbnRyYXN0IHRoYXQgc3RpbGwgbWVldHMgYSBnaXZlbiBhY2Nlc3NpYmlsaXR5IHJhdGlvLlxuQG1peGluIGNvbnRyYXN0ZWQoXG4gICRiYWNrZ3JvdW5kLFxuICAkb3B0aW9ucy4uLlxuKSB7XG4gICRiYWNrZ3JvdW5kOiBjb2xvcigkYmFja2dyb3VuZCk7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIGNvbG9yOiBjb250cmFzdCgkYmFja2dyb3VuZCwgJG9wdGlvbnMuLi4pO1xufVxuXG5cbi8vIFZhciBDb250cmFzdGVkXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8vIEFwcGx5IGFueSBiYWNrZ3JvdW5kIGNvbG9yIGFzIGEgQ1NTIHZhcmlhYmxlLFxuLy8vIGFsb25nIHdpdGggdGhlIGhpZ2hlc3QtY29udHJhc3QgdGV4dCBjb2xvciBmcm9tIGEgc2V0IG9mIG9wdGlvbnMuXG4vLy8gVGhpcyB3b3JrcyB0aGUgc2FtZSBhcyB0aGUgYHZhci1jb250cmFzdGAgZnVuY3Rpb24sXG4vLy8gYnV0IGFwcGxpZXMgdGhlIHJlc3VsdGluZyB2YWx1ZXMgdG8gYGJhY2tncm91bmQtY29sb3JgXG4vLy8gYW5kIHRleHQgYGNvbG9yYCBwcm9wZXJ0aWVzLlxuLy8vXG4vLy8gQGdyb3VwIGNvbG9yLWNvbnRyYXN0XG4vLy8gQHNpbmNlIDIuMS4wIC1cbi8vLyAtIE5FVzogQXBwbGllcyBjb250cmFzdGluZyBjb2xvcnMgYXMgQ1NTLXZhcmlhYmxlcywgd2hlbiBkZWZpbmVkXG4vLy8gQGV4YW1wbGUgc2NzcyAtIG1heCBjb250cmFzdFxuLy8vICAgJGNvbG9yczogKFxuLy8vICAgICAnYmFja2dyb3VuZCc6IGJsdWUsXG4vLy8gICAgICdsaWdodCc6ICNlZWUsXG4vLy8gICAgICdkYXJrJzogIzExMSxcbi8vLyAgICk7XG4vLy8gICBodG1sIHtcbi8vLyAgICAgQGluY2x1ZGUgdmFyLWNvbnRyYXN0ZWQoXG4vLy8gICAgICAgJ2JhY2tncm91bmQnLFxuLy8vICAgICAgICdsaWdodCcsICdkYXJrJywgYmxhY2ssIHdoaXRlXG4vLy8gICAgICk7XG4vLy8gICB9XG4vLy8gQGV4YW1wbGUgc2NzcyAtIG1pbiBjb250cmFzdFxuLy8vICAgJGNvbG9yczogKFxuLy8vICAgICAnYmFja2dyb3VuZCc6IGJsdWUsXG4vLy8gICAgICdsaWdodCc6ICNlZWUsXG4vLy8gICAgICdkYXJrJzogIzExMSxcbi8vLyAgICk7XG4vLy8gICBodG1sIHtcbi8vLyAgICAgQGluY2x1ZGUgdmFyLWNvbnRyYXN0ZWQoXG4vLy8gICAgICAgJ2JhY2tncm91bmQnLFxuLy8vICAgICAgICdsaWdodCcsICdkYXJrJywgYmxhY2ssIHdoaXRlLFxuLy8vICAgICAgICdBQUEnXG4vLy8gICAgICk7XG4vLy8gICB9XG4vLy9cbi8vLyBAcGFyYW0ge3N0cmluZyB8IGxpc3R9ICRiYWNrZ3JvdW5kIC1cbi8vLyAgIFRoZSBuYW1lIG9yIHZhbHVlIG9mIHlvdXIgZGVzaXJlZCBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEBwYXJhbSB7Y29sb3JzIHwgbWluLWNvbnRyYXN0fSAkb3B0aW9ucy4uLiAtXG4vLy8gICBMaXN0IG9mIGNvbG9ycyB0byBjb250cmFzdCBhZ2FpbnN0LlxuLy8vICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNob29zZSB0aGUgYmVzdCBjb250cmFzdFxuLy8vICAgb2YgYWxsIHRoZSBvcHRpb25zIHByb3ZpZGVkLFxuLy8vICAgb3IgdGhlIGBjb250cmFzdC1saWdodGAgYW5kIGBjb250cmFzdC1kYXJrYCBkZWZhdWx0c1xuLy8vICAgZGVmaW5lZCBpbiB5b3VyIGNvbG9yIHBhbGV0dGUgb3IgdGhlIGZhY3Rvcnkgc2V0dGluZ3MuXG4vLy9cbi8vLyAgIC0gQW55ICBgeydBQScgfCAnQUEtbGFyZ2UnIHwgJ0FBQScgfCAwLTIxIH1gIHZhbHVlc1xuLy8vICAgICB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBtaW5pbXVtIGNvbG9yLWNvbnRyYXN0IHJhdGlvIOKAk1xuLy8vICAgICBhbmQgd2lsbCByZXR1cm4gdGhlIG1pbmltdW0gYWNjZXNzaWJsZSBvcHRpb24sXG4vLy8gICAgIHJhdGhlciB0aGFuIHRoZSBtYXhpbXVtIGNvbnRyYXN0LlxuLy8vIEBvdXRwdXQgLVxuLy8vICAgU2V0cyB0aGUgYGJhY2tncm91bmQtY29sb3JgIHRvIGAkYmFja2dyb3VuZGBcbi8vLyAgIGFuZCB0aGUgZm9yZWdyb3VuZCBgY29sb3JgIHRvXG4vLy8gICB3aGljaGV2ZXIgb3B0aW9uIGhhcyBiZXR0ZXIgY29udHJhc3QgYWdhaW5zdCB0aGUgZ2l2ZW4gYmFja2dyb3VuZC5cbkBtaXhpbiB2YXItY29udHJhc3RlZChcbiAgJGJhY2tncm91bmQsXG4gICRvcHRpb25zLi4uXG4pIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyLWNvbG9yKCRiYWNrZ3JvdW5kKTtcbiAgY29sb3I6IHZhci1jb250cmFzdCgkYmFja2dyb3VuZCwgJG9wdGlvbnMuLi4pO1xufVxuXG5cbi8vIENvbnRyYXN0IFJhdGlvXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8vIENvbXBhcmUgdHdvIGNvbG9ycyB1c2luZyB0aGUgV0NBRyBjb21wYXJpc29uIGFsZ29yaXRobSxcbi8vLyBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgY29udHJhc3QtcmF0aW8uXG4vLy8gT3B0aW9uYWxseSBwYXNzIGluIGEgc3RhbmRhcmQgKEFBLCBBQUEsIEFBLWxhcmdlKVxuLy8vIGFuZCByZXR1cm4gYGZhbHNlYCB3aGVuIHRoZSBjb250cmFzdC1jaGVjayBmYWlscy5cbi8vL1xuLy8vIC0gJ0FBLWxhcmdlJyA9PSBgMzoxYFxuLy8vIC0gJ0FBJyA9PSBgNC41OjFgXG4vLy8gLSAnQUFBJyA9PSBgNzoxYFxuLy8vXG4vLy8gQGdyb3VwIGNvbG9yLWNvbnRyYXN0XG4vLy8gQGxpbmsgaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jY29udHJhc3QtcmF0aW9kZWYgV0NBRyBDb250cmFzdCBEZWZpbml0aW9uXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLyogYmxhY2sgYW5kIHdoaXRlOiAje2NvbnRyYXN0LXJhdGlvKHdoaXRlLCBibGFjayl9ICovXG4vLy8gICAvKiBmYWlsZWQgJ0FBQSc6ICN7Y29udHJhc3QtcmF0aW8od2hpdGUsICM5OTksICdBQUEnKX0gKi9cbi8vL1xuLy8vIEBwYXJhbSB7c3RyaW5nIHwgbGlzdCB8IG51bWJlcn0gJGNvbG9yIC1cbi8vLyAgIFRoZSBuYW1lIG9mIGEgY29sb3IgaW4geW91ciBwYWxldHRlLFxuLy8vICAgYW55IG90aGVyIGNvbG9yIHZhbHVlLFxuLy8vICAgb3IgZXZlbiBhIHByZS1jYWxjdWxhdGVkIG51bWVyaWMgbHVtaW5hbmNlLlxuLy8vIEBwYXJhbSB7c3RyaW5nIHwgbGlzdCB8IG51bWJlcn0gJGNvbnRyYXN0IC1cbi8vLyAgIFRoZSBuYW1lIG9yIHZhbHVlIG9mIGEgY29sb3IgdG8gY29udHJhc3QgYWdhaW5zdCB0aGUgZmlyc3QuXG4vLy8gQHBhcmFtIHsnQUEnIHwgJ0FBLWxhcmdlJyB8ICdBQUEnIHwgbnVtYmVyIHwgZmFsc2V9ICRyZXF1aXJlIFtmYWxzZV0gLVxuLy8vICAgQW4gb3B0aW9uYWwgV0NBRyBjb250cmFzdCByYXRpbyB0byByZXF1aXJlLlxuLy8vICAgVGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGBmYWxzZWAgaWYgdGhlIHJlcXVpcmVkIHJhdGlvIGlzIG5vdCBtZXQuXG4vLy8gQHJldHVybiB7bnVtYmVyfSAtXG4vLy8gICBUaGUgV0NBRy1kZWZpbmVkIGNvbnRyYXN0LXJhdGlvIG9mIHR3byBjb2xvcnMuXG5AZnVuY3Rpb24gY29udHJhc3QtcmF0aW8oXG4gICRiYXNlLFxuICAkY29udHJhc3QsXG4gICRyZXF1aXJlOiBmYWxzZVxuKSB7XG4gICRpcy1sdW1pbnM6ICh0eXBlLW9mKCRiYXNlKSA9PSAnbnVtYmVyJyk7XG5cbiAgJGJhc2UtbHVtaW46IGlmKCRpcy1sdW1pbnMsICRiYXNlLCBsdW1pbmFuY2UoJGJhc2UpKTtcbiAgJGNvbnRyYXN0LWx1bWluOiBpZigkaXMtbHVtaW5zLCAkY29udHJhc3QsIGx1bWluYW5jZSgkY29udHJhc3QpKTtcblxuICAkZGFya2VyOiBtaW4oJGJhc2UtbHVtaW4sICRjb250cmFzdC1sdW1pbik7XG4gICRsaWdodGVyOiBtYXgoJGJhc2UtbHVtaW4sICRjb250cmFzdC1sdW1pbik7XG5cbiAgJHJhdGlvOiAoJGxpZ2h0ZXIgKyAwLjA1KSAvICgkZGFya2VyICsgMC4wNSk7XG5cbiAgJHJlcXVpcmU6IF9hX3ZhbGlkLWNvbnRyYXN0KCRyZXF1aXJlKTtcblxuICBAaWYgJHJlcXVpcmUgYW5kICgkcmF0aW8gPCAkcmVxdWlyZSkge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBAcmV0dXJuICRyYXRpbztcbn1cblxuXG4vLyBMdW1pbmFuY2Vcbi8vIC0tLS0tLS0tLVxuLy8vIEdldCB0aGUgV0NBRyBsdW1pbmFuY2Ugb2YgYSBjb2xvciBpbiB5b3VyIHBhbGV0dGUuXG4vLy9cbi8vLyBAZ3JvdXAgY29sb3ItY29udHJhc3Rcbi8vLyBAbGluayBodHRwczovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZiBXQ0FHIFJlbGF0aXZlIEx1bWluYW5jZVxuLy8vXG4vLy8gQHBhcmFtIHtzdHJpbmcgfCBsaXN0fSAkY29sb3IgLVxuLy8vICAgVGhlIG5hbWUgb3IgdmFsdWUgb2YgYSBjb2xvci5cbi8vLyBAcmV0dXJuIHtudW1iZXJ9IC1cbi8vLyAgIFdDQUctZGVmaW5lZCBudW1lcmljIGx1bWluYW5jZSB2YWx1ZS5cbkBmdW5jdGlvbiBsdW1pbmFuY2UoXG4gICRjb2xvclxuKSB7XG4gICRjb2xvcjogY29sb3IoJGNvbG9yKTtcbiAgJGNvbG9yOiBfYV90eXBlLWNoZWNrKCRjb2xvciwgJ2NvbG9yJywgJ2x1bWluYW5jZScsICckY29sb3InKTtcbiAgJGx1bWluYW5jZTogMDtcblxuICBAZWFjaCAkY29tcG9uZW50IGluICdyZWQnICdncmVlbicgJ2JsdWUnIHtcbiAgICAkZnVuY3Rpb246ICRjb21wb25lbnQ7XG5cbiAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKCdnZXQtZnVuY3Rpb24nKSB7XG4gICAgICAkZnVuY3Rpb246IGdldC1mdW5jdGlvbigkY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICAkdmFsdWU6IGNhbGwoJGZ1bmN0aW9uLCAkY29sb3IpIC8gMjU1O1xuXG4gICAgQGlmICgkdmFsdWUgPCAwLjAzOTI4KSB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAvIDEyLjkyO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGJhc2U6ICgkdmFsdWUgKyAwLjA1NSkgLyAxLjA1NTtcbiAgICAgICR2YWx1ZTogX2FfcG93KCRiYXNlLCAyLjQpO1xuICAgIH1cblxuICAgIEBpZiAoJGNvbXBvbmVudCA9PSAncmVkJykge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgKiAwLjIxMjY7XG4gICAgfSBAZWxzZSBpZiAoJGNvbXBvbmVudCA9PSAnZ3JlZW4nKSB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAqIDAuNzE1MjtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR2YWx1ZTogJHZhbHVlICogMC4wNzIyO1xuICAgIH1cblxuICAgICRsdW1pbmFuY2U6ICRsdW1pbmFuY2UgKyAkdmFsdWU7XG4gIH1cblxuICBAcmV0dXJuICRsdW1pbmFuY2U7XG59XG5cblxuLy8gRGVmYXVsdCBDb250cmFzdFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8vIEFjY2VzcyB0aGUgdXNlciBvciBzeXN0ZW0gZGVmYXVsdCBjb250cmFzdCB2YWx1ZXMuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAc2luY2UgMi4xLjAgLVxuLy8vIC0gTkVXOiBBbGxvd3MgZm9yIGVpdGhlciBwcml2YXRlIG9yIHB1YmxpYyBkZWZhdWx0c1xuLy8vXG4vLy8gQHBhcmFtIHsnbGlnaHQnIHwgJ2RhcmsnIHwgJ3ZhbHVlcycgfCAnbWFwJ30gJHJldHVybiAtXG4vLy8gICBSZXR1cm4gdGhlIGxpZ2h0IHZhbHVlLCBkYXJrIHZhbHVlLCBib3RoIHZhbHVlcywgb3IgYSBtYXBcbi8vLyBAcmV0dXJuIHtjb2xvci1uYW1lIHwgbWFwfSAtXG4vLy8gICBMaWdodCBvciBkYXJrIGNvbG9yLW5hbWUgc3RyaW5nLFxuLy8vICAgb3IgbWFwIHdpdGggYGxpZ2h0YCBhbmQgYGRhcmtgIGtleXMuXG5AZnVuY3Rpb24gX2FfZGVmYXVsdC1jb250cmFzdChcbiAgJHJldHVybjogJ2JvdGgnXG4pIHtcbiAgJGJvdGg6IChcbiAgICAnbGlnaHQnOiBpZihcbiAgICAgIG1hcC1oYXMta2V5KCRjb2xvcnMsICdjb250cmFzdC1saWdodCcpLFxuICAgICAgJ2NvbnRyYXN0LWxpZ2h0JyxcbiAgICAgICdfY29udHJhc3QtbGlnaHQnXG4gICAgKSxcbiAgICAnZGFyayc6IGlmKFxuICAgICAgbWFwLWhhcy1rZXkoJGNvbG9ycywgJ2NvbnRyYXN0LWRhcmsnKSxcbiAgICAgICdjb250cmFzdC1kYXJrJyxcbiAgICAgICdfY29udHJhc3QtZGFyaydcbiAgICApLFxuICApO1xuXG4gIEBpZiAoJHJldHVybiA9PSAndmFsdWVzJykge1xuICAgIEByZXR1cm4gbWFwLXZhbHVlcygkYm90aCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1nZXQoJGJvdGgsICRyZXR1cm4pIG9yICRib3RoO1xufVxuXG5cbi8vIEJlc3QgQ29udHJhc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vLyBGb3IgYW55IGNvbG9yLCBzZWxlY3QgdGhlIGJlc3QgY29udHJhc3QgYW1vbmcgYSBzZXQgb2Ygb3B0aW9ucy5cbi8vLyBSZXR1cm5zIHRoZSBoaWdoZXN0IGNvbnRyYXN0IGJ5IGRlZmF1bHQsXG4vLy8gb3IgdGhlIG1pbmltdW0gY29udHJhc3QgdG8gbWVldCBhIHBhcnRpY3VsYXIgcmF0aW8gY3V0b2ZmLlxuLy8vXG4vLy8gVW5saWtlIHRoZSBgY29udHJhc3RgIGZ1bmN0aW9uLFxuLy8vIGBfYV9iZXN0LWNvbnRyYXN0YCBjYW4gcmV0dXJuIHRoZSBjb2xvciBuYW1lLFxuLy8vIG91dHB1dCB2YWx1ZSwgcmF0aW8sIG9yIGFsbCB0aHJlZS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBzaW5jZSAyLjEuMCAtXG4vLy8gLSBORVc6IFByb3ZpZGVzIGFjY2VzcyB0byBib3RoIG5hbWUgYW5kIHZhbHVlIG9mIHJlc3VsdFxuLy8vIC0gTkVXOiBQcm92aWRlcyBhIHNtYXJ0IGRlZmF1bHQgZm9yIGNvbXBhcmlzb24gYWdhaW5zdCBhIHNpbmdsZSBvcHRpb25cbi8vL1xuLy8vIEBwYXJhbSB7c3RyaW5nIHwgbGlzdH0gJGNvbG9yIC1cbi8vLyAgIFRoZSBuYW1lIG9yIHZhbHVlIG9mIGEgY29sb3IuXG4vLy8gQHBhcmFtIHtsaXN0fSAkb3B0aW9ucyBbbnVsbF0gLVxuLy8vICAgQW55IG51bWJlciBvZiBjb2xvcnMgdG8gY29udHJhc3QgYWdhaW5zdC5cbi8vLyAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjaG9vc2UgdGhlIGJlc3QgY29udHJhc3Qgb2YgYWxsIHRoZSBvcHRpb25zIHByb3ZpZGVkLFxuLy8vICAgb3IgdXNlIHRoZSBgY29udHJhc3QtbGlnaHRgIGFuZCBgY29udHJhc3QtZGFya2AgZGVmYXVsdHMuXG4vLy8gQHBhcmFtIHsnbWFwJyB8ICduYW1lJyB8ICdjb2xvcicgfCAncmF0aW8nfSAkcmV0dXJuIFsnbWFwJ10gLVxuLy8vICAgUmV0dXJuIGVpdGhlciBhIHRva2VuIG5hbWUsIGNvbG9yIHZhbHVlLCBiZXN0LXJhdGlvXG4vLy8gICBvciBhbGwgdGhyZWUgdG9nZXRoZXIgaW4gYSBtYXAuXG4vLy8gQHJldHVybiB7Y29sb3J9IC1cbi8vLyAgIFdoaWNoZXZlciBjb2xvci1vcHRpb24gaGFzIHRoZSBoaWdoZXN0IGNvbnRyYXN0LXJhdGlvIHRvIGAkY29sb3JgLlxuQGZ1bmN0aW9uIF9hX2Jlc3QtY29udHJhc3QoXG4gICRjb2xvcixcbiAgJG9wdGlvbnM6IG51bGwsXG4gICRyZXR1cm46ICdtYXAnXG4pIHtcbiAgJG9wdC1jb2xvcnM6ICgpO1xuICAkbWluLXJhdGlvOiBmYWxzZTtcblxuICBAZWFjaCAkb3B0IGluICRvcHRpb25zIHtcbiAgICBAaWYgKHR5cGUtb2YoJG9wdCkgPT0gJ2NvbG9yJykgb3IgbWFwLWhhcy1rZXkoJGNvbG9ycywgJG9wdCkge1xuICAgICAgJG9wdC1jb2xvcnM6IGFwcGVuZCgkb3B0LWNvbG9ycywgJG9wdCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbWluLXJhdGlvOiBfYV92YWxpZC1jb250cmFzdCgkb3B0KSBvciAkbWluLXJhdGlvO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVzdGFibGlzaCBkZWZhdWx0IG9wdGlvbnMgaWYgdGhleSBhcmUgbWlzc2luZ1xuICBAaWYgKGxlbmd0aCgkb3B0LWNvbG9ycykgPT0gMCkgb3IgKG5vdCAkb3B0LWNvbG9ycykge1xuICAgICRvcHQtY29sb3JzOiBfYV9kZWZhdWx0LWNvbnRyYXN0KCd2YWx1ZXMnKTtcbiAgfSBAZWxzZSBpZiAobGVuZ3RoKCRvcHQtY29sb3JzKSA9PSAxICl7XG4gICAgJHVzZTogX2FfYmVzdC1jb250cmFzdChudGgoJG9wdC1jb2xvcnMsIDEpLCAkcmV0dXJuOiAnbmFtZScpO1xuICAgICRvcHQtY29sb3JzOiBhcHBlbmQoJG9wdC1jb2xvcnMsICR1c2UpO1xuICB9XG5cbiAgLy8gR2V0IHRoZSBjb2xvcnMgYW5kIHRoZWlyIGNvbnRyYXN0c1xuICAkY29sb3ItdmFsOiBjb2xvcigkY29sb3IpO1xuICAkY29sb3ItbHVtOiBsdW1pbmFuY2UoJGNvbG9yLXZhbCk7XG4gICRiZXN0OiAoXG4gICAgJ25hbWUnOiBudWxsLFxuICAgICdjb2xvcic6IG51bGwsXG4gICAgJ3JhdGlvJzogbnVsbCxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSBpbiAkb3B0LWNvbG9ycyB7XG4gICAgLy8gMjIgaXMgYWJvdmUgdGhlIGhpZ2hlc3QgcG9zc2libGUsIDAgaXMgYmVsb3cgdGhlIGxvd2VzdFxuICAgICRiZXN0LXJhdGlvOiBtYXAtZ2V0KCRiZXN0LCAncmF0aW8nKSBvciBpZigkbWluLXJhdGlvLCAyMiwgMCk7XG4gICAgJGJldHRlcjogZmFsc2U7XG4gICAgJHZhbHVlOiBjb2xvcigkbmFtZSk7XG4gICAgJGx1bTogbHVtaW5hbmNlKCR2YWx1ZSk7XG4gICAgJHJhdGlvOiBjb250cmFzdC1yYXRpbygkY29sb3ItbHVtLCAkbHVtLCAkbWluLXJhdGlvKTtcblxuICAgIEBpZiAkbWluLXJhdGlvIGFuZCAkcmF0aW8ge1xuICAgICAgJGJldHRlcjogKCRyYXRpbyA8ICRiZXN0LXJhdGlvKTtcbiAgICB9IEBlbHNlIGlmICRyYXRpbyB7XG4gICAgICAkYmV0dGVyOiAoJHJhdGlvID4gJGJlc3QtcmF0aW8pO1xuICAgIH1cblxuICAgIEBpZiAkYmV0dGVyIHtcbiAgICAgICRiZXN0OiAoXG4gICAgICAgICduYW1lJzogJG5hbWUsXG4gICAgICAgICdjb2xvcic6ICR2YWx1ZSxcbiAgICAgICAgJ3JhdGlvJzogJHJhdGlvLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKG1hcC1nZXQoJGJlc3QsICduYW1lJykpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJlc3QsICRyZXR1cm4pIG9yICRiZXN0O1xuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuXG4vLyBWYWxpZCBDb250cmFzdFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vLyBSZXR1cm4gYSB2YWxpZCBjb250cmFzdCByYXRpbyBvciBgZmFsc2VgXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAcGFyYW0geydBQScgfCAnQUEtbGFyZ2UnIHwgJ0FBQScgfCAwLTIxfSAkcmF0aW8gLVxuLy8vICAgV0NBRyBvciAwLTIxIGNvbnRyYXN0IHJhdGlvcyB3aWxsIHBhc3MgdmFsaWRhdGlvbixcbi8vLyAgIGFsbCBvdGhlciB2YWx1ZXMgd2lsbCByZXR1cm4gZmFsc2VcbkBmdW5jdGlvbiBfYV92YWxpZC1jb250cmFzdChcbiAgJHJhdGlvXG4pIHtcbiAgQGlmICh0eXBlLW9mKCRyYXRpbykgPT0gJ251bWJlcicpIGFuZCAoJHJhdGlvID49IDEpIGFuZCAoJHJhdGlvIDw9IDIxKSB7XG4gICAgQHJldHVybiAkcmF0aW87XG4gIH1cblxuICAkdXBwZXJjYXNlOiAoXG4gICAgJ2FhYSc6ICdBQUEnLFxuICAgICdhYSc6ICdBQScsXG4gICAgJ2FhLWxhcmdlJzogJ0FBLWxhcmdlJ1xuICApO1xuXG4gICRyYXRpbzogbWFwLWdldCgkdXBwZXJjYXNlLCAkcmF0aW8pIG9yICRyYXRpbztcbiAgQHJldHVybiBtYXAtZ2V0KCRXQ0FHLUNPTlRSQVNULCAkcmF0aW8pO1xufVxuIiwiLy8gQ29sb3IgQ29uZmlndXJhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIEJyYW5kIENvbG9yc1xuLy8gLS0tLS0tLS0tLS0tXG4vLy8gaGVsbG8sIGJyYW5kIGNvbG9ycyFcbi8vLyBAcHJldmlldyBjb2xvci1wYWxldHRlXG4kYnJhbmQtY29sb3JzOiAoXG4gICdicmFuZC1waW5rJzogI2Q4M2E1ZCxcbik7XG5cbkBpbmNsdWRlIGFkZC1jb2xvcnMoJGJyYW5kLWNvbG9ycyk7XG5AaW5jbHVkZSBoZXJtYW4tYWRkKCdjb2xvcnMnLCAnYnJhbmQtY29sb3JzJywgJGJyYW5kLWNvbG9ycyk7XG5cblxuLy8gVUkgQ29sb3JzXG4vLyAtLS0tLS0tLS1cbi8vLyBoZWxsbywgdWkgY29sb3JzIVxuLy8vIEBwcmV2aWV3IGNvbG9yLXBhbGV0dGVcbiR1aS1jb2xvcnM6IChcbiAgJ2NvbnRyYXN0LWxpZ2h0JzogI2ZmZixcbiAgJ2NvbnRyYXN0LWRhcmsnOiAjMjMwOTBmLFxuKTtcblxuQGluY2x1ZGUgYWRkLWNvbG9ycygkdWktY29sb3JzKTtcbkBpbmNsdWRlIGhlcm1hbi1hZGQoJ2NvbG9ycycsICd1aS1jb2xvcnMnLCAkdWktY29sb3JzKTtcblxuXG4vLyBUaGVtZSBDb2xvcnNcbi8vIC0tLS0tLS0tLS0tLVxuLy8vIGhlbGxvLCB0aGVtZSBjb2xvcnMhXG4vLy8gQHByZXZpZXcgY29sb3ItcGFsZXR0ZVxuJHRoZW1lLWNvbG9yczogKFxuICAndGV4dCc6ICcjY29udHJhc3QtZGFyaycsXG4gICdiYWNrZ3JvdW5kJzogJyNjb250cmFzdC1saWdodCcsXG4gICdhY3Rpb24nOiAnI2JyYW5kLXBpbmsnLFxuICAnZm9jdXMnOiAnI2FjdGlvbicgKCdzaGFkZSc6IDMwJSksXG4gICdpbnZlcnQnOiAnI2FjdGlvbicgKCdzaGFkZSc6IDcwJSksXG5cbiAgJ2NhbGxvdXQnOiAnI2FjdGlvbicgKCd0aW50JzogODUlKSxcbiAgJ2JvcmRlcic6ICcjYWN0aW9uJyAoJ3RpbnQnOiA3NSUpLFxuKTtcblxuQGluY2x1ZGUgYWRkLWNvbG9ycygkdGhlbWUtY29sb3JzKTtcbkBpbmNsdWRlIGhlcm1hbi1hZGQoJ2NvbG9ycycsICd0aGVtZS1jb2xvcnMnLCAkdGhlbWUtY29sb3JzKTtcbiIsIi8vLyAjIEludGVybmFsIFdlYkZvbnQgSGVscGVyc1xuLy8vIFRoZXNlIGludGVybmFsIHRvb2xzIGFyZSBub3Qgc2FmZSBmb3IgcHVibGljIHVzZSAtLVxuLy8vIGJ1dCB3ZSd2ZSBkb2N1bWVudGVkIHRoZSBsb2dpYyBmb3IgdHJhbnNwYXJlbmN5LFxuLy8vIGFuZCB0byBlbmNvdXJhZ2UgY29udHJpYnV0aW9ucy5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBncm91cCB0eXBlLWhlbHBlcnNcblxuXG4vLyBGb250IFN0eWxlIE9wdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8vIEEgY29uc3RhbnQgbGlzdCBvZiB2YWxpZCBmb250LXN0eWxlIHNldHRpbmdzXG4vLy8gKG5vdCBpbmNsdWRpbmcgYG5vcm1hbGAsIHdoaWNoIGlzIGFsc28gYSB2YWxpZCB3ZWlnaHQpLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBncm91cCB0eXBlLWhlbHBlcnNcbiRfYV9GT05ULVNUWUxFUzogKFxuICAnaXRhbGljJyxcbiAgJ29ibGlxdWUnLFxuKTtcblxuXG4vLyBGb250IFdlaWdodCBPcHRpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gQSBjb25zdGFudCBsaXN0IG9mIHZhbGlkIGZvbnQtd2VpZ2h0IHNldHRpbmdzXG4vLy8gKG5vdCBpbmNsdWRpbmcgYG5vcm1hbGAsIHdoaWNoIGlzIGFsc28gYSB2YWxpZCBzdHlsZSkuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQGdyb3VwIHR5cGUtaGVscGVyc1xuJF9hX0ZPTlQtV0VJR0hUUzogKFxuICAnMTAwJyxcbiAgJzIwMCcsXG4gICczMDAnLFxuICAnNDAwJyxcbiAgJzUwMCcsXG4gICc2MDAnLFxuICAnNzAwJyxcbiAgJzgwMCcsXG4gICc5MDAnLFxuICAnYm9sZCcsXG4gICdib2xkZXInLFxuICAnbGlnaHRlcicsXG4pO1xuXG5cbi8vIEZvbnQgV2VpZ2h0IE9wdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBBIGNvbnN0YW50IG1hcCBvZiB2YWxpZCBmb250IGZvcm1hdHMsXG4vLy8gd2l0aCB0aGVpciBmaWxlIGV4dGVuc2lvbiBhbmQgZnVsbCBgZm9ybWF0KClgIG5hbWUuXG4vLy8gVGhlIG9yZGVyIGdpdmVuIGhlcmUgd2lsbCBhbHNvIGJlIHVzZWQgaW4gZGVmaW5pbmcgZm9udC1mYWNlIHNyYyBvcmRlci5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAZ3JvdXAgdHlwZS1oZWxwZXJzXG4kX2FfRk9OVC1GT1JNQVRTOiAoXG4gICdsb2NhbCc6IG51bGwsXG4gICdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLFxuICAnd29mZjInOiAnd29mZjInLFxuICAnd29mZic6ICd3b2ZmJyxcbiAgJ3R0Zic6ICd0cnVldHlwZScsXG4gICdvdGYnOiAnb3BlbnR5cGUnLFxuICAnc3ZnJzogJ3N2ZycsXG4gICdzdmd6JzogJ3N2ZycsXG4pO1xuXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIGZ1bmN0aW9uLXVybC1xdW90ZXNcbi8vIEZvbnQgVVJMXG4vLyAtLS0tLS0tLVxuLy8vIEludGVycG9sYXRlIGEgZm9udCBwYXRoIGFuZCBmb3JtYXQtdHlwZVxuLy8vIHRvIGNyZWF0ZSB0aGUgcHJvcGVyIGZvbnQtc3JjIGltcG9ydCBVUkwuXG4vLy8gVGhpcyBwcml2YXRlIGZ1bmN0aW9uIGRvZXMgbm90IHByZXBlbmQgYW55IGdsb2JhbCBgJGZvbnQtcGF0aGAsXG4vLy8gbGVhdmluZyB0aGF0IHRvIHRoZSBwdWJsaWMgW2Bmb250LXVybCgpYF1bZm9udC11cmxdIGZ1bmN0aW9uLlxuLy8vXG4vLy8gW2ZvbnQtdXJsXTogZm9udHMuaHRtbCNmdW5jdGlvbi0tZm9udC11cmxcbi8vL1xuLy8vIEBzaW5jZSB0eXBlLTQuMC4wIC1cbi8vLyAtIE5FVzogQWRkZWQgdG8gZm9ybWF0IGZvbnQtcGF0aHMgY29ycmVjdGx5LFxuLy8vICAgd2l0aCBmaWxlIGV4dGVuc2lvbiBhbmQgc3VmZml4LlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQGdyb3VwIHR5cGUtaGVscGVyc1xuLy8vXG4vLy8gQHBhcmFtIHtzdHJpbmd9ICRwYXRoIC1cbi8vLyAgIFRoZSBiYXNlIHBhdGggZm9yIHRoaXMgZm9udCBhbmQgZm9ybWF0LlxuLy8vICAgSWYgbm8gZmlsZSBleHRlbnNpb24gaXMgaW5jbHVkZWQsXG4vLy8gICB3ZSBhZGQgb25lIGJhc2VkIG9uIHRoZSBmb3JtYXQgZGVzaXJlZC5cbi8vLyAgIExvY2FsIGFuZCBiYXNlNjQgZm9udCBuYW1lcyAmIFVSSSdzIGFyZSByZXR1cm5lZCB3aXRob3V0IGFueSBjaGFuZ2UuXG4vLy8gQHBhcmFtIHtzdHJpbmd9ICRmb3JtYXQgLVxuLy8vICAgU2hvcnQtZm9ybSBvZiB0aGUgZm9ybWF0IHRvIGltcG9ydCwgZS5nLiBgd29mZmAgb3IgYGVvdGAuXG4vLy8gQHBhcmFtIHtzdHJpbmd9ICRzdmdpZCAtXG4vLy8gICBTVkcgZnJhZ21lbnQtaWRlbnRpZmllciB0byBhcHBlbmQgb24gc3ZnIGZvbnRzLlxuLy8vICAgVGhlIGluaXRpYWwgYCNgIGNoYXJhY3RlciBpcyBvcHRpb25hbCxcbi8vLyAgIGFuZCB3aWxsIGJlIGFkZGVkIHdoZW4gbWlzc2luZy5cbi8vLyBAcGFyYW0ge2Jvb2xlYW59ICRpZWZpeCAtXG4vLy8gICBPcHRpb25hbGx5IGFwcGVuZCBhbiBgPyNpZWZpeGAgc3VmZml4IHRvIGBlb3RgIGZvbnRzLlxuLy8vIEByZXR1cm4ge3N0cmluZ30gLVxuLy8vICAgRm9udC1mb3JtYXQgVVJMIGZvciBpbXBvcnRpbmcuXG5AZnVuY3Rpb24gX2FfZm9udC11cmwoXG4gICRwYXRoLFxuICAkZm9ybWF0LFxuICAkc3ZnaWQ6IG51bGwsXG4gICRpZWZpeDogZmFsc2Vcbikge1xuICAkc3VmZml4OiAnJztcblxuICAvLyBzb21lIGZvcm1hdHMgbmVlZCBubyBhZGp1c3RtZW50c1xuICBAaWYgKCRmb3JtYXQgPT0gJ2xvY2FsJykgb3Igc3RyLWluZGV4KCRwYXRoLCAnZGF0YTonKSB7XG4gICAgQHJldHVybiAkcGF0aDtcbiAgfVxuXG4gIC8vIGFkZCBmaWxlIGZvcm1hdCB3aGVuIG5lZWRlZFxuICAkZXh0OiAnLicgKyAkZm9ybWF0O1xuICAkZXh0OiBpZihzdHItaW5kZXgoJHBhdGgsICRleHQpLCAnJywgJGV4dCk7XG5cbiAgLy8gYWRkIHN2Z2lkIHdoZW4gbmVlZGVkXG4gIEBpZiBzdHItaW5kZXgoJGZvcm1hdCwgJ3N2ZycpIGFuZCAoJHN2Z2lkKSBhbmQgKG5vdCBzdHItaW5kZXgoJHBhdGgsICcjJykpIHtcbiAgICAkc3VmZml4OiBpZihzdHItaW5kZXgoJHN2Z2lkLCAnIycpLCAkc3ZnaWQsICcjJyArICRzdmdpZCk7XG4gIH1cblxuICAvLyBhZGQgaWVmaXggd2hlbiBuZWVkZWRcbiAgQGlmIHN0ci1pbmRleCgkZm9ybWF0LCAnZW90JykgYW5kICgkaWVmaXgpIGFuZCAgKG5vdCBzdHItaW5kZXgoJHBhdGgsICc/JykpIHtcbiAgICAkc3VmZml4OiAnPyNpZWZpeCc7XG4gIH1cblxuICAvLyBjb21waWxlIGFuZCByZXR1cm5cbiAgQHJldHVybiAkcGF0aCArICRleHQgKyAkc3VmZml4O1xufVxuLy8gc3R5bGVsaW50LWVuYWJsZVxuXG5cbi8vIEZvbnQgU3JjXG4vLyAtLS0tLS0tLVxuLy8vIEdldCB0aGUgZm9udCBgc3JjYCB2YWx1ZSBmb3IgYSBnaXZlbiBmb250IHBhdGggYW5kIGZvcm1hdCxcbi8vLyBpbmNsdWRpbmcgYm90aCBgdXJsKClgIGFuZCBgZm9ybWF0KClgLlxuLy8vIFRoaXMgYWxzbyBzb3J0cyBmb3JtYXRzLFxuLy8vIG9yZ2FuaXppbmcgdGhlbSBpbnRvIHRoZSBwcm9wZXIgb3V0cHV0IG9yZGVyIGZvciBicm93c2VyLWNvbXBhdGFiaWxpdHkuXG4vLy9cbi8vLyBAc2luY2UgdHlwZS00LjAuMCAtXG4vLy8gLSBCUkVBS0lORzogTm8gbG9uZ2VyIGFjY2VwdHMgdGhlIGAkZm9ybWF0YCBwYXJhbWV0ZXIuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAZ3JvdXAgdHlwZS1oZWxwZXJzXG4vLy9cbi8vLyBAcGFyYW0ge3N0cmluZyB8IG1hcH0gJHBhdGggLVxuLy8vICAgUGF0aCB0byB0aGUgZm9udCBmaWxlcyAobGVhdmluZyBvZmYgdGhlIGZpbGUgZm9ybWF0IGluZGljYXRvciksXG4vLy8gICBvciBkYXRhLXVyaSBmb3IgZm9udC1zcmMuXG4vLy8gQHBhcmFtIHtzdHJpbmd9ICRmb3JtYXQgLVxuLy8vICAgU2hvcnQtZm9ybSAoZS5nLiAnZW90JyBvciAnb3RmJykgZm9udC1mb3JtYXQgdG8gaW1wb3J0LlxuLy8vIEBwYXJhbSB7c3RyaW5nfSAkc3VmZml4IFtudWxsXSAtXG4vLy8gICBTVkcgb3IgRU9ULWllZml4IHN1ZmZpeCB0byBiZSBhZGRlZCB0byBmb250IHVybC5cbi8vLyBAcmV0dXJuIHtsaXN0fSAtXG4vLy8gICBDU1MtcmVhZHkgYHVybCgpIGZvcm1hdCgpYCBjb21iaW5hdGlvbiBmb3IgZm9udC1mYWNlIGBzcmNgIG91dHB1dC5cbkBmdW5jdGlvbiBfYV9mb250LXNyYyhcbiAgJHBhdGgsXG4gICRmb3JtYXRcbikge1xuICAkZm9ybWF0LW5hbWU6IG1hcC1nZXQoJF9hX0ZPTlQtRk9STUFUUywgJGZvcm1hdCk7XG4gICRmb3JtYXQtbmFtZTogaWYoJGZvcm1hdC1uYW1lLCBmb3JtYXQoJGZvcm1hdC1uYW1lKSwgJycpO1xuXG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jdGlvbi11cmwtcXVvdGVzXG4gICRwYXRoOiBfYV9mb250LXVybCgkcGF0aCwgJGZvcm1hdCwgJGllZml4OiB0cnVlKTtcbiAgQHJldHVybiBmb250LXVybCgkcGF0aCkgJGZvcm1hdC1uYW1lO1xufVxuXG5cbi8vIEZvbnQgU3JjIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vLyBCdWlsZCBhIGBzcmNgIGxpc3Rcbi8vLyBmb3Igb25lIGBAZm9udC1mYWNlYCBkZWNsYXJhdGlvbiBibG9jay5cbi8vL1xuLy8vIEBzaW5jZSB0eXBlLTQuMC4wIC1cbi8vLyAtIE5FVzogQWRkZWQgdG8gc29ydCBhbmQgY29tcGlsZSBzcmMgbGlzdHMsXG4vLy8gICB3aXRoIGxvY2FsKCkgb3B0aW9ucyBhbmQgcHJvcGVyIGZvcm1hdCBvcmRlci5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBncm91cCB0eXBlLWhlbHBlcnNcbi8vL1xuLy8vIEBwYXJhbSB7bWFwfSAkZGF0YSAtXG4vLy8gICBOb3JtYWxpemVkIG1hcCBvZiBmb3JtYXQvdXJsIHBhaXJzIHRvIGltcG9ydC5cbi8vLyBAcmV0dXJuIHtsaXN0fSAtXG4vLy8gICBDb21waWxlZCBsaXN0IG9mIGB1cmwoKSBmb3JtYXQoKWAgcGFpcnMsXG4vLy8gICByZWFkeSB0byBhcHBseSBpbiB0aGUgYHNyY2AgcHJvcGVydHkuXG5AZnVuY3Rpb24gX2FfZm9udC1zcmMtbGlzdChcbiAgJGRhdGFcbikge1xuICAkc3JjOiAoKTtcblxuICAvLyBVc2UgYmVzdC1wcmFjdGljZSBmb3JtYXQgb3JkZXJcbiAgQGVhY2ggJGZvcm1hdCBpbiBtYXAta2V5cygkX2FfRk9OVC1GT1JNQVRTKSB7XG4gICAgJHVybDogbWFwLWdldCgkZGF0YSwgJGZvcm1hdCk7XG5cbiAgICBAaWYgJHVybCB7XG4gICAgICAkaXRlbTogKCk7XG5cbiAgICAgIEBpZiAoJGZvcm1hdCA9PSAnbG9jYWwnKSB7XG4gICAgICAgIEBlYWNoICRuYW1lIGluICR1cmwge1xuICAgICAgICAgICRsaTogbG9jYWwoJG5hbWUpO1xuICAgICAgICAgICRpdGVtOiBhcHBlbmQoJGl0ZW0sICRsaSwgJ2NvbW1hJyk7XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkbGk6IF9hX2ZvbnQtc3JjKCR1cmwsICRmb3JtYXQpO1xuICAgICAgICAkaXRlbTogYXBwZW5kKCRpdGVtLCAkbGksICdjb21tYScpO1xuICAgICAgfVxuXG4gICAgICAkc3JjOiBqb2luKCRzcmMsICRpdGVtLCAnY29tbWEnKTtcbiAgICB9XG4gIH1cblxuXG4gIEByZXR1cm4gJHNyYztcbn1cblxuXG4vLyBGb250IEdldCBWYXJpYW50c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBFeHRyYWN0IGFsbCB0aGUgdmFyaWFudCBrZXkvZGF0YSBwYWlycyxcbi8vLyBhbmQgcmV0dXJuIGEgZmlsdGVyZWQgZm9udC1tYXAgaW5jbHVkaW5nIG9ubHkgZm9udC12YXJpYW50cy5cbi8vL1xuLy8vIEBzaW5jZSAwLjEuMCAtXG4vLy8gLSBORVc6IFN1cHBvcnRzIGAnYm9sZCBpdGFsaWMnYCB3ZWlnaHQvc3R5bGUgc3ludGF4XG4vLy8gICBpbiBhZGRpdGlvbiB0byBgKCdib2xkJywgJ2l0YWxpYycpYFxuLy8vIEBzaW5jZSB0eXBlLTQuMC4wIC1cbi8vLyAtIE5FVzogQWRkZWQgdG8gZXh0cmFjdCB2YXJpYW50LWRhdGEgZnJvbSBhIGZvbnQtbWFwXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAZ3JvdXAgdHlwZS1oZWxwZXJzXG4vLy9cbi8vLyBAcGFyYW0ge21hcH0gJGZvbnQgLVxuLy8vICAgQSBtYXAgb2YgYWxsIHRoZSBkYXRhIGZvciBhIHNpbmdsZSBmb250LlxuLy8vIEByZXR1cm4ge21hcH0gLVxuLy8vICAgT25seSB0aGUgdmFyaWFudHMgcHJvdmlkZWQgaW4gdGhlIGdpdmVuIGZvbnQtbWFwLlxuQGZ1bmN0aW9uIF9hX2ZvbnQtZ2V0LXZhcmlhbnRzKFxuICAkZm9udFxuKSB7XG4gICR2YXItb3B0aW9uczogam9pbigkX2FfRk9OVC1TVFlMRVMsICRfYV9GT05ULVdFSUdIVFMpO1xuICAkdmFyLW9wdGlvbnM6IGFwcGVuZCgkdmFyLW9wdGlvbnMsICdub3JtYWwnKTtcbiAgJHZhcmlhbnRzOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGZvbnQge1xuICAgIC8vIGdldCB0aGUgZmlyc3Qgc2V0dGluZywgYW5kIG1ha2Ugc3VyZSBpdCdzIGEgc3RyaW5n4oCmXG4gICAgJGZpcnN0OiAnI3tudGgoJGtleSwgMSl9JztcbiAgICAkZmlyc3Q6IGlmKHN0ci1pbmRleCgkZmlyc3QsICcgJyksIG50aChfYV9zcGxpdCgkZmlyc3QsICcgJyksIDEpLCAkZmlyc3QpO1xuXG4gICAgLy8gaWYgaXQncyBhIHZhcmlhbnQsIGFkZCBpdCB0byB0aGUgbGlzdOKAplxuICAgIEBpZiBpbmRleCgkdmFyLW9wdGlvbnMsICRmaXJzdCkge1xuICAgICAgJHZhcmlhbnRzOiBtYXAtbWVyZ2UoJHZhcmlhbnRzLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFyaWFudHM7XG59XG5cblxuLy8gSW1wb3J0IEZvbnQtRmFjZSBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBDb21waWxlIHByb3ZpZGVkIGZvbnQtdmFyaWFudCBkYXRhIGludG8gYVxuLy8vIENTUyBgQGZvbnQtZmFjZWAgaW1wb3J0LlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQGdyb3VwIHR5cGUtaGVscGVyc1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIEBpbmNsdWRlIF9hX2ltcG9ydC1mb250LWZhY2UoXG4vLy8gICAgICRuYW1lOiAnRnJhbmtsaW4gR290aGljJyxcbi8vLyAgICAgJHdlaWdodDogJ25vcm1hbCcsXG4vLy8gICAgICRzdHlsZTogJ25vcm1hbCcsXG4vLy8gICAgICRkYXRhOiAoXG4vLy8gICAgICAgJ2xvY2FsJzogJ0ZyYW5rbGluIEdvdGhpYycgKCdmcmFua2xpbi1nb3RoaWMnKSxcbi8vLyAgICAgICAnd29mZjInOiAncGF0aC90by9mcmFua2xpbi1ib2xkaXRhbGljLWZvbnQud29mZjInLFxuLy8vICAgICAgICd0dGYnOiAncGF0aC90by9mcmFua2xpbi1ib2xkaXRhbGljLWZvbnQudHRmJyxcbi8vLyAgICAgKVxuLy8vICAgKTtcbi8vL1xuLy8vIEBwYXJhbSB7c3RyaW5nfSAkbmFtZSAtXG4vLy8gICBUaGUgZm9udCBuYW1lLlxuLy8vIEBwYXJhbSB7c3RyaW5nfSAkd2VpZ2h0IC1cbi8vLyAgIFRoZSBmb250LXdlaWdodCBwcm9wZXJ0eSxcbi8vLyAgIGUuZy4gYGJvbGRgIG9yIGAzMDBgLlxuLy8vIEBwYXJhbSB7c3RyaW5nfSAkc3R5bGUgLVxuLy8vICAgVGhlIGZvbnQtc3R5bGUgcHJvcGVydHksXG4vLy8gICBlLmcuIGBub3JtYWxgIG9yIGBpdGFsaWNgLlxuLy8vIEBwYXJhbSB7bWFwfSAkZGF0YSAtXG4vLy8gICBQYXRoIHRvIHRoZSBmb250IGZpbGVzIChsZWF2aW5nIG9mZiB0aGUgZmlsZS1mb3JtYXQgZXh0ZW5zaW9uKSxcbi8vLyAgIG9yIG1hcCBvZiBmb3JtYXQvcGF0aCBwYWlycy5cbi8vLyBAcGFyYW0ge2xpc3QgfCBudWxsfSA8a2V5Pi51bmljb2RlLXJhbmdlIC1cbi8vLyAgIE9wdGlvbmFsbHkgaW1wb3J0IG9ubHkgc3BlY2lmaWMgdW5pY29kZSByYW5nZXMuXG4vLy8gICBTZWUgW01ETiB1bmljb2RlLXJhbmdlIGRvY3VtZW50YXRpb25dW3VuaWNvZGVdIGZvciBkZXRhaWxzLlxuLy8vXG4vLy8gICBbdW5pY29kZV06IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9AZm9udC1mYWNlL3VuaWNvZGUtcmFuZ2Vcbi8vLyBAb3V0cHV0IGBAZm9udC1mYWNlYCBDU1MtYmxvY2sgZm9yIGltcG9ydGluZyBhIGdpdmVuIGZvbnQgdmFyaWFudC5cbi8vLyBAdGhyb3dzIFdoZW4gYSBnZW5lcmljIHZhcmlhbnQtcGF0aCBpcyBwcm92aWRlZFxuLy8vICAgd2l0aG91dCBmb3JtYXRzIGZvciBpbnRlcnBvbGF0aW9uLlxuQG1peGluIF9hX2ltcG9ydC1mb250LWZhY2UoXG4gICRuYW1lLFxuICAkd2VpZ2h0LFxuICAkc3R5bGUsXG4gICRkYXRhLFxuICAkdW5pY29kZTogbnVsbFxuKSB7XG4gIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2YgZW90IHdpdGggbG9jYWwgb3IgZGF0YVxuICAkZW90OiBtYXAtZ2V0KCRkYXRhLCAnZW90Jyk7XG4gICRsb2NhbDogbWFwLWdldCgkZGF0YSwgJ2xvY2FsJyk7XG4gICRkb3VibGU6IGZhbHNlO1xuXG4gIEBpZiAkZW90IHtcbiAgICAkZW90OiBfYV9mb250LXVybCgkZW90LCAnZW90Jyk7XG4gICAgJGVvdDogZm9udC11cmwoJGVvdCk7XG5cbiAgICBAaWYgKG5vdCBzdHItaW5kZXgoJGVvdCwgJ2RhdGE6JykpIHtcbiAgICAgIEBlYWNoICRmb3JtYXQsICR1cmwgaW4gJGRhdGEge1xuICAgICAgICAkaGFzLWRhdGE6ICgoJGZvcm1hdCAhPSAnbG9jYWwnKSBhbmQgc3RyLWluZGV4KCR1cmwsICdkYXRhOicpKTtcblxuICAgICAgICBAaWYgKCRmb3JtYXQgPT0gJ2xvY2FsJykgb3IgJGhhcy1kYXRhIHtcbiAgICAgICAgICAkZG91YmxlOiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRm9ybWF0IHZhbHVlcyBmb3IgQ1NTXG4gICRuYW1lOiBxdW90ZSgkbmFtZSk7XG4gICRzdHlsZTogdW5xdW90ZSgkc3R5bGUpO1xuICAkd2VpZ2h0OiB1bnF1b3RlKCR3ZWlnaHQpO1xuXG4gIEBpZiAkdW5pY29kZSB7XG4gICAgJG5ldzogKCk7XG5cbiAgICBAZWFjaCAkY29kZSBpbiAkdW5pY29kZSB7XG4gICAgICAkbmV3OiBhcHBlbmQoJG5ldywgdW5xdW90ZSgkY29kZSksICdjb21tYScpO1xuICAgIH1cblxuICAgICR1bmljb2RlOiAkbmV3O1xuICB9XG5cbiAgLy8gT3V0cHV04oCmXG4gIEBpZiAkZG91YmxlIHtcbiAgICAkZGF0YTogbWFwLXJlbW92ZSgkZGF0YSwgJ2VvdCcpO1xuXG4gICAgLy8gaWUtb25seVxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgICB1bmljb2RlLXJhbmdlOiAkdW5pY29kZTtcbiAgICB9XG5cbiAgICAvLyBldmVyeXRoaW5nIGVsc2VcbiAgICBAZm9udC1mYWNlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAkbmFtZTtcbiAgICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgICAgc3JjOiBfYV9mb250LXNyYy1saXN0KCRkYXRhKTtcbiAgICAgIHVuaWNvZGUtcmFuZ2U6ICR1bmljb2RlO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgLy8gY29tYmluZWQgb3V0cHV0XG4gICAgQGZvbnQtZmFjZSB7XG4gICAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICAgIHNyYzogJGVvdDtcbiAgICAgIHNyYzogX2FfZm9udC1zcmMtbGlzdCgkZGF0YSk7XG4gICAgICB1bmljb2RlLXJhbmdlOiAkdW5pY29kZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEluaXRpYWwgVHlwb2dyYXBoeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuXG4kbGluazogJyY6bGluaywgJjp2aXNpdGVkJztcbiRmb2N1czogJyY6Zm9jdXMsICY6aG92ZXIsICY6YWN0aXZlJztcblxuXG5AaW5jbHVkZSBpbXBvcnQtd2ViZm9udHM7XG5cblxuXG4vLyBCYXNlXG4vLyAtLS0tXG5cbmh0bWwge1xuICBAaW5jbHVkZSBmb250LWZhbWlseSgnYm9keScpO1xuICBmb250LXNpemU6IHBlcmNlbnRhZ2Uoc2l6ZSgncm9vdCcsICdweCcpIC8gMTZweCk7XG4gIGZvbnQtc2l6ZTogY2FsYygxZW0gKyAwLjN2dyk7XG4gIGxpbmUtaGVpZ2h0OiBtYXAtZ2V0KCRyYXRpb3MsICdidW50cHJlc3MnKTtcbn1cblxuXG5cbi8vIERlZmF1bHRzXG4vLyAtLS0tLS0tLVxuXG5oMSxcbmgyLFxuaDMsXG5oNCB7XG4gIGNsZWFyOiBib3RoO1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuaDEsXG5oMiB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbmgxIHtcbiAgZm9udC1zaXplOiBjYWxjKDFyZW0gKyAydncpO1xufVxuXG5oMiB7XG4gIGZvbnQtc2l6ZTogY2FsYygxcmVtICsgMXZ3KTtcbn1cblxuaDMge1xuICBmb250LXNpemU6IGNhbGMoMXJlbSArIDAuNXZ3KTtcbn1cblxuYSB7XG4gICN7JGxpbmt9IHtcbiAgICBjb2xvcjogY29sb3IoJ2FjdGlvbicpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gICN7JGZvY3VzfSB7XG4gICAgY29sb3I6IGNvbG9yKCdmb2N1cycpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG59XG5cbnAsXG51bCxcbm9sLFxubGksXG5ibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAwLjc1cmVtIDA7XG59XG5cbnVsLFxub2wsXG5ibG9ja3F1b3RlIHtcbiAgcGFkZGluZzogMCAwLjc1cmVtO1xufVxuXG5pbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG4iLCIvLy8gIyMjIFVzaW5nIFdlYkZvbnRzXG4vLy9cbi8vLyBPbmNlIHlvdSd2ZSBjb25maWd1cmVkIHlvdXIgd2ViZm9udCBkYXRhIGludG8gYSBtYXAsXG4vLy8gdGhlc2UgdG9vbHMgd2lsbCBoZWxwIHlvdSBhY2Nlc3MgdGhlIGRhdGEgaW4gdmFyaW91cyB3YXlzOlxuLy8vIGZyb20gY3JlYXRpbmcgYEBmb250LWZhY2VgIGltcG9ydHMsXG4vLy8gdG8gY2FsbGluZyBmb250LWZhbWlsaWVzIGJ5IGFueSBnaXZlbiBhbGlhcy5cbi8vL1xuLy8vIEBncm91cCB0eXBlLWZvbnRzXG5cblxuLy8gRm9udCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vLyBSZXRyaWV2ZSBhbmQgbm9ybWFsaXplIGZvbnQgZGF0YSBmcm9tIHRoZSBgJGZvbnRzYCBtYXBcbi8vL1xuLy8vIEBzaW5jZSAyLjAuMCAtXG4vLy8gLSBCUkVBS0lORzogTm9uLW1hcCBmb250cyBhcmUgaW50ZXJwcmV0ZWQgYXMgZm9udC1zdGFja3Ncbi8vLyAtIEJSRUFLSU5HOiBOb3JtYWxpemVkIGZvbnQtZGF0YSB1c2VzIHByb3BlciBuYW1lLXF1b3RhdGlvbixcbi8vLyAgIGFuZCBpZ25vcmVzIG1pc3Npbmcgb3IgcHJpdmF0ZSBuYW1lcy9zdGFja3Ncbi8vLyBAc2luY2UgMS4wLjAgLVxuLy8vIC0gTkVXOiBQcm92aWRlZCB0byBhY2Nlc3MgYW5kIG5vcm1hbGl6ZSBhIG1hcCBvZiBmb250IGRhdGFcbi8vLyAgIGZvciBhbnkga2V5IGluIHlvdXIgZ2xvYmFsIGAkZm9udHNgIG1hcFxuLy8vIC0gTkVXOiBBY2NlcHRzIGAkc291cmNlYCBtYXAgYXJndW1lbnQsXG4vLy8gICBmb3IgY3VzdG9tIHNvdXJjZS1wYWxldHRlXG4vLy9cbi8vLyBAZ3JvdXAgdHlwZS1mb250c1xuLy8vIEBwYXJhbSB7Kn0gJGZvbnQgLVxuLy8vICAgQSBrZXkgZm9yIGFjY2Vzc2luZyB0aGUgZGVzaXJlZCBmb250IGluIGAkZm9udHNgXG4vLy8gQHBhcmFtIHttYXB9ICRzb3VyY2UgWyRmb250c10gLVxuLy8vICAgT3B0aW9uYWwgYWNjb3V0cmVtZW50LWZvcm1hdCBtYXAgb2YgZm9udHNcbi8vLyAgIHRvIHVzZSBhcyB0aGUgb3JpZ2luIHBhbGV0dGVcbi8vLyBAcmV0dXJuIHttYXB9IC1cbi8vLyAgIEEgcGFyc2VkIGFuZCBub3JtYWxpemVkIG1hcCBvZiBmb250LWRhdGFcbkBmdW5jdGlvbiBmb250KFxuICAkZm9udCxcbiAgJHNvdXJjZTogJGZvbnRzXG4pIHtcbiAgJGRhdGE6IGdldC10b2tlbigkc291cmNlLCAkZm9udCk7XG4gICRub3JtYWw6IF9hX25vcm1hbGl6ZS1mb250KCRkYXRhLCAkZm9udCwgJHNvdXJjZSk7XG4gIEByZXR1cm4gJG5vcm1hbDtcbn1cblxuXG4vLyBGb250LVVSTCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gVGhpcyBpcyBhIHdyYXBwZXIgZm9yIHRoZSBDU1MgYHVybCgpYCBmdW5jdGlvbixcbi8vLyB3aGljaCBzaW1wbHkgcHJlcGVuZHMgdGhlIGdsb2JhbCBgJGZvbnQtcGF0aGAgd2hlbiBhcHByb3ByaWF0ZS5cbi8vL1xuLy8vIEBzaW5jZSB0eXBlLTQuMC4wIC1cbi8vLyAtIEJVR0ZJWDogU3VwcG9ydHMgQmFzZTY0IGRhdGEgVVJJJ3MsIHdpdGhvdXQgcHJlcGVuZGluZyBmb250LXBhdGhcbi8vL1xuLy8vIEBncm91cCB0eXBlLWZvbnRzXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgJGZvbnQtcGF0aDogJy4uL2ZvbnRzLyc7XG4vLy8gICAkc3JjOiBmb250LXVybCgnc2Fucy9teS1zYW5zLWZvbnQud29mZjInKTtcbi8vLyAgIC8qICN7JHNyY30gKi9cbi8vL1xuLy8vIEBwYXJhbSB7c3RyaW5nfSAkcGF0aCAtXG4vLy8gICBBIHBhdGggcmVsYXRpdmUgdG8gdGhlIGZvbnRzIGRpcmVjdG9yeS5cbi8vLyBAcmV0dXJuIHtzdHJpbmd9IC1cbi8vLyAgIFRoZSBmdWxsIHBhdGggdG8gYSBmb250IGZpbGUsIGluIENTUyBgdXJsKCdteS9wYXRoJylgIGZvcm1hdC5cbkBmdW5jdGlvbiBmb250LXVybChcbiAgJHBhdGhcbikge1xuICBAaWYgbm90IHN0ci1pbmRleCgkcGF0aCwgJ2RhdGE6Jykge1xuICAgICRwYXRoOiAkZm9udC1wYXRoICsgJHBhdGg7XG4gIH1cblxuICBAcmV0dXJuIHVybChxdW90ZSgkcGF0aCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLXVybC1xdW90ZXNcbn1cblxuXG4vLyBGb250IEZhbWlseSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gQWNjZXNzIGEgZm9udC1mYW1pbHkgZnJvbSB5b3VyIGAkZm9udHNgIG1hcCxcbi8vLyB3aXRoIG5hbWUgYW5kIGZvbnQtc3RhY2suXG4vLy9cbi8vLyBAc2luY2UgMS4wLjAgLVxuLy8vIC0gTkVXOiBBY2NlcHRzIGAkc291cmNlYCBtYXAgYXJndW1lbnQsXG4vLy8gICBmb3IgY3VzdG9tIHNvdXJjZS1wYWxldHRlXG4vLy8gQHNpbmNlIHR5cGUtNC4wLjAgLVxuLy8vIC0gQlVHRklYOiBQcm92aWRlcyB0aGUgY29ycmVjdCBuYW1lIGZvciBmb250cyB3aGVuIGFuIGFsaWFzIGlzIGdpdmVuXG4vLy9cbi8vLyBAZ3JvdXAgdHlwZS1mb250c1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICRmb250czogKFxuLy8vICAgICAnc2Fucyc6IChcbi8vLyAgICAgICAnbmFtZSc6ICdGcmFua2xpbkdvdGhpYycsXG4vLy8gICAgICAgJ3N0YWNrJzogKEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYpLFxuLy8vICAgICApLFxuLy8vICAgKTtcbi8vL1xuLy8vICAgaHRtbCB7XG4vLy8gICAgIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseSgnc2FucycpO1xuLy8vICAgfVxuLy8vXG4vLy8gQHBhcmFtIHtzdHJpbmd9ICRrZXkgLVxuLy8vICAgVGhlIGtleS1uYW1lIG9mIGEgZm9udCBpbiB5b3VyIGAkZm9udHNgIG1hcC5cbi8vLyBAcGFyYW0ge21hcH0gJHNvdXJjZSBbJGZvbnRzXSAtXG4vLy8gICBPcHRpb25hbCBhY2NvdXRyZW1lbnQtZm9ybWF0IG1hcCBvZiBmb250c1xuLy8vICAgdG8gdXNlIGFzIHRoZSBvcmlnaW4gcGFsZXR0ZVxuLy8vIEByZXR1cm4ge1N0cmluZ30gLVxuLy8vICAgVGhlIGZ1bGwgZm9udC1zdGFjayBmb3IgdGhlIGdpdmVuIGZvbnQsXG4vLy8gICByZWFkeSBmb3Igb3V0cHV0IHdpdGggdGhlIGBmb250LWZhbWlseWAgcHJvcGVydHkuXG5AZnVuY3Rpb24gZm9udC1mYW1pbHkoXG4gICRrZXksXG4gICRzb3VyY2U6ICRmb250c1xuKSB7XG4gICRmb250OiBmb250KCRrZXksICRzb3VyY2UpO1xuICBAcmV0dXJuIG1hcC1nZXQoJGZvbnQsICdzdGFjaycpO1xufVxuXG5cbi8vIEZvbnQgRmFtaWx5IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBPdXRwdXQgYSBmb250LXN0YWNrIHRvIGZvbnQtZmFtaWx5IGJhc2VkIG9uIHlvdXIgYCRmb250c2AgY29uZmlndXJhdGlvbi5cbi8vL1xuLy8vIEBzaW5jZSAxLjAuMCAtXG4vLy8gLSBORVc6IEFjY2VwdHMgYCRzb3VyY2VgIG1hcCBhcmd1bWVudCxcbi8vLyAgIGZvciBjdXN0b20gc291cmNlLXBhbGV0dGVcbi8vL1xuLy8vIEBncm91cCB0eXBlLWZvbnRzXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgJGZvbnRzOiAoXG4vLy8gICAgICdGcmFua2xpbkdvdGhpYyc6IChcbi8vLyAgICAgICAnc3RhY2snOiAoSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiksXG4vLy8gICAgICksXG4vLy8gICAgICdzYW5zJzogJyNGcmFua2xpbkdvdGhpYycsXG4vLy8gICApO1xuLy8vXG4vLy8gICBodG1sIHtcbi8vLyAgICAgQGluY2x1ZGUgZm9udC1mYW1pbHkoJ3NhbnMnKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBwYXJhbSB7c3RyaW5nfSAka2V5IC1cbi8vLyAgIFRoZSBrZXktbmFtZSBvZiBhIGZvbnQgaW4geW91ciBgJGZvbnRzYCBtYXAuXG4vLy8gQHBhcmFtIHttYXB9ICRzb3VyY2UgWyRmb250c10gLVxuLy8vICAgT3B0aW9uYWwgYWNjb3V0cmVtZW50LWZvcm1hdCBtYXAgb2YgZm9udHNcbi8vLyAgIHRvIHVzZSBhcyB0aGUgb3JpZ2luIHBhbGV0dGVcbkBtaXhpbiBmb250LWZhbWlseShcbiAgJGtleSxcbiAgJHNvdXJjZTogJGZvbnRzXG4pIHtcbiAgZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCRrZXksICRzb3VyY2UpO1xufVxuXG5cbi8vIEZvbnQgRmFjZSBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8vIEltcG9ydCBhbnkgbG9jYWwgd2ViZm9udCBkZWZpbmVkIGluIHlvdXIgYCRmb250c2AgY29uZmlndXJhdGlvblxuLy8vICh2YXJpYW50cyB3aXRob3V0IGEgcGF0aCB3aWxsIG5vdCBiZSBpbXBvcnRlZCkuXG4vLy9cbi8vLyBAc2luY2UgMS4wLjAgLVxuLy8vIC0gTkVXOiBBY2NlcHRzIGAkc291cmNlYCBtYXAgYXJndW1lbnQsXG4vLy8gICBmb3IgY3VzdG9tIHNvdXJjZS1wYWxldHRlXG4vLy8gQHNpbmNlIHR5cGUtNC4wLjAgLVxuLy8vIC0gQlJFQUtJTkc6IE5vIGxvbmdlciBhY2NlcHRzIHRoZSBgJGZvcm1hdHNgIHBhcmFtZXRlclxuLy8vXG4vLy8gQGdyb3VwIHR5cGUtZm9udHNcbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkZm9udHM6IChcbi8vLyAgICAgJ2JvZHktZm9udCc6IChcbi8vLyAgICAgICAnbmFtZSc6ICdTb3VyY2UgU2FucyBQcm8nLFxuLy8vICAgICAgICdmb3JtYXRzJzogJ3dvZmYyJyAnd29mZicgJ2VvdCcsXG4vLy8gICAgICAgJ25vcm1hbCc6ICdzYW5zL3NvdXJjZXNhbnNwcm8tcmVndWxhci13ZWJmb250Jyxcbi8vLyAgICAgICAnaXRhbGljJzogJ3NhbnMvc291cmNlc2Fuc3Byby1pdGFsaWMtd2ViZm9udCcsXG4vLy8gICAgICAgJ2JvbGQnOiAnc2Fucy9zb3VyY2VzYW5zcHJvLWJvbGQtd2ViZm9udCcsXG4vLy8gICAgICksXG4vLy8gICApO1xuLy8vICAgQGluY2x1ZGUgZm9udC1mYWNlKCdib2R5LWZvbnQnKTtcbi8vL1xuLy8vIEBwYXJhbSB7c3RyaW5nfSAka2V5IC1cbi8vLyAgIFRoZSBrZXktbmFtZSBvZiBhIGZvbnQgaW4geW91ciBgJGZvbnRzYCBtYXBcbi8vLyBAcGFyYW0ge21hcH0gJHNvdXJjZSBbJGZvbnRzXSAtXG4vLy8gICBPcHRpb25hbCBhY2NvdXRyZW1lbnQtZm9ybWF0IG1hcCBvZiBmb250c1xuLy8vICAgdG8gdXNlIGFzIHRoZSBvcmlnaW4gcGFsZXR0ZVxuLy8vIEBvdXRwdXQgYEBmb250LWZhY2VgIGltcG9ydCBibG9ja3MgZm9yIGFueSBkZWZpbmVkIGZvbnQtdmFyaWFudHMuXG5AbWl4aW4gZm9udC1mYWNlKFxuICAka2V5LFxuICAkc291cmNlOiAkZm9udHNcbikge1xuICAkZm9udDogZm9udCgka2V5LCAkc291cmNlKTtcbiAgJHZhcmlhbnRzOiBfYV9mb250LWdldC12YXJpYW50cygkZm9udCk7XG4gICRuYW1lOiBtYXAtZ2V0KCRmb250LCAnbmFtZScpO1xuXG4gIEBpZiAobGVuZ3RoKCR2YXJpYW50cykgPiAwKSB7XG4gICAgJHVuaWNvZGU6IG1hcC1nZXQoJGZvbnQsICd1bmljb2RlLXJhbmdlJyk7XG5cbiAgICBAZWFjaCAkdmFyaWFudCwgJGRhdGEgaW4gJHZhcmlhbnRzIHtcbiAgICAgICR3ZWlnaHQ6IG50aCgkdmFyaWFudCwgMSk7XG4gICAgICAkc3R5bGU6IG50aCgkdmFyaWFudCwgMik7XG4gICAgICBAaW5jbHVkZSBfYV9pbXBvcnQtZm9udC1mYWNlKCRuYW1lLCAkd2VpZ2h0LCAkc3R5bGUsICRkYXRhLCAkdW5pY29kZSk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gSW1wb3J0IFdlYkZvbnRzIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gRmluZCBhbGwgdGhlIGZvbnRzIHRoYXQgaW5jbHVkZSBkYXRhIGZvciBpbXBvcnRzLFxuLy8vIGFuZCBnZW5lcmF0ZSBgQGZvbnQtZmFjZWAgYmxvY2tzIGZvciBlYWNoIGluZGl2aWR1YWwgZm9udCBhbmQgdmFyaWFudC5cbi8vL1xuLy8vIEBzaW5jZSAyLjAuMCAtXG4vLy8gLSBORVc6IEFjY2VwdHMgYCRzb3VyY2VgIHBhcmFtZXRlcixcbi8vLyAgIHdoaWNoIHVzZXMgZ2xvYmFsIGAkZm9udHNgIGJ5IGRlZmF1bHRcbi8vLyAtIEJSRUFLSU5HOiBObyBsb25nZXIgaW1wb3J0cyBwcml2YXRlIGZvbnRzLFxuLy8vICAgYnV0IHdpbGwgaW1wb3J0IGEgZGlyZWN0IGFsaWFzIG9mIHRoZSBwcml2YXRlIGZvbnRcbi8vLyBAc2luY2UgMS4wLjAgLVxuLy8vIC0gQlJFQUtJTkc6IE5vIGxvbmdlciBhY2NlcHRzIHRoZSBgJGZvbnRzYCBwYXJhbWV0ZXJcbi8vLyBAc2luY2UgdHlwZS00LjAuMCAtXG4vLy8gLSBCUkVBS0lORzogTm8gbG9uZ2VyIGFjY2VwdHMgdGhlIGAkZm9ybWF0c2AgcGFyYW1ldGVyXG4vLy9cbi8vLyBAZ3JvdXAgdHlwZS1mb250c1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICRmb250czogKFxuLy8vICAgICAnYm9keS1mb250JzogKFxuLy8vICAgICAgICduYW1lJzogJ1NvdXJjZSBTYW5zIFBybycsXG4vLy8gICAgICAgJ2Zvcm1hdHMnOiAnd29mZjInICd3b2ZmJyAnZW90Jyxcbi8vLyAgICAgICAnbm9ybWFsJzogJ3NhbnMvc291cmNlc2Fuc3Byby1yZWd1bGFyLXdlYmZvbnQnLFxuLy8vICAgICAgICdpdGFsaWMnOiAnc2Fucy9zb3VyY2VzYW5zcHJvLWl0YWxpYy13ZWJmb250Jyxcbi8vLyAgICAgICAnYm9sZCc6ICdzYW5zL3NvdXJjZXNhbnNwcm8tYm9sZC13ZWJmb250Jyxcbi8vLyAgICAgKSxcbi8vLyAgICAgLy8gYWxpYXMga2V5cywgYW5kIGZvbnRzIHdpdGhvdXQgcGF0aCBkYXRhIHdpbGwgYmUgaWdub3JlZOKAplxuLy8vICAgICAnYWxpYXMnOiAnI2JvZHktZm9udCcsXG4vLy8gICAgICdnb29nbGUtZm9udCc6IChcbi8vLyAgICAgICAnc291cmNlJzogJ2h0dHBzOi8vZm9udHMuZ29vZ2xlLmNvbS8nLFxuLy8vICAgICApLFxuLy8vICAgKTtcbi8vLyAgIEBpbmNsdWRlIGltcG9ydC13ZWJmb250cztcbi8vL1xuLy8vIEBwYXJhbSB7bWFwfSAkc291cmNlIFskZm9udHNdIC1cbi8vLyAgIE9wdGlvbmFsIGFjY291dHJlbWVudC1mb3JtYXQgbWFwIG9mIGZvbnRzXG4vLy8gICB0byB1c2UgYXMgdGhlIG9yaWdpbiBwYWxldHRlXG4vLy8gQG91dHB1dCBBbnkgbnVtYmVyIG9mIGBAZm9udC1mYWNlYCBibG9ja3MuXG5AbWl4aW4gaW1wb3J0LXdlYmZvbnRzKFxuICAkc291cmNlOiAkZm9udHNcbikge1xuICBAZWFjaCAka2V5LCAkZm9udCBpbiAkc291cmNlIHtcbiAgICBAaWYgbm90IGlzLWFsaWFzLWZvcigkc291cmNlLCAka2V5KSBhbmQgbm90IGlzLXByaXZhdGUtdG9rZW4oJGtleSkge1xuICAgICAgQGluY2x1ZGUgZm9udC1mYWNlKCRrZXkpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm9udHMgQ29uZmlnXG4vLyA9PT09PT09PT09PT1cblxuJGZvbnQtcGF0aDogJ2Fzc2V0cy9mb250cy8nO1xuXG5cbi8vIFRpdGxlIEZvbnRcbi8vIC0tLS0tLS0tLVxuLy8vIEhlbGxvIHRpdGxlIGZvbnQuLi5cbi8vLyBAcHJldmlldyBmb250LXNwZWNpbWVuOyBrZXk6IHRpdGxlXG4kdGl0bGUtZm9udDogKFxuICAnbmFtZSc6ICdhbWF0aWMnLFxuICAnc3RhY2snOiAoJ2F6by1zYW5zLXdlYicsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYpLFxuICAnZm9ybWF0cyc6ICgnd29mZjInLCAnd29mZicsICd0dGYnKSxcbiAgJ3JlZ3VsYXInOiAnYW1hdGljc2MtcmVndWxhci13ZWJmb250JyxcbiAgJ2JvbGQnOiAnYW1hdGljLWJvbGQtd2ViZm9udCcsXG4pO1xuXG5AaW5jbHVkZSBhZGQtZm9udCgndGl0bGUnLCAkdGl0bGUtZm9udClcbkBpbmNsdWRlIGhlcm1hbi1hZGQoJ2ZvbnQnLCAndGl0bGUnLCAkdGl0bGUtZm9udCk7XG5cblxuLy8gQm9keSBGb250XG4vLyAtLS0tLS0tLS1cbi8vLyBoZWxsbyBib2R5IGZvbnQuLi5cbi8vLyBAcHJldmlldyBmb250LXNwZWNpbWVuOyBrZXk6IGJvZHlcbiRib2R5LWZvbnQ6IChcbiAgJ25hbWUnOiAnYXpvLXNhbnMtd2ViJyxcbiAgJ3N0YWNrJzogKCdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYpLFxuKTtcblxuQGluY2x1ZGUgYWRkLWZvbnQoJ2JvZHknLCAkYm9keS1mb250KTtcbkBpbmNsdWRlIGhlcm1hbi1hZGQoJ2ZvbnQnLCAnYm9keScsICRib2R5LWZvbnQpO1xuXG5cbi8vIENvZGUgRm9udFxuLy8gLS0tLS0tLS0tXG4vLy8gaGVsbG8gY29kZSBmb250Li4uXG4vLy8gQHByZXZpZXcgZm9udC1zcGVjaW1lbjsga2V5OiBjb2RlXG4kY29kZS1mb250OiAoXG4gICduYW1lJzogJ0NvbnNvbGFzJyxcbiAgJ3N0YWNrJzogKE1lbmxvLCBNb25hY28sICdMdWNpZGEgQ29uc29sZScsICdMaWJlcmF0aW9uIE1vbm8nLCAnRGVqYVZ1IFNhbnMgTW9ubycsICdCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8nLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2UpLFxuKTtcblxuQGluY2x1ZGUgYWRkLWZvbnQoJ2NvZGUnLCAkY29kZS1mb250KTtcbkBpbmNsdWRlIGhlcm1hbi1hZGQoJ2ZvbnQnLCAnY29kZScsICRjb2RlLWZvbnQpO1xuIiwiLy8gU2NhbGUgQ29uZmlndXJhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIFJhdGlvc1xuLy8gLS0tLS0tXG5cbiRyYXRpb3M6IChcbiAgJ2J1bnRwcmVzcyc6IDEuNSxcbik7XG5cblxuXG4vLyBTaXplc1xuLy8gLS0tLS1cblxuJHNpemVzOiAoXG4gICdyb290JzogMjBweCxcbiAgJ3JoeXRobSc6ICcjcm9vdCcgKCdidW50cHJlc3MnOiAxKSxcblxuICAnc21hbGwnOiAnI3Jvb3QnICgnYnVudHByZXNzJzogLTAuNzUpLFxuICAnbGFyZ2UnOiAnI3Jvb3QnICgnYnVudHByZXNzJzogMSksXG4gICdsYXJnZXInOiAnI3Jvb3QnICgnYnVudHByZXNzJzogMiksXG5cbiAgJ2d1dHRlcic6ICcjcmh5dGhtJyxcbiAgJ3NoaW0nOiAnI2d1dHRlcicgKCdsaW5lYXInOiAwLjUpLFxuICAnaGFsZi1zaGltJzogJyNndXR0ZXInICgnbGluZWFyJzogMC4yNSksXG5cbiAgJ2Nvcm5lcnMnOiA2cHgsXG4gICdwYWdlJzogNTByZW0sXG5cbiAgJ3NtYWxsLXNjcmVlbic6IDMwcmVtLFxuKTtcblxuQG1peGluIGZvbnQtc2l6ZSgkc2l6ZSkge1xuICBmb250LXNpemU6IHNpemUoJHNpemUpO1xufVxuIiwiLy8vICMgQ29sb3IgVXRpbGl0eSBGdW5jdGlvbnNcbi8vLyBAZ3JvdXAgY29sb3ItdXRpbHNcblxuXG4vLyBUaW50XG4vLyAtLS0tXG4vLy8gTWl4IGEgY29sb3Igd2l0aCBgY29udHJhc3QtbGlnaHRgXG4vLy8gKGRlZmF1bHRzIHRvIGB3aGl0ZWApXG4vLy8gdG8gZ2V0IGEgbGlnaHRlciB0aW50IG9mIHlvdXIgY29sb3IuXG4vLy8gTWFrZSBzdXJlIHRvIG92ZXJyaWRlIGAkbGlnaHRgIHdoZW4gdXNpbmcgYHRpbnRgXG4vLy8gdG8gZGVmaW5lIHRoZSB2YWx1ZSBvZiBgY29udHJhc3QtbGlnaHRgXG4vLy9cbi8vLyBAc2luY2UgMi4wLjAgLVxuLy8vIC0gQlJFQUtJTkc6IFVzZSBgY29udHJhc3QtbGlnaHRgIGZvciBkZWZhdWx0IG1peCwgcmF0aGVyIHRoYW4gYHdoaXRlYC5cbi8vLyAtIE5FVzogQWNjZXB0IGAkbGlnaHRgIGNvbG9yIHRvIHVzZSBpbiBwbGFjZSBvZiBgY29udHJhc3QtbGlnaHRgIGRlZmF1bHRcbi8vL1xuLy8vIEBncm91cCBjb2xvci11dGlsc1xuLy8vXG4vLy8gQHBhcmFtIHtzdHJpbmcgfCBsaXN0fSAkY29sb3IgLVxuLy8vICAgVGhlIG5hbWUgb2YgYSBjb2xvciBpbiB5b3VyIHBhbGV0dGUsXG4vLy8gICB3aXRoIG9wdGlvbmFsIGFkanVzdG1lbnRzIGluIHRoZSBmb3JtIG9mIGAoPGZ1bmN0aW9uLW5hbWU+OiA8YXJncz4pYC5cbi8vLyBAcGFyYW0ge3BlcmNlbnRhZ2V9ICRwZXJjZW50YWdlIC1cbi8vLyAgIFRoZSBwZXJjZW50YWdlIG9mIGEgYCRsaWdodGAgY29sb3IgdG8gbWl4IGluLlxuLy8vICAgSGlnaGVyIHBlcmNlbnRhZ2VzIHdpbGwgcmVzdWx0IGluIGEgbGlnaHRlciB0aW50LlxuLy8vIEBwYXJhbSB7Y29sb3IgfCBTdHJpbmd9ICRsaWdodCBbbnVsbF0gLVxuLy8vICAgVGhlIGxpZ2h0ZXIgY29sb3IgdG8gYmUgbWl4ZWQgaW4gZm9yIHRpbnRpbmcuXG4vLy8gQHJldHVybiB7Y29sb3J9IC1cbi8vLyAgIEEgY2FsY3VsYXRlZCBjc3MtcmVhZHkgY29sb3ItdmFsdWUgYmFzZWQgb24geW91ciBnbG9iYWwgY29sb3IgcGFsZXR0ZS5cbkBmdW5jdGlvbiB0aW50KFxuICAkY29sb3IsXG4gICRwZXJjZW50YWdlLFxuICAkbGlnaHQ6IG51bGxcbikge1xuICAkbGlnaHQ6ICRsaWdodCBvciBfYV9kZWZhdWx0LWNvbnRyYXN0KCdsaWdodCcpO1xuICBAcmV0dXJuIG1peChjb2xvcigkbGlnaHQpLCBjb2xvcigkY29sb3IpLCAkcGVyY2VudGFnZSk7XG59XG5AaW5jbHVkZSBfYV9yZWdpc3Rlci1mdW5jdGlvbigndGludCcpO1xuXG5cbi8vIFNoYWRlXG4vLyAtLS0tLVxuLy8vIE1peCBhIGNvbG9yIHdpdGggYGNvbnRyYXN0LWRhcmtgXG4vLy8gKGRlZmF1bHRzIHRvIGBibGFja2ApXG4vLy8gdG8gZ2V0IGEgZGFya2VyIHNoYWRlIG9mIHlvdXIgY29sb3IuXG4vLy8gTWFrZSBzdXJlIHRvIG92ZXJyaWRlIGAkZGFya2Agd2hlbiB1c2luZyBgc2hhZGVgXG4vLy8gdG8gZGVmaW5lIHRoZSB2YWx1ZSBvZiBgY29udHJhc3QtZGFya2Bcbi8vL1xuLy8vIEBzaW5jZSAyLjAuMCAtXG4vLy8gLSBCUkVBS0lORzogVXNlIGBjb250cmFzdC1kYXJrYCBmb3IgbWl4LCByYXRoZXIgdGhhbiBgYmxhY2tgXG4vLy8gLSBORVc6IEFjY2VwdCBgJGRhcmtgIGNvbG9yIHRvIHVzZSBpbiBwbGFjZSBvZiBgY29udHJhc3QtZGFya2AgZGVmYXVsdFxuLy8vXG4vLy8gQGdyb3VwIGNvbG9yLXV0aWxzXG4vLy9cbi8vLyBAcGFyYW0ge3N0cmluZyB8IGxpc3R9ICRjb2xvciAtXG4vLy8gICBUaGUgbmFtZSBvZiBhIGNvbG9yIGluIHlvdXIgcGFsZXR0ZSxcbi8vLyAgIHdpdGggb3B0aW9uYWwgYWRqdXN0bWVudHMgaW4gdGhlIGZvcm0gb2YgYCg8ZnVuY3Rpb24tbmFtZT46IDxhcmdzPilgLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHBlcmNlbnRhZ2UgLVxuLy8vICAgVGhlIHBlcmNlbnRhZ2Ugb2YgYSBgJGRhcmtgIGNvbG9yIHRvIG1peCBpbi5cbi8vLyAgIEhpZ2hlciBwZXJjZW50YWdlcyB3aWxsIHJlc3VsdCBpbiBhIGxpZ2h0ZXIgdGludC5cbi8vLyBAcGFyYW0ge2NvbG9yIHwgU3RyaW5nfSAkZGFyayBbbnVsbF0gLVxuLy8vICAgVGhlIGRhcmtlciBjb2xvciB0byBiZSBtaXhlZCBpbiBmb3Igc2hhZGluZy5cbi8vLyBAcmV0dXJuIHtjb2xvcn0gLVxuLy8vICAgQSBjYWxjdWxhdGVkIGNzcy1yZWFkeSBjb2xvci12YWx1ZSBiYXNlZCBvbiB5b3VyIGdsb2JhbCBjb2xvciBwYWxldHRlLlxuQGZ1bmN0aW9uIHNoYWRlKFxuICAkY29sb3IsXG4gICRwZXJjZW50YWdlLFxuICAkZGFyazogbnVsbFxuKSB7XG4gICRkYXJrOiAkZGFyayBvciBfYV9kZWZhdWx0LWNvbnRyYXN0KCdkYXJrJyk7XG4gIEByZXR1cm4gbWl4KGNvbG9yKCRkYXJrKSwgY29sb3IoJGNvbG9yKSwgJHBlcmNlbnRhZ2UpO1xufVxuQGluY2x1ZGUgX2FfcmVnaXN0ZXItZnVuY3Rpb24oJ3NoYWRlJyk7XG4iLCIvLyBTaXRlIE1lc3NhZ2Vcbi8vID09PT09PT09PT09PVxuXG4kbWVzc2FnZS1ncmFkaWVudDpcbiAgY29sb3IoJ2NhbGxvdXQnKSA0OS45JSxcbiAgY29sb3IoJ2JhY2tncm91bmQnKSA1MCUsXG47XG5cbi5zaXRlLW1lc3NhZ2VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoJ2NhbGxvdXQnKTtcbiAgcGFkZGluZzogc2l6ZSgnZ3V0dGVyJyk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIEBpbmNsdWRlIGFmdGVyKCcgJykge1xuICAgIEBpbmNsdWRlIHN0cmV0Y2goMTAwJSwgMCwgYXV0bywgMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSByaWdodCwgJG1lc3NhZ2UtZ3JhZGllbnQpO1xuICAgIGhlaWdodDogc2l6ZSgnZ3V0dGVyJyk7XG4gIH1cblxuICBAaW5jbHVkZSBhYm92ZSgnc21hbGwtc2NyZWVuJykge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgnbGFyZ2UnKTtcbiAgfVxufVxuIiwiLy8vICMgQ29yZSBQYXJzZXJcbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuXG4vLyBHZXRcbi8vIC0tLVxuLy8vIEFkZHMgdmFsdWUvZG8gZnVuY3Rpb25hbGl0eVxuLy8vIHRvIHRoZSB2YWx1ZS1wYXJzaW5nIHBvd2VyIG9mIGBfYV9wYXJzZSgpYC5cbi8vLyBGdW5jdGlvbnMgY2FuIGJlIGFkZGVkIGFzIGEgbWFwIGF0IHRoZSBlbmQgb2YgYSB2YWx1ZSAtLVxuLy8vIGJ1dCBzb21lIHVzZS1jYXNlcyBtYXkgY29uZnVzZSB0aGUgcGFyc2VyLFxuLy8vIHNvIHdlIHByb3ZpZGUgYSBtb3JlIGV4cGxpY2l0IG1hcCBvcHRpb24gd2l0aCBhIGB2YWx1ZWAga2V5LFxuLy8vIGZvbGxvd2VkIGJ5IGZ1bmN0aW9ucyBhbmQgYXJncy5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHttYXB9ICRtYXAgLVxuLy8vICAgQSBtYXAgb2YgdG9rZW4gZGVmaW5pdGlvbnMgdG8gcmVmZXJlbmNlIGFnYWluc3Rcbi8vLyBAcGFyYW0geyp9ICRrZXkgLVxuLy8vICAgTWFwIGFjY2VzcyBrZXkgZm9yIHBhcnNpbmdcbi8vLyBAcmV0dXJuIHsqfSAtXG4vLy8gICBGaW5hbCBwYXJzZWQgYW5kIGFkanVzdGVkIHZhbHVlIGZyb20gdGhlIG9yaWdpbmFsIG1hcFxuQGZ1bmN0aW9uIF9hX2dldChcbiAgJG1hcCxcbiAgJGtleSxcbikge1xuICAkdHlwZTogdHlwZS1vZigka2V5KTtcbiAgJGRvOiBudWxsO1xuICAkdmFsdWU6ICRrZXk7XG5cbiAgLy8gYnJlYWsgb3V0IGBkb2AgbWFwc+KAplxuICBAaWYgKCR0eXBlID09ICdtYXAnKSBhbmQgKG50aChtYXAta2V5cygka2V5KSwgMSkgPT0gJyV2YWx1ZScpIHtcbiAgICAkdmFsdWU6IG1hcC1nZXQoJGtleSwgJyV2YWx1ZScpO1xuICAgICRkbzogbWFwLXJlbW92ZSgka2V5LCAnJXZhbHVlJyk7XG4gIH0gQGVsc2UgaWYgaW5kZXgoJ2xpc3QnICdhcmdsaXN0JywgJHR5cGUpIHtcbiAgICAkZmluYWw6IG50aCgka2V5LCAtMSk7XG5cbiAgICBAaWYgKGxlbmd0aCgka2V5KSA+IDEpIGFuZCAodHlwZS1vZigkZmluYWwpID09ICdtYXAnKSB7XG4gICAgICAkZG86ICRmaW5hbDtcbiAgICAgICR2YWx1ZTogX2FfcmVtb3ZlLW50aCgka2V5LCAtMSk7XG4gICAgICAkdmFsdWU6IGlmKGxlbmd0aCgkdmFsdWUpID09IDEsIG50aCgkdmFsdWUsIDEpLCAkdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlc29sdmUgYW55ICNhbGlhcyB0YWdz4oCmXG4gICR2YWx1ZTogX2FfcGFyc2UoJG1hcCwgJHZhbHVlKTtcblxuICAvLyBtYWtlIGFueSBuZWNlc3NhcnkgYWRqdXN0bWVudHPigKZcbiAgJHZhbHVlOiBfYV9kby1lYWNoKCRtYXAsICR2YWx1ZSwgJGRvKTtcblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuXG4vLyBQYXJzZVxuLy8gLS0tLS1cbi8vLyBIYW5kbGVzIHJlY3Vyc2l2ZSBwYXJzaW5nIGZvciBsaXN0L21hcCB2YWx1ZXMuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bWFwfSAkaGF5c3RhY2sgLVxuLy8vICAgQSBtYXAgb2YgdGVybXMgdG8gcmVmZXJlbmNlIHRhZ3MgYWdhaW5zdFxuLy8vIEBwYXJhbSB7Kn0gJG5lZWRsZSAtXG4vLy8gICBUaGUgb3JpZ2luYWwgdmFsdWUgdG8gYmUgcGFyc2VkIGZvciBgI2FsaWFzYCB0YWdzXG4vLy8gQHJldHVybiB7Kn0gLVxuLy8vICAgVXBkYXRlZCBgJG5lZWRsZWAgdmFsdWVcbi8vLyAgIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgb3JpZ2luYWwsXG4vLy8gICBidXQgd2l0aCBhbGwgYCNhbGlhc2AgdGFncyByZXBsYWNlZFxuQGZ1bmN0aW9uIF9hX3BhcnNlKFxuICAkaGF5c3RhY2ssXG4gICRuZWVkbGVcbikge1xuICAkdHlwZTogdHlwZS1vZigkbmVlZGxlKTtcblxuICAvLyBoYW5kbGUgbGlzdCB2YWx1ZXPigKZcbiAgQGlmIGluZGV4KCdsaXN0JyAnYXJnbGlzdCcsICR0eXBlKSB7XG4gICAgJG5ldzogX2FfbGlzdC10ZW1wbGF0ZSgkbmVlZGxlKTtcblxuICAgIC8vIGhhbmRsZSBlYWNoIGl0ZW0gaW4gdGhlIGxpc3TigKZcbiAgICBAZWFjaCAkYml0IGluICRuZWVkbGUge1xuICAgICAgJG5ldzogYXBwZW5kKCRuZXcsIF9hX2dldCgkaGF5c3RhY2ssICRiaXQpKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRuZXc7XG4gIH1cblxuICAvLyBoYW5kbGUgbWFwIHZhbHVlc+KAplxuICBAaWYgKCR0eXBlID09ICdtYXAnKSB7XG4gICAgJG5ldzogKCk7XG5cbiAgICAvLyBoYW5kbGUgZWFjaCB2YWx1ZSBpbiB0aGUgbWFw4oCmXG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRuZWVkbGUge1xuICAgICAgJG5ldy1rZXk6IF9hX2dldCgkaGF5c3RhY2ssICRrZXkpO1xuICAgICAgJG5ldy12YWx1ZTogX2FfZ2V0KCRoYXlzdGFjaywgJHZhbHVlKTtcblxuICAgICAgJG5ldzogbWFwLW1lcmdlKCRuZXcsICgkbmV3LWtleTogJG5ldy12YWx1ZSkpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJG5ldztcbiAgfVxuXG4gIEBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAkbmVlZGxlOiBfYV9yZXBsYWNlKCRoYXlzdGFjaywgJG5lZWRsZSk7XG4gIH1cblxuICBAcmV0dXJuICRuZWVkbGU7XG59XG5cblxuLy8gUmVwbGFjZVxuLy8gLS0tLS0tLVxuLy8vIFNlYXJjaCBmb3IgYCNhbGlhc2AgbWVudGlvbnMgd2l0aGluIGEgc3RyaW5nLFxuLy8vIGFuZCByZXR1cm4gdGhlIHN0cmluZyB3aXRoIGFsaWFzZXMgcmVwbGFjZWQuXG4vLy9cbi8vLyBAc2luY2UgMi4wLjAgLVxuLy8vIC0gTkVXOiBIYW5kbGVzIGFjY2VzcyB0byBuZXN0ZWQtbWFwIHRva2Vuc1xuLy8vICAgdXNpbmcgdGhlIGhhc2h0YWcgYCcjZmlyc3QtPnNlY29uZC0+dGhpcmQnYCBzeW50YXhcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHttYXB9ICRoYXlzdGFjayAtXG4vLy8gICBBIG1hcCBvZiB0ZXJtcyB0byByZWZlcmVuY2UgdGFncyBhZ2FpbnN0XG4vLy8gQHBhcmFtIHtzdHJpbmd9ICRzdHJpbmcgLVxuLy8vICAgVGhlIG9yaWdpbmFsIHN0cmluZyB0byBiZSBwYXJzZWQgZm9yIGAjYWxpYXNgIHRhZ3Ncbi8vLyBAcmV0dXJuIHsqfSAtXG4vLy8gICBJbnB1dCAkc3RyaW5nLCB3aXRoICNhbGlhcyBtZW50aW9ucyByZXBsYWNlZFxuQGZ1bmN0aW9uIF9hX3JlcGxhY2UoXG4gICRoYXlzdGFjayxcbiAgJHN0cmluZ1xuKSB7XG4gICRoYXNoZGV4OiBzdHItaW5kZXgoJHN0cmluZywgJyMnKTtcblxuICAvLyByZXBsYWNlIGFsaWFzZXPigKZcbiAgQGlmICRoYXNoZGV4IHtcbiAgICAkZGVlcDogc3RyLWluZGV4KCRzdHJpbmcsICctPicpIG9yIDA7XG4gICAgJGhheXN0YWNrOiBpZigoJGRlZXAgPiAkaGFzaGRleCksIF9hX2ZsYXQtc291cmNlKCRoYXlzdGFjayksICRoYXlzdGFjayk7XG5cbiAgICAvLyBjaGVjayBsb25nZXN0IGtleXMgZmlyc3QsIGluIGNhc2Ugb2Ygb3ZlcmxhcFxuICAgIEBlYWNoICRrZXkgaW4gX2Ffc3RyLWxlbmd0aC1zb3J0KG1hcC1rZXlzKCRoYXlzdGFjaykpIHtcbiAgICAgICRoYXNoOiAnIyN7JGtleX0nO1xuXG4gICAgICBAaWYgKHR5cGUtb2YoJHN0cmluZykgPT0gJ3N0cmluZycpIGFuZCBzdHItaW5kZXgoJHN0cmluZywgJGhhc2gpIHtcbiAgICAgICAgJG5ldzogZ2V0LXRva2VuKCRoYXlzdGFjaywgJGtleSk7XG4gICAgICAgICRzdHJpbmc6IF9hX3N0ci1yZXBsYWNlKCRzdHJpbmcsICRoYXNoLCAkbmV3LCAnYWxsJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3RyaW5nO1xufVxuXG5cbi8vIERvIEVhY2hcbi8vIC0tLS0tLS1cbi8vLyBBIHdyYXBwZXIgZm9yIGNhbGxpbmcgYF9hX2RvKClgXG4vLy8gb3ZlciBlYWNoIGl0ZW0gaW4gYW4gYWRqdXN0bWVudHMgbGlzdC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHttYXB9ICRtYXAgLVxuLy8vICAgQSBtYXAgb2YgdGVybXMgdG8gcmVmZXJlbmNlIHRhZ3MgYWdhaW5zdFxuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlIC1cbi8vLyAgIFRoZSB2YWx1ZSB0byBiZSBtYW5pcHVsYXRlZFxuLy8vIEBwYXJhbSB7bWFwIHwgbnVsbH0gJGRvIFtudWxsXSAtXG4vLy8gICBBIG1hcCBvZiBmdW5jdGlvbi9yYXRpbyBhZGp1c3RtZW50cyB0byBydW4gb24gdGhlIHJldHVybmVkIHZhbHVlXG5AZnVuY3Rpb24gX2FfZG8tZWFjaChcbiAgJG1hcCxcbiAgJHZhbHVlLFxuICAkZG86IG51bGxcbikge1xuICBAaWYgKCRkbykge1xuICAgIEBlYWNoICRuYW1lLCAkYXJncyBpbiAkZG8ge1xuICAgICAgJHZhbHVlOiBfYV9kbygkbWFwLCAkbmFtZSwgJHZhbHVlLCAkYXJncy4uLik7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cblxuLy8gRG9cbi8vIC0tXG4vLy8gQXBwbGllcyBhbnkgcmF0aW8gb3IgZnVuY3Rpb24gYWRqdXN0bWVudHNcbi8vLyB0byBBY2NvdXRyZW1lbnQgbWFwIHZhbHVlc1xuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge21hcH0gJHNvdXJjZSAtXG4vLy8gICBBIG1hcCBvZiB0ZXJtcyB0byByZWZlcmVuY2UgdGFncyBhZ2FpbnN0XG4vLy8gQHBhcmFtIHtzdHJpbmcgfCByYXRpbyB8IGZ1bmN0aW9ufSAkbmFtZSAtXG4vLy8gICBUaGUgcmF0aW8gb3IgZnVuY3Rpb24gdG8gdXNlIGluIG1hbmlwdWxhdGlvblxuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlIC1cbi8vLyAgIFRoZSB2YWx1ZSB0byBiZSBtYW5pcHVsYXRlZFxuLy8vIEBwYXJhbSB7YXJnbGlzdH0gJGFyZ3MuLi4gLVxuLy8vICAgQW55IGFyZ3VtZW50cyByZXF1aXJlZCBmb3IgYSBmdW5jdGlvbiBjYWxsXG4vLy8gQHJldHVybiB7Kn0gLVxuLy8vICAgTWFuaXB1bGF0ZWQgdmFsdWVcbi8vLyBAdGhyb3dzIE5vIHJhdGlvIG9yIGZ1bmN0aW9uIGZvdW5kIHdpdGggdGhlIGdpdmVuIG5hbWVcbkBmdW5jdGlvbiBfYV9kbyhcbiAgJHNvdXJjZSxcbiAgJG5hbWUsXG4gICR2YWx1ZSxcbiAgJGFyZ3MuLi5cbikge1xuICAvLyBBbGxvdyBpbnRlcm5hbCBtYXAgcmVmZXJlbmNlc1xuICAkbmFtZTogX2FfZ2V0KCRzb3VyY2UsICRuYW1lKTtcbiAgJGFyZ3M6IF9hX2dldCgkc291cmNlLCAkYXJncyk7XG5cbiAgLy8gSGFuZGxlIG51bGwgYXJnc+KAplxuICBAaWYgKGxlbmd0aCgkYXJncykgPT0gMSkge1xuICAgICRhcmdzOiBudGgoJGFyZ3MsIDEpO1xuICB9XG5cbiAgLy8gVHJ5IHJhdGlvcyBmaXJzdFxuICBAaWYgdHlwZS1vZigkdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAkcmF0aW86IHJhdGlvKCRuYW1lKTtcblxuICAgIEBpZiAoJHJhdGlvID09ICdsaW5lYXInKSB7XG4gICAgICBAcmV0dXJuICR2YWx1ZSAqICRhcmdzO1xuICAgIH0gQGVsc2UgaWYgKHR5cGUtb2YoJHJhdGlvKSA9PSAnbnVtYmVyJykge1xuICAgICAgJG11bHRpcGxpZXI6IF9hX3BvdygkcmF0aW8sICRhcmdzKTtcbiAgICAgIEByZXR1cm4gJHZhbHVlICogJG11bHRpcGxpZXI7XG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gZnVuY3Rpb24gY2FsbHNcbiAgJGZ1bmN0aW9uOiBfYV9nZXQtZnVuY3Rpb24oJG5hbWUpO1xuXG4gIEBpZiAoJGZ1bmN0aW9uKSB7XG4gICAgQGlmICgkYXJncykge1xuICAgICAgQHJldHVybiBjYWxsKCRmdW5jdGlvbiwgJHZhbHVlLCAkYXJncy4uLik7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGNhbGwoJGZ1bmN0aW9uLCAkdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVycm9yXG4gIEByZXR1cm4gX2FfZXJyb3IoXG4gICAgJ05vIHJhdGlvIG9yIGZ1bmN0aW9uIG5hbWVkIGAjeyRuYW1lfWAnLFxuICAgICdfYV9kbydcbiAgKTtcbn1cblxuXG4vLyBTb3VyY2UgTWVtb1xuLy8gLS0tLS0tLS0tLS1cbi8vLyBNZW1vaXphdGlvbiBvZiBuZXN0ZWQtPmZsYXR0ZW5lZCBzb3VyY2UgbWFwcyxcbi8vLyB0byBhdm9pZCBkdXBsaWNhdGlvbiBvZiB0aGUgZmxhdHRlbmluZyBwcm9jZXNzLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHByb3Age21hcH0gPG5lc3RlZCBzb3VyY2UgbWFwPlxuLy8vICAgVXNlIHRoZSBvcmlnaW5hbCBtYXAgYXMgYSBrZXksXG4vLy8gICBhbmQgc3RvcmUgdGhlIGZsYXR0ZW5lZCBtYXAgYXMgYSB2YWx1ZVxuJF9hX3NvdXJjZS1tZW1vOiAoKTtcblxuXG4vLyBGbGF0IFNvdXJjZVxuLy8gLS0tLS0tLS0tLS1cbi8vLyBGbGF0dGVuIGEgbmVzdGVkIGFjY291dHJlbWVudCBtYXAsXG4vLy8gdXNpbmcgYC0+YCBkZWxpbWl0ZXIgdG8gZGVzaWduYXRlIG5lc3RlZCBrZXlzLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHttYXB9ICRzb3VyY2UgLVxuLy8vICAgQSBuZXN0ZWQgbWFwIG9mIGFjY291dHJlbWVudCB0b2tlbnMgdG8gZmxhdHRlblxuQGZ1bmN0aW9uIF9hX2ZsYXQtc291cmNlKFxuICAkc291cmNlXG4pIHtcbiAgLy8gQ2hlY2sgbWVtb+KAplxuICAkbWVtbzogbWFwLWdldCgkX2Ffc291cmNlLW1lbW8sIGluc3BlY3QoJHNvdXJjZSkpO1xuXG4gIEBpZiAkbWVtbyB7XG4gICAgQHJldHVybiAkbWVtbztcbiAgfVxuXG4gIC8vIE5vIG1lbW8sIGZsYXR0ZW7igKZcbiAgJGZsYXQ6ICRzb3VyY2U7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzb3VyY2Uge1xuICAgIEBpZiAodHlwZS1vZigkdmFsdWUpID09ICdtYXAnKSBhbmQgbm90IG1hcC1oYXMta2V5KCR2YWx1ZSwgJyV2YWx1ZScpIHtcbiAgICAgIEBlYWNoICRzdWIta2V5LCAkc3ViLXZhbCBpbiBfYV9mbGF0LXNvdXJjZSgkdmFsdWUpIHtcbiAgICAgICAgJHN1Yi1rZXk6ICcjeyRrZXl9LT4jeyRzdWIta2V5fSc7XG4gICAgICAgICRmbGF0OiBtYXAtbWVyZ2UoJGZsYXQsICgkc3ViLWtleTogJHN1Yi12YWwpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTdG9yZSB0byBtZW1v4oCmXG4gICRfYV9zb3VyY2UtbWVtbzogbWFwLW1lcmdlKCRfYV9zb3VyY2UtbWVtbywgKGluc3BlY3QoJHNvdXJjZSk6ICRmbGF0KSkgIWdsb2JhbDtcblxuICAvLyBEb25l4oCmXG4gIEByZXR1cm4gJGZsYXQ7XG59XG4iLCIvLyBQc2V1ZG8gRWxlbWVudHNcbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vLyAjIFBzZXVkby1FbGVtZW50c1xuLy8vXG4vLy8gU29tZSBzaG9ydGN1dHMgZm9yIGNyZWF0aW5nIGA6OmJlZm9yZWAgYW5kIGA6OmFmdGVyYCBwc2V1ZG8tZWxlbWVudHMuXG4vLy9cbi8vLyBAZ3JvdXAgdHlwZS1wc2V1ZG9cblxuXG4vLyBCZWZvcmVcbi8vIC0tLS0tLVxuLy8vIEFkZCBnZW5lcmF0ZWQgY29udGVudCBgOmJlZm9yZWAgYW4gZWxlbWVudC5cbi8vLyBAZ3JvdXAgdHlwZS1wc2V1ZG9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGNvbnRlbnQgLVxuLy8vICAgQSB2YWx1ZSBmb3IgdGhlIGBjb250ZW50YCBwcm9wZXJ0eS5cbkBtaXhpbiBiZWZvcmUoXG4gICRjb250ZW50XG4pIHtcbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkY29udGVudDtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5cbi8vIEFmdGVyXG4vLyAtLS0tLVxuLy8vIEFkZCBnZW5lcmF0ZWQgY29udGVudCBgOmFmdGVyYCBhbiBlbGVtZW50LlxuLy8vIEBncm91cCB0eXBlLXBzZXVkb1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkY29udGVudCAtXG4vLy8gICBBIHZhbHVlIGZvciB0aGUgYGNvbnRlbnRgIHByb3BlcnR5LlxuQG1peGluIGFmdGVyKFxuICAkY29udGVudFxuKSB7XG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAkY29udGVudDtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5cbi8vIFdyYXAgQ29udGVudFxuLy8gLS0tLS0tLS0tLS0tXG4vLy8gQWRkIGdlbmVyYXRlZCBjb250ZW50IGA6YmVmb3JlYCBhbmQgYDphZnRlcmAgYW4gZWxlbWVudC5cbi8vLyBAZ3JvdXAgdHlwZS1wc2V1ZG9cbi8vLyBAcGFyYW0ge0xpc3R9ICRjb250ZW50IC1cbi8vLyAgIE9uZSBvciB0d28gdmFsdWVzIHRvIGJlIHVzZWQgZm9yIHRoZSBgY29udGVudGAgcHJvcGVydHkuXG4vLy8gICBBIHNpbmdsZSBzdHJpbmcgd2lsbCBiZSB1c2VkIGA6YmVmb3JlYCBhbmQgYDphZnRlcmAuXG5AbWl4aW4gd3JhcC1jb250ZW50KFxuICAkY29udGVudDogJ+KAnCcgJ+KAnSdcbikge1xuICAkX2JlZm9yZTogbnRoKCRjb250ZW50LCAxKTtcblxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAkX2JlZm9yZTtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJGNvbnRlbnQpID4gMSB7XG4gICAgJjo6YWZ0ZXIgeyBjb250ZW50OiBudGgoJGNvbnRlbnQsIDIpOyB9XG4gIH1cbn1cbiIsIi8vIFN0cmV0Y2ggVXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG5cbi8vIFN0cmV0Y2hcbi8vIC0tLS0tLS1cbi8vLyBTdHJldGNoIGEgcG9zaXRpb25lZCBlbGVtZW50IGluIHJlbGF0aW9uIHRvIGl0cyBjb250ZXh0LlxuLy8vIEBncm91cCBzdHJldGNoXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgWzBdIC1cbi8vLyAgIE9mZnNldCBmcm9tIHRoZSB0b3AgZWRnZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHJpZ2h0IFskdG9wXSAtXG4vLy8gICBPZmZzZXQgZnJvbSB0aGUgcmlnaHQgZWRnZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJvdHRvbSBbJHRvcF0gLVxuLy8vICAgT2Zmc2V0IGZyb20gdGhlIGJvdHRvbSBlZGdlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVmdCBbJHJpZ2h0XSAtXG4vLy8gICBPZmZzZXQgZnJvbSB0aGUgbGVmdCBlZGdlLlxuLy8vIEBwYXJhbSB7YWJzb2x1dGUgfCBmaXhlZH0gJHBvc2l0aW9uIFthYnNvbHV0ZV0gLVxuLy8vICAgVGhlIHR5cGUgb2YgcG9zaXRpb25pbmcgdG8gdXNlLlxuQG1peGluIHN0cmV0Y2goXG4gICR0b3A6IDAsXG4gICRyaWdodDogJHRvcCxcbiAgJGJvdHRvbTogJHRvcCxcbiAgJGxlZnQ6ICRyaWdodCxcbiAgJHBvc2l0aW9uOiBhYnNvbHV0ZVxuKSB7XG4gIGJvdHRvbTogJGJvdHRvbSBvciBudWxsO1xuICBsZWZ0OiAkbGVmdCBvciBudWxsO1xuICBwb3NpdGlvbjogJHBvc2l0aW9uIG9yIG51bGw7XG4gIHJpZ2h0OiAkcmlnaHQgb3IgbnVsbDtcbiAgdG9wOiAkdG9wIG9yIG51bGw7XG59XG5cblxuLy8gU3RyZXRjaFxuLy8gLS0tLS0tLVxuLy8vIFN0cmV0Y2ggYSBwb3NpdGlvbmVkIGVsZW1lbnQgaG9yaXpvbnRhbGx5IGluIHJlbGF0aW9uIHRvIGl0cyBjb250ZXh0LlxuLy8vIEBncm91cCBzdHJldGNoXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWZ0IFswXSAtXG4vLy8gICBPZmZzZXQgZnJvbSB0aGUgbGVmdCBlZGdlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlnaHQgWyRsZWZ0XSAtXG4vLy8gICBPZmZzZXQgZnJvbSB0aGUgcmlnaHQgZWRnZS5cbi8vLyBAcGFyYW0ge2Fic29sdXRlIHwgZml4ZWR9ICRwb3NpdGlvbiBbYWJzb2x1dGVdIC1cbi8vLyAgIFRoZSB0eXBlIG9mIHBvc2l0aW9uaW5nIHRvIHVzZS5cbkBtaXhpbiBzdHJldGNoLXgoXG4gICRsZWZ0OiAwLFxuICAkcmlnaHQ6ICRsZWZ0LFxuICAkcG9zaXRpb246IGFic29sdXRlXG4pIHtcbiAgQGluY2x1ZGUgc3RyZXRjaChmYWxzZSwgJHJpZ2h0LCBmYWxzZSwgJGxlZnQsICRwb3NpdGlvbik7XG59XG5cblxuLy8gU3RyZXRjaFxuLy8gLS0tLS0tLVxuLy8vIFN0cmV0Y2ggYSBwb3NpdGlvbmVkIGVsZW1lbnQgdmVydGljYWxseSBpbiByZWxhdGlvbiB0byBpdHMgY29udGV4dC5cbi8vLyBAZ3JvdXAgc3RyZXRjaFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFswXSAtXG4vLy8gICBPZmZzZXQgZnJvbSB0aGUgdG9wIGVkZ2UuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gWyR0b3BdIC1cbi8vLyAgIE9mZnNldCBmcm9tIHRoZSBib3R0b20gZWRnZS5cbi8vLyBAcGFyYW0ge2Fic29sdXRlIHwgZml4ZWR9ICRwb3NpdGlvbiBbYWJzb2x1dGVdIC1cbi8vLyAgIFRoZSB0eXBlIG9mIHBvc2l0aW9uaW5nIHRvIHVzZS5cbkBtaXhpbiBzdHJldGNoLXkoXG4gICR0b3A6IDAsXG4gICRib3R0b206ICR0b3AsXG4gICRwb3NpdGlvbjogYWJzb2x1dGVcbikge1xuICBAaW5jbHVkZSBzdHJldGNoKCR0b3AsIGZhbHNlLCAkYm90dG9tLCBmYWxzZSwgJHBvc2l0aW9uKTtcbn1cbiIsIi8vIEFjY2Vzc2liaWxpdHlcbi8vID09PT09PT09PT09PT1cblxuLnNjcmVlbi1yZWFkZXItdGV4dCB7XG4gIEBpbmNsdWRlIGlzLWhpZGRlbjtcbn1cbiIsIi8vIEhpZGRlblxuLy8gPT09PT09XG5cblxuLy8vICMgQWNjZXNzaWJpbGl0eVxuLy8vXG4vLy8gQSBzaW1wbGUgc2V0IG9mIHV0aWxpdGllc1xuLy8vIGZvciBoYW5kbGluZyB0ZXh0LXZpc2liaWxpdHlcbi8vLyBhbmQgc2NyZWVuLXJlYWRlciBhY2Nlc3NpYmlsaXR5XG4vLy8gYWNyb3NzIHlvdXIgc2l0ZS5cbi8vL1xuLy8vIEBncm91cCB0eXBlLWExMXlcblxuXG4vLyBJcyBIaWRkZW5cbi8vIC0tLS0tLS0tLVxuLy8vIEhpZGUgYW4gZWxlbWVudCB1c2luZyBlaXRoZXIgdGhlIGBjbGlwYCBvciBgcG9zaXRpb25gIG1ldGhvZC5cbi8vLyBAZ3JvdXAgdHlwZS1hMTF5XG4vLy8gQHBhcmFtIHsnY2xpcCcgfCAncG9zaXRpb24nfSAkbWV0aG9kIFsnY2xpcCddIC1cbi8vLyAgIFRoZSBoaWRpbmcgbWV0aG9kIHRvIHVzZS5cbkBtaXhpbiBpcy1oaWRkZW4oXG4gICRtZXRob2Q6ICdjbGlwJ1xuKSB7XG4gIEBpZiAkbWV0aG9kID09ICdwb3NpdGlvbicge1xuICAgIEBpbmNsdWRlIF9hX2lzLWhpZGRlbi0tcG9zaXRpb247XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIF9hX2lzLWhpZGRlbi0tY2xpcDtcbiAgfVxufVxuXG5cbi8vIElzIEhpZGRlbiAtLSBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IHBvc2l0aW9uaW5nIGl0IG9mZiB0aGUgcGFnZS5cbi8vLyBAZ3JvdXAgdHlwZS1hMTF5XG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX2FfaXMtaGlkZGVuLS1wb3NpdGlvbiB7XG4gIGxlZnQ6IC05OTk5cHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTk5OTlweDtcbn1cblxuXG4vLyBJcyBIaWRkZW4gLS0gQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgY2xpcHBpbmcgaXQgaW4gcGxhY2UuXG4vLy8gQGdyb3VwIHR5cGUtYTExeVxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9hX2lzLWhpZGRlbi0tY2xpcCB7XG4gIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtcbiAgY2xpcC1wYXRoOiBpbnNldCgxcHggMXB4IDFweCAxcHgpO1xuICBoZWlnaHQ6IDFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbn1cbiIsIi8vIEljb24gUGF0dGVyblxuLy8gPT09PT09PT09PT09XG5cbltkYXRhLWljb25dIHtcbiAgZmlsbDogY3VycmVudENvbG9yO1xuICBoZWlnaHQ6IDFlbTtcbiAgd2lkdGg6IDFlbTtcbn1cblxuW2RhdGEtc2l6ZT0nZmFjZSddIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIGhlaWdodDogNnJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG4gIHdpZHRoOiA2cmVtO1xufVxuIiwiLy8gRm9ybSBQYXR0ZXJuc1xuLy8gPT09PT09PT09PT09PVxuXG5pbnB1dFt0eXBlPVwidGV4dFwiXSxcbmlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbmlucHV0W3R5cGU9XCJ1cmxcIl0sXG5pbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxuaW5wdXRbdHlwZT1cIm51bWJlclwiXSxcbmlucHV0W3R5cGU9XCJ0ZWxcIl0sXG5pbnB1dFt0eXBlPVwicmFuZ2VcIl0sXG5pbnB1dFt0eXBlPVwiZGF0ZVwiXSxcbmlucHV0W3R5cGU9XCJtb250aFwiXSxcbmlucHV0W3R5cGU9XCJ3ZWVrXCJdLFxuaW5wdXRbdHlwZT1cInRpbWVcIl0sXG5pbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0sXG5pbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0sXG5pbnB1dFt0eXBlPVwiY29sb3JcIl0sXG50ZXh0YXJlYSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gIHdpZHRoOiAxMDAlO1xufVxuXG50ZXh0YXJlYSB7XG4gIG1pbi1oZWlnaHQ6IDhyZW07XG59XG5cbmJ1dHRvbixcbi5idG4sXG4uZG9uYXRlLFxuLndvb2NvbW1lcmNlICNyZXNwb25kIGlucHV0I3N1Ym1pdC5hbHQsXG4ud29vY29tbWVyY2UgYS5idXR0b24uYWx0LFxuLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b24uYWx0LFxuLndvb2NvbW1lcmNlIGlucHV0LmJ1dHRvbi5hbHQge1xuICAmLFxuICAjeyRsaW5rfSB7XG4gICAgQGluY2x1ZGUgY29udHJhc3RlZCgnYWN0aW9uJyk7XG4gICAgYm9yZGVyLXJhZGl1czogc2l6ZSgnY29ybmVycycpO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250OiBpbmhlcml0O1xuICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICAgIHBhZGRpbmc6IHNpemUoJ2hhbGYtc2hpbScpIHNpemUoJ2d1dHRlcicpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gICN7JGZvY3VzfSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoJ2ZvY3VzJyk7XG4gIH1cbn1cblxuLmRvbmF0ZSB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgnbGFyZ2UnKTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogc2l6ZSgnZ3V0dGVyJykgMDtcbiAgcGFkZGluZzogc2l6ZSgnZ3V0dGVyJyk7XG4gIHdpZHRoOiAxMDAlO1xufVxuIiwiLy8gVHJpYmUgRXZlbnRzXG4vLyA9PT09PT09PT09PT1cblxuXG4udHJpYmUtZXZlbnRzLXBhZ2UtdGl0bGUge1xuICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG59XG5cbltkYXRhLWZlYXR1cmUtc2VjdGlvbl0ge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luOiAwIG5lZ2F0aXZlKCdndXR0ZXInKTtcbiAgcGFkZGluZzogc2l6ZSgnZ3V0dGVyJykgc2l6ZSgnZ3V0dGVyJykgMDtcblxuICAmICsgJiB7XG4gICAgYm9yZGVyLXRvcDogMnB4IGRhc2hlZCBjb2xvcignYm9yZGVyJyk7XG4gICAgcGFkZGluZy10b3A6IHNpemUoJ2d1dHRlcicpICogMjtcbiAgfVxufVxuXG4uY2F0ZWdvcnktdGl0bGUge1xuICBAaW5jbHVkZSBmb250LWZhbWlseSgndGl0bGUnKTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCdsYXJnZXInKTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbjogbmVnYXRpdmUoJ2d1dHRlcicpIDAgc2l6ZSgnZ3V0dGVyJyk7XG59XG5cbltkYXRhLWZlYXR1cmVdIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbi1ib3R0b206IHNpemUoJ2d1dHRlcicpICogMjtcbn1cblxuW2RhdGEtZmVhdHVyZT0ndGh1bWJuYWlsJ10ge1xuICBAaW5jbHVkZSBhYm92ZSgnc21hbGwtc2NyZWVuJykge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAudGlja2V0LWxpbmsge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIG9yZGVyOiAyO1xuICAgIH1cblxuICAgIC5zaG93LWRldGFpbHMge1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gIH1cbn1cblxuW2RhdGEtZmVhdHVyZS1zZWN0aW9uPSd0aGlyZC10dWVzZGF5cyddIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1MSwgMjQ0LCAyMzgpO1xufVxuXG5bZGF0YS1mZWF0dXJlLXNlY3Rpb249J2FsbC1hZ2VzJ10ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1LCAyNTEsIDIzOCk7XG4gIGJvcmRlci1ib3R0b206IDJweCBkYXNoZWQgY29sb3IoJ2JvcmRlcicpO1xufVxuXG5bZGF0YS1mZWF0dXJlLWltYWdlPSdsYXJnZSddIHtcbiAgbWFyZ2luOiAwIC00dnc7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLndwLXBvc3QtaW1hZ2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5bZGF0YS1mZWF0dXJlLWltYWdlPSd0aHVtYm5haWwnXSB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgcGFkZGluZy10b3A6IHBlcmNlbnRhZ2UoOS8xNik7XG5cbiAgLndwLXBvc3QtaW1hZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBAaW5jbHVkZSBhYm92ZSgnc21hbGwtc2NyZWVuJykge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMHZ3O1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogMS41cmVtO1xuICAgIG9yZGVyOiAwO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAud3AtcG9zdC1pbWFnZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cblxuXG5cbi50aWNrZXQtbGluayB7XG4gICN7JGxpbmt9IHtcbiAgICBAaW5jbHVkZSBjb250cmFzdGVkKCdhY3Rpb24nKTtcbiAgICBAaW5jbHVkZSBzcXVhcmUoNmVtLCAnZW0nKTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbjogMCAxLjVyZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgQGluY2x1ZGUgYmVsb3coJ3NtYWxsLXNjcmVlbicpIHtcbiAgICAgIG1hcmdpbi10b3A6IC0zZW07XG4gICAgfVxuXG4gICAgW2RhdGEtZmVhdHVyZS1pbWFnZT0nbGFyZ2UnXSArICYge1xuICAgICAgbWFyZ2luLXRvcDogLTNlbTtcbiAgICB9XG4gIH1cblxuICAjeyRmb2N1c30ge1xuICAgIGJhY2tncm91bmQ6IGNvbG9yKCdmb2N1cycpO1xuICB9XG5cbiAgc3BhbiB7XG4gICAgbGVmdDogNTAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xuICAgIHRvcDogNTAlO1xuICB9XG59XG5cbi5zaG93LWRhdGVzIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8vIC50cmliZS1ldmVudHMtbm90aWNlcyB7XG4vLyAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oJGNvbG9yLXByaW1hcnksIDM0JSk7XG4vLyAgIGJvcmRlci1yYWRpdXM6IDA7XG4vLyAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0ZW4oJGNvbG9yLXByaW1hcnksIDMwJSk7XG4vLyAgIGNvbG9yOiAkY29sb3ItZGFya2VyO1xuLy8gICB0ZXh0LXNoYWRvdzogMDtcbi8vIH1cblxuLy8gLnRyaWJlLWV2ZW50cy13aWRnZXQtbGluayB7XG4vLyAgIGRpc3BsYXk6IG5vbmU7XG4vLyB9XG4iLCIvLy8gIyBBY2Nlc3NpbmcgU2l6ZXNcbi8vLyBAZ3JvdXAgc2NhbGUtc2l6ZXNcblxuXG4vLyBTaXplIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8vIEFjY2VzcyBhIG5hbWVkIHNpemUgaW4geW91ciBgJHNpemVzYCBtYXAsXG4vLy8gdXNpbmcgYW55IGNvbXBhcmFibGUgdW5pdHMuXG4vLy9cbi8vLyBAc2luY2UgMS4wLjAgLVxuLy8vIC0gQlJFQUtJTkc6IFRoZSBwcmV2aW91cyBgJHVuaXRz4oCmYCB2YXJhcmdcbi8vLyAgIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYCRkb2AgbWFwIGFyZ3VtZW50LFxuLy8vICAgZm9yIGZsZXhpYmxlIG9uLXRoZS1mbHkgYWRqdXN0bWVudHMuXG4vLy8gICBOb24tbWFwIGAkZG9gIHZhbHVlcyBhcmUgY29udmVydGVkIHRvXG4vLy8gICBgKCdjb252ZXJ0LXVuaXRzJzogJGRvKWAgYmVmb3JlIHByb2Nlc3NpbmcsXG4vLy8gICB0byBwcm92aWRlIGEgc2hvcnRjdXQgZm9yIHVuaXQtY29udmVyc2lvbnMuXG4vLy8gICBgc2l6ZSgncm9vdCcsICdjbScpYCB3aWxsIGNvbnRpbnVlIHRvIHdvcmssXG4vLy8gICBidXQgYHNpemUoJ3Jvb3QnLCAnZW0nLCAxMHB4KWAgc2hvdWxkIGJlIGNoYW5nZWQgdG9cbi8vLyAgIGBzaXplKCdyb290JywgJ2VtJyAxMHB4KWAgKHdpdGggYWxsIHVuaXQgYXJncyBpbiBhIHNpbmdsZSBsaXN0KVxuLy8vIC0gTkVXOiBBY2NlcHRzIGAkc291cmNlYCBtYXAgYXJndW1lbnQsXG4vLy8gICBmb3IgY3VzdG9tIHNvdXJjZS1wYWxldHRlXG4vLy9cbi8vLyBAZ3JvdXAgc2NhbGUtc2l6ZXNcbi8vL1xuLy8vIEBwYXJhbSB7c3RyaW5nfSAkc2l6ZSAtXG4vLy8gICBUaGUgbmFtZSBvZiBhbnkgc2l6ZSBpbiB5b3VyIGNvbmZpZ3VyYXRpb25cbi8vLyBAcGFyYW0ge21hcCB8IHVuaXQtYXJncyB8IG51bGx9ICRkbyBbbnVsbF0gLVxuLy8vICAgQSBtYXAgb2YgZnVuY3Rpb24vcmF0aW8gYWRqdXN0bWVudHMgdG8gcnVuIG9uIHRoZSByZXR1cm5lZCB2YWx1ZSxcbi8vLyAgIG9yIGEgdW5pdCBmb2xsb3dlZCBieSBhbnkgbmVjZXNzYXJ5IGFyZ3VtZW50c1xuLy8vICAgZm9yIGNvbnZlcnNpb25cbi8vLyBAcGFyYW0ge21hcH0gJHNvdXJjZSBbJHNpemVzXSAtXG4vLy8gICBPcHRpb25hbCBhY2NvdXRyZW1lbnQtZm9ybWF0IG1hcCBvZiBzaXplcyB0byB1c2UgYXMgdGhlIG9yaWdpbiBwYWxldHRlXG4vLy8gQHJldHVybiB7bGVuZ3RofSAtXG4vLy8gICBUaGUgY2FsY3VsYXRlZCBsZW5ndGgsIGluIHRoZSByZXF1ZXN0ZWQgdW5pdHMuXG5AZnVuY3Rpb24gc2l6ZShcbiAgJHNpemUsXG4gICRkbzogbnVsbCxcbiAgJHNvdXJjZTogJHNpemVzXG4pIHtcbiAgQGlmICgkZG8pIGFuZCAodHlwZS1vZigkZG8pICE9ICdtYXAnKSB7XG4gICAgJGRvOiAoJ3RvJzogJGRvKTtcbiAgfVxuXG4gICRzaXplOiBnZXQtdG9rZW4oJHNvdXJjZSwgJHNpemUsICRkbyk7XG4gIEByZXR1cm4gaWYoKHR5cGUtb2YoJHNpemUpID09ICdzdHJpbmcnKSwgdW5xdW90ZSgkc2l6ZSksICRzaXplKTtcbn1cblxuXG4vLyBOZWdhdGl2ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gUmV0dXJuIHRoZSBpbnZlcnNlIHZhbHVlIG9mIGFueSBsZW5ndGgsXG4vLy8gaW4gY29tcGFyYWJsZSB1bml0cy5cbi8vL1xuLy8vIEBzaW5jZSAxLjAuMCAtXG4vLy8gLSBCUkVBS0lORzogVGhlIHByZXZpb3VzIGAkdW5pdHPigKZgIHZhcmFyZ1xuLy8vICAgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBgJGRvYCBtYXAgYXJndW1lbnQsXG4vLy8gICBmb3IgZmxleGlibGUgb24tdGhlLWZseSBhZGp1c3RtZW50cy5cbi8vLyAgIE5vbi1tYXAgYCRkb2AgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG9cbi8vLyAgIGAoJ2NvbnZlcnQtdW5pdHMnOiAkZG8pYCBiZWZvcmUgcHJvY2Vzc2luZyxcbi8vLyAgIHRvIHByb3ZpZGUgYSBzaG9ydGN1dCBmb3IgdW5pdC1jb252ZXJzaW9ucy5cbi8vLyAgIGBzaXplKCdyb290JywgJ2NtJylgIHdpbGwgY29udGludWUgdG8gd29yayxcbi8vLyAgIGJ1dCBgc2l6ZSgncm9vdCcsICdlbScsIDEwcHgpYCBzaG91bGQgYmUgY2hhbmdlZCB0b1xuLy8vICAgYHNpemUoJ3Jvb3QnLCAnZW0nIDEwcHgpYCAod2l0aCBhbGwgdW5pdCBhcmdzIGluIGEgc2luZ2xlIGxpc3QpXG4vLy8gLSBORVc6IEFjY2VwdHMgYCRzb3VyY2VgIG1hcCBhcmd1bWVudCxcbi8vLyAgIGZvciBjdXN0b20gc291cmNlLXBhbGV0dGVcbi8vL1xuLy8vIEBncm91cCBzY2FsZS1zaXplc1xuLy8vXG4vLy8gQHBhcmFtIHtzdHJpbmcgfCBsZW5ndGggfCBsaXN0fSAkc2l6ZSAtXG4vLy8gICBUaGUgbmFtZSBvZiBhIHNpemUgaW4geW91ciBjb25maWd1cmF0aW9uIChlLmcuIGBsaW5lLWhlaWdodGApLFxuLy8vICAgb3IgYSBsZW5ndGggdG8gYmUgY29udmVydGVkIGludG8gZGlmZmVyZW50IHVuaXRzIChlLmcuIGAyNHB4YCksXG4vLy8gICBvciBhIGJhc2Utc2l6ZSBhbmQgYWRqdXN0bWVudHMgdG8gYmUgbWFkZVxuLy8vICAgKGUuZy4gYDI0cHggKCdfbWlub3ItdGhpcmQnOiAyKWApLlxuLy8vICAgRm9yIHRoZSBzYWtlIG9mIGNvbnNpc3RlbnQgZG9jdW1lbnRhdGlvbixcbi8vLyAgIEkgcmVjb21tZW5kIGtlZXBpbmcgYWRqdXN0bWVudHMgaW4gdGhlIGNvbmZpZ3VyYXRpb25cbi8vLyAgIHdoZW5ldmVyIHBvc3NpYmxlLlxuLy8vIEBwYXJhbSB7bWFwIHwgdW5pdC1hcmdzIHwgbnVsbH0gJGRvIFtudWxsXSAtXG4vLy8gICBBIG1hcCBvZiBmdW5jdGlvbi9yYXRpbyBhZGp1c3RtZW50cyB0byBydW4gb24gdGhlIHJldHVybmVkIHZhbHVlLFxuLy8vICAgb3IgYSB1bml0IGZvbGxvd2VkIGJ5IGFueSBuZWNlc3NhcnkgYXJndW1lbnRzXG4vLy8gICBmb3IgY29udmVyc2lvblxuLy8vIEBwYXJhbSB7bWFwfSAkc291cmNlIFskc2l6ZXNdIC1cbi8vLyAgIE9wdGlvbmFsIGFjY291dHJlbWVudC1mb3JtYXQgbWFwIG9mIHNpemVzIHRvIHVzZSBhcyB0aGUgb3JpZ2luIHBhbGV0dGVcbi8vLyBAcmV0dXJuIHtsZW5ndGh9IC1cbi8vLyAgIFRoZSBjYWxjdWxhdGVkIG5lZ2F0aXZlIGxlbmd0aCwgaW4gdGhlIHJlcXVlc3RlZCB1bml0cy5cbkBmdW5jdGlvbiBuZWdhdGl2ZShcbiAgJHNpemUsXG4gICRkbzogbnVsbCxcbiAgJHNvdXJjZTogJHNpemVzXG4pIHtcbiAgJHNpemU6IHNpemUoJHNpemUsICRkbywgJHNvdXJjZSk7XG5cbiAgQGlmICh0eXBlLW9mKCRzaXplKSA9PSAnc3RyaW5nJykge1xuICAgIEBpZiAoc3RyLWluZGV4KCRzaXplLCAnY2FsYygnKSA9PSAxKSB7XG4gICAgICAkc2l6ZTogc3RyLXNsaWNlKCRzaXplLCA2LCAtMik7XG4gICAgfVxuXG4gICAgQHJldHVybiAnY2FsYygtMSAqICgjeyRzaXplfSkpJztcbiAgfVxuXG4gIEByZXR1cm4gLTEgKiAkc2l6ZTtcbn1cblxuXG4vLyBTcXVhcmUgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vLyBDcmVhdGUgYSBzcXVhcmUgYnkgc2V0dGluZyBlcXVhbCBDU1MgYGhlaWdodGAgYW5kIGB3aWR0aGAgcHJvcGVydGllc1xuLy8vIHdpdGggdGhlIGdpdmVuIHNpemUgJiB1bml0IHZhbHVlLlxuLy8vXG4vLy8gQHNpbmNlIDEuMC4wIC1cbi8vLyAtIEJSRUFLSU5HOiBUaGUgcHJldmlvdXMgYCR1bml0c+KApmAgdmFyYXJnXG4vLy8gICBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGAkZG9gIG1hcCBhcmd1bWVudCxcbi8vLyAgIGZvciBmbGV4aWJsZSBvbi10aGUtZmx5IGFkanVzdG1lbnRzLlxuLy8vICAgTm9uLW1hcCBgJGRvYCB2YWx1ZXMgYXJlIGNvbnZlcnRlZCB0b1xuLy8vICAgYCgnY29udmVydC11bml0cyc6ICRkbylgIGJlZm9yZSBwcm9jZXNzaW5nLFxuLy8vICAgdG8gcHJvdmlkZSBhIHNob3J0Y3V0IGZvciB1bml0LWNvbnZlcnNpb25zLlxuLy8vICAgYHNpemUoJ3Jvb3QnLCAnY20nKWAgd2lsbCBjb250aW51ZSB0byB3b3JrLFxuLy8vICAgYnV0IGBzaXplKCdyb290JywgJ2VtJywgMTBweClgIHNob3VsZCBiZSBjaGFuZ2VkIHRvXG4vLy8gICBgc2l6ZSgncm9vdCcsICdlbScgMTBweClgICh3aXRoIGFsbCB1bml0IGFyZ3MgaW4gYSBzaW5nbGUgbGlzdClcbi8vLyAtIE5FVzogQWNjZXB0cyBgJHNvdXJjZWAgbWFwIGFyZ3VtZW50LFxuLy8vICAgZm9yIGN1c3RvbSBzb3VyY2UtcGFsZXR0ZVxuLy8vXG4vLy8gQGdyb3VwIHNjYWxlLXNpemVzXG4vLy9cbi8vLyBAcGFyYW0ge3N0cmluZyB8IGxlbmd0aCB8IGxpc3R9ICRzaXplIC1cbi8vLyAgIFRoZSBuYW1lIG9mIGEgc2l6ZSBpbiB5b3VyIGNvbmZpZ3VyYXRpb24gKGUuZy4gYGxpbmUtaGVpZ2h0YCksXG4vLy8gICBvciBhIGxlbmd0aCB0byBiZSBjb252ZXJ0ZWQgaW50byBkaWZmZXJlbnQgdW5pdHMgKGUuZy4gYDI0cHhgKSxcbi8vLyAgIG9yIGEgYmFzZS1zaXplIGFuZCBhZGp1c3RtZW50cyB0byBiZSBtYWRlXG4vLy8gICAoZS5nLiBgMjRweCAoJ19taW5vci10aGlyZCc6IDIpYCkuXG4vLy8gICBGb3IgdGhlIHNha2Ugb2YgY29uc2lzdGVudCBkb2N1bWVudGF0aW9uLFxuLy8vICAgSSByZWNvbW1lbmQga2VlcGluZyBhZGp1c3RtZW50cyBpbiB0aGUgY29uZmlndXJhdGlvblxuLy8vICAgd2hlbmV2ZXIgcG9zc2libGUuXG4vLy8gQHBhcmFtIHttYXAgfCB1bml0LWFyZ3MgfCBudWxsfSAkZG8gW251bGxdIC1cbi8vLyAgIEEgbWFwIG9mIGZ1bmN0aW9uL3JhdGlvIGFkanVzdG1lbnRzIHRvIHJ1biBvbiB0aGUgcmV0dXJuZWQgdmFsdWUsXG4vLy8gICBvciBhIHVuaXQgZm9sbG93ZWQgYnkgYW55IG5lY2Vzc2FyeSBhcmd1bWVudHNcbi8vLyAgIGZvciBjb252ZXJzaW9uXG4vLy8gQHBhcmFtIHttYXB9ICRzb3VyY2UgWyRzaXplc10gLVxuLy8vICAgT3B0aW9uYWwgYWNjb3V0cmVtZW50LWZvcm1hdCBtYXAgb2Ygc2l6ZXMgdG8gdXNlIGFzIHRoZSBvcmlnaW4gcGFsZXR0ZVxuLy8vIEBvdXRwdXQgLVxuLy8vICAgRXF1YWwgQ1NTIGhlaWdodCBhbmQgd2lkdGggcHJvcGVydGllcyxcbi8vLyAgIHNldCB0byB0aGUgZ2l2ZW4gc2l6ZSBhbmQgdW5pdHMuXG5AbWl4aW4gc3F1YXJlKFxuICAkc2l6ZSxcbiAgJGRvOiBudWxsLFxuICAkc291cmNlOiAkc2l6ZXNcbikge1xuICAkc2l6ZTogc2l6ZSgkc2l6ZSwgJGRvLCAkc291cmNlKTtcblxuICBoZWlnaHQ6ICRzaXplO1xuICB3aWR0aDogJHNpemU7XG59XG4iLCIvLyBDbGVhcmZpeFxuLy8gPT09PT09PT1cblxuXG4vLyBNaWNybyBDbGVhcmZpeFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vLyBBIHNtYWxsLCB1bm9idHJ1c2l2ZSBjbGVhcmZpeCBmb3IgZmxvYXQgY29udGFpbmVycy5cbi8vLyBAZ3JvdXAgY2xlYXJmaXhcbkBtaXhpbiBtaWNyby1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5cbi8vIENsZWFmaXhcbi8vIC0tLS0tLS1cbi8vLyBDdXJyZW50bHkgYW4gYWxpYXMgZm9yIGBtaWNyby1jbGVhcmZpeGAsXG4vLy8gYnV0IGNvdWxkIGJlIHVzZWQgdG8gY2hvb3NlIGJldHdlZW4gY2xlYXJmaXggb3B0aW9ucy5cbi8vLyBAZ3JvdXAgY2xlYXJmaXhcbi8vLyBAYWxpYXMgbWljcm8tY2xlYXJmaXhcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIEBpbmNsdWRlIG1pY3JvLWNsZWFyZml4O1xufVxuIiwiLy8gVHlwZVxuLy8gPT09PVxuXG5cbi8vIEFsaWdubWVudFxuLy8gLS0tLS0tLS0tXG5cbi5hbGlnbmxlZnQsXG4uYWxpZ25yaWdodCxcbi5hbGlnbmNlbnRlciB7XG4gIG1hcmdpbi1ib3R0b206IHNpemUoJ2d1dHRlcicpO1xufVxuXG4uYWxpZ25sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiBzaXplKCdndXR0ZXInKTtcbn1cblxuLmFsaWducmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiByaWdodDtcbiAgbWFyZ2luLWxlZnQ6IHNpemUoJ2d1dHRlcicpO1xufVxuXG4uYWxpZ25jZW50ZXIge1xuICBjbGVhcjogYm90aDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG4iLCIvLyBQYWdlIExheW91dFxuLy8gPT09PT09PT09PT1cblxuW2RhdGEtcmVnaW9uXSB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBtYXgtd2lkdGg6IHNpemUoJ3BhZ2UnKTtcbiAgcGFkZGluZzogc2l6ZSgnc2hpbScpIHNpemUoJ2d1dHRlcicpO1xuICB3aWR0aDogMTAwJTtcbn1cblxuW2RhdGEtcmVnaW9uPSdtYWluJ10ge1xuICBwYWRkaW5nOiAwIHNpemUoJ2d1dHRlcicpIHNpemUoJ2d1dHRlcicpICogMztcbn1cbiIsIi8vIEJhbm5lciBMYXlvdXRcbi8vID09PT09PT09PT09PT1cblxuXG5cbltkYXRhLXJlZ2lvbj0nYmFubmVyJ10ge1xuICBib3JkZXItYm90dG9tOiAycHggZGFzaGVkIGNvbG9yKCdib3JkZXInKTtcbiAgbWFyZ2luOiBuZWdhdGl2ZSgnZ3V0dGVyJykgYXV0byAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG5cbiAgQGluY2x1ZGUgYWJvdmUoJ3NtYWxsLXNjcmVlbicpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgfVxuXG59XG5cblxuXG4vLyBCcmFuZFxuLy8gLS0tLS1cblxuLmJyYW5kIHtcbiAgQGluY2x1ZGUgZm9udC1mYW1pbHkoJ3RpdGxlJyk7XG4gIGZvbnQtc2l6ZTogY2FsYygyLjVyZW0gKyAydncpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbWFyZ2luOiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgLmJ1bnRwb3J0IHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFib3ZlKCdzbWFsbC1zY3JlZW4nKSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgcGFkZGluZy1yaWdodDogc2l6ZSgnZ3V0dGVyJyk7XG5cbiAgICBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC50aGVhdGVyIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yNGVtO1xuICAgIH1cbiAgfVxufVxuXG5bcmVsPSdob21lJ10ge1xuICAjeyRsaW5rfSB7XG4gICAgY29sb3I6IGNvbG9yKCd0ZXh0Jyk7XG4gIH1cblxuICAjeyRmb2N1c30ge1xuICAgIGNvbG9yOiBjb2xvcignYWN0aW9uJyk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG59XG5cblxuLy8gTmF2aWdhdGlvblxuLy8gLS0tLS0tLS0tLVxuXG4ubmF2IHtcbiAgZmxleDogMSAxIGF1dG87XG59XG5cbi5tZW51IHtcbiAgbWFyZ2luOiBzaXplKCdndXR0ZXInKSAwIDA7XG4gIHBhZGRpbmc6IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBAaW5jbHVkZSBhYm92ZSgnc21hbGwtc2NyZWVuJykge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICB9XG59XG5cbi5tZW51LWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMnB4IHNpemUoJ3NoaW0nKTtcblxuICBbaHJlZl0ge1xuICAgICN7JGxpbmt9IHtcbiAgICAgIGNvbG9yOiBjb2xvcigndGV4dCcpO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICN7JGZvY3VzfSB7XG4gICAgICBjb2xvcjogY29sb3IoJ2FjdGlvbicpO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4uY3VycmVudC1tZW51LWl0ZW0ge1xuICBbaHJlZl0ge1xuICAgICN7JGxpbmt9IHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogaW5oZXJpdDtcbiAgICB9XG4gIH1cbn1cblxuIiwiLy8gQ29udGVudCBJbmZvIExheW91dFxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4uZm9vdGVyIHtcbiAgQGluY2x1ZGUgY29udHJhc3RlZCgnaW52ZXJ0Jyk7XG4gIGNsZWFyOiBib3RoO1xuICBwYWRkaW5nOiBzaXplKCdndXR0ZXInKSAqIDIgMDtcblxuICBbaHJlZl0ge1xuICAgICN7JGxpbmt9IHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICB9XG5cbiAgLmJ0biB7XG4gICAgJixcbiAgICAjeyRsaW5rfSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb250cmFzdCgnZm9jdXMnKTtcbiAgICAgIGNvbG9yOiBjb2xvcignZm9jdXMnKTtcbiAgICB9XG4gIH1cbn1cblxuW2RhdGEtcmVnaW9uPSdmb290ZXInXSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4uY29weXJpZ2h0LFxuLmVtYWlsLXNpZ251cCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgnc21hbGwnKTtcbiAgbWFyZ2luLWJvdHRvbTogc2l6ZSgnZ3V0dGVyJyk7XG5cbiAgQGluY2x1ZGUgYWJvdmUoJ3NtYWxsLXNjcmVlbicpIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogNDUlO1xuICB9XG59XG5cbi5lbWFpbC1zaWdudXAge1xuICBAaW5jbHVkZSBhYm92ZSgnc21hbGwtc2NyZWVuJykge1xuICAgIGZsb2F0OiByaWdodDtcbiAgfVxufVxuXG4uZW1haWwtaGVhZGVyIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCdyb290Jyk7XG4gIG1hcmdpbjogMDtcbn1cblxuLmVtYWlsLWludHJvIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4uZm9ybS1hY3Rpb25zIHtcbiAgbWFyZ2luOiBzaXplKCdoYWxmLXNoaW0nKSAwO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbiIsIi50cmliZS1ldmVudHMtd2lkZ2V0LWxpbmssXG4ud29vY29tbWVyY2UgLnByb2R1Y3QtdGh1bWJuYWlsIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsIi8vIE1lZGlhIFF1ZXJpZXNcbi8vID09PT09PT09PT09PT1cblxuXG5cbi8vIEFjY291dHJlbWVudCBRdWVyeSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJGFjY291dHJlbWVudC1xdWVyeS1jb250ZXh0OiAoKTtcblxuXG5cbi8vIEdldCBCcmVha3BvaW50IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBfZ2V0LWJyZWFrcG9pbnQoXG4gICRicmVha1xuKSB7XG4gIEBpZiB2YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnRzJykgYW5kIG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnJlYWspIHtcbiAgICAkYnJlYWs6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnJlYWspIG9yICRicmVhaztcblxuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicmVhaykge1xuICAgICAgJGJyZWFrOiBfZ2V0LWJyZWFrcG9pbnQoJGJyZWFrKTtcbiAgICB9XG4gIH1cblxuICBAaWYgZnVuY3Rpb24tZXhpc3RzKCdzaXplJykgYW5kIG1hcC1nZXQoJHNpemVzLCAkYnJlYWspIHtcbiAgICAkYnJlYWs6IHNpemUoJGJyZWFrKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRicmVhaykgIT0gJ251bWJlcicge1xuICAgIEBlcnJvciAnXCIjeyRicmVha31cIiBpc25cXCd0IGEgdmFsaWQgYnJlYWtwb2ludCBsZW5ndGggb3IgdXNlci1kZWZpbmVkIGtleXdvcmQuJztcbiAgfVxuXG4gIEBpZiBmdW5jdGlvbi1leGlzdHMoJ2Jyb3dzZXItZW1zJykge1xuICAgIEByZXR1cm4gYnJvd3Nlci1lbXMoJGJyZWFrKTtcbiAgfVxuXG4gIEByZXR1cm4gJGJyZWFrO1xufVxuXG5cblxuLy8gQXBwbHkgUXVlcnkgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIF9hcHBseS1xdWVyeShcbiAgJG5hbWUsXG4gICRxdWVyeVxuKSB7XG4gICRjb250ZXh0OiAoJG5hbWU6ICRxdWVyeSk7XG4gICRjb250ZXh0OiBtYXAtbWVyZ2UoJGFjY291dHJlbWVudC1xdWVyeS1jb250ZXh0LCAkY29udGV4dCk7XG4gICRhY2NvdXRyZW1lbnQtcXVlcnktY29udGV4dDogJGNvbnRleHQgIWdsb2JhbDtcblxuICBAbWVkaWEgI3skcXVlcnl9IHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gICRhY2NvdXRyZW1lbnQtcXVlcnktY29udGV4dDogbWFwLXJlbW92ZSgkYWNjb3V0cmVtZW50LXF1ZXJ5LWNvbnRleHQsICRuYW1lKSAhZ2xvYmFsO1xufVxuXG5cblxuLy8gQmVsb3cgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLVxuQG1peGluIGJlbG93KFxuICAkbWF4LFxuICAkcHJvcDogJ3dpZHRoJ1xuKSB7XG4gICRuYW1lOiAnYmVsb3cgYCN7JG1heH1gJztcbiAgJG1heDogX2dldC1icmVha3BvaW50KCRtYXgpO1xuXG4gIEBpZiB1bml0KCRtYXgpID09ICdlbScge1xuICAgICRtYXg6ICRtYXggLSAwLjAxO1xuICB9IEBlbHNlIGlmIGNvbXBhcmFibGUoJG1heCwgMXB4KSB7XG4gICAgJG1heDogJG1heCAtIDFweDtcbiAgfVxuXG4gICRxdWVyeTogJyhtYXgtI3skcHJvcH06ICN7JG1heH0pJztcblxuICBAaW5jbHVkZSBfYXBwbHktcXVlcnkoJG5hbWUsICRxdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cblxuXG4vLyBBYm92ZSBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tXG5AbWl4aW4gYWJvdmUoXG4gICRtaW4sXG4gICRwcm9wOiAnd2lkdGgnXG4pIHtcbiAgJG5hbWU6ICdhYm92ZSBgI3skbWlufWAnO1xuICAkbWluOiBfZ2V0LWJyZWFrcG9pbnQoJG1pbik7XG4gICRxdWVyeTogJyhtaW4tI3skcHJvcH06ICN7JG1pbn0pJztcblxuICBAaW5jbHVkZSBfYXBwbHktcXVlcnkoJG5hbWUsICRxdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cblxuXG4vLyBCZXR3ZWVuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuQG1peGluIGJldHdlZW4oXG4gICRtaW4sXG4gICRtYXgsXG4gICRwcm9wOiAnd2lkdGgnXG4pIHtcbiAgJG5hbWU6ICdiZXR3ZWVuIGAjeyRtaW59YCBhbmQgYCN7JG1heH1gJztcbiAgJG1pbjogX2dldC1icmVha3BvaW50KCRtaW4pO1xuICAkbWF4OiBfZ2V0LWJyZWFrcG9pbnQoJG1heCk7XG5cbiAgQGlmIHVuaXQoJG1heCkgPT0gJ2VtJyB7XG4gICAgJG1heDogJG1heCAtIDAuMDE7XG4gIH0gQGVsc2UgaWYgY29tcGFyYWJsZSgkbWF4LCAxcHgpIHtcbiAgICAkbWF4OiAkbWF4IC0gMXB4O1xuICB9XG5cbiAgJHF1ZXJ5OiAnKG1pbi0jeyRwcm9wfTogI3skbWlufSkgYW5kIChtYXgtI3skcHJvcH06ICN7JG1heH0pJztcblxuICBAaW5jbHVkZSBfYXBwbHktcXVlcnkoJG5hbWUsICRxdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iXX0= */
