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

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

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

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

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

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

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

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

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

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

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

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@font-face {
  src: url("../fonts/roboto-regular.woff2") format("woff2"), url("../fonts/roboto-regular.woff") format("woff");
  font-family: Roboto;
  font-weight: 400;
  font-style: normal;
  font-display: swap; }

[type='text'],
[type='tel'],
[type='email'],
[type='search'],
[type='number'],
[type='url'],
[type='password'],
[type='date'],
textarea {
  width: 100%;
  border: 1px solid currentColor;
  border-radius: 0;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none; }

button,
[type='submit'] {
  display: inline-block;
  cursor: pointer;
  text-decoration: none;
  text-align: center;
  border: 1px solid currentColor;
  border-radius: 0;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none; }

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

select {
  position: relative;
  display: block; }

fieldset {
  margin: 0;
  margin-bottom: 1.5rem;
  padding: 0;
  border: 0; }

label {
  display: inline-block; }
  label[for] {
    cursor: pointer; }

[unselectable] {
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none; }

[disabled] {
  cursor: not-allowed; }

h1 {
  z-index: 1;
  font-size: 3rem;
  margin: 0;
  margin-bottom: 1.5rem; }

h2 {
  font-size: 2rem;
  margin: 0;
  margin-bottom: 1.5rem; }

h3 {
  font-size: 1.5rem;
  margin: 0;
  margin-bottom: 1.5rem; }

h4 {
  font-size: 1.25rem;
  margin: 0;
  margin-bottom: 1.5rem; }

h5 {
  font-size: 1rem;
  margin: 0;
  margin-bottom: 1.5rem; }

h6 {
  font-size: 0.875rem;
  margin: 0;
  margin-bottom: 1.5rem; }

a {
  text-decoration: none; }
  a:hover, a:active, a:focus {
    text-decoration: underline; }

ul,
dl,
ol {
  margin: 0;
  margin-bottom: 1.5rem;
  padding: 0;
  padding-left: 1.5rem; }
  ul ul,
  dl ul,
  ol ul, ul
  dl,
  dl
  dl,
  ol
  dl, ul
  ol,
  dl
  ol,
  ol
  ol {
    margin-bottom: 0; }

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

audio,
canvas,
iframe,
img,
svg,
video {
  vertical-align: middle; }

audio,
iframe,
img,
video {
  max-width: 100%;
  height: auto; }

figure {
  margin: 0;
  margin-bottom: 1.5rem; }

:root {
  color: #000;
  background-color: #fff;
  box-sizing: border-box;
  font-size: 16px;
  -webkit-font-kerning: normal;
          font-kerning: normal;
  font-variant-ligatures: common-ligatures contextual;
  font-feature-settings: 'kern', 'liga', 'clig', 'calt';
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
          text-size-adjust: 100%; }

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

