@charset "UTF-8";
/*  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.
 */
/* ==========================================================================
   Normalize.scss settings
   ========================================================================== */
/**
 * Includes legacy browser support IE6/7
 *
 * Set to false if you want to drop support for IE6 and IE7
 */
/* Base
   ========================================================================== */
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 * 3. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using
 *  `em` units.
 */
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 6/7/8/9 and Firefox 3.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */
audio,
canvas,
progress,
video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
 * Prevents 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.
 * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
 */
[hidden],
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.67em 0; }

/**
 * Addresses 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
   ========================================================================== */
/**
 * 1. Remove border when inside `a` element in IE 8/9/10.
 * 2. Improves image quality when scaled in IE 7.
 */
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.
 * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
 */
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.
 * 4. Improves appearance and consistency in all browsers.
 */
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.
 * 4. Removes inner spacing in IE 7 without affecting normal text inputs.
 *  Known issue: inner spacing remains in IE 6.
 */
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; }

/**
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 *  Known issue: excess padding remains in IE 6.
 */
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"] {
  -webkit-appearance: textfield;
  /* 1 */
  box-sizing: content-box;
  /* 2 */ }

/**
 * 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.
 * 3. Corrects text not wrapping in Firefox 3.
 * 4. Corrects alignment displayed oddly in IE 6/7.
 */
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; }

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

img {
  max-width: 100%;
  height: auto !important; }

@font-face {
  font-family: 'Fontin Small Caps';
  src: url("../fonts/fontin-smallcaps-webfont.eot");
  src: local("Fontin Small Caps"), url("../fonts/fontin-smallcaps-webfont.woff") format("woff"), url("../fonts/fontin-smallcaps-webfont.ttf") format("truetype"), url("../fonts/fontin-smallcaps-webfont.svg#webfont1WYomNdM") format("svg");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'Fontin';
  src: url("../fonts/fontin-regular-webfont.eot");
  src: local("Fontin"), url("../fonts/fontin-regular-webfont.woff") format("woff"), url("../fonts/fontin-regular-webfont.ttf") format("truetype"), url("../fonts/fontin-regular-webfont.svg#webfontosjbZUhE") format("svg");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'Fontin';
  src: url("../fonts/fontin-italic-webfont.eot");
  src: local("Fontin"), url("../fonts/fontin-italic-webfont.woff") format("woff"), url("../fonts/fontin-italic-webfont.ttf") format("truetype"), url("../fonts/fontin-italic-webfont.svg#webfontkY6wBQg6") format("svg");
  font-weight: normal;
  font-style: italic; }

@font-face {
  font-family: 'Fontin';
  src: url("../fonts/fontin-bold-webfont.eot");
  src: local("Fontin"), url("../fonts/fontin-bold-webfont.woff") format("woff"), url("../fonts/fontin-bold-webfont.ttf") format("truetype"), url("../fonts/fontin-bold-webfont.svg#webfont5kwPPRqy") format("svg");
  font-weight: bold;
  font-style: normal; }

.container {
  *zoom: 1;
  width: auto;
  max-width: 1180px;
  float: none;
  display: block;
  margin-right: auto;
  margin-left: auto;
  padding-left: 0;
  padding-right: 0;
  padding: 0 10px; }
  .container:before, .container:after {
    content: '';
    display: table; }
  .container:after {
    clear: both; }

@media (min-width: 1000px) {
  .col3-4 {
    *zoom: 1;
    float: left;
    clear: none;
    text-align: inherit;
    width: 74.25%;
    margin-left: 0%;
    margin-right: 3%; }
    .col3-4:before, .col3-4:after {
      content: '';
      display: table; }
    .col3-4:after {
      clear: both; }
    .col3-4:last-child {
      margin-right: 0%; }
  .col1-4 {
    *zoom: 1;
    float: left;
    clear: none;
    text-align: inherit;
    width: 22.75%;
    margin-left: 0%;
    margin-right: 3%; }
    .col1-4:before, .col1-4:after {
      content: '';
      display: table; }
    .col1-4:after {
      clear: both; }
    .col1-4:last-child {
      margin-right: 0%; }
  .col1-2 {
    *zoom: 1;
    float: left;
    clear: none;
    text-align: inherit;
    width: 48.5%;
    margin-left: 0%;
    margin-right: 3%; }
    .col1-2:before, .col1-2:after {
      content: '';
      display: table; }
    .col1-2:after {
      clear: both; }
    .col1-2:last-child {
      margin-right: 0%; }
  .main-content {
    *zoom: 1;
    float: left;
    clear: none;
    text-align: inherit;
    width: 65.66667%;
    margin-left: 0%;
    margin-right: 3%;
    position: relative;
    left: 34.33333%; }
    .main-content:before, .main-content:after {
      content: '';
      display: table; }
    .main-content:after {
      clear: both; }
    .main-content:last-child {
      margin-right: 0%; }
  .side-bar {
    *zoom: 1;
    float: left;
    clear: none;
    text-align: inherit;
    width: 22.75%;
    margin-left: 0%;
    margin-right: 3%;
    position: relative;
    left: -68.66667%; }
    .side-bar:before, .side-bar:after {
      content: '';
      display: table; }
    .side-bar:after {
      clear: both; }
    .side-bar:last-child {
      margin-right: 0%; } }

@font-face {
  font-family: 'rriogo';
  src: url("../fonts/rriogo.eot?llrdwo");
  src: url("../fonts/rriogo.eot?llrdwo#iefix") format("embedded-opentype"), url("../fonts/rriogo.ttf?llrdwo") format("truetype"), url("../fonts/rriogo.woff?llrdwo") format("woff"), url("../fonts/rriogo.svg?llrdwo#rriogo") format("svg");
  font-weight: normal;
  font-style: normal; }

[class^="icon-"], [class*=" icon-"] {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'rriogo' !important;
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.icon-link-external:before {
  content: ""; }

.icon-envelope:before {
  content: ""; }

.icon-star-half:before {
  content: ""; }

.icon-star-full:before {
  content: ""; }

.icon-star-empty:before {
  content: ""; }

.icon-profile:before {
  content: ""; }

.icon-briefcase:before {
  content: ""; }

.icon-twitter:before {
  content: ""; }

.icon-dribbble:before {
  content: ""; }

.icon-google-plus:before {
  content: ""; }

.icon-embed:before {
  content: ""; }

.icon-pinterest:before {
  content: ""; }

.icon-behance:before {
  content: ""; }

.icon-youtube-play:before {
  content: ""; }

.icon-linkedin:before {
  content: ""; }

.icon-facebook:before {
  content: ""; }

.icon-github:before {
  content: ""; }

.icon-code:before {
  content: ""; }

.icon-design:before {
  content: ""; }

.icon-star-full:before {
  content: ""; }

.icon-star-empty:before {
  content: ""; }

.icon-profile:before {
  content: ""; }

.icon-briefcase:before {
  content: ""; }

.icon-twitter:before {
  content: ""; }

.icon-dribbble:before {
  content: ""; }

.icon-google-plus:before {
  content: ""; }

.icon-embed:before {
  content: ""; }

.icon-pinterest:before {
  content: ""; }

.icon-behance:before {
  content: ""; }

.icon-youtube-play:before {
  content: ""; }

.icon-linkedin:before {
  content: ""; }

.icon-facebook:before {
  content: ""; }

.icon-github:before {
  content: ""; }

.icon-youtube:before {
  content: ""; }

.icon-pinterest-p:before {
  content: ""; }

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0; }

@media (min-width: 550px) {
  .mobile-only {
    display: none; } }

@media (max-width: 550px) {
  .no-mobile {
    display: none; } }

.stuck {
  position: fixed;
  top: 0; }

.footer {
  text-align: center; }

input, select, textarea {
  background: #EEE;
  border: 1px solid #AFAFAF;
  padding: 15px 10px;
  width: 100%;
  display: block; }
  input.error, select.error, textarea.error {
    border-color: red;
    background: #ffcece; }

textarea {
  min-height: 150px; }

button, input[type=submit], button[type=submit] {
  padding: 15px 20px;
  border: none;
  background: #2f6db5;
  color: #FFF;
  width: 100%;
  font-family: 'Open Sans', sans-serif;
  text-transform: uppercase;
  font-size: 1.2em; }

form .field {
  margin-bottom: 10px; }

label.error {
  color: red; }

a {
  color: #2f6db5;
  text-decoration: none; }
  a:hover {
    text-decoration: underline; }

.mail-contact {
  font-size: 1.6em; }
  .mail-contact a {
    color: gray; }

.icon-envelope {
  color: gray;
  font-size: 1em;
  padding: 7px; }

#contato-page h2 {
  font-family: 'Open Sans', sans-serif;
  font-weight: 200;
  font-size: 3em;
  margin-top: 0; }

.menu-trigger {
  position: fixed;
  top: 20px;
  right: 20px;
  height: 30px;
  width: 30px;
  z-index: 400;
  /* image replacement */
  overflow: hidden;
  text-indent: 100%;
  white-space: nowrap;
  cursor: pointer; }
  @media (min-width: 550px) {
    .menu-trigger {
      display: none; } }
  .menu-trigger .menu-icon {
    /* icon created in CSS */
    position: absolute;
    left: 50%;
    top: 50%;
    bottom: auto;
    right: auto;
    -webkit-transform: translateX(-50%) translateY(-50%);
            transform: translateX(-50%) translateY(-50%);
    display: inline-block;
    width: 25px;
    height: 4px;
    background-color: #ffffff;
    z-index: 10; }
    .menu-trigger .menu-icon::before, .menu-trigger .menu-icon::after {
      /* upper and lower lines of the menu icon */
      position: absolute;
      content: '';
      top: 0;
      right: 0;
      width: 100%;
      height: 100%;
      background-color: #FFF;
      transition: -webkit-transform 0.3s;
      transition: transform 0.3s;
      transition: transform 0.3s, -webkit-transform 0.3s; }
    .menu-trigger .menu-icon::before {
      -webkit-transform: translateY(-8px) rotate(0deg);
              transform: translateY(-8px) rotate(0deg); }
    .menu-trigger .menu-icon::after {
      -webkit-transform: translateY(8px) rotate(0deg);
              transform: translateY(8px) rotate(0deg); }
  .nav-opened .menu-trigger .menu-icon {
    background-color: transparent; }
    .nav-opened .menu-trigger .menu-icon::before {
      -webkit-transform: translateY(0) rotate(45deg);
              transform: translateY(0) rotate(45deg); }
    .nav-opened .menu-trigger .menu-icon::after {
      -webkit-transform: translateY(0) rotate(-45deg);
              transform: translateY(0) rotate(-45deg); }

.tag.tag-php {
  background: #8892bf;
  color: #ebedf5; }

.tag.tag-code-igniter {
  background: #dd4814;
  color: #f5ae95; }

.tag.tag-html {
  background: #e44d26;
  color: #f5bdae; }

.tag.tag-css {
  background: #1572b6;
  color: #75bbef; }

.tag.tag-photoshop {
  background: #3f8ddf;
  color: #c2dbf5; }

.tag.tag-illustrator {
  background: #fdae37;
  color: #ffebce; }

.tag.tag-wordpress {
  background: #21759a;
  color: #73bfe1; }

.tag.tag-sass {
  background: #c6538c;
  color: #ecc6d9; }

.tag.tag-javascript {
  background: #f7df1e;
  color: #786b04; }

.tag.tag-indesign {
  background: #ff3d90;
  color: #ffd6e8; }

body {
  font-family: 'Open Sans', sans-serif;
  color: #333;
  font-size: .9em; }

h1, h2, h3, h4, h5, h6, button, input[type=submit] {
  font-family: 'Open Sans Condensed', sans-serif;
  color: #333; }

h1 {
  font-family: 'Fontin', sans-serif;
  font-size: 6em;
  letter-spacing: -3px; }
  h1:after {
    content: " ";
    height: 3px;
    width: 140px;
    display: block;
    margin-top: -5px;
    background: #2f6db5; }

p, li {
  line-height: 1.6em; }

p {
  margin-bottom: 1.6em; }

.charts-langs {
  padding-left: 0;
  width: 100%; }
  .charts-langs .chart {
    background: red;
    width: 60px;
    margin: 0 auto;
    z-index: 10;
    position: relative;
    right: -5px;
    top: -5px; }
    .charts-langs .chart:after {
      content: " ";
      display: block;
      position: relative;
      color: #FFF;
      height: 100%;
      width: 100%;
      right: 5px;
      top: 5px;
      z-index: 1;
      background: #000; }
  .charts-langs li {
    display: inline-block;
    list-style: none;
    height: 200px;
    text-align: center;
    margin-right: 20px;
    font-weight: bold; }
    .charts-langs li:nth-child(1) .chart {
      height: 95%; }
      .charts-langs li:nth-child(1) .chart:after {
        content: "95%"; }
    .charts-langs li:nth-child(2) .chart {
      height: 95%; }
      .charts-langs li:nth-child(2) .chart:after {
        content: "95%"; }
    .charts-langs li:nth-child(3) .chart {
      height: 70%; }
      .charts-langs li:nth-child(3) .chart:after {
        content: "70%"; }
    .charts-langs li:nth-child(4) .chart {
      height: 80%; }
      .charts-langs li:nth-child(4) .chart:after {
        content: "80%"; }
    .charts-langs li:nth-child(5) .chart {
      height: 95%; }
      .charts-langs li:nth-child(5) .chart:after {
        content: "95%"; }
    .charts-langs li:nth-child(6) .chart {
      height: 80%; }
      .charts-langs li:nth-child(6) .chart:after {
        content: "80%"; }
    .charts-langs li:nth-child(7) .chart {
      height: 70%; }
      .charts-langs li:nth-child(7) .chart:after {
        content: "70%"; }
    .charts-langs li:nth-child(8) .chart {
      height: 80%; }
      .charts-langs li:nth-child(8) .chart:after {
        content: "80%"; }
    .charts-langs li:nth-child(1) .chart {
      background: #be430e; }
      .charts-langs li:nth-child(1) .chart:after {
        background: #ef652a; }
    .charts-langs li:nth-child(2) .chart {
      background: #0d4771; }
      .charts-langs li:nth-child(2) .chart:after {
        background: #1572b6; }
    .charts-langs li:nth-child(3) .chart {
      background: #9a3366; }
      .charts-langs li:nth-child(3) .chart:after {
        background: #c6538c; }
    .charts-langs li:nth-child(4) .chart {
      background: #c88900; }
      .charts-langs li:nth-child(4) .chart:after {
        background: #ffb615; }
    .charts-langs li:nth-child(5) .chart {
      background: #043c63; }
      .charts-langs li:nth-child(5) .chart:after {
        background: #0769ad; }
    .charts-langs li:nth-child(6) .chart {
      background: #5865a3; }
      .charts-langs li:nth-child(6) .chart:after {
        background: #8892bf; }
    .charts-langs li:nth-child(7) .chart {
      background: #ef1f17; }
      .charts-langs li:nth-child(7) .chart:after {
        background: #f4645f; }
    .charts-langs li:nth-child(8) .chart {
      background: #4a682a; }
      .charts-langs li:nth-child(8) .chart:after {
        background: #719e40; }

.chart-softwares {
  padding-left: 0; }
  .chart-softwares li {
    display: inline-block;
    text-align: center;
    max-width: 32%; }
    .chart-softwares li:nth-child(1) {
      color: #0480b1; }
    .chart-softwares li:nth-child(2) {
      color: #9c3a00; }
    .chart-softwares li:nth-child(3) {
      color: #bb0052; }
    .chart-softwares li:nth-child(4) {
      color: #b600fc; }
    .chart-softwares li:nth-child(5) {
      color: #851eff; }

@-webkit-keyframes dash {
  0% {
    stroke-dashoffset: 1000; }
  75% {
    stroke-dashoffset: 300;
    fill: transparent;
    stroke: #000000; }
  100% {
    stroke-dashoffset: 300;
    stroke: transparent;
    fill: #FFF; } }

@keyframes dash {
  0% {
    stroke-dashoffset: 1000; }
  75% {
    stroke-dashoffset: 300;
    fill: transparent;
    stroke: #000000; }
  100% {
    stroke-dashoffset: 300;
    stroke: transparent;
    fill: #FFF; } }

#home-page path, #home-page polygon {
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
  -webkit-animation-name: dash;
          animation-name: dash;
  -webkit-animation-duration: 10s;
          animation-duration: 10s;
  -webkit-animation-timing-function: linear;
          animation-timing-function: linear;
  -webkit-animation-fill-mode: forwards;
          animation-fill-mode: forwards;
  -webkit-animation-delay: 2s;
          animation-delay: 2s; }

@-webkit-keyframes fade {
  from {
    -webkit-transform: translateY(30px);
            transform: translateY(30px);
    opacity: 0; }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1; } }

@keyframes fade {
  from {
    -webkit-transform: translateY(30px);
            transform: translateY(30px);
    opacity: 0; }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1; } }

.portfolio-list {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  padding-left: 0; }
  .portfolio-list h2 {
    font-family: 'Fontin', sans-serif; }
  .portfolio-list article {
    display: inline-block;
    border-radius: 50%;
    margin: 0 auto;
    margin-bottom: 40px;
    width: 100%; }
    @media (min-width: 550px) {
      .portfolio-list article {
        margin-left: 0;
        margin-right: 0;
        overflow: hidden;
        width: auto; } }
  .portfolio-list a {
    position: relative;
    display: block;
    float: left;
    border-radius: 50%;
    padding: 10px;
    border: 1px solid #333;
    -webkit-transform: translateZ(0);
            transform: translateZ(0);
    max-width: 300px;
    width: 50%; }
    @media (min-width: 550px) {
      .portfolio-list a {
        width: auto;
        overflow: hidden; }
        .portfolio-list a:after {
          position: absolute;
          top: -25%;
          left: -25%;
          content: " ";
          width: 600px;
          height: 600px;
          -webkit-transform: rotate(-45deg) translateY(75%);
                  transform: rotate(-45deg) translateY(75%);
          background: rgba(252, 189, 116, 0.8);
          transition: -webkit-transform .4s;
          transition: transform .4s;
          transition: transform .4s, -webkit-transform .4s; }
        .portfolio-list a:hover:after {
          -webkit-transform: rotate(-45deg) translateY(0);
                  transform: rotate(-45deg) translateY(0); } }
    .portfolio-list a .title {
      position: absolute;
      top: 50%;
      left: 100%;
      -webkit-transform: translateY(-50%);
              transform: translateY(-50%);
      z-index: 300;
      color: #333;
      font-size: 1.5em;
      width: 100%;
      padding-left: 15px; }
      @media (min-width: 550px) {
        .portfolio-list a .title {
          left: 50%;
          top: 50%;
          width: 80%;
          -webkit-transform: translate(-50%, -50%);
                  transform: translate(-50%, -50%);
          text-align: center; }
          .portfolio-list a .title > * {
            -webkit-transform: translateY(-30px);
                    transform: translateY(-30px);
            opacity: 0; } }
    .portfolio-list a .service-icon {
      display: none; }
      @media (min-width: 550px) {
        .portfolio-list a .service-icon {
          display: block; } }
    .portfolio-list a .name {
      font-size: 1.2em;
      letter-spacing: -1px;
      margin-bottom: 0; }
      .portfolio-list a .name:after {
        display: none; }
    .portfolio-list a .tagline {
      font-style: italic;
      font-size: .8em;
      margin-top: 0; }
    @media (min-width: 550px) {
      .portfolio-list a:hover .title > * {
        -webkit-animation-name: fade;
                animation-name: fade;
        -webkit-animation-duration: .4s;
                animation-duration: .4s;
        -webkit-animation-fill-mode: forwards;
                animation-fill-mode: forwards; }
        .portfolio-list a:hover .title > *:nth-child(1) {
          -webkit-animation-delay: 0.1s;
                  animation-delay: 0.1s; }
        .portfolio-list a:hover .title > *:nth-child(2) {
          -webkit-animation-delay: 0.2s;
                  animation-delay: 0.2s; }
        .portfolio-list a:hover .title > *:nth-child(3) {
          -webkit-animation-delay: 0.3s;
                  animation-delay: 0.3s; }
        .portfolio-list a:hover .title > *:nth-child(4) {
          -webkit-animation-delay: 0.4s;
                  animation-delay: 0.4s; } }
  .portfolio-list .code-project a:after {
    background: rgba(165, 209, 114, 0.8); }
  .portfolio-list img {
    border-radius: 50%;
    display: block; }

.service-icon {
  font-size: 50px;
  text-align: center;
  display: block; }

.mock {
  -webkit-filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.6));
          filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.6)); }

.boxed {
  -webkit-filter: drop-shadow(2px 2px 5px rgba(0, 0, 0, 0.3));
          filter: drop-shadow(2px 2px 5px rgba(0, 0, 0, 0.3));
  max-width: 96%; }

.chrome-mock {
  position: relative;
  max-width: 900px;
  max-height: 564px; }

.chrome-view {
  position: absolute;
  top: 19.5%;
  width: 100%;
  height: 80.5%;
  background: #FFF;
  border-bottom-right-radius: 5px;
  border-bottom-left-radius: 5px;
  overflow: hidden; }
  .chrome-view img {
    position: absolute;
    top: 0;
    left: 0;
    max-width: 100%; }

.chrome-title, .chrome-nav {
  position: absolute;
  font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
  font-size: 100%; }

.chrome-title {
  top: 4.2%;
  left: 3%;
  max-width: 10%;
  color: #888;
  overflow: hidden;
  white-space: nowrap; }

.chrome-nav {
  top: 12.7%;
  left: 18%;
  color: #000; }
  .chrome-nav::before {
    content: 'http://www.';
    color: #AAA; }

.iphone-mock {
  position: relative;
  max-width: 250px;
  max-height: 528px; }

.iphone-view {
  position: absolute;
  top: 11%;
  left: 4%;
  width: 91%;
  height: 77%;
  background: #FFF;
  overflow: hidden; }
  .iphone-view img {
    position: absolute;
    top: 0;
    left: 0;
    max-width: 100%; }

.iphone-wrap {
  width: 30%;
  max-width: 250px;
  position: absolute;
  top: 15%;
  right: 0%; }

.chrome-wrap {
  *zoom: 1;
  width: auto;
  max-width: 900px;
  float: none;
  display: block;
  margin-right: auto;
  margin-left: auto;
  padding-left: 0;
  padding-right: 0; }
  .chrome-wrap:before, .chrome-wrap:after {
    content: '';
    display: table; }
  .chrome-wrap:after {
    clear: both; }
  @media (min-width: 0) and (max-width: 899px) {
    .chrome-wrap {
      max-width: 95%; } }

/*
<div class="chrome-mock">
	<img src="chrome-mock.svg" alt="" class="mock">
	<div class="chrome-title">Google Inc.</div>
	<div class="chrome-nav">google.com.br</div>
	<div class="chrome-view">
		<img src="R2A Engenharia 1.png" alt="">
	</div>
</div>
<div class="iphone-mock">
	<img src="iphone-mock.svg" alt="" class="mock">
	<div class="iphone-view">
		<img src="R2A Engenharia MOB.png" alt="">
	</div>
</div>
*/
.social {
  padding-left: 0; }
  .social li {
    display: inline-block;
    font-size: 25px;
    text-align: center;
    margin-right: 5px; }
    .social li a {
      display: block;
      position: relative;
      width: 60px;
      height: 60px;
      border-radius: 50%;
      transition: all .4s;
      color: gray; }
      .social li a:after, .social li a:before {
        position: absolute;
        top: 50%;
        left: 50%;
        -webkit-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%);
        border-radius: 50%;
        content: " ";
        display: block;
        width: 100%;
        height: 100%;
        border: 1px solid gray;
        transition: all .4s; }
      .social li a:before {
        width: 80%;
        height: 80%; }
      .social li a:hover:before {
        border-color: #FFF; }
      .social li a.social-linkedin:hover {
        color: #FFF;
        background: #1a84bc; }
        .social li a.social-linkedin:hover:after {
          border-color: #1a84bc; }
      .social li a.social-github:hover {
        color: #FFF;
        background: #000; }
        .social li a.social-github:hover:after {
          border-color: #000; }
      .social li a.social-twitter:hover {
        color: #FFF;
        background: #1da1f2; }
        .social li a.social-twitter:hover:after {
          border-color: #1da1f2; }
      .social li a.social-pinterest:hover {
        color: #FFF;
        background: #d01d15; }
        .social li a.social-pinterest:hover:after {
          border-color: #d01d15; }
      .social li a span {
        position: absolute;
        top: 50%;
        left: 50%;
        -webkit-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%); }

.site-header {
  padding: 10px 0;
  transition: .3s all;
  position: fixed;
  width: 100%;
  z-index: 200;
  *zoom: 1; }
  .site-header:before, .site-header:after {
    content: '';
    display: table; }
  .site-header:after {
    clear: both; }
  .site-header .container {
    position: relative; }

.top-bar-bg {
  background: black;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transform-origin: 0% 0%;
          transform-origin: 0% 0%;
  -webkit-transform: rotateX(180deg);
          transform: rotateX(180deg);
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  transition: all 1s; }
  .sticky .top-bar-bg {
    background: #2f6db5;
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg); }

.brand {
  max-width: 220px; }
  .brand a {
    display: block;
    width: 100%;
    height: 50px; }
  .brand img {
    transition: opacity 1s; }
  .sticky .brand {
    background: transparent url("/svg/logotipo.svg?c=fff") left top no-repeat;
    background-size: 100%; }
    .sticky .brand img {
      opacity: 0; }

.main-nav {
  position: fixed;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(200%, -50%);
          transform: translate(200%, -50%);
  z-index: 340;
  text-align: center;
  width: 280px;
  padding: 10px;
  transition: -webkit-transform 0.3s;
  transition: transform 0.3s;
  transition: transform 0.3s, -webkit-transform 0.3s; }
  .nav-opened .main-nav {
    -webkit-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%); }
  .main-nav ul {
    width: 100%;
    padding: 0 15px; }
  .main-nav a {
    padding: 10px;
    display: block;
    color: #FFF;
    text-transform: uppercase;
    transition: color 1s; }
    @media (min-width: 550px) {
      .main-nav a {
        color: #2f6db5; } }
    .main-nav a:hover {
      text-decoration: none; }
    .sticky .main-nav a {
      transition: .3s all;
      color: #FFF; }
  .main-nav li {
    border-bottom: 1px solid #3567AF;
    list-style: none;
    display: block;
    margin-left: 0;
    text-align: center; }
    .main-nav li:last-of-type {
      border-bottom: none; }
  @media (min-width: 550px) {
    .main-nav {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      padding: 0;
      padding-top: 5px;
      -webkit-transform: none;
              transform: none;
      width: auto; }
      .main-nav ul {
        text-align: right;
        margin: 0;
        right: 0;
        padding-left: 0; }
      .main-nav li {
        display: inline-block;
        margin-left: 20px;
        border-bottom: none; } }

body > header,
body > .container {
  transition: -webkit-transform 0.3s;
  transition: transform 0.3s;
  transition: transform 0.3s, -webkit-transform 0.3s; }

.menu-overlay {
  position: fixed;
  right: 10px;
  top: 10px;
  z-index: 300;
  background: #3FACE2;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  -webkit-transform: scale(1);
          transform: scale(1);
  transition: -webkit-transform .2s;
  transition: transform .2s;
  transition: transform .2s, -webkit-transform .2s; }
  .nav-opened .menu-overlay {
    -webkit-transform: scale(50);
            transform: scale(50);
    transition: -webkit-transform .5s;
    transition: transform .5s;
    transition: transform .5s, -webkit-transform .5s; }
  @media (min-width: 550px) {
    .menu-overlay {
      display: none; } }

.portfolio-wrap {
  background: #018bd3;
  color: #FFF; }
  .portfolio-wrap a {
    color: #FFF; }
  .inverse .portfolio-wrap {
    color: #333; }
    .inverse .portfolio-wrap a {
      color: #333; }
  .portfolio-wrap .container, .portfolio-wrap header {
    position: relative; }
  .portfolio-wrap h1 {
    margin: 0;
    padding: 0; }
    .portfolio-wrap h1:after {
      display: none; }
  .portfolio-wrap #svgLogo {
    display: none; }
    @media (min-width: 550px) {
      .portfolio-wrap #svgLogo {
        display: inline; } }
  .portfolio-wrap header {
    position: fixed;
    width: 100%;
    background: #018bd3;
    padding-bottom: 10px;
    z-index: 200; }
  .portfolio-wrap > .container:first-of-type {
    padding-top: 80px; }
    @media (min-width: 550px) {
      .portfolio-wrap > .container:first-of-type {
        padding-top: 120px; } }

.project-title {
  line-height: .6em;
  margin-bottom: 30px;
  color: #FFF; }
  .inverse .project-title {
    color: #333; }
  .project-title img {
    width: 160px;
    -webkit-transform: translateY(7px);
            transform: translateY(7px); }
  .project-title span {
    border-color: #FFF;
    font-family: 'Fontin', sans-serif;
    font-size: .25em;
    letter-spacing: .002em; }
    @media (min-width: 550px) {
      .project-title span {
        font-size: .5em;
        border-left: 1px solid #FFF;
        padding-left: 20px; } }
    .inverse .project-title span {
      border-color: #333; }

.slide {
  background: #EEE;
  text-align: center;
  padding: 5% 0; }
  .slide-init {
    background: #EEE url("/svg/up.svg?c=018bd3") no-repeat;
    background-size: contain;
    background-position: -2px 0;
    padding-bottom: 60px; }
    @media (min-width: 550px) {
      .slide-init {
        padding-bottom: 0; } }
  .slide-fim {
    background: #EEE url("/svg/down.svg?c=018bd3") no-repeat bottom center;
    background-size: cover; }
  .slide-content {
    *zoom: 1;
    width: auto;
    max-width: 1180px;
    float: none;
    display: block;
    margin-right: auto;
    margin-left: auto;
    padding-left: 0;
    padding-right: 0; }
    .slide-content:before, .slide-content:after {
      content: '';
      display: table; }
    .slide-content:after {
      clear: both; }
    .slide-content.slide-mocks {
      position: relative; }

.portfolio-close {
  position: absolute;
  bottom: 13px;
  right: 10px;
  cursor: pointer;
  text-transform: uppercase;
  color: #FFF; }
  .inverse .portfolio-close {
    color: #333; }
  .portfolio-close:hover {
    text-decoration: none; }
  .portfolio-close span {
    display: inline-block;
    vertical-align: middle; }
    .portfolio-close span:first-of-type {
      display: none; }
      @media (min-width: 550px) {
        .portfolio-close span:first-of-type {
          display: inline-block; } }
  .portfolio-close .icon {
    display: inline-block;
    width: 40px;
    height: 40px;
    margin-left: 10px; }
    .portfolio-close .icon:after, .portfolio-close .icon:before {
      top: 50%;
      left: 50%;
      position: relative;
      display: block;
      content: ' ';
      width: 40px;
      height: 1px;
      background: #FFF;
      -webkit-transform: translate(-50%, -50%) rotate(45deg);
              transform: translate(-50%, -50%) rotate(45deg); }
      .inverse .portfolio-close .icon:after, .inverse .portfolio-close .icon:before {
        background: #333; }
    .portfolio-close .icon:before {
      -webkit-transform: translate(-50%, -50%) rotate(-45deg);
              transform: translate(-50%, -50%) rotate(-45deg); }

#project-container {
  position: fixed;
  overflow: auto;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.6);
  z-index: 1000;
  display: none; }
  .project-opened #project-container {
    display: block; }

body.project-opened, html.project-opened {
  overflow: hidden;
  width: 100%; }

.credits {
  background: rgba(255, 255, 255, 0.2);
  margin: 10px 0;
  padding: 10px 20px; }
  .inverse .credits {
    background: rgba(0, 0, 0, 0.2); }

.tag-list {
  list-style: none;
  margin: 10px 0;
  padding-left: 0; }

.tag {
  display: inline-block;
  background: #999;
  color: #FFF;
  border-radius: 3px;
  padding: 2px 7px; }

a.external {
  color: #FFF; }
  a.external:before {
    font-family: 'rriogo' !important;
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;
    /* Better Font Rendering =========== */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    content: "";
    margin-right: 10px; }

.inverse p {
  color: #333; }

.inverse a.external {
  color: #333; }

.open-project {
  overflow: hidden; }

@-webkit-keyframes slide {
  from {
    -webkit-transform: translateX(100%);
            transform: translateX(100%); }
  to {
    -webkit-transform: translateX(0);
            transform: translateX(0); } }

@keyframes slide {
  from {
    -webkit-transform: translateX(100%);
            transform: translateX(100%); }
  to {
    -webkit-transform: translateX(0);
            transform: translateX(0); } }

.open-project #project-show {
  position: fixed;
  top: 0;
  left: 0;
  height: 100vh;
  width: 100vw;
  z-index: 1000;
  overflow: auto; }

.open-project.loading #project-show {
  opacity: 0.9;
  background: #FFF url("../img/ajax-loader.gif") no-repeat center center; }
  .open-project.loading #project-show > * {
    display: none; }

.loaded #project-show > * {
  -webkit-animation-name: slide;
          animation-name: slide;
  -webkit-animation-duration: 1s;
          animation-duration: 1s; }

body {
  background: transparent url("../img/paper.png") left top; }
  body > section {
    min-height: 100vh; }

#home-page {
  overflow: hidden;
  background-color: #d5e4f4;
  background-image: url("/svg/bg.svg?c=7e6cb0");
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  background-blend-mode: soft-light; }
  #home-page .wrap {
    overflow: hidden;
    padding-top: 50vh;
    height: 100vh;
    width: 100vw;
    position: relative; }
  #home-page .container {
    -webkit-transform: translateY(-50%);
            transform: translateY(-50%);
    z-index: 100; }

/* No files to import found in pages//* */

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9qZWV0L3Njc3MvamVldC9pbmRleC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9qZWV0L3Njc3MvamVldC9fc2V0dGluZ3Muc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvamVldC9zY3NzL2plZXQvX2Z1bmN0aW9ucy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9qZWV0L3Njc3MvamVldC9fZ3JpZC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ub3JtYWxpemUtc2Nzcy9fbm9ybWFsaXplLnNjc3MiLCJfY29yZS9fYmFzZS5zY3NzIiwiX2NvcmUvX2ZvbnQuc2NzcyIsIl9jb3JlL19ncmlkLnNjc3MiLCJtYWluLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9fYnJlYWtwb2ludC5zY3NzIiwiX2NvcmUvX2ljb21vb24uc2NzcyIsIl9jb3JlL191dGlscy5zY3NzIiwiYXRvbXMvX2Zvb3Rlci5zY3NzIiwiYXRvbXMvX2Zvcm1zLnNjc3MiLCJhdG9tcy9fbGlua3Muc2NzcyIsImF0b21zL19tYWlsLWNvbnRhY3Quc2NzcyIsImF0b21zL19tZW51LXRyaWdnZXIuc2NzcyIsImF0b21zL190YWdzLnNjc3MiLCJhdG9tcy9fdHlwb2dyYXBoeS5zY3NzIiwibW9sZWN1bGVzL19jaGFydHMuc2NzcyIsIm1vbGVjdWxlcy9fY29kZWRlc2lnbi1hbmltYXRpb24uc2NzcyIsIm1vbGVjdWxlcy9fcG9ydGZvbGlvLWxpc3Quc2NzcyIsIm1vbGVjdWxlcy9fcG9ydGZvbGlvLW1vY2t1cHMuc2NzcyIsIm1vbGVjdWxlcy9fc29jaWFsLnNjc3MiLCJvcmdhbmlzbXMvX2hlYWRlci5zY3NzIiwib3JnYW5pc21zL19uYXZpZ2F0aW9uLnNjc3MiLCJ0ZW1wbGF0ZXMvX3BvcnRmb2xpby5zY3NzIiwidGVtcGxhdGVzL19zaXRl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QUNuQyw2QkFBNkI7RUFDN0IsdUJBQXVCO0VBQ3ZCLGtDQUFrQyxFQWNyQztFQXJCRDtJQVVPLGlCQUFpQjtJQUNoQixrQkFBa0I7SUFDbEIsY0FBYztJQUNkLGFBQWE7SUFDYixtQkFBbUIsRUFDdEI7RUFmTDtJQWtCUSxvQ0FBcUI7WUFBckIsNEJBQXFCO0lBQ3JCLGFBQWEsRUFDaEI7O0FuQmdDTCwwQ0FBMEMiLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAY2hhcnNldCBcIlVURi04XCI7XG4vKiAgU3ludGF4IFF1aWNrIFJlZmVyZW5jZVxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBjb2x1bW4oJHJhdGlvczogMSwgJG9mZnNldDogMCwgJGN5Y2xlOiAwLCAkdW5jeWNsZTogMCwgJGd1dHRlcjogJGplZXQtZ3V0dGVyKVxuICBzcGFuKCRyYXRpbzogMSwgJG9mZnNldDogMClcbiAgc2hpZnQoJHJhdGlvczogMCwgJGNvbF9vcl9zcGFuOiBjb2x1bW4sICRndXR0ZXI6ICRqZWV0LWd1dHRlcilcbiAgdW5zaGlmdCgpXG4gIGVkaXQoKVxuICBjZW50ZXIoJG1heF93aWR0aDogMTQxMHB4LCAkcGFkOiAwKVxuICBzdGFjaygkcGFkOiAwLCAkYWxpZ246IGZhbHNlKVxuICB1bnN0YWNrKClcbiAgYWxpZ24oJGRpcmVjdGlvbjogYm90aClcbiAgY2YoKVxuKi9cbi8qKlxuICogR3JpZCBzZXR0aW5ncy5cbiAqIEFsbCB2YWx1ZXMgYXJlIGRlZmF1bHRzIGFuZCBjYW4gdGhlcmVmb3JlIGJlIGVhc2lseSBvdmVyaWRkZW4uXG4gKi9cbi8qKlxuICogTGlzdCBmdW5jdGlvbnMgY291cnRlc3kgb2YgdGhlIHdvbmRlcmZ1bCBmb2xrcyBhdCBUZWFtIFNhc3MuXG4gKiBDaGVjayBvdXQgdGhlaXIgYXdlc29tZSBncmlkOiBTaW5ndWxhcml0eS5cbiAqL1xuLyoqXG4gKiBHZXQgIHBlcmNlbnRhZ2UgZnJvbSBhIGdpdmVuIHJhdGlvLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW89MV0gLSBUaGUgY29sdW1uIHJhdGlvIG9mIHRoZSBlbGVtZW50LlxuICogQHJldHVybnMge251bWJlcn0gLSBUaGUgcGVyY2VudGFnZSB2YWx1ZS5cbiAqL1xuLyoqXG4gKiBXb3JrIG91dCB0aGUgY29sdW1uIHdpZHRocyBiYXNlZCBvbiB0aGUgcmF0aW8gYW5kIGd1dHRlciBzaXplcy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHJhdGlvcz0xXSAtIFRoZSBjb2x1bW4gcmF0aW8gb2YgdGhlIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRndXR0ZXI9JGplZXQtZ3V0dGVyXSAtIFRoZSBndXR0ZXIgZm9yIHRoZSBjb2x1bW4uXG4gKiBAcmV0dXJucyB7bGlzdH0gJHdpZHRoICRndXR0ZXIgLSBBIGxpc3QgY29udGFpbmluZyB0aGUgd2l0aCBhbmQgZ3V0dGVyIGZvciB0aGUgZWxlbWVudC5cbiAqL1xuLyoqXG4gKiBHZXQgdGhlIHNldCBsYXlvdXQgZGlyZWN0aW9uIGZvciB0aGUgcHJvamVjdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9ICRkaXJlY3Rpb24gLSBUaGUgbGF5b3V0IGRpcmVjdGlvbi5cbiAqL1xuLyoqXG4gKiBSZXBsYWNlIGEgc3BlY2lmaWVkIGxpc3QgdmFsdWUgd2l0aCBhIG5ldyB2YWx1ZSAodXNlcyBidWlsdCBpbiBzZXQtbnRoKCkgaWYgYXZhaWxhYmxlKVxuICogQHBhcmFtIHtsaXN0fSAkbGlzdCAtIFRoZSBsaXN0IG9mIHZhbHVlcyB5b3Ugd2FudCB0byBhbHRlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSAkaW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGxpc3QgaXRlbSB5b3Ugd2FudCB0byByZXBsYWNlLlxuICogQHBhcmFtIHsqfSAkdmFsdWUgLSBUaGUgdmFsdWUgeW91IHdhbnQgdG8gcmVwbGFjZSAkaW5kZXggd2l0aC5cbiAqIEByZXR1cm5zIHtsaXN0fSAkbGlzdCAtIFRoZSBsaXN0IHdpdGggdGhlIHZhbHVlIHJlcGxhY2VkIG9yIHJlbW92ZWQuXG4gKiBAd2FybiBpZiBhbiBpbnZhbGlkIGluZGV4IGlzIHN1cHBsaWVkLlxuICovXG4vKipcbiAqIFJldmVyc2UgYSBsaXN0IChwcm9ncmVzc2l2ZWx5IGVuaGFuY2VkIGZvciBTYXNzIDMuMylcbiAqIEBwYXJhbSB7bGlzdH0gJGxpc3QgLSBUaGUgbGlzdCBvZiB2YWx1ZXMgeW91IHdhbnQgdG8gcmV2ZXJzZS5cbiAqIEByZXR1cm5zIHtsaXN0fSAkcmVzdWx0IC0gVGhlIHJldmVyc2VkIGxpc3QuXG4gKi9cbi8qKlxuICogR2V0IHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gYSBnaXZlbiB2YWx1ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAkZGlyIC0gVGhlIGRpcmVjdGlvbiB5b3Ugd2FudCB0aGUgb3Bwb3NpdGUgb2YuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gJGRpci5cbiAqIEB3YXJuIGlmIGFuIGluY29ycmVjdCBzdHJpbmcgaXMgcHJvdmlkZWQuXG4gKi9cbi8qKlxuICogU3R5bGUgYW4gZWxlbWVudCBhcyBhIGNvbHVtbiB3aXRoIGEgZ3V0dGVyLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gWyRvZmZzZXQ9MF0gLSBBIG9mZnNldCBzcGVjaWZpZWQgYXMgYSBmcmFjdGlvbiAoc2VlICRyYXRpb3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IFskY3ljbGU9MF0gLSBFYXNpbHkgY3JlYXRlIGFuIG50aCBjb2x1bW4gZ3JpZCB3aGVyZSAkY3ljbGUgZXF1YWxzIHRoZSBudW1iZXIgb2YgY29sdW1ucy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHVuY3ljbGU9MF0gLSBVbmRvIGEgcHJldmlvdXMgY3ljbGUgdmFsdWUgdG8gYWxsb3cgZm9yIGEgbmV3IG9uZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJGd1dHRlcj0kamVldC1ndXR0ZXJdIC0gU3BlY2lmeSB0aGUgZ3V0dGVyIHdpZHRoIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY29udGFpbmVycyB3aWR0aC5cbiAqL1xuLyoqXG4gKiBBbiBhbGlhcyBmb3IgdGhlIGNvbHVtbiBtaXhpbi5cbiAqIEBwYXJhbSBbJGFyZ3MuLi5dIC0gQWxsIGFyZ3VtZW50cyBnZXQgcGFzc2VkIHRocm91Z2ggdG8gY29sdW1uKCkuXG4gKi9cbi8qKlxuICogR2V0IHRoZSB3aWR0aCBvZiBhIGNvbHVtbiBhbmQgbm90aGluZyBlbHNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gWyRndXR0ZXI9JGplZXQtZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbi8qKlxuICogR2V0IHRoZSBndXR0ZXIgc2l6ZSBvZiBhIGNvbHVtbiBhbmQgbm90aGluZyBlbHNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtyYXRpb3M9MV0gLSBBIHdpZHRoIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXIgYXMgYSBmcmFjdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZ3V0dGVyPWplZXQuZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbi8qKlxuICogQW4gYWxpYXMgZm9yIHRoZSBjb2x1bW4td2lkdGggZnVuY3Rpb24uXG4gKiBAcGFyYW0gWyRhcmdzLi4uXSAtIEFsbCBhcmd1bWVudHMgZ2V0IHBhc3NlZCB0aHJvdWdoIHRvIGNvbHVtbigpLlxuICovXG4vKipcbiAqIEFuIGFsaWFzIGZvciB0aGUgY29sdW1uLWd1dHRlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBbJGFyZ3MuLi5dIC0gQWxsIGFyZ3VtZW50cyBnZXQgcGFzc2VkIHRocm91Z2ggdG8gY29sdW1uKCkuXG4gKi9cbi8qKlxuICogU3R5bGUgYW4gZWxlbWVudCBhcyBhIGNvbHVtbiB3aXRob3V0IGFueSBndXR0ZXJzIGZvciBhIHNlYW1sZXNzIHJvdy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHJhdGlvcz0xXSAtIEEgd2lkdGggcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5lciBhcyBhIGZyYWN0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFskb2Zmc2V0PTBdIC0gQSBvZmZzZXQgc3BlY2lmaWVkIGFzIGEgZnJhY3Rpb24gKHNlZSAkcmF0aW9zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbY3ljbGU9MF0gLSBFYXNpbHkgY3JlYXRlIGFuIG50aCBjb2x1bW4gZ3JpZCB3aGVyZSBjeWNsZSBlcXVhbHMgdGhlIG51bWJlciBvZiBjb2x1bW5zLlxuICogQHBhcmFtIHtudW1iZXJ9IFt1bmN5Y2xlPTBdIC0gVW5kbyBhIHByZXZpb3VzIGN5Y2xlIHZhbHVlIHRvIGFsbG93IGZvciBhIG5ldyBvbmUuXG4gKi9cbi8qKlxuICogUmVvcmRlciBjb2x1bW5zIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIEhUTUwuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRyYXRpb3M9MF0gLSBTcGVjaWZ5IGhvdyBmYXIgYWxvbmcgeW91IHdhbnQgdGhlIGVsZW1lbnQgdG8gbW92ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbJGNvbC1vci1zcGFuPWNvbHVtbl0gLSBTcGVjaWZ5IHdoZXRoZXIgdGhlIGVsZW1lbnQgaGFzIGEgZ3V0dGVyIG9yIG5vdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJGd1dHRlcj0kamVldC1ndXR0ZXJdIC0gU3BlY2lmeSB0aGUgZ3V0dGVyIHdpZHRoIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY29udGFpbmVycyB3aWR0aC5cbiAqL1xuLyoqXG4gKiBSZXNldCBhbiBlbGVtZW50IHRoYXQgaGFzIGhhZCBzaGlmdCgpIGFwcGxpZWQgdG8gaXQuXG4gKi9cbi8qKlxuICogVmlldyB0aGUgZ3JpZCBhbmQgaXRzIGxheWVycyBmb3IgZWFzeSBkZWJ1Z2dpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gWyRjb2xvcj1ibGFja10gLSBUaGUgYmFja2dyb3VuZCB0aW50IGFwcGxpZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFskaW1wb3J0YW50PWZhbHNlXSAtIFdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0eWxlIGFzICFpbXBvcnRhbnQuXG4gKi9cbi8qKlxuICogIEFsaWFzIGZvciBlZGl0KCkuXG4gKi9cbi8qKlxuICogSG9yaXpvbnRhbGx5IGNlbnRlciBhbiBlbGVtZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IFskbWF4LXdpZHRoPTE0MTBweF0gLSBUaGUgbWF4IHdpZHRoIHRoZSBlbGVtZW50IGNhbiBiZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHBhZD0wXSAtIFNwZWNpZnkgdGhlIGVsZW1lbnQncyBsZWZ0IGFuZCByaWdodCBwYWRkaW5nLlxuICovXG4vKipcbiAqIFVuY2VudGVyIGFuIGVsZW1lbnQuXG4gKi9cbi8qKlxuICogU3RhY2sgYW4gZWxlbWVudCBzbyB0aGF0IG5vdGhpbmcgaXMgZWl0aGVyIHNpZGUgb2YgaXQuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRwYWQ9MF0gLSBTcGVjaWZ5IHRoZSBlbGVtZW50J3MgbGVmdCBhbmQgcmlnaHQgcGFkZGluZy5cbiAqIEBwYXJhbSB7Ym9vbGVhbi9zdHJpbmd9IFskYWxpZ249ZmFsc2VdIC0gU3BlY2lmeSB0aGUgdGV4dCBhbGlnbiBmb3IgdGhlIGVsZW1lbnQuXG4gKi9cbi8qKlxuICogVW5zdGFjayBhbiBlbGVtZW50LlxuICovXG4vKipcbiAqIENlbnRlciBhbiBlbGVtZW50IG9uIGVpdGhlciBvciBib3RoIGF4ZXMuXG4gKiBAcmVxdWlyZXMgQSBwYXJlbnQgY29udGFpbmVyIHdpdGggcmVsYXRpdmUgcG9zaXRpb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gWyRkaXJlY3Rpb249Ym90aF0gLSBTcGVjaWZ5IHdoaWNoIGF4ZXMgdG8gY2VudGVyIHRoZSBlbGVtZW50IG9uLlxuICovXG4vKipcbiAqIEFwcGx5IGEgY2xlYXJmaXggdG8gYW4gZWxlbWVudC5cbiAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIE5vcm1hbGl6ZS5zY3NzIHNldHRpbmdzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBJbmNsdWRlcyBsZWdhY3kgYnJvd3NlciBzdXBwb3J0IElFNi83XG4gKlxuICogU2V0IHRvIGZhbHNlIGlmIHlvdSB3YW50IHRvIGRyb3Agc3VwcG9ydCBmb3IgSUU2IGFuZCBJRTdcbiAqL1xuLyogQmFzZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAqIDIuIFByZXZlbnQgaU9TIGFuZCBJRSB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIGRldmljZSBvcmllbnRhdGlvbiBjaGFuZ2UsXG4gKiAgICB3aXRob3V0IGRpc2FibGluZyB1c2VyIHpvb20uXG4gKiAzLiBDb3JyZWN0cyB0ZXh0IHJlc2l6aW5nIG9kZGx5IGluIElFIDYvNyB3aGVuIGJvZHkgYGZvbnQtc2l6ZWAgaXMgc2V0IHVzaW5nXG4gKiAgYGVtYCB1bml0cy5cbiAqL1xuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAvKiAxICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuICovXG5ib2R5IHtcbiAgbWFyZ2luOiAwOyB9XG5cbi8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYGRldGFpbHNgIG9yIGBzdW1tYXJ5YCBpbiBJRSAxMC8xMVxuICogYW5kIEZpcmVmb3guXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLlxuICovXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1haW4sXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA2LzcvOC85IGFuZCBGaXJlZm94IDMuXG4gKiAyLiBOb3JtYWxpemUgdmVydGljYWwgYWxpZ25tZW50IG9mIGBwcm9ncmVzc2AgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cbmF1ZGlvLFxuY2FudmFzLFxucHJvZ3Jlc3MsXG52aWRlbyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgLyogMSAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFByZXZlbnRzIG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbiAqL1xuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxuICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuICovXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cbiAqIGFjdGl2ZS9ob3ZlciBzdGF0ZS5cbiAqL1xuYTphY3RpdmUsIGE6aG92ZXIge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLzExLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDsgfVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGUgc2V0IHRvIGBib2xkZXJgIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuLyoqXG4gKiBBZGRyZXNzIHZhcmlhYmxlIGBoMWAgZm9udC1zaXplIGFuZCBtYXJnaW4gd2l0aGluIGBzZWN0aW9uYCBhbmQgYGFydGljbGVgXG4gKiBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7IH1cblxuLyoqXG4gKiBBZGRyZXNzZXMgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXG4gKi9cbm1hcmsge1xuICBiYWNrZ3JvdW5kOiAjZmYwO1xuICBjb2xvcjogIzAwMDsgfVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlOyB9XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgYWZmZWN0aW5nIGBsaW5lLWhlaWdodGAgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtOyB9XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTsgfVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiAxLiBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS8xMC5cbiAqIDIuIEltcHJvdmVzIGltYWdlIHF1YWxpdHkgd2hlbiBzY2FsZWQgaW4gSUUgNy5cbiAqL1xuaW1nIHtcbiAgYm9yZGVyOiAwOyB9XG5cbi8qKlxuICogQ29ycmVjdCBvdmVyZmxvdyBub3QgaGlkZGVuIGluIElFIDkvMTAvMTEuXG4gKi9cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaS5cbiAqL1xuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDsgfVxuXG4vKipcbiAqIEFkZHJlc3MgZGlmZmVyZW5jZXMgYmV0d2VlbiBGaXJlZm94IGFuZCBvdGhlciBicm93c2Vycy5cbiAqL1xuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwOyB9XG5cbi8qKlxuICogQ29udGFpbiBvdmVyZmxvdyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnByZSB7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi8qKlxuICogQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLlxuICogQ29ycmVjdCBmb250IGZhbWlseSBzZXQgb2RkbHkgaW4gSUUgNiwgU2FmYXJpIDQvNSwgYW5kIENocm9tZS5cbiAqL1xuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMWVtOyB9XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBLbm93biBsaW1pdGF0aW9uOiBieSBkZWZhdWx0LCBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYIGFsbG93IHZlcnkgbGltaXRlZFxuICogc3R5bGluZyBvZiBgc2VsZWN0YCwgdW5sZXNzIGEgYGJvcmRlcmAgcHJvcGVydHkgaXMgc2V0LlxuICovXG4vKipcbiAqIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cbiAqICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqIDQuIEltcHJvdmVzIGFwcGVhcmFuY2UgYW5kIGNvbnNpc3RlbmN5IGluIGFsbCBicm93c2Vycy5cbiAqL1xuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDtcbiAgLyogMiAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDMgKi8gfVxuXG4vKipcbiAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxuICovXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG4gKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgvOS8xMC8xMSwgYW5kIE9wZXJhLlxuICogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxuICovXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4vKipcbiAqIDEuIEF2b2lkIHRoZSBXZWJLaXQgYnVnIGluIEFuZHJvaWQgNC4wLiogd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gXG4gKiAgYW5kIGB2aWRlb2AgY29udHJvbHMuXG4gKiAyLiBDb3JyZWN0IGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgYGlucHV0YCB0eXBlcyBpbiBpT1MuXG4gKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuICogIGBpbnB1dGAgYW5kIG90aGVycy5cbiAqIDQuIFJlbW92ZXMgaW5uZXIgc3BhY2luZyBpbiBJRSA3IHdpdGhvdXQgYWZmZWN0aW5nIG5vcm1hbCB0ZXh0IGlucHV0cy5cbiAqICBLbm93biBpc3N1ZTogaW5uZXIgc3BhY2luZyByZW1haW5zIGluIElFIDYuXG4gKi9cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgLyogMiAqL1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC8qIDMgKi8gfVxuXG4vKipcbiAqIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuXG4gKi9cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbiAqL1xuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLyoqXG4gKiBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXG4gKiB0aGUgVUEgc3R5bGVzaGVldC5cbiAqL1xuaW5wdXQge1xuICBsaW5lLWhlaWdodDogbm9ybWFsOyB9XG5cbi8qKlxuICogMS4gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS8xMC5cbiAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXG4gKiAgS25vd24gaXNzdWU6IGV4Y2VzcyBwYWRkaW5nIHJlbWFpbnMgaW4gSUUgNi5cbiAqL1xuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuICogYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGVcbiAqIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbiAqL1xuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87IH1cblxuLyoqXG4gKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgLyogMSAqL1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSBhbmQgQ2hyb21lIG9uIE9TIFguXG4gKiBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzXG4gKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXG4gKi9cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9XG5cbi8qKlxuICogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLlxuICovXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTsgfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGNvbG9yYCBub3QgYmVpbmcgaW5oZXJpdGVkIGluIElFIDgvOS8xMC8xMS5cbiAqIDIuIFJlbW92ZSBwYWRkaW5nIHNvIHBlb3BsZSBhcmVuJ3QgY2F1Z2h0IG91dCBpZiB0aGV5IHplcm8gb3V0IGZpZWxkc2V0cy5cbiAqIDMuIENvcnJlY3RzIHRleHQgbm90IHdyYXBwaW5nIGluIEZpcmVmb3ggMy5cbiAqIDQuIENvcnJlY3RzIGFsaWdubWVudCBkaXNwbGF5ZWQgb2RkbHkgaW4gSUUgNi83LlxuICovXG5sZWdlbmQge1xuICBib3JkZXI6IDA7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS8xMC8xMS5cbiAqL1xudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bzsgfVxuXG4vKipcbiAqIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cbiAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICovXG5vcHRncm91cCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi8qIFRhYmxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuICovXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbnRkLFxudGgge1xuICBwYWRkaW5nOiAwOyB9XG5cbiosXG4qOjphZnRlcixcbio6OmJlZm9yZSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuaW1nIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdGb250aW4gU21hbGwgQ2Fwcyc7XG4gIHNyYzogdXJsKFwiLi4vZm9udHMvZm9udGluLXNtYWxsY2Fwcy13ZWJmb250LmVvdFwiKTtcbiAgc3JjOiBsb2NhbChcIkZvbnRpbiBTbWFsbCBDYXBzXCIpLCB1cmwoXCIuLi9mb250cy9mb250aW4tc21hbGxjYXBzLXdlYmZvbnQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIuLi9mb250cy9mb250aW4tc21hbGxjYXBzLXdlYmZvbnQudHRmXCIpIGZvcm1hdChcInRydWV0eXBlXCIpLCB1cmwoXCIuLi9mb250cy9mb250aW4tc21hbGxjYXBzLXdlYmZvbnQuc3ZnI3dlYmZvbnQxV1lvbU5kTVwiKSBmb3JtYXQoXCJzdmdcIik7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdGb250aW4nO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2ZvbnRpbi1yZWd1bGFyLXdlYmZvbnQuZW90XCIpO1xuICBzcmM6IGxvY2FsKFwiRm9udGluXCIpLCB1cmwoXCIuLi9mb250cy9mb250aW4tcmVndWxhci13ZWJmb250LndvZmZcIikgZm9ybWF0KFwid29mZlwiKSwgdXJsKFwiLi4vZm9udHMvZm9udGluLXJlZ3VsYXItd2ViZm9udC50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksIHVybChcIi4uL2ZvbnRzL2ZvbnRpbi1yZWd1bGFyLXdlYmZvbnQuc3ZnI3dlYmZvbnRvc2piWlVoRVwiKSBmb3JtYXQoXCJzdmdcIik7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdGb250aW4nO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2ZvbnRpbi1pdGFsaWMtd2ViZm9udC5lb3RcIik7XG4gIHNyYzogbG9jYWwoXCJGb250aW5cIiksIHVybChcIi4uL2ZvbnRzL2ZvbnRpbi1pdGFsaWMtd2ViZm9udC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIiksIHVybChcIi4uL2ZvbnRzL2ZvbnRpbi1pdGFsaWMtd2ViZm9udC50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksIHVybChcIi4uL2ZvbnRzL2ZvbnRpbi1pdGFsaWMtd2ViZm9udC5zdmcjd2ViZm9udGtZNndCUWc2XCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0ZvbnRpbic7XG4gIHNyYzogdXJsKFwiLi4vZm9udHMvZm9udGluLWJvbGQtd2ViZm9udC5lb3RcIik7XG4gIHNyYzogbG9jYWwoXCJGb250aW5cIiksIHVybChcIi4uL2ZvbnRzL2ZvbnRpbi1ib2xkLXdlYmZvbnQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIuLi9mb250cy9mb250aW4tYm9sZC13ZWJmb250LnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSwgdXJsKFwiLi4vZm9udHMvZm9udGluLWJvbGQtd2ViZm9udC5zdmcjd2ViZm9udDVrd1BQUnF5XCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuXG4uY29udGFpbmVyIHtcbiAgKnpvb206IDE7XG4gIHdpZHRoOiBhdXRvO1xuICBtYXgtd2lkdGg6IDExODBweDtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmc6IDAgMTBweDsgfVxuICAuY29udGFpbmVyOmJlZm9yZSwgLmNvbnRhaW5lcjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogdGFibGU7IH1cbiAgLmNvbnRhaW5lcjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEwMDBweCkge1xuICAuY29sMy00IHtcbiAgICAqem9vbTogMTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBjbGVhcjogbm9uZTtcbiAgICB0ZXh0LWFsaWduOiBpbmhlcml0O1xuICAgIHdpZHRoOiA3NC4yNSU7XG4gICAgbWFyZ2luLWxlZnQ6IDAlO1xuICAgIG1hcmdpbi1yaWdodDogMyU7IH1cbiAgICAuY29sMy00OmJlZm9yZSwgLmNvbDMtNDphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGRpc3BsYXk6IHRhYmxlOyB9XG4gICAgLmNvbDMtNDphZnRlciB7XG4gICAgICBjbGVhcjogYm90aDsgfVxuICAgIC5jb2wzLTQ6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAlOyB9XG4gIC5jb2wxLTQge1xuICAgICp6b29tOiAxO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGNsZWFyOiBub25lO1xuICAgIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gICAgd2lkdGg6IDIyLjc1JTtcbiAgICBtYXJnaW4tbGVmdDogMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiAzJTsgfVxuICAgIC5jb2wxLTQ6YmVmb3JlLCAuY29sMS00OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogdGFibGU7IH1cbiAgICAuY29sMS00OmFmdGVyIHtcbiAgICAgIGNsZWFyOiBib3RoOyB9XG4gICAgLmNvbDEtNDpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMCU7IH1cbiAgLmNvbDEtMiB7XG4gICAgKnpvb206IDE7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgY2xlYXI6IG5vbmU7XG4gICAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbiAgICB3aWR0aDogNDguNSU7XG4gICAgbWFyZ2luLWxlZnQ6IDAlO1xuICAgIG1hcmdpbi1yaWdodDogMyU7IH1cbiAgICAuY29sMS0yOmJlZm9yZSwgLmNvbDEtMjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGRpc3BsYXk6IHRhYmxlOyB9XG4gICAgLmNvbDEtMjphZnRlciB7XG4gICAgICBjbGVhcjogYm90aDsgfVxuICAgIC5jb2wxLTI6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAlOyB9XG4gIC5tYWluLWNvbnRlbnQge1xuICAgICp6b29tOiAxO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGNsZWFyOiBub25lO1xuICAgIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gICAgd2lkdGg6IDY1LjY2NjY3JTtcbiAgICBtYXJnaW4tbGVmdDogMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiAzJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogMzQuMzMzMzMlOyB9XG4gICAgLm1haW4tY29udGVudDpiZWZvcmUsIC5tYWluLWNvbnRlbnQ6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiB0YWJsZTsgfVxuICAgIC5tYWluLWNvbnRlbnQ6YWZ0ZXIge1xuICAgICAgY2xlYXI6IGJvdGg7IH1cbiAgICAubWFpbi1jb250ZW50Omxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwJTsgfVxuICAuc2lkZS1iYXIge1xuICAgICp6b29tOiAxO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGNsZWFyOiBub25lO1xuICAgIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gICAgd2lkdGg6IDIyLjc1JTtcbiAgICBtYXJnaW4tbGVmdDogMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiAzJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogLTY4LjY2NjY3JTsgfVxuICAgIC5zaWRlLWJhcjpiZWZvcmUsIC5zaWRlLWJhcjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGRpc3BsYXk6IHRhYmxlOyB9XG4gICAgLnNpZGUtYmFyOmFmdGVyIHtcbiAgICAgIGNsZWFyOiBib3RoOyB9XG4gICAgLnNpZGUtYmFyOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwJTsgfSB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ3JyaW9nbyc7XG4gIHNyYzogdXJsKFwiLi4vZm9udHMvcnJpb2dvLmVvdD9sbHJkd29cIik7XG4gIHNyYzogdXJsKFwiLi4vZm9udHMvcnJpb2dvLmVvdD9sbHJkd28jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi4uL2ZvbnRzL3JyaW9nby50dGY/bGxyZHdvXCIpIGZvcm1hdChcInRydWV0eXBlXCIpLCB1cmwoXCIuLi9mb250cy9ycmlvZ28ud29mZj9sbHJkd29cIikgZm9ybWF0KFwid29mZlwiKSwgdXJsKFwiLi4vZm9udHMvcnJpb2dvLnN2Zz9sbHJkd28jcnJpb2dvXCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG5cbltjbGFzc149XCJpY29uLVwiXSwgW2NsYXNzKj1cIiBpY29uLVwiXSB7XG4gIC8qIHVzZSAhaW1wb3J0YW50IHRvIHByZXZlbnQgaXNzdWVzIHdpdGggYnJvd3NlciBleHRlbnNpb25zIHRoYXQgY2hhbmdlIGZvbnRzICovXG4gIGZvbnQtZmFtaWx5OiAncnJpb2dvJyAhaW1wb3J0YW50O1xuICBzcGVhazogbm9uZTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICAvKiBCZXR0ZXIgRm9udCBSZW5kZXJpbmcgPT09PT09PT09PT0gKi9cbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7IH1cblxuLmljb24tbGluay1leHRlcm5hbDpiZWZvcmUge1xuICBjb250ZW50OiBcIu6klFwiOyB9XG5cbi5pY29uLWVudmVsb3BlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSBXCI7IH1cblxuLmljb24tc3Rhci1oYWxmOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSPXCI7IH1cblxuLmljb24tc3Rhci1mdWxsOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSQXCI7IH1cblxuLmljb24tc3Rhci1lbXB0eTpiZWZvcmUge1xuICBjb250ZW50OiBcIu6kkVwiOyB9XG5cbi5pY29uLXByb2ZpbGU6YmVmb3JlIHtcbiAgY29udGVudDogXCLupIBcIjsgfVxuXG4uaWNvbi1icmllZmNhc2U6YmVmb3JlIHtcbiAgY29udGVudDogXCLupIJcIjsgfVxuXG4uaWNvbi10d2l0dGVyOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSDXCI7IH1cblxuLmljb24tZHJpYmJibGU6YmVmb3JlIHtcbiAgY29udGVudDogXCLupIRcIjsgfVxuXG4uaWNvbi1nb29nbGUtcGx1czpiZWZvcmUge1xuICBjb250ZW50OiBcIu6khVwiOyB9XG5cbi5pY29uLWVtYmVkOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSGXCI7IH1cblxuLmljb24tcGludGVyZXN0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSHXCI7IH1cblxuLmljb24tYmVoYW5jZTpiZWZvcmUge1xuICBjb250ZW50OiBcIu6kiFwiOyB9XG5cbi5pY29uLXlvdXR1YmUtcGxheTpiZWZvcmUge1xuICBjb250ZW50OiBcIu6kilwiOyB9XG5cbi5pY29uLWxpbmtlZGluOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSLXCI7IH1cblxuLmljb24tZmFjZWJvb2s6YmVmb3JlIHtcbiAgY29udGVudDogXCLupIxcIjsgfVxuXG4uaWNvbi1naXRodWI6YmVmb3JlIHtcbiAgY29udGVudDogXCLupI1cIjsgfVxuXG4uaWNvbi1jb2RlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSSXCI7IH1cblxuLmljb24tZGVzaWduOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSTXCI7IH1cblxuLmljb24tc3Rhci1mdWxsOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSQXCI7IH1cblxuLmljb24tc3Rhci1lbXB0eTpiZWZvcmUge1xuICBjb250ZW50OiBcIu6kkVwiOyB9XG5cbi5pY29uLXByb2ZpbGU6YmVmb3JlIHtcbiAgY29udGVudDogXCLupIBcIjsgfVxuXG4uaWNvbi1icmllZmNhc2U6YmVmb3JlIHtcbiAgY29udGVudDogXCLupIJcIjsgfVxuXG4uaWNvbi10d2l0dGVyOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSDXCI7IH1cblxuLmljb24tZHJpYmJibGU6YmVmb3JlIHtcbiAgY29udGVudDogXCLupIRcIjsgfVxuXG4uaWNvbi1nb29nbGUtcGx1czpiZWZvcmUge1xuICBjb250ZW50OiBcIu6khVwiOyB9XG5cbi5pY29uLWVtYmVkOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSGXCI7IH1cblxuLmljb24tcGludGVyZXN0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSHXCI7IH1cblxuLmljb24tYmVoYW5jZTpiZWZvcmUge1xuICBjb250ZW50OiBcIu6kiFwiOyB9XG5cbi5pY29uLXlvdXR1YmUtcGxheTpiZWZvcmUge1xuICBjb250ZW50OiBcIu6kilwiOyB9XG5cbi5pY29uLWxpbmtlZGluOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSLXCI7IH1cblxuLmljb24tZmFjZWJvb2s6YmVmb3JlIHtcbiAgY29udGVudDogXCLupIxcIjsgfVxuXG4uaWNvbi1naXRodWI6YmVmb3JlIHtcbiAgY29udGVudDogXCLupI1cIjsgfVxuXG4uaWNvbi15b3V0dWJlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qSJXCI7IH1cblxuLmljb24tcGludGVyZXN0LXA6YmVmb3JlIHtcbiAgY29udGVudDogXCLupI5cIjsgfVxuXG4uc3Itb25seSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgYm9yZGVyOiAwOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NTBweCkge1xuICAubW9iaWxlLW9ubHkge1xuICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTUwcHgpIHtcbiAgLm5vLW1vYmlsZSB7XG4gICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi5zdHVjayB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwOyB9XG5cbi5mb290ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEge1xuICBiYWNrZ3JvdW5kOiAjRUVFO1xuICBib3JkZXI6IDFweCBzb2xpZCAjQUZBRkFGO1xuICBwYWRkaW5nOiAxNXB4IDEwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBibG9jazsgfVxuICBpbnB1dC5lcnJvciwgc2VsZWN0LmVycm9yLCB0ZXh0YXJlYS5lcnJvciB7XG4gICAgYm9yZGVyLWNvbG9yOiByZWQ7XG4gICAgYmFja2dyb3VuZDogI2ZmY2VjZTsgfVxuXG50ZXh0YXJlYSB7XG4gIG1pbi1oZWlnaHQ6IDE1MHB4OyB9XG5cbmJ1dHRvbiwgaW5wdXRbdHlwZT1zdWJtaXRdLCBidXR0b25bdHlwZT1zdWJtaXRdIHtcbiAgcGFkZGluZzogMTVweCAyMHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICMyZjZkYjU7XG4gIGNvbG9yOiAjRkZGO1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCBzYW5zLXNlcmlmO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXNpemU6IDEuMmVtOyB9XG5cbmZvcm0gLmZpZWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDsgfVxuXG5sYWJlbC5lcnJvciB7XG4gIGNvbG9yOiByZWQ7IH1cblxuYSB7XG4gIGNvbG9yOiAjMmY2ZGI1O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgYTpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cblxuLm1haWwtY29udGFjdCB7XG4gIGZvbnQtc2l6ZTogMS42ZW07IH1cbiAgLm1haWwtY29udGFjdCBhIHtcbiAgICBjb2xvcjogZ3JheTsgfVxuXG4uaWNvbi1lbnZlbG9wZSB7XG4gIGNvbG9yOiBncmF5O1xuICBmb250LXNpemU6IDFlbTtcbiAgcGFkZGluZzogN3B4OyB9XG5cbiNjb250YXRvLXBhZ2UgaDIge1xuICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIGZvbnQtc2l6ZTogM2VtO1xuICBtYXJnaW4tdG9wOiAwOyB9XG5cbi5tZW51LXRyaWdnZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMjBweDtcbiAgcmlnaHQ6IDIwcHg7XG4gIGhlaWdodDogMzBweDtcbiAgd2lkdGg6IDMwcHg7XG4gIHotaW5kZXg6IDQwMDtcbiAgLyogaW1hZ2UgcmVwbGFjZW1lbnQgKi9cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1pbmRlbnQ6IDEwMCU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNTUwcHgpIHtcbiAgICAubWVudS10cmlnZ2VyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuICAubWVudS10cmlnZ2VyIC5tZW51LWljb24ge1xuICAgIC8qIGljb24gY3JlYXRlZCBpbiBDU1MgKi9cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRvcDogNTAlO1xuICAgIGJvdHRvbTogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICB6LWluZGV4OiAxMDsgfVxuICAgIC5tZW51LXRyaWdnZXIgLm1lbnUtaWNvbjo6YmVmb3JlLCAubWVudS10cmlnZ2VyIC5tZW51LWljb246OmFmdGVyIHtcbiAgICAgIC8qIHVwcGVyIGFuZCBsb3dlciBsaW5lcyBvZiB0aGUgbWVudSBpY29uICovXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3M7IH1cbiAgICAubWVudS10cmlnZ2VyIC5tZW51LWljb246OmJlZm9yZSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkgcm90YXRlKDBkZWcpOyB9XG4gICAgLm1lbnUtdHJpZ2dlciAubWVudS1pY29uOjphZnRlciB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KSByb3RhdGUoMGRlZyk7IH1cbiAgLm5hdi1vcGVuZWQgLm1lbnUtdHJpZ2dlciAubWVudS1pY29uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAgIC5uYXYtb3BlbmVkIC5tZW51LXRyaWdnZXIgLm1lbnUtaWNvbjo6YmVmb3JlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSByb3RhdGUoNDVkZWcpOyB9XG4gICAgLm5hdi1vcGVuZWQgLm1lbnUtdHJpZ2dlciAubWVudS1pY29uOjphZnRlciB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgcm90YXRlKC00NWRlZyk7IH1cblxuLnRhZy50YWctcGhwIHtcbiAgYmFja2dyb3VuZDogIzg4OTJiZjtcbiAgY29sb3I6ICNlYmVkZjU7IH1cblxuLnRhZy50YWctY29kZS1pZ25pdGVyIHtcbiAgYmFja2dyb3VuZDogI2RkNDgxNDtcbiAgY29sb3I6ICNmNWFlOTU7IH1cblxuLnRhZy50YWctaHRtbCB7XG4gIGJhY2tncm91bmQ6ICNlNDRkMjY7XG4gIGNvbG9yOiAjZjViZGFlOyB9XG5cbi50YWcudGFnLWNzcyB7XG4gIGJhY2tncm91bmQ6ICMxNTcyYjY7XG4gIGNvbG9yOiAjNzViYmVmOyB9XG5cbi50YWcudGFnLXBob3Rvc2hvcCB7XG4gIGJhY2tncm91bmQ6ICMzZjhkZGY7XG4gIGNvbG9yOiAjYzJkYmY1OyB9XG5cbi50YWcudGFnLWlsbHVzdHJhdG9yIHtcbiAgYmFja2dyb3VuZDogI2ZkYWUzNztcbiAgY29sb3I6ICNmZmViY2U7IH1cblxuLnRhZy50YWctd29yZHByZXNzIHtcbiAgYmFja2dyb3VuZDogIzIxNzU5YTtcbiAgY29sb3I6ICM3M2JmZTE7IH1cblxuLnRhZy50YWctc2FzcyB7XG4gIGJhY2tncm91bmQ6ICNjNjUzOGM7XG4gIGNvbG9yOiAjZWNjNmQ5OyB9XG5cbi50YWcudGFnLWphdmFzY3JpcHQge1xuICBiYWNrZ3JvdW5kOiAjZjdkZjFlO1xuICBjb2xvcjogIzc4NmIwNDsgfVxuXG4udGFnLnRhZy1pbmRlc2lnbiB7XG4gIGJhY2tncm91bmQ6ICNmZjNkOTA7XG4gIGNvbG9yOiAjZmZkNmU4OyB9XG5cbmJvZHkge1xuICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIHNhbnMtc2VyaWY7XG4gIGNvbG9yOiAjMzMzO1xuICBmb250LXNpemU6IC45ZW07IH1cblxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgYnV0dG9uLCBpbnB1dFt0eXBlPXN1Ym1pdF0ge1xuICBmb250LWZhbWlseTogJ09wZW4gU2FucyBDb25kZW5zZWQnLCBzYW5zLXNlcmlmO1xuICBjb2xvcjogIzMzMzsgfVxuXG5oMSB7XG4gIGZvbnQtZmFtaWx5OiAnRm9udGluJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiA2ZW07XG4gIGxldHRlci1zcGFjaW5nOiAtM3B4OyB9XG4gIGgxOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiBcIjtcbiAgICBoZWlnaHQ6IDNweDtcbiAgICB3aWR0aDogMTQwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXRvcDogLTVweDtcbiAgICBiYWNrZ3JvdW5kOiAjMmY2ZGI1OyB9XG5cbnAsIGxpIHtcbiAgbGluZS1oZWlnaHQ6IDEuNmVtOyB9XG5cbnAge1xuICBtYXJnaW4tYm90dG9tOiAxLjZlbTsgfVxuXG4uY2hhcnRzLWxhbmdzIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICB3aWR0aDogMTAwJTsgfVxuICAuY2hhcnRzLWxhbmdzIC5jaGFydCB7XG4gICAgYmFja2dyb3VuZDogcmVkO1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICByaWdodDogLTVweDtcbiAgICB0b3A6IC01cHg7IH1cbiAgICAuY2hhcnRzLWxhbmdzIC5jaGFydDphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgY29sb3I6ICNGRkY7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHJpZ2h0OiA1cHg7XG4gICAgICB0b3A6IDVweDtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgICBiYWNrZ3JvdW5kOiAjMDAwOyB9XG4gIC5jaGFydHMtbGFuZ3MgbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIGhlaWdodDogMjAwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1yaWdodDogMjBweDtcbiAgICBmb250LXdlaWdodDogYm9sZDsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDEpIC5jaGFydCB7XG4gICAgICBoZWlnaHQ6IDk1JTsgfVxuICAgICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoMSkgLmNoYXJ0OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCI5NSVcIjsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDIpIC5jaGFydCB7XG4gICAgICBoZWlnaHQ6IDk1JTsgfVxuICAgICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoMikgLmNoYXJ0OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCI5NSVcIjsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDMpIC5jaGFydCB7XG4gICAgICBoZWlnaHQ6IDcwJTsgfVxuICAgICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoMykgLmNoYXJ0OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCI3MCVcIjsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDQpIC5jaGFydCB7XG4gICAgICBoZWlnaHQ6IDgwJTsgfVxuICAgICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoNCkgLmNoYXJ0OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCI4MCVcIjsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDUpIC5jaGFydCB7XG4gICAgICBoZWlnaHQ6IDk1JTsgfVxuICAgICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoNSkgLmNoYXJ0OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCI5NSVcIjsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDYpIC5jaGFydCB7XG4gICAgICBoZWlnaHQ6IDgwJTsgfVxuICAgICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoNikgLmNoYXJ0OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCI4MCVcIjsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDcpIC5jaGFydCB7XG4gICAgICBoZWlnaHQ6IDcwJTsgfVxuICAgICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoNykgLmNoYXJ0OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCI3MCVcIjsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDgpIC5jaGFydCB7XG4gICAgICBoZWlnaHQ6IDgwJTsgfVxuICAgICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoOCkgLmNoYXJ0OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCI4MCVcIjsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDEpIC5jaGFydCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjYmU0MzBlOyB9XG4gICAgICAuY2hhcnRzLWxhbmdzIGxpOm50aC1jaGlsZCgxKSAuY2hhcnQ6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZWY2NTJhOyB9XG4gICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoMikgLmNoYXJ0IHtcbiAgICAgIGJhY2tncm91bmQ6ICMwZDQ3NzE7IH1cbiAgICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDIpIC5jaGFydDphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMxNTcyYjY7IH1cbiAgICAuY2hhcnRzLWxhbmdzIGxpOm50aC1jaGlsZCgzKSAuY2hhcnQge1xuICAgICAgYmFja2dyb3VuZDogIzlhMzM2NjsgfVxuICAgICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoMykgLmNoYXJ0OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2M2NTM4YzsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDQpIC5jaGFydCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjYzg4OTAwOyB9XG4gICAgICAuY2hhcnRzLWxhbmdzIGxpOm50aC1jaGlsZCg0KSAuY2hhcnQ6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZiNjE1OyB9XG4gICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoNSkgLmNoYXJ0IHtcbiAgICAgIGJhY2tncm91bmQ6ICMwNDNjNjM7IH1cbiAgICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDUpIC5jaGFydDphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMwNzY5YWQ7IH1cbiAgICAuY2hhcnRzLWxhbmdzIGxpOm50aC1jaGlsZCg2KSAuY2hhcnQge1xuICAgICAgYmFja2dyb3VuZDogIzU4NjVhMzsgfVxuICAgICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoNikgLmNoYXJ0OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzg4OTJiZjsgfVxuICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDcpIC5jaGFydCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWYxZjE3OyB9XG4gICAgICAuY2hhcnRzLWxhbmdzIGxpOm50aC1jaGlsZCg3KSAuY2hhcnQ6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZjQ2NDVmOyB9XG4gICAgLmNoYXJ0cy1sYW5ncyBsaTpudGgtY2hpbGQoOCkgLmNoYXJ0IHtcbiAgICAgIGJhY2tncm91bmQ6ICM0YTY4MmE7IH1cbiAgICAgIC5jaGFydHMtbGFuZ3MgbGk6bnRoLWNoaWxkKDgpIC5jaGFydDphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICM3MTllNDA7IH1cblxuLmNoYXJ0LXNvZnR3YXJlcyB7XG4gIHBhZGRpbmctbGVmdDogMDsgfVxuICAuY2hhcnQtc29mdHdhcmVzIGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1heC13aWR0aDogMzIlOyB9XG4gICAgLmNoYXJ0LXNvZnR3YXJlcyBsaTpudGgtY2hpbGQoMSkge1xuICAgICAgY29sb3I6ICMwNDgwYjE7IH1cbiAgICAuY2hhcnQtc29mdHdhcmVzIGxpOm50aC1jaGlsZCgyKSB7XG4gICAgICBjb2xvcjogIzljM2EwMDsgfVxuICAgIC5jaGFydC1zb2Z0d2FyZXMgbGk6bnRoLWNoaWxkKDMpIHtcbiAgICAgIGNvbG9yOiAjYmIwMDUyOyB9XG4gICAgLmNoYXJ0LXNvZnR3YXJlcyBsaTpudGgtY2hpbGQoNCkge1xuICAgICAgY29sb3I6ICNiNjAwZmM7IH1cbiAgICAuY2hhcnQtc29mdHdhcmVzIGxpOm50aC1jaGlsZCg1KSB7XG4gICAgICBjb2xvcjogIzg1MWVmZjsgfVxuXG5Aa2V5ZnJhbWVzIGRhc2gge1xuICAwJSB7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDEwMDA7IH1cbiAgNzUlIHtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogMzAwO1xuICAgIGZpbGw6IHRyYW5zcGFyZW50O1xuICAgIHN0cm9rZTogIzAwMDAwMDsgfVxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogMzAwO1xuICAgIHN0cm9rZTogdHJhbnNwYXJlbnQ7XG4gICAgZmlsbDogI0ZGRjsgfSB9XG5cbiNob21lLXBhZ2UgcGF0aCwgI2hvbWUtcGFnZSBwb2x5Z29uIHtcbiAgc3Ryb2tlLWRhc2hhcnJheTogMTAwMDtcbiAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDEwMDA7XG4gIGFuaW1hdGlvbi1uYW1lOiBkYXNoO1xuICBhbmltYXRpb24tZHVyYXRpb246IDEwcztcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgYW5pbWF0aW9uLWRlbGF5OiAyczsgfVxuXG5Aa2V5ZnJhbWVzIGZhZGUge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7XG4gICAgb3BhY2l0eTogMDsgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG4ucG9ydGZvbGlvLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC5wb3J0Zm9saW8tbGlzdCBoMiB7XG4gICAgZm9udC1mYW1pbHk6ICdGb250aW4nLCBzYW5zLXNlcmlmOyB9XG4gIC5wb3J0Zm9saW8tbGlzdCBhcnRpY2xlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgd2lkdGg6IDEwMCU7IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNTUwcHgpIHtcbiAgICAgIC5wb3J0Zm9saW8tbGlzdCBhcnRpY2xlIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgd2lkdGg6IGF1dG87IH0gfVxuICAucG9ydGZvbGlvLWxpc3QgYSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgd2lkdGg6IDUwJTsgfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA1NTBweCkge1xuICAgICAgLnBvcnRmb2xpby1saXN0IGEge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAgICAgICAucG9ydGZvbGlvLWxpc3QgYTphZnRlciB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDogLTI1JTtcbiAgICAgICAgICBsZWZ0OiAtMjUlO1xuICAgICAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgICAgIHdpZHRoOiA2MDBweDtcbiAgICAgICAgICBoZWlnaHQ6IDYwMHB4O1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgdHJhbnNsYXRlWSg3NSUpO1xuICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjUyLCAxODksIDExNiwgMC44KTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjRzOyB9XG4gICAgICAgIC5wb3J0Zm9saW8tbGlzdCBhOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHRyYW5zbGF0ZVkoMCk7IH0gfVxuICAgIC5wb3J0Zm9saW8tbGlzdCBhIC50aXRsZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIGxlZnQ6IDEwMCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB6LWluZGV4OiAzMDA7XG4gICAgICBjb2xvcjogIzMzMztcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBhZGRpbmctbGVmdDogMTVweDsgfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDU1MHB4KSB7XG4gICAgICAgIC5wb3J0Zm9saW8tbGlzdCBhIC50aXRsZSB7XG4gICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gICAgICAgICAgLnBvcnRmb2xpby1saXN0IGEgLnRpdGxlID4gKiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpO1xuICAgICAgICAgICAgb3BhY2l0eTogMDsgfSB9XG4gICAgLnBvcnRmb2xpby1saXN0IGEgLnNlcnZpY2UtaWNvbiB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogNTUwcHgpIHtcbiAgICAgICAgLnBvcnRmb2xpby1saXN0IGEgLnNlcnZpY2UtaWNvbiB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7IH0gfVxuICAgIC5wb3J0Zm9saW8tbGlzdCBhIC5uYW1lIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IH1cbiAgICAgIC5wb3J0Zm9saW8tbGlzdCBhIC5uYW1lOmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTsgfVxuICAgIC5wb3J0Zm9saW8tbGlzdCBhIC50YWdsaW5lIHtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGZvbnQtc2l6ZTogLjhlbTtcbiAgICAgIG1hcmdpbi10b3A6IDA7IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNTUwcHgpIHtcbiAgICAgIC5wb3J0Zm9saW8tbGlzdCBhOmhvdmVyIC50aXRsZSA+ICoge1xuICAgICAgICBhbmltYXRpb24tbmFtZTogZmFkZTtcbiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuNHM7XG4gICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOyB9XG4gICAgICAgIC5wb3J0Zm9saW8tbGlzdCBhOmhvdmVyIC50aXRsZSA+ICo6bnRoLWNoaWxkKDEpIHtcbiAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMXM7IH1cbiAgICAgICAgLnBvcnRmb2xpby1saXN0IGE6aG92ZXIgLnRpdGxlID4gKjpudGgtY2hpbGQoMikge1xuICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4yczsgfVxuICAgICAgICAucG9ydGZvbGlvLWxpc3QgYTpob3ZlciAudGl0bGUgPiAqOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjNzOyB9XG4gICAgICAgIC5wb3J0Zm9saW8tbGlzdCBhOmhvdmVyIC50aXRsZSA+ICo6bnRoLWNoaWxkKDQpIHtcbiAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuNHM7IH0gfVxuICAucG9ydGZvbGlvLWxpc3QgLmNvZGUtcHJvamVjdCBhOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE2NSwgMjA5LCAxMTQsIDAuOCk7IH1cbiAgLnBvcnRmb2xpby1saXN0IGltZyB7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi5zZXJ2aWNlLWljb24ge1xuICBmb250LXNpemU6IDUwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLm1vY2sge1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDVweCA1cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuNikpOyB9XG5cbi5ib3hlZCB7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMnB4IDJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbiAgbWF4LXdpZHRoOiA5NiU7IH1cblxuLmNocm9tZS1tb2NrIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXgtd2lkdGg6IDkwMHB4O1xuICBtYXgtaGVpZ2h0OiA1NjRweDsgfVxuXG4uY2hyb21lLXZpZXcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTkuNSU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDgwLjUlO1xuICBiYWNrZ3JvdW5kOiAjRkZGO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLmNocm9tZS12aWV3IGltZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG1heC13aWR0aDogMTAwJTsgfVxuXG4uY2hyb21lLXRpdGxlLCAuY2hyb21lLW5hdiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZm9udC1mYW1pbHk6IEFyaWFsLCBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMDAlOyB9XG5cbi5jaHJvbWUtdGl0bGUge1xuICB0b3A6IDQuMiU7XG4gIGxlZnQ6IDMlO1xuICBtYXgtd2lkdGg6IDEwJTtcbiAgY29sb3I6ICM4ODg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cblxuLmNocm9tZS1uYXYge1xuICB0b3A6IDEyLjclO1xuICBsZWZ0OiAxOCU7XG4gIGNvbG9yOiAjMDAwOyB9XG4gIC5jaHJvbWUtbmF2OjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdodHRwOi8vd3d3Lic7XG4gICAgY29sb3I6ICNBQUE7IH1cblxuLmlwaG9uZS1tb2NrIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXgtd2lkdGg6IDI1MHB4O1xuICBtYXgtaGVpZ2h0OiA1MjhweDsgfVxuXG4uaXBob25lLXZpZXcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTElO1xuICBsZWZ0OiA0JTtcbiAgd2lkdGg6IDkxJTtcbiAgaGVpZ2h0OiA3NyU7XG4gIGJhY2tncm91bmQ6ICNGRkY7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLmlwaG9uZS12aWV3IGltZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG1heC13aWR0aDogMTAwJTsgfVxuXG4uaXBob25lLXdyYXAge1xuICB3aWR0aDogMzAlO1xuICBtYXgtd2lkdGg6IDI1MHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTUlO1xuICByaWdodDogMCU7IH1cblxuLmNocm9tZS13cmFwIHtcbiAgKnpvb206IDE7XG4gIHdpZHRoOiBhdXRvO1xuICBtYXgtd2lkdGg6IDkwMHB4O1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1yaWdodDogMDsgfVxuICAuY2hyb21lLXdyYXA6YmVmb3JlLCAuY2hyb21lLXdyYXA6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IHRhYmxlOyB9XG4gIC5jaHJvbWUtd3JhcDphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDApIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5jaHJvbWUtd3JhcCB7XG4gICAgICBtYXgtd2lkdGg6IDk1JTsgfSB9XG5cbi8qXHJcbjxkaXYgY2xhc3M9XCJjaHJvbWUtbW9ja1wiPlxyXG5cdDxpbWcgc3JjPVwiY2hyb21lLW1vY2suc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJtb2NrXCI+XHJcblx0PGRpdiBjbGFzcz1cImNocm9tZS10aXRsZVwiPkdvb2dsZSBJbmMuPC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cImNocm9tZS1uYXZcIj5nb29nbGUuY29tLmJyPC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cImNocm9tZS12aWV3XCI+XHJcblx0XHQ8aW1nIHNyYz1cIlIyQSBFbmdlbmhhcmlhIDEucG5nXCIgYWx0PVwiXCI+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiaXBob25lLW1vY2tcIj5cclxuXHQ8aW1nIHNyYz1cImlwaG9uZS1tb2NrLnN2Z1wiIGFsdD1cIlwiIGNsYXNzPVwibW9ja1wiPlxyXG5cdDxkaXYgY2xhc3M9XCJpcGhvbmUtdmlld1wiPlxyXG5cdFx0PGltZyBzcmM9XCJSMkEgRW5nZW5oYXJpYSBNT0IucG5nXCIgYWx0PVwiXCI+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG4qL1xuLnNvY2lhbCB7XG4gIHBhZGRpbmctbGVmdDogMDsgfVxuICAuc29jaWFsIGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiAyNXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDsgfVxuICAgIC5zb2NpYWwgbGkgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHdpZHRoOiA2MHB4O1xuICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIC40cztcbiAgICAgIGNvbG9yOiBncmF5OyB9XG4gICAgICAuc29jaWFsIGxpIGE6YWZ0ZXIsIC5zb2NpYWwgbGkgYTpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgZ3JheTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIC40czsgfVxuICAgICAgLnNvY2lhbCBsaSBhOmJlZm9yZSB7XG4gICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgIGhlaWdodDogODAlOyB9XG4gICAgICAuc29jaWFsIGxpIGE6aG92ZXI6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjRkZGOyB9XG4gICAgICAuc29jaWFsIGxpIGEuc29jaWFsLWxpbmtlZGluOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgIGJhY2tncm91bmQ6ICMxYTg0YmM7IH1cbiAgICAgICAgLnNvY2lhbCBsaSBhLnNvY2lhbC1saW5rZWRpbjpob3ZlcjphZnRlciB7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMWE4NGJjOyB9XG4gICAgICAuc29jaWFsIGxpIGEuc29jaWFsLWdpdGh1Yjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAjRkZGO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwOyB9XG4gICAgICAgIC5zb2NpYWwgbGkgYS5zb2NpYWwtZ2l0aHViOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICMwMDA7IH1cbiAgICAgIC5zb2NpYWwgbGkgYS5zb2NpYWwtdHdpdHRlcjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAjRkZGO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMWRhMWYyOyB9XG4gICAgICAgIC5zb2NpYWwgbGkgYS5zb2NpYWwtdHdpdHRlcjpob3ZlcjphZnRlciB7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMWRhMWYyOyB9XG4gICAgICAuc29jaWFsIGxpIGEuc29jaWFsLXBpbnRlcmVzdDpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAjRkZGO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZDAxZDE1OyB9XG4gICAgICAgIC5zb2NpYWwgbGkgYS5zb2NpYWwtcGludGVyZXN0OmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICNkMDFkMTU7IH1cbiAgICAgIC5zb2NpYWwgbGkgYSBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgfVxuXG4uc2l0ZS1oZWFkZXIge1xuICBwYWRkaW5nOiAxMHB4IDA7XG4gIHRyYW5zaXRpb246IC4zcyBhbGw7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDIwMDtcbiAgKnpvb206IDE7IH1cbiAgLnNpdGUtaGVhZGVyOmJlZm9yZSwgLnNpdGUtaGVhZGVyOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiB0YWJsZTsgfVxuICAuc2l0ZS1oZWFkZXI6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoOyB9XG4gIC5zaXRlLWhlYWRlciAuY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuLnRvcC1iYXItYmcge1xuICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDAlIDAlO1xuICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKTtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgdHJhbnNpdGlvbjogYWxsIDFzOyB9XG4gIC5zdGlja3kgLnRvcC1iYXItYmcge1xuICAgIGJhY2tncm91bmQ6ICMyZjZkYjU7XG4gICAgdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpOyB9XG5cbi5icmFuZCB7XG4gIG1heC13aWR0aDogMjIwcHg7IH1cbiAgLmJyYW5kIGEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNTBweDsgfVxuICAuYnJhbmQgaW1nIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzOyB9XG4gIC5zdGlja3kgLmJyYW5kIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoXCIvc3ZnL2xvZ290aXBvLnN2Zz9jPWZmZlwiKSBsZWZ0IHRvcCBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxMDAlOyB9XG4gICAgLnN0aWNreSAuYnJhbmQgaW1nIHtcbiAgICAgIG9wYWNpdHk6IDA7IH1cblxuLm1haW4tbmF2IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMDAlLCAtNTAlKTtcbiAgei1pbmRleDogMzQwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAyODBweDtcbiAgcGFkZGluZzogMTBweDtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3M7IH1cbiAgLm5hdi1vcGVuZWQgLm1haW4tbmF2IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgfVxuICAubWFpbi1uYXYgdWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAgMTVweDsgfVxuICAubWFpbi1uYXYgYSB7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb2xvcjogI0ZGRjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDFzOyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDU1MHB4KSB7XG4gICAgICAubWFpbi1uYXYgYSB7XG4gICAgICAgIGNvbG9yOiAjMmY2ZGI1OyB9IH1cbiAgICAubWFpbi1uYXYgYTpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgICAuc3RpY2t5IC5tYWluLW5hdiBhIHtcbiAgICAgIHRyYW5zaXRpb246IC4zcyBhbGw7XG4gICAgICBjb2xvcjogI0ZGRjsgfVxuICAubWFpbi1uYXYgbGkge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzU2N0FGO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gICAgLm1haW4tbmF2IGxpOmxhc3Qtb2YtdHlwZSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lOyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA1NTBweCkge1xuICAgIC5tYWluLW5hdiB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgcGFkZGluZy10b3A6IDVweDtcbiAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgIHdpZHRoOiBhdXRvOyB9XG4gICAgICAubWFpbi1uYXYgdWwge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gICAgICAubWFpbi1uYXYgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lOyB9IH1cblxuYm9keSA+IGhlYWRlcixcbmJvZHkgPiAuY29udGFpbmVyIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3M7IH1cblxuLm1lbnUtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgcmlnaHQ6IDEwcHg7XG4gIHRvcDogMTBweDtcbiAgei1pbmRleDogMzAwO1xuICBiYWNrZ3JvdW5kOiAjM0ZBQ0UyO1xuICB3aWR0aDogNTBweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMnM7IH1cbiAgLm5hdi1vcGVuZWQgLm1lbnUtb3ZlcmxheSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSg1MCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC41czsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNTUwcHgpIHtcbiAgICAubWVudS1vdmVybGF5IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4ucG9ydGZvbGlvLXdyYXAge1xuICBiYWNrZ3JvdW5kOiAjMDE4YmQzO1xuICBjb2xvcjogI0ZGRjsgfVxuICAucG9ydGZvbGlvLXdyYXAgYSB7XG4gICAgY29sb3I6ICNGRkY7IH1cbiAgLmludmVyc2UgLnBvcnRmb2xpby13cmFwIHtcbiAgICBjb2xvcjogIzMzMzsgfVxuICAgIC5pbnZlcnNlIC5wb3J0Zm9saW8td3JhcCBhIHtcbiAgICAgIGNvbG9yOiAjMzMzOyB9XG4gIC5wb3J0Zm9saW8td3JhcCAuY29udGFpbmVyLCAucG9ydGZvbGlvLXdyYXAgaGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgLnBvcnRmb2xpby13cmFwIGgxIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDsgfVxuICAgIC5wb3J0Zm9saW8td3JhcCBoMTphZnRlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gIC5wb3J0Zm9saW8td3JhcCAjc3ZnTG9nbyB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA1NTBweCkge1xuICAgICAgLnBvcnRmb2xpby13cmFwICNzdmdMb2dvIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgLnBvcnRmb2xpby13cmFwIGhlYWRlciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQ6ICMwMThiZDM7XG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgei1pbmRleDogMjAwOyB9XG4gIC5wb3J0Zm9saW8td3JhcCA+IC5jb250YWluZXI6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgcGFkZGluZy10b3A6IDgwcHg7IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNTUwcHgpIHtcbiAgICAgIC5wb3J0Zm9saW8td3JhcCA+IC5jb250YWluZXI6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMjBweDsgfSB9XG5cbi5wcm9qZWN0LXRpdGxlIHtcbiAgbGluZS1oZWlnaHQ6IC42ZW07XG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gIGNvbG9yOiAjRkZGOyB9XG4gIC5pbnZlcnNlIC5wcm9qZWN0LXRpdGxlIHtcbiAgICBjb2xvcjogIzMzMzsgfVxuICAucHJvamVjdC10aXRsZSBpbWcge1xuICAgIHdpZHRoOiAxNjBweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoN3B4KTsgfVxuICAucHJvamVjdC10aXRsZSBzcGFuIHtcbiAgICBib3JkZXItY29sb3I6ICNGRkY7XG4gICAgZm9udC1mYW1pbHk6ICdGb250aW4nLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtc2l6ZTogLjI1ZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4wMDJlbTsgfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA1NTBweCkge1xuICAgICAgLnByb2plY3QtdGl0bGUgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogLjVlbTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRkZGO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7IH0gfVxuICAgIC5pbnZlcnNlIC5wcm9qZWN0LXRpdGxlIHNwYW4ge1xuICAgICAgYm9yZGVyLWNvbG9yOiAjMzMzOyB9XG5cbi5zbGlkZSB7XG4gIGJhY2tncm91bmQ6ICNFRUU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogNSUgMDsgfVxuICAuc2xpZGUtaW5pdCB7XG4gICAgYmFja2dyb3VuZDogI0VFRSB1cmwoXCIvc3ZnL3VwLnN2Zz9jPTAxOGJkM1wiKSBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0ycHggMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogNjBweDsgfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA1NTBweCkge1xuICAgICAgLnNsaWRlLWluaXQge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsgfSB9XG4gIC5zbGlkZS1maW0ge1xuICAgIGJhY2tncm91bmQ6ICNFRUUgdXJsKFwiL3N2Zy9kb3duLnN2Zz9jPTAxOGJkM1wiKSBuby1yZXBlYXQgYm90dG9tIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOyB9XG4gIC5zbGlkZS1jb250ZW50IHtcbiAgICAqem9vbTogMTtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXgtd2lkdGg6IDExODBweDtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgICAuc2xpZGUtY29udGVudDpiZWZvcmUsIC5zbGlkZS1jb250ZW50OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogdGFibGU7IH1cbiAgICAuc2xpZGUtY29udGVudDphZnRlciB7XG4gICAgICBjbGVhcjogYm90aDsgfVxuICAgIC5zbGlkZS1jb250ZW50LnNsaWRlLW1vY2tzIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG4ucG9ydGZvbGlvLWNsb3NlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDEzcHg7XG4gIHJpZ2h0OiAxMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiAjRkZGOyB9XG4gIC5pbnZlcnNlIC5wb3J0Zm9saW8tY2xvc2Uge1xuICAgIGNvbG9yOiAjMzMzOyB9XG4gIC5wb3J0Zm9saW8tY2xvc2U6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICAucG9ydGZvbGlvLWNsb3NlIHNwYW4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG4gICAgLnBvcnRmb2xpby1jbG9zZSBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDU1MHB4KSB7XG4gICAgICAgIC5wb3J0Zm9saW8tY2xvc2Ugc3BhbjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0gfVxuICAucG9ydGZvbGlvLWNsb3NlIC5pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4OyB9XG4gICAgLnBvcnRmb2xpby1jbG9zZSAuaWNvbjphZnRlciwgLnBvcnRmb2xpby1jbG9zZSAuaWNvbjpiZWZvcmUge1xuICAgICAgdG9wOiA1MCU7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKDQ1ZGVnKTsgfVxuICAgICAgLmludmVyc2UgLnBvcnRmb2xpby1jbG9zZSAuaWNvbjphZnRlciwgLmludmVyc2UgLnBvcnRmb2xpby1jbG9zZSAuaWNvbjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMzMzOyB9XG4gICAgLnBvcnRmb2xpby1jbG9zZSAuaWNvbjpiZWZvcmUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKC00NWRlZyk7IH1cblxuI3Byb2plY3QtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBvdmVyZmxvdzogYXV0bztcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4gIHotaW5kZXg6IDEwMDA7XG4gIGRpc3BsYXk6IG5vbmU7IH1cbiAgLnByb2plY3Qtb3BlbmVkICNwcm9qZWN0LWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogYmxvY2s7IH1cblxuYm9keS5wcm9qZWN0LW9wZW5lZCwgaHRtbC5wcm9qZWN0LW9wZW5lZCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5jcmVkaXRzIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICBtYXJnaW46IDEwcHggMDtcbiAgcGFkZGluZzogMTBweCAyMHB4OyB9XG4gIC5pbnZlcnNlIC5jcmVkaXRzIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMik7IH1cblxuLnRhZy1saXN0IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAxMHB4IDA7XG4gIHBhZGRpbmctbGVmdDogMDsgfVxuXG4udGFnIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kOiAjOTk5O1xuICBjb2xvcjogI0ZGRjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBwYWRkaW5nOiAycHggN3B4OyB9XG5cbmEuZXh0ZXJuYWwge1xuICBjb2xvcjogI0ZGRjsgfVxuICBhLmV4dGVybmFsOmJlZm9yZSB7XG4gICAgZm9udC1mYW1pbHk6ICdycmlvZ28nICFpbXBvcnRhbnQ7XG4gICAgc3BlYWs6IG5vbmU7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICBjb250ZW50OiBcIu6klFwiO1xuICAgIG1hcmdpbi1yaWdodDogMTBweDsgfVxuXG4uaW52ZXJzZSBwIHtcbiAgY29sb3I6ICMzMzM7IH1cblxuLmludmVyc2UgYS5leHRlcm5hbCB7XG4gIGNvbG9yOiAjMzMzOyB9XG5cbi5vcGVuLXByb2plY3Qge1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbkBrZXlmcmFtZXMgc2xpZGUge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7IH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfSB9XG5cbi5vcGVuLXByb2plY3QgI3Byb2plY3Qtc2hvdyB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDEwMHZoO1xuICB3aWR0aDogMTAwdnc7XG4gIHotaW5kZXg6IDEwMDA7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi5vcGVuLXByb2plY3QubG9hZGluZyAjcHJvamVjdC1zaG93IHtcbiAgb3BhY2l0eTogMC45O1xuICBiYWNrZ3JvdW5kOiAjRkZGIHVybChcIi4uL2ltZy9hamF4LWxvYWRlci5naWZcIikgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7IH1cbiAgLm9wZW4tcHJvamVjdC5sb2FkaW5nICNwcm9qZWN0LXNob3cgPiAqIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG5cbi5sb2FkZWQgI3Byb2plY3Qtc2hvdyA+ICoge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGU7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7IH1cblxuYm9keSB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybChcIi4uL2ltZy9wYXBlci5wbmdcIikgbGVmdCB0b3A7IH1cbiAgYm9keSA+IHNlY3Rpb24ge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoOyB9XG5cbiNob21lLXBhZ2Uge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDVlNGY0O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIvc3ZnL2JnLnN2Zz9jPTdlNmNiMFwiKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgYmFja2dyb3VuZC1ibGVuZC1tb2RlOiBzb2Z0LWxpZ2h0OyB9XG4gICNob21lLXBhZ2UgLndyYXAge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZy10b3A6IDUwdmg7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gICNob21lLXBhZ2UgLmNvbnRhaW5lciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHotaW5kZXg6IDEwMDsgfVxuXG4vKiBObyBmaWxlcyB0byBpbXBvcnQgZm91bmQgaW4gcGFnZXMvLyogKi9cbiIsIi8qICBTeW50YXggUXVpY2sgUmVmZXJlbmNlXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGNvbHVtbigkcmF0aW9zOiAxLCAkb2Zmc2V0OiAwLCAkY3ljbGU6IDAsICR1bmN5Y2xlOiAwLCAkZ3V0dGVyOiAkamVldC1ndXR0ZXIpXG4gIHNwYW4oJHJhdGlvOiAxLCAkb2Zmc2V0OiAwKVxuICBzaGlmdCgkcmF0aW9zOiAwLCAkY29sX29yX3NwYW46IGNvbHVtbiwgJGd1dHRlcjogJGplZXQtZ3V0dGVyKVxuICB1bnNoaWZ0KClcbiAgZWRpdCgpXG4gIGNlbnRlcigkbWF4X3dpZHRoOiAxNDEwcHgsICRwYWQ6IDApXG4gIHN0YWNrKCRwYWQ6IDAsICRhbGlnbjogZmFsc2UpXG4gIHVuc3RhY2soKVxuICBhbGlnbigkZGlyZWN0aW9uOiBib3RoKVxuICBjZigpXG4qL1xuXG5AaW1wb3J0ICdfc2V0dGluZ3MnO1xuQGltcG9ydCAnX2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICdfZ3JpZCc7XG4iLCIvKipcbiAqIEdyaWQgc2V0dGluZ3MuXG4gKiBBbGwgdmFsdWVzIGFyZSBkZWZhdWx0cyBhbmQgY2FuIHRoZXJlZm9yZSBiZSBlYXNpbHkgb3ZlcmlkZGVuLlxuICovXG5cbiRqZWV0LWd1dHRlcjogICAgICAgICAgIDMgICAgICAhZGVmYXVsdDtcbiRqZWV0LXBhcmVudC1maXJzdDogICAgIGZhbHNlICAhZGVmYXVsdDtcbiRqZWV0LWxheW91dC1kaXJlY3Rpb246IFwiTFRSXCIgICFkZWZhdWx0O1xuJGplZXQtbWF4LXdpZHRoOiAgICAgICAgMTQxMHB4ICFkZWZhdWx0O1xuIiwiLyoqXG4gKiBMaXN0IGZ1bmN0aW9ucyBjb3VydGVzeSBvZiB0aGUgd29uZGVyZnVsIGZvbGtzIGF0IFRlYW0gU2Fzcy5cbiAqIENoZWNrIG91dCB0aGVpciBhd2Vzb21lIGdyaWQ6IFNpbmd1bGFyaXR5LlxuICovXG5cbi8qKlxuICogR2V0ICBwZXJjZW50YWdlIGZyb20gYSBnaXZlbiByYXRpby5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHJhdGlvPTFdIC0gVGhlIGNvbHVtbiByYXRpbyBvZiB0aGUgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IC0gVGhlIHBlcmNlbnRhZ2UgdmFsdWUuXG4gKi9cbkBmdW5jdGlvbiBqZWV0LWdldC1zcGFuKCRyYXRpbzogMSkge1xuICBAcmV0dXJuICRyYXRpbyAqIDEwMDtcbn1cblxuLyoqXG4gKiBXb3JrIG91dCB0aGUgY29sdW1uIHdpZHRocyBiYXNlZCBvbiB0aGUgcmF0aW8gYW5kIGd1dHRlciBzaXplcy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHJhdGlvcz0xXSAtIFRoZSBjb2x1bW4gcmF0aW8gb2YgdGhlIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRndXR0ZXI9JGplZXQtZ3V0dGVyXSAtIFRoZSBndXR0ZXIgZm9yIHRoZSBjb2x1bW4uXG4gKiBAcmV0dXJucyB7bGlzdH0gJHdpZHRoICRndXR0ZXIgLSBBIGxpc3QgY29udGFpbmluZyB0aGUgd2l0aCBhbmQgZ3V0dGVyIGZvciB0aGUgZWxlbWVudC5cbiAqL1xuQGZ1bmN0aW9uIGplZXQtZ2V0LWNvbHVtbigkcmF0aW9zOiAxLCAkZ3V0dGVyOiAkamVldC1ndXR0ZXIpIHtcbiAgJHJhdGlvczogaWYobm90ICRqZWV0LXBhcmVudC1maXJzdCwgamVldC1yZXZlcnNlKCRyYXRpb3MpLCAkcmF0aW9zKTtcbiAgJHdpZHRoOiAxMDA7XG5cbiAgQGVhY2ggJHJhdGlvIGluICRyYXRpb3Mge1xuICAgICRndXR0ZXI6ICRndXR0ZXIgLyAkd2lkdGggKiAxMDA7XG4gICAgJHdpZHRoOiAxMDAgKiAkcmF0aW8gLSAkZ3V0dGVyICsgJHJhdGlvICogJGd1dHRlcjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoICRndXR0ZXI7XG59XG5cbi8qKlxuICogR2V0IHRoZSBzZXQgbGF5b3V0IGRpcmVjdGlvbiBmb3IgdGhlIHByb2plY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAkZGlyZWN0aW9uIC0gVGhlIGxheW91dCBkaXJlY3Rpb24uXG4gKi9cbkBmdW5jdGlvbiBqZWV0LWdldC1sYXlvdXQtZGlyZWN0aW9uKCkge1xuICAkZGlyZWN0aW9uOiBpZigkamVldC1sYXlvdXQtZGlyZWN0aW9uID09IFwiUlRMXCIsIHJpZ2h0LCBsZWZ0KTtcblxuICBAcmV0dXJuICRkaXJlY3Rpb247XG59XG5cbi8qKlxuICogUmVwbGFjZSBhIHNwZWNpZmllZCBsaXN0IHZhbHVlIHdpdGggYSBuZXcgdmFsdWUgKHVzZXMgYnVpbHQgaW4gc2V0LW50aCgpIGlmIGF2YWlsYWJsZSlcbiAqIEBwYXJhbSB7bGlzdH0gJGxpc3QgLSBUaGUgbGlzdCBvZiB2YWx1ZXMgeW91IHdhbnQgdG8gYWx0ZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gJGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBsaXN0IGl0ZW0geW91IHdhbnQgdG8gcmVwbGFjZS5cbiAqIEBwYXJhbSB7Kn0gJHZhbHVlIC0gVGhlIHZhbHVlIHlvdSB3YW50IHRvIHJlcGxhY2UgJGluZGV4IHdpdGguXG4gKiBAcmV0dXJucyB7bGlzdH0gJGxpc3QgLSBUaGUgbGlzdCB3aXRoIHRoZSB2YWx1ZSByZXBsYWNlZCBvciByZW1vdmVkLlxuICogQHdhcm4gaWYgYW4gaW52YWxpZCBpbmRleCBpcyBzdXBwbGllZC5cbiAqL1xuQGZ1bmN0aW9uIGplZXQtcmVwbGFjZS1udGgoJGxpc3QsICRpbmRleCwgJHZhbHVlKSB7XG4gIC8vIEZhbGxiYWNrIGZvciBTYXNzIDMuMlxuICBAaWYgZnVuY3Rpb24tZXhpc3RzKFwic2V0LW50aFwiKSAhPSB0cnVlIHtcbiAgICAkcmVzdWx0OiAoKTtcbiAgICAkaW5kZXg6IGlmKCRpbmRleCA8IDAsIGxlbmd0aCgkbGlzdCkgKyAkaW5kZXggKyAxLCAkaW5kZXgpO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBpZigkaSA9PSAkaW5kZXgsICR2YWx1ZSwgbnRoKCRsaXN0LCAkaSkpKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRyZXN1bHQ7XG4gIH1cblxuICAvLyBTYXNzIDMuM1xuICAkcmVzdWx0OiBzZXQtbnRoKCRsaXN0LCAkaW5kZXgsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vKipcbiAqIFJldmVyc2UgYSBsaXN0IChwcm9ncmVzc2l2ZWx5IGVuaGFuY2VkIGZvciBTYXNzIDMuMylcbiAqIEBwYXJhbSB7bGlzdH0gJGxpc3QgLSBUaGUgbGlzdCBvZiB2YWx1ZXMgeW91IHdhbnQgdG8gcmV2ZXJzZS5cbiAqIEByZXR1cm5zIHtsaXN0fSAkcmVzdWx0IC0gVGhlIHJldmVyc2VkIGxpc3QuXG4gKi9cbkBmdW5jdGlvbiBqZWV0LXJldmVyc2UoJGxpc3QpIHtcbiAgLy8gU2FzcyAzLjJcbiAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhcInNldC1udGhcIikgIT0gdHJ1ZSB7XG4gICAgJHJlc3VsdDogKCk7XG5cbiAgICBAZm9yICRpIGZyb20gbGVuZ3RoKCRsaXN0KSAqIC0xIHRocm91Z2ggLTEge1xuICAgICAgJGl0ZW06IG50aCgkbGlzdCwgYWJzKCRpKSk7XG5cbiAgICAgIEBpZiBsZW5ndGgoJGl0ZW0pID4gMSBhbmQgJHJlY3Vyc2l2ZSB7XG4gICAgICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBqZWV0LXJldmVyc2UoJGl0ZW0sICRyZWN1cnNpdmUpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRyZXN1bHQ7XG4gIH1cblxuICAvLyBTYXNzIDMuMytcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBjZWlsKGxlbmd0aCgkbGlzdCkvMikge1xuICAgICR0bXA6IG50aCgkbGlzdCwgJGkpO1xuICAgICR0bXA6IGlmKGxlbmd0aCgkdG1wKSA+IDEgYW5kICRyZWN1cnNpdmUsIHJldmVyc2UoJHRtcCwgJHJlY3Vyc2l2ZSksICR0bXApO1xuXG4gICAgJGxpc3Q6IHNldC1udGgoJGxpc3QsICRpLCBudGgoJGxpc3QsIC0kaSkpO1xuICAgICRsaXN0OiBzZXQtbnRoKCRsaXN0LCAtJGksICR0bXApO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0byBhIGdpdmVuIHZhbHVlLlxuICogQHBhcmFtIHtzdHJpbmd9ICRkaXIgLSBUaGUgZGlyZWN0aW9uIHlvdSB3YW50IHRoZSBvcHBvc2l0ZSBvZi5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0byAkZGlyLlxuICogQHdhcm4gaWYgYW4gaW5jb3JyZWN0IHN0cmluZyBpcyBwcm92aWRlZC5cbiAqL1xuQGZ1bmN0aW9uIGplZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pIHtcbiAgQGlmICRkaXJlY3Rpb24gPT0gXCJsZWZ0XCIge1xuICAgIEByZXR1cm4gcmlnaHQ7XG4gIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIEByZXR1cm4gbGVmdDtcbiAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwidG9wXCIge1xuICAgIEByZXR1cm4gYm90dG9tO1xuICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gXCJib3R0b21cIiB7XG4gICAgQHJldHVybiB0b3A7XG4gIH0gQGVsc2UgaWYgaW5kZXgoXCJsdHJcIiBcIkxUUlwiLCAkZGlyZWN0aW9uKSB7XG4gICAgQHJldHVybiBydGw7XG4gIH0gQGVsc2UgaWYgaW5kZXgoXCJydGxcIiBcIlJUTFwiLCAkZGlyZWN0aW9uKSB7XG4gICAgQHJldHVybiBsdHI7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuIFwiYCN7JGRpcmVjdGlvbn1gIGlzIG5vdCBhIGRpcmVjdGlvbjsgcGxlYXNlIG1ha2Ugc3VyZSB5b3VyIGRpcmVjdGlvbiBpcyBhbGwgbG93ZXJjYXNlLlwiO1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8qKlxuICogU3R5bGUgYW4gZWxlbWVudCBhcyBhIGNvbHVtbiB3aXRoIGEgZ3V0dGVyLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gWyRvZmZzZXQ9MF0gLSBBIG9mZnNldCBzcGVjaWZpZWQgYXMgYSBmcmFjdGlvbiAoc2VlICRyYXRpb3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IFskY3ljbGU9MF0gLSBFYXNpbHkgY3JlYXRlIGFuIG50aCBjb2x1bW4gZ3JpZCB3aGVyZSAkY3ljbGUgZXF1YWxzIHRoZSBudW1iZXIgb2YgY29sdW1ucy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHVuY3ljbGU9MF0gLSBVbmRvIGEgcHJldmlvdXMgY3ljbGUgdmFsdWUgdG8gYWxsb3cgZm9yIGEgbmV3IG9uZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJGd1dHRlcj0kamVldC1ndXR0ZXJdIC0gU3BlY2lmeSB0aGUgZ3V0dGVyIHdpZHRoIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY29udGFpbmVycyB3aWR0aC5cbiAqL1xuQG1peGluIGNvbHVtbigkcmF0aW9zOiAxLCAkb2Zmc2V0OiAwLCAkY3ljbGU6IDAsICR1bmN5Y2xlOiAwLCAkZ3V0dGVyOiAkamVldC1ndXR0ZXIpIHtcbiAgJHNpZGU6IGplZXQtZ2V0LWxheW91dC1kaXJlY3Rpb24oKTtcbiAgJG9wcG9zaXRlLXNpZGU6IGplZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRzaWRlKTtcbiAgJGNvbHVtbi13aWR0aHM6IGplZXQtZ2V0LWNvbHVtbigkcmF0aW9zLCAkZ3V0dGVyKTtcbiAgJG1hcmdpbi1sYXN0OiAwO1xuICAkbWFyZ2luLWw6ICRtYXJnaW4tbGFzdDtcbiAgJG1hcmdpbi1yOiBudGgoJGNvbHVtbi13aWR0aHMsIDIpO1xuXG4gIEBpZiAkb2Zmc2V0ICE9IDAge1xuICAgIEBpZiAkb2Zmc2V0IDwgMCB7XG4gICAgICAkb2Zmc2V0OiAkb2Zmc2V0ICogLTE7XG4gICAgICAkb2Zmc2V0OiBudGgoamVldC1nZXQtY29sdW1uKCRvZmZzZXQsIG50aCgkY29sdW1uLXdpZHRocywgMikpLCAxKTtcbiAgICAgICRtYXJnaW4tbGFzdDogJG9mZnNldCArIG50aCgkY29sdW1uLXdpZHRocywgMikgKiAyO1xuICAgICAgJG1hcmdpbi1yOiAkbWFyZ2luLWxhc3Q7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkb2Zmc2V0OiBudGgoamVldC1nZXQtY29sdW1uKCRvZmZzZXQsIG50aCgkY29sdW1uLXdpZHRocywgMikpLCAxKTtcbiAgICAgICRtYXJnaW4tbDogJG9mZnNldCArIG50aCgkY29sdW1uLXdpZHRocywgMik7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgY2Y7XG4gIGZsb2F0OiAkc2lkZTtcbiAgY2xlYXI6IG5vbmU7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gIHdpZHRoOiBudGgoJGNvbHVtbi13aWR0aHMsIDEpICogMSU7XG4gIG1hcmdpbjoge1xuICAgICN7JHNpZGV9OiAkbWFyZ2luLWwgKiAxJTtcbiAgICAjeyRvcHBvc2l0ZS1zaWRlfTogJG1hcmdpbi1yICogMSU7XG4gIH07XG5cbiAgQGlmICR1bmN5Y2xlICE9IDAge1xuICAgICY6bnRoLWNoaWxkKCN7JHVuY3ljbGV9bikge1xuICAgICAgbWFyZ2luLSN7amVldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJHNpZGUpfTogJG1hcmdpbi1yICogMSU7XG4gICAgICBmbG9hdDogJHNpZGU7XG4gICAgfVxuICAgICY6bnRoLWNoaWxkKCN7JHVuY3ljbGV9biArIDEpIHtcbiAgICAgIGNsZWFyOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkY3ljbGUgIT0gMCB7XG4gICAgJjpudGgtY2hpbGQoI3skY3ljbGV9bikge1xuICAgICAgbWFyZ2luLSN7amVldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJHNpZGUpfTogJG1hcmdpbi1sYXN0ICogMSU7XG4gICAgICBmbG9hdDogamVldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJHNpZGUpO1xuICAgIH1cbiAgICAmOm50aC1jaGlsZCgjeyRjeWNsZX1uICsgMSkge1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLSN7amVldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJHNpZGUpfTogJG1hcmdpbi1sYXN0ICogMSU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQW4gYWxpYXMgZm9yIHRoZSBjb2x1bW4gbWl4aW4uXG4gKiBAcGFyYW0gWyRhcmdzLi4uXSAtIEFsbCBhcmd1bWVudHMgZ2V0IHBhc3NlZCB0aHJvdWdoIHRvIGNvbHVtbigpLlxuICovXG5AbWl4aW4gY29sKCRhcmdzLi4uKSB7XG4gIEBpbmNsdWRlIGNvbHVtbigkYXJncy4uLik7XG59XG5cbi8qKlxuICogR2V0IHRoZSB3aWR0aCBvZiBhIGNvbHVtbiBhbmQgbm90aGluZyBlbHNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gWyRndXR0ZXI9JGplZXQtZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbkBmdW5jdGlvbiBjb2x1bW4td2lkdGgoJHJhdGlvczogMSwgJGd1dHRlcjogJGplZXQtZ3V0dGVyKSB7XG4gIEByZXR1cm4gdW5xdW90ZShudGgoamVldC1nZXQtY29sdW1uKCRyYXRpb3MsICRndXR0ZXIpLCAxKSArICclJyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBndXR0ZXIgc2l6ZSBvZiBhIGNvbHVtbiBhbmQgbm90aGluZyBlbHNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtyYXRpb3M9MV0gLSBBIHdpZHRoIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXIgYXMgYSBmcmFjdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZ3V0dGVyPWplZXQuZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbkBmdW5jdGlvbiBjb2x1bW4tZ3V0dGVyKCRyYXRpb3M6IDEsICRndXR0ZXI6ICRqZWV0LWd1dHRlcikge1xuICBAcmV0dXJuIHVucXVvdGUobnRoKGplZXQtZ2V0LWNvbHVtbigkcmF0aW9zLCAkZ3V0dGVyKSwgMikgKyAnJScpO1xufVxuXG4vKipcbiAqIEFuIGFsaWFzIGZvciB0aGUgY29sdW1uLXdpZHRoIGZ1bmN0aW9uLlxuICogQHBhcmFtIFskYXJncy4uLl0gLSBBbGwgYXJndW1lbnRzIGdldCBwYXNzZWQgdGhyb3VnaCB0byBjb2x1bW4oKS5cbiAqL1xuQGZ1bmN0aW9uIGN3KCRhcmdzLi4uKSB7XG4gIEByZXR1cm4gY29sdW1uLXdpZHRoKCRhcmdzLi4uKTtcbn1cblxuLyoqXG4gKiBBbiBhbGlhcyBmb3IgdGhlIGNvbHVtbi1ndXR0ZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0gWyRhcmdzLi4uXSAtIEFsbCBhcmd1bWVudHMgZ2V0IHBhc3NlZCB0aHJvdWdoIHRvIGNvbHVtbigpLlxuICovXG5AZnVuY3Rpb24gY2coJGFyZ3MuLi4pIHtcbiAgQHJldHVybiBjb2x1bW4tZ3V0dGVyKCRhcmdzLi4uKTtcbn1cblxuLyoqXG4gKiBTdHlsZSBhbiBlbGVtZW50IGFzIGEgY29sdW1uIHdpdGhvdXQgYW55IGd1dHRlcnMgZm9yIGEgc2VhbWxlc3Mgcm93LlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gWyRvZmZzZXQ9MF0gLSBBIG9mZnNldCBzcGVjaWZpZWQgYXMgYSBmcmFjdGlvbiAoc2VlICRyYXRpb3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtjeWNsZT0wXSAtIEVhc2lseSBjcmVhdGUgYW4gbnRoIGNvbHVtbiBncmlkIHdoZXJlIGN5Y2xlIGVxdWFscyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuXG4gKiBAcGFyYW0ge251bWJlcn0gW3VuY3ljbGU9MF0gLSBVbmRvIGEgcHJldmlvdXMgY3ljbGUgdmFsdWUgdG8gYWxsb3cgZm9yIGEgbmV3IG9uZS5cbiAqL1xuQG1peGluIHNwYW4oJHJhdGlvOiAxLCAkb2Zmc2V0OiAwLCAkY3ljbGU6IDAsICR1bmN5Y2xlOiAwKSB7XG4gICRzaWRlOiBqZWV0LWdldC1sYXlvdXQtZGlyZWN0aW9uKCk7XG4gICRvcHBvc2l0ZS1zaWRlOiBqZWV0LW9wcG9zaXRlLWRpcmVjdGlvbigkc2lkZSk7XG4gICRzcGFuLXdpZHRoOiBqZWV0LWdldC1zcGFuKCRyYXRpbyk7XG4gICRtYXJnaW4tcjogMDtcbiAgJG1hcmdpbi1sOiAkbWFyZ2luLXI7XG4gIEBpZiAkb2Zmc2V0ICE9IDAge1xuICAgIEBpZiAkb2Zmc2V0IDwgMCB7XG4gICAgICAkb2Zmc2V0OiAkb2Zmc2V0ICogLTE7XG4gICAgICAkbWFyZ2luLXI6IGplZXQtZ2V0LXNwYW4oJG9mZnNldCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbWFyZ2luLWw6IGplZXQtZ2V0LXNwYW4oJG9mZnNldCk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgY2Y7XG4gIGZsb2F0OiAkc2lkZTtcbiAgY2xlYXI6IG5vbmU7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gIHdpZHRoOiAkc3Bhbi13aWR0aCAqIDElO1xuICBtYXJnaW46IHtcbiAgICAjeyRzaWRlfTogJG1hcmdpbi1sICogMSU7XG4gICAgI3skb3Bwb3NpdGUtc2lkZX06ICRtYXJnaW4tciAqIDElO1xuICB9O1xuXG4gIEBpZiAkY3ljbGUgIT0gMCB7XG4gICAgJjpudGgtY2hpbGQoI3skY3ljbGV9bikge1xuICAgICAgZmxvYXQ6ICRvcHBvc2l0ZS1zaWRlO1xuICAgIH1cbiAgICAmOm50aC1jaGlsZCgjeyRjeWNsZX1uICsgMSkge1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG5cbiAgQGlmICR1bmN5Y2xlICE9IDAge1xuICAgICY6bnRoLWNoaWxkKCN7JHVuY3ljbGV9bikge1xuICAgICAgZmxvYXQ6ICRzaWRlO1xuICAgIH1cbiAgICAmOm50aC1jaGlsZCgjeyR1bmN5Y2xlfW4gKyAxKSB7XG4gICAgICBjbGVhcjogbm9uZTtcbiAgICB9XG4gIH1cblxufVxuXG4vKipcbiAqIFJlb3JkZXIgY29sdW1ucyB3aXRob3V0IGFsdGVyaW5nIHRoZSBIVE1MLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcmF0aW9zPTBdIC0gU3BlY2lmeSBob3cgZmFyIGFsb25nIHlvdSB3YW50IHRoZSBlbGVtZW50IHRvIG1vdmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gWyRjb2wtb3Itc3Bhbj1jb2x1bW5dIC0gU3BlY2lmeSB3aGV0aGVyIHRoZSBlbGVtZW50IGhhcyBhIGd1dHRlciBvciBub3QuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRndXR0ZXI9JGplZXQtZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbkBtaXhpbiBzaGlmdCgkcmF0aW9zOiAwLCAkY29sLW9yLXNwYW46IGNvbHVtbiwgJGd1dHRlcjogJGplZXQtZ3V0dGVyKSB7XG4gICR0cmFuc2xhdGU6ICcnO1xuICAkc2lkZTogamVldC1nZXQtbGF5b3V0LWRpcmVjdGlvbigpO1xuXG4gIEBpZiAkc2lkZSA9PSByaWdodCB7XG4gICAgJHJhdGlvczogamVldC1yZXBsYWNlLW50aCgkcmF0aW9zLCAwLCBudGgoJHJhdGlvcywgMSkgKiAtMSk7XG4gIH1cblxuICBAaWYgaW5kZXgoXCJjb2x1bW5cIiBcImNvbFwiIFwiY1wiLCAkY29sLW9yLXNwYW4pIHtcbiAgICAkY29sdW1uLXdpZHRoczogamVldC1nZXQtY29sdW1uKCRyYXRpb3MsICRndXR0ZXIpO1xuICAgICR0cmFuc2xhdGU6IG50aCgkY29sdW1uLXdpZHRocywgMSkgKyBudGgoJGNvbHVtbi13aWR0aHMsIDIpO1xuICB9IEBlbHNlIHtcbiAgICAkdHJhbnNsYXRlOiBqZWV0LWdldC1zcGFuKCRyYXRpb3MpO1xuICB9XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiAkdHJhbnNsYXRlICogMSU7XG59XG5cbi8qKlxuICogUmVzZXQgYW4gZWxlbWVudCB0aGF0IGhhcyBoYWQgc2hpZnQoKSBhcHBsaWVkIHRvIGl0LlxuICovXG5AbWl4aW4gdW5zaGlmdCgpIHtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgbGVmdDogMDtcbn1cblxuLyoqXG4gKiBWaWV3IHRoZSBncmlkIGFuZCBpdHMgbGF5ZXJzIGZvciBlYXN5IGRlYnVnZ2luZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbJGNvbG9yPWJsYWNrXSAtIFRoZSBiYWNrZ3JvdW5kIHRpbnQgYXBwbGllZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gWyRpbXBvcnRhbnQ9ZmFsc2VdIC0gV2hldGhlciB0byBhcHBseSB0aGUgc3R5bGUgYXMgIWltcG9ydGFudC5cbiAqL1xuQG1peGluIGVkaXQoJGNvbG9yOiBibGFjaywgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgQGlmICRpbXBvcnRhbnQge1xuICAgICoge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgkY29sb3IsIC4wNSkgIWltcG9ydGFudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICoge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgkY29sb3IsIC4wNSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogIEFsaWFzIGZvciBlZGl0KCkuXG4gKi9cbkBtaXhpbiBkZWJ1ZygpIHtcbiAgQGluY2x1ZGUgZWRpdDtcbn1cblxuLyoqXG4gKiBIb3Jpem9udGFsbHkgY2VudGVyIGFuIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gWyRtYXgtd2lkdGg9MTQxMHB4XSAtIFRoZSBtYXggd2lkdGggdGhlIGVsZW1lbnQgY2FuIGJlLlxuICogQHBhcmFtIHtudW1iZXJ9IFskcGFkPTBdIC0gU3BlY2lmeSB0aGUgZWxlbWVudCdzIGxlZnQgYW5kIHJpZ2h0IHBhZGRpbmcuXG4gKi9cbkBtaXhpbiBjZW50ZXIoJG1heC13aWR0aDogJGplZXQtbWF4LXdpZHRoLCAkcGFkOiAwKSB7XG4gIEBpbmNsdWRlIGNmO1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjoge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6ICBhdXRvO1xuICB9O1xuICBwYWRkaW5nOiB7XG4gICAgbGVmdDogICRwYWQ7XG4gICAgcmlnaHQ6ICRwYWQ7XG4gIH07XG59XG5cbi8qKlxuICogVW5jZW50ZXIgYW4gZWxlbWVudC5cbiAqL1xuQG1peGluIHVuY2VudGVyKCkge1xuICBtYXgtd2lkdGg6IG5vbmU7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1yaWdodDogMDtcbn1cblxuLyoqXG4gKiBTdGFjayBhbiBlbGVtZW50IHNvIHRoYXQgbm90aGluZyBpcyBlaXRoZXIgc2lkZSBvZiBpdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbJHBhZD0wXSAtIFNwZWNpZnkgdGhlIGVsZW1lbnQncyBsZWZ0IGFuZCByaWdodCBwYWRkaW5nLlxuICogQHBhcmFtIHtib29sZWFuL3N0cmluZ30gWyRhbGlnbj1mYWxzZV0gLSBTcGVjaWZ5IHRoZSB0ZXh0IGFsaWduIGZvciB0aGUgZWxlbWVudC5cbiAqL1xuQG1peGluIHN0YWNrKCRwYWQ6IDAsICRhbGlnbjogZmFsc2UpIHtcbiAgJHNpZGU6IGplZXQtZ2V0LWxheW91dC1kaXJlY3Rpb24oKTtcbiAgJG9wcG9zaXRlLXNpZGU6IGplZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRzaWRlKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgY2xlYXI6IGJvdGg7XG4gIGZsb2F0OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiB7XG4gICAgbGVmdDogIGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH07XG5cbiAgJjpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLSN7JHNpZGV9OiBhdXRvO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tI3skb3Bwb3NpdGUtc2lkZX06IGF1dG87XG4gIH1cblxuICBAaWYgJHBhZCAhPSAwIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAgJHBhZDtcbiAgICAgIHJpZ2h0OiAkcGFkO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJGFsaWduIGlzIG5vdCBmYWxzZSkge1xuICAgIEBpZiBpbmRleChcImNlbnRlclwiIFwiY1wiLCAkYWxpZ24pIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9IEBlbHNlIGlmIGluZGV4KFwibGVmdFwiIFwibFwiLCAkYWxpZ24pIHtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfSBAZWxzZSBpZiBpbmRleChcInJpZ2h0XCIgXCJyXCIsICRhbGlnbikge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVW5zdGFjayBhbiBlbGVtZW50LlxuICovXG5AbWl4aW4gdW5zdGFjaygpIHtcbiAgJHNpZGU6IGplZXQtZ2V0LWxheW91dC1kaXJlY3Rpb24oKTtcbiAgJG9wcG9zaXRlLXNpZGU6IGplZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRzaWRlKTtcblxuICB0ZXh0LWFsaWduOiAkc2lkZTtcbiAgZGlzcGxheTogaW5saW5lO1xuICBjbGVhcjogbm9uZTtcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbjoge1xuICAgIGxlZnQ6ICAwO1xuICAgIHJpZ2h0OiAwO1xuICB9O1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi0jeyRzaWRlfTogMDtcbiAgfVxuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLSN7amVldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJHNpZGUpfTogMDtcbiAgfVxufVxuXG4vKipcbiAqIENlbnRlciBhbiBlbGVtZW50IG9uIGVpdGhlciBvciBib3RoIGF4ZXMuXG4gKiBAcmVxdWlyZXMgQSBwYXJlbnQgY29udGFpbmVyIHdpdGggcmVsYXRpdmUgcG9zaXRpb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gWyRkaXJlY3Rpb249Ym90aF0gLSBTcGVjaWZ5IHdoaWNoIGF4ZXMgdG8gY2VudGVyIHRoZSBlbGVtZW50IG9uLlxuICovXG5AbWl4aW4gYWxpZ24oJGRpcmVjdGlvbjogYm90aCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG5cbiAgQGlmIGluZGV4KFwiaG9yaXpvbnRhbFwiIFwiaFwiLCAkZGlyZWN0aW9uKSB7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfSBAZWxzZSBpZiBpbmRleChcInZlcnRpY2FsXCIgXCJ2XCIsICRkaXJlY3Rpb24pIHtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH0gQGVsc2Uge1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxufVxuXG4vKipcbiAqIEFwcGx5IGEgY2xlYXJmaXggdG8gYW4gZWxlbWVudC5cbiAqL1xuQG1peGluIGNmKCkge1xuICAqem9vbTogMTtcblxuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogdGFibGU7XG4gIH1cblxuICAmOmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIE5vcm1hbGl6ZS5zY3NzIHNldHRpbmdzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBJbmNsdWRlcyBsZWdhY3kgYnJvd3NlciBzdXBwb3J0IElFNi83XG4gKlxuICogU2V0IHRvIGZhbHNlIGlmIHlvdSB3YW50IHRvIGRyb3Agc3VwcG9ydCBmb3IgSUU2IGFuZCBJRTdcbiAqL1xuXG4kbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8qIEJhc2VcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAqIDIuIFByZXZlbnQgaU9TIGFuZCBJRSB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIGRldmljZSBvcmllbnRhdGlvbiBjaGFuZ2UsXG4gKiAgICB3aXRob3V0IGRpc2FibGluZyB1c2VyIHpvb20uXG4gKiAzLiBDb3JyZWN0cyB0ZXh0IHJlc2l6aW5nIG9kZGx5IGluIElFIDYvNyB3aGVuIGJvZHkgYGZvbnQtc2l6ZWAgaXMgc2V0IHVzaW5nXG4gKiAgYGVtYCB1bml0cy5cbiAqL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIEBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG4gICAgKmZvbnQtc2l6ZTogMTAwJTsgLyogMyAqL1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuICovXG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGFueSBIVE1MNSBlbGVtZW50IGluIElFIDgvOS5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4gKiBhbmQgRmlyZWZveC5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgbWFpbmAgaW4gSUUgMTEuXG4gKi9cblxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDYvNy84LzkgYW5kIEZpcmVmb3ggMy5cbiAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG4gIEBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG4gICAgKmRpc3BsYXk6IGlubGluZTtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG4vKipcbiAqIFByZXZlbnRzIG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbiAqL1xuXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICBkaXNwbGF5OiBub25lO1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxuICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuICovXG5cbltoaWRkZW5dLFxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBjb2xvciBmcm9tIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qKlxuICogSW1wcm92ZSByZWFkYWJpbGl0eSBvZiBmb2N1c2VkIGVsZW1lbnRzIHdoZW4gdGhleSBhcmUgYWxzbyBpbiBhblxuICogYWN0aXZlL2hvdmVyIHN0YXRlLlxuICovXG5cbmEge1xuICAmOmFjdGl2ZSwgJjpob3ZlciB7XG4gICAgb3V0bGluZTogMDtcbiAgfTtcbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG5AaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICBibG9ja3F1b3RlIHtcbiAgICBtYXJnaW46IDFlbSA0MHB4O1xuICB9XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHZhcmlhYmxlIGBoMWAgZm9udC1zaXplIGFuZCBtYXJnaW4gd2l0aGluIGBzZWN0aW9uYCBhbmQgYGFydGljbGVgXG4gKiBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cblxuQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgbWFyZ2luOiAwLjgzZW0gMDtcbiAgfVxuXG4gIGgzIHtcbiAgICBmb250LXNpemU6IDEuMTdlbTtcbiAgICBtYXJnaW46IDFlbSAwO1xuICB9XG5cbiAgaDQge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIG1hcmdpbjogMS4zM2VtIDA7XG4gIH1cblxuICBoNSB7XG4gICAgZm9udC1zaXplOiAwLjgzZW07XG4gICAgbWFyZ2luOiAxLjY3ZW0gMDtcbiAgfVxuXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDAuNjdlbTtcbiAgICBtYXJnaW46IDIuMzNlbSAwO1xuICB9XG59XG5cbi8qKlxuICogQWRkcmVzc2VzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LlxuICovXG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kOiAjZmYwO1xuICBjb2xvcjogIzAwMDtcbn1cblxuQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcblxuICAvKipcbiAgICogQWRkcmVzc2VzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIElFIDYvNy5cbiAgICovXG5cbiAgcCxcbiAgcHJlIHtcbiAgICAqbWFyZ2luOiAxZW0gMDtcbiAgfVxuXG4gIC8qXG4gICAqIEFkZHJlc3NlcyBDU1MgcXVvdGVzIG5vdCBzdXBwb3J0ZWQgaW4gSUUgNi83LlxuICAgKi9cblxuICBxIHtcbiAgICAqcXVvdGVzOiBub25lO1xuICB9XG5cbiAgLypcbiAgICogQWRkcmVzc2VzIGBxdW90ZXNgIHByb3BlcnR5IG5vdCBzdXBwb3J0ZWQgaW4gU2FmYXJpIDQuXG4gICAqL1xuXG4gIHE6YmVmb3JlLFxuICBxOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBjb250ZW50OiBub25lO1xuICB9XG59XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcblxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICBMaXN0c1xuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gIC8qXG4gICAqIEFkZHJlc3NlcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBJRSA2LzcuXG4gICAqL1xuXG4gIGRsLFxuICBtZW51LFxuICBvbCxcbiAgdWwge1xuICAgICptYXJnaW46IDFlbSAwO1xuICB9XG5cbiAgZGQge1xuICAgICptYXJnaW46IDAgMCAwIDQwcHg7XG4gIH1cblxuICAvKlxuICAgKiBBZGRyZXNzZXMgcGFkZGluZ3Mgc2V0IGRpZmZlcmVudGx5IGluIElFIDYvNy5cbiAgICovXG5cbiAgbWVudSxcbiAgb2wsXG4gIHVsIHtcbiAgICAqcGFkZGluZzogMCAwIDAgNDBweDtcbiAgfVxuXG4gIC8qXG4gICAqIENvcnJlY3RzIGxpc3QgaW1hZ2VzIGhhbmRsZWQgaW5jb3JyZWN0bHkgaW4gSUUgNy5cbiAgICovXG5cbiAgbmF2IHVsLFxuICBuYXYgb2wge1xuICAgICpsaXN0LXN0eWxlOiBub25lO1xuICAgICpsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICB9XG5cbn1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS8xMC5cbiAqIDIuIEltcHJvdmVzIGltYWdlIHF1YWxpdHkgd2hlbiBzY2FsZWQgaW4gSUUgNy5cbiAqL1xuXG5pbWcge1xuICBib3JkZXI6IDA7XG4gIEBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG4gICAgKi1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IC8qIDIgKi9cbiAgfVxufVxuXG4vKipcbiAqIENvcnJlY3Qgb3ZlcmZsb3cgbm90IGhpZGRlbiBpbiBJRSA5LzEwLzExLlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaS5cbiAqL1xuXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4O1xufVxuXG4vKipcbiAqIEFkZHJlc3MgZGlmZmVyZW5jZXMgYmV0d2VlbiBGaXJlZm94IGFuZCBvdGhlciBicm93c2Vycy5cbiAqL1xuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQ29udGFpbiBvdmVyZmxvdyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxucHJlIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLlxuICogQ29ycmVjdCBmb250IGZhbWlseSBzZXQgb2RkbHkgaW4gSUUgNiwgU2FmYXJpIDQvNSwgYW5kIENocm9tZS5cbiAqL1xuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcbiAgICBfZm9udC1mYW1pbHk6ICdjb3VyaWVyIG5ldycsIG1vbm9zcGFjZTtcbiAgfVxuICBmb250LXNpemU6IDFlbTtcbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogS25vd24gbGltaXRhdGlvbjogYnkgZGVmYXVsdCwgQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWCBhbGxvdyB2ZXJ5IGxpbWl0ZWRcbiAqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cbiAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cbiAqICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqIDQuIEltcHJvdmVzIGFwcGVhcmFuY2UgYW5kIGNvbnNpc3RlbmN5IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBjb2xvcjogaW5oZXJpdDsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG4gIG1hcmdpbjogMDsgLyogMyAqL1xuICBAaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgLyogMyAqL1xuICAgICp2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiAzICovXG4gIH1cbn1cblxuLyoqXG4gKiBBZGRyZXNzIGBvdmVyZmxvd2Agc2V0IHRvIGBoaWRkZW5gIGluIElFIDgvOS8xMC8xMS5cbiAqL1xuXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBgdGV4dC10cmFuc2Zvcm1gIGluaGVyaXRhbmNlIGZvciBgYnV0dG9uYCBhbmQgYHNlbGVjdGAuXG4gKiBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxuICogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS5cbiAqIENvcnJlY3QgYHNlbGVjdGAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxuICogIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxuICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuICogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcbiAqICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4gKiA0LiBSZW1vdmVzIGlubmVyIHNwYWNpbmcgaW4gSUUgNyB3aXRob3V0IGFmZmVjdGluZyBub3JtYWwgdGV4dCBpbnB1dHMuXG4gKiAgS25vd24gaXNzdWU6IGlubmVyIHNwYWNpbmcgcmVtYWlucyBpbiBJRSA2LlxuICovXG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG4gIGN1cnNvcjogcG9pbnRlcjsgLyogMyAqL1xuICBAaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICAgICpvdmVyZmxvdzogdmlzaWJsZTsgIC8qIDQgKi9cbiAgfVxufVxuXG4vKipcbiAqIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuXG4gKi9cblxuYnV0dG9uW2Rpc2FibGVkXSxcbmh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXG4gKiB0aGUgVUEgc3R5bGVzaGVldC5cbiAqL1xuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi8qKlxuICogMS4gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS8xMC5cbiAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXG4gKiAgS25vd24gaXNzdWU6IGV4Y2VzcyBwYWRkaW5nIHJlbWFpbnMgaW4gSUUgNi5cbiAqL1xuXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbiAgQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcbiAgICAqaGVpZ2h0OiAxM3B4OyAvKiAzICovXG4gICAgKndpZHRoOiAxM3B4OyAvKiAzICovXG4gIH1cbn1cblxuLyoqXG4gKiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuICogYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGVcbiAqIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbiAqL1xuXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSBhbmQgQ2hyb21lIG9uIE9TIFguXG4gKiBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzXG4gKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXG4gKi9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLlxuICovXG5cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgbWFyZ2luOiAwIDJweDtcbiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGNvbG9yYCBub3QgYmVpbmcgaW5oZXJpdGVkIGluIElFIDgvOS8xMC8xMS5cbiAqIDIuIFJlbW92ZSBwYWRkaW5nIHNvIHBlb3BsZSBhcmVuJ3QgY2F1Z2h0IG91dCBpZiB0aGV5IHplcm8gb3V0IGZpZWxkc2V0cy5cbiAqIDMuIENvcnJlY3RzIHRleHQgbm90IHdyYXBwaW5nIGluIEZpcmVmb3ggMy5cbiAqIDQuIENvcnJlY3RzIGFsaWdubWVudCBkaXNwbGF5ZWQgb2RkbHkgaW4gSUUgNi83LlxuICovXG5cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG4gIEBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMyAqL1xuICAgICptYXJnaW4tbGVmdDogLTdweDsgLyogNCAqL1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS8xMC8xMS5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cbiAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICovXG5cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qIFRhYmxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXG4gKi9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7XG59IiwiKixcbio6OmFmdGVyLFxuKjo6YmVmb3JlIHtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuaW1nIHtcblx0bWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufSIsIlxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiAnRm9udGluIFNtYWxsIENhcHMnO1xyXG4gICAgc3JjOiB1cmwoJy4uL2ZvbnRzL2ZvbnRpbi1zbWFsbGNhcHMtd2ViZm9udC5lb3QnKTtcclxuICAgIHNyYzogbG9jYWwoJ0ZvbnRpbiBTbWFsbCBDYXBzJyksIHVybCgnLi4vZm9udHMvZm9udGluLXNtYWxsY2Fwcy13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuLi9mb250cy9mb250aW4tc21hbGxjYXBzLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLCB1cmwoJy4uL2ZvbnRzL2ZvbnRpbi1zbWFsbGNhcHMtd2ViZm9udC5zdmcjd2ViZm9udDFXWW9tTmRNJykgZm9ybWF0KCdzdmcnKTtcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gICAgZm9udC1mYW1pbHk6ICdGb250aW4nO1xyXG4gICAgc3JjOiB1cmwoJy4uL2ZvbnRzL2ZvbnRpbi1yZWd1bGFyLXdlYmZvbnQuZW90Jyk7XHJcbiAgICBzcmM6IGxvY2FsKCdGb250aW4nKSwgdXJsKCcuLi9mb250cy9mb250aW4tcmVndWxhci13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuLi9mb250cy9mb250aW4tcmVndWxhci13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSwgdXJsKCcuLi9mb250cy9mb250aW4tcmVndWxhci13ZWJmb250LnN2ZyN3ZWJmb250b3NqYlpVaEUnKSBmb3JtYXQoJ3N2ZycpO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgICBmb250LWZhbWlseTogJ0ZvbnRpbic7XHJcbiAgICBzcmM6IHVybCgnLi4vZm9udHMvZm9udGluLWl0YWxpYy13ZWJmb250LmVvdCcpO1xyXG4gICAgc3JjOiBsb2NhbCgnRm9udGluJyksIHVybCgnLi4vZm9udHMvZm9udGluLWl0YWxpYy13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuLi9mb250cy9mb250aW4taXRhbGljLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLCB1cmwoJy4uL2ZvbnRzL2ZvbnRpbi1pdGFsaWMtd2ViZm9udC5zdmcjd2ViZm9udGtZNndCUWc2JykgZm9ybWF0KCdzdmcnKTtcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gICAgZm9udC1mYW1pbHk6ICdGb250aW4nO1xyXG4gICAgc3JjOiB1cmwoJy4uL2ZvbnRzL2ZvbnRpbi1ib2xkLXdlYmZvbnQuZW90Jyk7XHJcbiAgICBzcmM6IGxvY2FsKCdGb250aW4nKSwgdXJsKCcuLi9mb250cy9mb250aW4tYm9sZC13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuLi9mb250cy9mb250aW4tYm9sZC13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSwgdXJsKCcuLi9mb250cy9mb250aW4tYm9sZC13ZWJmb250LnN2ZyN3ZWJmb250NWt3UFBScXknKSBmb3JtYXQoJ3N2ZycpO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxuXHJcbiIsIi5jb250YWluZXIgeyBcblx0QGluY2x1ZGUgY2VudGVyKCk7XG5cdHBhZGRpbmc6IDAgMTBweDtcbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCgkZGVza3RvcCkge1xuXHQuY29sMy00IHtcblx0XHRAaW5jbHVkZSBjb2woMy80KTtcblx0fVxuXG5cdC5jb2wxLTQge1xuXHRcdEBpbmNsdWRlIGNvbCgxLzQpO1xuXHR9XG5cblx0LmNvbDEtMiB7XG5cdFx0QGluY2x1ZGUgY29sKDEvMik7XG5cdH1cblxuXHQubWFpbi1jb250ZW50IHtcblx0XHRAaW5jbHVkZSBjb2woOC8xMik7XG5cdFx0QGluY2x1ZGUgc2hpZnQoNC8xMik7XG5cdH1cblxuXHQuc2lkZS1iYXIge1xuXHRcdEBpbmNsdWRlIGNvbCgzLzEyKTtcblx0XHRAaW5jbHVkZSBzaGlmdCgtOC8xMik7XG5cdH1cbn0iLCJAaW1wb3J0ICdqZWV0L3Njc3MvamVldC9pbmRleC5zY3NzJztcbkBpbXBvcnQgJ25vcm1hbGl6ZS1zY3NzL19ub3JtYWxpemUuc2Nzcyc7XG5AaW1wb3J0ICdicmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2Nzcyc7XG5cbiRtYWluLWNvbG9yOiAjMmY2ZGI1O1xuJG1haW4tY29sb3ItbGlnaHRlbjogIzVkYTNjZTtcblxuJHNlY29uZC1jb2xvcjogIzQ5M2Y5OTtcbiRzZWNvbmQtY29sb3ItbGlnaHRlbjogIzdlNmNiMDtcblxuJHRoaXJkLWNvbG9yOiAjN2JjMTQyO1xuJHRoaXJkLWNvbG9yLWxpZ2h0ZW46ICNhNWQxNzI7XG5cbiRmb3VydGgtY29sb3I6ICNmNjkwMmI7XG4kZm91cnRoLWNvbG9yLWxpZ2h0ZW46ICNmY2JkNzQ7XG5cbiR0ZXh0LWNvbG9yOiAjMzMzO1xuXG4kbWVudS13aWR0aDogMjgwcHg7XG4kYW5pbWF0aW9uLXRpbWU6IC4zcztcblxuLy8gSmVldCBWYXJzXG4kamVldC1ndXR0ZXI6ICAgICAgIDMgICAgICAhZGVmYXVsdDtcbiRqZWV0LXBhcmVudC1maXJzdDogZmFsc2UgICFkZWZhdWx0O1xuJGplZXQtbWF4LXdpZHRoOiAgICAxMTgwcHg7XG5cbi8vIEJ5IFNrZWxldG9uIChtb2JpbGUtZmlyc3QpXG4kbW9iaWxlOiA0MDBweDtcbiRwaGFibGV0OiA1NTBweDtcbiR0YWJsZXQ6IDc1MHB4O1xuJGRlc2t0b3A6IDEwMDBweDtcbiRkZXNrdG9waGQ6IDEyMDBweDtcblxuLy8gQXRvbWljIENTU1xuQGltcG9ydCAnX2NvcmUvX2Jhc2Uuc2Nzcyc7XG5AaW1wb3J0ICdfY29yZS9fZm9udC5zY3NzJztcbkBpbXBvcnQgJ19jb3JlL19ncmlkLnNjc3MnO1xuQGltcG9ydCAnX2NvcmUvX2ljb21vb24uc2Nzcyc7XG5AaW1wb3J0ICdfY29yZS9fdXRpbHMuc2Nzcyc7XG5cbkBpbXBvcnQgJ2F0b21zL19mb290ZXIuc2Nzcyc7XG5AaW1wb3J0ICdhdG9tcy9fZm9ybXMuc2Nzcyc7XG5AaW1wb3J0ICdhdG9tcy9fbGlua3Muc2Nzcyc7XG5AaW1wb3J0ICdhdG9tcy9fbWFpbC1jb250YWN0LnNjc3MnO1xuQGltcG9ydCAnYXRvbXMvX21lbnUtdHJpZ2dlci5zY3NzJztcbkBpbXBvcnQgJ2F0b21zL190YWdzLnNjc3MnO1xuQGltcG9ydCAnYXRvbXMvX3R5cG9ncmFwaHkuc2Nzcyc7XG5cbkBpbXBvcnQgJ21vbGVjdWxlcy9fY2hhcnRzLnNjc3MnO1xuQGltcG9ydCAnbW9sZWN1bGVzL19jb2RlZGVzaWduLWFuaW1hdGlvbi5zY3NzJztcbkBpbXBvcnQgJ21vbGVjdWxlcy9fcG9ydGZvbGlvLWxpc3Quc2Nzcyc7XG5AaW1wb3J0ICdtb2xlY3VsZXMvX3BvcnRmb2xpby1tb2NrdXBzLnNjc3MnO1xuQGltcG9ydCAnbW9sZWN1bGVzL19zb2NpYWwuc2Nzcyc7XG5cbkBpbXBvcnQgJ29yZ2FuaXNtcy9faGVhZGVyLnNjc3MnO1xuQGltcG9ydCAnb3JnYW5pc21zL19uYXZpZ2F0aW9uLnNjc3MnO1xuXG5AaW1wb3J0ICd0ZW1wbGF0ZXMvX3BvcnRmb2xpby5zY3NzJztcbkBpbXBvcnQgJ3RlbXBsYXRlcy9fc2l0ZS5zY3NzJztcblxuLyogTm8gZmlsZXMgdG8gaW1wb3J0IGZvdW5kIGluIHBhZ2VzLy8qICovIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIiRpY29tb29uLWZvbnQtcGF0aDogXCIuLi9mb250c1wiICFkZWZhdWx0O1xuXG4kaWNvbi1saW5rLWV4dGVybmFsOiBcIlxcZTkxNFwiO1xuJGljb24tZW52ZWxvcGU6IFwiXFxlOTAxXCI7XG4kaWNvbi1zdGFyLWhhbGY6IFwiXFxlOTBmXCI7XG4kaWNvbi1zdGFyLWZ1bGw6IFwiXFxlOTEwXCI7XG4kaWNvbi1zdGFyLWVtcHR5OiBcIlxcZTkxMVwiO1xuJGljb24tcHJvZmlsZTogXCJcXGU5MDBcIjtcbiRpY29uLWJyaWVmY2FzZTogXCJcXGU5MDJcIjtcbiRpY29uLXR3aXR0ZXI6IFwiXFxlOTAzXCI7XG4kaWNvbi1kcmliYmJsZTogXCJcXGU5MDRcIjtcbiRpY29uLWdvb2dsZS1wbHVzOiBcIlxcZTkwNVwiO1xuJGljb24tZW1iZWQ6IFwiXFxlOTA2XCI7XG4kaWNvbi1waW50ZXJlc3Q6IFwiXFxlOTA3XCI7XG4kaWNvbi1iZWhhbmNlOiBcIlxcZTkwOFwiO1xuJGljb24teW91dHViZS1wbGF5OiBcIlxcZTkwYVwiO1xuJGljb24tbGlua2VkaW46IFwiXFxlOTBiXCI7XG4kaWNvbi1mYWNlYm9vazogXCJcXGU5MGNcIjtcbiRpY29uLWdpdGh1YjogXCJcXGU5MGRcIjtcbiRpY29uLWNvZGU6IFwiXFxlOTEyXCI7XG4kaWNvbi1kZXNpZ246IFwiXFxlOTEzXCI7XG4kaWNvbi1zdGFyLWZ1bGw6IFwiXFxlOTEwXCI7XG4kaWNvbi1zdGFyLWVtcHR5OiBcIlxcZTkxMVwiO1xuJGljb24tcHJvZmlsZTogXCJcXGU5MDBcIjtcbiRpY29uLWJyaWVmY2FzZTogXCJcXGU5MDJcIjtcbiRpY29uLXR3aXR0ZXI6IFwiXFxlOTAzXCI7XG4kaWNvbi1kcmliYmJsZTogXCJcXGU5MDRcIjtcbiRpY29uLWdvb2dsZS1wbHVzOiBcIlxcZTkwNVwiO1xuJGljb24tZW1iZWQ6IFwiXFxlOTA2XCI7XG4kaWNvbi1waW50ZXJlc3Q6IFwiXFxlOTA3XCI7XG4kaWNvbi1iZWhhbmNlOiBcIlxcZTkwOFwiO1xuJGljb24teW91dHViZS1wbGF5OiBcIlxcZTkwYVwiO1xuJGljb24tbGlua2VkaW46IFwiXFxlOTBiXCI7XG4kaWNvbi1mYWNlYm9vazogXCJcXGU5MGNcIjtcbiRpY29uLWdpdGh1YjogXCJcXGU5MGRcIjtcbiRpY29uLXlvdXR1YmU6IFwiXFxlOTA5XCI7XG4kaWNvbi1waW50ZXJlc3QtcDogXCJcXGU5MGVcIjtcblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdycmlvZ28nO1xuICAgIHNyYzogICAgdXJsKCcjeyRpY29tb29uLWZvbnQtcGF0aH0vcnJpb2dvLmVvdD9sbHJkd28nKTtcbiAgICBzcmM6ICAgIHVybCgnI3skaWNvbW9vbi1mb250LXBhdGh9L3JyaW9nby5lb3Q/bGxyZHdvI2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICB1cmwoJyN7JGljb21vb24tZm9udC1wYXRofS9ycmlvZ28udHRmP2xscmR3bycpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICAgICAgdXJsKCcjeyRpY29tb29uLWZvbnQtcGF0aH0vcnJpb2dvLndvZmY/bGxyZHdvJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgIHVybCgnI3skaWNvbW9vbi1mb250LXBhdGh9L3JyaW9nby5zdmc/bGxyZHdvI3JyaW9nbycpIGZvcm1hdCgnc3ZnJyk7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbltjbGFzc149XCJpY29uLVwiXSwgW2NsYXNzKj1cIiBpY29uLVwiXSB7XG4gICAgLyogdXNlICFpbXBvcnRhbnQgdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBicm93c2VyIGV4dGVuc2lvbnMgdGhhdCBjaGFuZ2UgZm9udHMgKi9cbiAgICBmb250LWZhbWlseTogJ3JyaW9nbycgIWltcG9ydGFudDtcbiAgICBzcGVhazogbm9uZTtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqL1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbi5pY29uLWxpbmstZXh0ZXJuYWwge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24tbGluay1leHRlcm5hbDtcbiAgICB9XG59XG4uaWNvbi1lbnZlbG9wZSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1lbnZlbG9wZTtcbiAgICB9XG59XG4uaWNvbi1zdGFyLWhhbGYge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24tc3Rhci1oYWxmO1xuICAgIH1cbn1cbi5pY29uLXN0YXItZnVsbCB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1zdGFyLWZ1bGw7XG4gICAgfVxufVxuLmljb24tc3Rhci1lbXB0eSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1zdGFyLWVtcHR5O1xuICAgIH1cbn1cbi5pY29uLXByb2ZpbGUge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24tcHJvZmlsZTtcbiAgICB9XG59XG4uaWNvbi1icmllZmNhc2Uge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24tYnJpZWZjYXNlO1xuICAgIH1cbn1cbi5pY29uLXR3aXR0ZXIge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24tdHdpdHRlcjtcbiAgICB9XG59XG4uaWNvbi1kcmliYmJsZSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1kcmliYmJsZTtcbiAgICB9XG59XG4uaWNvbi1nb29nbGUtcGx1cyB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1nb29nbGUtcGx1cztcbiAgICB9XG59XG4uaWNvbi1lbWJlZCB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1lbWJlZDtcbiAgICB9XG59XG4uaWNvbi1waW50ZXJlc3Qge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24tcGludGVyZXN0O1xuICAgIH1cbn1cbi5pY29uLWJlaGFuY2Uge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24tYmVoYW5jZTtcbiAgICB9XG59XG4uaWNvbi15b3V0dWJlLXBsYXkge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24teW91dHViZS1wbGF5O1xuICAgIH1cbn1cbi5pY29uLWxpbmtlZGluIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICRpY29uLWxpbmtlZGluO1xuICAgIH1cbn1cbi5pY29uLWZhY2Vib29rIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICRpY29uLWZhY2Vib29rO1xuICAgIH1cbn1cbi5pY29uLWdpdGh1YiB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1naXRodWI7XG4gICAgfVxufVxuLmljb24tY29kZSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1jb2RlO1xuICAgIH1cbn1cbi5pY29uLWRlc2lnbiB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1kZXNpZ247XG4gICAgfVxufVxuLmljb24tc3Rhci1mdWxsIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICRpY29uLXN0YXItZnVsbDtcbiAgICB9XG59XG4uaWNvbi1zdGFyLWVtcHR5IHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICRpY29uLXN0YXItZW1wdHk7XG4gICAgfVxufVxuLmljb24tcHJvZmlsZSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1wcm9maWxlO1xuICAgIH1cbn1cbi5pY29uLWJyaWVmY2FzZSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1icmllZmNhc2U7XG4gICAgfVxufVxuLmljb24tdHdpdHRlciB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi10d2l0dGVyO1xuICAgIH1cbn1cbi5pY29uLWRyaWJiYmxlIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICRpY29uLWRyaWJiYmxlO1xuICAgIH1cbn1cbi5pY29uLWdvb2dsZS1wbHVzIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICRpY29uLWdvb2dsZS1wbHVzO1xuICAgIH1cbn1cbi5pY29uLWVtYmVkIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICRpY29uLWVtYmVkO1xuICAgIH1cbn1cbi5pY29uLXBpbnRlcmVzdCB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1waW50ZXJlc3Q7XG4gICAgfVxufVxuLmljb24tYmVoYW5jZSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi1iZWhhbmNlO1xuICAgIH1cbn1cbi5pY29uLXlvdXR1YmUtcGxheSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkaWNvbi15b3V0dWJlLXBsYXk7XG4gICAgfVxufVxuLmljb24tbGlua2VkaW4ge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24tbGlua2VkaW47XG4gICAgfVxufVxuLmljb24tZmFjZWJvb2sge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24tZmFjZWJvb2s7XG4gICAgfVxufVxuLmljb24tZ2l0aHViIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICRpY29uLWdpdGh1YjtcbiAgICB9XG59XG4uaWNvbi15b3V0dWJlIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICRpY29uLXlvdXR1YmU7XG4gICAgfVxufVxuLmljb24tcGludGVyZXN0LXAge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJGljb24tcGludGVyZXN0LXA7XG4gICAgfVxufVxuXG4iLCIuc3Itb25seSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IC0xcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjbGlwOiByZWN0KDAsMCwwLDApO1xuICAgIGJvcmRlcjogMDtcbn1cblxuLm1vYmlsZS1vbmx5IHtcblx0QGluY2x1ZGUgYnJlYWtwb2ludCgkcGhhYmxldCkge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cbn1cblxuLm5vLW1vYmlsZSB7XG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQobWF4LXdpZHRoICRwaGFibGV0KSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufVxuXG4uc3R1Y2sge1xuICBwb3NpdGlvbjpmaXhlZDtcbiAgdG9wOjA7XG59XG4iLCIuZm9vdGVyIHtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxufVxyXG4iLCJpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSB7XG5cdGJhY2tncm91bmQ6ICNFRUU7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNBRkFGQUY7XG5cdHBhZGRpbmc6IDE1cHggMTBweDtcblx0d2lkdGg6IDEwMCU7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXG5cdCYuZXJyb3Ige1xuXHRcdGJvcmRlci1jb2xvcjogcmVkO1xuXHRcdGJhY2tncm91bmQ6ICNmZmNlY2U7XG5cdH1cbn1cblxudGV4dGFyZWEge1xuXHRtaW4taGVpZ2h0OiAxNTBweDtcbn1cblxuYnV0dG9uLCBpbnB1dFt0eXBlPXN1Ym1pdF0sIGJ1dHRvblt0eXBlPXN1Ym1pdF0ge1xuXHRwYWRkaW5nOiAxNXB4IDIwcHg7XG5cdGJvcmRlcjogbm9uZTtcblx0YmFja2dyb3VuZDogJG1haW4tY29sb3I7XG5cdGNvbG9yOiAjRkZGO1xuXHR3aWR0aDogMTAwJTtcblx0Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCBzYW5zLXNlcmlmO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRmb250LXNpemU6IDEuMmVtO1xufVxuXG5mb3JtIC5maWVsZCB7XG5cdG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbmxhYmVsLmVycm9yIHtcblx0Y29sb3I6IHJlZDtcbn1cbiIsImEge1xuXHRjb2xvcjogJG1haW4tY29sb3I7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuXHQmOmhvdmVyIHtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0fVxufSIsIi5tYWlsLWNvbnRhY3Qge1xyXG4gICAgZm9udC1zaXplOiAxLjZlbTtcclxuXHJcbiAgICBhIHtcclxuICAgICAgICBjb2xvcjogZ3JheTtcclxuICAgIH1cclxufVxyXG5cclxuLmljb24tZW52ZWxvcGUge1xyXG4gICAgY29sb3I6IGdyYXk7XHJcbiAgICBmb250LXNpemU6IDFlbTtcclxuICAgIHBhZGRpbmc6IDdweDtcclxufVxyXG5cclxuXHJcbiNjb250YXRvLXBhZ2Uge1xyXG4gICAgaDIge1xyXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgc2Fucy1zZXJpZjtcclxuICAgICAgICBmb250LXdlaWdodDogMjAwO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogM2VtO1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcbn1cclxuIiwiLm1lbnUtdHJpZ2dlciB7XG4gICAgLy9wb3NpdGlvbjogZml4ZWQ7XG4gICAgLy90b3A6IDE4cHg7XG4gICAgLy9yaWdodDogNSU7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMjBweDtcbiAgICByaWdodDogMjBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgei1pbmRleDogNDAwO1xuICAgIC8qIGltYWdlIHJlcGxhY2VtZW50ICovXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LWluZGVudDogMTAwJTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIC8vYmFja2dyb3VuZDogI0NDQztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCAkcGhhYmxldCApIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAubWVudS1pY29uIHtcbiAgICAgICAgLyogaWNvbiBjcmVhdGVkIGluIENTUyAqL1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGJvdHRvbTogYXV0bztcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiAyNXB4O1xuICAgICAgICBoZWlnaHQ6IDRweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgei1pbmRleDogMTA7XG5cbiAgICAgICAgJjo6YmVmb3JlLCAmOjphZnRlciB7XG4gICAgICAgICAgICAvKiB1cHBlciBhbmQgbG93ZXIgbGluZXMgb2YgdGhlIG1lbnUgaWNvbiAqL1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkYW5pbWF0aW9uLXRpbWU7XG4gICAgICAgIH1cbiAgICAgXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG4gICAgICAgICBcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5hdi1vcGVuZWQgJiB7XG4gICAgICAgIC5tZW51LWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSgtNDVkZWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnRhZyB7XHJcbiAgICAmLnRhZy1waHAge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICM4ODkyYmY7XHJcbiAgICAgICAgY29sb3I6IGxpZ2h0ZW4oIzg4OTJiZiwgMzAlKTtcclxuICAgIH1cclxuXHJcbiAgICAmLnRhZy1jb2RlLWlnbml0ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNkZDQ4MTQ7XHJcbiAgICAgICAgY29sb3I6IGxpZ2h0ZW4oI2RkNDgxNCwgMzAlKTtcclxuICAgIH1cclxuXHJcbiAgICAmLnRhZy1odG1sIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZTQ0ZDI2O1xyXG4gICAgICAgIGNvbG9yOiBsaWdodGVuKCNlNDRkMjYsIDMwJSk7XHJcbiAgICB9XHJcblxyXG4gICAgJi50YWctY3NzIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjMTU3MmI2O1xyXG4gICAgICAgIGNvbG9yOiBsaWdodGVuKCMxNTcyYjYsIDMwJSk7XHJcbiAgICB9XHJcblxyXG4gICAgJi50YWctcGhvdG9zaG9wIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjM2Y4ZGRmO1xyXG4gICAgICAgIGNvbG9yOiBsaWdodGVuKCMzZjhkZGYsIDMwJSk7XHJcbiAgICB9XHJcblxyXG4gICAgJi50YWctaWxsdXN0cmF0b3Ige1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZGFlMzc7XHJcbiAgICAgICAgY29sb3I6IGxpZ2h0ZW4oI2ZkYWUzNywgMzAlKTtcclxuICAgIH1cclxuXHJcbiAgICAmLnRhZy13b3JkcHJlc3Mge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICMyMTc1OWE7XHJcbiAgICAgICAgY29sb3I6IGxpZ2h0ZW4oIzIxNzU5YSwgMzAlKTtcclxuICAgIH1cclxuXHJcbiAgICAmLnRhZy1zYXNzIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjYzY1MzhjO1xyXG4gICAgICAgIGNvbG9yOiBsaWdodGVuKCNjNjUzOGMsIDMwJSk7XHJcbiAgICB9XHJcblxyXG4gICAgJi50YWctamF2YXNjcmlwdCB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2Y3ZGYxZTtcclxuICAgICAgICBjb2xvcjogZGFya2VuKCNmN2RmMWUsIDMwJSk7XHJcbiAgICB9XHJcblxyXG4gICAgJi50YWctaW5kZXNpZ24ge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZjNkOTA7XHJcbiAgICAgICAgY29sb3I6IGxpZ2h0ZW4oI2ZmM2Q5MCwgMzAlKTtcclxuICAgIH1cclxufVxyXG4iLCJib2R5IHtcblx0Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCBzYW5zLXNlcmlmO1xuXHRjb2xvcjogJHRleHQtY29sb3I7XG5cdGZvbnQtc2l6ZTogLjllbTtcbn1cblxuaDEsIGgyLCBoMyxoNCwgaDUsIGg2LCBidXR0b24sIGlucHV0W3R5cGU9c3VibWl0XSB7XG5cdGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zIENvbmRlbnNlZCcsIHNhbnMtc2VyaWY7XG5cdGNvbG9yOiAkdGV4dC1jb2xvcjtcbn1cblxuaDEge1xuXHRmb250LWZhbWlseTogJ0ZvbnRpbicsIHNhbnMtc2VyaWY7XG5cdGZvbnQtc2l6ZTogNmVtO1xuXHRsZXR0ZXItc3BhY2luZzogLTNweDtcblxuXHQmOmFmdGVyIHtcblx0XHRjb250ZW50OiBcIiBcIjtcblx0XHRoZWlnaHQ6IDNweDtcblx0XHR3aWR0aDogMTQwcHg7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0bWFyZ2luLXRvcDogLTVweDtcblx0XHRiYWNrZ3JvdW5kOiAkbWFpbi1jb2xvcjtcblx0fVxufVxuXG5wLCBsaSB7XG5cdGxpbmUtaGVpZ2h0OiAxLjZlbTtcbn1cblxucCB7XG5cdG1hcmdpbi1ib3R0b206IDEuNmVtO1xufVxuIiwiLmNoYXJ0cy1sYW5ncyB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAuY2hhcnQge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHJlZDtcclxuICAgICAgICB3aWR0aDogNjBweDtcclxuICAgICAgICBtYXJnaW46IDAgYXV0bztcclxuICAgICAgICB6LWluZGV4OiAxMDtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgcmlnaHQ6IC01cHg7XHJcbiAgICAgICAgdG9wOiAtNXB4O1xyXG5cclxuICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgY29udGVudDogXCIgXCI7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjRkZGO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICByaWdodDogNXB4O1xyXG4gICAgICAgICAgICB0b3A6IDVweDtcclxuICAgICAgICAgICAgei1pbmRleDogMTtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGkge1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgICAgIGhlaWdodDogMjAwcHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuXHJcbiAgICAgICAgJHBlcmNlbnRhZ2VzOiA5NSA5NSA3MCA4MCA5NSA4MCA3MCA4MDtcclxuICAgICAgICAkY29sb3JzOiAjZWY2NTJhICMxNTcyYjYgI2M2NTM4YyAjZmZiNjE1ICMwNzY5YWQgIzg4OTJiZiAjZjQ2NDVmICM3MTllNDA7XHJcblxyXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRwZXJjZW50YWdlcykge1xyXG4gICAgICAgICAgICAkcDogbnRoKCRwZXJjZW50YWdlcywgJGkpO1xyXG4gICAgICAgICAgICAmOm50aC1jaGlsZCgjeyRpfSkgLmNoYXJ0IHtcclxuICAgICAgICAgICAgICAgICY6YWZ0ZXIgeyBjb250ZW50OiAnI3skcH0lJyB9O1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAjeyRwfSU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBlYWNoICRjb2xvciBpbiAkY29sb3JzIHtcclxuICAgICAgICAgICAgJGk6IGluZGV4KCRjb2xvcnMsICRjb2xvcik7XHJcbiAgICAgICAgICAgICY6bnRoLWNoaWxkKCN7JGl9KSAuY2hhcnQge1xyXG4gICAgICAgICAgICAgICAgJjphZnRlciB7IGJhY2tncm91bmQ6ICRjb2xvciB9O1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogZGFya2VuKCAkY29sb3IsIDE1JSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi5jaGFydC1zb2Z0d2FyZXMge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAwO1xyXG5cclxuICAgIGxpIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIG1heC13aWR0aDogMzIlO1xyXG5cclxuICAgICAgICAkY29sb3JzOiAjMzljNGZiICNmZjcwMWMgI2ZmM2I5MSAjZGI3Y2ZmICNjYTlkZmY7XHJcblxyXG4gICAgICAgIEBlYWNoICRjb2xvciBpbiAkY29sb3JzIHtcclxuICAgICAgICAgICAgJGk6IGluZGV4KCRjb2xvcnMsICRjb2xvcik7XHJcbiAgICAgICAgICAgICY6bnRoLWNoaWxkKCN7JGl9KSB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogZGFya2VuKCAkY29sb3IsIDI1JSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiQGtleWZyYW1lcyBkYXNoIHtcclxuICAgIDAlIHtcclxuICAgICAgICBzdHJva2UtZGFzaG9mZnNldDogMTAwMDtcclxuICAgIH1cclxuXHJcbiAgICA3NSUge1xyXG4gICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAzMDA7XHJcbiAgICAgICAgZmlsbDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgc3Ryb2tlOiAjMDAwMDAwO1xyXG4gICAgfVxyXG5cclxuICAgIDEwMCUge1xyXG4gICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAzMDA7XHJcbiAgICAgICAgc3Ryb2tlOiB0cmFuc3BhcmVudDtcclxuICAgICAgICBmaWxsOiAjRkZGO1xyXG4gICAgfVxyXG59XHJcblxyXG4jaG9tZS1wYWdlIHtcclxuICAgIHBhdGgsIHBvbHlnb24ge1xyXG4gICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMDA7XHJcbiAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDEwMDA7XHJcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGRhc2g7XHJcbiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxMHM7XHJcbiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xyXG4gICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xyXG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMnM7XHJcbiAgICB9XHJcbn1cclxuIiwiQGtleWZyYW1lcyBmYWRlIHtcclxuICAgIGZyb20ge1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRvIHtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxufVxyXG5cclxuLnBvcnRmb2xpby1saXN0IHtcclxuXHRkaXNwbGF5OiBmbGV4O1xyXG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRmbGV4LXdyYXA6IHdyYXA7XHJcblx0cGFkZGluZy1sZWZ0OiAwO1xyXG5cclxuXHRoMiB7XHJcblx0XHRmb250LWZhbWlseTogJ0ZvbnRpbicsIHNhbnMtc2VyaWY7XHJcblx0fVxyXG5cclxuXHRhcnRpY2xlIHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcclxuXHRcdG1hcmdpbjogMCBhdXRvO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogNDBweDtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cclxuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJHBoYWJsZXQpIHtcclxuXHRcdFx0bWFyZ2luLWxlZnQ6IDA7XHJcblx0XHRcdG1hcmdpbi1yaWdodDogMDtcclxuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHRcdFx0d2lkdGg6IGF1dG87XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhIHtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHJcblx0XHRwYWRkaW5nOiAxMHB4O1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgIzMzMztcclxuXHRcdFxyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xyXG5cclxuXHRcdG1heC13aWR0aDogMzAwcHg7XHJcblxyXG5cdFx0d2lkdGg6IDUwJTtcclxuXHJcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRwaGFibGV0KSB7XHJcblx0XHRcdHdpZHRoOiBhdXRvO1xyXG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuXHRcdFx0JjphZnRlciB7XHJcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0XHRcdHRvcDogLTI1JTtcclxuXHRcdFx0XHRsZWZ0OiAtMjUlO1xyXG5cdFx0XHRcdGNvbnRlbnQ6IFwiIFwiO1xyXG5cdFx0XHRcdHdpZHRoOiA2MDBweDtcclxuXHRcdFx0XHRoZWlnaHQ6IDYwMHB4O1xyXG5cdFx0XHRcdHRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgdHJhbnNsYXRlWSg3NSUpO1xyXG5cdFx0XHRcdGJhY2tncm91bmQ6IHJnYmEoJGZvdXJ0aC1jb2xvci1saWdodGVuLCAwLjgpO1xyXG5cdFx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNHM7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdCY6YWZ0ZXIge1xyXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGVZKDApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC50aXRsZSB7XHJcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0dG9wOiA1MCU7XHJcblx0XHRcdGxlZnQ6IDEwMCU7XHJcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuXHRcdFx0ei1pbmRleDogMzAwO1xyXG5cdFx0XHRjb2xvcjogIzMzMztcclxuXHRcdFx0Zm9udC1zaXplOiAxLjVlbTtcclxuXHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcdHBhZGRpbmctbGVmdDogMTVweDtcclxuXHRcdFx0XHJcblxyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRwaGFibGV0KSB7XHRcclxuXHRcdFx0XHRsZWZ0OiA1MCU7XHJcblx0XHRcdFx0dG9wOiA1MCU7XHJcblx0XHRcdFx0d2lkdGg6IDgwJTtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG5cdFx0XHRcdD4gKiB7XHJcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpO1xyXG5cdFx0XHRcdFx0b3BhY2l0eTogMDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQuc2VydmljZS1pY29uIHtcclxuXHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHJcblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJHBoYWJsZXQpIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC5uYW1lIHtcclxuXHRcdFx0Zm9udC1zaXplOiAxLjJlbTtcclxuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IC0xcHg7XHJcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XHJcblxyXG5cdFx0XHQmOmFmdGVyIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LnRhZ2xpbmUge1xyXG5cdFx0XHRmb250LXN0eWxlOiBpdGFsaWM7XHJcblx0XHRcdGZvbnQtc2l6ZTogLjhlbTtcclxuXHRcdFx0bWFyZ2luLXRvcDogMDtcclxuXHRcdH1cclxuXHJcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRwaGFibGV0KSB7XHJcblx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdC50aXRsZSA+ICoge1xyXG5cdFx0XHRcdFx0YW5pbWF0aW9uLW5hbWU6IGZhZGU7XHJcblx0XHRcdFx0XHRhbmltYXRpb24tZHVyYXRpb246IC40cztcclxuXHRcdFx0XHRcdGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRAZm9yICRpIGZyb20gMSB0aHJvdWdoIDQge1xyXG5cdFx0XHRcdFx0XHQmOm50aC1jaGlsZCgjeyRpfSkgeyBhbmltYXRpb24tZGVsYXk6ICRpICogMC4xcyB9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmIC5jb2RlLXByb2plY3QgYTphZnRlciB7IGJhY2tncm91bmQ6IHJnYmEoJHRoaXJkLWNvbG9yLWxpZ2h0ZW4sIDAuOCkgfVxyXG5cclxuXHRpbWcge1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xyXG5cdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0fVxyXG59XHJcblxyXG4uc2VydmljZS1pY29uIHtcclxuXHRmb250LXNpemU6IDUwcHg7XHJcblx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcbiIsIi5tb2NrIHtcclxuXHRmaWx0ZXI6IGRyb3Atc2hhZG93KCA1cHggNXB4IDEwcHggcmdiYSgwLDAsMCwwLjYpICk7XHJcbn1cclxuXHJcbi5ib3hlZCB7XHJcblx0ZmlsdGVyOiBkcm9wLXNoYWRvdyggMnB4IDJweCA1cHggcmdiYSgwLDAsMCwwLjMpICk7XHJcblx0bWF4LXdpZHRoOiA5NiU7XHJcbn1cclxuXHJcbi5jaHJvbWUge1xyXG5cdCYtbW9jayB7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRtYXgtd2lkdGg6IDkwMHB4O1xyXG5cdFx0bWF4LWhlaWdodDogNTY0cHg7XHJcblx0fVxyXG5cclxuXHQmLXZpZXcge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dG9wOiAxOS41JTtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiA4MC41JTtcclxuXHRcdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0XHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4O1xyXG5cdFx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4O1xyXG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcblx0XHRpbWcge1xyXG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdHRvcDogMDtcclxuXHRcdFx0bGVmdDogMDtcclxuXHRcdFx0bWF4LXdpZHRoOiAxMDAlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ji10aXRsZSxcclxuXHQmLW5hdiB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRmb250LWZhbWlseTogQXJpYWwsIFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xyXG5cdFx0Zm9udC1zaXplOiAxMDAlO1xyXG5cdH1cclxuXHJcblx0Ji10aXRsZSB7XHJcblx0XHR0b3A6IDQuMiU7XHJcblx0XHRsZWZ0OiAzJTtcclxuXHRcdG1heC13aWR0aDogMTAlO1xyXG5cdFx0Y29sb3I6ICM4ODg7XHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuXHR9XHJcblxyXG5cdCYtbmF2IHtcclxuXHRcdHRvcDogMTIuNyU7XHJcblx0XHRsZWZ0OiAxOCU7XHJcblx0XHRjb2xvcjogIzAwMDtcclxuXHJcblx0XHQmOjpiZWZvcmUge1xyXG5cdFx0XHRjb250ZW50OiAnaHR0cDovL3d3dy4nO1xyXG5cdFx0XHRjb2xvcjogI0FBQTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi5pcGhvbmUge1xyXG5cdCYtbW9jayB7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRtYXgtd2lkdGg6IDI1MHB4O1xyXG5cdFx0bWF4LWhlaWdodDogNTI4cHg7XHJcblx0fVxyXG5cclxuXHQmLXZpZXcge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dG9wOiAxMSU7XHJcblx0XHRsZWZ0OiA0JTtcclxuXHRcdHdpZHRoOiA5MSU7XHJcblx0XHRoZWlnaHQ6IDc3JTtcclxuXHRcdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuXHRcdGltZyB7XHJcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0dG9wOiAwO1xyXG5cdFx0XHRsZWZ0OiAwO1xyXG5cdFx0XHRtYXgtd2lkdGg6IDEwMCU7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4uaXBob25lIHtcclxuXHQmLXdyYXAge1xyXG5cdFx0d2lkdGg6IDMwJTtcclxuXHRcdG1heC13aWR0aDogMjUwcHg7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0b3A6IDE1JTtcclxuXHRcdHJpZ2h0OiAwJTtcclxuXHR9XHJcbn1cclxuXHJcbi5jaHJvbWUge1xyXG5cdCYtd3JhcCB7XHJcblx0XHRAaW5jbHVkZSBjZW50ZXIoOTAwcHgpO1xyXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgwIDg5OXB4KSB7XHJcblx0XHRcdG1heC13aWR0aDogOTUlO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLy8gYW5pbWF0aW9uLW5hbWU6IG1vYjtcclxuLy8gYW5pbWF0aW9uLWR1cmF0aW9uOiA0cztcclxuLy8gYW5pbWF0aW9uLWRlbGF5OiAycztcclxuLy8gYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMjtcclxuXHJcbi8vIEBrZXlmcmFtZXMgbW9iIHtcclxuLy8gICAgIDAlICAge3RvcDogMDt9XHJcbi8vICAgICA1MCUgIHt0b3A6IC0zMDAwcHg7fVxyXG4vLyAgICAgMTAwJSB7dG9wOiAwO31cclxuLy8gfVxyXG5cclxuLypcclxuPGRpdiBjbGFzcz1cImNocm9tZS1tb2NrXCI+XHJcblx0PGltZyBzcmM9XCJjaHJvbWUtbW9jay5zdmdcIiBhbHQ9XCJcIiBjbGFzcz1cIm1vY2tcIj5cclxuXHQ8ZGl2IGNsYXNzPVwiY2hyb21lLXRpdGxlXCI+R29vZ2xlIEluYy48L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwiY2hyb21lLW5hdlwiPmdvb2dsZS5jb20uYnI8L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwiY2hyb21lLXZpZXdcIj5cclxuXHRcdDxpbWcgc3JjPVwiUjJBIEVuZ2VuaGFyaWEgMS5wbmdcIiBhbHQ9XCJcIj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJpcGhvbmUtbW9ja1wiPlxyXG5cdDxpbWcgc3JjPVwiaXBob25lLW1vY2suc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJtb2NrXCI+XHJcblx0PGRpdiBjbGFzcz1cImlwaG9uZS12aWV3XCI+XHJcblx0XHQ8aW1nIHNyYz1cIlIyQSBFbmdlbmhhcmlhIE1PQi5wbmdcIiBhbHQ9XCJcIj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiovXHJcbiIsIi5zb2NpYWwge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAwO1xyXG5cclxuICAgIGxpIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgZm9udC1zaXplOiAyNXB4O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcclxuXHJcbiAgICAgICAgYSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDYwcHg7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIC40cztcclxuICAgICAgICAgICAgY29sb3I6IGdyYXk7XHJcblxyXG4gICAgICAgICAgICAmOmFmdGVyLCAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAgICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgICAgICAgICAgY29udGVudDogXCIgXCI7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgZ3JheTtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAuNHM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiA4MCU7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDgwJTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJjpob3ZlcjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjRkZGO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAkc29jaWFsczogbGlua2VkaW4gZ2l0aHViIHR3aXR0ZXIgcGludGVyZXN0O1xyXG4gICAgICAgICAgICAkY29sb3JzOiAjMWE4NGJjICMwMDAgIzFkYTFmMiAjZDAxZDE1O1xyXG5cclxuICAgICAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHNvY2lhbHMpIHtcclxuICAgICAgICAgICAgICAgICRzb2NpYWw6ICBudGgoJHNvY2lhbHMsICRpKTtcclxuICAgICAgICAgICAgICAgICRjb2xvcjogbnRoKCRjb2xvcnMsICRpKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJi5zb2NpYWwtI3skc29jaWFsfSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzcGFuIHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiLnNpdGUtaGVhZGVyIHtcblx0cGFkZGluZzogMTBweCAwO1xuXHR0cmFuc2l0aW9uOiAuM3MgYWxsO1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdHdpZHRoOiAxMDAlO1xuXHR6LWluZGV4OiAyMDA7XG5cdEBpbmNsdWRlIGNmKCk7XG5cblx0LmNvbnRhaW5lciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR9XG5cblx0Ji5hY3RpdmUge1xuXHRcdC8vdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTkwJSwwKTtcblx0fVxufVxuXG4udG9wLWJhci1iZyB7XG5cdGJhY2tncm91bmQ6IGRhcmtlbigkbWFpbi1jb2xvciwgNjAlKTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCUgMCU7XG5cdHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpO1xuXHR0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuXHR0cmFuc2l0aW9uOiBhbGwgMXM7XG5cblxuXHQuc3RpY2t5ICYge1xuXHRcdGJhY2tncm91bmQ6ICRtYWluLWNvbG9yO1xuXHRcdHRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTtcblx0fVxufVxuXG4uYnJhbmQge1xuXHRtYXgtd2lkdGg6IDIyMHB4O1xuXG5cdGEge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogNTBweDtcblx0fVxuXG5cdGltZyB7XG5cdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAxcztcblx0fVxuXHRcblx0LnN0aWNreSAmIHtcblx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy9zdmcvbG9nb3RpcG8uc3ZnP2M9ZmZmJykgbGVmdCB0b3Agbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwJTtcblx0XHRcblx0XHRpbWcge1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHR9XG5cdH1cblx0XG59XG4iLCIubWFpbi1uYXYge1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdHRvcDogNTAlO1xuXHRsZWZ0OiA1MCU7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlKDIwMCUsIC01MCUpO1xuXHR6LWluZGV4OiAzNDA7XG5cdFxuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHdpZHRoOiAkbWVudS13aWR0aDtcblx0cGFkZGluZzogMTBweDtcblx0dHJhbnNpdGlvbjogdHJhbnNmb3JtICRhbmltYXRpb24tdGltZTtcblxuXHQubmF2LW9wZW5lZCAmIHtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblx0fVxuXG5cdHVsIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRwYWRkaW5nOiAwIDE1cHg7XG5cdH1cblxuXHRhIHtcblx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGNvbG9yOiAjRkZGO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0dHJhbnNpdGlvbjogY29sb3IgMXM7XG5cblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRwaGFibGV0KSB7XG5cdFx0XHRjb2xvcjogJG1haW4tY29sb3I7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0fVxuXG5cdFx0LnN0aWNreSAmIHtcblx0XHRcdHRyYW5zaXRpb246IC4zcyBhbGw7XG5cdFx0XHRjb2xvcjogI0ZGRjtcblx0XHR9XG5cdH1cblxuXHRsaSB7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMzNTY3QUY7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHQmOmxhc3Qtb2YtdHlwZSB7XG5cdFx0XHRib3JkZXItYm90dG9tOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQoJHBoYWJsZXQpIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0cGFkZGluZzogMDtcblx0XHRwYWRkaW5nLXRvcDogNXB4O1xuXHRcdHRyYW5zZm9ybTogbm9uZTtcblx0XHR3aWR0aDogYXV0bztcblxuXHRcdHVsIHtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0fVxuXG5cdFx0bGkge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDIwcHg7XG5cdFx0XHRib3JkZXItYm90dG9tOiBub25lO1xuXHRcdH1cblx0fVxufVxuXG5ib2R5ID4gaGVhZGVyLFxuYm9keSA+IC5jb250YWluZXIge1xuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJGFuaW1hdGlvbi10aW1lO1xufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KCAkbW9iaWxlICkge1xuXHRib2R5Lm5hdi1vcGVuZWQgPiBoZWFkZXIsXG5cdGJvZHkubmF2LW9wZW5lZCA+IC5jb250YWluZXIge1xuXHRcdFxuXHRcdC8vIENoYW5nZSB0aGUgYW5pbWF0aW9uIHBvc2l0aW9uIG9mIG1lbnVcblx0XHQvL3RyYW5zZm9ybTogdHJhbnNsYXRlWCgkbWVudS13aWR0aCAqIGlmKCRtZW51LXBvc2l0aW9uID09IHJpZ2h0LCAtMSwgMSkpO1xuXHR9XG59XG5cbi5tZW51LW92ZXJsYXkge1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdHJpZ2h0OiAxMHB4O1xuXHR0b3A6IDEwcHg7XG5cdHotaW5kZXg6IDMwMDtcblx0YmFja2dyb3VuZDogIzNGQUNFMjtcblx0d2lkdGg6IDUwcHg7XG5cdGhlaWdodDogNTBweDtcblx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHR0cmFuc2Zvcm06IHNjYWxlKDEpO1xuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjJzO1xuXG5cdC5uYXYtb3BlbmVkICYge1xuXHRcdHRyYW5zZm9ybTogc2NhbGUoNTApO1xuXHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNXM7XG5cdH1cblxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRwaGFibGV0KXtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59XG4iLCIucG9ydGZvbGlvLXdyYXAge1xyXG4gICAgYmFja2dyb3VuZDogIzAxOGJkMztcclxuICAgIGNvbG9yOiAjRkZGO1xyXG4gICAgXHJcbiAgICBhIHtcclxuICAgICAgICBjb2xvcjogI0ZGRjtcclxuICAgIH1cclxuXHJcbiAgICAuaW52ZXJzZSAmIHtcclxuICAgICAgICBjb2xvcjogIzMzMztcclxuXHJcbiAgICAgICAgYSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMzMzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuY29udGFpbmVyLCBoZWFkZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICBoMSB7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAjc3ZnTG9nbyB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcGhhYmxldCkge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhlYWRlciB7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICMwMThiZDM7XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XHJcbiAgICAgICAgei1pbmRleDogMjAwO1xyXG4gICAgfVxyXG5cclxuICAgID4gLmNvbnRhaW5lcjpmaXJzdC1vZi10eXBlIHtcclxuICAgICAgICBwYWRkaW5nLXRvcDogODBweDtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcGhhYmxldCkge1xyXG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMTIwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuLnByb2plY3QtdGl0bGUge1xyXG4gICAgbGluZS1oZWlnaHQ6IC42ZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG4gICAgY29sb3I6ICNGRkY7XHJcblxyXG4gICAgLmludmVyc2UgJiB7XHJcbiAgICAgICAgY29sb3I6ICMzMzM7XHJcbiAgICB9XHJcblxyXG4gICAgaW1nIHtcclxuICAgICAgICB3aWR0aDogMTYwcHg7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDdweCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3BhbiB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjRkZGO1xyXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnRm9udGluJywgc2Fucy1zZXJpZjtcclxuICAgICAgICBmb250LXNpemU6IC4yNWVtO1xyXG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAuMDAyZW07XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHBoYWJsZXQpIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAuNWVtO1xyXG4gICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNGRkY7XHJcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pbnZlcnNlICYge1xyXG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICMzMzM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4uc2xpZGUge1xyXG4gICAgYmFja2dyb3VuZDogI0VFRTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIHBhZGRpbmc6IDUlIDA7XHJcblxyXG5cclxuICAgICYtaW5pdCB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI0VFRSB1cmwoJy9zdmcvdXAuc3ZnP2M9MDE4YmQzJykgbm8tcmVwZWF0O1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMnB4IDA7XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDYwcHg7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHBoYWJsZXQpIHtcclxuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYtZmltIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjRUVFIHVybCgnL3N2Zy9kb3duLnN2Zz9jPTAxOGJkMycpIG5vLXJlcGVhdCBib3R0b20gY2VudGVyO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgLy9iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIH1cclxuXHJcbiAgICAmLWNvbnRlbnQge1xyXG4gICAgICAgIEBpbmNsdWRlIGNlbnRlcigpO1xyXG5cclxuICAgICAgICAmLnNsaWRlLW1vY2tzIHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLnBvcnRmb2xpby1jbG9zZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBib3R0b206IDEzcHg7XHJcbiAgICByaWdodDogMTBweDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICBjb2xvcjogI0ZGRjtcclxuXHJcbiAgICAuaW52ZXJzZSAmIHtcclxuICAgICAgICBjb2xvcjogIzMzMztcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgc3BhbiB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcblxyXG4gICAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRwaGFibGV0KSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICB3aWR0aDogNDBweDtcclxuICAgICAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgXHJcbiAgICAgICAgJjphZnRlciwgJjpiZWZvcmV7XHJcbiAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcgJztcclxuICAgICAgICAgICAgd2lkdGg6IDQwcHg7XHJcbiAgICAgICAgICAgIGhlaWdodDogMXB4O1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoNDVkZWcpO1xyXG5cclxuICAgICAgICAgICAgLmludmVyc2UgJiB7XHJcbiAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMzMzM7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSgtNDVkZWcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuI3Byb2plY3QtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xyXG4gICAgei1pbmRleDogMTAwMDtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcblxyXG4gICAgLnByb2plY3Qtb3BlbmVkICYge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgICAgICAmLnByb2plY3Qtb3BlbmVkIHtcclxuICAgICAgICAvL3Bvc2l0aW9uOmZpeGVkO1xyXG4gICAgICAgIG92ZXJmbG93OmhpZGRlbjtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxufVxyXG4uY3JlZGl0cyB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMik7XHJcbiAgICBtYXJnaW46IDEwcHggMDtcclxuICAgIHBhZGRpbmc6IDEwcHggMjBweDtcclxuXHJcbiAgICAuaW52ZXJzZSAmIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMik7XHJcbiAgICB9ICBcclxufVxyXG5cclxuLnRhZy1saXN0IHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBtYXJnaW46IDEwcHggMDtcclxuICAgIHBhZGRpbmctbGVmdDogMDtcclxufVxyXG5cclxuLnRhZyB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBiYWNrZ3JvdW5kOiAjOTk5O1xyXG4gICAgY29sb3I6ICNGRkY7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBwYWRkaW5nOiAycHggN3B4O1xyXG59XHJcblxyXG5hLmV4dGVybmFsIHtcclxuICAgIGNvbG9yOiAjRkZGO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgICBmb250LWZhbWlseTogJ3JyaW9nbycgIWltcG9ydGFudDtcclxuICAgICAgICBzcGVhazogbm9uZTtcclxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcclxuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcclxuICAgICAgICBsaW5lLWhlaWdodDogMTtcclxuXHJcbiAgICAgICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXHJcbiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XHJcbiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcclxuXHJcbiAgICAgICAgY29udGVudDogJGljb24tbGluay1leHRlcm5hbDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5pbnZlcnNlIHtcclxuICAgIHAge1xyXG4gICAgICAgIGNvbG9yOiAjMzMzO1xyXG4gICAgfVxyXG5cclxuICAgIGEuZXh0ZXJuYWwge1xyXG4gICAgICAgIGNvbG9yOiAjMzMzO1xyXG4gICAgfVxyXG59XHJcblxyXG4ub3Blbi1wcm9qZWN0IHtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgc2xpZGUge1xyXG4gICAgZnJvbSB7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvIHtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiNwcm9qZWN0LXNob3cge1xyXG4gICAgLm9wZW4tcHJvamVjdCAmIHtcclxuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDB2aDtcclxuICAgICAgICB3aWR0aDogMTAwdnc7XHJcbiAgICAgICAgei1pbmRleDogMTAwMDtcclxuICAgICAgICBvdmVyZmxvdzogYXV0bztcclxuICAgIH1cclxuXHJcbiAgICAub3Blbi1wcm9qZWN0LmxvYWRpbmcgJiB7XHJcbiAgICAgICAgb3BhY2l0eTogMC45O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkYgdXJsKCcuLi9pbWcvYWpheC1sb2FkZXIuZ2lmJykgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgPiAqIHtcclxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmxvYWRlZCAmID4gKiB7XHJcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlO1xyXG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XHJcbiAgICB9XHJcbn1cclxuIiwiYm9keSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ltZy9wYXBlci5wbmcnKSBsZWZ0IHRvcDtcclxuXHJcbiAgICA+IHNlY3Rpb24ge1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG4gICAgfVxyXG59XHJcblxyXG4jaG9tZS1wYWdlIHtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRtYWluLWNvbG9yLCA0NSUpO1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvc3ZnL2JnLnN2Zz9jPTdlNmNiMCcpO1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gICAgYmFja2dyb3VuZC1ibGVuZC1tb2RlOiBzb2Z0LWxpZ2h0O1xyXG5cclxuICAgIC53cmFwIHtcclxuICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDUwdmg7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDB2aDtcclxuICAgICAgICB3aWR0aDogMTAwdnc7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgfVxyXG5cclxuICAgIC5jb250YWluZXIge1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICB6LWluZGV4OiAxMDA7XHJcbiAgICB9XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */
