/*!***************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./src/Pyz/Yves/ShopUi/Theme/default/styles/util.scss ***!
  \***************************************************************************************************************************************************************************************************************************************************************************/
/**
 * Defines the main color of the shop theme. Usage: primary elements' background and color.
 */
/**
 * Defines alternative color of the shop theme. Usage: secondary elements' background and color.
 */
/**
 * Defines white color. Usage: not transparent elements' background of default background.
 */
/**
 * Defines a light shade color. Usage: elements' background, borders and text.
 */
/**
 * Defines a lighter shade color. Usage: elements' background, borders and text.
 */
/**
 * Defines the lightest shade color. Usage: elements' background, borders and text.
 */
/**
 * Defines the shade of the black color. Usage: as a base of black color for semi-transparent elements.
 */
/**
 * Defines a dark shade color. Usage: elements' text color variant.
 */
/**
 * Defines a darker shade color. Usage: elements' text color variant.
 */
/**
 * Defines the darkest shade color. Usage: elements' text color variant.
 */
/**
 * Defines a transparent color. Usage: elements' background, border.
 */
/**
 * Defines the main background color. Usage: body and side-drawer background.
 */
/**
 * Defines the main color of text. Usage: default global text color.
 */
/**
 * Defines a default global border color for the input elements.
 */
/**
 * Defines a default global border color for the input elements on focus event.
 */
/**
 * Defines a shadow shade and transparency for the shadowed elements.
 */
/**
 * Defines a default overlay color. Usage: elements with overlay - side-drawer, popups etc.
 */
/**
 * Defines a default image overlay color. Usage: images with overlay - lazy-image.
 */
/**
 * Defines action colors map.
 */
/**
 * Defines font family setting. Usage: body global font styles.
 */
/**
 * Defines font family setting for code. Can be used for code and pre elements.
 */
/**
 * Defines basic font size. Usage: global basic font size.
 */
/**
 * Font size values map. Usage: mixins providing styles for headings, text elements etc.
 */
/**
 * Font weight values map. Usage: mixin to set font weight property.
 */
/**
 * Font line height values map. Usage: mixins providing styles for headings, text elements etc.
 */
/**
 * Defines a default duration value for the animation effects. Usage: mixins providing animation properties.
 */
/**
 * Defines a default timing function for the animation effects. Usage: mixins providing animation properties.
 */
/**
 * Defines default z-index value.
 */
/**
 * Defines z-index value for ajax dynamic loader.
 */
/**
 * Defines z-index value for the floating elements.
 */
/**
 * Defines z-index value for the header context.
 */
/**
 * Defines z-index value for the side drawer context.
 */
/**
 * Defines z-index value for the popup.
 */
/**
 * Defines z-index value for the overlay.
 */
/**
 * Defines z-index value for the notification area context.
 */
/**
 * Defines z-index value for the search suggestions context.
 */
/**
 * Defines z-index value for the ajax loader.
 */
/**
 * Defines z-index value for the top navigation context.
 */
/**
 * Defines z-index value for the skip to content link context.
 */
/**
 * Defines z-index value for layer under main content.
 */
/**
 * Defines spacing values map. Usage: spacing helpers and mixins.
 */
/**
 * Defines breakpoints' values for responsive.
 */
/**
 * Defines grid system columns count.
 */
/**
 * Defines grid container max width.
 */
/**
 * Defines gutters' size for grid "with-gutter" modifier.
 */
/**
 * Defines import blacklist. Usage: import helper.
 */
/**
 * Provides list of properies for reset usage.
 */
/**
 * Wrapper function for the darken sass function with a default degree parameter.
 * @param {Color} $setting-color
 * @param {Number} $degree [10]
 */
/**
 * Wrapper function for the lighten sass function with a default degree parameter.
 * @param {Color} $setting-color
 * @param {Number} $degree [10]
 */
/**
 * Sets font-size property from font size settings map - $setting-font-size according to the passed map key.
 * @param {String | Number} $size
 */
/**
 * Sets font-weight property from font weight settings map - $setting-font-weight according to the passed map key.
 * @param {String} $weight
 */
/**
 * Sets line-height property from line-height settings map - $setting-font-line-height according to the passed map key.
 * @param {String | Number} $height
 */
/**
 * Povides transition property configured by the passed parameters.
 * @param {String} $props
 * @param {Number} $duration [$setting-effect-default-duration]
 * @param {String} $ease [$setting-effect-default-ease]
 */
/**
 * Forces element visibility.
 */
/**
 * Forces element invisibility.
 */
/**
 * Forces element invisibility with accessibility support.
 */
/**
 * Forces element visibility with accessibility support.
 */
/**
 * Provides global class names with spacing properties set from $setting-spacing map.
 * @param {String} $name Main selector name.
 * @param {List} $sides [[]] List of sides to set properties.
 */
/**
 * Returns 0 or the first value from the $edges list.
 * @param {List} $edges [$setting-breakpoints] List length must be less than or equal to 2.
 * @return {Base}
 */
/**
 * Returns null or the last value from the $edges list.
 * @param {List} $edges [$setting-breakpoints] List length must be less than or equal to 2.
 * @return {Base}
 */
/**
 * Sets screen media query with min-width set to $min parameter.
 * @param $min {Number} [0]
 * @content Extends mixin with properties for media query.
 */
/**
 * Sets screen media query with breakpoints range passed as parameters.
 * @param {Number} $min [0]
 * @param {Number} $max [$setting-grid-max-width]
 * @content Extends mixin with properties for media query.
 */
/**
 * Sets screen media query with max-width set to $max parameter.
 * @param {Number} $max [$setting-grid-max-width]
 * @content Extends mixin with properties for media query.
 */
/**
 * Sets screen media query with breakpoints range passed to parameters or
 * with min-width query if only one parameter is passed.
 * @param {Number} $max [$setting-grid-max-width]
 * @content Extends mixin with properties for media query.
 */
/**
 * Returns column ratio in relation to columns count.
 * @param {Number} $column
 * @param {Number} $columns [$setting-grid-columns]
 * @return {Number}
 */
/**
 * Adds clearing for element with floated child elements.
 */
/**
 * Adds a box-shadow with basic values.
 */
/**
 * Checks parameter on presence in the blacklist of imports setting list.
 * @param {List} $keywords
 * @content Extends mixin with properties if $keywords is not on the blacklist.
 */
/**
 * Forces element outline.
 */
/**
 * @deprecated Use agent-widget-agent-navigation mixin instead.
 */
/**
 * @deprecated Use agent-widget-agent-control-bar mixin instead.
 */
.summary-overview__grand-total-price {
  font-size: 1.1rem;
  line-height: 1.4;
}

/**
 * @deprecated Use cms-search-page-sort mixin instead.
 */
/**
 * @deprecated Use company-page-business-unit-chart-item mixin instead.
 */
/**
 * @deprecated Use company-user-agent-widget-company-user-list mixin instead.
 */
/**
 * @deprecated Use file-manager-widget-file-download-link mixin instead.
 */
/**
 * @deprecated Use merchant-relation-request-page-status-notification mixin instead.
 */
/* fe-sniffer:disabled correct-scss-component-structure */
/**
 * @deprecated Use price-product-volume-widget-volume-price mixin instead.
 */
/**
 * @deprecated Use price-product-volume-widget-volume-price-table mixin instead.
 */
/**
 * @deprecated Use product-option-widget-shopping-list-product-option-list mixin instead.
 */
/**
 * @deprecated Use product-packaging-unit-widget-packaging-unit-cart mixin instead.
 */
/**
 * @deprecated Use product-review-widget-rating-selector mixin instead.
 */
/**
 * @deprecated Use product-search-widget-product-quick-add-form mixin instead.
 */
/**
 * @deprecated Use configurable-bundle-widget-order-configured-bundle mixin instead.
 */
/**
 * @deprecated Use configurable-bundle-widget-order-configured-bundle-product mixin instead.
 */
.collapsible-list__button {
  background-color: rgba(255, 255, 255, 0);
  color: #08493d;
  cursor: pointer;
}
.collapsible-list__button:hover {
  text-decoration: underline;
}
.collapsible-list__button::after {
  content: attr(data-show);
}
.collapsible-list__button--shown::after {
  content: attr(data-hide);
}
.collapsible-list__button-content {
  display: none;
}

/* fe-sniffer:disabled correct-scss-component-structure */
/**
 * @deprecated Use shop-ui-quote-status-color mixin instead.
 */
/**
 * @deprecated Use tabs-widget-search-tabs mixin instead.
 */
/**
 * Provides global class names for spacings.
 */
/**
 * Provides global class names for text styling.
 */
/**
 * Provides class name for text styling with color property specified by parameters.
 * @param {String} $action Sets class name postfix.
 * @param {Color} $setting-color-action Sets color property.
 * @content Extendable mixin.
 */
/**
 * Provides global class names for the elements' float alignment.
 */
/**
 * Provides global class names for display behavior with additional responsive modifiers.
 */
.spacing {
  margin: 0.5rem;
}
.spacing--biggest {
  margin: 2rem;
}
.spacing--bigger {
  margin: 1.5rem;
}
.spacing--big {
  margin: 1rem;
}
.spacing--small {
  margin: 0.25rem;
}
.spacing--reset {
  margin: 0;
}

.spacing--inner {
  margin: 0;
  padding: 0.5rem;
}
.spacing--inner.spacing--biggest {
  margin: 0;
  padding: 2rem;
}

.spacing--inner.spacing--bigger {
  margin: 0;
  padding: 1.5rem;
}

.spacing--inner.spacing--big {
  margin: 0;
  padding: 1rem;
}

.spacing--inner.spacing--small {
  margin: 0;
  padding: 0.25rem;
}

.spacing--inner.spacing--reset {
  margin: 0;
  padding: 0;
}

.spacing-top {
  margin-top: 0.5rem;
}
.spacing-top--biggest {
  margin-top: 2rem;
}
.spacing-top--bigger {
  margin-top: 1.5rem;
}
.spacing-top--big {
  margin-top: 1rem;
}
.spacing-top--small {
  margin-top: 0.25rem;
}
.spacing-top--reset {
  margin-top: 0;
}

.spacing-top--inner {
  margin-top: 0;
  padding-top: 0.5rem;
}
.spacing-top--inner.spacing-top--biggest {
  margin-top: 0;
  padding-top: 2rem;
}

.spacing-top--inner.spacing-top--bigger {
  margin-top: 0;
  padding-top: 1.5rem;
}

.spacing-top--inner.spacing-top--big {
  margin-top: 0;
  padding-top: 1rem;
}

.spacing-top--inner.spacing-top--small {
  margin-top: 0;
  padding-top: 0.25rem;
}

.spacing-top--inner.spacing-top--reset {
  margin-top: 0;
  padding-top: 0;
}

.spacing-bottom {
  margin-bottom: 0.5rem;
}
.spacing-bottom--biggest {
  margin-bottom: 2rem;
}
.spacing-bottom--bigger {
  margin-bottom: 1.5rem;
}
.spacing-bottom--big {
  margin-bottom: 1rem;
}
.spacing-bottom--small {
  margin-bottom: 0.25rem;
}
.spacing-bottom--reset {
  margin-bottom: 0;
}

.spacing-bottom--inner {
  margin-bottom: 0;
  padding-bottom: 0.5rem;
}
.spacing-bottom--inner.spacing-bottom--biggest {
  margin-bottom: 0;
  padding-bottom: 2rem;
}

.spacing-bottom--inner.spacing-bottom--bigger {
  margin-bottom: 0;
  padding-bottom: 1.5rem;
}

.spacing-bottom--inner.spacing-bottom--big {
  margin-bottom: 0;
  padding-bottom: 1rem;
}

.spacing-bottom--inner.spacing-bottom--small {
  margin-bottom: 0;
  padding-bottom: 0.25rem;
}

.spacing-bottom--inner.spacing-bottom--reset {
  margin-bottom: 0;
  padding-bottom: 0;
}

.spacing-left {
  margin-left: 0.5rem;
}
.spacing-left--biggest {
  margin-left: 2rem;
}
.spacing-left--bigger {
  margin-left: 1.5rem;
}
.spacing-left--big {
  margin-left: 1rem;
}
.spacing-left--small {
  margin-left: 0.25rem;
}
.spacing-left--reset {
  margin-left: 0;
}

.spacing-left--inner {
  margin-left: 0;
  padding-left: 0.5rem;
}
.spacing-left--inner.spacing-left--biggest {
  margin-left: 0;
  padding-left: 2rem;
}

.spacing-left--inner.spacing-left--bigger {
  margin-left: 0;
  padding-left: 1.5rem;
}

.spacing-left--inner.spacing-left--big {
  margin-left: 0;
  padding-left: 1rem;
}

.spacing-left--inner.spacing-left--small {
  margin-left: 0;
  padding-left: 0.25rem;
}

.spacing-left--inner.spacing-left--reset {
  margin-left: 0;
  padding-left: 0;
}

.spacing-right {
  margin-right: 0.5rem;
}
.spacing-right--biggest {
  margin-right: 2rem;
}
.spacing-right--bigger {
  margin-right: 1.5rem;
}
.spacing-right--big {
  margin-right: 1rem;
}
.spacing-right--small {
  margin-right: 0.25rem;
}
.spacing-right--reset {
  margin-right: 0;
}

.spacing-right--inner {
  margin-right: 0;
  padding-right: 0.5rem;
}
.spacing-right--inner.spacing-right--biggest {
  margin-right: 0;
  padding-right: 2rem;
}

.spacing-right--inner.spacing-right--bigger {
  margin-right: 0;
  padding-right: 1.5rem;
}

.spacing-right--inner.spacing-right--big {
  margin-right: 0;
  padding-right: 1rem;
}

.spacing-right--inner.spacing-right--small {
  margin-right: 0;
  padding-right: 0.25rem;
}

.spacing-right--inner.spacing-right--reset {
  margin-right: 0;
  padding-right: 0;
}

.spacing-x {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}
.spacing-x--biggest {
  margin-left: 2rem;
  margin-right: 2rem;
}
.spacing-x--bigger {
  margin-left: 1.5rem;
  margin-right: 1.5rem;
}
.spacing-x--big {
  margin-left: 1rem;
  margin-right: 1rem;
}
.spacing-x--small {
  margin-left: 0.25rem;
  margin-right: 0.25rem;
}
.spacing-x--reset {
  margin-left: 0;
  margin-right: 0;
}

.spacing-x--inner {
  margin-left: 0;
  padding-left: 0.5rem;
  margin-right: 0;
  padding-right: 0.5rem;
}
.spacing-x--inner.spacing-x--biggest {
  margin-left: 0;
  padding-left: 2rem;
  margin-right: 0;
  padding-right: 2rem;
}

.spacing-x--inner.spacing-x--bigger {
  margin-left: 0;
  padding-left: 1.5rem;
  margin-right: 0;
  padding-right: 1.5rem;
}

.spacing-x--inner.spacing-x--big {
  margin-left: 0;
  padding-left: 1rem;
  margin-right: 0;
  padding-right: 1rem;
}

.spacing-x--inner.spacing-x--small {
  margin-left: 0;
  padding-left: 0.25rem;
  margin-right: 0;
  padding-right: 0.25rem;
}

.spacing-x--inner.spacing-x--reset {
  margin-left: 0;
  padding-left: 0;
  margin-right: 0;
  padding-right: 0;
}

.spacing-y {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}
.spacing-y--biggest {
  margin-top: 2rem;
  margin-bottom: 2rem;
}
.spacing-y--bigger {
  margin-top: 1.5rem;
  margin-bottom: 1.5rem;
}
.spacing-y--big {
  margin-top: 1rem;
  margin-bottom: 1rem;
}
.spacing-y--small {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}
.spacing-y--reset {
  margin-top: 0;
  margin-bottom: 0;
}

.spacing-y--inner {
  margin-top: 0;
  padding-top: 0.5rem;
  margin-bottom: 0;
  padding-bottom: 0.5rem;
}
.spacing-y--inner.spacing-y--biggest {
  margin-top: 0;
  padding-top: 2rem;
  margin-bottom: 0;
  padding-bottom: 2rem;
}

.spacing-y--inner.spacing-y--bigger {
  margin-top: 0;
  padding-top: 1.5rem;
  margin-bottom: 0;
  padding-bottom: 1.5rem;
}

.spacing-y--inner.spacing-y--big {
  margin-top: 0;
  padding-top: 1rem;
  margin-bottom: 0;
  padding-bottom: 1rem;
}

.spacing-y--inner.spacing-y--small {
  margin-top: 0;
  padding-top: 0.25rem;
  margin-bottom: 0;
  padding-bottom: 0.25rem;
}

.spacing-y--inner.spacing-y--reset {
  margin-top: 0;
  padding-top: 0;
  margin-bottom: 0;
  padding-bottom: 0;
}

.text-small {
  font-size: 0.875rem;
}

.text-big {
  font-size: 1.125rem;
}

.text-left {
  text-align: left;
}

.text-center {
  text-align: center;
}

.text-right {
  text-align: right;
}

.text-alt {
  color: #e01a00;
}

.text-secondary {
  color: #595959;
}

.text-break {
  word-break: break-word;
}

.text-success {
  color: #08493d;
}

.text-warning {
  color: #d88d00;
}

.text-alert {
  color: #e01a00;
}

.clear::after {
  content: "";
  display: table;
  clear: both;
}

.float-left {
  float: left;
}

.float-right {
  float: right;
}

.float-none {
  float: none;
}

.is-hidden {
  display: none;
}
@media only screen and (min-width: 0) and (max-width: 549px) {
  .is-hidden-sm-only {
    display: none;
  }
}
@media only screen and (min-width: 0) and (max-width: 767px) {
  .is-hidden-sm-md {
    display: none;
  }
}
@media only screen and (min-width: 0) and (max-width: 1023px) {
  .is-hidden-sm-lg {
    display: none;
  }
}
@media only screen and (min-width: 0) and (max-width: 1199px) {
  .is-hidden-sm-xl {
    display: none;
  }
}
@media only screen and (min-width: 0) {
  .is-hidden-sm-xxl {
    display: none;
  }
}
@media only screen and (min-width: 550px) and (max-width: 767px) {
  .is-hidden-md-only {
    display: none;
  }
}
@media only screen and (min-width: 550px) and (max-width: 1023px) {
  .is-hidden-md-lg {
    display: none;
  }
}
@media only screen and (min-width: 550px) and (max-width: 1199px) {
  .is-hidden-md-xl {
    display: none;
  }
}
@media only screen and (min-width: 550px) {
  .is-hidden-md-xxl {
    display: none;
  }
}
@media only screen and (min-width: 768px) and (max-width: 1023px) {
  .is-hidden-lg-only {
    display: none;
  }
}
@media only screen and (min-width: 768px) and (max-width: 1199px) {
  .is-hidden-lg-xl {
    display: none;
  }
}
@media only screen and (min-width: 768px) {
  .is-hidden-lg-xxl {
    display: none;
  }
}
@media only screen and (min-width: 1024px) and (max-width: 1199px) {
  .is-hidden-xl-only {
    display: none;
  }
}
@media only screen and (min-width: 1024px) {
  .is-hidden-xl-xxl {
    display: none;
  }
}
@media only screen and (min-width: 1200px) {
  .is-hidden-xxl-only {
    display: none;
  }
}

.is-visible {
  pointer-events: all;
  visibility: visible;
  opacity: 1;
}

.is-invisible {
  pointer-events: none;
  visibility: hidden;
  opacity: 0;
}

.is-scrollable {
  overflow: auto;
}

.is-not-scrollable {
  overflow: hidden;
}

.is-scrollable-x {
  overflow-x: auto;
}

.is-not-scrollable-x {
  overflow-x: hidden;
}

.is-scrollable-y {
  overflow-y: auto;
}

.is-not-scrollable-y {
  overflow-y: hidden;
}

.is-position-relative {
  position: relative;
}