body {
  font-family: sans-serif;
  font-weight: 400;
  font-style: normal;
  background-color: #fff; }
  .fonts-loaded body {
    font-family: Roboto, sans-serif; }
  @media print {
    body * {
      display: none; }
    body::after {
      content: 'Please, do not waste paper by printing webpages.'; } }

::-moz-selection {
  background-color: #f78474;
  color: #fff;
  text-shadow: none; }

::selection {
  background-color: #f78474;
  color: #fff;
  text-shadow: none; }

table {
  margin: 0;
  margin-bottom: 1.5rem;
  width: 100%;
  border-collapse: collapse; }

td,
th {
  padding: 0;
  vertical-align: top; }

th {
  text-align: left; }

hr {
  margin-right: auto;
  margin-left: auto;
  margin-bottom: 1.5rem;
  margin-top: 0;
  display: block;
  width: 90%;
  border: 0;
  border-bottom: 1px solid currentColor; }

pre,
p {
  margin: 0;
  margin-bottom: 1.5rem; }

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

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

.button {
  padding: 0.75rem;
  color: #000;
  background-color: #fff;
  border: 1px solid currentColor; }
  .button:hover, .button:active, .button:focus {
    color: #f78474;
    text-decoration: none; }

.example {
  padding: 1.5rem;
  border: 1px solid currentColor;
  box-shadow: 0 0 1.5rem 0 currentColor; }

.example--default {
  font-size: 100%; }

.example--large {
  padding: 3rem;
  font-size: 200%; }

.icon {
  position: relative;
  top: -0.0625em;
  display: inline-block;
  width: 1em;
  height: 1em;
  fill: currentColor; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUuY3NzL25vcm1hbGl6ZS5jc3MiLCJtYWluLmNzcyIsIjQtcmVzZXQvZm9udHMuc2NzcyIsIi4uLy4uLzEtY29uZmlnL3NoYXJlZC5qc29uIiwiNC1yZXNldC9mb3Jtcy5zY3NzIiwiMi10b29scy9zcGFjaW5nLnNjc3MiLCIyLXRvb2xzL3V0aWxpdGllcy5zY3NzIiwiNC1yZXNldC9oZWFkaW5ncy5zY3NzIiwiMi10b29scy96LWluZGV4LnNjc3MiLCIyLXRvb2xzL2ZvbnRzLnNjc3MiLCI0LXJlc2V0L2xpbmtzLnNjc3MiLCIyLXRvb2xzL2F0dGVudGlvbi5zY3NzIiwiNC1yZXNldC9saXN0cy5zY3NzIiwiNC1yZXNldC9tZWRpYS5zY3NzIiwiNC1yZXNldC9yb290LnNjc3MiLCIyLXRvb2xzL2NvbG9ycy5zY3NzIiwiMS1jb25maWcvY29sb3JzLnNjc3MiLCIxLWNvbmZpZy9iYXNlLXVuaXRzLnNjc3MiLCIyLXRvb2xzL21lZGlhcXVlcnkuc2NzcyIsIjQtcmVzZXQvdGFibGVzLnNjc3MiLCI0LXJlc2V0L3RleHQuc2NzcyIsIi4uL3BhdHRlcm5zL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5zY3NzIiwiLi4vcGF0dGVybnMvY29tcG9uZW50cy9leGFtcGxlL2V4YW1wbGUuc2NzcyIsIi4uL3BhdHRlcm5zL2NvbXBvbmVudHMvaWNvbi9pY29uLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBRTVFO2dGQUNnRjtBQUVoRjs7O0dBR0c7QUFFSDtFQUNFLGtCQUFpQjtFQUFHLE9BQU87RUFDM0IsK0JBQThCO0VBQUcsT0FBTyxFQUN6Qzs7QUFFRDtnRkFDZ0Y7QUFFaEY7O0dBRUc7QUFFSDtFQUNFLFVBQVMsRUFDVjs7QUFFRDs7O0dBR0c7QUFFSDtFQUNFLGVBQWM7RUFDZCxpQkFBZ0IsRUFDakI7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOzs7R0FHRztBQUVIO0VBQ0Usd0JBQXVCO0VBQUcsT0FBTztFQUNqQyxVQUFTO0VBQUcsT0FBTztFQUNuQixrQkFBaUI7RUFBRyxPQUFPLEVBQzVCOztBQUVEOzs7R0FHRztBQUVIO0VBQ0Usa0NBQWlDO0VBQUcsT0FBTztFQUMzQyxlQUFjO0VBQUcsT0FBTyxFQUN6Qjs7QUFFRDtnRkFDZ0Y7QUFFaEY7O0dBRUc7QUFFSDtFQUNFLDhCQUE2QixFQUM5Qjs7QUFFRDs7O0dBR0c7QUFFSDtFQUNFLG9CQUFtQjtFQUFHLE9BQU87RUFDN0IsMkJBQTBCO0VBQUcsT0FBTztFQUNwQywwQ0FBaUM7VUFBakMsa0NBQWlDO0VBQUcsT0FBTyxFQUM1Qzs7QUFFRDs7R0FFRztBQUVIOztFQUVFLG9CQUFtQixFQUNwQjs7QUFFRDs7O0dBR0c7QUFFSDs7O0VBR0Usa0NBQWlDO0VBQUcsT0FBTztFQUMzQyxlQUFjO0VBQUcsT0FBTyxFQUN6Qjs7QUFFRDs7R0FFRztBQUVIO0VBQ0UsZUFBYyxFQUNmOztBQUVEOzs7R0FHRztBQUVIOztFQUVFLGVBQWM7RUFDZCxlQUFjO0VBQ2QsbUJBQWtCO0VBQ2xCLHlCQUF3QixFQUN6Qjs7QUFFRDtFQUNFLGdCQUFlLEVBQ2hCOztBQUVEO0VBQ0UsWUFBVyxFQUNaOztBQUVEO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVIO0VBQ0UsbUJBQWtCLEVBQ25COztBQUVEO2dGQUNnRjtBQUVoRjs7O0dBR0c7QUFFSDs7Ozs7RUFLRSxxQkFBb0I7RUFBRyxPQUFPO0VBQzlCLGdCQUFlO0VBQUcsT0FBTztFQUN6QixrQkFBaUI7RUFBRyxPQUFPO0VBQzNCLFVBQVM7RUFBRyxPQUFPLEVBQ3BCOztBQUVEOzs7R0FHRztBQUVIOztFQUNRLE9BQU87RUFDYixrQkFBaUIsRUFDbEI7O0FBRUQ7OztHQUdHO0FBRUg7O0VBQ1MsT0FBTztFQUNkLHFCQUFvQixFQUNyQjs7QUFFRDs7R0FFRztBQUVIOzs7O0VBSUUsMkJBQTBCLEVBQzNCOztBQUVEOztHQUVHO0FBRUg7Ozs7RUFJRSxtQkFBa0I7RUFDbEIsV0FBVSxFQUNYOztBQUVEOztHQUVHO0FBRUg7Ozs7RUFJRSwrQkFBOEIsRUFDL0I7O0FBRUQ7O0dBRUc7QUFFSDtFQUNFLCtCQUE4QixFQUMvQjs7QUFFRDs7Ozs7R0FLRztBQUVIO0VBQ0UsdUJBQXNCO0VBQUcsT0FBTztFQUNoQyxlQUFjO0VBQUcsT0FBTztFQUN4QixlQUFjO0VBQUcsT0FBTztFQUN4QixnQkFBZTtFQUFHLE9BQU87RUFDekIsV0FBVTtFQUFHLE9BQU87RUFDcEIsb0JBQW1CO0VBQUcsT0FBTyxFQUM5Qjs7QUFFRDs7R0FFRztBQUVIO0VBQ0UseUJBQXdCLEVBQ3pCOztBQUVEOztHQUVHO0FBRUg7RUFDRSxlQUFjLEVBQ2Y7O0FBRUQ7OztHQUdHO0FDNUJIOztFRGdDRSx1QkFBc0I7RUFBRyxPQUFPO0VBQ2hDLFdBQVU7RUFBRyxPQUFPLEVBQ3JCOztBQUVEOztHQUVHO0FDNUJIOztFRGdDRSxhQUFZLEVBQ2I7O0FBRUQ7OztHQUdHO0FDOUJIO0VEaUNFLDhCQUE2QjtFQUFHLE9BQU87RUFDdkMscUJBQW9CO0VBQUcsT0FBTyxFQUMvQjs7QUFFRDs7R0FFRztBQzlCSDtFRGlDRSx5QkFBd0IsRUFDekI7O0FBRUQ7OztHQUdHO0FBRUg7RUFDRSwyQkFBMEI7RUFBRyxPQUFPO0VBQ3BDLGNBQWE7RUFBRyxPQUFPLEVBQ3hCOztBQUVEO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVIO0VBQ0UsZUFBYyxFQUNmOztBQUVEOztHQUVHO0FBRUg7RUFDRSxtQkFBa0IsRUFDbkI7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOztHQUVHO0FBRUg7RUFDRSxjQUFhLEVBQ2Q7O0FBRUQ7O0dBRUc7QUN4Q0g7RUQyQ0UsY0FBYSxFQUNkOztBRTlVSztFQUNFLDhHQUF5RztFQUN6RyxvQkNQeUI7RURRekIsaUJDUjBEO0VEUzFELG1CQ1R3RTtFRFV4RSxtQkFBa0IsRUFBQTs7QUR1UzFCOzs7Ozs7Ozs7RUd4U0UsWUFBVztFQUNYLCtCQUE4QjtFQUM5QixpQkFBZ0I7RUFDaEIseUJBQWdCO0tBQWhCLHNCQUFnQjtVQUFoQixpQkFBZ0IsRUFDakI7O0FBRUQ7O0VBRUUsc0JBQXFCO0VBQ3JCLGdCQUFlO0VBQ2Ysc0JBQXFCO0VBQ3JCLG1CQUFrQjtFQUNsQiwrQkFBOEI7RUFDOUIsaUJBQWdCO0VBQ2hCLHlCQUFnQjtLQUFoQixzQkFBZ0I7VUFBaEIsaUJBQWdCLEVBQ2pCOztBQUdEO0VBQ0UsaUJBQWdCO0VBQ2hCLG9CQUFtQixFQUNwQjs7QUFFRDtFQUNFLG1CQUFrQjtFQUNsQixlQUFjLEVBQ2Y7O0FBR0Q7RUNYUSxVQ0hLO0VEYUwsc0JDTHlCO0VGUS9CLFdBQVU7RUFDVixVQUFTLEVBQ1Y7O0FBSUQ7RUFDRSxzQkFBcUIsRUFLdEI7RUFORDtJQUlJLGdCQUFlLEVBQ2hCOztBSHlTSDtFR3BTRSwwQkFBaUI7S0FBakIsdUJBQWlCO01BQWpCLHNCQUFpQjtVQUFqQixrQkFBaUIsRUFDbEI7O0FIc1NEO0VHblNFLG9CQUFtQixFQUNwQjs7QUc5REQ7RUN1QkUsV0FUTztFQ0NQLGdCSEh5RDtFRGdCbkQsVUNISztFRGFMLHNCQ0x5QixFQzdCaEM7O0FBRUQ7RUVTRSxnQkhIeUQ7RURnQm5ELFVDSEs7RURhTCxzQkNMeUIsRUN4QmhDOztBQUVEO0VFSUUsa0JISHlEO0VEZ0JuRCxVQ0hLO0VEYUwsc0JDTHlCLEVDbkJoQzs7QUFFRDtFRURFLG1CSEh5RDtFRGdCbkQsVUNISztFRGFMLHNCQ0x5QixFQ2RoQzs7QUFFRDtFRU5FLGdCSEh5RDtFRGdCbkQsVUNISztFRGFMLHNCQ0x5QixFQ1RoQzs7QUFFRDtFRVhFLG9CSEh5RDtFRGdCbkQsVUNISztFRGFMLHNCQ0x5QixFQ0poQzs7QUc3QkQ7RUFDRSxzQkFBcUIsRUFLdEI7RUNKQztJREVFLDJCQUEwQixFQ0UzQjs7QUNOSDs7O0VQNEJRLFVDSEs7RURhTCxzQkNMeUI7RUQ0QnpCLFdDcENLO0VEOENMLHFCQ3RDeUIsRU14QmhDO0VBVEQ7Ozs7Ozs7Ozs7Ozs7SVBzQ1EsaUJDYkssRU1qQlY7O0FBSUg7Ozs7RVBpRFEsV0NwQ0s7RU1SVCxpQkFBZ0IsRUFDakI7O0FDaEJIOzs7Ozs7RUFNRSx1QkFBc0IsRUFDdkI7O0FBR0Q7Ozs7RUFJRSxnQkFBZTtFQUNmLGFBQVksRUFDYjs7QUFFRDtFUlFRLFVDSEs7RURhTCxzQkNMeUIsRU9YaEM7O0FDdEJEO0VDZUUsWUNYZ0I7RURlaEIsdUJDZGdCO0VGRmhCLHVCQUFzQjtFQUN0QixnQkdIbUI7RUhJbkIsNkJBQW9CO1VBQXBCLHFCQUFvQjtFQUNwQixvREFBbUQ7RUFDbkQsc0RBQXFEO0VBQ3JELGlCR05vQjtFSE9wQiwrQkFBc0I7VUFBdEIsdUJBQXNCLEVBQ3ZCOztBQUVEO0VBSUksb0JBQW1CLEVBQ3BCOztBQUlIO0VMa0JJLHdCTnRDa0Q7RU00RHBELGlCTjVEZ0U7RU0yRWhFLG1CTjNFOEU7RVlrQjlFLHVCQ2RnQixFRjhCakI7RUxNRztJQUNFLGdDTnpDZ0QsRU0wQ2pEO0VTckNEO0lKZUo7TUFPTSxjQUFhLEVBQ2Q7SUFSTDtNQVdNLDREQUEyRCxFQUM1RCxFQUFBOztBQUtMO0VDbkJFLDBCQ2JpQjtFRFNqQixZQ1ZnQjtFRm9DaEIsa0JBQWlCLEVBQ2xCOztBQUpEO0VDbkJFLDBCQ2JpQjtFRFNqQixZQ1ZnQjtFRm9DaEIsa0JBQWlCLEVBQ2xCOztBS3pDRDtFZDJCUSxVQ0hLO0VEYUwsc0JDTHlCO0VhOUIvQixZQUFXO0VBQ1gsMEJBQXlCLEVBQzFCOztBQUdEOztFQUVFLFdBQVU7RUFDVixvQkFBbUIsRUFDcEI7O0FBR0Q7RUFDRSxpQkFBZ0IsRUFDakI7O0FDZkQ7RWYrQlEsbUJlOUJnQjtFZitCaEIsa0JlL0JnQjtFZm1DaEIsc0JDTHlCO0VES3pCLGNDYks7RWNyQlgsZUFBYztFQUNkLFdBQVU7RUFDVixVQUFTO0VBQ1Qsc0NBQXFDLEVBQ3RDOztBQUVEOztFZmtCUSxVQ0hLO0VEYUwsc0JDTHlCLEVjcEJoQzs7QUFFRDs7RUFFRSxtQkFBa0I7RUFDbEIseUJBQXdCO0VBQ3hCLGVBQWM7RUFDZCxlQUFjLEVBQ2Y7O0FBRUQ7RUFDRSxnQkFBZSxFQUNoQjs7QUFFRDtFQUNFLFlBQVcsRUFDWjs7QUM3QkQ7RWhCNkRRLGlCQzVCeUI7RVNsQi9CLFlDWGdCO0VEZWhCLHVCQ2RnQjtFS0RoQiwrQkFBOEIsRUFNL0I7RVZSQztJSWFBLGVDVGlCO0lLRWYsc0JBQXFCLEVWRnRCOztBV05IO0VqQjZEUSxnQkM1QnlCO0VnQi9CL0IsK0JBQThCO0VBQzlCLHNDQUF5QyxFQUMxQzs7QUFFRDtFQUNFLGdCQUFlLEVBQ2hCOztBQUVEO0VqQm1EUSxjQzVCeUI7RWdCckIvQixnQkFBZSxFQUNoQjs7QUNURDtFQUNFLG1CQUFrQjtFQUNsQixlQUFjO0VBQ2Qsc0JBQXFCO0VBQ3JCLFdBQVU7RUFDVixZQUFXO0VBQ1gsbUJBQWtCLEVBQ25CIiwiZmlsZSI6Im1haW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohIG5vcm1hbGl6ZS5jc3MgdjguMC4wIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKiBEb2N1bWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cbiAqL1xuXG5odG1sIHtcbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qIFNlY3Rpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gKi9cblxuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG4gKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMSAqL1xuICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnByZSB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xufVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICovXG5cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTsgLyogMSAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0OyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTsgLyogMSAqL1xuICBtYXJnaW46IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQgeyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7IC8qIDEgKi9cbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuXG5maWVsZHNldCB7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxubGVnZW5kIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICBkaXNwbGF5OiB0YWJsZTsgLyogMSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMyAqL1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDEwKy5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLlxuICovXG5cblt0eXBlPVwiY2hlY2tib3hcIl0sXG5bdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuICovXG5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gKiAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG4gKi9cblxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbn1cblxuLyogSW50ZXJhY3RpdmVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxuICovXG5cbmRldGFpbHMge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xufVxuXG4vKiBNaXNjXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwKy5cbiAqL1xuXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG4gKi9cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjguMC4wIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuLyogRG9jdW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuICovXG5odG1sIHtcbiAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gIC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAyICovIH1cblxuLyogU2VjdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbiAqL1xuYm9keSB7XG4gIG1hcmdpbjogMDsgfVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gKi9cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7IH1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAvKiAxICovXG4gIGhlaWdodDogMDtcbiAgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xucHJlIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtO1xuICAvKiAyICovIH1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIENocm9tZSA1Ny1cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gKi9cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgLyogMSAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgLyogMiAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyOyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlOyB9XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gKiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtOyB9XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtOyB9XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAuXG4gKi9cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTsgfVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLyogMSAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAqL1xuYnV0dG9uLFxuaW5wdXQge1xuICAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyB9XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gKi9cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIC8qIDEgKi9cbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyB9XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7IH1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0OyB9XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5maWVsZHNldCB7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTsgfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAqL1xubGVnZW5kIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBjb2xvcjogaW5oZXJpdDtcbiAgLyogMiAqL1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgLyogMSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMyAqL1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAvKiAxICovIH1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxuICovXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG4gKi9cblt0eXBlPVwiY2hlY2tib3hcIl0sXG5bdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICAvKiAxICovXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gKi9cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7XG4gIC8qIDIgKi8gfVxuXG4vKiBJbnRlcmFjdGl2ZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxuICovXG5kZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cbiAqL1xuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgfVxuXG4vKiBNaXNjXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gKi9cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuICovXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuQGZvbnQtZmFjZSB7XG4gIHNyYzogdXJsKFwiLi4vZm9udHMvcm9ib3RvLXJlZ3VsYXIud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksIHVybChcIi4uL2ZvbnRzL3JvYm90by1yZWd1bGFyLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LWRpc3BsYXk6IHN3YXA7IH1cblxuW3R5cGU9J3RleHQnXSxcblt0eXBlPSd0ZWwnXSxcblt0eXBlPSdlbWFpbCddLFxuW3R5cGU9J3NlYXJjaCddLFxuW3R5cGU9J251bWJlciddLFxuW3R5cGU9J3VybCddLFxuW3R5cGU9J3Bhc3N3b3JkJ10sXG5bdHlwZT0nZGF0ZSddLFxudGV4dGFyZWEge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBhcHBlYXJhbmNlOiBub25lOyB9XG5cbmJ1dHRvbixcblt0eXBlPSdzdWJtaXQnXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVyOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBhcHBlYXJhbmNlOiBub25lOyB9XG5cbnRleHRhcmVhIHtcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgdmVydGljYWwtYWxpZ246IHRvcDsgfVxuXG5zZWxlY3Qge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbmZpZWxkc2V0IHtcbiAgbWFyZ2luOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG5sYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuICBsYWJlbFtmb3JdIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cblxuW3Vuc2VsZWN0YWJsZV0ge1xuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuXG5bZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDsgfVxuXG5oMSB7XG4gIHotaW5kZXg6IDE7XG4gIGZvbnQtc2l6ZTogM3JlbTtcbiAgbWFyZ2luOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07IH1cblxuaDIge1xuICBmb250LXNpemU6IDJyZW07XG4gIG1hcmdpbjogMDtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtOyB9XG5cbmgzIHtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIG1hcmdpbjogMDtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtOyB9XG5cbmg0IHtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBtYXJnaW46IDA7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTsgfVxuXG5oNSB7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbWFyZ2luOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07IH1cblxuaDYge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBtYXJnaW46IDA7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTsgfVxuXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIGE6aG92ZXIsIGE6YWN0aXZlLCBhOmZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfVxuXG51bCxcbmRsLFxub2wge1xuICBtYXJnaW46IDA7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgcGFkZGluZzogMDtcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW07IH1cbiAgdWwgdWwsXG4gIGRsIHVsLFxuICBvbCB1bCwgdWxcbiAgZGwsXG4gIGRsXG4gIGRsLFxuICBvbFxuICBkbCwgdWxcbiAgb2wsXG4gIGRsXG4gIG9sLFxuICBvbFxuICBvbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG5uYXYgdWwsXG5uYXYgb2wsXG5maWVsZHNldCB1bCxcbmZpZWxkc2V0IG9sIHtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG5hdWRpbyxcbmNhbnZhcyxcbmlmcmFtZSxcbmltZyxcbnN2ZyxcbnZpZGVvIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG5hdWRpbyxcbmlmcmFtZSxcbmltZyxcbnZpZGVvIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87IH1cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07IH1cblxuOnJvb3Qge1xuICBjb2xvcjogIzAwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LWtlcm5pbmc6IG5vcm1hbDtcbiAgZm9udC12YXJpYW50LWxpZ2F0dXJlczogY29tbW9uLWxpZ2F0dXJlcyBjb250ZXh0dWFsO1xuICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICdrZXJuJywgJ2xpZ2EnLCAnY2xpZycsICdjYWx0JztcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgdGV4dC1zaXplLWFkanVzdDogMTAwJTsgfVxuXG4qLCAqOjpiZWZvcmUsICo6OmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDsgfVxuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxuICAuZm9udHMtbG9hZGVkIGJvZHkge1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7IH1cbiAgQG1lZGlhIHByaW50IHtcbiAgICBib2R5ICoge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuICAgIGJvZHk6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICdQbGVhc2UsIGRvIG5vdCB3YXN0ZSBwYXBlciBieSBwcmludGluZyB3ZWJwYWdlcy4nOyB9IH1cblxuOjpzZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjc4NDc0O1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7IH1cblxudGFibGUge1xuICBtYXJnaW46IDA7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IH1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7IH1cblxudGgge1xuICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG5cbmhyIHtcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICBtYXJnaW4tdG9wOiAwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDkwJTtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgY3VycmVudENvbG9yOyB9XG5cbnByZSxcbnAge1xuICBtYXJnaW46IDA7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTsgfVxuXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwOyB9XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTsgfVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTsgfVxuXG4uYnV0dG9uIHtcbiAgcGFkZGluZzogMC43NXJlbTtcbiAgY29sb3I6ICMwMDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjsgfVxuICAuYnV0dG9uOmhvdmVyLCAuYnV0dG9uOmFjdGl2ZSwgLmJ1dHRvbjpmb2N1cyB7XG4gICAgY29sb3I6ICNmNzg0NzQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbi5leGFtcGxlIHtcbiAgcGFkZGluZzogMS41cmVtO1xuICBib3JkZXI6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gIGJveC1zaGFkb3c6IDAgMCAxLjVyZW0gMCBjdXJyZW50Q29sb3I7IH1cblxuLmV4YW1wbGUtLWRlZmF1bHQge1xuICBmb250LXNpemU6IDEwMCU7IH1cblxuLmV4YW1wbGUtLWxhcmdlIHtcbiAgcGFkZGluZzogM3JlbTtcbiAgZm9udC1zaXplOiAyMDAlOyB9XG5cbi5pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IC0wLjA2MjVlbTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgZmlsbDogY3VycmVudENvbG9yOyB9XG4iLCIvLyBjdXN0b20gQGZvbnQtZmFjZSBydWxlcyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBmb250LWNvbmZpZ1xuQGlmIHZhcmlhYmxlLWV4aXN0cyhmb250cykge1xuICBAZWFjaCAkZm9udC1pZCwgJGZvbnQtZGVmaW5pdGlvbiBpbiAkZm9udHMge1xuICAgIEBpZiBtYXAtZ2V0KCRmb250LWRlZmluaXRpb24sIGZvbnRmYWNlKSA9PSB0cnVlIHtcbiAgICAgICRmb250ZmlsZTogbWFwLWdldCgkZm9udC1kZWZpbml0aW9uLCBmaWxlKTtcblxuICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgIHNyYzogdXJsKCcuLi9mb250cy8jeyRmb250ZmlsZX0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIHVybCgnLi4vZm9udHMvI3skZm9udGZpbGV9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1hcC1nZXQoJGZvbnQtZGVmaW5pdGlvbiwgZmFtaWx5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG1hcC1nZXQoJGZvbnQtZGVmaW5pdGlvbiwgd2VpZ2h0KTtcbiAgICAgICAgZm9udC1zdHlsZTogdW5xdW90ZShtYXAtZ2V0KCRmb250LWRlZmluaXRpb24sIHN0eWxlKSk7XG4gICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIiRicmVha3BvaW50czogKHM6IDQ4MCxtOiA2NDAsbDogNzIwLHhsOiA5NjAseHhsOiAxMTAwLHh4eGw6IDE0MDAsY3VzdG9tOiAobWF4LXdpZHRoOiAzMGVtKSk7XG4kZm9udHM6IChkZWZhdWx0OiAoZmFtaWx5OiBSb2JvdG8sZmFsbGJhY2s6IHNhbnMtc2VyaWYsd2VpZ2h0OiA0MDAsc3R5bGU6IG5vcm1hbCxmb250ZmFjZTogdHJ1ZSxmaWxlOiByb2JvdG8tcmVndWxhcikpOyIsIi8vIGRlZmF1bHQgc3R5bGVzIGZvciB0ZXh0LWlucHV0IGZvcm1zIGZpZWxkc1xuW3R5cGU9J3RleHQnXSxcblt0eXBlPSd0ZWwnXSxcblt0eXBlPSdlbWFpbCddLFxuW3R5cGU9J3NlYXJjaCddLFxuW3R5cGU9J251bWJlciddLFxuW3R5cGU9J3VybCddLFxuW3R5cGU9J3Bhc3N3b3JkJ10sXG5bdHlwZT0nZGF0ZSddLFxudGV4dGFyZWEge1xuICB3aWR0aDogMTAwJTsgLy8gd3JhcCBncmlkL2Rpdi9wIGFyb3VuZCBpbnB1dHNcbiAgYm9yZGVyOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBhcHBlYXJhbmNlOiBub25lOyAvLyBubyByb3VuZGVkIGlucHV0cyBldGMuXG59XG5cbmJ1dHRvbixcblt0eXBlPSdzdWJtaXQnXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVyOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG4vLyBhbGxvdyByZXNpemluZyBvZiB0ZXh0YXJlYXMgdmVydGljYWxseVxudGV4dGFyZWEge1xuICByZXNpemU6IHZlcnRpY2FsO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG5zZWxlY3Qge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vLyBubyBib3JkZXIvcGFkZGluZy9tYXJnaW4gZm9yIHRoZSBmaWVsZHNldFxuZmllbGRzZXQge1xuICBAaW5jbHVkZSBtYXJnaW4oYSAwLCBiIDEpO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG59XG5cbi8vIHBvc2l0aW9uIGxhYmVscyBvbiB0b3Agb2YgdGhlaXIgcmVsYXRlZCBpbnB1dHMgYnkgZGVmYXVsdCxcbi8vIGFuZCBnaXZlIHRoZW0gYSBoaW50IHRvIG1ha2UgdGhlbSBjbGlja2FibGUgYnkgc2V0dGluZyBjdXJzb3JcbmxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICZbZm9yXSB7IC8vIGFkZCBwb2ludGVyLWN1cnNvciBpZiBhc3NvY2lhdGVkIHRvIGlucHV0XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbi8vIGRvbnQgYWxsb3cgdW5zZWxlY3RhYmxlIGVsZW1lbnRzIHRvIGJlIHNlbGVjdGVkXG5bdW5zZWxlY3RhYmxlXSB7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG5bZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cbiIsIi8vIGNyZWF0ZXMgbWFyZ2lucywgYnkgZGVmYXVsdCAod2l0aG91dCBhbnkgcGFyYW1ldGVycykgb25seSBtYXJnaW4tYm90dG9tXG4vLyB3aXRoICRiYXNlLXVuaXQgLS0gZGVmYXVsdCByaHl0aG0sIG9yIGZvciBldmVyeSBzaWRlL3ZhbHVlLXBhaXIgd2l0aFxuLy8gdGhlaXIgc2hvcnQgdmFyaWFudHM6XG4vL1xuLy8gdXNhZ2UgZXhhbXBsZXM6XG4vLyBAaW5jbHVkZSBtYXJnaW47ID09PiBtYXJnaW4tYm90dG9tOiAkYmFzZS11bml0O1xuLy8gQGluY2x1ZGUgbWFyZ2luKDIpID09PiB3YXJuaW5nISwgdGhpcyBpcyBub3QgZ29ubmEgd29ya1xuLy8gQGluY2x1ZGUgbWFyZ2luKGIgMikgPT0+IG1hcmdpbi1ib3R0b206ICRiYXNlLXVuaXQgKiAyO1xuLy8gQGluY2x1ZGUgbWFyZ2luKGEgMikgPT0+IG1hcmdpbjogJGJhc2UtdW5pdCAqIDI7XG4vLyBAaW5jbHVkZSBtYXJnaW4oYSAwLjUsIGIgMSkgPT0+IG1hcmdpbjogJGJhc2UtdW5pdCAqIDAuNTsgbWFyZ2luLWJvdHRvbTogJGJhc2UtdW5pdDtcbi8vIEBpbmNsdWRlIG1hcmdpbihyIDEsIGwgMTIlKSA9PT4gbWFyZ2luLXJpZ2h0OiBiYXNlLXVuaXQ7IG1hcmdpbi1sZWZ0OiAxMiU7XG4vLyBAaW5jbHVkZSBtYXJnaW4ociAwLCB0IGF1dG8pID09PiBtYXJnaW4tcmlnaHQ6IDA7IG1hcmdpbi10b3A6IGF1dG87XG4vLyBAaW5jbHVkZSBtYXJnaW4odiAxKSA9PT4gbWFyZ2luLXJpZ2h0OiAkYmFzZS11bml0OyBtYXJnaW4tbGVmdDogJGJhc2UtdW5pdDtcbi8vIEBpbmNsdWRlIG1hcmdpbihoIDEpID09PiBtYXJnaW4tdG9wOiAkYmFzZS11bml0OyBtYXJnaW4tYm90dG9tOiAkYmFzZS11bml0O1xuQG1peGluIG1hcmdpbigkc3BhY2luZy1hcmdzLi4uKSB7XG4gIC8vIGRlZmF1bHQgY2FzZSBmb3Igc3BhY2luZyAtLSBtYXJnaW4gYm90dG9tXG4gIEBpZiBsZW5ndGgoJHNwYWNpbmctYXJncykgPT0gMCB7XG4gICAgQGlmIHZhcmlhYmxlLWV4aXN0cyhiYXNlLXVuaXQpID09IGZhbHNlIHtcbiAgICAgIEB3YXJuICckYmFzZS11bml0IGlzIG5vdCBzZXQsIHBsZWFzZSBzZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyIGNvbmZpZy4gRGVmYXVsdGluZyB0byAxLjVyZW0nO1xuICAgICAgJGJhc2UtdW5pdDogMS41cmVtO1xuICAgIH0gQGVsc2Uge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJGJhc2UtdW5pdDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRwb3NpdGlvbi1rZXksICRwb3NpdGlvbi12YWx1ZSBpbiAkc3BhY2luZy1hcmdzIHtcbiAgICAgIEBpZiBub3QgJHBvc2l0aW9uLXZhbHVlIHtcbiAgICAgICAgQHdhcm4gJ1lvdSBzaG91bGQgcHJvdmlkZSBhIGxpc3Qgb2Ygc2lkZS92YWx1ZSBwYWlycyBlLmcuIFwiYiAyXCIgZm9yIHRoaXMgbWl4aW4gdG8gd29yayc7XG4gICAgICB9IEBlbHNlIGlmICRwb3NpdGlvbi1rZXkgPT0gJ2EnIHtcbiAgICAgICAgbWFyZ2luOiBwYXJzZS11bml0KCRwb3NpdGlvbi12YWx1ZSk7XG4gICAgICB9IEBlbHNlIGlmICRwb3NpdGlvbi1rZXkgPT0gJ3YnIHtcbiAgICAgICAgbWFyZ2luLXRvcDogcGFyc2UtdW5pdCgkcG9zaXRpb24tdmFsdWUpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiBwYXJzZS11bml0KCRwb3NpdGlvbi12YWx1ZSk7XG4gICAgICB9IEBlbHNlIGlmICRwb3NpdGlvbi1rZXkgPT0gJ2gnIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBwYXJzZS11bml0KCRwb3NpdGlvbi12YWx1ZSk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBwYXJzZS11bml0KCRwb3NpdGlvbi12YWx1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHNpZGU6IHBvc2l0aW9uLW1hcCgkcG9zaXRpb24ta2V5KTtcbiAgICAgICAgJHZhbHVlOiBwYXJzZS11bml0KCRwb3NpdGlvbi12YWx1ZSk7XG4gICAgICAgIG1hcmdpbi0jeyRzaWRlfTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyB0aGlzIHBhZGRpbmcgbWl4aW4gZm9yIHBhZGRpbmcgYmVoYXZlcyBzbGlnaHRseSBkaWZmZXJlbnRcbi8vIHdoZW4gcHJvdmlkZWQgd2l0aCBubyBwYXJhbWV0ZXIsIHBhZGRpbmcgaXMgYXBwbGllZCB0byBhbGwgZm91clxuLy8gc2lkZXMgb2YgdGhlIGVsZW1lbnQsIHVzaW5nIHBhZGRpbmctc2hvcnRoYW5kXG5AbWl4aW4gcGFkZGluZygkc3BhY2luZy1hcmdzLi4uKSB7XG4gIC8vIGRlZmF1bHQgY2FzZSBmb3Igc3BhY2luZyAtLSBtYXJnaW4gYm90dG9tXG4gIEBpZiBsZW5ndGgoJHNwYWNpbmctYXJncykgPT0gMCB7XG4gICAgQGlmIHZhcmlhYmxlLWV4aXN0cyhiYXNlLXVuaXQpID09IGZhbHNlIHtcbiAgICAgIEB3YXJuICckYmFzZS11bml0IGlzIG5vdCBzZXQsIHBsZWFzZSBzZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyIGNvbmZpZy4gRGVmYXVsdGluZyB0byAxLjVyZW0nO1xuICAgICAgJGJhc2UtdW5pdDogMS41cmVtO1xuICAgIH0gQGVsc2Uge1xuICAgICAgcGFkZGluZzogJGJhc2UtdW5pdDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRwb3NpdGlvbi1rZXksICRwb3NpdGlvbi12YWx1ZSBpbiAkc3BhY2luZy1hcmdzIHtcbiAgICAgIEBpZiBub3QgJHBvc2l0aW9uLXZhbHVlIHtcbiAgICAgICAgQHdhcm4gJ1lvdSBzaG91bGQgcHJvdmlkZSBhIGxpc3Qgb2Ygc2lkZS92YWx1ZSBwYWlycyBlLmcuIFwiYiAyXCIgZm9yIHRoaXMgbWl4aW4gdG8gd29yayc7XG4gICAgICB9IEBlbHNlIGlmICRwb3NpdGlvbi1rZXkgPT0gJ2EnIHtcbiAgICAgICAgcGFkZGluZzogcGFyc2UtdW5pdCgkcG9zaXRpb24tdmFsdWUpO1xuICAgICAgfSBAZWxzZSBpZiAkcG9zaXRpb24ta2V5ID09ICd2JyB7XG4gICAgICAgIHBhZGRpbmctdG9wOiBwYXJzZS11bml0KCRwb3NpdGlvbi12YWx1ZSk7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiBwYXJzZS11bml0KCRwb3NpdGlvbi12YWx1ZSk7XG4gICAgICB9IEBlbHNlIGlmICRwb3NpdGlvbi1rZXkgPT0gJ2gnIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogcGFyc2UtdW5pdCgkcG9zaXRpb24tdmFsdWUpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHBhcnNlLXVuaXQoJHBvc2l0aW9uLXZhbHVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkc2lkZTogcG9zaXRpb24tbWFwKCRwb3NpdGlvbi1rZXkpO1xuICAgICAgICAkdmFsdWU6IHBhcnNlLXVuaXQoJHBvc2l0aW9uLXZhbHVlKTtcbiAgICAgICAgcGFkZGluZy0jeyRzaWRlfTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4iLCIvLyBnZW5lcmFsIGhlbHBlciBmdW5jdGlvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGZ1bmN0aW9uIHB4LXRvLXJlbSgkcHh2YWx1ZSkge1xuICBAaWYgdmFyaWFibGUtZXhpc3RzKGZvbnQtc2l6ZXMpID09IGZhbHNlIHtcbiAgICBAd2FybiAnJGZvbnQtc2l6ZXMgU2Fzcy1tYXAgZG9lcyBub3QgZXhpc3QsIHBsZWFzZSBwcm92aWRlIG9uZSBpbiB5b3VyIGNvbmZpZy4gRGVmYXVsdGluZyB0byAxNnB4LXJlbS1lcXVpdmFsZW50JztcbiAgICBAcmV0dXJuICgkcHh2YWx1ZSAvIDE2cHgpICogMXJlbTtcbiAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkZm9udC1zaXplcywgZGVmYXVsdCkgPT0gZmFsc2Uge1xuICAgIEB3YXJuICdJbmRleCBcImRlZmF1bHRcIiBub3QgZm91bmQgaW4gJGZvbnQtc2l6ZXMgU2Fzcy1tYXAgdXNpbmcgZnVuY3Rpb24gcHgtdG8tcmVtLiBEZWZhdWx0aW5nIHRvIDE2cHgtcmVtLWVxdWl2YWxlbnQnO1xuICAgIEByZXR1cm4gKCRweHZhbHVlIC8gMTZweCkgKiAxcmVtO1xuICB9XG5cbiAgQHJldHVybiAoJHB4dmFsdWUgLyBtYXAtZ2V0KCRmb250LXNpemVzLCBkZWZhdWx0KSkgKiAxcmVtO1xufVxuXG4vLyByZXR1cm5zIHRydWUgaWYgaXQgaXMganVzdCBhIG51bWJlciB3aXRob3V0IHVuaXRcbkBmdW5jdGlvbiBpcy1udW1iZXIoJHZhbHVlKSB7XG4gIEByZXR1cm4gdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIGFuZCB1bml0bGVzcygkdmFsdWUpO1xufVxuXG4vLyBpZiBhIHVuaXRsZXNzIG51bWJlciBpcyBnaXZlbiwgdGhpcyBmdW5jdGlvbiByZXR1cm5zICRiYXNlLXVuaXQgKiB2YWx1ZVxuLy8gKGV4Y2VwdCBmb3IgMCwgMCB3aWxsIGJlIHJldHVybmVkIGluc3RhbnRseSlcbi8vIGlmIGFueXRoaW5nIGVsc2UgaXMgZ2l2ZW4sIGl0IHdpbGwgcmV0dXJuIGl0cyB1bnFvdGVkIHZhbHVlO1xuQGZ1bmN0aW9uIHBhcnNlLXVuaXQoJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gMCB7XG4gICAgQHJldHVybiAwO1xuICB9XG5cbiAgQGlmIGlzLW51bWJlcigkdmFsdWUpIHtcbiAgICBAaWYgdmFyaWFibGUtZXhpc3RzKGJhc2UtdW5pdCkgPT0gZmFsc2Uge1xuICAgICAgQHdhcm4gJyRiYXNlLXVuaXQgaXMgbm90IHNldCwgcGxlYXNlIHNldCB0aGlzIHZhcmlhYmxlIGluIHlvdXIgY29uZmlnLiBEZWZhdWx0aW5nIHRvIDEuNXJlbSc7XG4gICAgICAkYmFzZS11bml0OiAxLjVyZW07XG4gICAgfSBAZWxzZSB7XG4gICAgICBAcmV0dXJuICRiYXNlLXVuaXQgKiAkdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbi8vIHJldHVybnMgdGhlIGZ1bGwgdmFsdWUgZm9yIGFueSBvZiB0aGUgcG9zaXRpb24vc2lkZSBzaG9ydC1mb3Jtc1xuQGZ1bmN0aW9uIHBvc2l0aW9uLW1hcCgkc2hvcnQpIHtcbiAgJHNob3J0LW1hcDogKFxuICAgIHQ6IHRvcCxcbiAgICByOiByaWdodCxcbiAgICBiOiBib3R0b20sXG4gICAgbDogbGVmdFxuICApO1xuXG4gIEBpZiBtYXAtaGFzLWtleSgkc2hvcnQtbWFwLCAkc2hvcnQpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJHNob3J0LW1hcCwgJHNob3J0KTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ1Nob3J0IGtleSBcIiN7JHNob3J0fVwiIG5vdCBhdmFpYWJsZS4gQXZhaWFibGUga2V5cyBhcmU6IHQsIHIsIGIgYW5kIGwnO1xuXG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiaDEge1xuICBAaW5jbHVkZSB6LWluZGV4KGZlZXQpO1xuICBAaW5jbHVkZSBmb250LXNpemUoaDEpO1xuICBAaW5jbHVkZSBtYXJnaW4oYSAwLCBiIDEpO1xufVxuXG5oMiB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShoMik7XG4gIEBpbmNsdWRlIG1hcmdpbihhIDAsIGIgMSk7XG59XG5cbmgzIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGgzKTtcbiAgQGluY2x1ZGUgbWFyZ2luKGEgMCwgYiAxKTtcbn1cblxuaDQge1xuICBAaW5jbHVkZSBmb250LXNpemUoaDQpO1xuICBAaW5jbHVkZSBtYXJnaW4oYSAwLCBiIDEpO1xufVxuXG5oNSB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShoNSk7XG4gIEBpbmNsdWRlIG1hcmdpbihhIDAsIGIgMSk7XG59XG5cbmg2IHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGg2KTtcbiAgQGluY2x1ZGUgbWFyZ2luKGEgMCwgYiAxKTtcbn1cbiIsIi8vIHotaW5kZXggbWl4aW4gZm9yIHVzZSB3aXRoIHRoZSBtYXAgaW4gdmFyaWFibGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIHByb3ZpZGUgYSBkZWZhdWx0IG1hcCBmb3Igei1pbmRleGVzIHVzZWQgdGhyb3VnaG91dCB0aGUgcHJvamVjdFxuLy8gd2l0aCBhbiBlYXN5IHRvIHJlbWVtYmVyIHN0YWNraW5nIGhpZXJhcmNoeSDigJTCoGp1c3QgbG9vayBkb3duIHlvdXIgYm9keSFcbi8vIElmIHlvdSB3YW50IHRvIHVzZSB5b3VyIG93biBtYXAsIGp1c3QgcHJvdmlkZSBvbmUgd2l0aCB0aGUgdmFyaWFibGUgJHotaW5kZXhlc1xuLy8gYmVmb3JlIGluY2x1ZGluZyB0aGlzIGZpbGUgaW4geW91ciBtYWluIFNhc3MgZmlsZVxuJHotaW5kZXhlczogKFxuICBza3k6IDEwMDAsXG4gIGhhaXI6IDUwLFxuICBoZWFkOiA0MCxcbiAgYnJlYXN0OiAzMCxcbiAgYmVsbHk6IDIwLFxuICBrbmVlczogMTAsXG4gIGZlZXQ6IDEsXG4gIGRlZmF1bHQ6IDAsXG4gIGdyb3VuZDogLTFcbikgIWRlZmF1bHQ7XG5cbi8vIGFuZCBhbiBlYXN5IHRvIHVzZSBtaXhpbiB0byB1c2UgYSB2YWx1ZSBmcm9tIHRoZSBtYXAgYWJvdmUgdXNlIGxpa2UgdGhpczpcbi8vIEBpbmNsdWRlIHotaW5kZXgoa25lZXMpOyA9PT4gei1pbmRleDogMTA7XG5cbkBtaXhpbiB6LWluZGV4KCR6LXZhbHVlOiBkZWZhdWx0KSB7XG4gIHotaW5kZXg6IHotaW5kZXgoJHotdmFsdWUpO1xufVxuXG4vLyBhbmQgaWYgbmVlZGVkIGEgZnVuY3Rpb24gdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBtYXAgd2l0aCxcbi8vIHRoaXMgaXMgYmFzaWNhbGx5IGp1c3QgYW4gYWxpYXMgZm9yIG1hcC1nZXQoJHotaW5kZXhlcy4uLilcbkBmdW5jdGlvbiB6LWluZGV4KCR6LXZhbHVlOiBkZWZhdWx0KSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkei1pbmRleGVzLCAkei12YWx1ZSkgPT0gZmFsc2Uge1xuICAgIEB3YXJuICdJbmRleCBcIiN7JHotdmFsdWV9XCIgbm90IGZvdW5kIGluICR6LWluZGV4ZXMgU2Fzcy1tYXAgdXNpbmcgbWl4aW4gei1pbmRleC4gRGVmYXVsdGluZyB0byAwJztcbiAgICBAcmV0dXJuIDA7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1nZXQoJHotaW5kZXhlcywgJHotdmFsdWUpO1xufVxuIiwiLy8gZnVuY3Rpb24gdG8gZWFzaWx5IGdldCB0aGUgZm9udC1zaXplIGFuZCBjb252ZXJ0IGl0IHRvIHJlbVxuQGZ1bmN0aW9uIGZvbnQtc2l6ZSgkZm9udHNpemUtdmFsdWU6IGRlZmF1bHQpIHtcbiAgQGlmIHZhcmlhYmxlLWV4aXN0cyhmb250LXNpemVzKSA9PSBmYWxzZSB7XG4gICAgQHdhcm4gJyRmb250LXNpemVzIFNhc3MtbWFwIGRvZXMgbm90IGV4aXN0LCBwbGVhc2UgcHJvdmlkZSBvbmUgaW4geW91ciBjb25maWcuIERlZmF1bHRpbmcgdG8gMTZweCc7XG4gICAgQHJldHVybiBweC10by1yZW0oMTZweCk7XG4gIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGZvbnQtc2l6ZXMsICRmb250c2l6ZS12YWx1ZSkgPT0gZmFsc2Uge1xuICAgIEB3YXJuICdJbmRleCBcIiN7JGZvbnRzaXplLXZhbHVlfVwiIG5vdCBmb3VuZCBpbiAkZm9udC1zaXplcyBTYXNzLW1hcCB1c2luZyBmdW5jdGlvbiBmb250LXNpemUuIERlZmF1bHRpbmcgdG8gMTZweCc7XG4gICAgQHJldHVybiBweC10by1yZW0oMTZweCk7XG4gIH1cblxuICBAcmV0dXJuIHB4LXRvLXJlbShtYXAtZ2V0KCRmb250LXNpemVzLCAkZm9udHNpemUtdmFsdWUpKTtcbn1cblxuLy8gZm9udC1zaXplIG1peGluIHVzaW5nIHRoZSBmdW5jdGlvbiBhYm92ZVxuQG1peGluIGZvbnQtc2l6ZSgkZm9udHNpemUtdmFsdWU6IGRlZmF1bHQpIHtcbiAgZm9udC1zaXplOiBmb250LXNpemUoJGZvbnRzaXplLXZhbHVlKTtcbn1cblxuLy8gbWl4aW5zIGZvciBmb250LWZhY2UsIGZvciB1c2FnZSB3aXRoIGZvbnRmYWNlb2JzZXJ2ZXJcbkBtaXhpbiBmb250LWZhbWlseSgkZmFtaWx5LXZhbHVlOiBkZWZhdWx0KSB7XG4gICRmYWxsYmFjazogbnVsbDtcbiAgJGZvbnQ6IG51bGw7XG5cbiAgQGlmIHZhcmlhYmxlLWV4aXN0cyhmb250cykgPT0gZmFsc2Uge1xuICAgIEB3YXJuICckZm9udHMgU2Fzcy1tYXAgZG9lcyBub3QgZXhpc3QsIHBsZWFzZSBwcm92aWRlIG9uZSBpbiB5b3VyIGNvbmZpZy4gRGVmYXVsdGluZyB0byBzYW5zLXNlcmYnO1xuICAgICRmYWxsYmFjazogc2Fucy1zZXJpZjtcbiAgICAkZm9udDogc2Fucy1zZXJpZjtcbiAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkZm9udHMsICRmYW1pbHktdmFsdWUpID09IGZhbHNlIHtcbiAgICBAd2FybiAnSW5kZXggXCIjeyRmYW1pbHktdmFsdWV9XCIgbm90IGZvdW5kIGluICRmb250cyBTYXNzIG1hcCB1c2luZyBtaXhpbiBmb250LWZhbWlseS4gRGVmYXVsdGluZyB0byBzYW5zLXNlcmlmJztcbiAgICAkZmFsbGJhY2s6IHNhbnMtc2VyaWY7XG4gICAgJGZvbnQ6IHNhbnMtc2VyaWY7XG4gIH0gQGVsc2Uge1xuICAgICRmYWxsYmFjazogdW5xdW90ZShtYXAtZ2V0KG1hcC1nZXQoJGZvbnRzLCAkZmFtaWx5LXZhbHVlKSwgZmFsbGJhY2spKTtcbiAgICAkZm9udDogbWFwLWdldChtYXAtZ2V0KCRmb250cywgJGZhbWlseS12YWx1ZSksIGZhbWlseSksICRmYWxsYmFjaztcbiAgfVxuXG4gIC8vIG5vdyB0aGF0IHdlIGhhdmUgdGhlIGZvbnQgYW5kIGZhbGxiYWNrLCBpZiB3ZSB1c2VcbiAgLy8gZm9udC1mYWNlLCBhZGQgdGhlIGZvbnRzLWxvYWRlZCBjbGFzcywgaWYgbm90LCBqdXN0IHVzZSBhbGxcbiAgQGlmIG1hcC1nZXQobWFwLWdldCgkZm9udHMsICRmYW1pbHktdmFsdWUpLCBmb250ZmFjZSkgPT0gdHJ1ZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmYWxsYmFjaztcblxuICAgIC5mb250cy1sb2FkZWQgJiB7XG4gICAgICBmb250LWZhbWlseTogJGZvbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQ7XG4gIH1cbn1cblxuLy8gbWl4aW4gZm9yIGZvbnQtd2VpZ2h0XG5AbWl4aW4gZm9udC13ZWlnaHQoJGZhbWlseS12YWx1ZTogZGVmYXVsdCkge1xuICAkdGhpcy1mb250LXdlaWdodDogNDAwO1xuXG4gIEBpZiB2YXJpYWJsZS1leGlzdHMoZm9udHMpID09IGZhbHNlIHtcbiAgICBAd2FybiAnJGZvbnRzIFNhc3MtbWFwIGRvZXMgbm90IGV4aXN0LCBwbGVhc2UgcHJvdmlkZSBvbmUgaW4geW91ciBjb25maWcuIERlZmF1bHRpbmcgdG8gNDAwJztcbiAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkZm9udHMsICRmYW1pbHktdmFsdWUpID09IGZhbHNlIHtcbiAgICBAd2FybiAnSW5kZXggXCIjeyRmYW1pbHktdmFsdWV9XCIgbm90IGZvdW5kIGluICRmb250cyBTYXNzIG1hcCB1c2luZyBtaXhpbiBmb250LXdlaWdodC4gRGVmYXVsdGluZyB0byA0MDAnO1xuICB9IEBlbHNlIHtcbiAgICAkdGhpcy1mb250LXdlaWdodDogbWFwLWdldChtYXAtZ2V0KCRmb250cywgJGZhbWlseS12YWx1ZSksIHdlaWdodCk7XG4gIH1cblxuICBmb250LXdlaWdodDogJHRoaXMtZm9udC13ZWlnaHQ7XG59XG5cbi8vIG1peGluIGZvciBmb250LXN0eWxlXG5AbWl4aW4gZm9udC1zdHlsZSgkZmFtaWx5LXZhbHVlOiBkZWZhdWx0KSB7XG4gICR0aGlzLWZvbnQtc3R5bGU6IG5vcm1hbDtcblxuICBAaWYgdmFyaWFibGUtZXhpc3RzKGZvbnRzKSA9PSBmYWxzZSB7XG4gICAgQHdhcm4gJyRmb250cyBTYXNzLW1hcCBkb2VzIG5vdCBleGlzdCwgcGxlYXNlIHByb3ZpZGUgb25lIGluIHlvdXIgY29uZmlnLiBEZWZhdWx0aW5nIHRvIG5vcm1hbCc7XG4gIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGZvbnRzLCAkZmFtaWx5LXZhbHVlKSA9PSBmYWxzZSB7XG4gICAgQHdhcm4gJ0luZGV4IFwiI3skZmFtaWx5LXZhbHVlfVwiIG5vdCBmb3VuZCBpbiAkZm9udHMgU2FzcyBtYXAgdXNpbmcgbWl4aW4gZm9udC1zdHlsZS4gRGVmYXVsdGluZyB0byBub3JtYWwnO1xuICB9IEBlbHNlIHtcbiAgICAkdGhpcy1mb250LXN0eWxlOiB1bnF1b3RlKG1hcC1nZXQobWFwLWdldCgkZm9udHMsICRmYW1pbHktdmFsdWUpLCBzdHlsZSkpO1xuICB9XG5cbiAgZm9udC1zdHlsZTogJHRoaXMtZm9udC1zdHlsZTtcbn1cblxuLy8gbm93IGFsbCB0b2dldGhlciwgZm9udC1zaG9ydGhhbmQgbWl4aW5cbkBtaXhpbiBmb250KCRmYW1pbHktdmFsdWU6IGRlZmF1bHQpIHtcbiAgQGluY2x1ZGUgZm9udC1mYW1pbHkoJGZhbWlseS12YWx1ZSk7XG4gIEBpbmNsdWRlIGZvbnQtd2VpZ2h0KCRmYW1pbHktdmFsdWUpO1xuICBAaW5jbHVkZSBmb250LXN0eWxlKCRmYW1pbHktdmFsdWUpO1xufVxuIiwiYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBAaW5jbHVkZSBhdHRlbnRpb24ge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG59XG4iLCIvLyBhdHRlbnRpb24gbWl4aW4gZm9yIGhvdmVyLSwgZm9jdXMtIGFuZCBhY3RpdmUtc3RhdGVzXG5AbWl4aW4gYXR0ZW50aW9uIHtcbiAgJjpob3ZlcixcbiAgJjphY3RpdmUsXG4gICY6Zm9jdXMge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCJ1bCxcbmRsLFxub2wge1xuICBAaW5jbHVkZSBtYXJnaW4oYSAwLCBiIDEpO1xuICBAaW5jbHVkZSBwYWRkaW5nKGEgMCwgbCAxKTtcblxuICAmICYgeyAvLyBubyBtYXJnaW4gZm9yIHN1Ymxpc3RzXG4gICAgQGluY2x1ZGUgbWFyZ2luKGIgMCk7XG4gIH1cbn1cblxuLy8gbmV2ZXIgZXZlciBzaG93IGxpc3RzIGluIG5hdmlnYXRpb24gb3IgZmllbGRzZXRzIGJsb2NrcyBhcyBsaXN0c1xubmF2LFxuZmllbGRzZXQge1xuICB1bCxcbiAgb2wge1xuICAgIEBpbmNsdWRlIHBhZGRpbmcoYSAwKTtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICB9XG59XG5cbiIsIi8vIFJlbW92ZSB0aGUgZ2FwIGJldHdlZW4gbWVkaWEgZWxlbWVudHMgc3VjaCBhcyBhdWRpbywgaW1hZ2VzLCB2aWRlb3MgZXRjLlxuLy8gYW5kIHRoZSBib3R0b20gb2YgdGhlaXIgY29udGFpbmVyc1xuYXVkaW8sXG5jYW52YXMsXG5pZnJhbWUsXG5pbWcsXG5zdmcsXG52aWRlbyB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8vIG1ha2UgdXNlciBjb250ZW50IG1lZGlhIGVsZW1lbnRzIHJlc3BvbnNpdmUgKG1heC13aWR0aClcbmF1ZGlvLFxuaWZyYW1lLFxuaW1nLFxudmlkZW8ge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbn1cblxuZmlndXJlIHtcbiAgQGluY2x1ZGUgbWFyZ2luKGEgMCwgYiAxKTtcbn1cbiIsIjpyb290IHtcbiAgQGluY2x1ZGUgY29sb3IoZGVmYXVsdCk7XG4gIEBpbmNsdWRlIGJhY2tncm91bmQtY29sb3IoYmFja2dyb3VuZCk7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIHNhbmUgYm94LXNpemluZyBldmVyeXdoZXJlXG4gIGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplOyAvLyBhcyByZWZlcmVuY2UgZm9yIHJlbVxuICBmb250LWtlcm5pbmc6IG5vcm1hbDtcbiAgZm9udC12YXJpYW50LWxpZ2F0dXJlczogY29tbW9uLWxpZ2F0dXJlcyBjb250ZXh0dWFsO1xuICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICdrZXJuJywgJ2xpZ2EnLCAnY2xpZycsICdjYWx0JztcbiAgbGluZS1oZWlnaHQ6ICRiYXNlLWxpbmUtaGVpZ2h0O1xuICB0ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xufVxuXG4qIHtcbiAgJixcbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5cbmJvZHkge1xuICBAaW5jbHVkZSBmb250KGRlZmF1bHQpO1xuICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNvbG9yKGJhY2tncm91bmQpO1xuXG4gIC8vIHJlbW92ZSB0aGlzIGlmIHlvdSB3YW50IGN1c3RvbSBwcmludC1zdHlsZXNcbiAgQGluY2x1ZGUgbWVkaWFxdWVyeShwcmludCkge1xuICAgICoge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnUGxlYXNlLCBkbyBub3Qgd2FzdGUgcGFwZXIgYnkgcHJpbnRpbmcgd2VicGFnZXMuJztcbiAgICB9XG4gIH1cbn1cblxuLy8gdGV4dCBzZWxlY3Rpb24gc3R5bGVzXG46OnNlbGVjdGlvbiB7XG4gIEBpbmNsdWRlIGJhY2tncm91bmQtY29sb3IobWFpbik7XG4gIEBpbmNsdWRlIGNvbG9yKGludmVydGVkKTtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG59XG4iLCIvLyBhIGZ1bmN0aW9uIHRvIGVhc2lseSBnZXQgdGhlIGNvbG9yIHZhbHVlIG9mIHRoZSBjb2xvcnMtbWFwXG5AZnVuY3Rpb24gY29sb3IoJGNvbG9yLXZhbHVlOiBkZWZhdWx0KSB7XG4gIEBpZiB2YXJpYWJsZS1leGlzdHMoY29sb3JzKSA9PSBmYWxzZSB7XG4gICAgQHdhcm4gJyRjb2xvcnMgU2Fzcy1tYXAgZG9lcyBub3QgZXhpc3QsIHBsZWFzZSBwcm92aWRlIG9uZSBpbiB5b3VyIGNvbmZpZy4gRGVmYXVsdGluZyB0byByZWQnO1xuICAgIEByZXR1cm4gI2YwMDtcbiAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkY29sb3JzLCAkY29sb3ItdmFsdWUpID09IGZhbHNlIHtcbiAgICBAd2FybiAnSW5kZXggXCIjeyRjb2xvci12YWx1ZX1cIiBub3QgZm91bmQgaW4gJGNvbG9ycyBTYXNzLW1hcCB1c2luZyBmdW5jdGlvbiBjb2xvci4gRGVmYXVsdGluZyB0byByZWQnO1xuICAgIEByZXR1cm4gI2YwMDtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLWdldCgkY29sb3JzLCAkY29sb3ItdmFsdWUpO1xufVxuXG4vLyBtaXhpbnMgdXNpbmcgdGhlIGZ1bmN0aW9uIGFib3ZlXG5AbWl4aW4gY29sb3IoJGNvbG9yLXZhbHVlOiBkZWZhdWx0KSB7XG4gIGNvbG9yOiBjb2xvcigkY29sb3ItdmFsdWUpO1xufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1jb2xvcigkY29sb3ItdmFsdWU6IGRlZmF1bHQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoJGNvbG9yLXZhbHVlKTtcbn1cblxuQG1peGluIGJvcmRlci1jb2xvcigkY29sb3ItdmFsdWU6IGRlZmF1bHQpIHtcbiAgYm9yZGVyLWNvbG9yOiBjb2xvcigkY29sb3ItdmFsdWUpO1xufVxuXG5AbWl4aW4gZmlsbCgkY29sb3ItdmFsdWU6IGRlZmF1bHQpIHtcbiAgZmlsbDogY29sb3IoJGNvbG9yLXZhbHVlKTtcbn1cbiIsIi8vIGRlZmluZSB5b3VyIGNvbG9ycyBoZXJlLCBhbmQgZmVlbCBmcmVlIHRvIHVzZSAncmVhbCcgbmFtZXMsIGp1c3Rcbi8vIGxpa2UgYmVsb3cgLS0+IGNvbG9yLXJlZDogI2ZmZjsgYnV0IG5ldmVyIHVzZSB0aG9zZSBjb2xvcnMgaW4geW91clxuLy8gcHJvamVjdCwgb25seSB1c2UgdGhlIG1hcCArIG1peGlucywgd2hlcmUgeW91IGFzc2luZyB0aGUgY29sb3JzIGluXG5cbiRjb2xvci1ibGFjazogIzAwMDtcbiRjb2xvci13aGl0ZTogI2ZmZjtcbiRjb2xvci1yZWQ6ICNmNzg0NzQ7XG5cbiRjb2xvcnM6IChcbiAgZGVmYXVsdDogJGNvbG9yLWJsYWNrLFxuICBtYWluOiAkY29sb3ItcmVkLFxuICBlcnJvcjogJGNvbG9yLXJlZCxcbiAgaW52ZXJ0ZWQ6ICRjb2xvci13aGl0ZSxcbiAgYm9yZGVyOiAkY29sb3ItYmxhY2ssXG4gIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZVxuKTtcbiIsIi8vIGJhc2UgdW5pdCBkZWZpbml0aW9uIGFuZCB3aWR0aC9oZWlnaHRzIGZvciBvdGhlciBzdHVmZlxuJGJhc2UtZm9udC1zaXplOiAxNnB4O1xuJGJhc2UtbGluZS1oZWlnaHQ6IDEuNTtcblxuJGJhc2UtdW5pdDogMXJlbSAqICRiYXNlLWxpbmUtaGVpZ2h0O1xuJGJhc2UtaGFsZjogJGJhc2UtdW5pdCAvIDI7XG4kYmFzZS10aGlyZDogJGJhc2UtdW5pdCAvIDM7XG4kYmFzZS1xdWFydDogJGJhc2UtdW5pdCAvIDQ7XG4kYmFzZS1kb3VibGU6ICRiYXNlLXVuaXQgKiAyO1xuJGJhc2UtdHJpcGxlOiAkYmFzZS11bml0ICogMztcbiRiYXNlLXF1YWQ6ICRiYXNlLXVuaXQgKiA0O1xuIiwiLy8gYSBzbWFsbCBoZWxwZXIgZm9yIGVhc2llciBtZWRpYXF1ZXJpZXMgLSBqdXN0IGRlZmluZSB0aGVcbi8vIGJyZWFrcG9pbnRzIGluIHlvdXIgY29uZmlnIGFzIGEgbWFwIGFuZCB5b3UgYXJlIHJlYWR5IHRvIGdvXG4vLyBieSBkZWZhdWx0IHdlIHVzZSB0aGUgbW9iaWxlLWZpcnN0IGlkZWEsIG5vIG1xID09IG1vYmlsZVxuLy8geW91IGNhbiBzZXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdHJ1ZSBhbiBwcm92aWRlIGEgY3VzdG9tIG1lZGlhcXVlcnlcbkBtaXhpbiBtZWRpYXF1ZXJ5KCRicmVha3BvaW50LXZhbHVlLCAkY3VzdG9tLXF1ZXJ5OiBmYWxzZSkge1xuICBAaWYgJGJyZWFrcG9pbnQtdmFsdWUgPT0gcHJpbnQgeyAvLyBwcmludCBzdHlsZXNcbiAgICBAbWVkaWEgcHJpbnQge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRicmVha3BvaW50LXZhbHVlID09IGxhbmRzY2FwZSB7IC8vIGxhbmRzY2FwZSBhbmQgcG9ydHJhaXQgbWVkaWFxdWVyaWVzXG4gICAgQG1lZGlhIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJGJyZWFrcG9pbnQtdmFsdWUgPT0gcG9ydHJhaXQge1xuICAgIEBtZWRpYSAob3JpZW50YXRpb246IHBvcnRyYWl0KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJGN1c3RvbS1xdWVyeSB7IC8vIGN1c3RvbSBtZWRpYXF1ZXJpZXNcbiAgICBAaWYgdmFyaWFibGUtZXhpc3RzKGJyZWFrcG9pbnRzKSA9PSBmYWxzZSB7XG4gICAgICBAd2FybiAnJGJyZWFrcG9pbnRzIFNhc3MtbWFwIGRvZXMgbm90IGV4aXN0LCBwbGVhc2UgcHJvdmlkZSBvbmUgaW4geW91ciBjb25maWcnO1xuICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC12YWx1ZSkgPT0gZmFsc2Uge1xuICAgICAgQHdhcm4gJ0luZGV4IFwiI3skYnJlYWtwb2ludC12YWx1ZX1cIiBub3QgZm91bmQgaW4gJGJyZWFrcG9pbnRzIFNhc3MtbWFwIHVzaW5nIG1peGluIG1lZGlhcXVlcnknO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQG1lZGlhICN7bWFwLWdldCgkYnJlYWtwb2ludHMsICRicmVha3BvaW50LXZhbHVlKX0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH0gQGVsc2UgeyAvLyBkZWZhdWx0OiBtb2JpbGUtZmlyc3QgbWVkaWFxdWVyaWVzIGFzIGRlZmluZWQgaW4gYnJlYWtwb2ludHMsIHRoZXkgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gZW1cbiAgICBAaWYgdmFyaWFibGUtZXhpc3RzKGJyZWFrcG9pbnRzKSA9PSBmYWxzZSB7XG4gICAgICBAd2FybiAnJGJyZWFrcG9pbnRzIFNhc3MtbWFwIGRvZXMgbm90IGV4aXN0LCBwbGVhc2UgcHJvdmlkZSBvbmUgaW4geW91ciBjb25maWcnO1xuICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC12YWx1ZSkgPT0gZmFsc2Uge1xuICAgICAgQHdhcm4gJ0luZGV4IFwiI3skYnJlYWtwb2ludC12YWx1ZX1cIiBub3QgZm91bmQgaW4gJGJyZWFrcG9pbnRzIFNhc3MtbWFwIHVzaW5nIG1peGluIG1lZGlhcXVlcnknO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICN7bWFwLWdldCgkYnJlYWtwb2ludHMsICRicmVha3BvaW50LXZhbHVlKSAqIDFweH0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyB1c2UgdGhlIGZ1bGwgYXZhaWFibGUgd2lkdGggYnkgZGVmYXVsdGpcbnRhYmxlIHtcbiAgQGluY2x1ZGUgbWFyZ2luKGEgMCwgYiAxKTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbi8vIGFsaWduIGNvbnRlbnQgaW4gdGFibGUgY2VsbHMgdG8gdGhlIHRvcCBieSBkZWZhdWx0XG50ZCxcbnRoIHtcbiAgcGFkZGluZzogMDtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuLy8gYWxpZ24gY29udGVudCB0byB0aGUgbGVmdCBmb3IgdGFibGUgaGVhZGluZ3NcbnRoIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuIiwiLy8gVGV4dCBhbmQgb3RoZXIgaW5saW5lIGVsZW1lbnRzXG4vLyBkZWZhdWx0IGhyIGlzIGp1c3QgYSBzaW5nbGUgbGluZSAxcHggaGlnaCwgZmVlbCBmcmVlIHRvIG92ZXJyaWRlXG5ociB7XG4gIEBpbmNsdWRlIG1hcmdpbihoIGF1dG8sIGIgMSwgdCAwKTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiA5MCU7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbn1cblxucHJlLFxucCB7XG4gIEBpbmNsdWRlIG1hcmdpbihhIDAsIGIgMSk7XG59XG5cbnN1YixcbnN1cCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG4iLCIuYnV0dG9uIHtcbiAgQGluY2x1ZGUgcGFkZGluZyhhIDEvMik7XG4gIEBpbmNsdWRlIGNvbG9yKGRlZmF1bHQpO1xuICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNvbG9yKGJhY2tncm91bmQpO1xuICBib3JkZXI6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XG5cbiAgQGluY2x1ZGUgYXR0ZW50aW9uIHtcbiAgICBAaW5jbHVkZSBjb2xvcihtYWluKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC8vIGZvciBsaW5rc1xuICB9XG59XG4iLCIuZXhhbXBsZSB7XG4gIEBpbmNsdWRlIHBhZGRpbmcoYSAxKTtcbiAgYm9yZGVyOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuICBib3gtc2hhZG93OiAwIDAgJGJhc2UtdW5pdCAwIGN1cnJlbnRDb2xvcjtcbn1cblxuLmV4YW1wbGUtLWRlZmF1bHQge1xuICBmb250LXNpemU6IDEwMCU7XG59XG5cbi5leGFtcGxlLS1sYXJnZSB7XG4gIEBpbmNsdWRlIHBhZGRpbmcoYSAyKTtcbiAgZm9udC1zaXplOiAyMDAlO1xufVxuIiwiLy8gc3ZnIGljb25zIGFuZCBjdXN0b20gaWNvbiBzdHlsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gZGVmYXVsdCBpY29uIHN0eWxlcyAtIGlubGluZSwgc2FtZSBjb2xvciwgMWVtLzFlbVxuLmljb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogLTAuMDYyNWVtO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBmaWxsOiBjdXJyZW50Q29sb3I7XG59XG5cbiJdLCJzb3VyY2VSb290IjoiLi8ifQ== */
