<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/*
 * Fair warning: Don't mix units while using 'utils/poly-fluid-sizing' feature.
 * If you use rems, stick to rems everywhere in the area of whole map, or else the mixin will throw an error
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
@use "sass:map";
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
@use "sass:map";
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
@use "sass:map";
/**
* Default project breakpoints - [em]
*/
/***
 * Using psuedo elements to maintain an elements aspect ratio, even as it scales
 * It's using only for IE11 and Edge (version which doesn't support native CSS grid) browsers
 * For browsers which support native CSS grid, we are using mixins contain `reset` in mixin name
 * to override default mixins (progressive enhancement)
 * https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/
 * @param {number} $width: width of the element;
 * @param {number} $height: height of the element;
 * @param {string} $contentClass: class of the direct child element to be positioned absolutely;
 * @param {boolean} $autoposition: tells if item shall take 100% of parent size or if it can be wider/higher if needed;
 */
/**
 * Clearfix: contain floats
 *
 * For modern browsers
 * 1. The space content is one way to avoid an Opera bug when the
 *    `contenteditable` attribute is included anywhere else in the document.
 *    Otherwise it causes space to appear at the top and bottom of elements
 *    that receive the `clearfix` class.
 * 2. The use of `table` rather than `block` is only necessary if using
 *    `:before` to contain the top-margins of child elements.
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L179
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/* 
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
.cs-grid-layout {
  position: relative;
  width: 100%; }
  .cs-grid-layout__grid {
    width: 100%;
    margin: 0;
    padding: 0;
    list-style: none; }
    .cs-grid-layout__grid:after {
      content: '';
      display: table;
      clear: both; }
  .cs-grid-layout__teaser {
    overflow: hidden;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }
    .cs-grid-layout__teaser-content-wrapper {
      display: flex;
      width: 100%;
      height: 100%; }
    .cs-grid-layout__teaser-figure {
      position: relative;
      width: 100%;
      height: 100%; }
    .cs-grid-layout__teaser-image {
      min-width: 100%;
      min-height: 100%;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate3d(-50%, -50%, 0); }
    .cs-grid-layout__teaser-content {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      display: flex;
      flex-direction: column;
      padding: 1.5rem;
      line-height: 1.15;
      /* Variants will be refactored after CC IT refactor due to new position options */ }
      .cs-grid-layout__teaser-content--variant-1 {
        justify-content: center;
        align-items: flex-start; }
      .cs-grid-layout__teaser-content--variant-2 {
        justify-content: flex-end;
        align-items: flex-start; }
      .cs-grid-layout__teaser-content--variant-3 {
        justify-content: center;
        align-items: center;
        text-align: center; }
      .cs-grid-layout__teaser-content--variant-4 {
        justify-content: flex-end;
        align-items: center;
        text-align: center; }
    .cs-grid-layout__teaser-content-inner {
      max-width: 100%; }
    .cs-grid-layout__teaser-headline {
      margin: 0 0 0.2em;
      color: #212121;
      font-weight: 600;
      text-transform: none;
      font-size: 1.8rem; }
      @media (min-width: 32rem) {
        .cs-grid-layout__teaser-headline {
          font-size: calc(0.92593vw + 1.5037rem); } }
      @media (min-width: 140rem) {
        .cs-grid-layout__teaser-headline {
          font-size: 2.8rem; } }
      .cs-grid-layout__brick--x2 .cs-grid-layout__teaser-headline {
        margin: 0 0 0.2em;
        font-size: 1.8rem; }
        @media (min-width: 32rem) {
          .cs-grid-layout__brick--x2 .cs-grid-layout__teaser-headline {
            font-size: calc(2.03704vw + 1.14815rem); } }
        @media (min-width: 140rem) {
          .cs-grid-layout__brick--x2 .cs-grid-layout__teaser-headline {
            font-size: 4rem; } }
      .cs-grid-layout__teaser--scheme-light .cs-grid-layout__teaser-headline {
        color: #fff; }
    .cs-grid-layout__teaser-subheadline {
      display: block;
      margin: 0 0 0.6em;
      color: #212121;
      font-weight: 400;
      text-transform: none;
      font-size: 1.6rem; }
      @media (min-width: 32rem) {
        .cs-grid-layout__teaser-subheadline {
          font-size: calc(0.18519vw + 1.54074rem); } }
      @media (min-width: 140rem) {
        .cs-grid-layout__teaser-subheadline {
          font-size: 1.8rem; } }
      .cs-grid-layout__brick--x2 .cs-grid-layout__teaser-subheadline {
        margin: 0 0 0.6em;
        font-size: 1.6rem; }
        @media (min-width: 32rem) {
          .cs-grid-layout__brick--x2 .cs-grid-layout__teaser-subheadline {
            font-size: calc(0.83333vw + 1.33333rem); } }
        @media (min-width: 140rem) {
          .cs-grid-layout__brick--x2 .cs-grid-layout__teaser-subheadline {
            font-size: 2.5rem; } }
      .cs-grid-layout__teaser--scheme-light .cs-grid-layout__teaser-subheadline {
        color: #fff; }
    .cs-grid-layout__teaser-text {
      margin: 0 0 1em;
      color: #212121;
      font-weight: 400;
      text-transform: none;
      font-size: 1.3rem; }
      @media (min-width: 32rem) {
        .cs-grid-layout__teaser-text {
          font-size: calc(0.09259vw + 1.27037rem); } }
      @media (min-width: 140rem) {
        .cs-grid-layout__teaser-text {
          font-size: 1.4rem; } }
      .cs-grid-layout__brick--x2 .cs-grid-layout__teaser-text {
        margin: 0 0 1em;
        font-size: 1.3rem; }
        @media (min-width: 32rem) {
          .cs-grid-layout__brick--x2 .cs-grid-layout__teaser-text {
            font-size: calc(0.27778vw + 1.21111rem); } }
        @media (min-width: 140rem) {
          .cs-grid-layout__brick--x2 .cs-grid-layout__teaser-text {
            font-size: 1.6rem; } }
      .cs-grid-layout__teaser--scheme-light .cs-grid-layout__teaser-text {
        color: #fff; }
    .cs-grid-layout__teaser-cta-button {
      display: inline-block;
      font-size: 1.4rem;
      font-weight: 700;
      text-align: center;
      position: relative;
      line-height: 1.275em;
      margin: 0;
      text-transform: none;
      padding: 0.75em 1em;
      box-sizing: border-box;
      transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
      vertical-align: middle;
      z-index: 5; }
      .cs-grid-layout__teaser-cta-button:hover, .cs-grid-layout__teaser-cta-button:focus, .cs-grid-layout__teaser-cta-button:active {
        background-color: #df0a1e !important; }
      .cs-grid-layout__teaser-cta-button:before, .cs-grid-layout__teaser-cta-button:after {
        content: '';
        position: absolute;
        top: -1px;
        bottom: -1px;
        right: -1px; }
      .cs-grid-layout__teaser-cta-button:before {
        width: 3.4em;
        border-radius: 0 3px 3px 0;
        z-index: -1;
        background: linear-gradient(0deg, transparent 0%, transparent 0%, #9f0615 0%, #9f0615 100%); }
      .cs-grid-layout__teaser-cta-button:after {
        width: 3em;
        min-width: auto;
        background-color: #9f0615;
        transition: width 0.25s linear;
        z-index: -2;
        border-radius: 3px; }
      .cs-grid-layout__teaser-cta-button:hover:after {
        width: calc(100% + 2px); }
      .cs-grid-layout__teaser-cta-button::-moz-focus-inner {
        border: 0;
        padding: 0;
        margin: 0; }
      .cs-grid-layout__teaser-cta-button, .cs-grid-layout__teaser-cta-button:visited {
        cursor: pointer;
        border-radius: 3px;
        outline-offset: 1px;
        text-decoration: none;
        box-shadow: none;
        border: 1px solid transparent;
        color: #fff;
        background-color: #df0a1e; }
        .cs-grid-layout__teaser-cta-button *, .cs-grid-layout__teaser-cta-button:visited * {
          color: #fff;
          fill: #fff; }
      .cs-grid-layout__teaser-cta-button:hover:not([disabled]), .cs-grid-layout__teaser-cta-button:focus:not([disabled]), .cs-grid-layout__teaser-cta-button:active:not([disabled]) {
        box-shadow: none;
        outline: none;
        text-decoration: none;
        border: 1px solid transparent;
        color: #fff;
        background-color: #9f0615; }
        .cs-grid-layout__teaser-cta-button:hover:not([disabled]) *, .cs-grid-layout__teaser-cta-button:focus:not([disabled]) *, .cs-grid-layout__teaser-cta-button:active:not([disabled]) * {
          color: #fff;
          fill: #fff; }
      .cs-grid-layout__teaser-cta-button[disabled] {
        opacity: 0.65;
        cursor: auto; }
      .cs-grid-layout__teaser-cta-button-span {
        margin-top: 0;
        z-index: 1;
        font-weight: 700;
        vertical-align: baseline;
        display: inline-block;
        line-height: 1.275em;
        letter-spacing: normal;
        padding-left: 0;
        padding-right: 4em; }
      .cs-grid-layout__teaser-cta-button-icon {
        max-width: 1em;
        max-height: 1.4rem;
        z-index: 2;
        height: auto;
        width: 100%;
        position: absolute;
        top: 50%;
        transform: translate3d(0, -50%, 0);
        margin-right: 0;
        right: 1em; }
  .cs-grid-layout__brick {
    width: 100%;
    margin: 0;
    padding: 0;
    float: left;
    position: relative; }
    .cs-grid-layout__brick:before {
      display: block;
      content: '';
      width: 100%;
      padding-top: 170%; }
    .cs-grid-layout__brick .cs-product-tile {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0; }
    @media (min-width: 23.125em) {
      .cs-grid-layout__brick {
        width: calc(100% / 2); }
        .cs-grid-layout__brick--x2 {
          width: calc(100% / 2 * 2); } }
    @media (min-width: 30em) {
      .cs-grid-layout__brick {
        width: calc(100% / 2); }
        .cs-grid-layout__brick--x2 {
          width: calc(100% / 2 * 2); } }
    @media (min-width: 48em) {
      .cs-grid-layout__brick {
        width: calc(100% / 3); }
        .cs-grid-layout__brick--x2 {
          width: calc(100% / 3 * 2); } }
    @media (min-width: 64em) {
      .cs-grid-layout__brick {
        width: calc(100% / 3); }
        .cs-grid-layout__brick--x2 {
          width: calc(100% / 3 * 2); } }
    @media (min-width: 80em) {
      .cs-grid-layout__brick {
        width: calc(100% / 3); }
        .cs-grid-layout__brick--x2 {
          width: calc(100% / 3 * 2); } }
    @media (min-width: 90em) {
      .cs-grid-layout__brick {
        width: calc(100% / 3); }
        .cs-grid-layout__brick--x2 {
          width: calc(100% / 3 * 2); } }
    @media (min-width: 120em) {
      .cs-grid-layout__brick {
        width: calc(100% / 3); }
        .cs-grid-layout__brick--x2 {
          width: calc(100% / 3 * 2); } }
    .cs-grid-layout__brick--x2:not(.cs-grid-layout__brick--y2):before {
      padding-top: 85%; }
    @media (max-width: 29.99em) {
      .cs-grid-layout__brick--x2:not(.cs-grid-layout__brick--y2).cs-grid-layout__brick--teaser:before {
        padding-top: 0; } }
    .cs-grid-layout__brick--y2.cs-grid-layout__brick--left {
      float: left; }
    .cs-grid-layout__brick--y2:not(.cs-grid-layout__brick--x2):before {
      padding-top: 340%; }
    @media (max-width: 29.99em) {
      .cs-grid-layout__brick--y2.cs-grid-layout__brick--teaser:before {
        padding-top: 0; } }
    .cs-grid-layout__brick--right {
      float: right; }
    .cs-grid-layout__brick--hidden {
      display: none !important; }
    .cs-grid-layout__brick--teaser {
      display: none; }
      @media (max-width: 29.99em) {
        .cs-grid-layout__brick--teaser:before {
          padding-top: 0; } }
      .cs-grid-layout__brick--teaser-ready {
        display: block; }
  @media (min-width: 23.125em) {
    .cs-grid-layout--with-sidebar .cs-grid-layout__brick {
      width: calc(100% / 2); }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        width: calc(100% / 2 * 2); } }
  @media (min-width: 30em) {
    .cs-grid-layout--with-sidebar .cs-grid-layout__brick {
      width: calc(100% / 2); }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        width: calc(100% / 2 * 2); } }
  @media (min-width: 48em) {
    .cs-grid-layout--with-sidebar .cs-grid-layout__brick {
      width: calc(100% / 2); }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        width: calc(100% / 2 * 2); } }
  @media (min-width: 64em) {
    .cs-grid-layout--with-sidebar .cs-grid-layout__brick {
      width: calc(100% / 3); }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        width: calc(100% / 3 * 2); } }
  @media (min-width: 80em) {
    .cs-grid-layout--with-sidebar .cs-grid-layout__brick {
      width: calc(100% / 3); }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        width: calc(100% / 3 * 2); } }
  @media (min-width: 90em) {
    .cs-grid-layout--with-sidebar .cs-grid-layout__brick {
      width: calc(100% / 3); }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        width: calc(100% / 3 * 2); } }
  @media (min-width: 120em) {
    .cs-grid-layout--with-sidebar .cs-grid-layout__brick {
      width: calc(100% / 3); }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        width: calc(100% / 3 * 2); } }
  .cs-grid-layout:after, .cs-grid-layout__brick:after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 0px;
    content: '';
    background: #f0f0f0; }
  .cs-grid-layout {
    margin-bottom: -0px; }
    .cs-grid-layout:after {
      background: #fff; }
  @supports (display: grid) and (grid-auto-flow: row) {
    .cs-grid-layout__grid {
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      grid-template-rows: auto; }
      @media (min-width: 23.125em) {
        .cs-grid-layout__grid {
          grid-template-columns: repeat(2, minmax(0, 1fr)); } }
      @media (min-width: 30em) {
        .cs-grid-layout__grid {
          grid-template-columns: repeat(2, minmax(0, 1fr)); } }
      @media (min-width: 48em) {
        .cs-grid-layout__grid {
          grid-template-columns: repeat(3, minmax(0, 1fr)); } }
      @media (min-width: 64em) {
        .cs-grid-layout__grid {
          grid-template-columns: repeat(3, minmax(0, 1fr)); } }
      @media (min-width: 80em) {
        .cs-grid-layout__grid {
          grid-template-columns: repeat(3, minmax(0, 1fr)); } }
      @media (min-width: 90em) {
        .cs-grid-layout__grid {
          grid-template-columns: repeat(3, minmax(0, 1fr)); } }
      @media (min-width: 120em) {
        .cs-grid-layout__grid {
          grid-template-columns: repeat(3, minmax(0, 1fr)); } }
      @media (min-width: 23.125em) {
        .cs-grid-layout--with-sidebar .cs-grid-layout__grid {
          grid-template-columns: repeat(2, minmax(0, 1fr)); } }
      @media (min-width: 30em) {
        .cs-grid-layout--with-sidebar .cs-grid-layout__grid {
          grid-template-columns: repeat(2, minmax(0, 1fr)); } }
      @media (min-width: 48em) {
        .cs-grid-layout--with-sidebar .cs-grid-layout__grid {
          grid-template-columns: repeat(2, minmax(0, 1fr)); } }
      @media (min-width: 64em) {
        .cs-grid-layout--with-sidebar .cs-grid-layout__grid {
          grid-template-columns: repeat(3, minmax(0, 1fr)); } }
      @media (min-width: 80em) {
        .cs-grid-layout--with-sidebar .cs-grid-layout__grid {
          grid-template-columns: repeat(3, minmax(0, 1fr)); } }
      @media (min-width: 90em) {
        .cs-grid-layout--with-sidebar .cs-grid-layout__grid {
          grid-template-columns: repeat(3, minmax(0, 1fr)); } }
      @media (min-width: 120em) {
        .cs-grid-layout--with-sidebar .cs-grid-layout__grid {
          grid-template-columns: repeat(3, minmax(0, 1fr)); } }
      .cs-grid-layout__grid:after {
        display: none; }
    .cs-grid-layout__brick {
      position: relative; }
      .cs-grid-layout__brick:before {
        content: none; }
      .cs-grid-layout__brick .cs-product-tile {
        position: relative;
        top: auto;
        left: auto;
        right: auto;
        bottom: auto; }
      @media (min-width: 23.125em) {
        .cs-grid-layout__brick--x2 {
          grid-column-end: span 2; }
        .cs-grid-layout__brick--y2 {
          grid-row-end: span 2; } }
      @media (min-width: 30em) {
        .cs-grid-layout__brick--x2 {
          grid-column-end: span 2; }
        .cs-grid-layout__brick--y2 {
          grid-row-end: span 2; } }
      @media (min-width: 48em) {
        .cs-grid-layout__brick--x2 {
          grid-column-end: span 2; }
        .cs-grid-layout__brick--y2 {
          grid-row-end: span 2; } }
      @media (min-width: 64em) {
        .cs-grid-layout__brick--x2 {
          grid-column-end: span 2; }
        .cs-grid-layout__brick--y2 {
          grid-row-end: span 2; } }
      @media (min-width: 80em) {
        .cs-grid-layout__brick--x2 {
          grid-column-end: span 2; }
        .cs-grid-layout__brick--y2 {
          grid-row-end: span 2; } }
      @media (min-width: 90em) {
        .cs-grid-layout__brick--x2 {
          grid-column-end: span 2; }
        .cs-grid-layout__brick--y2 {
          grid-row-end: span 2; } }
      @media (min-width: 120em) {
        .cs-grid-layout__brick--x2 {
          grid-column-end: span 2; }
        .cs-grid-layout__brick--y2 {
          grid-row-end: span 2; } }
      @media (min-width: 23.125em) {
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; } }
      @media (min-width: 30em) {
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; } }
      @media (min-width: 48em) {
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; }
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick--x2 .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; } }
      @media (min-width: 64em) {
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; }
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick--x2 .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; } }
      @media (min-width: 80em) {
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; }
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick--x2 .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; } }
      @media (min-width: 90em) {
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; }
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick--x2 .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; } }
      @media (min-width: 120em) {
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; }
        .cs-grid-layout:not(.cs-grid-layout--with-sidebar) .cs-grid-layout__brick--x2 .cs-image-teaser__aspect-ratio {
          padding-top: unset !important; } }
      .cs-grid-layout__brick--x2:not(.cs-grid-layout__brick--y2):before {
        padding-top: 0; }
      .cs-grid-layout__brick--y2:not(.cs-grid-layout__brick--x2):before {
        padding-top: 0; }
      .cs-grid-layout__brick, .cs-grid-layout__brick--teaser-ready {
        width: 100% !important;
        display: block; }
      @media (max-width: 23.115em) {
        .cs-grid-layout__brick--teaser-ready {
          grid-column-start: 1 !important; } }
      .cs-grid-layout__brick--right {
        float: none; }
    @media (min-width: 23.125em) {
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        grid-column-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--y2 {
        grid-row-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; } }
    @media (min-width: 30em) {
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        grid-column-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--y2 {
        grid-row-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; } }
    @media (min-width: 48em) {
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        grid-column-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--y2 {
        grid-row-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; } }
    @media (min-width: 64em) {
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        grid-column-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--y2 {
        grid-row-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; } }
    @media (min-width: 80em) {
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        grid-column-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--y2 {
        grid-row-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; } }
    @media (min-width: 90em) {
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        grid-column-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--y2 {
        grid-row-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; } }
    @media (min-width: 120em) {
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 {
        grid-column-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--y2 {
        grid-row-end: span 2; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick:not(.cs-grid-layout__brick--x2) .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; }
      .cs-grid-layout--with-sidebar .cs-grid-layout__brick--x2 .cs-image-teaser__aspect-ratio {
        padding-top: unset !important; } } }

.cs-container--grid-teaser {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  overflow: hidden; }

@supports (display: grid) and (grid-auto-flow: row) {
  .cs-container--grid-teaser {
    position: relative;
    top: auto;
    left: auto;
    right: auto;
    bottom: auto;
    overflow: visible; } }


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL2dyaWQtbGF5b3V0LmNzcyIsInNvdXJjZXMiOlsid2VicGFjazovL1tuYW1lXS8uL3NyYy9jb21wb25lbnRzL2dyaWQtbGF5b3V0L2dyaWQtbGF5b3V0LnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdL2dyaWQtbGF5b3V0LnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbmZpZy9icmVha3BvaW50cy5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL3V0aWxzL2RlZXAtZ2V0L2RlZXAtZ2V0LnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvdXRpbHMvYXNwZWN0LXJhdGlvLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvdXRpbHMvY2xlYXJmaXguc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy91dGlscy9nZXQtdmFsdWUtZnJvbS1saXN0LnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvYnV0dG9uL2hvb2suc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy91dGlscy9wb2x5LWZsdWlkLXNpemluZy5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uL3NyYy9jb21wb25lbnRzL2J1dHRvbi9taXhpbi5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uL3NyYy9jb21wb25lbnRzL2J1dHRvbi9hbmltYXRpb24uc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvaW5jbHVkZS1tZWRpYS9kaXN0L19pbmNsdWRlLW1lZGlhLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEZhaXIgd2FybmluZzogRG9uJ3QgbWl4IHVuaXRzIHdoaWxlIHVzaW5nICd1dGlscy9wb2x5LWZsdWlkLXNpemluZycgZmVhdHVyZS5cbiAqIElmIHlvdSB1c2UgcmVtcywgc3RpY2sgdG8gcmVtcyBldmVyeXdoZXJlIGluIHRoZSBhcmVhIG9mIHdob2xlIG1hcCwgb3IgZWxzZSB0aGUgbWl4aW4gd2lsbCB0aHJvdyBhbiBlcnJvclxuICovXG5AaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ2NvbmZpZy9icmVha3BvaW50cyc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuQGltcG9ydCAndXRpbHMvYXNwZWN0LXJhdGlvJztcbkBpbXBvcnQgJ3V0aWxzL3BvbHktZmx1aWQtc2l6aW5nJztcbkBpbXBvcnQgJ3V0aWxzL2NsZWFyZml4JztcbkBpbXBvcnQgJ2V0Yy92aWV3LnNjc3MnO1xuQGltcG9ydCAndXRpbHMvZGVlcC1nZXQvZGVlcC1nZXQuc2Nzcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbi9taXhpbic7XG5cbiRncmlkLWxheW91dF9yb3dzLXNlcGFyYXRvci1zaG93OiB0cnVlICFkZWZhdWx0O1xuJGdyaWQtbGF5b3V0X3Jvd3Mtc2VwYXJhdG9yLWhlaWdodDogMHB4ICFkZWZhdWx0O1xuJGdyaWQtbGF5b3V0X3Jvd3Mtc2VwYXJhdG9yLWNvbG9yOiAkY29sb3JfZ2FsbGVyeSAhZGVmYXVsdDtcblxuJGdyaWQtbGF5b3V0X2JyaWNrcy1ndXR0ZXI6IDAgIWRlZmF1bHQ7XG4kZ3JpZC1sYXlvdXRfYnJpY2stbWFyZ2luOiAkZ3JpZC1sYXlvdXRfYnJpY2tzLWd1dHRlciAhZGVmYXVsdDtcbiRncmlkLWxheW91dF9icmljay1wYWRkaW5nOiAwICFkZWZhdWx0O1xuXG4kZ3JpZC1sYXlvdXRfYnJpY2stcmF0aW8td2lkdGg6ICR0aWxlX2FzcGVjdC1yYXRpby13aWR0aCAhZGVmYXVsdDtcbiRncmlkLWxheW91dF9icmljay1yYXRpby1oZWlnaHQ6ICR0aWxlX2FzcGVjdC1yYXRpby1oZWlnaHQgIWRlZmF1bHQ7XG5cbiRncmlkLWxheW91dF90ZWFzZXItY29udGVudC1wYWRkaW5nOiAxLjVyZW0gIWRlZmF1bHQ7XG4kZ3JpZC1sYXlvdXRfdGVhc2VyLWxpZ2h0LXNjaGVtZS1jb2xvcjogJHNjaGVtZS0tbGlnaHRfdGV4dHMtY29sb3IgIWRlZmF1bHQ7XG4kZ3JpZC1sYXlvdXRfdGVhc2VyLWRhcmstc2NoZW1lLWNvbG9yOiAkc2NoZW1lLS1kYXJrX3RleHRzLWNvbG9yICFkZWZhdWx0O1xuJGdyaWQtbGF5b3V0X3RlYXNlci1jb250ZW50LWxpbmUtaGVpZ2h0OiAxLjE1ICFkZWZhdWx0O1xuXG4kZ3JpZC1sYXlvdXRfdGVhc2VyLWhlYWRsaW5lLWJvdHRvbS1tYXJnaW46IDAuMmVtICFkZWZhdWx0O1xuJGdyaWQtbGF5b3V0X3RlYXNlci1oZWFkbGluZS1mb250LXdlaWdodDogJHRleHRzLW9uLWltYWdlX2hlYWRsaW5lLWZvbnQtd2VpZ2h0ICFkZWZhdWx0O1xuJGdyaWQtbGF5b3V0X3RlYXNlci1oZWFkbGluZS10ZXh0LXRyYW5zZm9ybTogbm9uZSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXItaGVhZGxpbmUtZm9udC1zaXplLW1pbjogMS44cmVtICFkZWZhdWx0O1xuJGdyaWQtbGF5b3V0X3RlYXNlci1oZWFkbGluZS1mb250LXNpemUtbWF4OiAyLjhyZW0gIWRlZmF1bHQ7XG4kZ3JpZC1sYXlvdXRfdGVhc2VyLWhlYWRsaW5lLWZvbnQtbWFwOiAoXG4gICAgJHBhZ2VfbWluLXdpZHRoOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLWhlYWRsaW5lLWZvbnQtc2l6ZS1taW4sXG4gICAgJHBhZ2VfbWF4LXdpZHRoOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLWhlYWRsaW5lLWZvbnQtc2l6ZS1tYXgsXG4pICFkZWZhdWx0O1xuJGdyaWQtbGF5b3V0X3RlYXNlci14Mi1oZWFkbGluZS1ib3R0b20tbWFyZ2luOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLWhlYWRsaW5lLWJvdHRvbS1tYXJnaW4gIWRlZmF1bHQ7XG4kZ3JpZC1sYXlvdXRfdGVhc2VyLXgyLWhlYWRsaW5lLWZvbnQtc2l6ZS1taW46ICRncmlkLWxheW91dF90ZWFzZXItaGVhZGxpbmUtZm9udC1zaXplLW1pbiAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXIteDItaGVhZGxpbmUtZm9udC1zaXplLW1heDogNHJlbSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXIteDItaGVhZGxpbmUtZm9udC1tYXA6IChcbiAgICAkcGFnZV9taW4td2lkdGg6ICRncmlkLWxheW91dF90ZWFzZXIteDItaGVhZGxpbmUtZm9udC1zaXplLW1pbixcbiAgICAkcGFnZV9tYXgtd2lkdGg6ICRncmlkLWxheW91dF90ZWFzZXIteDItaGVhZGxpbmUtZm9udC1zaXplLW1heCxcbikgIWRlZmF1bHQ7XG5cbiRncmlkLWxheW91dF90ZWFzZXItc3ViaGVhZGxpbmUtYm90dG9tLW1hcmdpbjogMC42ZW0gIWRlZmF1bHQ7XG4kZ3JpZC1sYXlvdXRfdGVhc2VyLXN1YmhlYWRsaW5lLWZvbnQtd2VpZ2h0OiAkdGV4dHMtb24taW1hZ2Vfc3ViaGVhZGxpbmUtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kZ3JpZC1sYXlvdXRfdGVhc2VyLXN1YmhlYWRsaW5lLXRleHQtdHJhbnNmb3JtOiAkdGV4dHMtb24taW1hZ2Vfc3ViaGVhZGxpbmUtdGV4dC10cmFuc2Zvcm0gIWRlZmF1bHQ7XG4kZ3JpZC1sYXlvdXRfdGVhc2VyLXN1YmhlYWRsaW5lLWZvbnQtc2l6ZS1taW46IDEuNnJlbSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXItc3ViaGVhZGxpbmUtZm9udC1zaXplLW1heDogMS44cmVtICFkZWZhdWx0O1xuJGdyaWQtbGF5b3V0X3RlYXNlci1zdWJoZWFkbGluZS1mb250LW1hcDogKFxuICAgICRwYWdlX21pbi13aWR0aDogJGdyaWQtbGF5b3V0X3RlYXNlci1zdWJoZWFkbGluZS1mb250LXNpemUtbWluLFxuICAgICRwYWdlX21heC13aWR0aDogJGdyaWQtbGF5b3V0X3RlYXNlci1zdWJoZWFkbGluZS1mb250LXNpemUtbWF4LFxuKSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXIteDItc3ViaGVhZGxpbmUtYm90dG9tLW1hcmdpbjogJGdyaWQtbGF5b3V0X3RlYXNlci1zdWJoZWFkbGluZS1ib3R0b20tbWFyZ2luICFkZWZhdWx0O1xuJGdyaWQtbGF5b3V0X3RlYXNlci14Mi1zdWJoZWFkbGluZS1mb250LXNpemUtbWluOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLXN1YmhlYWRsaW5lLWZvbnQtc2l6ZS1taW4gIWRlZmF1bHQ7XG4kZ3JpZC1sYXlvdXRfdGVhc2VyLXgyLXN1YmhlYWRsaW5lLWZvbnQtc2l6ZS1tYXg6IDIuNXJlbSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXIteDItc3ViaGVhZGxpbmUtZm9udC1tYXA6IChcbiAgICAkcGFnZV9taW4td2lkdGg6ICRncmlkLWxheW91dF90ZWFzZXIteDItc3ViaGVhZGxpbmUtZm9udC1zaXplLW1pbixcbiAgICAkcGFnZV9tYXgtd2lkdGg6ICRncmlkLWxheW91dF90ZWFzZXIteDItc3ViaGVhZGxpbmUtZm9udC1zaXplLW1heCxcbikgIWRlZmF1bHQ7XG5cbiRncmlkLWxheW91dF90ZWFzZXItcGFyYWdyYXBoLWJvdHRvbS1tYXJnaW46IDFlbSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXItcGFyYWdyYXBoLWZvbnQtd2VpZ2h0OiAkdGV4dHMtb24taW1hZ2VfdGV4dC1mb250LXdlaWdodCAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXItcGFyYWdyYXBoLXRleHQtdHJhbnNmb3JtOiAkdGV4dHMtb24taW1hZ2VfdGV4dC10ZXh0LXRyYW5zZm9ybSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXItcGFyYWdyYXBoLWZvbnQtc2l6ZS1taW46IDEuM3JlbSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXItcGFyYWdyYXBoLWZvbnQtc2l6ZS1tYXg6IDEuNHJlbSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXItcGFyYWdyYXBoLWZvbnQtbWFwOiAoXG4gICAgJHBhZ2VfbWluLXdpZHRoOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLXBhcmFncmFwaC1mb250LXNpemUtbWluLFxuICAgICRwYWdlX21heC13aWR0aDogJGdyaWQtbGF5b3V0X3RlYXNlci1wYXJhZ3JhcGgtZm9udC1zaXplLW1heCxcbikgIWRlZmF1bHQ7XG4kZ3JpZC1sYXlvdXRfdGVhc2VyLXgyLXBhcmFncmFwaC1ib3R0b20tbWFyZ2luOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLXBhcmFncmFwaC1ib3R0b20tbWFyZ2luICFkZWZhdWx0O1xuJGdyaWQtbGF5b3V0X3RlYXNlci14Mi1wYXJhZ3JhcGgtZm9udC1zaXplLW1pbjogJGdyaWQtbGF5b3V0X3RlYXNlci1wYXJhZ3JhcGgtZm9udC1zaXplLW1pbiAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXIteDItcGFyYWdyYXBoLWZvbnQtc2l6ZS1tYXg6IDEuNnJlbSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXIteDItcGFyYWdyYXBoLWZvbnQtbWFwOiAoXG4gICAgJHBhZ2VfbWluLXdpZHRoOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLXgyLXBhcmFncmFwaC1mb250LXNpemUtbWluLFxuICAgICRwYWdlX21heC13aWR0aDogJGdyaWQtbGF5b3V0X3RlYXNlci14Mi1wYXJhZ3JhcGgtZm9udC1zaXplLW1heCxcbikgIWRlZmF1bHQ7XG5cbiRncmlkLWxheW91dF90ZWFzZXItY3RhLWJ1dHRvbi10eXBlOiAkYnV0dG9uX2RlZmF1bHQtdHlwZSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF90ZWFzZXItY3RhLWJ1dHRvbi1pY29uLXBvczogJGJ1dHRvbl9kZWZhdWx0LWljb24tcG9zICFkZWZhdWx0O1xuXG4vLyB2YWx1ZXM6IGZhbHNlIC8gYnJlYWtwb2ludCBuYW1lIC0gdGhlIHNhbWUgYXMgZm9yIEBtZWRpYSBtaXhpbjtcbi8vIFVzZSBmYWxzZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBoaWRlIGJ1dHRvbiBhdCBhbGxcbiRncmlkLWxheW91dF90ZWFzZXItYnV0dG9uLXZpc2libGUtZnJvbTogJz49dGFibGV0JztcblxuJGdyaWQtbGF5b3V0X2JyaWNrcy1wZXItcm93OiBkZWVwLWdldChcbiAgICAkdmlldy14bWwsXG4gICAgdmFycyxcbiAgICBNYWdlU3VpdGVfQ29udGVudENvbnN0cnVjdG9yLFxuICAgIGNvbHVtbnMsXG4gICAgb25lLWNvbHVtblxuKSAhZGVmYXVsdDtcbiRncmlkLWxheW91dF9icmlja3MtcGVyLXJvdy0td2l0aC1zaWRlYmFyOiBkZWVwLWdldChcbiAgICAkdmlldy14bWwsXG4gICAgdmFycyxcbiAgICBNYWdlU3VpdGVfQ29udGVudENvbnN0cnVjdG9yLFxuICAgIGNvbHVtbnMsXG4gICAgbXVsdGlwbGUtY29sdW1uc1xuKSAhZGVmYXVsdDtcblxuLy8gQXBwbHkgbm9ybWFsIGZsb3cgZm9yIHRlYXNlcnMgb24gc21hbGxlc3QgbW9iaWxlLCBpbnN0ZWFkIG9mIHRlYXNlcnMgd2l0aCBoYXJkY29kZWQgMTAwJSB3aWR0aFxuJGdyaWQtbGF5b3V0X3NtYWxsLW1vYmlsZS1zdGFuZGFyZC10ZWFzZXJzLWZsb3c6IGZhbHNlICFkZWZhdWx0O1xuXG4uI3skbnN9Z3JpZC1sYXlvdXQge1xuICAgICRyb290OiAmO1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkZ3JpZC1sYXlvdXRfYnJpY2tzLWd1dHRlciA9PSAwIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAyICogI3skZ3JpZC1sYXlvdXRfYnJpY2tzLWd1dHRlcn0pO1xuICAgICAgICBtYXJnaW46IC0jeyRncmlkLWxheW91dF9icmlja3MtZ3V0dGVyfSAtI3skZ3JpZC1sYXlvdXRfYnJpY2tzLWd1dHRlcn0gMDtcbiAgICB9XG5cbiAgICAmX19ncmlkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcbiAgICB9XG5cbiAgICAmX190ZWFzZXIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBAaW5jbHVkZSBhc3BlY3QtcmF0aW8tY2hpbGQtcG9zaXRpb24oKTtcblxuICAgICAgICAmLWNvbnRlbnQtd3JhcHBlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAmLWZpZ3VyZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtaW1hZ2Uge1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWluLWhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtY29udGVudCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRncmlkLWxheW91dF90ZWFzZXItY29udGVudC1wYWRkaW5nO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRncmlkLWxheW91dF90ZWFzZXItY29udGVudC1saW5lLWhlaWdodDtcblxuICAgICAgICAgICAgLyogVmFyaWFudHMgd2lsbCBiZSByZWZhY3RvcmVkIGFmdGVyIENDIElUIHJlZmFjdG9yIGR1ZSB0byBuZXcgcG9zaXRpb24gb3B0aW9ucyAqL1xuICAgICAgICAgICAgJi0tdmFyaWFudC0xIHtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi0tdmFyaWFudC0yIHtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLS12YXJpYW50LTMge1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLS12YXJpYW50LTQge1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLWNvbnRlbnQtaW5uZXIge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgJi1oZWFkbGluZSB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAkZ3JpZC1sYXlvdXRfdGVhc2VyLWhlYWRsaW5lLWJvdHRvbS1tYXJnaW47XG4gICAgICAgICAgICBjb2xvcjogJGdyaWQtbGF5b3V0X3RlYXNlci1kYXJrLXNjaGVtZS1jb2xvcjtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAkZ3JpZC1sYXlvdXRfdGVhc2VyLWhlYWRsaW5lLWZvbnQtd2VpZ2h0O1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06ICRncmlkLWxheW91dF90ZWFzZXItaGVhZGxpbmUtdGV4dC10cmFuc2Zvcm07XG4gICAgICAgICAgICBAaW5jbHVkZSBwb2x5LWZsdWlkLXNpemluZyhcbiAgICAgICAgICAgICAgICAnZm9udC1zaXplJyxcbiAgICAgICAgICAgICAgICAkZ3JpZC1sYXlvdXRfdGVhc2VyLWhlYWRsaW5lLWZvbnQtbWFwXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAjeyRyb290fV9fYnJpY2stLXgyICYge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwICRncmlkLWxheW91dF90ZWFzZXIteDItaGVhZGxpbmUtYm90dG9tLW1hcmdpbjtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwb2x5LWZsdWlkLXNpemluZyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICRncmlkLWxheW91dF90ZWFzZXIteDItaGVhZGxpbmUtZm9udC1tYXBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAjeyRyb290fV9fdGVhc2VyLS1zY2hlbWUtbGlnaHQgJiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRncmlkLWxheW91dF90ZWFzZXItbGlnaHQtc2NoZW1lLWNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi1zdWJoZWFkbGluZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbjogMCAwICRncmlkLWxheW91dF90ZWFzZXItc3ViaGVhZGxpbmUtYm90dG9tLW1hcmdpbjtcbiAgICAgICAgICAgIGNvbG9yOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLWRhcmstc2NoZW1lLWNvbG9yO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRncmlkLWxheW91dF90ZWFzZXItc3ViaGVhZGxpbmUtZm9udC13ZWlnaHQ7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogJGdyaWQtbGF5b3V0X3RlYXNlci1zdWJoZWFkbGluZS10ZXh0LXRyYW5zZm9ybTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBvbHktZmx1aWQtc2l6aW5nKFxuICAgICAgICAgICAgICAgICdmb250LXNpemUnLFxuICAgICAgICAgICAgICAgICRncmlkLWxheW91dF90ZWFzZXItc3ViaGVhZGxpbmUtZm9udC1tYXBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICN7JHJvb3R9X19icmljay0teDIgJiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgJGdyaWQtbGF5b3V0X3RlYXNlci14Mi1zdWJoZWFkbGluZS1ib3R0b20tbWFyZ2luO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBvbHktZmx1aWQtc2l6aW5nKFxuICAgICAgICAgICAgICAgICAgICAnZm9udC1zaXplJyxcbiAgICAgICAgICAgICAgICAgICAgJGdyaWQtbGF5b3V0X3RlYXNlci14Mi1zdWJoZWFkbGluZS1mb250LW1hcFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICN7JHJvb3R9X190ZWFzZXItLXNjaGVtZS1saWdodCAmIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGdyaWQtbGF5b3V0X3RlYXNlci1saWdodC1zY2hlbWUtY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLXRleHQge1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAgJGdyaWQtbGF5b3V0X3RlYXNlci1wYXJhZ3JhcGgtYm90dG9tLW1hcmdpbjtcbiAgICAgICAgICAgIGNvbG9yOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLWRhcmstc2NoZW1lLWNvbG9yO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRncmlkLWxheW91dF90ZWFzZXItcGFyYWdyYXBoLWZvbnQtd2VpZ2h0O1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06ICRncmlkLWxheW91dF90ZWFzZXItcGFyYWdyYXBoLXRleHQtdHJhbnNmb3JtO1xuICAgICAgICAgICAgQGluY2x1ZGUgcG9seS1mbHVpZC1zaXppbmcoXG4gICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZScsXG4gICAgICAgICAgICAgICAgJGdyaWQtbGF5b3V0X3RlYXNlci1wYXJhZ3JhcGgtZm9udC1tYXBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICN7JHJvb3R9X19icmljay0teDIgJiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgJGdyaWQtbGF5b3V0X3RlYXNlci14Mi1wYXJhZ3JhcGgtYm90dG9tLW1hcmdpbjtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwb2x5LWZsdWlkLXNpemluZyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICRncmlkLWxheW91dF90ZWFzZXIteDItcGFyYWdyYXBoLWZvbnQtbWFwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgI3skcm9vdH1fX3RlYXNlci0tc2NoZW1lLWxpZ2h0ICYge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLWxpZ2h0LXNjaGVtZS1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtY3RhIHtcbiAgICAgICAgICAgICYtYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBidXR0b24oXG4gICAgICAgICAgICAgICAgICAgICR0eXBlOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLWN0YS1idXR0b24tdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgJGljb25fcG9zOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLWN0YS1idXR0b24taWNvbi1wb3NcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgJi1zcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uX3NwYW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAkdHlwZTogJGdyaWQtbGF5b3V0X3RlYXNlci1jdGEtYnV0dG9uLXR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAkaWNvbl9wb3M6ICRncmlkLWxheW91dF90ZWFzZXItY3RhLWJ1dHRvbi1pY29uLXBvc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYtaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbl9pY29uKFxuICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGU6ICRncmlkLWxheW91dF90ZWFzZXItY3RhLWJ1dHRvbi10eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJGljb25fcG9zOiAkZ3JpZC1sYXlvdXRfdGVhc2VyLWN0YS1idXR0b24taWNvbi1wb3NcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19icmljayB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46ICRncmlkLWxheW91dF9icmljay1tYXJnaW47XG4gICAgICAgIHBhZGRpbmc6ICRncmlkLWxheW91dF9icmljay1wYWRkaW5nO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgQGluY2x1ZGUgYXNwZWN0LXJhdGlvKFxuICAgICAgICAgICAgJHdpZHRoOiAkZ3JpZC1sYXlvdXRfYnJpY2stcmF0aW8td2lkdGgsXG4gICAgICAgICAgICAkaGVpZ2h0OiAkZ3JpZC1sYXlvdXRfYnJpY2stcmF0aW8taGVpZ2h0LFxuICAgICAgICAgICAgJGNoaWxkQ2xhc3M6ICN7JG5zfXByb2R1Y3QtdGlsZSxcbiAgICAgICAgICAgICRhdXRvcG9zaXRpb246IHRydWVcbiAgICAgICAgKTtcblxuICAgICAgICBAZWFjaCAkYnJlYWtwb2ludCwgJGl0ZW1zUGVyUm93IGluICRncmlkLWxheW91dF9icmlja3MtcGVyLXJvdyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj0jeyRicmVha3BvaW50fScpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gI3skaXRlbXNQZXJSb3d9KTtcblxuICAgICAgICAgICAgICAgIEBpZiAkaXRlbXNQZXJSb3cgPiAxIHtcbiAgICAgICAgICAgICAgICAgICAgJi0teDIge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvICN7JGl0ZW1zUGVyUm93fSAqIDIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0teDI6bm90KCN7JHJvb3R9X19icmljay0teTIpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGFzcGVjdC1yYXRpby1vdmVycmlkZShcbiAgICAgICAgICAgICAgICAkd2lkdGg6ICRncmlkLWxheW91dF9icmljay1yYXRpby13aWR0aCAqIDIsXG4gICAgICAgICAgICAgICAgJGhlaWdodDogJGdyaWQtbGF5b3V0X2JyaWNrLXJhdGlvLWhlaWdodFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgJiN7JHJvb3R9X19icmljay0tdGVhc2VyIHtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8cGhvbmVMZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0teTIge1xuICAgICAgICAgICAgJiN7JHJvb3R9X19icmljay0tbGVmdCB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bm90KCN7JHJvb3R9X19icmljay0teDIpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBhc3BlY3QtcmF0aW8tb3ZlcnJpZGUoXG4gICAgICAgICAgICAgICAgICAgICR3aWR0aDogJGdyaWQtbGF5b3V0X2JyaWNrLXJhdGlvLXdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAkaGVpZ2h0OiAkZ3JpZC1sYXlvdXRfYnJpY2stcmF0aW8taGVpZ2h0ICogMlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYjeyRyb290fV9fYnJpY2stLXRlYXNlciB7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPHBob25lTGcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLXJpZ2h0IHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWhpZGRlbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLS10ZWFzZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8cGhvbmVMZycpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLXJlYWR5IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXdpdGgtc2lkZWJhciB7XG4gICAgICAgIEBlYWNoICRicmVha3BvaW50LFxuICAgICAgICAgICAgJGl0ZW1zUGVyUm93IGluICRncmlkLWxheW91dF9icmlja3MtcGVyLXJvdy0td2l0aC1zaWRlYmFyXG4gICAgICAgIHtcbiAgICAgICAgICAgICN7JHJvb3R9X19icmljayB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49I3skYnJlYWtwb2ludH0nKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAjeyRpdGVtc1BlclJvd30pO1xuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAkaXRlbXNQZXJSb3cgPiAxIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICYtLXgyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gI3skaXRlbXNQZXJSb3d9ICogMik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGdyaWQtbGF5b3V0X3Jvd3Mtc2VwYXJhdG9yLXNob3cge1xuICAgICAgICAmLFxuICAgICAgICAmX19icmljayB7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAkZ3JpZC1sYXlvdXRfcm93cy1zZXBhcmF0b3ItaGVpZ2h0O1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRncmlkLWxheW91dF9yb3dzLXNlcGFyYXRvci1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLSN7JGdyaWQtbGF5b3V0X3Jvd3Mtc2VwYXJhdG9yLWhlaWdodH07XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRwYWdlX2JhY2tncm91bmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAc3VwcG9ydHMgKGRpc3BsYXk6IGdyaWQpIGFuZCAoZ3JpZC1hdXRvLWZsb3c6IHJvdykge1xuICAgICAgICAmX19ncmlkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvO1xuXG4gICAgICAgICAgICBAZWFjaCAkYnJlYWtwb2ludCwgJGl0ZW1zUGVyUm93IGluICRncmlkLWxheW91dF9icmlja3MtcGVyLXJvdyB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49I3skYnJlYWtwb2ludH0nKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KFxuICAgICAgICAgICAgICAgICAgICAgICAgI3skaXRlbXNQZXJSb3d9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlubWF4KDAsIDFmcilcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICN7JHJvb3R9LS13aXRoLXNpZGViYXIgJiB7XG4gICAgICAgICAgICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICRpdGVtc1BlclJvdyBpbiAkZ3JpZC1sYXlvdXRfYnJpY2tzLXBlci1yb3ctLXdpdGgtc2lkZWJhclxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49I3skYnJlYWtwb2ludH0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjeyRpdGVtc1BlclJvd30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlubWF4KDAsIDFmcilcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmX19icmljayB7XG4gICAgICAgICAgICBAaW5jbHVkZSBhc3BlY3QtcmF0aW8tcmVzZXQoXG4gICAgICAgICAgICAgICAgJGNoaWxkQ2xhc3M6ICN7JG5zfXByb2R1Y3QtdGlsZSxcbiAgICAgICAgICAgICAgICAkYXV0b3Bvc2l0aW9uOiB0cnVlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBAaWYgKCRncmlkLWxheW91dF9zbWFsbC1tb2JpbGUtc3RhbmRhcmQtdGVhc2Vycy1mbG93KSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzxwaG9uZScpIHtcbiAgICAgICAgICAgICAgICAgICAgJi0teDIge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW4tZW5kOiBzcGFuIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmLS15MiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdy1lbmQ6IHNwYW4gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICRpdGVtc1BlclJvdyBpbiAkZ3JpZC1sYXlvdXRfYnJpY2tzLXBlci1yb3cge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PSN7JGJyZWFrcG9pbnR9Jykge1xuICAgICAgICAgICAgICAgICAgICBAaWYgJGl0ZW1zUGVyUm93ID4gMSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAmLS14MiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW4tZW5kOiBzcGFuIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICYtLXkyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdy1lbmQ6IHNwYW4gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgI3skcm9vdH06bm90KCN7JHJvb3R9LS13aXRoLXNpZGViYXIpICYge1xuICAgICAgICAgICAgICAgIEBlYWNoICRicmVha3BvaW50LCAkaXRlbXNQZXJSb3cgaW4gJGdyaWQtbGF5b3V0X2JyaWNrcy1wZXItcm93IHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49I3skYnJlYWtwb2ludH0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAmOm5vdCgjeyRyb290fV9fYnJpY2stLXgyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICRpdGVtc1BlclJvdyA+PSAyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiB1bnNldCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAmLS14MiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICRpdGVtc1BlclJvdyA+PSAzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiB1bnNldCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLS14Mjpub3QoI3skcm9vdH1fX2JyaWNrLS15Mikge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGFzcGVjdC1yYXRpby1vdmVycmlkZS1yZXNldCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLS15MiB7XG4gICAgICAgICAgICAgICAgJjpub3QoI3skcm9vdH1fX2JyaWNrLS14Mikge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBhc3BlY3QtcmF0aW8tb3ZlcnJpZGUtcmVzZXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYsXG4gICAgICAgICAgICAmLS10ZWFzZXItcmVhZHkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYtLXRlYXNlci1yZWFkeSB7XG4gICAgICAgICAgICAgICAgQGlmIG5vdCAkZ3JpZC1sYXlvdXRfc21hbGwtbW9iaWxlLXN0YW5kYXJkLXRlYXNlcnMtZmxvdyB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8cGhvbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbi1zdGFydDogMSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLS1yaWdodCB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS13aXRoLXNpZGViYXIge1xuICAgICAgICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsXG4gICAgICAgICAgICAgICAgJGl0ZW1zUGVyUm93IGluICRncmlkLWxheW91dF9icmlja3MtcGVyLXJvdy0td2l0aC1zaWRlYmFyXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgI3skcm9vdH1fX2JyaWNrIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49I3skYnJlYWtwb2ludH0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgJGl0ZW1zUGVyUm93ID4gMSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJi0teDIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbi1lbmQ6IHNwYW4gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmLS15MiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93LWVuZDogc3BhbiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJjpub3QoI3skcm9vdH1fX2JyaWNrLS14Mikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAkaXRlbXNQZXJSb3cgPj0gMiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jcy1pbWFnZS10ZWFzZXJfX2FzcGVjdC1yYXRpbyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJi0teDIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAkaXRlbXNQZXJSb3cgPj0gMyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jcy1pbWFnZS10ZWFzZXJfX2FzcGVjdC1yYXRpbyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLiN7JG5zfWNvbnRhaW5lciB7XG4gICAgJi0tZ3JpZC10ZWFzZXIge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgICBAc3VwcG9ydHMgKGRpc3BsYXk6IGdyaWQpIGFuZCAoZ3JpZC1hdXRvLWZsb3c6IHJvdykge1xuICAgICAgICAmLS1ncmlkLXRlYXNlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB0b3A6IGF1dG87XG4gICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgICAgICBib3R0b206IGF1dG87XG4gICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG4gKiBGYWlyIHdhcm5pbmc6IERvbid0IG1peCB1bml0cyB3aGlsZSB1c2luZyAndXRpbHMvcG9seS1mbHVpZC1zaXppbmcnIGZlYXR1cmUuXG4gKiBJZiB5b3UgdXNlIHJlbXMsIHN0aWNrIHRvIHJlbXMgZXZlcnl3aGVyZSBpbiB0aGUgYXJlYSBvZiB3aG9sZSBtYXAsIG9yIGVsc2UgdGhlIG1peGluIHdpbGwgdGhyb3cgYW4gZXJyb3JcbiAqL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbkB1c2UgXCJzYXNzOm1hcFwiO1xuLyoqXG4qIERlZmF1bHQgcHJvamVjdCBicmVha3BvaW50cyAtIFtlbV1cbiovXG4vKipcbiAqIEJyZWFrcG9pbnQgY29tcG9uZW50IHVzZWQgYnkgaW5jbHVkZS1tZWRpYSB2ZW5kb3IgbGlicmFyeS5cbiAqL1xuLyoqXG4gKiBFeHRyYWN0cyBuZXN0ZWQga2V5cyBmcm9tIGdpdmVuIG1hcC5cbiAqIEV4YW1wbGU6IGRlZXAtZ2V0KCRzb21lLW1hcCwgc29tZSwgbmVzdGVkLCBrZXlzKTtcbiAqL1xuQHVzZSBcInNhc3M6bWFwXCI7XG4vKipcbiogRGVmYXVsdCBwcm9qZWN0IGJyZWFrcG9pbnRzIC0gW2VtXVxuKi9cbi8qKlxuICogQnJlYWtwb2ludCBjb21wb25lbnQgdXNlZCBieSBpbmNsdWRlLW1lZGlhIHZlbmRvciBsaWJyYXJ5LlxuICovXG4vKipcbiAqIEV4dHJhY3RzIG5lc3RlZCBrZXlzIGZyb20gZ2l2ZW4gbWFwLlxuICogRXhhbXBsZTogZGVlcC1nZXQoJHNvbWUtbWFwLCBzb21lLCBuZXN0ZWQsIGtleXMpO1xuICovXG5AdXNlIFwic2FzczptYXBcIjtcbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqKlxuICogVXNpbmcgcHN1ZWRvIGVsZW1lbnRzIHRvIG1haW50YWluIGFuIGVsZW1lbnRzIGFzcGVjdCByYXRpbywgZXZlbiBhcyBpdCBzY2FsZXNcbiAqIEl0J3MgdXNpbmcgb25seSBmb3IgSUUxMSBhbmQgRWRnZSAodmVyc2lvbiB3aGljaCBkb2Vzbid0IHN1cHBvcnQgbmF0aXZlIENTUyBncmlkKSBicm93c2Vyc1xuICogRm9yIGJyb3dzZXJzIHdoaWNoIHN1cHBvcnQgbmF0aXZlIENTUyBncmlkLCB3ZSBhcmUgdXNpbmcgbWl4aW5zIGNvbnRhaW4gYHJlc2V0YCBpbiBtaXhpbiBuYW1lXG4gKiB0byBvdmVycmlkZSBkZWZhdWx0IG1peGlucyAocHJvZ3Jlc3NpdmUgZW5oYW5jZW1lbnQpXG4gKiBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3MvbWFpbnRhaW4tYXNwZWN0LXJhdGlvLW1peGluL1xuICogQHBhcmFtIHtudW1iZXJ9ICR3aWR0aDogd2lkdGggb2YgdGhlIGVsZW1lbnQ7XG4gKiBAcGFyYW0ge251bWJlcn0gJGhlaWdodDogaGVpZ2h0IG9mIHRoZSBlbGVtZW50O1xuICogQHBhcmFtIHtzdHJpbmd9ICRjb250ZW50Q2xhc3M6IGNsYXNzIG9mIHRoZSBkaXJlY3QgY2hpbGQgZWxlbWVudCB0byBiZSBwb3NpdGlvbmVkIGFic29sdXRlbHk7XG4gKiBAcGFyYW0ge2Jvb2xlYW59ICRhdXRvcG9zaXRpb246IHRlbGxzIGlmIGl0ZW0gc2hhbGwgdGFrZSAxMDAlIG9mIHBhcmVudCBzaXplIG9yIGlmIGl0IGNhbiBiZSB3aWRlci9oaWdoZXIgaWYgbmVlZGVkO1xuICovXG4vKipcbiAqIENsZWFyZml4OiBjb250YWluIGZsb2F0c1xuICpcbiAqIEZvciBtb2Rlcm4gYnJvd3NlcnNcbiAqIDEuIFRoZSBzcGFjZSBjb250ZW50IGlzIG9uZSB3YXkgdG8gYXZvaWQgYW4gT3BlcmEgYnVnIHdoZW4gdGhlXG4gKiAgICBgY29udGVudGVkaXRhYmxlYCBhdHRyaWJ1dGUgaXMgaW5jbHVkZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgZG9jdW1lbnQuXG4gKiAgICBPdGhlcndpc2UgaXQgY2F1c2VzIHNwYWNlIHRvIGFwcGVhciBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2YgZWxlbWVudHNcbiAqICAgIHRoYXQgcmVjZWl2ZSB0aGUgYGNsZWFyZml4YCBjbGFzcy5cbiAqIDIuIFRoZSB1c2Ugb2YgYHRhYmxlYCByYXRoZXIgdGhhbiBgYmxvY2tgIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHVzaW5nXG4gKiAgICBgOmJlZm9yZWAgdG8gY29udGFpbiB0aGUgdG9wLW1hcmdpbnMgb2YgY2hpbGQgZWxlbWVudHMuXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9ibG9iL21hc3Rlci9zcmMvY3NzL21haW4uY3NzI0wxNzlcbiAqL1xuLyoqXG4gKiBFeHRyYWN0cyBuZXN0ZWQga2V5cyBmcm9tIGdpdmVuIG1hcC5cbiAqIEV4YW1wbGU6IGRlZXAtZ2V0KCRzb21lLW1hcCwgc29tZSwgbmVzdGVkLCBrZXlzKTtcbiAqL1xuLyogXG4gKiBGdW5jdGlvbiB0byBnZXQgdmFsdWUgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCBiYXNlZCBvbiBzaWRlXG4gKiBAcGFyYW0ge3N0cmluZ30gJHZhcmlhYmxlOiB2YXJpYWJsZSB3aXRoIGEgbGlzdCBvZiB2YWx1ZXMgKGxpa2UgcGFkZGluZ3MsIG1hcmdpbnMgZXRjLik7XG4gKiBAcGFyYW0ge3N0cmluZ30gJHNpZGU6IHNpZGUgKHVwIC8gcmlnaHQgLyBkb3duIC8gbGVmdCkgZm9yIHdoaWNoIHdlIHdhbnQgdG8gZ2V0IHZhbHVlXG4gKiBFeGFtcGxlOlxuICogJGNvbXBvbmVudF9wYWRkaW5nOiAxcmVtIDJyZW0gM3JlbTtcbiAqIGdldC12YWx1ZS1mcm9tLWxpc3QoJGNvbXBvbmVudF9wYWRkaW5nLCAncmlnaHQnKSAvLyAycmVtXG4gKiBnZXQtdmFsdWUtZnJvbS1saXN0KCRjb21wb25lbnRfcGFkZGluZywgJ2JvdHRvbScpIC8vIDNyZW1cbiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgYmxvY2stbm8tZW1wdHkgKi9cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbi5jcy1ncmlkLWxheW91dCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7IH1cbiAgLmNzLWdyaWQtbGF5b3V0X19ncmlkIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lOyB9XG4gICAgLmNzLWdyaWQtbGF5b3V0X19ncmlkOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDsgfVxuICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlciB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwOyB9XG4gICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItY29udGVudC13cmFwcGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTsgfVxuICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWZpZ3VyZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTsgfVxuICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWltYWdlIHtcbiAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7IH1cbiAgICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jb250ZW50IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICAvKiBWYXJpYW50cyB3aWxsIGJlIHJlZmFjdG9yZWQgYWZ0ZXIgQ0MgSVQgcmVmYWN0b3IgZHVlIHRvIG5ldyBwb3NpdGlvbiBvcHRpb25zICovIH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWNvbnRlbnQtLXZhcmlhbnQtMSB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItY29udGVudC0tdmFyaWFudC0yIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWNvbnRlbnQtLXZhcmlhbnQtMyB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWNvbnRlbnQtLXZhcmlhbnQtNCB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWNvbnRlbnQtaW5uZXIge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlOyB9XG4gICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItaGVhZGxpbmUge1xuICAgICAgbWFyZ2luOiAwIDAgMC4yZW07XG4gICAgICBjb2xvcjogIzIxMjEyMTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgIGZvbnQtc2l6ZTogMS44cmVtOyB9XG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogMzJyZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItaGVhZGxpbmUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2FsYygwLjkyNTkzdncgKyAxLjUwMzdyZW0pOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxNDByZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItaGVhZGxpbmUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMi44cmVtOyB9IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWhlYWRsaW5lIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMC4yZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMS44cmVtOyB9XG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAzMnJlbSkge1xuICAgICAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWhlYWRsaW5lIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2FsYygyLjAzNzA0dncgKyAxLjE0ODE1cmVtKTsgfSB9XG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxNDByZW0pIHtcbiAgICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1oZWFkbGluZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDRyZW07IH0gfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItLXNjaGVtZS1saWdodCAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1oZWFkbGluZSB7XG4gICAgICAgIGNvbG9yOiAjZmZmOyB9XG4gICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItc3ViaGVhZGxpbmUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW46IDAgMCAwLjZlbTtcbiAgICAgIGNvbG9yOiAjMjEyMTIxO1xuICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgZm9udC1zaXplOiAxLjZyZW07IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAzMnJlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1zdWJoZWFkbGluZSB7XG4gICAgICAgICAgZm9udC1zaXplOiBjYWxjKDAuMTg1MTl2dyArIDEuNTQwNzRyZW0pOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxNDByZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItc3ViaGVhZGxpbmUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtOyB9IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLXN1YmhlYWRsaW5lIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMC42ZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMS42cmVtOyB9XG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAzMnJlbSkge1xuICAgICAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLXN1YmhlYWRsaW5lIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2FsYygwLjgzMzMzdncgKyAxLjMzMzMzcmVtKTsgfSB9XG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxNDByZW0pIHtcbiAgICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1zdWJoZWFkbGluZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDIuNXJlbTsgfSB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci0tc2NoZW1lLWxpZ2h0IC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLXN1YmhlYWRsaW5lIHtcbiAgICAgICAgY29sb3I6ICNmZmY7IH1cbiAgICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci10ZXh0IHtcbiAgICAgIG1hcmdpbjogMCAwIDFlbTtcbiAgICAgIGNvbG9yOiAjMjEyMTIxO1xuICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgZm9udC1zaXplOiAxLjNyZW07IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAzMnJlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci10ZXh0IHtcbiAgICAgICAgICBmb250LXNpemU6IGNhbGMoMC4wOTI1OXZ3ICsgMS4yNzAzN3JlbSk7IH0gfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDE0MHJlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci10ZXh0IHtcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTsgfSB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci10ZXh0IHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMWVtO1xuICAgICAgICBmb250LXNpemU6IDEuM3JlbTsgfVxuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogMzJyZW0pIHtcbiAgICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci10ZXh0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2FsYygwLjI3Nzc4dncgKyAxLjIxMTExcmVtKTsgfSB9XG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxNDByZW0pIHtcbiAgICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci10ZXh0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtOyB9IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLS1zY2hlbWUtbGlnaHQgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItdGV4dCB7XG4gICAgICAgIGNvbG9yOiAjZmZmOyB9XG4gICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItY3RhLWJ1dHRvbiB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBsaW5lLWhlaWdodDogMS4yNzVlbTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgcGFkZGluZzogMC43NWVtIDFlbTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuNXMsIGJvcmRlci1jb2xvciAwLjVzLCBmaWxsIDAuNXMsIGNvbG9yIDAuNXM7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgei1pbmRleDogNTsgfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItY3RhLWJ1dHRvbjpob3ZlciwgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItY3RhLWJ1dHRvbjpmb2N1cywgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItY3RhLWJ1dHRvbjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGYwYTFlICFpbXBvcnRhbnQ7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWN0YS1idXR0b246YmVmb3JlLCAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jdGEtYnV0dG9uOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMXB4O1xuICAgICAgICBib3R0b206IC0xcHg7XG4gICAgICAgIHJpZ2h0OiAtMXB4OyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jdGEtYnV0dG9uOmJlZm9yZSB7XG4gICAgICAgIHdpZHRoOiAzLjRlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7XG4gICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgdHJhbnNwYXJlbnQgMCUsIHRyYW5zcGFyZW50IDAlLCAjOWYwNjE1IDAlLCAjOWYwNjE1IDEwMCUpOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jdGEtYnV0dG9uOmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IDNlbTtcbiAgICAgICAgbWluLXdpZHRoOiBhdXRvO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWYwNjE1O1xuICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjI1cyBsaW5lYXI7XG4gICAgICAgIHotaW5kZXg6IC0yO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWN0YS1idXR0b246aG92ZXI6YWZ0ZXIge1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMnB4KTsgfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItY3RhLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jdGEtYnV0dG9uLCAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jdGEtYnV0dG9uOnZpc2l0ZWQge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDFweDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkZjBhMWU7IH1cbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItY3RhLWJ1dHRvbiAqLCAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jdGEtYnV0dG9uOnZpc2l0ZWQgKiB7XG4gICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgZmlsbDogI2ZmZjsgfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItY3RhLWJ1dHRvbjpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWN0YS1idXR0b246Zm9jdXM6bm90KFtkaXNhYmxlZF0pLCAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jdGEtYnV0dG9uOmFjdGl2ZTpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzlmMDYxNTsgfVxuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jdGEtYnV0dG9uOmhvdmVyOm5vdChbZGlzYWJsZWRdKSAqLCAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jdGEtYnV0dG9uOmZvY3VzOm5vdChbZGlzYWJsZWRdKSAqLCAuY3MtZ3JpZC1sYXlvdXRfX3RlYXNlci1jdGEtYnV0dG9uOmFjdGl2ZTpub3QoW2Rpc2FibGVkXSkgKiB7XG4gICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgZmlsbDogI2ZmZjsgfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0X190ZWFzZXItY3RhLWJ1dHRvbltkaXNhYmxlZF0ge1xuICAgICAgICBvcGFjaXR5OiAwLjY1O1xuICAgICAgICBjdXJzb3I6IGF1dG87IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWN0YS1idXR0b24tc3BhbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNzVlbTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA0ZW07IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fdGVhc2VyLWN0YS1idXR0b24taWNvbiB7XG4gICAgICAgIG1heC13aWR0aDogMWVtO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxLjRyZW07XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTUwJSwgMCk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgcmlnaHQ6IDFlbTsgfVxuICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrOmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwYWRkaW5nLXRvcDogMTcwJTsgfVxuICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2sgLmNzLXByb2R1Y3QtdGlsZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBib3R0b206IDA7IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMjMuMTI1ZW0pIHtcbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2sge1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gMik7IH1cbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljay0teDIge1xuICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAyICogMik7IH0gfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAzMGVtKSB7XG4gICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrIHtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDIpOyB9XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gMiAqIDIpOyB9IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljayB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAzKTsgfVxuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDMgKiAyKTsgfSB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2sge1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gMyk7IH1cbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljay0teDIge1xuICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAzICogMik7IH0gfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA4MGVtKSB7XG4gICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrIHtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDMpOyB9XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gMyAqIDIpOyB9IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogOTBlbSkge1xuICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljayB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAzKTsgfVxuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDMgKiAyKTsgfSB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMGVtKSB7XG4gICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrIHtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDMpOyB9XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gMyAqIDIpOyB9IH1cbiAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14Mjpub3QoLmNzLWdyaWQtbGF5b3V0X19icmljay0teTIpOmJlZm9yZSB7XG4gICAgICBwYWRkaW5nLXRvcDogODUlOyB9XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDI5Ljk5ZW0pIHtcbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS15MikuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS10ZWFzZXI6YmVmb3JlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7IH0gfVxuICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXkyLmNzLWdyaWQtbGF5b3V0X19icmljay0tbGVmdCB7XG4gICAgICBmbG9hdDogbGVmdDsgfVxuICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXkyOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14Mik6YmVmb3JlIHtcbiAgICAgIHBhZGRpbmctdG9wOiAzNDAlOyB9XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDI5Ljk5ZW0pIHtcbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXkyLmNzLWdyaWQtbGF5b3V0X19icmljay0tdGVhc2VyOmJlZm9yZSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwOyB9IH1cbiAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS1yaWdodCB7XG4gICAgICBmbG9hdDogcmlnaHQ7IH1cbiAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS1oaWRkZW4ge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gICAgLmNzLWdyaWQtbGF5b3V0X19icmljay0tdGVhc2VyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH1cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAyOS45OWVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXRlYXNlcjpiZWZvcmUge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiAwOyB9IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXRlYXNlci1yZWFkeSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiAyMy4xMjVlbSkge1xuICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2sge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDIpOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAyICogMik7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogMzBlbSkge1xuICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2sge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDIpOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAyICogMik7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2sge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDIpOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAyICogMik7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2sge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDMpOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAzICogMik7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogODBlbSkge1xuICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2sge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDMpOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAzICogMik7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogOTBlbSkge1xuICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2sge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDMpOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAzICogMik7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIwZW0pIHtcbiAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrIHtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAzKTsgfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19icmljay0teDIge1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gMyAqIDIpOyB9IH1cbiAgLmNzLWdyaWQtbGF5b3V0OmFmdGVyLCAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrOmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAwcHg7XG4gICAgY29udGVudDogJyc7XG4gICAgYmFja2dyb3VuZDogI2YwZjBmMDsgfVxuICAuY3MtZ3JpZC1sYXlvdXQge1xuICAgIG1hcmdpbi1ib3R0b206IC0wcHg7IH1cbiAgICAuY3MtZ3JpZC1sYXlvdXQ6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogI2ZmZjsgfVxuICBAc3VwcG9ydHMgKGRpc3BsYXk6IGdyaWQpIGFuZCAoZ3JpZC1hdXRvLWZsb3c6IHJvdykge1xuICAgIC5jcy1ncmlkLWxheW91dF9fZ3JpZCB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0bzsgfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDIzLjEyNWVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fZ3JpZCB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAzMGVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fZ3JpZCB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fZ3JpZCB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fZ3JpZCB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA4MGVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fZ3JpZCB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5MGVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fZ3JpZCB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMjBlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2dyaWQge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTsgfSB9XG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogMjMuMTI1ZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19ncmlkIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH0gfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDMwZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19ncmlkIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH0gfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19ncmlkIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH0gfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19ncmlkIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7IH0gfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDgwZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19ncmlkIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7IH0gfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDkwZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19ncmlkIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7IH0gfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMGVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fZ3JpZCB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOyB9IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fZ3JpZDphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH1cbiAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljazpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBub25lOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrIC5jcy1wcm9kdWN0LXRpbGUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIGJvdHRvbTogYXV0bzsgfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDIzLjEyNWVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIHtcbiAgICAgICAgICBncmlkLWNvbHVtbi1lbmQ6IHNwYW4gMjsgfVxuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS15MiB7XG4gICAgICAgICAgZ3JpZC1yb3ctZW5kOiBzcGFuIDI7IH0gfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDMwZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljay0teDIge1xuICAgICAgICAgIGdyaWQtY29sdW1uLWVuZDogc3BhbiAyOyB9XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXkyIHtcbiAgICAgICAgICBncmlkLXJvdy1lbmQ6IHNwYW4gMjsgfSB9XG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgICAgZ3JpZC1jb2x1bW4tZW5kOiBzcGFuIDI7IH1cbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljay0teTIge1xuICAgICAgICAgIGdyaWQtcm93LWVuZDogc3BhbiAyOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIHtcbiAgICAgICAgICBncmlkLWNvbHVtbi1lbmQ6IHNwYW4gMjsgfVxuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS15MiB7XG4gICAgICAgICAgZ3JpZC1yb3ctZW5kOiBzcGFuIDI7IH0gfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDgwZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljay0teDIge1xuICAgICAgICAgIGdyaWQtY29sdW1uLWVuZDogc3BhbiAyOyB9XG4gICAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXkyIHtcbiAgICAgICAgICBncmlkLXJvdy1lbmQ6IHNwYW4gMjsgfSB9XG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogOTBlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgICAgZ3JpZC1jb2x1bW4tZW5kOiBzcGFuIDI7IH1cbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljay0teTIge1xuICAgICAgICAgIGdyaWQtcm93LWVuZDogc3BhbiAyOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMjBlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgICAgZ3JpZC1jb2x1bW4tZW5kOiBzcGFuIDI7IH1cbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljay0teTIge1xuICAgICAgICAgIGdyaWQtcm93LWVuZDogc3BhbiAyOyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAyMy4xMjVlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXQ6bm90KC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyKSAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MikgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfSB9XG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogMzBlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXQ6bm90KC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyKSAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MikgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfSB9XG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXQ6bm90KC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyKSAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MikgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfVxuICAgICAgICAuY3MtZ3JpZC1sYXlvdXQ6bm90KC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyKSAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiAuY3MtaW1hZ2UtdGVhc2VyX19hc3BlY3QtcmF0aW8ge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiB1bnNldCAhaW1wb3J0YW50OyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gICAgICAgIC5jcy1ncmlkLWxheW91dDpub3QoLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIpIC5jcy1ncmlkLWxheW91dF9fYnJpY2s6bm90KC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyKSAuY3MtaW1hZ2UtdGVhc2VyX19hc3BlY3QtcmF0aW8ge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiB1bnNldCAhaW1wb3J0YW50OyB9XG4gICAgICAgIC5jcy1ncmlkLWxheW91dDpub3QoLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIpIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIC5jcy1pbWFnZS10ZWFzZXJfX2FzcGVjdC1yYXRpbyB7XG4gICAgICAgICAgcGFkZGluZy10b3A6IHVuc2V0ICFpbXBvcnRhbnQ7IH0gfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDgwZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0Om5vdCguY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhcikgLmNzLWdyaWQtbGF5b3V0X19icmljazpub3QoLmNzLWdyaWQtbGF5b3V0X19icmljay0teDIpIC5jcy1pbWFnZS10ZWFzZXJfX2FzcGVjdC1yYXRpbyB7XG4gICAgICAgICAgcGFkZGluZy10b3A6IHVuc2V0ICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0Om5vdCguY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhcikgLmNzLWdyaWQtbGF5b3V0X19icmljay0teDIgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfSB9XG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogOTBlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXQ6bm90KC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyKSAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MikgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfVxuICAgICAgICAuY3MtZ3JpZC1sYXlvdXQ6bm90KC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyKSAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiAuY3MtaW1hZ2UtdGVhc2VyX19hc3BlY3QtcmF0aW8ge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiB1bnNldCAhaW1wb3J0YW50OyB9IH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMjBlbSkge1xuICAgICAgICAuY3MtZ3JpZC1sYXlvdXQ6bm90KC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyKSAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MikgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfVxuICAgICAgICAuY3MtZ3JpZC1sYXlvdXQ6bm90KC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyKSAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiAuY3MtaW1hZ2UtdGVhc2VyX19hc3BlY3QtcmF0aW8ge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiB1bnNldCAhaW1wb3J0YW50OyB9IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS15Mik6YmVmb3JlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXkyOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14Mik6YmVmb3JlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2ssIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXRlYXNlci1yZWFkeSB7XG4gICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogMjMuMTE1ZW0pIHtcbiAgICAgICAgLmNzLWdyaWQtbGF5b3V0X19icmljay0tdGVhc2VyLXJlYWR5IHtcbiAgICAgICAgICBncmlkLWNvbHVtbi1zdGFydDogMSAhaW1wb3J0YW50OyB9IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXJpZ2h0IHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMjMuMTI1ZW0pIHtcbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIHtcbiAgICAgICAgZ3JpZC1jb2x1bW4tZW5kOiBzcGFuIDI7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXkyIHtcbiAgICAgICAgZ3JpZC1yb3ctZW5kOiBzcGFuIDI7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2s6bm90KC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyKSAuY3MtaW1hZ2UtdGVhc2VyX19hc3BlY3QtcmF0aW8ge1xuICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfSB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDMwZW0pIHtcbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIHtcbiAgICAgICAgZ3JpZC1jb2x1bW4tZW5kOiBzcGFuIDI7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXkyIHtcbiAgICAgICAgZ3JpZC1yb3ctZW5kOiBzcGFuIDI7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2s6bm90KC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyKSAuY3MtaW1hZ2UtdGVhc2VyX19hc3BlY3QtcmF0aW8ge1xuICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfSB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIHtcbiAgICAgICAgZ3JpZC1jb2x1bW4tZW5kOiBzcGFuIDI7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXkyIHtcbiAgICAgICAgZ3JpZC1yb3ctZW5kOiBzcGFuIDI7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2s6bm90KC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyKSAuY3MtaW1hZ2UtdGVhc2VyX19hc3BlY3QtcmF0aW8ge1xuICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfSB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIHtcbiAgICAgICAgZ3JpZC1jb2x1bW4tZW5kOiBzcGFuIDI7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXkyIHtcbiAgICAgICAgZ3JpZC1yb3ctZW5kOiBzcGFuIDI7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2s6bm90KC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyKSAuY3MtaW1hZ2UtdGVhc2VyX19hc3BlY3QtcmF0aW8ge1xuICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19icmljay0teDIgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgcGFkZGluZy10b3A6IHVuc2V0ICFpbXBvcnRhbnQ7IH0gfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA4MGVtKSB7XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgIGdyaWQtY29sdW1uLWVuZDogc3BhbiAyOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS15MiB7XG4gICAgICAgIGdyaWQtcm93LWVuZDogc3BhbiAyOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MikgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgcGFkZGluZy10b3A6IHVuc2V0ICFpbXBvcnRhbnQ7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIC5jcy1pbWFnZS10ZWFzZXJfX2FzcGVjdC1yYXRpbyB7XG4gICAgICAgIHBhZGRpbmctdG9wOiB1bnNldCAhaW1wb3J0YW50OyB9IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogOTBlbSkge1xuICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19icmljay0teDIge1xuICAgICAgICBncmlkLWNvbHVtbi1lbmQ6IHNwYW4gMjsgfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19icmljay0teTIge1xuICAgICAgICBncmlkLXJvdy1lbmQ6IHNwYW4gMjsgfVxuICAgICAgLmNzLWdyaWQtbGF5b3V0LS13aXRoLXNpZGViYXIgLmNzLWdyaWQtbGF5b3V0X19icmljazpub3QoLmNzLWdyaWQtbGF5b3V0X19icmljay0teDIpIC5jcy1pbWFnZS10ZWFzZXJfX2FzcGVjdC1yYXRpbyB7XG4gICAgICAgIHBhZGRpbmctdG9wOiB1bnNldCAhaW1wb3J0YW50OyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiAuY3MtaW1hZ2UtdGVhc2VyX19hc3BlY3QtcmF0aW8ge1xuICAgICAgICBwYWRkaW5nLXRvcDogdW5zZXQgIWltcG9ydGFudDsgfSB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMGVtKSB7XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MiB7XG4gICAgICAgIGdyaWQtY29sdW1uLWVuZDogc3BhbiAyOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS15MiB7XG4gICAgICAgIGdyaWQtcm93LWVuZDogc3BhbiAyOyB9XG4gICAgICAuY3MtZ3JpZC1sYXlvdXQtLXdpdGgtc2lkZWJhciAuY3MtZ3JpZC1sYXlvdXRfX2JyaWNrOm5vdCguY3MtZ3JpZC1sYXlvdXRfX2JyaWNrLS14MikgLmNzLWltYWdlLXRlYXNlcl9fYXNwZWN0LXJhdGlvIHtcbiAgICAgICAgcGFkZGluZy10b3A6IHVuc2V0ICFpbXBvcnRhbnQ7IH1cbiAgICAgIC5jcy1ncmlkLWxheW91dC0td2l0aC1zaWRlYmFyIC5jcy1ncmlkLWxheW91dF9fYnJpY2stLXgyIC5jcy1pbWFnZS10ZWFzZXJfX2FzcGVjdC1yYXRpbyB7XG4gICAgICAgIHBhZGRpbmctdG9wOiB1bnNldCAhaW1wb3J0YW50OyB9IH0gfVxuXG4uY3MtY29udGFpbmVyLS1ncmlkLXRlYXNlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbkBzdXBwb3J0cyAoZGlzcGxheTogZ3JpZCkgYW5kIChncmlkLWF1dG8tZmxvdzogcm93KSB7XG4gIC5jcy1jb250YWluZXItLWdyaWQtdGVhc2VyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgYm90dG9tOiBhdXRvO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlOyB9IH1cbiIsIi8qKlxuICogQnJlYWtwb2ludCBjb21wb25lbnQgdXNlZCBieSBpbmNsdWRlLW1lZGlhIHZlbmRvciBsaWJyYXJ5LlxuICovXG5AaW1wb3J0ICdldGMvdmlldy5zY3NzJztcbkBpbXBvcnQgJ3V0aWxzL2RlZXAtZ2V0L2RlZXAtZ2V0LnNjc3MnO1xuXG4vLyBCcmVha3BvaW50cyBpbXBvcnQgZnJvbSB2aWV3LnhtbCBbcHhdXG4kYnJlYWtwb2ludHNfcHg6IGRlZXAtZ2V0KCR2aWV3LXhtbCwgdmFycywgTWFnZW50b19UaGVtZSwgYnJlYWtwb2ludHMpO1xuJGJyZWFrcG9pbnRzX2VtOiAoKTtcblxuQHVzZSBcInNhc3M6bWFwXCI7XG5cbkBmdW5jdGlvbiBjYWxjdWxhdGUtYnJlYWtwb2ludHMoJGJyZWFrcG9pbnRzX2VtLCAkYnJlYWtwb2ludHNfcHgpIHtcbiAgICAkcmVzdWx0OiAkYnJlYWtwb2ludHNfZW07XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRicmVha3BvaW50c19weCB7XG4gICAgICAgICRyZXN1bHQ6IG1hcC1tZXJnZShcbiAgICAgICAgICAgICRyZXN1bHQsXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgdW5xdW90ZSgka2V5KTogJHZhbHVlIC8gMTYgKiAxZW0sXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vKipcbiogRGVmYXVsdCBwcm9qZWN0IGJyZWFrcG9pbnRzIC0gW2VtXVxuKi9cblxuJGJyZWFrcG9pbnRzOiBjYWxjdWxhdGUtYnJlYWtwb2ludHMoJGJyZWFrcG9pbnRzX2VtLCAkYnJlYWtwb2ludHNfcHgpICFkZWZhdWx0O1xuXG4vLyBwaG9uZTogMjMuMTI1ZW0gLSAzNzBweFxuLy8gcGhvbmVMZzogMzBlbSAtIDQ4MHB4LFxuLy8gdGFibGV0OiA0OGVtIC0gNzY4cHgsXG4vLyBsYXB0b3A6IDY0ZW0gLSAxMDI0cHgsXG4vLyBsYXB0b3BMZzogODBlbSAtIDEyODBweCxcbi8vIGRlc2t0b3A6IDkwZW0gLSAxNDQwcHgsXG4vLyB0djogMTIwZW0gLSAxOTIwcHgsXG4iLCIvKipcbiAqIEV4dHJhY3RzIG5lc3RlZCBrZXlzIGZyb20gZ2l2ZW4gbWFwLlxuICogRXhhbXBsZTogZGVlcC1nZXQoJHNvbWUtbWFwLCBzb21lLCBuZXN0ZWQsIGtleXMpO1xuICovXG5AZnVuY3Rpb24gZGVlcC1nZXQoJG1hcCwgJGtleXMuLi4pIHtcbiAgICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9XG4gICAgQHJldHVybiAkbWFwO1xufVxuIiwiLyoqKlxuICogVXNpbmcgcHN1ZWRvIGVsZW1lbnRzIHRvIG1haW50YWluIGFuIGVsZW1lbnRzIGFzcGVjdCByYXRpbywgZXZlbiBhcyBpdCBzY2FsZXNcbiAqIEl0J3MgdXNpbmcgb25seSBmb3IgSUUxMSBhbmQgRWRnZSAodmVyc2lvbiB3aGljaCBkb2Vzbid0IHN1cHBvcnQgbmF0aXZlIENTUyBncmlkKSBicm93c2Vyc1xuICogRm9yIGJyb3dzZXJzIHdoaWNoIHN1cHBvcnQgbmF0aXZlIENTUyBncmlkLCB3ZSBhcmUgdXNpbmcgbWl4aW5zIGNvbnRhaW4gYHJlc2V0YCBpbiBtaXhpbiBuYW1lXG4gKiB0byBvdmVycmlkZSBkZWZhdWx0IG1peGlucyAocHJvZ3Jlc3NpdmUgZW5oYW5jZW1lbnQpXG4gKiBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3MvbWFpbnRhaW4tYXNwZWN0LXJhdGlvLW1peGluL1xuICogQHBhcmFtIHtudW1iZXJ9ICR3aWR0aDogd2lkdGggb2YgdGhlIGVsZW1lbnQ7XG4gKiBAcGFyYW0ge251bWJlcn0gJGhlaWdodDogaGVpZ2h0IG9mIHRoZSBlbGVtZW50O1xuICogQHBhcmFtIHtzdHJpbmd9ICRjb250ZW50Q2xhc3M6IGNsYXNzIG9mIHRoZSBkaXJlY3QgY2hpbGQgZWxlbWVudCB0byBiZSBwb3NpdGlvbmVkIGFic29sdXRlbHk7XG4gKiBAcGFyYW0ge2Jvb2xlYW59ICRhdXRvcG9zaXRpb246IHRlbGxzIGlmIGl0ZW0gc2hhbGwgdGFrZSAxMDAlIG9mIHBhcmVudCBzaXplIG9yIGlmIGl0IGNhbiBiZSB3aWRlci9oaWdoZXIgaWYgbmVlZGVkO1xuICovXG5cbkBmdW5jdGlvbiBnZXQtYXNwZWN0LXJhdGlvLXBhZGRpbmctdmFsdWUoJHdpZHRoLCAkaGVpZ2h0KSB7XG4gICAgQHJldHVybiAoJGhlaWdodCAvICR3aWR0aCkgKiAxMDAlO1xufVxuXG5AbWl4aW4gYXNwZWN0LXJhdGlvKCR3aWR0aCwgJGhlaWdodCwgJGNoaWxkQ2xhc3MsICRhdXRvcG9zaXRpb246IHRydWUpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmctdG9wOiBnZXQtYXNwZWN0LXJhdGlvLXBhZGRpbmctdmFsdWUoJHdpZHRoLCAkaGVpZ2h0KTtcbiAgICB9XG5cbiAgICAuI3skY2hpbGRDbGFzc30ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcblxuICAgICAgICBAaWYgJGF1dG9wb3NpdGlvbiB7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIGFzcGVjdC1yYXRpby1yZXNldCgkY2hpbGRDbGFzcywgJGF1dG9wb3NpdGlvbjogdHJ1ZSkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogbm9uZTtcbiAgICB9XG5cbiAgICAuI3skY2hpbGRDbGFzc30ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgbGVmdDogYXV0bztcblxuICAgICAgICBAaWYgJGF1dG9wb3NpdGlvbiB7XG4gICAgICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgICAgIGJvdHRvbTogYXV0bztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIGFzcGVjdC1yYXRpby1jaGlsZC1wb3NpdGlvbigkYXV0b3Bvc2l0aW9uOiB0cnVlKSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgQGlmICRhdXRvcG9zaXRpb24ge1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgIH1cbn1cblxuQG1peGluIGFzcGVjdC1yYXRpby1vdmVycmlkZSgkd2lkdGgsICRoZWlnaHQpIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiBnZXQtYXNwZWN0LXJhdGlvLXBhZGRpbmctdmFsdWUoJHdpZHRoLCAkaGVpZ2h0KTtcbiAgICB9XG59XG5cbkBtaXhpbiBhc3BlY3QtcmF0aW8tb3ZlcnJpZGUtcmVzZXQoKSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICB9XG59XG4iLCIvKipcbiAqIENsZWFyZml4OiBjb250YWluIGZsb2F0c1xuICpcbiAqIEZvciBtb2Rlcm4gYnJvd3NlcnNcbiAqIDEuIFRoZSBzcGFjZSBjb250ZW50IGlzIG9uZSB3YXkgdG8gYXZvaWQgYW4gT3BlcmEgYnVnIHdoZW4gdGhlXG4gKiAgICBgY29udGVudGVkaXRhYmxlYCBhdHRyaWJ1dGUgaXMgaW5jbHVkZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgZG9jdW1lbnQuXG4gKiAgICBPdGhlcndpc2UgaXQgY2F1c2VzIHNwYWNlIHRvIGFwcGVhciBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2YgZWxlbWVudHNcbiAqICAgIHRoYXQgcmVjZWl2ZSB0aGUgYGNsZWFyZml4YCBjbGFzcy5cbiAqIDIuIFRoZSB1c2Ugb2YgYHRhYmxlYCByYXRoZXIgdGhhbiBgYmxvY2tgIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHVzaW5nXG4gKiAgICBgOmJlZm9yZWAgdG8gY29udGFpbiB0aGUgdG9wLW1hcmdpbnMgb2YgY2hpbGQgZWxlbWVudHMuXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9ibG9iL21hc3Rlci9zcmMvY3NzL21haW4uY3NzI0wxNzlcbiAqL1xuXG5AbWl4aW4gY2xlYXJmaXgoKSB7XG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxufVxuIiwiLyogXG4gKiBGdW5jdGlvbiB0byBnZXQgdmFsdWUgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCBiYXNlZCBvbiBzaWRlXG4gKiBAcGFyYW0ge3N0cmluZ30gJHZhcmlhYmxlOiB2YXJpYWJsZSB3aXRoIGEgbGlzdCBvZiB2YWx1ZXMgKGxpa2UgcGFkZGluZ3MsIG1hcmdpbnMgZXRjLik7XG4gKiBAcGFyYW0ge3N0cmluZ30gJHNpZGU6IHNpZGUgKHVwIC8gcmlnaHQgLyBkb3duIC8gbGVmdCkgZm9yIHdoaWNoIHdlIHdhbnQgdG8gZ2V0IHZhbHVlXG4gKiBFeGFtcGxlOlxuICogJGNvbXBvbmVudF9wYWRkaW5nOiAxcmVtIDJyZW0gM3JlbTtcbiAqIGdldC12YWx1ZS1mcm9tLWxpc3QoJGNvbXBvbmVudF9wYWRkaW5nLCAncmlnaHQnKSAvLyAycmVtXG4gKiBnZXQtdmFsdWUtZnJvbS1saXN0KCRjb21wb25lbnRfcGFkZGluZywgJ2JvdHRvbScpIC8vIDNyZW1cbiAqL1xuXG5AZnVuY3Rpb24gZ2V0LXZhbHVlLWZyb20tbGlzdCgkdmFyaWFibGUsICRzaWRlKSB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2YXJpYWJsZSk7XG5cbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgICBAcmV0dXJuIG50aCgkdmFyaWFibGUsIDEpO1xuICAgIH0gQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgICBAaWYgKCRzaWRlID09ICd1cCcpIE9SICgkc2lkZSA9PSAnZG93bicpIHtcbiAgICAgICAgICAgIEByZXR1cm4gbnRoKCR2YXJpYWJsZSwgMSk7XG4gICAgICAgIH0gQGVsc2UgaWYgKCRzaWRlID09ICdsZWZ0JykgT1IgKCRzaWRlID09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIEByZXR1cm4gbnRoKCR2YXJpYWJsZSwgMik7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICAgQGlmICgkc2lkZSA9PSAnbGVmdCcpIE9SICgkc2lkZSA9PSAncmlnaHQnKSB7XG4gICAgICAgICAgICBAcmV0dXJuIG50aCgkdmFyaWFibGUsIDIpO1xuICAgICAgICB9IEBlbHNlIGlmICgkc2lkZSA9PSAndXAnKSB7XG4gICAgICAgICAgICBAcmV0dXJuIG50aCgkdmFyaWFibGUsIDEpO1xuICAgICAgICB9IEBlbHNlIGlmICgkc2lkZSA9PSAnZG93bicpIHtcbiAgICAgICAgICAgIEByZXR1cm4gbnRoKCR2YXJpYWJsZSwgMyk7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmICgkbGVuZ3RoID09IDQpIHtcbiAgICAgICAgQGlmICgkc2lkZSA9PSAndXAnKSB7XG4gICAgICAgICAgICBAcmV0dXJuIG50aCgkdmFyaWFibGUsIDEpO1xuICAgICAgICB9IEBlbHNlIGlmICgkc2lkZSA9PSAncmlnaHQnKSB7XG4gICAgICAgICAgICBAcmV0dXJuIG50aCgkdmFyaWFibGUsIDIpO1xuICAgICAgICB9IEBlbHNlIGlmICgkc2lkZSA9PSAnZG93bicpIHtcbiAgICAgICAgICAgIEByZXR1cm4gbnRoKCR2YXJpYWJsZSwgMyk7XG4gICAgICAgIH0gQGVsc2UgaWYgKCRzaWRlID09ICdsZWZ0Jykge1xuICAgICAgICAgICAgQHJldHVybiBudGgoJHZhcmlhYmxlLCA0KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qIHN0eWxlbGludC1kaXNhYmxlIGJsb2NrLW5vLWVtcHR5ICovXG5AbWl4aW4gYnV0dG9uLWhvb2soJHR5cGUsICRpY29uX3Bvcykge1xufVxuXG5AbWl4aW4gYnV0dG9uX3NwYW4taG9vaygkdHlwZSwgJGljb25fcG9zKSB7XG59XG5cbkBtaXhpbiBidXR0b25faWNvbi1ob29rKCR0eXBlLCAkaWNvbl9wb3MpIHtcbn1cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIi8vLyBwb2x5LWZsdWlkLXNpemluZ1xuLy8vIEdlbmVyYXRlIGxpbmVhciBpbnRlcnBvbGF0ZWQgc2l6ZSB2YWx1ZXMgdGhyb3VnaCBtdWx0aXBsZSBicmVhayBwb2ludHNcbi8vLyBAcGFyYW0gJHByb3BlcnR5IC0gQSBzdHJpbmcgQ1NTIHByb3BlcnR5IG5hbWVcbi8vLyBAcGFyYW0gJG1hcCAtIEEgU0FTUyBtYXAgb2Ygdmlld3BvcnQgdW5pdCBhbmQgc2l6ZSB2YWx1ZSBwYWlyc1xuLy8vIEByZXF1aXJlcyBmdW5jdGlvbiBsaW5lYXItaW50ZXJwb2xhdGlvblxuLy8vIEByZXF1aXJlcyBmdW5jdGlvbiBtYXAtc29ydFxuLy8vIEBleGFtcGxlXG4vLy8gICBAaW5jbHVkZSBwb2x5LWZsdWlkLXNpemluZygnZm9udC1zaXplJywgKDU3NnB4OiAyMnB4LCA3NjhweDogMjRweCwgOTkycHg6IDM0cHgpKTtcbi8vLyBAYXV0aG9yIEpha2UgV2lsc29uIDxqYWtlLmUud2lsc29uQGdtYWlsLmNvbT5cbkBtaXhpbiBwb2x5LWZsdWlkLXNpemluZygkcHJvcGVydHksICRtYXApIHtcbiAgICAvLyBHZXQgdGhlIG51bWJlciBvZiBwcm92aWRlZCBicmVha3BvaW50c1xuICAgICRsZW5ndGg6IGxlbmd0aChtYXAta2V5cygkbWFwKSk7XG5cbiAgICAvLyBFcnJvciBpZiB0aGUgbnVtYmVyIG9mIGJyZWFrcG9pbnRzIGlzIDwgMlxuICAgIEBpZiAoJGxlbmd0aCA8IDIpIHtcbiAgICAgICAgQGVycm9yIFwicG9seS1mbHVpZC1zaXppbmcoKSAkbWFwIHJlcXVpcmVzIGF0IGxlYXN0IHZhbHVlc1wiO1xuICAgIH1cblxuICAgIC8vIFNvcnQgdGhlIG1hcCBieSB2aWV3cG9ydCB3aWR0aCAoa2V5KVxuICAgICRtYXA6IG1hcC1zb3J0KCRtYXApO1xuICAgICRrZXlzOiBtYXAta2V5cygkbWFwKTtcblxuICAgIC8vIE1pbmltdW0gc2l6ZVxuICAgICN7JHByb3BlcnR5fTogbWFwLWdldCgkbWFwLCBudGgoJGtleXMsIDEpKTtcblxuICAgIC8vIEludGVycG9sYXRlZCBzaXplIHRocm91Z2ggYnJlYWtwb2ludHNcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkbGVuZ3RoIC0gMSkge1xuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogbnRoKCRrZXlzLCRpKSkge1xuICAgICAgICAgICAgI3skcHJvcGVydHl9OiBsaW5lYXItaW50ZXJwb2xhdGlvbihcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIG50aCgka2V5cywgJGkpOiBtYXAtZ2V0KCRtYXAsIG50aCgka2V5cywgJGkpKSxcbiAgICAgICAgICAgICAgICAgICAgbnRoKCRrZXlzLCAoJGkgKyAxKSk6IG1hcC1nZXQoJG1hcCwgbnRoKCRrZXlzLCAoJGkgKyAxKSkpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYXhtaW11bSBzaXplXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG50aCgka2V5cywkbGVuZ3RoKSkge1xuICAgICAgICAjeyRwcm9wZXJ0eX06IG1hcC1nZXQoJG1hcCwgbnRoKCRrZXlzLCAkbGVuZ3RoKSk7XG4gICAgfVxufVxuXG4vLy8gbGluZWFyLWludGVycG9sYXRpb25cbi8vLyBDYWxjdWxhdGUgdGhlIGRlZmluaXRpb24gb2YgYSBsaW5lIGJldHdlZW4gdHdvIHBvaW50c1xuLy8vIEBwYXJhbSAkbWFwIC0gQSBTQVNTIG1hcCBvZiB2aWV3cG9ydCB3aWR0aHMgYW5kIHNpemUgdmFsdWUgcGFpcnNcbi8vLyBAcmV0dXJucyBBIGxpbmVhciBlcXVhdGlvbiBhcyBhIGNhbGMoKSBmdW5jdGlvblxuLy8vIEBleGFtcGxlXG4vLy8gICBmb250LXNpemU6IGxpbmVhci1pbnRlcnBvbGF0aW9uKCgzMjBweDogMThweCwgNzY4cHg6IDI2cHgpKTtcbi8vLyBAYXV0aG9yIEpha2UgV2lsc29uIDxqYWtlLmUud2lsc29uQGdtYWlsLmNvbT5cbkBmdW5jdGlvbiBsaW5lYXItaW50ZXJwb2xhdGlvbigkbWFwKSB7XG4gICAgJGtleXM6IG1hcC1rZXlzKCRtYXApO1xuICAgIEBpZiAobGVuZ3RoKCRrZXlzKSAhPSAyKSB7XG4gICAgICAgIEBlcnJvciBcImxpbmVhci1pbnRlcnBvbGF0aW9uKCkgJG1hcCBtdXN0IGJlIGV4YWN0bHkgMiB2YWx1ZXNcIjtcbiAgICB9XG4gICAgLy8gVGhlIHNsb3BlXG4gICAgJG06IChtYXAtZ2V0KCRtYXAsIG50aCgka2V5cywgMikpIC0gbWFwLWdldCgkbWFwLCBudGgoJGtleXMsIDEpKSkgL1xuICAgICAgICAobnRoKCRrZXlzLCAyKSAtIG50aCgka2V5cywgMSkpO1xuXG4gICAgLy8gVGhlIHktaW50ZXJjZXB0XG4gICAgJGI6IG1hcC1nZXQoJG1hcCwgbnRoKCRrZXlzLCAxKSkgLSAkbSAqIG50aCgka2V5cywgMSk7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIHNpZ24gc2hvdWxkIGJlIHBvc2l0aXZlIG9yIG5lZ2F0aXZlXG4gICAgJHNpZ246ICcrJztcbiAgICBAaWYgKCRiIDwgMCkge1xuICAgICAgICAkc2lnbjogJy0nO1xuICAgICAgICAkYjogYWJzKCRiKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuIGNhbGMoI3skbSAqIDEwMH12dyAjeyRzaWdufSAjeyRifSk7XG59XG5cbi8vLyBsaXN0LXNvcnRcbi8vLyBTb3J0IGEgU0FTUyBsaXN0XG4vLy8gQHBhcmFtICRsaXN0IC0gQSBTQVNTIGxpc3Rcbi8vLyBAcmV0dXJucyBBIHNvcnRlZCBTQVNTIGxpc3Rcbi8vLyBAcmVxdWlyZXMgZnVuY3Rpb24gbGlzdC1yZW1vdmVcbi8vLyBAYXV0aG9yIEpha2UgV2lsc29uIDxqYWtlLmUud2lsc29uQGdtYWlsLmNvbT5cbkBmdW5jdGlvbiBsaXN0LXNvcnQoJGxpc3QpIHtcbiAgICAkc29ydGVkbGlzdDogKCk7XG4gICAgQHdoaWxlIGxlbmd0aCgkbGlzdCkgPiAwIHtcbiAgICAgICAgJHZhbHVlOiBudGgoJGxpc3QsIDEpO1xuICAgICAgICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgICAgICAgICBAaWYgJGl0ZW0gPCAkdmFsdWUge1xuICAgICAgICAgICAgICAgICR2YWx1ZTogJGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJHNvcnRlZGxpc3Q6IGFwcGVuZCgkc29ydGVkbGlzdCwgJHZhbHVlLCAnc3BhY2UnKTtcbiAgICAgICAgJGxpc3Q6IGxpc3QtcmVtb3ZlKCRsaXN0LCBpbmRleCgkbGlzdCwgJHZhbHVlKSk7XG4gICAgfVxuICAgIEByZXR1cm4gJHNvcnRlZGxpc3Q7XG59XG5cbi8vLyBtYXAtc29ydFxuLy8vIFNvcnQgbWFwIGJ5IGtleXNcbi8vLyBAcGFyYW0gJG1hcCAtIEEgU0FTUyBtYXBcbi8vLyBAcmV0dXJucyBBIFNBU1MgbWFwIHNvcnRlZCBieSBrZXlzXG4vLy8gQHJlcXVpcmVzIGZ1bmN0aW9uIGxpc3Qtc29ydFxuLy8vIEBhdXRob3IgSmFrZSBXaWxzb24gPGpha2UuZS53aWxzb25AZ21haWwuY29tPlxuQGZ1bmN0aW9uIG1hcC1zb3J0KCRtYXApIHtcbiAgICAka2V5czogbGlzdC1zb3J0KG1hcC1rZXlzKCRtYXApKTtcbiAgICAkc29ydGVkTWFwOiAoKTtcbiAgICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICAgICAgJHNvcnRlZE1hcDogbWFwLW1lcmdlKFxuICAgICAgICAgICAgJHNvcnRlZE1hcCxcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAka2V5OiBtYXAtZ2V0KCRtYXAsICRrZXkpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBAcmV0dXJuICRzb3J0ZWRNYXA7XG59XG5cbi8vLyBsaXN0LXJlbW92ZVxuLy8vIFJlbW92ZSBhbiBpdGVtIGZyb20gYSBsaXN0XG4vLy8gQHBhcmFtICRsaXN0IC0gQSBTQVNTIGxpc3Rcbi8vLyBAcGFyYW0gJGluZGV4IC0gVGhlIGxpc3QgaW5kZXggdG8gcmVtb3ZlXG4vLy8gQHJldHVybnMgQSBTQVNTIGxpc3Rcbi8vLyBAYXV0aG9yIEpha2UgV2lsc29uIDxqYWtlLmUud2lsc29uQGdtYWlsLmNvbT5cbkBmdW5jdGlvbiBsaXN0LXJlbW92ZSgkbGlzdCwgJGluZGV4KSB7XG4gICAgJG5ld0xpc3Q6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgICAgIEBpZiAkaSAhPSAkaW5kZXgge1xuICAgICAgICAgICAgJG5ld0xpc3Q6IGFwcGVuZCgkbmV3TGlzdCwgbnRoKCRsaXN0LCAkaSksICdzcGFjZScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJG5ld0xpc3Q7XG59XG4iLCJAaW1wb3J0ICd1dGlscy9nZXQtdmFsdWUtZnJvbS1saXN0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uL2FuaW1hdGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbi9ob29rJztcblxuLy8gRGVmaW5lIGRlZmF1bHQgdHlwZSBmb3IgYnV0dG9ucy4gWW91IGNhbiBvdmVycmlkZSBpdCBpbmRpdmlkdWFsbHkgcGVyIGJ1dHRvbiBpbiBlYWNoIGNvbXBvbmVudFxuLy8gVmFyaWFudHM6IHByaW1hcnkgfCBzZWNvbmRhcnkgfCBsaW5rIHwgc3VjY2VzcyB8IGVycm9yXG4kYnV0dG9uX2RlZmF1bHQtdHlwZTogJ3ByaW1hcnknICFkZWZhdWx0O1xuXG4vLyBEZWZpbmUgZGVmYXVsdCBwb3NpdGlvbiBmb3IgaWNvbnMgaW4gYnV0dG9uLiBZb3UgY2FuIG92ZXJyaWRlIGl0IGluZGl2aWR1YWxseSBwZXIgYnV0dG9uIGluIGVhY2ggY29tcG9uZW50XG4vLyBWYXJpYW50czogbGVmdCB8IHJpZ2h0IHwgbm8taWNvbiB8IG9ubHktaWNvblxuJGJ1dHRvbl9kZWZhdWx0LWljb24tcG9zOiAncmlnaHQnICFkZWZhdWx0O1xuXG4vLyBHZW5lcmFsIHN0eWxlcyBmb3IgYnV0dG9uc1xuJGJ1dHRvbl9mb250LXNpemU6IDEuNHJlbSAhZGVmYXVsdDtcbiRidXR0b25fZm9udC13ZWlnaHQ6IDcwMCAhZGVmYXVsdDtcbiRidXR0b25fYm9yZGVyLXNpemU6IDFweCAhZGVmYXVsdDtcbiRidXR0b25fcGFkZGluZzogMC43NWVtIDFlbSAhZGVmYXVsdDtcbiRidXR0b25fcGFkZGluZy13aGVuLWljb246IDNlbSAhZGVmYXVsdDtcbiRidXR0b25fbGluZS1oZWlnaHQ6IDEuMjc1ZW0gIWRlZmF1bHQ7XG4kYnV0dG9uX2JvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzX2Jhc2UgIWRlZmF1bHQ7XG4kYnV0dG9uX2FuaW1hdGlvbi10aW1lOiAwLjVzICFkZWZhdWx0O1xuJGJ1dHRvbl9hbmltYXRpb24tYmVmb3JlLXdpZHRoOiAzLjRlbSAhZGVmYXVsdDtcbiRidXR0b25fYW5pbWF0aW9uLWFmdGVyLXdpZHRoOiAzZW0gIWRlZmF1bHQ7XG4kYnV0dG9uX3RleHQtdHJhbnNmb3JtOiBub25lICFkZWZhdWx0O1xuJGJ1dHRvbl90ZXh0LWxldHRlci1zcGFjaW5nOiBub3JtYWwgIWRlZmF1bHQ7XG4kYnV0dG9uX3RleHQtYWxpZ246IGNlbnRlciAhZGVmYXVsdDtcblxuLy8gU3R5bGVzIGZvciBgcHJpbWFyeWAgYnV0dG9uIHR5cGVcbiRidXR0b25fcHJpbWFyeS1ib3JkZXI6ICRidXR0b25fYm9yZGVyLXNpemUgc29saWQgdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kYnV0dG9uX3ByaW1hcnktLWhvdmVyLWJvcmRlcjogJGJ1dHRvbl9ib3JkZXItc2l6ZSBzb2xpZCB0cmFuc3BhcmVudCAhZGVmYXVsdDtcbiRidXR0b25fcHJpbWFyeS1iYWNrZ3JvdW5kOiAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3ByaW1hcnktLWhvdmVyLWJhY2tncm91bmQ6ICRjb2xvcl9wcmltYXJ5LTgwMCAhZGVmYXVsdDtcbiRidXR0b25fcHJpbWFyeS1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9wcmltYXJ5LS1ob3Zlci1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9wcmltYXJ5LWZpbGw6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcbiRidXR0b25fcHJpbWFyeS0taG92ZXItZmlsbDogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9wcmltYXJ5LWVuYWJsZS1hbmltYXRpb246IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN0eWxlcyBmb3IgYHNlY29uZGFyeWAgYnV0dG9uIHR5cGVcbiRidXR0b25fc2Vjb25kYXJ5LWJvcmRlcjogJGJ1dHRvbl9ib3JkZXItc2l6ZSBzb2xpZCAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3NlY29uZGFyeS0taG92ZXItYm9yZGVyOiAkYnV0dG9uX2JvcmRlci1zaXplIHNvbGlkICRjb2xvcl9wcmltYXJ5LTgwMCAhZGVmYXVsdDtcbiRidXR0b25fc2Vjb25kYXJ5LWJhY2tncm91bmQ6ICRjb2xvcl93aGl0ZSAhZGVmYXVsdDtcbiRidXR0b25fc2Vjb25kYXJ5LS1ob3Zlci1iYWNrZ3JvdW5kOiAkY29sb3JfcHJpbWFyeS04MDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3NlY29uZGFyeS1jb2xvcjogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJGJ1dHRvbl9zZWNvbmRhcnktLWhvdmVyLWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3NlY29uZGFyeS1maWxsOiAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3NlY29uZGFyeS0taG92ZXItZmlsbDogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9zZWNvbmRhcnktZW5hYmxlLWFuaW1hdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN0eWxlIGZvciBgbGlua2AgYnV0dG9uIHR5cGVcbiRidXR0b25fbGluay1jb2xvcjogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJGJ1dHRvbl9saW5rLS1ob3Zlci1jb2xvcjogJGNvbG9yX3ByaW1hcnktODAwICFkZWZhdWx0O1xuJGJ1dHRvbl9saW5rLWljb24tcGFkZGluZzogMnJlbSAhZGVmYXVsdDtcblxuLy8gU3R5bGVzIGZvciBgc3VjY2Vzc2AgYnV0dG9uIHR5cGVcbiRidXR0b25fc3VjY2Vzcy1ib3JkZXI6ICRidXR0b25fYm9yZGVyLXNpemUgc29saWQgdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kYnV0dG9uX3N1Y2Nlc3MtLWhvdmVyLWJvcmRlcjogJGJ1dHRvbl9ib3JkZXItc2l6ZSBzb2xpZCB0cmFuc3BhcmVudCAhZGVmYXVsdDtcbiRidXR0b25fc3VjY2Vzcy1iYWNrZ3JvdW5kOiAkY29sb3Jfc3VjY2Vzcy01MDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3N1Y2Nlc3MtLWhvdmVyLWJhY2tncm91bmQ6ICRjb2xvcl9zdWNjZXNzLTYwMCAhZGVmYXVsdDtcbiRidXR0b25fc3VjY2Vzcy1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9zdWNjZXNzLS1ob3Zlci1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9zdWNjZXNzLWZpbGw6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcbiRidXR0b25fc3VjY2Vzcy0taG92ZXItZmlsbDogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9zdWNjZXNzLWVuYWJsZS1hbmltYXRpb246IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdHlsZXMgZm9yIGBlcnJvcmAgYnV0dG9uIHR5cGVcbiRidXR0b25fZXJyb3ItYm9yZGVyOiAkYnV0dG9uX2JvcmRlci1zaXplIHNvbGlkIHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuJGJ1dHRvbl9lcnJvci0taG92ZXItYm9yZGVyOiAkYnV0dG9uX2JvcmRlci1zaXplIHNvbGlkIHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuJGJ1dHRvbl9lcnJvci1iYWNrZ3JvdW5kOiAkY29sb3JfZXJyb3ItNTAwICFkZWZhdWx0O1xuJGJ1dHRvbl9lcnJvci0taG92ZXItYmFja2dyb3VuZDogJGNvbG9yX2Vycm9yLTYwMCAhZGVmYXVsdDtcbiRidXR0b25fZXJyb3ItY29sb3I6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcbiRidXR0b25fZXJyb3ItLWhvdmVyLWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kYnV0dG9uX2Vycm9yLWZpbGw6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcbiRidXR0b25fZXJyb3ItLWhvdmVyLWZpbGw6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcbiRidXR0b25fZXJyb3ItZW5hYmxlLWFuaW1hdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIERlZmluZXMgaG93IG11Y2ggYnV0dG9uIGljb24gc2hvdWxkIGJlIHB1bGxlZCB2ZXJ0aWNhbGx5IHRvIGNlbnRlciBpdC5cbi8vIFNob3VsZCBiZSBkZWZpbmVkIGluIGVtIHRvIG1ha2UgaXQgcmVsYXRpdmUgdG8gYnV0dG9uJ3MgZm9udCBzaXplLlxuJGJ1dHRvbl9zcGFuLWZvbnQtb2Zmc2V0OiAwICFkZWZhdWx0O1xuXG4vLyBEZWZpbmVzIGhvdyBtdWNoIGJ1dHRvbiBpY29uIHNob3VsZCBiZSBwdWxsZWQgdmVydGljYWxseSB0byBjZW50ZXIgaXQgb24gaWNvbiBidXR0b24uXG4vLyBTaG91bGQgYmUgZGVmaW5lZCBpbiBlbSB0byBtYWtlIGl0IHJlbGF0aXZlIHRvIGJ1dHRvbidzIGZvbnQgc2l6ZS5cbiRidXR0b25faWNvbi1vZmZzZXQ6IDAuMWVtICFkZWZhdWx0O1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBmdW5jdGlvbi1jYWxjLW5vLXVuc3BhY2VkLW9wZXJhdG9yXG5cbkBtaXhpbiBidXR0b24oXG4gICAgJHR5cGU6ICRidXR0b25fZGVmYXVsdC10eXBlLFxuICAgICRpY29uX3BvczogJGJ1dHRvbl9kZWZhdWx0LWljb24tcG9zXG4pIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiAkYnV0dG9uX2ZvbnQtc2l6ZTtcbiAgICBmb250LXdlaWdodDogJGJ1dHRvbl9mb250LXdlaWdodDtcbiAgICB0ZXh0LWFsaWduOiAkYnV0dG9uX3RleHQtYWxpZ247XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxpbmUtaGVpZ2h0OiAkYnV0dG9uX2xpbmUtaGVpZ2h0O1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogJGJ1dHRvbl90ZXh0LXRyYW5zZm9ybTtcblxuICAgIEBpZiAoJHR5cGUgIT0gJ2xpbmsnKSB7XG4gICAgICAgIHBhZGRpbmc6ICRidXR0b25fcGFkZGluZztcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAkYnV0dG9uX2FuaW1hdGlvbi10aW1lLFxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yICRidXR0b25fYW5pbWF0aW9uLXRpbWUsIGZpbGwgJGJ1dHRvbl9hbmltYXRpb24tdGltZSxcbiAgICAgICAgICAgIGNvbG9yICRidXR0b25fYW5pbWF0aW9uLXRpbWU7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIHotaW5kZXg6IDU7XG4gICAgfVxuXG4gICAgQGlmICgkdHlwZSA9PSAncHJpbWFyeScpIHtcbiAgICAgICAgQGlmICgkYnV0dG9uX3ByaW1hcnktZW5hYmxlLWFuaW1hdGlvbikge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uX2FuaW1hdGlvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICAgICRjb2xvcl9zdGFydDogJGJ1dHRvbl9wcmltYXJ5LWJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgJGNvbG9yX2VuZDogJGJ1dHRvbl9wcmltYXJ5LS1ob3Zlci1iYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgICRpY29uX3BvczogJGljb25fcG9zXG4gICAgICAgICAgICApO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBpZiAoJGljb25fcG9zID09ICdyaWdodCcpIG9yICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlLFxuICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgKCR0eXBlID09ICdzZWNvbmRhcnknKSB7XG4gICAgICAgIEBpZiAoJGJ1dHRvbl9zZWNvbmRhcnktZW5hYmxlLWFuaW1hdGlvbikge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uX2FuaW1hdGlvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgICAgJGNvbG9yX3N0YXJ0OiAkYnV0dG9uX3NlY29uZGFyeS1iYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgICRjb2xvcl9lbmQ6ICRidXR0b25fc2Vjb25kYXJ5LS1ob3Zlci1iYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgICRpY29uX3BvczogJGljb25fcG9zXG4gICAgICAgICAgICApO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBpZiAoJGljb25fcG9zID09ICdyaWdodCcpIG9yICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlLFxuICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgKCR0eXBlID09ICdsaW5rJykge1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAkYnV0dG9uX2FuaW1hdGlvbi10aW1lLCBmaWxsICRidXR0b25fYW5pbWF0aW9uLXRpbWU7XG5cbiAgICAgICAgKiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAkYnV0dG9uX2FuaW1hdGlvbi10aW1lLFxuICAgICAgICAgICAgICAgIGZpbGwgJGJ1dHRvbl9hbmltYXRpb24tdGltZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoJHR5cGUgPT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIEBpZiAoJGJ1dHRvbl9zdWNjZXNzLWVuYWJsZS1hbmltYXRpb24pIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbl9hbmltYXRpb24oXG4gICAgICAgICAgICAgICAgJHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAkY29sb3Jfc3RhcnQ6ICRidXR0b25fc3VjY2Vzcy1iYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgICRjb2xvcl9lbmQ6ICRidXR0b25fc3VjY2Vzcy0taG92ZXItYmFja2dyb3VuZCxcbiAgICAgICAgICAgICAgICAkaWNvbl9wb3M6ICRpY29uX3Bvc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Vycm9yJykge1xuICAgICAgICBAaWYgKCRidXR0b25fZXJyb3ItZW5hYmxlLWFuaW1hdGlvbikge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uX2FuaW1hdGlvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAkY29sb3Jfc3RhcnQ6ICRidXR0b25fZXJyb3ItYmFja2dyb3VuZCxcbiAgICAgICAgICAgICAgICAkY29sb3JfZW5kOiAkYnV0dG9uX2Vycm9yLS1ob3Zlci1iYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgICRpY29uX3BvczogJGljb25fcG9zXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlIG5vLWRlc2NlbmRpbmctc3BlY2lmaWNpdHlcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgJixcbiAgICAmOnZpc2l0ZWQge1xuICAgICAgICBAaWYgKCR0eXBlICE9ICdsaW5rJykge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJGJ1dHRvbl9ib3JkZXItcmFkaXVzO1xuICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDFweDtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCR0eXBlID09ICdwcmltYXJ5Jykge1xuICAgICAgICAgICAgYm9yZGVyOiAkYnV0dG9uX3ByaW1hcnktYm9yZGVyO1xuICAgICAgICAgICAgY29sb3I6ICRidXR0b25fcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b25fcHJpbWFyeS1iYWNrZ3JvdW5kO1xuXG4gICAgICAgICAgICAqIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9wcmltYXJ5LWNvbG9yO1xuICAgICAgICAgICAgICAgIGZpbGw6ICRidXR0b25fcHJpbWFyeS1maWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkdHlwZSA9PSAnc2Vjb25kYXJ5Jykge1xuICAgICAgICAgICAgYm9yZGVyOiAkYnV0dG9uX3NlY29uZGFyeS1ib3JkZXI7XG4gICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9zZWNvbmRhcnktY29sb3I7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uX3NlY29uZGFyeS1iYWNrZ3JvdW5kO1xuXG4gICAgICAgICAgICAqIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9zZWNvbmRhcnktY29sb3I7XG4gICAgICAgICAgICAgICAgZmlsbDogJGJ1dHRvbl9zZWNvbmRhcnktZmlsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJHR5cGUgPT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9saW5rLWNvbG9yO1xuXG4gICAgICAgICAgICAqIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9saW5rLWNvbG9yO1xuICAgICAgICAgICAgICAgIGZpbGw6ICRidXR0b25fbGluay1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJHR5cGUgPT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICBib3JkZXI6ICRidXR0b25fc3VjY2Vzcy1ib3JkZXI7XG4gICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9zdWNjZXNzLWNvbG9yO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbl9zdWNjZXNzLWJhY2tncm91bmQ7XG5cbiAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX3N1Y2Nlc3MtY29sb3I7XG4gICAgICAgICAgICAgICAgZmlsbDogJGJ1dHRvbl9zdWNjZXNzLWZpbGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCR0eXBlID09ICdlcnJvcicpIHtcbiAgICAgICAgICAgIGJvcmRlcjogJGJ1dHRvbl9lcnJvci1ib3JkZXI7XG4gICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9lcnJvci1jb2xvcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b25fZXJyb3ItYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fZXJyb3ItY29sb3I7XG4gICAgICAgICAgICAgICAgZmlsbDogJGJ1dHRvbl9lcnJvci1maWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHN0eWxlbGludC1lbmFibGUgbm8tZGVzY2VuZGluZy1zcGVjaWZpY2l0eVxuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgJjpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgICAgICAgQGlmICgkdHlwZSAhPSAnbGluaycpIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCR0eXBlID09ICdwcmltYXJ5Jykge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogJGJ1dHRvbl9wcmltYXJ5LS1ob3Zlci1ib3JkZXI7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fcHJpbWFyeS0taG92ZXItY29sb3I7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbl9wcmltYXJ5LS1ob3Zlci1iYWNrZ3JvdW5kO1xuXG4gICAgICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX3ByaW1hcnktLWhvdmVyLWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAkYnV0dG9uX3ByaW1hcnktLWhvdmVyLWZpbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCR0eXBlID09ICdzZWNvbmRhcnknKSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAkYnV0dG9uX3NlY29uZGFyeS0taG92ZXItYm9yZGVyO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX3NlY29uZGFyeS0taG92ZXItY29sb3I7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbl9zZWNvbmRhcnktLWhvdmVyLWJhY2tncm91bmQ7XG5cbiAgICAgICAgICAgICAgICAqIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fc2Vjb25kYXJ5LS1ob3Zlci1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJGJ1dHRvbl9zZWNvbmRhcnktLWhvdmVyLWZpbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCR0eXBlID09ICdsaW5rJykge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX2xpbmstLWhvdmVyLWNvbG9yO1xuXG4gICAgICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX2xpbmstLWhvdmVyLWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAkYnV0dG9uX2xpbmstLWhvdmVyLWNvbG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICgkdHlwZSA9PSAnc3VjY2VzcycpIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6ICRidXR0b25fc3VjY2Vzcy0taG92ZXItYm9yZGVyO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX3N1Y2Nlc3MtLWhvdmVyLWNvbG9yO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b25fc3VjY2Vzcy0taG92ZXItYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9zdWNjZXNzLS1ob3Zlci1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJGJ1dHRvbl9zdWNjZXNzLS1ob3Zlci1maWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICgkdHlwZSA9PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAkYnV0dG9uX2Vycm9yLS1ob3Zlci1ib3JkZXI7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fZXJyb3ItLWhvdmVyLWNvbG9yO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b25fZXJyb3ItLWhvdmVyLWJhY2tncm91bmQ7XG5cbiAgICAgICAgICAgICAgICAqIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fZXJyb3ItLWhvdmVyLWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAkYnV0dG9uX2Vycm9yLS1ob3Zlci1maWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICAgb3BhY2l0eTogMC42NTtcbiAgICAgICAgY3Vyc29yOiBhdXRvO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob29rKCR0eXBlLCAkaWNvbl9wb3MpO1xufVxuXG5AbWl4aW4gYnV0dG9uX3NwYW4oXG4gICAgJHR5cGU6ICRidXR0b25fZGVmYXVsdC10eXBlLFxuICAgICRpY29uX3BvczogJGJ1dHRvbl9kZWZhdWx0LWljb24tcG9zXG4pIHtcbiAgICBtYXJnaW4tdG9wOiAkYnV0dG9uX3NwYW4tZm9udC1vZmZzZXQ7XG4gICAgei1pbmRleDogMTtcbiAgICBmb250LXdlaWdodDogJGJ1dHRvbl9mb250LXdlaWdodDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGxpbmUtaGVpZ2h0OiAkYnV0dG9uX2xpbmUtaGVpZ2h0O1xuICAgIGxldHRlci1zcGFjaW5nOiAkYnV0dG9uX3RleHQtbGV0dGVyLXNwYWNpbmc7XG5cbiAgICBAaWYgKCRpY29uX3BvcyA9PSAncmlnaHQnKSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcblxuICAgICAgICBAaWYgKCR0eXBlID09ICdsaW5rJykge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJGJ1dHRvbl9saW5rLWljb24tcGFkZGluZztcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIHVuaXQoJGJ1dHRvbl9wYWRkaW5nLXdoZW4taWNvbikgPT1cbiAgICAgICAgICAgICAgICAgICAgdW5pdChcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldC12YWx1ZS1mcm9tLWxpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhcmlhYmxlOiAkYnV0dG9uX3BhZGRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNpZGU6ICRpY29uX3Bvc1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkYnV0dG9uX3BhZGRpbmctd2hlbi1pY29uICtcbiAgICAgICAgICAgICAgICAgICAgZ2V0LXZhbHVlLWZyb20tbGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICR2YXJpYWJsZTogJGJ1dHRvbl9wYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJHNpZGU6ICRpY29uX3Bvc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogY2FsYyhcbiAgICAgICAgICAgICAgICAgICAgI3skYnV0dG9uX3BhZGRpbmctd2hlbi1pY29ufSArXG4gICAgICAgICAgICAgICAgICAgICAgICAje2dldC12YWx1ZS1mcm9tLWxpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhcmlhYmxlOiAkYnV0dG9uX3BhZGRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNpZGU6ICRpY29uX3Bvc1xuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBAZWxzZSBpZiAoJGljb25fcG9zID09ICdsZWZ0Jykge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuXG4gICAgICAgIEBpZiAoJHR5cGUgPT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRidXR0b25fbGluay1pY29uLXBhZGRpbmc7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICB1bml0KCRidXR0b25fcGFkZGluZy13aGVuLWljb24pID09XG4gICAgICAgICAgICAgICAgICAgIHVuaXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXQtdmFsdWUtZnJvbS1saXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YXJpYWJsZTogJGJ1dHRvbl9wYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaWRlOiAkaWNvbl9wb3NcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkYnV0dG9uX3BhZGRpbmctd2hlbi1pY29uICtcbiAgICAgICAgICAgICAgICAgICAgZ2V0LXZhbHVlLWZyb20tbGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICR2YXJpYWJsZTogJGJ1dHRvbl9wYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJHNpZGU6ICRpY29uX3Bvc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBjYWxjKFxuICAgICAgICAgICAgICAgICAgICAjeyRidXR0b25fcGFkZGluZy13aGVuLWljb259ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICN7Z2V0LXZhbHVlLWZyb20tbGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFyaWFibGU6ICRidXR0b25fcGFkZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2lkZTogJGljb25fcG9zXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmICgkaWNvbl9wb3MgPT0gJ29ubHktaWNvbicpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25fc3Bhbi1ob29rKCR0eXBlLCAkaWNvbl9wb3MpO1xufVxuXG5AbWl4aW4gYnV0dG9uX2ljb24oXG4gICAgJHR5cGU6ICRidXR0b25fZGVmYXVsdC10eXBlLFxuICAgICRpY29uX3BvczogJGJ1dHRvbl9kZWZhdWx0LWljb24tcG9zXG4pIHtcbiAgICBtYXgtd2lkdGg6IDFlbTtcbiAgICBtYXgtaGVpZ2h0OiAkYnV0dG9uX2ZvbnQtc2l6ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGhlaWdodDogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIEBpZiAoJGljb25fcG9zID09ICdyaWdodCcpIG9yICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTUwJSwgMCk7XG4gICAgfVxuXG4gICAgQGlmICgkaWNvbl9wb3MgPT0gJ29ubHktaWNvbicpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6ICRidXR0b25faWNvbi1vZmZzZXQ7XG5cbiAgICAgICAgQGlmICgkdHlwZSA9PSAnbGluaycpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAkYnV0dG9uX2xpbmstaWNvbi1wYWRkaW5nIC8gMjtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGJ1dHRvbl9saW5rLWljb24tcGFkZGluZyAvIDI7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykge1xuICAgICAgICBAaWYgKCR0eXBlID09ICdsaW5rJykge1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgcmlnaHQ6IGdldC12YWx1ZS1mcm9tLWxpc3QoXG4gICAgICAgICAgICAgICAgJHZhcmlhYmxlOiAkYnV0dG9uX3BhZGRpbmcsXG4gICAgICAgICAgICAgICAgJHNpZGU6ICRpY29uX3Bvc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0gQGVsc2UgaWYgKCRpY29uX3BvcyA9PSAnbGVmdCcpIHtcbiAgICAgICAgQGlmICgkdHlwZSA9PSAnbGluaycpIHtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICBsZWZ0OiBnZXQtdmFsdWUtZnJvbS1saXN0KFxuICAgICAgICAgICAgICAgICR2YXJpYWJsZTogJGJ1dHRvbl9wYWRkaW5nLFxuICAgICAgICAgICAgICAgICRzaWRlOiAkaWNvbl9wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25faWNvbi1ob29rKCR0eXBlLCAkaWNvbl9wb3MpO1xufVxuIiwiLy8gSW4gdGhpcyBtaXhpbiB5b3UgY2FuIGRlZmluZSB5b3VyIGN1c3RvbSBhbmltYXRpb24gZm9yIGJ1dHRvbnNcbi8vIFlvdSBjYW4gY2hlY2sgZXhhbXBsZXMgb2YgYW5pbWF0aW9ucyBpbiBodHRwOi8vaWFubHVubi5naXRodWIuaW8vSG92ZXIvIGxpYnJhcnlcblxuQG1peGluIGJ1dHRvbl9hbmltYXRpb24oXG4gICAgJHR5cGU6ICRidXR0b25fZGVmYXVsdC10eXBlLFxuICAgICRjb2xvcl9zdGFydDogJGJ1dHRvbl9wcmltYXJ5LWJhY2tncm91bmQsXG4gICAgJGNvbG9yX2VuZDogJGJ1dHRvbl9wcmltYXJ5LS1ob3Zlci1iYWNrZ3JvdW5kLFxuICAgICRpY29uX3BvczogJGJ1dHRvbl9kZWZhdWx0LWljb24tcG9zXG4pIHtcbiAgICBAaWYgKCR0eXBlID09ICdwcmltYXJ5JykgYW5kXG4gICAgICAgICgoJGljb25fcG9zID09ICdyaWdodCcpIG9yICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSlcbiAgICB7XG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMsXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9zdGFydCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpZiAoJGljb25fcG9zID09ICdyaWdodCcpIG9yICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogLSN7JGJ1dHRvbl9ib3JkZXItc2l6ZX07XG4gICAgICAgICAgICBib3R0b206IC0jeyRidXR0b25fYm9yZGVyLXNpemV9O1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgcmlnaHQ6IC0jeyRidXR0b25fYm9yZGVyLXNpemV9O1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICBsZWZ0OiAtI3skYnV0dG9uX2JvcmRlci1zaXplfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykgb3IgKCRpY29uX3BvcyA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHdpZHRoOiAkYnV0dG9uX2FuaW1hdGlvbi1iZWZvcmUtd2lkdGg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwICRidXR0b25fYm9yZGVyLXJhZGl1cyAkYnV0dG9uX2JvcmRlci1yYWRpdXMgMDtcbiAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgICAgIDBkZWcsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgICAgICAgICAgICAgJGNvbG9yX2VuZCAwJSxcbiAgICAgICAgICAgICAgICAkY29sb3JfZW5kIDEwMCVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRpY29uX3BvcyA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAwZGVnLFxuICAgICAgICAgICAgICAgICRjb2xvcl9lbmQgMCUsXG4gICAgICAgICAgICAgICAgJGNvbG9yX2VuZCA4NSUsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMTAwJSxcbiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAxMDAlXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpZiAoJGljb25fcG9zID09ICdyaWdodCcpIG9yICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB3aWR0aDogJGJ1dHRvbl9hbmltYXRpb24tYWZ0ZXItd2lkdGg7XG4gICAgICAgICAgICBtaW4td2lkdGg6IGF1dG87XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfZW5kO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC4yNXMgbGluZWFyO1xuICAgICAgICAgICAgei1pbmRleDogLTI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkYnV0dG9uX2JvcmRlci1yYWRpdXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykgb3IgKCRpY29uX3BvcyA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIEBpZiAoJGJ1dHRvbl9ib3JkZXItc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArICN7MiAqICRidXR0b25fYm9yZGVyLXNpemV9KTtcbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLyAgICAgXyAgICAgICAgICAgIF8gICAgICAgICAgIF8gICAgICAgICAgICAgICAgICAgICAgICAgICBfIF9cbi8vICAgIChfKSAgICAgICAgICB8IHwgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAoXylcbi8vICAgICBfIF8gX18gICBfX198IHxfICAgXyAgX198IHwgX19fICAgXyBfXyBfX18gICBfX18gIF9ffCB8XyAgX18gX1xuLy8gICAgfCB8ICdfIFxcIC8gX198IHwgfCB8IHwvIF9gIHwvIF8gXFwgfCAnXyBgIF8gXFwgLyBfIFxcLyBfYCB8IHwvIF9gIHxcbi8vICAgIHwgfCB8IHwgfCAoX198IHwgfF98IHwgKF98IHwgIF9fLyB8IHwgfCB8IHwgfCAgX18vIChffCB8IHwgKF98IHxcbi8vICAgIHxffF98IHxffFxcX19ffF98XFxfXyxffFxcX18sX3xcXF9fX3wgfF98IHxffCB8X3xcXF9fX3xcXF9fLF98X3xcXF9fLF98XG4vL1xuLy8gICAgICBTaW1wbGUsIGVsZWdhbnQgYW5kIG1haW50YWluYWJsZSBtZWRpYSBxdWVyaWVzIGluIFNhc3Ncbi8vICAgICAgICAgICAgICAgICAgICAgICAgdjEuNC45XG4vL1xuLy8gICAgICAgIGh0dHBzOi8vZWR1YXJkb2JvdWNhcy5naXRodWIuaW8vaW5jbHVkZS1tZWRpYVxuLy9cbi8vICAgICAgICAgQXV0aG9yczogRWR1YXJkbyBCb3VjYXMgKEBlZHVhcmRvYm91Y2FzKVxuLy8gICAgICAgICAgICAgICAgICBLaXR0eSBHaXJhdWRlbCAoQGtpdHR5Z2lyYXVkZWwpXG4vL1xuLy8gICAgICBUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNSVQgbGljZW5zZVxuLy8vL1xuLy8vIGluY2x1ZGUtbWVkaWEgbGlicmFyeSBwdWJsaWMgY29uZmlndXJhdGlvblxuLy8vIEBhdXRob3IgRWR1YXJkbyBCb3VjYXNcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vL1xuXG5cbi8vL1xuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIGdsb2JhbCBicmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzaW5nbGUgYnJlYWtwb2ludCB3aXRoIHRoZSBsYWJlbCBgcGhvbmVgXG4vLy8gICRicmVha3BvaW50czogKCdwaG9uZSc6IDMyMHB4KTtcbi8vL1xuJGJyZWFrcG9pbnRzOiAoXG4gICdwaG9uZSc6IDMyMHB4LFxuICAndGFibGV0JzogNzY4cHgsXG4gICdkZXNrdG9wJzogMTAyNHB4XG4pICFkZWZhdWx0O1xuXG5cbi8vL1xuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIHN0YXRpYyBleHByZXNzaW9ucyBvciBtZWRpYSB0eXBlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzaW5nbGUgbWVkaWEgdHlwZSAoc2NyZWVuKVxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJzogJ3NjcmVlbicpO1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzdGF0aWMgZXhwcmVzc2lvbiB3aXRoIGxvZ2ljYWwgZGlzanVuY3Rpb24gKE9SIG9wZXJhdG9yKVxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6IChcbi8vLyAgICAncmV0aW5hMngnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSdcbi8vLyAgKTtcbi8vL1xuJG1lZGlhLWV4cHJlc3Npb25zOiAoXG4gICdzY3JlZW4nOiAnc2NyZWVuJyxcbiAgJ3ByaW50JzogJ3ByaW50JyxcbiAgJ2hhbmRoZWxkJzogJ2hhbmRoZWxkJyxcbiAgJ2xhbmRzY2FwZSc6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAncG9ydHJhaXQnOiAnKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAncmV0aW5hMngnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCknLFxuICAncmV0aW5hM3gnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMyksIChtaW4tcmVzb2x1dGlvbjogMzUwZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAzZHBweCknXG4pICFkZWZhdWx0O1xuXG5cbi8vL1xuLy8vIERlZmluZXMgYSBudW1iZXIgdG8gYmUgYWRkZWQgb3Igc3VidHJhY3RlZCBmcm9tIGVhY2ggdW5pdCB3aGVuIGRlY2xhcmluZyBicmVha3BvaW50cyB3aXRoIGV4Y2x1c2l2ZSBpbnRlcnZhbHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcGl4ZWxzIGlzIGRlZmluZWQgYXMgYDFgIGJ5IGRlZmF1bHRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4xMjhweCcpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMTI5cHgpIHt9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIGVtcyBpcyBkZWZpbmVkIGFzIGAwLjAxYCBieSBkZWZhdWx0XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+MjBlbScpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMjAuMDFlbSkge31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcmVtcyBpcyBkZWZpbmVkIGFzIGAwLjFgIGJ5IGRlZmF1bHQsIHRvIGJlIHVzZWQgd2l0aCBgZm9udC1zaXplOiA2Mi41JTtgXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+Mi4wcmVtJykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyLjFyZW0pIHt9XG4vLy9cbiR1bml0LWludGVydmFsczogKFxuICAncHgnOiAxLFxuICAnZW0nOiAwLjAxLFxuICAncmVtJzogMC4xLFxuICAnJzogMFxuKSAhZGVmYXVsdDtcblxuLy8vXG4vLy8gRGVmaW5lcyB3aGV0aGVyIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgYXZhaWxhYmxlLCB1c2VmdWwgZm9yIGNyZWF0aW5nIHNlcGFyYXRlIHN0eWxlc2hlZXRzXG4vLy8gZm9yIGJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBtZWRpYSBxdWVyaWVzLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIERpc2FibGVzIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXNcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgLmZvbyB7XG4vLy8gICAgY29sb3I6IHRvbWF0bztcbi8vLyAgfVxuLy8vXG4kaW0tbWVkaWEtc3VwcG9ydDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vXG4vLy8gU2VsZWN0cyB3aGljaCBicmVha3BvaW50IHRvIGVtdWxhdGUgd2hlbiBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzIGlzIGRpc2FibGVkLiBNZWRpYSBxdWVyaWVzIHRoYXQgc3RhcnQgYXQgb3Jcbi8vLyBpbnRlcmNlcHQgdGhlIGJyZWFrcG9pbnQgd2lsbCBiZSBkaXNwbGF5ZWQsIGFueSBvdGhlcnMgd2lsbCBiZSBpZ25vcmVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgLmZvbyB7XG4vLy8gICAgY29sb3I6IHRvbWF0bztcbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGRvZXMgbm90IGludGVyY2VwdCB0aGUgZGVza3RvcCBicmVha3BvaW50XG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICd0YWJsZXQnO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAvKiBObyBvdXRwdXQgKi9cbi8vL1xuJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJyAhZGVmYXVsdDtcblxuLy8vXG4vLy8gU2VsZWN0cyB3aGljaCBtZWRpYSBleHByZXNzaW9ucyBhcmUgYWxsb3dlZCBpbiBhbiBleHByZXNzaW9uIGZvciBpdCB0byBiZSB1c2VkIHdoZW4gbWVkaWEgcXVlcmllc1xuLy8vIGFyZSBub3Qgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnQgYW5kIGNvbnRhaW5zIG9ubHkgYWNjZXB0ZWQgbWVkaWEgZXhwcmVzc2lvbnNcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdzY3JlZW4nKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gICAuZm9vIHtcbi8vLyAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgTk9UIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBidXQgY29udGFpbnMgYSBtZWRpYSBleHByZXNzaW9uIHRoYXQgaXMgbm90IGFjY2VwdGVkXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcbi8vLyAgJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbicpO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnLCAncmV0aW5hMngnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJywgJ3BvcnRyYWl0JywgJ2xhbmRzY2FwZScpICFkZWZhdWx0O1xuXG4vLy8vXG4vLy8gQ3Jvc3MtZW5naW5lIGxvZ2dpbmcgZW5naW5lXG4vLy8gQGF1dGhvciBLaXR0eSBHaXJhdWRlbFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vL1xuXG5cbi8vL1xuLy8vIExvZyBhIG1lc3NhZ2UgZWl0aGVyIHdpdGggYEBlcnJvcmAgaWYgc3VwcG9ydGVkXG4vLy8gZWxzZSB3aXRoIGBAd2FybmAsIHVzaW5nIGBmZWF0dXJlLWV4aXN0cygnYXQtZXJyb3InKWBcbi8vLyB0byBkZXRlY3Qgc3VwcG9ydC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBmdW5jdGlvbiBpbS1sb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpIHtcbiAgICBAZXJyb3IgJG1lc3NhZ2U7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICRtZXNzYWdlO1xuICAgICRfOiBub29wKCk7XG4gIH1cblxuICBAcmV0dXJuICRtZXNzYWdlO1xufVxuXG5cbi8vL1xuLy8vIFdyYXBwZXIgbWl4aW4gZm9yIHRoZSBsb2cgZnVuY3Rpb24gc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBhIG1vcmUgZnJpZW5kbHlcbi8vLyBBUEkgdGhhbiBgQGlmIGltLWxvZygnLi4nKSB7fWAgb3IgYCRfOiBpbS1sb2coJy4uJylgLiBCYXNpY2FsbHksIHVzZSB0aGUgZnVuY3Rpb25cbi8vLyB3aXRoaW4gZnVuY3Rpb25zIGJlY2F1c2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbiBhIGZ1bmN0aW9uXG4vLy8gYW5kIHVzZSB0aGUgbWl4aW4gZXZlcnl3aGVyZSBlbHNlIGJlY2F1c2UgaXQncyBtdWNoIG1vcmUgZWxlZ2FudC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBtaXhpbiBsb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGltLWxvZygkbWVzc2FnZSkge31cbn1cblxuXG4vLy9cbi8vLyBGdW5jdGlvbiB3aXRoIG5vIGBAcmV0dXJuYCBjYWxsZWQgbmV4dCB0byBgQHdhcm5gIGluIFNhc3MgMy4zXG4vLy8gdG8gdHJpZ2dlciBhIGNvbXBpbGluZyBlcnJvciBhbmQgc3RvcCB0aGUgcHJvY2Vzcy5cbi8vL1xuQGZ1bmN0aW9uIG5vb3AoKSB7fVxuXG4vLy9cbi8vLyBEZXRlcm1pbmVzIHdoZXRoZXIgYSBsaXN0IG9mIGNvbmRpdGlvbnMgaXMgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50LlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAgICRjb25kaXRpb25zICAtIE1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnNcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBjb25kaXRpb25zIGFyZSBpbnRlcmNlcHRlZCBieSB0aGUgc3RhdGljIGJyZWFrcG9pbnRcbi8vL1xuQGZ1bmN0aW9uIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pIHtcbiAgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludCk7XG5cbiAgQGlmIG5vdCAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSB7XG4gICAgQGlmIGltLWxvZygnYCN7JGltLW5vLW1lZGlhLWJyZWFrcG9pbnR9YCBpcyBub3QgYSB2YWxpZCBicmVha3BvaW50LicpIHt9XG4gIH1cblxuICBAZWFjaCAkY29uZGl0aW9uIGluICRjb25kaXRpb25zIHtcbiAgICBAaWYgbm90IG1hcC1oYXMta2V5KCRtZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xuICAgICAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkY29uZGl0aW9uKTtcbiAgICAgICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xuICAgICAgJHZhbHVlOiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkY29uZGl0aW9uLCAkb3BlcmF0b3IpO1xuXG4gICAgICBAaWYgKCRwcmVmaXggPT0gJ21heCcgYW5kICR2YWx1ZSA8PSAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSkgb3JcbiAgICAgICAgICAoJHByZWZpeCA9PSAnbWluJyBhbmQgJHZhbHVlID4gJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUpIHtcbiAgICAgICAgQHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmIG5vdCBpbmRleCgkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vXG4vLy8gUGFyc2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gR2V0IG9wZXJhdG9yIG9mIGFuIGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gQW55IG9mIGA+PWAsIGA+YCwgYDw9YCwgYDxgLCBg4omlYCwgYOKJpGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKSB7XG4gIEBlYWNoICRvcGVyYXRvciBpbiAoJz49JywgJz4nLCAnPD0nLCAnPCcsICfiiaUnLCAn4omkJykge1xuICAgIEBpZiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAgICAgQHJldHVybiAkb3BlcmF0b3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAkXzogaW0tbG9nKCdObyBvcGVyYXRvciBmb3VuZCBpbiBgI3skZXhwcmVzc2lvbn1gLicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCBkaW1lbnNpb24gb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IGRpbWVuc2lvbiBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGB3aWR0aGAgb3IgYGhlaWdodGAgKG9yIHBvdGVudGlhbGx5IGFueXRoaW5nIGVsc2UpXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHBhcnNlZC1kaW1lbnNpb246IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgMCwgJG9wZXJhdG9yLWluZGV4IC0gMSk7XG4gICRkaW1lbnNpb246ICd3aWR0aCc7XG5cbiAgQGlmIHN0ci1sZW5ndGgoJHBhcnNlZC1kaW1lbnNpb24pID4gMCB7XG4gICAgJGRpbWVuc2lvbjogJHBhcnNlZC1kaW1lbnNpb247XG4gIH1cblxuICBAcmV0dXJuICRkaW1lbnNpb247XG59XG5cblxuLy8vXG4vLy8gR2V0IGRpbWVuc2lvbiBwcmVmaXggYmFzZWQgb24gYW4gb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvclxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGBtaW5gIG9yIGBtYXhgXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKSB7XG4gIEByZXR1cm4gaWYoaW5kZXgoKCc8JywgJzw9JywgJ+KJpCcpLCAkb3BlcmF0b3IpLCAnbWF4JywgJ21pbicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCB2YWx1ZSBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3QgdmFsdWUgZnJvbVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvciBmcm9tIGAkZXhwcmVzc2lvbmBcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBBIG51bWVyaWMgdmFsdWVcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXZhbHVlKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcbiAgJG9wZXJhdG9yLWluZGV4OiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG4gICR2YWx1ZTogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAkb3BlcmF0b3ItaW5kZXggKyBzdHItbGVuZ3RoKCRvcGVyYXRvcikpO1xuXG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgICR2YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSk7XG4gIH0gQGVsc2Uge1xuICAgICR2YWx1ZTogdG8tbnVtYmVyKCR2YWx1ZSk7XG4gIH1cblxuICAkaW50ZXJ2YWw6IG1hcC1nZXQoJHVuaXQtaW50ZXJ2YWxzLCB1bml0KCR2YWx1ZSkpO1xuXG4gIEBpZiBub3QgJGludGVydmFsIHtcbiAgICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXG4gICAgLy8gcmVseSBvbiB0aGUgYGltLWxvZyguLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBgbG9nKC4uKWAgbWl4aW4uIEJlY2F1c2VcbiAgICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxuICAgIC8vIFNhc3MgMy4zLCBjaGFuZ2UgdGhpcyBsaW5lIGluIGBAaWYgaW0tbG9nKC4uKSB7fWAgaW5zdGVhZC5cbiAgICAkXzogaW0tbG9nKCdVbmtub3duIHVuaXQgYCN7dW5pdCgkdmFsdWUpfWAuJyk7XG4gIH1cblxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgKyAkaW50ZXJ2YWw7XG4gIH0gQGVsc2UgaWYgJG9wZXJhdG9yID09ICc8JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgLSAkaW50ZXJ2YWw7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuXG4vLy9cbi8vLyBQYXJzZSBhbiBleHByZXNzaW9uIHRvIHJldHVybiBhIHZhbGlkIG1lZGlhLXF1ZXJ5IGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gcGFyc2Vcbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBWYWxpZCBtZWRpYSBxdWVyeVxuLy8vXG5AZnVuY3Rpb24gcGFyc2UtZXhwcmVzc2lvbigkZXhwcmVzc2lvbikge1xuICAvLyBJZiBpdCBpcyBwYXJ0IG9mICRtZWRpYS1leHByZXNzaW9ucywgaXQgaGFzIG5vIG9wZXJhdG9yXG4gIC8vIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byBnbyBhbnkgZnVydGhlciwganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gIEBpZiBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRleHByZXNzaW9uKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pO1xuICB9XG5cbiAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkZXhwcmVzc2lvbik7XG4gICRkaW1lbnNpb246IGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XG4gICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG5cbiAgQHJldHVybiAnKCN7JHByZWZpeH0tI3skZGltZW5zaW9ufTogI3skdmFsdWV9KSc7XG59XG5cbi8vL1xuLy8vIFNsaWNlIGAkbGlzdGAgYmV0d2VlbiBgJHN0YXJ0YCBhbmQgYCRlbmRgIGluZGV4ZXNcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc2xpY2Vcbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0YXJ0IFsxXSAtIFN0YXJ0IGluZGV4XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbmQgW2xlbmd0aCgkbGlzdCldIC0gRW5kIGluZGV4XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fSBTbGljZWQgbGlzdFxuLy8vXG5AZnVuY3Rpb24gc2xpY2UoJGxpc3QsICRzdGFydDogMSwgJGVuZDogbGVuZ3RoKCRsaXN0KSkge1xuICBAaWYgbGVuZ3RoKCRsaXN0KSA8IDEgb3IgJHN0YXJ0ID4gJGVuZCB7XG4gICAgQHJldHVybiAoKTtcbiAgfVxuXG4gICRyZXN1bHQ6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgdGhyb3VnaCAkZW5kIHtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgbnRoKCRsaXN0LCAkaSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vLy8vXG4vLy8gU3RyaW5nIHRvIG51bWJlciBjb252ZXJ0ZXJcbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gQ2FzdHMgYSBzdHJpbmcgaW50byBhIG51bWJlclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGJlIHBhcnNlZFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfVxuLy8vXG5AZnVuY3Rpb24gdG8tbnVtYmVyKCR2YWx1ZSkge1xuICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ3N0cmluZycge1xuICAgICRfOiBpbS1sb2coJ1ZhbHVlIGZvciBgdG8tbnVtYmVyYCBzaG91bGQgYmUgYSBudW1iZXIgb3IgYSBzdHJpbmcuJyk7XG4gIH1cblxuICAkZmlyc3QtY2hhcmFjdGVyOiBzdHItc2xpY2UoJHZhbHVlLCAxLCAxKTtcbiAgJHJlc3VsdDogMDtcbiAgJGRpZ2l0czogMDtcbiAgJG1pbnVzOiAoJGZpcnN0LWNoYXJhY3RlciA9PSAnLScpO1xuICAkbnVtYmVyczogKCcwJzogMCwgJzEnOiAxLCAnMic6IDIsICczJzogMywgJzQnOiA0LCAnNSc6IDUsICc2JzogNiwgJzcnOiA3LCAnOCc6IDgsICc5JzogOSk7XG5cbiAgLy8gUmVtb3ZlICsvLSBzaWduIGlmIHByZXNlbnQgYXQgZmlyc3QgY2hhcmFjdGVyXG4gIEBpZiAoJGZpcnN0LWNoYXJhY3RlciA9PSAnKycgb3IgJGZpcnN0LWNoYXJhY3RlciA9PSAnLScpIHtcbiAgICAkdmFsdWU6IHN0ci1zbGljZSgkdmFsdWUsIDIpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHItbGVuZ3RoKCR2YWx1ZSkge1xuICAgICRjaGFyYWN0ZXI6IHN0ci1zbGljZSgkdmFsdWUsICRpLCAkaSk7XG5cbiAgICBAaWYgbm90IChpbmRleChtYXAta2V5cygkbnVtYmVycyksICRjaGFyYWN0ZXIpIG9yICRjaGFyYWN0ZXIgPT0gJy4nKSB7XG4gICAgICBAcmV0dXJuIHRvLWxlbmd0aChpZigkbWludXMsIC0kcmVzdWx0LCAkcmVzdWx0KSwgc3RyLXNsaWNlKCR2YWx1ZSwgJGkpKVxuICAgIH1cblxuICAgIEBpZiAkY2hhcmFjdGVyID09ICcuJyB7XG4gICAgICAkZGlnaXRzOiAxO1xuICAgIH0gQGVsc2UgaWYgJGRpZ2l0cyA9PSAwIHtcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMCArIG1hcC1nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGRpZ2l0czogJGRpZ2l0cyAqIDEwO1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCArIG1hcC1nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpIC8gJGRpZ2l0cztcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpO1xufVxuXG5cbi8vL1xuLy8vIEFkZCBgJHVuaXRgIHRvIGAkdmFsdWVgXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYWRkIHVuaXQgdG9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHVuaXQgLSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHVuaXRcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBgJHZhbHVlYCBleHByZXNzZWQgaW4gYCR1bml0YFxuLy8vXG5AZnVuY3Rpb24gdG8tbGVuZ3RoKCR2YWx1ZSwgJHVuaXQpIHtcbiAgJHVuaXRzOiAoJ3B4JzogMXB4LCAnY20nOiAxY20sICdtbSc6IDFtbSwgJyUnOiAxJSwgJ2NoJzogMWNoLCAncGMnOiAxcGMsICdpbic6IDFpbiwgJ2VtJzogMWVtLCAncmVtJzogMXJlbSwgJ3B0JzogMXB0LCAnZXgnOiAxZXgsICd2dyc6IDF2dywgJ3ZoJzogMXZoLCAndm1pbic6IDF2bWluLCAndm1heCc6IDF2bWF4KTtcblxuICBAaWYgbm90IGluZGV4KG1hcC1rZXlzKCR1bml0cyksICR1bml0KSB7XG4gICAgJF86IGltLWxvZygnSW52YWxpZCB1bml0IGAjeyR1bml0fWAuJyk7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZSAqIG1hcC1nZXQoJHVuaXRzLCAkdW5pdCk7XG59XG5cbi8vL1xuLy8vIFRoaXMgbWl4aW4gYWltcyBhdCByZWRlZmluaW5nIHRoZSBjb25maWd1cmF0aW9uIGp1c3QgZm9yIHRoZSBzY29wZSBvZlxuLy8vIHRoZSBjYWxsLiBJdCBpcyBoZWxwZnVsIHdoZW4gaGF2aW5nIGEgY29tcG9uZW50IG5lZWRpbmcgYW4gZXh0ZW5kZWRcbi8vLyBjb25maWd1cmF0aW9uIHN1Y2ggYXMgY3VzdG9tIGJyZWFrcG9pbnRzIChyZWZlcnJlZCB0byBhcyB0d2Vha3BvaW50cylcbi8vLyBmb3IgaW5zdGFuY2UuXG4vLy9cbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrcG9pbnRzIFsoKV0gLSBNYXAgb2YgdHdlYWtwb2ludHMgdG8gYmUgbWVyZ2VkIHdpdGggYCRicmVha3BvaW50c2Bcbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zIFsoKV0gLSBNYXAgb2YgdHdlYWtlZCBtZWRpYSBleHByZXNzaW9ucyB0byBiZSBtZXJnZWQgd2l0aCBgJG1lZGlhLWV4cHJlc3Npb25gXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgYnJlYWtwb2ludHMgd2l0aCBhIHR3ZWFrcG9pbnRcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PWN1c3RvbScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBtZWRpYSBleHByZXNzaW9ucyB3aXRoIGEgY3VzdG9tIG9uZVxuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCBib3RoIGNvbmZpZ3VyYXRpb24gbWFwc1xuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCgnY3VzdG9tJzogNjc4cHgpLCAoJ2FsbCc6ICdhbGwnKSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbkBtaXhpbiBtZWRpYS1jb250ZXh0KCR0d2Vha3BvaW50czogKCksICR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCkpIHtcbiAgLy8gU2F2ZSBnbG9iYWwgY29uZmlndXJhdGlvblxuICAkZ2xvYmFsLWJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHM7XG4gICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnM6ICRtZWRpYS1leHByZXNzaW9ucztcblxuICAvLyBVcGRhdGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkdHdlYWtwb2ludHMpICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogbWFwLW1lcmdlKCRtZWRpYS1leHByZXNzaW9ucywgJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zKSAhZ2xvYmFsO1xuXG4gIEBjb250ZW50O1xuXG4gIC8vIFJlc3RvcmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiAkZ2xvYmFsLWJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogJGdsb2JhbC1tZWRpYS1leHByZXNzaW9ucyAhZ2xvYmFsO1xufVxuXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBwdWJsaWMgZXhwb3NlZCBBUElcbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLy9cblxuXG4vLy9cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBiYXNlZCBvbiBhIGxpc3Qgb2YgY29uZGl0aW9uc1xuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAgICRjb25kaXRpb25zICAtIE1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGEgc2luZ2xlIHNldCBicmVha3BvaW50XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIHR3byBzZXQgYnJlYWtwb2ludHNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PXRhYmxldCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggY3VzdG9tIHZhbHVlc1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNThweCcsICc8ODUwcHgnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIHNldCBicmVha3BvaW50cyB3aXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5kZXNrdG9wJywgJzw9MTM1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHN0YXRpYyBleHByZXNzaW9uXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCdyZXRpbmEyeCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIE1peGluZyBldmVyeXRoaW5nXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PTM1MHB4JywgJzx0YWJsZXQnLCAncmV0aW5hM3gnKSB7IH1cbi8vL1xuQG1peGluIG1lZGlhKCRjb25kaXRpb25zLi4uKSB7XG4gIEBpZiAoJGltLW1lZGlhLXN1cHBvcnQgYW5kIGxlbmd0aCgkY29uZGl0aW9ucykgPT0gMCkgb3JcbiAgICAgIChub3QgJGltLW1lZGlhLXN1cHBvcnQgYW5kIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2UgaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID4gMCkge1xuICAgIEBtZWRpYSAje3VucXVvdGUocGFyc2UtZXhwcmVzc2lvbihudGgoJGNvbmRpdGlvbnMsIDEpKSl9IHtcbiAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgICBAaW5jbHVkZSBtZWRpYShzbGljZSgkY29uZGl0aW9ucywgMikuLi4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7QUNHQTtBQ0hBOztBRE1BO0FFTkE7OztBRlVBO0FDQUE7QUFnQkE7O0FEWkE7QUNkQTs7QURpQkE7QUVqQkE7OztBRnFCQTtBQ1hBO0FBZ0JBOztBRERBO0FDekJBOztBRDRCQTtBRTVCQTs7O0FGZ0NBO0FDdEJBO0FBZ0JBOztBRFVBO0FHcENBOzs7Ozs7Ozs7O0FIK0NBO0FJL0NBOzs7Ozs7Ozs7Ozs7QUo0REE7QUU1REE7OztBRmdFQTtBS2hFQTs7Ozs7Ozs7QUx5RUE7QU16RUE7QUFTQTtBUGlHQTtBQUdBO0FBRUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUtyR0E7QUFDQTtBQUNBO0FMMkdBO0FBQ0E7QUlwRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBSmlFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FRMUtBO0FBSUE7QVJrS0E7QVFqS0E7QUFVQTtBUnVKQTtBUXRKQTtBUmdLQTtBQUNBO0FRakxBO0FBSUE7QVI0S0E7QVEzS0E7QUFVQTtBUmlLQTtBUWhLQTtBUndLQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FRbE1BO0FBSUE7QVJ5TEE7QVF4TEE7QUFVQTtBUjhLQTtBUTdLQTtBUndMQTtBQUNBO0FRek1BO0FBSUE7QVJvTUE7QVFuTUE7QUFVQTtBUnlMQTtBUXhMQTtBUmdNQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBUXpOQTtBQUlBO0FSaU5BO0FRaE5BO0FBVUE7QVJzTUE7QVFyTUE7QVIrTUE7QUFDQTtBUWhPQTtBQUlBO0FSMk5BO0FRMU5BO0FBVUE7QVJnTkE7QVEvTUE7QVJ1TkE7QUFDQTtBQUtBO0FTMUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FUMEpBO0FVclBBO0FWcVBBO0FVOU9BO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QVZ1T0E7QVU3TkE7QUFDQTtBQUNBO0FBSUE7QVZ1TkE7QVVqTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FWNExBO0FVcExBO0FWb0xBO0FTbkZBO0FBQ0E7QUFDQTtBVGlGQTtBUzNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FUaUVBO0FTOURBO0FBQ0E7QVQ2REE7QVNSQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QVRBQTtBU0dBO0FBQ0E7QVRKQTtBU3FEQTtBQUNBO0FUaERBO0FTMERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFjQTtBVDFFQTtBU2tJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBZUE7QUFDQTtBVGpKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FJOVFBO0FKMFFBO0FJdlFBO0FBQ0E7QUFDQTtBQUNBO0FKb1FBO0FJaFFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QU80Z0JBO0FYbFJBO0FBY0E7QUFHQTtBQUNBO0FXZ1FBO0FYbFJBO0FBY0E7QUFHQTtBQUNBO0FXZ1FBO0FYbFJBO0FBY0E7QUFHQTtBQUNBO0FXZ1FBO0FYbFJBO0FBY0E7QUFHQTtBQUNBO0FXZ1FBO0FYbFJBO0FBY0E7QUFHQTtBQUNBO0FXZ1FBO0FYbFJBO0FBY0E7QUFHQTtBQUNBO0FXZ1FBO0FYbFJBO0FBY0E7QUFHQTtBQUNBO0FBTUE7QUk3T0E7QU91ZUE7QVgxUEE7QUFTQTtBQU1BO0FBRUE7QUFGQTtBSTVQQTtBT3VlQTtBWDNPQTtBQWVBO0FBTUE7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FXNk1BO0FYOU1BO0FBS0E7QUFJQTtBQUNBO0FXb01BO0FYL0xBO0FBTUE7QUFOQTtBQVVBO0FXcUxBO0FYL0xBO0FBTUE7QUFOQTtBQVVBO0FXcUxBO0FYL0xBO0FBTUE7QUFOQTtBQVVBO0FXcUxBO0FYL0xBO0FBTUE7QUFOQTtBQVVBO0FXcUxBO0FYL0xBO0FBTUE7QUFOQTtBQVVBO0FXcUxBO0FYL0xBO0FBTUE7QUFOQTtBQVVBO0FXcUxBO0FYL0xBO0FBTUE7QUFOQTtBQVVBO0FBOVFBO0FBMFJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaFNBO0FBcVNBO0FBclNBO0FBd1NBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBV2tKQTtBWHJKQTtBQU9BO0FXOElBO0FYckpBO0FBT0E7QVc4SUE7QVhySkE7QUFPQTtBVzhJQTtBWHJKQTtBQU9BO0FXOElBO0FYckpBO0FBT0E7QVc4SUE7QVhySkE7QUFPQTtBVzhJQTtBWHJKQTtBQU9BO0FXOElBO0FYdklBO0FBS0E7QVdrSUE7QVh2SUE7QUFLQTtBV2tJQTtBWHZJQTtBQUtBO0FXa0lBO0FYdklBO0FBS0E7QVdrSUE7QVh2SUE7QUFLQTtBV2tJQTtBWHZJQTtBQUtBO0FXa0lBO0FYdklBO0FBS0E7QUFuQkE7QUE0QkE7QUFJQTtBSWpaQTtBSmlaQTtBSTlZQTtBSjhZQTtBSTFZQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FPeWZBO0FYaEdBO0FBQ0E7QUFHQTtBQUNBO0FXMkZBO0FYaEdBO0FBQ0E7QUFHQTtBQUNBO0FXMkZBO0FYaEdBO0FBQ0E7QUFHQTtBQUNBO0FXMkZBO0FYaEdBO0FBQ0E7QUFHQTtBQUNBO0FXMkZBO0FYaEdBO0FBQ0E7QUFHQTtBQUNBO0FXMkZBO0FYaEdBO0FBQ0E7QUFHQTtBQUNBO0FXMkZBO0FYaEdBO0FBQ0E7QUFHQTtBQUNBO0FXMkZBO0FYckZBO0FBTUE7QVcrRUE7QVhyRkE7QUFNQTtBVytFQTtBWHJGQTtBQU1BO0FBTkE7QUFjQTtBV3VFQTtBWHJGQTtBQU1BO0FBTkE7QUFjQTtBV3VFQTtBWHJGQTtBQU1BO0FBTkE7QUFjQTtBV3VFQTtBWHJGQTtBQU1BO0FBTkE7QUFjQTtBV3VFQTtBWHJGQTtBQU1BO0FBTkE7QUFjQTtBQVFBO0FJbGFBO0FKc2FBO0FJdGFBO0FKNFdBO0FBa0VBO0FBQ0E7QVdrREE7QVgvQ0E7QUFHQTtBQUtBO0FBQ0E7QVdzQ0E7QVhsQ0E7QUFRQTtBQVJBO0FBWUE7QUFaQTtBQW1CQTtBV2VBO0FYbENBO0FBUUE7QUFSQTtBQVlBO0FBWkE7QUFtQkE7QVdlQTtBWGxDQTtBQVFBO0FBUkE7QUFZQTtBQVpBO0FBbUJBO0FXZUE7QVhsQ0E7QUFRQTtBQVJBO0FBWUE7QUFaQTtBQW1CQTtBQW5CQTtBQTJCQTtBV09BO0FYbENBO0FBUUE7QUFSQTtBQVlBO0FBWkE7QUFtQkE7QUFuQkE7QUEyQkE7QVdPQTtBWGxDQTtBQVFBO0FBUkE7QUFZQTtBQVpBO0FBbUJBO0FBbkJBO0FBMkJBO0FXT0E7QVhsQ0E7QUFRQTtBQVJBO0FBWUE7QUFaQTtBQW1CQTtBQW5CQTtBQTJCQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzsiLCJzb3VyY2VSb290IjoiIn0=*/</pre></body></html>