html > .is-locked-tablet,
html > .is-locked-mobile,
html > .is-locked {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  overflow: hidden;
  height: 100%;
}
@media only screen and (min-width: 1024px) {
  html > .is-locked-tablet {
    overflow: visible;
    position: static;
  }
}
@media only screen and (min-width: 768px) {
  html > .is-locked-mobile {
    overflow: visible;
    position: static;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MveXZlc19kZWZhdWx0LnV0aWwuY3NzIiwibWFwcGluZ3MiOiI7OztBQUFBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQUtBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQUtBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQUtBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQUtBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQUtBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQVNBOztFQUFBO0FDOUZBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQUtBOztFQUFBO0FBZUE7O0VBQUE7QUFTQTs7RUFBQTtBQ3ZDQTs7RUFBQTtBQUtBOztFQUFBO0FDTEE7O0VBQUE7QUFLQTs7RUFBQTtBQUtBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQUtBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQUtBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQUtBOztFQUFBO0FBS0E7O0VBQUE7QUM1REE7O0VBQUE7QUNBQTs7RUFBQTtBQ0FBOztFQUFBO0FBS0E7O0VBQUE7QUFLQTs7RUFBQTtBQ1ZBOztFQUFBO0FDQUE7O0VBQUE7QUNBQTs7OztFQUFBO0FBU0E7Ozs7RUFBQTtBQ1RBOzs7RUFBQTtBQVVBOzs7RUFBQTtBQVVBOzs7RUFBQTtBQ3BCQTs7Ozs7RUFBQTtBQ0FBOztFQUFBO0FBV0E7O0VBQUE7QUFXQTs7RUFBQTtBQVVBOztFQUFBO0FDaENBOzs7O0VBQUE7QUNBQTs7OztFQUFBO0FBYUE7Ozs7RUFBQTtBQWFBOzs7O0VBQUE7QUFXQTs7Ozs7RUFBQTtBQVlBOzs7O0VBQUE7QUFXQTs7Ozs7RUFBQTtBQzVEQTs7Ozs7RUFBQTtBQ0FBOztFQUFBO0FBYUE7O0VBQUE7QUNiQTs7OztFQUFBO0FDQUE7O0VBQUE7QUN1QkE7O0VBQUE7QUNkQTs7RUFBQTtBQ1BRO0VBQ0k7RUFDQTtBQ21QWjs7QUM3T0E7O0VBQUE7QUNTQTs7RUFBQTtBQ0pBOztFQUFBO0FDeUNBOztFQUFBO0FDeERBOztFQUFBO0FBSUE7QUM0QkE7O0VBQUE7QUNGQTs7RUFBQTtBQ2ZBOztFQUFBO0FDRUE7O0VBQUE7QUM0REE7O0VBQUE7QUMzREE7O0VBQUE7QUNMQTs7RUFBQTtBQ2NBOztFQUFBO0FDekJRO0VBQ0ksd0NwQ2tEZ0I7RW9DakRoQixjQ0pTO0VES1Q7QWRnU1o7QWM5Ulk7RUFDSTtBZGdTaEI7QWM3Ulk7RUFDSTtBZCtSaEI7QWMzUmdCO0VBQ0k7QWQ2UnBCO0FjeFJRO0VBQ0k7QWQwUlo7O0FnQmpUQTtBQWlDQTs7RUFBQTtBQ01BOztFQUFBO0FDdkNBOztFQUFBO0FDQUE7O0VBQUE7QUEyQ0E7Ozs7O0VBQUE7QUMzQ0E7O0VBQUE7QUNBQTs7RUFBQTtBOUJXSTtFQUlnQixjK0JmRjtBdEI4VWxCO0FUeFRnQjtFQUVRLFkrQnhCTjtBdEJpVmxCO0FUM1RnQjtFQUVRLGMrQnhCTjtBdEJvVmxCO0FUOVRnQjtFQUVRLFkrQnhCTjtBdEJ1VmxCO0FUalVnQjtFQUVRLGUrQnhCTjtBdEIwVmxCO0FUcFVnQjtFQUVRLFMrQnhCTjtBdEI2VmxCOztBVHRUSTtFQUlnQjtFQUNBLGUrQjVDRjtBdEJrV2xCO0FUOVN5QjtFQUVEO0VBQ0EsYStCdkROO0F0QnNXbEI7O0FUbFR5QjtFQUVEO0VBQ0EsZStCdkROO0F0QjJXbEI7O0FUdlR5QjtFQUVEO0VBQ0EsYStCdkROO0F0QmdYbEI7O0FUNVR5QjtFQUVEO0VBQ0EsZ0IrQnZETjtBdEJxWGxCOztBVGpVeUI7RUFFRDtFQUNBLFUrQnZETjtBdEIwWGxCOztBVC9XSTtFQU9vQixrQitCbEJOO0F0QjhYbEI7QVR4V2dCO0VBS1ksZ0IrQjNCVjtBdEJpWWxCO0FUM1dnQjtFQUtZLGtCK0IzQlY7QXRCb1lsQjtBVDlXZ0I7RUFLWSxnQitCM0JWO0F0QnVZbEI7QVRqWGdCO0VBS1ksbUIrQjNCVjtBdEIwWWxCO0FUcFhnQjtFQUtZLGErQjNCVjtBdEI2WWxCOztBVHRXSTtFQVFvQjtFQUNBLG1CK0JoRE47QXRCa1psQjtBVDlWeUI7RUFNRztFQUNBLGlCK0IzRFY7QXRCc1psQjs7QVRsV3lCO0VBTUc7RUFDQSxtQitCM0RWO0F0QjJabEI7O0FUdld5QjtFQU1HO0VBQ0EsaUIrQjNEVjtBdEJnYWxCOztBVDVXeUI7RUFNRztFQUNBLG9CK0IzRFY7QXRCcWFsQjs7QVRqWHlCO0VBTUc7RUFDQSxjK0IzRFY7QXRCMGFsQjs7QVQvWkk7RUFPb0IscUIrQmxCTjtBdEI4YWxCO0FUeFpnQjtFQUtZLG1CK0IzQlY7QXRCaWJsQjtBVDNaZ0I7RUFLWSxxQitCM0JWO0F0Qm9ibEI7QVQ5WmdCO0VBS1ksbUIrQjNCVjtBdEJ1YmxCO0FUamFnQjtFQUtZLHNCK0IzQlY7QXRCMGJsQjtBVHBhZ0I7RUFLWSxnQitCM0JWO0F0QjZibEI7O0FUdFpJO0VBUW9CO0VBQ0Esc0IrQmhETjtBdEJrY2xCO0FUOVl5QjtFQU1HO0VBQ0Esb0IrQjNEVjtBdEJzY2xCOztBVGxaeUI7RUFNRztFQUNBLHNCK0IzRFY7QXRCMmNsQjs7QVR2WnlCO0VBTUc7RUFDQSxvQitCM0RWO0F0QmdkbEI7O0FUNVp5QjtFQU1HO0VBQ0EsdUIrQjNEVjtBdEJxZGxCOztBVGpheUI7RUFNRztFQUNBLGlCK0IzRFY7QXRCMGRsQjs7QVQvY0k7RUFPb0IsbUIrQmxCTjtBdEI4ZGxCO0FUeGNnQjtFQUtZLGlCK0IzQlY7QXRCaWVsQjtBVDNjZ0I7RUFLWSxtQitCM0JWO0F0Qm9lbEI7QVQ5Y2dCO0VBS1ksaUIrQjNCVjtBdEJ1ZWxCO0FUamRnQjtFQUtZLG9CK0IzQlY7QXRCMGVsQjtBVHBkZ0I7RUFLWSxjK0IzQlY7QXRCNmVsQjs7QVR0Y0k7RUFRb0I7RUFDQSxvQitCaEROO0F0QmtmbEI7QVQ5YnlCO0VBTUc7RUFDQSxrQitCM0RWO0F0QnNmbEI7O0FUbGN5QjtFQU1HO0VBQ0Esb0IrQjNEVjtBdEIyZmxCOztBVHZjeUI7RUFNRztFQUNBLGtCK0IzRFY7QXRCZ2dCbEI7O0FUNWN5QjtFQU1HO0VBQ0EscUIrQjNEVjtBdEJxZ0JsQjs7QVRqZHlCO0VBTUc7RUFDQSxlK0IzRFY7QXRCMGdCbEI7O0FUL2ZJO0VBT29CLG9CK0JsQk47QXRCOGdCbEI7QVR4ZmdCO0VBS1ksa0IrQjNCVjtBdEJpaEJsQjtBVDNmZ0I7RUFLWSxvQitCM0JWO0F0Qm9oQmxCO0FUOWZnQjtFQUtZLGtCK0IzQlY7QXRCdWhCbEI7QVRqZ0JnQjtFQUtZLHFCK0IzQlY7QXRCMGhCbEI7QVRwZ0JnQjtFQUtZLGUrQjNCVjtBdEI2aEJsQjs7QVR0Zkk7RUFRb0I7RUFDQSxxQitCaEROO0F0QmtpQmxCO0FUOWV5QjtFQU1HO0VBQ0EsbUIrQjNEVjtBdEJzaUJsQjs7QVRsZnlCO0VBTUc7RUFDQSxxQitCM0RWO0F0QjJpQmxCOztBVHZmeUI7RUFNRztFQUNBLG1CK0IzRFY7QXRCZ2pCbEI7O0FUNWZ5QjtFQU1HO0VBQ0Esc0IrQjNEVjtBdEJxakJsQjs7QVRqZ0J5QjtFQU1HO0VBQ0EsZ0IrQjNEVjtBdEIwakJsQjs7QVQvaUJJO0VBT29CLG1CK0JsQk47RS9Ca0JNLG9CK0JsQk47QXRCK2pCbEI7QVR6aUJnQjtFQUtZLGlCK0IzQlY7RS9CMkJVLGtCK0IzQlY7QXRCbWtCbEI7QVQ3aUJnQjtFQUtZLG1CK0IzQlY7RS9CMkJVLG9CK0IzQlY7QXRCdWtCbEI7QVRqakJnQjtFQUtZLGlCK0IzQlY7RS9CMkJVLGtCK0IzQlY7QXRCMmtCbEI7QVRyakJnQjtFQUtZLG9CK0IzQlY7RS9CMkJVLHFCK0IzQlY7QXRCK2tCbEI7QVR6akJnQjtFQUtZLGMrQjNCVjtFL0IyQlUsZStCM0JWO0F0Qm1sQmxCOztBVDVpQkk7RUFRb0I7RUFDQSxvQitCaEROO0UvQitDTTtFQUNBLHFCK0JoRE47QXRCMGxCbEI7QVR0aUJ5QjtFQU1HO0VBQ0Esa0IrQjNEVjtFL0IwRFU7RUFDQSxtQitCM0RWO0F0QmdtQmxCOztBVDVpQnlCO0VBTUc7RUFDQSxvQitCM0RWO0UvQjBEVTtFQUNBLHFCK0IzRFY7QXRCdW1CbEI7O0FUbmpCeUI7RUFNRztFQUNBLGtCK0IzRFY7RS9CMERVO0VBQ0EsbUIrQjNEVjtBdEI4bUJsQjs7QVQxakJ5QjtFQU1HO0VBQ0EscUIrQjNEVjtFL0IwRFU7RUFDQSxzQitCM0RWO0F0QnFuQmxCOztBVGprQnlCO0VBTUc7RUFDQSxlK0IzRFY7RS9CMERVO0VBQ0EsZ0IrQjNEVjtBdEI0bkJsQjs7QVRqbkJJO0VBT29CLGtCK0JsQk47RS9Ca0JNLHFCK0JsQk47QXRCaW9CbEI7QVQzbUJnQjtFQUtZLGdCK0IzQlY7RS9CMkJVLG1CK0IzQlY7QXRCcW9CbEI7QVQvbUJnQjtFQUtZLGtCK0IzQlY7RS9CMkJVLHFCK0IzQlY7QXRCeW9CbEI7QVRubkJnQjtFQUtZLGdCK0IzQlY7RS9CMkJVLG1CK0IzQlY7QXRCNm9CbEI7QVR2bkJnQjtFQUtZLG1CK0IzQlY7RS9CMkJVLHNCK0IzQlY7QXRCaXBCbEI7QVQzbkJnQjtFQUtZLGErQjNCVjtFL0IyQlUsZ0IrQjNCVjtBdEJxcEJsQjs7QVQ5bUJJO0VBUW9CO0VBQ0EsbUIrQmhETjtFL0IrQ007RUFDQSxzQitCaEROO0F0QjRwQmxCO0FUeG1CeUI7RUFNRztFQUNBLGlCK0IzRFY7RS9CMERVO0VBQ0Esb0IrQjNEVjtBdEJrcUJsQjs7QVQ5bUJ5QjtFQU1HO0VBQ0EsbUIrQjNEVjtFL0IwRFU7RUFDQSxzQitCM0RWO0F0QnlxQmxCOztBVHJuQnlCO0VBTUc7RUFDQSxpQitCM0RWO0UvQjBEVTtFQUNBLG9CK0IzRFY7QXRCZ3JCbEI7O0FUNW5CeUI7RUFNRztFQUNBLG9CK0IzRFY7RS9CMERVO0VBQ0EsdUIrQjNEVjtBdEJ1ckJsQjs7QVRub0J5QjtFQU1HO0VBQ0EsYytCM0RWO0UvQjBEVTtFQUNBLGlCK0IzRFY7QXRCOHJCbEI7O0FtQjFyQkk7RS9CQ0E7QVk2ckJKOztBbUIxckJJO0UvQkhBO0FZaXNCSjs7QW1CMXJCSTtFQUNJO0FuQjZyQlI7O0FtQjFyQkk7RUFDSTtBbkI2ckJSOztBbUIxckJJO0VBQ0k7QW5CNnJCUjs7QW1CMXJCSTtFQUNJLGNKeEJZO0FmcXRCcEI7O0FtQjFyQkk7RUFDSSxjekNjZTtBc0IrcUJ2Qjs7QW1CMXJCSTtFQUNJO0FuQjZyQlI7O0FtQjVxQkk7RUFDSSxjSlRnQjtBZndyQnhCOztBbUJockJJO0VBQ0ksY0pUZ0I7QWY0ckJ4Qjs7QW1CcHJCSTtFQUNJLGNKVGdCO0FmZ3NCeEI7O0FOdHVCSTtFQUNJO0VBQ0E7RUFDQTtBTXl1QlI7O0FvQnh1Qkk7RUFDSTtBcEIydUJSOztBb0J4dUJJO0VBQ0k7QXBCMnVCUjs7QW9CeHVCSTtFQUNJO0FwQjJ1QlI7O0F1QjN2Qkk7RUFDSTtBdkI4dkJSO0FScHRCSTtFK0JwQ1E7SUFPWTtFdkJxdkJ0QjtBQUNGO0FSenRCSTtFK0JuQmdCO0lBT1k7RXZCeXVCOUI7QUFDRjtBUjl0Qkk7RStCbkJnQjtJQU9ZO0V2Qjh1QjlCO0FBQ0Y7QVJudUJJO0UrQm5CZ0I7SUFPWTtFdkJtdkI5QjtBQUNGO0FScHZCSTtFK0JQZ0I7SUFHWTtFdkI0dkI5QjtBQUNGO0FSN3VCSTtFK0JwQ1E7SUFPWTtFdkI4d0J0QjtBQUNGO0FSbHZCSTtFK0JuQmdCO0lBT1k7RXZCa3dCOUI7QUFDRjtBUnZ2Qkk7RStCbkJnQjtJQU9ZO0V2QnV3QjlCO0FBQ0Y7QVJ4d0JJO0UrQlBnQjtJQUdZO0V2Qmd4QjlCO0FBQ0Y7QVJqd0JJO0UrQnBDUTtJQU9ZO0V2Qmt5QnRCO0FBQ0Y7QVJ0d0JJO0UrQm5CZ0I7SUFPWTtFdkJzeEI5QjtBQUNGO0FSdnhCSTtFK0JQZ0I7SUFHWTtFdkIreEI5QjtBQUNGO0FSaHhCSTtFK0JwQ1E7SUFPWTtFdkJpekJ0QjtBQUNGO0FSanlCSTtFK0JQZ0I7SUFHWTtFdkJ5eUI5QjtBQUNGO0FSdHlCSTtFK0J4QlE7SUFHWTtFdkIrekJ0QjtBQUNGOztBdUJseUJJO0VqQ3JDQTtFQUNBO0VBQ0E7QVUyMEJKOztBdUJweUJJO0VqQzlCQTtFQUNBO0VBQ0E7QVVzMEJKOztBdUJ0eUJJO0VBQ0k7QXZCeXlCUjs7QXVCdHlCSTtFQUNJO0F2Qnl5QlI7O0F1QnR5Qkk7RUFDSTtBdkJ5eUJSOztBdUJ0eUJJO0VBQ0k7QXZCeXlCUjs7QXVCdHlCSTtFQUNJO0F2Qnl5QlI7O0F1QnR5Qkk7RUFDSTtBdkJ5eUJSOztBdUJ0eUJJO0VBQ0k7QXZCeXlCUjs7QXVCcnlCUTs7O0VBR0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F2Qnd5Qlo7QVI5MUJJO0UrQnlESTtJQUVRO0lBQ0E7RXZCdXlCZDtBQUNGO0FScDJCSTtFK0JnRUk7SUFFUTtJQUNBO0V2QnN5QmQ7QUFDRixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zaG9wLXVpL3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1Nob3BVaS9UaGVtZS9kZWZhdWx0L3N0eWxlcy9zZXR0aW5ncy9fY29sb3Iuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Nob3AtdWkvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL3NldHRpbmdzL19mb250LnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zaG9wLXVpL3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1Nob3BVaS9UaGVtZS9kZWZhdWx0L3N0eWxlcy9zZXR0aW5ncy9fZWZmZWN0LnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zaG9wLXVpL3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1Nob3BVaS9UaGVtZS9kZWZhdWx0L3N0eWxlcy9zZXR0aW5ncy9fei1pbmRleC5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3ZlbmRvci9zcHJ5a2VyLXNob3Avc2hvcC11aS9zcmMvU3ByeWtlclNob3AvWXZlcy9TaG9wVWkvVGhlbWUvZGVmYXVsdC9zdHlsZXMvc2V0dGluZ3MvX3NwYWNpbmcuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Nob3AtdWkvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL3NldHRpbmdzL19icmVha3BvaW50LnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zaG9wLXVpL3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1Nob3BVaS9UaGVtZS9kZWZhdWx0L3N0eWxlcy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3ZlbmRvci9zcHJ5a2VyLXNob3Avc2hvcC11aS9zcmMvU3ByeWtlclNob3AvWXZlcy9TaG9wVWkvVGhlbWUvZGVmYXVsdC9zdHlsZXMvc2V0dGluZ3MvX2ltcG9ydC5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3ZlbmRvci9zcHJ5a2VyLXNob3Avc2hvcC11aS9zcmMvU3ByeWtlclNob3AvWXZlcy9TaG9wVWkvVGhlbWUvZGVmYXVsdC9zdHlsZXMvaGVscGVycy9fcmVzZXQuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Nob3AtdWkvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL2hlbHBlcnMvX2NvbG9yLnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zaG9wLXVpL3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1Nob3BVaS9UaGVtZS9kZWZhdWx0L3N0eWxlcy9oZWxwZXJzL19mb250LnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zaG9wLXVpL3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1Nob3BVaS9UaGVtZS9kZWZhdWx0L3N0eWxlcy9oZWxwZXJzL19lZmZlY3Quc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Nob3AtdWkvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL2hlbHBlcnMvX3Zpc2liaWxpdHkuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Nob3AtdWkvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL2hlbHBlcnMvX3NwYWNpbmcuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Nob3AtdWkvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL2hlbHBlcnMvX2JyZWFrcG9pbnQuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Nob3AtdWkvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL2hlbHBlcnMvX2dyaWQuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Nob3AtdWkvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL2hlbHBlcnMvX3VpLnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zaG9wLXVpL3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1Nob3BVaS9UaGVtZS9kZWZhdWx0L3N0eWxlcy9oZWxwZXJzL19pbXBvcnQuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi9zcmMvUHl6L1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL2hlbHBlcnMvX291dGxpbmUuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL2FnZW50LXdpZGdldC9zcmMvU3ByeWtlclNob3AvWXZlcy9BZ2VudFdpZGdldC9UaGVtZS9kZWZhdWx0L2NvbXBvbmVudHMvbW9sZWN1bGVzL2FnZW50LW5hdmlnYXRpb24vYWdlbnQtbmF2aWdhdGlvbi5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3ZlbmRvci9zcHJ5a2VyLXNob3AvYWdlbnQtd2lkZ2V0L3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL0FnZW50V2lkZ2V0L1RoZW1lL2RlZmF1bHQvY29tcG9uZW50cy9vcmdhbmlzbXMvYWdlbnQtY29udHJvbC1iYXIvYWdlbnQtY29udHJvbC1iYXIuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL2NoZWNrb3V0LXBhZ2Uvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvQ2hlY2tvdXRQYWdlL1RoZW1lL2RlZmF1bHQvY29tcG9uZW50cy9tb2xlY3VsZXMvc3VtbWFyeS1vdmVydmlldy9zdW1tYXJ5LW92ZXJ2aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vc3JjL1B5ei9ZdmVzL1Nob3BVaS9UaGVtZS9kZWZhdWx0L3N0eWxlcy91dGlsLnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9jbXMtc2VhcmNoLXBhZ2Uvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvQ21zU2VhcmNoUGFnZS9UaGVtZS9kZWZhdWx0L2NvbXBvbmVudHMvbW9sZWN1bGVzL3NvcnQvc29ydC5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3ZlbmRvci9zcHJ5a2VyLXNob3AvY29tcGFueS1wYWdlL3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL0NvbXBhbnlQYWdlL1RoZW1lL2RlZmF1bHQvY29tcG9uZW50cy9tb2xlY3VsZXMvYnVzaW5lc3MtdW5pdC1jaGFydC1pdGVtL2J1c2luZXNzLXVuaXQtY2hhcnQtaXRlbS5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3ZlbmRvci9zcHJ5a2VyLXNob3AvY29tcGFueS11c2VyLWFnZW50LXdpZGdldC9zcmMvU3ByeWtlclNob3AvWXZlcy9Db21wYW55VXNlckFnZW50V2lkZ2V0L1RoZW1lL2RlZmF1bHQvY29tcG9uZW50cy9tb2xlY3VsZXMvY29tcGFueS11c2VyLWxpc3QvY29tcGFueS11c2VyLWxpc3Quc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL2ZpbGUtbWFuYWdlci13aWRnZXQvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvRmlsZU1hbmFnZXJXaWRnZXQvVGhlbWUvZGVmYXVsdC9jb21wb25lbnRzL21vbGVjdWxlcy9maWxlLWRvd25sb2FkLWxpbmsvZmlsZS1kb3dubG9hZC1saW5rLnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9tZXJjaGFudC1yZWxhdGlvbi1yZXF1ZXN0LXBhZ2Uvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvTWVyY2hhbnRSZWxhdGlvblJlcXVlc3RQYWdlL1RoZW1lL2RlZmF1bHQvY29tcG9uZW50cy9tb2xlY3VsZXMvbWVyY2hhbnQtcmVsYXRpb24tcmVxdWVzdC1zdGF0dXMtbm90aWZpY2F0aW9uL21lcmNoYW50LXJlbGF0aW9uLXJlcXVlc3Qtc3RhdHVzLW5vdGlmaWNhdGlvbi5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3ZlbmRvci9zcHJ5a2VyLXNob3AvcHJpY2UtcHJvZHVjdC12b2x1bWUtd2lkZ2V0L3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1ByaWNlUHJvZHVjdFZvbHVtZVdpZGdldC9UaGVtZS9kZWZhdWx0L2NvbXBvbmVudHMvbW9sZWN1bGVzL3ZvbHVtZS1wcmljZS92b2x1bWUtcHJpY2Uuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3ByaWNlLXByb2R1Y3Qtdm9sdW1lLXdpZGdldC9zcmMvU3ByeWtlclNob3AvWXZlcy9QcmljZVByb2R1Y3RWb2x1bWVXaWRnZXQvVGhlbWUvZGVmYXVsdC9jb21wb25lbnRzL21vbGVjdWxlcy92b2x1bWUtcHJpY2UtdGFibGUvdm9sdW1lLXByaWNlLXRhYmxlLnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9wcm9kdWN0LW9wdGlvbi13aWRnZXQvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvUHJvZHVjdE9wdGlvbldpZGdldC9UaGVtZS9kZWZhdWx0L2NvbXBvbmVudHMvbW9sZWN1bGVzL3Nob3BwaW5nLWxpc3QtcHJvZHVjdC1vcHRpb24tbGlzdC9zaG9wcGluZy1saXN0LXByb2R1Y3Qtb3B0aW9uLWxpc3Quc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Byb2R1Y3QtcGFja2FnaW5nLXVuaXQtd2lkZ2V0L3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1Byb2R1Y3RQYWNrYWdpbmdVbml0V2lkZ2V0L1RoZW1lL2RlZmF1bHQvY29tcG9uZW50cy9tb2xlY3VsZXMvcGFja2FnaW5nLXVuaXQtY2FydC9wYWNrYWdpbmctdW5pdC1jYXJ0LnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9wcm9kdWN0LXJldmlldy13aWRnZXQvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvUHJvZHVjdFJldmlld1dpZGdldC9UaGVtZS9kZWZhdWx0L2NvbXBvbmVudHMvbW9sZWN1bGVzL3JhdGluZy1zZWxlY3Rvci9yYXRpbmctc2VsZWN0b3Iuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Byb2R1Y3Qtc2VhcmNoLXdpZGdldC9zcmMvU3ByeWtlclNob3AvWXZlcy9Qcm9kdWN0U2VhcmNoV2lkZ2V0L1RoZW1lL2RlZmF1bHQvY29tcG9uZW50cy9tb2xlY3VsZXMvcHJvZHVjdC1xdWljay1hZGQtZm9ybS9wcm9kdWN0LXF1aWNrLWFkZC1mb3JtLnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zYWxlcy1jb25maWd1cmFibGUtYnVuZGxlLXdpZGdldC9zcmMvU3ByeWtlclNob3AvWXZlcy9TYWxlc0NvbmZpZ3VyYWJsZUJ1bmRsZVdpZGdldC9UaGVtZS9kZWZhdWx0L2NvbXBvbmVudHMvbW9sZWN1bGVzL29yZGVyLWNvbmZpZ3VyZWQtYnVuZGxlL29yZGVyLWNvbmZpZ3VyZWQtYnVuZGxlLnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zYWxlcy1jb25maWd1cmFibGUtYnVuZGxlLXdpZGdldC9zcmMvU3ByeWtlclNob3AvWXZlcy9TYWxlc0NvbmZpZ3VyYWJsZUJ1bmRsZVdpZGdldC9UaGVtZS9kZWZhdWx0L2NvbXBvbmVudHMvbW9sZWN1bGVzL29yZGVyLWNvbmZpZ3VyZWQtYnVuZGxlLXByb2R1Y3Qvb3JkZXItY29uZmlndXJlZC1idW5kbGUtcHJvZHVjdC5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3ZlbmRvci9zcHJ5a2VyLXNob3Avc2hvcC11aS9zcmMvU3ByeWtlclNob3AvWXZlcy9TaG9wVWkvVGhlbWUvZGVmYXVsdC9jb21wb25lbnRzL21vbGVjdWxlcy9jb2xsYXBzaWJsZS1saXN0L2NvbGxhcHNpYmxlLWxpc3Quc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi9zcmMvUHl6L1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL3NldHRpbmdzL19jb2xvci5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3ZlbmRvci9zcHJ5a2VyLXNob3Avc2hvcC11aS9zcmMvU3ByeWtlclNob3AvWXZlcy9TaG9wVWkvVGhlbWUvZGVmYXVsdC9jb21wb25lbnRzL21vbGVjdWxlcy9xdW90ZS1zdGF0dXMvcXVvdGUtc3RhdHVzLnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC90YWJzLXdpZGdldC9zcmMvU3ByeWtlclNob3AvWXZlcy9UYWJzV2lkZ2V0L1RoZW1lL2RlZmF1bHQvY29tcG9uZW50cy9tb2xlY3VsZXMvc2VhcmNoLXRhYnMvc2VhcmNoLXRhYnMuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi92ZW5kb3Ivc3ByeWtlci1zaG9wL3Nob3AtdWkvc3JjL1NwcnlrZXJTaG9wL1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL3V0aWxzL19zcGFjaW5nLnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zaG9wLXVpL3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1Nob3BVaS9UaGVtZS9kZWZhdWx0L3N0eWxlcy91dGlscy9fdGV4dC5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3ZlbmRvci9zcHJ5a2VyLXNob3Avc2hvcC11aS9zcmMvU3ByeWtlclNob3AvWXZlcy9TaG9wVWkvVGhlbWUvZGVmYXVsdC9zdHlsZXMvdXRpbHMvX2Zsb2F0LnNjc3MiLCJ3ZWJwYWNrOi8vc3ByeWtlci1iMmItZGVtby1zaG9wLy4vdmVuZG9yL3NwcnlrZXItc2hvcC9zaG9wLXVpL3NyYy9TcHJ5a2VyU2hvcC9ZdmVzL1Nob3BVaS9UaGVtZS9kZWZhdWx0L3N0eWxlcy91dGlscy9fdmlzaWJpbGl0eS5zY3NzIiwid2VicGFjazovL3NwcnlrZXItYjJiLWRlbW8tc2hvcC8uL3NyYy9QeXovWXZlcy9TaG9wVWkvVGhlbWUvZGVmYXVsdC9zdHlsZXMvc2V0dGluZ3MvX3NwYWNpbmcuc2NzcyIsIndlYnBhY2s6Ly9zcHJ5a2VyLWIyYi1kZW1vLXNob3AvLi9zcmMvUHl6L1l2ZXMvU2hvcFVpL1RoZW1lL2RlZmF1bHQvc3R5bGVzL3V0aWxzL192aXNpYmlsaXR5LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWZpbmVzIHRoZSBtYWluIGNvbG9yIG9mIHRoZSBzaG9wIHRoZW1lLiBVc2FnZTogcHJpbWFyeSBlbGVtZW50cycgYmFja2dyb3VuZCBhbmQgY29sb3IuXG4gKi9cbiRzZXR0aW5nLWNvbG9yLW1haW46ICMxNDc5YmQgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyBhbHRlcm5hdGl2ZSBjb2xvciBvZiB0aGUgc2hvcCB0aGVtZS4gVXNhZ2U6IHNlY29uZGFyeSBlbGVtZW50cycgYmFja2dyb3VuZCBhbmQgY29sb3IuXG4gKi9cbiRzZXR0aW5nLWNvbG9yLWFsdDogI2UyNjk0YSAhZGVmYXVsdDtcblxuLyoqXG4gKiBEZWZpbmVzIHdoaXRlIGNvbG9yLiBVc2FnZTogbm90IHRyYW5zcGFyZW50IGVsZW1lbnRzJyBiYWNrZ3JvdW5kIG9mIGRlZmF1bHQgYmFja2dyb3VuZC5cbiAqL1xuJHNldHRpbmctY29sb3Itd2hpdGU6ICNmZmZmZmYgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyBhIGxpZ2h0IHNoYWRlIGNvbG9yLiBVc2FnZTogZWxlbWVudHMnIGJhY2tncm91bmQsIGJvcmRlcnMgYW5kIHRleHQuXG4gKi9cbiRzZXR0aW5nLWNvbG9yLWxpZ2h0OiAjZGFkYWRhICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgYSBsaWdodGVyIHNoYWRlIGNvbG9yLiBVc2FnZTogZWxlbWVudHMnIGJhY2tncm91bmQsIGJvcmRlcnMgYW5kIHRleHQuXG4gKi9cbiRzZXR0aW5nLWNvbG9yLWxpZ2h0ZXI6ICNmMGYwZjAgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgbGlnaHRlc3Qgc2hhZGUgY29sb3IuIFVzYWdlOiBlbGVtZW50cycgYmFja2dyb3VuZCwgYm9yZGVycyBhbmQgdGV4dC5cbiAqL1xuJHNldHRpbmctY29sb3ItbGlnaHRlc3Q6ICNmNGY0ZjQgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgc2hhZGUgb2YgdGhlIGJsYWNrIGNvbG9yLiBVc2FnZTogYXMgYSBiYXNlIG9mIGJsYWNrIGNvbG9yIGZvciBzZW1pLXRyYW5zcGFyZW50IGVsZW1lbnRzLlxuICovXG4kc2V0dGluZy1jb2xvci1ibGFjazogIzAwMDAwMCAhZGVmYXVsdDtcblxuLyoqXG4gKiBEZWZpbmVzIGEgZGFyayBzaGFkZSBjb2xvci4gVXNhZ2U6IGVsZW1lbnRzJyB0ZXh0IGNvbG9yIHZhcmlhbnQuXG4gKi9cbiRzZXR0aW5nLWNvbG9yLWRhcms6ICNiYmJiYmIgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyBhIGRhcmtlciBzaGFkZSBjb2xvci4gVXNhZ2U6IGVsZW1lbnRzJyB0ZXh0IGNvbG9yIHZhcmlhbnQuXG4gKi9cbiRzZXR0aW5nLWNvbG9yLWRhcmtlcjogIzU5NTk1OSAhZGVmYXVsdDtcblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBkYXJrZXN0IHNoYWRlIGNvbG9yLiBVc2FnZTogZWxlbWVudHMnIHRleHQgY29sb3IgdmFyaWFudC5cbiAqL1xuJHNldHRpbmctY29sb3ItZGFya2VzdDogIzMzMzMzMyAhZGVmYXVsdDtcblxuLyoqXG4gKiBEZWZpbmVzIGEgdHJhbnNwYXJlbnQgY29sb3IuIFVzYWdlOiBlbGVtZW50cycgYmFja2dyb3VuZCwgYm9yZGVyLlxuICovXG4kc2V0dGluZy1jb2xvci10cmFuc3BhcmVudDogcmdiYSgkc2V0dGluZy1jb2xvci13aGl0ZSwgMCkgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgbWFpbiBiYWNrZ3JvdW5kIGNvbG9yLiBVc2FnZTogYm9keSBhbmQgc2lkZS1kcmF3ZXIgYmFja2dyb3VuZC5cbiAqL1xuJHNldHRpbmctY29sb3ItYmc6ICRzZXR0aW5nLWNvbG9yLXdoaXRlICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgdGhlIG1haW4gY29sb3Igb2YgdGV4dC4gVXNhZ2U6IGRlZmF1bHQgZ2xvYmFsIHRleHQgY29sb3IuXG4gKi9cbiRzZXR0aW5nLWNvbG9yLXRleHQ6ICRzZXR0aW5nLWNvbG9yLWRhcmtlc3QgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyBhIGRlZmF1bHQgZ2xvYmFsIGJvcmRlciBjb2xvciBmb3IgdGhlIGlucHV0IGVsZW1lbnRzLlxuICovXG4kc2V0dGluZy1jb2xvci1pbnB1dC1ib3JkZXI6ICRzZXR0aW5nLWNvbG9yLWxpZ2h0ICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgYSBkZWZhdWx0IGdsb2JhbCBib3JkZXIgY29sb3IgZm9yIHRoZSBpbnB1dCBlbGVtZW50cyBvbiBmb2N1cyBldmVudC5cbiAqL1xuJHNldHRpbmctY29sb3ItaW5wdXQtYm9yZGVyLWZvY3VzOiAkc2V0dGluZy1jb2xvci1kYXJrICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgYSBzaGFkb3cgc2hhZGUgYW5kIHRyYW5zcGFyZW5jeSBmb3IgdGhlIHNoYWRvd2VkIGVsZW1lbnRzLlxuICovXG4kc2V0dGluZy1jb2xvci1zaGFkb3c6IHJnYmEoJHNldHRpbmctY29sb3ItYmxhY2ssIDAuMSkgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyBhIGRlZmF1bHQgb3ZlcmxheSBjb2xvci4gVXNhZ2U6IGVsZW1lbnRzIHdpdGggb3ZlcmxheSAtIHNpZGUtZHJhd2VyLCBwb3B1cHMgZXRjLlxuICovXG4kc2V0dGluZy1jb2xvci1vdmVybGF5OiByZ2JhKCRzZXR0aW5nLWNvbG9yLWJsYWNrLCAwLjMpICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgYSBkZWZhdWx0IGltYWdlIG92ZXJsYXkgY29sb3IuIFVzYWdlOiBpbWFnZXMgd2l0aCBvdmVybGF5IC0gbGF6eS1pbWFnZS5cbiAqL1xuJHNldHRpbmctY29sb3ItaW1hZ2Utb3ZlcmxheTogcmdiYSgkc2V0dGluZy1jb2xvci1ibGFjaywgMC4wNSkgIWRlZmF1bHQ7XG5cbiRzZXR0aW5nLWNvbG9yLWxpZ2h0LWJsdWU6ICNlYWYxZmE7XG5cbiRzZXR0aW5nLWNvbG9yLWJsdWU6ICMwMDY0YjQ7XG5cbi8qKlxuICogRGVmaW5lcyBhY3Rpb24gY29sb3JzIG1hcC5cbiAqL1xuJHNldHRpbmctY29sb3ItYWN0aW9uczogKFxuICAgIHN1Y2Nlc3M6ICMyYzgxNjgsXG4gICAgd2FybmluZzogI2YyOTEzMyxcbiAgICBhbGVydDogI2IyMTcxYSxcbikgIWRlZmF1bHQ7XG4iLCIvKipcbiAqIERlZmluZXMgZm9udCBmYW1pbHkgc2V0dGluZy4gVXNhZ2U6IGJvZHkgZ2xvYmFsIGZvbnQgc3R5bGVzLlxuICovXG4kc2V0dGluZy1mb250LWZhbWlseTogJ0FyaWFsJywgc2Fucy1zZXJpZiAhZGVmYXVsdDtcblxuLyoqXG4gKiBEZWZpbmVzIGZvbnQgZmFtaWx5IHNldHRpbmcgZm9yIGNvZGUuIENhbiBiZSB1c2VkIGZvciBjb2RlIGFuZCBwcmUgZWxlbWVudHMuXG4gKi9cbiRzZXR0aW5nLWZvbnQtZmFtaWx5LWNvZGU6ICdNZW5sbycsIG1vbm9zcGFjZSAhZGVmYXVsdDtcblxuLyoqXG4gKiBEZWZpbmVzIGJhc2ljIGZvbnQgc2l6ZS4gVXNhZ2U6IGdsb2JhbCBiYXNpYyBmb250IHNpemUuXG4gKi9cbiRzZXR0aW5nLWZvbnQtc2l6ZS1iYXNlOiAxNnB4ICFkZWZhdWx0O1xuXG4vKipcbiAqIEZvbnQgc2l6ZSB2YWx1ZXMgbWFwLiBVc2FnZTogbWl4aW5zIHByb3ZpZGluZyBzdHlsZXMgZm9yIGhlYWRpbmdzLCB0ZXh0IGVsZW1lbnRzIGV0Yy5cbiAqL1xuJHNldHRpbmctZm9udC1zaXplOiAoXG4gICAgMTogMzhweCxcbiAgICAyOiAzNHB4LFxuICAgIDM6IDMwcHgsXG4gICAgNDogMjZweCxcbiAgICA1OiAyMnB4LFxuICAgIDY6IDE4cHgsXG4gICAgYmlnOiAxNnB4LFxuICAgIGRlZmF1bHQ6IDE0cHgsXG4gICAgc21hbGw6IDEycHgsXG4pICFkZWZhdWx0O1xuXG4vKipcbiAqIEZvbnQgd2VpZ2h0IHZhbHVlcyBtYXAuIFVzYWdlOiBtaXhpbiB0byBzZXQgZm9udCB3ZWlnaHQgcHJvcGVydHkuXG4gKi9cbiRzZXR0aW5nLWZvbnQtd2VpZ2h0OiAoXG4gICAgbGlnaHQ6IDMwMCxcbiAgICByZWd1bGFyOiA0MDAsXG4gICAgYm9sZDogOTAwLFxuKSAhZGVmYXVsdDtcblxuLyoqXG4gKiBGb250IGxpbmUgaGVpZ2h0IHZhbHVlcyBtYXAuIFVzYWdlOiBtaXhpbnMgcHJvdmlkaW5nIHN0eWxlcyBmb3IgaGVhZGluZ3MsIHRleHQgZWxlbWVudHMgZXRjLlxuICovXG4kc2V0dGluZy1mb250LWxpbmUtaGVpZ2h0OiAoXG4gICAgMTogMS4xLFxuICAgIDI6IDEuMixcbiAgICAzOiAxLjQsXG4gICAgNDogMS40LFxuICAgIDU6IDEuNCxcbiAgICA2OiAxLjQsXG4gICAgZGVmYXVsdDogMS41LFxuICAgIHRpZ2h0OiAxLjEsXG4pICFkZWZhdWx0O1xuIiwiLyoqXG4gKiBEZWZpbmVzIGEgZGVmYXVsdCBkdXJhdGlvbiB2YWx1ZSBmb3IgdGhlIGFuaW1hdGlvbiBlZmZlY3RzLiBVc2FnZTogbWl4aW5zIHByb3ZpZGluZyBhbmltYXRpb24gcHJvcGVydGllcy5cbiAqL1xuJHNldHRpbmctZWZmZWN0LWRlZmF1bHQtZHVyYXRpb246IDI1MG1zICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgYSBkZWZhdWx0IHRpbWluZyBmdW5jdGlvbiBmb3IgdGhlIGFuaW1hdGlvbiBlZmZlY3RzLiBVc2FnZTogbWl4aW5zIHByb3ZpZGluZyBhbmltYXRpb24gcHJvcGVydGllcy5cbiAqL1xuJHNldHRpbmctZWZmZWN0LWRlZmF1bHQtZWFzZTogZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG4iLCIvKipcbiAqIERlZmluZXMgZGVmYXVsdCB6LWluZGV4IHZhbHVlLlxuICovXG4kc2V0dGluZy16aS1lbGVtZW50OiAxICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgei1pbmRleCB2YWx1ZSBmb3IgYWpheCBkeW5hbWljIGxvYWRlci5cbiAqL1xuJHNldHRpbmctemktYWpheC1keW5hbWljLWxvYWRlcjogMzAwICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgei1pbmRleCB2YWx1ZSBmb3IgdGhlIGZsb2F0aW5nIGVsZW1lbnRzLlxuICovXG4kc2V0dGluZy16aS1lbGVtZW50LWZsb2F0aW5nOiAzNTAgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyB6LWluZGV4IHZhbHVlIGZvciB0aGUgaGVhZGVyIGNvbnRleHQuXG4gKi9cbiRzZXR0aW5nLXppLWhlYWRlcjogNDAwICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgei1pbmRleCB2YWx1ZSBmb3IgdGhlIHNpZGUgZHJhd2VyIGNvbnRleHQuXG4gKi9cbiRzZXR0aW5nLXppLXNpZGUtZHJhd2VyOiA1MDAgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyB6LWluZGV4IHZhbHVlIGZvciB0aGUgcG9wdXAuXG4gKi9cbiRzZXR0aW5nLXppLXBvcHVwOiA1NTAgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyB6LWluZGV4IHZhbHVlIGZvciB0aGUgb3ZlcmxheS5cbiAqL1xuJHNldHRpbmctemktb3ZlcmxheTogNTUwICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgei1pbmRleCB2YWx1ZSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBhcmVhIGNvbnRleHQuXG4gKi9cbiRzZXR0aW5nLXppLW5vdGlmaWNhdGlvbi1hcmVhOiA2MDAgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyB6LWluZGV4IHZhbHVlIGZvciB0aGUgc2VhcmNoIHN1Z2dlc3Rpb25zIGNvbnRleHQuXG4gKi9cbiRzZXR0aW5nLXppLXNlYXJjaC1zdWdnZXN0aW9uczogNzAwICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgei1pbmRleCB2YWx1ZSBmb3IgdGhlIGFqYXggbG9hZGVyLlxuICovXG4kc2V0dGluZy16aS1hamF4LWxvYWRlcjogNzUwICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgei1pbmRleCB2YWx1ZSBmb3IgdGhlIHRvcCBuYXZpZ2F0aW9uIGNvbnRleHQuXG4gKi9cbiRzZXR0aW5nLXppLW5hdmlnYXRpb24tdG9wOiA4MDAgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyB6LWluZGV4IHZhbHVlIGZvciB0aGUgc2tpcCB0byBjb250ZW50IGxpbmsgY29udGV4dC5cbiAqL1xuJHNldHRpbmctemktc2tpcC1saW5rOiA5MDAgIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmaW5lcyB6LWluZGV4IHZhbHVlIGZvciBsYXllciB1bmRlciBtYWluIGNvbnRlbnQuXG4gKi9cbiRzZXR0aW5nLXppLXVuZGVyLWxheWVyOiAtMSAhZGVmYXVsdDtcbiIsIi8qKlxuICogRGVmaW5lcyBzcGFjaW5nIHZhbHVlcyBtYXAuIFVzYWdlOiBzcGFjaW5nIGhlbHBlcnMgYW5kIG1peGlucy5cbiAqL1xuJHNldHRpbmctc3BhY2luZzogKFxuICAgIGJpZzogMXJlbSxcbiAgICBkZWZhdWx0OiAwLjVyZW0sXG4gICAgc21hbGw6IDAuMjVyZW0sXG4gICAgcmVzZXQ6IDAsXG4pICFkZWZhdWx0O1xuIiwiLyoqXG4gKiBEZWZpbmVzIGJyZWFrcG9pbnRzJyB2YWx1ZXMgZm9yIHJlc3BvbnNpdmUuXG4gKi9cbiRzZXR0aW5nLWJyZWFrcG9pbnRzOiAoXG4gICAgc206IChcbiAgICAgICAgMCxcbiAgICAgICAgNTQ5cHgsXG4gICAgKSxcbiAgICBtZDogKFxuICAgICAgICA1NTBweCxcbiAgICAgICAgNzY5cHgsXG4gICAgKSxcbiAgICBsZzogKFxuICAgICAgICA3NzBweCxcbiAgICAgICAgOTY5cHgsXG4gICAgKSxcbiAgICB4bDogKFxuICAgICAgICA5NzBweCxcbiAgICApLFxuKSAhZGVmYXVsdDtcbiIsIi8qKlxuICogRGVmaW5lcyBncmlkIHN5c3RlbSBjb2x1bW5zIGNvdW50LlxuICovXG4kc2V0dGluZy1ncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgZ3JpZCBjb250YWluZXIgbWF4IHdpZHRoLlxuICovXG4kc2V0dGluZy1ncmlkLW1heC13aWR0aDogMTE2MHB4ICFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmluZXMgZ3V0dGVycycgc2l6ZSBmb3IgZ3JpZCBcIndpdGgtZ3V0dGVyXCIgbW9kaWZpZXIuXG4gKi9cbiRzZXR0aW5nLWdyaWQtZ3V0dGVyOiAwICFkZWZhdWx0O1xuIiwiLyoqXG4gKiBEZWZpbmVzIGltcG9ydCBibGFja2xpc3QuIFVzYWdlOiBpbXBvcnQgaGVscGVyLlxuICovXG4kc2V0dGluZy1pbXBvcnQtYmxhY2tsaXN0OiAoKTtcbiIsIi8qKlxuICogUHJvdmlkZXMgbGlzdCBvZiBwcm9wZXJpZXMgZm9yIHJlc2V0IHVzYWdlLlxuICovXG5AbWl4aW4gaGVscGVyLXJlc2V0IHtcbiAgICAvLyBodHRwczovL3d3dy5wYXVsaXJpc2guY29tLzIwMTIvYm94LXNpemluZy1ib3JkZXItYm94LWZ0dy9cbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgkc2V0dGluZy1jb2xvci13aGl0ZSwgMCk7XG5cbiAgICBAY29udGVudDtcbn1cbiIsIi8qKlxuICogV3JhcHBlciBmdW5jdGlvbiBmb3IgdGhlIGRhcmtlbiBzYXNzIGZ1bmN0aW9uIHdpdGggYSBkZWZhdWx0IGRlZ3JlZSBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0NvbG9yfSAkc2V0dGluZy1jb2xvclxuICogQHBhcmFtIHtOdW1iZXJ9ICRkZWdyZWUgWzEwXVxuICovXG5AZnVuY3Rpb24gaGVscGVyLWNvbG9yLWRhcmsoJHNldHRpbmctY29sb3IsICRkZWdyZWU6IDEwKSB7XG4gICAgQHJldHVybiBkYXJrZW4oJHNldHRpbmctY29sb3IsICRkZWdyZWUpO1xufVxuXG4vKipcbiAqIFdyYXBwZXIgZnVuY3Rpb24gZm9yIHRoZSBsaWdodGVuIHNhc3MgZnVuY3Rpb24gd2l0aCBhIGRlZmF1bHQgZGVncmVlIHBhcmFtZXRlci5cbiAqIEBwYXJhbSB7Q29sb3J9ICRzZXR0aW5nLWNvbG9yXG4gKiBAcGFyYW0ge051bWJlcn0gJGRlZ3JlZSBbMTBdXG4gKi9cbkBmdW5jdGlvbiBoZWxwZXItY29sb3ItbGlnaHQoJHNldHRpbmctY29sb3IsICRkZWdyZWU6IDM1KSB7XG4gICAgQHJldHVybiBsaWdodGVuKCRzZXR0aW5nLWNvbG9yLCAkZGVncmVlKTtcbn1cbiIsIi8qKlxuICogU2V0cyBmb250LXNpemUgcHJvcGVydHkgZnJvbSBmb250IHNpemUgc2V0dGluZ3MgbWFwIC0gJHNldHRpbmctZm9udC1zaXplIGFjY29yZGluZyB0byB0aGUgcGFzc2VkIG1hcCBrZXkuXG4gKiBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHNpemVcbiAqL1xuQG1peGluIGhlbHBlci1mb250LXNpemUoJHNpemUpIHtcbiAgICBmb250LXNpemU6IG1hcC1nZXQoJHNldHRpbmctZm9udC1zaXplLCAkc2l6ZSk7XG5cbiAgICBAY29udGVudDtcbn1cblxuLyoqXG4gKiBTZXRzIGZvbnQtd2VpZ2h0IHByb3BlcnR5IGZyb20gZm9udCB3ZWlnaHQgc2V0dGluZ3MgbWFwIC0gJHNldHRpbmctZm9udC13ZWlnaHQgYWNjb3JkaW5nIHRvIHRoZSBwYXNzZWQgbWFwIGtleS5cbiAqIEBwYXJhbSB7U3RyaW5nfSAkd2VpZ2h0XG4gKi9cbkBtaXhpbiBoZWxwZXItZm9udC13ZWlnaHQoJHdlaWdodCkge1xuICAgIGZvbnQtd2VpZ2h0OiBtYXAtZ2V0KCRzZXR0aW5nLWZvbnQtd2VpZ2h0LCAkd2VpZ2h0KTtcblxuICAgIEBjb250ZW50O1xufVxuXG4vKipcbiAqIFNldHMgbGluZS1oZWlnaHQgcHJvcGVydHkgZnJvbSBsaW5lLWhlaWdodCBzZXR0aW5ncyBtYXAgLSAkc2V0dGluZy1mb250LWxpbmUtaGVpZ2h0IGFjY29yZGluZyB0byB0aGUgcGFzc2VkIG1hcCBrZXkuXG4gKiBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGhlaWdodFxuICovXG5AbWl4aW4gaGVscGVyLWZvbnQtbGluZS1oZWlnaHQoJGhlaWdodCkge1xuICAgIGxpbmUtaGVpZ2h0OiBtYXAtZ2V0KCRzZXR0aW5nLWZvbnQtbGluZS1oZWlnaHQsICRoZWlnaHQpO1xuXG4gICAgQGNvbnRlbnQ7XG59XG4iLCIvKipcbiAqIFBvdmlkZXMgdHJhbnNpdGlvbiBwcm9wZXJ0eSBjb25maWd1cmVkIGJ5IHRoZSBwYXNzZWQgcGFyYW1ldGVycy5cbiAqIEBwYXJhbSB7U3RyaW5nfSAkcHJvcHNcbiAqIEBwYXJhbSB7TnVtYmVyfSAkZHVyYXRpb24gWyRzZXR0aW5nLWVmZmVjdC1kZWZhdWx0LWR1cmF0aW9uXVxuICogQHBhcmFtIHtTdHJpbmd9ICRlYXNlIFskc2V0dGluZy1lZmZlY3QtZGVmYXVsdC1lYXNlXVxuICovXG5AbWl4aW4gaGVscGVyLWVmZmVjdC10cmFuc2l0aW9uKFxuICAgICRwcm9wczogb3BhY2l0eSB2aXNpYmlsaXR5LFxuICAgICRkdXJhdGlvbjogJHNldHRpbmctZWZmZWN0LWRlZmF1bHQtZHVyYXRpb24sXG4gICAgJGVhc2U6ICRzZXR0aW5nLWVmZmVjdC1kZWZhdWx0LWVhc2Vcbikge1xuICAgICR0cmFuc2l0aW9uOiBudWxsO1xuXG4gICAgQGVhY2ggJHByb3AgaW4gJHByb3BzIHtcbiAgICAgICAgJHRyYW5zaXRpb246ICRwcm9wICRkdXJhdGlvbiAkZWFzZSwgJHRyYW5zaXRpb247XG4gICAgfVxuICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuXG4gICAgQGNvbnRlbnQ7XG59XG4iLCIvKipcbiAqIEZvcmNlcyBlbGVtZW50IHZpc2liaWxpdHkuXG4gKi9cbkBtaXhpbiBoZWxwZXItdmlzaWJpbGl0eS12aXNpYmxlIHtcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgb3BhY2l0eTogMTtcblxuICAgIEBjb250ZW50O1xufVxuXG4vKipcbiAqIEZvcmNlcyBlbGVtZW50IGludmlzaWJpbGl0eS5cbiAqL1xuQG1peGluIGhlbHBlci12aXNpYmlsaXR5LWludmlzaWJsZSB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIG9wYWNpdHk6IDA7XG5cbiAgICBAY29udGVudDtcbn1cblxuLyoqXG4gKiBGb3JjZXMgZWxlbWVudCBpbnZpc2liaWxpdHkgd2l0aCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQuXG4gKi9cbkBtaXhpbiBoZWxwZXItYWNjZXNzaWJsZS12aXNpYmlsaXR5LWludmlzaWJsZSB7XG4gICAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIEBjb250ZW50O1xufVxuXG4vKipcbiAqIEZvcmNlcyBlbGVtZW50IHZpc2liaWxpdHkgd2l0aCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQuXG4gKi9cbkBtaXhpbiBoZWxwZXItYWNjZXNzaWJsZS12aXNpYmlsaXR5LXZpc2libGUge1xuICAgIGNsaXA6IGF1dG87XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG5cbiAgICBAY29udGVudDtcbn1cbiIsIi8qKlxuICogUHJvdmlkZXMgZ2xvYmFsIGNsYXNzIG5hbWVzIHdpdGggc3BhY2luZyBwcm9wZXJ0aWVzIHNldCBmcm9tICRzZXR0aW5nLXNwYWNpbmcgbWFwLlxuICogQHBhcmFtIHtTdHJpbmd9ICRuYW1lIE1haW4gc2VsZWN0b3IgbmFtZS5cbiAqIEBwYXJhbSB7TGlzdH0gJHNpZGVzIFtbXV0gTGlzdCBvZiBzaWRlcyB0byBzZXQgcHJvcGVydGllcy5cbiAqL1xuQG1peGluIGhlbHBlci1zcGFjaW5nKCRuYW1lLCAkc2lkZXM6IFtdKSB7XG4gICAgQGluY2x1ZGUgaGVscGVyLXNwYWNpbmctb3V0ZXIoJG5hbWUsICRzaWRlcyk7XG4gICAgQGluY2x1ZGUgaGVscGVyLXNwYWNpbmctaW5uZXIoJG5hbWUsICRzaWRlcyk7XG59XG5cbkBtaXhpbiBoZWxwZXItc3BhY2luZy1vdXRlcigkbmFtZSwgJHNpZGVzKSB7XG4gICAgI3skbmFtZX0ge1xuICAgICAgICBAZWFjaCAkc3BhY2luZy1uYW1lLCAkc3BhY2luZy12YWx1ZSBpbiAkc2V0dGluZy1zcGFjaW5nIHtcbiAgICAgICAgICAgIEBpZiAkc3BhY2luZy1uYW1lID09ICdkZWZhdWx0JyB7XG4gICAgICAgICAgICAgICAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nLXZhbHVlO1xuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAZWFjaCAkc2lkZSBpbiAkc2lkZXMge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLSN7JHNpZGV9OiAkc3BhY2luZy12YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICYtLSN7JHNwYWNpbmctbmFtZX0ge1xuICAgICAgICAgICAgICAgICAgICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nLXZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBlYWNoICRzaWRlIGluICRzaWRlcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLSN7JHNpZGV9OiAkc3BhY2luZy12YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGhlbHBlci1zcGFjaW5nLWlubmVyKCRuYW1lLCAkc2lkZXMpIHtcbiAgICAjeyRuYW1lfS0taW5uZXIge1xuICAgICAgICBAZWFjaCAkc3BhY2luZy1uYW1lLCAkc3BhY2luZy12YWx1ZSBpbiAkc2V0dGluZy1zcGFjaW5nIHtcbiAgICAgICAgICAgIEBpZiAkc3BhY2luZy1uYW1lID09ICdkZWZhdWx0JyB7XG4gICAgICAgICAgICAgICAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLXZhbHVlO1xuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAZWFjaCAkc2lkZSBpbiAkc2lkZXMge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLSN7JHNpZGV9OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy0jeyRzaWRlfTogJHNwYWNpbmctdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBAYXQtcm9vdCAjeyRuYW1lfS0taW5uZXIjeyRuYW1lfS0tI3skc3BhY2luZy1uYW1lfSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAwIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLXZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBlYWNoICRzaWRlIGluICRzaWRlcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLSN7JHNpZGV9OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctI3skc2lkZX06ICRzcGFjaW5nLXZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBSZXR1cm5zIDAgb3IgdGhlIGZpcnN0IHZhbHVlIGZyb20gdGhlICRlZGdlcyBsaXN0LlxuICogQHBhcmFtIHtMaXN0fSAkZWRnZXMgWyRzZXR0aW5nLWJyZWFrcG9pbnRzXSBMaXN0IGxlbmd0aCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyLlxuICogQHJldHVybiB7QmFzZX1cbiAqL1xuQGZ1bmN0aW9uIGhlbHBlci1icmVha3BvaW50LWVkZ2UtbWluKCRlZGdlcykge1xuICAgIEBpZiBsZW5ndGgoJGVkZ2VzKSA+IDAge1xuICAgICAgICBAcmV0dXJuIG50aCgkZWRnZXMsIDEpO1xuICAgIH1cblxuICAgIEByZXR1cm4gMDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIG51bGwgb3IgdGhlIGxhc3QgdmFsdWUgZnJvbSB0aGUgJGVkZ2VzIGxpc3QuXG4gKiBAcGFyYW0ge0xpc3R9ICRlZGdlcyBbJHNldHRpbmctYnJlYWtwb2ludHNdIExpc3QgbGVuZ3RoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDIuXG4gKiBAcmV0dXJuIHtCYXNlfVxuICovXG5AZnVuY3Rpb24gaGVscGVyLWJyZWFrcG9pbnQtZWRnZS1tYXgoJGVkZ2VzKSB7XG4gICAgQGlmIGxlbmd0aCgkZWRnZXMpID4gMSB7XG4gICAgICAgIEByZXR1cm4gbnRoKCRlZGdlcywgMik7XG4gICAgfVxuXG4gICAgQHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFNldHMgc2NyZWVuIG1lZGlhIHF1ZXJ5IHdpdGggbWluLXdpZHRoIHNldCB0byAkbWluIHBhcmFtZXRlci5cbiAqIEBwYXJhbSAkbWluIHtOdW1iZXJ9IFswXVxuICogQGNvbnRlbnQgRXh0ZW5kcyBtaXhpbiB3aXRoIHByb3BlcnRpZXMgZm9yIG1lZGlhIHF1ZXJ5LlxuICovXG5AbWl4aW4gaGVscGVyLWJyZWFrcG9pbnQtbWVkaWEtbWluKCRtaW46IDApIHtcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIFNldHMgc2NyZWVuIG1lZGlhIHF1ZXJ5IHdpdGggYnJlYWtwb2ludHMgcmFuZ2UgcGFzc2VkIGFzIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0ge051bWJlcn0gJG1pbiBbMF1cbiAqIEBwYXJhbSB7TnVtYmVyfSAkbWF4IFskc2V0dGluZy1ncmlkLW1heC13aWR0aF1cbiAqIEBjb250ZW50IEV4dGVuZHMgbWl4aW4gd2l0aCBwcm9wZXJ0aWVzIGZvciBtZWRpYSBxdWVyeS5cbiAqL1xuQG1peGluIGhlbHBlci1icmVha3BvaW50LW1lZGlhLWJldHdlZW4oJG1pbjogMCwgJG1heDogJHNldHRpbmctZ3JpZC1tYXgtd2lkdGgpIHtcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBTZXRzIHNjcmVlbiBtZWRpYSBxdWVyeSB3aXRoIG1heC13aWR0aCBzZXQgdG8gJG1heCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge051bWJlcn0gJG1heCBbJHNldHRpbmctZ3JpZC1tYXgtd2lkdGhdXG4gKiBAY29udGVudCBFeHRlbmRzIG1peGluIHdpdGggcHJvcGVydGllcyBmb3IgbWVkaWEgcXVlcnkuXG4gKi9cbkBtaXhpbiBoZWxwZXItYnJlYWtwb2ludC1tZWRpYS1tYXgoJG1heDogJHNldHRpbmctZ3JpZC1tYXgtd2lkdGgpIHtcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIFNldHMgc2NyZWVuIG1lZGlhIHF1ZXJ5IHdpdGggYnJlYWtwb2ludHMgcmFuZ2UgcGFzc2VkIHRvIHBhcmFtZXRlcnMgb3JcbiAqIHdpdGggbWluLXdpZHRoIHF1ZXJ5IGlmIG9ubHkgb25lIHBhcmFtZXRlciBpcyBwYXNzZWQuXG4gKiBAcGFyYW0ge051bWJlcn0gJG1heCBbJHNldHRpbmctZ3JpZC1tYXgtd2lkdGhdXG4gKiBAY29udGVudCBFeHRlbmRzIG1peGluIHdpdGggcHJvcGVydGllcyBmb3IgbWVkaWEgcXVlcnkuXG4gKi9cbkBtaXhpbiBoZWxwZXItYnJlYWtwb2ludCgkbWluLWJwLCAkbWF4LWJwOiBudWxsKSB7XG4gICAgJGVkZ2VzLW1pbjogbWFwLWdldCgkc2V0dGluZy1icmVha3BvaW50cywgJG1pbi1icCk7XG4gICAgJGVkZ2UtbWluOiBoZWxwZXItYnJlYWtwb2ludC1lZGdlLW1pbigkZWRnZXMtbWluKTtcblxuICAgIEBpZiAkbWF4LWJwID09IG51bGwge1xuICAgICAgICBAaW5jbHVkZSBoZWxwZXItYnJlYWtwb2ludC1tZWRpYS1taW4oJGVkZ2UtbWluKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICAkZWRnZXMtbWF4OiBtYXAtZ2V0KCRzZXR0aW5nLWJyZWFrcG9pbnRzLCAkbWF4LWJwKTtcbiAgICAgICAgJGVkZ2UtbWF4OiBoZWxwZXItYnJlYWtwb2ludC1lZGdlLW1heCgkZWRnZXMtbWF4KTtcblxuICAgICAgICBAaWYgJGVkZ2UtbWF4ID09IG51bGwge1xuICAgICAgICAgICAgQGluY2x1ZGUgaGVscGVyLWJyZWFrcG9pbnQtbWVkaWEtbWluKCRlZGdlLW1pbikge1xuICAgICAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGhlbHBlci1icmVha3BvaW50LW1lZGlhLWJldHdlZW4oJGVkZ2UtbWluLCAkZWRnZS1tYXgpIHtcbiAgICAgICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogUmV0dXJucyBjb2x1bW4gcmF0aW8gaW4gcmVsYXRpb24gdG8gY29sdW1ucyBjb3VudC5cbiAqIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1uXG4gKiBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgWyRzZXR0aW5nLWdyaWQtY29sdW1uc11cbiAqIEByZXR1cm4ge051bWJlcn1cbiAqL1xuQGZ1bmN0aW9uIGhlbHBlci1ncmlkLXNwYW4oJGNvbHVtbiwgJGNvbHVtbnM6ICRzZXR0aW5nLWdyaWQtY29sdW1ucykge1xuICAgIEByZXR1cm4gY2FsYygoMTAwJSAvICN7JGNvbHVtbnN9KSAqICN7JGNvbHVtbn0pO1xufVxuIiwiLyoqXG4gKiBBZGRzIGNsZWFyaW5nIGZvciBlbGVtZW50IHdpdGggZmxvYXRlZCBjaGlsZCBlbGVtZW50cy5cbiAqL1xuQG1peGluIGhlbHBlci11aS1jbGVhcmZpeCB7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cblxuICAgIEBjb250ZW50O1xufVxuXG4vKipcbiAqIEFkZHMgYSBib3gtc2hhZG93IHdpdGggYmFzaWMgdmFsdWVzLlxuICovXG5AbWl4aW4gaGVscGVyLXVpLXNoYWRvdygpIHtcbiAgICBib3gtc2hhZG93OiAwIDJweCA1cHggMXB4ICRzZXR0aW5nLWNvbG9yLXNoYWRvdztcblxuICAgIEBjb250ZW50O1xufVxuIiwiLyoqXG4gKiBDaGVja3MgcGFyYW1ldGVyIG9uIHByZXNlbmNlIGluIHRoZSBibGFja2xpc3Qgb2YgaW1wb3J0cyBzZXR0aW5nIGxpc3QuXG4gKiBAcGFyYW0ge0xpc3R9ICRrZXl3b3Jkc1xuICogQGNvbnRlbnQgRXh0ZW5kcyBtaXhpbiB3aXRoIHByb3BlcnRpZXMgaWYgJGtleXdvcmRzIGlzIG5vdCBvbiB0aGUgYmxhY2tsaXN0LlxuICovXG5AbWl4aW4gaGVscGVyLWltcG9ydCgka2V5d29yZHMuLi4pIHtcbiAgICAkaXNCbGFja2xpc3RlZDogZmFsc2U7XG5cbiAgICBAZWFjaCAka2V5d29yZCBpbiAka2V5d29yZHMge1xuICAgICAgICBAaWYgaW5kZXgoJHNldHRpbmctaW1wb3J0LWJsYWNrbGlzdCwgJGtleXdvcmQpICE9IG51bGwge1xuICAgICAgICAgICAgJGlzQmxhY2tsaXN0ZWQ6IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgbm90ICRpc0JsYWNrbGlzdGVkIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBGb3JjZXMgZWxlbWVudCBvdXRsaW5lLlxuICovXG5AbWl4aW4gaGVscGVyLW91dGxpbmUge1xuICAgIG91dGxpbmU6IHJlbSgxKSBzb2xpZCAkc2V0dGluZy1jb2xvci1tYWluO1xuICAgIG91dGxpbmUtb2Zmc2V0OiByZW0oMSk7XG5cbiAgICBAY29udGVudDtcbn1cbiIsIkBtaXhpbiBhZ2VudC13aWRnZXQtYWdlbnQtbmF2aWdhdGlvbigkbmFtZTogJy5hZ2VudC1uYXZpZ2F0aW9uJykge1xuICAgICN7JG5hbWV9IHtcbiAgICAgICAgJl9fZHJvcGRvd24gPiAmX19kcm9wZG93bi1pdGVtW3Bvc2l0aW9uLXJpZ2h0XSB7XG4gICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmX19uYW1lIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2NhcmV0IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIH1cblxuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGFnZW50LXdpZGdldC1hZ2VudC1uYXZpZ2F0aW9uIG1peGluIGluc3RlYWQuXG4gKi9cbkBtaXhpbiBhZ2VudC1uYXZpZ2F0aW9uKCRuYW1lOiAnLmFnZW50LW5hdmlnYXRpb24nKSB7XG4gICAgQGluY2x1ZGUgYWdlbnQtd2lkZ2V0LWFnZW50LW5hdmlnYXRpb24oKTtcblxuICAgICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiQG1peGluIGFnZW50LXdpZGdldC1hZ2VudC1jb250cm9sLWJhcigkbmFtZTogJy5hZ2VudC1jb250cm9sLWJhcicpIHtcbiAgICAjeyRuYW1lfSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogJHNldHRpbmctemktaGVhZGVyICsgMTtcblxuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGFnZW50LXdpZGdldC1hZ2VudC1jb250cm9sLWJhciBtaXhpbiBpbnN0ZWFkLlxuICovXG5AbWl4aW4gYWdlbnQtY29udHJvbC1iYXIoJG5hbWU6ICcuYWdlbnQtY29udHJvbC1iYXInKSB7XG4gICAgQGluY2x1ZGUgYWdlbnQtd2lkZ2V0LWFnZW50LWNvbnRyb2wtYmFyKCk7XG5cbiAgICAjeyRuYW1lfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cbiIsIkBtaXhpbiBjaGVja291dC1wYWdlLXN1bW1hcnktb3ZlcnZpZXcoJG5hbWU6ICcuc3VtbWFyeS1vdmVydmlldycpIHtcbiAgICAjeyRuYW1lfSB7XG4gICAgICAgICZfX2dyYW5kLXRvdGFsLXByaWNlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQGluY2x1ZGUgY2hlY2tvdXQtcGFnZS1zdW1tYXJ5LW92ZXJ2aWV3KCk7XG4iLCIvKipcbiAqIERlZmluZXMgdGhlIG1haW4gY29sb3Igb2YgdGhlIHNob3AgdGhlbWUuIFVzYWdlOiBwcmltYXJ5IGVsZW1lbnRzJyBiYWNrZ3JvdW5kIGFuZCBjb2xvci5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGFsdGVybmF0aXZlIGNvbG9yIG9mIHRoZSBzaG9wIHRoZW1lLiBVc2FnZTogc2Vjb25kYXJ5IGVsZW1lbnRzJyBiYWNrZ3JvdW5kIGFuZCBjb2xvci5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIHdoaXRlIGNvbG9yLiBVc2FnZTogbm90IHRyYW5zcGFyZW50IGVsZW1lbnRzJyBiYWNrZ3JvdW5kIG9mIGRlZmF1bHQgYmFja2dyb3VuZC5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGEgbGlnaHQgc2hhZGUgY29sb3IuIFVzYWdlOiBlbGVtZW50cycgYmFja2dyb3VuZCwgYm9yZGVycyBhbmQgdGV4dC5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGEgbGlnaHRlciBzaGFkZSBjb2xvci4gVXNhZ2U6IGVsZW1lbnRzJyBiYWNrZ3JvdW5kLCBib3JkZXJzIGFuZCB0ZXh0LlxuICovXG4vKipcbiAqIERlZmluZXMgdGhlIGxpZ2h0ZXN0IHNoYWRlIGNvbG9yLiBVc2FnZTogZWxlbWVudHMnIGJhY2tncm91bmQsIGJvcmRlcnMgYW5kIHRleHQuXG4gKi9cbi8qKlxuICogRGVmaW5lcyB0aGUgc2hhZGUgb2YgdGhlIGJsYWNrIGNvbG9yLiBVc2FnZTogYXMgYSBiYXNlIG9mIGJsYWNrIGNvbG9yIGZvciBzZW1pLXRyYW5zcGFyZW50IGVsZW1lbnRzLlxuICovXG4vKipcbiAqIERlZmluZXMgYSBkYXJrIHNoYWRlIGNvbG9yLiBVc2FnZTogZWxlbWVudHMnIHRleHQgY29sb3IgdmFyaWFudC5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGEgZGFya2VyIHNoYWRlIGNvbG9yLiBVc2FnZTogZWxlbWVudHMnIHRleHQgY29sb3IgdmFyaWFudC5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIHRoZSBkYXJrZXN0IHNoYWRlIGNvbG9yLiBVc2FnZTogZWxlbWVudHMnIHRleHQgY29sb3IgdmFyaWFudC5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGEgdHJhbnNwYXJlbnQgY29sb3IuIFVzYWdlOiBlbGVtZW50cycgYmFja2dyb3VuZCwgYm9yZGVyLlxuICovXG4vKipcbiAqIERlZmluZXMgdGhlIG1haW4gYmFja2dyb3VuZCBjb2xvci4gVXNhZ2U6IGJvZHkgYW5kIHNpZGUtZHJhd2VyIGJhY2tncm91bmQuXG4gKi9cbi8qKlxuICogRGVmaW5lcyB0aGUgbWFpbiBjb2xvciBvZiB0ZXh0LiBVc2FnZTogZGVmYXVsdCBnbG9iYWwgdGV4dCBjb2xvci5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGEgZGVmYXVsdCBnbG9iYWwgYm9yZGVyIGNvbG9yIGZvciB0aGUgaW5wdXQgZWxlbWVudHMuXG4gKi9cbi8qKlxuICogRGVmaW5lcyBhIGRlZmF1bHQgZ2xvYmFsIGJvcmRlciBjb2xvciBmb3IgdGhlIGlucHV0IGVsZW1lbnRzIG9uIGZvY3VzIGV2ZW50LlxuICovXG4vKipcbiAqIERlZmluZXMgYSBzaGFkb3cgc2hhZGUgYW5kIHRyYW5zcGFyZW5jeSBmb3IgdGhlIHNoYWRvd2VkIGVsZW1lbnRzLlxuICovXG4vKipcbiAqIERlZmluZXMgYSBkZWZhdWx0IG92ZXJsYXkgY29sb3IuIFVzYWdlOiBlbGVtZW50cyB3aXRoIG92ZXJsYXkgLSBzaWRlLWRyYXdlciwgcG9wdXBzIGV0Yy5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGEgZGVmYXVsdCBpbWFnZSBvdmVybGF5IGNvbG9yLiBVc2FnZTogaW1hZ2VzIHdpdGggb3ZlcmxheSAtIGxhenktaW1hZ2UuXG4gKi9cbi8qKlxuICogRGVmaW5lcyBhY3Rpb24gY29sb3JzIG1hcC5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGZvbnQgZmFtaWx5IHNldHRpbmcuIFVzYWdlOiBib2R5IGdsb2JhbCBmb250IHN0eWxlcy5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGZvbnQgZmFtaWx5IHNldHRpbmcgZm9yIGNvZGUuIENhbiBiZSB1c2VkIGZvciBjb2RlIGFuZCBwcmUgZWxlbWVudHMuXG4gKi9cbi8qKlxuICogRGVmaW5lcyBiYXNpYyBmb250IHNpemUuIFVzYWdlOiBnbG9iYWwgYmFzaWMgZm9udCBzaXplLlxuICovXG4vKipcbiAqIEZvbnQgc2l6ZSB2YWx1ZXMgbWFwLiBVc2FnZTogbWl4aW5zIHByb3ZpZGluZyBzdHlsZXMgZm9yIGhlYWRpbmdzLCB0ZXh0IGVsZW1lbnRzIGV0Yy5cbiAqL1xuLyoqXG4gKiBGb250IHdlaWdodCB2YWx1ZXMgbWFwLiBVc2FnZTogbWl4aW4gdG8gc2V0IGZvbnQgd2VpZ2h0IHByb3BlcnR5LlxuICovXG4vKipcbiAqIEZvbnQgbGluZSBoZWlnaHQgdmFsdWVzIG1hcC4gVXNhZ2U6IG1peGlucyBwcm92aWRpbmcgc3R5bGVzIGZvciBoZWFkaW5ncywgdGV4dCBlbGVtZW50cyBldGMuXG4gKi9cbi8qKlxuICogRGVmaW5lcyBhIGRlZmF1bHQgZHVyYXRpb24gdmFsdWUgZm9yIHRoZSBhbmltYXRpb24gZWZmZWN0cy4gVXNhZ2U6IG1peGlucyBwcm92aWRpbmcgYW5pbWF0aW9uIHByb3BlcnRpZXMuXG4gKi9cbi8qKlxuICogRGVmaW5lcyBhIGRlZmF1bHQgdGltaW5nIGZ1bmN0aW9uIGZvciB0aGUgYW5pbWF0aW9uIGVmZmVjdHMuIFVzYWdlOiBtaXhpbnMgcHJvdmlkaW5nIGFuaW1hdGlvbiBwcm9wZXJ0aWVzLlxuICovXG4vKipcbiAqIERlZmluZXMgZGVmYXVsdCB6LWluZGV4IHZhbHVlLlxuICovXG4vKipcbiAqIERlZmluZXMgei1pbmRleCB2YWx1ZSBmb3IgYWpheCBkeW5hbWljIGxvYWRlci5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIHotaW5kZXggdmFsdWUgZm9yIHRoZSBmbG9hdGluZyBlbGVtZW50cy5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIHotaW5kZXggdmFsdWUgZm9yIHRoZSBoZWFkZXIgY29udGV4dC5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIHotaW5kZXggdmFsdWUgZm9yIHRoZSBzaWRlIGRyYXdlciBjb250ZXh0LlxuICovXG4vKipcbiAqIERlZmluZXMgei1pbmRleCB2YWx1ZSBmb3IgdGhlIHBvcHVwLlxuICovXG4vKipcbiAqIERlZmluZXMgei1pbmRleCB2YWx1ZSBmb3IgdGhlIG92ZXJsYXkuXG4gKi9cbi8qKlxuICogRGVmaW5lcyB6LWluZGV4IHZhbHVlIGZvciB0aGUgbm90aWZpY2F0aW9uIGFyZWEgY29udGV4dC5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIHotaW5kZXggdmFsdWUgZm9yIHRoZSBzZWFyY2ggc3VnZ2VzdGlvbnMgY29udGV4dC5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIHotaW5kZXggdmFsdWUgZm9yIHRoZSBhamF4IGxvYWRlci5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIHotaW5kZXggdmFsdWUgZm9yIHRoZSB0b3AgbmF2aWdhdGlvbiBjb250ZXh0LlxuICovXG4vKipcbiAqIERlZmluZXMgei1pbmRleCB2YWx1ZSBmb3IgdGhlIHNraXAgdG8gY29udGVudCBsaW5rIGNvbnRleHQuXG4gKi9cbi8qKlxuICogRGVmaW5lcyB6LWluZGV4IHZhbHVlIGZvciBsYXllciB1bmRlciBtYWluIGNvbnRlbnQuXG4gKi9cbi8qKlxuICogRGVmaW5lcyBzcGFjaW5nIHZhbHVlcyBtYXAuIFVzYWdlOiBzcGFjaW5nIGhlbHBlcnMgYW5kIG1peGlucy5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGJyZWFrcG9pbnRzJyB2YWx1ZXMgZm9yIHJlc3BvbnNpdmUuXG4gKi9cbi8qKlxuICogRGVmaW5lcyBncmlkIHN5c3RlbSBjb2x1bW5zIGNvdW50LlxuICovXG4vKipcbiAqIERlZmluZXMgZ3JpZCBjb250YWluZXIgbWF4IHdpZHRoLlxuICovXG4vKipcbiAqIERlZmluZXMgZ3V0dGVycycgc2l6ZSBmb3IgZ3JpZCBcIndpdGgtZ3V0dGVyXCIgbW9kaWZpZXIuXG4gKi9cbi8qKlxuICogRGVmaW5lcyBpbXBvcnQgYmxhY2tsaXN0LiBVc2FnZTogaW1wb3J0IGhlbHBlci5cbiAqL1xuLyoqXG4gKiBQcm92aWRlcyBsaXN0IG9mIHByb3BlcmllcyBmb3IgcmVzZXQgdXNhZ2UuXG4gKi9cbi8qKlxuICogV3JhcHBlciBmdW5jdGlvbiBmb3IgdGhlIGRhcmtlbiBzYXNzIGZ1bmN0aW9uIHdpdGggYSBkZWZhdWx0IGRlZ3JlZSBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0NvbG9yfSAkc2V0dGluZy1jb2xvclxuICogQHBhcmFtIHtOdW1iZXJ9ICRkZWdyZWUgWzEwXVxuICovXG4vKipcbiAqIFdyYXBwZXIgZnVuY3Rpb24gZm9yIHRoZSBsaWdodGVuIHNhc3MgZnVuY3Rpb24gd2l0aCBhIGRlZmF1bHQgZGVncmVlIHBhcmFtZXRlci5cbiAqIEBwYXJhbSB7Q29sb3J9ICRzZXR0aW5nLWNvbG9yXG4gKiBAcGFyYW0ge051bWJlcn0gJGRlZ3JlZSBbMTBdXG4gKi9cbi8qKlxuICogU2V0cyBmb250LXNpemUgcHJvcGVydHkgZnJvbSBmb250IHNpemUgc2V0dGluZ3MgbWFwIC0gJHNldHRpbmctZm9udC1zaXplIGFjY29yZGluZyB0byB0aGUgcGFzc2VkIG1hcCBrZXkuXG4gKiBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHNpemVcbiAqL1xuLyoqXG4gKiBTZXRzIGZvbnQtd2VpZ2h0IHByb3BlcnR5IGZyb20gZm9udCB3ZWlnaHQgc2V0dGluZ3MgbWFwIC0gJHNldHRpbmctZm9udC13ZWlnaHQgYWNjb3JkaW5nIHRvIHRoZSBwYXNzZWQgbWFwIGtleS5cbiAqIEBwYXJhbSB7U3RyaW5nfSAkd2VpZ2h0XG4gKi9cbi8qKlxuICogU2V0cyBsaW5lLWhlaWdodCBwcm9wZXJ0eSBmcm9tIGxpbmUtaGVpZ2h0IHNldHRpbmdzIG1hcCAtICRzZXR0aW5nLWZvbnQtbGluZS1oZWlnaHQgYWNjb3JkaW5nIHRvIHRoZSBwYXNzZWQgbWFwIGtleS5cbiAqIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkaGVpZ2h0XG4gKi9cbi8qKlxuICogUG92aWRlcyB0cmFuc2l0aW9uIHByb3BlcnR5IGNvbmZpZ3VyZWQgYnkgdGhlIHBhc3NlZCBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtTdHJpbmd9ICRwcm9wc1xuICogQHBhcmFtIHtOdW1iZXJ9ICRkdXJhdGlvbiBbJHNldHRpbmctZWZmZWN0LWRlZmF1bHQtZHVyYXRpb25dXG4gKiBAcGFyYW0ge1N0cmluZ30gJGVhc2UgWyRzZXR0aW5nLWVmZmVjdC1kZWZhdWx0LWVhc2VdXG4gKi9cbi8qKlxuICogRm9yY2VzIGVsZW1lbnQgdmlzaWJpbGl0eS5cbiAqL1xuLyoqXG4gKiBGb3JjZXMgZWxlbWVudCBpbnZpc2liaWxpdHkuXG4gKi9cbi8qKlxuICogRm9yY2VzIGVsZW1lbnQgaW52aXNpYmlsaXR5IHdpdGggYWNjZXNzaWJpbGl0eSBzdXBwb3J0LlxuICovXG4vKipcbiAqIEZvcmNlcyBlbGVtZW50IHZpc2liaWxpdHkgd2l0aCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQuXG4gKi9cbi8qKlxuICogUHJvdmlkZXMgZ2xvYmFsIGNsYXNzIG5hbWVzIHdpdGggc3BhY2luZyBwcm9wZXJ0aWVzIHNldCBmcm9tICRzZXR0aW5nLXNwYWNpbmcgbWFwLlxuICogQHBhcmFtIHtTdHJpbmd9ICRuYW1lIE1haW4gc2VsZWN0b3IgbmFtZS5cbiAqIEBwYXJhbSB7TGlzdH0gJHNpZGVzIFtbXV0gTGlzdCBvZiBzaWRlcyB0byBzZXQgcHJvcGVydGllcy5cbiAqL1xuLyoqXG4gKiBSZXR1cm5zIDAgb3IgdGhlIGZpcnN0IHZhbHVlIGZyb20gdGhlICRlZGdlcyBsaXN0LlxuICogQHBhcmFtIHtMaXN0fSAkZWRnZXMgWyRzZXR0aW5nLWJyZWFrcG9pbnRzXSBMaXN0IGxlbmd0aCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyLlxuICogQHJldHVybiB7QmFzZX1cbiAqL1xuLyoqXG4gKiBSZXR1cm5zIG51bGwgb3IgdGhlIGxhc3QgdmFsdWUgZnJvbSB0aGUgJGVkZ2VzIGxpc3QuXG4gKiBAcGFyYW0ge0xpc3R9ICRlZGdlcyBbJHNldHRpbmctYnJlYWtwb2ludHNdIExpc3QgbGVuZ3RoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDIuXG4gKiBAcmV0dXJuIHtCYXNlfVxuICovXG4vKipcbiAqIFNldHMgc2NyZWVuIG1lZGlhIHF1ZXJ5IHdpdGggbWluLXdpZHRoIHNldCB0byAkbWluIHBhcmFtZXRlci5cbiAqIEBwYXJhbSAkbWluIHtOdW1iZXJ9IFswXVxuICogQGNvbnRlbnQgRXh0ZW5kcyBtaXhpbiB3aXRoIHByb3BlcnRpZXMgZm9yIG1lZGlhIHF1ZXJ5LlxuICovXG4vKipcbiAqIFNldHMgc2NyZWVuIG1lZGlhIHF1ZXJ5IHdpdGggYnJlYWtwb2ludHMgcmFuZ2UgcGFzc2VkIGFzIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0ge051bWJlcn0gJG1pbiBbMF1cbiAqIEBwYXJhbSB7TnVtYmVyfSAkbWF4IFskc2V0dGluZy1ncmlkLW1heC13aWR0aF1cbiAqIEBjb250ZW50IEV4dGVuZHMgbWl4aW4gd2l0aCBwcm9wZXJ0aWVzIGZvciBtZWRpYSBxdWVyeS5cbiAqL1xuLyoqXG4gKiBTZXRzIHNjcmVlbiBtZWRpYSBxdWVyeSB3aXRoIG1heC13aWR0aCBzZXQgdG8gJG1heCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge051bWJlcn0gJG1heCBbJHNldHRpbmctZ3JpZC1tYXgtd2lkdGhdXG4gKiBAY29udGVudCBFeHRlbmRzIG1peGluIHdpdGggcHJvcGVydGllcyBmb3IgbWVkaWEgcXVlcnkuXG4gKi9cbi8qKlxuICogU2V0cyBzY3JlZW4gbWVkaWEgcXVlcnkgd2l0aCBicmVha3BvaW50cyByYW5nZSBwYXNzZWQgdG8gcGFyYW1ldGVycyBvclxuICogd2l0aCBtaW4td2lkdGggcXVlcnkgaWYgb25seSBvbmUgcGFyYW1ldGVyIGlzIHBhc3NlZC5cbiAqIEBwYXJhbSB7TnVtYmVyfSAkbWF4IFskc2V0dGluZy1ncmlkLW1heC13aWR0aF1cbiAqIEBjb250ZW50IEV4dGVuZHMgbWl4aW4gd2l0aCBwcm9wZXJ0aWVzIGZvciBtZWRpYSBxdWVyeS5cbiAqL1xuLyoqXG4gKiBSZXR1cm5zIGNvbHVtbiByYXRpbyBpbiByZWxhdGlvbiB0byBjb2x1bW5zIGNvdW50LlxuICogQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5cbiAqIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyBbJHNldHRpbmctZ3JpZC1jb2x1bW5zXVxuICogQHJldHVybiB7TnVtYmVyfVxuICovXG4vKipcbiAqIEFkZHMgY2xlYXJpbmcgZm9yIGVsZW1lbnQgd2l0aCBmbG9hdGVkIGNoaWxkIGVsZW1lbnRzLlxuICovXG4vKipcbiAqIEFkZHMgYSBib3gtc2hhZG93IHdpdGggYmFzaWMgdmFsdWVzLlxuICovXG4vKipcbiAqIENoZWNrcyBwYXJhbWV0ZXIgb24gcHJlc2VuY2UgaW4gdGhlIGJsYWNrbGlzdCBvZiBpbXBvcnRzIHNldHRpbmcgbGlzdC5cbiAqIEBwYXJhbSB7TGlzdH0gJGtleXdvcmRzXG4gKiBAY29udGVudCBFeHRlbmRzIG1peGluIHdpdGggcHJvcGVydGllcyBpZiAka2V5d29yZHMgaXMgbm90IG9uIHRoZSBibGFja2xpc3QuXG4gKi9cbi8qKlxuICogRm9yY2VzIGVsZW1lbnQgb3V0bGluZS5cbiAqL1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYWdlbnQtd2lkZ2V0LWFnZW50LW5hdmlnYXRpb24gbWl4aW4gaW5zdGVhZC5cbiAqL1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYWdlbnQtd2lkZ2V0LWFnZW50LWNvbnRyb2wtYmFyIG1peGluIGluc3RlYWQuXG4gKi9cbi5zdW1tYXJ5LW92ZXJ2aWV3X19ncmFuZC10b3RhbC1wcmljZSB7XG4gIGZvbnQtc2l6ZTogMS4xcmVtO1xuICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBjbXMtc2VhcmNoLXBhZ2Utc29ydCBtaXhpbiBpbnN0ZWFkLlxuICovXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBjb21wYW55LXBhZ2UtYnVzaW5lc3MtdW5pdC1jaGFydC1pdGVtIG1peGluIGluc3RlYWQuXG4gKi9cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGNvbXBhbnktdXNlci1hZ2VudC13aWRnZXQtY29tcGFueS11c2VyLWxpc3QgbWl4aW4gaW5zdGVhZC5cbiAqL1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgZmlsZS1tYW5hZ2VyLXdpZGdldC1maWxlLWRvd25sb2FkLWxpbmsgbWl4aW4gaW5zdGVhZC5cbiAqL1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgbWVyY2hhbnQtcmVsYXRpb24tcmVxdWVzdC1wYWdlLXN0YXR1cy1ub3RpZmljYXRpb24gbWl4aW4gaW5zdGVhZC5cbiAqL1xuLyogZmUtc25pZmZlcjpkaXNhYmxlZCBjb3JyZWN0LXNjc3MtY29tcG9uZW50LXN0cnVjdHVyZSAqL1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgcHJpY2UtcHJvZHVjdC12b2x1bWUtd2lkZ2V0LXZvbHVtZS1wcmljZSBtaXhpbiBpbnN0ZWFkLlxuICovXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBwcmljZS1wcm9kdWN0LXZvbHVtZS13aWRnZXQtdm9sdW1lLXByaWNlLXRhYmxlIG1peGluIGluc3RlYWQuXG4gKi9cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHByb2R1Y3Qtb3B0aW9uLXdpZGdldC1zaG9wcGluZy1saXN0LXByb2R1Y3Qtb3B0aW9uLWxpc3QgbWl4aW4gaW5zdGVhZC5cbiAqL1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgcHJvZHVjdC1wYWNrYWdpbmctdW5pdC13aWRnZXQtcGFja2FnaW5nLXVuaXQtY2FydCBtaXhpbiBpbnN0ZWFkLlxuICovXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBwcm9kdWN0LXJldmlldy13aWRnZXQtcmF0aW5nLXNlbGVjdG9yIG1peGluIGluc3RlYWQuXG4gKi9cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHByb2R1Y3Qtc2VhcmNoLXdpZGdldC1wcm9kdWN0LXF1aWNrLWFkZC1mb3JtIG1peGluIGluc3RlYWQuXG4gKi9cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGNvbmZpZ3VyYWJsZS1idW5kbGUtd2lkZ2V0LW9yZGVyLWNvbmZpZ3VyZWQtYnVuZGxlIG1peGluIGluc3RlYWQuXG4gKi9cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGNvbmZpZ3VyYWJsZS1idW5kbGUtd2lkZ2V0LW9yZGVyLWNvbmZpZ3VyZWQtYnVuZGxlLXByb2R1Y3QgbWl4aW4gaW5zdGVhZC5cbiAqL1xuLmNvbGxhcHNpYmxlLWxpc3RfX2J1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7XG4gIGNvbG9yOiAjMDg0OTNkO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uY29sbGFwc2libGUtbGlzdF9fYnV0dG9uOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4uY29sbGFwc2libGUtbGlzdF9fYnV0dG9uOjphZnRlciB7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1zaG93KTtcbn1cbi5jb2xsYXBzaWJsZS1saXN0X19idXR0b24tLXNob3duOjphZnRlciB7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1oaWRlKTtcbn1cbi5jb2xsYXBzaWJsZS1saXN0X19idXR0b24tY29udGVudCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIGZlLXNuaWZmZXI6ZGlzYWJsZWQgY29ycmVjdC1zY3NzLWNvbXBvbmVudC1zdHJ1Y3R1cmUgKi9cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHNob3AtdWktcXVvdGUtc3RhdHVzLWNvbG9yIG1peGluIGluc3RlYWQuXG4gKi9cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHRhYnMtd2lkZ2V0LXNlYXJjaC10YWJzIG1peGluIGluc3RlYWQuXG4gKi9cbi8qKlxuICogUHJvdmlkZXMgZ2xvYmFsIGNsYXNzIG5hbWVzIGZvciBzcGFjaW5ncy5cbiAqL1xuLyoqXG4gKiBQcm92aWRlcyBnbG9iYWwgY2xhc3MgbmFtZXMgZm9yIHRleHQgc3R5bGluZy5cbiAqL1xuLyoqXG4gKiBQcm92aWRlcyBjbGFzcyBuYW1lIGZvciB0ZXh0IHN0eWxpbmcgd2l0aCBjb2xvciBwcm9wZXJ0eSBzcGVjaWZpZWQgYnkgcGFyYW1ldGVycy5cbiAqIEBwYXJhbSB7U3RyaW5nfSAkYWN0aW9uIFNldHMgY2xhc3MgbmFtZSBwb3N0Zml4LlxuICogQHBhcmFtIHtDb2xvcn0gJHNldHRpbmctY29sb3ItYWN0aW9uIFNldHMgY29sb3IgcHJvcGVydHkuXG4gKiBAY29udGVudCBFeHRlbmRhYmxlIG1peGluLlxuICovXG4vKipcbiAqIFByb3ZpZGVzIGdsb2JhbCBjbGFzcyBuYW1lcyBmb3IgdGhlIGVsZW1lbnRzJyBmbG9hdCBhbGlnbm1lbnQuXG4gKi9cbi8qKlxuICogUHJvdmlkZXMgZ2xvYmFsIGNsYXNzIG5hbWVzIGZvciBkaXNwbGF5IGJlaGF2aW9yIHdpdGggYWRkaXRpb25hbCByZXNwb25zaXZlIG1vZGlmaWVycy5cbiAqL1xuLnNwYWNpbmcge1xuICBtYXJnaW46IDAuNXJlbTtcbn1cbi5zcGFjaW5nLS1iaWdnZXN0IHtcbiAgbWFyZ2luOiAycmVtO1xufVxuLnNwYWNpbmctLWJpZ2dlciB7XG4gIG1hcmdpbjogMS41cmVtO1xufVxuLnNwYWNpbmctLWJpZyB7XG4gIG1hcmdpbjogMXJlbTtcbn1cbi5zcGFjaW5nLS1zbWFsbCB7XG4gIG1hcmdpbjogMC4yNXJlbTtcbn1cbi5zcGFjaW5nLS1yZXNldCB7XG4gIG1hcmdpbjogMDtcbn1cblxuLnNwYWNpbmctLWlubmVyIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwLjVyZW07XG59XG4uc3BhY2luZy0taW5uZXIuc3BhY2luZy0tYmlnZ2VzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMnJlbTtcbn1cblxuLnNwYWNpbmctLWlubmVyLnNwYWNpbmctLWJpZ2dlciB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMS41cmVtO1xufVxuXG4uc3BhY2luZy0taW5uZXIuc3BhY2luZy0tYmlnIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxcmVtO1xufVxuXG4uc3BhY2luZy0taW5uZXIuc3BhY2luZy0tc21hbGwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAuMjVyZW07XG59XG5cbi5zcGFjaW5nLS1pbm5lci5zcGFjaW5nLS1yZXNldCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLnNwYWNpbmctdG9wIHtcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xufVxuLnNwYWNpbmctdG9wLS1iaWdnZXN0IHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbn1cbi5zcGFjaW5nLXRvcC0tYmlnZ2VyIHtcbiAgbWFyZ2luLXRvcDogMS41cmVtO1xufVxuLnNwYWNpbmctdG9wLS1iaWcge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xufVxuLnNwYWNpbmctdG9wLS1zbWFsbCB7XG4gIG1hcmdpbi10b3A6IDAuMjVyZW07XG59XG4uc3BhY2luZy10b3AtLXJlc2V0IHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuLnNwYWNpbmctdG9wLS1pbm5lciB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XG59XG4uc3BhY2luZy10b3AtLWlubmVyLnNwYWNpbmctdG9wLS1iaWdnZXN0IHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgcGFkZGluZy10b3A6IDJyZW07XG59XG5cbi5zcGFjaW5nLXRvcC0taW5uZXIuc3BhY2luZy10b3AtLWJpZ2dlciB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIHBhZGRpbmctdG9wOiAxLjVyZW07XG59XG5cbi5zcGFjaW5nLXRvcC0taW5uZXIuc3BhY2luZy10b3AtLWJpZyB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIHBhZGRpbmctdG9wOiAxcmVtO1xufVxuXG4uc3BhY2luZy10b3AtLWlubmVyLnNwYWNpbmctdG9wLS1zbWFsbCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xufVxuXG4uc3BhY2luZy10b3AtLWlubmVyLnNwYWNpbmctdG9wLS1yZXNldCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuXG4uc3BhY2luZy1ib3R0b20ge1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG4uc3BhY2luZy1ib3R0b20tLWJpZ2dlc3Qge1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuLnNwYWNpbmctYm90dG9tLS1iaWdnZXIge1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG4uc3BhY2luZy1ib3R0b20tLWJpZyB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG4uc3BhY2luZy1ib3R0b20tLXNtYWxsIHtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbn1cbi5zcGFjaW5nLWJvdHRvbS0tcmVzZXQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uc3BhY2luZy1ib3R0b20tLWlubmVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbn1cbi5zcGFjaW5nLWJvdHRvbS0taW5uZXIuc3BhY2luZy1ib3R0b20tLWJpZ2dlc3Qge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbn1cblxuLnNwYWNpbmctYm90dG9tLS1pbm5lci5zcGFjaW5nLWJvdHRvbS0tYmlnZ2VyIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcbn1cblxuLnNwYWNpbmctYm90dG9tLS1pbm5lci5zcGFjaW5nLWJvdHRvbS0tYmlnIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgcGFkZGluZy1ib3R0b206IDFyZW07XG59XG5cbi5zcGFjaW5nLWJvdHRvbS0taW5uZXIuc3BhY2luZy1ib3R0b20tLXNtYWxsIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgcGFkZGluZy1ib3R0b206IDAuMjVyZW07XG59XG5cbi5zcGFjaW5nLWJvdHRvbS0taW5uZXIuc3BhY2luZy1ib3R0b20tLXJlc2V0IHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgcGFkZGluZy1ib3R0b206IDA7XG59XG5cbi5zcGFjaW5nLWxlZnQge1xuICBtYXJnaW4tbGVmdDogMC41cmVtO1xufVxuLnNwYWNpbmctbGVmdC0tYmlnZ2VzdCB7XG4gIG1hcmdpbi1sZWZ0OiAycmVtO1xufVxuLnNwYWNpbmctbGVmdC0tYmlnZ2VyIHtcbiAgbWFyZ2luLWxlZnQ6IDEuNXJlbTtcbn1cbi5zcGFjaW5nLWxlZnQtLWJpZyB7XG4gIG1hcmdpbi1sZWZ0OiAxcmVtO1xufVxuLnNwYWNpbmctbGVmdC0tc21hbGwge1xuICBtYXJnaW4tbGVmdDogMC4yNXJlbTtcbn1cbi5zcGFjaW5nLWxlZnQtLXJlc2V0IHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi5zcGFjaW5nLWxlZnQtLWlubmVyIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xufVxuLnNwYWNpbmctbGVmdC0taW5uZXIuc3BhY2luZy1sZWZ0LS1iaWdnZXN0IHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cblxuLnNwYWNpbmctbGVmdC0taW5uZXIuc3BhY2luZy1sZWZ0LS1iaWdnZXIge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG59XG5cbi5zcGFjaW5nLWxlZnQtLWlubmVyLnNwYWNpbmctbGVmdC0tYmlnIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMXJlbTtcbn1cblxuLnNwYWNpbmctbGVmdC0taW5uZXIuc3BhY2luZy1sZWZ0LS1zbWFsbCB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG59XG5cbi5zcGFjaW5nLWxlZnQtLWlubmVyLnNwYWNpbmctbGVmdC0tcmVzZXQge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuXG4uc3BhY2luZy1yaWdodCB7XG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xufVxuLnNwYWNpbmctcmlnaHQtLWJpZ2dlc3Qge1xuICBtYXJnaW4tcmlnaHQ6IDJyZW07XG59XG4uc3BhY2luZy1yaWdodC0tYmlnZ2VyIHtcbiAgbWFyZ2luLXJpZ2h0OiAxLjVyZW07XG59XG4uc3BhY2luZy1yaWdodC0tYmlnIHtcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xufVxuLnNwYWNpbmctcmlnaHQtLXNtYWxsIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xufVxuLnNwYWNpbmctcmlnaHQtLXJlc2V0IHtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4uc3BhY2luZy1yaWdodC0taW5uZXIge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbn1cbi5zcGFjaW5nLXJpZ2h0LS1pbm5lci5zcGFjaW5nLXJpZ2h0LS1iaWdnZXN0IHtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xufVxuXG4uc3BhY2luZy1yaWdodC0taW5uZXIuc3BhY2luZy1yaWdodC0tYmlnZ2VyIHtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XG59XG5cbi5zcGFjaW5nLXJpZ2h0LS1pbm5lci5zcGFjaW5nLXJpZ2h0LS1iaWcge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XG59XG5cbi5zcGFjaW5nLXJpZ2h0LS1pbm5lci5zcGFjaW5nLXJpZ2h0LS1zbWFsbCB7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgcGFkZGluZy1yaWdodDogMC4yNXJlbTtcbn1cblxuLnNwYWNpbmctcmlnaHQtLWlubmVyLnNwYWNpbmctcmlnaHQtLXJlc2V0IHtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuXG4uc3BhY2luZy14IHtcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG59XG4uc3BhY2luZy14LS1iaWdnZXN0IHtcbiAgbWFyZ2luLWxlZnQ6IDJyZW07XG4gIG1hcmdpbi1yaWdodDogMnJlbTtcbn1cbi5zcGFjaW5nLXgtLWJpZ2dlciB7XG4gIG1hcmdpbi1sZWZ0OiAxLjVyZW07XG4gIG1hcmdpbi1yaWdodDogMS41cmVtO1xufVxuLnNwYWNpbmcteC0tYmlnIHtcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gIG1hcmdpbi1yaWdodDogMXJlbTtcbn1cbi5zcGFjaW5nLXgtLXNtYWxsIHtcbiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW07XG4gIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcbn1cbi5zcGFjaW5nLXgtLXJlc2V0IHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLnNwYWNpbmcteC0taW5uZXIge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xufVxuLnNwYWNpbmcteC0taW5uZXIuc3BhY2luZy14LS1iaWdnZXN0IHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xufVxuXG4uc3BhY2luZy14LS1pbm5lci5zcGFjaW5nLXgtLWJpZ2dlciB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XG59XG5cbi5zcGFjaW5nLXgtLWlubmVyLnNwYWNpbmcteC0tYmlnIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xufVxuXG4uc3BhY2luZy14LS1pbm5lci5zcGFjaW5nLXgtLXNtYWxsIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMC4yNXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtO1xufVxuXG4uc3BhY2luZy14LS1pbm5lci5zcGFjaW5nLXgtLXJlc2V0IHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuXG4uc3BhY2luZy15IHtcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG4uc3BhY2luZy15LS1iaWdnZXN0IHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cbi5zcGFjaW5nLXktLWJpZ2dlciB7XG4gIG1hcmdpbi10b3A6IDEuNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuLnNwYWNpbmcteS0tYmlnIHtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cbi5zcGFjaW5nLXktLXNtYWxsIHtcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbn1cbi5zcGFjaW5nLXktLXJlc2V0IHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLnNwYWNpbmcteS0taW5uZXIge1xuICBtYXJnaW4tdG9wOiAwO1xuICBwYWRkaW5nLXRvcDogMC41cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xufVxuLnNwYWNpbmcteS0taW5uZXIuc3BhY2luZy15LS1iaWdnZXN0IHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgcGFkZGluZy10b3A6IDJyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHBhZGRpbmctYm90dG9tOiAycmVtO1xufVxuXG4uc3BhY2luZy15LS1pbm5lci5zcGFjaW5nLXktLWJpZ2dlciB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIHBhZGRpbmctdG9wOiAxLjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHBhZGRpbmctYm90dG9tOiAxLjVyZW07XG59XG5cbi5zcGFjaW5nLXktLWlubmVyLnNwYWNpbmcteS0tYmlnIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgcGFkZGluZy10b3A6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xufVxuXG4uc3BhY2luZy15LS1pbm5lci5zcGFjaW5nLXktLXNtYWxsIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgcGFkZGluZy10b3A6IDAuMjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtO1xufVxuXG4uc3BhY2luZy15LS1pbm5lci5zcGFjaW5nLXktLXJlc2V0IHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgcGFkZGluZy10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xufVxuXG4udGV4dC1zbWFsbCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi50ZXh0LWJpZyB7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG59XG5cbi50ZXh0LWxlZnQge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4udGV4dC1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50ZXh0LXJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi50ZXh0LWFsdCB7XG4gIGNvbG9yOiAjZTAxYTAwO1xufVxuXG4udGV4dC1zZWNvbmRhcnkge1xuICBjb2xvcjogIzU5NTk1OTtcbn1cblxuLnRleHQtYnJlYWsge1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4udGV4dC1zdWNjZXNzIHtcbiAgY29sb3I6ICMwODQ5M2Q7XG59XG5cbi50ZXh0LXdhcm5pbmcge1xuICBjb2xvcjogI2Q4OGQwMDtcbn1cblxuLnRleHQtYWxlcnQge1xuICBjb2xvcjogI2UwMWEwMDtcbn1cblxuLmNsZWFyOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBjbGVhcjogYm90aDtcbn1cblxuLmZsb2F0LWxlZnQge1xuICBmbG9hdDogbGVmdDtcbn1cblxuLmZsb2F0LXJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuXG4uZmxvYXQtbm9uZSB7XG4gIGZsb2F0OiBub25lO1xufVxuXG4uaXMtaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMCkgYW5kIChtYXgtd2lkdGg6IDU0OXB4KSB7XG4gIC5pcy1oaWRkZW4tc20tb25seSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAwKSBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmlzLWhpZGRlbi1zbS1tZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAwKSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5pcy1oaWRkZW4tc20tbGcge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAuaXMtaGlkZGVuLXNtLXhsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDApIHtcbiAgLmlzLWhpZGRlbi1zbS14eGwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTUwcHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuaXMtaGlkZGVuLW1kLW9ubHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTUwcHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLmlzLWhpZGRlbi1tZC1sZyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NTBweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAuaXMtaGlkZGVuLW1kLXhsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU1MHB4KSB7XG4gIC5pcy1oaWRkZW4tbWQteHhsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5pcy1oaWRkZW4tbGctb25seSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAuaXMtaGlkZGVuLWxnLXhsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5pcy1oaWRkZW4tbGcteHhsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAuaXMtaGlkZGVuLXhsLW9ubHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5pcy1oaWRkZW4teGwteHhsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuaXMtaGlkZGVuLXh4bC1vbmx5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5pcy12aXNpYmxlIHtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmlzLWludmlzaWJsZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5pcy1zY3JvbGxhYmxlIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi5pcy1ub3Qtc2Nyb2xsYWJsZSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5pcy1zY3JvbGxhYmxlLXgge1xuICBvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4uaXMtbm90LXNjcm9sbGFibGUteCB7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbn1cblxuLmlzLXNjcm9sbGFibGUteSB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5pcy1ub3Qtc2Nyb2xsYWJsZS15IHtcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xufVxuXG4uaXMtcG9zaXRpb24tcmVsYXRpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbmh0bWwgPiAuaXMtbG9ja2VkLXRhYmxldCxcbmh0bWwgPiAuaXMtbG9ja2VkLW1vYmlsZSxcbmh0bWwgPiAuaXMtbG9ja2VkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICBodG1sID4gLmlzLWxvY2tlZC10YWJsZXQge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgaHRtbCA+IC5pcy1sb2NrZWQtbW9iaWxlIHtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICB9XG59IiwiQG1peGluIGNtcy1zZWFyY2gtcGFnZS1zb3J0KCRuYW1lOiAnLnNvcnQnKSB7XG4gICAgI3skbmFtZX0ge1xuICAgICAgICAmX19jb2w6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGNtcy1zZWFyY2gtcGFnZS1zb3J0IG1peGluIGluc3RlYWQuXG4gKi9cbkBtaXhpbiBjbXMtcGFnZS1zb3J0KCRuYW1lOiAnLnNvcnQnKSB7XG4gICAgQGluY2x1ZGUgY21zLXNlYXJjaC1wYWdlLXNvcnQoKTtcblxuICAgICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiQG1peGluIGNvbXBhbnktcGFnZS1idXNpbmVzcy11bml0LWNoYXJ0LWl0ZW0oJG5hbWU6ICcuYnVzaW5lc3MtdW5pdC1jaGFydC1pdGVtJykge1xuICAgICN7JG5hbWV9IHtcbiAgICAgICAgJiAmIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogbWFwLWdldCgkc2V0dGluZy1zcGFjaW5nLCAnYmlnJyk7XG4gICAgICAgIH1cblxuICAgICAgICAmX19saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgcGFkZGluZzogbWFwLWdldCgkc2V0dGluZy1zcGFjaW5nLCAnZGVmYXVsdCcpO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogbWFwLWdldCgkc2V0dGluZy1zcGFjaW5nLCAnZGVmYXVsdCcpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHNldHRpbmctY29sb3ItbGlnaHRlc3Q7XG4gICAgICAgICAgICBjb2xvcjogJHNldHRpbmctY29sb3ItZGFya2VzdDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgY29tcGFueS1wYWdlLWJ1c2luZXNzLXVuaXQtY2hhcnQtaXRlbSBtaXhpbiBpbnN0ZWFkLlxuICovXG5AbWl4aW4gYnVzaW5lc3MtdW5pdC1jaGFydC1pdGVtKCRuYW1lOiAnLmJ1c2luZXNzLXVuaXQtY2hhcnQtaXRlbScpIHtcbiAgICBAaW5jbHVkZSBjb21wYW55LXBhZ2UtYnVzaW5lc3MtdW5pdC1jaGFydC1pdGVtKCk7XG5cbiAgICAjeyRuYW1lfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cbiIsIkBtaXhpbiBjb21wYW55LXVzZXItYWdlbnQtd2lkZ2V0LWNvbXBhbnktdXNlci1saXN0KCRuYW1lOiAnLmNvbXBhbnktdXNlci1saXN0Jykge1xuICAgICN7JG5hbWV9IHtcbiAgICAgICAgJl9fY29udGFpbmVyLWl0ZW0ge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgcGFkZGluZzogbWFwLWdldCgkc2V0dGluZy1zcGFjaW5nLCAnZGVmYXVsdCcpO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2V0dGluZy1jb2xvci1saWdodGVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgY29tcGFueS11c2VyLWFnZW50LXdpZGdldC1jb21wYW55LXVzZXItbGlzdCBtaXhpbiBpbnN0ZWFkLlxuICovXG5AbWl4aW4gYWdlbnQtd2lkZ2V0LWNvbXBhbnktdXNlci1saXN0KCRuYW1lOiAnLmNvbXBhbnktdXNlci1saXN0Jykge1xuICAgIEBpbmNsdWRlIGNvbXBhbnktdXNlci1hZ2VudC13aWRnZXQtY29tcGFueS11c2VyLWxpc3QoKTtcblxuICAgICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiQG1peGluIGZpbGUtbWFuYWdlci13aWRnZXQtZmlsZS1kb3dubG9hZC1saW5rKCRuYW1lOiAnLmZpbGUtZG93bmxvYWQtbGluaycpIHtcbiAgICAjeyRuYW1lfSB7XG4gICAgICAgICYtLWljb24ge1xuICAgICAgICAgICAgd2lkdGg6IDguNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2xpbmsge1xuICAgICAgICAgICAgJi0taWNvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiBtYXAtZ2V0KCRzZXR0aW5nLWZvbnQtc2l6ZSwgJ3NtYWxsJyk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRzZXR0aW5nLWNvbG9yLWRhcmtlcjtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJl9faWNvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmc6IDJyZW0gMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoZWxwZXItY29sb3ItbGlnaHQobWFwLWdldCgkc2V0dGluZy1jb2xvci1hY3Rpb25zLCAnYWxlcnQnKSwgNTcpO1xuICAgICAgICAgICAgY29sb3I6IGhlbHBlci1jb2xvci1saWdodChtYXAtZ2V0KCRzZXR0aW5nLWNvbG9yLWFjdGlvbnMsICdhbGVydCcpLCAyMCk7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAmX19uYW1lLXdyYXBwZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX25hbWUge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgICAgICAgICAgJi0taWNvbiB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA2cmVtO1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfX2V4dGVuc2lvbiB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fc2l6ZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgZmlsZS1tYW5hZ2VyLXdpZGdldC1maWxlLWRvd25sb2FkLWxpbmsgbWl4aW4gaW5zdGVhZC5cbiAqL1xuQG1peGluIGZpbGUtZG93bmxvYWQtbGluaygkbmFtZTogJy5maWxlLWRvd25sb2FkLWxpbmsnKSB7XG4gICAgQGluY2x1ZGUgZmlsZS1tYW5hZ2VyLXdpZGdldC1maWxlLWRvd25sb2FkLWxpbmsoKTtcblxuICAgICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgbWVyY2hhbnQtcmVsYXRpb24tcmVxdWVzdC1wYWdlLXN0YXR1cy1ub3RpZmljYXRpb24gbWl4aW4gaW5zdGVhZC5cbiAqL1xuXG4vKiBmZS1zbmlmZmVyOmRpc2FibGVkIGNvcnJlY3Qtc2Nzcy1jb21wb25lbnQtc3RydWN0dXJlICovXG5AbWl4aW4gbWVyY2hhbnQtcmVsYXRpb24tcmVxdWVzdC1zdGF0dXMtbm90aWZpY2F0aW9uKCRuYW1lOiAnLm1lcmNoYW50LXJlbGF0aW9uLXJlcXVlc3Qtc3RhdHVzLW5vdGlmaWNhdGlvbicpIHtcbiAgICAjeyRuYW1lfSB7XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07XG4gICAgICAgIGJvcmRlcjogMC4xMjVyZW0gc29saWQgaGVscGVyLWNvbG9yLWxpZ2h0KG1hcC1nZXQoJHNldHRpbmctY29sb3ItYWN0aW9ucywgJ3dhcm5pbmcnKSk7XG4gICAgICAgIGNvbG9yOiBoZWxwZXItY29sb3ItZGFyayhtYXAtZ2V0KCRzZXR0aW5nLWNvbG9yLWFjdGlvbnMsICd3YXJuaW5nJykpO1xuXG4gICAgICAgICYtLWNhbmNlbGVkIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaGVscGVyLWNvbG9yLWxpZ2h0KCRzZXR0aW5nLWNvbG9yLWRhcmtlcik7XG4gICAgICAgICAgICBjb2xvcjogaGVscGVyLWNvbG9yLWRhcmsoJHNldHRpbmctY29sb3ItZGFya2VyKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWFwcHJvdmVkIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaGVscGVyLWNvbG9yLWxpZ2h0KG1hcC1nZXQoJHNldHRpbmctY29sb3ItYWN0aW9ucywgJ3N1Y2Nlc3MnKSk7XG4gICAgICAgICAgICBjb2xvcjogaGVscGVyLWNvbG9yLWRhcmsobWFwLWdldCgkc2V0dGluZy1jb2xvci1hY3Rpb25zLCAnc3VjY2VzcycpKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLXJlamVjdGVkIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaGVscGVyLWNvbG9yLWxpZ2h0KG1hcC1nZXQoJHNldHRpbmctY29sb3ItYWN0aW9ucywgJ2FsZXJ0JykpO1xuICAgICAgICAgICAgY29sb3I6IGhlbHBlci1jb2xvci1kYXJrKG1hcC1nZXQoJHNldHRpbmctY29sb3ItYWN0aW9ucywgJ2FsZXJ0JykpO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fZ3JpZCB7XG4gICAgICAgICAgICBnYXA6IDEuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmX19jb2wtLWluZm9ybWF0aW9uIHtcbiAgICAgICAgICAgIGNvbG9yOiAkc2V0dGluZy1jb2xvci10ZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fdGl0bGUsXG4gICAgICAgICZfX2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAbWl4aW4gcHJpY2UtcHJvZHVjdC12b2x1bWUtd2lkZ2V0LXZvbHVtZS1wcmljZSgkbmFtZTogJy52b2x1bWUtcHJpY2UnKSB7XG4gICAgI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBoZWxwZXItZm9udC1zaXplKGJpZyk7XG5cbiAgICAgICAgJl9fYW1vdW50IHtcbiAgICAgICAgICAgICYtLW9yaWdpbmFsIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBoZWxwZXItZm9udC1zaXplKHNtYWxsKTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBjb2xvcjogJHNldHRpbmctY29sb3ItZGFyaztcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfX3RhZyB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XG4gICAgICAgICAgICBjb2xvcjogJHNldHRpbmctY29sb3ItYWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fcHJpY2Uge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuXG4gICAgICAgICAgICAmLS1oaWdobGlnaHRlZCB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBwdWxzZS1oaWdobGlnaHQgMC40cyBsaW5lYXIgMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgcHJpY2UtcHJvZHVjdC12b2x1bWUtd2lkZ2V0LXZvbHVtZS1wcmljZSBtaXhpbiBpbnN0ZWFkLlxuICovXG5AbWl4aW4gc2hvcC11aS12b2x1bWUtcHJpY2UoJG5hbWU6ICcudm9sdW1lLXByaWNlJykge1xuICAgIEBpbmNsdWRlIHByaWNlLXByb2R1Y3Qtdm9sdW1lLXdpZGdldC12b2x1bWUtcHJpY2UoKTtcblxuICAgICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiQG1peGluIHByaWNlLXByb2R1Y3Qtdm9sdW1lLXdpZGdldC12b2x1bWUtcHJpY2UtdGFibGUoJG5hbWU6ICcudm9sdW1lLXByaWNlLXRhYmxlJykge1xuICAgICN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgaGVscGVyLWZvbnQtc2l6ZShiaWcpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG5cbiAgICAgICAgJl9fdGFibGUsXG4gICAgICAgICZfX3RpdGxlLFxuICAgICAgICAmX19jZWxsIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRzZXR0aW5nLWNvbG9yLWRhcmtlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX3RhYmxlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGhlbHBlci1mb250LXNpemUoc21hbGwpO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fdGl0bGUge1xuICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2NlbGwge1xuICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHByaWNlLXByb2R1Y3Qtdm9sdW1lLXdpZGdldC12b2x1bWUtcHJpY2UtdGFibGUgbWl4aW4gaW5zdGVhZC5cbiAqL1xuQG1peGluIHNob3AtdWktdm9sdW1lLXByaWNlLXRhYmxlKCRuYW1lOiAnLnZvbHVtZS1wcmljZS10YWJsZScpIHtcbiAgICBAaW5jbHVkZSBwcmljZS1wcm9kdWN0LXZvbHVtZS13aWRnZXQtdm9sdW1lLXByaWNlLXRhYmxlKCk7XG5cbiAgICAjeyRuYW1lfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cbiIsIiRzaG9wcGluZy1saXN0LXByb2R1Y3Qtb3B0aW9uLWxpc3QtcGFkZGluZzogbWFwLWdldCgkc2V0dGluZy1zcGFjaW5nLCAnc21hbGwnKTtcblxuQG1peGluIHByb2R1Y3Qtb3B0aW9uLXdpZGdldC1zaG9wcGluZy1saXN0LXByb2R1Y3Qtb3B0aW9uLWxpc3QoJG5hbWU6ICcuc2hvcHBpbmctbGlzdC1wcm9kdWN0LW9wdGlvbi1saXN0Jykge1xuICAgICN7JG5hbWV9IHtcbiAgICAgICAgbWFyZ2luOiAwICgtJHNob3BwaW5nLWxpc3QtcHJvZHVjdC1vcHRpb24tbGlzdC1wYWRkaW5nKTtcblxuICAgICAgICAmX19pdGVtIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgJHNob3BwaW5nLWxpc3QtcHJvZHVjdC1vcHRpb24tbGlzdC1wYWRkaW5nIG1hcC1nZXQoJHNldHRpbmctc3BhY2luZywgJ2RlZmF1bHQnKTtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHByb2R1Y3Qtb3B0aW9uLXdpZGdldC1zaG9wcGluZy1saXN0LXByb2R1Y3Qtb3B0aW9uLWxpc3QgbWl4aW4gaW5zdGVhZC5cbiAqL1xuQG1peGluIHNob3BwaW5nLWxpc3QtcHJvZHVjdC1vcHRpb24tbGlzdCgkbmFtZTogJy5zaG9wcGluZy1saXN0LXByb2R1Y3Qtb3B0aW9uLWxpc3QnKSB7XG4gICAgQGluY2x1ZGUgcHJvZHVjdC1vcHRpb24td2lkZ2V0LXNob3BwaW5nLWxpc3QtcHJvZHVjdC1vcHRpb24tbGlzdCgpO1xuXG4gICAgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG4iLCJAbWl4aW4gcHJvZHVjdC1wYWNrYWdpbmctdW5pdC13aWRnZXQtcGFja2FnaW5nLXVuaXQtY2FydCgkbmFtZTogJy5wYWNrYWdpbmctdW5pdC1jYXJ0Jykge1xuICAgICN7JG5hbWV9IHtcbiAgICAgICAgJl9faXRlbSB7XG4gICAgICAgICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IG1hcC1nZXQoJHNldHRpbmctc3BhY2luZywgJ3NtYWxsJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmX192YWx1ZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRzZXR0aW5nLWNvbG9yLWlucHV0LWJvcmRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgcHJvZHVjdC1wYWNrYWdpbmctdW5pdC13aWRnZXQtcGFja2FnaW5nLXVuaXQtY2FydCBtaXhpbiBpbnN0ZWFkLlxuICovXG5AbWl4aW4gcHJvZHVjdC1wYWNrYWdpbmctdW5pdC1wYWNrYWdpbmctdW5pdC1jYXJ0KCRuYW1lOiAnLnBhY2thZ2luZy11bml0LWNhcnQnKSB7XG4gICAgQGluY2x1ZGUgcHJvZHVjdC1wYWNrYWdpbmctdW5pdC13aWRnZXQtcGFja2FnaW5nLXVuaXQtY2FydCgpO1xuXG4gICAgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG4iLCIkcHJvZHVjdC1yZXZpZXctcmF0aW5nLXNlbGVjdG9yLWljb24tc2l6ZTogMjBweDtcblxuQG1peGluIHByb2R1Y3QtcmV2aWV3LXdpZGdldC1yYXRpbmctc2VsZWN0b3IoJG5hbWU6ICcucmF0aW5nLXNlbGVjdG9yJykge1xuICAgICN7JG5hbWV9IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgICAgICZfX3N0ZXBzIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGRpcmVjdGlvbjogcnRsO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fc3RlcCB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcblxuICAgICAgICAgICAgJi0tZnVsbCB7XG4gICAgICAgICAgICAgICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IGNhbGMoI3skcHJvZHVjdC1yZXZpZXctcmF0aW5nLXNlbGVjdG9yLWljb24tc2l6ZX0gLyAyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYtLWhhbGYge1xuICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoI3stJHByb2R1Y3QtcmV2aWV3LXJhdGluZy1zZWxlY3Rvci1pY29uLXNpemV9IC8gMik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoZXZlbikge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygjeyRwcm9kdWN0LXJldmlldy1yYXRpbmctc2VsZWN0b3ItaWNvbi1zaXplfSAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfX3N0YXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgaGVscGVyLWVmZmVjdC10cmFuc2l0aW9uKGNvbG9yLCAxMDBtcyk7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtaW4td2lkdGg6ICRwcm9kdWN0LXJldmlldy1yYXRpbmctc2VsZWN0b3ItaWNvbi1zaXplO1xuICAgICAgICAgICAgd2lkdGg6ICRwcm9kdWN0LXJldmlldy1yYXRpbmctc2VsZWN0b3ItaWNvbi1zaXplO1xuICAgICAgICAgICAgbWluLWhlaWdodDogJHByb2R1Y3QtcmV2aWV3LXJhdGluZy1zZWxlY3Rvci1pY29uLXNpemU7XG4gICAgICAgICAgICBoZWlnaHQ6ICRwcm9kdWN0LXJldmlldy1yYXRpbmctc2VsZWN0b3ItaWNvbi1zaXplO1xuICAgICAgICAgICAgY29sb3I6ICRzZXR0aW5nLWNvbG9yLWRhcms7XG5cbiAgICAgICAgICAgICYtLWhhbGYtbGVmdCB7XG4gICAgICAgICAgICAgICAgbGVmdDogY2FsYygjeyRwcm9kdWN0LXJldmlldy1yYXRpbmctc2VsZWN0b3ItaWNvbi1zaXplfSAvIDIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLS1oYWxmLXJpZ2h0IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBjYWxjKCN7LSRwcm9kdWN0LXJldmlldy1yYXRpbmctc2VsZWN0b3ItaWNvbi1zaXplfSAvIDIpO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgtMTgwZGVnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfX3N0ZXA6aG92ZXIgPiAmX19zdGFyLFxuICAgICAgICAmX19zdGVwOmhvdmVyIH4gJl9fc3RlcCA+ICZfX3N0YXIge1xuICAgICAgICAgICAgY29sb3I6ICRzZXR0aW5nLWNvbG9yLW1haW47XG4gICAgICAgIH1cblxuICAgICAgICAmX19zdGVwLS1hY3RpdmUgPiAmX19zdGFyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkc2V0dGluZy1jb2xvci1hbHQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1yZWFkb25seSB7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWV4cGFuZCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgcHJvZHVjdC1yZXZpZXctd2lkZ2V0LXJhdGluZy1zZWxlY3RvciBtaXhpbiBpbnN0ZWFkLlxuICovXG5AbWl4aW4gcHJvZHVjdC1yZXZpZXctcmF0aW5nLXNlbGVjdG9yKCRuYW1lOiAnLnBhY2thZ2luZy11bml0LWNhcnQnKSB7XG4gICAgQGluY2x1ZGUgcHJvZHVjdC1yZXZpZXctd2lkZ2V0LXJhdGluZy1zZWxlY3RvcigpO1xuXG4gICAgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG4iLCJAbWl4aW4gcHJvZHVjdC1zZWFyY2gtd2lkZ2V0LXByb2R1Y3QtcXVpY2stYWRkLWZvcm0oJG5hbWU6ICcucHJvZHVjdC1xdWljay1hZGQtZm9ybScpIHtcbiAgICAjeyRuYW1lfSB7XG4gICAgICAgICYtLXJvdyB7XG4gICAgICAgICAgICBwYWRkaW5nOiBtYXAtZ2V0KCRzZXR0aW5nLXNwYWNpbmcsICdkZWZhdWx0Jyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2V0dGluZy1jb2xvci1saWdodGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fdGl0bGUge1xuICAgICAgICAgICAgJi0tcm93IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBoZWxwZXItZm9udC1zaXplKGRlZmF1bHQpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBwcm9kdWN0LXNlYXJjaC13aWRnZXQtcHJvZHVjdC1xdWljay1hZGQtZm9ybSBtaXhpbiBpbnN0ZWFkLlxuICovXG5AbWl4aW4gcHJvZHVjdC1xdWljay1hZGQtd2lkZ2V0LXByb2R1Y3QtcXVpY2stYWRkLWZvcm0oJG5hbWU6ICcucHJvZHVjdC1xdWljay1hZGQtZm9ybScpIHtcbiAgICBAaW5jbHVkZSBwcm9kdWN0LXNlYXJjaC13aWRnZXQtcHJvZHVjdC1xdWljay1hZGQtZm9ybSgpO1xuXG4gICAgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG4iLCJAbWl4aW4gc2FsZXMtY29uZmlndXJhYmxlLWJ1bmRsZS13aWRnZXQtb3JkZXItY29uZmlndXJlZC1idW5kbGUoJG5hbWU6ICcub3JkZXItY29uZmlndXJlZC1idW5kbGUnKSB7XG4gICAgI3skbmFtZX0ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHNldHRpbmctY29sb3ItbGlnaHQ7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG5cbiAgICAgICAgJl9fY29sIHtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgIH1cblxuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGNvbmZpZ3VyYWJsZS1idW5kbGUtd2lkZ2V0LW9yZGVyLWNvbmZpZ3VyZWQtYnVuZGxlIG1peGluIGluc3RlYWQuXG4gKi9cbkBtaXhpbiBjb25maWd1cmFibGUtYnVuZGxlLXdpZGdldC1vcmRlci1jb25maWd1cmVkLWJ1bmRsZSgkbmFtZTogJy5vcmRlci1jb25maWd1cmVkLWJ1bmRsZScpIHtcbiAgICBAaW5jbHVkZSBzYWxlcy1jb25maWd1cmFibGUtYnVuZGxlLXdpZGdldC1vcmRlci1jb25maWd1cmVkLWJ1bmRsZSgpO1xuXG4gICAgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG4iLCJAbWl4aW4gc2FsZXMtY29uZmlndXJhYmxlLWJ1bmRsZS13aWRnZXQtb3JkZXItY29uZmlndXJlZC1idW5kbGUtcHJvZHVjdCgkbmFtZTogJy5vcmRlci1jb25maWd1cmVkLWJ1bmRsZS1wcm9kdWN0Jykge1xuICAgICN7JG5hbWV9IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNldHRpbmctY29sb3ItbGlnaHRlc3Q7XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkc2V0dGluZy1jb2xvci1saWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2NvbCB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICAgICAgcGFkZGluZzogMC4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2J1bGxldCB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2NvbnRlbnQge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBjb25maWd1cmFibGUtYnVuZGxlLXdpZGdldC1vcmRlci1jb25maWd1cmVkLWJ1bmRsZS1wcm9kdWN0IG1peGluIGluc3RlYWQuXG4gKi9cbkBtaXhpbiBjb25maWd1cmFibGUtYnVuZGxlLXdpZGdldC1vcmRlci1jb25maWd1cmVkLWJ1bmRsZS1wcm9kdWN0KCRuYW1lOiAnLm9yZGVyLWNvbmZpZ3VyZWQtYnVuZGxlLXByb2R1Y3QnKSB7XG4gICAgQGluY2x1ZGUgc2FsZXMtY29uZmlndXJhYmxlLWJ1bmRsZS13aWRnZXQtb3JkZXItY29uZmlndXJlZC1idW5kbGUtcHJvZHVjdCgpO1xuXG4gICAgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG4iLCJAbWl4aW4gc2hvcC11aS1jb2xsYXBzaWJsZS1saXN0KCRuYW1lOiAnLmNvbGxhcHNpYmxlLWxpc3QnKSB7XG4gICAgI3skbmFtZX0ge1xuICAgICAgICAmX19idXR0b24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNldHRpbmctY29sb3ItdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBjb2xvcjogJHNldHRpbmctY29sb3ItbWFpbjtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtc2hvdyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYtLXNob3duIHtcbiAgICAgICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1oaWRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmX19idXR0b24tY29udGVudCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiJHNldHRpbmctY29sb3ItbWFpbjogIzA4NDkzZDtcbiRzZXR0aW5nLWNvbG9yLWFsdDogI2UwMWEwMDtcblxuJHNldHRpbmctY29sb3Itd2hpdGU6ICNmZmY7XG4kc2V0dGluZy1jb2xvci1ibGFjazogIzAwMDtcblxuJHNldHRpbmctY29sb3ItZ3JheS0xOiAjZGNlMGU1O1xuJHNldHRpbmctY29sb3ItZ3JheS0yOiAjYjJiMmIyO1xuJHNldHRpbmctY29sb3ItZ3JheS0zOiAjOGY4ZjhmO1xuJHNldHRpbmctY29sb3ItZ3JheS00OiAjNGM0YzRjO1xuJHNldHRpbmctY29sb3ItZ3JheS01OiAjMzMzO1xuJHNldHRpbmctY29sb3ItZ3JheS02OiAjZTdlYWVlO1xuJHNldHRpbmctY29sb3ItZ3JheS03OiAjZjZmNmY2O1xuJHNldHRpbmctY29sb3ItZ3JheS04OiAjMjAyMDIwO1xuXG4kc2V0dGluZy1jb2xvci1ibHVlLTE6ICMwMDViYTE7XG5cbiRzZXR0aW5nLWNvbG9yLXllbGxvdy0xOiAjZDg4ZDAwO1xuXG4kc2V0dGluZy1jb2xvci1hbHBoYS0xOiByZ2JhKCRzZXR0aW5nLWNvbG9yLWJsYWNrLCAwLjEpO1xuJHNldHRpbmctY29sb3ItYWxwaGEtMjogcmdiYSgkc2V0dGluZy1jb2xvci1ibGFjaywgMC4wNSk7XG4kc2V0dGluZy1jb2xvci1hbHBoYS0zOiByZ2JhKCRzZXR0aW5nLWNvbG9yLWdyYXktMiwgMC4zKTtcbiRzZXR0aW5nLWNvbG9yLWFscGhhLTQ6IHJnYmEoJHNldHRpbmctY29sb3Itd2hpdGUsIDAuNik7XG4kc2V0dGluZy1jb2xvci1hbHBoYS01OiByZ2JhKCRzZXR0aW5nLWNvbG9yLWFsdCwgMC4xKTtcbiRzZXR0aW5nLWNvbG9yLWFscGhhLTY6IHJnYmEoJHNldHRpbmctY29sb3ItYmxhY2ssIDAuMik7XG4kc2V0dGluZy1jb2xvci1hbHBoYS03OiByZ2JhKCRzZXR0aW5nLWNvbG9yLWdyYXktNSwgMC44KTtcbiRzZXR0aW5nLWNvbG9yLWFscGhhLTg6IHJnYmEoJHNldHRpbmctY29sb3IteWVsbG93LTEsIDAuMik7XG4kc2V0dGluZy1jb2xvci1hbHBoYS05OiByZ2JhKCRzZXR0aW5nLWNvbG9yLW1haW4sIDAuMTUpO1xuXG4kc2V0dGluZy1jb2xvci1vdmVybGF5OiByZ2JhKCRzZXR0aW5nLWNvbG9yLWdyYXktNSwgMC40KTtcblxuJHNldHRpbmctY29sb3ItYmc6ICRzZXR0aW5nLWNvbG9yLXdoaXRlO1xuJHNldHRpbmctY29sb3ItdGV4dDogJHNldHRpbmctY29sb3ItZ3JheS04O1xuJHNldHRpbmctY29sb3ItaW5wdXQtYm9yZGVyOiAkc2V0dGluZy1jb2xvci1ncmF5LTE7XG4kc2V0dGluZy1jb2xvci1pbnB1dC1ib3JkZXItZm9jdXM6ICRzZXR0aW5nLWNvbG9yLWdyYXktMztcblxuJHNldHRpbmctY29sb3Itc2hhZG93OiAkc2V0dGluZy1jb2xvci1hbHBoYS0xO1xuJHNldHRpbmctY29sb3Itc2hhZG93LTE6ICRzZXR0aW5nLWNvbG9yLWFscGhhLTI7XG4kc2V0dGluZy1jb2xvci1zaGFkb3ctMjogJHNldHRpbmctY29sb3ItYWxwaGEtNjtcblxuJHNldHRpbmctY29sb3ItZGFyazogJHNldHRpbmctY29sb3ItZ3JheS00O1xuXG4kc2V0dGluZy1jb2xvci1hY3Rpb25zOiAoXG4gICAgc3VjY2VzczogIzA4NDkzZCxcbiAgICB3YXJuaW5nOiAjZDg4ZDAwLFxuICAgIGFsZXJ0OiAjZTAxYTAwLFxuKTtcbiIsIi8qIGZlLXNuaWZmZXI6ZGlzYWJsZWQgY29ycmVjdC1zY3NzLWNvbXBvbmVudC1zdHJ1Y3R1cmUgKi9cbkBtaXhpbiBzaG9wLXVpLXF1b3RlLXN0YXR1cygkbmFtZTogJy5xdW90ZS1zdGF0dXMnKSB7XG4gICAgI3skbmFtZX0ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIG1hcC1nZXQoJHNldHRpbmctc3BhY2luZywgJ2JpZycpO1xuXG4gICAgICAgICYtLXdhaXRpbmcge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3RhdHVzLWNvbG9yKCd3YXJuaW5nJywgMC4zKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWFwcHJvdmVkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN0YXR1cy1jb2xvcignc3VjY2VzcycsIDAuMyk7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1kZWNsaW5lZCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdGF0dXMtY29sb3IoJ2FsZXJ0JywgMC4zKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLXNtYWxsIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMTVyZW0gbWFwLWdldCgkc2V0dGluZy1zcGFjaW5nLCAnZGVmYXVsdCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gc2hvcC11aS1xdW90ZS1zdGF0dXMtY29sb3IoJGFjdGlvbi1jb2xvciwgJG9wYWNpdHk6IDEpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKGhlbHBlci1jb2xvci1saWdodChtYXAtZ2V0KCRzZXR0aW5nLWNvbG9yLWFjdGlvbnMsICRhY3Rpb24tY29sb3IpLCAxMCksICRvcGFjaXR5KTtcbiAgICBjb2xvcjogbWFwLWdldCgkc2V0dGluZy1jb2xvci1hY3Rpb25zLCAkYWN0aW9uLWNvbG9yKTtcblxuICAgIEBjb250ZW50O1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBzaG9wLXVpLXF1b3RlLXN0YXR1cy1jb2xvciBtaXhpbiBpbnN0ZWFkLlxuICovXG5AbWl4aW4gc3RhdHVzLWNvbG9yKCRhY3Rpb24tY29sb3IsICRvcGFjaXR5OiAxKSB7XG4gICAgQGluY2x1ZGUgc2hvcC11aS1xdW90ZS1zdGF0dXMtY29sb3IoJGFjdGlvbi1jb2xvciwgJG9wYWNpdHkpO1xuXG4gICAgQGNvbnRlbnQ7XG59XG4iLCIkc2VhcmNoLXRhYi1ib3JkZXI6IDFweCBzb2xpZCAkc2V0dGluZy1jb2xvci1saWdodGVyO1xuXG5AbWl4aW4gdGFicy13aWRnZXQtc2VhcmNoLXRhYnMoJG5hbWU6ICcuc2VhcmNoLXRhYnMnKSB7XG4gICAgI3skbmFtZX0ge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAkc2VhcmNoLXRhYi1ib3JkZXI7XG4gICAgICAgIGJvcmRlci1ib3R0b206ICRzZWFyY2gtdGFiLWJvcmRlcjtcblxuICAgICAgICAmX19pdGVtIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMnJlbTtcbiAgICAgICAgICAgIGJvcmRlci10b3A6ICRzZWFyY2gtdGFiLWJvcmRlcjtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogJHNlYXJjaC10YWItYm9yZGVyO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBoZWxwZXItYnJlYWtwb2ludChtZCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi0tYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNldHRpbmctY29sb3Itd2hpdGU7XG5cbiAgICAgICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogLTFweDtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIDFweCk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2V0dGluZy1jb2xvci13aGl0ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHRhYnMtd2lkZ2V0LXNlYXJjaC10YWJzIG1peGluIGluc3RlYWQuXG4gKi9cbkBtaXhpbiBjYXRhbG9nLXBhZ2Utc2VhcmNoLXRhYnMoJG5hbWU6ICcuc2VhcmNoLXRhYnMnKSB7XG4gICAgQGluY2x1ZGUgdGFicy13aWRnZXQtc2VhcmNoLXRhYnMoKTtcblxuICAgICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBQcm92aWRlcyBnbG9iYWwgY2xhc3MgbmFtZXMgZm9yIHNwYWNpbmdzLlxuICovXG5AbWl4aW4gdXRpbC1zcGFjaW5nKCkge1xuICAgIEBpbmNsdWRlIGhlbHBlci1zcGFjaW5nKCcuc3BhY2luZycpO1xuICAgIEBpbmNsdWRlIGhlbHBlci1zcGFjaW5nKCcuc3BhY2luZy10b3AnLCB0b3ApO1xuICAgIEBpbmNsdWRlIGhlbHBlci1zcGFjaW5nKCcuc3BhY2luZy1ib3R0b20nLCBib3R0b20pO1xuICAgIEBpbmNsdWRlIGhlbHBlci1zcGFjaW5nKCcuc3BhY2luZy1sZWZ0JywgbGVmdCk7XG4gICAgQGluY2x1ZGUgaGVscGVyLXNwYWNpbmcoJy5zcGFjaW5nLXJpZ2h0JywgcmlnaHQpO1xuICAgIEBpbmNsdWRlIGhlbHBlci1zcGFjaW5nKCcuc3BhY2luZy14JywgbGVmdCByaWdodCk7XG4gICAgQGluY2x1ZGUgaGVscGVyLXNwYWNpbmcoJy5zcGFjaW5nLXknLCB0b3AgYm90dG9tKTtcblxuICAgIEBjb250ZW50O1xufVxuIiwiLyoqXG4gKiBQcm92aWRlcyBnbG9iYWwgY2xhc3MgbmFtZXMgZm9yIHRleHQgc3R5bGluZy5cbiAqL1xuQG1peGluIHV0aWwtdGV4dCgpIHtcbiAgICAudGV4dC1zbWFsbCB7XG4gICAgICAgIEBpbmNsdWRlIGhlbHBlci1mb250LXNpemUoc21hbGwpO1xuICAgIH1cblxuICAgIC50ZXh0LWJpZyB7XG4gICAgICAgIEBpbmNsdWRlIGhlbHBlci1mb250LXNpemUoYmlnKTtcbiAgICB9XG5cbiAgICAudGV4dC1sZWZ0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG5cbiAgICAudGV4dC1jZW50ZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLnRleHQtcmlnaHQge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAudGV4dC1hbHQge1xuICAgICAgICBjb2xvcjogJHNldHRpbmctY29sb3ItYWx0O1xuICAgIH1cblxuICAgIC50ZXh0LXNlY29uZGFyeSB7XG4gICAgICAgIGNvbG9yOiAkc2V0dGluZy1jb2xvci1kYXJrZXI7XG4gICAgfVxuXG4gICAgLnRleHQtYnJlYWsge1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgIH1cblxuICAgIEBlYWNoICRhY3Rpb24sICRzZXR0aW5nLWNvbG9yLWFjdGlvbiBpbiAkc2V0dGluZy1jb2xvci1hY3Rpb25zIHtcbiAgICAgICAgQGluY2x1ZGUgdXRpbC10ZXh0LWFjdGlvbigkYWN0aW9uLCAkc2V0dGluZy1jb2xvci1hY3Rpb24pO1xuICAgIH1cblxuICAgIEBjb250ZW50O1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGNsYXNzIG5hbWUgZm9yIHRleHQgc3R5bGluZyB3aXRoIGNvbG9yIHByb3BlcnR5IHNwZWNpZmllZCBieSBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtTdHJpbmd9ICRhY3Rpb24gU2V0cyBjbGFzcyBuYW1lIHBvc3RmaXguXG4gKiBAcGFyYW0ge0NvbG9yfSAkc2V0dGluZy1jb2xvci1hY3Rpb24gU2V0cyBjb2xvciBwcm9wZXJ0eS5cbiAqIEBjb250ZW50IEV4dGVuZGFibGUgbWl4aW4uXG4gKi9cbkBtaXhpbiB1dGlsLXRleHQtYWN0aW9uKCRhY3Rpb24sICRzZXR0aW5nLWNvbG9yLWFjdGlvbikge1xuICAgIC50ZXh0LSN7JGFjdGlvbn0ge1xuICAgICAgICBjb2xvcjogJHNldHRpbmctY29sb3ItYWN0aW9uO1xuICAgIH1cblxuICAgIEBjb250ZW50O1xufVxuIiwiLyoqXG4gKiBQcm92aWRlcyBnbG9iYWwgY2xhc3MgbmFtZXMgZm9yIHRoZSBlbGVtZW50cycgZmxvYXQgYWxpZ25tZW50LlxuICovXG5AbWl4aW4gdXRpbC1mbG9hdCgpIHtcbiAgICAuY2xlYXIge1xuICAgICAgICBAaW5jbHVkZSBoZWxwZXItdWktY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgLmZsb2F0LWxlZnQge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICAuZmxvYXQtcmlnaHQge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuXG4gICAgLmZsb2F0LW5vbmUge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICB9XG5cbiAgICBAY29udGVudDtcbn1cbiIsIi8qKlxuICogUHJvdmlkZXMgZ2xvYmFsIGNsYXNzIG5hbWVzIGZvciBkaXNwbGF5IGJlaGF2aW9yIHdpdGggYWRkaXRpb25hbCByZXNwb25zaXZlIG1vZGlmaWVycy5cbiAqL1xuQG1peGluIHV0aWwtdmlzaWJpbGl0eSgpIHtcbiAgICAuaXMtaGlkZGVuIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICBAZWFjaCAkYnJlYWtwb2ludC1hLCAkZWRnZXMtYSBpbiAkc2V0dGluZy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAkZWRnZS1taW46IGhlbHBlci1icmVha3BvaW50LWVkZ2UtbWluKCRlZGdlcy1hKTtcbiAgICAgICAgICAgICRlZGdlLW1heDogaGVscGVyLWJyZWFrcG9pbnQtZWRnZS1tYXgoJGVkZ2VzLWEpO1xuXG4gICAgICAgICAgICAmLSN7JGJyZWFrcG9pbnQtYX0tb25seSB7XG4gICAgICAgICAgICAgICAgQGlmICRlZGdlLW1heCA9PSBudWxsIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgaGVscGVyLWJyZWFrcG9pbnQtbWVkaWEtbWluKCRlZGdlLW1pbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBoZWxwZXItYnJlYWtwb2ludC1tZWRpYS1iZXR3ZWVuKCRlZGdlLW1pbiwgJGVkZ2UtbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAZWFjaCAkYnJlYWtwb2ludC1iLCAkZWRnZXMtYiBpbiAkc2V0dGluZy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAgICAgQGlmIGhlbHBlci1icmVha3BvaW50LWVkZ2UtbWluKCRlZGdlcy1iKSA+IGhlbHBlci1icmVha3BvaW50LWVkZ2UtbWluKCRlZGdlcy1hKSB7XG4gICAgICAgICAgICAgICAgICAgICRlZGdlLW1pbjogaGVscGVyLWJyZWFrcG9pbnQtZWRnZS1taW4oJGVkZ2VzLWEpO1xuICAgICAgICAgICAgICAgICAgICAkZWRnZS1tYXg6IGhlbHBlci1icmVha3BvaW50LWVkZ2UtbWF4KCRlZGdlcy1iKTtcblxuICAgICAgICAgICAgICAgICAgICAmLSN7JGJyZWFrcG9pbnQtYX0tI3skYnJlYWtwb2ludC1ifSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgJGVkZ2UtbWF4ID09IG51bGwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGhlbHBlci1icmVha3BvaW50LW1lZGlhLW1pbigkZWRnZS1taW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBoZWxwZXItYnJlYWtwb2ludC1tZWRpYS1iZXR3ZWVuKCRlZGdlLW1pbiwgJGVkZ2UtbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmlzLXZpc2libGUge1xuICAgICAgICBAaW5jbHVkZSBoZWxwZXItdmlzaWJpbGl0eS12aXNpYmxlO1xuICAgIH1cblxuICAgIC5pcy1pbnZpc2libGUge1xuICAgICAgICBAaW5jbHVkZSBoZWxwZXItdmlzaWJpbGl0eS1pbnZpc2libGU7XG4gICAgfVxuXG4gICAgLmlzLXNjcm9sbGFibGUge1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICB9XG5cbiAgICAuaXMtbm90LXNjcm9sbGFibGUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgIC5pcy1zY3JvbGxhYmxlLXgge1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIH1cblxuICAgIC5pcy1ub3Qtc2Nyb2xsYWJsZS14IHtcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIH1cblxuICAgIC5pcy1zY3JvbGxhYmxlLXkge1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cblxuICAgIC5pcy1ub3Qtc2Nyb2xsYWJsZS15IHtcbiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgIH1cblxuICAgIC5pcy1wb3NpdGlvbi1yZWxhdGl2ZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICBAY29udGVudDtcbn1cbiIsIiRzZXR0aW5nLXNwYWNpbmc6IChcbiAgICBiaWdnZXN0OiAycmVtLFxuICAgIGJpZ2dlcjogMS41cmVtLFxuICAgIGJpZzogMXJlbSxcbiAgICBkZWZhdWx0OiAwLjVyZW0sXG4gICAgc21hbGw6IDAuMjVyZW0sXG4gICAgcmVzZXQ6IDAsXG4pO1xuIiwiQG1peGluIHV0aWwtdmlzaWJpbGl0eSgpIHtcbiAgICAuaXMtaGlkZGVuIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICBAZWFjaCAkYnJlYWtwb2ludC1hLCAkZWRnZXMtYSBpbiAkc2V0dGluZy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAkZWRnZS1taW46IGhlbHBlci1icmVha3BvaW50LWVkZ2UtbWluKCRlZGdlcy1hKTtcbiAgICAgICAgICAgICRlZGdlLW1heDogaGVscGVyLWJyZWFrcG9pbnQtZWRnZS1tYXgoJGVkZ2VzLWEpO1xuXG4gICAgICAgICAgICAmLSN7JGJyZWFrcG9pbnQtYX0tb25seSB7XG4gICAgICAgICAgICAgICAgQGlmICRlZGdlLW1heCA9PSBudWxsIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgaGVscGVyLWJyZWFrcG9pbnQtbWVkaWEtbWluKCRlZGdlLW1pbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBoZWxwZXItYnJlYWtwb2ludC1tZWRpYS1iZXR3ZWVuKCRlZGdlLW1pbiwgJGVkZ2UtbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAZWFjaCAkYnJlYWtwb2ludC1iLCAkZWRnZXMtYiBpbiAkc2V0dGluZy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAgICAgQGlmIGhlbHBlci1icmVha3BvaW50LWVkZ2UtbWluKCRlZGdlcy1iKSA+IGhlbHBlci1icmVha3BvaW50LWVkZ2UtbWluKCRlZGdlcy1hKSB7XG4gICAgICAgICAgICAgICAgICAgICRlZGdlLW1pbjogaGVscGVyLWJyZWFrcG9pbnQtZWRnZS1taW4oJGVkZ2VzLWEpO1xuICAgICAgICAgICAgICAgICAgICAkZWRnZS1tYXg6IGhlbHBlci1icmVha3BvaW50LWVkZ2UtbWF4KCRlZGdlcy1iKTtcblxuICAgICAgICAgICAgICAgICAgICAmLSN7JGJyZWFrcG9pbnQtYX0tI3skYnJlYWtwb2ludC1ifSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgJGVkZ2UtbWF4ID09IG51bGwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGhlbHBlci1icmVha3BvaW50LW1lZGlhLW1pbigkZWRnZS1taW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBoZWxwZXItYnJlYWtwb2ludC1tZWRpYS1iZXR3ZWVuKCRlZGdlLW1pbiwgJGVkZ2UtbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmlzLXZpc2libGUge1xuICAgICAgICBAaW5jbHVkZSBoZWxwZXItdmlzaWJpbGl0eS12aXNpYmxlO1xuICAgIH1cblxuICAgIC5pcy1pbnZpc2libGUge1xuICAgICAgICBAaW5jbHVkZSBoZWxwZXItdmlzaWJpbGl0eS1pbnZpc2libGU7XG4gICAgfVxuXG4gICAgLmlzLXNjcm9sbGFibGUge1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICB9XG5cbiAgICAuaXMtbm90LXNjcm9sbGFibGUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgIC5pcy1zY3JvbGxhYmxlLXgge1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIH1cblxuICAgIC5pcy1ub3Qtc2Nyb2xsYWJsZS14IHtcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIH1cblxuICAgIC5pcy1zY3JvbGxhYmxlLXkge1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cblxuICAgIC5pcy1ub3Qtc2Nyb2xsYWJsZS15IHtcbiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgIH1cblxuICAgIC5pcy1wb3NpdGlvbi1yZWxhdGl2ZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICBodG1sID4ge1xuICAgICAgICAuaXMtbG9ja2VkLXRhYmxldCxcbiAgICAgICAgLmlzLWxvY2tlZC1tb2JpbGUsXG4gICAgICAgIC5pcy1sb2NrZWQge1xuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pcy1sb2NrZWQtdGFibGV0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGhlbHBlci1icmVha3BvaW50LW1lZGlhLW1pbigkeGwpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmlzLWxvY2tlZC1tb2JpbGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgaGVscGVyLWJyZWFrcG9pbnQtbWVkaWEtbWluKCRsZykge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/