html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline; }

article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
  display: block; }

body {
  line-height: 1; }

ol, ul {
  list-style: none; }

q:before, q:after {
  content: "";
  content: none; }

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

/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS and IE text size adjust after device orientation
*    change, without disabling
*    user zoom.
*/
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/**
* Remove default margin.
*/
body {
  margin: 0; }

/* HTML5 display definitions
   ========================================================================== */
/**
* Correct `block` display not defined for any HTML5 element in IE 8/9.
* Correct `block` display not defined for `details` or `summary` in IE 10/11
* and Firefox.
* Correct `block` display not defined for `main` in IE 11.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block; }

/**
* 1. Correct `inline-block` display not defined in IE 8/9.
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
*/
audio,
canvas,
progress,
video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
  display: none;
  height: 0; }

/**
   * Address `[hidden]` styling not present in IE 8/9/10.
   */
[hidden] {
  display: none; }

/**
* Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
*/
template {
  display: none; }

/* Links
   ========================================================================== */
/**
   * Remove the gray background color from active links in IE 10.
   */
a {
  background-color: transparent; }

/**
* Improve readability of focused elements when they are also in an
* active/hover state.
*/
a:active,
a:hover {
  outline: 0; }

/* Text-level semantics
   ========================================================================== */
/**
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
*/
abbr[title] {
  border-bottom: 1px dotted; }

/**
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
*/
b,
strong {
  font-weight: bold; }

/**
* Address styling not present in Safari and Chrome.
*/
dfn {
  font-style: italic; }

/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari, and Chrome.
*/
h1 {
  font-size: 2em;
  margin: 0.666667em 0; }

/**
   * Address styling not present in IE 8/9.
   */
mark {
  background: #ff0;
  color: #000; }

/**
* Address inconsistent and variable font size in all browsers.
*/
small {
  font-size: 80%; }

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

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

/* Embedded content
   ========================================================================== */
/**
   * Remove border when inside `a` element in IE 8/9/10.
   */
img {
  border: 0; }

/**
   * Correct overflow not hidden in IE 9/10/11.
   */
svg:not(:root) {
  overflow: hidden; }

/* Grouping content
   ========================================================================== */
/**
   * Address margin not present in IE 8/9 and Safari.
   */
figure {
  margin: 1em 40px; }

/**
* Address differences between Firefox and other browsers.
*/
hr {
  box-sizing: content-box;
  height: 0; }

/**
* Contain overflow in all browsers.
*/
pre {
  overflow: auto; }

/**
* Address odd `em`-unit font size rendering in all browsers.
*/
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em; }

/* Forms
   ========================================================================== */
/**
* Known limitation: by default, Chrome and Safari on OS X allow very limited
* styling of `select`, unless a `border` property is set.
*/
/**
* 1. Correct color not being inherited.
*    Known issue: affects color of disabled elements.
* 2. Correct font properties not being inherited.
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
*/
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  /* 1 */
  font: inherit;
  /* 2 */
  margin: 0;
  /* 3 */ }

/**
   * Address `overflow` set to `hidden` in IE 8/9/10/11.
   */
button {
  overflow: visible; }

/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
* Correct `select` style inheritance in Firefox.
*/
button,
select {
  text-transform: none; }

/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
*    and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
*    `input` and others.
*/
button,
html input[type='button'],
input[type='reset'],
input[type='submit'] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */ }

/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
  cursor: default; }

/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0; }

/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
input {
  line-height: normal; }

/**
   * It's recommended that you don't attempt to style these elements.
   * Firefox's implementation doesn't respect box-sizing, padding, or width.
   *
   * 1. Address box sizing set to `content-box` in IE 8/9/10.
   * 2. Remove excess padding in IE 8/9/10.
   */
input[type='checkbox'],
input[type='radio'] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
* `font-size` values of the `input`, it causes the cursor style of the
* decrement button to change from `default` to `text`.
*/
input[type='number']::-webkit-inner-spin-button,
input[type='number']::-webkit-outer-spin-button {
  height: auto; }

/**
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
*/
input[type='search'] {
  box-sizing: content-box; }

/**
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
* Safari (but not Chrome) clips the cancel button when the search input has
* padding (and `textfield` appearance).
*/
input[type='search']::-webkit-search-cancel-button,
input[type='search']::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
* Define consistent border, margin, and padding.
*/
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
* 1. Correct `color` not being inherited in IE 8/9/10/11.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
   * Remove default vertical scrollbar in IE 8/9/10/11.
   */
textarea {
  overflow: auto; }

/**
* Don't inherit the `font-weight` (applied by a rule above).
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
*/
optgroup {
  font-weight: bold; }

/* Tables
   ========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
  border-collapse: collapse;
  border-spacing: 0; }

td,
th {
  padding: 0; }

.old-browsers {
  z-index: 9999;
  position: relative;
  background: #fff;
  width: 100%;
  height: 100%;
  color: black;
  font-family: sans-serif;
  font-size: 20px;
  text-align: center;
  padding: 0;
  margin: 0; }
  .old-browsers h2 {
    padding: 20px 0 20px 0; }
  .old-browsers p, .old-browsers ul {
    margin: 0 auto; }
  .old-browsers p {
    max-width: 700px;
    padding-bottom: 50px;
    line-height: 1.4em; }
  .old-browsers ul li {
    display: inline-block;
    padding: 0 25px; }
    .old-browsers ul li img {
      width: 115px; }
    .old-browsers ul li p {
      padding-top: 15px;
      color: #249AE1; }

body {
  margin: 0;
  padding: 0; }

/*  Syntax Quick Reference
  --------------------------
  column($ratios: 1, $offset: 0, $cycle: 0, $uncycle: 0, $gutter: $jeet-gutter)
  span($ratio: 1, $offset: 0)
  shift($ratios: 0, $col_or_span: column, $gutter: $jeet-gutter)
  unshift()
  edit()
  center($max_width: 1410px, $pad: 0)
  stack($pad: 0, $align: false)
  unstack()
  align($direction: both)
  cf()
*/
/**
 * Grid settings.
 * All values are defaults and can therefore be easily overidden.
 */
/**
 * List functions courtesy of the wonderful folks at Team Sass.
 * Check out their awesome grid: Singularity.
 */
/**
 * Get  percentage from a given ratio.
 * @param {number} [$ratio=1] - The column ratio of the element.
 * @returns {number} - The percentage value.
 */
/**
 * Work out the column widths based on the ratio and gutter sizes.
 * @param {number} [$ratios=1] - The column ratio of the element.
 * @param {number} [$gutter=$jeet-gutter] - The gutter for the column.
 * @returns {list} $width $gutter - A list containing the with and gutter for the element.
 */
/**
 * Get the set layout direction for the project.
 * @returns {string} $direction - The layout direction.
 */
/**
 * Replace a specified list value with a new value (uses built in set-nth() if available)
 * @param {list} $list - The list of values you want to alter.
 * @param {number} $index - The index of the list item you want to replace.
 * @param {*} $value - The value you want to replace $index with.
 * @returns {list} $list - The list with the value replaced or removed.
 * @warn if an invalid index is supplied.
 */
/**
 * Reverse a list (progressively enhanced for Sass 3.3)
 * @param {list} $list - The list of values you want to reverse.
 * @returns {list} $result - The reversed list.
 */
/**
 * Get the opposite direction to a given value.
 * @param {string} $dir - The direction you want the opposite of.
 * @returns {string} - The opposite direction to $dir.
 * @warn if an incorrect string is provided.
 */
/**
 * Style an element as a column with a gutter.
 * @param {number} [$ratios=1] - A width relative to its container as a fraction.
 * @param {number} [$offset=0] - A offset specified as a fraction (see $ratios).
 * @param {number} [$cycle=0] - Easily create an nth column grid where $cycle equals the number of columns.
 * @param {number} [$uncycle=0] - Undo a previous cycle value to allow for a new one.
 * @param {number} [$gutter=$jeet-gutter] - Specify the gutter width as a percentage of the containers width.
 */
/**
 * An alias for the column mixin.
 * @param [$args...] - All arguments get passed through to column().
 */
/**
 * Get the width of a column and nothing else.
 * @param {number} [$ratios=1] - A width relative to its container as a fraction.
 * @param {number} [$gutter=$jeet-gutter] - Specify the gutter width as a percentage of the containers width.
 */
/**
 * Get the gutter size of a column and nothing else.
 * @param {number} [ratios=1] - A width relative to its container as a fraction.
 * @param {number} [gutter=jeet.gutter] - Specify the gutter width as a percentage of the containers width.
 */
/**
 * An alias for the column-width function.
 * @param [$args...] - All arguments get passed through to column().
 */
/**
 * An alias for the column-gutter function.
 * @param [$args...] - All arguments get passed through to column().
 */
/**
 * Style an element as a column without any gutters for a seamless row.
 * @param {number} [$ratios=1] - A width relative to its container as a fraction.
 * @param {number} [$offset=0] - A offset specified as a fraction (see $ratios).
 * @param {number} [cycle=0] - Easily create an nth column grid where cycle equals the number of columns.
 * @param {number} [uncycle=0] - Undo a previous cycle value to allow for a new one.
 */
/**
 * Reorder columns without altering the HTML.
 * @param {number} [$ratios=0] - Specify how far along you want the element to move.
 * @param {string} [$col-or-span=column] - Specify whether the element has a gutter or not.
 * @param {number} [$gutter=$jeet-gutter] - Specify the gutter width as a percentage of the containers width.
 */
/**
 * Reset an element that has had shift() applied to it.
 */
/**
 * View the grid and its layers for easy debugging.
 * @param {string} [$color=black] - The background tint applied.
 * @param {boolean} [$important=false] - Whether to apply the style as !important.
 */
/**
 *  Alias for edit().
 */
/**
 * Horizontally center an element.
 * @param {number} [$max-width=1410px] - The max width the element can be.
 * @param {number} [$pad=0] - Specify the element's left and right padding.
 */
/**
 * Uncenter an element.
 */
/**
 * Stack an element so that nothing is either side of it.
 * @param {number} [$pad=0] - Specify the element's left and right padding.
 * @param {boolean/string} [$align=false] - Specify the text align for the element.
 */
/**
 * Unstack an element.
 */
/**
 * Center an element on either or both axes.
 * @requires A parent container with relative positioning.
 * @param {string} [$direction=both] - Specify which axes to center the element on.
 */
/**
 * Apply a clearfix to an element.
 */
@font-face {
  font-family: 'mighty_zeo_2.0regular';
  src: url("/wp-content/themes/terminal-lance/fonts/mighz___-webfont.eot");
  src: url("/wp-content/themes/terminal-lance/fonts/mighz___-webfont.eot?#iefix") format("embedded-opentype"), url("/wp-content/themes/terminal-lance/fonts/mighz___-webfont.woff2") format("woff2"), url("/wp-content/themes/terminal-lance/fonts/mighz___-webfont.woff") format("woff"), url("/wp-content/themes/terminal-lance/fonts/mighz___-webfont.ttf") format("truetype"), url("/wp-content/themes/terminal-lance/fonts/mighz___-webfont.svg#mighty_zeo_2.0regular") format("svg");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'mighty_zeo_2.0bold';
  src: url("/wp-content/themes/terminal-lance/fonts/mighzb__-webfont.eot");
  src: url("/wp-content/themes/terminal-lance/fonts/mighzb__-webfont.eot?#iefix") format("embedded-opentype"), url("/wp-content/themes/terminal-lance/fonts/mighzb__-webfont.woff2") format("woff2"), url("/wp-content/themes/terminal-lance/fonts/mighzb__-webfont.woff") format("woff"), url("/wp-content/themes/terminal-lance/fonts/mighzb__-webfont.ttf") format("truetype"), url("/wp-content/themes/terminal-lance/fonts/mighzb__-webfont.svg#mighty_zeo_2.0bold") format("svg");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'mighty_zeo_caps_2.0regular';
  src: url("/wp-content/themes/terminal-lance/fonts/mighzc__-webfont.eot");
  src: url("/wp-content/themes/terminal-lance/fonts/mighzc__-webfont.eot?#iefix") format("embedded-opentype"), url("/wp-content/themes/terminal-lance/fonts/mighzc__-webfont.woff2") format("woff2"), url("/wp-content/themes/terminal-lance/fonts/mighzc__-webfont.woff") format("woff"), url("/wp-content/themes/terminal-lance/fonts/mighzc__-webfont.ttf") format("truetype"), url("/wp-content/themes/terminal-lance/fonts/mighzc__-webfont.svg#mighty_zeo_caps_2.0regular") format("svg");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'mighty_zeo_caps_2.0bold';
  src: url("/wp-content/themes/terminal-lance/fonts/mighzcb_-webfont.eot");
  src: url("/wp-content/themes/terminal-lance/fonts/mighzcb_-webfont.eot?#iefix") format("embedded-opentype"), url("/wp-content/themes/terminal-lance/fonts/mighzcb_-webfont.woff2") format("woff2"), url("/wp-content/themes/terminal-lance/fonts/mighzcb_-webfont.woff") format("woff"), url("/wp-content/themes/terminal-lance/fonts/mighzcb_-webfont.ttf") format("truetype"), url("/wp-content/themes/terminal-lance/fonts/mighzcb_-webfont.svg#mighty_zeo_caps_2.0bold") format("svg");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'mighty_zeo_caps_2.0italic';
  src: url("/wp-content/themes/terminal-lance/fonts/mighzci_-webfont.eot");
  src: url("/wp-content/themes/terminal-lance/fonts/mighzci_-webfont.eot?#iefix") format("embedded-opentype"), url("/wp-content/themes/terminal-lance/fonts/mighzci_-webfont.woff2") format("woff2"), url("/wp-content/themes/terminal-lance/fonts/mighzci_-webfont.woff") format("woff"), url("/wp-content/themes/terminal-lance/fonts/mighzci_-webfont.ttf") format("truetype"), url("/wp-content/themes/terminal-lance/fonts/mighzci_-webfont.svg#mighty_zeo_caps_2.0italic") format("svg");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'mighty_zeo_2.0italic';
  src: url("/wp-content/themes/terminal-lance/fonts/mighzi__-webfont.eot");
  src: url("/wp-content/themes/terminal-lance/fonts/mighzi__-webfont.eot?#iefix") format("embedded-opentype"), url("/wp-content/themes/terminal-lance/fonts/mighzi__-webfont.woff2") format("woff2"), url("/wp-content/themes/terminal-lance/fonts/mighzi__-webfont.woff") format("woff"), url("/wp-content/themes/terminal-lance/fonts/mighzi__-webfont.ttf") format("truetype"), url("/wp-content/themes/terminal-lance/fonts/mighzi__-webfont.svg#mighty_zeo_2.0italic") format("svg");
  font-weight: normal;
  font-style: normal; }

.default-type, body, p, a, h1, h2, h3, h4, h5, h6,
small, em, strong, input, button {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  color: #444;
  font-weight: normal;
  font-style: normal;
  -webkit-font-smoothing: antialiased; }

h1, h2, h3, h4, h5, h6 {
  display: block;
  margin: 1rem 0;
  font-weight: normal; }
  h1:first-child, h2:first-child, h3:first-child, h4:first-child, h5:first-child, h6:first-child {
    margin-top: 0; }
  h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
    color: inherit; }

h1 {
  font-size: -webkit-calc(36px + 20 * ((100vw - 420px) / 604));
  font-size: calc(36px + 20 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    h1 {
      font-size: 36px; } }
  @media screen and (min-width: 1024px) {
    h1 {
      font-size: 56px; } }

h2 {
  font-size: -webkit-calc(36px + 12 * ((100vw - 420px) / 604));
  font-size: calc(36px + 12 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    h2 {
      font-size: 36px; } }
  @media screen and (min-width: 1024px) {
    h2 {
      font-size: 48px; } }

h3 {
  font-size: -webkit-calc(30px + 6 * ((100vw - 420px) / 604));
  font-size: calc(30px + 6 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    h3 {
      font-size: 30px; } }
  @media screen and (min-width: 1024px) {
    h3 {
      font-size: 36px; } }

h4 {
  font-size: -webkit-calc(24px + 6 * ((100vw - 420px) / 604));
  font-size: calc(24px + 6 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    h4 {
      font-size: 24px; } }
  @media screen and (min-width: 1024px) {
    h4 {
      font-size: 30px; } }

h5 {
  font-size: -webkit-calc(20px + 4 * ((100vw - 420px) / 604));
  font-size: calc(20px + 4 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    h5 {
      font-size: 20px; } }
  @media screen and (min-width: 1024px) {
    h5 {
      font-size: 24px; } }

h6 {
  font-size: -webkit-calc(18px + 2 * ((100vw - 420px) / 604));
  font-size: calc(18px + 2 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    h6 {
      font-size: 18px; } }
  @media screen and (min-width: 1024px) {
    h6 {
      font-size: 20px; } }

p, ul, li, ol {
  font-size: -webkit-calc(15px + 3 * ((100vw - 420px) / 480));
  font-size: calc(15px + 3 * ((100vw - 420px) / 480)); }
  @media screen and (max-width: 420px) {
    p, ul, li, ol {
      font-size: 15px; } }
  @media screen and (min-width: 900px) {
    p, ul, li, ol {
      font-size: 18px; } }

.page-main h1 {
  font-size: -webkit-calc(22px + 2 * ((100vw - 420px) / 604));
  font-size: calc(22px + 2 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    .page-main h1 {
      font-size: 22px; } }
  @media screen and (min-width: 1024px) {
    .page-main h1 {
      font-size: 24px; } }

.page-main h2 {
  font-size: -webkit-calc(20px + 2 * ((100vw - 420px) / 604));
  font-size: calc(20px + 2 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    .page-main h2 {
      font-size: 20px; } }
  @media screen and (min-width: 1024px) {
    .page-main h2 {
      font-size: 22px; } }

.page-main h3 {
  font-size: -webkit-calc(18px + 2 * ((100vw - 420px) / 604));
  font-size: calc(18px + 2 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    .page-main h3 {
      font-size: 18px; } }
  @media screen and (min-width: 1024px) {
    .page-main h3 {
      font-size: 20px; } }

.page-main h4 {
  font-size: -webkit-calc(16px + 2 * ((100vw - 420px) / 604));
  font-size: calc(16px + 2 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    .page-main h4 {
      font-size: 16px; } }
  @media screen and (min-width: 1024px) {
    .page-main h4 {
      font-size: 18px; } }

.page-main h5 {
  font-size: -webkit-calc(16px + 2 * ((100vw - 420px) / 604));
  font-size: calc(16px + 2 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    .page-main h5 {
      font-size: 16px; } }
  @media screen and (min-width: 1024px) {
    .page-main h5 {
      font-size: 18px; } }

.page-main h6 {
  font-size: -webkit-calc(16px + 2 * ((100vw - 420px) / 604));
  font-size: calc(16px + 2 * ((100vw - 420px) / 604)); }
  @media screen and (max-width: 420px) {
    .page-main h6 {
      font-size: 16px; } }
  @media screen and (min-width: 1024px) {
    .page-main h6 {
      font-size: 18px; } }

.page-main p, .page-main ul, .page-main li, .page-main ol {
  font-size: -webkit-calc(14px + 2 * ((100vw - 420px) / 480));
  font-size: calc(14px + 2 * ((100vw - 420px) / 480)); }
  @media screen and (max-width: 420px) {
    .page-main p, .page-main ul, .page-main li, .page-main ol {
      font-size: 14px; } }
  @media screen and (min-width: 900px) {
    .page-main p, .page-main ul, .page-main li, .page-main ol {
      font-size: 16px; } }

p {
  line-height: 1.5em;
  margin: 1em 0; }

blockquote {
max-width: 550px;
text-align: center;
margin: 20px;
padding: 20px;
font-family: Arial,Helvetica Neue,Helvetica,sans-serif;
font-size: 25em;
color: #428bca;
background: #E8E8E8;
border-left:5px solid #B29C58;
}

a {
  text-decoration: none; }

.max-container {
  position: relative;
  z-index: 1;
  background: #FFF;
  width: auto;
  max-width: 1600px;
  float: none;
  display: block;
  margin-right: auto;
  margin-left: auto;
  padding-left: 0;
  padding-right: 0;
  border-top: none;
  border-bottom: none; }
  .max-container:after {
    clear: both;
    content: '';
    display: table; }
  @media (max-width: 767px) {
    .max-container {
      border: none; } }

.container {
  width: auto;
  max-width: 1440px;
  float: none;
  display: block;
  margin-right: auto;
  margin-left: auto;
  padding-left: 20px;
  padding-right: 20px; }
  .container:after {
    clear: both;
    content: '';
    display: table; }
  @media (max-width: 767px) {
    .container {
      padding: 0 4%; } }

.wp-caption,
.aligncenter {
  width: 100% !important; }

.inner-container {
  width: 70%;
  margin: 0 auto; }
  @media (max-width: 767px) {
    .inner-container {
      width: 100%;
      padding: 0 4%; } }

.cf:after {
  clear: both;
  content: '';
  display: table; }

.long-adspace img {
  width: auto;
  margin: 0 auto; }
  @media (max-width: 639px) {
    .long-adspace img {
      width: 100%; } }

.adv-widget {
  padding: 0.625rem;
  margin: 0 auto;
  text-transform: none;
  text-align: center; }

html {
  box-sizing: border-box; }

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

button,
input[type="button"],
input[type="submit"],
input[type="reset"] {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background: transparent;
  border: 0;
  color: inherit;
  font: inherit;
  -webkit-font-smoothing: antialiased;
  margin: 0;
  padding: 0;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  width: auto; }
  button::-moz-focus-inner,
  input[type="button"]::-moz-focus-inner,
  input[type="submit"]::-moz-focus-inner,
  input[type="reset"]::-moz-focus-inner {
    border: 0;
    padding: 0; }

figure {
  margin: 0; }

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

textarea {
  resize: vertical; }

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

p:first-of-type {
  margin-top: 0; }

p:last-of-type {
  margin-bottom: 0; }

a,
label,
select,
option,
button {
  cursor: pointer; }

input {
  outline: none; }

code {
  padding: 3px 4px;
  color: #DF5C33;
  background-color: #F5F5F5;
  border: 1px solid #E1E1E8;
  border-radius: 3px;
  font-family: Menlo, Monaco, monospace; }

pre {
  display: block;
  padding: 7px;
  background-color: #F5F5F5;
  border: 1px solid #E1E1E8;
  border-radius: 3px;
  white-space: pre-wrap;
  word-break: break-all;
  font-family: Menlo, Monaco, monospace;
  line-height: 160%; }

hr {
  border: 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);
  height: 0;
  padding: 0;
  margin: 1.5em 0; }

nav ul {
  margin: 0;
  padding: 0; }
  nav ul li {
    float: none;
    list-style-type: none;
    margin: 0;
    padding: 0; }

ul.text {
  margin: .32rem .94rem;
  padding-left: 1rem; }
  ul.text li {
    list-style-type: disc;
    padding: .125rem 0; }

ol.text {
  margin: .32rem .94rem;
  padding-left: 1rem; }
  ol.text li {
    list-style-type: decimal;
    padding: .125rem 0; }

ul.text ul, ul.text ol, ol.text ol, ol.text ul {
  margin: .3rem 1rem 0; }

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

#wpadminbar {
  display: none; }

.error-wrap {
  padding: 20vh 0;
  text-align: center; }
  .error-wrap h1, .error-wrap h2 {
    font-family: "mighty_zeo_2.0bold"; }
  .error-wrap h1 {
    margin-bottom: 0px;
    font-size: 100px; }
  .error-wrap h2 {
    margin: 0 0 50px; }
  .error-wrap .btn {
    background-color: #027234; }
    .error-wrap .btn:hover {
      background-color: #0c5729; }

.comic-nav {
  overflow: auto;
  zoom: 1;
  padding: 0.625rem;
  text-align: center;
  background-color: #8C8C8C; }
  .comic-nav li {
    display: inline-block; }
    .comic-nav li a {
      display: block;
      width: 4.6875rem;
      height: 4.6875rem;
      background-size: 80%;
      background-position: center;
      background-repeat: no-repeat;
      color: transparent;
      -webkit-transition: background ease-in-out .2s;
              transition: background ease-in-out .2s; }
      .comic-nav li a:hover {
        background-size: 90%; }
    .comic-nav li:nth-child(1) a {
      background-image: url(img/nav/first.png); }
    .comic-nav li:nth-child(2) a {
      background-image: url(img/nav/prev.png); }
    .comic-nav li:nth-child(3) a {
      background-image: url(img/nav/random2.png); }
    .comic-nav li:nth-child(4) a {
      background-image: url(img/nav/next.png); }
    .comic-nav li:nth-child(5) a {
      background-image: url(img/nav/last.png); }
    @media (max-width: 639px) {
      .comic-nav li {
        overflow: auto;
        zoom: 1;
        float: left;
        clear: none;
        text-align: inherit;
        width: 20%;
        margin-left: 0%;
        margin-right: 0%; }
        .comic-nav li a {
          width: 100%; } }

a.btn,
button,
input[type="button"],
input[type="submit"],
input[type="reset"] {
  padding: 10px 22px;
  border-radius: 3px;
  background-color: deepskyblue;
  color: #FFF;
  cursor: pointer;
  line-height: 1em;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  border: none;
  -webkit-transition: all .2s ease;
          transition: all .2s ease; }
  a.btn:hover,
  button:hover,
  input[type="button"]:hover,
  input[type="submit"]:hover,
  input[type="reset"]:hover {
    background-color: #0099cc; }

form {
  margin: 1.5625rem 0;
  width: 100%; }
  form input:not([type="submit"]), form textarea, form select {
    padding: 0.625rem;
    margin-bottom: 0.625rem;
    width: 100%;
    border: 0.0625rem solid Gainsboro;
    outline: none;
    -webkit-transition: border ease-in-out .3s;
            transition: border ease-in-out .3s; }
    form input:not([type="submit"]):focus, form textarea:focus, form select:focus {
      border-color: deepSkyBlue !important; }
    form input:not([type="submit"]).invalid, form textarea.invalid, form select.invalid {
      border-color: red; }

.hero-bg {
  padding: 3.125rem;
  width: 100%;
  height: 65vh;
  background-color: #C4C4C4;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center;
  text-align: center; }
  .hero-bg.has-comic {
    height: auto; }
  @media (max-width: 767px) {
    .hero-bg {
      padding: 0px;
      height: 45vh; } }

.hero {
  margin: 0 auto;
  width: 70%;
  max-width: 56.25rem;
  height: auto;
  box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19) !important; }
  @media (max-width: 767px) {
    .hero {
      width: 100%; } }

.author-container {
  position: relative;
  padding: 0.3125rem 0;
  height: 4.375rem;
  background-color: #222;
  overflow: visible; }
  .author-container .inner-container {
    position: relative; }
  @media (max-width: 767px) {
    .author-container {
      height: auto;
      text-align: center; } }

.author-profile {
  position: absolute;
  left: 0;
  top: -18px;
  width: 6.25rem;
  height: 6.25rem;
  border-radius: 50%;
  border: 0.75rem solid #222; }
  @media (max-width: 767px) {
    .author-profile {
      display: none;
      position: relative;
      top: 0;
      width: 4.6875rem;
      height: 4.6875rem;
      margin-bottom: 1.25rem;
      border: 0.375rem solid #FFF; } }

.author-info {
  position: relative;
  float: left;
  margin-left: 7.1875rem; }
  @media (max-width: 767px) {
    .author-info {
      float: none;
      margin: auto; } }

.author-twitter {
  position: relative;
  display: inline-block;
  top: 3px;
  width: 25px;
  height: 25px;
  background-color: #FFF;
  border-radius: 50%; }
  .author-twitter svg {
    position: absolute;
    height: 15px;
    width: 15px;
    top: 5px;
    left: 5px;
    fill: #222; }

.author-name, .author-title, .shares {
  color: #FFF;
  font-style: italic; }

.author-name, .shares {
  margin: 0px;
  text-transform: uppercase; }

.shares {
  display: inline-block;
  margin-right: 0.9375rem;
  padding-top: 0.1875rem;
  font-weight: bold;
  text-align: center; }
  .shares span {
    display: block;
    margin-top: 0.3125rem;
    font-size: 0.75rem;
    font-weight: normal; }

.author-right {
  position: absolute;
  right: 0; }
  @media (max-width: 767px) {
    .author-right {
      display: none; } }

.mashsb-container {
  padding-top: 4px;
  padding-bottom: 0; }

.mash-medium {
  margin-top: 0 !important; }

.mashsbcount {
  margin: 12px 0 6px;
  font-size: 45px;
  color: #FFF; }

.mashsb-sharetext {
  color: #FFF; }

.mashsb-buttons {
  float: left; }

.mashsb-buttons a {
  width: 50px; }

.mashsb-buttons .mash-medium {
  margin-bottom: 0 !important;
  padding: 12px !important;
  background-color: #FFF;
  border-radius: 50%; }
  .mashsb-buttons .mash-medium span:before {
    font-size: 25px !important;
    color: #222; }

.mashicon-facebook {
  margin-right: 8px !important; }

.shadow-top {
  box-shadow: inset 0 20px 20px -20px rgba(34, 34, 34, 0.6); }

footer {
  overflow: auto;
  zoom: 1; }

.top-footer {
  margin-bottom: 0.625rem;
  padding: 1.5625rem;
  text-align: center; }

.bottom-footer {
  padding: 0.625rem 0;
  background-color: #C4C4C4;
  text-align: center;
  text-transform: uppercase; }
  .bottom-footer .copyright {
    margin-top: 0.625rem;
    font-size: 0.875rem; }

header {
  text-align: center; }
  header .logo {
    display: inline-block; }
    header .logo svg {
      margin: 1.5625rem 0;
      width: 18.75rem; }
      @media (max-width: 767px) {
        header .logo svg {
          height: 50px; } }
  header button {
    padding: 0.3125rem 0.625rem; }
    header button svg {
      height: 2.5rem;
      width: 2.5rem; }
  header ul {
    margin-bottom: 1.5625rem; }
    @media (max-width: 767px) {
      header ul {
        position: fixed;
        z-index: 99;
        top: 0;
        right: -62.5rem;
        width: 45%;
        height: 100vh;
        background: #FFF;
        -webkit-transition: right ease-in-out .3s;
                transition: right ease-in-out .3s; }
        header ul.open {
          right: 0rem; } }
  header li {
    display: inline-block;
    padding: 0 0.625rem; }
    header li a {
      padding: 0.3125rem;
      font-family: "mighty_zeo_2.0italic"; }
    @media (max-width: 767px) {
      header li {
        display: block; }
        header li a {
          display: block;
          padding: 0.9375rem 0;
          font-size: 1.125rem; } }
  @media (max-width: 767px) {
    header {
      position: relative; } }

a.is-active {
  font-family: "mighty_zeo_2.0bold";
  font-weight: bold; }

.overlay {
  display: none;
  position: fixed;
  z-index: 98;
  width: 100%;
  height: 100vh;
  background: rgba(34, 34, 34, 0.7); }

#menu-open, #menu-close {
  display: none;
  background-color: transparent;
  outline: none; }
  #menu-open:hover, #menu-close:hover {
    background-color: transparent; }
  @media (max-width: 767px) {
    #menu-open, #menu-close {
      display: block; } }

#menu-open {
  position: absolute;
  top: 1.5625rem;
  right: 0rem; }

#menu-close {
  margin: 1.5625rem auto; }

.top-header {
  overflow: auto;
  zoom: 1;
  background-color: #C4C4C4;
  text-align: center;
  box-shadow: inset 0 -2px 20px rgba(68, 68, 68, 0.3); }
  .top-header a, .top-header iframe {
    display: inline-block;
    padding: 0rem !important; }
    @media (max-width: 639px) {
      .top-header a, .top-header iframe {
        padding: 0px; } }

.page-content {
  padding: 3.125rem 20px 1.5625rem 20px; }

.page-left, .page-right {
  width: 20%;
  margin-bottom: 10px;
  float: left;
  height: 100px; }
  .page-left iframe, .page-left img, .page-right iframe, .page-right img {
    max-width: 100%; }

.top-header .textwidget p {
  margin: 0;
  line-height: 0;
  padding: 0;
}

.top-header .textwidget .ad-tag {
  margin-bottom: 1px;
  margin-top: 1px;
}

.page-right {
  min-height: 1300px;
}

.page-right .rightadspace {
  margin: 1em 0;
}

@media (max-width: 768px) {
  .page-left {
    display: none; } }

@media (max-width: 768px) {
  .page-right {
    width: 100%;
    height: auto;
    text-align: center; }
    .page-right iframe, .page-right img {
      margin: 0 auto; } }

.page-main {
  width: 50%;
  float: left;
  padding: 0px 1.5625rem; }
  @media (max-width: 768px) {
    .page-main {
      width: 100%;
      padding: 0 4%; } }
  .page-main h1 {
    font-weight: bold; }
  .page-main a {
    color: #974; }
    .page-main a:hover {
      color: #cc9e5a; }
  .page-main .aligncenter {
    display: block;
    margin: 0 auto;
    text-align: center; }
  .page-main .wp-caption-text {
    font-size: 0.875rem;
    font-style: italic; }
  .page-main strong {
    font-weight: bold; }
  .page-main em {
    font-style: italic; }
  .page-main .mashsb-count {
    display: none; }

.date {
  font-size: 0.75rem;
  font-style: italic; }

.content-social-links {
  margin: 0 auto;
  padding: 25px;
  padding-bottom: 25px;
  width: 80%; }
  .content-social-links li {
    width: 33.333333%;
    float: left;
    text-align: center; }
  .content-social-links a {
    position: relative;
    display: inline-block;
    width: 50px;
    height: 50px;
    border: 1px solid #C4C4C4;
    border-radius: 50%;
    -webkit-transition: background-color ease .3s;
            transition: background-color ease .3s; }
    .content-social-links a svg {
      position: absolute;
      top: 12px;
      left: 12px;
      width: 25px;
      height: 25px;
      fill: #222; }
    .content-social-links a:hover {
      background-color: #C4C4C4; }

.archive-content {
  min-height: 500px; }

ul.archive-nav {
  padding-bottom: 3.125rem;
  text-align: center;
  list-style-type: none; }
  ul.archive-nav li {
    display: inline-block; }
  ul.archive-nav a {
    display: block;
    padding: 10px 20px;
    color: #C4C4C4;
    font-size: 1.375rem;
    font-family: "mighty_zeo_2.0regular"; }
    ul.archive-nav a.is-active {
      color: #444; }

form.archive-search {
  margin-bottom: 0px;
  width: 100%;
  box-shadow: 0 10px 20px -6px rgba(34, 34, 34, 0.6); }
  form.archive-search input {
    padding: 10px 10px 10px 25px;
    margin-bottom: 0px;
    font-family: "mighty_zeo_2.0regular";
    font-style: italic;
    text-transform: uppercase;
    border-left: none;
    border-right: none; }
    form.archive-search input:focus {
      border-color: #974 !important; }

.archive-posts {
  overflow: auto;
  zoom: 1; }

.alm-btn-wrap {
  text-align: center; }
  .alm-btn-wrap #load-more {
    background: transparent;
    color: #444;
    font-weight: bold;
    border: 2px solid #444;
    border-radius: 0px;
    outline: none; }
    .alm-btn-wrap #load-more:hover {
      color: #974;
      border-color: #974; }
    .alm-btn-wrap #load-more.done {
      display: none; }

.archive-post {
  margin-bottom: 50px;
  background-color: #C4C4C4;
  text-align: center;
  box-shadow: 0 4px 8px 0 rgba(34, 34, 34, 0.2), 0 6px 20px 0 rgba(34, 34, 34, 0.19);
  -webkit-transition: box-shadow ease-in-out .3s;
          transition: box-shadow ease-in-out .3s; }
  .archive-post:hover {
    box-shadow: 0 8px 12px 0 rgba(34, 34, 34, 0.2), 0 8px 28px 0 rgba(34, 34, 34, 0.5); }
  .archive-post img {
    display: block;
    max-width: 230px;
    max-height: 155px;
    width: auto;
    height: auto; }
  @media (min-width: 769px) {
    .archive-post {
      overflow: auto;
      zoom: 1;
      float: left;
      clear: none;
      text-align: inherit;
      width: 31.333333%;
      margin-left: 0%;
      margin-right: 3%; }
      .archive-post:nth-child(3n) {
        margin-right: 0%;
        float: right; }
      .archive-post:nth-child(3n + 1) {
        clear: both; } }
  @media (max-width: 767px) {
    .archive-post {
      overflow: auto;
      zoom: 1;
      float: left;
      clear: none;
      text-align: inherit;
      width: 48.5%;
      margin-left: 0%;
      margin-right: 3%; }
      .archive-post:nth-child(2n) {
        margin-right: 0%;
        float: right; }
      .archive-post:nth-child(2n + 1) {
        clear: both; } }
  @media (max-width: 639px) {
    .archive-post {
      overflow: auto;
      zoom: 1;
      float: left;
      clear: none;
      text-align: inherit;
      width: 100%;
      margin-left: 0%;
      margin-right: 0%; } }

.archive-image {
  width: 100%;
  min-height: 200px;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat; }

.archive-info {
  padding: 20px;
  text-align: center; }
  .archive-info h6 {
    height: 40px;
    padding-bottom: 10px; }
  .archive-info p {
    font-style: italic; }

.archive-excerpt {
  display: none; }

.searched-text {
  padding-bottom: 3.125rem; }
  .searched-text span {
    padding: 5px;
    background: #974;
    color: #FFF; }

.search-everything-highlight-color {
  display: inline-block;
  padding: 5px;
  background-color: #974 !important;
  color: #FFF; }

.searched-post {
  overflow: auto;
  zoom: 1;
  width: 100%;
  height: 15.625rem;
  border-bottom: 0.0625rem solid #C4C4C4;
  cursor: pointer;
  -webkit-transition: all ease-in-out .3s;
          transition: all ease-in-out .3s; }
  .searched-post:hover {
    box-shadow: 0 8px 12px 0 rgba(34, 34, 34, 0.2), 0 8px 28px 0 rgba(34, 34, 34, 0.5); }
  .searched-post:last-child {
    border-bottom: 0px; }
  @media (max-width: 767px) {
    .searched-post {
      padding: 25px;
      height: auto;
      text-align: center; }
      .searched-post .searched-image {
        float: none;
        height: 175px;
        width: 50%;
        margin: 0 auto; }
      .searched-post .searched-info {
        overflow: auto;
        zoom: 1;
        float: left;
        clear: none;
        text-align: inherit;
        width: 100%;
        margin-left: 0%;
        margin-right: 0%;
        margin-top: 15px; }
        .searched-post .searched-info h6, .searched-post .searched-info p {
          margin-bottom: 0; }
      .searched-post .searched-excerpt {
        display: none; } }
  @media (max-width: 639px) {
    .searched-post .searched-image {
      width: 100%; } }

.searched-image {
  height: 100%;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center;
  overflow: auto;
  zoom: 1;
  float: left;
  clear: none;
  text-align: inherit;
  width: 31.333333%;
  margin-left: 0%;
  margin-right: 3%; }
  .searched-image:last-child {
    margin-right: 0%; }

.searched-info {
  overflow: auto;
  zoom: 1;
  float: left;
  clear: none;
  text-align: inherit;
  width: 65.666667%;
  margin-left: 0%;
  margin-right: 3%; }
  .searched-info:last-child {
    margin-right: 0%; }
  .searched-info h6 {
    margin-bottom: 10px;
    font-weight: bold; }
  @media (min-width: 768px) {
    .searched-info {
      position: relative;
      top: 50%;
      -webkit-transform: translateY(-50%);
          -ms-transform: translateY(-50%);
              transform: translateY(-50%); } }

.searched-date {
  font-size: 0.75rem; }

.searched-excerpt {
  font-size: 1rem; }

.opinion-nav h5 {
  font-weight: bold;
  text-align: center; }

.opinion-nav ul.archive-posts {
  margin: 0 auto;
  padding: 25px;
  width: 70%; }

.opinion-nav li.archive-post {
  overflow: auto;
  zoom: 1;
  float: left;
  clear: none;
  text-align: inherit;
  width: 100%;
  margin-left: 0%;
  margin-right: 0%;
  position: relative;
  z-index: 1;
  margin-bottom: 0;
  background-color: #FFF;
  box-shadow: none;
  border-bottom: 1px solid #C4C4C4;
  -webkit-transition: all ease .3s;
          transition: all ease .3s; }
  .opinion-nav li.archive-post:first-child {
    border-top: 1px solid #C4C4C4; }
  .opinion-nav li.archive-post a {
    display: block;
    height: 15.625rem; }
  @media (max-width: 767px) {
    .opinion-nav li.archive-post {
      padding: 25px;
      height: auto; } }
  .opinion-nav li.archive-post:hover {
    z-index: 9;
    box-shadow: 0 4px 8px 0 rgba(34, 34, 34, 0.2), 0 6px 20px 0 rgba(34, 34, 34, 0.19); }
    .opinion-nav li.archive-post:hover h6 {
      color: #974; }

.opinion-nav .archive-image {
  height: 100%; }
  @media (min-width: 768px) {
    .opinion-nav .archive-image {
      overflow: auto;
      zoom: 1;
      float: left;
      clear: none;
      text-align: inherit;
      width: 31.333333%;
      margin-left: 0%;
      margin-right: 3%; }
      .opinion-nav .archive-image:last-child {
        margin-right: 0%; } }
  @media (max-width: 767px) {
    .opinion-nav .archive-image {
      float: none;
      margin: 0 auto;
      width: 50%; } }
  @media (max-width: 639px) {
    .opinion-nav .archive-image {
      width: 100%; } }

.opinion-nav .archive-info {
  padding: 0; }
  .opinion-nav .archive-info h6 {
    padding-bottom: 0;
    margin-bottom: 10px;
    height: auto;
    font-weight: bold;
    -webkit-transition: color ease .3s;
            transition: color ease .3s; }
  .opinion-nav .archive-info p {
    font-size: 0.75rem;
    margin-bottom: 10px; }
  @media (min-width: 768px) {
    .opinion-nav .archive-info {
      overflow: auto;
      zoom: 1;
      float: left;
      clear: none;
      text-align: inherit;
      width: 65.666667%;
      margin-left: 0%;
      margin-right: 3%;
      position: relative;
      top: 50%;
      -webkit-transform: translateY(-50%);
          -ms-transform: translateY(-50%);
              transform: translateY(-50%); }
      .opinion-nav .archive-info:last-child {
        margin-right: 0%; } }
  @media (max-width: 767px) {
    .opinion-nav .archive-info {
      padding-top: 15px;
      text-align: center !important; }
      .opinion-nav .archive-info h6, .opinion-nav .archive-info p {
        margin: 0; } }

.opinion-nav .archive-excerpt {
  display: block; }
  .opinion-nav .archive-excerpt p {
    margin-bottom: 0;
    font-size: 0.875rem;
    font-style: normal; }
  @media (max-width: 767px) {
    .opinion-nav .archive-excerpt {
      display: none; } }

@media (max-width: 767px) {
  .opinion-nav .opinion-nav {
    padding: 0 20px; }
  .opinion-nav ul.archive-posts {
    width: 100%;
    padding: 0 4%; }
  .opinion-nav .archive-image,
  .opinion-nav .archive-info {
    overflow: auto;
    zoom: 1;
    float: left;
    clear: none;
    text-align: inherit;
    width: 100%;
    margin-left: 0%;
    margin-right: 0%; } }

.opinion-nav .alm-btn-wrap {
  margin: 25px 0; }

.video-wrapper {
  position: relative;
  top: 50%;
  -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
          transform: translateY(-50%);
  width: 70%;
  max-width: 900px;
  margin: 0 auto; }
  @media (max-width: 767px) {
    .video-wrapper {
      width: 90%; } }

.video-container {
  position: relative;
  padding-bottom: 52.25%;
  padding-top: 30px;
  height: 0;
  overflow: hidden; }

.video-container iframe, .video-container object, .video-container embed {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%; }


/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWV5ZXItcmVzZXQvc3R5bGVzaGVldHMvX21leWVyLXJlc2V0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL25vcm1hbGl6ZS1saWJzYXNzL19ub3JtYWxpemUuc2NzcyIsInN0eWxlLmNzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvb2xkLWJyb3dzZXJzL3Njc3Mvb2xkLWJyb3dzZXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvamVldC9zY3NzL2plZXQvaW5kZXguc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvamVldC9zY3NzL2plZXQvX3NldHRpbmdzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2plZXQvc2Nzcy9qZWV0L19mdW5jdGlvbnMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvamVldC9zY3NzL2plZXQvX2dyaWQuc2NzcyIsImluY2x1ZGVzL19mb250cy5zY3NzIiwiYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwiaW5jbHVkZXMvX2NvbG9ycy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9rbmFwc2Fjay9rbmFwc2Fjay9fdHlwb2dyYXBoeS5zY3NzIiwiYmFzZS9fYmFzZS5zY3NzIiwiaW5jbHVkZXMvX3ZhcmlhYmxlcy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9rbmFwc2Fjay9rbmFwc2Fjay9fbGF5b3V0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2luY2x1ZGUtbWVkaWEvZGlzdC9faW5jbHVkZS1tZWRpYS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9rbmFwc2Fjay9rbmFwc2Fjay9fdXRpbGl0aWVzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2tuYXBzYWNrL2tuYXBzYWNrL19yZXNldC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9rbmFwc2Fjay9rbmFwc2Fjay9fY29kZS5zY3NzIiwiY29tcG9uZW50cy9fbmF2LnNjc3MiLCJjb21wb25lbnRzL19idXR0b25zLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2tuYXBzYWNrL2tuYXBzYWNrL191aS5zY3NzIiwiY29tcG9uZW50cy9fZm9ybS5zY3NzIiwiY29tcG9uZW50cy9faGVyby5zY3NzIiwiY29tcG9uZW50cy9fYXV0aG9yLnNjc3MiLCJjb21wb25lbnRzL19zaGFkb3cuc2NzcyIsIm1vZHVsZXMvX2Zvb3Rlci5zY3NzIiwibW9kdWxlcy9faGVhZGVyLnNjc3MiLCJtb2R1bGVzL19wYWdlLnNjc3MiLCJtb2R1bGVzL19hcmNoaXZlLnNjc3MiLCJtb2R1bGVzL19zZWFyY2guc2NzcyIsIm1vZHVsZXMvX29waW5pb24uc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLRTtFQUNFLFVBQVU7RUFDVixXQUFXO0VBQ1gsVUFBVTtFQUNWLGdCQUFnQjtFQUNoQixjQUFjO0VBQ2QseUJBQXlCLEVBQzFCOztBQUdEO0VBQ0UsZUFBZSxFQUNoQjs7QUFDRDtFQUNFLGVBQWUsRUFDaEI7O0FBQ0Q7RUFDRSxpQkFBaUIsRUFDbEI7O0FBQ0Q7RUFDRSxhQUFhLEVBQ2Q7O0FBQ0Q7RUFFSSxZQUFZO0VBQ1osY0FBYyxFQUNmOztBQUVIO0VBRUksWUFBWTtFQUNaLGNBQWMsRUFDZjs7QUFFSDtFQUNFLDBCQUEwQjtFQUMxQixrQkFBa0IsRUFDbkI7O0FDMkRIOzs7OztFQUtFO0FBQ0Y7RUFDRSx3QkFoRjJCO0VBZ0ZlLE9BQU87RUFDakQsMkJBQTJCO0VBQUUsT0FBTztFQUNwQywrQkFBK0I7RUFBRSxPQUFPLEVBQ3pDOztBQUVEOztFQUVFO0FBRUY7RUFDRSxVQUFVLEVBQ1g7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOzs7OztFQUtFO0FBRUY7Ozs7Ozs7Ozs7Ozs7RUFhRSxlQUFlLEVBQ2hCOztBQUVEOzs7RUFHRTtBQUVGOzs7O0VBS0ksc0JBQXNCO0VBQUUsT0FBTztFQUVqQyx5QkFBeUI7RUFBRSxPQUFPLEVBQ25DOztBQUVEOzs7RUFH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SUYzRkY7TUU0RkksZ0JGNUYrQixFQUFvQixFQUFBOztBQUN2RDtFRW9GRSw0REFBZTtFQUFmLG9EQUFlLEVGcEZpQztFRXNGaEQ7SUZ0RkY7TUV1RkksZ0JGdkZvQyxFQUFVLEVBQUE7RUUwRmhEO0lGMUZGO01FMkZJLGdCRjNGMEMsRUFBSSxFQUFBOztBQUVsRDtFRWtGRSw0REFBZTtFQUFmLG9EQUFlLEVGakZ3QztFRW1GdkQ7SUZuRkE7TUVvRkUsZ0JGcEYyQixFQUEwQixFQUFBO0VFdUZ2RDtJRnhGRjtNRXlGSSxnQkZ4RmlDLEVBQW9CLEVBQUE7O0FBRHpEO0VFa0ZFLDREQUFlO0VBQWYsb0RBQWUsRUZoRndDO0VFa0Z2RDtJRnBGRjtNRXFGSSxnQkZuRjJCLEVBQTBCLEVBQUE7RUVzRnZEO0lGdEZBO01FdUZFLGdCRnZGaUMsRUFBb0IsRUFBQTs7QUFGekQ7RUVrRkUsNERBQWU7RUFBZixvREFBZSxFRi9Fd0M7RUVpRnZEO0lGcEZGO01FcUZJLGdCRmxGMkIsRUFBMEIsRUFBQTtFRXFGdkQ7SUZyRkE7TUVzRkUsZ0JGdEZpQyxFQUFvQixFQUFBOztBQUh6RDtFRWtGRSw0REFBZTtFQUFmLG9EQUFlLEVGOUV3QztFRWdGdkQ7SUZwRkY7TUVxRkksZ0JGakYyQixFQUEwQixFQUFBO0VFb0Z2RDtJRnhGRjtNRXlGSSxnQkZyRmlDLEVBQW9CLEVBQUE7O0FBSnpEO0VFa0ZFLDREQUFlO0VBQWYsb0RBQWUsRUY3RXdDO0VFK0V2RDtJRnBGRjtNRXFGSSxnQkZoRjJCLEVBQTBCLEVBQUE7RUVtRnZEO0lGbkZBO01Fb0ZFLGdCRnBGaUMsRUFBb0IsRUFBQTs7QUFDdkQ7RUU0RUEsNERBQWU7RUFBZixvREFBZSxFRjVFd0M7RUU4RXZEO0lGcEZGO01FcUZJLGdCRi9FMkIsRUFBMEIsRUFBQTtFRWtGdkQ7SUZ4RkY7TUV5RkksZ0JGbkZpQyxFQUFvQixFQUFBOztBQUN2RDtFRTJFQSw0REFBZTtFQUFmLG9EQUFlLEVGM0VtQztFRTZFbEQ7SUZwRkY7TUVxRkksZ0JGOUVzQyxFQUFVLEVBQUE7RUVpRmxE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c0NvbnRlbnQiOlsiLy8gaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9cbi8vIHYyLjAgfCAyMDExMDEyNlxuLy8gTGljZW5zZTogbm9uZSAocHVibGljIGRvbWFpbilcblxuQG1peGluIG1leWVyLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSwgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLCBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLCBiLCB1LCBpLCBjZW50ZXIsIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLCB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCwgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIGZvbnQtc2l6ZTogMTAwJTtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgfVxuXG4gIC8vIEhUTUw1IGRpc3BsYXktcm9sZSByZXNldCBmb3Igb2xkZXIgYnJvd3NlcnNcbiAgYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICBib2R5IHtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgfVxuICBvbCwgdWwge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIH1cbiAgYmxvY2txdW90ZSwgcSB7XG4gICAgcXVvdGVzOiBub25lO1xuICB9XG4gIGJsb2NrcXVvdGUge1xuICAgICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBjb250ZW50OiBub25lO1xuICAgIH1cbiAgfVxuICBxIHtcbiAgICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgY29udGVudDogbm9uZTtcbiAgICB9XG4gIH1cbiAgdGFibGUge1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gIH1cbn1cblxuQGluY2x1ZGUgbWV5ZXItcmVzZXQ7XG4iLCIvLy8vXG4vLy8gbm9ybWFsaXplLWxpYnNhc3MgMS4wLjNcbi8vLyBNSVQvR1BMdjIgTGljZW5zZVxuLy8vIGxiLmNtL25vcm1hbGl6ZS1saWJzYXNzXG4vLy8vXG5cbi8vLyBTdHJpY3Qgbm9ybWFsaXplXG4vLy8gQHR5cGUgQm9vbGVhbiBbZmFsc2VdIC0gU2V0IHRvIHRydWUgZm9yIHN0cmljdCBub3JtYWxpemUgb3V0cHV0LlxuJHN0cmljdC1ub3JtYWxpemU6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gRm9udC1zaXplIGJhc2VsaW5lXG4vLy8gQHR5cGUgTGVuZ3RoIFsxNnB4XVxuJGJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLy8gTGluZS1oZWlnaHQgYmFzZWxpbmVcbi8vLyBAdHlwZSBMZW5ndGggWzI0cHhdXG4kYmFzZS1saW5lLWhlaWdodDogMjRweCAhZGVmYXVsdDtcblxuLy8vIEgxIGhlYWRsaW5lIHNpemVcbi8vLyBAdHlwZSBMZW5ndGggWzIgKiAxNnB4XVxuJGgxLWZvbnQtc2l6ZTogMiAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcblxuLy8vIFJoeXRobSB1bml0XG4vLy8gQHR5cGUgU3RyaW5nIFtlbV0gLSBTdXBwb3J0ZWQgdmFsdWVzOiBweCwgZW0sIHJlbS5cbiRyaHl0aG0tdW5pdDogJ2VtJyAhZGVmYXVsdDtcblxuLy8vIEZvbnQtZmFtaWx5IGJhc2VsaW5lXG4vLy8gQHR5cGUgTWFwIFtzYW5zLXNlcmlmXVxuJGJhc2UtZm9udC1mYW1pbHk6IHNhbnMtc2VyaWYgIWRlZmF1bHQ7XG5cbi8vLyBTdXBwb3J0ZWQgQnJvd3NlciB2ZXJzaW9uc1xuLy8vIEB0eXBlIE1hcFxuJGJyb3dzZXItbWluLXZlcnNpb246IChcbiAgJ2Nocm9tZSc6ICBudWxsLFxuICAnZmlyZWZveCc6IG51bGwsXG4gICdpZSc6ICAgICAgOCxcbiAgJ3NhZmFyaSc6ICA2LFxuICAnb3BlcmEnOiAgIG51bGxcbikgIWRlZmF1bHQ7XG5cbi8vIEFzc3VyZSBubyB2YXJpYWJsZXMgZ2V0IG92ZXJyaWRkZW4gaWYgc3RyaWN0IGlzIG9uXG4kbm9ybWFsaXplLWJhc2UtZm9udC1zaXplOiBpZigkc3RyaWN0LW5vcm1hbGl6ZSwgMTZweCwgJGJhc2UtZm9udC1zaXplKTtcbiRub3JtYWxpemUtYmFzZS1saW5lLWhlaWdodDogaWYoJHN0cmljdC1ub3JtYWxpemUsIDI0cHgsICRiYXNlLWxpbmUtaGVpZ2h0KTtcbiRub3JtYWxpemUtaDEtZm9udC1zaXplOiBpZigkc3RyaWN0LW5vcm1hbGl6ZSwgMiAqICRiYXNlLWZvbnQtc2l6ZSwgJGgxLWZvbnQtc2l6ZSk7XG4kbm9ybWFsaXplLXJoeXRobS11bml0OiBpZigkc3RyaWN0LW5vcm1hbGl6ZSwgJ2VtJywgJHJoeXRobS11bml0KTtcbiRub3JtYWxpemUtYmFzZS1mb250LWZhbWlseTogaWYoJHN0cmljdC1ub3JtYWxpemUsIHNhbnMtc2VyaWYsICRiYXNlLWZvbnQtZmFtaWx5KTtcblxuLy8vIE5vcm1hbGl6ZSBMZWdhY3kgQnJvd3NlciBTdXBwb3J0IGZ1bmN0aW9uXG4vLy9cbi8vLyBAcmVxdWlyZXMge3ZhcmlhYmxlfSBicm93c2VyXG4vLy8gQHJlcXVpcmVzIHt2YXJpYWJsZX0gdmVyc2lvblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicm93c2VyIC0gQSB2YWxpZCBicm93c2VyIG5hbWUgZnJvbSAkYnJvd3Nlci1taW5pbXVtLXZlcnNpb25zLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmVyc2lvbiAtIEEgYnJvd3NlciB2ZXJzaW9uLlxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH0gLSBJZiBicm93c2VyIGlzIG51bGwgb3IgdmFsaWQgcmV0dXJucyB0cnVlLlxuQGZ1bmN0aW9uIG5vcm1hbGl6ZS1icm93c2VyLXN1cHBvcnQoJGJyb3dzZXIsICR2ZXJzaW9uKSB7XG4gIC8vIElmIGJyb3dzZXIgaXMgbm90IG51bGwgdGhlbiBjaGVjayBmb3Igc3VwcG9ydFxuICBAaWYgbWFwLWdldCgkYnJvd3Nlci1taW4tdmVyc2lvbiwgJGJyb3dzZXIpIHtcbiAgICAkc3VwcG9ydGVkLXZlcnNpb246IG1hcC1nZXQoJGJyb3dzZXItbWluLXZlcnNpb24sICRicm93c2VyKTtcbiAgICAvLyBQYXNzIGlmIGJyb3dzZXIgaXMgc3VwcG9ydGVkIG9yIHN0cmljdC1ub3JtYWxpemUgaXMgb25cbiAgICBAaWYgJHN0cmljdC1ub3JtYWxpemUgb3IgJHN1cHBvcnRlZC12ZXJzaW9uIDw9ICR2ZXJzaW9uIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC8vIEZhaWwgaWYgYnJvd3NlciBpcyB1bnN1cHBvcnRlZFxuICAgICAgQHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICAvLyBQYXNzIGlmIGJyb3dzZXIgaXMgbnVsbFxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLyBDb252ZXJ0IG9uZSB1bml0IGludG8gYW5vdGhlclxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIEluaXRpYWwgdmFsdWVcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHVuaXQgLSBEZXNpcmVkIHVuaXRcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vLyBAdGhyb3cgRXJyb3IgaWYgYCR1bml0YCBkb2VzIG5vdCBleGlzdCBvciBpZiB1bml0cyBhcmUgaW5jb21wYXRpYmxlLlxuQGZ1bmN0aW9uIG5vcm1hbGl6ZS1jb252ZXJ0LXVuaXQoJHZhbHVlLCAkdW5pdCkge1xuICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBaZXJvVW5pdFxuICAkdW5pdHM6IChcbiAgICAncHgnOiAwcHgsXG4gICAgJ2NtJzogMGNtLFxuICAgICdtbSc6IDBtbSxcbiAgICAnJSc6IDAlLFxuICAgICdpbic6IDBpbixcbiAgICAnZW0nOiAwZW0sXG4gICAgJ3JlbSc6IDByZW0sXG4gICAgJ3B0JzogMHB0XG4gICk7XG4gIC8vIHNjc3MtbGludDplbmFibGUgWmVyb1VuaXRcblxuICBAaWYgbWFwLWhhcy1rZXkoJHVuaXRzLCAkdW5pdCkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkdW5pdHMsICR1bml0KSArICR2YWx1ZTtcbiAgfVxuXG4gIEBlcnJvciBcIlVua25vd24gdW5pdCBgI3skdW5pdH1gLlwiO1xufVxuXG4vKipcbiogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiogMi4gUHJldmVudCBpT1MgYW5kIElFIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgZGV2aWNlIG9yaWVudGF0aW9uXG4qICAgIGNoYW5nZSwgd2l0aG91dCBkaXNhYmxpbmdcbiogICAgdXNlciB6b29tLlxuKi9cbmh0bWwge1xuICBmb250LWZhbWlseTogJG5vcm1hbGl6ZS1iYXNlLWZvbnQtZmFtaWx5OyAvKiAxICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKipcbiogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4qIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuXG4qIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4qIGFuZCBGaXJlZm94LlxuKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLlxuKi9cblxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuKiAxLiBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxuKiAyLiBOb3JtYWxpemUgdmVydGljYWwgYWxpZ25tZW50IG9mIGBwcm9ncmVzc2AgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4qL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBAaWYgbm9ybWFsaXplLWJyb3dzZXItc3VwcG9ydCgnaWUnLCA5KSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiAxICovXG4gIH1cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG59XG5cbi8qKlxuKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuKiBSZW1vdmUgZXhjZXNzIGhlaWdodCBpbiBpT1MgNSBkZXZpY2VzLlxuKi9cblxuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xufVxuXG5AaWYgbm9ybWFsaXplLWJyb3dzZXItc3VwcG9ydCgnaWUnLCAxMCkge1xuICAvKipcbiAgICogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxuICAgKi9cblxuICBbaGlkZGVuXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vKipcbiogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuKi9cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQGlmIG5vcm1hbGl6ZS1icm93c2VyLXN1cHBvcnQoJ2llJywgMTApIHtcbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICAgKi9cblxuICBhIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG4vKipcbiogSW1wcm92ZSByZWFkYWJpbGl0eSBvZiBmb2N1c2VkIGVsZW1lbnRzIHdoZW4gdGhleSBhcmUgYWxzbyBpbiBhblxuKiBhY3RpdmUvaG92ZXIgc3RhdGUuXG4qL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICBvdXRsaW5lOiAwO1xufVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4qIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cbiovXG5cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcbn1cblxuLyoqXG4qIEFkZHJlc3Mgc3R5bGUgc2V0IHRvIGBib2xkZXJgIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyoqXG4qIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiovXG5cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4qIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWBcbiogY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuKi9cblxuaDEge1xuICBmb250LXNpemU6IG5vcm1hbGl6ZS1jb252ZXJ0LXVuaXQoKCRub3JtYWxpemUtaDEtZm9udC1zaXplIC8gJG5vcm1hbGl6ZS1iYXNlLWZvbnQtc2l6ZSksICRub3JtYWxpemUtcmh5dGhtLXVuaXQpO1xuICBtYXJnaW46IG5vcm1hbGl6ZS1jb252ZXJ0LXVuaXQoKCRub3JtYWxpemUtYmFzZS1mb250LXNpemUgLyAkbm9ybWFsaXplLWJhc2UtbGluZS1oZWlnaHQpLCAkbm9ybWFsaXplLXJoeXRobS11bml0KSAwO1xufVxuXG5AaWYgbm9ybWFsaXplLWJyb3dzZXItc3VwcG9ydCgnaWUnLCA5KSB7XG4gIC8qKlxuICAgKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LlxuICAgKi9cblxuICBtYXJrIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmYwO1xuICAgIGNvbG9yOiAjMDAwO1xuICB9XG59XG5cbi8qKlxuKiBBZGRyZXNzIGluY29uc2lzdGVudCBhbmQgdmFyaWFibGUgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AaWYgbm9ybWFsaXplLWJyb3dzZXItc3VwcG9ydCgnaWUnLCAxMCkge1xuICAvKipcbiAgICogUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAuXG4gICAqL1xuXG4gIGltZyB7XG4gICAgYm9yZGVyOiAwO1xuICB9XG59XG5cbkBpZiBub3JtYWxpemUtYnJvd3Nlci1zdXBwb3J0KCdpZScsIDExKSB7XG4gIC8qKlxuICAgKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAgICovXG5cbiAgc3ZnOm5vdCg6cm9vdCkge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQGlmIG5vcm1hbGl6ZS1icm93c2VyLXN1cHBvcnQoJ2llJywgOSkgb3Igbm9ybWFsaXplLWJyb3dzZXItc3VwcG9ydCgnc2FmYXJpJywgNikge1xuICAvKipcbiAgICogQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkuXG4gICAqL1xuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAxZW0gNDBweDtcbiAgfVxufVxuXG4vKipcbiogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiogQ29udGFpbiBvdmVyZmxvdyBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG5wcmUge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4qIEFkZHJlc3Mgb2RkIGBlbWAtdW5pdCBmb250IHNpemUgcmVuZGVyaW5nIGluIGFsbCBicm93c2Vycy5cbiovXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDFlbTtcbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuKiBLbm93biBsaW1pdGF0aW9uOiBieSBkZWZhdWx0LCBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYIGFsbG93IHZlcnkgbGltaXRlZFxuKiBzdHlsaW5nIG9mIGBzZWxlY3RgLCB1bmxlc3MgYSBgYm9yZGVyYCBwcm9wZXJ0eSBpcyBzZXQuXG4qL1xuXG4vKipcbiogMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkLlxuKiAgICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiogMi4gQ29ycmVjdCBmb250IHByb3BlcnRpZXMgbm90IGJlaW5nIGluaGVyaXRlZC5cbiogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4qL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBjb2xvcjogaW5oZXJpdDsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG4gIG1hcmdpbjogMDsgLyogMyAqL1xufVxuXG5AaWYgbm9ybWFsaXplLWJyb3dzZXItc3VwcG9ydCgnaWUnLCAxMSkge1xuICAvKipcbiAgICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuXG4gICAqL1xuXG4gIGJ1dHRvbiB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cbn1cblxuLyoqXG4qIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiogQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy5cbiogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS5cbiogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxuKi9cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxuKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4qL1xuXG5idXR0b24sXG5odG1sIGlucHV0W3R5cGU9J2J1dHRvbiddLCAvKiAxICovXG5pbnB1dFt0eXBlPSdyZXNldCddLFxuaW5wdXRbdHlwZT0nc3VibWl0J10ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xuICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbn1cblxuLyoqXG4qIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuXG4qL1xuXG5idXR0b25bZGlzYWJsZWRdLFxuaHRtbCBpbnB1dFtkaXNhYmxlZF0ge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qKlxuKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4qL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4qIEFkZHJlc3MgRmlyZWZveCA0KyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW5cbiogdGhlIFVBIHN0eWxlc2hlZXQuXG4qL1xuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbkBpZiBub3JtYWxpemUtYnJvd3Nlci1zdXBwb3J0KCdpZScsIDEwKSB7XG4gIC8qKlxuICAgKiBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvbid0IGF0dGVtcHQgdG8gc3R5bGUgdGhlc2UgZWxlbWVudHMuXG4gICAqIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguXG4gICAqXG4gICAqIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuXG4gICAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXG4gICAqL1xuXG4gIGlucHV0W3R5cGU9J2NoZWNrYm94J10sXG4gIGlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgICBwYWRkaW5nOiAwOyAvKiAyICovXG4gIH1cbn1cblxuLyoqXG4qIEZpeCB0aGUgY3Vyc29yIHN0eWxlIGZvciBDaHJvbWUncyBpbmNyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnMuIEZvciBjZXJ0YWluXG4qIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXG4qIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbiovXG5cbmlucHV0W3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuaW5wdXRbdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiogMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiovXG5cbmlucHV0W3R5cGU9J3NlYXJjaCddIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG59XG5cbi8qKlxuKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cbiogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXG4qL1xuXG5pbnB1dFt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbmlucHV0W3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLlxuKi9cblxuZmllbGRzZXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBtYXJnaW46IDAgMnB4O1xuICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG59XG5cbi8qKlxuKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG4qIDIuIFJlbW92ZSBwYWRkaW5nIHNvIHBlb3BsZSBhcmVuJ3QgY2F1Z2h0IG91dCBpZiB0aGV5IHplcm8gb3V0IGZpZWxkc2V0cy5cbiovXG5cbmxlZ2VuZCB7XG4gIEBpZiBub3JtYWxpemUtYnJvd3Nlci1zdXBwb3J0KCdpZScsIDExKSB7XG4gICAgYm9yZGVyOiAwOyAvKiAxICovXG4gIH1cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG5AaWYgbm9ybWFsaXplLWJyb3dzZXItc3VwcG9ydCgnaWUnLCAxMSkge1xuICAvKipcbiAgICogUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS8xMC8xMS5cbiAgICovXG5cbiAgdGV4dGFyZWEge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG59XG5cbi8qKlxuKiBEb24ndCBpbmhlcml0IHRoZSBgZm9udC13ZWlnaHRgIChhcHBsaWVkIGJ5IGEgcnVsZSBhYm92ZSkuXG4qIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuKi9cblxub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyogVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuKi9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7XG59XG4iLCJodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSwgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLCBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsIGIsIHUsIGksIGNlbnRlciwgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSwgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLCBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgZm9udDogaW5oZXJpdDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbmFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbmJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG5vbCwgdWwge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbmJsb2NrcXVvdGUsIHEge1xuICBxdW90ZXM6IG5vbmU7IH1cblxuYmxvY2txdW90ZTpiZWZvcmUsIGJsb2NrcXVvdGU6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBjb250ZW50OiBub25lOyB9XG5cbnE6YmVmb3JlLCBxOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgY29udGVudDogbm9uZTsgfVxuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8qKlxuKiAxLiBTZXQgZGVmYXVsdCBmb250IGZhbWlseSB0byBzYW5zLXNlcmlmLlxuKiAyLiBQcmV2ZW50IGlPUyBhbmQgSUUgdGV4dCBzaXplIGFkanVzdCBhZnRlciBkZXZpY2Ugb3JpZW50YXRpb25cbiogICAgY2hhbmdlLCB3aXRob3V0IGRpc2FibGluZ1xuKiAgICB1c2VyIHpvb20uXG4qL1xuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAvKiAxICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLyogMiAqLyB9XG5cbi8qKlxuKiBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uXG4qL1xuYm9keSB7XG4gIG1hcmdpbjogMDsgfVxuXG4vKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4qIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuXG4qIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4qIGFuZCBGaXJlZm94LlxuKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLlxuKi9cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWFpbixcbm1lbnUsXG5uYXYsXG5zZWN0aW9uLFxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qKlxuKiAxLiBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxuKiAyLiBOb3JtYWxpemUgdmVydGljYWwgYWxpZ25tZW50IG9mIGBwcm9ncmVzc2AgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4qL1xuYXVkaW8sXG5jYW52YXMsXG5wcm9ncmVzcyxcbnZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAvKiAxICovXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgLyogMiAqLyB9XG5cbi8qKlxuKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuKiBSZW1vdmUgZXhjZXNzIGhlaWdodCBpbiBpT1MgNSBkZXZpY2VzLlxuKi9cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDsgfVxuXG4vKipcbiAgICogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxuICAgKi9cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKipcbiogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuKi9cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICAgKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBjb2xvciBmcm9tIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAgICovXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLyoqXG4qIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cbiogYWN0aXZlL2hvdmVyIHN0YXRlLlxuKi9cbmE6YWN0aXZlLFxuYTpob3ZlciB7XG4gIG91dGxpbmU6IDA7IH1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxuKi9cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDsgfVxuXG4vKipcbiogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuKi9cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG4vKipcbiogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuKi9cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4vKipcbiogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuKiBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4qL1xuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY2NjY2N2VtIDA7IH1cblxuLyoqXG4gICAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXG4gICAqL1xubWFyayB7XG4gIGJhY2tncm91bmQ6ICNmZjA7XG4gIGNvbG9yOiAjMDAwOyB9XG5cbi8qKlxuKiBBZGRyZXNzIGluY29uc2lzdGVudCBhbmQgdmFyaWFibGUgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiovXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlOyB9XG5cbi8qKlxuKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTsgfVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07IH1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICAgKiBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS8xMC5cbiAgICovXG5pbWcge1xuICBib3JkZXI6IDA7IH1cblxuLyoqXG4gICAqIENvcnJlY3Qgb3ZlcmZsb3cgbm90IGhpZGRlbiBpbiBJRSA5LzEwLzExLlxuICAgKi9cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gICAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLlxuICAgKi9cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7IH1cblxuLyoqXG4qIEFkZHJlc3MgZGlmZmVyZW5jZXMgYmV0d2VlbiBGaXJlZm94IGFuZCBvdGhlciBicm93c2Vycy5cbiovXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7IH1cblxuLyoqXG4qIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxuKi9cbnByZSB7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi8qKlxuKiBBZGRyZXNzIG9kZCBgZW1gLXVuaXQgZm9udCBzaXplIHJlbmRlcmluZyBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMWVtOyB9XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4qIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4qIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cbiovXG4vKipcbiogMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkLlxuKiAgICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiogMi4gQ29ycmVjdCBmb250IHByb3BlcnRpZXMgbm90IGJlaW5nIGluaGVyaXRlZC5cbiogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4qL1xuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDtcbiAgLyogMiAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDMgKi8gfVxuXG4vKipcbiAgICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuXG4gICAqL1xuYnV0dG9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7IH1cblxuLyoqXG4qIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiogQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy5cbiogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS5cbiogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxuKi9cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyB9XG5cbi8qKlxuKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxuKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4qL1xuYnV0dG9uLFxuaHRtbCBpbnB1dFt0eXBlPSdidXR0b24nXSxcbmlucHV0W3R5cGU9J3Jlc2V0J10sXG5pbnB1dFt0eXBlPSdzdWJtaXQnXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAvKiAyICovXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLyogMyAqLyB9XG5cbi8qKlxuKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuKi9cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG4vKipcbiogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLlxuKi9cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbi8qKlxuKiBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXG4qIHRoZSBVQSBzdHlsZXNoZWV0LlxuKi9cbmlucHV0IHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsgfVxuXG4vKipcbiAgICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxuICAgKiBGaXJlZm94J3MgaW1wbGVtZW50YXRpb24gZG9lc24ndCByZXNwZWN0IGJveC1zaXppbmcsIHBhZGRpbmcsIG9yIHdpZHRoLlxuICAgKlxuICAgKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxuICAgKiAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLlxuICAgKi9cbmlucHV0W3R5cGU9J2NoZWNrYm94J10sXG5pbnB1dFt0eXBlPSdyYWRpbyddIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLyoqXG4qIEZpeCB0aGUgY3Vyc29yIHN0eWxlIGZvciBDaHJvbWUncyBpbmNyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnMuIEZvciBjZXJ0YWluXG4qIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXG4qIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbiovXG5pbnB1dFt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9J251bWJlciddOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvOyB9XG5cbi8qKlxuKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiogMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiovXG5pbnB1dFt0eXBlPSdzZWFyY2gnXSB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyB9XG5cbi8qKlxuKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cbiogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXG4qL1xuaW5wdXRbdHlwZT0nc2VhcmNoJ106Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG4vKipcbiogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLlxuKi9cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgbWFyZ2luOiAwIDJweDtcbiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtOyB9XG5cbi8qKlxuKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG4qIDIuIFJlbW92ZSBwYWRkaW5nIHNvIHBlb3BsZSBhcmVuJ3QgY2F1Z2h0IG91dCBpZiB0aGV5IHplcm8gb3V0IGZpZWxkc2V0cy5cbiovXG5sZWdlbmQge1xuICBib3JkZXI6IDA7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICAgKiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLlxuICAgKi9cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuLyoqXG4qIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cbiogTk9URTogdGhlIGRlZmF1bHQgY2Fubm90IHNhZmVseSBiZSBjaGFuZ2VkIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFguXG4qL1xub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG4vKiBUYWJsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuKi9cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7IH1cblxuLm9sZC1icm93c2VycyB7XG4gIHotaW5kZXg6IDk5OTk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgY29sb3I6IGJsYWNrO1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDsgfVxuICAub2xkLWJyb3dzZXJzIGgyIHtcbiAgICBwYWRkaW5nOiAyMHB4IDAgMjBweCAwOyB9XG4gIC5vbGQtYnJvd3NlcnMgcCwgLm9sZC1icm93c2VycyB1bCB7XG4gICAgbWFyZ2luOiAwIGF1dG87IH1cbiAgLm9sZC1icm93c2VycyBwIHtcbiAgICBtYXgtd2lkdGg6IDcwMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA1MHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsgfVxuICAub2xkLWJyb3dzZXJzIHVsIGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogMCAyNXB4OyB9XG4gICAgLm9sZC1icm93c2VycyB1bCBsaSBpbWcge1xuICAgICAgd2lkdGg6IDExNXB4OyB9XG4gICAgLm9sZC1icm93c2VycyB1bCBsaSBwIHtcbiAgICAgIHBhZGRpbmctdG9wOiAxNXB4O1xuICAgICAgY29sb3I6ICMyNDlBRTE7IH1cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG4vKiAgU3ludGF4IFF1aWNrIFJlZmVyZW5jZVxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBjb2x1bW4oJHJhdGlvczogMSwgJG9mZnNldDogMCwgJGN5Y2xlOiAwLCAkdW5jeWNsZTogMCwgJGd1dHRlcjogJGplZXQtZ3V0dGVyKVxuICBzcGFuKCRyYXRpbzogMSwgJG9mZnNldDogMClcbiAgc2hpZnQoJHJhdGlvczogMCwgJGNvbF9vcl9zcGFuOiBjb2x1bW4sICRndXR0ZXI6ICRqZWV0LWd1dHRlcilcbiAgdW5zaGlmdCgpXG4gIGVkaXQoKVxuICBjZW50ZXIoJG1heF93aWR0aDogMTQxMHB4LCAkcGFkOiAwKVxuICBzdGFjaygkcGFkOiAwLCAkYWxpZ246IGZhbHNlKVxuICB1bnN0YWNrKClcbiAgYWxpZ24oJGRpcmVjdGlvbjogYm90aClcbiAgY2YoKVxuKi9cbi8qKlxuICogR3JpZCBzZXR0aW5ncy5cbiAqIEFsbCB2YWx1ZXMgYXJlIGRlZmF1bHRzIGFuZCBjYW4gdGhlcmVmb3JlIGJlIGVhc2lseSBvdmVyaWRkZW4uXG4gKi9cbi8qKlxuICogTGlzdCBmdW5jdGlvbnMgY291cnRlc3kgb2YgdGhlIHdvbmRlcmZ1bCBmb2xrcyBhdCBUZWFtIFNhc3MuXG4gKiBDaGVjayBvdXQgdGhlaXIgYXdlc29tZSBncmlkOiBTaW5ndWxhcml0eS5cbiAqL1xuLyoqXG4gKiBHZXQgIHBlcmNlbnRhZ2UgZnJvbSBhIGdpdmVuIHJhdGlvLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW89MV0gLSBUaGUgY29sdW1uIHJhdGlvIG9mIHRoZSBlbGVtZW50LlxuICogQHJldHVybnMge251bWJlcn0gLSBUaGUgcGVyY2VudGFnZSB2YWx1ZS5cbiAqL1xuLyoqXG4gKiBXb3JrIG91dCB0aGUgY29sdW1uIHdpZHRocyBiYXNlZCBvbiB0aGUgcmF0aW8gYW5kIGd1dHRlciBzaXplcy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHJhdGlvcz0xXSAtIFRoZSBjb2x1bW4gcmF0aW8gb2YgdGhlIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRndXR0ZXI9JGplZXQtZ3V0dGVyXSAtIFRoZSBndXR0ZXIgZm9yIHRoZSBjb2x1bW4uXG4gKiBAcmV0dXJucyB7bGlzdH0gJHdpZHRoICRndXR0ZXIgLSBBIGxpc3QgY29udGFpbmluZyB0aGUgd2l0aCBhbmQgZ3V0dGVyIGZvciB0aGUgZWxlbWVudC5cbiAqL1xuLyoqXG4gKiBHZXQgdGhlIHNldCBsYXlvdXQgZGlyZWN0aW9uIGZvciB0aGUgcHJvamVjdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9ICRkaXJlY3Rpb24gLSBUaGUgbGF5b3V0IGRpcmVjdGlvbi5cbiAqL1xuLyoqXG4gKiBSZXBsYWNlIGEgc3BlY2lmaWVkIGxpc3QgdmFsdWUgd2l0aCBhIG5ldyB2YWx1ZSAodXNlcyBidWlsdCBpbiBzZXQtbnRoKCkgaWYgYXZhaWxhYmxlKVxuICogQHBhcmFtIHtsaXN0fSAkbGlzdCAtIFRoZSBsaXN0IG9mIHZhbHVlcyB5b3Ugd2FudCB0byBhbHRlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSAkaW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGxpc3QgaXRlbSB5b3Ugd2FudCB0byByZXBsYWNlLlxuICogQHBhcmFtIHsqfSAkdmFsdWUgLSBUaGUgdmFsdWUgeW91IHdhbnQgdG8gcmVwbGFjZSAkaW5kZXggd2l0aC5cbiAqIEByZXR1cm5zIHtsaXN0fSAkbGlzdCAtIFRoZSBsaXN0IHdpdGggdGhlIHZhbHVlIHJlcGxhY2VkIG9yIHJlbW92ZWQuXG4gKiBAd2FybiBpZiBhbiBpbnZhbGlkIGluZGV4IGlzIHN1cHBsaWVkLlxuICovXG4vKipcbiAqIFJldmVyc2UgYSBsaXN0IChwcm9ncmVzc2l2ZWx5IGVuaGFuY2VkIGZvciBTYXNzIDMuMylcbiAqIEBwYXJhbSB7bGlzdH0gJGxpc3QgLSBUaGUgbGlzdCBvZiB2YWx1ZXMgeW91IHdhbnQgdG8gcmV2ZXJzZS5cbiAqIEByZXR1cm5zIHtsaXN0fSAkcmVzdWx0IC0gVGhlIHJldmVyc2VkIGxpc3QuXG4gKi9cbi8qKlxuICogR2V0IHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gYSBnaXZlbiB2YWx1ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAkZGlyIC0gVGhlIGRpcmVjdGlvbiB5b3Ugd2FudCB0aGUgb3Bwb3NpdGUgb2YuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gJGRpci5cbiAqIEB3YXJuIGlmIGFuIGluY29ycmVjdCBzdHJpbmcgaXMgcHJvdmlkZWQuXG4gKi9cbi8qKlxuICogU3R5bGUgYW4gZWxlbWVudCBhcyBhIGNvbHVtbiB3aXRoIGEgZ3V0dGVyLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gWyRvZmZzZXQ9MF0gLSBBIG9mZnNldCBzcGVjaWZpZWQgYXMgYSBmcmFjdGlvbiAoc2VlICRyYXRpb3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IFskY3ljbGU9MF0gLSBFYXNpbHkgY3JlYXRlIGFuIG50aCBjb2x1bW4gZ3JpZCB3aGVyZSAkY3ljbGUgZXF1YWxzIHRoZSBudW1iZXIgb2YgY29sdW1ucy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHVuY3ljbGU9MF0gLSBVbmRvIGEgcHJldmlvdXMgY3ljbGUgdmFsdWUgdG8gYWxsb3cgZm9yIGEgbmV3IG9uZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJGd1dHRlcj0kamVldC1ndXR0ZXJdIC0gU3BlY2lmeSB0aGUgZ3V0dGVyIHdpZHRoIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY29udGFpbmVycyB3aWR0aC5cbiAqL1xuLyoqXG4gKiBBbiBhbGlhcyBmb3IgdGhlIGNvbHVtbiBtaXhpbi5cbiAqIEBwYXJhbSBbJGFyZ3MuLi5dIC0gQWxsIGFyZ3VtZW50cyBnZXQgcGFzc2VkIHRocm91Z2ggdG8gY29sdW1uKCkuXG4gKi9cbi8qKlxuICogR2V0IHRoZSB3aWR0aCBvZiBhIGNvbHVtbiBhbmQgbm90aGluZyBlbHNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gWyRndXR0ZXI9JGplZXQtZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbi8qKlxuICogR2V0IHRoZSBndXR0ZXIgc2l6ZSBvZiBhIGNvbHVtbiBhbmQgbm90aGluZyBlbHNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtyYXRpb3M9MV0gLSBBIHdpZHRoIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXIgYXMgYSBmcmFjdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZ3V0dGVyPWplZXQuZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbi8qKlxuICogQW4gYWxpYXMgZm9yIHRoZSBjb2x1bW4td2lkdGggZnVuY3Rpb24uXG4gKiBAcGFyYW0gWyRhcmdzLi4uXSAtIEFsbCBhcmd1bWVudHMgZ2V0IHBhc3NlZCB0aHJvdWdoIHRvIGNvbHVtbigpLlxuICovXG4vKipcbiAqIEFuIGFsaWFzIGZvciB0aGUgY29sdW1uLWd1dHRlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBbJGFyZ3MuLi5dIC0gQWxsIGFyZ3VtZW50cyBnZXQgcGFzc2VkIHRocm91Z2ggdG8gY29sdW1uKCkuXG4gKi9cbi8qKlxuICogU3R5bGUgYW4gZWxlbWVudCBhcyBhIGNvbHVtbiB3aXRob3V0IGFueSBndXR0ZXJzIGZvciBhIHNlYW1sZXNzIHJvdy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHJhdGlvcz0xXSAtIEEgd2lkdGggcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5lciBhcyBhIGZyYWN0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFskb2Zmc2V0PTBdIC0gQSBvZmZzZXQgc3BlY2lmaWVkIGFzIGEgZnJhY3Rpb24gKHNlZSAkcmF0aW9zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbY3ljbGU9MF0gLSBFYXNpbHkgY3JlYXRlIGFuIG50aCBjb2x1bW4gZ3JpZCB3aGVyZSBjeWNsZSBlcXVhbHMgdGhlIG51bWJlciBvZiBjb2x1bW5zLlxuICogQHBhcmFtIHtudW1iZXJ9IFt1bmN5Y2xlPTBdIC0gVW5kbyBhIHByZXZpb3VzIGN5Y2xlIHZhbHVlIHRvIGFsbG93IGZvciBhIG5ldyBvbmUuXG4gKi9cbi8qKlxuICogUmVvcmRlciBjb2x1bW5zIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIEhUTUwuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRyYXRpb3M9MF0gLSBTcGVjaWZ5IGhvdyBmYXIgYWxvbmcgeW91IHdhbnQgdGhlIGVsZW1lbnQgdG8gbW92ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbJGNvbC1vci1zcGFuPWNvbHVtbl0gLSBTcGVjaWZ5IHdoZXRoZXIgdGhlIGVsZW1lbnQgaGFzIGEgZ3V0dGVyIG9yIG5vdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJGd1dHRlcj0kamVldC1ndXR0ZXJdIC0gU3BlY2lmeSB0aGUgZ3V0dGVyIHdpZHRoIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY29udGFpbmVycyB3aWR0aC5cbiAqL1xuLyoqXG4gKiBSZXNldCBhbiBlbGVtZW50IHRoYXQgaGFzIGhhZCBzaGlmdCgpIGFwcGxpZWQgdG8gaXQuXG4gKi9cbi8qKlxuICogVmlldyB0aGUgZ3JpZCBhbmQgaXRzIGxheWVycyBmb3IgZWFzeSBkZWJ1Z2dpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gWyRjb2xvcj1ibGFja10gLSBUaGUgYmFja2dyb3VuZCB0aW50IGFwcGxpZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFskaW1wb3J0YW50PWZhbHNlXSAtIFdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0eWxlIGFzICFpbXBvcnRhbnQuXG4gKi9cbi8qKlxuICogIEFsaWFzIGZvciBlZGl0KCkuXG4gKi9cbi8qKlxuICogSG9yaXpvbnRhbGx5IGNlbnRlciBhbiBlbGVtZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IFskbWF4LXdpZHRoPTE0MTBweF0gLSBUaGUgbWF4IHdpZHRoIHRoZSBlbGVtZW50IGNhbiBiZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHBhZD0wXSAtIFNwZWNpZnkgdGhlIGVsZW1lbnQncyBsZWZ0IGFuZCByaWdodCBwYWRkaW5nLlxuICovXG4vKipcbiAqIFVuY2VudGVyIGFuIGVsZW1lbnQuXG4gKi9cbi8qKlxuICogU3RhY2sgYW4gZWxlbWVudCBzbyB0aGF0IG5vdGhpbmcgaXMgZWl0aGVyIHNpZGUgb2YgaXQuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRwYWQ9MF0gLSBTcGVjaWZ5IHRoZSBlbGVtZW50J3MgbGVmdCBhbmQgcmlnaHQgcGFkZGluZy5cbiAqIEBwYXJhbSB7Ym9vbGVhbi9zdHJpbmd9IFskYWxpZ249ZmFsc2VdIC0gU3BlY2lmeSB0aGUgdGV4dCBhbGlnbiBmb3IgdGhlIGVsZW1lbnQuXG4gKi9cbi8qKlxuICogVW5zdGFjayBhbiBlbGVtZW50LlxuICovXG4vKipcbiAqIENlbnRlciBhbiBlbGVtZW50IG9uIGVpdGhlciBvciBib3RoIGF4ZXMuXG4gKiBAcmVxdWlyZXMgQSBwYXJlbnQgY29udGFpbmVyIHdpdGggcmVsYXRpdmUgcG9zaXRpb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gWyRkaXJlY3Rpb249Ym90aF0gLSBTcGVjaWZ5IHdoaWNoIGF4ZXMgdG8gY2VudGVyIHRoZSBlbGVtZW50IG9uLlxuICovXG4vKipcbiAqIEFwcGx5IGEgY2xlYXJmaXggdG8gYW4gZWxlbWVudC5cbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnbWlnaHR5X3plb18yLjByZWd1bGFyJztcbiAgc3JjOiB1cmwoXCIvd3AtY29udGVudC90aGVtZXMvdGVybWluYWwtbGFuY2UvZm9udHMvbWlnaHpfX18td2ViZm9udC5lb3RcIik7XG4gIHNyYzogdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6X19fLXdlYmZvbnQuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSwgdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6X19fLXdlYmZvbnQud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksIHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoel9fXy13ZWJmb250LndvZmZcIikgZm9ybWF0KFwid29mZlwiKSwgdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6X19fLXdlYmZvbnQudHRmXCIpIGZvcm1hdChcInRydWV0eXBlXCIpLCB1cmwoXCIvd3AtY29udGVudC90aGVtZXMvdGVybWluYWwtbGFuY2UvZm9udHMvbWlnaHpfX18td2ViZm9udC5zdmcjbWlnaHR5X3plb18yLjByZWd1bGFyXCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ21pZ2h0eV96ZW9fMi4wYm9sZCc7XG4gIHNyYzogdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6Yl9fLXdlYmZvbnQuZW90XCIpO1xuICBzcmM6IHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemJfXy13ZWJmb250LmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemJfXy13ZWJmb250LndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLCB1cmwoXCIvd3AtY29udGVudC90aGVtZXMvdGVybWluYWwtbGFuY2UvZm9udHMvbWlnaHpiX18td2ViZm9udC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIiksIHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemJfXy13ZWJmb250LnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSwgdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6Yl9fLXdlYmZvbnQuc3ZnI21pZ2h0eV96ZW9fMi4wYm9sZFwiKSBmb3JtYXQoXCJzdmdcIik7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdtaWdodHlfemVvX2NhcHNfMi4wcmVndWxhcic7XG4gIHNyYzogdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6Y19fLXdlYmZvbnQuZW90XCIpO1xuICBzcmM6IHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemNfXy13ZWJmb250LmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemNfXy13ZWJmb250LndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLCB1cmwoXCIvd3AtY29udGVudC90aGVtZXMvdGVybWluYWwtbGFuY2UvZm9udHMvbWlnaHpjX18td2ViZm9udC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIiksIHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemNfXy13ZWJmb250LnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSwgdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6Y19fLXdlYmZvbnQuc3ZnI21pZ2h0eV96ZW9fY2Fwc18yLjByZWd1bGFyXCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ21pZ2h0eV96ZW9fY2Fwc18yLjBib2xkJztcbiAgc3JjOiB1cmwoXCIvd3AtY29udGVudC90aGVtZXMvdGVybWluYWwtbGFuY2UvZm9udHMvbWlnaHpjYl8td2ViZm9udC5lb3RcIik7XG4gIHNyYzogdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6Y2JfLXdlYmZvbnQuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSwgdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6Y2JfLXdlYmZvbnQud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksIHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemNiXy13ZWJmb250LndvZmZcIikgZm9ybWF0KFwid29mZlwiKSwgdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6Y2JfLXdlYmZvbnQudHRmXCIpIGZvcm1hdChcInRydWV0eXBlXCIpLCB1cmwoXCIvd3AtY29udGVudC90aGVtZXMvdGVybWluYWwtbGFuY2UvZm9udHMvbWlnaHpjYl8td2ViZm9udC5zdmcjbWlnaHR5X3plb19jYXBzXzIuMGJvbGRcIikgZm9ybWF0KFwic3ZnXCIpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnbWlnaHR5X3plb19jYXBzXzIuMGl0YWxpYyc7XG4gIHNyYzogdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6Y2lfLXdlYmZvbnQuZW90XCIpO1xuICBzcmM6IHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemNpXy13ZWJmb250LmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemNpXy13ZWJmb250LndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLCB1cmwoXCIvd3AtY29udGVudC90aGVtZXMvdGVybWluYWwtbGFuY2UvZm9udHMvbWlnaHpjaV8td2ViZm9udC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIiksIHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemNpXy13ZWJmb250LnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSwgdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6Y2lfLXdlYmZvbnQuc3ZnI21pZ2h0eV96ZW9fY2Fwc18yLjBpdGFsaWNcIikgZm9ybWF0KFwic3ZnXCIpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnbWlnaHR5X3plb18yLjBpdGFsaWMnO1xuICBzcmM6IHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemlfXy13ZWJmb250LmVvdFwiKTtcbiAgc3JjOiB1cmwoXCIvd3AtY29udGVudC90aGVtZXMvdGVybWluYWwtbGFuY2UvZm9udHMvbWlnaHppX18td2ViZm9udC5lb3Q/I2llZml4XCIpIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLCB1cmwoXCIvd3AtY29udGVudC90aGVtZXMvdGVybWluYWwtbGFuY2UvZm9udHMvbWlnaHppX18td2ViZm9udC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL3Rlcm1pbmFsLWxhbmNlL2ZvbnRzL21pZ2h6aV9fLXdlYmZvbnQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIvd3AtY29udGVudC90aGVtZXMvdGVybWluYWwtbGFuY2UvZm9udHMvbWlnaHppX18td2ViZm9udC50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksIHVybChcIi93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy9taWdoemlfXy13ZWJmb250LnN2ZyNtaWdodHlfemVvXzIuMGl0YWxpY1wiKSBmb3JtYXQoXCJzdmdcIik7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuXG4uZGVmYXVsdC10eXBlLCBib2R5LCBwLCBhLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LFxuc21hbGwsIGVtLCBzdHJvbmcsIGlucHV0LCBidXR0b24ge1xuICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBjb2xvcjogIzQ0NDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgfVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMXJlbSAwO1xuICBmb250LXdlaWdodDogbm9ybWFsOyB9XG4gIGgxOmZpcnN0LWNoaWxkLCBoMjpmaXJzdC1jaGlsZCwgaDM6Zmlyc3QtY2hpbGQsIGg0OmZpcnN0LWNoaWxkLCBoNTpmaXJzdC1jaGlsZCwgaDY6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDA7IH1cbiAgaDEgYSwgaDIgYSwgaDMgYSwgaDQgYSwgaDUgYSwgaDYgYSB7XG4gICAgY29sb3I6IGluaGVyaXQ7IH1cblxuaDEge1xuICBmb250LXNpemU6IGNhbGMoMzZweCArIDIwICogKCgxMDB2dyAtIDQyMHB4KSAvIDYwNCkpOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyMHB4KSB7XG4gICAgaDEge1xuICAgICAgZm9udC1zaXplOiAzNnB4OyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICAgaDEge1xuICAgICAgZm9udC1zaXplOiA1NnB4OyB9IH1cblxuaDIge1xuICBmb250LXNpemU6IGNhbGMoMzZweCArIDEyICogKCgxMDB2dyAtIDQyMHB4KSAvIDYwNCkpOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyMHB4KSB7XG4gICAgaDIge1xuICAgICAgZm9udC1zaXplOiAzNnB4OyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICAgaDIge1xuICAgICAgZm9udC1zaXplOiA0OHB4OyB9IH1cblxuaDMge1xuICBmb250LXNpemU6IGNhbGMoMzBweCArIDYgKiAoKDEwMHZ3IC0gNDIwcHgpIC8gNjA0KSk7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDIwcHgpIHtcbiAgICBoMyB7XG4gICAgICBmb250LXNpemU6IDMwcHg7IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgICBoMyB7XG4gICAgICBmb250LXNpemU6IDM2cHg7IH0gfVxuXG5oNCB7XG4gIGZvbnQtc2l6ZTogY2FsYygyNHB4ICsgNiAqICgoMTAwdncgLSA0MjBweCkgLyA2MDQpKTsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjBweCkge1xuICAgIGg0IHtcbiAgICAgIGZvbnQtc2l6ZTogMjRweDsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAgIGg0IHtcbiAgICAgIGZvbnQtc2l6ZTogMzBweDsgfSB9XG5cbmg1IHtcbiAgZm9udC1zaXplOiBjYWxjKDIwcHggKyA0ICogKCgxMDB2dyAtIDQyMHB4KSAvIDYwNCkpOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyMHB4KSB7XG4gICAgaDUge1xuICAgICAgZm9udC1zaXplOiAyMHB4OyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICAgaDUge1xuICAgICAgZm9udC1zaXplOiAyNHB4OyB9IH1cblxuaDYge1xuICBmb250LXNpemU6IGNhbGMoMThweCArIDIgKiAoKDEwMHZ3IC0gNDIwcHgpIC8gNjA0KSk7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDIwcHgpIHtcbiAgICBoNiB7XG4gICAgICBmb250LXNpemU6IDE4cHg7IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgICBoNiB7XG4gICAgICBmb250LXNpemU6IDIwcHg7IH0gfVxuXG5wLCB1bCwgbGksIG9sIHtcbiAgZm9udC1zaXplOiBjYWxjKDE1cHggKyAzICogKCgxMDB2dyAtIDQyMHB4KSAvIDQ4MCkpOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyMHB4KSB7XG4gICAgcCwgdWwsIGxpLCBvbCB7XG4gICAgICBmb250LXNpemU6IDE1cHg7IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkge1xuICAgIHAsIHVsLCBsaSwgb2wge1xuICAgICAgZm9udC1zaXplOiAxOHB4OyB9IH1cblxuLnBhZ2UtbWFpbiBoMSB7XG4gIGZvbnQtc2l6ZTogY2FsYygyMnB4ICsgMiAqICgoMTAwdncgLSA0MjBweCkgLyA2MDQpKTsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjBweCkge1xuICAgIC5wYWdlLW1haW4gaDEge1xuICAgICAgZm9udC1zaXplOiAyMnB4OyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICAgLnBhZ2UtbWFpbiBoMSB7XG4gICAgICBmb250LXNpemU6IDI0cHg7IH0gfVxuXG4ucGFnZS1tYWluIGgyIHtcbiAgZm9udC1zaXplOiBjYWxjKDIwcHggKyAyICogKCgxMDB2dyAtIDQyMHB4KSAvIDYwNCkpOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyMHB4KSB7XG4gICAgLnBhZ2UtbWFpbiBoMiB7XG4gICAgICBmb250LXNpemU6IDIwcHg7IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgICAucGFnZS1tYWluIGgyIHtcbiAgICAgIGZvbnQtc2l6ZTogMjJweDsgfSB9XG5cbi5wYWdlLW1haW4gaDMge1xuICBmb250LXNpemU6IGNhbGMoMThweCArIDIgKiAoKDEwMHZ3IC0gNDIwcHgpIC8gNjA0KSk7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDIwcHgpIHtcbiAgICAucGFnZS1tYWluIGgzIHtcbiAgICAgIGZvbnQtc2l6ZTogMThweDsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAgIC5wYWdlLW1haW4gaDMge1xuICAgICAgZm9udC1zaXplOiAyMHB4OyB9IH1cblxuLnBhZ2UtbWFpbiBoNCB7XG4gIGZvbnQtc2l6ZTogY2FsYygxNnB4ICsgMiAqICgoMTAwdncgLSA0MjBweCkgLyA2MDQpKTsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjBweCkge1xuICAgIC5wYWdlLW1haW4gaDQge1xuICAgICAgZm9udC1zaXplOiAxNnB4OyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICAgLnBhZ2UtbWFpbiBoNCB7XG4gICAgICBmb250LXNpemU6IDE4cHg7IH0gfVxuXG4ucGFnZS1tYWluIGg1IHtcbiAgZm9udC1zaXplOiBjYWxjKDE2cHggKyAyICogKCgxMDB2dyAtIDQyMHB4KSAvIDYwNCkpOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyMHB4KSB7XG4gICAgLnBhZ2UtbWFpbiBoNSB7XG4gICAgICBmb250LXNpemU6IDE2cHg7IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgICAucGFnZS1tYWluIGg1IHtcbiAgICAgIGZvbnQtc2l6ZTogMThweDsgfSB9XG5cbi5wYWdlLW1haW4gaDYge1xuICBmb250LXNpemU6IGNhbGMoMTZweCArIDIgKiAoKDEwMHZ3IC0gNDIwcHgpIC8gNjA0KSk7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDIwcHgpIHtcbiAgICAucGFnZS1tYWluIGg2IHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAgIC5wYWdlLW1haW4gaDYge1xuICAgICAgZm9udC1zaXplOiAxOHB4OyB9IH1cblxuLnBhZ2UtbWFpbiBwLCAucGFnZS1tYWluIHVsLCAucGFnZS1tYWluIGxpLCAucGFnZS1tYWluIG9sIHtcbiAgZm9udC1zaXplOiBjYWxjKDE0cHggKyAyICogKCgxMDB2dyAtIDQyMHB4KSAvIDQ4MCkpOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyMHB4KSB7XG4gICAgLnBhZ2UtbWFpbiBwLCAucGFnZS1tYWluIHVsLCAucGFnZS1tYWluIGxpLCAucGFnZS1tYWluIG9sIHtcbiAgICAgIGZvbnQtc2l6ZTogMTRweDsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSB7XG4gICAgLnBhZ2UtbWFpbiBwLCAucGFnZS1tYWluIHVsLCAucGFnZS1tYWluIGxpLCAucGFnZS1tYWluIG9sIHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDsgfSB9XG5cbnAge1xuICBsaW5lLWhlaWdodDogMS41ZW07XG4gIG1hcmdpbjogMWVtIDA7IH1cblxuYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuXG4ubWF4LWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgYmFja2dyb3VuZDogI0ZGRjtcbiAgd2lkdGg6IGF1dG87XG4gIG1heC13aWR0aDogMTYwMHB4O1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgYm9yZGVyLXRvcDogbm9uZTtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTsgfVxuICAubWF4LWNvbnRhaW5lcjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogdGFibGU7IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLm1heC1jb250YWluZXIge1xuICAgICAgYm9yZGVyOiBub25lOyB9IH1cblxuLmNvbnRhaW5lciB7XG4gIHdpZHRoOiBhdXRvO1xuICBtYXgtd2lkdGg6IDE0NDBweDtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDIwcHg7IH1cbiAgLmNvbnRhaW5lcjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogdGFibGU7IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLmNvbnRhaW5lciB7XG4gICAgICBwYWRkaW5nOiAwIDQlOyB9IH1cblxuLndwLWNhcHRpb24sXG4uYWxpZ25jZW50ZXIge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbi5pbm5lci1jb250YWluZXIge1xuICB3aWR0aDogNzAlO1xuICBtYXJnaW46IDAgYXV0bzsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAuaW5uZXItY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZzogMCA0JTsgfSB9XG5cbi5jZjphZnRlciB7XG4gIGNsZWFyOiBib3RoO1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogdGFibGU7IH1cblxuLmxvbmctYWRzcGFjZSBpbWcge1xuICB3aWR0aDogYXV0bztcbiAgbWFyZ2luOiAwIGF1dG87IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDYzOXB4KSB7XG4gICAgLmxvbmctYWRzcGFjZSBpbWcge1xuICAgICAgd2lkdGg6IDEwMCU7IH0gfVxuXG4uYWR2LXdpZGdldCB7XG4gIHBhZGRpbmc6IDAuNjI1cmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4qLFxuKjpiZWZvcmUsXG4qOmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDsgfVxuXG5idXR0b24sXG5pbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBmb250OiBpbmhlcml0O1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgd2lkdGg6IGF1dG87IH1cbiAgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuICBpbnB1dFt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwOyB9XG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMDsgfVxuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbnRleHRhcmVhIHtcbiAgcmVzaXplOiB2ZXJ0aWNhbDsgfVxuXG5pbWcsXG52aWRlbyB7XG4gIGhlaWdodDogYXV0bztcbiAgbWF4LXdpZHRoOiAxMDAlOyB9XG5cbnA6Zmlyc3Qtb2YtdHlwZSB7XG4gIG1hcmdpbi10b3A6IDA7IH1cblxucDpsYXN0LW9mLXR5cGUge1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbmEsXG5sYWJlbCxcbnNlbGVjdCxcbm9wdGlvbixcbmJ1dHRvbiB7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG5pbnB1dCB7XG4gIG91dGxpbmU6IG5vbmU7IH1cblxuY29kZSB7XG4gIHBhZGRpbmc6IDNweCA0cHg7XG4gIGNvbG9yOiAjREY1QzMzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjVGNUY1O1xuICBib3JkZXI6IDFweCBzb2xpZCAjRTFFMUU4O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBtb25vc3BhY2U7IH1cblxucHJlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDdweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcbiAgYm9yZGVyOiAxcHggc29saWQgI0UxRTFFODtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgZm9udC1mYW1pbHk6IE1lbmxvLCBNb25hY28sIG1vbm9zcGFjZTtcbiAgbGluZS1oZWlnaHQ6IDE2MCU7IH1cblxuaHIge1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMS41ZW0gMDsgfVxuXG5uYXYgdWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7IH1cbiAgbmF2IHVsIGxpIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7IH1cblxudWwudGV4dCB7XG4gIG1hcmdpbjogLjMycmVtIC45NHJlbTtcbiAgcGFkZGluZy1sZWZ0OiAxcmVtOyB9XG4gIHVsLnRleHQgbGkge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiAgICBwYWRkaW5nOiAuMTI1cmVtIDA7IH1cblxub2wudGV4dCB7XG4gIG1hcmdpbjogLjMycmVtIC45NHJlbTtcbiAgcGFkZGluZy1sZWZ0OiAxcmVtOyB9XG4gIG9sLnRleHQgbGkge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogZGVjaW1hbDtcbiAgICBwYWRkaW5nOiAuMTI1cmVtIDA7IH1cblxudWwudGV4dCB1bCwgdWwudGV4dCBvbCwgb2wudGV4dCBvbCwgb2wudGV4dCB1bCB7XG4gIG1hcmdpbjogLjNyZW0gMXJlbSAwOyB9XG5cbiosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDsgfVxuXG4jd3BhZG1pbmJhciB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLmVycm9yLXdyYXAge1xuICBwYWRkaW5nOiAyMHZoIDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAuZXJyb3Itd3JhcCBoMSwgLmVycm9yLXdyYXAgaDIge1xuICAgIGZvbnQtZmFtaWx5OiBcIm1pZ2h0eV96ZW9fMi4wYm9sZFwiOyB9XG4gIC5lcnJvci13cmFwIGgxIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgZm9udC1zaXplOiAxMDBweDsgfVxuICAuZXJyb3Itd3JhcCBoMiB7XG4gICAgbWFyZ2luOiAwIDAgNTBweDsgfVxuICAuZXJyb3Itd3JhcCAuYnRuIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDI3MjM0OyB9XG4gICAgLmVycm9yLXdyYXAgLmJ0bjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGM1NzI5OyB9XG5cbi5jb21pYy1uYXYge1xuICBvdmVyZmxvdzogYXV0bztcbiAgem9vbTogMTtcbiAgcGFkZGluZzogMC42MjVyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhDOEM4QzsgfVxuICAuY29taWMtbmF2IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbiAgICAuY29taWMtbmF2IGxpIGEge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogNC42ODc1cmVtO1xuICAgICAgaGVpZ2h0OiA0LjY4NzVyZW07XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDgwJTtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIGVhc2UtaW4tb3V0IC4yczsgfVxuICAgICAgLmNvbWljLW5hdiBsaSBhOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiA5MCU7IH1cbiAgICAuY29taWMtbmF2IGxpOm50aC1jaGlsZCgxKSBhIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWcvbmF2L2ZpcnN0LnBuZyk7IH1cbiAgICAuY29taWMtbmF2IGxpOm50aC1jaGlsZCgyKSBhIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWcvbmF2L3ByZXYucG5nKTsgfVxuICAgIC5jb21pYy1uYXYgbGk6bnRoLWNoaWxkKDMpIGEge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltZy9uYXYvcmFuZG9tMi5wbmcpOyB9XG4gICAgLmNvbWljLW5hdiBsaTpudGgtY2hpbGQoNCkgYSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1nL25hdi9uZXh0LnBuZyk7IH1cbiAgICAuY29taWMtbmF2IGxpOm50aC1jaGlsZCg1KSBhIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWcvbmF2L2xhc3QucG5nKTsgfVxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MzlweCkge1xuICAgICAgLmNvbWljLW5hdiBsaSB7XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICB6b29tOiAxO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICAgIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwJTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwJTsgfVxuICAgICAgICAuY29taWMtbmF2IGxpIGEge1xuICAgICAgICAgIHdpZHRoOiAxMDAlOyB9IH1cblxuYS5idG4sXG5idXR0b24sXG5pbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSB7XG4gIHBhZGRpbmc6IDEwcHggMjJweDtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBkZWVwc2t5Ymx1ZTtcbiAgY29sb3I6ICNGRkY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm9yZGVyOiBub25lO1xuICB0cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2U7IH1cbiAgYS5idG46aG92ZXIsXG4gIGJ1dHRvbjpob3ZlcixcbiAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpob3ZlcixcbiAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTpob3ZlcixcbiAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5OWNjOyB9XG5cbmZvcm0ge1xuICBtYXJnaW46IDEuNTYyNXJlbSAwO1xuICB3aWR0aDogMTAwJTsgfVxuICBmb3JtIGlucHV0Om5vdChbdHlwZT1cInN1Ym1pdFwiXSksIGZvcm0gdGV4dGFyZWEsIGZvcm0gc2VsZWN0IHtcbiAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjYyNXJlbTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IDAuMDYyNXJlbSBzb2xpZCBHYWluc2Jvcm87XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXIgZWFzZS1pbi1vdXQgLjNzOyB9XG4gICAgZm9ybSBpbnB1dDpub3QoW3R5cGU9XCJzdWJtaXRcIl0pOmZvY3VzLCBmb3JtIHRleHRhcmVhOmZvY3VzLCBmb3JtIHNlbGVjdDpmb2N1cyB7XG4gICAgICBib3JkZXItY29sb3I6IGRlZXBTa3lCbHVlICFpbXBvcnRhbnQ7IH1cbiAgICBmb3JtIGlucHV0Om5vdChbdHlwZT1cInN1Ym1pdFwiXSkuaW52YWxpZCwgZm9ybSB0ZXh0YXJlYS5pbnZhbGlkLCBmb3JtIHNlbGVjdC5pbnZhbGlkIHtcbiAgICAgIGJvcmRlci1jb2xvcjogcmVkOyB9XG5cbi5oZXJvLWJnIHtcbiAgcGFkZGluZzogMy4xMjVyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDY1dmg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNDNEM0QzQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIC5oZXJvLWJnLmhhcy1jb21pYyB7XG4gICAgaGVpZ2h0OiBhdXRvOyB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC5oZXJvLWJnIHtcbiAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgIGhlaWdodDogNDV2aDsgfSB9XG5cbi5oZXJvIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHdpZHRoOiA3MCU7XG4gIG1heC13aWR0aDogNTYuMjVyZW07XG4gIGhlaWdodDogYXV0bztcbiAgYm94LXNoYWRvdzogMCA4cHggMTZweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwgMCA2cHggMjBweCAwIHJnYmEoMCwgMCwgMCwgMC4xOSkgIWltcG9ydGFudDsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAuaGVybyB7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbi5hdXRob3ItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAwLjMxMjVyZW0gMDtcbiAgaGVpZ2h0OiA0LjM3NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjtcbiAgb3ZlcmZsb3c6IHZpc2libGU7IH1cbiAgLmF1dGhvci1jb250YWluZXIgLmlubmVyLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC5hdXRob3ItY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfSB9XG5cbi5hdXRob3ItcHJvZmlsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAtMThweDtcbiAgd2lkdGg6IDYuMjVyZW07XG4gIGhlaWdodDogNi4yNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDAuNzVyZW0gc29saWQgIzIyMjsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAuYXV0aG9yLXByb2ZpbGUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHdpZHRoOiA0LjY4NzVyZW07XG4gICAgICBoZWlnaHQ6IDQuNjg3NXJlbTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG4gICAgICBib3JkZXI6IDAuMzc1cmVtIHNvbGlkICNGRkY7IH0gfVxuXG4uYXV0aG9yLWluZm8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsb2F0OiBsZWZ0O1xuICBtYXJnaW4tbGVmdDogNy4xODc1cmVtOyB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC5hdXRob3ItaW5mbyB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIG1hcmdpbjogYXV0bzsgfSB9XG5cbi5hdXRob3ItdHdpdHRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0b3A6IDNweDtcbiAgd2lkdGg6IDI1cHg7XG4gIGhlaWdodDogMjVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbiAgYm9yZGVyLXJhZGl1czogNTAlOyB9XG4gIC5hdXRob3ItdHdpdHRlciBzdmcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDE1cHg7XG4gICAgd2lkdGg6IDE1cHg7XG4gICAgdG9wOiA1cHg7XG4gICAgbGVmdDogNXB4O1xuICAgIGZpbGw6ICMyMjI7IH1cblxuLmF1dGhvci1uYW1lLCAuYXV0aG9yLXRpdGxlLCAuc2hhcmVzIHtcbiAgY29sb3I6ICNGRkY7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4uYXV0aG9yLW5hbWUsIC5zaGFyZXMge1xuICBtYXJnaW46IDBweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuXG4uc2hhcmVzIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDAuOTM3NXJlbTtcbiAgcGFkZGluZy10b3A6IDAuMTg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAuc2hhcmVzIHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi10b3A6IDAuMzEyNXJlbTtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsgfVxuXG4uYXV0aG9yLXJpZ2h0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAuYXV0aG9yLXJpZ2h0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4ubWFzaHNiLWNvbnRhaW5lciB7XG4gIHBhZGRpbmctdG9wOiA0cHg7XG4gIHBhZGRpbmctYm90dG9tOiAwOyB9XG5cbi5tYXNoLW1lZGl1bSB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxuXG4ubWFzaHNiY291bnQge1xuICBtYXJnaW46IDEycHggMCA2cHg7XG4gIGZvbnQtc2l6ZTogNDVweDtcbiAgY29sb3I6ICNGRkY7IH1cblxuLm1hc2hzYi1zaGFyZXRleHQge1xuICBjb2xvcjogI0ZGRjsgfVxuXG4ubWFzaHNiLWJ1dHRvbnMge1xuICBmbG9hdDogbGVmdDsgfVxuXG4ubWFzaHNiLWJ1dHRvbnMgYSB7XG4gIHdpZHRoOiA1MHB4OyB9XG5cbi5tYXNoc2ItYnV0dG9ucyAubWFzaC1tZWRpdW0ge1xuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDEycHggIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbiAgYm9yZGVyLXJhZGl1czogNTAlOyB9XG4gIC5tYXNoc2ItYnV0dG9ucyAubWFzaC1tZWRpdW0gc3BhbjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMjVweCAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjMjIyOyB9XG5cbi5tYXNoaWNvbi1mYWNlYm9vayB7XG4gIG1hcmdpbi1yaWdodDogOHB4ICFpbXBvcnRhbnQ7IH1cblxuLnNoYWRvdy10b3Age1xuICBib3gtc2hhZG93OiBpbnNldCAwIDIwcHggMjBweCAtMjBweCByZ2JhKDM0LCAzNCwgMzQsIDAuNik7IH1cblxuZm9vdGVyIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHpvb206IDE7IH1cblxuLnRvcC1mb290ZXIge1xuICBtYXJnaW4tYm90dG9tOiAwLjYyNXJlbTtcbiAgcGFkZGluZzogMS41NjI1cmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLmJvdHRvbS1mb290ZXIge1xuICBwYWRkaW5nOiAwLjYyNXJlbSAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjQzRDNEM0O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cbiAgLmJvdHRvbS1mb290ZXIgLmNvcHlyaWdodCB7XG4gICAgbWFyZ2luLXRvcDogMC42MjVyZW07XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTsgfVxuXG5oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgaGVhZGVyIC5sb2dvIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbiAgICBoZWFkZXIgLmxvZ28gc3ZnIHtcbiAgICAgIG1hcmdpbjogMS41NjI1cmVtIDA7XG4gICAgICB3aWR0aDogMTguNzVyZW07IH1cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgICAgICBoZWFkZXIgLmxvZ28gc3ZnIHtcbiAgICAgICAgICBoZWlnaHQ6IDUwcHg7IH0gfVxuICBoZWFkZXIgYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAwLjMxMjVyZW0gMC42MjVyZW07IH1cbiAgICBoZWFkZXIgYnV0dG9uIHN2ZyB7XG4gICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgIHdpZHRoOiAyLjVyZW07IH1cbiAgaGVhZGVyIHVsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjU2MjVyZW07IH1cbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgIGhlYWRlciB1bCB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgei1pbmRleDogOTk7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IC02Mi41cmVtO1xuICAgICAgICB3aWR0aDogNDUlO1xuICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgICAgICB0cmFuc2l0aW9uOiByaWdodCBlYXNlLWluLW91dCAuM3M7IH1cbiAgICAgICAgaGVhZGVyIHVsLm9wZW4ge1xuICAgICAgICAgIHJpZ2h0OiAwcmVtOyB9IH1cbiAgaGVhZGVyIGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogMCAwLjYyNXJlbTsgfVxuICAgIGhlYWRlciBsaSBhIHtcbiAgICAgIHBhZGRpbmc6IDAuMzEyNXJlbTtcbiAgICAgIGZvbnQtZmFtaWx5OiBcIm1pZ2h0eV96ZW9fMi4waXRhbGljXCI7IH1cbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgIGhlYWRlciBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgICAgIGhlYWRlciBsaSBhIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBwYWRkaW5nOiAwLjkzNzVyZW0gMDtcbiAgICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtOyB9IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgaGVhZGVyIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfSB9XG5cbmEuaXMtYWN0aXZlIHtcbiAgZm9udC1mYW1pbHk6IFwibWlnaHR5X3plb18yLjBib2xkXCI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5vdmVybGF5IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiA5ODtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwdmg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMzQsIDM0LCAzNCwgMC43KTsgfVxuXG4jbWVudS1vcGVuLCAjbWVudS1jbG9zZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBvdXRsaW5lOiBub25lOyB9XG4gICNtZW51LW9wZW46aG92ZXIsICNtZW51LWNsb3NlOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAjbWVudS1vcGVuLCAjbWVudS1jbG9zZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbiNtZW51LW9wZW4ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMS41NjI1cmVtO1xuICByaWdodDogMHJlbTsgfVxuXG4jbWVudS1jbG9zZSB7XG4gIG1hcmdpbjogMS41NjI1cmVtIGF1dG87IH1cblxuLnRvcC1oZWFkZXIge1xuICBvdmVyZmxvdzogYXV0bztcbiAgem9vbTogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0M0QzRDNDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3gtc2hhZG93OiBpbnNldCAwIC0ycHggMjBweCByZ2JhKDY4LCA2OCwgNjgsIDAuMyk7IH1cbiAgLnRvcC1oZWFkZXIgYSwgLnRvcC1oZWFkZXIgaWZyYW1lIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogMC42MjVyZW0gIWltcG9ydGFudDsgfVxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MzlweCkge1xuICAgICAgLnRvcC1oZWFkZXIgYSwgLnRvcC1oZWFkZXIgaWZyYW1lIHtcbiAgICAgICAgcGFkZGluZzogMHB4OyB9IH1cblxuLnBhZ2UtY29udGVudCB7XG4gIHBhZGRpbmc6IDMuMTI1cmVtIDIwcHggMS41NjI1cmVtIDIwcHg7IH1cblxuLnBhZ2UtbGVmdCwgLnBhZ2UtcmlnaHQge1xuICB3aWR0aDogMjAlO1xuICBmbG9hdDogbGVmdDtcbiAgaGVpZ2h0OiAxMDBweDsgfVxuICAucGFnZS1sZWZ0IGlmcmFtZSwgLnBhZ2UtbGVmdCBpbWcsIC5wYWdlLXJpZ2h0IGlmcmFtZSwgLnBhZ2UtcmlnaHQgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5wYWdlLWxlZnQge1xuICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLnBhZ2UtcmlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgICAucGFnZS1yaWdodCBpZnJhbWUsIC5wYWdlLXJpZ2h0IGltZyB7XG4gICAgICBtYXJnaW46IDAgYXV0bzsgfSB9XG5cbi5wYWdlLW1haW4ge1xuICB3aWR0aDogNjAlO1xuICBmbG9hdDogbGVmdDtcbiAgcGFkZGluZzogMHB4IDEuNTYyNXJlbTsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAucGFnZS1tYWluIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZzogMCA0JTsgfSB9XG4gIC5wYWdlLW1haW4gaDEge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG4gIC5wYWdlLW1haW4gYSB7XG4gICAgY29sb3I6ICM5NzQ7IH1cbiAgICAucGFnZS1tYWluIGE6aG92ZXIge1xuICAgICAgY29sb3I6ICNjYzllNWE7IH1cbiAgLnBhZ2UtbWFpbiAuYWxpZ25jZW50ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAucGFnZS1tYWluIC53cC1jYXB0aW9uLXRleHQge1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgZm9udC1zdHlsZTogaXRhbGljOyB9XG4gIC5wYWdlLW1haW4gc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogYm9sZDsgfVxuICAucGFnZS1tYWluIGVtIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7IH1cbiAgLnBhZ2UtbWFpbiAubWFzaHNiLWNvdW50IHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG5cbi5kYXRlIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuLmNvbnRlbnQtc29jaWFsLWxpbmtzIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDI1cHggMDtcbiAgd2lkdGg6IDgwJTsgfVxuICAuY29udGVudC1zb2NpYWwtbGlua3MgbGkge1xuICAgIHdpZHRoOiAzMy4zMzMzMzMlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAuY29udGVudC1zb2NpYWwtbGlua3MgYSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogNTBweDtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI0M0QzRDNDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciBlYXNlIC4zczsgfVxuICAgIC5jb250ZW50LXNvY2lhbC1saW5rcyBhIHN2ZyB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDEycHg7XG4gICAgICBsZWZ0OiAxMnB4O1xuICAgICAgd2lkdGg6IDI1cHg7XG4gICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICBmaWxsOiAjMjIyOyB9XG4gICAgLmNvbnRlbnQtc29jaWFsLWxpbmtzIGE6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0M0QzRDNDsgfVxuXG4uYXJjaGl2ZS1jb250ZW50IHtcbiAgbWluLWhlaWdodDogNTAwcHg7IH1cblxudWwuYXJjaGl2ZS1uYXYge1xuICBwYWRkaW5nLWJvdHRvbTogMy4xMjVyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9XG4gIHVsLmFyY2hpdmUtbmF2IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbiAgdWwuYXJjaGl2ZS1uYXYgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgIGNvbG9yOiAjQzRDNEM0O1xuICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07XG4gICAgZm9udC1mYW1pbHk6IFwibWlnaHR5X3plb18yLjByZWd1bGFyXCI7IH1cbiAgICB1bC5hcmNoaXZlLW5hdiBhLmlzLWFjdGl2ZSB7XG4gICAgICBjb2xvcjogIzQ0NDsgfVxuXG5mb3JtLmFyY2hpdmUtc2VhcmNoIHtcbiAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDIwcHggLTZweCByZ2JhKDM0LCAzNCwgMzQsIDAuNik7IH1cbiAgZm9ybS5hcmNoaXZlLXNlYXJjaCBpbnB1dCB7XG4gICAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMjVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgZm9udC1mYW1pbHk6IFwibWlnaHR5X3plb18yLjByZWd1bGFyXCI7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgYm9yZGVyLXJpZ2h0OiBub25lOyB9XG4gICAgZm9ybS5hcmNoaXZlLXNlYXJjaCBpbnB1dDpmb2N1cyB7XG4gICAgICBib3JkZXItY29sb3I6ICM5NzQgIWltcG9ydGFudDsgfVxuXG4uYXJjaGl2ZS1wb3N0cyB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB6b29tOiAxOyB9XG5cbi5hbG0tYnRuLXdyYXAge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLmFsbS1idG4td3JhcCAjbG9hZC1tb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogIzQ0NDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjNDQ0O1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgICBvdXRsaW5lOiBub25lOyB9XG4gICAgLmFsbS1idG4td3JhcCAjbG9hZC1tb3JlOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAjOTc0O1xuICAgICAgYm9yZGVyLWNvbG9yOiAjOTc0OyB9XG4gICAgLmFsbS1idG4td3JhcCAjbG9hZC1tb3JlLmRvbmUge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuXG4uYXJjaGl2ZS1wb3N0IHtcbiAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0M0QzRDNDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKDM0LCAzNCwgMzQsIDAuMiksIDAgNnB4IDIwcHggMCByZ2JhKDM0LCAzNCwgMzQsIDAuMTkpO1xuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4zczsgfVxuICAuYXJjaGl2ZS1wb3N0OmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDhweCAxMnB4IDAgcmdiYSgzNCwgMzQsIDM0LCAwLjIpLCAwIDhweCAyOHB4IDAgcmdiYSgzNCwgMzQsIDM0LCAwLjUpOyB9XG4gIC5hcmNoaXZlLXBvc3QgaW1nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXgtd2lkdGg6IDIzMHB4O1xuICAgIG1heC1oZWlnaHQ6IDE1NXB4O1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bzsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgICAuYXJjaGl2ZS1wb3N0IHtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgem9vbTogMTtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICB0ZXh0LWFsaWduOiBpbmhlcml0O1xuICAgICAgd2lkdGg6IDMxLjMzMzMzMyU7XG4gICAgICBtYXJnaW4tbGVmdDogMCU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDMlOyB9XG4gICAgICAuYXJjaGl2ZS1wb3N0Om50aC1jaGlsZCgzbikge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAlO1xuICAgICAgICBmbG9hdDogcmlnaHQ7IH1cbiAgICAgIC5hcmNoaXZlLXBvc3Q6bnRoLWNoaWxkKDNuICsgMSkge1xuICAgICAgICBjbGVhcjogYm90aDsgfSB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC5hcmNoaXZlLXBvc3Qge1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICB6b29tOiAxO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBjbGVhcjogbm9uZTtcbiAgICAgIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gICAgICB3aWR0aDogNDguNSU7XG4gICAgICBtYXJnaW4tbGVmdDogMCU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDMlOyB9XG4gICAgICAuYXJjaGl2ZS1wb3N0Om50aC1jaGlsZCgybikge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAlO1xuICAgICAgICBmbG9hdDogcmlnaHQ7IH1cbiAgICAgIC5hcmNoaXZlLXBvc3Q6bnRoLWNoaWxkKDJuICsgMSkge1xuICAgICAgICBjbGVhcjogYm90aDsgfSB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA2MzlweCkge1xuICAgIC5hcmNoaXZlLXBvc3Qge1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICB6b29tOiAxO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBjbGVhcjogbm9uZTtcbiAgICAgIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwJTtcbiAgICAgIG1hcmdpbi1yaWdodDogMCU7IH0gfVxuXG4uYXJjaGl2ZS1pbWFnZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAyMDBweDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyB9XG5cbi5hcmNoaXZlLWluZm8ge1xuICBwYWRkaW5nOiAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLmFyY2hpdmUtaW5mbyBoNiB7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAxMHB4OyB9XG4gIC5hcmNoaXZlLWluZm8gcCB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi5hcmNoaXZlLWV4Y2VycHQge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi5zZWFyY2hlZC10ZXh0IHtcbiAgcGFkZGluZy1ib3R0b206IDMuMTI1cmVtOyB9XG4gIC5zZWFyY2hlZC10ZXh0IHNwYW4ge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBiYWNrZ3JvdW5kOiAjOTc0O1xuICAgIGNvbG9yOiAjRkZGOyB9XG5cbi5zZWFyY2gtZXZlcnl0aGluZy1oaWdobGlnaHQtY29sb3Ige1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk3NCAhaW1wb3J0YW50O1xuICBjb2xvcjogI0ZGRjsgfVxuXG4uc2VhcmNoZWQtcG9zdCB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB6b29tOiAxO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxNS42MjVyZW07XG4gIGJvcmRlci1ib3R0b206IDAuMDYyNXJlbSBzb2xpZCAjQzRDNEM0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCBlYXNlLWluLW91dCAuM3M7IH1cbiAgLnNlYXJjaGVkLXBvc3Q6aG92ZXIge1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDEycHggMCByZ2JhKDM0LCAzNCwgMzQsIDAuMiksIDAgOHB4IDI4cHggMCByZ2JhKDM0LCAzNCwgMzQsIDAuNSk7IH1cbiAgLnNlYXJjaGVkLXBvc3Q6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogMHB4OyB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC5zZWFyY2hlZC1wb3N0IHtcbiAgICAgIHBhZGRpbmc6IDI1cHg7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgICAgIC5zZWFyY2hlZC1wb3N0IC5zZWFyY2hlZC1pbWFnZSB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICBoZWlnaHQ6IDE3NXB4O1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBtYXJnaW46IDAgYXV0bzsgfVxuICAgICAgLnNlYXJjaGVkLXBvc3QgLnNlYXJjaGVkLWluZm8ge1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgem9vbTogMTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIGNsZWFyOiBub25lO1xuICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAlO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAlO1xuICAgICAgICBtYXJnaW4tdG9wOiAxNXB4OyB9XG4gICAgICAgIC5zZWFyY2hlZC1wb3N0IC5zZWFyY2hlZC1pbmZvIGg2LCAuc2VhcmNoZWQtcG9zdCAuc2VhcmNoZWQtaW5mbyBwIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG4gICAgICAuc2VhcmNoZWQtcG9zdCAuc2VhcmNoZWQtZXhjZXJwdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuICBAbWVkaWEgKG1heC13aWR0aDogNjM5cHgpIHtcbiAgICAuc2VhcmNoZWQtcG9zdCAuc2VhcmNoZWQtaW1hZ2Uge1xuICAgICAgd2lkdGg6IDEwMCU7IH0gfVxuXG4uc2VhcmNoZWQtaW1hZ2Uge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHpvb206IDE7XG4gIGZsb2F0OiBsZWZ0O1xuICBjbGVhcjogbm9uZTtcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbiAgd2lkdGg6IDMxLjMzMzMzMyU7XG4gIG1hcmdpbi1sZWZ0OiAwJTtcbiAgbWFyZ2luLXJpZ2h0OiAzJTsgfVxuICAuc2VhcmNoZWQtaW1hZ2U6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwJTsgfVxuXG4uc2VhcmNoZWQtaW5mbyB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB6b29tOiAxO1xuICBmbG9hdDogbGVmdDtcbiAgY2xlYXI6IG5vbmU7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gIHdpZHRoOiA2NS42NjY2NjclO1xuICBtYXJnaW4tbGVmdDogMCU7XG4gIG1hcmdpbi1yaWdodDogMyU7IH1cbiAgLnNlYXJjaGVkLWluZm86bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwJTsgfVxuICAuc2VhcmNoZWQtaW5mbyBoNiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBmb250LXdlaWdodDogYm9sZDsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAuc2VhcmNoZWQtaW5mbyB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgfSB9XG5cbi5zZWFyY2hlZC1kYXRlIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtOyB9XG5cbi5zZWFyY2hlZC1leGNlcnB0IHtcbiAgZm9udC1zaXplOiAxcmVtOyB9XG5cbi5vcGluaW9uLW5hdiBoNSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLm9waW5pb24tbmF2IHVsLmFyY2hpdmUtcG9zdHMge1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMjVweDtcbiAgd2lkdGg6IDcwJTsgfVxuXG4ub3Bpbmlvbi1uYXYgbGkuYXJjaGl2ZS1wb3N0IHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHpvb206IDE7XG4gIGZsb2F0OiBsZWZ0O1xuICBjbGVhcjogbm9uZTtcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiAwJTtcbiAgbWFyZ2luLXJpZ2h0OiAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICBib3gtc2hhZG93OiBub25lO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0M0QzRDNDtcbiAgdHJhbnNpdGlvbjogYWxsIGVhc2UgLjNzOyB9XG4gIC5vcGluaW9uLW5hdiBsaS5hcmNoaXZlLXBvc3Q6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQzRDNEM0OyB9XG4gIC5vcGluaW9uLW5hdiBsaS5hcmNoaXZlLXBvc3QgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAxNS42MjVyZW07IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLm9waW5pb24tbmF2IGxpLmFyY2hpdmUtcG9zdCB7XG4gICAgICBwYWRkaW5nOiAyNXB4O1xuICAgICAgaGVpZ2h0OiBhdXRvOyB9IH1cbiAgLm9waW5pb24tbmF2IGxpLmFyY2hpdmUtcG9zdDpob3ZlciB7XG4gICAgei1pbmRleDogOTtcbiAgICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKDM0LCAzNCwgMzQsIDAuMiksIDAgNnB4IDIwcHggMCByZ2JhKDM0LCAzNCwgMzQsIDAuMTkpOyB9XG4gICAgLm9waW5pb24tbmF2IGxpLmFyY2hpdmUtcG9zdDpob3ZlciBoNiB7XG4gICAgICBjb2xvcjogIzk3NDsgfVxuXG4ub3Bpbmlvbi1uYXYgLmFyY2hpdmUtaW1hZ2Uge1xuICBoZWlnaHQ6IDEwMCU7IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLm9waW5pb24tbmF2IC5hcmNoaXZlLWltYWdlIHtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgem9vbTogMTtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICB0ZXh0LWFsaWduOiBpbmhlcml0O1xuICAgICAgd2lkdGg6IDMxLjMzMzMzMyU7XG4gICAgICBtYXJnaW4tbGVmdDogMCU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDMlOyB9XG4gICAgICAub3Bpbmlvbi1uYXYgLmFyY2hpdmUtaW1hZ2U6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMCU7IH0gfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAub3Bpbmlvbi1uYXYgLmFyY2hpdmUtaW1hZ2Uge1xuICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIHdpZHRoOiA1MCU7IH0gfVxuICBAbWVkaWEgKG1heC13aWR0aDogNjM5cHgpIHtcbiAgICAub3Bpbmlvbi1uYXYgLmFyY2hpdmUtaW1hZ2Uge1xuICAgICAgd2lkdGg6IDEwMCU7IH0gfVxuXG4ub3Bpbmlvbi1uYXYgLmFyY2hpdmUtaW5mbyB7XG4gIHBhZGRpbmc6IDA7IH1cbiAgLm9waW5pb24tbmF2IC5hcmNoaXZlLWluZm8gaDYge1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIGVhc2UgLjNzOyB9XG4gIC5vcGluaW9uLW5hdiAuYXJjaGl2ZS1pbmZvIHAge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC5vcGluaW9uLW5hdiAuYXJjaGl2ZS1pbmZvIHtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgem9vbTogMTtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICB0ZXh0LWFsaWduOiBpbmhlcml0O1xuICAgICAgd2lkdGg6IDY1LjY2NjY2NyU7XG4gICAgICBtYXJnaW4tbGVmdDogMCU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDMlO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IH1cbiAgICAgIC5vcGluaW9uLW5hdiAuYXJjaGl2ZS1pbmZvOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAlOyB9IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLm9waW5pb24tbmF2IC5hcmNoaXZlLWluZm8ge1xuICAgICAgcGFkZGluZy10b3A6IDE1cHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAgICAgLm9waW5pb24tbmF2IC5hcmNoaXZlLWluZm8gaDYsIC5vcGluaW9uLW5hdiAuYXJjaGl2ZS1pbmZvIHAge1xuICAgICAgICBtYXJnaW46IDA7IH0gfVxuXG4ub3Bpbmlvbi1uYXYgLmFyY2hpdmUtZXhjZXJwdCB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5vcGluaW9uLW5hdiAuYXJjaGl2ZS1leGNlcnB0IHAge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLm9waW5pb24tbmF2IC5hcmNoaXZlLWV4Y2VycHQge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAub3Bpbmlvbi1uYXYgLm9waW5pb24tbmF2IHtcbiAgICBwYWRkaW5nOiAwIDIwcHg7IH1cbiAgLm9waW5pb24tbmF2IHVsLmFyY2hpdmUtcG9zdHMge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAgNCU7IH1cbiAgLm9waW5pb24tbmF2IC5hcmNoaXZlLWltYWdlLFxuICAub3Bpbmlvbi1uYXYgLmFyY2hpdmUtaW5mbyB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgem9vbTogMTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBjbGVhcjogbm9uZTtcbiAgICB0ZXh0LWFsaWduOiBpbmhlcml0O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1sZWZ0OiAwJTtcbiAgICBtYXJnaW4tcmlnaHQ6IDAlOyB9IH1cblxuLm9waW5pb24tbmF2IC5hbG0tYnRuLXdyYXAge1xuICBtYXJnaW46IDI1cHggMDsgfVxuXG4udmlkZW8td3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDcwJTtcbiAgbWF4LXdpZHRoOiA5MDBweDtcbiAgbWFyZ2luOiAwIGF1dG87IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnZpZGVvLXdyYXBwZXIge1xuICAgICAgd2lkdGg6IDkwJTsgfSB9XG5cbi52aWRlby1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctYm90dG9tOiA1Mi4yNSU7XG4gIHBhZGRpbmctdG9wOiAzMHB4O1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cblxuLnZpZGVvLWNvbnRhaW5lciBpZnJhbWUsIC52aWRlby1jb250YWluZXIgb2JqZWN0LCAudmlkZW8tY29udGFpbmVyIGVtYmVkIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7IH1cbiIsIi5vbGQtYnJvd3NlcnMge1xuICB6LWluZGV4OiA5OTk5O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGNvbG9yOiBibGFjaztcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIFxuICBoMiB7IHBhZGRpbmc6IDIwcHggMCAyMHB4IDA7IH1cbiAgcCwgdWwgeyBtYXJnaW46IDAgYXV0bzsgfVxuICBwIHtcbiAgICBtYXgtd2lkdGg6IDcwMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA1MHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsgICAgXG4gIH1cbiAgdWwge1xuICAgIGxpIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHBhZGRpbmc6IDAgMjVweDtcbiAgICAgIGltZyB7IHdpZHRoOiAxMTVweDsgfVxuICAgICAgcCB7IHBhZGRpbmctdG9wOiAxNXB4OyBjb2xvcjogIzI0OUFFMTt9XG4gICAgfVxuICB9XG59XG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufSIsIi8qICBTeW50YXggUXVpY2sgUmVmZXJlbmNlXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGNvbHVtbigkcmF0aW9zOiAxLCAkb2Zmc2V0OiAwLCAkY3ljbGU6IDAsICR1bmN5Y2xlOiAwLCAkZ3V0dGVyOiAkamVldC1ndXR0ZXIpXG4gIHNwYW4oJHJhdGlvOiAxLCAkb2Zmc2V0OiAwKVxuICBzaGlmdCgkcmF0aW9zOiAwLCAkY29sX29yX3NwYW46IGNvbHVtbiwgJGd1dHRlcjogJGplZXQtZ3V0dGVyKVxuICB1bnNoaWZ0KClcbiAgZWRpdCgpXG4gIGNlbnRlcigkbWF4X3dpZHRoOiAxNDEwcHgsICRwYWQ6IDApXG4gIHN0YWNrKCRwYWQ6IDAsICRhbGlnbjogZmFsc2UpXG4gIHVuc3RhY2soKVxuICBhbGlnbigkZGlyZWN0aW9uOiBib3RoKVxuICBjZigpXG4qL1xuXG5AaW1wb3J0ICdfc2V0dGluZ3MnO1xuQGltcG9ydCAnX2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICdfZ3JpZCc7XG4iLCIvKipcbiAqIEdyaWQgc2V0dGluZ3MuXG4gKiBBbGwgdmFsdWVzIGFyZSBkZWZhdWx0cyBhbmQgY2FuIHRoZXJlZm9yZSBiZSBlYXNpbHkgb3ZlcmlkZGVuLlxuICovXG5cbiRqZWV0LWd1dHRlcjogICAgICAgICAgIDMgICAgICAhZGVmYXVsdDtcbiRqZWV0LXBhcmVudC1maXJzdDogICAgIGZhbHNlICAhZGVmYXVsdDtcbiRqZWV0LWxheW91dC1kaXJlY3Rpb246IFwiTFRSXCIgICFkZWZhdWx0O1xuJGplZXQtbWF4LXdpZHRoOiAgICAgICAgMTQxMHB4ICFkZWZhdWx0O1xuIiwiLyoqXG4gKiBMaXN0IGZ1bmN0aW9ucyBjb3VydGVzeSBvZiB0aGUgd29uZGVyZnVsIGZvbGtzIGF0IFRlYW0gU2Fzcy5cbiAqIENoZWNrIG91dCB0aGVpciBhd2Vzb21lIGdyaWQ6IFNpbmd1bGFyaXR5LlxuICovXG5cbi8qKlxuICogR2V0ICBwZXJjZW50YWdlIGZyb20gYSBnaXZlbiByYXRpby5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHJhdGlvPTFdIC0gVGhlIGNvbHVtbiByYXRpbyBvZiB0aGUgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IC0gVGhlIHBlcmNlbnRhZ2UgdmFsdWUuXG4gKi9cbkBmdW5jdGlvbiBqZWV0LWdldC1zcGFuKCRyYXRpbzogMSkge1xuICBAcmV0dXJuICRyYXRpbyAqIDEwMDtcbn1cblxuLyoqXG4gKiBXb3JrIG91dCB0aGUgY29sdW1uIHdpZHRocyBiYXNlZCBvbiB0aGUgcmF0aW8gYW5kIGd1dHRlciBzaXplcy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHJhdGlvcz0xXSAtIFRoZSBjb2x1bW4gcmF0aW8gb2YgdGhlIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRndXR0ZXI9JGplZXQtZ3V0dGVyXSAtIFRoZSBndXR0ZXIgZm9yIHRoZSBjb2x1bW4uXG4gKiBAcmV0dXJucyB7bGlzdH0gJHdpZHRoICRndXR0ZXIgLSBBIGxpc3QgY29udGFpbmluZyB0aGUgd2l0aCBhbmQgZ3V0dGVyIGZvciB0aGUgZWxlbWVudC5cbiAqL1xuQGZ1bmN0aW9uIGplZXQtZ2V0LWNvbHVtbigkcmF0aW9zOiAxLCAkZ3V0dGVyOiAkamVldC1ndXR0ZXIpIHtcbiAgJHJhdGlvczogaWYobm90ICRqZWV0LXBhcmVudC1maXJzdCwgamVldC1yZXZlcnNlKCRyYXRpb3MpLCAkcmF0aW9zKTtcbiAgJHdpZHRoOiAxMDA7XG5cbiAgQGVhY2ggJHJhdGlvIGluICRyYXRpb3Mge1xuICAgICRndXR0ZXI6ICRndXR0ZXIgLyAkd2lkdGggKiAxMDA7XG4gICAgJHdpZHRoOiAxMDAgKiAkcmF0aW8gLSAkZ3V0dGVyICsgJHJhdGlvICogJGd1dHRlcjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoICRndXR0ZXI7XG59XG5cbi8qKlxuICogR2V0IHRoZSBzZXQgbGF5b3V0IGRpcmVjdGlvbiBmb3IgdGhlIHByb2plY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAkZGlyZWN0aW9uIC0gVGhlIGxheW91dCBkaXJlY3Rpb24uXG4gKi9cbkBmdW5jdGlvbiBqZWV0LWdldC1sYXlvdXQtZGlyZWN0aW9uKCkge1xuICAkZGlyZWN0aW9uOiBpZigkamVldC1sYXlvdXQtZGlyZWN0aW9uID09IFwiUlRMXCIsIHJpZ2h0LCBsZWZ0KTtcblxuICBAcmV0dXJuICRkaXJlY3Rpb247XG59XG5cbi8qKlxuICogUmVwbGFjZSBhIHNwZWNpZmllZCBsaXN0IHZhbHVlIHdpdGggYSBuZXcgdmFsdWUgKHVzZXMgYnVpbHQgaW4gc2V0LW50aCgpIGlmIGF2YWlsYWJsZSlcbiAqIEBwYXJhbSB7bGlzdH0gJGxpc3QgLSBUaGUgbGlzdCBvZiB2YWx1ZXMgeW91IHdhbnQgdG8gYWx0ZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gJGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBsaXN0IGl0ZW0geW91IHdhbnQgdG8gcmVwbGFjZS5cbiAqIEBwYXJhbSB7Kn0gJHZhbHVlIC0gVGhlIHZhbHVlIHlvdSB3YW50IHRvIHJlcGxhY2UgJGluZGV4IHdpdGguXG4gKiBAcmV0dXJucyB7bGlzdH0gJGxpc3QgLSBUaGUgbGlzdCB3aXRoIHRoZSB2YWx1ZSByZXBsYWNlZCBvciByZW1vdmVkLlxuICogQHdhcm4gaWYgYW4gaW52YWxpZCBpbmRleCBpcyBzdXBwbGllZC5cbiAqL1xuQGZ1bmN0aW9uIGplZXQtcmVwbGFjZS1udGgoJGxpc3QsICRpbmRleCwgJHZhbHVlKSB7XG4gIC8vIEZhbGxiYWNrIGZvciBTYXNzIDMuMlxuICBAaWYgZnVuY3Rpb24tZXhpc3RzKFwic2V0LW50aFwiKSAhPSB0cnVlIHtcbiAgICAkcmVzdWx0OiAoKTtcbiAgICAkaW5kZXg6IGlmKCRpbmRleCA8IDAsIGxlbmd0aCgkbGlzdCkgKyAkaW5kZXggKyAxLCAkaW5kZXgpO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBpZigkaSA9PSAkaW5kZXgsICR2YWx1ZSwgbnRoKCRsaXN0LCAkaSkpKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRyZXN1bHQ7XG4gIH1cblxuICAvLyBTYXNzIDMuM1xuICAkcmVzdWx0OiBzZXQtbnRoKCRsaXN0LCAkaW5kZXgsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vKipcbiAqIFJldmVyc2UgYSBsaXN0IChwcm9ncmVzc2l2ZWx5IGVuaGFuY2VkIGZvciBTYXNzIDMuMylcbiAqIEBwYXJhbSB7bGlzdH0gJGxpc3QgLSBUaGUgbGlzdCBvZiB2YWx1ZXMgeW91IHdhbnQgdG8gcmV2ZXJzZS5cbiAqIEByZXR1cm5zIHtsaXN0fSAkcmVzdWx0IC0gVGhlIHJldmVyc2VkIGxpc3QuXG4gKi9cbkBmdW5jdGlvbiBqZWV0LXJldmVyc2UoJGxpc3QpIHtcbiAgLy8gU2FzcyAzLjJcbiAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhcInNldC1udGhcIikgIT0gdHJ1ZSB7XG4gICAgJHJlc3VsdDogKCk7XG5cbiAgICBAZm9yICRpIGZyb20gbGVuZ3RoKCRsaXN0KSAqIC0xIHRocm91Z2ggLTEge1xuICAgICAgJGl0ZW06IG50aCgkbGlzdCwgYWJzKCRpKSk7XG5cbiAgICAgIEBpZiBsZW5ndGgoJGl0ZW0pID4gMSBhbmQgJHJlY3Vyc2l2ZSB7XG4gICAgICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBqZWV0LXJldmVyc2UoJGl0ZW0sICRyZWN1cnNpdmUpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRyZXN1bHQ7XG4gIH1cblxuICAvLyBTYXNzIDMuMytcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBjZWlsKGxlbmd0aCgkbGlzdCkvMikge1xuICAgICR0bXA6IG50aCgkbGlzdCwgJGkpO1xuICAgICR0bXA6IGlmKGxlbmd0aCgkdG1wKSA+IDEgYW5kICRyZWN1cnNpdmUsIHJldmVyc2UoJHRtcCwgJHJlY3Vyc2l2ZSksICR0bXApO1xuXG4gICAgJGxpc3Q6IHNldC1udGgoJGxpc3QsICRpLCBudGgoJGxpc3QsIC0kaSkpO1xuICAgICRsaXN0OiBzZXQtbnRoKCRsaXN0LCAtJGksICR0bXApO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0byBhIGdpdmVuIHZhbHVlLlxuICogQHBhcmFtIHtzdHJpbmd9ICRkaXIgLSBUaGUgZGlyZWN0aW9uIHlvdSB3YW50IHRoZSBvcHBvc2l0ZSBvZi5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0byAkZGlyLlxuICogQHdhcm4gaWYgYW4gaW5jb3JyZWN0IHN0cmluZyBpcyBwcm92aWRlZC5cbiAqL1xuQGZ1bmN0aW9uIGplZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pIHtcbiAgQGlmICRkaXJlY3Rpb24gPT0gXCJsZWZ0XCIge1xuICAgIEByZXR1cm4gcmlnaHQ7XG4gIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIEByZXR1cm4gbGVmdDtcbiAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwidG9wXCIge1xuICAgIEByZXR1cm4gYm90dG9tO1xuICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gXCJib3R0b21cIiB7XG4gICAgQHJldHVybiB0b3A7XG4gIH0gQGVsc2UgaWYgaW5kZXgoXCJsdHJcIiBcIkxUUlwiLCAkZGlyZWN0aW9uKSB7XG4gICAgQHJldHVybiBydGw7XG4gIH0gQGVsc2UgaWYgaW5kZXgoXCJydGxcIiBcIlJUTFwiLCAkZGlyZWN0aW9uKSB7XG4gICAgQHJldHVybiBsdHI7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuIFwiYCN7JGRpcmVjdGlvbn1gIGlzIG5vdCBhIGRpcmVjdGlvbjsgcGxlYXNlIG1ha2Ugc3VyZSB5b3VyIGRpcmVjdGlvbiBpcyBhbGwgbG93ZXJjYXNlLlwiO1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8qKlxuICogU3R5bGUgYW4gZWxlbWVudCBhcyBhIGNvbHVtbiB3aXRoIGEgZ3V0dGVyLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gWyRvZmZzZXQ9MF0gLSBBIG9mZnNldCBzcGVjaWZpZWQgYXMgYSBmcmFjdGlvbiAoc2VlICRyYXRpb3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IFskY3ljbGU9MF0gLSBFYXNpbHkgY3JlYXRlIGFuIG50aCBjb2x1bW4gZ3JpZCB3aGVyZSAkY3ljbGUgZXF1YWxzIHRoZSBudW1iZXIgb2YgY29sdW1ucy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHVuY3ljbGU9MF0gLSBVbmRvIGEgcHJldmlvdXMgY3ljbGUgdmFsdWUgdG8gYWxsb3cgZm9yIGEgbmV3IG9uZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJGd1dHRlcj0kamVldC1ndXR0ZXJdIC0gU3BlY2lmeSB0aGUgZ3V0dGVyIHdpZHRoIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY29udGFpbmVycyB3aWR0aC5cbiAqL1xuQG1peGluIGNvbHVtbigkcmF0aW9zOiAxLCAkb2Zmc2V0OiAwLCAkY3ljbGU6IDAsICR1bmN5Y2xlOiAwLCAkZ3V0dGVyOiAkamVldC1ndXR0ZXIpIHtcbiAgJHNpZGU6IGplZXQtZ2V0LWxheW91dC1kaXJlY3Rpb24oKTtcbiAgJG9wcG9zaXRlLXNpZGU6IGplZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRzaWRlKTtcbiAgJGNvbHVtbi13aWR0aHM6IGplZXQtZ2V0LWNvbHVtbigkcmF0aW9zLCAkZ3V0dGVyKTtcbiAgJG1hcmdpbi1sYXN0OiAwO1xuICAkbWFyZ2luLWw6ICRtYXJnaW4tbGFzdDtcbiAgJG1hcmdpbi1yOiBudGgoJGNvbHVtbi13aWR0aHMsIDIpO1xuXG4gIEBpZiAkb2Zmc2V0ICE9IDAge1xuICAgIEBpZiAkb2Zmc2V0IDwgMCB7XG4gICAgICAkb2Zmc2V0OiAkb2Zmc2V0ICogLTE7XG4gICAgICAkb2Zmc2V0OiBudGgoamVldC1nZXQtY29sdW1uKCRvZmZzZXQsIG50aCgkY29sdW1uLXdpZHRocywgMikpLCAxKTtcbiAgICAgICRtYXJnaW4tbGFzdDogJG9mZnNldCArIG50aCgkY29sdW1uLXdpZHRocywgMikgKiAyO1xuICAgICAgJG1hcmdpbi1yOiAkbWFyZ2luLWxhc3Q7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkb2Zmc2V0OiBudGgoamVldC1nZXQtY29sdW1uKCRvZmZzZXQsIG50aCgkY29sdW1uLXdpZHRocywgMikpLCAxKTtcbiAgICAgICRtYXJnaW4tbDogJG9mZnNldCArIG50aCgkY29sdW1uLXdpZHRocywgMik7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgY2Y7XG4gIGZsb2F0OiAkc2lkZTtcbiAgY2xlYXI6IG5vbmU7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gIHdpZHRoOiBudGgoJGNvbHVtbi13aWR0aHMsIDEpICogMSU7XG4gIG1hcmdpbjoge1xuICAgICN7JHNpZGV9OiAkbWFyZ2luLWwgKiAxJTtcbiAgICAjeyRvcHBvc2l0ZS1zaWRlfTogJG1hcmdpbi1yICogMSU7XG4gIH07XG5cbiAgQGlmICR1bmN5Y2xlICE9IDAge1xuICAgICY6bnRoLWNoaWxkKCN7JHVuY3ljbGV9bikge1xuICAgICAgbWFyZ2luLSN7amVldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJHNpZGUpfTogJG1hcmdpbi1yICogMSU7XG4gICAgICBmbG9hdDogJHNpZGU7XG4gICAgfVxuICAgICY6bnRoLWNoaWxkKCN7JHVuY3ljbGV9biArIDEpIHtcbiAgICAgIGNsZWFyOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkY3ljbGUgIT0gMCB7XG4gICAgJjpudGgtY2hpbGQoI3skY3ljbGV9bikge1xuICAgICAgbWFyZ2luLSN7amVldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJHNpZGUpfTogJG1hcmdpbi1sYXN0ICogMSU7XG4gICAgICBmbG9hdDogamVldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJHNpZGUpO1xuICAgIH1cbiAgICAmOm50aC1jaGlsZCgjeyRjeWNsZX1uICsgMSkge1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLSN7amVldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJHNpZGUpfTogJG1hcmdpbi1sYXN0ICogMSU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQW4gYWxpYXMgZm9yIHRoZSBjb2x1bW4gbWl4aW4uXG4gKiBAcGFyYW0gWyRhcmdzLi4uXSAtIEFsbCBhcmd1bWVudHMgZ2V0IHBhc3NlZCB0aHJvdWdoIHRvIGNvbHVtbigpLlxuICovXG5AbWl4aW4gY29sKCRhcmdzLi4uKSB7XG4gIEBpbmNsdWRlIGNvbHVtbigkYXJncy4uLik7XG59XG5cbi8qKlxuICogR2V0IHRoZSB3aWR0aCBvZiBhIGNvbHVtbiBhbmQgbm90aGluZyBlbHNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gWyRndXR0ZXI9JGplZXQtZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbkBmdW5jdGlvbiBjb2x1bW4td2lkdGgoJHJhdGlvczogMSwgJGd1dHRlcjogJGplZXQtZ3V0dGVyKSB7XG4gIEByZXR1cm4gdW5xdW90ZShudGgoamVldC1nZXQtY29sdW1uKCRyYXRpb3MsICRndXR0ZXIpLCAxKSArICclJyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBndXR0ZXIgc2l6ZSBvZiBhIGNvbHVtbiBhbmQgbm90aGluZyBlbHNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtyYXRpb3M9MV0gLSBBIHdpZHRoIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXIgYXMgYSBmcmFjdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZ3V0dGVyPWplZXQuZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbkBmdW5jdGlvbiBjb2x1bW4tZ3V0dGVyKCRyYXRpb3M6IDEsICRndXR0ZXI6ICRqZWV0LWd1dHRlcikge1xuICBAcmV0dXJuIHVucXVvdGUobnRoKGplZXQtZ2V0LWNvbHVtbigkcmF0aW9zLCAkZ3V0dGVyKSwgMikgKyAnJScpO1xufVxuXG4vKipcbiAqIEFuIGFsaWFzIGZvciB0aGUgY29sdW1uLXdpZHRoIGZ1bmN0aW9uLlxuICogQHBhcmFtIFskYXJncy4uLl0gLSBBbGwgYXJndW1lbnRzIGdldCBwYXNzZWQgdGhyb3VnaCB0byBjb2x1bW4oKS5cbiAqL1xuQGZ1bmN0aW9uIGN3KCRhcmdzLi4uKSB7XG4gIEByZXR1cm4gY29sdW1uLXdpZHRoKCRhcmdzLi4uKTtcbn1cblxuLyoqXG4gKiBBbiBhbGlhcyBmb3IgdGhlIGNvbHVtbi1ndXR0ZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0gWyRhcmdzLi4uXSAtIEFsbCBhcmd1bWVudHMgZ2V0IHBhc3NlZCB0aHJvdWdoIHRvIGNvbHVtbigpLlxuICovXG5AZnVuY3Rpb24gY2coJGFyZ3MuLi4pIHtcbiAgQHJldHVybiBjb2x1bW4tZ3V0dGVyKCRhcmdzLi4uKTtcbn1cblxuLyoqXG4gKiBTdHlsZSBhbiBlbGVtZW50IGFzIGEgY29sdW1uIHdpdGhvdXQgYW55IGd1dHRlcnMgZm9yIGEgc2VhbWxlc3Mgcm93LlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gWyRvZmZzZXQ9MF0gLSBBIG9mZnNldCBzcGVjaWZpZWQgYXMgYSBmcmFjdGlvbiAoc2VlICRyYXRpb3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtjeWNsZT0wXSAtIEVhc2lseSBjcmVhdGUgYW4gbnRoIGNvbHVtbiBncmlkIHdoZXJlIGN5Y2xlIGVxdWFscyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuXG4gKiBAcGFyYW0ge251bWJlcn0gW3VuY3ljbGU9MF0gLSBVbmRvIGEgcHJldmlvdXMgY3ljbGUgdmFsdWUgdG8gYWxsb3cgZm9yIGEgbmV3IG9uZS5cbiAqL1xuQG1peGluIHNwYW4oJHJhdGlvOiAxLCAkb2Zmc2V0OiAwLCAkY3ljbGU6IDAsICR1bmN5Y2xlOiAwKSB7XG4gICRzaWRlOiBqZWV0LWdldC1sYXlvdXQtZGlyZWN0aW9uKCk7XG4gICRvcHBvc2l0ZS1zaWRlOiBqZWV0LW9wcG9zaXRlLWRpcmVjdGlvbigkc2lkZSk7XG4gICRzcGFuLXdpZHRoOiBqZWV0LWdldC1zcGFuKCRyYXRpbyk7XG4gICRtYXJnaW4tcjogMDtcbiAgJG1hcmdpbi1sOiAkbWFyZ2luLXI7XG4gIEBpZiAkb2Zmc2V0ICE9IDAge1xuICAgIEBpZiAkb2Zmc2V0IDwgMCB7XG4gICAgICAkb2Zmc2V0OiAkb2Zmc2V0ICogLTE7XG4gICAgICAkbWFyZ2luLXI6IGplZXQtZ2V0LXNwYW4oJG9mZnNldCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbWFyZ2luLWw6IGplZXQtZ2V0LXNwYW4oJG9mZnNldCk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgY2Y7XG4gIGZsb2F0OiAkc2lkZTtcbiAgY2xlYXI6IG5vbmU7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gIHdpZHRoOiAkc3Bhbi13aWR0aCAqIDElO1xuICBtYXJnaW46IHtcbiAgICAjeyRzaWRlfTogJG1hcmdpbi1sICogMSU7XG4gICAgI3skb3Bwb3NpdGUtc2lkZX06ICRtYXJnaW4tciAqIDElO1xuICB9O1xuXG4gIEBpZiAkY3ljbGUgIT0gMCB7XG4gICAgJjpudGgtY2hpbGQoI3skY3ljbGV9bikge1xuICAgICAgZmxvYXQ6ICRvcHBvc2l0ZS1zaWRlO1xuICAgIH1cbiAgICAmOm50aC1jaGlsZCgjeyRjeWNsZX1uICsgMSkge1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG5cbiAgQGlmICR1bmN5Y2xlICE9IDAge1xuICAgICY6bnRoLWNoaWxkKCN7JHVuY3ljbGV9bikge1xuICAgICAgZmxvYXQ6ICRzaWRlO1xuICAgIH1cbiAgICAmOm50aC1jaGlsZCgjeyR1bmN5Y2xlfW4gKyAxKSB7XG4gICAgICBjbGVhcjogbm9uZTtcbiAgICB9XG4gIH1cblxufVxuXG4vKipcbiAqIFJlb3JkZXIgY29sdW1ucyB3aXRob3V0IGFsdGVyaW5nIHRoZSBIVE1MLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTBdIC0gU3BlY2lmeSBob3cgZmFyIGFsb25nIHlvdSB3YW50IHRoZSBlbGVtZW50IHRvIG1vdmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gWyRjb2wtb3Itc3Bhbj1jb2x1bW5dIC0gU3BlY2lmeSB3aGV0aGVyIHRoZSBlbGVtZW50IGhhcyBhIGd1dHRlciBvciBub3QuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRndXR0ZXI9JGplZXQtZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbkBtaXhpbiBzaGlmdCgkcmF0aW9zOiAwLCAkY29sLW9yLXNwYW46IGNvbHVtbiwgJGd1dHRlcjogJGplZXQtZ3V0dGVyKSB7XG4gICR0cmFuc2xhdGU6ICcnO1xuICAkc2lkZTogamVldC1nZXQtbGF5b3V0LWRpcmVjdGlvbigpO1xuXG4gIEBpZiAkc2lkZSA9PSByaWdodCB7XG4gICAgJHJhdGlvczogamVldC1yZXBsYWNlLW50aCgkcmF0aW9zLCAwLCBudGgoJHJhdGlvcywgMSkgKiAtMSk7XG4gIH1cblxuICBAaWYgaW5kZXgoXCJjb2x1bW5cIiBcImNvbFwiIFwiY1wiLCAkY29sLW9yLXNwYW4pIHtcbiAgICAkY29sdW1uLXdpZHRoczogamVldC1nZXQtY29sdW1uKCRyYXRpb3MsICRndXR0ZXIpO1xuICAgICR0cmFuc2xhdGU6IG50aCgkY29sdW1uLXdpZHRocywgMSkgKyBudGgoJGNvbHVtbi13aWR0aHMsIDIpO1xuICB9IEBlbHNlIHtcbiAgICAkdHJhbnNsYXRlOiBqZWV0LWdldC1zcGFuKCRyYXRpb3MpO1xuICB9XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiAkdHJhbnNsYXRlICogMSU7XG59XG5cbi8qKlxuICogUmVzZXQgYW4gZWxlbWVudCB0aGF0IGhhcyBoYWQgc2hpZnQoKSBhcHBsaWVkIHRvIGl0LlxuICovXG5AbWl4aW4gdW5zaGlmdCgpIHtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgbGVmdDogMDtcbn1cblxuLyoqXG4gKiBWaWV3IHRoZSBncmlkIGFuZCBpdHMgbGF5ZXJzIGZvciBlYXN5IGRlYnVnZ2luZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbJGNvbG9yPWJsYWNrXSAtIFRoZSBiYWNrZ3JvdW5kIHRpbnQgYXBwbGllZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gWyRpbXBvcnRhbnQ9ZmFsc2VdIC0gV2hldGhlciB0byBhcHBseSB0aGUgc3R5bGUgYXMgIWltcG9ydGFudC5cbiAqL1xuQG1peGluIGVkaXQoJGNvbG9yOiBibGFjaywgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgQGlmICRpbXBvcnRhbnQge1xuICAgICoge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgkY29sb3IsIC4wNSkgIWltcG9ydGFudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICoge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgkY29sb3IsIC4wNSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogIEFsaWFzIGZvciBlZGl0KCkuXG4gKi9cbkBtaXhpbiBkZWJ1ZygpIHtcbiAgQGluY2x1ZGUgZWRpdDtcbn1cblxuLyoqXG4gKiBIb3Jpem9udGFsbHkgY2VudGVyIGFuIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRtYXgtd2lkdGg9MTQxMHB4XSAtIFRoZSBtYXggd2lkdGggdGhlIGVsZW1lbnQgY2FuIGJlLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcGFkPTBdIC0gU3BlY2lmeSB0aGUgZWxlbWVudCdzIGxlZnQgYW5kIHJpZ2h0IHBhZGRpbmcuXG4gKi9cbkBtaXhpbiBjZW50ZXIoJG1heC13aWR0aDogJGplZXQtbWF4LXdpZHRoLCAkcGFkOiAwKSB7XG4gIEBpbmNsdWRlIGNmO1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjoge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6ICBhdXRvO1xuICB9O1xuICBwYWRkaW5nOiB7XG4gICAgbGVmdDogICRwYWQ7XG4gICAgcmlnaHQ6ICRwYWQ7XG4gIH07XG59XG5cbi8qKlxuICogVW5jZW50ZXIgYW4gZWxlbWVudC5cbiAqL1xuQG1peGluIHVuY2VudGVyKCkge1xuICBtYXgtd2lkdGg6IG5vbmU7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1yaWdodDogMDtcbn1cblxuLyoqXG4gKiBTdGFjayBhbiBlbGVtZW50IHNvIHRoYXQgbm90aGluZyBpcyBlaXRoZXIgc2lkZSBvZiBpdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHBhZD0wXSAtIFNwZWNpZnkgdGhlIGVsZW1lbnQncyBsZWZ0IGFuZCByaWdodCBwYWRkaW5nLlxuICogQHBhcmFtIHtib29sZWFuL3N0cmluZ30gWyRhbGlnbj1mYWxzZV0gLSBTcGVjaWZ5IHRoZSB0ZXh0IGFsaWduIGZvciB0aGUgZWxlbWVudC5cbiAqL1xuQG1peGluIHN0YWNrKCRwYWQ6IDAsICRhbGlnbjogZmFsc2UpIHtcbiAgJHNpZGU6IGplZXQtZ2V0LWxheW91dC1kaXJlY3Rpb24oKTtcbiAgJG9wcG9zaXRlLXNpZGU6IGplZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRzaWRlKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgY2xlYXI6IGJvdGg7XG4gIGZsb2F0OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiB7XG4gICAgbGVmdDogIGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH07XG5cbiAgJjpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLSN7JHNpZGV9OiBhdXRvO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tI3skb3Bwb3NpdGUtc2lkZX06IGF1dG87XG4gIH1cblxuICBAaWYgJHBhZCAhPSAwIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAgJHBhZDtcbiAgICAgIHJpZ2h0OiAkcGFkO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJGFsaWduIGlzIG5vdCBmYWxzZSkge1xuICAgIEBpZiBpbmRleChcImNlbnRlclwiIFwiY1wiLCAkYWxpZ24pIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9IEBlbHNlIGlmIGluZGV4KFwibGVmdFwiIFwibFwiLCAkYWxpZ24pIHtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfSBAZWxzZSBpZiBpbmRleChcInJpZ2h0XCIgXCJyXCIsICRhbGlnbikge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVW5zdGFjayBhbiBlbGVtZW50LlxuICovXG5AbWl4aW4gdW5zdGFjaygpIHtcbiAgJHNpZGU6IGplZXQtZ2V0LWxheW91dC1kaXJlY3Rpb24oKTtcbiAgJG9wcG9zaXRlLXNpZGU6IGplZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRzaWRlKTtcblxuICB0ZXh0LWFsaWduOiAkc2lkZTtcbiAgZGlzcGxheTogaW5saW5lO1xuICBjbGVhcjogbm9uZTtcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbjoge1xuICAgIGxlZnQ6ICAwO1xuICAgIHJpZ2h0OiAwO1xuICB9O1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi0jeyRzaWRlfTogMDtcbiAgfVxuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLSN7amVldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJHNpZGUpfTogMDtcbiAgfVxufVxuXG4vKipcbiAqIENlbnRlciBhbiBlbGVtZW50IG9uIGVpdGhlciBvciBib3RoIGF4ZXMuXG4gKiBAcmVxdWlyZXMgQSBwYXJlbnQgY29udGFpbmVyIHdpdGggcmVsYXRpdmUgcG9zaXRpb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gWyRkaXJlY3Rpb249Ym90aF0gLSBTcGVjaWZ5IHdoaWNoIGF4ZXMgdG8gY2VudGVyIHRoZSBlbGVtZW50IG9uLlxuICovXG5AbWl4aW4gYWxpZ24oJGRpcmVjdGlvbjogYm90aCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG5cbiAgQGlmIGluZGV4KFwiaG9yaXpvbnRhbFwiIFwiaFwiLCAkZGlyZWN0aW9uKSB7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfSBAZWxzZSBpZiBpbmRleChcInZlcnRpY2FsXCIgXCJ2XCIsICRkaXJlY3Rpb24pIHtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH0gQGVsc2Uge1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxufVxuXG4vKipcbiAqIEFwcGx5IGEgY2xlYXJmaXggdG8gYW4gZWxlbWVudC5cbiAqL1xuQG1peGluIGNmKCkge1xuICAqem9vbTogMTtcblxuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogdGFibGU7XG4gIH1cblxuICAmOmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuIiwiJGZvbnQtcGF0aDogJy93cC1jb250ZW50L3RoZW1lcy90ZXJtaW5hbC1sYW5jZS9mb250cy8nO1xuLy8gJGZvbnQtcGF0aDogJy93cC1jb250ZW50L3RoZW1lcy9idWlsZC90ZXJtaW5hbC1sYW5jZS9mb250cy8nO1xuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ21pZ2h0eV96ZW9fMi4wcmVndWxhcic7XG4gICAgc3JjOiB1cmwoJGZvbnQtcGF0aCArICdtaWdoel9fXy13ZWJmb250LmVvdCcpO1xuICAgIHNyYzogdXJsKCRmb250LXBhdGggKyAnbWlnaHpfX18td2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICAgdXJsKCRmb250LXBhdGggKyAnbWlnaHpfX18td2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcbiAgICAgICAgIHVybCgkZm9udC1wYXRoICsgJ21pZ2h6X19fLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgICAgdXJsKCRmb250LXBhdGggKyAnbWlnaHpfX18td2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgICB1cmwoJGZvbnQtcGF0aCArICdtaWdoel9fXy13ZWJmb250LnN2ZyNtaWdodHlfemVvXzIuMHJlZ3VsYXInKSBmb3JtYXQoJ3N2ZycpO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnbWlnaHR5X3plb18yLjBib2xkJztcbiAgICBzcmM6IHVybCgkZm9udC1wYXRoICsgJ21pZ2h6Yl9fLXdlYmZvbnQuZW90Jyk7XG4gICAgc3JjOiB1cmwoJGZvbnQtcGF0aCArICdtaWdoemJfXy13ZWJmb250LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgICB1cmwoJGZvbnQtcGF0aCArICdtaWdoemJfXy13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICAgdXJsKCRmb250LXBhdGggKyAnbWlnaHpiX18td2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgICB1cmwoJGZvbnQtcGF0aCArICdtaWdoemJfXy13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICAgICAgIHVybCgkZm9udC1wYXRoICsgJ21pZ2h6Yl9fLXdlYmZvbnQuc3ZnI21pZ2h0eV96ZW9fMi4wYm9sZCcpIGZvcm1hdCgnc3ZnJyk7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG5cbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdtaWdodHlfemVvX2NhcHNfMi4wcmVndWxhcic7XG4gICAgc3JjOiB1cmwoJGZvbnQtcGF0aCArICdtaWdoemNfXy13ZWJmb250LmVvdCcpO1xuICAgIHNyYzogdXJsKCRmb250LXBhdGggKyAnbWlnaHpjX18td2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICAgdXJsKCRmb250LXBhdGggKyAnbWlnaHpjX18td2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcbiAgICAgICAgIHVybCgkZm9udC1wYXRoICsgJ21pZ2h6Y19fLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgICAgdXJsKCRmb250LXBhdGggKyAnbWlnaHpjX18td2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgICB1cmwoJGZvbnQtcGF0aCArICdtaWdoemNfXy13ZWJmb250LnN2ZyNtaWdodHlfemVvX2NhcHNfMi4wcmVndWxhcicpIGZvcm1hdCgnc3ZnJyk7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG5cbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdtaWdodHlfemVvX2NhcHNfMi4wYm9sZCc7XG4gICAgc3JjOiB1cmwoJGZvbnQtcGF0aCArICdtaWdoemNiXy13ZWJmb250LmVvdCcpO1xuICAgIHNyYzogdXJsKCRmb250LXBhdGggKyAnbWlnaHpjYl8td2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICAgdXJsKCRmb250LXBhdGggKyAnbWlnaHpjYl8td2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcbiAgICAgICAgIHVybCgkZm9udC1wYXRoICsgJ21pZ2h6Y2JfLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgICAgdXJsKCRmb250LXBhdGggKyAnbWlnaHpjYl8td2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgICB1cmwoJGZvbnQtcGF0aCArICdtaWdoemNiXy13ZWJmb250LnN2ZyNtaWdodHlfemVvX2NhcHNfMi4wYm9sZCcpIGZvcm1hdCgnc3ZnJyk7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG5cbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdtaWdodHlfemVvX2NhcHNfMi4waXRhbGljJztcbiAgICBzcmM6IHVybCgkZm9udC1wYXRoICsgJ21pZ2h6Y2lfLXdlYmZvbnQuZW90Jyk7XG4gICAgc3JjOiB1cmwoJGZvbnQtcGF0aCArICdtaWdoemNpXy13ZWJmb250LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgICB1cmwoJGZvbnQtcGF0aCArICdtaWdoemNpXy13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICAgdXJsKCRmb250LXBhdGggKyAnbWlnaHpjaV8td2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgICB1cmwoJGZvbnQtcGF0aCArICdtaWdoemNpXy13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICAgICAgIHVybCgkZm9udC1wYXRoICsgJ21pZ2h6Y2lfLXdlYmZvbnQuc3ZnI21pZ2h0eV96ZW9fY2Fwc18yLjBpdGFsaWMnKSBmb3JtYXQoJ3N2ZycpO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnbWlnaHR5X3plb18yLjBpdGFsaWMnO1xuICAgIHNyYzogdXJsKCRmb250LXBhdGggKyAnbWlnaHppX18td2ViZm9udC5lb3QnKTtcbiAgICBzcmM6IHVybCgkZm9udC1wYXRoICsgJ21pZ2h6aV9fLXdlYmZvbnQuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICAgICAgIHVybCgkZm9udC1wYXRoICsgJ21pZ2h6aV9fLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgICB1cmwoJGZvbnQtcGF0aCArICdtaWdoemlfXy13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICAgIHVybCgkZm9udC1wYXRoICsgJ21pZ2h6aV9fLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuICAgICAgICAgdXJsKCRmb250LXBhdGggKyAnbWlnaHppX18td2ViZm9udC5zdmcjbWlnaHR5X3plb18yLjBpdGFsaWMnKSBmb3JtYXQoJ3N2ZycpO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG59XG4iLCIvLyBjaGFuZ2UgcGVyIHByb2plY3RcbiRiYXNlLWZvbnQ6IFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcblxuJG1pZ2h0eS1yZWd1bGFyOiAnbWlnaHR5X3plb18yLjByZWd1bGFyJztcbiRtaWdodHktYm9sZDogJ21pZ2h0eV96ZW9fMi4wYm9sZCc7XG4kbWlnaHR5LWl0YWxpYzogJ21pZ2h0eV96ZW9fMi4waXRhbGljJztcblxuLmRlZmF1bHQtdHlwZSB7XG4gIGZvbnQtZmFtaWx5OiAkYmFzZS1mb250O1xuICBjb2xvcjogJGNvYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG59XG5cbmJvZHksIHAsIGEsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsXG5zbWFsbCwgZW0sIHN0cm9uZywgaW5wdXQsIGJ1dHRvbiB7XG4gIEBleHRlbmQgLmRlZmF1bHQtdHlwZTtcbn1cblxuLy8gSGVhZGVyc1xuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDFyZW0gMDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIGEgeyBjb2xvcjogaW5oZXJpdDsgIH1cbn1cblxuLy8gR2xvYmFsIHJlc3BvbnNpdmUgdHlwb2dyYXBoeSAtIGVkaXQgcGVyIHByb2plY3Rcbi8vIFR5cGUgd2lsbCBiZSBmbHVpZCBiZXR3ZWVuIG1pbiBhbmQgbWF4IHNpemVzXG4vLyBTZWUgbWl4aW4gZmx1aWQtdHlwZSgpIGluIEtuYXBzYWNrXG5cbmgxIHsgQGluY2x1ZGUgZmx1aWQtdHlwZSgzNnB4LCA1NnB4LCA0MjBweCwgMTAyNHB4KTsgfVxuaDIgeyBAaW5jbHVkZSBmbHVpZC10eXBlKDM2cHgsIDQ4cHgsIDQyMHB4LCAxMDI0cHgpOyB9XG5oMyB7IEBpbmNsdWRlIGZsdWlkLXR5cGUoMzBweCwgMzZweCwgNDIwcHgsIDEwMjRweCk7IH1cbmg0IHsgQGluY2x1ZGUgZmx1aWQtdHlwZSgyNHB4LCAzMHB4LCA0MjBweCwgMTAyNHB4KTsgfVxuaDUgeyBAaW5jbHVkZSBmbHVpZC10eXBlKDIwcHgsIDI0cHgsIDQyMHB4LCAxMDI0cHgpOyB9XG5oNiB7IEBpbmNsdWRlIGZsdWlkLXR5cGUoMThweCwgMjBweCwgNDIwcHgsIDEwMjRweCk7IH1cbnAsIHVsLCBsaSwgb2wgeyBAaW5jbHVkZSBmbHVpZC10eXBlKDE1cHgsIDE4cHgpO31cblxuLnBhZ2UtbWFpbiB7XG4gIGgxIHsgQGluY2x1ZGUgZmx1aWQtdHlwZSgyMnB4LCAyNHB4LCA0MjBweCwgMTAyNHB4KTsgfVxuICBoMiB7IEBpbmNsdWRlIGZsdWlkLXR5cGUoMjBweCwgMjJweCwgNDIwcHgsIDEwMjRweCk7IH1cbiAgaDMgeyBAaW5jbHVkZSBmbHVpZC10eXBlKDE4cHgsIDIwcHgsIDQyMHB4LCAxMDI0cHgpOyB9XG4gIGg0IHsgQGluY2x1ZGUgZmx1aWQtdHlwZSgxNnB4LCAxOHB4LCA0MjBweCwgMTAyNHB4KTsgfVxuICBoNSB7IEBpbmNsdWRlIGZsdWlkLXR5cGUoMTZweCwgMThweCwgNDIwcHgsIDEwMjRweCk7IH1cbiAgaDYgeyBAaW5jbHVkZSBmbHVpZC10eXBlKDE2cHgsIDE4cHgsIDQyMHB4LCAxMDI0cHgpOyB9XG4gIHAsIHVsLCBsaSwgb2wgeyBAaW5jbHVkZSBmbHVpZC10eXBlKDE0cHgsIDE2cHgpO31cbn1cblxuLy8gTGV0dGVyc3BhY2luZ1xuJHRpZ2h0LXNwYWNpbmc6IC0uMDQ1ZW07XG4kc251Zy1zcGFjaW5nOiAgLS4wMmVtO1xuJG1vcmUtc3BhY2luZzogIC4xZW07XG5cbi8vIFdlYmtpdCBhbnRpYWxpYXNpbmdcbkBtaXhpbiBoZWF2eS1hbnRpYWxpYXMoKSB7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkO1xufVxuXG4vLyBHZW5lcmljIFN0eWxlc1xucCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjVlbTtcbiAgbWFyZ2luOiAxZW0gMDtcbn1cbmEgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiIsIi8vIENvbG9yc1xuJGJsYWNrOiAjMjIyO1xuJGNvYWw6ICM0NDQ7XG4kd2hpdGU6ICNGRkY7XG5cbiRncmV5OiAjQzRDNEM0O1xuJGQtZ3JleTogIzhDOEM4QztcblxuLy8gQnJhbmQgQ29sb3JzXG4kZ29sZDogIzk3NDtcbiRnb2xkLWw6ICNjYzllNWE7XG5cbi8vIENvbG9ycyBieSBVc2VcbiRncmVlbjogIzAyNzIzNDtcbiRkYXJrLWdyZWVuOiAjMGM1NzI5O1xuIiwiLy8gLS0tLVxuLy8gVHlwb2dyYXBoeVxuLy8gLS0tLVxuXG4vLy0gTWl4aW46IElubGluZSBMaXN0XG4vLy9cbi8vLyBGb3Igd2hlbiB5b3UgbmVlZCB5b3VyIGxpc3QgdG8gYmUgaG9yaXpvbnRhbC5cbi8vL1xuLy8vIEBwYXJhbSB7dmFyaWFibGV9ICRzcGFjaW5nIFsyMHB4XSAtIEFtb3VudCBvZiBzcGFjaW5nIGJldHdlZW4gZWxlbWVudHMgLVxuLy8vIGNhbiBiZSB3aGF0ZXZlciB1bml0IHlvdSBsaWtlLlxuLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHlcbi8vLyBAZXhhbXBsZVxuLy8vICAgdWwge1xuLy8vICAgICBAaW5jbHVkZSBpbmxpbmUtbGlzdCgpO1xuLy8vICAgfVxuXG5AbWl4aW4gaW5saW5lLWxpc3QoJHNwYWNpbmc6IDIwcHgpIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuXG4gIGxpIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZztcbiAgfVxuXG4gIGxpOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG4vLy0gTWl4aW46IElubGluZSBMaXN0XG4vLy9cbi8vLyBXZSB0ZW5kIHRvIHNwZW5kIGEgZ3JlYXQgZGVhbCBvZiB0aW1lIHJlc2V0dGluZyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgZm9yXG4vLy8gbGlzdHMuIFRoaXMgcHV0cyB0aGVtIGJhY2sgdG8gcm91Z2hseSB0aGUgc2FtZSBzdGF0ZSBhcyBicm93c2VyIGRlZmF1bHRzLlxuLy8vIFlvdSBjYW4gcGFzcyBpdCBhbnkgb3B0aW9uIHRoYXQgW2xpc3Qtc3R5bGUtdHlwZV1cbi8vLyAoaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL2Nzc3JlZi9wcl9saXN0LXN0eWxlLXR5cGUuYXNwKSB3b3VsZCBub3JtYWxseVxuLy8vIHRha2UuXG4vLy9cbi8vLyBAcGFyYW0ge3ZhcmlhYmxlfSAkc3R5bGUgW2Rpc2NdIC0gQW1vdW50IG9mIHNwYWNpbmcgYmV0d2VlbiBlbGVtZW50cy5cbi8vLyBjYW4gYmUgd2hhdGV2ZXIgdW5pdCB5b3UgbGlrZS5cbi8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5XG4vLy8gQGV4YW1wbGVcbi8vLyAgIHVsIHtcbi8vLyAgICAgQGluY2x1ZGUgdGV4dC1saXN0KCk7XG4vLy8gICB9XG4vLy8gICB1bCB7XG4vLy8gICAgIEBpbmNsdWRlIHRleHQtbGlzdCgnZGlzYycpO1xuLy8vICAgfVxuXG5AbWl4aW4gdGV4dC1saXN0KCRzdHlsZTogJ2Rpc2MnKSB7XG4gIG1hcmdpbjogLjMycmVtIC45NHJlbTtcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuXG4gIGxpIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IHVucXVvdGUoJHN0eWxlKTtcbiAgICBwYWRkaW5nOiAuMTI1cmVtIDA7XG4gIH1cbn1cblxuLy8tIE1peGluOiBSZXNldCBMaXN0XG4vLy9cbi8vLyAgUmVzZXRzIHRoZSBtYXJnaW5zIHBhZGRpbmcsIGFuZCBzdHlsZXMgdG8gbGlzdC5cbi8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5XG4vLy8gQGV4YW1wbGVcbi8vLyAgIHVsIHtcbi8vLyAgICAgQGluY2x1ZGUgcmVzZXQtbGlzdCgpO1xuLy8vICAgfVxuXG5AbWl4aW4gcmVzZXQtbGlzdCgpIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuXG4gIGxpIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuXG4vLy0gTWl4aW46IEVsbGlwc2lzXG4vLy9cbi8vLyBUcnVuY2F0ZSB0ZXh0IHRvIHRoZSB3aWR0aCBvZiBpdHMgY29udGFpbmVyLi4uXG4vLy9cbi8vLyBAcGFyYW0ge3ZhcmlhYmxlfSAkd2lkdGggWzEwMCVdIC0gV2lkdGggb2YgdGhlIGNvbnRhaW5lclxuLy8vIGNhbiBiZSB3aGF0ZXZlciB1bml0IHlvdSBsaWtlLlxuLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHlcbi8vLyBAZXhhbXBsZVxuLy8vICAgaDMge1xuLy8vICAgICBAaW5jbHVkZSBlbGxpcHNpcygpO1xuLy8vICAgfVxuXG5AbWl4aW4gZWxsaXBzaXMoJHdpZHRoOiAxMDAlKSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAkd2lkdGg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3b3JkLXdyYXA6IG5vcm1hbDtcbn1cblxuXG4vLy0gTWl4aW46IEZsdWlkIFR5cGVcbi8vL1xuLy8vIE1hZ2ljIGNhbGMgKyB2aCBjb21ibyB0byBhbGxvdyB0ZXh0IHRvIGJlIGZsdWlkIGJldHdlZW4gbWluaW11bVxuLy8vIGFuZCBtYXhpbXVtIGJyZWFrcG9pbnRzLlxuLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHlcbi8vLyBAcGFyYW0ge3ZhcmlhYmxlfSAkbWluLWZvbnQtc2l6ZSBbMTJweF0gLSBNaW5pbXVtIGZvbnQgc2l6ZVxuLy8vIEBwYXJhbSB7dmFyaWFibGV9ICRtYXgtZm9udC1zaXplIFsyNHB4XSAtIE1heGltdW0gZm9udCBzaXplXG4vLy8gQHBhcmFtIHt2YXJpYWJsZX0gJGxvd2VyLXJhbmdlIFs0MjBweF0gLSBTdG9wIHNjYWxpbmcgZm9udCBzbWFsbGVyIGF0IHRoaXMgc2NyZWVuIHJlc29sdXRpb25cbi8vLyBAcGFyYW0ge3ZhcmlhYmxlfSAkdXBwZXItcmFuZ2UgWzkwMHB4XSAtIFN0b3Agc2NhbGluZyBmb250IGxhcmdlciBhdCB0aGlzIHNjcmVlbiByZXNvbHV0aW9uXG4vLy8gQGV4YW1wbGVcbi8vLyAgIGgxIHtcbi8vLyAgICAgQGluY2x1ZGUgZmx1aWQtdHlwZSgyMHB4LCA0OHB4KTtcbi8vLyAgIH1cbi8vLyBAbGluayBodHRwOi8vY29kZXBlbi5pby9kYm94L3Blbi9tZWFNYmFcblxuQG1peGluIGZsdWlkLXR5cGUoJG1pbi1mb250LXNpemU6IDEycHgsICRtYXgtZm9udC1zaXplOiAyMXB4LCAkbG93ZXItcmFuZ2U6IDQyMHB4LCAkdXBwZXItcmFuZ2U6IDkwMHB4KSB7XG4gIGZvbnQtc2l6ZTogY2FsYygjeyRtaW4tZm9udC1zaXplfSArICN7KCgkbWF4LWZvbnQtc2l6ZSAvICgkbWF4LWZvbnQtc2l6ZSAqIDAgKyAxKSkgLSAoJG1pbi1mb250LXNpemUgLyAoJG1pbi1mb250LXNpemUgKiAwICsgMSkpKX0gKiAoKDEwMHZ3IC0gI3skbG93ZXItcmFuZ2V9KSAvICN7KCgkdXBwZXItcmFuZ2UgLyAoJHVwcGVyLXJhbmdlICogMCArIDEpKSAtICgkbG93ZXItcmFuZ2UgLyAoJGxvd2VyLXJhbmdlICogMCArIDEpKSl9KSk7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxvd2VyLXJhbmdlKSB7XG4gICAgZm9udC1zaXplOiAkbWluLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR1cHBlci1yYW5nZSl7XG4gICAgZm9udC1zaXplOiAkbWF4LWZvbnQtc2l6ZTtcbiAgfVxufVxuIiwiLy8gTWF4IGNvbnRhaW5lciBiYXNlZCBvbiAkbWF4LXNpdGUtd2lkdGg6XG4ubWF4LWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICBAaW5jbHVkZSBjZW50ZXIoJG1heC1zaXRlLXdpZHRoLCAwKTtcbiAgXG4gIGJvcmRlci10b3A6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG5cbiAgQGluY2x1ZGUgbWVkaWEoXCI8dGFibGV0XCIpIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuLy8gUmVzcG9uc2l2ZSBjb250YWluZXJcbi5jb250YWluZXIge1xuICBAaW5jbHVkZSBjZW50ZXIoJGxhcmdlciwgMjBweCk7XG4gIEBpbmNsdWRlIG1lZGlhKFwiPHRhYmxldFwiKSB7XG4gICAgcGFkZGluZzogMCA0JTtcbiAgfVxufVxuXG4ud3AtY2FwdGlvbixcbi5hbGlnbmNlbnRlciB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5pbm5lci1jb250YWluZXIge1xuICB3aWR0aDogNzAlO1xuICBtYXJnaW46IDAgYXV0bztcbiAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG5cdFx0d2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMCA0JTtcblx0fVxufVxuXG4vLyBVdGlsaXR5IGNsYXNzZXNcbi5jZiB7XG4gIEBpbmNsdWRlIGNmKCk7XG59XG5cbi5sb25nLWFkc3BhY2Uge1xuICBpbWcge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJzxtb2JpbGUtbCcpIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxufVxuXG4uYWR2LXdpZGdldCB7XG4gIHBhZGRpbmc6IHJlbSgxMHB4KTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8vIEFkZGl0aW9uYWwgcmVzZXRzIC8gYmFzZSBzdHlsaW5nIC0gc2VlIGtuYXBzYWNrOlxuQGluY2x1ZGUgcmVzZXQtZWxlbWVudHMoKTtcblxuaW5wdXQgICB7IG91dGxpbmU6IG5vbmU7IH1cbnRhYmxlICAge1xuICAvLyBUdXJuIHRoaXMgb24gZm9yIGRlZmF1bHQgdGFibGUgc3R5bGluZ1xuICAvLyBAaW5jbHVkZSB0YWJsZSgpO1xufVxuY29kZSAgICB7IEBpbmNsdWRlIGNvZGUoKTsgfVxucHJlICAgICB7IEBpbmNsdWRlIHByZSgpIH1cbmhyICAgICAgeyBAaW5jbHVkZSBydWxlKCk7IH1cbm5hdiB1bCAgeyBAaW5jbHVkZSByZXNldC1saXN0KCk7IH1cbnVsLnRleHQgeyBAaW5jbHVkZSB0ZXh0LWxpc3QoKTt9XG5vbC50ZXh0IHsgQGluY2x1ZGUgdGV4dC1saXN0KCdkZWNpbWFsJyk7fVxuXG51bC50ZXh0IHVsLCB1bC50ZXh0IG9sLCBvbC50ZXh0IG9sLCBvbC50ZXh0IHVsIHsgbWFyZ2luOiAuM3JlbSAxcmVtIDA7fVxuXG5cbiosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbn1cblxuI3dwYWRtaW5iYXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogYXV0bztcbiAgem9vbTogMTtcbn1cblxuLmVycm9yLXdyYXAge1xuICBwYWRkaW5nOiAyMHZoIDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBoMSxoMiB7XG4gICAgZm9udC1mYW1pbHk6ICRtaWdodHktYm9sZDtcbiAgfVxuXG4gIGgxIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgZm9udC1zaXplOiAxMDBweDtcbiAgfVxuXG4gIGgyIHtcbiAgICBtYXJnaW46IDAgMCA1MHB4O1xuICB9XG5cbiAgLmJ0biB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZWVuO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGFyay1ncmVlbjtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEdlbmVyYWwgU2V0dGluZ3NcbiRiYXNlLWZvbnQtc2l6ZTogMTZweDtcbiRnbG9iYWwtYm9yZGVyLXJhZGl1czogM3B4O1xuXG4vLyBCcmVha3BvaW50cyB0byBiZSB1c2VkIHdpdGggaW5jbHVkZS1tZWRpYVxuLy8gRXhhbXBsZSBDc3M6IGh0dHA6Ly9pbmNsdWRlLW1lZGlhLmNvbS8jZmVhdHVyZXNcblxuJG1vYmlsZTogMzIwcHg7XG4kbW9iaWxlLWw6IDY0MHB4O1xuJHRhYmxldDogNzY4cHg7XG4kdGFibGV0LWw6IDEwMjRweDtcbiRkZXNrdG9wOiAxMjgwcHg7XG4kbGFyZ2VyOiAxNDQwcHg7XG4kbWF4LXNpdGUtd2lkdGg6IDE2MDBweDtcblxuJGJyZWFrcG9pbnRzOiAoXG4gICdtb2JpbGUnOiAkbW9iaWxlLFxuICAnbW9iaWxlLWwnOiAkbW9iaWxlLWwsXG4gICd0YWJsZXQnOiAkdGFibGV0LFxuICAndGFibGV0LWwnOiAkdGFibGV0LWwsXG4gICdkZXNrdG9wJzogJGRlc2t0b3AsXG4gICdtYXgtc2l0ZS13aWR0aCc6ICRtYXgtc2l0ZS13aWR0aFxuKTtcbiIsIi8vIC0tLS1cbi8vIExheW91dFxuLy8gLS0tLVxuXG4vLy0gTWl4aW46IENsZWFyZml4XG4vLy9cbi8vLyBKdXN0IHlvdXIgc3RhbmRhcmQgY2xlYXJmaXguXG4vLy9cbi8vLyBAZ3JvdXAgbGF5b3V0XG4vLy8gQGV4YW1wbGVcbi8vLyAgIEBpbmNsdWRlIGNsZWFyZml4KCk7XG5cbkBtaXhpbiBjbGVhcmZpeCgpIHtcbiAgJjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogdGFibGU7XG4gIH1cbn1cblxuLy8tIEFsaWFzOiBjZlxuLy8vXG4vLy8gQGdyb3VwIGxheW91dFxuLy8vIEBleGFtcGxlXG4vLy8gICBAaW5jbHVkZSBjZigpO1xuLy8vIEBhbGlhcyBjbGVhcmZpeFxuXG5AbWl4aW4gY2YoKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4KCk7XG59XG5cbi8vLSBNaXhpbjogUmF0aW8gQm94XG4vLy9cbi8vLyBUaGlzIHNldHMgYSBzcGVjaWZpYyB3aWR0aC9oZWlnaHQgcmF0aW8uIFVzZWZ1bCBvbiBiYWNrZ3JvdW5kIGltYWdlcyxcbi8vLyBpZnJhbWVzIGFuZCBZb3V0dWJlIGVtYmVkcy5cbi8vL1xuLy8vICoqbm90ZSoqOiBBbnkgY29udGVudCBpbnNpZGUgYHJhdGlvLWJveGAgd2lsbCBuZWVkIHRvIGJlIHBvc2l0aW9uZWRcbi8vLyBhYnNvbHV0ZWx5IGFzIG5vdCB0byBjaGFuZ2UgdGhlIGFzcGVjdC1yYXRpby5cbi8vL1xuLy8vIEBwYXJhbSB7dmFyaWFibGV9ICRyYXRpbyBbMSAvIDFdIC0gQXNwZWN0IHJhdGlvOiBoZWlnaHQgLyB3aWR0aFxuLy8vIEBncm91cCBsYXlvdXRcbi8vLyBAZXhhbXBsZVxuLy8vICAgZmlndXJlIHtcbi8vLyAgICAgQGluY2x1ZGUgcmF0aW8oMTYgLyA5KTtcbi8vLyAgIH1cbi8vLyBAbGluayBodHRwOi8vd3d3Lm1hZGVteWRheS5kZS9jc3MtaGVpZ2h0LWVxdWFscy13aWR0aC13aXRoLXB1cmUtY3NzLmh0bWxcblxuQG1peGluIHJhdGlvLWJveCgkcmF0aW86IDEgLyAxKSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAoMSAvICRyYXRpbykgKiAxMDAlO1xuICB9XG59XG5cbi8vLSBNaXhpbjogRnVsbCBQYWdlXG4vLy9cbi8vLyBDcmVhdGUgYSByZXNwb25zaXZlIGZ1bGwgcGFnZSBzZWN0aW9uIHdpdGggaW50ZWxsaWdlbnQgZGVmYXVsdHMuXG4vLy8gUmVzZXRzIG9uIG1vYmlsZS5cbi8vL1xuLy8vIEBwYXJhbSB7dmFyaWFibGV9ICRoZWlnaHQgWzEwMHZoXSAtIFBhZ2UgaGVpZ2h0XG4vLy8gQHBhcmFtIHt2YXJpYWJsZX0gJG1heC1oZWlnaHQgWzg1MHB4XSAtIE1heCBwYWdlIGhlaWdodFxuLy8vIEBwYXJhbSB7dmFyaWFibGV9ICRtaW4taGVpZ2h0IFs2MDBweF0gLSBNaW4gcGFnZSBoZWlnaHRcbi8vLyBAcGFyYW0ge3ZhcmlhYmxlfSAkYnJlYWtwb2ludCBbNzY4cHhdIC0gRGlzYWJsZSBiZWxvdyB0aGlzIHNpemUgb3IgcGFzc1xuLy8vICdudWxsJyB0byBub3QgdXNlIGEgYnJlYWtwb2ludC5cbi8vLyBAZ3JvdXAgbGF5b3V0XG4vLy8gQGV4YW1wbGVcbi8vLyAgIHNlY3Rpb24ge1xuLy8vICAgICBAaW5jbHVkZSBmdWxsLXBhZ2UoKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgc2VjdGlvbiB7XG4vLy8gICAgIEBpbmNsdWRlIGZ1bGwtcGFnZShjYWxjKDEwMHZoIC0gOTBweCksIDgwMHB4LCA1MDBweCk7XG4vLy8gICB9XG4vLy8gQGxpbmsgaHR0cDovL2NvZGVwZW4uaW8vZGJveC9wZW4vT3l6cnJWXG5cblxuQG1peGluIGZ1bGwtcGFnZSgkaGVpZ2h0OiAxMDB2aCwgJG1heC1oZWlnaHQ6IDg1MHB4LCAkbWluLWhlaWdodDogNjAwcHgsICRicmVha3BvaW50OiA3NjhweCkge1xuICAvLyBEaXNhYmxlIGJlbG93IHNldCBicmVha3BvaW50XG4gIEBpZiAoJGJyZWFrcG9pbnQpIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWtwb2ludCkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgbWF4LWhlaWdodDogJG1heC1oZWlnaHQ7XG4gICAgICBtaW4taGVpZ2h0OiAkbWluLWhlaWdodDtcbiAgICB9XG4gIC8vIFNob3cgZm9yIGFsbCBzaXplc1xuICB9IEBlbHNlIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgbWF4LWhlaWdodDogJG1heC1oZWlnaHQ7XG4gICAgbWluLWhlaWdodDogJG1pbi1oZWlnaHQ7XG4gIH1cbn1cblxuLy8gTWl4aW46IFZlcnRpY2FsbHkgQWxpZ25cbi8vIENyb3NzIGJyb3dzZXIgdmVydGljYWwgYWxpZ24uIFdvcmtzIGRvd24gdG8gSUU5LlxuLy9cbi8vIGV4LiBAaW5jbHVkZSB2ZXJ0aWNhbGx5LWFsaWduKCk7XG5cbi8vLSBNaXhpbjogVmVydGljYWxseSBBbGlnblxuLy8vXG4vLy8gQ3Jvc3MgYnJvd3NlciB2ZXJ0aWNhbCBhbGlnbi4gV29ya3MgZG93biB0byBJRTkuXG4vLy9cbi8vLyBAcGFyYW0ge3ZhcmlhYmxlfSAkcmVzZXQgW051bGxdIC0gUGFzcyBgZmFsc2VgIHRvIHJlc2V0IG92ZXJyaWRlIHRvIG9yaWdpbmFsXG4vLy8gdmFsdWVzXG4vLy8gQGdyb3VwIGxheW91dFxuLy8vIEBleGFtcGxlXG4vLy8gICBhcnRpY2xlIHtcbi8vLyAgICAgQGluY2x1ZGUgdmVydGljYWxseS1hbGlnbigpO1xuLy8vICAgfVxuLy8vXG4vLy8gICBoNCB7XG4vLy8gICAgIEBpbmNsdWRlIHZlcnRpY2FsbHktYWxpZ24oZmFsc2UpO1xuLy8vICAgfVxuLy8vIEBsaW5rIGh0dHA6Ly96ZXJvc2l4dGhyZWUuc2UvdmVydGljYWwtYWxpZ24tYW55dGhpbmctd2l0aC1qdXN0LTMtbGluZXMtb2YtY3NzL1xuXG5AbWl4aW4gdmVydGljYWxseS1hbGlnbigkcmVzZXQgOiBudWxsKSB7XG4gIEBpZiAoJHJlc2V0ICE9IGZhbHNlKSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfSBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuLy8tIE1peGluOiBIb3Jpem9udGFsIFJ1bGVcbi8vL1xuLy8vIENsZWFuIHJlc2V0IGZvciBkaXZpZGVyIGxpbmVzLlxuLy8vXG4vLy8gQHBhcmFtIHt2YXJpYWJsZX0gJGNvbG9yIFtyZ2JhKCMwMDAsIC4xNSldIC0gTGluZSBjb2xvclxuLy8vIEBwYXJhbSB7dmFyaWFibGV9ICRzcGFjaW5nIFsxLjVlbV0gLSBNYXJnaW4gYWJvdmUgYW5kIGJlbG93IHRoZSBsaW5lXG4vLy9cbi8vLyBAZ3JvdXAgbGF5b3V0XG4vLy8gQGV4YW1wbGVcbi8vLyAgIGhyIHtcbi8vLyAgICAgQGluY2x1ZGUgcnVsZSgpO1xuLy8vICAgfVxuLy8vICAgaHIuYmx1ZSB7XG4vLy8gICAgIEBpbmNsdWRlIHJ1bGUoYmx1ZSk7XG4vLy8gICB9XG4vLy8gQHRvZG8gLSAkYm9yZGVyLXdpZHRoIHBhcmFtXG5cbkBtaXhpbiBydWxlKCRjb2xvcjogcmdiYSgjMDAwLCAuMTUpLCAkc3BhY2luZzogMS41ZW0pIHtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogJHNwYWNpbmcgMDtcbn1cblxuXG4vLy0gTWl4aW46IFRhYmxlIExheW91dFxuLy8vXG4vLy8gU2V0cyBlbGVtZW50IGFuZCBpdHMgY2hpbGRyZW4gdG8gdXNlIHRhYmxlIGxheW91dC4gQW4gb2xkIGJ1dCB2ZXJ5IHBvd2VyZnVsXG4vLy8gY3NzIHByb3BlcnR5IGZvciBmbGV4aWJsZSBsYXlvdXQgY2hhbGxlbmdlcy5cbi8vL1xuLy8vIEBwYXJhbSB7dmFyaWFibGV9ICRsYXlvdXQtdHlwZSBbZml4ZWRdIC0gYGZpeGVkYCBvciBgYXV0b2Bcbi8vL1xuLy8vIEBncm91cCBsYXlvdXRcbi8vLyBAZXhhbXBsZVxuLy8vICAgdWwge1xuLy8vICAgICBAaW5jbHVkZSB0YWJsZS1sYXlvdXQoKTtcbi8vLyAgIH1cbi8vLyBAbGluayBodHRwOi8vY29kZXBlbi5pby9kYm94L3Blbi9wdnJaWlZcbi8vLyBAbGluayBodHRwOi8vY29saW50b2guY29tL2Jsb2cvZGlzcGxheS10YWJsZS1hbnRpLWhlcm9cblxuQG1peGluIHRhYmxlLWxheW91dCgkbGF5b3V0LXR5cGU6ICdmaXhlZCcpIHtcbiAgZGlzcGxheTogdGFibGU7XG4gIHRhYmxlLWxheW91dDogJGxheW91dC10eXBlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gKiB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgJ1VURi04JztcblxuLy8gICAgIF8gICAgICAgICAgICBfICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAgICAgXyBfXG4vLyAgICAoXykgICAgICAgICAgfCB8ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF8pXG4vLyAgICAgXyBfIF9fICAgX19ffCB8XyAgIF8gIF9ffCB8IF9fXyAgIF8gX18gX19fICAgX19fICBfX3wgfF8gIF9fIF9cbi8vICAgIHwgfCAnXyBcXCAvIF9ffCB8IHwgfCB8LyBfYCB8LyBfIFxcIHwgJ18gYCBfIFxcIC8gXyBcXC8gX2AgfCB8LyBfYCB8XG4vLyAgICB8IHwgfCB8IHwgKF9ffCB8IHxffCB8IChffCB8ICBfXy8gfCB8IHwgfCB8IHwgIF9fLyAoX3wgfCB8IChffCB8XG4vLyAgICB8X3xffCB8X3xcXF9fX3xffFxcX18sX3xcXF9fLF98XFxfX198IHxffCB8X3wgfF98XFxfX198XFxfXyxffF98XFxfXyxffFxuLy9cbi8vICAgICAgU2ltcGxlLCBlbGVnYW50IGFuZCBtYWludGFpbmFibGUgbWVkaWEgcXVlcmllcyBpbiBTYXNzXG4vLyAgICAgICAgICAgICAgICAgICAgICAgIHYxLjQuMVxuLy9cbi8vICAgICAgICAgICAgICAgIGh0dHA6Ly9pbmNsdWRlLW1lZGlhLmNvbVxuLy9cbi8vICAgICAgICAgQXV0aG9yczogRWR1YXJkbyBCb3VjYXMgKEBlZHVhcmRvYm91Y2FzKVxuLy8gICAgICAgICAgICAgICAgICBIdWdvIEdpcmF1ZGVsIChAaHVnb2dpcmF1ZGVsKVxuLy9cbi8vICAgICAgVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2VcblxuXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBsaWJyYXJ5IHB1YmxpYyBjb25maWd1cmF0aW9uXG4vLy8gQGF1dGhvciBFZHVhcmRvIEJvdWNhc1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8vXG5cblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2YgZ2xvYmFsIGJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHdpdGggdGhlIGxhYmVsIGBwaG9uZWBcbi8vLyAgJGJyZWFrcG9pbnRzOiAoJ3Bob25lJzogMzIwcHgpO1xuLy8vXG4kYnJlYWtwb2ludHM6IChcbiAgJ3Bob25lJzogMzIwcHgsXG4gICd0YWJsZXQnOiA3NjhweCxcbiAgJ2Rlc2t0b3AnOiAxMDI0cHhcbikgIWRlZmF1bHQ7XG5cblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2Ygc3RhdGljIGV4cHJlc3Npb25zIG9yIG1lZGlhIHR5cGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBtZWRpYSB0eXBlIChzY3JlZW4pXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nOiAnc2NyZWVuJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHN0YXRpYyBleHByZXNzaW9uIHdpdGggbG9naWNhbCBkaXNqdW5jdGlvbiAoT1Igb3BlcmF0b3IpXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKFxuLy8vICAgICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJ1xuLy8vICApO1xuLy8vXG4kbWVkaWEtZXhwcmVzc2lvbnM6IChcbiAgJ3NjcmVlbic6ICdzY3JlZW4nLFxuICAncHJpbnQnOiAncHJpbnQnLFxuICAnaGFuZGhlbGQnOiAnaGFuZGhlbGQnLFxuICAnbGFuZHNjYXBlJzogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdwb3J0cmFpdCc6ICcob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJyxcbiAgJ3JldGluYTN4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDMpLCAobWluLXJlc29sdXRpb246IDM1MGRwaSknXG4pICFkZWZhdWx0O1xuXG5cbi8vL1xuLy8vIERlZmluZXMgYSBudW1iZXIgdG8gYmUgYWRkZWQgb3Igc3VidHJhY3RlZCBmcm9tIGVhY2ggdW5pdCB3aGVuIGRlY2xhcmluZyBicmVha3BvaW50cyB3aXRoIGV4Y2x1c2l2ZSBpbnRlcnZhbHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcGl4ZWxzIGlzIGRlZmluZWQgYXMgYDFgIGJ5IGRlZmF1bHRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4xMjhweCcpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMTI5cHgpIHt9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIGVtcyBpcyBkZWZpbmVkIGFzIGAwLjAxYCBieSBkZWZhdWx0XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+MjBlbScpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMjAuMDFlbSkge31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcmVtcyBpcyBkZWZpbmVkIGFzIGAwLjFgIGJ5IGRlZmF1bHQsIHRvIGJlIHVzZWQgd2l0aCBgZm9udC1zaXplOiA2Mi41JTtgXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+Mi4wcmVtJykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyLjFyZW0pIHt9XG4vLy9cbiR1bml0LWludGVydmFsczogKFxuICAncHgnOiAxLFxuICAnZW0nOiAwLjAxLFxuICAncmVtJzogMC4xXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBEZWZpbmVzIHdoZXRoZXIgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllcyBpcyBhdmFpbGFibGUsIHVzZWZ1bCBmb3IgY3JlYXRpbmcgc2VwYXJhdGUgc3R5bGVzaGVldHNcbi8vLyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IG1lZGlhIHF1ZXJpZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRGlzYWJsZXMgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbiRpbS1tZWRpYS1zdXBwb3J0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIGJyZWFrcG9pbnQgdG8gZW11bGF0ZSB3aGVuIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgZGlzYWJsZWQuIE1lZGlhIHF1ZXJpZXMgdGhhdCBzdGFydCBhdCBvclxuLy8vIGludGVyY2VwdCB0aGUgYnJlYWtwb2ludCB3aWxsIGJlIGRpc3BsYXllZCwgYW55IG90aGVycyB3aWxsIGJlIGlnbm9yZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIE5PVCBzaG93IGJlY2F1c2UgaXQgZG9lcyBub3QgaW50ZXJjZXB0IHRoZSBkZXNrdG9wIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ3RhYmxldCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIG1lZGlhIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIGFuIGV4cHJlc3Npb24gZm9yIGl0IHRvIGJlIHVzZWQgd2hlbiBtZWRpYSBxdWVyaWVzXG4vLy8gYXJlIG5vdCBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBhbmQgY29udGFpbnMgb25seSBhY2NlcHRlZCBtZWRpYSBleHByZXNzaW9uc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3NjcmVlbicpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgIC5mb28ge1xuLy8vICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGJ1dCBjb250YWlucyBhIG1lZGlhIGV4cHJlc3Npb24gdGhhdCBpcyBub3QgYWNjZXB0ZWRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdyZXRpbmEyeCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogTm8gb3V0cHV0ICovXG4vLy9cbiRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nLCAncG9ydHJhaXQnLCAnbGFuZHNjYXBlJykgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBDcm9zcy1lbmdpbmUgbG9nZ2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBMb2cgYSBtZXNzYWdlIGVpdGhlciB3aXRoIGBAZXJyb3JgIGlmIHN1cHBvcnRlZCBcbi8vLyBlbHNlIHdpdGggYEB3YXJuYCwgdXNpbmcgYGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpYFxuLy8vIHRvIGRldGVjdCBzdXBwb3J0LlxuLy8vIFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBmdW5jdGlvbiBsb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpIHtcbiAgICBAZXJyb3IgJG1lc3NhZ2U7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICRtZXNzYWdlO1xuICAgICRfOiBub29wKCk7XG4gIH1cblxuICBAcmV0dXJuICRtZXNzYWdlO1xufVxuXG5cbi8vLyBcbi8vLyBXcmFwcGVyIG1peGluIGZvciB0aGUgbG9nIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggYSBtb3JlIGZyaWVuZGx5XG4vLy8gQVBJIHRoYW4gYEBpZiBsb2coJy4uJykge31gIG9yIGAkXzogbG9nKCcuLicpYC4gQmFzaWNhbGx5LCB1c2UgdGhlIGZ1bmN0aW9uXG4vLy8gd2l0aGluIGZ1bmN0aW9ucyBiZWNhdXNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbmNsdWRlIGEgbWl4aW4gaW4gYSBmdW5jdGlvblxuLy8vIGFuZCB1c2UgdGhlIG1peGluIGV2ZXJ5d2hlcmUgZWxzZSBiZWNhdXNlIGl0J3MgbXVjaCBtb3JlIGVsZWdhbnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lc3NhZ2UgLSBNZXNzYWdlIHRvIGxvZ1xuLy8vXG5AbWl4aW4gbG9nKCRtZXNzYWdlKSB7XG4gIEBpZiBsb2coJG1lc3NhZ2UpIHt9XG59XG5cblxuLy8vXG4vLy8gRnVuY3Rpb24gd2l0aCBubyBgQHJldHVybmAgY2FsbGVkIG5leHQgdG8gYEB3YXJuYCBpbiBTYXNzIDMuM1xuLy8vIHRvIHRyaWdnZXIgYSBjb21waWxpbmcgZXJyb3IgYW5kIHN0b3AgdGhlIHByb2Nlc3MuXG4vLy9cbkBmdW5jdGlvbiBub29wKCkge31cblxuLy8vXG4vLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbGlzdCBvZiBjb25kaXRpb25zIGlzIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9ucyBhcmUgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50XG4vLy9cbkBmdW5jdGlvbiBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSB7XG4gICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQpO1xuXG4gIEBpZiBub3QgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUge1xuICAgIEBpZiBsb2coJ2AjeyRpbS1uby1tZWRpYS1icmVha3BvaW50fWAgaXMgbm90IGEgdmFsaWQgYnJlYWtwb2ludC4nKSB7fVxuICB9ICBcblxuICBAZWFjaCAkY29uZGl0aW9uIGluICRjb25kaXRpb25zIHtcbiAgICBAaWYgbm90IG1hcC1oYXMta2V5KCRtZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xuICAgICAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkY29uZGl0aW9uKTtcbiAgICAgICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xuICAgICAgJHZhbHVlOiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkY29uZGl0aW9uLCAkb3BlcmF0b3IpO1xuXG4gICAgICBAaWYgKCRwcmVmaXggPT0gJ21heCcgYW5kICR2YWx1ZSA8PSAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSkgb3JcbiAgICAgICAgICAoJHByZWZpeCA9PSAnbWluJyBhbmQgJHZhbHVlID4gJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUpIHtcbiAgICAgICAgQHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmIG5vdCBpbmRleCgkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vXG4vLy8gUGFyc2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBHZXQgb3BlcmF0b3Igb2YgYW4gZXhwcmVzc2lvblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IG9wZXJhdG9yIGZyb21cbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBBbnkgb2YgYD49YCwgYD5gLCBgPD1gLCBgPGAsIGDiiaVgLCBg4omkYFxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGV4cHJlc3Npb24pIHtcbiAgQGVhY2ggJG9wZXJhdG9yIGluICgnPj0nLCAnPicsICc8PScsICc8JywgJ+KJpScsICfiiaQnKSB7XG4gICAgQGlmIHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XG4gICAgICBAcmV0dXJuICRvcGVyYXRvcjtcbiAgICB9XG4gIH1cblxuICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXG4gIC8vIHJlbHkgb24gdGhlIGBsb2coLi4pYCBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgYGxvZyguLilgIG1peGluLiBCZWNhdXNlXG4gIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxuICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxuICAvLyBTYXNzIDMuMywgY2hhbmdlIHRoaXMgbGluZSBpbiBgQGlmIGxvZyguLikge31gIGluc3RlYWQuXG4gICRfOiBsb2coJ05vIG9wZXJhdG9yIGZvdW5kIGluIGAjeyRleHByZXNzaW9ufWAuJyk7XG59XG5cblxuLy8vXG4vLy8gR2V0IGRpbWVuc2lvbiBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3QgZGltZW5zaW9uIGZyb21cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3IgZnJvbSBgJGV4cHJlc3Npb25gXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYHdpZHRoYCBvciBgaGVpZ2h0YCAob3IgcG90ZW50aWFsbHkgYW55dGhpbmcgZWxzZSlcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XG4gICRvcGVyYXRvci1pbmRleDogc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuICAkcGFyc2VkLWRpbWVuc2lvbjogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAwLCAkb3BlcmF0b3ItaW5kZXggLSAxKTtcbiAgJGRpbWVuc2lvbjogJ3dpZHRoJztcblxuICBAaWYgc3RyLWxlbmd0aCgkcGFyc2VkLWRpbWVuc2lvbikgPiAwIHtcbiAgICAkZGltZW5zaW9uOiAkcGFyc2VkLWRpbWVuc2lvbjtcbiAgfVxuXG4gIEByZXR1cm4gJGRpbWVuc2lvbjtcbn1cblxuXG4vLy9cbi8vLyBHZXQgZGltZW5zaW9uIHByZWZpeCBiYXNlZCBvbiBhbiBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYG1pbmAgb3IgYG1heGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpIHtcbiAgQHJldHVybiBpZihpbmRleCgoJzwnLCAnPD0nLCAn4omkJyksICRvcGVyYXRvciksICdtYXgnLCAnbWluJyk7XG59XG5cblxuLy8vXG4vLy8gR2V0IHZhbHVlIG9mIGFuIGV4cHJlc3Npb24sIGJhc2VkIG9uIGEgZm91bmQgb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIEEgbnVtZXJpYyB2YWx1ZSBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXZhbHVlKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcbiAgJG9wZXJhdG9yLWluZGV4OiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG4gICR2YWx1ZTogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAkb3BlcmF0b3ItaW5kZXggKyBzdHItbGVuZ3RoKCRvcGVyYXRvcikpO1xuXG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgICR2YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSk7XG4gIH0gQGVsc2Uge1xuICAgICR2YWx1ZTogdG8tbnVtYmVyKCR2YWx1ZSk7XG4gIH1cblxuICAkaW50ZXJ2YWw6IG1hcC1nZXQoJHVuaXQtaW50ZXJ2YWxzLCB1bml0KCR2YWx1ZSkpO1xuXG4gIEBpZiBub3QgJGludGVydmFsIHtcbiAgICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXG4gICAgLy8gcmVseSBvbiB0aGUgYGxvZyguLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBgbG9nKC4uKWAgbWl4aW4uIEJlY2F1c2VcbiAgICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxuICAgIC8vIFNhc3MgMy4zLCBjaGFuZ2UgdGhpcyBsaW5lIGluIGBAaWYgbG9nKC4uKSB7fWAgaW5zdGVhZC5cbiAgICAkXzogbG9nKCdVbmtub3duIHVuaXQgYCN7dW5pdCgkdmFsdWUpfWAuJyk7XG4gIH1cblxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgKyAkaW50ZXJ2YWw7XG4gIH0gQGVsc2UgaWYgJG9wZXJhdG9yID09ICc8JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgLSAkaW50ZXJ2YWw7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuXG4vLy9cbi8vLyBQYXJzZSBhbiBleHByZXNzaW9uIHRvIHJldHVybiBhIHZhbGlkIG1lZGlhLXF1ZXJ5IGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gcGFyc2Vcbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBWYWxpZCBtZWRpYSBxdWVyeVxuLy8vXG5AZnVuY3Rpb24gcGFyc2UtZXhwcmVzc2lvbigkZXhwcmVzc2lvbikge1xuICAvLyBJZiBpdCBpcyBwYXJ0IG9mICRtZWRpYS1leHByZXNzaW9ucywgaXQgaGFzIG5vIG9wZXJhdG9yXG4gIC8vIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byBnbyBhbnkgZnVydGhlciwganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gIEBpZiBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRleHByZXNzaW9uKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pO1xuICB9XG5cbiAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkZXhwcmVzc2lvbik7XG4gICRkaW1lbnNpb246IGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XG4gICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG5cbiAgQHJldHVybiAnKCN7JHByZWZpeH0tI3skZGltZW5zaW9ufTogI3skdmFsdWV9KSc7XG59XG5cbi8vL1xuLy8vIFNsaWNlIGAkbGlzdGAgYmV0d2VlbiBgJHN0YXJ0YCBhbmQgYCRlbmRgIGluZGV4ZXNcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc2xpY2Vcbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0YXJ0IFsxXSAtIFN0YXJ0IGluZGV4XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbmQgW2xlbmd0aCgkbGlzdCldIC0gRW5kIGluZGV4XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fSBTbGljZWQgbGlzdFxuLy8vXG5AZnVuY3Rpb24gc2xpY2UoJGxpc3QsICRzdGFydDogMSwgJGVuZDogbGVuZ3RoKCRsaXN0KSkge1xuICBAaWYgbGVuZ3RoKCRsaXN0KSA8IDEgb3IgJHN0YXJ0ID4gJGVuZCB7XG4gICAgQHJldHVybiAoKTtcbiAgfVxuXG4gICRyZXN1bHQ6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgdGhyb3VnaCAkZW5kIHtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgbnRoKCRsaXN0LCAkaSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vLy8vXG4vLy8gU3RyaW5nIHRvIG51bWJlciBjb252ZXJ0ZXJcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBDYXN0cyBhIHN0cmluZyBpbnRvIGEgbnVtYmVyXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYmUgcGFyc2VkXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy9cbkBmdW5jdGlvbiB0by1udW1iZXIoJHZhbHVlKSB7XG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XG4gICAgJF86IGxvZygnVmFsdWUgZm9yIGB0by1udW1iZXJgIHNob3VsZCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcbiAgfVxuICBcbiAgJHJlc3VsdDogMDtcbiAgJGRpZ2l0czogMDtcbiAgJG1pbnVzOiBzdHItc2xpY2UoJHZhbHVlLCAxLCAxKSA9PSAnLSc7XG4gICRudW1iZXJzOiAoJzAnOiAwLCAnMSc6IDEsICcyJzogMiwgJzMnOiAzLCAnNCc6IDQsICc1JzogNSwgJzYnOiA2LCAnNyc6IDcsICc4JzogOCwgJzknOiA5KTtcbiAgXG4gIEBmb3IgJGkgZnJvbSBpZigkbWludXMsIDIsIDEpIHRocm91Z2ggc3RyLWxlbmd0aCgkdmFsdWUpIHtcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHZhbHVlLCAkaSwgJGkpO1xuICAgIFxuICAgIEBpZiBub3QgKGluZGV4KG1hcC1rZXlzKCRudW1iZXJzKSwgJGNoYXJhY3Rlcikgb3IgJGNoYXJhY3RlciA9PSAnLicpIHtcbiAgICAgIEByZXR1cm4gdG8tbGVuZ3RoKGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpLCBzdHItc2xpY2UoJHZhbHVlLCAkaSkpXG4gICAgfVxuICAgIFxuICAgIEBpZiAkY2hhcmFjdGVyID09ICcuJyB7XG4gICAgICAkZGlnaXRzOiAxOyBcbiAgICB9IEBlbHNlIGlmICRkaWdpdHMgPT0gMCB7XG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTAgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKTsgIFxuICAgIH0gQGVsc2Uge1xuICAgICAgJGRpZ2l0czogJGRpZ2l0cyAqIDEwO1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCArIG1hcC1nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpIC8gJGRpZ2l0cztcbiAgICB9XG4gIH1cbiAgXG4gIEByZXR1cm4gaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCk7O1xufVxuXG5cbi8vL1xuLy8vIEFkZCBgJHVuaXRgIHRvIGAkdmFsdWVgXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYWRkIHVuaXQgdG9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHVuaXQgLSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHVuaXRcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBgJHZhbHVlYCBleHByZXNzZWQgaW4gYCR1bml0YFxuLy8vXG5AZnVuY3Rpb24gdG8tbGVuZ3RoKCR2YWx1ZSwgJHVuaXQpIHtcbiAgJHVuaXRzOiAoJ3B4JzogMXB4LCAnY20nOiAxY20sICdtbSc6IDFtbSwgJyUnOiAxJSwgJ2NoJzogMWNoLCAncGMnOiAxcGMsICdpbic6IDFpbiwgJ2VtJzogMWVtLCAncmVtJzogMXJlbSwgJ3B0JzogMXB0LCAnZXgnOiAxZXgsICd2dyc6IDF2dywgJ3ZoJzogMXZoLCAndm1pbic6IDF2bWluLCAndm1heCc6IDF2bWF4KTtcbiAgXG4gIEBpZiBub3QgaW5kZXgobWFwLWtleXMoJHVuaXRzKSwgJHVuaXQpIHtcbiAgICAkXzogbG9nKCdJbnZhbGlkIHVuaXQgYCN7JHVuaXR9YC4nKTtcbiAgfVxuICBcbiAgQHJldHVybiAkdmFsdWUgKiBtYXAtZ2V0KCR1bml0cywgJHVuaXQpO1xufVxuXG4vLy9cbi8vLyBUaGlzIG1peGluIGFpbXMgYXQgcmVkZWZpbmluZyB0aGUgY29uZmlndXJhdGlvbiBqdXN0IGZvciB0aGUgc2NvcGUgb2YgXG4vLy8gdGhlIGNhbGwuIEl0IGlzIGhlbHBmdWwgd2hlbiBoYXZpbmcgYSBjb21wb25lbnQgbmVlZGluZyBhbiBleHRlbmRlZCBcbi8vLyBjb25maWd1cmF0aW9uIHN1Y2ggYXMgY3VzdG9tIGJyZWFrcG9pbnRzIChyZWZlcnJlZCB0byBhcyB0d2Vha3BvaW50cykgXG4vLy8gZm9yIGluc3RhbmNlLlxuLy8vXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrcG9pbnRzIFsoKV0gLSBNYXAgb2YgdHdlYWtwb2ludHMgdG8gYmUgbWVyZ2VkIHdpdGggYCRicmVha3BvaW50c2Bcbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zIFsoKV0gLSBNYXAgb2YgdHdlYWtlZCBtZWRpYSBleHByZXNzaW9ucyB0byBiZSBtZXJnZWQgd2l0aCBgJG1lZGlhLWV4cHJlc3Npb25gXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgYnJlYWtwb2ludHMgd2l0aCBhIHR3ZWFrcG9pbnRcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PWN1c3RvbScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBtZWRpYSBleHByZXNzaW9ucyB3aXRoIGEgY3VzdG9tIG9uZVxuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCBib3RoIGNvbmZpZ3VyYXRpb24gbWFwc1xuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCgnY3VzdG9tJzogNjc4cHgpLCAoJ2FsbCc6ICdhbGwnKSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbkBtaXhpbiBtZWRpYS1jb250ZXh0KCR0d2Vha3BvaW50czogKCksICR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCkpIHtcbiAgLy8gU2F2ZSBnbG9iYWwgY29uZmlndXJhdGlvblxuICAkZ2xvYmFsLWJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHM7XG4gICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnM6ICRtZWRpYS1leHByZXNzaW9ucztcblxuICAvLyBVcGRhdGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkdHdlYWtwb2ludHMpICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogbWFwLW1lcmdlKCRtZWRpYS1leHByZXNzaW9ucywgJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zKSAhZ2xvYmFsO1xuXG4gIEBjb250ZW50O1xuXG4gIC8vIFJlc3RvcmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiAkZ2xvYmFsLWJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zICFnbG9iYWw7XG59XG5cbi8vLy9cbi8vLyBpbmNsdWRlLW1lZGlhIHB1YmxpYyBleHBvc2VkIEFQSVxuLy8vIEBhdXRob3IgRWR1YXJkbyBCb3VjYXNcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vL1xuXG5cbi8vL1xuLy8vIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IGJhc2VkIG9uIGEgbGlzdCBvZiBjb25kaXRpb25zXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICAgJGNvbmRpdGlvbnMgIC0gTWVkaWEgcXVlcnkgY29uZGl0aW9uc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzaW5nbGUgc2V0IGJyZWFrcG9pbnRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggdHdvIHNldCBicmVha3BvaW50c1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJywgJzw9dGFibGV0JykgeyB9IFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggY3VzdG9tIHZhbHVlc1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNThweCcsICc8ODUwcHgnKSB7IH0gXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBzZXQgYnJlYWtwb2ludHMgd2l0aCBjdXN0b20gdmFsdWVzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+ZGVza3RvcCcsICc8PTEzNTBweCcpIHsgfSBcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGEgc3RhdGljIGV4cHJlc3Npb25cbi8vLyAgQGluY2x1ZGUgbWVkaWEoJ3JldGluYTJ4JykgeyB9IFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIE1peGluZyBldmVyeXRoaW5nXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PTM1MHB4JywgJzx0YWJsZXQnLCAncmV0aW5hM3gnKSB7IH0gXG4vLy9cbkBtaXhpbiBtZWRpYSgkY29uZGl0aW9ucy4uLikge1xuICBAaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID09IDApIG9yIFxuICAgICAgKG5vdCAkaW0tbWVkaWEtc3VwcG9ydCBhbmQgaW0taW50ZXJjZXB0cy1zdGF0aWMtYnJlYWtwb2ludCgkY29uZGl0aW9ucy4uLikpIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSBpZiAoJGltLW1lZGlhLXN1cHBvcnQgYW5kIGxlbmd0aCgkY29uZGl0aW9ucykgPiAwKSB7XG4gICAgQG1lZGlhICN7dW5xdW90ZShwYXJzZS1leHByZXNzaW9uKG50aCgkY29uZGl0aW9ucywgMSkpKX0ge1xuICAgICAgLy8gUmVjdXJzaXZlIGNhbGxcbiAgICAgIEBpbmNsdWRlIG1lZGlhKHNsaWNlKCRjb25kaXRpb25zLCAyKS4uLikge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9ICAgIFxuICB9XG59XG4iLCIvLyAtLS0tXG4vLyBVdGlsaXRpZXNcbi8vIC0tLS1cblxuLy8tIEZ1bmN0aW9uOiBSZW0gQ2FsY3VsYXRvclxuLy8vXG4vLy8gQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgcmVtIHZhbHVlIGJhc2VkIG9uIHB4IGlucHV0LiBEZWZhdWx0IGJhc2UgZm9udFxuLy8vIHNpemUgaXMgMTZweCwgYnV0IGNhbiBiZSBjaGFuZ2VkIHdpdGggYSBnbG9iYWwgYCRiYXNlLWZvbnQtc2l6ZWAgdmFyaWFibGUuXG4vLy9cbi8vLyBAcGFyYW0ge3ZhcmlhYmxlfSAkc2l6ZSAtIFNpemUgaW4gcGl4ZWxzXG4vLy9cbi8vLyBAZ3JvdXAgdXRpbGl0aWVzXG4vLy8gQGV4YW1wbGVcbi8vLyAgIGZvbnQtc2l6ZTogcmVtKDMwcHgpO1xuLy8vICAgLy8gcmV0dXJucyBmb250LXNpemU6IDEuODc1cmVtO1xuXG5AZnVuY3Rpb24gcmVtKCRzaXplKSB7XG4gICRyZW0tc2l6ZTogJHNpemUgLyAkYmFzZS1mb250LXNpemU7XG4gIEByZXR1cm4gI3skcmVtLXNpemV9cmVtO1xufVxuXG4vLy0gRnVuY3Rpb246IFN0cmlwIFVuaXRcbi8vL1xuLy8vIFNvbWV0aW1lcyBpdCdzIGp1c3QgZWFzaWVyIHRvIGRvIGNhbGN1bGF0aW9ucyB3aXRoIHRoZSB1bml0IGlzIHN0cmlwcGVkLlxuLy8vXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRudW1iZXIgLSBOdW1iZXIgdGhhdCBoYXMgYSB1bml0XG4vLy9cbi8vLyBAZ3JvdXAgdXRpbGl0aWVzXG4vLy8gQGV4YW1wbGVcbi8vLyAgICRsZW5ndGg6IDQycHg7XG4vLy8gICAkdmFsdWU6IHN0cmlwLXVuaXQoJGxlbmd0aCk7XG4vLy8gICAvLyAtPiA0MlxuLy8vIEBsaW5rIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvc2Fzcy9zdHJpcC11bml0LWZ1bmN0aW9uL1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtYmVyKSB7XG4gIEBpZiB0eXBlLW9mKCRudW1iZXIpID09ICdudW1iZXInIGFuZCBub3QgdW5pdGxlc3MoJG51bWJlcikge1xuICAgIEByZXR1cm4gJG51bWJlciAvICgkbnVtYmVyICogMCArIDEpO1xuICB9XG4gIEByZXR1cm4gJG51bWJlcjtcbn1cblxuLy8tIE1peGluOiBEZWJ1Z1xuLy8vXG4vLy8gRGVidWdnaW5nIHRvb2wgLSBhZGRzIGEgYm9yZGVyIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQsIGl0cyBjaGlsZHJlbixcbi8vLyBncmFuZGNoaWxkcmVuLCBldGMgc28geW91IGNhbiBzZWUgd2hhdCdzIHVwIOKAkyBncmVhdCBmb3IgcHJlY2lzZSBsYXlvdXRcbi8vLyB0d2Vha3MuICBJdCB3aWxsIGFsc28gYWRkIGZsYWdzIGlmIHlvdSBtYWRlIG1pc3Rha2VzIGxpa2UgcHV0IGluIGlubGluZVxuLy8vIHN0eWxlcywgZm9yZ290IGFuIGFsdCBvbiBhbiBpbWFnZSwgbGVmdCB0aGUgYWx0IGJsYW5rLCBldGMuIE5vdCB0byBiZSB1c2VkXG4vLy8gaW4gcHJvZHVjdGlvbiwgb2J2aW91c2x5LlxuLy8vXG4vLy8gQGdyb3VwIHV0aWxpdGllc1xuLy8vIEBleGFtcGxlXG4vLy8gICAuY29udGFpbmVyLWVsbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGRlYnVnKCk7XG4vLy8gICB9XG4vLy8gQGxpbmsgaHR0cDovL2NvZGVwZW4uaW8vZGJveC9wZW4vR0paellvP2VkaXRvcnM9MTEwXG5cbkBtaXhpbiBkZWJ1ZygpIHs+ICogeyAgYm9yZGVyOiAxcHggc29saWQgZ3JlZW47fSA+ICogPiAqIHtib3JkZXI6IDFweCBzb2xpZCB0b21hdG87IH0gPiAqID4gKiA+ICogeyBib3JkZXI6IDFweCBzb2xpZCBEZWVwU2t5Qmx1ZTsgfSA+ICogPiAqID4gKiA+ICogeyBib3JkZXI6IDFweCBzb2xpZCBEZWVwUGluazsgfSA+ICogPiAqID4gKiA+ICogPiAqIHsgYm9yZGVyOiAxcHggc29saWQgTWVkaXVtU2xhdGVCbHVlO319XG5cbi8vIE1peGluOiBUcmlhbmdsZVxuLy9cbi8vIE1ha2VzIGEgbGl0dGxlIGNzcyB0cmlhbmdsZSBmb3IgeW91LiBQYXNzIGl0IGEgZGlyZWN0aW9uICh1cCwgZG93biwgbGVmdCxcbi8vIHJpZ2h0KSwgc2l6ZSAoaW4gcGl4ZWxzKSwgYW5kIGEgY29sb3IuXG4vL1xuLy8gZXguIEBpbmNsdWRlIHRyaWFuZ2xlKClcbi8vIGV4LiBAaW5jbHVkZSB0cmlhbmdsZSgnZG93bicsIDE1cHgsIGJsdWUpXG5cbi8vLSBNaXhpbjogVHJpYW5nbGVcbi8vL1xuLy8vIE1ha2VzIGEgbGl0dGxlIGNzcyB0cmlhbmdsZSBmb3IgeW91LlxuLy8vXG4vLy8gQHBhcmFtIHt2YXJpYWJsZX0gJGRpcmVjdGlvbiBbdXBdIC0gRGlyZWN0aW9uIG9mIHRoZSB0cmlhbmdsZTogdXAsIGRvd24gbGVmdFxuLy8vIG9yIHJpZ2h0XG4vLy8gQHBhcmFtIHt2YXJpYWJsZX0gJHNpemUgWzEwcHhdIC0gU2l6ZSBvZiB0aGUgdHJpYW5nbGVcbi8vLyBAcGFyYW0ge3ZhcmlhYmxlfSAkY29sb3IgWyMwMDBdIC0gQ29sb3Igb2YgdGhlIHRyaWFuZ2xlXG4vLy9cbi8vLyBAZ3JvdXAgdXRpbGl0aWVzXG4vLy8gQGV4YW1wbGVcbi8vLyAgIC5lbGVtZW50OmFmdGVyIHtcbi8vLyAgICAgQGluY2x1ZGUgdHJpYW5nbGUoKTtcbi8vLyAgIH1cbi8vLyAgIHNwYW4ge1xuLy8vICAgICBAaW5jbHVkZSB0cmlhbmdsZShyaWdodCwgOHB4LCByZWQpO1xuLy8vICAgfVxuXG5AbWl4aW4gdHJpYW5nbGUoJGRpcmVjdGlvbjondXAnLCAkc2l6ZToxMHB4LCAkY29sb3I6IzAwMCkge1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuXG4gIEBpZiAkZGlyZWN0aW9uID09ICd1cCcge1xuICAgIGJvcmRlci1ib3R0b206ICRzaXplIHNvbGlkICRjb2xvcjtcbiAgICBib3JkZXItbGVmdDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJpZ2h0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09ICdkb3duJyB7XG4gICAgYm9yZGVyLWxlZnQ6ICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yaWdodDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXRvcDogJHNpemUgc29saWQgJGNvbG9yO1xuICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gJ2xlZnQnIHtcbiAgICBib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmlnaHQ6ICRzaXplIHNvbGlkICRjb2xvcjtcbiAgICBib3JkZXItdG9wOiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09ICdyaWdodCcge1xuICAgIGJvcmRlci1ib3R0b206ICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1sZWZ0OiAkc2l6ZSBzb2xpZCAkY29sb3I7XG4gICAgYm9yZGVyLXRvcDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8vIFJldHVybnMgdGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYCBhcyBhIGZsb2F0IChiZXR3ZWVuIDAgYW5kIDEpXG4vLy8gMSBpcyBwdXJlIHdoaXRlLCAwIGlzIHB1cmUgYmxhY2tcbi8vLyBAZ3JvdXAgdXRpbGl0aWVzXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3Jcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy8gQGxpbmsgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZiBSZWZlcmVuY2Vcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYWRlbFxuXG5AZnVuY3Rpb24gbHVtaW5hbmNlKCRjb2xvcikge1xuICAkY29sb3JzOiAoXG4gICAgJ3JlZCc6IHJlZCgkY29sb3IpLFxuICAgICdncmVlbic6IGdyZWVuKCRjb2xvciksXG4gICAgJ2JsdWUnOiBibHVlKCRjb2xvcilcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRjb2xvcnMge1xuICAgICRhZGp1c3RlZDogMDtcbiAgICAkdmFsdWU6ICR2YWx1ZSAvIDI1NTtcblxuICAgIEBpZiAkdmFsdWUgPCAwLjAzOTI4IHtcbiAgICAgICR2YWx1ZTogJHZhbHVlIC8gMTIuOTI7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkdmFsdWU6ICgkdmFsdWUgKyAuMDU1KSAvIDEuMDU1O1xuICAgICAgJHZhbHVlOiBwb3coJHZhbHVlLCAyLjQpO1xuICAgIH1cblxuICAgICRjb2xvcnM6IG1hcC1tZXJnZSgkY29sb3JzLCAoJG5hbWU6ICR2YWx1ZSkpO1xuICB9XG5cbiAgQHJldHVybiAobWFwLWdldCgkY29sb3JzLCAncmVkJykgKiAuMjEyNikgKyAobWFwLWdldCgkY29sb3JzLCAnZ3JlZW4nKSAqIC43MTUyKSArIChtYXAtZ2V0KCRjb2xvcnMsICdibHVlJykgKiAuMDcyMik7XG59XG4iLCIvLyAtLS0tXG4vLyBSZXNldFxuLy8gLS0tLVxuXG5cbi8vIFJlc2V0cyB2aWEgc2N1dDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZpZHRoZWNsYXJrL3NjdXQvXG5cbi8vIENsaWNrYWJsZSBmb3JtIGVsZW1lbnRzIHNob3VsZCBoYXZlIGEgcG9pbnRlci5cbkBtaXhpbiByZXNldC1wb2ludGVyIHtcbiAgYSxcbiAgbGFiZWwsXG4gIHNlbGVjdCxcbiAgb3B0aW9uLFxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG4vLyBCb3JkZXIgYm94IGlzIGp1c3QgYmV0dGVyLlxuQG1peGluIHJlc2V0LWJvcmRlci1ib3gge1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgKixcbiAgKjpiZWZvcmUsXG4gICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuLy8gUmVzZXQgdGhlIGZvcm1zXG5AbWl4aW4gcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxufVxuXG4vLyBSZXNldCBkZWZhdWx0IGJ1dHRvbiBzdHlsZXMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLlxuQG1peGluIHJlc2V0LWJ1dHRvbiB7XG4gIGJ1dHRvbixcbiAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbiAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSxcbiAgaW5wdXRbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIHdpZHRoOiBhdXRvO1xuXG4gICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBib3JkZXI6IDA7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbiAgfVxufVxuXG4vLyBTb21lIHBhcmFncmFwaCBtYXJnaW5zIGp1c3QgZ2V0IGluIHRoZSB3YXkuXG5AbWl4aW4gcmVzZXQtcGFyYWdyYXBoIHtcbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuQG1peGluIHJlc2V0LW1lZGlhIHtcbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxufVxuXG4vLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zLlxuQG1peGluIHJlc2V0LWZpZ3VyZSB7XG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGxcbkBtaXhpbiByZXNldC1lbGVtZW50cygpIHtcbiAgQGluY2x1ZGUgcmVzZXQtYm9yZGVyLWJveDtcbiAgQGluY2x1ZGUgcmVzZXQtYnV0dG9uO1xuICBAaW5jbHVkZSByZXNldC1maWd1cmU7XG4gIEBpbmNsdWRlIHJlc2V0LWZvcm07XG4gIEBpbmNsdWRlIHJlc2V0LW1lZGlhO1xuICBAaW5jbHVkZSByZXNldC1wYXJhZ3JhcGg7XG4gIEBpbmNsdWRlIHJlc2V0LXBvaW50ZXI7XG59XG4iLCIvLyAtLS0tLS1cbi8vIENvZGVcbi8vIC0tLS0tLVxuXG4vLy0gTWl4aW46IENvZGVcbi8vL1xuLy8vIFN0eWxlcyBpbmxpbmUgY29kZSBzbmlwcGV0cyBvbiB5b3VyIHBhZ2UuIERlZmF1bHRzIHRvIGEgYmVhdXRpZnVsIHJlZCwgYnV0XG4vLy8gY2FuIGJlIHBhc3NlZCBhbnkgY29sb3IuXG4vLy9cbi8vLyBAZ3JvdXAgY29kZVxuLy8vIEBwYXJhbSB7dmFyaWFibGV9ICRjb2xvciBbI0RGNUMzM10gLSBUZXh0IENvbG9yXG4vLy8gQGV4YW1wbGVcbi8vLyAgIGNvZGUge1xuLy8vICAgICBAaW5jbHVkZSBjb2RlKGJsdWUpO1xuLy8vICAgfVxuXG5AbWl4aW4gY29kZSgkY29sb3IgOiAjREY1QzMzKSB7XG4gIHBhZGRpbmc6IDNweCA0cHg7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNFMUUxRTg7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgZm9udC1mYW1pbHk6IE1lbmxvLCBNb25hY28sIG1vbm9zcGFjZTtcbn1cblxuLy8tIE1peGluOiBQcmVcbi8vL1xuLy8vIFNvbWUgZGVmYXVsdCBzdHlsZXMgZm9yIGNvZGUgYmxvY2tzIG9uIHlvdXIgcGFnZS4gVGFrZXMgbm90IGFyZ3VtZW50c1xuLy8vXG4vLy8gQGdyb3VwIGNvZGVcbi8vLyBAZXhhbXBsZVxuLy8vICAgcHJlIHtcbi8vLyAgICAgQGluY2x1ZGUgcHJlKCk7XG4vLy8gICB9XG5cbkBtaXhpbiBwcmUoKSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA3cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNFMUUxRTg7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gIGZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBtb25vc3BhY2U7XG4gIGxpbmUtaGVpZ2h0OiAxNjAlO1xufVxuIiwiLmNvbWljLW5hdiB7XG4gIEBpbmNsdWRlIGNmKCk7XG4gIHBhZGRpbmc6IHJlbSgxMHB4KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZC1ncmV5O1xuICBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGEge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogcmVtKDc1cHgpO1xuICAgICAgaGVpZ2h0OiByZW0oNzVweCk7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDgwJTtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgZWFzZS1pbi1vdXQgLjJzO1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogOTAlO1xuICAgICAgfVxuICAgIH1cbiAgICAmOm50aC1jaGlsZCgxKSB7IGEgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1nL25hdi9maXJzdC5wbmcpOyB9IH1cbiAgICAmOm50aC1jaGlsZCgyKSB7IGEgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1nL25hdi9wcmV2LnBuZyk7IH0gfVxuICAgICY6bnRoLWNoaWxkKDMpIHsgYSB7IGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWcvbmF2L3JhbmRvbTIucG5nKTsgfSB9XG4gICAgJjpudGgtY2hpbGQoNCkgeyBhIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltZy9uYXYvbmV4dC5wbmcpOyB9IH1cbiAgICAmOm50aC1jaGlsZCg1KSB7IGEgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1nL25hdi9sYXN0LnBuZyk7IH0gfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJzxtb2JpbGUtbCcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMS81KTtcblxuICAgICAgYSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiYS5idG4sXG5idXR0b24sXG5pbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSB7XG4gIEBpbmNsdWRlIGJ1dHRvbihkZWVwc2t5Ymx1ZSk7XG59XG4iLCIvLyAtLS0tXG4vLyBVaVxuLy8gLS0tLVxuXG4vLy0gTWl4aW46IEJ1dHRvblxuLy8vXG4vLy8gQSBzdGFydGluZyBwbGFjZSBmb3IgYnV0dG9uIHN0eWxpbmcuXG4vLy9cbi8vLyBAcGFyYW0ge3ZhcmlhYmxlfSAkYmFja2dyb3VuZC1jb2xvciBbIzAwQkZGRl0gLSBCdXR0b24gYmFja2dyb3VuZCBjb2xvclxuLy8vIEBwYXJhbSB7dmFyaWFibGV9ICRjb2xvciBbI0ZGRl0gLSBCdXR0b24gdGV4dCBjb2xvclxuLy8vXG4vLy8gQGdyb3VwIHVpXG4vLy8gQGV4YW1wbGVcbi8vLyAgIGEuYnRuIHtcbi8vLyAgICAgQGluY2x1ZGUgYnV0dG9uKCk7XG4vLy8gICB9XG4vLy8gICBhLnllbGxvdy1idXR0b24ge1xuLy8vICAgICBAaW5jbHVkZSBidXR0b24oeWVsbG93LCBibGFjayk7XG4vLy8gICB9XG5cbkBtaXhpbiBidXR0b24oJGJhY2tncm91bmQtY29sb3I6ICMwMEJGRkYsICRjb2xvcjogI0ZGRikge1xuICAkZ2xvYmFsLWJvcmRlci1yYWRpdXM6IDNweCAhZGVmYXVsdDtcbiAgcGFkZGluZzogMTBweCAyMnB4O1xuICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLWJvcmRlci1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuICBjb2xvcjogJGNvbG9yO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGxpbmUtaGVpZ2h0OiAxZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJvcmRlcjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkYmFja2dyb3VuZC1jb2xvciwgMTAlKTtcbiAgfVxufVxuIiwiZm9ybSB7XG5cdG1hcmdpbjogcmVtKDI1cHgpIDA7XG5cdHdpZHRoOiAxMDAlO1xuXG5cdGlucHV0Om5vdChbdHlwZT1cInN1Ym1pdFwiXSksIHRleHRhcmVhLCBzZWxlY3Qge1xuXHRcdHBhZGRpbmc6IHJlbSgxMHB4KTtcblx0XHRtYXJnaW4tYm90dG9tOiByZW0oMTBweCk7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Ym9yZGVyOiByZW0oMXB4KSBzb2xpZCBHYWluc2Jvcm87XG5cdFx0b3V0bGluZTogbm9uZTtcblxuXHRcdHRyYW5zaXRpb246IGJvcmRlciBlYXNlLWluLW91dCAuM3M7XG5cblx0XHQmOmZvY3VzIHtcblx0XHRcdGJvcmRlci1jb2xvcjogZGVlcFNreUJsdWUgIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHQmLmludmFsaWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiByZWQ7XG5cdFx0fVxuXHR9XG59IiwiLmhlcm8tYmcge1xuXHRwYWRkaW5nOiByZW0oNTBweCk7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDY1dmg7XG5cdGJhY2tncm91bmQtY29sb3I6ICRncmV5O1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Ji5oYXMtY29taWMgeyBoZWlnaHQ6IGF1dG87IH1cblx0QGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG5cdFx0cGFkZGluZzogMHB4O1xuXHRcdGhlaWdodDogNDV2aDtcblx0fVxufVxuXG4uaGVybyB7XG5cdG1hcmdpbjogMCBhdXRvO1xuXHR3aWR0aDogNzAlO1xuXHRtYXgtd2lkdGg6IHJlbSg5MDBweCk7XG5cdGhlaWdodDogYXV0bztcblx0Ym94LXNoYWRvdzogMCA4cHggMTZweCAwIHJnYmEoYmxhY2ssIDAuMiksMCA2cHggMjBweCAwIHJnYmEoYmxhY2ssIDAuMTkpICFpbXBvcnRhbnQ7XG5cdEBpbmNsdWRlIG1lZGlhKCc8dGFibGV0Jykge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG4iLCIuYXV0aG9yLWNvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0cGFkZGluZzogcmVtKDVweCkgMDtcblx0aGVpZ2h0OiByZW0oNzBweCk7XG5cdGJhY2tncm91bmQtY29sb3I6ICRibGFjaztcblxuXHRvdmVyZmxvdzogdmlzaWJsZTtcblxuXHQuaW5uZXItY29udGFpbmVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgnPHRhYmxldCcpIHtcblx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG59XG5cbi5hdXRob3ItcHJvZmlsZSB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGVmdDogMDtcblx0dG9wOiAtMThweDtcblx0d2lkdGg6IHJlbSgxMDBweCk7XG5cdGhlaWdodDogcmVtKDEwMHB4KTtcblx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRib3JkZXI6IHJlbSgxMnB4KSBzb2xpZCAkYmxhY2s7XG5cdEBpbmNsdWRlIG1lZGlhKCc8dGFibGV0Jykge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRvcDogMDtcblx0XHR3aWR0aDogcmVtKDc1cHgpO1xuXHRcdGhlaWdodDogcmVtKDc1cHgpO1xuXHRcdG1hcmdpbi1ib3R0b206IHJlbSgyMHB4KTtcblx0XHRib3JkZXI6IHJlbSg2cHgpIHNvbGlkICR3aGl0ZTtcblx0fVxufVxuXG4uYXV0aG9yLWluZm8ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGZsb2F0OiBsZWZ0O1xuXHRtYXJnaW4tbGVmdDogcmVtKDExNXB4KTtcblxuXHRAaW5jbHVkZSBtZWRpYSgnPHRhYmxldCcpIHtcblx0XHRmbG9hdDogbm9uZTtcblx0XHRtYXJnaW46IGF1dG87XG5cdH1cbn1cblxuLmF1dGhvci10d2l0dGVyIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHRvcDogM3B4O1xuXHR3aWR0aDogMjVweDtcblx0aGVpZ2h0OiAyNXB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblxuXHRzdmcge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDE1cHg7XG4gICAgd2lkdGg6IDE1cHg7XG4gICAgdG9wOiA1cHg7XG4gICAgbGVmdDogNXB4O1xuXHRcdGZpbGw6ICRibGFjaztcblx0fVxufVxuXG4uYXV0aG9yLW5hbWUsIC5hdXRob3ItdGl0bGUsIC5zaGFyZXMge1xuXHRjb2xvcjogJHdoaXRlO1xuXHRmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5hdXRob3ItbmFtZSwgLnNoYXJlcyB7XG5cdG1hcmdpbjogMHB4O1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uc2hhcmVzIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRtYXJnaW4tcmlnaHQ6IHJlbSgxNXB4KTtcblx0cGFkZGluZy10b3A6IHJlbSgzcHgpO1xuXHRmb250LXdlaWdodDogYm9sZDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRzcGFuIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXJnaW4tdG9wOiByZW0oNXB4KTtcblx0XHRmb250LXNpemU6IHJlbSgxMnB4KTtcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHR9XG59XG5cbi5hdXRob3ItcmlnaHQge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHJpZ2h0OiAwO1xuXHRAaW5jbHVkZSBtZWRpYSgnPHRhYmxldCcpIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59XG5cbi8vbWFzaCBzaGFyZSBjc3Ncbi5tYXNoc2ItYm94IHtcblxufVxuXG4ubWFzaHNiLWNvbnRhaW5lciB7XG5cdHBhZGRpbmctdG9wOiA0cHg7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xufVxuXG4ubWFzaC1tZWRpdW0ge1xuXHRtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5tYXNoc2Jjb3VudCB7XG5cdG1hcmdpbjogMTJweCAwIDZweDtcblx0Zm9udC1zaXplOiA0NXB4O1xuXHRjb2xvcjogJHdoaXRlO1xufVxuXG4ubWFzaHNiLXNoYXJldGV4dCB7XG5cdGNvbG9yOiAkd2hpdGU7XG59XG5cbi5tYXNoc2ItYnV0dG9ucyB7XG5cdGZsb2F0OiBsZWZ0O1xufVxuXG4ubWFzaHNiLWJ1dHRvbnMgYSB7XG5cdHdpZHRoOiA1MHB4O1xufVxuXG4ubWFzaHNiLWJ1dHRvbnMgLm1hc2gtbWVkaXVtIHtcblx0bWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuXG5cdHBhZGRpbmc6IDEycHggIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRib3JkZXItcmFkaXVzOiA1MCU7XG5cblx0c3BhbjpiZWZvcmUge1xuXHRcdGZvbnQtc2l6ZTogMjVweCAhaW1wb3J0YW50O1xuXHRcdGNvbG9yOiAkYmxhY2s7XG5cdH1cbn1cblxuLm1hc2hpY29uLWZhY2Vib29rIHtcblx0bWFyZ2luLXJpZ2h0OiA4cHggIWltcG9ydGFudDtcbn1cbiIsIi5zaGFkb3ctdG9wIHsgYm94LXNoYWRvdzogaW5zZXQgMCAyMHB4IDIwcHggLTIwcHggcmdiYSgkYmxhY2ssIDAuNik7IH0iLCJmb290ZXIge1xuICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xufVxuXG4udG9wLWZvb3RlciB7XG5cdG1hcmdpbi1ib3R0b206IHJlbSgxMHB4KTtcblx0cGFkZGluZzogcmVtKDI1cHgpO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5ib3R0b20tZm9vdGVyIHtcblx0cGFkZGluZzogcmVtKDEwcHgpIDA7XG5cdGJhY2tncm91bmQtY29sb3I6ICRncmV5O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdC5jb3B5cmlnaHQge1xuXHRcdG1hcmdpbi10b3A6IHJlbSgxMHB4KTtcblx0XHRmb250LXNpemU6IHJlbSgxNHB4KTtcblx0fVxufVxuIiwiaGVhZGVyIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHQubG9nbyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG5cdFx0c3ZnIHtcblx0XHRcdG1hcmdpbjogcmVtKDI1cHgpIDA7XG5cdFx0XHR3aWR0aDogcmVtKDMwMHB4KTtcblx0XHRcdEBpbmNsdWRlIG1lZGlhKCc8dGFibGV0JykgeyBoZWlnaHQ6IDUwcHg7IH1cblx0XHR9XG5cdH1cblxuXHRidXR0b24ge1xuXHRcdHBhZGRpbmc6IHJlbSg1cHgpIHJlbSgxMHB4KTtcblx0XHRzdmcge1xuXHRcdFx0aGVpZ2h0OiByZW0oNDBweCk7XG5cdFx0XHR3aWR0aDogcmVtKDQwcHgpO1xuXHRcdH1cblx0fVxuXG5cdHVsIHtcblx0XHRtYXJnaW4tYm90dG9tOiByZW0oMjVweCk7XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgnPHRhYmxldCcpIHtcblx0XHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHRcdHotaW5kZXg6IDk5O1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0cmlnaHQ6IHJlbSgtMTAwMHB4KTtcblx0XHRcdHdpZHRoOiA0NSU7XG5cdFx0XHRoZWlnaHQ6IDEwMHZoO1xuXHRcdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRcdFx0dHJhbnNpdGlvbjogcmlnaHQgZWFzZS1pbi1vdXQgLjNzO1xuXHRcdFx0Ji5vcGVuIHtcblx0XHRcdFx0cmlnaHQ6IHJlbSgwcHgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGxpIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0cGFkZGluZzogMCByZW0oMTBweCk7XG5cdFx0YSB7XG5cdFx0XHRwYWRkaW5nOiByZW0oNXB4KTtcblx0XHRcdGZvbnQtZmFtaWx5OiAkbWlnaHR5LWl0YWxpYztcblx0XHR9XG5cdFx0QGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGEge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0cGFkZGluZzogcmVtKDE1cHgpIDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogcmVtKDE4cHgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRAaW5jbHVkZSBtZWRpYSgnPHRhYmxldCcpIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdH1cbn1cblxuYS5pcy1hY3RpdmUge1xuXHRmb250LWZhbWlseTogJG1pZ2h0eS1ib2xkO1xuXHRmb250LXdlaWdodDogYm9sZDtcbn1cblxuLm92ZXJsYXkge1xuXHRkaXNwbGF5OiBub25lO1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdHotaW5kZXg6IDk4O1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDB2aDtcblx0YmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNyk7XG59XG5cbiNtZW51LW9wZW4sICNtZW51LWNsb3NlIHtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdG91dGxpbmU6IG5vbmU7XG5cdCY6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXHRAaW5jbHVkZSBtZWRpYSgnPHRhYmxldCcpIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxufVxuXG4jbWVudS1vcGVuIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IHJlbSgyNXB4KTtcblx0cmlnaHQ6IHJlbSgwcHgpO1xufVxuXG4jbWVudS1jbG9zZSB7XG5cdG1hcmdpbjogcmVtKDI1cHgpIGF1dG87XG59XG5cbi50b3AtaGVhZGVyIHtcblx0QGluY2x1ZGUgY2YoKTtcblx0Ly8gbWF4LWhlaWdodDogMTI1cHg7XG5cdGJhY2tncm91bmQtY29sb3I6ICRncmV5O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0Ym94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDIwcHggcmdiYSgkY29hbCwgMC4zKTtcblxuXHRhLCBpZnJhbWUge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRwYWRkaW5nOiByZW0oMTBweCkgIWltcG9ydGFudDtcblx0XHRAaW5jbHVkZSBtZWRpYSgnPG1vYmlsZS1sJykge1xuXHRcdFx0cGFkZGluZzogMHB4O1xuXHRcdH1cblx0fVxufVxuIiwiLnBhZ2UtY29udGVudCB7XG5cdHBhZGRpbmc6IHJlbSg1MHB4KSAyMHB4IHJlbSgyNXB4KSAyMHB4O1xufVxuXG4ucGFnZS1sZWZ0LCAucGFnZS1yaWdodCB7XG5cdHdpZHRoOiAyMCU7XG5cdGZsb2F0OiBsZWZ0O1xuXHRoZWlnaHQ6IDEwMHB4O1xuXG5cblx0aWZyYW1lLCBpbWcge1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0fVxufVxuXG4ucGFnZS1sZWZ0IHtcblx0QGluY2x1ZGUgbWVkaWEoJzw9dGFibGV0Jykge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cbn1cblxuLnBhZ2UtcmlnaHQge1xuXHRAaW5jbHVkZSBtZWRpYSgnPD10YWJsZXQnKSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdGlmcmFtZSxpbWcge1xuXHRcdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0fVxuXHR9XG59XG5cbi5wYWdlLW1haW4ge1xuXHR3aWR0aDogNjAlO1xuXHRmbG9hdDogbGVmdDtcblx0cGFkZGluZzogMHB4IHJlbSgyNXB4KTtcblx0QGluY2x1ZGUgbWVkaWEoJzw9dGFibGV0Jykge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IDAgNCU7XG5cdH1cblxuXHRoMSB7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdH1cblxuXHRhIHtcblx0XHRjb2xvcjogJGdvbGQ7XG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJGdvbGQtbDtcblx0XHR9XG5cdH1cblxuXHQuYWxpZ25jZW50ZXIge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXG5cdC53cC1jYXB0aW9uLXRleHQge1xuXHRcdGZvbnQtc2l6ZTogcmVtKDE0cHgpO1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0fVxuXG5cdHN0cm9uZyB7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdH1cblxuXHRlbSB7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHR9XG5cblx0Lm1hc2hzYi1jb3VudCB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufVxuXG4uZGF0ZSB7XG5cdGZvbnQtc2l6ZTogcmVtKDEycHgpO1xuXHRmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5jb250ZW50LXNvY2lhbC1saW5rcyB7XG5cdG1hcmdpbjogMCBhdXRvO1xuXHRwYWRkaW5nOiAyNXB4IDA7XG5cdHdpZHRoOiA4MCU7XG5cblx0bGkge1xuXHRcdHdpZHRoOiBwZXJjZW50YWdlKDEvMyk7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0YSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHR3aWR0aDogNTBweDtcblx0XHRoZWlnaHQ6IDUwcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXk7XG5cdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgZWFzZSAuM3M7XG5cblx0XHRzdmcge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHQgICAgdG9wOiAxMnB4O1xuXHQgICAgbGVmdDogMTJweDtcblx0XHRcdHdpZHRoOiAyNXB4O1xuXHRcdFx0aGVpZ2h0OiAyNXB4O1xuXHRcdFx0ZmlsbDogJGJsYWNrO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXk7XG5cdFx0fVxuXHR9XG59XG4iLCIuYXJjaGl2ZS1jb250ZW50IHtcbiAgbWluLWhlaWdodDogNTAwcHg7XG59XG5cbnVsLmFyY2hpdmUtbmF2IHtcbiAgcGFkZGluZy1ib3R0b206IHJlbSg1MHB4KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIGEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgICBjb2xvcjogJGdyZXk7XG4gICAgZm9udC1zaXplOiByZW0oMjJweCk7XG4gICAgZm9udC1mYW1pbHk6ICRtaWdodHktcmVndWxhcjtcblxuICAgICYuaXMtYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkY29hbDtcbiAgICB9XG4gIH1cbn1cblxuZm9ybS5hcmNoaXZlLXNlYXJjaCB7XG4gIG1hcmdpbi1ib3R0b206IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaGFkb3c6IDAgMTBweCAyMHB4IC02cHggcmdiYSgkYmxhY2sgLDAuNik7XG5cbiAgaW5wdXQge1xuICAgIHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDI1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIGZvbnQtZmFtaWx5OiAkbWlnaHR5LXJlZ3VsYXI7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGdvbGQgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuLmFyY2hpdmUtcG9zdHMge1xuICBvdmVyZmxvdzogYXV0bztcbiAgem9vbTogMTtcbn1cblxuLmFsbS1idG4td3JhcCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAjbG9hZC1tb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogJGNvYWw7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgYm9yZGVyOiAycHggc29saWQgJGNvYWw7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4O1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkZ29sZDtcbiAgICAgIGJvcmRlci1jb2xvcjogJGdvbGQ7XG4gICAgfVxuXG4gICAgJi5kb25lIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi5hcmNoaXZlLXBvc3Qge1xuICBtYXJnaW4tYm90dG9tOiA1MHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKCRibGFjayAsMC4yKSwgMCA2cHggMjBweCAwIHJnYmEoJGJsYWNrICwwLjE5KTtcblxuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4zcztcblxuICAmOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDhweCAxMnB4IDAgcmdiYSgkYmxhY2sgLDAuMiksIDAgOHB4IDI4cHggMCByZ2JhKCRibGFjayAsMC41KTtcbiAgfVxuXG4gIGltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWF4LXdpZHRoOiAyMzBweDtcbiAgICBtYXgtaGVpZ2h0OiAxNTVweDtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYSgnPnRhYmxldCcpIHtcbiAgICBAaW5jbHVkZSBjb2woMS8zLCAkY3ljbGU6IDMpO1xuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgQGluY2x1ZGUgY29sKDEvMiwgJGN5Y2xlOiAyKTtcbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhKCc8bW9iaWxlLWwnKSB7XG4gICAgQGluY2x1ZGUgc3BhbigxKTtcbiAgfVxufVxuXG4uYXJjaGl2ZS1pbWFnZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAyMDBweDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuXG4uYXJjaGl2ZS1pbmZvIHtcbiAgcGFkZGluZzogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIGg2IHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIH1cblxuICBwIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIH1cbn1cblxuLmFyY2hpdmUtZXhjZXJwdCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIuc2VhcmNoZWQtdGV4dCB7XG4gIHBhZGRpbmctYm90dG9tOiByZW0oNTBweCk7XG5cbiAgc3BhbiB7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIGJhY2tncm91bmQ6ICRnb2xkO1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gIH1cbn1cblxuLnNlYXJjaC1ldmVyeXRoaW5nLWhpZ2hsaWdodC1jb2xvciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ29sZCAhaW1wb3J0YW50O1xuICBjb2xvcjogJHdoaXRlO1xufVxuXG4uc2VhcmNoZWQtcG9zdCB7XG4gIEBpbmNsdWRlIGNmKCk7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IHJlbSgyNTBweCk7XG4gIGJvcmRlci1ib3R0b206IHJlbSgxcHgpIHNvbGlkICRncmV5O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCBlYXNlLWluLW91dCAuM3M7XG5cbiAgJjpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMTJweCAwIHJnYmEoJGJsYWNrICwwLjIpLCAwIDhweCAyOHB4IDAgcmdiYSgkYmxhY2sgLDAuNSk7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b206IDBweDtcbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhKCc8dGFibGV0Jykge1xuICAgIHBhZGRpbmc6IDI1cHg7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIC5zZWFyY2hlZC1pbWFnZSB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIGhlaWdodDogMTc1cHg7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuXG4gICAgLnNlYXJjaGVkLWluZm8ge1xuICAgICAgQGluY2x1ZGUgc3BhbigxKTtcbiAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG5cbiAgICAgIGg2LCBwIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VhcmNoZWQtZXhjZXJwdCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhKCc8bW9iaWxlLWwnKSB7XG4gICAgLnNlYXJjaGVkLWltYWdlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxufVxuXG4uc2VhcmNoZWQtaW1hZ2Uge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgQGluY2x1ZGUgY29sKDEvMyk7XG59XG5cbi5zZWFyY2hlZC1pbmZvIHtcbiAgQGluY2x1ZGUgY29sKDIvMyk7XG5cbiAgaDYge1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgQGluY2x1ZGUgdmVydGljYWxseS1hbGlnbigpO1xuICB9XG59XG5cbi5zZWFyY2hlZC1kYXRlIHtcbiAgZm9udC1zaXplOiByZW0oMTJweCk7XG59XG5cbi5zZWFyY2hlZC1leGNlcnB0IHtcbiAgZm9udC1zaXplOiByZW0oMTZweCk7XG59XG4iLCIub3Bpbmlvbi1uYXYge1xuICBoNSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgdWwuYXJjaGl2ZS1wb3N0cyB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMjVweDtcbiAgICB3aWR0aDogNzAlO1xuICB9XG5cbiAgbGkuYXJjaGl2ZS1wb3N0IHtcbiAgICBAaW5jbHVkZSBzcGFuKDEpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5O1xuICAgIHRyYW5zaXRpb246IGFsbCBlYXNlIC4zcztcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5O1xuICAgIH1cblxuICAgIGEge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBoZWlnaHQ6IHJlbSgyNTBweCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgICBwYWRkaW5nOiAyNXB4O1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgei1pbmRleDogOTtcbiAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCAwIHJnYmEoJGJsYWNrICwwLjIpLCAwIDZweCAyMHB4IDAgcmdiYSgkYmxhY2sgLDAuMTkpO1xuICAgICAgaDYge1xuICAgICAgICBjb2xvcjogJGdvbGQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmFyY2hpdmUtaW1hZ2Uge1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgIEBpbmNsdWRlIGNvbCgxLzMpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhKCc8dGFibGV0Jykge1xuICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJzxtb2JpbGUtbCcpIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5hcmNoaXZlLWluZm8ge1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICBoNiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIGVhc2UgLjNzO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgZm9udC1zaXplOiByZW0oMTJweCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgIEBpbmNsdWRlIGNvbCgyLzMpO1xuICAgICAgQGluY2x1ZGUgdmVydGljYWxseS1hbGlnbigpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhKCc8dGFibGV0Jykge1xuICAgICAgcGFkZGluZy10b3A6IDE1cHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICAgIGg2LCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5hcmNoaXZlLWV4Y2VycHQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgcCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgZm9udC1zaXplOiByZW0oMTRweCk7XG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhKCc8dGFibGV0Jykge1xuXG4gICAgLm9waW5pb24tbmF2IHtcbiAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICB9XG5cbiAgICB1bC5hcmNoaXZlLXBvc3RzIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZzogMCA0JTtcbiAgICB9XG5cbiAgICAuYXJjaGl2ZS1pbWFnZSxcbiAgICAuYXJjaGl2ZS1pbmZvIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMSk7XG4gICAgfVxuICB9XG5cbiAgLmFsbS1idG4td3JhcCB7XG4gICAgbWFyZ2luOiAyNXB4IDA7XG4gIH1cbn1cblxuLnZpZGVvLXdyYXBwZXIge1xuICBAaW5jbHVkZSB2ZXJ0aWNhbGx5LWFsaWduKCk7XG4gIHdpZHRoOiA3MCU7XG4gIG1heC13aWR0aDogOTAwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuXG4gIEBpbmNsdWRlIG1lZGlhKCc8dGFibGV0Jykge1xuICAgIHdpZHRoOiA5MCU7XG4gIH1cbn1cblxuLnZpZGVvLWNvbnRhaW5lciB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRwYWRkaW5nLWJvdHRvbTo1Mi4yNSU7XG5cdHBhZGRpbmctdG9wOiAzMHB4O1xuXHRoZWlnaHQ6MDtcblx0b3ZlcmZsb3c6aGlkZGVuO1xufVxuXG4udmlkZW8tY29udGFpbmVyIGlmcmFtZSwgLnZpZGVvLWNvbnRhaW5lciBvYmplY3QsIC52aWRlby1jb250YWluZXIgZW1iZWQge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0dG9wOjA7XG5cdGxlZnQ6MDtcblx0d2lkdGg6MTAwJTtcblx0aGVpZ2h0OjEwMCU7XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */