/*!***************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./assets/styles/app.scss ***!
  \***************************************************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
.mdc-touch-target-wrapper {
  display: inline;
}

.mdc-elevation-overlay {
  position: absolute;
  border-radius: inherit;
  pointer-events: none;
  opacity: 0;
  /* @alternate */
  opacity: var(--mdc-elevation-overlay-opacity, 0);
  transition: opacity 280ms cubic-bezier(0.4, 0, 0.2, 1);
  background-color: #fff;
  /* @alternate */
  background-color: var(--mdc-elevation-overlay-color, #fff);
}

.mdc-button {
  /* @alternate */
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 64px;
  border: none;
  outline: none;
  /* @alternate */
  line-height: inherit;
  user-select: none;
  -webkit-appearance: none;
  overflow: visible;
  vertical-align: middle;
  background: transparent;
}
.mdc-button .mdc-elevation-overlay {
  width: 100%;
  height: 100%;
  top: 0;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
}
.mdc-button::-moz-focus-inner {
  padding: 0;
  border: 0;
}
.mdc-button:active {
  outline: none;
}
.mdc-button:hover {
  cursor: pointer;
}
.mdc-button:disabled {
  cursor: default;
  pointer-events: none;
}
.mdc-button .mdc-button__icon {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 8px;
  display: inline-block;
  position: relative;
  vertical-align: top;
}
[dir=rtl] .mdc-button .mdc-button__icon, .mdc-button .mdc-button__icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 8px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /*rtl:end:ignore*/
}

.mdc-button .mdc-button__label {
  position: relative;
}
.mdc-button .mdc-button__focus-ring {
  display: none;
}
@media screen and (forced-colors: active) {
  .mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring, .mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring {
    pointer-events: none;
    border: 2px solid transparent;
    border-radius: 6px;
    box-sizing: content-box;
    position: absolute;
    top: 50%;
    /* @noflip */ /*rtl:ignore*/
    left: 50%;
    /* @noflip */ /*rtl:ignore*/
    transform: translate(-50%, -50%);
    height: calc(100% + 4px);
    width: calc(100% + 4px);
    display: block;
  }
}
@media screen and (forced-colors: active) and (forced-colors: active) {
  .mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring, .mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring {
    border-color: CanvasText;
  }
}
@media screen and (forced-colors: active) {
  .mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring::after, .mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring::after {
    content: "";
    border: 2px solid transparent;
    border-radius: 8px;
    display: block;
    position: absolute;
    top: 50%;
    /* @noflip */ /*rtl:ignore*/
    left: 50%;
    /* @noflip */ /*rtl:ignore*/
    transform: translate(-50%, -50%);
    height: calc(100% + 4px);
    width: calc(100% + 4px);
  }
}
@media screen and (forced-colors: active) and (forced-colors: active) {
  .mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring::after, .mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring::after {
    border-color: CanvasText;
  }
}
.mdc-button .mdc-button__touch {
  position: absolute;
  top: 50%;
  height: 48px;
  left: 0;
  right: 0;
  transform: translateY(-50%);
}

.mdc-button__label + .mdc-button__icon {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 8px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
}
[dir=rtl] .mdc-button__label + .mdc-button__icon, .mdc-button__label + .mdc-button__icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 8px;
  /*rtl:end:ignore*/
}

svg.mdc-button__icon {
  fill: currentColor;
}

.mdc-button--touch {
  margin-top: 6px;
  margin-bottom: 6px;
}

.mdc-button {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  text-decoration: none;
  /* @alternate */
  text-decoration: var(--mdc-typography-button-text-decoration, none);
}

.mdc-button {
  padding: 0 8px 0 8px;
}

.mdc-button--unelevated {
  transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
  padding: 0 16px 0 16px;
}
.mdc-button--unelevated.mdc-button--icon-trailing {
  padding: 0 12px 0 16px;
}
.mdc-button--unelevated.mdc-button--icon-leading {
  padding: 0 16px 0 12px;
}

.mdc-button--raised {
  transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
  padding: 0 16px 0 16px;
}
.mdc-button--raised.mdc-button--icon-trailing {
  padding: 0 12px 0 16px;
}
.mdc-button--raised.mdc-button--icon-leading {
  padding: 0 16px 0 12px;
}

.mdc-button--outlined {
  border-style: solid;
  transition: border 280ms cubic-bezier(0.4, 0, 0.2, 1);
}
.mdc-button--outlined .mdc-button__ripple {
  border-style: solid;
  border-color: transparent;
}

@keyframes mdc-ripple-fg-radius-in {
  from {
    animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transform: translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1);
  }
  to {
    transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));
  }
}
@keyframes mdc-ripple-fg-opacity-in {
  from {
    animation-timing-function: linear;
    opacity: 0;
  }
  to {
    opacity: var(--mdc-ripple-fg-opacity, 0);
  }
}
@keyframes mdc-ripple-fg-opacity-out {
  from {
    animation-timing-function: linear;
    opacity: var(--mdc-ripple-fg-opacity, 0);
  }
  to {
    opacity: 0;
  }
}
.mdc-button {
  --mdc-ripple-fg-size: 0;
  --mdc-ripple-left: 0;
  --mdc-ripple-top: 0;
  --mdc-ripple-fg-scale: 1;
  --mdc-ripple-fg-translate-end: 0;
  --mdc-ripple-fg-translate-start: 0;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  will-change: transform, opacity;
}
.mdc-button .mdc-button__ripple::before,
.mdc-button .mdc-button__ripple::after {
  position: absolute;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}
.mdc-button .mdc-button__ripple::before {
  transition: opacity 15ms linear, background-color 15ms linear;
  z-index: 1;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 1);
}
.mdc-button .mdc-button__ripple::after {
  z-index: 0;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 0);
}
.mdc-button.mdc-ripple-upgraded .mdc-button__ripple::before {
  transform: scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-button.mdc-ripple-upgraded .mdc-button__ripple::after {
  top: 0;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
  transform: scale(0);
  transform-origin: center center;
}
.mdc-button.mdc-ripple-upgraded--unbounded .mdc-button__ripple::after {
  top: var(--mdc-ripple-top, 0);
  /* @noflip */ /*rtl:ignore*/
  left: var(--mdc-ripple-left, 0);
}
.mdc-button.mdc-ripple-upgraded--foreground-activation .mdc-button__ripple::after {
  animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;
}
.mdc-button.mdc-ripple-upgraded--foreground-deactivation .mdc-button__ripple::after {
  animation: mdc-ripple-fg-opacity-out 150ms;
  transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-button .mdc-button__ripple::before,
.mdc-button .mdc-button__ripple::after {
  top: calc(50% - 100%);
  /* @noflip */ /*rtl:ignore*/
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
}
.mdc-button.mdc-ripple-upgraded .mdc-button__ripple::after {
  width: var(--mdc-ripple-fg-size, 100%);
  height: var(--mdc-ripple-fg-size, 100%);
}

.mdc-button__ripple {
  position: absolute;
  box-sizing: content-box;
  overflow: hidden;
  z-index: 0;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
}

.mdc-button {
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-text-button-label-text-font, var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif)));
  font-size: 0.875rem;
  /* @alternate */
  font-size: var(--mdc-text-button-label-text-size, var(--mdc-typography-button-font-size, 0.875rem));
  letter-spacing: 0.0892857143em;
  /* @alternate */
  letter-spacing: var(--mdc-text-button-label-text-tracking, var(--mdc-typography-button-letter-spacing, 0.0892857143em));
  font-weight: 500;
  /* @alternate */
  font-weight: var(--mdc-text-button-label-text-weight, var(--mdc-typography-button-font-weight, 500));
  text-transform: uppercase;
  /* @alternate */
  text-transform: var(--mdc-text-button-label-text-transform, var(--mdc-typography-button-text-transform, uppercase));
  height: 36px;
  /* @alternate */
  height: var(--mdc-text-button-container-height, 36px);
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px));
}
.mdc-button:not(:disabled) {
  color: #146093;
  /* @alternate */
  color: var(--mdc-text-button-label-text-color, var(--mdc-theme-primary, #146093));
}
.mdc-button:disabled {
  color: rgba(0, 0, 0, 0.38);
  /* @alternate */
  color: var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38));
}
.mdc-button .mdc-button__icon {
  font-size: 1.125rem;
  /* @alternate */
  font-size: var(--mdc-text-button-with-icon-icon-size, 1.125rem);
  width: 1.125rem;
  /* @alternate */
  width: var(--mdc-text-button-with-icon-icon-size, 1.125rem);
  height: 1.125rem;
  /* @alternate */
  height: var(--mdc-text-button-with-icon-icon-size, 1.125rem);
}
.mdc-button .mdc-button__ripple::before,
.mdc-button .mdc-button__ripple::after {
  background-color: #146093;
  /* @alternate */
  background-color: var(--mdc-text-button-hover-state-layer-color, var(--mdc-theme-primary, #146093));
}
.mdc-button:hover .mdc-button__ripple::before, .mdc-button.mdc-ripple-surface--hover .mdc-button__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-text-button-hover-state-layer-opacity, 0.04);
}
.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__ripple::before, .mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-text-button-focus-state-layer-opacity, 0.12);
}
.mdc-button:not(.mdc-ripple-upgraded) .mdc-button__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-button:not(.mdc-ripple-upgraded):active .mdc-button__ripple::after {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-text-button-pressed-state-layer-opacity, 0.12);
}
.mdc-button.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-text-button-pressed-state-layer-opacity, 0.12);
}
.mdc-button .mdc-button__ripple {
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px));
}

.mdc-button--unelevated {
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-filled-button-label-text-font, var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif)));
  font-size: 0.875rem;
  /* @alternate */
  font-size: var(--mdc-filled-button-label-text-size, var(--mdc-typography-button-font-size, 0.875rem));
  letter-spacing: 0.0892857143em;
  /* @alternate */
  letter-spacing: var(--mdc-filled-button-label-text-tracking, var(--mdc-typography-button-letter-spacing, 0.0892857143em));
  font-weight: 500;
  /* @alternate */
  font-weight: var(--mdc-filled-button-label-text-weight, var(--mdc-typography-button-font-weight, 500));
  text-transform: uppercase;
  /* @alternate */
  text-transform: var(--mdc-filled-button-label-text-transform, var(--mdc-typography-button-text-transform, uppercase));
  height: 36px;
  /* @alternate */
  height: var(--mdc-filled-button-container-height, 36px);
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px));
}
.mdc-button--unelevated:not(:disabled) {
  background-color: #146093;
  /* @alternate */
  background-color: var(--mdc-filled-button-container-color, var(--mdc-theme-primary, #146093));
}
.mdc-button--unelevated:disabled {
  background-color: rgba(0, 0, 0, 0.12);
  /* @alternate */
  background-color: var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12));
}
.mdc-button--unelevated:not(:disabled) {
  color: #fff;
  /* @alternate */
  color: var(--mdc-filled-button-label-text-color, var(--mdc-theme-on-primary, #fff));
}
.mdc-button--unelevated:disabled {
  color: rgba(0, 0, 0, 0.38);
  /* @alternate */
  color: var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38));
}
.mdc-button--unelevated .mdc-button__icon {
  font-size: 1.125rem;
  /* @alternate */
  font-size: var(--mdc-filled-button-with-icon-icon-size, 1.125rem);
  width: 1.125rem;
  /* @alternate */
  width: var(--mdc-filled-button-with-icon-icon-size, 1.125rem);
  height: 1.125rem;
  /* @alternate */
  height: var(--mdc-filled-button-with-icon-icon-size, 1.125rem);
}
.mdc-button--unelevated .mdc-button__ripple::before,
.mdc-button--unelevated .mdc-button__ripple::after {
  background-color: #fff;
  /* @alternate */
  background-color: var(--mdc-filled-button-hover-state-layer-color, var(--mdc-theme-on-primary, #fff));
}
.mdc-button--unelevated:hover .mdc-button__ripple::before, .mdc-button--unelevated.mdc-ripple-surface--hover .mdc-button__ripple::before {
  opacity: 0.08;
  /* @alternate */
  opacity: var(--mdc-filled-button-hover-state-layer-opacity, 0.08);
}
.mdc-button--unelevated.mdc-ripple-upgraded--background-focused .mdc-button__ripple::before, .mdc-button--unelevated:not(.mdc-ripple-upgraded):focus .mdc-button__ripple::before {
  transition-duration: 75ms;
  opacity: 0.24;
  /* @alternate */
  opacity: var(--mdc-filled-button-focus-state-layer-opacity, 0.24);
}
.mdc-button--unelevated:not(.mdc-ripple-upgraded) .mdc-button__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-button--unelevated:not(.mdc-ripple-upgraded):active .mdc-button__ripple::after {
  transition-duration: 75ms;
  opacity: 0.24;
  /* @alternate */
  opacity: var(--mdc-filled-button-pressed-state-layer-opacity, 0.24);
}
.mdc-button--unelevated.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-filled-button-pressed-state-layer-opacity, 0.24);
}
.mdc-button--unelevated .mdc-button__ripple {
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px));
}

.mdc-button--raised {
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-protected-button-label-text-font, var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif)));
  font-size: 0.875rem;
  /* @alternate */
  font-size: var(--mdc-protected-button-label-text-size, var(--mdc-typography-button-font-size, 0.875rem));
  letter-spacing: 0.0892857143em;
  /* @alternate */
  letter-spacing: var(--mdc-protected-button-label-text-tracking, var(--mdc-typography-button-letter-spacing, 0.0892857143em));
  font-weight: 500;
  /* @alternate */
  font-weight: var(--mdc-protected-button-label-text-weight, var(--mdc-typography-button-font-weight, 500));
  text-transform: uppercase;
  /* @alternate */
  text-transform: var(--mdc-protected-button-label-text-transform, var(--mdc-typography-button-text-transform, uppercase));
  height: 36px;
  /* @alternate */
  height: var(--mdc-protected-button-container-height, 36px);
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));
  --mdc-elevation-box-shadow-for-gss: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  /* @alternate */
  box-shadow: var(--mdc-protected-button-container-elevation, var(--mdc-elevation-box-shadow-for-gss));
}
.mdc-button--raised:not(:disabled) {
  background-color: #146093;
  /* @alternate */
  background-color: var(--mdc-protected-button-container-color, var(--mdc-theme-primary, #146093));
}
.mdc-button--raised:disabled {
  background-color: rgba(0, 0, 0, 0.12);
  /* @alternate */
  background-color: var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12));
}
.mdc-button--raised:not(:disabled) {
  color: #fff;
  /* @alternate */
  color: var(--mdc-protected-button-label-text-color, var(--mdc-theme-on-primary, #fff));
}
.mdc-button--raised:disabled {
  color: rgba(0, 0, 0, 0.38);
  /* @alternate */
  color: var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38));
}
.mdc-button--raised .mdc-button__icon {
  font-size: 1.125rem;
  /* @alternate */
  font-size: var(--mdc-protected-button-with-icon-icon-size, 1.125rem);
  width: 1.125rem;
  /* @alternate */
  width: var(--mdc-protected-button-with-icon-icon-size, 1.125rem);
  height: 1.125rem;
  /* @alternate */
  height: var(--mdc-protected-button-with-icon-icon-size, 1.125rem);
}
.mdc-button--raised .mdc-button__ripple::before,
.mdc-button--raised .mdc-button__ripple::after {
  background-color: #fff;
  /* @alternate */
  background-color: var(--mdc-protected-button-hover-state-layer-color, var(--mdc-theme-on-primary, #fff));
}
.mdc-button--raised:hover .mdc-button__ripple::before, .mdc-button--raised.mdc-ripple-surface--hover .mdc-button__ripple::before {
  opacity: 0.08;
  /* @alternate */
  opacity: var(--mdc-protected-button-hover-state-layer-opacity, 0.08);
}
.mdc-button--raised.mdc-ripple-upgraded--background-focused .mdc-button__ripple::before, .mdc-button--raised:not(.mdc-ripple-upgraded):focus .mdc-button__ripple::before {
  transition-duration: 75ms;
  opacity: 0.24;
  /* @alternate */
  opacity: var(--mdc-protected-button-focus-state-layer-opacity, 0.24);
}
.mdc-button--raised:not(.mdc-ripple-upgraded) .mdc-button__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-button--raised:not(.mdc-ripple-upgraded):active .mdc-button__ripple::after {
  transition-duration: 75ms;
  opacity: 0.24;
  /* @alternate */
  opacity: var(--mdc-protected-button-pressed-state-layer-opacity, 0.24);
}
.mdc-button--raised.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-protected-button-pressed-state-layer-opacity, 0.24);
}
.mdc-button--raised .mdc-button__ripple {
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));
}
.mdc-button--raised.mdc-ripple-upgraded--background-focused, .mdc-button--raised:not(.mdc-ripple-upgraded):focus {
  --mdc-elevation-box-shadow-for-gss: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
  /* @alternate */
  box-shadow: var(--mdc-protected-button-focus-container-elevation, var(--mdc-elevation-box-shadow-for-gss));
}
.mdc-button--raised:hover {
  --mdc-elevation-box-shadow-for-gss: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
  /* @alternate */
  box-shadow: var(--mdc-protected-button-hover-container-elevation, var(--mdc-elevation-box-shadow-for-gss));
}
.mdc-button--raised:not(:disabled):active {
  --mdc-elevation-box-shadow-for-gss: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
  /* @alternate */
  box-shadow: var(--mdc-protected-button-pressed-container-elevation, var(--mdc-elevation-box-shadow-for-gss));
}
.mdc-button--raised:disabled {
  --mdc-elevation-box-shadow-for-gss: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
  /* @alternate */
  box-shadow: var(--mdc-protected-button-disabled-container-elevation, var(--mdc-elevation-box-shadow-for-gss));
}
.mdc-button--outlined {
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-outlined-button-label-text-font, var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif)));
  font-size: 0.875rem;
  /* @alternate */
  font-size: var(--mdc-outlined-button-label-text-size, var(--mdc-typography-button-font-size, 0.875rem));
  letter-spacing: 0.0892857143em;
  /* @alternate */
  letter-spacing: var(--mdc-outlined-button-label-text-tracking, var(--mdc-typography-button-letter-spacing, 0.0892857143em));
  font-weight: 500;
  /* @alternate */
  font-weight: var(--mdc-outlined-button-label-text-weight, var(--mdc-typography-button-font-weight, 500));
  text-transform: uppercase;
  /* @alternate */
  text-transform: var(--mdc-outlined-button-label-text-transform, var(--mdc-typography-button-text-transform, uppercase));
  height: 36px;
  /* @alternate */
  height: var(--mdc-outlined-button-container-height, 36px);
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));
  padding: 0 15px 0 15px;
  border-width: 1px;
  /* @alternate */
  border-width: var(--mdc-outlined-button-outline-width, 1px);
}
.mdc-button--outlined:not(:disabled) {
  color: #146093;
  /* @alternate */
  color: var(--mdc-outlined-button-label-text-color, var(--mdc-theme-primary, #146093));
}
.mdc-button--outlined:disabled {
  color: rgba(0, 0, 0, 0.38);
  /* @alternate */
  color: var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38));
}
.mdc-button--outlined .mdc-button__icon {
  font-size: 1.125rem;
  /* @alternate */
  font-size: var(--mdc-outlined-button-with-icon-icon-size, 1.125rem);
  width: 1.125rem;
  /* @alternate */
  width: var(--mdc-outlined-button-with-icon-icon-size, 1.125rem);
  height: 1.125rem;
  /* @alternate */
  height: var(--mdc-outlined-button-with-icon-icon-size, 1.125rem);
}
.mdc-button--outlined .mdc-button__ripple::before,
.mdc-button--outlined .mdc-button__ripple::after {
  background-color: #146093;
  /* @alternate */
  background-color: var(--mdc-outlined-button-hover-state-layer-color, var(--mdc-theme-primary, #146093));
}
.mdc-button--outlined:hover .mdc-button__ripple::before, .mdc-button--outlined.mdc-ripple-surface--hover .mdc-button__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-outlined-button-hover-state-layer-opacity, 0.04);
}
.mdc-button--outlined.mdc-ripple-upgraded--background-focused .mdc-button__ripple::before, .mdc-button--outlined:not(.mdc-ripple-upgraded):focus .mdc-button__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-outlined-button-focus-state-layer-opacity, 0.12);
}
.mdc-button--outlined:not(.mdc-ripple-upgraded) .mdc-button__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-button--outlined:not(.mdc-ripple-upgraded):active .mdc-button__ripple::after {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-outlined-button-pressed-state-layer-opacity, 0.12);
}
.mdc-button--outlined.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-outlined-button-pressed-state-layer-opacity, 0.12);
}
.mdc-button--outlined .mdc-button__ripple {
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));
}
.mdc-button--outlined:not(:disabled) {
  border-color: rgba(0, 0, 0, 0.12);
  /* @alternate */
  border-color: var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12));
}
.mdc-button--outlined:disabled {
  border-color: rgba(0, 0, 0, 0.12);
  /* @alternate */
  border-color: var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12));
}
.mdc-button--outlined.mdc-button--icon-trailing {
  padding: 0 11px 0 15px;
}
.mdc-button--outlined.mdc-button--icon-leading {
  padding: 0 15px 0 11px;
}
.mdc-button--outlined .mdc-button__ripple {
  top: -1px;
  left: -1px;
  bottom: -1px;
  right: -1px;
  border-width: 1px;
  /* @alternate */
  border-width: var(--mdc-outlined-button-outline-width, 1px);
}
.mdc-button--outlined .mdc-button__touch {
  left: calc(-1 * 1px);
  /* @alternate */
  left: calc(-1 * var(--mdc-outlined-button-outline-width, 1px));
  width: calc(100% + 2 * 1px);
  /* @alternate */
  width: calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px));
}

.mdc-button--raised .mdc-button__icon,
.mdc-button--unelevated .mdc-button__icon,
.mdc-button--outlined .mdc-button__icon {
  /* @noflip */ /*rtl:ignore*/
  margin-left: -4px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 8px;
}
[dir=rtl] .mdc-button--raised .mdc-button__icon, [dir=rtl] .mdc-button--unelevated .mdc-button__icon, [dir=rtl] .mdc-button--outlined .mdc-button__icon, .mdc-button--raised .mdc-button__icon[dir=rtl], .mdc-button--unelevated .mdc-button__icon[dir=rtl], .mdc-button--outlined .mdc-button__icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 8px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: -4px;
  /*rtl:end:ignore*/
}

.mdc-button--raised .mdc-button__label + .mdc-button__icon,
.mdc-button--unelevated .mdc-button__label + .mdc-button__icon,
.mdc-button--outlined .mdc-button__label + .mdc-button__icon {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 8px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: -4px;
}
[dir=rtl] .mdc-button--raised .mdc-button__label + .mdc-button__icon, [dir=rtl] .mdc-button--unelevated .mdc-button__label + .mdc-button__icon, [dir=rtl] .mdc-button--outlined .mdc-button__label + .mdc-button__icon, .mdc-button--raised .mdc-button__label + .mdc-button__icon[dir=rtl], .mdc-button--unelevated .mdc-button__label + .mdc-button__icon[dir=rtl], .mdc-button--outlined .mdc-button__label + .mdc-button__icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: -4px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 8px;
  /*rtl:end:ignore*/
}

.mdc-floating-label {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 1rem;
  /* @alternate */
  font-size: var(--mdc-typography-subtitle1-font-size, 1rem);
  font-weight: 400;
  /* @alternate */
  font-weight: var(--mdc-typography-subtitle1-font-weight, 400);
  letter-spacing: 0.009375em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-subtitle1-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-subtitle1-text-transform, inherit);
  position: absolute;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
  /* @noflip */ /*rtl:ignore*/
  -webkit-transform-origin: left top;
  /* @noflip */ /*rtl:ignore*/
  transform-origin: left top;
  line-height: 1.15rem;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: text;
  overflow: hidden;
  /* @alternate */
  will-change: transform;
  transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1), color 150ms cubic-bezier(0.4, 0, 0.2, 1);
}
[dir=rtl] .mdc-floating-label, .mdc-floating-label[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  right: 0;
  /* @noflip */ /*rtl:ignore*/
  left: auto;
  /* @noflip */ /*rtl:ignore*/
  -webkit-transform-origin: right top;
  /* @noflip */ /*rtl:ignore*/
  transform-origin: right top;
  /* @noflip */ /*rtl:ignore*/
  text-align: right;
  /*rtl:end:ignore*/
}

.mdc-floating-label--float-above {
  cursor: auto;
}

.mdc-floating-label--required::after {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 1px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0px;
  content: "*";
}
[dir=rtl] .mdc-floating-label--required, .mdc-floating-label--required[dir=rtl] {
  /*rtl:begin:ignore*/
  /*rtl:end:ignore*/
}
[dir=rtl] .mdc-floating-label--required::after, .mdc-floating-label--required[dir=rtl]::after {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 1px;
}

.mdc-floating-label--float-above {
  transform: translateY(-106%) scale(0.75);
}

.mdc-floating-label--shake {
  animation: mdc-floating-label-shake-float-above-standard 250ms 1;
}

@keyframes mdc-floating-label-shake-float-above-standard {
  0% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-106%) scale(0.75);
  }
  33% {
    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(4% - 0%)) translateY(-106%) scale(0.75);
  }
  66% {
    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75);
  }
  100% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-106%) scale(0.75);
  }
}
.mdc-notched-outline {
  display: flex;
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  height: 100%;
  /* @noflip */ /*rtl:ignore*/
  text-align: left;
  pointer-events: none;
}
[dir=rtl] .mdc-notched-outline, .mdc-notched-outline[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  text-align: right;
  /*rtl:end:ignore*/
}

.mdc-notched-outline__leading, .mdc-notched-outline__notch, .mdc-notched-outline__trailing {
  box-sizing: border-box;
  height: 100%;
  border-top: 1px solid;
  border-bottom: 1px solid;
  pointer-events: none;
}
.mdc-notched-outline__leading {
  /* @noflip */ /*rtl:ignore*/
  border-left: 1px solid;
  /* @noflip */ /*rtl:ignore*/
  border-right: none;
  width: 12px;
}
[dir=rtl] .mdc-notched-outline__leading, .mdc-notched-outline__leading[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  border-left: none;
  /* @noflip */ /*rtl:ignore*/
  border-right: 1px solid;
  /*rtl:end:ignore*/
}

.mdc-notched-outline__trailing {
  /* @noflip */ /*rtl:ignore*/
  border-left: none;
  /* @noflip */ /*rtl:ignore*/
  border-right: 1px solid;
  flex-grow: 1;
}
[dir=rtl] .mdc-notched-outline__trailing, .mdc-notched-outline__trailing[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  border-left: 1px solid;
  /* @noflip */ /*rtl:ignore*/
  border-right: none;
  /*rtl:end:ignore*/
}

.mdc-notched-outline__notch {
  flex: 0 0 auto;
  width: auto;
  max-width: calc(100% - 12px * 2);
}
.mdc-notched-outline .mdc-floating-label {
  display: inline-block;
  position: relative;
  max-width: 100%;
}
.mdc-notched-outline .mdc-floating-label--float-above {
  text-overflow: clip;
}
.mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  max-width: 133.3333333333%;
}

.mdc-notched-outline--notched .mdc-notched-outline__notch {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 8px;
  border-top: none;
}
[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch, .mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 8px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
  /*rtl:end:ignore*/
}

.mdc-notched-outline--no-label .mdc-notched-outline__notch {
  display: none;
}

.mdc-radio {
  padding: calc((40px - 20px) / 2);
}
.mdc-radio .mdc-radio__native-control:enabled:not(:checked) + .mdc-radio__background .mdc-radio__outer-circle {
  border-color: rgba(0, 0, 0, 0.54);
}
.mdc-radio .mdc-radio__native-control:enabled:checked + .mdc-radio__background .mdc-radio__outer-circle {
  border-color: #ff3d60;
  /* @alternate */
  border-color: var(--mdc-theme-secondary, #ff3d60);
}
.mdc-radio .mdc-radio__native-control:enabled + .mdc-radio__background .mdc-radio__inner-circle {
  border-color: #ff3d60;
  /* @alternate */
  border-color: var(--mdc-theme-secondary, #ff3d60);
}
.mdc-radio [aria-disabled=true] .mdc-radio__native-control:not(:checked) + .mdc-radio__background .mdc-radio__outer-circle,
.mdc-radio .mdc-radio__native-control:disabled:not(:checked) + .mdc-radio__background .mdc-radio__outer-circle {
  border-color: rgba(0, 0, 0, 0.38);
}
.mdc-radio [aria-disabled=true] .mdc-radio__native-control:checked + .mdc-radio__background .mdc-radio__outer-circle,
.mdc-radio .mdc-radio__native-control:disabled:checked + .mdc-radio__background .mdc-radio__outer-circle {
  border-color: rgba(0, 0, 0, 0.38);
}
.mdc-radio [aria-disabled=true] .mdc-radio__native-control + .mdc-radio__background .mdc-radio__inner-circle,
.mdc-radio .mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__inner-circle {
  border-color: rgba(0, 0, 0, 0.38);
}
.mdc-radio .mdc-radio__background::before {
  background-color: #ff3d60;
  /* @alternate */
  background-color: var(--mdc-theme-secondary, #ff3d60);
}
.mdc-radio .mdc-radio__background::before {
  top: calc(-1 * (40px - 20px) / 2);
  left: calc(-1 * (40px - 20px) / 2);
  width: 40px;
  height: 40px;
}
.mdc-radio .mdc-radio__native-control {
  top: calc((40px - 40px) / 2);
  right: calc((40px - 40px) / 2);
  left: calc((40px - 40px) / 2);
  width: 40px;
  height: 40px;
}
@media screen and (forced-colors: active), (-ms-high-contrast: active) {
  .mdc-radio.mdc-radio--disabled [aria-disabled=true] .mdc-radio__native-control:not(:checked) + .mdc-radio__background .mdc-radio__outer-circle,
  .mdc-radio.mdc-radio--disabled .mdc-radio__native-control:disabled:not(:checked) + .mdc-radio__background .mdc-radio__outer-circle {
    border-color: GrayText;
  }
  .mdc-radio.mdc-radio--disabled [aria-disabled=true] .mdc-radio__native-control:checked + .mdc-radio__background .mdc-radio__outer-circle,
  .mdc-radio.mdc-radio--disabled .mdc-radio__native-control:disabled:checked + .mdc-radio__background .mdc-radio__outer-circle {
    border-color: GrayText;
  }
  .mdc-radio.mdc-radio--disabled [aria-disabled=true] .mdc-radio__native-control + .mdc-radio__background .mdc-radio__inner-circle,
  .mdc-radio.mdc-radio--disabled .mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__inner-circle {
    border-color: GrayText;
  }
}

.mdc-radio {
  display: inline-block;
  position: relative;
  flex: 0 0 auto;
  box-sizing: content-box;
  width: 20px;
  height: 20px;
  cursor: pointer;
  /* @alternate */
  will-change: opacity, transform, border-color, color;
}
.mdc-radio__background {
  display: inline-block;
  position: relative;
  box-sizing: border-box;
  width: 20px;
  height: 20px;
}
.mdc-radio__background::before {
  position: absolute;
  transform: scale(0, 0);
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
  transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1), transform 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
}
.mdc-radio__outer-circle {
  position: absolute;
  top: 0;
  left: 0;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  border-width: 2px;
  border-style: solid;
  border-radius: 50%;
  transition: border-color 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
}
.mdc-radio__inner-circle {
  position: absolute;
  top: 0;
  left: 0;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  transform: scale(0, 0);
  border-width: 10px;
  border-style: solid;
  border-radius: 50%;
  transition: transform 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1), border-color 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
}
.mdc-radio__native-control {
  position: absolute;
  margin: 0;
  padding: 0;
  opacity: 0;
  cursor: inherit;
  z-index: 1;
}
.mdc-radio--touch {
  margin-top: 4px;
  margin-bottom: 4px;
  margin-right: 4px;
  margin-left: 4px;
}
.mdc-radio--touch .mdc-radio__native-control {
  top: calc((40px - 48px) / 2);
  right: calc((40px - 48px) / 2);
  left: calc((40px - 48px) / 2);
  width: 48px;
  height: 48px;
}
.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring, .mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__focus-ring {
  pointer-events: none;
  border: 2px solid transparent;
  border-radius: 6px;
  box-sizing: content-box;
  position: absolute;
  top: 50%;
  /* @noflip */ /*rtl:ignore*/
  left: 50%;
  /* @noflip */ /*rtl:ignore*/
  transform: translate(-50%, -50%);
  height: 100%;
  width: 100%;
}
@media screen and (forced-colors: active) {
  .mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring, .mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__focus-ring {
    border-color: CanvasText;
  }
}
.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring::after, .mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__focus-ring::after {
  content: "";
  border: 2px solid transparent;
  border-radius: 8px;
  display: block;
  position: absolute;
  top: 50%;
  /* @noflip */ /*rtl:ignore*/
  left: 50%;
  /* @noflip */ /*rtl:ignore*/
  transform: translate(-50%, -50%);
  height: calc(100% + 4px);
  width: calc(100% + 4px);
}
@media screen and (forced-colors: active) {
  .mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring::after, .mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__focus-ring::after {
    border-color: CanvasText;
  }
}

.mdc-radio__native-control:checked + .mdc-radio__background,
.mdc-radio__native-control:disabled + .mdc-radio__background {
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
}
.mdc-radio__native-control:checked + .mdc-radio__background .mdc-radio__outer-circle,
.mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__outer-circle {
  transition: border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
}
.mdc-radio__native-control:checked + .mdc-radio__background .mdc-radio__inner-circle,
.mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__inner-circle {
  transition: transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-radio--disabled {
  cursor: default;
  pointer-events: none;
}

.mdc-radio__native-control:checked + .mdc-radio__background .mdc-radio__inner-circle {
  transform: scale(0.5);
  transition: transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-radio__native-control:disabled + .mdc-radio__background,
[aria-disabled=true] .mdc-radio__native-control + .mdc-radio__background {
  cursor: default;
}

.mdc-radio__native-control:focus + .mdc-radio__background::before {
  transform: scale(1);
  opacity: 0.12;
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-radio {
  --mdc-ripple-fg-size: 0;
  --mdc-ripple-left: 0;
  --mdc-ripple-top: 0;
  --mdc-ripple-fg-scale: 1;
  --mdc-ripple-fg-translate-end: 0;
  --mdc-ripple-fg-translate-start: 0;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  will-change: transform, opacity;
}
.mdc-radio .mdc-radio__ripple::before,
.mdc-radio .mdc-radio__ripple::after {
  position: absolute;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}
.mdc-radio .mdc-radio__ripple::before {
  transition: opacity 15ms linear, background-color 15ms linear;
  z-index: 1;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 1);
}
.mdc-radio .mdc-radio__ripple::after {
  z-index: 0;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 0);
}
.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::before {
  transform: scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after {
  top: 0;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
  transform: scale(0);
  transform-origin: center center;
}
.mdc-radio.mdc-ripple-upgraded--unbounded .mdc-radio__ripple::after {
  top: var(--mdc-ripple-top, 0);
  /* @noflip */ /*rtl:ignore*/
  left: var(--mdc-ripple-left, 0);
}
.mdc-radio.mdc-ripple-upgraded--foreground-activation .mdc-radio__ripple::after {
  animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;
}
.mdc-radio.mdc-ripple-upgraded--foreground-deactivation .mdc-radio__ripple::after {
  animation: mdc-ripple-fg-opacity-out 150ms;
  transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-radio .mdc-radio__ripple::before,
.mdc-radio .mdc-radio__ripple::after {
  top: calc(50% - 50%);
  /* @noflip */ /*rtl:ignore*/
  left: calc(50% - 50%);
  width: 100%;
  height: 100%;
}
.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::before,
.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after {
  top: var(--mdc-ripple-top, calc(50% - 50%));
  /* @noflip */ /*rtl:ignore*/
  left: var(--mdc-ripple-left, calc(50% - 50%));
  width: var(--mdc-ripple-fg-size, 100%);
  height: var(--mdc-ripple-fg-size, 100%);
}
.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after {
  width: var(--mdc-ripple-fg-size, 100%);
  height: var(--mdc-ripple-fg-size, 100%);
}
.mdc-radio .mdc-radio__ripple::before, .mdc-radio .mdc-radio__ripple::after {
  background-color: #ff3d60;
  /* @alternate */
  background-color: var(--mdc-ripple-color, var(--mdc-theme-secondary, #ff3d60));
}
.mdc-radio:hover .mdc-radio__ripple::before, .mdc-radio.mdc-ripple-surface--hover .mdc-radio__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-ripple-hover-opacity, 0.04);
}
.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__ripple::before, .mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-focus-opacity, 0.12);
}
.mdc-radio:not(.mdc-ripple-upgraded) .mdc-radio__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-radio:not(.mdc-ripple-upgraded):active .mdc-radio__ripple::after {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-radio.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-radio.mdc-ripple-upgraded .mdc-radio__background::before, .mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__background::before {
  content: none;
}

.mdc-radio__ripple {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

/*!
 * Bootstrap  v5.3.2 (https://getbootstrap.com/)
 * Copyright 2011-2023 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
:root,
[data-bs-theme=light] {
  --bs-blue: #0d6efd;
  --bs-indigo: #6610f2;
  --bs-purple: #6f42c1;
  --bs-pink: #d63384;
  --bs-red: #dc3545;
  --bs-orange: #fd7e14;
  --bs-yellow: #ffc107;
  --bs-green: #198754;
  --bs-teal: #20c997;
  --bs-cyan: #0dcaf0;
  --bs-black: #000;
  --bs-white: #ffffff;
  --bs-gray: #6c757d;
  --bs-gray-dark: #343a40;
  --bs-gray-100: #f8f9fa;
  --bs-gray-200: #e9ecef;
  --bs-gray-300: #dee2e6;
  --bs-gray-400: #ced4da;
  --bs-gray-500: #adb5bd;
  --bs-gray-600: #6c757d;
  --bs-gray-700: #495057;
  --bs-gray-800: #343a40;
  --bs-gray-900: #212529;
  --bs-light: #ededed;
  --bs-dark: #136093;
  --bs-primary: #146093;
  --bs-secondary: #ff3d60;
  --bs-secondaryDark: #f52d4e;
  --bs-secondaryDarker: #c92641;
  --bs-info: #3397db;
  --bs-infoLight: #eef8ff;
  --bs-success: #00a964;
  --bs-successDark: #02926e;
  --bs-warning: #e2cd00;
  --bs-danger: #f12200;
  --bs-light-rgb: 237, 237, 237;
  --bs-dark-rgb: 19, 96, 147;
  --bs-primary-rgb: 20, 96, 147;
  --bs-secondary-rgb: 255, 61, 96;
  --bs-secondaryDark-rgb: 245, 45, 78;
  --bs-secondaryDarker-rgb: 201, 38, 65;
  --bs-info-rgb: 51, 151, 219;
  --bs-infoLight-rgb: 238, 248, 255;
  --bs-success-rgb: 0, 169, 100;
  --bs-successDark-rgb: 2, 146, 110;
  --bs-warning-rgb: 226, 205, 0;
  --bs-danger-rgb: 241, 34, 0;
  --bs-primary-text-emphasis: #052c65;
  --bs-secondary-text-emphasis: #2b2f32;
  --bs-success-text-emphasis: #0a3622;
  --bs-info-text-emphasis: #055160;
  --bs-warning-text-emphasis: #664d03;
  --bs-danger-text-emphasis: #58151c;
  --bs-light-text-emphasis: #495057;
  --bs-dark-text-emphasis: #495057;
  --bs-primary-bg-subtle: #cfe2ff;
  --bs-secondary-bg-subtle: #e2e3e5;
  --bs-success-bg-subtle: #d1e7dd;
  --bs-info-bg-subtle: #cff4fc;
  --bs-warning-bg-subtle: #fff3cd;
  --bs-danger-bg-subtle: #f8d7da;
  --bs-light-bg-subtle: #fcfcfd;
  --bs-dark-bg-subtle: #ced4da;
  --bs-primary-border-subtle: #9ec5fe;
  --bs-secondary-border-subtle: #c4c8cb;
  --bs-success-border-subtle: #a3cfbb;
  --bs-info-border-subtle: #9eeaf9;
  --bs-warning-border-subtle: #ffe69c;
  --bs-danger-border-subtle: #f1aeb5;
  --bs-light-border-subtle: #e9ecef;
  --bs-dark-border-subtle: #adb5bd;
  --bs-white-rgb: 255, 255, 255;
  --bs-black-rgb: 0, 0, 0;
  --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
  --bs-body-font-family: var(--bs-font-sans-serif);
  --bs-body-font-size: 1rem;
  --bs-body-font-weight: 400;
  --bs-body-line-height: 1.5;
  --bs-body-color: #212529;
  --bs-body-color-rgb: 33, 37, 41;
  --bs-body-bg: #ededed;
  --bs-body-bg-rgb: 237, 237, 237;
  --bs-emphasis-color: #000;
  --bs-emphasis-color-rgb: 0, 0, 0;
  --bs-secondary-color: rgba(33, 37, 41, 0.75);
  --bs-secondary-color-rgb: 33, 37, 41;
  --bs-secondary-bg: #e9ecef;
  --bs-secondary-bg-rgb: 233, 236, 239;
  --bs-tertiary-color: rgba(33, 37, 41, 0.5);
  --bs-tertiary-color-rgb: 33, 37, 41;
  --bs-tertiary-bg: #f8f9fa;
  --bs-tertiary-bg-rgb: 248, 249, 250;
  --bs-heading-color: inherit;
  --bs-link-color: #146093;
  --bs-link-color-rgb: 20, 96, 147;
  --bs-link-decoration: underline;
  --bs-link-hover-color: #3397db;
  --bs-link-hover-color-rgb: 51, 151, 219;
  --bs-code-color: #d63384;
  --bs-highlight-color: #212529;
  --bs-highlight-bg: #fff3cd;
  --bs-border-width: 1px;
  --bs-border-style: solid;
  --bs-border-color: #dee2e6;
  --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
  --bs-border-radius: 0.375rem;
  --bs-border-radius-sm: 0.25rem;
  --bs-border-radius-lg: 0.5rem;
  --bs-border-radius-xl: 1rem;
  --bs-border-radius-xxl: 2rem;
  --bs-border-radius-2xl: var(--bs-border-radius-xxl);
  --bs-border-radius-pill: 50rem;
  --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
  --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
  --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
  --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
  --bs-focus-ring-width: 0.25rem;
  --bs-focus-ring-opacity: 0.25;
  --bs-focus-ring-color: rgba(13, 110, 253, 0.25);
  --bs-form-valid-color: #198754;
  --bs-form-valid-border-color: #198754;
  --bs-form-invalid-color: #dc3545;
  --bs-form-invalid-border-color: #dc3545;
}

[data-bs-theme=dark] {
  color-scheme: dark;
  --bs-body-color: #dee2e6;
  --bs-body-color-rgb: 222, 226, 230;
  --bs-body-bg: #212529;
  --bs-body-bg-rgb: 33, 37, 41;
  --bs-emphasis-color: #ffffff;
  --bs-emphasis-color-rgb: 255, 255, 255;
  --bs-secondary-color: rgba(222, 226, 230, 0.75);
  --bs-secondary-color-rgb: 222, 226, 230;
  --bs-secondary-bg: #343a40;
  --bs-secondary-bg-rgb: 52, 58, 64;
  --bs-tertiary-color: rgba(222, 226, 230, 0.5);
  --bs-tertiary-color-rgb: 222, 226, 230;
  --bs-tertiary-bg: #2b3035;
  --bs-tertiary-bg-rgb: 43, 48, 53;
  --bs-primary-text-emphasis: #6ea8fe;
  --bs-secondary-text-emphasis: #a7acb1;
  --bs-success-text-emphasis: #75b798;
  --bs-info-text-emphasis: #6edff6;
  --bs-warning-text-emphasis: #ffda6a;
  --bs-danger-text-emphasis: #ea868f;
  --bs-light-text-emphasis: #f8f9fa;
  --bs-dark-text-emphasis: #dee2e6;
  --bs-primary-bg-subtle: #031633;
  --bs-secondary-bg-subtle: #161719;
  --bs-success-bg-subtle: #051b11;
  --bs-info-bg-subtle: #032830;
  --bs-warning-bg-subtle: #332701;
  --bs-danger-bg-subtle: #2c0b0e;
  --bs-light-bg-subtle: #343a40;
  --bs-dark-bg-subtle: #1a1d20;
  --bs-primary-border-subtle: #084298;
  --bs-secondary-border-subtle: #41464b;
  --bs-success-border-subtle: #0f5132;
  --bs-info-border-subtle: #087990;
  --bs-warning-border-subtle: #997404;
  --bs-danger-border-subtle: #842029;
  --bs-light-border-subtle: #495057;
  --bs-dark-border-subtle: #343a40;
  --bs-heading-color: inherit;
  --bs-link-color: #6ea8fe;
  --bs-link-hover-color: #8bb9fe;
  --bs-link-color-rgb: 110, 168, 254;
  --bs-link-hover-color-rgb: 139, 185, 254;
  --bs-code-color: #e685b5;
  --bs-highlight-color: #dee2e6;
  --bs-highlight-bg: #664d03;
  --bs-border-color: #495057;
  --bs-border-color-translucent: rgba(255, 255, 255, 0.15);
  --bs-form-valid-color: #75b798;
  --bs-form-valid-border-color: #75b798;
  --bs-form-invalid-color: #ea868f;
  --bs-form-invalid-border-color: #ea868f;
}

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

@media (prefers-reduced-motion: no-preference) {
  :root {
    scroll-behavior: smooth;
  }
}

body {
  margin: 0;
  font-family: var(--bs-body-font-family);
  font-size: var(--bs-body-font-size);
  font-weight: var(--bs-body-font-weight);
  line-height: var(--bs-body-line-height);
  color: var(--bs-body-color);
  text-align: var(--bs-body-text-align);
  background-color: var(--bs-body-bg);
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}

hr {
  margin: 1rem 0;
  color: inherit;
  border: 0;
  border-top: var(--bs-border-width) solid;
  opacity: 0.25;
}

h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
  margin-top: 0;
  margin-bottom: 0.5rem;
  font-weight: 500;
  line-height: 1.2;
  color: var(--bs-heading-color);
}

h1, .h1 {
  font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
  h1, .h1 {
    font-size: 2.5rem;
  }
}

h2, .h2 {
  font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
  h2, .h2 {
    font-size: 2rem;
  }
}

h3, .h3 {
  font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
  h3, .h3 {
    font-size: 1.75rem;
  }
}

h4, .h4 {
  font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
  h4, .h4 {
    font-size: 1.5rem;
  }
}

h5, .h5 {
  font-size: 1.25rem;
}

h6, .h6 {
  font-size: 1rem;
}

p {
  margin-top: 0;
  margin-bottom: 1rem;
}

abbr[title] {
  text-decoration: underline dotted;
  cursor: help;
  text-decoration-skip-ink: none;
}

address {
  margin-bottom: 1rem;
  font-style: normal;
  line-height: inherit;
}

ol,
ul {
  padding-left: 2rem;
}

ol,
ul,
dl {
  margin-top: 0;
  margin-bottom: 1rem;
}

ol ol,
ul ul,
ol ul,
ul ol {
  margin-bottom: 0;
}

dt {
  font-weight: 700;
}

dd {
  margin-bottom: 0.5rem;
  margin-left: 0;
}

blockquote {
  margin: 0 0 1rem;
}

b,
strong {
  font-weight: bolder;
}

small, .small {
  font-size: 0.875em;
}

mark, .mark {
  padding: 0.1875em;
  color: var(--bs-highlight-color);
  background-color: var(--bs-highlight-bg);
}

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

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

a {
  color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
  text-decoration: underline;
}
a:hover {
  --bs-link-color-rgb: var(--bs-link-hover-color-rgb);
}

a:not([href]):not([class]), a:not([href]):not([class]):hover {
  color: inherit;
  text-decoration: none;
}

pre,
code,
kbd,
samp {
  font-family: var(--bs-font-monospace);
  font-size: 1em;
}

pre {
  display: block;
  margin-top: 0;
  margin-bottom: 1rem;
  overflow: auto;
  font-size: 0.875em;
}
pre code {
  font-size: inherit;
  color: inherit;
  word-break: normal;
}

code {
  font-size: 0.875em;
  color: var(--bs-code-color);
  word-wrap: break-word;
}
a > code {
  color: inherit;
}

kbd {
  padding: 0.1875rem 0.375rem;
  font-size: 0.875em;
  color: var(--bs-body-bg);
  background-color: var(--bs-body-color);
  border-radius: 0.25rem;
}
kbd kbd {
  padding: 0;
  font-size: 1em;
}

figure {
  margin: 0 0 1rem;
}

img,
svg {
  vertical-align: middle;
}

table {
  caption-side: bottom;
  border-collapse: collapse;
}

caption {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  color: var(--bs-secondary-color);
  text-align: left;
}

th {
  text-align: inherit;
  text-align: -webkit-match-parent;
}

thead,
tbody,
tfoot,
tr,
td,
th {
  border-color: inherit;
  border-style: solid;
  border-width: 0;
}

label {
  display: inline-block;
}

button {
  border-radius: 0;
}

button:focus:not(:focus-visible) {
  outline: 0;
}

input,
button,
select,
optgroup,
textarea {
  margin: 0;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

button,
select {
  text-transform: none;
}

[role=button] {
  cursor: pointer;
}

select {
  word-wrap: normal;
}
select:disabled {
  opacity: 1;
}

[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
  display: none !important;
}

button,
[type=button],
[type=reset],
[type=submit] {
  -webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
  cursor: pointer;
}

::-moz-focus-inner {
  padding: 0;
  border-style: none;
}

textarea {
  resize: vertical;
}

fieldset {
  min-width: 0;
  padding: 0;
  margin: 0;
  border: 0;
}

legend {
  float: left;
  width: 100%;
  padding: 0;
  margin-bottom: 0.5rem;
  font-size: calc(1.275rem + 0.3vw);
  line-height: inherit;
}
@media (min-width: 1200px) {
  legend {
    font-size: 1.5rem;
  }
}
legend + * {
  clear: left;
}

::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
  padding: 0;
}

::-webkit-inner-spin-button {
  height: auto;
}

[type=search] {
  -webkit-appearance: textfield;
  outline-offset: -2px;
}

/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
  direction: ltr;
}
*/
::-webkit-search-decoration {
  -webkit-appearance: none;
}

::-webkit-color-swatch-wrapper {
  padding: 0;
}

::file-selector-button {
  font: inherit;
  -webkit-appearance: button;
}

output {
  display: inline-block;
}

iframe {
  border: 0;
}

summary {
  display: list-item;
  cursor: pointer;
}

progress {
  vertical-align: baseline;
}

[hidden] {
  display: none !important;
}

.lead {
  font-size: 1.25rem;
  font-weight: 300;
}

.display-1 {
  font-size: calc(1.625rem + 4.5vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-1 {
    font-size: 5rem;
  }
}

.display-2 {
  font-size: calc(1.575rem + 3.9vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-2 {
    font-size: 4.5rem;
  }
}

.display-3 {
  font-size: calc(1.525rem + 3.3vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-3 {
    font-size: 4rem;
  }
}

.display-4 {
  font-size: calc(1.475rem + 2.7vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-4 {
    font-size: 3.5rem;
  }
}

.display-5 {
  font-size: calc(1.425rem + 2.1vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-5 {
    font-size: 3rem;
  }
}

.display-6 {
  font-size: calc(1.375rem + 1.5vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-6 {
    font-size: 2.5rem;
  }
}

.list-unstyled {
  padding-left: 0;
  list-style: none;
}

.list-inline {
  padding-left: 0;
  list-style: none;
}

.list-inline-item {
  display: inline-block;
}
.list-inline-item:not(:last-child) {
  margin-right: 0.5rem;
}

.initialism {
  font-size: 0.875em;
  text-transform: uppercase;
}

.blockquote {
  margin-bottom: 1rem;
  font-size: 1.25rem;
}
.blockquote > :last-child {
  margin-bottom: 0;
}

.blockquote-footer {
  margin-top: -1rem;
  margin-bottom: 1rem;
  font-size: 0.875em;
  color: #6c757d;
}
.blockquote-footer::before {
  content: "— ";
}

.img-fluid {
  max-width: 100%;
  height: auto;
}

.img-thumbnail {
  padding: 0.25rem;
  background-color: var(--bs-body-bg);
  border: var(--bs-border-width) solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  max-width: 100%;
  height: auto;
}

.figure {
  display: inline-block;
}

.figure-img {
  margin-bottom: 0.5rem;
  line-height: 1;
}

.figure-caption {
  font-size: 0.875em;
  color: var(--bs-secondary-color);
}

.container,
.container-fluid,
.container-xxl,
.container-xl,
.container-lg,
.container-md,
.container-sm {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-right: auto;
  margin-left: auto;
}

@media (min-width: 576px) {
  .container-sm, .container {
    max-width: 540px;
  }
}
@media (min-width: 768px) {
  .container-md, .container-sm, .container {
    max-width: 720px;
  }
}
@media (min-width: 992px) {
  .container-lg, .container-md, .container-sm, .container {
    max-width: 960px;
  }
}
@media (min-width: 1200px) {
  .container-xl, .container-lg, .container-md, .container-sm, .container {
    max-width: 1140px;
  }
}
@media (min-width: 1400px) {
  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
    max-width: 1320px;
  }
}
:root {
  --bs-breakpoint-xs: 0;
  --bs-breakpoint-sm: 576px;
  --bs-breakpoint-md: 768px;
  --bs-breakpoint-lg: 992px;
  --bs-breakpoint-xl: 1200px;
  --bs-breakpoint-xxl: 1400px;
}

.row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(-1 * var(--bs-gutter-y));
  margin-right: calc(-0.5 * var(--bs-gutter-x));
  margin-left: calc(-0.5 * var(--bs-gutter-x));
}
.row > * {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-top: var(--bs-gutter-y);
}

.col {
  flex: 1 0 0%;
}

.row-cols-auto > * {
  flex: 0 0 auto;
  width: auto;
}

.row-cols-1 > * {
  flex: 0 0 auto;
  width: 100%;
}

.row-cols-2 > * {
  flex: 0 0 auto;
  width: 50%;
}

.row-cols-3 > * {
  flex: 0 0 auto;
  width: 33.33333333%;
}

.row-cols-4 > * {
  flex: 0 0 auto;
  width: 25%;
}

.row-cols-5 > * {
  flex: 0 0 auto;
  width: 20%;
}

.row-cols-6 > * {
  flex: 0 0 auto;
  width: 16.66666667%;
}

.col-auto {
  flex: 0 0 auto;
  width: auto;
}

.col-1 {
  flex: 0 0 auto;
  width: 8.33333333%;
}

.col-2 {
  flex: 0 0 auto;
  width: 16.66666667%;
}

.col-3 {
  flex: 0 0 auto;
  width: 25%;
}

.col-4 {
  flex: 0 0 auto;
  width: 33.33333333%;
}

.col-5 {
  flex: 0 0 auto;
  width: 41.66666667%;
}

.col-6 {
  flex: 0 0 auto;
  width: 50%;
}

.col-7 {
  flex: 0 0 auto;
  width: 58.33333333%;
}

.col-8 {
  flex: 0 0 auto;
  width: 66.66666667%;
}

.col-9 {
  flex: 0 0 auto;
  width: 75%;
}

.col-10 {
  flex: 0 0 auto;
  width: 83.33333333%;
}

.col-11 {
  flex: 0 0 auto;
  width: 91.66666667%;
}

.col-12 {
  flex: 0 0 auto;
  width: 100%;
}

.offset-1 {
  margin-left: 8.33333333%;
}

.offset-2 {
  margin-left: 16.66666667%;
}

.offset-3 {
  margin-left: 25%;
}

.offset-4 {
  margin-left: 33.33333333%;
}

.offset-5 {
  margin-left: 41.66666667%;
}

.offset-6 {
  margin-left: 50%;
}

.offset-7 {
  margin-left: 58.33333333%;
}

.offset-8 {
  margin-left: 66.66666667%;
}

.offset-9 {
  margin-left: 75%;
}

.offset-10 {
  margin-left: 83.33333333%;
}

.offset-11 {
  margin-left: 91.66666667%;
}

.g-0,
.gx-0 {
  --bs-gutter-x: 0;
}

.g-0,
.gy-0 {
  --bs-gutter-y: 0;
}

.g-1,
.gx-1 {
  --bs-gutter-x: 0.25rem;
}

.g-1,
.gy-1 {
  --bs-gutter-y: 0.25rem;
}

.g-2,
.gx-2 {
  --bs-gutter-x: 0.5rem;
}

.g-2,
.gy-2 {
  --bs-gutter-y: 0.5rem;
}

.g-3,
.gx-3 {
  --bs-gutter-x: 1rem;
}

.g-3,
.gy-3 {
  --bs-gutter-y: 1rem;
}

.g-4,
.gx-4 {
  --bs-gutter-x: 1.5rem;
}

.g-4,
.gy-4 {
  --bs-gutter-y: 1.5rem;
}

.g-5,
.gx-5 {
  --bs-gutter-x: 3rem;
}

.g-5,
.gy-5 {
  --bs-gutter-y: 3rem;
}

@media (min-width: 576px) {
  .col-sm {
    flex: 1 0 0%;
  }
  .row-cols-sm-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-sm-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-sm-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-sm-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-sm-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-sm-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-sm-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-sm-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-sm-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-sm-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-sm-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-sm-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-sm-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-sm-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-sm-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-sm-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-sm-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-sm-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-sm-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-sm-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-sm-0 {
    margin-left: 0;
  }
  .offset-sm-1 {
    margin-left: 8.33333333%;
  }
  .offset-sm-2 {
    margin-left: 16.66666667%;
  }
  .offset-sm-3 {
    margin-left: 25%;
  }
  .offset-sm-4 {
    margin-left: 33.33333333%;
  }
  .offset-sm-5 {
    margin-left: 41.66666667%;
  }
  .offset-sm-6 {
    margin-left: 50%;
  }
  .offset-sm-7 {
    margin-left: 58.33333333%;
  }
  .offset-sm-8 {
    margin-left: 66.66666667%;
  }
  .offset-sm-9 {
    margin-left: 75%;
  }
  .offset-sm-10 {
    margin-left: 83.33333333%;
  }
  .offset-sm-11 {
    margin-left: 91.66666667%;
  }
  .g-sm-0,
  .gx-sm-0 {
    --bs-gutter-x: 0;
  }
  .g-sm-0,
  .gy-sm-0 {
    --bs-gutter-y: 0;
  }
  .g-sm-1,
  .gx-sm-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-sm-1,
  .gy-sm-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-sm-2,
  .gx-sm-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-sm-2,
  .gy-sm-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-sm-3,
  .gx-sm-3 {
    --bs-gutter-x: 1rem;
  }
  .g-sm-3,
  .gy-sm-3 {
    --bs-gutter-y: 1rem;
  }
  .g-sm-4,
  .gx-sm-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-sm-4,
  .gy-sm-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-sm-5,
  .gx-sm-5 {
    --bs-gutter-x: 3rem;
  }
  .g-sm-5,
  .gy-sm-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 768px) {
  .col-md {
    flex: 1 0 0%;
  }
  .row-cols-md-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-md-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-md-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-md-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-md-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-md-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-md-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-md-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-md-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-md-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-md-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-md-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-md-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-md-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-md-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-md-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-md-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-md-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-md-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-md-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-md-0 {
    margin-left: 0;
  }
  .offset-md-1 {
    margin-left: 8.33333333%;
  }
  .offset-md-2 {
    margin-left: 16.66666667%;
  }
  .offset-md-3 {
    margin-left: 25%;
  }
  .offset-md-4 {
    margin-left: 33.33333333%;
  }
  .offset-md-5 {
    margin-left: 41.66666667%;
  }
  .offset-md-6 {
    margin-left: 50%;
  }
  .offset-md-7 {
    margin-left: 58.33333333%;
  }
  .offset-md-8 {
    margin-left: 66.66666667%;
  }
  .offset-md-9 {
    margin-left: 75%;
  }
  .offset-md-10 {
    margin-left: 83.33333333%;
  }
  .offset-md-11 {
    margin-left: 91.66666667%;
  }
  .g-md-0,
  .gx-md-0 {
    --bs-gutter-x: 0;
  }
  .g-md-0,
  .gy-md-0 {
    --bs-gutter-y: 0;
  }
  .g-md-1,
  .gx-md-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-md-1,
  .gy-md-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-md-2,
  .gx-md-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-md-2,
  .gy-md-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-md-3,
  .gx-md-3 {
    --bs-gutter-x: 1rem;
  }
  .g-md-3,
  .gy-md-3 {
    --bs-gutter-y: 1rem;
  }
  .g-md-4,
  .gx-md-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-md-4,
  .gy-md-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-md-5,
  .gx-md-5 {
    --bs-gutter-x: 3rem;
  }
  .g-md-5,
  .gy-md-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 992px) {
  .col-lg {
    flex: 1 0 0%;
  }
  .row-cols-lg-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-lg-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-lg-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-lg-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-lg-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-lg-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-lg-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-lg-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-lg-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-lg-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-lg-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-lg-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-lg-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-lg-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-lg-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-lg-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-lg-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-lg-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-lg-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-lg-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-lg-0 {
    margin-left: 0;
  }
  .offset-lg-1 {
    margin-left: 8.33333333%;
  }
  .offset-lg-2 {
    margin-left: 16.66666667%;
  }
  .offset-lg-3 {
    margin-left: 25%;
  }
  .offset-lg-4 {
    margin-left: 33.33333333%;
  }
  .offset-lg-5 {
    margin-left: 41.66666667%;
  }
  .offset-lg-6 {
    margin-left: 50%;
  }
  .offset-lg-7 {
    margin-left: 58.33333333%;
  }
  .offset-lg-8 {
    margin-left: 66.66666667%;
  }
  .offset-lg-9 {
    margin-left: 75%;
  }
  .offset-lg-10 {
    margin-left: 83.33333333%;
  }
  .offset-lg-11 {
    margin-left: 91.66666667%;
  }
  .g-lg-0,
  .gx-lg-0 {
    --bs-gutter-x: 0;
  }
  .g-lg-0,
  .gy-lg-0 {
    --bs-gutter-y: 0;
  }
  .g-lg-1,
  .gx-lg-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-lg-1,
  .gy-lg-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-lg-2,
  .gx-lg-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-lg-2,
  .gy-lg-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-lg-3,
  .gx-lg-3 {
    --bs-gutter-x: 1rem;
  }
  .g-lg-3,
  .gy-lg-3 {
    --bs-gutter-y: 1rem;
  }
  .g-lg-4,
  .gx-lg-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-lg-4,
  .gy-lg-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-lg-5,
  .gx-lg-5 {
    --bs-gutter-x: 3rem;
  }
  .g-lg-5,
  .gy-lg-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 1200px) {
  .col-xl {
    flex: 1 0 0%;
  }
  .row-cols-xl-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-xl-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-xl-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-xl-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-xl-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-xl-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-xl-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xl-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-xl-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-xl-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xl-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-xl-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-xl-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-xl-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-xl-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-xl-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-xl-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-xl-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-xl-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-xl-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-xl-0 {
    margin-left: 0;
  }
  .offset-xl-1 {
    margin-left: 8.33333333%;
  }
  .offset-xl-2 {
    margin-left: 16.66666667%;
  }
  .offset-xl-3 {
    margin-left: 25%;
  }
  .offset-xl-4 {
    margin-left: 33.33333333%;
  }
  .offset-xl-5 {
    margin-left: 41.66666667%;
  }
  .offset-xl-6 {
    margin-left: 50%;
  }
  .offset-xl-7 {
    margin-left: 58.33333333%;
  }
  .offset-xl-8 {
    margin-left: 66.66666667%;
  }
  .offset-xl-9 {
    margin-left: 75%;
  }
  .offset-xl-10 {
    margin-left: 83.33333333%;
  }
  .offset-xl-11 {
    margin-left: 91.66666667%;
  }
  .g-xl-0,
  .gx-xl-0 {
    --bs-gutter-x: 0;
  }
  .g-xl-0,
  .gy-xl-0 {
    --bs-gutter-y: 0;
  }
  .g-xl-1,
  .gx-xl-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-xl-1,
  .gy-xl-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-xl-2,
  .gx-xl-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-xl-2,
  .gy-xl-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-xl-3,
  .gx-xl-3 {
    --bs-gutter-x: 1rem;
  }
  .g-xl-3,
  .gy-xl-3 {
    --bs-gutter-y: 1rem;
  }
  .g-xl-4,
  .gx-xl-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-xl-4,
  .gy-xl-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-xl-5,
  .gx-xl-5 {
    --bs-gutter-x: 3rem;
  }
  .g-xl-5,
  .gy-xl-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 1400px) {
  .col-xxl {
    flex: 1 0 0%;
  }
  .row-cols-xxl-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-xxl-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-xxl-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-xxl-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-xxl-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-xxl-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-xxl-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xxl-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-xxl-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-xxl-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xxl-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-xxl-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-xxl-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-xxl-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-xxl-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-xxl-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-xxl-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-xxl-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-xxl-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-xxl-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-xxl-0 {
    margin-left: 0;
  }
  .offset-xxl-1 {
    margin-left: 8.33333333%;
  }
  .offset-xxl-2 {
    margin-left: 16.66666667%;
  }
  .offset-xxl-3 {
    margin-left: 25%;
  }
  .offset-xxl-4 {
    margin-left: 33.33333333%;
  }
  .offset-xxl-5 {
    margin-left: 41.66666667%;
  }
  .offset-xxl-6 {
    margin-left: 50%;
  }
  .offset-xxl-7 {
    margin-left: 58.33333333%;
  }
  .offset-xxl-8 {
    margin-left: 66.66666667%;
  }
  .offset-xxl-9 {
    margin-left: 75%;
  }
  .offset-xxl-10 {
    margin-left: 83.33333333%;
  }
  .offset-xxl-11 {
    margin-left: 91.66666667%;
  }
  .g-xxl-0,
  .gx-xxl-0 {
    --bs-gutter-x: 0;
  }
  .g-xxl-0,
  .gy-xxl-0 {
    --bs-gutter-y: 0;
  }
  .g-xxl-1,
  .gx-xxl-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-xxl-1,
  .gy-xxl-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-xxl-2,
  .gx-xxl-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-xxl-2,
  .gy-xxl-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-xxl-3,
  .gx-xxl-3 {
    --bs-gutter-x: 1rem;
  }
  .g-xxl-3,
  .gy-xxl-3 {
    --bs-gutter-y: 1rem;
  }
  .g-xxl-4,
  .gx-xxl-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-xxl-4,
  .gy-xxl-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-xxl-5,
  .gx-xxl-5 {
    --bs-gutter-x: 3rem;
  }
  .g-xxl-5,
  .gy-xxl-5 {
    --bs-gutter-y: 3rem;
  }
}
.table {
  --bs-table-color-type: initial;
  --bs-table-bg-type: initial;
  --bs-table-color-state: initial;
  --bs-table-bg-state: initial;
  --bs-table-color: var(--bs-emphasis-color);
  --bs-table-bg: var(--bs-body-bg);
  --bs-table-border-color: var(--bs-border-color);
  --bs-table-accent-bg: transparent;
  --bs-table-striped-color: var(--bs-emphasis-color);
  --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);
  --bs-table-active-color: var(--bs-emphasis-color);
  --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);
  --bs-table-hover-color: var(--bs-emphasis-color);
  --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);
  width: 100%;
  margin-bottom: 1rem;
  vertical-align: top;
  border-color: var(--bs-table-border-color);
}
.table > :not(caption) > * > * {
  padding: 0.5rem 0.5rem;
  color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));
  background-color: var(--bs-table-bg);
  border-bottom-width: var(--bs-border-width);
  box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));
}
.table > tbody {
  vertical-align: inherit;
}
.table > thead {
  vertical-align: bottom;
}

.table-group-divider {
  border-top: calc(var(--bs-border-width) * 2) solid currentcolor;
}

.caption-top {
  caption-side: top;
}

.table-sm > :not(caption) > * > * {
  padding: 0.25rem 0.25rem;
}

.table-bordered > :not(caption) > * {
  border-width: var(--bs-border-width) 0;
}
.table-bordered > :not(caption) > * > * {
  border-width: 0 var(--bs-border-width);
}

.table-borderless > :not(caption) > * > * {
  border-bottom-width: 0;
}
.table-borderless > :not(:first-child) {
  border-top-width: 0;
}

.table-striped > tbody > tr:nth-of-type(odd) > * {
  --bs-table-color-type: var(--bs-table-striped-color);
  --bs-table-bg-type: var(--bs-table-striped-bg);
}

.table-striped-columns > :not(caption) > tr > :nth-child(even) {
  --bs-table-color-type: var(--bs-table-striped-color);
  --bs-table-bg-type: var(--bs-table-striped-bg);
}

.table-active {
  --bs-table-color-state: var(--bs-table-active-color);
  --bs-table-bg-state: var(--bs-table-active-bg);
}

.table-hover > tbody > tr:hover > * {
  --bs-table-color-state: var(--bs-table-hover-color);
  --bs-table-bg-state: var(--bs-table-hover-bg);
}

.table-primary {
  --bs-table-color: #000;
  --bs-table-bg: #cfe2ff;
  --bs-table-border-color: #a6b5cc;
  --bs-table-striped-bg: #c5d7f2;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #bacbe6;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #bfd1ec;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-secondary {
  --bs-table-color: #000;
  --bs-table-bg: #e2e3e5;
  --bs-table-border-color: #b5b6b7;
  --bs-table-striped-bg: #d7d8da;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #cbccce;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #d1d2d4;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-success {
  --bs-table-color: #000;
  --bs-table-bg: #d1e7dd;
  --bs-table-border-color: #a7b9b1;
  --bs-table-striped-bg: #c7dbd2;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #bcd0c7;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #c1d6cc;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-info {
  --bs-table-color: #000;
  --bs-table-bg: #cff4fc;
  --bs-table-border-color: #a6c3ca;
  --bs-table-striped-bg: #c5e8ef;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #badce3;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #bfe2e9;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-warning {
  --bs-table-color: #000;
  --bs-table-bg: #fff3cd;
  --bs-table-border-color: #ccc2a4;
  --bs-table-striped-bg: #f2e7c3;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #e6dbb9;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #ece1be;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-danger {
  --bs-table-color: #000;
  --bs-table-bg: #f8d7da;
  --bs-table-border-color: #c6acae;
  --bs-table-striped-bg: #eccccf;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #dfc2c4;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #e5c7ca;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-light {
  --bs-table-color: #000;
  --bs-table-bg: #f8f9fa;
  --bs-table-border-color: #c6c7c8;
  --bs-table-striped-bg: #ecedee;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #dfe0e1;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #e5e6e7;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-dark {
  --bs-table-color: #ffffff;
  --bs-table-bg: #212529;
  --bs-table-border-color: #4d5154;
  --bs-table-striped-bg: #2c3034;
  --bs-table-striped-color: #ffffff;
  --bs-table-active-bg: #373b3e;
  --bs-table-active-color: #ffffff;
  --bs-table-hover-bg: #323539;
  --bs-table-hover-color: #ffffff;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-responsive {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 575.98px) {
  .table-responsive-sm {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
@media (max-width: 767.98px) {
  .table-responsive-md {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
@media (max-width: 991.98px) {
  .table-responsive-lg {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
@media (max-width: 1199.98px) {
  .table-responsive-xl {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
@media (max-width: 1399.98px) {
  .table-responsive-xxl {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
.form-label {
  margin-bottom: 0.5rem;
}

.col-form-label {
  padding-top: calc(0.375rem + var(--bs-border-width));
  padding-bottom: calc(0.375rem + var(--bs-border-width));
  margin-bottom: 0;
  font-size: inherit;
  line-height: 1.5;
}

.col-form-label-lg {
  padding-top: calc(0.5rem + var(--bs-border-width));
  padding-bottom: calc(0.5rem + var(--bs-border-width));
  font-size: 1.25rem;
}

.col-form-label-sm {
  padding-top: calc(0.25rem + var(--bs-border-width));
  padding-bottom: calc(0.25rem + var(--bs-border-width));
  font-size: 0.875rem;
}

.form-text {
  margin-top: 0.25rem;
  font-size: 0.875em;
  color: var(--bs-secondary-color);
}

.form-control {
  display: block;
  width: 100%;
  padding: 0.375rem 0.75rem;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.5;
  color: var(--bs-body-color);
  appearance: none;
  background-color: var(--bs-body-bg);
  background-clip: padding-box;
  border: var(--bs-border-width) solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-control {
    transition: none;
  }
}
.form-control[type=file] {
  overflow: hidden;
}
.form-control[type=file]:not(:disabled):not([readonly]) {
  cursor: pointer;
}
.form-control:focus {
  color: var(--bs-body-color);
  background-color: var(--bs-body-bg);
  border-color: #86b7fe;
  outline: 0;
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.form-control::-webkit-date-and-time-value {
  min-width: 85px;
  height: 1.5em;
  margin: 0;
}
.form-control::-webkit-datetime-edit {
  display: block;
  padding: 0;
}
.form-control::placeholder {
  color: var(--bs-secondary-color);
  opacity: 1;
}
.form-control:disabled {
  background-color: var(--bs-secondary-bg);
  opacity: 1;
}
.form-control::file-selector-button {
  padding: 0.375rem 0.75rem;
  margin: -0.375rem -0.75rem;
  margin-inline-end: 0.75rem;
  color: var(--bs-body-color);
  background-color: var(--bs-tertiary-bg);
  pointer-events: none;
  border-color: inherit;
  border-style: solid;
  border-width: 0;
  border-inline-end-width: var(--bs-border-width);
  border-radius: 0;
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-control::file-selector-button {
    transition: none;
  }
}
.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
  background-color: var(--bs-secondary-bg);
}

.form-control-plaintext {
  display: block;
  width: 100%;
  padding: 0.375rem 0;
  margin-bottom: 0;
  line-height: 1.5;
  color: var(--bs-body-color);
  background-color: transparent;
  border: solid transparent;
  border-width: var(--bs-border-width) 0;
}
.form-control-plaintext:focus {
  outline: 0;
}
.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
  padding-right: 0;
  padding-left: 0;
}

.form-control-sm {
  min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
  padding: 0.25rem 0.5rem;
  font-size: 0.875rem;
  border-radius: var(--bs-border-radius-sm);
}
.form-control-sm::file-selector-button {
  padding: 0.25rem 0.5rem;
  margin: -0.25rem -0.5rem;
  margin-inline-end: 0.5rem;
}

.form-control-lg {
  min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
  padding: 0.5rem 1rem;
  font-size: 1.25rem;
  border-radius: var(--bs-border-radius-lg);
}
.form-control-lg::file-selector-button {
  padding: 0.5rem 1rem;
  margin: -0.5rem -1rem;
  margin-inline-end: 1rem;
}

textarea.form-control {
  min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));
}
textarea.form-control-sm {
  min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
}
textarea.form-control-lg {
  min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
}

.form-control-color {
  width: 3rem;
  height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));
  padding: 0.375rem;
}
.form-control-color:not(:disabled):not([readonly]) {
  cursor: pointer;
}
.form-control-color::-moz-color-swatch {
  border: 0 !important;
  border-radius: var(--bs-border-radius);
}
.form-control-color::-webkit-color-swatch {
  border: 0 !important;
  border-radius: var(--bs-border-radius);
}
.form-control-color.form-control-sm {
  height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
}
.form-control-color.form-control-lg {
  height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
}

.form-select {
  --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23343a40%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e");
  display: block;
  width: 100%;
  padding: 0.375rem 2.25rem 0.375rem 0.75rem;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.5;
  color: var(--bs-body-color);
  appearance: none;
  background-color: var(--bs-body-bg);
  background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
  background-size: 16px 12px;
  border: var(--bs-border-width) solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-select {
    transition: none;
  }
}
.form-select:focus {
  border-color: #86b7fe;
  outline: 0;
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.form-select[multiple], .form-select[size]:not([size="1"]) {
  padding-right: 0.75rem;
  background-image: none;
}
.form-select:disabled {
  background-color: var(--bs-secondary-bg);
}
.form-select:-moz-focusring {
  color: transparent;
  text-shadow: 0 0 0 var(--bs-body-color);
}

.form-select-sm {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
  padding-left: 0.5rem;
  font-size: 0.875rem;
  border-radius: var(--bs-border-radius-sm);
}

.form-select-lg {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  padding-left: 1rem;
  font-size: 1.25rem;
  border-radius: var(--bs-border-radius-lg);
}

[data-bs-theme=dark] .form-select {
  --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23dee2e6%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e");
}

.form-check {
  display: block;
  min-height: 1.5rem;
  padding-left: 1.5em;
  margin-bottom: 0.125rem;
}
.form-check .form-check-input {
  float: left;
  margin-left: -1.5em;
}

.form-check-reverse {
  padding-right: 1.5em;
  padding-left: 0;
  text-align: right;
}
.form-check-reverse .form-check-input {
  float: right;
  margin-right: -1.5em;
  margin-left: 0;
}

.form-check-input {
  --bs-form-check-bg: var(--bs-body-bg);
  flex-shrink: 0;
  width: 1em;
  height: 1em;
  margin-top: 0.25em;
  vertical-align: top;
  appearance: none;
  background-color: var(--bs-form-check-bg);
  background-image: var(--bs-form-check-bg-image);
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  border: var(--bs-border-width) solid var(--bs-border-color);
  print-color-adjust: exact;
}
.form-check-input[type=checkbox] {
  border-radius: 0.25em;
}
.form-check-input[type=radio] {
  border-radius: 50%;
}
.form-check-input:active {
  filter: brightness(90%);
}
.form-check-input:focus {
  border-color: #86b7fe;
  outline: 0;
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.form-check-input:checked {
  background-color: #0d6efd;
  border-color: #0d6efd;
}
.form-check-input:checked[type=checkbox] {
  --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23ffffff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27m6 10 3 3 6-6%27/%3e%3c/svg%3e");
}
.form-check-input:checked[type=radio] {
  --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%272%27 fill=%27%23ffffff%27/%3e%3c/svg%3e");
}
.form-check-input[type=checkbox]:indeterminate {
  background-color: #0d6efd;
  border-color: #0d6efd;
  --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23ffffff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10h8%27/%3e%3c/svg%3e");
}
.form-check-input:disabled {
  pointer-events: none;
  filter: none;
  opacity: 0.5;
}
.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {
  cursor: default;
  opacity: 0.5;
}

.form-switch {
  padding-left: 2.5em;
}
.form-switch .form-check-input {
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%280, 0, 0, 0.25%29%27/%3e%3c/svg%3e");
  width: 2em;
  margin-left: -2.5em;
  background-image: var(--bs-form-switch-bg);
  background-position: left center;
  border-radius: 2em;
  transition: background-position 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-switch .form-check-input {
    transition: none;
  }
}
.form-switch .form-check-input:focus {
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%2386b7fe%27/%3e%3c/svg%3e");
}
.form-switch .form-check-input:checked {
  background-position: right center;
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%23ffffff%27/%3e%3c/svg%3e");
}
.form-switch.form-check-reverse {
  padding-right: 2.5em;
  padding-left: 0;
}
.form-switch.form-check-reverse .form-check-input {
  margin-right: -2.5em;
  margin-left: 0;
}

.form-check-inline {
  display: inline-block;
  margin-right: 1rem;
}

.btn-check {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.btn-check[disabled] + .btn, .btn-check:disabled + .btn {
  pointer-events: none;
  filter: none;
  opacity: 0.65;
}

[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) {
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%28255, 255, 255, 0.25%29%27/%3e%3c/svg%3e");
}

.form-range {
  width: 100%;
  height: 1.5rem;
  padding: 0;
  appearance: none;
  background-color: transparent;
}
.form-range:focus {
  outline: 0;
}
.form-range:focus::-webkit-slider-thumb {
  box-shadow: 0 0 0 1px #ededed, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.form-range:focus::-moz-range-thumb {
  box-shadow: 0 0 0 1px #ededed, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.form-range::-moz-focus-outer {
  border: 0;
}
.form-range::-webkit-slider-thumb {
  width: 1rem;
  height: 1rem;
  margin-top: -0.25rem;
  appearance: none;
  background-color: #0d6efd;
  border: 0;
  border-radius: 1rem;
  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-range::-webkit-slider-thumb {
    transition: none;
  }
}
.form-range::-webkit-slider-thumb:active {
  background-color: #b6d4fe;
}
.form-range::-webkit-slider-runnable-track {
  width: 100%;
  height: 0.5rem;
  color: transparent;
  cursor: pointer;
  background-color: var(--bs-secondary-bg);
  border-color: transparent;
  border-radius: 1rem;
}
.form-range::-moz-range-thumb {
  width: 1rem;
  height: 1rem;
  appearance: none;
  background-color: #0d6efd;
  border: 0;
  border-radius: 1rem;
  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-range::-moz-range-thumb {
    transition: none;
  }
}
.form-range::-moz-range-thumb:active {
  background-color: #b6d4fe;
}
.form-range::-moz-range-track {
  width: 100%;
  height: 0.5rem;
  color: transparent;
  cursor: pointer;
  background-color: var(--bs-secondary-bg);
  border-color: transparent;
  border-radius: 1rem;
}
.form-range:disabled {
  pointer-events: none;
}
.form-range:disabled::-webkit-slider-thumb {
  background-color: var(--bs-secondary-color);
}
.form-range:disabled::-moz-range-thumb {
  background-color: var(--bs-secondary-color);
}

.form-floating {
  position: relative;
}
.form-floating > .form-control,
.form-floating > .form-control-plaintext,
.form-floating > .form-select {
  height: calc(3.5rem + calc(var(--bs-border-width) * 2));
  min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));
  line-height: 1.25;
}
.form-floating > label {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  height: 100%;
  padding: 1rem 0.75rem;
  overflow: hidden;
  text-align: start;
  text-overflow: ellipsis;
  white-space: nowrap;
  pointer-events: none;
  border: var(--bs-border-width) solid transparent;
  transform-origin: 0 0;
  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-floating > label {
    transition: none;
  }
}
.form-floating > .form-control,
.form-floating > .form-control-plaintext {
  padding: 1rem 0.75rem;
}
.form-floating > .form-control::placeholder,
.form-floating > .form-control-plaintext::placeholder {
  color: transparent;
}
.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),
.form-floating > .form-control-plaintext:focus,
.form-floating > .form-control-plaintext:not(:placeholder-shown) {
  padding-top: 1.625rem;
  padding-bottom: 0.625rem;
}
.form-floating > .form-control:-webkit-autofill,
.form-floating > .form-control-plaintext:-webkit-autofill {
  padding-top: 1.625rem;
  padding-bottom: 0.625rem;
}
.form-floating > .form-select {
  padding-top: 1.625rem;
  padding-bottom: 0.625rem;
}
.form-floating > .form-control:focus ~ label,
.form-floating > .form-control:not(:placeholder-shown) ~ label,
.form-floating > .form-control-plaintext ~ label,
.form-floating > .form-select ~ label {
  color: rgba(var(--bs-body-color-rgb), 0.65);
  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
.form-floating > .form-control:focus ~ label::after,
.form-floating > .form-control:not(:placeholder-shown) ~ label::after,
.form-floating > .form-control-plaintext ~ label::after,
.form-floating > .form-select ~ label::after {
  position: absolute;
  inset: 1rem 0.375rem;
  z-index: -1;
  height: 1.5em;
  content: "";
  background-color: var(--bs-body-bg);
  border-radius: var(--bs-border-radius);
}
.form-floating > .form-control:-webkit-autofill ~ label {
  color: rgba(var(--bs-body-color-rgb), 0.65);
  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
.form-floating > .form-control-plaintext ~ label {
  border-width: var(--bs-border-width) 0;
}
.form-floating > :disabled ~ label,
.form-floating > .form-control:disabled ~ label {
  color: #6c757d;
}
.form-floating > :disabled ~ label::after,
.form-floating > .form-control:disabled ~ label::after {
  background-color: var(--bs-secondary-bg);
}

.input-group {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  width: 100%;
}
.input-group > .form-control,
.input-group > .form-select,
.input-group > .form-floating {
  position: relative;
  flex: 1 1 auto;
  width: 1%;
  min-width: 0;
}
.input-group > .form-control:focus,
.input-group > .form-select:focus,
.input-group > .form-floating:focus-within {
  z-index: 5;
}
.input-group .btn {
  position: relative;
  z-index: 2;
}
.input-group .btn:focus {
  z-index: 5;
}

.input-group-text {
  display: flex;
  align-items: center;
  padding: 0.375rem 0.75rem;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.5;
  color: var(--bs-body-color);
  text-align: center;
  white-space: nowrap;
  background-color: var(--bs-tertiary-bg);
  border: var(--bs-border-width) solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
}

.input-group-lg > .form-control,
.input-group-lg > .form-select,
.input-group-lg > .input-group-text,
.input-group-lg > .btn {
  padding: 0.5rem 1rem;
  font-size: 1.25rem;
  border-radius: var(--bs-border-radius-lg);
}

.input-group-sm > .form-control,
.input-group-sm > .form-select,
.input-group-sm > .input-group-text,
.input-group-sm > .btn {
  padding: 0.25rem 0.5rem;
  font-size: 0.875rem;
  border-radius: var(--bs-border-radius-sm);
}

.input-group-lg > .form-select,
.input-group-sm > .form-select {
  padding-right: 3rem;
}

.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),
.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,
.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),
.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,
.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
  margin-left: calc(var(--bs-border-width) * -1);
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
.input-group > .form-floating:not(:first-child) > .form-control,
.input-group > .form-floating:not(:first-child) > .form-select {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}

.valid-feedback {
  display: none;
  width: 100%;
  margin-top: 0.25rem;
  font-size: 0.875em;
  color: var(--bs-form-valid-color);
}

.valid-tooltip {
  position: absolute;
  top: 100%;
  z-index: 5;
  display: none;
  max-width: 100%;
  padding: 0.25rem 0.5rem;
  margin-top: 0.1rem;
  font-size: 0.875rem;
  color: #fff;
  background-color: var(--bs-success);
  border-radius: var(--bs-border-radius);
}

.was-validated :valid ~ .valid-feedback,
.was-validated :valid ~ .valid-tooltip,
.is-valid ~ .valid-feedback,
.is-valid ~ .valid-tooltip {
  display: block;
}

.was-validated .form-control:valid, .form-control.is-valid {
  border-color: var(--bs-form-valid-border-color);
  padding-right: calc(1.5em + 0.75rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z%27/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
  border-color: var(--bs-form-valid-border-color);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
}

.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
  padding-right: calc(1.5em + 0.75rem);
  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
}

.was-validated .form-select:valid, .form-select.is-valid {
  border-color: var(--bs-form-valid-border-color);
}
.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] {
  --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z%27/%3e%3c/svg%3e");
  padding-right: 4.125rem;
  background-position: right 0.75rem center, center right 2.25rem;
  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .form-select:valid:focus, .form-select.is-valid:focus {
  border-color: var(--bs-form-valid-border-color);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
}

.was-validated .form-control-color:valid, .form-control-color.is-valid {
  width: calc(3rem + calc(1.5em + 0.75rem));
}

.was-validated .form-check-input:valid, .form-check-input.is-valid {
  border-color: var(--bs-form-valid-border-color);
}
.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {
  background-color: var(--bs-form-valid-color);
}
.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
}
.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
  color: var(--bs-form-valid-color);
}

.form-check-inline .form-check-input ~ .valid-feedback {
  margin-left: 0.5em;
}

.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,
.was-validated .input-group > .form-select:not(:focus):valid,
.input-group > .form-select:not(:focus).is-valid,
.was-validated .input-group > .form-floating:not(:focus-within):valid,
.input-group > .form-floating:not(:focus-within).is-valid {
  z-index: 3;
}

.invalid-feedback {
  display: none;
  width: 100%;
  margin-top: 0.25rem;
  font-size: 0.875em;
  color: var(--bs-form-invalid-color);
}

.invalid-tooltip {
  position: absolute;
  top: 100%;
  z-index: 5;
  display: none;
  max-width: 100%;
  padding: 0.25rem 0.5rem;
  margin-top: 0.1rem;
  font-size: 0.875rem;
  color: #fff;
  background-color: var(--bs-danger);
  border-radius: var(--bs-border-radius);
}

.was-validated :invalid ~ .invalid-feedback,
.was-validated :invalid ~ .invalid-tooltip,
.is-invalid ~ .invalid-feedback,
.is-invalid ~ .invalid-tooltip {
  display: block;
}

.was-validated .form-control:invalid, .form-control.is-invalid {
  border-color: var(--bs-form-invalid-border-color);
  padding-right: calc(1.5em + 0.75rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
  border-color: var(--bs-form-invalid-border-color);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
}

.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
  padding-right: calc(1.5em + 0.75rem);
  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
}

.was-validated .form-select:invalid, .form-select.is-invalid {
  border-color: var(--bs-form-invalid-border-color);
}
.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] {
  --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e");
  padding-right: 4.125rem;
  background-position: right 0.75rem center, center right 2.25rem;
  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {
  border-color: var(--bs-form-invalid-border-color);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
}

.was-validated .form-control-color:invalid, .form-control-color.is-invalid {
  width: calc(3rem + calc(1.5em + 0.75rem));
}

.was-validated .form-check-input:invalid, .form-check-input.is-invalid {
  border-color: var(--bs-form-invalid-border-color);
}
.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {
  background-color: var(--bs-form-invalid-color);
}
.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
}
.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
  color: var(--bs-form-invalid-color);
}

.form-check-inline .form-check-input ~ .invalid-feedback {
  margin-left: 0.5em;
}

.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,
.was-validated .input-group > .form-select:not(:focus):invalid,
.input-group > .form-select:not(:focus).is-invalid,
.was-validated .input-group > .form-floating:not(:focus-within):invalid,
.input-group > .form-floating:not(:focus-within).is-invalid {
  z-index: 4;
}

.btn {
  --bs-btn-padding-x: 0.75rem;
  --bs-btn-padding-y: 0.375rem;
  --bs-btn-font-family: ;
  --bs-btn-font-size: 1rem;
  --bs-btn-font-weight: 400;
  --bs-btn-line-height: 1.5;
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-bg: transparent;
  --bs-btn-border-width: var(--bs-border-width);
  --bs-btn-border-color: transparent;
  --bs-btn-border-radius: var(--bs-border-radius);
  --bs-btn-hover-border-color: transparent;
  --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
  --bs-btn-disabled-opacity: 0.65;
  --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);
  display: inline-block;
  padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);
  font-family: var(--bs-btn-font-family);
  font-size: var(--bs-btn-font-size);
  font-weight: var(--bs-btn-font-weight);
  line-height: var(--bs-btn-line-height);
  color: var(--bs-btn-color);
  text-align: center;
  text-decoration: none;
  vertical-align: middle;
  cursor: pointer;
  user-select: none;
  border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
  border-radius: var(--bs-btn-border-radius);
  background-color: var(--bs-btn-bg);
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .btn {
    transition: none;
  }
}
.btn:hover {
  color: var(--bs-btn-hover-color);
  background-color: var(--bs-btn-hover-bg);
  border-color: var(--bs-btn-hover-border-color);
}
.btn-check + .btn:hover {
  color: var(--bs-btn-color);
  background-color: var(--bs-btn-bg);
  border-color: var(--bs-btn-border-color);
}
.btn:focus-visible {
  color: var(--bs-btn-hover-color);
  background-color: var(--bs-btn-hover-bg);
  border-color: var(--bs-btn-hover-border-color);
  outline: 0;
  box-shadow: var(--bs-btn-focus-box-shadow);
}
.btn-check:focus-visible + .btn {
  border-color: var(--bs-btn-hover-border-color);
  outline: 0;
  box-shadow: var(--bs-btn-focus-box-shadow);
}
.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {
  color: var(--bs-btn-active-color);
  background-color: var(--bs-btn-active-bg);
  border-color: var(--bs-btn-active-border-color);
}
.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {
  box-shadow: var(--bs-btn-focus-box-shadow);
}
.btn:disabled, .btn.disabled, fieldset:disabled .btn {
  color: var(--bs-btn-disabled-color);
  pointer-events: none;
  background-color: var(--bs-btn-disabled-bg);
  border-color: var(--bs-btn-disabled-border-color);
  opacity: var(--bs-btn-disabled-opacity);
}

.btn-light {
  --bs-btn-color: #000;
  --bs-btn-bg: #ededed;
  --bs-btn-border-color: #ededed;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #c9c9c9;
  --bs-btn-hover-border-color: #bebebe;
  --bs-btn-focus-shadow-rgb: 201, 201, 201;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #bebebe;
  --bs-btn-active-border-color: #b2b2b2;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #ededed;
  --bs-btn-disabled-border-color: #ededed;
}

.btn-dark {
  --bs-btn-color: #ffffff;
  --bs-btn-bg: #136093;
  --bs-btn-border-color: #136093;
  --bs-btn-hover-color: #ffffff;
  --bs-btn-hover-bg: #3678a3;
  --bs-btn-hover-border-color: #2b709e;
  --bs-btn-focus-shadow-rgb: 54, 120, 163;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #4280a9;
  --bs-btn-active-border-color: #2b709e;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #ffffff;
  --bs-btn-disabled-bg: #136093;
  --bs-btn-disabled-border-color: #136093;
}

.btn-primary {
  --bs-btn-color: #ffffff;
  --bs-btn-bg: #146093;
  --bs-btn-border-color: #146093;
  --bs-btn-hover-color: #ffffff;
  --bs-btn-hover-bg: #11527d;
  --bs-btn-hover-border-color: #104d76;
  --bs-btn-focus-shadow-rgb: 55, 120, 163;
  --bs-btn-active-color: #ffffff;
  --bs-btn-active-bg: #104d76;
  --bs-btn-active-border-color: #0f486e;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #ffffff;
  --bs-btn-disabled-bg: #146093;
  --bs-btn-disabled-border-color: #146093;
}

.btn-secondary {
  --bs-btn-color: #000;
  --bs-btn-bg: #ff3d60;
  --bs-btn-border-color: #ff3d60;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #ff5a78;
  --bs-btn-hover-border-color: #ff5070;
  --bs-btn-focus-shadow-rgb: 217, 52, 82;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #ff6480;
  --bs-btn-active-border-color: #ff5070;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #ff3d60;
  --bs-btn-disabled-border-color: #ff3d60;
}

.btn-secondaryDark {
  --bs-btn-color: #000;
  --bs-btn-bg: #f52d4e;
  --bs-btn-border-color: #f52d4e;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #f74d69;
  --bs-btn-hover-border-color: #f64260;
  --bs-btn-focus-shadow-rgb: 208, 38, 66;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #f75771;
  --bs-btn-active-border-color: #f64260;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #f52d4e;
  --bs-btn-disabled-border-color: #f52d4e;
}

.btn-secondaryDarker {
  --bs-btn-color: #ffffff;
  --bs-btn-bg: #c92641;
  --bs-btn-border-color: #c92641;
  --bs-btn-hover-color: #ffffff;
  --bs-btn-hover-bg: #ab2037;
  --bs-btn-hover-border-color: #a11e34;
  --bs-btn-focus-shadow-rgb: 209, 71, 94;
  --bs-btn-active-color: #ffffff;
  --bs-btn-active-bg: #a11e34;
  --bs-btn-active-border-color: #971d31;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #ffffff;
  --bs-btn-disabled-bg: #c92641;
  --bs-btn-disabled-border-color: #c92641;
}

.btn-info {
  --bs-btn-color: #000;
  --bs-btn-bg: #3397db;
  --bs-btn-border-color: #3397db;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #52a7e0;
  --bs-btn-hover-border-color: #47a1df;
  --bs-btn-focus-shadow-rgb: 43, 128, 186;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #5cace2;
  --bs-btn-active-border-color: #47a1df;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #3397db;
  --bs-btn-disabled-border-color: #3397db;
}

.btn-infoLight {
  --bs-btn-color: #000;
  --bs-btn-bg: #eef8ff;
  --bs-btn-border-color: #eef8ff;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #f1f9ff;
  --bs-btn-hover-border-color: #f0f9ff;
  --bs-btn-focus-shadow-rgb: 202, 211, 217;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #f1f9ff;
  --bs-btn-active-border-color: #f0f9ff;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #eef8ff;
  --bs-btn-disabled-border-color: #eef8ff;
}

.btn-success {
  --bs-btn-color: #000;
  --bs-btn-bg: #00a964;
  --bs-btn-border-color: #00a964;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #26b67b;
  --bs-btn-hover-border-color: #1ab274;
  --bs-btn-focus-shadow-rgb: 0, 144, 85;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #33ba83;
  --bs-btn-active-border-color: #1ab274;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #00a964;
  --bs-btn-disabled-border-color: #00a964;
}

.btn-successDark {
  --bs-btn-color: #000;
  --bs-btn-bg: #02926e;
  --bs-btn-border-color: #02926e;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #28a284;
  --bs-btn-hover-border-color: #1b9d7d;
  --bs-btn-focus-shadow-rgb: 2, 124, 94;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #35a88b;
  --bs-btn-active-border-color: #1b9d7d;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #02926e;
  --bs-btn-disabled-border-color: #02926e;
}

.btn-warning {
  --bs-btn-color: #000;
  --bs-btn-bg: #e2cd00;
  --bs-btn-border-color: #e2cd00;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #e6d526;
  --bs-btn-hover-border-color: #e5d21a;
  --bs-btn-focus-shadow-rgb: 192, 174, 0;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #e8d733;
  --bs-btn-active-border-color: #e5d21a;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #e2cd00;
  --bs-btn-disabled-border-color: #e2cd00;
}

.btn-danger {
  --bs-btn-color: #000;
  --bs-btn-bg: #f12200;
  --bs-btn-border-color: #f12200;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #f34326;
  --bs-btn-hover-border-color: #f2381a;
  --bs-btn-focus-shadow-rgb: 205, 29, 0;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #f44e33;
  --bs-btn-active-border-color: #f2381a;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #f12200;
  --bs-btn-disabled-border-color: #f12200;
}

.btn-outline-light {
  --bs-btn-color: #ededed;
  --bs-btn-border-color: #ededed;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #ededed;
  --bs-btn-hover-border-color: #ededed;
  --bs-btn-focus-shadow-rgb: 237, 237, 237;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #ededed;
  --bs-btn-active-border-color: #ededed;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #ededed;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #ededed;
  --bs-gradient: none;
}

.btn-outline-dark {
  --bs-btn-color: #136093;
  --bs-btn-border-color: #136093;
  --bs-btn-hover-color: #ffffff;
  --bs-btn-hover-bg: #136093;
  --bs-btn-hover-border-color: #136093;
  --bs-btn-focus-shadow-rgb: 19, 96, 147;
  --bs-btn-active-color: #ffffff;
  --bs-btn-active-bg: #136093;
  --bs-btn-active-border-color: #136093;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #136093;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #136093;
  --bs-gradient: none;
}

.btn-outline-primary {
  --bs-btn-color: #146093;
  --bs-btn-border-color: #146093;
  --bs-btn-hover-color: #ffffff;
  --bs-btn-hover-bg: #146093;
  --bs-btn-hover-border-color: #146093;
  --bs-btn-focus-shadow-rgb: 20, 96, 147;
  --bs-btn-active-color: #ffffff;
  --bs-btn-active-bg: #146093;
  --bs-btn-active-border-color: #146093;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #146093;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #146093;
  --bs-gradient: none;
}

.btn-outline-secondary {
  --bs-btn-color: #ff3d60;
  --bs-btn-border-color: #ff3d60;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #ff3d60;
  --bs-btn-hover-border-color: #ff3d60;
  --bs-btn-focus-shadow-rgb: 255, 61, 96;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #ff3d60;
  --bs-btn-active-border-color: #ff3d60;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #ff3d60;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #ff3d60;
  --bs-gradient: none;
}

.btn-outline-secondaryDark {
  --bs-btn-color: #f52d4e;
  --bs-btn-border-color: #f52d4e;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #f52d4e;
  --bs-btn-hover-border-color: #f52d4e;
  --bs-btn-focus-shadow-rgb: 245, 45, 78;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #f52d4e;
  --bs-btn-active-border-color: #f52d4e;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #f52d4e;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #f52d4e;
  --bs-gradient: none;
}

.btn-outline-secondaryDarker {
  --bs-btn-color: #c92641;
  --bs-btn-border-color: #c92641;
  --bs-btn-hover-color: #ffffff;
  --bs-btn-hover-bg: #c92641;
  --bs-btn-hover-border-color: #c92641;
  --bs-btn-focus-shadow-rgb: 201, 38, 65;
  --bs-btn-active-color: #ffffff;
  --bs-btn-active-bg: #c92641;
  --bs-btn-active-border-color: #c92641;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #c92641;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #c92641;
  --bs-gradient: none;
}

.btn-outline-info {
  --bs-btn-color: #3397db;
  --bs-btn-border-color: #3397db;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #3397db;
  --bs-btn-hover-border-color: #3397db;
  --bs-btn-focus-shadow-rgb: 51, 151, 219;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #3397db;
  --bs-btn-active-border-color: #3397db;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #3397db;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #3397db;
  --bs-gradient: none;
}

.btn-outline-infoLight {
  --bs-btn-color: #eef8ff;
  --bs-btn-border-color: #eef8ff;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #eef8ff;
  --bs-btn-hover-border-color: #eef8ff;
  --bs-btn-focus-shadow-rgb: 238, 248, 255;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #eef8ff;
  --bs-btn-active-border-color: #eef8ff;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #eef8ff;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #eef8ff;
  --bs-gradient: none;
}

.btn-outline-success {
  --bs-btn-color: #00a964;
  --bs-btn-border-color: #00a964;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #00a964;
  --bs-btn-hover-border-color: #00a964;
  --bs-btn-focus-shadow-rgb: 0, 169, 100;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #00a964;
  --bs-btn-active-border-color: #00a964;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #00a964;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #00a964;
  --bs-gradient: none;
}

.btn-outline-successDark {
  --bs-btn-color: #02926e;
  --bs-btn-border-color: #02926e;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #02926e;
  --bs-btn-hover-border-color: #02926e;
  --bs-btn-focus-shadow-rgb: 2, 146, 110;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #02926e;
  --bs-btn-active-border-color: #02926e;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #02926e;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #02926e;
  --bs-gradient: none;
}

.btn-outline-warning {
  --bs-btn-color: #e2cd00;
  --bs-btn-border-color: #e2cd00;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #e2cd00;
  --bs-btn-hover-border-color: #e2cd00;
  --bs-btn-focus-shadow-rgb: 226, 205, 0;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #e2cd00;
  --bs-btn-active-border-color: #e2cd00;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #e2cd00;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #e2cd00;
  --bs-gradient: none;
}

.btn-outline-danger {
  --bs-btn-color: #f12200;
  --bs-btn-border-color: #f12200;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #f12200;
  --bs-btn-hover-border-color: #f12200;
  --bs-btn-focus-shadow-rgb: 241, 34, 0;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #f12200;
  --bs-btn-active-border-color: #f12200;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #f12200;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #f12200;
  --bs-gradient: none;
}

.btn-link {
  --bs-btn-font-weight: 400;
  --bs-btn-color: var(--bs-link-color);
  --bs-btn-bg: transparent;
  --bs-btn-border-color: transparent;
  --bs-btn-hover-color: var(--bs-link-hover-color);
  --bs-btn-hover-border-color: transparent;
  --bs-btn-active-color: var(--bs-link-hover-color);
  --bs-btn-active-border-color: transparent;
  --bs-btn-disabled-color: #6c757d;
  --bs-btn-disabled-border-color: transparent;
  --bs-btn-box-shadow: 0 0 0 #000;
  --bs-btn-focus-shadow-rgb: 55, 120, 163;
  text-decoration: underline;
}
.btn-link:focus-visible {
  color: var(--bs-btn-color);
}
.btn-link:hover {
  color: var(--bs-btn-hover-color);
}

.btn-lg, .btn-group-lg > .btn {
  --bs-btn-padding-y: 0.5rem;
  --bs-btn-padding-x: 1rem;
  --bs-btn-font-size: 1.25rem;
  --bs-btn-border-radius: var(--bs-border-radius-lg);
}

.btn-sm, .btn-group-sm > .btn {
  --bs-btn-padding-y: 0.25rem;
  --bs-btn-padding-x: 0.5rem;
  --bs-btn-font-size: 0.875rem;
  --bs-btn-border-radius: var(--bs-border-radius-sm);
}

.fade {
  transition: opacity 0.15s linear;
}
@media (prefers-reduced-motion: reduce) {
  .fade {
    transition: none;
  }
}
.fade:not(.show) {
  opacity: 0;
}

.collapse:not(.show) {
  display: none;
}

.collapsing {
  height: 0;
  overflow: hidden;
  transition: height 0.35s ease;
}
@media (prefers-reduced-motion: reduce) {
  .collapsing {
    transition: none;
  }
}
.collapsing.collapse-horizontal {
  width: 0;
  height: auto;
  transition: width 0.35s ease;
}
@media (prefers-reduced-motion: reduce) {
  .collapsing.collapse-horizontal {
    transition: none;
  }
}

.dropup,
.dropend,
.dropdown,
.dropstart,
.dropup-center,
.dropdown-center {
  position: relative;
}

.dropdown-toggle {
  white-space: nowrap;
}
.dropdown-toggle::after {
  display: inline-block;
  margin-left: 0.255em;
  vertical-align: 0.255em;
  content: "";
  border-top: 0.3em solid;
  border-right: 0.3em solid transparent;
  border-bottom: 0;
  border-left: 0.3em solid transparent;
}
.dropdown-toggle:empty::after {
  margin-left: 0;
}

.dropdown-menu {
  --bs-dropdown-zindex: 1000;
  --bs-dropdown-min-width: 10rem;
  --bs-dropdown-padding-x: 0;
  --bs-dropdown-padding-y: 0.5rem;
  --bs-dropdown-spacer: 0.125rem;
  --bs-dropdown-font-size: 1rem;
  --bs-dropdown-color: var(--bs-body-color);
  --bs-dropdown-bg: var(--bs-body-bg);
  --bs-dropdown-border-color: var(--bs-border-color-translucent);
  --bs-dropdown-border-radius: var(--bs-border-radius);
  --bs-dropdown-border-width: var(--bs-border-width);
  --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));
  --bs-dropdown-divider-bg: var(--bs-border-color-translucent);
  --bs-dropdown-divider-margin-y: 0.5rem;
  --bs-dropdown-box-shadow: var(--bs-box-shadow);
  --bs-dropdown-link-color: var(--bs-body-color);
  --bs-dropdown-link-hover-color: var(--bs-body-color);
  --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);
  --bs-dropdown-link-active-color: #ffffff;
  --bs-dropdown-link-active-bg: #0d6efd;
  --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);
  --bs-dropdown-item-padding-x: 1rem;
  --bs-dropdown-item-padding-y: 0.25rem;
  --bs-dropdown-header-color: #6c757d;
  --bs-dropdown-header-padding-x: 1rem;
  --bs-dropdown-header-padding-y: 0.5rem;
  position: absolute;
  z-index: var(--bs-dropdown-zindex);
  display: none;
  min-width: var(--bs-dropdown-min-width);
  padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);
  margin: 0;
  font-size: var(--bs-dropdown-font-size);
  color: var(--bs-dropdown-color);
  text-align: left;
  list-style: none;
  background-color: var(--bs-dropdown-bg);
  background-clip: padding-box;
  border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);
  border-radius: var(--bs-dropdown-border-radius);
}
.dropdown-menu[data-bs-popper] {
  top: 100%;
  left: 0;
  margin-top: var(--bs-dropdown-spacer);
}

.dropdown-menu-start {
  --bs-position: start;
}
.dropdown-menu-start[data-bs-popper] {
  right: auto;
  left: 0;
}

.dropdown-menu-end {
  --bs-position: end;
}
.dropdown-menu-end[data-bs-popper] {
  right: 0;
  left: auto;
}

@media (min-width: 576px) {
  .dropdown-menu-sm-start {
    --bs-position: start;
  }
  .dropdown-menu-sm-start[data-bs-popper] {
    right: auto;
    left: 0;
  }
  .dropdown-menu-sm-end {
    --bs-position: end;
  }
  .dropdown-menu-sm-end[data-bs-popper] {
    right: 0;
    left: auto;
  }
}
@media (min-width: 768px) {
  .dropdown-menu-md-start {
    --bs-position: start;
  }
  .dropdown-menu-md-start[data-bs-popper] {
    right: auto;
    left: 0;
  }
  .dropdown-menu-md-end {
    --bs-position: end;
  }
  .dropdown-menu-md-end[data-bs-popper] {
    right: 0;
    left: auto;
  }
}
@media (min-width: 992px) {
  .dropdown-menu-lg-start {
    --bs-position: start;
  }
  .dropdown-menu-lg-start[data-bs-popper] {
    right: auto;
    left: 0;
  }
  .dropdown-menu-lg-end {
    --bs-position: end;
  }
  .dropdown-menu-lg-end[data-bs-popper] {
    right: 0;
    left: auto;
  }
}
@media (min-width: 1200px) {
  .dropdown-menu-xl-start {
    --bs-position: start;
  }
  .dropdown-menu-xl-start[data-bs-popper] {
    right: auto;
    left: 0;
  }
  .dropdown-menu-xl-end {
    --bs-position: end;
  }
  .dropdown-menu-xl-end[data-bs-popper] {
    right: 0;
    left: auto;
  }
}
@media (min-width: 1400px) {
  .dropdown-menu-xxl-start {
    --bs-position: start;
  }
  .dropdown-menu-xxl-start[data-bs-popper] {
    right: auto;
    left: 0;
  }
  .dropdown-menu-xxl-end {
    --bs-position: end;
  }
  .dropdown-menu-xxl-end[data-bs-popper] {
    right: 0;
    left: auto;
  }
}
.dropup .dropdown-menu[data-bs-popper] {
  top: auto;
  bottom: 100%;
  margin-top: 0;
  margin-bottom: var(--bs-dropdown-spacer);
}
.dropup .dropdown-toggle::after {
  display: inline-block;
  margin-left: 0.255em;
  vertical-align: 0.255em;
  content: "";
  border-top: 0;
  border-right: 0.3em solid transparent;
  border-bottom: 0.3em solid;
  border-left: 0.3em solid transparent;
}
.dropup .dropdown-toggle:empty::after {
  margin-left: 0;
}

.dropend .dropdown-menu[data-bs-popper] {
  top: 0;
  right: auto;
  left: 100%;
  margin-top: 0;
  margin-left: var(--bs-dropdown-spacer);
}
.dropend .dropdown-toggle::after {
  display: inline-block;
  margin-left: 0.255em;
  vertical-align: 0.255em;
  content: "";
  border-top: 0.3em solid transparent;
  border-right: 0;
  border-bottom: 0.3em solid transparent;
  border-left: 0.3em solid;
}
.dropend .dropdown-toggle:empty::after {
  margin-left: 0;
}
.dropend .dropdown-toggle::after {
  vertical-align: 0;
}

.dropstart .dropdown-menu[data-bs-popper] {
  top: 0;
  right: 100%;
  left: auto;
  margin-top: 0;
  margin-right: var(--bs-dropdown-spacer);
}
.dropstart .dropdown-toggle::after {
  display: inline-block;
  margin-left: 0.255em;
  vertical-align: 0.255em;
  content: "";
}
.dropstart .dropdown-toggle::after {
  display: none;
}
.dropstart .dropdown-toggle::before {
  display: inline-block;
  margin-right: 0.255em;
  vertical-align: 0.255em;
  content: "";
  border-top: 0.3em solid transparent;
  border-right: 0.3em solid;
  border-bottom: 0.3em solid transparent;
}
.dropstart .dropdown-toggle:empty::after {
  margin-left: 0;
}
.dropstart .dropdown-toggle::before {
  vertical-align: 0;
}

.dropdown-divider {
  height: 0;
  margin: var(--bs-dropdown-divider-margin-y) 0;
  overflow: hidden;
  border-top: 1px solid var(--bs-dropdown-divider-bg);
  opacity: 1;
}

.dropdown-item {
  display: block;
  width: 100%;
  padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
  clear: both;
  font-weight: 400;
  color: var(--bs-dropdown-link-color);
  text-align: inherit;
  text-decoration: none;
  white-space: nowrap;
  background-color: transparent;
  border: 0;
  border-radius: var(--bs-dropdown-item-border-radius, 0);
}
.dropdown-item:hover, .dropdown-item:focus {
  color: var(--bs-dropdown-link-hover-color);
  background-color: var(--bs-dropdown-link-hover-bg);
}
.dropdown-item.active, .dropdown-item:active {
  color: var(--bs-dropdown-link-active-color);
  text-decoration: none;
  background-color: var(--bs-dropdown-link-active-bg);
}
.dropdown-item.disabled, .dropdown-item:disabled {
  color: var(--bs-dropdown-link-disabled-color);
  pointer-events: none;
  background-color: transparent;
}

.dropdown-menu.show {
  display: block;
}

.dropdown-header {
  display: block;
  padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);
  margin-bottom: 0;
  font-size: 0.875rem;
  color: var(--bs-dropdown-header-color);
  white-space: nowrap;
}

.dropdown-item-text {
  display: block;
  padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
  color: var(--bs-dropdown-link-color);
}

.dropdown-menu-dark {
  --bs-dropdown-color: #dee2e6;
  --bs-dropdown-bg: #343a40;
  --bs-dropdown-border-color: var(--bs-border-color-translucent);
  --bs-dropdown-box-shadow: ;
  --bs-dropdown-link-color: #dee2e6;
  --bs-dropdown-link-hover-color: #ffffff;
  --bs-dropdown-divider-bg: var(--bs-border-color-translucent);
  --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);
  --bs-dropdown-link-active-color: #ffffff;
  --bs-dropdown-link-active-bg: #0d6efd;
  --bs-dropdown-link-disabled-color: #adb5bd;
  --bs-dropdown-header-color: #adb5bd;
}

.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-flex;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  flex: 1 1 auto;
}
.btn-group > .btn-check:checked + .btn,
.btn-group > .btn-check:focus + .btn,
.btn-group > .btn:hover,
.btn-group > .btn:focus,
.btn-group > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn-check:checked + .btn,
.btn-group-vertical > .btn-check:focus + .btn,
.btn-group-vertical > .btn:hover,
.btn-group-vertical > .btn:focus,
.btn-group-vertical > .btn:active,
.btn-group-vertical > .btn.active {
  z-index: 1;
}

.btn-toolbar {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
}
.btn-toolbar .input-group {
  width: auto;
}

.btn-group {
  border-radius: var(--bs-border-radius);
}
.btn-group > :not(.btn-check:first-child) + .btn,
.btn-group > .btn-group:not(:first-child) {
  margin-left: calc(var(--bs-border-width) * -1);
}
.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
.btn-group > .btn.dropdown-toggle-split:first-child,
.btn-group > .btn-group:not(:last-child) > .btn {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.btn-group > .btn:nth-child(n+3),
.btn-group > :not(.btn-check) + .btn,
.btn-group > .btn-group:not(:first-child) > .btn {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}

.dropdown-toggle-split {
  padding-right: 0.5625rem;
  padding-left: 0.5625rem;
}
.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {
  margin-left: 0;
}
.dropstart .dropdown-toggle-split::before {
  margin-right: 0;
}

.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
  padding-right: 0.375rem;
  padding-left: 0.375rem;
}

.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
  padding-right: 0.75rem;
  padding-left: 0.75rem;
}

.btn-group-vertical {
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group {
  width: 100%;
}
.btn-group-vertical > .btn:not(:first-child),
.btn-group-vertical > .btn-group:not(:first-child) {
  margin-top: calc(var(--bs-border-width) * -1);
}
.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
.btn-group-vertical > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn ~ .btn,
.btn-group-vertical > .btn-group:not(:first-child) > .btn {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}

.nav {
  --bs-nav-link-padding-x: 1rem;
  --bs-nav-link-padding-y: 0.5rem;
  --bs-nav-link-font-weight: ;
  --bs-nav-link-color: var(--bs-link-color);
  --bs-nav-link-hover-color: var(--bs-link-hover-color);
  --bs-nav-link-disabled-color: var(--bs-secondary-color);
  display: flex;
  flex-wrap: wrap;
  padding-left: 0;
  margin-bottom: 0;
  list-style: none;
}

.nav-link {
  display: block;
  padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);
  font-size: var(--bs-nav-link-font-size);
  font-weight: var(--bs-nav-link-font-weight);
  color: var(--bs-nav-link-color);
  text-decoration: none;
  background: none;
  border: 0;
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .nav-link {
    transition: none;
  }
}
.nav-link:hover, .nav-link:focus {
  color: var(--bs-nav-link-hover-color);
}
.nav-link:focus-visible {
  outline: 0;
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.nav-link.disabled, .nav-link:disabled {
  color: var(--bs-nav-link-disabled-color);
  pointer-events: none;
  cursor: default;
}

.nav-tabs {
  --bs-nav-tabs-border-width: var(--bs-border-width);
  --bs-nav-tabs-border-color: var(--bs-border-color);
  --bs-nav-tabs-border-radius: var(--bs-border-radius);
  --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);
  --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);
  --bs-nav-tabs-link-active-bg: var(--bs-body-bg);
  --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);
  border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);
}
.nav-tabs .nav-link {
  margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));
  border: var(--bs-nav-tabs-border-width) solid transparent;
  border-top-left-radius: var(--bs-nav-tabs-border-radius);
  border-top-right-radius: var(--bs-nav-tabs-border-radius);
}
.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
  isolation: isolate;
  border-color: var(--bs-nav-tabs-link-hover-border-color);
}
.nav-tabs .nav-link.active,
.nav-tabs .nav-item.show .nav-link {
  color: var(--bs-nav-tabs-link-active-color);
  background-color: var(--bs-nav-tabs-link-active-bg);
  border-color: var(--bs-nav-tabs-link-active-border-color);
}
.nav-tabs .dropdown-menu {
  margin-top: calc(-1 * var(--bs-nav-tabs-border-width));
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}

.nav-pills {
  --bs-nav-pills-border-radius: var(--bs-border-radius);
  --bs-nav-pills-link-active-color: #ffffff;
  --bs-nav-pills-link-active-bg: #0d6efd;
}
.nav-pills .nav-link {
  border-radius: var(--bs-nav-pills-border-radius);
}
.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
  color: var(--bs-nav-pills-link-active-color);
  background-color: var(--bs-nav-pills-link-active-bg);
}

.nav-underline {
  --bs-nav-underline-gap: 1rem;
  --bs-nav-underline-border-width: 0.125rem;
  --bs-nav-underline-link-active-color: var(--bs-emphasis-color);
  gap: var(--bs-nav-underline-gap);
}
.nav-underline .nav-link {
  padding-right: 0;
  padding-left: 0;
  border-bottom: var(--bs-nav-underline-border-width) solid transparent;
}
.nav-underline .nav-link:hover, .nav-underline .nav-link:focus {
  border-bottom-color: currentcolor;
}
.nav-underline .nav-link.active,
.nav-underline .show > .nav-link {
  font-weight: 700;
  color: var(--bs-nav-underline-link-active-color);
  border-bottom-color: currentcolor;
}

.nav-fill > .nav-link,
.nav-fill .nav-item {
  flex: 1 1 auto;
  text-align: center;
}

.nav-justified > .nav-link,
.nav-justified .nav-item {
  flex-basis: 0;
  flex-grow: 1;
  text-align: center;
}

.nav-fill .nav-item .nav-link,
.nav-justified .nav-item .nav-link {
  width: 100%;
}

.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}

.navbar {
  --bs-navbar-padding-x: 0;
  --bs-navbar-padding-y: 0.5rem;
  --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);
  --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);
  --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);
  --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);
  --bs-navbar-brand-padding-y: 0.3125rem;
  --bs-navbar-brand-margin-end: 1rem;
  --bs-navbar-brand-font-size: 1.25rem;
  --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);
  --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);
  --bs-navbar-nav-link-padding-x: 0.5rem;
  --bs-navbar-toggler-padding-y: 0.25rem;
  --bs-navbar-toggler-padding-x: 0.75rem;
  --bs-navbar-toggler-font-size: 1.25rem;
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%2833, 37, 41, 0.75%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e");
  --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);
  --bs-navbar-toggler-border-radius: var(--bs-border-radius);
  --bs-navbar-toggler-focus-width: 0.25rem;
  --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);
}
.navbar > .container,
.navbar > .container-fluid,
.navbar > .container-sm,
.navbar > .container-md,
.navbar > .container-lg,
.navbar > .container-xl,
.navbar > .container-xxl {
  display: flex;
  flex-wrap: inherit;
  align-items: center;
  justify-content: space-between;
}
.navbar-brand {
  padding-top: var(--bs-navbar-brand-padding-y);
  padding-bottom: var(--bs-navbar-brand-padding-y);
  margin-right: var(--bs-navbar-brand-margin-end);
  font-size: var(--bs-navbar-brand-font-size);
  color: var(--bs-navbar-brand-color);
  text-decoration: none;
  white-space: nowrap;
}
.navbar-brand:hover, .navbar-brand:focus {
  color: var(--bs-navbar-brand-hover-color);
}

.navbar-nav {
  --bs-nav-link-padding-x: 0;
  --bs-nav-link-padding-y: 0.5rem;
  --bs-nav-link-font-weight: ;
  --bs-nav-link-color: var(--bs-navbar-color);
  --bs-nav-link-hover-color: var(--bs-navbar-hover-color);
  --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);
  display: flex;
  flex-direction: column;
  padding-left: 0;
  margin-bottom: 0;
  list-style: none;
}
.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {
  color: var(--bs-navbar-active-color);
}
.navbar-nav .dropdown-menu {
  position: static;
}

.navbar-text {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  color: var(--bs-navbar-color);
}
.navbar-text a,
.navbar-text a:hover,
.navbar-text a:focus {
  color: var(--bs-navbar-active-color);
}

.navbar-collapse {
  flex-basis: 100%;
  flex-grow: 1;
  align-items: center;
}

.navbar-toggler {
  padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);
  font-size: var(--bs-navbar-toggler-font-size);
  line-height: 1;
  color: var(--bs-navbar-color);
  background-color: transparent;
  border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);
  border-radius: var(--bs-navbar-toggler-border-radius);
  transition: var(--bs-navbar-toggler-transition);
}
@media (prefers-reduced-motion: reduce) {
  .navbar-toggler {
    transition: none;
  }
}
.navbar-toggler:hover {
  text-decoration: none;
}
.navbar-toggler:focus {
  text-decoration: none;
  outline: 0;
  box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);
}

.navbar-toggler-icon {
  display: inline-block;
  width: 1.5em;
  height: 1.5em;
  vertical-align: middle;
  background-image: var(--bs-navbar-toggler-icon-bg);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 100%;
}

.navbar-nav-scroll {
  max-height: var(--bs-scroll-height, 75vh);
  overflow-y: auto;
}

@media (min-width: 576px) {
  .navbar-expand-sm {
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-sm .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-sm .navbar-nav .dropdown-menu {
    position: absolute;
  }
  .navbar-expand-sm .navbar-nav .nav-link {
    padding-right: var(--bs-navbar-nav-link-padding-x);
    padding-left: var(--bs-navbar-nav-link-padding-x);
  }
  .navbar-expand-sm .navbar-nav-scroll {
    overflow: visible;
  }
  .navbar-expand-sm .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
  .navbar-expand-sm .navbar-toggler {
    display: none;
  }
  .navbar-expand-sm .offcanvas {
    position: static;
    z-index: auto;
    flex-grow: 1;
    width: auto !important;
    height: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none;
  }
  .navbar-expand-sm .offcanvas .offcanvas-header {
    display: none;
  }
  .navbar-expand-sm .offcanvas .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
  }
}
@media (min-width: 768px) {
  .navbar-expand-md {
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-md .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-md .navbar-nav .dropdown-menu {
    position: absolute;
  }
  .navbar-expand-md .navbar-nav .nav-link {
    padding-right: var(--bs-navbar-nav-link-padding-x);
    padding-left: var(--bs-navbar-nav-link-padding-x);
  }
  .navbar-expand-md .navbar-nav-scroll {
    overflow: visible;
  }
  .navbar-expand-md .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
  .navbar-expand-md .navbar-toggler {
    display: none;
  }
  .navbar-expand-md .offcanvas {
    position: static;
    z-index: auto;
    flex-grow: 1;
    width: auto !important;
    height: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none;
  }
  .navbar-expand-md .offcanvas .offcanvas-header {
    display: none;
  }
  .navbar-expand-md .offcanvas .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
  }
}
@media (min-width: 992px) {
  .navbar-expand-lg {
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-lg .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-lg .navbar-nav .dropdown-menu {
    position: absolute;
  }
  .navbar-expand-lg .navbar-nav .nav-link {
    padding-right: var(--bs-navbar-nav-link-padding-x);
    padding-left: var(--bs-navbar-nav-link-padding-x);
  }
  .navbar-expand-lg .navbar-nav-scroll {
    overflow: visible;
  }
  .navbar-expand-lg .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
  .navbar-expand-lg .navbar-toggler {
    display: none;
  }
  .navbar-expand-lg .offcanvas {
    position: static;
    z-index: auto;
    flex-grow: 1;
    width: auto !important;
    height: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none;
  }
  .navbar-expand-lg .offcanvas .offcanvas-header {
    display: none;
  }
  .navbar-expand-lg .offcanvas .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
  }
}
@media (min-width: 1200px) {
  .navbar-expand-xl {
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-xl .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-xl .navbar-nav .dropdown-menu {
    position: absolute;
  }
  .navbar-expand-xl .navbar-nav .nav-link {
    padding-right: var(--bs-navbar-nav-link-padding-x);
    padding-left: var(--bs-navbar-nav-link-padding-x);
  }
  .navbar-expand-xl .navbar-nav-scroll {
    overflow: visible;
  }
  .navbar-expand-xl .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
  .navbar-expand-xl .navbar-toggler {
    display: none;
  }
  .navbar-expand-xl .offcanvas {
    position: static;
    z-index: auto;
    flex-grow: 1;
    width: auto !important;
    height: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none;
  }
  .navbar-expand-xl .offcanvas .offcanvas-header {
    display: none;
  }
  .navbar-expand-xl .offcanvas .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
  }
}
@media (min-width: 1400px) {
  .navbar-expand-xxl {
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-xxl .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-xxl .navbar-nav .dropdown-menu {
    position: absolute;
  }
  .navbar-expand-xxl .navbar-nav .nav-link {
    padding-right: var(--bs-navbar-nav-link-padding-x);
    padding-left: var(--bs-navbar-nav-link-padding-x);
  }
  .navbar-expand-xxl .navbar-nav-scroll {
    overflow: visible;
  }
  .navbar-expand-xxl .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
  .navbar-expand-xxl .navbar-toggler {
    display: none;
  }
  .navbar-expand-xxl .offcanvas {
    position: static;
    z-index: auto;
    flex-grow: 1;
    width: auto !important;
    height: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none;
  }
  .navbar-expand-xxl .offcanvas .offcanvas-header {
    display: none;
  }
  .navbar-expand-xxl .offcanvas .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
  }
}
.navbar-expand {
  flex-wrap: nowrap;
  justify-content: flex-start;
}
.navbar-expand .navbar-nav {
  flex-direction: row;
}
.navbar-expand .navbar-nav .dropdown-menu {
  position: absolute;
}
.navbar-expand .navbar-nav .nav-link {
  padding-right: var(--bs-navbar-nav-link-padding-x);
  padding-left: var(--bs-navbar-nav-link-padding-x);
}
.navbar-expand .navbar-nav-scroll {
  overflow: visible;
}
.navbar-expand .navbar-collapse {
  display: flex !important;
  flex-basis: auto;
}
.navbar-expand .navbar-toggler {
  display: none;
}
.navbar-expand .offcanvas {
  position: static;
  z-index: auto;
  flex-grow: 1;
  width: auto !important;
  height: auto !important;
  visibility: visible !important;
  background-color: transparent !important;
  border: 0 !important;
  transform: none !important;
  transition: none;
}
.navbar-expand .offcanvas .offcanvas-header {
  display: none;
}
.navbar-expand .offcanvas .offcanvas-body {
  display: flex;
  flex-grow: 0;
  padding: 0;
  overflow-y: visible;
}

.navbar-dark,
.navbar[data-bs-theme=dark] {
  --bs-navbar-color: rgba(255, 255, 255, 0.55);
  --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);
  --bs-navbar-active-color: #ffffff;
  --bs-navbar-brand-color: #ffffff;
  --bs-navbar-brand-hover-color: #ffffff;
  --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%28255, 255, 255, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e");
}

[data-bs-theme=dark] .navbar-toggler-icon {
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%28255, 255, 255, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e");
}

.card {
  --bs-card-spacer-y: 1rem;
  --bs-card-spacer-x: 1rem;
  --bs-card-title-spacer-y: 0.5rem;
  --bs-card-title-color: ;
  --bs-card-subtitle-color: ;
  --bs-card-border-width: var(--bs-border-width);
  --bs-card-border-color: var(--bs-border-color-translucent);
  --bs-card-border-radius: var(--bs-border-radius);
  --bs-card-box-shadow: ;
  --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));
  --bs-card-cap-padding-y: 0.5rem;
  --bs-card-cap-padding-x: 1rem;
  --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);
  --bs-card-cap-color: ;
  --bs-card-height: ;
  --bs-card-color: ;
  --bs-card-bg: var(--bs-body-bg);
  --bs-card-img-overlay-padding: 1rem;
  --bs-card-group-margin: 0.75rem;
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  height: var(--bs-card-height);
  color: var(--bs-body-color);
  word-wrap: break-word;
  background-color: var(--bs-card-bg);
  background-clip: border-box;
  border: var(--bs-card-border-width) solid var(--bs-card-border-color);
  border-radius: var(--bs-card-border-radius);
}
.card > hr {
  margin-right: 0;
  margin-left: 0;
}
.card > .list-group {
  border-top: inherit;
  border-bottom: inherit;
}
.card > .list-group:first-child {
  border-top-width: 0;
  border-top-left-radius: var(--bs-card-inner-border-radius);
  border-top-right-radius: var(--bs-card-inner-border-radius);
}
.card > .list-group:last-child {
  border-bottom-width: 0;
  border-bottom-right-radius: var(--bs-card-inner-border-radius);
  border-bottom-left-radius: var(--bs-card-inner-border-radius);
}
.card > .card-header + .list-group,
.card > .list-group + .card-footer {
  border-top: 0;
}

.card-body {
  flex: 1 1 auto;
  padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);
  color: var(--bs-card-color);
}

.card-title {
  margin-bottom: var(--bs-card-title-spacer-y);
  color: var(--bs-card-title-color);
}

.card-subtitle {
  margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));
  margin-bottom: 0;
  color: var(--bs-card-subtitle-color);
}

.card-text:last-child {
  margin-bottom: 0;
}

.card-link + .card-link {
  margin-left: var(--bs-card-spacer-x);
}

.card-header {
  padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
  margin-bottom: 0;
  color: var(--bs-card-cap-color);
  background-color: var(--bs-card-cap-bg);
  border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);
}
.card-header:first-child {
  border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;
}

.card-footer {
  padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
  color: var(--bs-card-cap-color);
  background-color: var(--bs-card-cap-bg);
  border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);
}
.card-footer:last-child {
  border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);
}

.card-header-tabs {
  margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
  margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));
  margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
  border-bottom: 0;
}
.card-header-tabs .nav-link.active {
  background-color: var(--bs-card-bg);
  border-bottom-color: var(--bs-card-bg);
}

.card-header-pills {
  margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
  margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
}

.card-img-overlay {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  padding: var(--bs-card-img-overlay-padding);
  border-radius: var(--bs-card-inner-border-radius);
}

.card-img,
.card-img-top,
.card-img-bottom {
  width: 100%;
}

.card-img,
.card-img-top {
  border-top-left-radius: var(--bs-card-inner-border-radius);
  border-top-right-radius: var(--bs-card-inner-border-radius);
}

.card-img,
.card-img-bottom {
  border-bottom-right-radius: var(--bs-card-inner-border-radius);
  border-bottom-left-radius: var(--bs-card-inner-border-radius);
}

.card-group > .card {
  margin-bottom: var(--bs-card-group-margin);
}
@media (min-width: 576px) {
  .card-group {
    display: flex;
    flex-flow: row wrap;
  }
  .card-group > .card {
    flex: 1 0 0%;
    margin-bottom: 0;
  }
  .card-group > .card + .card {
    margin-left: 0;
    border-left: 0;
  }
  .card-group > .card:not(:last-child) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
  }
  .card-group > .card:not(:last-child) .card-img-top,
  .card-group > .card:not(:last-child) .card-header {
    border-top-right-radius: 0;
  }
  .card-group > .card:not(:last-child) .card-img-bottom,
  .card-group > .card:not(:last-child) .card-footer {
    border-bottom-right-radius: 0;
  }
  .card-group > .card:not(:first-child) {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
  }
  .card-group > .card:not(:first-child) .card-img-top,
  .card-group > .card:not(:first-child) .card-header {
    border-top-left-radius: 0;
  }
  .card-group > .card:not(:first-child) .card-img-bottom,
  .card-group > .card:not(:first-child) .card-footer {
    border-bottom-left-radius: 0;
  }
}

.accordion {
  --bs-accordion-color: var(--bs-body-color);
  --bs-accordion-bg: var(--bs-body-bg);
  --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;
  --bs-accordion-border-color: var(--bs-border-color);
  --bs-accordion-border-width: var(--bs-border-width);
  --bs-accordion-border-radius: var(--bs-border-radius);
  --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));
  --bs-accordion-btn-padding-x: 1.25rem;
  --bs-accordion-btn-padding-y: 1rem;
  --bs-accordion-btn-color: var(--bs-body-color);
  --bs-accordion-btn-bg: var(--bs-accordion-bg);
  --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23212529%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e");
  --bs-accordion-btn-icon-width: 1.25rem;
  --bs-accordion-btn-icon-transform: rotate(-180deg);
  --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;
  --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23052c65%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e");
  --bs-accordion-btn-focus-border-color: #86b7fe;
  --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
  --bs-accordion-body-padding-x: 1.25rem;
  --bs-accordion-body-padding-y: 1rem;
  --bs-accordion-active-color: var(--bs-primary-text-emphasis);
  --bs-accordion-active-bg: var(--bs-primary-bg-subtle);
}

.accordion-button {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);
  font-size: 1rem;
  color: var(--bs-accordion-btn-color);
  text-align: left;
  background-color: var(--bs-accordion-btn-bg);
  border: 0;
  border-radius: 0;
  overflow-anchor: none;
  transition: var(--bs-accordion-transition);
}
@media (prefers-reduced-motion: reduce) {
  .accordion-button {
    transition: none;
  }
}
.accordion-button:not(.collapsed) {
  color: var(--bs-accordion-active-color);
  background-color: var(--bs-accordion-active-bg);
  box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);
}
.accordion-button:not(.collapsed)::after {
  background-image: var(--bs-accordion-btn-active-icon);
  transform: var(--bs-accordion-btn-icon-transform);
}
.accordion-button::after {
  flex-shrink: 0;
  width: var(--bs-accordion-btn-icon-width);
  height: var(--bs-accordion-btn-icon-width);
  margin-left: auto;
  content: "";
  background-image: var(--bs-accordion-btn-icon);
  background-repeat: no-repeat;
  background-size: var(--bs-accordion-btn-icon-width);
  transition: var(--bs-accordion-btn-icon-transition);
}
@media (prefers-reduced-motion: reduce) {
  .accordion-button::after {
    transition: none;
  }
}
.accordion-button:hover {
  z-index: 2;
}
.accordion-button:focus {
  z-index: 3;
  border-color: var(--bs-accordion-btn-focus-border-color);
  outline: 0;
  box-shadow: var(--bs-accordion-btn-focus-box-shadow);
}

.accordion-header {
  margin-bottom: 0;
}

.accordion-item {
  color: var(--bs-accordion-color);
  background-color: var(--bs-accordion-bg);
  border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);
}
.accordion-item:first-of-type {
  border-top-left-radius: var(--bs-accordion-border-radius);
  border-top-right-radius: var(--bs-accordion-border-radius);
}
.accordion-item:first-of-type .accordion-button {
  border-top-left-radius: var(--bs-accordion-inner-border-radius);
  border-top-right-radius: var(--bs-accordion-inner-border-radius);
}
.accordion-item:not(:first-of-type) {
  border-top: 0;
}
.accordion-item:last-of-type {
  border-bottom-right-radius: var(--bs-accordion-border-radius);
  border-bottom-left-radius: var(--bs-accordion-border-radius);
}
.accordion-item:last-of-type .accordion-button.collapsed {
  border-bottom-right-radius: var(--bs-accordion-inner-border-radius);
  border-bottom-left-radius: var(--bs-accordion-inner-border-radius);
}
.accordion-item:last-of-type .accordion-collapse {
  border-bottom-right-radius: var(--bs-accordion-border-radius);
  border-bottom-left-radius: var(--bs-accordion-border-radius);
}

.accordion-body {
  padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);
}

.accordion-flush .accordion-collapse {
  border-width: 0;
}
.accordion-flush .accordion-item {
  border-right: 0;
  border-left: 0;
  border-radius: 0;
}
.accordion-flush .accordion-item:first-child {
  border-top: 0;
}
.accordion-flush .accordion-item:last-child {
  border-bottom: 0;
}
.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed {
  border-radius: 0;
}

[data-bs-theme=dark] .accordion-button::after {
  --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%236ea8fe%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e");
  --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%236ea8fe%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e");
}

.breadcrumb {
  --bs-breadcrumb-padding-x: 0;
  --bs-breadcrumb-padding-y: 0;
  --bs-breadcrumb-margin-bottom: 1rem;
  --bs-breadcrumb-bg: ;
  --bs-breadcrumb-border-radius: ;
  --bs-breadcrumb-divider-color: var(--bs-secondary-color);
  --bs-breadcrumb-item-padding-x: 0.5rem;
  --bs-breadcrumb-item-active-color: var(--bs-secondary-color);
  display: flex;
  flex-wrap: wrap;
  padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);
  margin-bottom: var(--bs-breadcrumb-margin-bottom);
  font-size: var(--bs-breadcrumb-font-size);
  list-style: none;
  background-color: var(--bs-breadcrumb-bg);
  border-radius: var(--bs-breadcrumb-border-radius);
}

.breadcrumb-item + .breadcrumb-item {
  padding-left: var(--bs-breadcrumb-item-padding-x);
}
.breadcrumb-item + .breadcrumb-item::before {
  float: left;
  padding-right: var(--bs-breadcrumb-item-padding-x);
  color: var(--bs-breadcrumb-divider-color);
  content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */;
}
.breadcrumb-item.active {
  color: var(--bs-breadcrumb-item-active-color);
}

.pagination {
  --bs-pagination-padding-x: 0.75rem;
  --bs-pagination-padding-y: 0.375rem;
  --bs-pagination-font-size: 1rem;
  --bs-pagination-color: var(--bs-link-color);
  --bs-pagination-bg: var(--bs-body-bg);
  --bs-pagination-border-width: var(--bs-border-width);
  --bs-pagination-border-color: var(--bs-border-color);
  --bs-pagination-border-radius: var(--bs-border-radius);
  --bs-pagination-hover-color: var(--bs-link-hover-color);
  --bs-pagination-hover-bg: var(--bs-tertiary-bg);
  --bs-pagination-hover-border-color: var(--bs-border-color);
  --bs-pagination-focus-color: var(--bs-link-hover-color);
  --bs-pagination-focus-bg: var(--bs-secondary-bg);
  --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
  --bs-pagination-active-color: #ffffff;
  --bs-pagination-active-bg: #0d6efd;
  --bs-pagination-active-border-color: #0d6efd;
  --bs-pagination-disabled-color: var(--bs-secondary-color);
  --bs-pagination-disabled-bg: var(--bs-secondary-bg);
  --bs-pagination-disabled-border-color: var(--bs-border-color);
  display: flex;
  padding-left: 0;
  list-style: none;
}

.page-link {
  position: relative;
  display: block;
  padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);
  font-size: var(--bs-pagination-font-size);
  color: var(--bs-pagination-color);
  text-decoration: none;
  background-color: var(--bs-pagination-bg);
  border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .page-link {
    transition: none;
  }
}
.page-link:hover {
  z-index: 2;
  color: var(--bs-pagination-hover-color);
  background-color: var(--bs-pagination-hover-bg);
  border-color: var(--bs-pagination-hover-border-color);
}
.page-link:focus {
  z-index: 3;
  color: var(--bs-pagination-focus-color);
  background-color: var(--bs-pagination-focus-bg);
  outline: 0;
  box-shadow: var(--bs-pagination-focus-box-shadow);
}
.page-link.active, .active > .page-link {
  z-index: 3;
  color: var(--bs-pagination-active-color);
  background-color: var(--bs-pagination-active-bg);
  border-color: var(--bs-pagination-active-border-color);
}
.page-link.disabled, .disabled > .page-link {
  color: var(--bs-pagination-disabled-color);
  pointer-events: none;
  background-color: var(--bs-pagination-disabled-bg);
  border-color: var(--bs-pagination-disabled-border-color);
}

.page-item:not(:first-child) .page-link {
  margin-left: calc(var(--bs-border-width) * -1);
}
.page-item:first-child .page-link {
  border-top-left-radius: var(--bs-pagination-border-radius);
  border-bottom-left-radius: var(--bs-pagination-border-radius);
}
.page-item:last-child .page-link {
  border-top-right-radius: var(--bs-pagination-border-radius);
  border-bottom-right-radius: var(--bs-pagination-border-radius);
}

.pagination-lg {
  --bs-pagination-padding-x: 1.5rem;
  --bs-pagination-padding-y: 0.75rem;
  --bs-pagination-font-size: 1.25rem;
  --bs-pagination-border-radius: var(--bs-border-radius-lg);
}

.pagination-sm {
  --bs-pagination-padding-x: 0.5rem;
  --bs-pagination-padding-y: 0.25rem;
  --bs-pagination-font-size: 0.875rem;
  --bs-pagination-border-radius: var(--bs-border-radius-sm);
}

.badge {
  --bs-badge-padding-x: 0.65em;
  --bs-badge-padding-y: 0.35em;
  --bs-badge-font-size: 0.75em;
  --bs-badge-font-weight: 700;
  --bs-badge-color: #ffffff;
  --bs-badge-border-radius: var(--bs-border-radius);
  display: inline-block;
  padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
  font-size: var(--bs-badge-font-size);
  font-weight: var(--bs-badge-font-weight);
  line-height: 1;
  color: var(--bs-badge-color);
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: var(--bs-badge-border-radius);
}
.badge:empty {
  display: none;
}

.btn .badge {
  position: relative;
  top: -1px;
}

.alert {
  --bs-alert-bg: transparent;
  --bs-alert-padding-x: 1rem;
  --bs-alert-padding-y: 1rem;
  --bs-alert-margin-bottom: 1rem;
  --bs-alert-color: inherit;
  --bs-alert-border-color: transparent;
  --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);
  --bs-alert-border-radius: var(--bs-border-radius);
  --bs-alert-link-color: inherit;
  position: relative;
  padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);
  margin-bottom: var(--bs-alert-margin-bottom);
  color: var(--bs-alert-color);
  background-color: var(--bs-alert-bg);
  border: var(--bs-alert-border);
  border-radius: var(--bs-alert-border-radius);
}

.alert-heading {
  color: inherit;
}

.alert-link {
  font-weight: 700;
  color: var(--bs-alert-link-color);
}

.alert-dismissible {
  padding-right: 3rem;
}
.alert-dismissible .btn-close {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  padding: 1.25rem 1rem;
}

.alert-light {
  --bs-alert-color: var(--bs-light-text-emphasis);
  --bs-alert-bg: var(--bs-light-bg-subtle);
  --bs-alert-border-color: var(--bs-light-border-subtle);
  --bs-alert-link-color: var(--bs-light-text-emphasis);
}

.alert-dark {
  --bs-alert-color: var(--bs-dark-text-emphasis);
  --bs-alert-bg: var(--bs-dark-bg-subtle);
  --bs-alert-border-color: var(--bs-dark-border-subtle);
  --bs-alert-link-color: var(--bs-dark-text-emphasis);
}

.alert-primary {
  --bs-alert-color: var(--bs-primary-text-emphasis);
  --bs-alert-bg: var(--bs-primary-bg-subtle);
  --bs-alert-border-color: var(--bs-primary-border-subtle);
  --bs-alert-link-color: var(--bs-primary-text-emphasis);
}

.alert-secondary {
  --bs-alert-color: var(--bs-secondary-text-emphasis);
  --bs-alert-bg: var(--bs-secondary-bg-subtle);
  --bs-alert-border-color: var(--bs-secondary-border-subtle);
  --bs-alert-link-color: var(--bs-secondary-text-emphasis);
}

.alert-secondaryDark {
  --bs-alert-color: var(--bs-secondaryDark-text-emphasis);
  --bs-alert-bg: var(--bs-secondaryDark-bg-subtle);
  --bs-alert-border-color: var(--bs-secondaryDark-border-subtle);
  --bs-alert-link-color: var(--bs-secondaryDark-text-emphasis);
}

.alert-secondaryDarker {
  --bs-alert-color: var(--bs-secondaryDarker-text-emphasis);
  --bs-alert-bg: var(--bs-secondaryDarker-bg-subtle);
  --bs-alert-border-color: var(--bs-secondaryDarker-border-subtle);
  --bs-alert-link-color: var(--bs-secondaryDarker-text-emphasis);
}

.alert-info {
  --bs-alert-color: var(--bs-info-text-emphasis);
  --bs-alert-bg: var(--bs-info-bg-subtle);
  --bs-alert-border-color: var(--bs-info-border-subtle);
  --bs-alert-link-color: var(--bs-info-text-emphasis);
}

.alert-infoLight {
  --bs-alert-color: var(--bs-infoLight-text-emphasis);
  --bs-alert-bg: var(--bs-infoLight-bg-subtle);
  --bs-alert-border-color: var(--bs-infoLight-border-subtle);
  --bs-alert-link-color: var(--bs-infoLight-text-emphasis);
}

.alert-success {
  --bs-alert-color: var(--bs-success-text-emphasis);
  --bs-alert-bg: var(--bs-success-bg-subtle);
  --bs-alert-border-color: var(--bs-success-border-subtle);
  --bs-alert-link-color: var(--bs-success-text-emphasis);
}

.alert-successDark {
  --bs-alert-color: var(--bs-successDark-text-emphasis);
  --bs-alert-bg: var(--bs-successDark-bg-subtle);
  --bs-alert-border-color: var(--bs-successDark-border-subtle);
  --bs-alert-link-color: var(--bs-successDark-text-emphasis);
}

.alert-warning {
  --bs-alert-color: var(--bs-warning-text-emphasis);
  --bs-alert-bg: var(--bs-warning-bg-subtle);
  --bs-alert-border-color: var(--bs-warning-border-subtle);
  --bs-alert-link-color: var(--bs-warning-text-emphasis);
}

.alert-danger {
  --bs-alert-color: var(--bs-danger-text-emphasis);
  --bs-alert-bg: var(--bs-danger-bg-subtle);
  --bs-alert-border-color: var(--bs-danger-border-subtle);
  --bs-alert-link-color: var(--bs-danger-text-emphasis);
}

@keyframes progress-bar-stripes {
  0% {
    background-position-x: 1rem;
  }
}
.progress,
.progress-stacked {
  --bs-progress-height: 1rem;
  --bs-progress-font-size: 0.75rem;
  --bs-progress-bg: var(--bs-secondary-bg);
  --bs-progress-border-radius: var(--bs-border-radius);
  --bs-progress-box-shadow: var(--bs-box-shadow-inset);
  --bs-progress-bar-color: #ffffff;
  --bs-progress-bar-bg: #0d6efd;
  --bs-progress-bar-transition: width 0.6s ease;
  display: flex;
  height: var(--bs-progress-height);
  overflow: hidden;
  font-size: var(--bs-progress-font-size);
  background-color: var(--bs-progress-bg);
  border-radius: var(--bs-progress-border-radius);
}

.progress-bar {
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
  color: var(--bs-progress-bar-color);
  text-align: center;
  white-space: nowrap;
  background-color: var(--bs-progress-bar-bg);
  transition: var(--bs-progress-bar-transition);
}
@media (prefers-reduced-motion: reduce) {
  .progress-bar {
    transition: none;
  }
}

.progress-bar-striped {
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: var(--bs-progress-height) var(--bs-progress-height);
}

.progress-stacked > .progress {
  overflow: visible;
}

.progress-stacked > .progress > .progress-bar {
  width: 100%;
}

.progress-bar-animated {
  animation: 1s linear infinite progress-bar-stripes;
}
@media (prefers-reduced-motion: reduce) {
  .progress-bar-animated {
    animation: none;
  }
}

.list-group {
  --bs-list-group-color: var(--bs-body-color);
  --bs-list-group-bg: var(--bs-body-bg);
  --bs-list-group-border-color: var(--bs-border-color);
  --bs-list-group-border-width: var(--bs-border-width);
  --bs-list-group-border-radius: var(--bs-border-radius);
  --bs-list-group-item-padding-x: 1rem;
  --bs-list-group-item-padding-y: 0.5rem;
  --bs-list-group-action-color: var(--bs-secondary-color);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);
  --bs-list-group-action-active-color: var(--bs-body-color);
  --bs-list-group-action-active-bg: var(--bs-secondary-bg);
  --bs-list-group-disabled-color: var(--bs-secondary-color);
  --bs-list-group-disabled-bg: var(--bs-body-bg);
  --bs-list-group-active-color: #ffffff;
  --bs-list-group-active-bg: #0d6efd;
  --bs-list-group-active-border-color: #0d6efd;
  display: flex;
  flex-direction: column;
  padding-left: 0;
  margin-bottom: 0;
  border-radius: var(--bs-list-group-border-radius);
}

.list-group-numbered {
  list-style-type: none;
  counter-reset: section;
}
.list-group-numbered > .list-group-item::before {
  content: counters(section, ".") ". ";
  counter-increment: section;
}

.list-group-item-action {
  width: 100%;
  color: var(--bs-list-group-action-color);
  text-align: inherit;
}
.list-group-item-action:hover, .list-group-item-action:focus {
  z-index: 1;
  color: var(--bs-list-group-action-hover-color);
  text-decoration: none;
  background-color: var(--bs-list-group-action-hover-bg);
}
.list-group-item-action:active {
  color: var(--bs-list-group-action-active-color);
  background-color: var(--bs-list-group-action-active-bg);
}

.list-group-item {
  position: relative;
  display: block;
  padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);
  color: var(--bs-list-group-color);
  text-decoration: none;
  background-color: var(--bs-list-group-bg);
  border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);
}
.list-group-item:first-child {
  border-top-left-radius: inherit;
  border-top-right-radius: inherit;
}
.list-group-item:last-child {
  border-bottom-right-radius: inherit;
  border-bottom-left-radius: inherit;
}
.list-group-item.disabled, .list-group-item:disabled {
  color: var(--bs-list-group-disabled-color);
  pointer-events: none;
  background-color: var(--bs-list-group-disabled-bg);
}
.list-group-item.active {
  z-index: 2;
  color: var(--bs-list-group-active-color);
  background-color: var(--bs-list-group-active-bg);
  border-color: var(--bs-list-group-active-border-color);
}
.list-group-item + .list-group-item {
  border-top-width: 0;
}
.list-group-item + .list-group-item.active {
  margin-top: calc(-1 * var(--bs-list-group-border-width));
  border-top-width: var(--bs-list-group-border-width);
}

.list-group-horizontal {
  flex-direction: row;
}
.list-group-horizontal > .list-group-item:first-child:not(:last-child) {
  border-bottom-left-radius: var(--bs-list-group-border-radius);
  border-top-right-radius: 0;
}
.list-group-horizontal > .list-group-item:last-child:not(:first-child) {
  border-top-right-radius: var(--bs-list-group-border-radius);
  border-bottom-left-radius: 0;
}
.list-group-horizontal > .list-group-item.active {
  margin-top: 0;
}
.list-group-horizontal > .list-group-item + .list-group-item {
  border-top-width: var(--bs-list-group-border-width);
  border-left-width: 0;
}
.list-group-horizontal > .list-group-item + .list-group-item.active {
  margin-left: calc(-1 * var(--bs-list-group-border-width));
  border-left-width: var(--bs-list-group-border-width);
}

@media (min-width: 576px) {
  .list-group-horizontal-sm {
    flex-direction: row;
  }
  .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {
    border-bottom-left-radius: var(--bs-list-group-border-radius);
    border-top-right-radius: 0;
  }
  .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {
    border-top-right-radius: var(--bs-list-group-border-radius);
    border-bottom-left-radius: 0;
  }
  .list-group-horizontal-sm > .list-group-item.active {
    margin-top: 0;
  }
  .list-group-horizontal-sm > .list-group-item + .list-group-item {
    border-top-width: var(--bs-list-group-border-width);
    border-left-width: 0;
  }
  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
    margin-left: calc(-1 * var(--bs-list-group-border-width));
    border-left-width: var(--bs-list-group-border-width);
  }
}
@media (min-width: 768px) {
  .list-group-horizontal-md {
    flex-direction: row;
  }
  .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {
    border-bottom-left-radius: var(--bs-list-group-border-radius);
    border-top-right-radius: 0;
  }
  .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {
    border-top-right-radius: var(--bs-list-group-border-radius);
    border-bottom-left-radius: 0;
  }
  .list-group-horizontal-md > .list-group-item.active {
    margin-top: 0;
  }
  .list-group-horizontal-md > .list-group-item + .list-group-item {
    border-top-width: var(--bs-list-group-border-width);
    border-left-width: 0;
  }
  .list-group-horizontal-md > .list-group-item + .list-group-item.active {
    margin-left: calc(-1 * var(--bs-list-group-border-width));
    border-left-width: var(--bs-list-group-border-width);
  }
}
@media (min-width: 992px) {
  .list-group-horizontal-lg {
    flex-direction: row;
  }
  .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {
    border-bottom-left-radius: var(--bs-list-group-border-radius);
    border-top-right-radius: 0;
  }
  .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {
    border-top-right-radius: var(--bs-list-group-border-radius);
    border-bottom-left-radius: 0;
  }
  .list-group-horizontal-lg > .list-group-item.active {
    margin-top: 0;
  }
  .list-group-horizontal-lg > .list-group-item + .list-group-item {
    border-top-width: var(--bs-list-group-border-width);
    border-left-width: 0;
  }
  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
    margin-left: calc(-1 * var(--bs-list-group-border-width));
    border-left-width: var(--bs-list-group-border-width);
  }
}
@media (min-width: 1200px) {
  .list-group-horizontal-xl {
    flex-direction: row;
  }
  .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {
    border-bottom-left-radius: var(--bs-list-group-border-radius);
    border-top-right-radius: 0;
  }
  .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {
    border-top-right-radius: var(--bs-list-group-border-radius);
    border-bottom-left-radius: 0;
  }
  .list-group-horizontal-xl > .list-group-item.active {
    margin-top: 0;
  }
  .list-group-horizontal-xl > .list-group-item + .list-group-item {
    border-top-width: var(--bs-list-group-border-width);
    border-left-width: 0;
  }
  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
    margin-left: calc(-1 * var(--bs-list-group-border-width));
    border-left-width: var(--bs-list-group-border-width);
  }
}
@media (min-width: 1400px) {
  .list-group-horizontal-xxl {
    flex-direction: row;
  }
  .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {
    border-bottom-left-radius: var(--bs-list-group-border-radius);
    border-top-right-radius: 0;
  }
  .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {
    border-top-right-radius: var(--bs-list-group-border-radius);
    border-bottom-left-radius: 0;
  }
  .list-group-horizontal-xxl > .list-group-item.active {
    margin-top: 0;
  }
  .list-group-horizontal-xxl > .list-group-item + .list-group-item {
    border-top-width: var(--bs-list-group-border-width);
    border-left-width: 0;
  }
  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {
    margin-left: calc(-1 * var(--bs-list-group-border-width));
    border-left-width: var(--bs-list-group-border-width);
  }
}
.list-group-flush {
  border-radius: 0;
}
.list-group-flush > .list-group-item {
  border-width: 0 0 var(--bs-list-group-border-width);
}
.list-group-flush > .list-group-item:last-child {
  border-bottom-width: 0;
}

.list-group-item-light {
  --bs-list-group-color: var(--bs-light-text-emphasis);
  --bs-list-group-bg: var(--bs-light-bg-subtle);
  --bs-list-group-border-color: var(--bs-light-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-light-border-subtle);
  --bs-list-group-active-color: var(--bs-light-bg-subtle);
  --bs-list-group-active-bg: var(--bs-light-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-light-text-emphasis);
}

.list-group-item-dark {
  --bs-list-group-color: var(--bs-dark-text-emphasis);
  --bs-list-group-bg: var(--bs-dark-bg-subtle);
  --bs-list-group-border-color: var(--bs-dark-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);
  --bs-list-group-active-color: var(--bs-dark-bg-subtle);
  --bs-list-group-active-bg: var(--bs-dark-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);
}

.list-group-item-primary {
  --bs-list-group-color: var(--bs-primary-text-emphasis);
  --bs-list-group-bg: var(--bs-primary-bg-subtle);
  --bs-list-group-border-color: var(--bs-primary-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);
  --bs-list-group-active-color: var(--bs-primary-bg-subtle);
  --bs-list-group-active-bg: var(--bs-primary-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);
}

.list-group-item-secondary {
  --bs-list-group-color: var(--bs-secondary-text-emphasis);
  --bs-list-group-bg: var(--bs-secondary-bg-subtle);
  --bs-list-group-border-color: var(--bs-secondary-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);
  --bs-list-group-active-color: var(--bs-secondary-bg-subtle);
  --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);
}

.list-group-item-secondaryDark {
  --bs-list-group-color: var(--bs-secondaryDark-text-emphasis);
  --bs-list-group-bg: var(--bs-secondaryDark-bg-subtle);
  --bs-list-group-border-color: var(--bs-secondaryDark-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-secondaryDark-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-secondaryDark-border-subtle);
  --bs-list-group-active-color: var(--bs-secondaryDark-bg-subtle);
  --bs-list-group-active-bg: var(--bs-secondaryDark-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-secondaryDark-text-emphasis);
}

.list-group-item-secondaryDarker {
  --bs-list-group-color: var(--bs-secondaryDarker-text-emphasis);
  --bs-list-group-bg: var(--bs-secondaryDarker-bg-subtle);
  --bs-list-group-border-color: var(--bs-secondaryDarker-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-secondaryDarker-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-secondaryDarker-border-subtle);
  --bs-list-group-active-color: var(--bs-secondaryDarker-bg-subtle);
  --bs-list-group-active-bg: var(--bs-secondaryDarker-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-secondaryDarker-text-emphasis);
}

.list-group-item-info {
  --bs-list-group-color: var(--bs-info-text-emphasis);
  --bs-list-group-bg: var(--bs-info-bg-subtle);
  --bs-list-group-border-color: var(--bs-info-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-info-border-subtle);
  --bs-list-group-active-color: var(--bs-info-bg-subtle);
  --bs-list-group-active-bg: var(--bs-info-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-info-text-emphasis);
}

.list-group-item-infoLight {
  --bs-list-group-color: var(--bs-infoLight-text-emphasis);
  --bs-list-group-bg: var(--bs-infoLight-bg-subtle);
  --bs-list-group-border-color: var(--bs-infoLight-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-infoLight-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-infoLight-border-subtle);
  --bs-list-group-active-color: var(--bs-infoLight-bg-subtle);
  --bs-list-group-active-bg: var(--bs-infoLight-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-infoLight-text-emphasis);
}

.list-group-item-success {
  --bs-list-group-color: var(--bs-success-text-emphasis);
  --bs-list-group-bg: var(--bs-success-bg-subtle);
  --bs-list-group-border-color: var(--bs-success-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-success-border-subtle);
  --bs-list-group-active-color: var(--bs-success-bg-subtle);
  --bs-list-group-active-bg: var(--bs-success-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-success-text-emphasis);
}

.list-group-item-successDark {
  --bs-list-group-color: var(--bs-successDark-text-emphasis);
  --bs-list-group-bg: var(--bs-successDark-bg-subtle);
  --bs-list-group-border-color: var(--bs-successDark-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-successDark-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-successDark-border-subtle);
  --bs-list-group-active-color: var(--bs-successDark-bg-subtle);
  --bs-list-group-active-bg: var(--bs-successDark-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-successDark-text-emphasis);
}

.list-group-item-warning {
  --bs-list-group-color: var(--bs-warning-text-emphasis);
  --bs-list-group-bg: var(--bs-warning-bg-subtle);
  --bs-list-group-border-color: var(--bs-warning-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);
  --bs-list-group-active-color: var(--bs-warning-bg-subtle);
  --bs-list-group-active-bg: var(--bs-warning-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);
}

.list-group-item-danger {
  --bs-list-group-color: var(--bs-danger-text-emphasis);
  --bs-list-group-bg: var(--bs-danger-bg-subtle);
  --bs-list-group-border-color: var(--bs-danger-border-subtle);
  --bs-list-group-action-hover-color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);
  --bs-list-group-action-active-color: var(--bs-emphasis-color);
  --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);
  --bs-list-group-active-color: var(--bs-danger-bg-subtle);
  --bs-list-group-active-bg: var(--bs-danger-text-emphasis);
  --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);
}

.btn-close {
  --bs-btn-close-color: #000;
  --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23000%27%3e%3cpath d=%27M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z%27/%3e%3c/svg%3e");
  --bs-btn-close-opacity: 0.5;
  --bs-btn-close-hover-opacity: 0.75;
  --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
  --bs-btn-close-focus-opacity: 1;
  --bs-btn-close-disabled-opacity: 0.25;
  --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);
  box-sizing: content-box;
  width: 1em;
  height: 1em;
  padding: 0.25em 0.25em;
  color: var(--bs-btn-close-color);
  background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;
  border: 0;
  border-radius: 0.375rem;
  opacity: var(--bs-btn-close-opacity);
}
.btn-close:hover {
  color: var(--bs-btn-close-color);
  text-decoration: none;
  opacity: var(--bs-btn-close-hover-opacity);
}
.btn-close:focus {
  outline: 0;
  box-shadow: var(--bs-btn-close-focus-shadow);
  opacity: var(--bs-btn-close-focus-opacity);
}
.btn-close:disabled, .btn-close.disabled {
  pointer-events: none;
  user-select: none;
  opacity: var(--bs-btn-close-disabled-opacity);
}

.btn-close-white {
  filter: var(--bs-btn-close-white-filter);
}

[data-bs-theme=dark] .btn-close {
  filter: var(--bs-btn-close-white-filter);
}

.toast {
  --bs-toast-zindex: 1090;
  --bs-toast-padding-x: 0.75rem;
  --bs-toast-padding-y: 0.5rem;
  --bs-toast-spacing: 1.5rem;
  --bs-toast-max-width: 350px;
  --bs-toast-font-size: 0.875rem;
  --bs-toast-color: ;
  --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);
  --bs-toast-border-width: var(--bs-border-width);
  --bs-toast-border-color: var(--bs-border-color-translucent);
  --bs-toast-border-radius: var(--bs-border-radius);
  --bs-toast-box-shadow: var(--bs-box-shadow);
  --bs-toast-header-color: var(--bs-secondary-color);
  --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);
  --bs-toast-header-border-color: var(--bs-border-color-translucent);
  width: var(--bs-toast-max-width);
  max-width: 100%;
  font-size: var(--bs-toast-font-size);
  color: var(--bs-toast-color);
  pointer-events: auto;
  background-color: var(--bs-toast-bg);
  background-clip: padding-box;
  border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);
  box-shadow: var(--bs-toast-box-shadow);
  border-radius: var(--bs-toast-border-radius);
}
.toast.showing {
  opacity: 0;
}
.toast:not(.show) {
  display: none;
}

.toast-container {
  --bs-toast-zindex: 1090;
  position: absolute;
  z-index: var(--bs-toast-zindex);
  width: max-content;
  max-width: 100%;
  pointer-events: none;
}
.toast-container > :not(:last-child) {
  margin-bottom: var(--bs-toast-spacing);
}

.toast-header {
  display: flex;
  align-items: center;
  padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);
  color: var(--bs-toast-header-color);
  background-color: var(--bs-toast-header-bg);
  background-clip: padding-box;
  border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);
  border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));
  border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));
}
.toast-header .btn-close {
  margin-right: calc(-0.5 * var(--bs-toast-padding-x));
  margin-left: var(--bs-toast-padding-x);
}

.toast-body {
  padding: var(--bs-toast-padding-x);
  word-wrap: break-word;
}

.modal {
  --bs-modal-zindex: 1055;
  --bs-modal-width: 500px;
  --bs-modal-padding: 1rem;
  --bs-modal-margin: 0.5rem;
  --bs-modal-color: ;
  --bs-modal-bg: var(--bs-body-bg);
  --bs-modal-border-color: var(--bs-border-color-translucent);
  --bs-modal-border-width: var(--bs-border-width);
  --bs-modal-border-radius: var(--bs-border-radius-lg);
  --bs-modal-box-shadow: var(--bs-box-shadow-sm);
  --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));
  --bs-modal-header-padding-x: 1rem;
  --bs-modal-header-padding-y: 1rem;
  --bs-modal-header-padding: 1rem 1rem;
  --bs-modal-header-border-color: var(--bs-border-color);
  --bs-modal-header-border-width: var(--bs-border-width);
  --bs-modal-title-line-height: 1.5;
  --bs-modal-footer-gap: 0.5rem;
  --bs-modal-footer-bg: ;
  --bs-modal-footer-border-color: var(--bs-border-color);
  --bs-modal-footer-border-width: var(--bs-border-width);
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--bs-modal-zindex);
  display: none;
  width: 100%;
  height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  outline: 0;
}

.modal-dialog {
  position: relative;
  width: auto;
  margin: var(--bs-modal-margin);
  pointer-events: none;
}
.modal.fade .modal-dialog {
  transition: transform 0.3s ease-out;
  transform: translate(0, -50px);
}
@media (prefers-reduced-motion: reduce) {
  .modal.fade .modal-dialog {
    transition: none;
  }
}
.modal.show .modal-dialog {
  transform: none;
}
.modal.modal-static .modal-dialog {
  transform: scale(1.02);
}

.modal-dialog-scrollable {
  height: calc(100% - var(--bs-modal-margin) * 2);
}
.modal-dialog-scrollable .modal-content {
  max-height: 100%;
  overflow: hidden;
}
.modal-dialog-scrollable .modal-body {
  overflow-y: auto;
}

.modal-dialog-centered {
  display: flex;
  align-items: center;
  min-height: calc(100% - var(--bs-modal-margin) * 2);
}

.modal-content {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  color: var(--bs-modal-color);
  pointer-events: auto;
  background-color: var(--bs-modal-bg);
  background-clip: padding-box;
  border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);
  border-radius: var(--bs-modal-border-radius);
  outline: 0;
}

.modal-backdrop {
  --bs-backdrop-zindex: 1050;
  --bs-backdrop-bg: #000;
  --bs-backdrop-opacity: 0.5;
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--bs-backdrop-zindex);
  width: 100vw;
  height: 100vh;
  background-color: var(--bs-backdrop-bg);
}
.modal-backdrop.fade {
  opacity: 0;
}
.modal-backdrop.show {
  opacity: var(--bs-backdrop-opacity);
}

.modal-header {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: space-between;
  padding: var(--bs-modal-header-padding);
  border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);
  border-top-left-radius: var(--bs-modal-inner-border-radius);
  border-top-right-radius: var(--bs-modal-inner-border-radius);
}
.modal-header .btn-close {
  padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);
  margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto;
}

.modal-title {
  margin-bottom: 0;
  line-height: var(--bs-modal-title-line-height);
}

.modal-body {
  position: relative;
  flex: 1 1 auto;
  padding: var(--bs-modal-padding);
}

.modal-footer {
  display: flex;
  flex-shrink: 0;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);
  background-color: var(--bs-modal-footer-bg);
  border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);
  border-bottom-right-radius: var(--bs-modal-inner-border-radius);
  border-bottom-left-radius: var(--bs-modal-inner-border-radius);
}
.modal-footer > * {
  margin: calc(var(--bs-modal-footer-gap) * 0.5);
}

@media (min-width: 576px) {
  .modal {
    --bs-modal-margin: 1.75rem;
    --bs-modal-box-shadow: var(--bs-box-shadow);
  }
  .modal-dialog {
    max-width: var(--bs-modal-width);
    margin-right: auto;
    margin-left: auto;
  }
  .modal-sm {
    --bs-modal-width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg,
  .modal-xl {
    --bs-modal-width: 800px;
  }
}
@media (min-width: 1200px) {
  .modal-xl {
    --bs-modal-width: 1140px;
  }
}
.modal-fullscreen {
  width: 100vw;
  max-width: none;
  height: 100%;
  margin: 0;
}
.modal-fullscreen .modal-content {
  height: 100%;
  border: 0;
  border-radius: 0;
}
.modal-fullscreen .modal-header,
.modal-fullscreen .modal-footer {
  border-radius: 0;
}
.modal-fullscreen .modal-body {
  overflow-y: auto;
}

@media (max-width: 575.98px) {
  .modal-fullscreen-sm-down {
    width: 100vw;
    max-width: none;
    height: 100%;
    margin: 0;
  }
  .modal-fullscreen-sm-down .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }
  .modal-fullscreen-sm-down .modal-header,
  .modal-fullscreen-sm-down .modal-footer {
    border-radius: 0;
  }
  .modal-fullscreen-sm-down .modal-body {
    overflow-y: auto;
  }
}
@media (max-width: 767.98px) {
  .modal-fullscreen-md-down {
    width: 100vw;
    max-width: none;
    height: 100%;
    margin: 0;
  }
  .modal-fullscreen-md-down .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }
  .modal-fullscreen-md-down .modal-header,
  .modal-fullscreen-md-down .modal-footer {
    border-radius: 0;
  }
  .modal-fullscreen-md-down .modal-body {
    overflow-y: auto;
  }
}
@media (max-width: 991.98px) {
  .modal-fullscreen-lg-down {
    width: 100vw;
    max-width: none;
    height: 100%;
    margin: 0;
  }
  .modal-fullscreen-lg-down .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }
  .modal-fullscreen-lg-down .modal-header,
  .modal-fullscreen-lg-down .modal-footer {
    border-radius: 0;
  }
  .modal-fullscreen-lg-down .modal-body {
    overflow-y: auto;
  }
}
@media (max-width: 1199.98px) {
  .modal-fullscreen-xl-down {
    width: 100vw;
    max-width: none;
    height: 100%;
    margin: 0;
  }
  .modal-fullscreen-xl-down .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }
  .modal-fullscreen-xl-down .modal-header,
  .modal-fullscreen-xl-down .modal-footer {
    border-radius: 0;
  }
  .modal-fullscreen-xl-down .modal-body {
    overflow-y: auto;
  }
}
@media (max-width: 1399.98px) {
  .modal-fullscreen-xxl-down {
    width: 100vw;
    max-width: none;
    height: 100%;
    margin: 0;
  }
  .modal-fullscreen-xxl-down .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }
  .modal-fullscreen-xxl-down .modal-header,
  .modal-fullscreen-xxl-down .modal-footer {
    border-radius: 0;
  }
  .modal-fullscreen-xxl-down .modal-body {
    overflow-y: auto;
  }
}
.tooltip {
  --bs-tooltip-zindex: 1080;
  --bs-tooltip-max-width: 200px;
  --bs-tooltip-padding-x: 0.5rem;
  --bs-tooltip-padding-y: 0.25rem;
  --bs-tooltip-margin: ;
  --bs-tooltip-font-size: 0.875rem;
  --bs-tooltip-color: var(--bs-body-bg);
  --bs-tooltip-bg: var(--bs-emphasis-color);
  --bs-tooltip-border-radius: var(--bs-border-radius);
  --bs-tooltip-opacity: 0.9;
  --bs-tooltip-arrow-width: 0.8rem;
  --bs-tooltip-arrow-height: 0.4rem;
  z-index: var(--bs-tooltip-zindex);
  display: block;
  margin: var(--bs-tooltip-margin);
  font-family: var(--bs-font-sans-serif);
  font-style: normal;
  font-weight: 400;
  line-height: 1.5;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  letter-spacing: normal;
  word-break: normal;
  white-space: normal;
  word-spacing: normal;
  line-break: auto;
  font-size: var(--bs-tooltip-font-size);
  word-wrap: break-word;
  opacity: 0;
}
.tooltip.show {
  opacity: var(--bs-tooltip-opacity);
}
.tooltip .tooltip-arrow {
  display: block;
  width: var(--bs-tooltip-arrow-width);
  height: var(--bs-tooltip-arrow-height);
}
.tooltip .tooltip-arrow::before {
  position: absolute;
  content: "";
  border-color: transparent;
  border-style: solid;
}

.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {
  bottom: calc(-1 * var(--bs-tooltip-arrow-height));
}
.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {
  top: -1px;
  border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
  border-top-color: var(--bs-tooltip-bg);
}

/* rtl:begin:ignore */
.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {
  left: calc(-1 * var(--bs-tooltip-arrow-height));
  width: var(--bs-tooltip-arrow-height);
  height: var(--bs-tooltip-arrow-width);
}
.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {
  right: -1px;
  border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
  border-right-color: var(--bs-tooltip-bg);
}

/* rtl:end:ignore */
.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {
  top: calc(-1 * var(--bs-tooltip-arrow-height));
}
.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {
  bottom: -1px;
  border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
  border-bottom-color: var(--bs-tooltip-bg);
}

/* rtl:begin:ignore */
.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {
  right: calc(-1 * var(--bs-tooltip-arrow-height));
  width: var(--bs-tooltip-arrow-height);
  height: var(--bs-tooltip-arrow-width);
}
.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {
  left: -1px;
  border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
  border-left-color: var(--bs-tooltip-bg);
}

/* rtl:end:ignore */
.tooltip-inner {
  max-width: var(--bs-tooltip-max-width);
  padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);
  color: var(--bs-tooltip-color);
  text-align: center;
  background-color: var(--bs-tooltip-bg);
  border-radius: var(--bs-tooltip-border-radius);
}

.popover {
  --bs-popover-zindex: 1070;
  --bs-popover-max-width: 276px;
  --bs-popover-font-size: 0.875rem;
  --bs-popover-bg: var(--bs-body-bg);
  --bs-popover-border-width: var(--bs-border-width);
  --bs-popover-border-color: var(--bs-border-color-translucent);
  --bs-popover-border-radius: var(--bs-border-radius-lg);
  --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));
  --bs-popover-box-shadow: var(--bs-box-shadow);
  --bs-popover-header-padding-x: 1rem;
  --bs-popover-header-padding-y: 0.5rem;
  --bs-popover-header-font-size: 1rem;
  --bs-popover-header-color: inherit;
  --bs-popover-header-bg: var(--bs-secondary-bg);
  --bs-popover-body-padding-x: 1rem;
  --bs-popover-body-padding-y: 1rem;
  --bs-popover-body-color: var(--bs-body-color);
  --bs-popover-arrow-width: 1rem;
  --bs-popover-arrow-height: 0.5rem;
  --bs-popover-arrow-border: var(--bs-popover-border-color);
  z-index: var(--bs-popover-zindex);
  display: block;
  max-width: var(--bs-popover-max-width);
  font-family: var(--bs-font-sans-serif);
  font-style: normal;
  font-weight: 400;
  line-height: 1.5;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  letter-spacing: normal;
  word-break: normal;
  white-space: normal;
  word-spacing: normal;
  line-break: auto;
  font-size: var(--bs-popover-font-size);
  word-wrap: break-word;
  background-color: var(--bs-popover-bg);
  background-clip: padding-box;
  border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);
  border-radius: var(--bs-popover-border-radius);
}
.popover .popover-arrow {
  display: block;
  width: var(--bs-popover-arrow-width);
  height: var(--bs-popover-arrow-height);
}
.popover .popover-arrow::before, .popover .popover-arrow::after {
  position: absolute;
  display: block;
  content: "";
  border-color: transparent;
  border-style: solid;
  border-width: 0;
}

.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {
  bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
}
.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
  border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;
}
.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {
  bottom: 0;
  border-top-color: var(--bs-popover-arrow-border);
}
.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
  bottom: var(--bs-popover-border-width);
  border-top-color: var(--bs-popover-bg);
}

/* rtl:begin:ignore */
.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {
  left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
  width: var(--bs-popover-arrow-height);
  height: var(--bs-popover-arrow-width);
}
.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
  border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;
}
.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {
  left: 0;
  border-right-color: var(--bs-popover-arrow-border);
}
.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
  left: var(--bs-popover-border-width);
  border-right-color: var(--bs-popover-bg);
}

/* rtl:end:ignore */
.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {
  top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
}
.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
  border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);
}
.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {
  top: 0;
  border-bottom-color: var(--bs-popover-arrow-border);
}
.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
  top: var(--bs-popover-border-width);
  border-bottom-color: var(--bs-popover-bg);
}
.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {
  position: absolute;
  top: 0;
  left: 50%;
  display: block;
  width: var(--bs-popover-arrow-width);
  margin-left: calc(-0.5 * var(--bs-popover-arrow-width));
  content: "";
  border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);
}

/* rtl:begin:ignore */
.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {
  right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
  width: var(--bs-popover-arrow-height);
  height: var(--bs-popover-arrow-width);
}
.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
  border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);
}
.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {
  right: 0;
  border-left-color: var(--bs-popover-arrow-border);
}
.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
  right: var(--bs-popover-border-width);
  border-left-color: var(--bs-popover-bg);
}

/* rtl:end:ignore */
.popover-header {
  padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);
  margin-bottom: 0;
  font-size: var(--bs-popover-header-font-size);
  color: var(--bs-popover-header-color);
  background-color: var(--bs-popover-header-bg);
  border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);
  border-top-left-radius: var(--bs-popover-inner-border-radius);
  border-top-right-radius: var(--bs-popover-inner-border-radius);
}
.popover-header:empty {
  display: none;
}

.popover-body {
  padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);
  color: var(--bs-popover-body-color);
}

.carousel {
  position: relative;
}

.carousel.pointer-event {
  touch-action: pan-y;
}

.carousel-inner {
  position: relative;
  width: 100%;
  overflow: hidden;
}
.carousel-inner::after {
  display: block;
  clear: both;
  content: "";
}

.carousel-item {
  position: relative;
  display: none;
  float: left;
  width: 100%;
  margin-right: -100%;
  backface-visibility: hidden;
  transition: transform 0.6s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .carousel-item {
    transition: none;
  }
}

.carousel-item.active,
.carousel-item-next,
.carousel-item-prev {
  display: block;
}

.carousel-item-next:not(.carousel-item-start),
.active.carousel-item-end {
  transform: translateX(100%);
}

.carousel-item-prev:not(.carousel-item-end),
.active.carousel-item-start {
  transform: translateX(-100%);
}

.carousel-fade .carousel-item {
  opacity: 0;
  transition-property: opacity;
  transform: none;
}
.carousel-fade .carousel-item.active,
.carousel-fade .carousel-item-next.carousel-item-start,
.carousel-fade .carousel-item-prev.carousel-item-end {
  z-index: 1;
  opacity: 1;
}
.carousel-fade .active.carousel-item-start,
.carousel-fade .active.carousel-item-end {
  z-index: 0;
  opacity: 0;
  transition: opacity 0s 0.6s;
}
@media (prefers-reduced-motion: reduce) {
  .carousel-fade .active.carousel-item-start,
  .carousel-fade .active.carousel-item-end {
    transition: none;
  }
}

.carousel-control-prev,
.carousel-control-next {
  position: absolute;
  top: 0;
  bottom: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 15%;
  padding: 0;
  color: #ffffff;
  text-align: center;
  background: none;
  border: 0;
  opacity: 0.5;
  transition: opacity 0.15s ease;
}
@media (prefers-reduced-motion: reduce) {
  .carousel-control-prev,
  .carousel-control-next {
    transition: none;
  }
}
.carousel-control-prev:hover, .carousel-control-prev:focus,
.carousel-control-next:hover,
.carousel-control-next:focus {
  color: #ffffff;
  text-decoration: none;
  outline: 0;
  opacity: 0.9;
}

.carousel-control-prev {
  left: 0;
}

.carousel-control-next {
  right: 0;
}

.carousel-control-prev-icon,
.carousel-control-next-icon {
  display: inline-block;
  width: 2rem;
  height: 2rem;
  background-repeat: no-repeat;
  background-position: 50%;
  background-size: 100% 100%;
}

/* rtl:options: {
  "autoRename": true,
  "stringMap":[ {
    "name"    : "prev-next",
    "search"  : "prev",
    "replace" : "next"
  } ]
} */
.carousel-control-prev-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23ffffff%27%3e%3cpath d=%27M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z%27/%3e%3c/svg%3e");
}

.carousel-control-next-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23ffffff%27%3e%3cpath d=%27M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e");
}

.carousel-indicators {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 2;
  display: flex;
  justify-content: center;
  padding: 0;
  margin-right: 15%;
  margin-bottom: 1rem;
  margin-left: 15%;
}
.carousel-indicators [data-bs-target] {
  box-sizing: content-box;
  flex: 0 1 auto;
  width: 30px;
  height: 3px;
  padding: 0;
  margin-right: 3px;
  margin-left: 3px;
  text-indent: -999px;
  cursor: pointer;
  background-color: #ffffff;
  background-clip: padding-box;
  border: 0;
  border-top: 10px solid transparent;
  border-bottom: 10px solid transparent;
  opacity: 0.5;
  transition: opacity 0.6s ease;
}
@media (prefers-reduced-motion: reduce) {
  .carousel-indicators [data-bs-target] {
    transition: none;
  }
}
.carousel-indicators .active {
  opacity: 1;
}

.carousel-caption {
  position: absolute;
  right: 15%;
  bottom: 1.25rem;
  left: 15%;
  padding-top: 1.25rem;
  padding-bottom: 1.25rem;
  color: #ffffff;
  text-align: center;
}

.carousel-dark .carousel-control-prev-icon,
.carousel-dark .carousel-control-next-icon {
  filter: invert(1) grayscale(100);
}
.carousel-dark .carousel-indicators [data-bs-target] {
  background-color: #000;
}
.carousel-dark .carousel-caption {
  color: #000;
}

[data-bs-theme=dark] .carousel .carousel-control-prev-icon,
[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon,
[data-bs-theme=dark].carousel .carousel-control-next-icon {
  filter: invert(1) grayscale(100);
}
[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] {
  background-color: #000;
}
[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption {
  color: #000;
}

.spinner-grow,
.spinner-border {
  display: inline-block;
  width: var(--bs-spinner-width);
  height: var(--bs-spinner-height);
  vertical-align: var(--bs-spinner-vertical-align);
  border-radius: 50%;
  animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);
}

@keyframes spinner-border {
  to {
    transform: rotate(360deg) /* rtl:ignore */;
  }
}
.spinner-border {
  --bs-spinner-width: 2rem;
  --bs-spinner-height: 2rem;
  --bs-spinner-vertical-align: -0.125em;
  --bs-spinner-border-width: 0.25em;
  --bs-spinner-animation-speed: 0.75s;
  --bs-spinner-animation-name: spinner-border;
  border: var(--bs-spinner-border-width) solid currentcolor;
  border-right-color: transparent;
}

.spinner-border-sm {
  --bs-spinner-width: 1rem;
  --bs-spinner-height: 1rem;
  --bs-spinner-border-width: 0.2em;
}

@keyframes spinner-grow {
  0% {
    transform: scale(0);
  }
  50% {
    opacity: 1;
    transform: none;
  }
}
.spinner-grow {
  --bs-spinner-width: 2rem;
  --bs-spinner-height: 2rem;
  --bs-spinner-vertical-align: -0.125em;
  --bs-spinner-animation-speed: 0.75s;
  --bs-spinner-animation-name: spinner-grow;
  background-color: currentcolor;
  opacity: 0;
}

.spinner-grow-sm {
  --bs-spinner-width: 1rem;
  --bs-spinner-height: 1rem;
}

@media (prefers-reduced-motion: reduce) {
  .spinner-border,
  .spinner-grow {
    --bs-spinner-animation-speed: 1.5s;
  }
}
.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {
  --bs-offcanvas-zindex: 1045;
  --bs-offcanvas-width: 400px;
  --bs-offcanvas-height: 30vh;
  --bs-offcanvas-padding-x: 1rem;
  --bs-offcanvas-padding-y: 1rem;
  --bs-offcanvas-color: var(--bs-body-color);
  --bs-offcanvas-bg: var(--bs-body-bg);
  --bs-offcanvas-border-width: var(--bs-border-width);
  --bs-offcanvas-border-color: var(--bs-border-color-translucent);
  --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);
  --bs-offcanvas-transition: transform 0.3s ease-in-out;
  --bs-offcanvas-title-line-height: 1.5;
}

@media (max-width: 575.98px) {
  .offcanvas-sm {
    position: fixed;
    bottom: 0;
    z-index: var(--bs-offcanvas-zindex);
    display: flex;
    flex-direction: column;
    max-width: 100%;
    color: var(--bs-offcanvas-color);
    visibility: hidden;
    background-color: var(--bs-offcanvas-bg);
    background-clip: padding-box;
    outline: 0;
    transition: var(--bs-offcanvas-transition);
  }
}
@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {
  .offcanvas-sm {
    transition: none;
  }
}
@media (max-width: 575.98px) {
  .offcanvas-sm.offcanvas-start {
    top: 0;
    left: 0;
    width: var(--bs-offcanvas-width);
    border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(-100%);
  }
  .offcanvas-sm.offcanvas-end {
    top: 0;
    right: 0;
    width: var(--bs-offcanvas-width);
    border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(100%);
  }
  .offcanvas-sm.offcanvas-top {
    top: 0;
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(-100%);
  }
  .offcanvas-sm.offcanvas-bottom {
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(100%);
  }
  .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {
    transform: none;
  }
  .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {
    visibility: visible;
  }
}
@media (min-width: 576px) {
  .offcanvas-sm {
    --bs-offcanvas-height: auto;
    --bs-offcanvas-border-width: 0;
    background-color: transparent !important;
  }
  .offcanvas-sm .offcanvas-header {
    display: none;
  }
  .offcanvas-sm .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
    background-color: transparent !important;
  }
}

@media (max-width: 767.98px) {
  .offcanvas-md {
    position: fixed;
    bottom: 0;
    z-index: var(--bs-offcanvas-zindex);
    display: flex;
    flex-direction: column;
    max-width: 100%;
    color: var(--bs-offcanvas-color);
    visibility: hidden;
    background-color: var(--bs-offcanvas-bg);
    background-clip: padding-box;
    outline: 0;
    transition: var(--bs-offcanvas-transition);
  }
}
@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {
  .offcanvas-md {
    transition: none;
  }
}
@media (max-width: 767.98px) {
  .offcanvas-md.offcanvas-start {
    top: 0;
    left: 0;
    width: var(--bs-offcanvas-width);
    border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(-100%);
  }
  .offcanvas-md.offcanvas-end {
    top: 0;
    right: 0;
    width: var(--bs-offcanvas-width);
    border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(100%);
  }
  .offcanvas-md.offcanvas-top {
    top: 0;
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(-100%);
  }
  .offcanvas-md.offcanvas-bottom {
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(100%);
  }
  .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {
    transform: none;
  }
  .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {
    visibility: visible;
  }
}
@media (min-width: 768px) {
  .offcanvas-md {
    --bs-offcanvas-height: auto;
    --bs-offcanvas-border-width: 0;
    background-color: transparent !important;
  }
  .offcanvas-md .offcanvas-header {
    display: none;
  }
  .offcanvas-md .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
    background-color: transparent !important;
  }
}

@media (max-width: 991.98px) {
  .offcanvas-lg {
    position: fixed;
    bottom: 0;
    z-index: var(--bs-offcanvas-zindex);
    display: flex;
    flex-direction: column;
    max-width: 100%;
    color: var(--bs-offcanvas-color);
    visibility: hidden;
    background-color: var(--bs-offcanvas-bg);
    background-clip: padding-box;
    outline: 0;
    transition: var(--bs-offcanvas-transition);
  }
}
@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {
  .offcanvas-lg {
    transition: none;
  }
}
@media (max-width: 991.98px) {
  .offcanvas-lg.offcanvas-start {
    top: 0;
    left: 0;
    width: var(--bs-offcanvas-width);
    border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(-100%);
  }
  .offcanvas-lg.offcanvas-end {
    top: 0;
    right: 0;
    width: var(--bs-offcanvas-width);
    border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(100%);
  }
  .offcanvas-lg.offcanvas-top {
    top: 0;
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(-100%);
  }
  .offcanvas-lg.offcanvas-bottom {
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(100%);
  }
  .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {
    transform: none;
  }
  .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {
    visibility: visible;
  }
}
@media (min-width: 992px) {
  .offcanvas-lg {
    --bs-offcanvas-height: auto;
    --bs-offcanvas-border-width: 0;
    background-color: transparent !important;
  }
  .offcanvas-lg .offcanvas-header {
    display: none;
  }
  .offcanvas-lg .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
    background-color: transparent !important;
  }
}

@media (max-width: 1199.98px) {
  .offcanvas-xl {
    position: fixed;
    bottom: 0;
    z-index: var(--bs-offcanvas-zindex);
    display: flex;
    flex-direction: column;
    max-width: 100%;
    color: var(--bs-offcanvas-color);
    visibility: hidden;
    background-color: var(--bs-offcanvas-bg);
    background-clip: padding-box;
    outline: 0;
    transition: var(--bs-offcanvas-transition);
  }
}
@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {
  .offcanvas-xl {
    transition: none;
  }
}
@media (max-width: 1199.98px) {
  .offcanvas-xl.offcanvas-start {
    top: 0;
    left: 0;
    width: var(--bs-offcanvas-width);
    border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(-100%);
  }
  .offcanvas-xl.offcanvas-end {
    top: 0;
    right: 0;
    width: var(--bs-offcanvas-width);
    border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(100%);
  }
  .offcanvas-xl.offcanvas-top {
    top: 0;
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(-100%);
  }
  .offcanvas-xl.offcanvas-bottom {
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(100%);
  }
  .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {
    transform: none;
  }
  .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {
    visibility: visible;
  }
}
@media (min-width: 1200px) {
  .offcanvas-xl {
    --bs-offcanvas-height: auto;
    --bs-offcanvas-border-width: 0;
    background-color: transparent !important;
  }
  .offcanvas-xl .offcanvas-header {
    display: none;
  }
  .offcanvas-xl .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
    background-color: transparent !important;
  }
}

@media (max-width: 1399.98px) {
  .offcanvas-xxl {
    position: fixed;
    bottom: 0;
    z-index: var(--bs-offcanvas-zindex);
    display: flex;
    flex-direction: column;
    max-width: 100%;
    color: var(--bs-offcanvas-color);
    visibility: hidden;
    background-color: var(--bs-offcanvas-bg);
    background-clip: padding-box;
    outline: 0;
    transition: var(--bs-offcanvas-transition);
  }
}
@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {
  .offcanvas-xxl {
    transition: none;
  }
}
@media (max-width: 1399.98px) {
  .offcanvas-xxl.offcanvas-start {
    top: 0;
    left: 0;
    width: var(--bs-offcanvas-width);
    border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(-100%);
  }
  .offcanvas-xxl.offcanvas-end {
    top: 0;
    right: 0;
    width: var(--bs-offcanvas-width);
    border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(100%);
  }
  .offcanvas-xxl.offcanvas-top {
    top: 0;
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(-100%);
  }
  .offcanvas-xxl.offcanvas-bottom {
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(100%);
  }
  .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {
    transform: none;
  }
  .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {
    visibility: visible;
  }
}
@media (min-width: 1400px) {
  .offcanvas-xxl {
    --bs-offcanvas-height: auto;
    --bs-offcanvas-border-width: 0;
    background-color: transparent !important;
  }
  .offcanvas-xxl .offcanvas-header {
    display: none;
  }
  .offcanvas-xxl .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
    background-color: transparent !important;
  }
}

.offcanvas {
  position: fixed;
  bottom: 0;
  z-index: var(--bs-offcanvas-zindex);
  display: flex;
  flex-direction: column;
  max-width: 100%;
  color: var(--bs-offcanvas-color);
  visibility: hidden;
  background-color: var(--bs-offcanvas-bg);
  background-clip: padding-box;
  outline: 0;
  transition: var(--bs-offcanvas-transition);
}
@media (prefers-reduced-motion: reduce) {
  .offcanvas {
    transition: none;
  }
}
.offcanvas.offcanvas-start {
  top: 0;
  left: 0;
  width: var(--bs-offcanvas-width);
  border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
  transform: translateX(-100%);
}
.offcanvas.offcanvas-end {
  top: 0;
  right: 0;
  width: var(--bs-offcanvas-width);
  border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
  transform: translateX(100%);
}
.offcanvas.offcanvas-top {
  top: 0;
  right: 0;
  left: 0;
  height: var(--bs-offcanvas-height);
  max-height: 100%;
  border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
  transform: translateY(-100%);
}
.offcanvas.offcanvas-bottom {
  right: 0;
  left: 0;
  height: var(--bs-offcanvas-height);
  max-height: 100%;
  border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
  transform: translateY(100%);
}
.offcanvas.showing, .offcanvas.show:not(.hiding) {
  transform: none;
}
.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {
  visibility: visible;
}

.offcanvas-backdrop {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1040;
  width: 100vw;
  height: 100vh;
  background-color: #000;
}
.offcanvas-backdrop.fade {
  opacity: 0;
}
.offcanvas-backdrop.show {
  opacity: 0.5;
}

.offcanvas-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
}
.offcanvas-header .btn-close {
  padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);
  margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y));
  margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x));
  margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y));
}

.offcanvas-title {
  margin-bottom: 0;
  line-height: var(--bs-offcanvas-title-line-height);
}

.offcanvas-body {
  flex-grow: 1;
  padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
  overflow-y: auto;
}

.placeholder {
  display: inline-block;
  min-height: 1em;
  vertical-align: middle;
  cursor: wait;
  background-color: currentcolor;
  opacity: 0.5;
}
.placeholder.btn::before {
  display: inline-block;
  content: "";
}

.placeholder-xs {
  min-height: 0.6em;
}

.placeholder-sm {
  min-height: 0.8em;
}

.placeholder-lg {
  min-height: 1.2em;
}

.placeholder-glow .placeholder {
  animation: placeholder-glow 2s ease-in-out infinite;
}

@keyframes placeholder-glow {
  50% {
    opacity: 0.2;
  }
}
.placeholder-wave {
  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
  mask-size: 200% 100%;
  animation: placeholder-wave 2s linear infinite;
}

@keyframes placeholder-wave {
  100% {
    mask-position: -200% 0%;
  }
}
.clearfix::after {
  display: block;
  clear: both;
  content: "";
}

.text-bg-light {
  color: #000 !important;
  background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-dark {
  color: #ffffff !important;
  background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-primary {
  color: #ffffff !important;
  background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-secondary {
  color: #000 !important;
  background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-secondaryDark {
  color: #000 !important;
  background-color: RGBA(var(--bs-secondaryDark-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-secondaryDarker {
  color: #ffffff !important;
  background-color: RGBA(var(--bs-secondaryDarker-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-info {
  color: #000 !important;
  background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-infoLight {
  color: #000 !important;
  background-color: RGBA(var(--bs-infoLight-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-success {
  color: #000 !important;
  background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-successDark {
  color: #000 !important;
  background-color: RGBA(var(--bs-successDark-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-warning {
  color: #000 !important;
  background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-danger {
  color: #000 !important;
  background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;
}

.link-light {
  color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-light:hover, .link-light:focus {
  color: RGBA(241, 241, 241, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(241, 241, 241, var(--bs-link-underline-opacity, 1)) !important;
}

.link-dark {
  color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-dark:hover, .link-dark:focus {
  color: RGBA(15, 77, 118, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(15, 77, 118, var(--bs-link-underline-opacity, 1)) !important;
}

.link-primary {
  color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-primary:hover, .link-primary:focus {
  color: RGBA(16, 77, 118, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(16, 77, 118, var(--bs-link-underline-opacity, 1)) !important;
}

.link-secondary {
  color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-secondary:hover, .link-secondary:focus {
  color: RGBA(255, 100, 128, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(255, 100, 128, var(--bs-link-underline-opacity, 1)) !important;
}

.link-secondaryDark {
  color: RGBA(var(--bs-secondaryDark-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-secondaryDark-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-secondaryDark:hover, .link-secondaryDark:focus {
  color: RGBA(247, 87, 113, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(247, 87, 113, var(--bs-link-underline-opacity, 1)) !important;
}

.link-secondaryDarker {
  color: RGBA(var(--bs-secondaryDarker-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-secondaryDarker-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-secondaryDarker:hover, .link-secondaryDarker:focus {
  color: RGBA(161, 30, 52, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(161, 30, 52, var(--bs-link-underline-opacity, 1)) !important;
}

.link-info {
  color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-info:hover, .link-info:focus {
  color: RGBA(92, 172, 226, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(92, 172, 226, var(--bs-link-underline-opacity, 1)) !important;
}

.link-infoLight {
  color: RGBA(var(--bs-infoLight-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-infoLight-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-infoLight:hover, .link-infoLight:focus {
  color: RGBA(241, 249, 255, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(241, 249, 255, var(--bs-link-underline-opacity, 1)) !important;
}

.link-success {
  color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-success:hover, .link-success:focus {
  color: RGBA(51, 186, 131, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(51, 186, 131, var(--bs-link-underline-opacity, 1)) !important;
}

.link-successDark {
  color: RGBA(var(--bs-successDark-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-successDark-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-successDark:hover, .link-successDark:focus {
  color: RGBA(53, 168, 139, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(53, 168, 139, var(--bs-link-underline-opacity, 1)) !important;
}

.link-warning {
  color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-warning:hover, .link-warning:focus {
  color: RGBA(232, 215, 51, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(232, 215, 51, var(--bs-link-underline-opacity, 1)) !important;
}

.link-danger {
  color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-danger:hover, .link-danger:focus {
  color: RGBA(244, 78, 51, var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(244, 78, 51, var(--bs-link-underline-opacity, 1)) !important;
}

.link-body-emphasis {
  color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;
  text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;
}
.link-body-emphasis:hover, .link-body-emphasis:focus {
  color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;
  text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;
}

.focus-ring:focus {
  outline: 0;
  box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);
}

.icon-link {
  display: inline-flex;
  gap: 0.375rem;
  align-items: center;
  text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));
  text-underline-offset: 0.25em;
  backface-visibility: hidden;
}
.icon-link > .bi {
  flex-shrink: 0;
  width: 1em;
  height: 1em;
  fill: currentcolor;
  transition: 0.2s ease-in-out transform;
}
@media (prefers-reduced-motion: reduce) {
  .icon-link > .bi {
    transition: none;
  }
}

.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {
  transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0));
}

.ratio {
  position: relative;
  width: 100%;
}
.ratio::before {
  display: block;
  padding-top: var(--bs-aspect-ratio);
  content: "";
}
.ratio > * {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.ratio-1x1 {
  --bs-aspect-ratio: 100%;
}

.ratio-4x3 {
  --bs-aspect-ratio: 75%;
}

.ratio-16x9 {
  --bs-aspect-ratio: 56.25%;
}

.ratio-21x9 {
  --bs-aspect-ratio: 42.8571428571%;
}

.fixed-top {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 1030;
}

.fixed-bottom {
  position: fixed;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1030;
}

.sticky-top {
  position: sticky;
  top: 0;
  z-index: 1020;
}

.sticky-bottom {
  position: sticky;
  bottom: 0;
  z-index: 1020;
}

@media (min-width: 576px) {
  .sticky-sm-top {
    position: sticky;
    top: 0;
    z-index: 1020;
  }
  .sticky-sm-bottom {
    position: sticky;
    bottom: 0;
    z-index: 1020;
  }
}
@media (min-width: 768px) {
  .sticky-md-top {
    position: sticky;
    top: 0;
    z-index: 1020;
  }
  .sticky-md-bottom {
    position: sticky;
    bottom: 0;
    z-index: 1020;
  }
}
@media (min-width: 992px) {
  .sticky-lg-top {
    position: sticky;
    top: 0;
    z-index: 1020;
  }
  .sticky-lg-bottom {
    position: sticky;
    bottom: 0;
    z-index: 1020;
  }
}
@media (min-width: 1200px) {
  .sticky-xl-top {
    position: sticky;
    top: 0;
    z-index: 1020;
  }
  .sticky-xl-bottom {
    position: sticky;
    bottom: 0;
    z-index: 1020;
  }
}
@media (min-width: 1400px) {
  .sticky-xxl-top {
    position: sticky;
    top: 0;
    z-index: 1020;
  }
  .sticky-xxl-bottom {
    position: sticky;
    bottom: 0;
    z-index: 1020;
  }
}
.hstack {
  display: flex;
  flex-direction: row;
  align-items: center;
  align-self: stretch;
}

.vstack {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  align-self: stretch;
}

.visually-hidden,
.visually-hidden-focusable:not(:focus):not(:focus-within) {
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.visually-hidden:not(caption),
.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {
  position: absolute !important;
}

.stretched-link::after {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1;
  content: "";
}

.text-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.vr {
  display: inline-block;
  align-self: stretch;
  width: var(--bs-border-width);
  min-height: 1em;
  background-color: currentcolor;
  opacity: 0.25;
}

.align-baseline {
  vertical-align: baseline !important;
}

.align-top {
  vertical-align: top !important;
}

.align-middle {
  vertical-align: middle !important;
}

.align-bottom {
  vertical-align: bottom !important;
}

.align-text-bottom {
  vertical-align: text-bottom !important;
}

.align-text-top {
  vertical-align: text-top !important;
}

.float-start {
  float: left !important;
}

.float-end {
  float: right !important;
}

.float-none {
  float: none !important;
}

.object-fit-contain {
  object-fit: contain !important;
}

.object-fit-cover {
  object-fit: cover !important;
}

.object-fit-fill {
  object-fit: fill !important;
}

.object-fit-scale {
  object-fit: scale-down !important;
}

.object-fit-none {
  object-fit: none !important;
}

.opacity-0 {
  opacity: 0 !important;
}

.opacity-25 {
  opacity: 0.25 !important;
}

.opacity-50 {
  opacity: 0.5 !important;
}

.opacity-75 {
  opacity: 0.75 !important;
}

.opacity-100 {
  opacity: 1 !important;
}

.overflow-auto {
  overflow: auto !important;
}

.overflow-hidden {
  overflow: hidden !important;
}

.overflow-visible {
  overflow: visible !important;
}

.overflow-scroll {
  overflow: scroll !important;
}

.overflow-x-auto {
  overflow-x: auto !important;
}

.overflow-x-hidden {
  overflow-x: hidden !important;
}

.overflow-x-visible {
  overflow-x: visible !important;
}

.overflow-x-scroll {
  overflow-x: scroll !important;
}

.overflow-y-auto {
  overflow-y: auto !important;
}

.overflow-y-hidden {
  overflow-y: hidden !important;
}

.overflow-y-visible {
  overflow-y: visible !important;
}

.overflow-y-scroll {
  overflow-y: scroll !important;
}

.d-inline {
  display: inline !important;
}

.d-inline-block {
  display: inline-block !important;
}

.d-block {
  display: block !important;
}

.d-grid {
  display: grid !important;
}

.d-inline-grid {
  display: inline-grid !important;
}

.d-table {
  display: table !important;
}

.d-table-row {
  display: table-row !important;
}

.d-table-cell {
  display: table-cell !important;
}

.d-flex {
  display: flex !important;
}

.d-inline-flex {
  display: inline-flex !important;
}

.d-none {
  display: none !important;
}

.shadow {
  box-shadow: var(--bs-box-shadow) !important;
}

.shadow-sm {
  box-shadow: var(--bs-box-shadow-sm) !important;
}

.shadow-lg {
  box-shadow: var(--bs-box-shadow-lg) !important;
}

.shadow-none {
  box-shadow: none !important;
}

.focus-ring-light {
  --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-dark {
  --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-primary {
  --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-secondary {
  --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-secondaryDark {
  --bs-focus-ring-color: rgba(var(--bs-secondaryDark-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-secondaryDarker {
  --bs-focus-ring-color: rgba(var(--bs-secondaryDarker-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-info {
  --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-infoLight {
  --bs-focus-ring-color: rgba(var(--bs-infoLight-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-success {
  --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-successDark {
  --bs-focus-ring-color: rgba(var(--bs-successDark-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-warning {
  --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));
}

.focus-ring-danger {
  --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));
}

.position-static {
  position: static !important;
}

.position-relative {
  position: relative !important;
}

.position-absolute {
  position: absolute !important;
}

.position-fixed {
  position: fixed !important;
}

.position-sticky {
  position: sticky !important;
}

.top-0 {
  top: 0 !important;
}

.top-50 {
  top: 50% !important;
}

.top-100 {
  top: 100% !important;
}

.bottom-0 {
  bottom: 0 !important;
}

.bottom-50 {
  bottom: 50% !important;
}

.bottom-100 {
  bottom: 100% !important;
}

.start-0 {
  left: 0 !important;
}

.start-50 {
  left: 50% !important;
}

.start-100 {
  left: 100% !important;
}

.end-0 {
  right: 0 !important;
}

.end-50 {
  right: 50% !important;
}

.end-100 {
  right: 100% !important;
}

.translate-middle {
  transform: translate(-50%, -50%) !important;
}

.translate-middle-x {
  transform: translateX(-50%) !important;
}

.translate-middle-y {
  transform: translateY(-50%) !important;
}

.border {
  border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

.border-0 {
  border: 0 !important;
}

.border-top {
  border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

.border-top-0 {
  border-top: 0 !important;
}

.border-end {
  border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

.border-end-0 {
  border-right: 0 !important;
}

.border-bottom {
  border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

.border-bottom-0 {
  border-bottom: 0 !important;
}

.border-start {
  border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

.border-start-0 {
  border-left: 0 !important;
}

.border-light {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;
}

.border-dark {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;
}

.border-primary {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;
}

.border-secondary {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;
}

.border-secondaryDark {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-secondaryDark-rgb), var(--bs-border-opacity)) !important;
}

.border-secondaryDarker {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-secondaryDarker-rgb), var(--bs-border-opacity)) !important;
}

.border-info {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;
}

.border-infoLight {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-infoLight-rgb), var(--bs-border-opacity)) !important;
}

.border-success {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;
}

.border-successDark {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-successDark-rgb), var(--bs-border-opacity)) !important;
}

.border-warning {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;
}

.border-danger {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;
}

.border-black {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;
}

.border-white {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;
}

.border-primary-subtle {
  border-color: var(--bs-primary-border-subtle) !important;
}

.border-secondary-subtle {
  border-color: var(--bs-secondary-border-subtle) !important;
}

.border-success-subtle {
  border-color: var(--bs-success-border-subtle) !important;
}

.border-info-subtle {
  border-color: var(--bs-info-border-subtle) !important;
}

.border-warning-subtle {
  border-color: var(--bs-warning-border-subtle) !important;
}

.border-danger-subtle {
  border-color: var(--bs-danger-border-subtle) !important;
}

.border-light-subtle {
  border-color: var(--bs-light-border-subtle) !important;
}

.border-dark-subtle {
  border-color: var(--bs-dark-border-subtle) !important;
}

.border-1 {
  border-width: 1px !important;
}

.border-2 {
  border-width: 2px !important;
}

.border-3 {
  border-width: 3px !important;
}

.border-4 {
  border-width: 4px !important;
}

.border-5 {
  border-width: 5px !important;
}

.border-opacity-10 {
  --bs-border-opacity: 0.1;
}

.border-opacity-25 {
  --bs-border-opacity: 0.25;
}

.border-opacity-50 {
  --bs-border-opacity: 0.5;
}

.border-opacity-75 {
  --bs-border-opacity: 0.75;
}

.border-opacity-100 {
  --bs-border-opacity: 1;
}

.w-25 {
  width: 25% !important;
}

.w-50 {
  width: 50% !important;
}

.w-75 {
  width: 75% !important;
}

.w-100 {
  width: 100% !important;
}

.w-auto {
  width: auto !important;
}

.mw-100 {
  max-width: 100% !important;
}

.vw-100 {
  width: 100vw !important;
}

.min-vw-100 {
  min-width: 100vw !important;
}

.h-25 {
  height: 25% !important;
}

.h-50 {
  height: 50% !important;
}

.h-75 {
  height: 75% !important;
}

.h-100 {
  height: 100% !important;
}

.h-auto {
  height: auto !important;
}

.mh-100 {
  max-height: 100% !important;
}

.vh-100 {
  height: 100vh !important;
}

.min-vh-100 {
  min-height: 100vh !important;
}

.flex-fill {
  flex: 1 1 auto !important;
}

.flex-row {
  flex-direction: row !important;
}

.flex-column {
  flex-direction: column !important;
}

.flex-row-reverse {
  flex-direction: row-reverse !important;
}

.flex-column-reverse {
  flex-direction: column-reverse !important;
}

.flex-grow-0 {
  flex-grow: 0 !important;
}

.flex-grow-1 {
  flex-grow: 1 !important;
}

.flex-shrink-0 {
  flex-shrink: 0 !important;
}

.flex-shrink-1 {
  flex-shrink: 1 !important;
}

.flex-wrap {
  flex-wrap: wrap !important;
}

.flex-nowrap {
  flex-wrap: nowrap !important;
}

.flex-wrap-reverse {
  flex-wrap: wrap-reverse !important;
}

.justify-content-start {
  justify-content: flex-start !important;
}

.justify-content-end {
  justify-content: flex-end !important;
}

.justify-content-center {
  justify-content: center !important;
}

.justify-content-between {
  justify-content: space-between !important;
}

.justify-content-around {
  justify-content: space-around !important;
}

.justify-content-evenly {
  justify-content: space-evenly !important;
}

.align-items-start {
  align-items: flex-start !important;
}

.align-items-end {
  align-items: flex-end !important;
}

.align-items-center {
  align-items: center !important;
}

.align-items-baseline {
  align-items: baseline !important;
}

.align-items-stretch {
  align-items: stretch !important;
}

.align-content-start {
  align-content: flex-start !important;
}

.align-content-end {
  align-content: flex-end !important;
}

.align-content-center {
  align-content: center !important;
}

.align-content-between {
  align-content: space-between !important;
}

.align-content-around {
  align-content: space-around !important;
}

.align-content-stretch {
  align-content: stretch !important;
}

.align-self-auto {
  align-self: auto !important;
}

.align-self-start {
  align-self: flex-start !important;
}

.align-self-end {
  align-self: flex-end !important;
}

.align-self-center {
  align-self: center !important;
}

.align-self-baseline {
  align-self: baseline !important;
}

.align-self-stretch {
  align-self: stretch !important;
}

.order-first {
  order: -1 !important;
}

.order-0 {
  order: 0 !important;
}

.order-1 {
  order: 1 !important;
}

.order-2 {
  order: 2 !important;
}

.order-3 {
  order: 3 !important;
}

.order-4 {
  order: 4 !important;
}

.order-5 {
  order: 5 !important;
}

.order-last {
  order: 6 !important;
}

.m-0 {
  margin: 0 !important;
}

.m-1 {
  margin: 0.25rem !important;
}

.m-2 {
  margin: 0.5rem !important;
}

.m-3 {
  margin: 1rem !important;
}

.m-4 {
  margin: 1.5rem !important;
}

.m-5 {
  margin: 3rem !important;
}

.m-auto {
  margin: auto !important;
}

.mx-0 {
  margin-right: 0 !important;
  margin-left: 0 !important;
}

.mx-1 {
  margin-right: 0.25rem !important;
  margin-left: 0.25rem !important;
}

.mx-2 {
  margin-right: 0.5rem !important;
  margin-left: 0.5rem !important;
}

.mx-3 {
  margin-right: 1rem !important;
  margin-left: 1rem !important;
}

.mx-4 {
  margin-right: 1.5rem !important;
  margin-left: 1.5rem !important;
}

.mx-5 {
  margin-right: 3rem !important;
  margin-left: 3rem !important;
}

.mx-auto {
  margin-right: auto !important;
  margin-left: auto !important;
}

.my-0 {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.my-1 {
  margin-top: 0.25rem !important;
  margin-bottom: 0.25rem !important;
}

.my-2 {
  margin-top: 0.5rem !important;
  margin-bottom: 0.5rem !important;
}

.my-3 {
  margin-top: 1rem !important;
  margin-bottom: 1rem !important;
}

.my-4 {
  margin-top: 1.5rem !important;
  margin-bottom: 1.5rem !important;
}

.my-5 {
  margin-top: 3rem !important;
  margin-bottom: 3rem !important;
}

.my-auto {
  margin-top: auto !important;
  margin-bottom: auto !important;
}

.mt-0 {
  margin-top: 0 !important;
}

.mt-1 {
  margin-top: 0.25rem !important;
}

.mt-2 {
  margin-top: 0.5rem !important;
}

.mt-3 {
  margin-top: 1rem !important;
}

.mt-4 {
  margin-top: 1.5rem !important;
}

.mt-5 {
  margin-top: 3rem !important;
}

.mt-auto {
  margin-top: auto !important;
}

.me-0 {
  margin-right: 0 !important;
}

.me-1 {
  margin-right: 0.25rem !important;
}

.me-2 {
  margin-right: 0.5rem !important;
}

.me-3 {
  margin-right: 1rem !important;
}

.me-4 {
  margin-right: 1.5rem !important;
}

.me-5 {
  margin-right: 3rem !important;
}

.me-auto {
  margin-right: auto !important;
}

.mb-0 {
  margin-bottom: 0 !important;
}

.mb-1 {
  margin-bottom: 0.25rem !important;
}

.mb-2 {
  margin-bottom: 0.5rem !important;
}

.mb-3 {
  margin-bottom: 1rem !important;
}

.mb-4 {
  margin-bottom: 1.5rem !important;
}

.mb-5 {
  margin-bottom: 3rem !important;
}

.mb-auto {
  margin-bottom: auto !important;
}

.ms-0 {
  margin-left: 0 !important;
}

.ms-1 {
  margin-left: 0.25rem !important;
}

.ms-2 {
  margin-left: 0.5rem !important;
}

.ms-3 {
  margin-left: 1rem !important;
}

.ms-4 {
  margin-left: 1.5rem !important;
}

.ms-5 {
  margin-left: 3rem !important;
}

.ms-auto {
  margin-left: auto !important;
}

.p-0 {
  padding: 0 !important;
}

.p-1 {
  padding: 0.25rem !important;
}

.p-2 {
  padding: 0.5rem !important;
}

.p-3 {
  padding: 1rem !important;
}

.p-4 {
  padding: 1.5rem !important;
}

.p-5 {
  padding: 3rem !important;
}

.px-0 {
  padding-right: 0 !important;
  padding-left: 0 !important;
}

.px-1 {
  padding-right: 0.25rem !important;
  padding-left: 0.25rem !important;
}

.px-2 {
  padding-right: 0.5rem !important;
  padding-left: 0.5rem !important;
}

.px-3 {
  padding-right: 1rem !important;
  padding-left: 1rem !important;
}

.px-4 {
  padding-right: 1.5rem !important;
  padding-left: 1.5rem !important;
}

.px-5 {
  padding-right: 3rem !important;
  padding-left: 3rem !important;
}

.py-0 {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

.py-1 {
  padding-top: 0.25rem !important;
  padding-bottom: 0.25rem !important;
}

.py-2 {
  padding-top: 0.5rem !important;
  padding-bottom: 0.5rem !important;
}

.py-3 {
  padding-top: 1rem !important;
  padding-bottom: 1rem !important;
}

.py-4 {
  padding-top: 1.5rem !important;
  padding-bottom: 1.5rem !important;
}

.py-5 {
  padding-top: 3rem !important;
  padding-bottom: 3rem !important;
}

.pt-0 {
  padding-top: 0 !important;
}

.pt-1 {
  padding-top: 0.25rem !important;
}

.pt-2 {
  padding-top: 0.5rem !important;
}

.pt-3 {
  padding-top: 1rem !important;
}

.pt-4 {
  padding-top: 1.5rem !important;
}

.pt-5 {
  padding-top: 3rem !important;
}

.pe-0 {
  padding-right: 0 !important;
}

.pe-1 {
  padding-right: 0.25rem !important;
}

.pe-2 {
  padding-right: 0.5rem !important;
}

.pe-3 {
  padding-right: 1rem !important;
}

.pe-4 {
  padding-right: 1.5rem !important;
}

.pe-5 {
  padding-right: 3rem !important;
}

.pb-0 {
  padding-bottom: 0 !important;
}

.pb-1 {
  padding-bottom: 0.25rem !important;
}

.pb-2 {
  padding-bottom: 0.5rem !important;
}

.pb-3 {
  padding-bottom: 1rem !important;
}

.pb-4 {
  padding-bottom: 1.5rem !important;
}

.pb-5 {
  padding-bottom: 3rem !important;
}

.ps-0 {
  padding-left: 0 !important;
}

.ps-1 {
  padding-left: 0.25rem !important;
}

.ps-2 {
  padding-left: 0.5rem !important;
}

.ps-3 {
  padding-left: 1rem !important;
}

.ps-4 {
  padding-left: 1.5rem !important;
}

.ps-5 {
  padding-left: 3rem !important;
}

.gap-0 {
  gap: 0 !important;
}

.gap-1 {
  gap: 0.25rem !important;
}

.gap-2 {
  gap: 0.5rem !important;
}

.gap-3 {
  gap: 1rem !important;
}

.gap-4 {
  gap: 1.5rem !important;
}

.gap-5 {
  gap: 3rem !important;
}

.row-gap-0 {
  row-gap: 0 !important;
}

.row-gap-1 {
  row-gap: 0.25rem !important;
}

.row-gap-2 {
  row-gap: 0.5rem !important;
}

.row-gap-3 {
  row-gap: 1rem !important;
}

.row-gap-4 {
  row-gap: 1.5rem !important;
}

.row-gap-5 {
  row-gap: 3rem !important;
}

.column-gap-0 {
  column-gap: 0 !important;
}

.column-gap-1 {
  column-gap: 0.25rem !important;
}

.column-gap-2 {
  column-gap: 0.5rem !important;
}

.column-gap-3 {
  column-gap: 1rem !important;
}

.column-gap-4 {
  column-gap: 1.5rem !important;
}

.column-gap-5 {
  column-gap: 3rem !important;
}

.font-monospace {
  font-family: var(--bs-font-monospace) !important;
}

.fs-1 {
  font-size: calc(1.375rem + 1.5vw) !important;
}

.fs-2 {
  font-size: calc(1.325rem + 0.9vw) !important;
}

.fs-3 {
  font-size: calc(1.3rem + 0.6vw) !important;
}

.fs-4 {
  font-size: calc(1.275rem + 0.3vw) !important;
}

.fs-5 {
  font-size: 1.25rem !important;
}

.fs-6 {
  font-size: 1rem !important;
}

.fst-italic {
  font-style: italic !important;
}

.fst-normal {
  font-style: normal !important;
}

.fw-lighter {
  font-weight: lighter !important;
}

.fw-light {
  font-weight: 300 !important;
}

.fw-normal {
  font-weight: 400 !important;
}

.fw-medium {
  font-weight: 500 !important;
}

.fw-semibold {
  font-weight: 600 !important;
}

.fw-bold {
  font-weight: 700 !important;
}

.fw-bolder {
  font-weight: bolder !important;
}

.lh-1 {
  line-height: 1 !important;
}

.lh-sm {
  line-height: 1.25 !important;
}

.lh-base {
  line-height: 1.5 !important;
}

.lh-lg {
  line-height: 2 !important;
}

.text-start {
  text-align: left !important;
}

.text-end {
  text-align: right !important;
}

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

.text-decoration-none {
  text-decoration: none !important;
}

.text-decoration-underline {
  text-decoration: underline !important;
}

.text-decoration-line-through {
  text-decoration: line-through !important;
}

.text-lowercase {
  text-transform: lowercase !important;
}

.text-uppercase {
  text-transform: uppercase !important;
}

.text-capitalize {
  text-transform: capitalize !important;
}

.text-wrap {
  white-space: normal !important;
}

.text-nowrap {
  white-space: nowrap !important;
}

/* rtl:begin:remove */
.text-break {
  word-wrap: break-word !important;
  word-break: break-word !important;
}

/* rtl:end:remove */
.text-light {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;
}

.text-dark {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;
}

.text-primary {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
}

.text-secondary {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;
}

.text-secondaryDark {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-secondaryDark-rgb), var(--bs-text-opacity)) !important;
}

.text-secondaryDarker {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-secondaryDarker-rgb), var(--bs-text-opacity)) !important;
}

.text-info {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;
}

.text-infoLight {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-infoLight-rgb), var(--bs-text-opacity)) !important;
}

.text-success {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;
}

.text-successDark {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-successDark-rgb), var(--bs-text-opacity)) !important;
}

.text-warning {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;
}

.text-danger {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;
}

.text-black {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;
}

.text-white {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;
}

.text-body {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;
}

.text-muted {
  --bs-text-opacity: 1;
  color: var(--bs-secondary-color) !important;
}

.text-black-50 {
  --bs-text-opacity: 1;
  color: rgba(0, 0, 0, 0.5) !important;
}

.text-white-50 {
  --bs-text-opacity: 1;
  color: rgba(255, 255, 255, 0.5) !important;
}

.text-body-secondary {
  --bs-text-opacity: 1;
  color: var(--bs-secondary-color) !important;
}

.text-body-tertiary {
  --bs-text-opacity: 1;
  color: var(--bs-tertiary-color) !important;
}

.text-body-emphasis {
  --bs-text-opacity: 1;
  color: var(--bs-emphasis-color) !important;
}

.text-reset {
  --bs-text-opacity: 1;
  color: inherit !important;
}

.text-opacity-25 {
  --bs-text-opacity: 0.25;
}

.text-opacity-50 {
  --bs-text-opacity: 0.5;
}

.text-opacity-75 {
  --bs-text-opacity: 0.75;
}

.text-opacity-100 {
  --bs-text-opacity: 1;
}

.text-primary-emphasis {
  color: var(--bs-primary-text-emphasis) !important;
}

.text-secondary-emphasis {
  color: var(--bs-secondary-text-emphasis) !important;
}

.text-success-emphasis {
  color: var(--bs-success-text-emphasis) !important;
}

.text-info-emphasis {
  color: var(--bs-info-text-emphasis) !important;
}

.text-warning-emphasis {
  color: var(--bs-warning-text-emphasis) !important;
}

.text-danger-emphasis {
  color: var(--bs-danger-text-emphasis) !important;
}

.text-light-emphasis {
  color: var(--bs-light-text-emphasis) !important;
}

.text-dark-emphasis {
  color: var(--bs-dark-text-emphasis) !important;
}

.link-opacity-10 {
  --bs-link-opacity: 0.1;
}

.link-opacity-10-hover:hover {
  --bs-link-opacity: 0.1;
}

.link-opacity-25 {
  --bs-link-opacity: 0.25;
}

.link-opacity-25-hover:hover {
  --bs-link-opacity: 0.25;
}

.link-opacity-50 {
  --bs-link-opacity: 0.5;
}

.link-opacity-50-hover:hover {
  --bs-link-opacity: 0.5;
}

.link-opacity-75 {
  --bs-link-opacity: 0.75;
}

.link-opacity-75-hover:hover {
  --bs-link-opacity: 0.75;
}

.link-opacity-100 {
  --bs-link-opacity: 1;
}

.link-opacity-100-hover:hover {
  --bs-link-opacity: 1;
}

.link-offset-1 {
  text-underline-offset: 0.125em !important;
}

.link-offset-1-hover:hover {
  text-underline-offset: 0.125em !important;
}

.link-offset-2 {
  text-underline-offset: 0.25em !important;
}

.link-offset-2-hover:hover {
  text-underline-offset: 0.25em !important;
}

.link-offset-3 {
  text-underline-offset: 0.375em !important;
}

.link-offset-3-hover:hover {
  text-underline-offset: 0.375em !important;
}

.link-underline-light {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-dark {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-primary {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-secondary {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-secondaryDark {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-secondaryDark-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-secondaryDarker {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-secondaryDarker-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-info {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-infoLight {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-infoLight-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-success {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-successDark {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-successDark-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-warning {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline-danger {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;
}

.link-underline {
  --bs-link-underline-opacity: 1;
  text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;
}

.link-underline-opacity-0 {
  --bs-link-underline-opacity: 0;
}

.link-underline-opacity-0-hover:hover {
  --bs-link-underline-opacity: 0;
}

.link-underline-opacity-10 {
  --bs-link-underline-opacity: 0.1;
}

.link-underline-opacity-10-hover:hover {
  --bs-link-underline-opacity: 0.1;
}

.link-underline-opacity-25 {
  --bs-link-underline-opacity: 0.25;
}

.link-underline-opacity-25-hover:hover {
  --bs-link-underline-opacity: 0.25;
}

.link-underline-opacity-50 {
  --bs-link-underline-opacity: 0.5;
}

.link-underline-opacity-50-hover:hover {
  --bs-link-underline-opacity: 0.5;
}

.link-underline-opacity-75 {
  --bs-link-underline-opacity: 0.75;
}

.link-underline-opacity-75-hover:hover {
  --bs-link-underline-opacity: 0.75;
}

.link-underline-opacity-100 {
  --bs-link-underline-opacity: 1;
}

.link-underline-opacity-100-hover:hover {
  --bs-link-underline-opacity: 1;
}

.bg-light {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;
}

.bg-dark {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
}

.bg-primary {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
}

.bg-secondary {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;
}

.bg-secondaryDark {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-secondaryDark-rgb), var(--bs-bg-opacity)) !important;
}

.bg-secondaryDarker {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-secondaryDarker-rgb), var(--bs-bg-opacity)) !important;
}

.bg-info {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;
}

.bg-infoLight {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-infoLight-rgb), var(--bs-bg-opacity)) !important;
}

.bg-success {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
}

.bg-successDark {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-successDark-rgb), var(--bs-bg-opacity)) !important;
}

.bg-warning {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;
}

.bg-danger {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
}

.bg-black {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;
}

.bg-white {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;
}

.bg-body {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
}

.bg-transparent {
  --bs-bg-opacity: 1;
  background-color: transparent !important;
}

.bg-body-secondary {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;
}

.bg-body-tertiary {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;
}

.bg-opacity-10 {
  --bs-bg-opacity: 0.1;
}

.bg-opacity-25 {
  --bs-bg-opacity: 0.25;
}

.bg-opacity-50 {
  --bs-bg-opacity: 0.5;
}

.bg-opacity-75 {
  --bs-bg-opacity: 0.75;
}

.bg-opacity-100 {
  --bs-bg-opacity: 1;
}

.bg-primary-subtle {
  background-color: var(--bs-primary-bg-subtle) !important;
}

.bg-secondary-subtle {
  background-color: var(--bs-secondary-bg-subtle) !important;
}

.bg-success-subtle {
  background-color: var(--bs-success-bg-subtle) !important;
}

.bg-info-subtle {
  background-color: var(--bs-info-bg-subtle) !important;
}

.bg-warning-subtle {
  background-color: var(--bs-warning-bg-subtle) !important;
}

.bg-danger-subtle {
  background-color: var(--bs-danger-bg-subtle) !important;
}

.bg-light-subtle {
  background-color: var(--bs-light-bg-subtle) !important;
}

.bg-dark-subtle {
  background-color: var(--bs-dark-bg-subtle) !important;
}

.bg-gradient {
  background-image: var(--bs-gradient) !important;
}

.user-select-all {
  user-select: all !important;
}

.user-select-auto {
  user-select: auto !important;
}

.user-select-none {
  user-select: none !important;
}

.pe-none {
  pointer-events: none !important;
}

.pe-auto {
  pointer-events: auto !important;
}

.rounded {
  border-radius: var(--bs-border-radius) !important;
}

.rounded-0 {
  border-radius: 0 !important;
}

.rounded-1 {
  border-radius: var(--bs-border-radius-sm) !important;
}

.rounded-2 {
  border-radius: var(--bs-border-radius) !important;
}

.rounded-3 {
  border-radius: var(--bs-border-radius-lg) !important;
}

.rounded-4 {
  border-radius: var(--bs-border-radius-xl) !important;
}

.rounded-5 {
  border-radius: var(--bs-border-radius-xxl) !important;
}

.rounded-circle {
  border-radius: 50% !important;
}

.rounded-pill {
  border-radius: var(--bs-border-radius-pill) !important;
}

.rounded-top {
  border-top-left-radius: var(--bs-border-radius) !important;
  border-top-right-radius: var(--bs-border-radius) !important;
}

.rounded-top-0 {
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
}

.rounded-top-1 {
  border-top-left-radius: var(--bs-border-radius-sm) !important;
  border-top-right-radius: var(--bs-border-radius-sm) !important;
}

.rounded-top-2 {
  border-top-left-radius: var(--bs-border-radius) !important;
  border-top-right-radius: var(--bs-border-radius) !important;
}

.rounded-top-3 {
  border-top-left-radius: var(--bs-border-radius-lg) !important;
  border-top-right-radius: var(--bs-border-radius-lg) !important;
}

.rounded-top-4 {
  border-top-left-radius: var(--bs-border-radius-xl) !important;
  border-top-right-radius: var(--bs-border-radius-xl) !important;
}

.rounded-top-5 {
  border-top-left-radius: var(--bs-border-radius-xxl) !important;
  border-top-right-radius: var(--bs-border-radius-xxl) !important;
}

.rounded-top-circle {
  border-top-left-radius: 50% !important;
  border-top-right-radius: 50% !important;
}

.rounded-top-pill {
  border-top-left-radius: var(--bs-border-radius-pill) !important;
  border-top-right-radius: var(--bs-border-radius-pill) !important;
}

.rounded-end {
  border-top-right-radius: var(--bs-border-radius) !important;
  border-bottom-right-radius: var(--bs-border-radius) !important;
}

.rounded-end-0 {
  border-top-right-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}

.rounded-end-1 {
  border-top-right-radius: var(--bs-border-radius-sm) !important;
  border-bottom-right-radius: var(--bs-border-radius-sm) !important;
}

.rounded-end-2 {
  border-top-right-radius: var(--bs-border-radius) !important;
  border-bottom-right-radius: var(--bs-border-radius) !important;
}

.rounded-end-3 {
  border-top-right-radius: var(--bs-border-radius-lg) !important;
  border-bottom-right-radius: var(--bs-border-radius-lg) !important;
}

.rounded-end-4 {
  border-top-right-radius: var(--bs-border-radius-xl) !important;
  border-bottom-right-radius: var(--bs-border-radius-xl) !important;
}

.rounded-end-5 {
  border-top-right-radius: var(--bs-border-radius-xxl) !important;
  border-bottom-right-radius: var(--bs-border-radius-xxl) !important;
}

.rounded-end-circle {
  border-top-right-radius: 50% !important;
  border-bottom-right-radius: 50% !important;
}

.rounded-end-pill {
  border-top-right-radius: var(--bs-border-radius-pill) !important;
  border-bottom-right-radius: var(--bs-border-radius-pill) !important;
}

.rounded-bottom {
  border-bottom-right-radius: var(--bs-border-radius) !important;
  border-bottom-left-radius: var(--bs-border-radius) !important;
}

.rounded-bottom-0 {
  border-bottom-right-radius: 0 !important;
  border-bottom-left-radius: 0 !important;
}

.rounded-bottom-1 {
  border-bottom-right-radius: var(--bs-border-radius-sm) !important;
  border-bottom-left-radius: var(--bs-border-radius-sm) !important;
}

.rounded-bottom-2 {
  border-bottom-right-radius: var(--bs-border-radius) !important;
  border-bottom-left-radius: var(--bs-border-radius) !important;
}

.rounded-bottom-3 {
  border-bottom-right-radius: var(--bs-border-radius-lg) !important;
  border-bottom-left-radius: var(--bs-border-radius-lg) !important;
}

.rounded-bottom-4 {
  border-bottom-right-radius: var(--bs-border-radius-xl) !important;
  border-bottom-left-radius: var(--bs-border-radius-xl) !important;
}

.rounded-bottom-5 {
  border-bottom-right-radius: var(--bs-border-radius-xxl) !important;
  border-bottom-left-radius: var(--bs-border-radius-xxl) !important;
}

.rounded-bottom-circle {
  border-bottom-right-radius: 50% !important;
  border-bottom-left-radius: 50% !important;
}

.rounded-bottom-pill {
  border-bottom-right-radius: var(--bs-border-radius-pill) !important;
  border-bottom-left-radius: var(--bs-border-radius-pill) !important;
}

.rounded-start {
  border-bottom-left-radius: var(--bs-border-radius) !important;
  border-top-left-radius: var(--bs-border-radius) !important;
}

.rounded-start-0 {
  border-bottom-left-radius: 0 !important;
  border-top-left-radius: 0 !important;
}

.rounded-start-1 {
  border-bottom-left-radius: var(--bs-border-radius-sm) !important;
  border-top-left-radius: var(--bs-border-radius-sm) !important;
}

.rounded-start-2 {
  border-bottom-left-radius: var(--bs-border-radius) !important;
  border-top-left-radius: var(--bs-border-radius) !important;
}

.rounded-start-3 {
  border-bottom-left-radius: var(--bs-border-radius-lg) !important;
  border-top-left-radius: var(--bs-border-radius-lg) !important;
}

.rounded-start-4 {
  border-bottom-left-radius: var(--bs-border-radius-xl) !important;
  border-top-left-radius: var(--bs-border-radius-xl) !important;
}

.rounded-start-5 {
  border-bottom-left-radius: var(--bs-border-radius-xxl) !important;
  border-top-left-radius: var(--bs-border-radius-xxl) !important;
}

.rounded-start-circle {
  border-bottom-left-radius: 50% !important;
  border-top-left-radius: 50% !important;
}

.rounded-start-pill {
  border-bottom-left-radius: var(--bs-border-radius-pill) !important;
  border-top-left-radius: var(--bs-border-radius-pill) !important;
}

.visible {
  visibility: visible !important;
}

.invisible {
  visibility: hidden !important;
}

.z-n1 {
  z-index: -1 !important;
}

.z-0 {
  z-index: 0 !important;
}

.z-1 {
  z-index: 1 !important;
}

.z-2 {
  z-index: 2 !important;
}

.z-3 {
  z-index: 3 !important;
}

@media (min-width: 576px) {
  .float-sm-start {
    float: left !important;
  }
  .float-sm-end {
    float: right !important;
  }
  .float-sm-none {
    float: none !important;
  }
  .object-fit-sm-contain {
    object-fit: contain !important;
  }
  .object-fit-sm-cover {
    object-fit: cover !important;
  }
  .object-fit-sm-fill {
    object-fit: fill !important;
  }
  .object-fit-sm-scale {
    object-fit: scale-down !important;
  }
  .object-fit-sm-none {
    object-fit: none !important;
  }
  .d-sm-inline {
    display: inline !important;
  }
  .d-sm-inline-block {
    display: inline-block !important;
  }
  .d-sm-block {
    display: block !important;
  }
  .d-sm-grid {
    display: grid !important;
  }
  .d-sm-inline-grid {
    display: inline-grid !important;
  }
  .d-sm-table {
    display: table !important;
  }
  .d-sm-table-row {
    display: table-row !important;
  }
  .d-sm-table-cell {
    display: table-cell !important;
  }
  .d-sm-flex {
    display: flex !important;
  }
  .d-sm-inline-flex {
    display: inline-flex !important;
  }
  .d-sm-none {
    display: none !important;
  }
  .flex-sm-fill {
    flex: 1 1 auto !important;
  }
  .flex-sm-row {
    flex-direction: row !important;
  }
  .flex-sm-column {
    flex-direction: column !important;
  }
  .flex-sm-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-sm-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-sm-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-sm-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-sm-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-sm-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-sm-wrap {
    flex-wrap: wrap !important;
  }
  .flex-sm-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-sm-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-sm-start {
    justify-content: flex-start !important;
  }
  .justify-content-sm-end {
    justify-content: flex-end !important;
  }
  .justify-content-sm-center {
    justify-content: center !important;
  }
  .justify-content-sm-between {
    justify-content: space-between !important;
  }
  .justify-content-sm-around {
    justify-content: space-around !important;
  }
  .justify-content-sm-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-sm-start {
    align-items: flex-start !important;
  }
  .align-items-sm-end {
    align-items: flex-end !important;
  }
  .align-items-sm-center {
    align-items: center !important;
  }
  .align-items-sm-baseline {
    align-items: baseline !important;
  }
  .align-items-sm-stretch {
    align-items: stretch !important;
  }
  .align-content-sm-start {
    align-content: flex-start !important;
  }
  .align-content-sm-end {
    align-content: flex-end !important;
  }
  .align-content-sm-center {
    align-content: center !important;
  }
  .align-content-sm-between {
    align-content: space-between !important;
  }
  .align-content-sm-around {
    align-content: space-around !important;
  }
  .align-content-sm-stretch {
    align-content: stretch !important;
  }
  .align-self-sm-auto {
    align-self: auto !important;
  }
  .align-self-sm-start {
    align-self: flex-start !important;
  }
  .align-self-sm-end {
    align-self: flex-end !important;
  }
  .align-self-sm-center {
    align-self: center !important;
  }
  .align-self-sm-baseline {
    align-self: baseline !important;
  }
  .align-self-sm-stretch {
    align-self: stretch !important;
  }
  .order-sm-first {
    order: -1 !important;
  }
  .order-sm-0 {
    order: 0 !important;
  }
  .order-sm-1 {
    order: 1 !important;
  }
  .order-sm-2 {
    order: 2 !important;
  }
  .order-sm-3 {
    order: 3 !important;
  }
  .order-sm-4 {
    order: 4 !important;
  }
  .order-sm-5 {
    order: 5 !important;
  }
  .order-sm-last {
    order: 6 !important;
  }
  .m-sm-0 {
    margin: 0 !important;
  }
  .m-sm-1 {
    margin: 0.25rem !important;
  }
  .m-sm-2 {
    margin: 0.5rem !important;
  }
  .m-sm-3 {
    margin: 1rem !important;
  }
  .m-sm-4 {
    margin: 1.5rem !important;
  }
  .m-sm-5 {
    margin: 3rem !important;
  }
  .m-sm-auto {
    margin: auto !important;
  }
  .mx-sm-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-sm-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-sm-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-sm-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-sm-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-sm-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-sm-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-sm-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-sm-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-sm-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-sm-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-sm-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-sm-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-sm-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-sm-0 {
    margin-top: 0 !important;
  }
  .mt-sm-1 {
    margin-top: 0.25rem !important;
  }
  .mt-sm-2 {
    margin-top: 0.5rem !important;
  }
  .mt-sm-3 {
    margin-top: 1rem !important;
  }
  .mt-sm-4 {
    margin-top: 1.5rem !important;
  }
  .mt-sm-5 {
    margin-top: 3rem !important;
  }
  .mt-sm-auto {
    margin-top: auto !important;
  }
  .me-sm-0 {
    margin-right: 0 !important;
  }
  .me-sm-1 {
    margin-right: 0.25rem !important;
  }
  .me-sm-2 {
    margin-right: 0.5rem !important;
  }
  .me-sm-3 {
    margin-right: 1rem !important;
  }
  .me-sm-4 {
    margin-right: 1.5rem !important;
  }
  .me-sm-5 {
    margin-right: 3rem !important;
  }
  .me-sm-auto {
    margin-right: auto !important;
  }
  .mb-sm-0 {
    margin-bottom: 0 !important;
  }
  .mb-sm-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-sm-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-sm-3 {
    margin-bottom: 1rem !important;
  }
  .mb-sm-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-sm-5 {
    margin-bottom: 3rem !important;
  }
  .mb-sm-auto {
    margin-bottom: auto !important;
  }
  .ms-sm-0 {
    margin-left: 0 !important;
  }
  .ms-sm-1 {
    margin-left: 0.25rem !important;
  }
  .ms-sm-2 {
    margin-left: 0.5rem !important;
  }
  .ms-sm-3 {
    margin-left: 1rem !important;
  }
  .ms-sm-4 {
    margin-left: 1.5rem !important;
  }
  .ms-sm-5 {
    margin-left: 3rem !important;
  }
  .ms-sm-auto {
    margin-left: auto !important;
  }
  .p-sm-0 {
    padding: 0 !important;
  }
  .p-sm-1 {
    padding: 0.25rem !important;
  }
  .p-sm-2 {
    padding: 0.5rem !important;
  }
  .p-sm-3 {
    padding: 1rem !important;
  }
  .p-sm-4 {
    padding: 1.5rem !important;
  }
  .p-sm-5 {
    padding: 3rem !important;
  }
  .px-sm-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-sm-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-sm-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-sm-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-sm-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-sm-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-sm-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-sm-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-sm-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-sm-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-sm-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-sm-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-sm-0 {
    padding-top: 0 !important;
  }
  .pt-sm-1 {
    padding-top: 0.25rem !important;
  }
  .pt-sm-2 {
    padding-top: 0.5rem !important;
  }
  .pt-sm-3 {
    padding-top: 1rem !important;
  }
  .pt-sm-4 {
    padding-top: 1.5rem !important;
  }
  .pt-sm-5 {
    padding-top: 3rem !important;
  }
  .pe-sm-0 {
    padding-right: 0 !important;
  }
  .pe-sm-1 {
    padding-right: 0.25rem !important;
  }
  .pe-sm-2 {
    padding-right: 0.5rem !important;
  }
  .pe-sm-3 {
    padding-right: 1rem !important;
  }
  .pe-sm-4 {
    padding-right: 1.5rem !important;
  }
  .pe-sm-5 {
    padding-right: 3rem !important;
  }
  .pb-sm-0 {
    padding-bottom: 0 !important;
  }
  .pb-sm-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-sm-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-sm-3 {
    padding-bottom: 1rem !important;
  }
  .pb-sm-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-sm-5 {
    padding-bottom: 3rem !important;
  }
  .ps-sm-0 {
    padding-left: 0 !important;
  }
  .ps-sm-1 {
    padding-left: 0.25rem !important;
  }
  .ps-sm-2 {
    padding-left: 0.5rem !important;
  }
  .ps-sm-3 {
    padding-left: 1rem !important;
  }
  .ps-sm-4 {
    padding-left: 1.5rem !important;
  }
  .ps-sm-5 {
    padding-left: 3rem !important;
  }
  .gap-sm-0 {
    gap: 0 !important;
  }
  .gap-sm-1 {
    gap: 0.25rem !important;
  }
  .gap-sm-2 {
    gap: 0.5rem !important;
  }
  .gap-sm-3 {
    gap: 1rem !important;
  }
  .gap-sm-4 {
    gap: 1.5rem !important;
  }
  .gap-sm-5 {
    gap: 3rem !important;
  }
  .row-gap-sm-0 {
    row-gap: 0 !important;
  }
  .row-gap-sm-1 {
    row-gap: 0.25rem !important;
  }
  .row-gap-sm-2 {
    row-gap: 0.5rem !important;
  }
  .row-gap-sm-3 {
    row-gap: 1rem !important;
  }
  .row-gap-sm-4 {
    row-gap: 1.5rem !important;
  }
  .row-gap-sm-5 {
    row-gap: 3rem !important;
  }
  .column-gap-sm-0 {
    column-gap: 0 !important;
  }
  .column-gap-sm-1 {
    column-gap: 0.25rem !important;
  }
  .column-gap-sm-2 {
    column-gap: 0.5rem !important;
  }
  .column-gap-sm-3 {
    column-gap: 1rem !important;
  }
  .column-gap-sm-4 {
    column-gap: 1.5rem !important;
  }
  .column-gap-sm-5 {
    column-gap: 3rem !important;
  }
  .text-sm-start {
    text-align: left !important;
  }
  .text-sm-end {
    text-align: right !important;
  }
  .text-sm-center {
    text-align: center !important;
  }
}
@media (min-width: 768px) {
  .float-md-start {
    float: left !important;
  }
  .float-md-end {
    float: right !important;
  }
  .float-md-none {
    float: none !important;
  }
  .object-fit-md-contain {
    object-fit: contain !important;
  }
  .object-fit-md-cover {
    object-fit: cover !important;
  }
  .object-fit-md-fill {
    object-fit: fill !important;
  }
  .object-fit-md-scale {
    object-fit: scale-down !important;
  }
  .object-fit-md-none {
    object-fit: none !important;
  }
  .d-md-inline {
    display: inline !important;
  }
  .d-md-inline-block {
    display: inline-block !important;
  }
  .d-md-block {
    display: block !important;
  }
  .d-md-grid {
    display: grid !important;
  }
  .d-md-inline-grid {
    display: inline-grid !important;
  }
  .d-md-table {
    display: table !important;
  }
  .d-md-table-row {
    display: table-row !important;
  }
  .d-md-table-cell {
    display: table-cell !important;
  }
  .d-md-flex {
    display: flex !important;
  }
  .d-md-inline-flex {
    display: inline-flex !important;
  }
  .d-md-none {
    display: none !important;
  }
  .flex-md-fill {
    flex: 1 1 auto !important;
  }
  .flex-md-row {
    flex-direction: row !important;
  }
  .flex-md-column {
    flex-direction: column !important;
  }
  .flex-md-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-md-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-md-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-md-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-md-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-md-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-md-wrap {
    flex-wrap: wrap !important;
  }
  .flex-md-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-md-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-md-start {
    justify-content: flex-start !important;
  }
  .justify-content-md-end {
    justify-content: flex-end !important;
  }
  .justify-content-md-center {
    justify-content: center !important;
  }
  .justify-content-md-between {
    justify-content: space-between !important;
  }
  .justify-content-md-around {
    justify-content: space-around !important;
  }
  .justify-content-md-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-md-start {
    align-items: flex-start !important;
  }
  .align-items-md-end {
    align-items: flex-end !important;
  }
  .align-items-md-center {
    align-items: center !important;
  }
  .align-items-md-baseline {
    align-items: baseline !important;
  }
  .align-items-md-stretch {
    align-items: stretch !important;
  }
  .align-content-md-start {
    align-content: flex-start !important;
  }
  .align-content-md-end {
    align-content: flex-end !important;
  }
  .align-content-md-center {
    align-content: center !important;
  }
  .align-content-md-between {
    align-content: space-between !important;
  }
  .align-content-md-around {
    align-content: space-around !important;
  }
  .align-content-md-stretch {
    align-content: stretch !important;
  }
  .align-self-md-auto {
    align-self: auto !important;
  }
  .align-self-md-start {
    align-self: flex-start !important;
  }
  .align-self-md-end {
    align-self: flex-end !important;
  }
  .align-self-md-center {
    align-self: center !important;
  }
  .align-self-md-baseline {
    align-self: baseline !important;
  }
  .align-self-md-stretch {
    align-self: stretch !important;
  }
  .order-md-first {
    order: -1 !important;
  }
  .order-md-0 {
    order: 0 !important;
  }
  .order-md-1 {
    order: 1 !important;
  }
  .order-md-2 {
    order: 2 !important;
  }
  .order-md-3 {
    order: 3 !important;
  }
  .order-md-4 {
    order: 4 !important;
  }
  .order-md-5 {
    order: 5 !important;
  }
  .order-md-last {
    order: 6 !important;
  }
  .m-md-0 {
    margin: 0 !important;
  }
  .m-md-1 {
    margin: 0.25rem !important;
  }
  .m-md-2 {
    margin: 0.5rem !important;
  }
  .m-md-3 {
    margin: 1rem !important;
  }
  .m-md-4 {
    margin: 1.5rem !important;
  }
  .m-md-5 {
    margin: 3rem !important;
  }
  .m-md-auto {
    margin: auto !important;
  }
  .mx-md-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-md-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-md-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-md-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-md-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-md-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-md-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-md-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-md-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-md-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-md-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-md-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-md-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-md-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-md-0 {
    margin-top: 0 !important;
  }
  .mt-md-1 {
    margin-top: 0.25rem !important;
  }
  .mt-md-2 {
    margin-top: 0.5rem !important;
  }
  .mt-md-3 {
    margin-top: 1rem !important;
  }
  .mt-md-4 {
    margin-top: 1.5rem !important;
  }
  .mt-md-5 {
    margin-top: 3rem !important;
  }
  .mt-md-auto {
    margin-top: auto !important;
  }
  .me-md-0 {
    margin-right: 0 !important;
  }
  .me-md-1 {
    margin-right: 0.25rem !important;
  }
  .me-md-2 {
    margin-right: 0.5rem !important;
  }
  .me-md-3 {
    margin-right: 1rem !important;
  }
  .me-md-4 {
    margin-right: 1.5rem !important;
  }
  .me-md-5 {
    margin-right: 3rem !important;
  }
  .me-md-auto {
    margin-right: auto !important;
  }
  .mb-md-0 {
    margin-bottom: 0 !important;
  }
  .mb-md-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-md-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-md-3 {
    margin-bottom: 1rem !important;
  }
  .mb-md-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-md-5 {
    margin-bottom: 3rem !important;
  }
  .mb-md-auto {
    margin-bottom: auto !important;
  }
  .ms-md-0 {
    margin-left: 0 !important;
  }
  .ms-md-1 {
    margin-left: 0.25rem !important;
  }
  .ms-md-2 {
    margin-left: 0.5rem !important;
  }
  .ms-md-3 {
    margin-left: 1rem !important;
  }
  .ms-md-4 {
    margin-left: 1.5rem !important;
  }
  .ms-md-5 {
    margin-left: 3rem !important;
  }
  .ms-md-auto {
    margin-left: auto !important;
  }
  .p-md-0 {
    padding: 0 !important;
  }
  .p-md-1 {
    padding: 0.25rem !important;
  }
  .p-md-2 {
    padding: 0.5rem !important;
  }
  .p-md-3 {
    padding: 1rem !important;
  }
  .p-md-4 {
    padding: 1.5rem !important;
  }
  .p-md-5 {
    padding: 3rem !important;
  }
  .px-md-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-md-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-md-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-md-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-md-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-md-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-md-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-md-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-md-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-md-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-md-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-md-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-md-0 {
    padding-top: 0 !important;
  }
  .pt-md-1 {
    padding-top: 0.25rem !important;
  }
  .pt-md-2 {
    padding-top: 0.5rem !important;
  }
  .pt-md-3 {
    padding-top: 1rem !important;
  }
  .pt-md-4 {
    padding-top: 1.5rem !important;
  }
  .pt-md-5 {
    padding-top: 3rem !important;
  }
  .pe-md-0 {
    padding-right: 0 !important;
  }
  .pe-md-1 {
    padding-right: 0.25rem !important;
  }
  .pe-md-2 {
    padding-right: 0.5rem !important;
  }
  .pe-md-3 {
    padding-right: 1rem !important;
  }
  .pe-md-4 {
    padding-right: 1.5rem !important;
  }
  .pe-md-5 {
    padding-right: 3rem !important;
  }
  .pb-md-0 {
    padding-bottom: 0 !important;
  }
  .pb-md-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-md-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-md-3 {
    padding-bottom: 1rem !important;
  }
  .pb-md-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-md-5 {
    padding-bottom: 3rem !important;
  }
  .ps-md-0 {
    padding-left: 0 !important;
  }
  .ps-md-1 {
    padding-left: 0.25rem !important;
  }
  .ps-md-2 {
    padding-left: 0.5rem !important;
  }
  .ps-md-3 {
    padding-left: 1rem !important;
  }
  .ps-md-4 {
    padding-left: 1.5rem !important;
  }
  .ps-md-5 {
    padding-left: 3rem !important;
  }
  .gap-md-0 {
    gap: 0 !important;
  }
  .gap-md-1 {
    gap: 0.25rem !important;
  }
  .gap-md-2 {
    gap: 0.5rem !important;
  }
  .gap-md-3 {
    gap: 1rem !important;
  }
  .gap-md-4 {
    gap: 1.5rem !important;
  }
  .gap-md-5 {
    gap: 3rem !important;
  }
  .row-gap-md-0 {
    row-gap: 0 !important;
  }
  .row-gap-md-1 {
    row-gap: 0.25rem !important;
  }
  .row-gap-md-2 {
    row-gap: 0.5rem !important;
  }
  .row-gap-md-3 {
    row-gap: 1rem !important;
  }
  .row-gap-md-4 {
    row-gap: 1.5rem !important;
  }
  .row-gap-md-5 {
    row-gap: 3rem !important;
  }
  .column-gap-md-0 {
    column-gap: 0 !important;
  }
  .column-gap-md-1 {
    column-gap: 0.25rem !important;
  }
  .column-gap-md-2 {
    column-gap: 0.5rem !important;
  }
  .column-gap-md-3 {
    column-gap: 1rem !important;
  }
  .column-gap-md-4 {
    column-gap: 1.5rem !important;
  }
  .column-gap-md-5 {
    column-gap: 3rem !important;
  }
  .text-md-start {
    text-align: left !important;
  }
  .text-md-end {
    text-align: right !important;
  }
  .text-md-center {
    text-align: center !important;
  }
}
@media (min-width: 992px) {
  .float-lg-start {
    float: left !important;
  }
  .float-lg-end {
    float: right !important;
  }
  .float-lg-none {
    float: none !important;
  }
  .object-fit-lg-contain {
    object-fit: contain !important;
  }
  .object-fit-lg-cover {
    object-fit: cover !important;
  }
  .object-fit-lg-fill {
    object-fit: fill !important;
  }
  .object-fit-lg-scale {
    object-fit: scale-down !important;
  }
  .object-fit-lg-none {
    object-fit: none !important;
  }
  .d-lg-inline {
    display: inline !important;
  }
  .d-lg-inline-block {
    display: inline-block !important;
  }
  .d-lg-block {
    display: block !important;
  }
  .d-lg-grid {
    display: grid !important;
  }
  .d-lg-inline-grid {
    display: inline-grid !important;
  }
  .d-lg-table {
    display: table !important;
  }
  .d-lg-table-row {
    display: table-row !important;
  }
  .d-lg-table-cell {
    display: table-cell !important;
  }
  .d-lg-flex {
    display: flex !important;
  }
  .d-lg-inline-flex {
    display: inline-flex !important;
  }
  .d-lg-none {
    display: none !important;
  }
  .flex-lg-fill {
    flex: 1 1 auto !important;
  }
  .flex-lg-row {
    flex-direction: row !important;
  }
  .flex-lg-column {
    flex-direction: column !important;
  }
  .flex-lg-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-lg-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-lg-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-lg-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-lg-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-lg-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-lg-wrap {
    flex-wrap: wrap !important;
  }
  .flex-lg-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-lg-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-lg-start {
    justify-content: flex-start !important;
  }
  .justify-content-lg-end {
    justify-content: flex-end !important;
  }
  .justify-content-lg-center {
    justify-content: center !important;
  }
  .justify-content-lg-between {
    justify-content: space-between !important;
  }
  .justify-content-lg-around {
    justify-content: space-around !important;
  }
  .justify-content-lg-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-lg-start {
    align-items: flex-start !important;
  }
  .align-items-lg-end {
    align-items: flex-end !important;
  }
  .align-items-lg-center {
    align-items: center !important;
  }
  .align-items-lg-baseline {
    align-items: baseline !important;
  }
  .align-items-lg-stretch {
    align-items: stretch !important;
  }
  .align-content-lg-start {
    align-content: flex-start !important;
  }
  .align-content-lg-end {
    align-content: flex-end !important;
  }
  .align-content-lg-center {
    align-content: center !important;
  }
  .align-content-lg-between {
    align-content: space-between !important;
  }
  .align-content-lg-around {
    align-content: space-around !important;
  }
  .align-content-lg-stretch {
    align-content: stretch !important;
  }
  .align-self-lg-auto {
    align-self: auto !important;
  }
  .align-self-lg-start {
    align-self: flex-start !important;
  }
  .align-self-lg-end {
    align-self: flex-end !important;
  }
  .align-self-lg-center {
    align-self: center !important;
  }
  .align-self-lg-baseline {
    align-self: baseline !important;
  }
  .align-self-lg-stretch {
    align-self: stretch !important;
  }
  .order-lg-first {
    order: -1 !important;
  }
  .order-lg-0 {
    order: 0 !important;
  }
  .order-lg-1 {
    order: 1 !important;
  }
  .order-lg-2 {
    order: 2 !important;
  }
  .order-lg-3 {
    order: 3 !important;
  }
  .order-lg-4 {
    order: 4 !important;
  }
  .order-lg-5 {
    order: 5 !important;
  }
  .order-lg-last {
    order: 6 !important;
  }
  .m-lg-0 {
    margin: 0 !important;
  }
  .m-lg-1 {
    margin: 0.25rem !important;
  }
  .m-lg-2 {
    margin: 0.5rem !important;
  }
  .m-lg-3 {
    margin: 1rem !important;
  }
  .m-lg-4 {
    margin: 1.5rem !important;
  }
  .m-lg-5 {
    margin: 3rem !important;
  }
  .m-lg-auto {
    margin: auto !important;
  }
  .mx-lg-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-lg-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-lg-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-lg-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-lg-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-lg-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-lg-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-lg-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-lg-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-lg-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-lg-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-lg-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-lg-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-lg-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-lg-0 {
    margin-top: 0 !important;
  }
  .mt-lg-1 {
    margin-top: 0.25rem !important;
  }
  .mt-lg-2 {
    margin-top: 0.5rem !important;
  }
  .mt-lg-3 {
    margin-top: 1rem !important;
  }
  .mt-lg-4 {
    margin-top: 1.5rem !important;
  }
  .mt-lg-5 {
    margin-top: 3rem !important;
  }
  .mt-lg-auto {
    margin-top: auto !important;
  }
  .me-lg-0 {
    margin-right: 0 !important;
  }
  .me-lg-1 {
    margin-right: 0.25rem !important;
  }
  .me-lg-2 {
    margin-right: 0.5rem !important;
  }
  .me-lg-3 {
    margin-right: 1rem !important;
  }
  .me-lg-4 {
    margin-right: 1.5rem !important;
  }
  .me-lg-5 {
    margin-right: 3rem !important;
  }
  .me-lg-auto {
    margin-right: auto !important;
  }
  .mb-lg-0 {
    margin-bottom: 0 !important;
  }
  .mb-lg-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-lg-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-lg-3 {
    margin-bottom: 1rem !important;
  }
  .mb-lg-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-lg-5 {
    margin-bottom: 3rem !important;
  }
  .mb-lg-auto {
    margin-bottom: auto !important;
  }
  .ms-lg-0 {
    margin-left: 0 !important;
  }
  .ms-lg-1 {
    margin-left: 0.25rem !important;
  }
  .ms-lg-2 {
    margin-left: 0.5rem !important;
  }
  .ms-lg-3 {
    margin-left: 1rem !important;
  }
  .ms-lg-4 {
    margin-left: 1.5rem !important;
  }
  .ms-lg-5 {
    margin-left: 3rem !important;
  }
  .ms-lg-auto {
    margin-left: auto !important;
  }
  .p-lg-0 {
    padding: 0 !important;
  }
  .p-lg-1 {
    padding: 0.25rem !important;
  }
  .p-lg-2 {
    padding: 0.5rem !important;
  }
  .p-lg-3 {
    padding: 1rem !important;
  }
  .p-lg-4 {
    padding: 1.5rem !important;
  }
  .p-lg-5 {
    padding: 3rem !important;
  }
  .px-lg-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-lg-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-lg-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-lg-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-lg-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-lg-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-lg-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-lg-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-lg-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-lg-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-lg-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-lg-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-lg-0 {
    padding-top: 0 !important;
  }
  .pt-lg-1 {
    padding-top: 0.25rem !important;
  }
  .pt-lg-2 {
    padding-top: 0.5rem !important;
  }
  .pt-lg-3 {
    padding-top: 1rem !important;
  }
  .pt-lg-4 {
    padding-top: 1.5rem !important;
  }
  .pt-lg-5 {
    padding-top: 3rem !important;
  }
  .pe-lg-0 {
    padding-right: 0 !important;
  }
  .pe-lg-1 {
    padding-right: 0.25rem !important;
  }
  .pe-lg-2 {
    padding-right: 0.5rem !important;
  }
  .pe-lg-3 {
    padding-right: 1rem !important;
  }
  .pe-lg-4 {
    padding-right: 1.5rem !important;
  }
  .pe-lg-5 {
    padding-right: 3rem !important;
  }
  .pb-lg-0 {
    padding-bottom: 0 !important;
  }
  .pb-lg-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-lg-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-lg-3 {
    padding-bottom: 1rem !important;
  }
  .pb-lg-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-lg-5 {
    padding-bottom: 3rem !important;
  }
  .ps-lg-0 {
    padding-left: 0 !important;
  }
  .ps-lg-1 {
    padding-left: 0.25rem !important;
  }
  .ps-lg-2 {
    padding-left: 0.5rem !important;
  }
  .ps-lg-3 {
    padding-left: 1rem !important;
  }
  .ps-lg-4 {
    padding-left: 1.5rem !important;
  }
  .ps-lg-5 {
    padding-left: 3rem !important;
  }
  .gap-lg-0 {
    gap: 0 !important;
  }
  .gap-lg-1 {
    gap: 0.25rem !important;
  }
  .gap-lg-2 {
    gap: 0.5rem !important;
  }
  .gap-lg-3 {
    gap: 1rem !important;
  }
  .gap-lg-4 {
    gap: 1.5rem !important;
  }
  .gap-lg-5 {
    gap: 3rem !important;
  }
  .row-gap-lg-0 {
    row-gap: 0 !important;
  }
  .row-gap-lg-1 {
    row-gap: 0.25rem !important;
  }
  .row-gap-lg-2 {
    row-gap: 0.5rem !important;
  }
  .row-gap-lg-3 {
    row-gap: 1rem !important;
  }
  .row-gap-lg-4 {
    row-gap: 1.5rem !important;
  }
  .row-gap-lg-5 {
    row-gap: 3rem !important;
  }
  .column-gap-lg-0 {
    column-gap: 0 !important;
  }
  .column-gap-lg-1 {
    column-gap: 0.25rem !important;
  }
  .column-gap-lg-2 {
    column-gap: 0.5rem !important;
  }
  .column-gap-lg-3 {
    column-gap: 1rem !important;
  }
  .column-gap-lg-4 {
    column-gap: 1.5rem !important;
  }
  .column-gap-lg-5 {
    column-gap: 3rem !important;
  }
  .text-lg-start {
    text-align: left !important;
  }
  .text-lg-end {
    text-align: right !important;
  }
  .text-lg-center {
    text-align: center !important;
  }
}
@media (min-width: 1200px) {
  .float-xl-start {
    float: left !important;
  }
  .float-xl-end {
    float: right !important;
  }
  .float-xl-none {
    float: none !important;
  }
  .object-fit-xl-contain {
    object-fit: contain !important;
  }
  .object-fit-xl-cover {
    object-fit: cover !important;
  }
  .object-fit-xl-fill {
    object-fit: fill !important;
  }
  .object-fit-xl-scale {
    object-fit: scale-down !important;
  }
  .object-fit-xl-none {
    object-fit: none !important;
  }
  .d-xl-inline {
    display: inline !important;
  }
  .d-xl-inline-block {
    display: inline-block !important;
  }
  .d-xl-block {
    display: block !important;
  }
  .d-xl-grid {
    display: grid !important;
  }
  .d-xl-inline-grid {
    display: inline-grid !important;
  }
  .d-xl-table {
    display: table !important;
  }
  .d-xl-table-row {
    display: table-row !important;
  }
  .d-xl-table-cell {
    display: table-cell !important;
  }
  .d-xl-flex {
    display: flex !important;
  }
  .d-xl-inline-flex {
    display: inline-flex !important;
  }
  .d-xl-none {
    display: none !important;
  }
  .flex-xl-fill {
    flex: 1 1 auto !important;
  }
  .flex-xl-row {
    flex-direction: row !important;
  }
  .flex-xl-column {
    flex-direction: column !important;
  }
  .flex-xl-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-xl-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-xl-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-xl-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-xl-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-xl-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-xl-wrap {
    flex-wrap: wrap !important;
  }
  .flex-xl-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-xl-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-xl-start {
    justify-content: flex-start !important;
  }
  .justify-content-xl-end {
    justify-content: flex-end !important;
  }
  .justify-content-xl-center {
    justify-content: center !important;
  }
  .justify-content-xl-between {
    justify-content: space-between !important;
  }
  .justify-content-xl-around {
    justify-content: space-around !important;
  }
  .justify-content-xl-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-xl-start {
    align-items: flex-start !important;
  }
  .align-items-xl-end {
    align-items: flex-end !important;
  }
  .align-items-xl-center {
    align-items: center !important;
  }
  .align-items-xl-baseline {
    align-items: baseline !important;
  }
  .align-items-xl-stretch {
    align-items: stretch !important;
  }
  .align-content-xl-start {
    align-content: flex-start !important;
  }
  .align-content-xl-end {
    align-content: flex-end !important;
  }
  .align-content-xl-center {
    align-content: center !important;
  }
  .align-content-xl-between {
    align-content: space-between !important;
  }
  .align-content-xl-around {
    align-content: space-around !important;
  }
  .align-content-xl-stretch {
    align-content: stretch !important;
  }
  .align-self-xl-auto {
    align-self: auto !important;
  }
  .align-self-xl-start {
    align-self: flex-start !important;
  }
  .align-self-xl-end {
    align-self: flex-end !important;
  }
  .align-self-xl-center {
    align-self: center !important;
  }
  .align-self-xl-baseline {
    align-self: baseline !important;
  }
  .align-self-xl-stretch {
    align-self: stretch !important;
  }
  .order-xl-first {
    order: -1 !important;
  }
  .order-xl-0 {
    order: 0 !important;
  }
  .order-xl-1 {
    order: 1 !important;
  }
  .order-xl-2 {
    order: 2 !important;
  }
  .order-xl-3 {
    order: 3 !important;
  }
  .order-xl-4 {
    order: 4 !important;
  }
  .order-xl-5 {
    order: 5 !important;
  }
  .order-xl-last {
    order: 6 !important;
  }
  .m-xl-0 {
    margin: 0 !important;
  }
  .m-xl-1 {
    margin: 0.25rem !important;
  }
  .m-xl-2 {
    margin: 0.5rem !important;
  }
  .m-xl-3 {
    margin: 1rem !important;
  }
  .m-xl-4 {
    margin: 1.5rem !important;
  }
  .m-xl-5 {
    margin: 3rem !important;
  }
  .m-xl-auto {
    margin: auto !important;
  }
  .mx-xl-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-xl-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-xl-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-xl-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-xl-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-xl-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-xl-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-xl-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-xl-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-xl-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-xl-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-xl-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-xl-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-xl-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-xl-0 {
    margin-top: 0 !important;
  }
  .mt-xl-1 {
    margin-top: 0.25rem !important;
  }
  .mt-xl-2 {
    margin-top: 0.5rem !important;
  }
  .mt-xl-3 {
    margin-top: 1rem !important;
  }
  .mt-xl-4 {
    margin-top: 1.5rem !important;
  }
  .mt-xl-5 {
    margin-top: 3rem !important;
  }
  .mt-xl-auto {
    margin-top: auto !important;
  }
  .me-xl-0 {
    margin-right: 0 !important;
  }
  .me-xl-1 {
    margin-right: 0.25rem !important;
  }
  .me-xl-2 {
    margin-right: 0.5rem !important;
  }
  .me-xl-3 {
    margin-right: 1rem !important;
  }
  .me-xl-4 {
    margin-right: 1.5rem !important;
  }
  .me-xl-5 {
    margin-right: 3rem !important;
  }
  .me-xl-auto {
    margin-right: auto !important;
  }
  .mb-xl-0 {
    margin-bottom: 0 !important;
  }
  .mb-xl-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-xl-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-xl-3 {
    margin-bottom: 1rem !important;
  }
  .mb-xl-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-xl-5 {
    margin-bottom: 3rem !important;
  }
  .mb-xl-auto {
    margin-bottom: auto !important;
  }
  .ms-xl-0 {
    margin-left: 0 !important;
  }
  .ms-xl-1 {
    margin-left: 0.25rem !important;
  }
  .ms-xl-2 {
    margin-left: 0.5rem !important;
  }
  .ms-xl-3 {
    margin-left: 1rem !important;
  }
  .ms-xl-4 {
    margin-left: 1.5rem !important;
  }
  .ms-xl-5 {
    margin-left: 3rem !important;
  }
  .ms-xl-auto {
    margin-left: auto !important;
  }
  .p-xl-0 {
    padding: 0 !important;
  }
  .p-xl-1 {
    padding: 0.25rem !important;
  }
  .p-xl-2 {
    padding: 0.5rem !important;
  }
  .p-xl-3 {
    padding: 1rem !important;
  }
  .p-xl-4 {
    padding: 1.5rem !important;
  }
  .p-xl-5 {
    padding: 3rem !important;
  }
  .px-xl-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-xl-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-xl-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-xl-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-xl-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-xl-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-xl-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-xl-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-xl-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-xl-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-xl-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-xl-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-xl-0 {
    padding-top: 0 !important;
  }
  .pt-xl-1 {
    padding-top: 0.25rem !important;
  }
  .pt-xl-2 {
    padding-top: 0.5rem !important;
  }
  .pt-xl-3 {
    padding-top: 1rem !important;
  }
  .pt-xl-4 {
    padding-top: 1.5rem !important;
  }
  .pt-xl-5 {
    padding-top: 3rem !important;
  }
  .pe-xl-0 {
    padding-right: 0 !important;
  }
  .pe-xl-1 {
    padding-right: 0.25rem !important;
  }
  .pe-xl-2 {
    padding-right: 0.5rem !important;
  }
  .pe-xl-3 {
    padding-right: 1rem !important;
  }
  .pe-xl-4 {
    padding-right: 1.5rem !important;
  }
  .pe-xl-5 {
    padding-right: 3rem !important;
  }
  .pb-xl-0 {
    padding-bottom: 0 !important;
  }
  .pb-xl-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-xl-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-xl-3 {
    padding-bottom: 1rem !important;
  }
  .pb-xl-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-xl-5 {
    padding-bottom: 3rem !important;
  }
  .ps-xl-0 {
    padding-left: 0 !important;
  }
  .ps-xl-1 {
    padding-left: 0.25rem !important;
  }
  .ps-xl-2 {
    padding-left: 0.5rem !important;
  }
  .ps-xl-3 {
    padding-left: 1rem !important;
  }
  .ps-xl-4 {
    padding-left: 1.5rem !important;
  }
  .ps-xl-5 {
    padding-left: 3rem !important;
  }
  .gap-xl-0 {
    gap: 0 !important;
  }
  .gap-xl-1 {
    gap: 0.25rem !important;
  }
  .gap-xl-2 {
    gap: 0.5rem !important;
  }
  .gap-xl-3 {
    gap: 1rem !important;
  }
  .gap-xl-4 {
    gap: 1.5rem !important;
  }
  .gap-xl-5 {
    gap: 3rem !important;
  }
  .row-gap-xl-0 {
    row-gap: 0 !important;
  }
  .row-gap-xl-1 {
    row-gap: 0.25rem !important;
  }
  .row-gap-xl-2 {
    row-gap: 0.5rem !important;
  }
  .row-gap-xl-3 {
    row-gap: 1rem !important;
  }
  .row-gap-xl-4 {
    row-gap: 1.5rem !important;
  }
  .row-gap-xl-5 {
    row-gap: 3rem !important;
  }
  .column-gap-xl-0 {
    column-gap: 0 !important;
  }
  .column-gap-xl-1 {
    column-gap: 0.25rem !important;
  }
  .column-gap-xl-2 {
    column-gap: 0.5rem !important;
  }
  .column-gap-xl-3 {
    column-gap: 1rem !important;
  }
  .column-gap-xl-4 {
    column-gap: 1.5rem !important;
  }
  .column-gap-xl-5 {
    column-gap: 3rem !important;
  }
  .text-xl-start {
    text-align: left !important;
  }
  .text-xl-end {
    text-align: right !important;
  }
  .text-xl-center {
    text-align: center !important;
  }
}
@media (min-width: 1400px) {
  .float-xxl-start {
    float: left !important;
  }
  .float-xxl-end {
    float: right !important;
  }
  .float-xxl-none {
    float: none !important;
  }
  .object-fit-xxl-contain {
    object-fit: contain !important;
  }
  .object-fit-xxl-cover {
    object-fit: cover !important;
  }
  .object-fit-xxl-fill {
    object-fit: fill !important;
  }
  .object-fit-xxl-scale {
    object-fit: scale-down !important;
  }
  .object-fit-xxl-none {
    object-fit: none !important;
  }
  .d-xxl-inline {
    display: inline !important;
  }
  .d-xxl-inline-block {
    display: inline-block !important;
  }
  .d-xxl-block {
    display: block !important;
  }
  .d-xxl-grid {
    display: grid !important;
  }
  .d-xxl-inline-grid {
    display: inline-grid !important;
  }
  .d-xxl-table {
    display: table !important;
  }
  .d-xxl-table-row {
    display: table-row !important;
  }
  .d-xxl-table-cell {
    display: table-cell !important;
  }
  .d-xxl-flex {
    display: flex !important;
  }
  .d-xxl-inline-flex {
    display: inline-flex !important;
  }
  .d-xxl-none {
    display: none !important;
  }
  .flex-xxl-fill {
    flex: 1 1 auto !important;
  }
  .flex-xxl-row {
    flex-direction: row !important;
  }
  .flex-xxl-column {
    flex-direction: column !important;
  }
  .flex-xxl-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-xxl-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-xxl-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-xxl-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-xxl-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-xxl-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-xxl-wrap {
    flex-wrap: wrap !important;
  }
  .flex-xxl-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-xxl-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-xxl-start {
    justify-content: flex-start !important;
  }
  .justify-content-xxl-end {
    justify-content: flex-end !important;
  }
  .justify-content-xxl-center {
    justify-content: center !important;
  }
  .justify-content-xxl-between {
    justify-content: space-between !important;
  }
  .justify-content-xxl-around {
    justify-content: space-around !important;
  }
  .justify-content-xxl-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-xxl-start {
    align-items: flex-start !important;
  }
  .align-items-xxl-end {
    align-items: flex-end !important;
  }
  .align-items-xxl-center {
    align-items: center !important;
  }
  .align-items-xxl-baseline {
    align-items: baseline !important;
  }
  .align-items-xxl-stretch {
    align-items: stretch !important;
  }
  .align-content-xxl-start {
    align-content: flex-start !important;
  }
  .align-content-xxl-end {
    align-content: flex-end !important;
  }
  .align-content-xxl-center {
    align-content: center !important;
  }
  .align-content-xxl-between {
    align-content: space-between !important;
  }
  .align-content-xxl-around {
    align-content: space-around !important;
  }
  .align-content-xxl-stretch {
    align-content: stretch !important;
  }
  .align-self-xxl-auto {
    align-self: auto !important;
  }
  .align-self-xxl-start {
    align-self: flex-start !important;
  }
  .align-self-xxl-end {
    align-self: flex-end !important;
  }
  .align-self-xxl-center {
    align-self: center !important;
  }
  .align-self-xxl-baseline {
    align-self: baseline !important;
  }
  .align-self-xxl-stretch {
    align-self: stretch !important;
  }
  .order-xxl-first {
    order: -1 !important;
  }
  .order-xxl-0 {
    order: 0 !important;
  }
  .order-xxl-1 {
    order: 1 !important;
  }
  .order-xxl-2 {
    order: 2 !important;
  }
  .order-xxl-3 {
    order: 3 !important;
  }
  .order-xxl-4 {
    order: 4 !important;
  }
  .order-xxl-5 {
    order: 5 !important;
  }
  .order-xxl-last {
    order: 6 !important;
  }
  .m-xxl-0 {
    margin: 0 !important;
  }
  .m-xxl-1 {
    margin: 0.25rem !important;
  }
  .m-xxl-2 {
    margin: 0.5rem !important;
  }
  .m-xxl-3 {
    margin: 1rem !important;
  }
  .m-xxl-4 {
    margin: 1.5rem !important;
  }
  .m-xxl-5 {
    margin: 3rem !important;
  }
  .m-xxl-auto {
    margin: auto !important;
  }
  .mx-xxl-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-xxl-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-xxl-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-xxl-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-xxl-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-xxl-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-xxl-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-xxl-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-xxl-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-xxl-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-xxl-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-xxl-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-xxl-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-xxl-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-xxl-0 {
    margin-top: 0 !important;
  }
  .mt-xxl-1 {
    margin-top: 0.25rem !important;
  }
  .mt-xxl-2 {
    margin-top: 0.5rem !important;
  }
  .mt-xxl-3 {
    margin-top: 1rem !important;
  }
  .mt-xxl-4 {
    margin-top: 1.5rem !important;
  }
  .mt-xxl-5 {
    margin-top: 3rem !important;
  }
  .mt-xxl-auto {
    margin-top: auto !important;
  }
  .me-xxl-0 {
    margin-right: 0 !important;
  }
  .me-xxl-1 {
    margin-right: 0.25rem !important;
  }
  .me-xxl-2 {
    margin-right: 0.5rem !important;
  }
  .me-xxl-3 {
    margin-right: 1rem !important;
  }
  .me-xxl-4 {
    margin-right: 1.5rem !important;
  }
  .me-xxl-5 {
    margin-right: 3rem !important;
  }
  .me-xxl-auto {
    margin-right: auto !important;
  }
  .mb-xxl-0 {
    margin-bottom: 0 !important;
  }
  .mb-xxl-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-xxl-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-xxl-3 {
    margin-bottom: 1rem !important;
  }
  .mb-xxl-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-xxl-5 {
    margin-bottom: 3rem !important;
  }
  .mb-xxl-auto {
    margin-bottom: auto !important;
  }
  .ms-xxl-0 {
    margin-left: 0 !important;
  }
  .ms-xxl-1 {
    margin-left: 0.25rem !important;
  }
  .ms-xxl-2 {
    margin-left: 0.5rem !important;
  }
  .ms-xxl-3 {
    margin-left: 1rem !important;
  }
  .ms-xxl-4 {
    margin-left: 1.5rem !important;
  }
  .ms-xxl-5 {
    margin-left: 3rem !important;
  }
  .ms-xxl-auto {
    margin-left: auto !important;
  }
  .p-xxl-0 {
    padding: 0 !important;
  }
  .p-xxl-1 {
    padding: 0.25rem !important;
  }
  .p-xxl-2 {
    padding: 0.5rem !important;
  }
  .p-xxl-3 {
    padding: 1rem !important;
  }
  .p-xxl-4 {
    padding: 1.5rem !important;
  }
  .p-xxl-5 {
    padding: 3rem !important;
  }
  .px-xxl-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-xxl-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-xxl-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-xxl-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-xxl-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-xxl-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-xxl-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-xxl-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-xxl-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-xxl-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-xxl-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-xxl-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-xxl-0 {
    padding-top: 0 !important;
  }
  .pt-xxl-1 {
    padding-top: 0.25rem !important;
  }
  .pt-xxl-2 {
    padding-top: 0.5rem !important;
  }
  .pt-xxl-3 {
    padding-top: 1rem !important;
  }
  .pt-xxl-4 {
    padding-top: 1.5rem !important;
  }
  .pt-xxl-5 {
    padding-top: 3rem !important;
  }
  .pe-xxl-0 {
    padding-right: 0 !important;
  }
  .pe-xxl-1 {
    padding-right: 0.25rem !important;
  }
  .pe-xxl-2 {
    padding-right: 0.5rem !important;
  }
  .pe-xxl-3 {
    padding-right: 1rem !important;
  }
  .pe-xxl-4 {
    padding-right: 1.5rem !important;
  }
  .pe-xxl-5 {
    padding-right: 3rem !important;
  }
  .pb-xxl-0 {
    padding-bottom: 0 !important;
  }
  .pb-xxl-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-xxl-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-xxl-3 {
    padding-bottom: 1rem !important;
  }
  .pb-xxl-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-xxl-5 {
    padding-bottom: 3rem !important;
  }
  .ps-xxl-0 {
    padding-left: 0 !important;
  }
  .ps-xxl-1 {
    padding-left: 0.25rem !important;
  }
  .ps-xxl-2 {
    padding-left: 0.5rem !important;
  }
  .ps-xxl-3 {
    padding-left: 1rem !important;
  }
  .ps-xxl-4 {
    padding-left: 1.5rem !important;
  }
  .ps-xxl-5 {
    padding-left: 3rem !important;
  }
  .gap-xxl-0 {
    gap: 0 !important;
  }
  .gap-xxl-1 {
    gap: 0.25rem !important;
  }
  .gap-xxl-2 {
    gap: 0.5rem !important;
  }
  .gap-xxl-3 {
    gap: 1rem !important;
  }
  .gap-xxl-4 {
    gap: 1.5rem !important;
  }
  .gap-xxl-5 {
    gap: 3rem !important;
  }
  .row-gap-xxl-0 {
    row-gap: 0 !important;
  }
  .row-gap-xxl-1 {
    row-gap: 0.25rem !important;
  }
  .row-gap-xxl-2 {
    row-gap: 0.5rem !important;
  }
  .row-gap-xxl-3 {
    row-gap: 1rem !important;
  }
  .row-gap-xxl-4 {
    row-gap: 1.5rem !important;
  }
  .row-gap-xxl-5 {
    row-gap: 3rem !important;
  }
  .column-gap-xxl-0 {
    column-gap: 0 !important;
  }
  .column-gap-xxl-1 {
    column-gap: 0.25rem !important;
  }
  .column-gap-xxl-2 {
    column-gap: 0.5rem !important;
  }
  .column-gap-xxl-3 {
    column-gap: 1rem !important;
  }
  .column-gap-xxl-4 {
    column-gap: 1.5rem !important;
  }
  .column-gap-xxl-5 {
    column-gap: 3rem !important;
  }
  .text-xxl-start {
    text-align: left !important;
  }
  .text-xxl-end {
    text-align: right !important;
  }
  .text-xxl-center {
    text-align: center !important;
  }
}
@media (min-width: 1200px) {
  .fs-1 {
    font-size: 2.5rem !important;
  }
  .fs-2 {
    font-size: 2rem !important;
  }
  .fs-3 {
    font-size: 1.75rem !important;
  }
  .fs-4 {
    font-size: 1.5rem !important;
  }
}
@media print {
  .d-print-inline {
    display: inline !important;
  }
  .d-print-inline-block {
    display: inline-block !important;
  }
  .d-print-block {
    display: block !important;
  }
  .d-print-grid {
    display: grid !important;
  }
  .d-print-inline-grid {
    display: inline-grid !important;
  }
  .d-print-table {
    display: table !important;
  }
  .d-print-table-row {
    display: table-row !important;
  }
  .d-print-table-cell {
    display: table-cell !important;
  }
  .d-print-flex {
    display: flex !important;
  }
  .d-print-inline-flex {
    display: inline-flex !important;
  }
  .d-print-none {
    display: none !important;
  }
}
.mdc-card {
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-shape-medium, 4px);
  background-color: #fff;
  /* @alternate */
  background-color: var(--mdc-theme-surface, #fff);
  /* @alternate */
  position: relative;
  /* @alternate */
  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
}
.mdc-card .mdc-elevation-overlay {
  width: 100%;
  height: 100%;
  top: 0;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
}
.mdc-card::after {
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-shape-medium, 4px);
  position: absolute;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  border: 1px solid transparent;
  border-radius: inherit;
  content: "";
  pointer-events: none;
  pointer-events: none;
}
@media screen and (forced-colors: active) {
  .mdc-card::after {
    border-color: CanvasText;
  }
}

.mdc-card--outlined {
  /* @alternate */
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
  border-width: 1px;
  border-style: solid;
  border-color: #e0e0e0;
}
.mdc-card--outlined::after {
  border: none;
}

.mdc-card__content {
  border-radius: inherit;
  height: 100%;
}

.mdc-card__media {
  position: relative;
  box-sizing: border-box;
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
}
.mdc-card__media::before {
  display: block;
  content: "";
}

.mdc-card__media:first-child {
  border-top-left-radius: inherit;
  border-top-right-radius: inherit;
}

.mdc-card__media:last-child {
  border-bottom-left-radius: inherit;
  border-bottom-right-radius: inherit;
}

.mdc-card__media--square::before {
  margin-top: 100%;
}

.mdc-card__media--16-9::before {
  margin-top: 56.25%;
}

.mdc-card__media-content {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  box-sizing: border-box;
}

.mdc-card__primary-action {
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  position: relative;
  outline: none;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
  overflow: hidden;
}

.mdc-card__primary-action:first-child {
  border-top-left-radius: inherit;
  border-top-right-radius: inherit;
}

.mdc-card__primary-action:last-child {
  border-bottom-left-radius: inherit;
  border-bottom-right-radius: inherit;
}

.mdc-card__actions {
  display: flex;
  flex-direction: row;
  align-items: center;
  box-sizing: border-box;
  min-height: 52px;
  padding: 8px;
}

.mdc-card__actions--full-bleed {
  padding: 0;
}

.mdc-card__action-buttons,
.mdc-card__action-icons {
  display: flex;
  flex-direction: row;
  align-items: center;
  box-sizing: border-box;
}

.mdc-card__action-icons {
  color: rgba(0, 0, 0, 0.6);
  flex-grow: 1;
  justify-content: flex-end;
}

.mdc-card__action-buttons + .mdc-card__action-icons {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 16px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
}
[dir=rtl] .mdc-card__action-buttons + .mdc-card__action-icons, .mdc-card__action-buttons + .mdc-card__action-icons[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 16px;
  /*rtl:end:ignore*/
}

.mdc-card__action {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  box-sizing: border-box;
  justify-content: center;
  cursor: pointer;
  user-select: none;
}
.mdc-card__action:focus {
  outline: none;
}

.mdc-card__action--button {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 8px;
  padding: 0 8px;
}
[dir=rtl] .mdc-card__action--button, .mdc-card__action--button[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 8px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /*rtl:end:ignore*/
}

.mdc-card__action--button:last-child {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
}
[dir=rtl] .mdc-card__action--button:last-child, .mdc-card__action--button:last-child[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /*rtl:end:ignore*/
}

.mdc-card__actions--full-bleed .mdc-card__action--button {
  justify-content: space-between;
  width: 100%;
  height: auto;
  max-height: none;
  margin: 0;
  padding: 8px 16px;
  /* @noflip */ /*rtl:ignore*/
  text-align: left;
}
[dir=rtl] .mdc-card__actions--full-bleed .mdc-card__action--button, .mdc-card__actions--full-bleed .mdc-card__action--button[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  text-align: right;
  /*rtl:end:ignore*/
}

.mdc-card__action--icon {
  margin: -6px 0;
  padding: 12px;
}

.mdc-card__action--icon:not(:disabled) {
  color: rgba(0, 0, 0, 0.6);
}

.mdc-card__primary-action {
  --mdc-ripple-fg-size: 0;
  --mdc-ripple-left: 0;
  --mdc-ripple-top: 0;
  --mdc-ripple-fg-scale: 1;
  --mdc-ripple-fg-translate-end: 0;
  --mdc-ripple-fg-translate-start: 0;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  will-change: transform, opacity;
}
.mdc-card__primary-action .mdc-card__ripple::before,
.mdc-card__primary-action .mdc-card__ripple::after {
  position: absolute;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}
.mdc-card__primary-action .mdc-card__ripple::before {
  transition: opacity 15ms linear, background-color 15ms linear;
  z-index: 1;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 1);
}
.mdc-card__primary-action .mdc-card__ripple::after {
  z-index: 0;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 0);
}
.mdc-card__primary-action.mdc-ripple-upgraded .mdc-card__ripple::before {
  transform: scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-card__primary-action.mdc-ripple-upgraded .mdc-card__ripple::after {
  top: 0;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
  transform: scale(0);
  transform-origin: center center;
}
.mdc-card__primary-action.mdc-ripple-upgraded--unbounded .mdc-card__ripple::after {
  top: var(--mdc-ripple-top, 0);
  /* @noflip */ /*rtl:ignore*/
  left: var(--mdc-ripple-left, 0);
}
.mdc-card__primary-action.mdc-ripple-upgraded--foreground-activation .mdc-card__ripple::after {
  animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;
}
.mdc-card__primary-action.mdc-ripple-upgraded--foreground-deactivation .mdc-card__ripple::after {
  animation: mdc-ripple-fg-opacity-out 150ms;
  transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-card__primary-action .mdc-card__ripple::before,
.mdc-card__primary-action .mdc-card__ripple::after {
  top: calc(50% - 100%);
  /* @noflip */ /*rtl:ignore*/
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
}
.mdc-card__primary-action.mdc-ripple-upgraded .mdc-card__ripple::after {
  width: var(--mdc-ripple-fg-size, 100%);
  height: var(--mdc-ripple-fg-size, 100%);
}
.mdc-card__primary-action .mdc-card__ripple::before, .mdc-card__primary-action .mdc-card__ripple::after {
  background-color: #000;
  /* @alternate */
  background-color: var(--mdc-ripple-color, #000);
}
.mdc-card__primary-action:hover .mdc-card__ripple::before, .mdc-card__primary-action.mdc-ripple-surface--hover .mdc-card__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-ripple-hover-opacity, 0.04);
}
.mdc-card__primary-action.mdc-ripple-upgraded--background-focused .mdc-card__ripple::before, .mdc-card__primary-action:not(.mdc-ripple-upgraded):focus .mdc-card__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-focus-opacity, 0.12);
}
.mdc-card__primary-action:not(.mdc-ripple-upgraded) .mdc-card__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-card__primary-action:not(.mdc-ripple-upgraded):active .mdc-card__ripple::after {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-card__primary-action.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-card__primary-action .mdc-card__ripple {
  box-sizing: content-box;
  height: 100%;
  overflow: hidden;
  left: 0;
  pointer-events: none;
  position: absolute;
  top: 0;
  width: 100%;
}
.mdc-card__primary-action.mdc-ripple-upgraded--background-focused::after, .mdc-card__primary-action:not(.mdc-ripple-upgraded):focus::after {
  position: absolute;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  border: 5px double transparent;
  border-radius: inherit;
  content: "";
  pointer-events: none;
}
@media screen and (forced-colors: active) {
  .mdc-card__primary-action.mdc-ripple-upgraded--background-focused::after, .mdc-card__primary-action:not(.mdc-ripple-upgraded):focus::after {
    border-color: CanvasText;
  }
}

.mdc-fab {
  /* @alternate */
  position: relative;
  display: inline-flex;
  position: relative;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 56px;
  height: 56px;
  padding: 0;
  border: none;
  fill: currentColor;
  text-decoration: none;
  cursor: pointer;
  user-select: none;
  -moz-appearance: none;
  -webkit-appearance: none;
  overflow: visible;
  transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1), opacity 15ms linear 30ms, transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1);
}
.mdc-fab .mdc-elevation-overlay {
  width: 100%;
  height: 100%;
  top: 0;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
}
.mdc-fab::-moz-focus-inner {
  padding: 0;
  border: 0;
}
.mdc-fab:hover {
  /* @alternate */
  box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
}
.mdc-fab.mdc-ripple-upgraded--background-focused, .mdc-fab:not(.mdc-ripple-upgraded):focus {
  /* @alternate */
  box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
}
.mdc-fab .mdc-fab__focus-ring {
  position: absolute;
}
.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring, .mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring {
  pointer-events: none;
  border: 2px solid transparent;
  border-radius: 6px;
  box-sizing: content-box;
  position: absolute;
  top: 50%;
  /* @noflip */ /*rtl:ignore*/
  left: 50%;
  /* @noflip */ /*rtl:ignore*/
  transform: translate(-50%, -50%);
  height: calc(100% + 4px);
  width: calc(100% + 4px);
}
@media screen and (forced-colors: active) {
  .mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring, .mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring {
    border-color: CanvasText;
  }
}
.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after, .mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after {
  content: "";
  border: 2px solid transparent;
  border-radius: 8px;
  display: block;
  position: absolute;
  top: 50%;
  /* @noflip */ /*rtl:ignore*/
  left: 50%;
  /* @noflip */ /*rtl:ignore*/
  transform: translate(-50%, -50%);
  height: calc(100% + 4px);
  width: calc(100% + 4px);
}
@media screen and (forced-colors: active) {
  .mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after, .mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after {
    border-color: CanvasText;
  }
}
.mdc-fab:active, .mdc-fab:focus:active {
  /* @alternate */
  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
}
.mdc-fab:active, .mdc-fab:focus {
  outline: none;
}
.mdc-fab:hover {
  cursor: pointer;
}
.mdc-fab > svg {
  width: 100%;
}

.mdc-fab--mini {
  width: 40px;
  height: 40px;
}

.mdc-fab--extended {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 0.875rem;
  /* @alternate */
  font-size: var(--mdc-typography-button-font-size, 0.875rem);
  line-height: 2.25rem;
  /* @alternate */
  line-height: var(--mdc-typography-button-line-height, 2.25rem);
  font-weight: 500;
  /* @alternate */
  font-weight: var(--mdc-typography-button-font-weight, 500);
  letter-spacing: 0.0892857143em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-button-letter-spacing, 0.0892857143em);
  text-decoration: none;
  /* @alternate */
  text-decoration: var(--mdc-typography-button-text-decoration, none);
  text-transform: uppercase;
  /* @alternate */
  text-transform: var(--mdc-typography-button-text-transform, uppercase);
  border-radius: 24px;
  /* @noflip */ /*rtl:ignore*/
  padding-left: 20px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 20px;
  width: auto;
  max-width: 100%;
  height: 48px;
  /* @alternate */
  line-height: normal;
}
.mdc-fab--extended .mdc-fab__ripple {
  border-radius: 24px;
}
.mdc-fab--extended .mdc-fab__icon {
  /* @noflip */ /*rtl:ignore*/
  margin-left: calc(12px - 20px);
  /* @noflip */ /*rtl:ignore*/
  margin-right: 12px;
}
[dir=rtl] .mdc-fab--extended .mdc-fab__icon, .mdc-fab--extended .mdc-fab__icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 12px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: calc(12px - 20px);
  /*rtl:end:ignore*/
}

.mdc-fab--extended .mdc-fab__label + .mdc-fab__icon {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 12px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: calc(12px - 20px);
}
[dir=rtl] .mdc-fab--extended .mdc-fab__label + .mdc-fab__icon, .mdc-fab--extended .mdc-fab__label + .mdc-fab__icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: calc(12px - 20px);
  /* @noflip */ /*rtl:ignore*/
  margin-right: 12px;
  /*rtl:end:ignore*/
}

.mdc-fab--touch {
  margin-top: 4px;
  margin-bottom: 4px;
  margin-right: 4px;
  margin-left: 4px;
}
.mdc-fab--touch .mdc-fab__touch {
  position: absolute;
  top: 50%;
  height: 48px;
  /* @noflip */ /*rtl:ignore*/
  left: 50%;
  width: 48px;
  transform: translate(-50%, -50%);
}

.mdc-fab::before {
  position: absolute;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  border: 1px solid transparent;
  border-radius: inherit;
  content: "";
  pointer-events: none;
}
@media screen and (forced-colors: active) {
  .mdc-fab::before {
    border-color: CanvasText;
  }
}

.mdc-fab__label {
  justify-content: flex-start;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow-x: hidden;
  overflow-y: visible;
}

.mdc-fab__icon {
  transition: transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);
  fill: currentColor;
  will-change: transform;
}

.mdc-fab .mdc-fab__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.mdc-fab--exited {
  transform: scale(0);
  opacity: 0;
  transition: opacity 15ms linear 150ms, transform 180ms 0ms cubic-bezier(0.4, 0, 1, 1);
}
.mdc-fab--exited .mdc-fab__icon {
  transform: scale(0);
  transition: transform 135ms 0ms cubic-bezier(0.4, 0, 1, 1);
}

.mdc-fab {
  background-color: #ff3d60;
  /* @alternate */
  background-color: var(--mdc-theme-secondary, #ff3d60);
  /* @alternate */
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
}
.mdc-fab .mdc-fab__icon {
  width: 24px;
  height: 24px;
  font-size: 24px;
}
.mdc-fab, .mdc-fab:not(:disabled) .mdc-fab__icon, .mdc-fab:not(:disabled) .mdc-fab__label, .mdc-fab:disabled .mdc-fab__icon, .mdc-fab:disabled .mdc-fab__label {
  color: #fff;
  /* @alternate */
  color: var(--mdc-theme-on-secondary, #fff);
}
.mdc-fab:not(.mdc-fab--extended) {
  border-radius: 50%;
}
.mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple {
  border-radius: 50%;
}

.mdc-fab {
  --mdc-ripple-fg-size: 0;
  --mdc-ripple-left: 0;
  --mdc-ripple-top: 0;
  --mdc-ripple-fg-scale: 1;
  --mdc-ripple-fg-translate-end: 0;
  --mdc-ripple-fg-translate-start: 0;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  will-change: transform, opacity;
}
.mdc-fab .mdc-fab__ripple::before,
.mdc-fab .mdc-fab__ripple::after {
  position: absolute;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}
.mdc-fab .mdc-fab__ripple::before {
  transition: opacity 15ms linear, background-color 15ms linear;
  z-index: 1;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 1);
}
.mdc-fab .mdc-fab__ripple::after {
  z-index: 0;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 0);
}
.mdc-fab.mdc-ripple-upgraded .mdc-fab__ripple::before {
  transform: scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-fab.mdc-ripple-upgraded .mdc-fab__ripple::after {
  top: 0;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
  transform: scale(0);
  transform-origin: center center;
}
.mdc-fab.mdc-ripple-upgraded--unbounded .mdc-fab__ripple::after {
  top: var(--mdc-ripple-top, 0);
  /* @noflip */ /*rtl:ignore*/
  left: var(--mdc-ripple-left, 0);
}
.mdc-fab.mdc-ripple-upgraded--foreground-activation .mdc-fab__ripple::after {
  animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;
}
.mdc-fab.mdc-ripple-upgraded--foreground-deactivation .mdc-fab__ripple::after {
  animation: mdc-ripple-fg-opacity-out 150ms;
  transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-fab .mdc-fab__ripple::before,
.mdc-fab .mdc-fab__ripple::after {
  top: calc(50% - 100%);
  /* @noflip */ /*rtl:ignore*/
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
}
.mdc-fab.mdc-ripple-upgraded .mdc-fab__ripple::after {
  width: var(--mdc-ripple-fg-size, 100%);
  height: var(--mdc-ripple-fg-size, 100%);
}
.mdc-fab .mdc-fab__ripple::before, .mdc-fab .mdc-fab__ripple::after {
  background-color: #fff;
  /* @alternate */
  background-color: var(--mdc-ripple-color, var(--mdc-theme-on-secondary, #fff));
}
.mdc-fab:hover .mdc-fab__ripple::before, .mdc-fab.mdc-ripple-surface--hover .mdc-fab__ripple::before {
  opacity: 0.08;
  /* @alternate */
  opacity: var(--mdc-ripple-hover-opacity, 0.08);
}
.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__ripple::before, .mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__ripple::before {
  transition-duration: 75ms;
  opacity: 0.24;
  /* @alternate */
  opacity: var(--mdc-ripple-focus-opacity, 0.24);
}
.mdc-fab:not(.mdc-ripple-upgraded) .mdc-fab__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-fab:not(.mdc-ripple-upgraded):active .mdc-fab__ripple::after {
  transition-duration: 75ms;
  opacity: 0.24;
  /* @alternate */
  opacity: var(--mdc-ripple-press-opacity, 0.24);
}
.mdc-fab.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-ripple-press-opacity, 0.24);
}
.mdc-fab .mdc-fab__ripple {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  overflow: hidden;
}
.mdc-fab {
  z-index: 0;
}
.mdc-fab .mdc-fab__ripple::before,
.mdc-fab .mdc-fab__ripple::after {
  z-index: -1;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, -1);
}

.mdc-data-table__content {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 0.875rem;
  /* @alternate */
  font-size: var(--mdc-typography-body2-font-size, 0.875rem);
  line-height: 1.25rem;
  /* @alternate */
  line-height: var(--mdc-typography-body2-line-height, 1.25rem);
  font-weight: 400;
  /* @alternate */
  font-weight: var(--mdc-typography-body2-font-weight, 400);
  letter-spacing: 0.0178571429em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-body2-letter-spacing, 0.0178571429em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-body2-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-body2-text-transform, inherit);
}

.mdc-data-table {
  background-color: #fff;
  /* @alternate */
  background-color: var(--mdc-theme-surface, #fff);
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-shape-medium, 4px);
  border-width: 1px;
  border-style: solid;
  border-color: rgba(0, 0, 0, 0.12);
  -webkit-overflow-scrolling: touch;
  display: inline-flex;
  flex-direction: column;
  box-sizing: border-box;
  position: relative;
}
.mdc-data-table .mdc-data-table__header-cell:first-child {
  border-top-left-radius: 4px;
  /* @alternate */
  border-top-left-radius: var(--mdc-shape-medium, 4px);
}
[dir=rtl] .mdc-data-table .mdc-data-table__header-cell:first-child, .mdc-data-table .mdc-data-table__header-cell:first-child[dir=rtl] {
  /*rtl:begin:ignore*/
  border-top-right-radius: 4px;
  /* @alternate */
  border-top-right-radius: var(--mdc-shape-medium, 4px);
  border-top-left-radius: 0;
  /*rtl:end:ignore*/
}

.mdc-data-table .mdc-data-table__header-cell:last-child {
  border-top-right-radius: 4px;
  /* @alternate */
  border-top-right-radius: var(--mdc-shape-medium, 4px);
}
[dir=rtl] .mdc-data-table .mdc-data-table__header-cell:last-child, .mdc-data-table .mdc-data-table__header-cell:last-child[dir=rtl] {
  /*rtl:begin:ignore*/
  border-top-left-radius: 4px;
  /* @alternate */
  border-top-left-radius: var(--mdc-shape-medium, 4px);
  border-top-right-radius: 0;
  /*rtl:end:ignore*/
}

.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child {
  border-bottom-left-radius: 4px;
  /* @alternate */
  border-bottom-left-radius: var(--mdc-shape-medium, 4px);
}
[dir=rtl] .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child, .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child[dir=rtl] {
  /*rtl:begin:ignore*/
  border-bottom-right-radius: 4px;
  /* @alternate */
  border-bottom-right-radius: var(--mdc-shape-medium, 4px);
  border-bottom-left-radius: 0;
  /*rtl:end:ignore*/
}

.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child {
  border-bottom-right-radius: 4px;
  /* @alternate */
  border-bottom-right-radius: var(--mdc-shape-medium, 4px);
}
[dir=rtl] .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child, .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child[dir=rtl] {
  /*rtl:begin:ignore*/
  border-bottom-left-radius: 4px;
  /* @alternate */
  border-bottom-left-radius: var(--mdc-shape-medium, 4px);
  border-bottom-right-radius: 0;
  /*rtl:end:ignore*/
}

.mdc-data-table__row {
  background-color: inherit;
}

.mdc-data-table__header-cell {
  background-color: #fff;
  /* @alternate */
  background-color: var(--mdc-theme-surface, #fff);
}

.mdc-data-table__row--selected {
  background-color: rgba(20, 96, 147, 0.04);
}

.mdc-data-table__pagination-rows-per-page-select:not(.mdc-select--disabled) .mdc-notched-outline__leading,
.mdc-data-table__pagination-rows-per-page-select:not(.mdc-select--disabled) .mdc-notched-outline__notch,
.mdc-data-table__pagination-rows-per-page-select:not(.mdc-select--disabled) .mdc-notched-outline__trailing {
  border-color: rgba(0, 0, 0, 0.12);
}
.mdc-data-table__cell,
.mdc-data-table__header-cell {
  border-bottom-color: rgba(0, 0, 0, 0.12);
}

.mdc-data-table__pagination {
  border-top-color: rgba(0, 0, 0, 0.12);
}

.mdc-data-table__cell,
.mdc-data-table__header-cell {
  border-bottom-width: 1px;
  border-bottom-style: solid;
}

.mdc-data-table__pagination {
  border-top-width: 1px;
  border-top-style: solid;
}

.mdc-data-table__row:last-child .mdc-data-table__cell {
  border-bottom: none;
}

.mdc-data-table__row:not(.mdc-data-table__row--selected):hover {
  background-color: rgba(0, 0, 0, 0.04);
}

.mdc-data-table__header-cell {
  color: rgba(0, 0, 0, 0.87);
}

.mdc-data-table__pagination-total,
.mdc-data-table__pagination-rows-per-page-label,
.mdc-data-table__cell {
  color: rgba(0, 0, 0, 0.87);
}

.mdc-data-table__row {
  height: 52px;
}

.mdc-data-table__pagination {
  min-height: 52px;
}

.mdc-data-table__header-row {
  height: 56px;
}

.mdc-data-table__cell,
.mdc-data-table__header-cell {
  padding: 0 16px 0 16px;
}

.mdc-data-table__header-cell--checkbox,
.mdc-data-table__cell--checkbox {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 4px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
}
[dir=rtl] .mdc-data-table__header-cell--checkbox, [dir=rtl] .mdc-data-table__cell--checkbox, .mdc-data-table__header-cell--checkbox[dir=rtl], .mdc-data-table__cell--checkbox[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 4px;
  /*rtl:end:ignore*/
}

.mdc-data-table__table-container {
  -webkit-overflow-scrolling: touch;
  overflow-x: auto;
  width: 100%;
}

.mdc-data-table__table {
  min-width: 100%;
  border: 0;
  white-space: nowrap;
  border-spacing: 0;
  /**
   * With table-layout:fixed, table and column widths are defined by the width
   * of the first row of cells. Cells in subsequent rows do not affect column
   * widths. This results in a predictable table layout and may also speed up
   * rendering.
   */
  table-layout: fixed;
}

.mdc-data-table__cell {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 0.875rem;
  /* @alternate */
  font-size: var(--mdc-typography-body2-font-size, 0.875rem);
  line-height: 1.25rem;
  /* @alternate */
  line-height: var(--mdc-typography-body2-line-height, 1.25rem);
  font-weight: 400;
  /* @alternate */
  font-weight: var(--mdc-typography-body2-font-weight, 400);
  letter-spacing: 0.0178571429em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-body2-letter-spacing, 0.0178571429em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-body2-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-body2-text-transform, inherit);
  box-sizing: border-box;
  overflow: hidden;
  text-align: left;
  text-overflow: ellipsis;
}
[dir=rtl] .mdc-data-table__cell, .mdc-data-table__cell[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  text-align: right;
  /*rtl:end:ignore*/
}

.mdc-data-table__cell--numeric {
  text-align: right;
}
[dir=rtl] .mdc-data-table__cell--numeric, .mdc-data-table__cell--numeric[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  text-align: left;
  /*rtl:end:ignore*/
}

.mdc-data-table__cell--checkbox {
  width: 1px;
}

.mdc-data-table__header-cell {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 0.875rem;
  /* @alternate */
  font-size: var(--mdc-typography-subtitle2-font-size, 0.875rem);
  line-height: 1.375rem;
  /* @alternate */
  line-height: var(--mdc-typography-subtitle2-line-height, 1.375rem);
  font-weight: 500;
  /* @alternate */
  font-weight: var(--mdc-typography-subtitle2-font-weight, 500);
  letter-spacing: 0.0071428571em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-subtitle2-letter-spacing, 0.0071428571em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-subtitle2-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-subtitle2-text-transform, inherit);
  box-sizing: border-box;
  text-overflow: ellipsis;
  overflow: hidden;
  outline: none;
  /* @noflip */ /*rtl:ignore*/
  text-align: left;
}
[dir=rtl] .mdc-data-table__header-cell, .mdc-data-table__header-cell[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  text-align: right;
  /*rtl:end:ignore*/
}

.mdc-data-table__header-cell--checkbox {
  width: 1px;
}

.mdc-data-table__header-cell--numeric {
  text-align: right;
}
[dir=rtl] .mdc-data-table__header-cell--numeric, .mdc-data-table__header-cell--numeric[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  text-align: left;
  /*rtl:end:ignore*/
}

.mdc-data-table__sort-icon-button {
  width: 28px;
  height: 28px;
  padding: 2px;
  transform: rotate(0.0001deg);
  /* @noflip */ /*rtl:ignore*/
  margin-left: 4px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  transition: transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);
  opacity: 0;
}
.mdc-data-table__sort-icon-button .mdc-icon-button__focus-ring {
  display: none;
}
.mdc-data-table__sort-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring, .mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring {
  display: block;
  max-height: 28px;
  max-width: 28px;
}
@media screen and (forced-colors: active) {
  .mdc-data-table__sort-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring, .mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring {
    pointer-events: none;
    border: 2px solid transparent;
    border-radius: 6px;
    box-sizing: content-box;
    position: absolute;
    top: 50%;
    /* @noflip */ /*rtl:ignore*/
    left: 50%;
    /* @noflip */ /*rtl:ignore*/
    transform: translate(-50%, -50%);
    height: 100%;
    width: 100%;
  }
}
@media screen and (forced-colors: active) and (forced-colors: active) {
  .mdc-data-table__sort-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring, .mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring {
    border-color: CanvasText;
  }
}
@media screen and (forced-colors: active) {
  .mdc-data-table__sort-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring::after, .mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring::after {
    content: "";
    border: 2px solid transparent;
    border-radius: 8px;
    display: block;
    position: absolute;
    top: 50%;
    /* @noflip */ /*rtl:ignore*/
    left: 50%;
    /* @noflip */ /*rtl:ignore*/
    transform: translate(-50%, -50%);
    height: calc(100% + 4px);
    width: calc(100% + 4px);
  }
}
@media screen and (forced-colors: active) and (forced-colors: active) {
  .mdc-data-table__sort-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring::after, .mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring::after {
    border-color: CanvasText;
  }
}
.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple {
  width: 28px;
  height: 28px;
  margin-top: 0px;
  margin-bottom: 0px;
  margin-right: 0px;
  margin-left: 0px;
}
.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring, .mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring {
  max-height: 28px;
  max-width: 28px;
}
.mdc-data-table__sort-icon-button .mdc-icon-button__touch {
  position: absolute;
  top: 50%;
  height: 28px;
  /* @noflip */ /*rtl:ignore*/
  left: 50%;
  width: 28px;
  transform: translate(-50%, -50%);
}
[dir=rtl] .mdc-data-table__sort-icon-button, .mdc-data-table__sort-icon-button[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 4px;
  /*rtl:end:ignore*/
}

.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 4px;
}
[dir=rtl] .mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button, .mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 4px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /*rtl:end:ignore*/
}

.mdc-data-table__header-cell--sorted-descending .mdc-data-table__sort-icon-button {
  transform: rotate(-180deg);
}
.mdc-data-table__sort-icon-button:focus, .mdc-data-table__header-cell:hover .mdc-data-table__sort-icon-button, .mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button {
  opacity: 1;
}

.mdc-data-table__header-cell-wrapper {
  align-items: center;
  display: inline-flex;
  vertical-align: middle;
}

.mdc-data-table__header-cell--with-sort {
  cursor: pointer;
}

.mdc-data-table__sort-status-label {
  clip: rect(1px, 1px, 1px, 1px);
  height: 1px;
  overflow: hidden;
  position: absolute;
  white-space: nowrap; /* added line */
  width: 1px;
}

.mdc-data-table--sticky-header .mdc-data-table__header-cell {
  position: sticky;
  top: 0;
  z-index: 1;
}

.mdc-data-table__sort-icon-button {
  color: rgba(0, 0, 0, 0.6);
}
.mdc-data-table__sort-icon-button .mdc-icon-button__ripple::before, .mdc-data-table__sort-icon-button .mdc-icon-button__ripple::after {
  background-color: rgba(0, 0, 0, 0.6);
  /* @alternate */
  background-color: var(--mdc-ripple-color, rgba(0, 0, 0, 0.6));
}
.mdc-data-table__sort-icon-button:hover .mdc-icon-button__ripple::before, .mdc-data-table__sort-icon-button.mdc-ripple-surface--hover .mdc-icon-button__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-ripple-hover-opacity, 0.04);
}
.mdc-data-table__sort-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__ripple::before, .mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-focus-opacity, 0.12);
}
.mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded) .mdc-icon-button__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded):active .mdc-icon-button__ripple::after {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-data-table__sort-icon-button.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-ripple-press-opacity, 0.12);
}

.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button {
  color: rgba(0, 0, 0, 0.87);
}
.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button .mdc-icon-button__ripple::before, .mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button .mdc-icon-button__ripple::after {
  background-color: rgba(0, 0, 0, 0.87);
  /* @alternate */
  background-color: var(--mdc-ripple-color, rgba(0, 0, 0, 0.87));
}
.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button:hover .mdc-icon-button__ripple::before, .mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button.mdc-ripple-surface--hover .mdc-icon-button__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-ripple-hover-opacity, 0.04);
}
.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__ripple::before, .mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-focus-opacity, 0.12);
}
.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded) .mdc-icon-button__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button:not(.mdc-ripple-upgraded):active .mdc-icon-button__ripple::after {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-ripple-press-opacity, 0.12);
}

.mdc-data-table__progress-indicator {
  display: none;
  position: absolute;
  width: 100%;
}
.mdc-data-table--in-progress .mdc-data-table__progress-indicator {
  display: block;
}

.mdc-data-table__scrim {
  background-color: #fff;
  /* @alternate */
  background-color: var(--mdc-theme-surface, #fff);
  height: 100%;
  opacity: 0.32;
  position: absolute;
  top: 0;
  width: 100%;
}

.mdc-data-table__pagination {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 0.875rem;
  /* @alternate */
  font-size: var(--mdc-typography-body2-font-size, 0.875rem);
  line-height: 1.25rem;
  /* @alternate */
  line-height: var(--mdc-typography-body2-line-height, 1.25rem);
  font-weight: 400;
  /* @alternate */
  font-weight: var(--mdc-typography-body2-font-weight, 400);
  letter-spacing: 0.0178571429em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-body2-letter-spacing, 0.0178571429em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-body2-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-body2-text-transform, inherit);
  box-sizing: border-box;
  display: flex;
  justify-content: flex-end;
}

.mdc-data-table__pagination-trailing {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 4px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
}
[dir=rtl] .mdc-data-table__pagination-trailing, .mdc-data-table__pagination-trailing[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 4px;
  /*rtl:end:ignore*/
}

.mdc-data-table__pagination-navigation {
  align-items: center;
  display: flex;
}

.mdc-data-table__pagination-button {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 4px;
}
[dir=rtl] .mdc-data-table__pagination-button .mdc-button__icon, .mdc-data-table__pagination-button .mdc-button__icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  transform: rotate(180deg);
  /*rtl:end:ignore*/
}

[dir=rtl] .mdc-data-table__pagination-button, .mdc-data-table__pagination-button[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 4px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /*rtl:end:ignore*/
}

.mdc-data-table__pagination-total {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 14px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 36px;
  white-space: nowrap;
}
[dir=rtl] .mdc-data-table__pagination-total, .mdc-data-table__pagination-total[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 36px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 14px;
  /*rtl:end:ignore*/
}

.mdc-data-table__pagination-rows-per-page {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 22px;
  align-items: center;
  display: inline-flex;
}
[dir=rtl] .mdc-data-table__pagination-rows-per-page, .mdc-data-table__pagination-rows-per-page[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 22px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /*rtl:end:ignore*/
}

.mdc-data-table__pagination-rows-per-page-label {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 12px;
  white-space: nowrap;
}
[dir=rtl] .mdc-data-table__pagination-rows-per-page-label, .mdc-data-table__pagination-rows-per-page-label[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 12px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /*rtl:end:ignore*/
}

.mdc-data-table__pagination-rows-per-page-select {
  min-width: 80px;
  /* @alternate */
  min-width: var(--mdc-menu-min-width, 80px);
  margin: 8px 0;
}
.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor {
  width: 100%;
  min-width: 80px;
}
.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor {
  height: 36px;
}
.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--float-above {
  transform: translateY(-27.25px) scale(1);
}
.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--float-above {
  font-size: 0.75rem;
}
.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,
.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  transform: translateY(-24.75px) scale(0.75);
}
.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,
.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  font-size: 1rem;
}
.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--shake {
  animation: mdc-floating-label-shake-float-above-select-outlined-36px 250ms 1;
}
@keyframes mdc-floating-label-shake-float-above-select-outlined-36px {
  0% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75);
  }
  33% {
    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75);
  }
  66% {
    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75);
  }
  100% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75);
  }
}
.mdc-data-table__pagination-rows-per-page-select .mdc-select__dropdown-icon {
  width: 20px;
  height: 20px;
}
.mdc-data-table__pagination-rows-per-page-select.mdc-select--outlined .mdc-select__anchor :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch {
  max-width: calc(100% - 56px);
}
.mdc-data-table__pagination-rows-per-page-select .mdc-list-item.mdc-list-item--with-one-line {
  height: 36px;
}

.mdc-data-table__header-row-checkbox.mdc-checkbox--selected .mdc-checkbox__ripple::before, .mdc-data-table__header-row-checkbox.mdc-checkbox--selected .mdc-checkbox__ripple::after,
.mdc-data-table__row-checkbox.mdc-checkbox--selected .mdc-checkbox__ripple::before,
.mdc-data-table__row-checkbox.mdc-checkbox--selected .mdc-checkbox__ripple::after {
  background-color: #146093;
  /* @alternate */
  background-color: var(--mdc-ripple-color, var(--mdc-theme-primary, #146093));
}
.mdc-data-table__header-row-checkbox.mdc-checkbox--selected:hover .mdc-checkbox__ripple::before, .mdc-data-table__header-row-checkbox.mdc-checkbox--selected.mdc-ripple-surface--hover .mdc-checkbox__ripple::before,
.mdc-data-table__row-checkbox.mdc-checkbox--selected:hover .mdc-checkbox__ripple::before,
.mdc-data-table__row-checkbox.mdc-checkbox--selected.mdc-ripple-surface--hover .mdc-checkbox__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-ripple-hover-opacity, 0.04);
}
.mdc-data-table__header-row-checkbox.mdc-checkbox--selected.mdc-ripple-upgraded--background-focused .mdc-checkbox__ripple::before, .mdc-data-table__header-row-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded):focus .mdc-checkbox__ripple::before,
.mdc-data-table__row-checkbox.mdc-checkbox--selected.mdc-ripple-upgraded--background-focused .mdc-checkbox__ripple::before,
.mdc-data-table__row-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded):focus .mdc-checkbox__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-focus-opacity, 0.12);
}
.mdc-data-table__header-row-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded) .mdc-checkbox__ripple::after,
.mdc-data-table__row-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded) .mdc-checkbox__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-data-table__header-row-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded):active .mdc-checkbox__ripple::after,
.mdc-data-table__row-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded):active .mdc-checkbox__ripple::after {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-data-table__header-row-checkbox.mdc-checkbox--selected.mdc-ripple-upgraded,
.mdc-data-table__row-checkbox.mdc-checkbox--selected.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-data-table__header-row-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--selected .mdc-checkbox__ripple::before,
.mdc-data-table__header-row-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--selected .mdc-checkbox__ripple::after,
.mdc-data-table__row-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--selected .mdc-checkbox__ripple::before,
.mdc-data-table__row-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--selected .mdc-checkbox__ripple::after {
  background-color: #146093;
  /* @alternate */
  background-color: var(--mdc-ripple-color, var(--mdc-theme-primary, #146093));
}
.mdc-data-table__header-row-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true]) ~ .mdc-checkbox__background,
.mdc-data-table__row-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true]) ~ .mdc-checkbox__background {
  border-color: rgba(0, 0, 0, 0.54);
  /* @alternate */
  border-color: var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));
  background-color: transparent;
}
.mdc-data-table__header-row-checkbox .mdc-checkbox__native-control:enabled:checked ~ .mdc-checkbox__background,
.mdc-data-table__header-row-checkbox .mdc-checkbox__native-control:enabled:indeterminate ~ .mdc-checkbox__background,
.mdc-data-table__header-row-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled ~ .mdc-checkbox__background,
.mdc-data-table__row-checkbox .mdc-checkbox__native-control:enabled:checked ~ .mdc-checkbox__background,
.mdc-data-table__row-checkbox .mdc-checkbox__native-control:enabled:indeterminate ~ .mdc-checkbox__background,
.mdc-data-table__row-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled ~ .mdc-checkbox__background {
  border-color: #146093;
  /* @alternate */
  border-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #146093));
  background-color: #146093;
  /* @alternate */
  background-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #146093));
}
@keyframes mdc-checkbox-fade-in-background-8A000000FF14609300000000FF146093 {
  0% {
    border-color: rgba(0, 0, 0, 0.54);
    /* @alternate */
    border-color: var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));
    background-color: transparent;
  }
  50% {
    border-color: #146093;
    /* @alternate */
    border-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #146093));
    background-color: #146093;
    /* @alternate */
    background-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #146093));
  }
}
@keyframes mdc-checkbox-fade-out-background-8A000000FF14609300000000FF146093 {
  0%, 80% {
    border-color: #146093;
    /* @alternate */
    border-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #146093));
    background-color: #146093;
    /* @alternate */
    background-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #146093));
  }
  100% {
    border-color: rgba(0, 0, 0, 0.54);
    /* @alternate */
    border-color: var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));
    background-color: transparent;
  }
}
.mdc-data-table__header-row-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background, .mdc-data-table__header-row-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background,
.mdc-data-table__row-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background,
.mdc-data-table__row-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background {
  animation-name: mdc-checkbox-fade-in-background-8A000000FF14609300000000FF146093;
}
.mdc-data-table__header-row-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background, .mdc-data-table__header-row-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background,
.mdc-data-table__row-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background,
.mdc-data-table__row-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background {
  animation-name: mdc-checkbox-fade-out-background-8A000000FF14609300000000FF146093;
}

.mdc-text-field--filled {
  --mdc-ripple-fg-size: 0;
  --mdc-ripple-left: 0;
  --mdc-ripple-top: 0;
  --mdc-ripple-fg-scale: 1;
  --mdc-ripple-fg-translate-end: 0;
  --mdc-ripple-fg-translate-start: 0;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  will-change: transform, opacity;
}
.mdc-text-field--filled .mdc-text-field__ripple::before,
.mdc-text-field--filled .mdc-text-field__ripple::after {
  position: absolute;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}
.mdc-text-field--filled .mdc-text-field__ripple::before {
  transition: opacity 15ms linear, background-color 15ms linear;
  z-index: 1;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 1);
}
.mdc-text-field--filled .mdc-text-field__ripple::after {
  z-index: 0;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 0);
}
.mdc-text-field--filled.mdc-ripple-upgraded .mdc-text-field__ripple::before {
  transform: scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-text-field--filled.mdc-ripple-upgraded .mdc-text-field__ripple::after {
  top: 0;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
  transform: scale(0);
  transform-origin: center center;
}
.mdc-text-field--filled.mdc-ripple-upgraded--unbounded .mdc-text-field__ripple::after {
  top: var(--mdc-ripple-top, 0);
  /* @noflip */ /*rtl:ignore*/
  left: var(--mdc-ripple-left, 0);
}
.mdc-text-field--filled.mdc-ripple-upgraded--foreground-activation .mdc-text-field__ripple::after {
  animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;
}
.mdc-text-field--filled.mdc-ripple-upgraded--foreground-deactivation .mdc-text-field__ripple::after {
  animation: mdc-ripple-fg-opacity-out 150ms;
  transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-text-field--filled .mdc-text-field__ripple::before,
.mdc-text-field--filled .mdc-text-field__ripple::after {
  top: calc(50% - 100%);
  /* @noflip */ /*rtl:ignore*/
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
}
.mdc-text-field--filled.mdc-ripple-upgraded .mdc-text-field__ripple::after {
  width: var(--mdc-ripple-fg-size, 100%);
  height: var(--mdc-ripple-fg-size, 100%);
}

.mdc-text-field__ripple {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.mdc-text-field {
  border-top-left-radius: 4px;
  /* @alternate */
  border-top-left-radius: var(--mdc-shape-small, 4px);
  border-top-right-radius: 4px;
  /* @alternate */
  border-top-right-radius: var(--mdc-shape-small, 4px);
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
  display: inline-flex;
  align-items: baseline;
  padding: 0 16px;
  position: relative;
  box-sizing: border-box;
  overflow: hidden;
  /* @alternate */
  will-change: opacity, transform, color;
}
.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label {
  color: rgba(0, 0, 0, 0.6);
}
.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input {
  color: rgba(0, 0, 0, 0.87);
}
@media all {
  .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder {
    color: rgba(0, 0, 0, 0.54);
  }
}
@media all {
  .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder {
    color: rgba(0, 0, 0, 0.54);
  }
}
.mdc-text-field .mdc-text-field__input {
  caret-color: #146093;
  /* @alternate */
  caret-color: var(--mdc-theme-primary, #146093);
}
.mdc-text-field:not(.mdc-text-field--disabled) + .mdc-text-field-helper-line .mdc-text-field-helper-text {
  color: rgba(0, 0, 0, 0.6);
}
.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,
.mdc-text-field:not(.mdc-text-field--disabled) + .mdc-text-field-helper-line .mdc-text-field-character-counter {
  color: rgba(0, 0, 0, 0.6);
}
.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading {
  color: rgba(0, 0, 0, 0.54);
}
.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing {
  color: rgba(0, 0, 0, 0.54);
}
.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix {
  color: rgba(0, 0, 0, 0.6);
}
.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix {
  color: rgba(0, 0, 0, 0.6);
}
.mdc-text-field .mdc-floating-label {
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
}

.mdc-text-field__input {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 1rem;
  /* @alternate */
  font-size: var(--mdc-typography-subtitle1-font-size, 1rem);
  font-weight: 400;
  /* @alternate */
  font-weight: var(--mdc-typography-subtitle1-font-weight, 400);
  letter-spacing: 0.009375em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-subtitle1-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-subtitle1-text-transform, inherit);
  height: 28px;
  transition: opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);
  width: 100%;
  min-width: 0;
  border: none;
  border-radius: 0;
  background: none;
  appearance: none;
  padding: 0;
}
.mdc-text-field__input::-ms-clear {
  display: none;
}
.mdc-text-field__input::-webkit-calendar-picker-indicator {
  display: none;
}
.mdc-text-field__input:focus {
  outline: none;
}
.mdc-text-field__input:invalid {
  box-shadow: none;
}
@media all {
  .mdc-text-field__input::placeholder {
    transition: opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1);
    opacity: 0;
  }
}
@media all {
  .mdc-text-field__input:-ms-input-placeholder {
    transition: opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1);
    opacity: 0;
  }
}
@media all {
  .mdc-text-field--no-label .mdc-text-field__input::placeholder, .mdc-text-field--focused .mdc-text-field__input::placeholder {
    transition-delay: 40ms;
    transition-duration: 110ms;
    opacity: 1;
  }
}
@media all {
  .mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder, .mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder {
    transition-delay: 40ms;
    transition-duration: 110ms;
    opacity: 1;
  }
}

.mdc-text-field__affix {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 1rem;
  /* @alternate */
  font-size: var(--mdc-typography-subtitle1-font-size, 1rem);
  font-weight: 400;
  /* @alternate */
  font-weight: var(--mdc-typography-subtitle1-font-weight, 400);
  letter-spacing: 0.009375em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-subtitle1-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-subtitle1-text-transform, inherit);
  height: 28px;
  transition: opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);
  opacity: 0;
  white-space: nowrap;
}
.mdc-text-field--label-floating .mdc-text-field__affix, .mdc-text-field--no-label .mdc-text-field__affix {
  opacity: 1;
}
@supports (-webkit-hyphens: none) {
  .mdc-text-field--outlined .mdc-text-field__affix {
    align-items: center;
    align-self: center;
    display: inline-flex;
    height: 100%;
  }
}

.mdc-text-field__affix--prefix {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 2px;
}
[dir=rtl] .mdc-text-field__affix--prefix, .mdc-text-field__affix--prefix[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 2px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
  /*rtl:end:ignore*/
}

.mdc-text-field--end-aligned .mdc-text-field__affix--prefix {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 12px;
}
[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix, .mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 12px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
  /*rtl:end:ignore*/
}

.mdc-text-field__affix--suffix {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 12px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
}
[dir=rtl] .mdc-text-field__affix--suffix, .mdc-text-field__affix--suffix[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 12px;
  /*rtl:end:ignore*/
}

.mdc-text-field--end-aligned .mdc-text-field__affix--suffix {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 2px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
}
[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix, .mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 2px;
  /*rtl:end:ignore*/
}

.mdc-text-field--filled {
  height: 56px;
}
.mdc-text-field--filled .mdc-text-field__ripple::before,
.mdc-text-field--filled .mdc-text-field__ripple::after {
  background-color: rgba(0, 0, 0, 0.87);
  /* @alternate */
  background-color: var(--mdc-ripple-color, rgba(0, 0, 0, 0.87));
}
.mdc-text-field--filled:hover .mdc-text-field__ripple::before, .mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-ripple-hover-opacity, 0.04);
}
.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before, .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-focus-opacity, 0.12);
}
.mdc-text-field--filled::before {
  display: inline-block;
  width: 0;
  height: 40px;
  content: "";
  vertical-align: 0;
}
.mdc-text-field--filled:not(.mdc-text-field--disabled) {
  background-color: whitesmoke;
}
.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before {
  border-bottom-color: rgba(0, 0, 0, 0.42);
}
.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before {
  border-bottom-color: rgba(0, 0, 0, 0.87);
}
.mdc-text-field--filled .mdc-line-ripple::after {
  border-bottom-color: #146093;
  /* @alternate */
  border-bottom-color: var(--mdc-theme-primary, #146093);
}
.mdc-text-field--filled .mdc-floating-label {
  /* @noflip */ /*rtl:ignore*/
  left: 16px;
  /* @noflip */ /*rtl:ignore*/
  right: initial;
}
[dir=rtl] .mdc-text-field--filled .mdc-floating-label, .mdc-text-field--filled .mdc-floating-label[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  left: initial;
  /* @noflip */ /*rtl:ignore*/
  right: 16px;
  /*rtl:end:ignore*/
}

.mdc-text-field--filled .mdc-floating-label--float-above {
  transform: translateY(-106%) scale(0.75);
}
.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input {
  height: 100%;
}
.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label {
  display: none;
}
.mdc-text-field--filled.mdc-text-field--no-label::before {
  display: none;
}
@supports (-webkit-hyphens: none) {
  .mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix {
    align-items: center;
    align-self: center;
    display: inline-flex;
    height: 100%;
  }
}

.mdc-text-field--outlined {
  height: 56px;
  overflow: visible;
}
.mdc-text-field--outlined .mdc-floating-label--float-above {
  transform: translateY(-37.25px) scale(1);
}
.mdc-text-field--outlined .mdc-floating-label--float-above {
  font-size: 0.75rem;
}
.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,
.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  transform: translateY(-34.75px) scale(0.75);
}
.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,
.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  font-size: 1rem;
}
.mdc-text-field--outlined .mdc-floating-label--shake {
  animation: mdc-floating-label-shake-float-above-text-field-outlined 250ms 1;
}
@keyframes mdc-floating-label-shake-float-above-text-field-outlined {
  0% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75);
  }
  33% {
    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75);
  }
  66% {
    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75);
  }
  100% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75);
  }
}
.mdc-text-field--outlined .mdc-text-field__input {
  height: 100%;
}
.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,
.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,
.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing {
  border-color: rgba(0, 0, 0, 0.38);
}
.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,
.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,
.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing {
  border-color: rgba(0, 0, 0, 0.87);
}
.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,
.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,
.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing {
  border-color: #146093;
  /* @alternate */
  border-color: var(--mdc-theme-primary, #146093);
}
.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading {
  /* @noflip */ /*rtl:ignore*/
  border-top-left-radius: 4px;
  /* @alternate */
  /* @noflip */ /*rtl:ignore*/
  border-top-left-radius: var(--mdc-shape-small, 4px);
  /* @noflip */ /*rtl:ignore*/
  border-top-right-radius: 0;
  /* @noflip */ /*rtl:ignore*/
  border-bottom-right-radius: 0;
  /* @noflip */ /*rtl:ignore*/
  border-bottom-left-radius: 4px;
  /* @alternate */
  /* @noflip */ /*rtl:ignore*/
  border-bottom-left-radius: var(--mdc-shape-small, 4px);
}
[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading, .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  border-top-left-radius: 0;
  /* @noflip */ /*rtl:ignore*/
  border-top-right-radius: 4px;
  /* @alternate */
  /* @noflip */ /*rtl:ignore*/
  border-top-right-radius: var(--mdc-shape-small, 4px);
  /* @noflip */ /*rtl:ignore*/
  border-bottom-right-radius: 4px;
  /* @alternate */
  /* @noflip */ /*rtl:ignore*/
  border-bottom-right-radius: var(--mdc-shape-small, 4px);
  /* @noflip */ /*rtl:ignore*/
  border-bottom-left-radius: 0;
  /*rtl:end:ignore*/
}

@supports (top: max(0%)) {
  .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading {
    width: max(12px, var(--mdc-shape-small, 4px));
  }
}
@supports (top: max(0%)) {
  .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch {
    max-width: calc(100% - max(12px, var(--mdc-shape-small, 4px)) * 2);
  }
}
.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing {
  /* @noflip */ /*rtl:ignore*/
  border-top-left-radius: 0;
  /* @noflip */ /*rtl:ignore*/
  border-top-right-radius: 4px;
  /* @alternate */
  /* @noflip */ /*rtl:ignore*/
  border-top-right-radius: var(--mdc-shape-small, 4px);
  /* @noflip */ /*rtl:ignore*/
  border-bottom-right-radius: 4px;
  /* @alternate */
  /* @noflip */ /*rtl:ignore*/
  border-bottom-right-radius: var(--mdc-shape-small, 4px);
  /* @noflip */ /*rtl:ignore*/
  border-bottom-left-radius: 0;
}
[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing, .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  border-top-left-radius: 4px;
  /* @alternate */
  /* @noflip */ /*rtl:ignore*/
  border-top-left-radius: var(--mdc-shape-small, 4px);
  /* @noflip */ /*rtl:ignore*/
  border-top-right-radius: 0;
  /* @noflip */ /*rtl:ignore*/
  border-bottom-right-radius: 0;
  /* @noflip */ /*rtl:ignore*/
  border-bottom-left-radius: 4px;
  /* @alternate */
  /* @noflip */ /*rtl:ignore*/
  border-bottom-left-radius: var(--mdc-shape-small, 4px);
  /*rtl:end:ignore*/
}

@supports (top: max(0%)) {
  .mdc-text-field--outlined {
    /* @noflip */ /*rtl:ignore*/
    padding-left: max(16px, calc(var(--mdc-shape-small, 4px) + 4px));
  }
}
@supports (top: max(0%)) {
  .mdc-text-field--outlined {
    /* @noflip */ /*rtl:ignore*/
    padding-right: max(16px, var(--mdc-shape-small, 4px));
  }
}
@supports (top: max(0%)) {
  .mdc-text-field--outlined + .mdc-text-field-helper-line {
    /* @noflip */ /*rtl:ignore*/
    padding-left: max(16px, calc(var(--mdc-shape-small, 4px) + 4px));
  }
}
@supports (top: max(0%)) {
  .mdc-text-field--outlined + .mdc-text-field-helper-line {
    /* @noflip */ /*rtl:ignore*/
    padding-right: max(16px, var(--mdc-shape-small, 4px));
  }
}
.mdc-text-field--outlined.mdc-text-field--with-leading-icon {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
}
@supports (top: max(0%)) {
  .mdc-text-field--outlined.mdc-text-field--with-leading-icon {
    /* @noflip */ /*rtl:ignore*/
    padding-right: max(16px, var(--mdc-shape-small, 4px));
  }
}
[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon, .mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
  /*rtl:end:ignore*/
}
@supports (top: max(0%)) {
  [dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon, .mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl] {
    /* @noflip */ /*rtl:ignore*/
    padding-left: max(16px, var(--mdc-shape-small, 4px));
  }
}

.mdc-text-field--outlined.mdc-text-field--with-trailing-icon {
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
}
@supports (top: max(0%)) {
  .mdc-text-field--outlined.mdc-text-field--with-trailing-icon {
    /* @noflip */ /*rtl:ignore*/
    padding-left: max(16px, calc(var(--mdc-shape-small, 4px) + 4px));
  }
}
[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon, .mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /*rtl:end:ignore*/
}
@supports (top: max(0%)) {
  [dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon, .mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl] {
    /* @noflip */ /*rtl:ignore*/
    padding-right: max(16px, calc(var(--mdc-shape-small, 4px) + 4px));
  }
}

.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
}
.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch {
  padding-top: 1px;
}
.mdc-text-field--outlined .mdc-text-field__ripple::before,
.mdc-text-field--outlined .mdc-text-field__ripple::after {
  background-color: transparent;
  /* @alternate */
  background-color: var(--mdc-ripple-color, transparent);
}
.mdc-text-field--outlined .mdc-floating-label {
  /* @noflip */ /*rtl:ignore*/
  left: 4px;
  /* @noflip */ /*rtl:ignore*/
  right: initial;
}
[dir=rtl] .mdc-text-field--outlined .mdc-floating-label, .mdc-text-field--outlined .mdc-floating-label[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  left: initial;
  /* @noflip */ /*rtl:ignore*/
  right: 4px;
  /*rtl:end:ignore*/
}

.mdc-text-field--outlined .mdc-text-field__input {
  display: flex;
  border: none !important;
  background-color: transparent;
}
.mdc-text-field--outlined .mdc-notched-outline {
  z-index: 1;
}

.mdc-text-field--textarea {
  flex-direction: column;
  align-items: center;
  width: auto;
  height: auto;
  padding: 0;
  transition: none;
}
.mdc-text-field--textarea .mdc-floating-label {
  top: 19px;
}
.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above) {
  transform: none;
}
.mdc-text-field--textarea .mdc-text-field__input {
  flex-grow: 1;
  height: auto;
  min-height: 1.5rem;
  overflow-x: hidden;
  overflow-y: auto;
  box-sizing: border-box;
  resize: none;
  padding: 0 16px;
  line-height: 1.5rem;
}
.mdc-text-field--textarea.mdc-text-field--filled::before {
  display: none;
}
.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above {
  transform: translateY(-10.25px) scale(0.75);
}
.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake {
  animation: mdc-floating-label-shake-float-above-textarea-filled 250ms 1;
}
@keyframes mdc-floating-label-shake-float-above-textarea-filled {
  0% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75);
  }
  33% {
    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75);
  }
  66% {
    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75);
  }
  100% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75);
  }
}
.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input {
  margin-top: 23px;
  margin-bottom: 9px;
}
.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input {
  margin-top: 16px;
  margin-bottom: 16px;
}
.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch {
  padding-top: 0;
}
.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above {
  transform: translateY(-27.25px) scale(1);
}
.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above {
  font-size: 0.75rem;
}
.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,
.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  transform: translateY(-24.75px) scale(0.75);
}
.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,
.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  font-size: 1rem;
}
.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake {
  animation: mdc-floating-label-shake-float-above-textarea-outlined 250ms 1;
}
@keyframes mdc-floating-label-shake-float-above-textarea-outlined {
  0% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75);
  }
  33% {
    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75);
  }
  66% {
    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75);
  }
  100% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75);
  }
}
.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input {
  margin-top: 16px;
  margin-bottom: 16px;
}
.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label {
  top: 18px;
}
.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input {
  margin-bottom: 2px;
}
.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter {
  align-self: flex-end;
  padding: 0 16px;
}
.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after {
  display: inline-block;
  width: 0;
  height: 16px;
  content: "";
  vertical-align: -16px;
}
.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before {
  display: none;
}

.mdc-text-field__resizer {
  align-self: stretch;
  display: inline-flex;
  flex-direction: column;
  flex-grow: 1;
  max-height: 100%;
  max-width: 100%;
  min-height: 56px;
  min-width: fit-content;
  /* @alternate */
  min-width: -moz-available;
  /* @alternate */
  min-width: -webkit-fill-available;
  overflow: hidden;
  resize: both;
}
.mdc-text-field--filled .mdc-text-field__resizer {
  transform: translateY(-1px);
}
.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,
.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter {
  transform: translateY(1px);
}
.mdc-text-field--outlined .mdc-text-field__resizer {
  /* @noflip */ /*rtl:ignore*/
  transform: translateX(-1px) translateY(-1px);
}
[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer, .mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  transform: translateX(1px) translateY(-1px);
  /*rtl:end:ignore*/
}

.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,
.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter {
  /* @noflip */ /*rtl:ignore*/
  transform: translateX(1px) translateY(1px);
}
[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input, [dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter, .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl], .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  transform: translateX(-1px) translateY(1px);
  /*rtl:end:ignore*/
}

.mdc-text-field--with-leading-icon {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 16px;
}
[dir=rtl] .mdc-text-field--with-leading-icon, .mdc-text-field--with-leading-icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 16px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
  /*rtl:end:ignore*/
}

.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label {
  max-width: calc(100% - 48px);
  /* @noflip */ /*rtl:ignore*/
  left: 48px;
  /* @noflip */ /*rtl:ignore*/
  right: initial;
}
[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label, .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  left: initial;
  /* @noflip */ /*rtl:ignore*/
  right: 48px;
  /*rtl:end:ignore*/
}

.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above {
  max-width: calc(100% / 0.75 - 64px / 0.75);
}
.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label {
  /* @noflip */ /*rtl:ignore*/
  left: 36px;
  /* @noflip */ /*rtl:ignore*/
  right: initial;
}
[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label, .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  left: initial;
  /* @noflip */ /*rtl:ignore*/
  right: 36px;
  /*rtl:end:ignore*/
}

.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch {
  max-width: calc(100% - 60px);
}
.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above {
  /* @noflip */ /*rtl:ignore*/
  transform: translateY(-37.25px) translateX(-32px) scale(1);
}
[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above, .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  transform: translateY(-37.25px) translateX(32px) scale(1);
  /*rtl:end:ignore*/
}

.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above {
  font-size: 0.75rem;
}
.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,
.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  /* @noflip */ /*rtl:ignore*/
  transform: translateY(-34.75px) translateX(-32px) scale(0.75);
}
[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above, [dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above, .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl], .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  transform: translateY(-34.75px) translateX(32px) scale(0.75);
  /*rtl:end:ignore*/
}

.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,
.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  font-size: 1rem;
}
.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake {
  animation: mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1;
}
@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon {
  0% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75);
  }
  33% {
    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75);
  }
  66% {
    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75);
  }
  100% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75);
  }
}
[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined, .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] {
  /*rtl:begin:ignore*/
  /*rtl:end:ignore*/
}
[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake, .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake {
  animation: mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1;
}

@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl {
  0% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75);
  }
  33% {
    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75);
  }
  66% {
    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75);
  }
  100% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75);
  }
}

.mdc-text-field--with-trailing-icon {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 16px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
}
[dir=rtl] .mdc-text-field--with-trailing-icon, .mdc-text-field--with-trailing-icon[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 16px;
  /*rtl:end:ignore*/
}

.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label {
  max-width: calc(100% - 64px);
}
.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above {
  max-width: calc(100% / 0.75 - 64px / 0.75);
}
.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch {
  max-width: calc(100% - 60px);
}

.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
}
.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label {
  max-width: calc(100% - 96px);
}
.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above {
  max-width: calc(100% / 0.75 - 96px / 0.75);
}

.mdc-text-field-helper-line {
  display: flex;
  justify-content: space-between;
  box-sizing: border-box;
}
.mdc-text-field + .mdc-text-field-helper-line {
  padding-right: 16px;
  padding-left: 16px;
}

.mdc-form-field > .mdc-text-field + label {
  align-self: flex-start;
}

.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label {
  color: rgba(20, 96, 147, 0.87);
}
.mdc-text-field--focused .mdc-notched-outline__leading,
.mdc-text-field--focused .mdc-notched-outline__notch,
.mdc-text-field--focused .mdc-notched-outline__trailing {
  border-width: 2px;
}
.mdc-text-field--focused + .mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg) {
  opacity: 1;
}
.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch {
  padding-top: 2px;
}
.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch {
  padding-top: 0;
}

.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before {
  border-bottom-color: #b00020;
  /* @alternate */
  border-bottom-color: var(--mdc-theme-error, #b00020);
}
.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after {
  border-bottom-color: #b00020;
  /* @alternate */
  border-bottom-color: var(--mdc-theme-error, #b00020);
}
.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label {
  color: #b00020;
  /* @alternate */
  color: var(--mdc-theme-error, #b00020);
}
.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid + .mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg {
  color: #b00020;
  /* @alternate */
  color: var(--mdc-theme-error, #b00020);
}
.mdc-text-field--invalid .mdc-text-field__input {
  caret-color: #b00020;
  /* @alternate */
  caret-color: var(--mdc-theme-error, #b00020);
}
.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing {
  color: #b00020;
  /* @alternate */
  color: var(--mdc-theme-error, #b00020);
}
.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before {
  border-bottom-color: #b00020;
  /* @alternate */
  border-bottom-color: var(--mdc-theme-error, #b00020);
}
.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,
.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,
.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing {
  border-color: #b00020;
  /* @alternate */
  border-color: var(--mdc-theme-error, #b00020);
}
.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,
.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,
.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing {
  border-color: #b00020;
  /* @alternate */
  border-color: var(--mdc-theme-error, #b00020);
}
.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,
.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,
.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing {
  border-color: #b00020;
  /* @alternate */
  border-color: var(--mdc-theme-error, #b00020);
}
.mdc-text-field--invalid + .mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg {
  opacity: 1;
}

.mdc-text-field--disabled {
  pointer-events: none;
}
.mdc-text-field--disabled .mdc-text-field__input {
  color: rgba(0, 0, 0, 0.38);
}
@media all {
  .mdc-text-field--disabled .mdc-text-field__input::placeholder {
    color: rgba(0, 0, 0, 0.38);
  }
}
@media all {
  .mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder {
    color: rgba(0, 0, 0, 0.38);
  }
}
.mdc-text-field--disabled .mdc-floating-label {
  color: rgba(0, 0, 0, 0.38);
}
.mdc-text-field--disabled + .mdc-text-field-helper-line .mdc-text-field-helper-text {
  color: rgba(0, 0, 0, 0.38);
}
.mdc-text-field--disabled .mdc-text-field-character-counter,
.mdc-text-field--disabled + .mdc-text-field-helper-line .mdc-text-field-character-counter {
  color: rgba(0, 0, 0, 0.38);
}
.mdc-text-field--disabled .mdc-text-field__icon--leading {
  color: rgba(0, 0, 0, 0.3);
}
.mdc-text-field--disabled .mdc-text-field__icon--trailing {
  color: rgba(0, 0, 0, 0.3);
}
.mdc-text-field--disabled .mdc-text-field__affix--prefix {
  color: rgba(0, 0, 0, 0.38);
}
.mdc-text-field--disabled .mdc-text-field__affix--suffix {
  color: rgba(0, 0, 0, 0.38);
}
.mdc-text-field--disabled .mdc-line-ripple::before {
  border-bottom-color: rgba(0, 0, 0, 0.06);
}
.mdc-text-field--disabled .mdc-notched-outline__leading,
.mdc-text-field--disabled .mdc-notched-outline__notch,
.mdc-text-field--disabled .mdc-notched-outline__trailing {
  border-color: rgba(0, 0, 0, 0.06);
}
@media screen and (forced-colors: active), (-ms-high-contrast: active) {
  .mdc-text-field--disabled .mdc-text-field__input::placeholder {
    color: GrayText;
  }
}
@media screen and (forced-colors: active), (-ms-high-contrast: active) {
  .mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder {
    color: GrayText;
  }
  .mdc-text-field--disabled .mdc-floating-label {
    color: GrayText;
  }
  .mdc-text-field--disabled + .mdc-text-field-helper-line .mdc-text-field-helper-text {
    color: GrayText;
  }
  .mdc-text-field--disabled .mdc-text-field-character-counter,
  .mdc-text-field--disabled + .mdc-text-field-helper-line .mdc-text-field-character-counter {
    color: GrayText;
  }
  .mdc-text-field--disabled .mdc-text-field__icon--leading {
    color: GrayText;
  }
  .mdc-text-field--disabled .mdc-text-field__icon--trailing {
    color: GrayText;
  }
  .mdc-text-field--disabled .mdc-text-field__affix--prefix {
    color: GrayText;
  }
  .mdc-text-field--disabled .mdc-text-field__affix--suffix {
    color: GrayText;
  }
  .mdc-text-field--disabled .mdc-line-ripple::before {
    border-bottom-color: GrayText;
  }
  .mdc-text-field--disabled .mdc-notched-outline__leading,
  .mdc-text-field--disabled .mdc-notched-outline__notch,
  .mdc-text-field--disabled .mdc-notched-outline__trailing {
    border-color: GrayText;
  }
}
@media screen and (forced-colors: active) {
  .mdc-text-field--disabled .mdc-text-field__input {
    background-color: Window;
  }
  .mdc-text-field--disabled .mdc-floating-label {
    z-index: 1;
  }
}
.mdc-text-field--disabled .mdc-floating-label {
  cursor: default;
}
.mdc-text-field--disabled.mdc-text-field--filled {
  background-color: #fafafa;
}
.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple {
  display: none;
}
.mdc-text-field--disabled .mdc-text-field__input {
  pointer-events: auto;
}

.mdc-text-field--end-aligned .mdc-text-field__input {
  /* @noflip */ /*rtl:ignore*/
  text-align: right;
}
[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input, .mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  text-align: left;
  /*rtl:end:ignore*/
}

[dir=rtl] .mdc-text-field--ltr-text, .mdc-text-field--ltr-text[dir=rtl] {
  /*rtl:begin:ignore*/
  /*rtl:end:ignore*/
}
[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,
[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix, .mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,
.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix {
  /* @noflip */ /*rtl:ignore*/
  direction: ltr;
}
[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix, .mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 2px;
}
[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix, .mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 12px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
}
[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading, .mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading {
  order: 1;
}
[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix, .mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix {
  order: 2;
}
[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input, .mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input {
  order: 3;
}
[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix, .mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix {
  order: 4;
}
[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing, .mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing {
  order: 5;
}

[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned, .mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] {
  /*rtl:begin:ignore*/
  /*rtl:end:ignore*/
}
[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input, .mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input {
  /* @noflip */ /*rtl:ignore*/
  text-align: right;
}
[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix, .mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix {
  /* @noflip */ /*rtl:ignore*/
  padding-right: 12px;
}
[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix, .mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix {
  /* @noflip */ /*rtl:ignore*/
  padding-left: 2px;
}

.mdc-text-field-helper-text {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 0.75rem;
  /* @alternate */
  font-size: var(--mdc-typography-caption-font-size, 0.75rem);
  line-height: 1.25rem;
  /* @alternate */
  line-height: var(--mdc-typography-caption-line-height, 1.25rem);
  font-weight: 400;
  /* @alternate */
  font-weight: var(--mdc-typography-caption-font-weight, 400);
  letter-spacing: 0.0333333333em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-caption-letter-spacing, 0.0333333333em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-caption-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-caption-text-transform, inherit);
  display: block;
  margin-top: 0;
  /* @alternate */
  line-height: normal;
  margin: 0;
  opacity: 0;
  will-change: opacity;
  transition: opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);
}
.mdc-text-field-helper-text::before {
  display: inline-block;
  width: 0;
  height: 16px;
  content: "";
  vertical-align: 0;
}

.mdc-text-field-helper-text--persistent {
  transition: none;
  opacity: 1;
  will-change: initial;
}

.mdc-text-field-character-counter {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 0.75rem;
  /* @alternate */
  font-size: var(--mdc-typography-caption-font-size, 0.75rem);
  line-height: 1.25rem;
  /* @alternate */
  line-height: var(--mdc-typography-caption-line-height, 1.25rem);
  font-weight: 400;
  /* @alternate */
  font-weight: var(--mdc-typography-caption-font-weight, 400);
  letter-spacing: 0.0333333333em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-caption-letter-spacing, 0.0333333333em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-caption-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-caption-text-transform, inherit);
  display: block;
  margin-top: 0;
  /* @alternate */
  line-height: normal;
  /* @noflip */ /*rtl:ignore*/
  margin-left: auto;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-left: 16px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
  white-space: nowrap;
}
.mdc-text-field-character-counter::before {
  display: inline-block;
  width: 0;
  height: 16px;
  content: "";
  vertical-align: 0;
}
[dir=rtl] .mdc-text-field-character-counter, .mdc-text-field-character-counter[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: auto;
  /*rtl:end:ignore*/
}

[dir=rtl] .mdc-text-field-character-counter, .mdc-text-field-character-counter[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 16px;
  /*rtl:end:ignore*/
}

.mdc-text-field__icon {
  align-self: center;
  cursor: pointer;
}
.mdc-text-field__icon:not([tabindex]), .mdc-text-field__icon[tabindex="-1"] {
  cursor: default;
  pointer-events: none;
}
.mdc-text-field__icon svg {
  display: block;
}

.mdc-text-field__icon--leading {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 16px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 8px;
}
[dir=rtl] .mdc-text-field__icon--leading, .mdc-text-field__icon--leading[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 8px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 16px;
  /*rtl:end:ignore*/
}

.mdc-text-field__icon--trailing {
  padding: 12px;
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0px;
}
[dir=rtl] .mdc-text-field__icon--trailing, .mdc-text-field__icon--trailing[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0px;
  /*rtl:end:ignore*/
}

.mdc-text-field__icon {
  align-self: center;
  cursor: pointer;
}
.mdc-text-field__icon:not([tabindex]), .mdc-text-field__icon[tabindex="-1"] {
  cursor: default;
  pointer-events: none;
}
.mdc-text-field__icon svg {
  display: block;
}

.mdc-text-field__icon--leading {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 16px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 8px;
}
[dir=rtl] .mdc-text-field__icon--leading, .mdc-text-field__icon--leading[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 8px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 16px;
  /*rtl:end:ignore*/
}

.mdc-text-field__icon--trailing {
  padding: 12px;
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0px;
}
[dir=rtl] .mdc-text-field__icon--trailing, .mdc-text-field__icon--trailing[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0px;
  /*rtl:end:ignore*/
}

.mdc-form-field {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 0.875rem;
  /* @alternate */
  font-size: var(--mdc-typography-body2-font-size, 0.875rem);
  line-height: 1.25rem;
  /* @alternate */
  line-height: var(--mdc-typography-body2-line-height, 1.25rem);
  font-weight: 400;
  /* @alternate */
  font-weight: var(--mdc-typography-body2-font-weight, 400);
  letter-spacing: 0.0178571429em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-body2-letter-spacing, 0.0178571429em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-body2-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-body2-text-transform, inherit);
  color: rgba(0, 0, 0, 0.87);
  /* @alternate */
  color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));
  display: inline-flex;
  align-items: center;
  vertical-align: middle;
}
.mdc-form-field > label {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: auto;
  /* @noflip */ /*rtl:ignore*/
  padding-left: 4px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
  order: 0;
}
[dir=rtl] .mdc-form-field > label, .mdc-form-field > label[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: auto;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /*rtl:end:ignore*/
}

[dir=rtl] .mdc-form-field > label, .mdc-form-field > label[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 4px;
  /*rtl:end:ignore*/
}

.mdc-form-field--nowrap > label {
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}

.mdc-form-field--align-end > label {
  /* @noflip */ /*rtl:ignore*/
  margin-left: auto;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-left: 0;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 4px;
  order: -1;
}
[dir=rtl] .mdc-form-field--align-end > label, .mdc-form-field--align-end > label[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: auto;
  /*rtl:end:ignore*/
}

[dir=rtl] .mdc-form-field--align-end > label, .mdc-form-field--align-end > label[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  padding-left: 4px;
  /* @noflip */ /*rtl:ignore*/
  padding-right: 0;
  /*rtl:end:ignore*/
}

.mdc-form-field--space-between {
  justify-content: space-between;
}
.mdc-form-field--space-between > label {
  margin: 0;
}
[dir=rtl] .mdc-form-field--space-between > label, .mdc-form-field--space-between > label[dir=rtl] {
  /*rtl:begin:ignore*/
  margin: 0;
  /*rtl:end:ignore*/
}

.mdc-checkbox {
  padding: calc((40px - 18px) / 2);
  /* @alternate */
  padding: calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);
  margin: calc((40px - 40px) / 2);
  /* @alternate */
  margin: calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2);
}
.mdc-checkbox .mdc-checkbox__ripple::before, .mdc-checkbox .mdc-checkbox__ripple::after {
  background-color: #000;
  /* @alternate */
  background-color: var(--mdc-ripple-color, #000);
}
.mdc-checkbox:hover .mdc-checkbox__ripple::before, .mdc-checkbox.mdc-ripple-surface--hover .mdc-checkbox__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-ripple-hover-opacity, 0.04);
}
.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__ripple::before, .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-focus-opacity, 0.12);
}
.mdc-checkbox:not(.mdc-ripple-upgraded) .mdc-checkbox__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-checkbox:not(.mdc-ripple-upgraded):active .mdc-checkbox__ripple::after {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-checkbox.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-checkbox.mdc-checkbox--selected .mdc-checkbox__ripple::before, .mdc-checkbox.mdc-checkbox--selected .mdc-checkbox__ripple::after {
  background-color: #ff3d60;
  /* @alternate */
  background-color: var(--mdc-ripple-color, var(--mdc-theme-secondary, #ff3d60));
}
.mdc-checkbox.mdc-checkbox--selected:hover .mdc-checkbox__ripple::before, .mdc-checkbox.mdc-checkbox--selected.mdc-ripple-surface--hover .mdc-checkbox__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-ripple-hover-opacity, 0.04);
}
.mdc-checkbox.mdc-checkbox--selected.mdc-ripple-upgraded--background-focused .mdc-checkbox__ripple::before, .mdc-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded):focus .mdc-checkbox__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-focus-opacity, 0.12);
}
.mdc-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded) .mdc-checkbox__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-checkbox.mdc-checkbox--selected:not(.mdc-ripple-upgraded):active .mdc-checkbox__ripple::after {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-checkbox.mdc-checkbox--selected.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--selected .mdc-checkbox__ripple::before,
.mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--selected .mdc-checkbox__ripple::after {
  background-color: #ff3d60;
  /* @alternate */
  background-color: var(--mdc-ripple-color, var(--mdc-theme-secondary, #ff3d60));
}
.mdc-checkbox .mdc-checkbox__background {
  top: calc((40px - 18px) / 2);
  /* @alternate */
  top: calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);
  left: calc((40px - 18px) / 2);
  /* @alternate */
  left: calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);
}
.mdc-checkbox .mdc-checkbox__native-control {
  top: calc((40px - 40px) / 2);
  /* @alternate */
  top: calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);
  right: calc((40px - 40px) / 2);
  /* @alternate */
  right: calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);
  left: calc((40px - 40px) / 2);
  /* @alternate */
  left: calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);
  width: 40px;
  /* @alternate */
  width: var(--mdc-checkbox-touch-target-size, 40px);
  height: 40px;
  /* @alternate */
  height: var(--mdc-checkbox-touch-target-size, 40px);
}
.mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true]) ~ .mdc-checkbox__background {
  border-color: rgba(0, 0, 0, 0.54);
  /* @alternate */
  border-color: var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));
  background-color: transparent;
}
.mdc-checkbox .mdc-checkbox__native-control:enabled:checked ~ .mdc-checkbox__background,
.mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate ~ .mdc-checkbox__background,
.mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled ~ .mdc-checkbox__background {
  border-color: #ff3d60;
  /* @alternate */
  border-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #ff3d60));
  background-color: #ff3d60;
  /* @alternate */
  background-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #ff3d60));
}
@keyframes mdc-checkbox-fade-in-background-8A000000FFFF3D6000000000FFFF3D60 {
  0% {
    border-color: rgba(0, 0, 0, 0.54);
    /* @alternate */
    border-color: var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));
    background-color: transparent;
  }
  50% {
    border-color: #ff3d60;
    /* @alternate */
    border-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #ff3d60));
    background-color: #ff3d60;
    /* @alternate */
    background-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #ff3d60));
  }
}
@keyframes mdc-checkbox-fade-out-background-8A000000FFFF3D6000000000FFFF3D60 {
  0%, 80% {
    border-color: #ff3d60;
    /* @alternate */
    border-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #ff3d60));
    background-color: #ff3d60;
    /* @alternate */
    background-color: var(--mdc-checkbox-checked-color, var(--mdc-theme-secondary, #ff3d60));
  }
  100% {
    border-color: rgba(0, 0, 0, 0.54);
    /* @alternate */
    border-color: var(--mdc-checkbox-unchecked-color, rgba(0, 0, 0, 0.54));
    background-color: transparent;
  }
}
.mdc-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background, .mdc-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background {
  animation-name: mdc-checkbox-fade-in-background-8A000000FFFF3D6000000000FFFF3D60;
}
.mdc-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background, .mdc-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background {
  animation-name: mdc-checkbox-fade-out-background-8A000000FFFF3D6000000000FFFF3D60;
}
.mdc-checkbox .mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate):not([data-indeterminate=true]) ~ .mdc-checkbox__background {
  border-color: rgba(0, 0, 0, 0.38);
  /* @alternate */
  border-color: var(--mdc-checkbox-disabled-color, rgba(0, 0, 0, 0.38));
  background-color: transparent;
}
.mdc-checkbox .mdc-checkbox__native-control[disabled]:checked ~ .mdc-checkbox__background,
.mdc-checkbox .mdc-checkbox__native-control[disabled]:indeterminate ~ .mdc-checkbox__background,
.mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true][disabled] ~ .mdc-checkbox__background {
  border-color: transparent;
  background-color: rgba(0, 0, 0, 0.38);
  /* @alternate */
  background-color: var(--mdc-checkbox-disabled-color, rgba(0, 0, 0, 0.38));
}
.mdc-checkbox .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background .mdc-checkbox__checkmark {
  color: #fff;
  /* @alternate */
  color: var(--mdc-checkbox-ink-color, #fff);
}
.mdc-checkbox .mdc-checkbox__native-control:enabled ~ .mdc-checkbox__background .mdc-checkbox__mixedmark {
  border-color: #fff;
  /* @alternate */
  border-color: var(--mdc-checkbox-ink-color, #fff);
}
.mdc-checkbox .mdc-checkbox__native-control:disabled ~ .mdc-checkbox__background .mdc-checkbox__checkmark {
  color: #fff;
  /* @alternate */
  color: var(--mdc-checkbox-ink-color, #fff);
}
.mdc-checkbox .mdc-checkbox__native-control:disabled ~ .mdc-checkbox__background .mdc-checkbox__mixedmark {
  border-color: #fff;
  /* @alternate */
  border-color: var(--mdc-checkbox-ink-color, #fff);
}

@keyframes mdc-checkbox-unchecked-checked-checkmark-path {
  0%, 50% {
    stroke-dashoffset: 29.7833385;
  }
  50% {
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
  100% {
    stroke-dashoffset: 0;
  }
}
@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark {
  0%, 68.2% {
    transform: scaleX(0);
  }
  68.2% {
    animation-timing-function: cubic-bezier(0, 0, 0, 1);
  }
  100% {
    transform: scaleX(1);
  }
}
@keyframes mdc-checkbox-checked-unchecked-checkmark-path {
  from {
    animation-timing-function: cubic-bezier(0.4, 0, 1, 1);
    opacity: 1;
    stroke-dashoffset: 0;
  }
  to {
    opacity: 0;
    stroke-dashoffset: -29.7833385;
  }
}
@keyframes mdc-checkbox-checked-indeterminate-checkmark {
  from {
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
    transform: rotate(0deg);
    opacity: 1;
  }
  to {
    transform: rotate(45deg);
    opacity: 0;
  }
}
@keyframes mdc-checkbox-indeterminate-checked-checkmark {
  from {
    animation-timing-function: cubic-bezier(0.14, 0, 0, 1);
    transform: rotate(45deg);
    opacity: 0;
  }
  to {
    transform: rotate(360deg);
    opacity: 1;
  }
}
@keyframes mdc-checkbox-checked-indeterminate-mixedmark {
  from {
    animation-timing-function: mdc-animation-deceleration-curve-timing-function;
    transform: rotate(-45deg);
    opacity: 0;
  }
  to {
    transform: rotate(0deg);
    opacity: 1;
  }
}
@keyframes mdc-checkbox-indeterminate-checked-mixedmark {
  from {
    animation-timing-function: cubic-bezier(0.14, 0, 0, 1);
    transform: rotate(0deg);
    opacity: 1;
  }
  to {
    transform: rotate(315deg);
    opacity: 0;
  }
}
@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark {
  0% {
    animation-timing-function: linear;
    transform: scaleX(1);
    opacity: 1;
  }
  32.8%, 100% {
    transform: scaleX(0);
    opacity: 0;
  }
}
.mdc-checkbox {
  display: inline-block;
  position: relative;
  flex: 0 0 18px;
  box-sizing: content-box;
  width: 18px;
  height: 18px;
  line-height: 0;
  white-space: nowrap;
  cursor: pointer;
  vertical-align: bottom;
}
.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring, .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring {
  pointer-events: none;
  border: 2px solid transparent;
  border-radius: 6px;
  box-sizing: content-box;
  position: absolute;
  top: 50%;
  /* @noflip */ /*rtl:ignore*/
  left: 50%;
  /* @noflip */ /*rtl:ignore*/
  transform: translate(-50%, -50%);
  height: 100%;
  width: 100%;
}
@media screen and (forced-colors: active) {
  .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring, .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring {
    border-color: CanvasText;
  }
}
.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after, .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after {
  content: "";
  border: 2px solid transparent;
  border-radius: 8px;
  display: block;
  position: absolute;
  top: 50%;
  /* @noflip */ /*rtl:ignore*/
  left: 50%;
  /* @noflip */ /*rtl:ignore*/
  transform: translate(-50%, -50%);
  height: calc(100% + 4px);
  width: calc(100% + 4px);
}
@media screen and (forced-colors: active) {
  .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after, .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after {
    border-color: CanvasText;
  }
}
@media all and (-ms-high-contrast: none) {
  .mdc-checkbox .mdc-checkbox__focus-ring {
    display: none;
  }
}

@media screen and (forced-colors: active), (-ms-high-contrast: active) {
  .mdc-checkbox__mixedmark {
    margin: 0 1px;
  }
}
.mdc-checkbox--disabled {
  cursor: default;
  pointer-events: none;
}

.mdc-checkbox__background {
  display: inline-flex;
  position: absolute;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 18px;
  height: 18px;
  border: 2px solid currentColor;
  border-radius: 2px;
  background-color: transparent;
  pointer-events: none;
  will-change: background-color, border-color;
  transition: background-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1), border-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
}

.mdc-checkbox__checkmark {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  opacity: 0;
  transition: opacity 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
}
.mdc-checkbox--upgraded .mdc-checkbox__checkmark {
  opacity: 1;
}

.mdc-checkbox__checkmark-path {
  transition: stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
  stroke: currentColor;
  stroke-width: 3.12px;
  stroke-dashoffset: 29.7833385;
  stroke-dasharray: 29.7833385;
}

.mdc-checkbox__mixedmark {
  width: 100%;
  height: 0;
  transform: scaleX(0) rotate(0deg);
  border-width: 1px;
  border-style: solid;
  opacity: 0;
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
}

.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background, .mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background, .mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background, .mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background {
  animation-duration: 180ms;
  animation-timing-function: linear;
}
.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path {
  animation: mdc-checkbox-unchecked-checked-checkmark-path 180ms linear 0s;
  transition: none;
}
.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark {
  animation: mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear 0s;
  transition: none;
}
.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path {
  animation: mdc-checkbox-checked-unchecked-checkmark-path 90ms linear 0s;
  transition: none;
}
.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark {
  animation: mdc-checkbox-checked-indeterminate-checkmark 90ms linear 0s;
  transition: none;
}
.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark {
  animation: mdc-checkbox-checked-indeterminate-mixedmark 90ms linear 0s;
  transition: none;
}
.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark {
  animation: mdc-checkbox-indeterminate-checked-checkmark 500ms linear 0s;
  transition: none;
}
.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark {
  animation: mdc-checkbox-indeterminate-checked-mixedmark 500ms linear 0s;
  transition: none;
}
.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark {
  animation: mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear 0s;
  transition: none;
}

.mdc-checkbox__native-control:checked ~ .mdc-checkbox__background,
.mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background,
.mdc-checkbox__native-control[data-indeterminate=true] ~ .mdc-checkbox__background {
  transition: border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1);
}
.mdc-checkbox__native-control:checked ~ .mdc-checkbox__background .mdc-checkbox__checkmark-path,
.mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background .mdc-checkbox__checkmark-path,
.mdc-checkbox__native-control[data-indeterminate=true] ~ .mdc-checkbox__background .mdc-checkbox__checkmark-path {
  stroke-dashoffset: 0;
}

.mdc-checkbox__native-control {
  position: absolute;
  margin: 0;
  padding: 0;
  opacity: 0;
  cursor: inherit;
}
.mdc-checkbox__native-control:disabled {
  cursor: default;
  pointer-events: none;
}

.mdc-checkbox--touch {
  margin: calc((48px - 40px) / 2);
  /* @alternate */
  margin: calc((var(--mdc-checkbox-state-layer-size, 48px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);
}
.mdc-checkbox--touch .mdc-checkbox__native-control {
  top: calc((40px - 48px) / 2);
  /* @alternate */
  top: calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);
  right: calc((40px - 48px) / 2);
  /* @alternate */
  right: calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);
  left: calc((40px - 48px) / 2);
  /* @alternate */
  left: calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);
  width: 48px;
  /* @alternate */
  width: var(--mdc-checkbox-state-layer-size, 48px);
  height: 48px;
  /* @alternate */
  height: var(--mdc-checkbox-state-layer-size, 48px);
}

.mdc-checkbox__native-control:checked ~ .mdc-checkbox__background .mdc-checkbox__checkmark {
  transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: 1;
}
.mdc-checkbox__native-control:checked ~ .mdc-checkbox__background .mdc-checkbox__mixedmark {
  transform: scaleX(1) rotate(-45deg);
}

.mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background .mdc-checkbox__checkmark,
.mdc-checkbox__native-control[data-indeterminate=true] ~ .mdc-checkbox__background .mdc-checkbox__checkmark {
  transform: rotate(45deg);
  opacity: 0;
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
}
.mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background .mdc-checkbox__mixedmark,
.mdc-checkbox__native-control[data-indeterminate=true] ~ .mdc-checkbox__background .mdc-checkbox__mixedmark {
  transform: scaleX(1) rotate(0deg);
  opacity: 1;
}

.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__background,
.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark,
.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark-path,
.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__mixedmark {
  transition: none;
}

.mdc-checkbox {
  --mdc-ripple-fg-size: 0;
  --mdc-ripple-left: 0;
  --mdc-ripple-top: 0;
  --mdc-ripple-fg-scale: 1;
  --mdc-ripple-fg-translate-end: 0;
  --mdc-ripple-fg-translate-start: 0;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  will-change: transform, opacity;
}
.mdc-checkbox .mdc-checkbox__ripple::before,
.mdc-checkbox .mdc-checkbox__ripple::after {
  position: absolute;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}
.mdc-checkbox .mdc-checkbox__ripple::before {
  transition: opacity 15ms linear, background-color 15ms linear;
  z-index: 1;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 1);
}
.mdc-checkbox .mdc-checkbox__ripple::after {
  z-index: 0;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, 0);
}
.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::before {
  transform: scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::after {
  top: 0;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
  transform: scale(0);
  transform-origin: center center;
}
.mdc-checkbox.mdc-ripple-upgraded--unbounded .mdc-checkbox__ripple::after {
  top: var(--mdc-ripple-top, 0);
  /* @noflip */ /*rtl:ignore*/
  left: var(--mdc-ripple-left, 0);
}
.mdc-checkbox.mdc-ripple-upgraded--foreground-activation .mdc-checkbox__ripple::after {
  animation: mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards;
}
.mdc-checkbox.mdc-ripple-upgraded--foreground-deactivation .mdc-checkbox__ripple::after {
  animation: mdc-ripple-fg-opacity-out 150ms;
  transform: translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1));
}
.mdc-checkbox .mdc-checkbox__ripple::before,
.mdc-checkbox .mdc-checkbox__ripple::after {
  top: calc(50% - 50%);
  /* @noflip */ /*rtl:ignore*/
  left: calc(50% - 50%);
  width: 100%;
  height: 100%;
}
.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::before,
.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::after {
  top: var(--mdc-ripple-top, calc(50% - 50%));
  /* @noflip */ /*rtl:ignore*/
  left: var(--mdc-ripple-left, calc(50% - 50%));
  width: var(--mdc-ripple-fg-size, 100%);
  height: var(--mdc-ripple-fg-size, 100%);
}
.mdc-checkbox.mdc-ripple-upgraded .mdc-checkbox__ripple::after {
  width: var(--mdc-ripple-fg-size, 100%);
  height: var(--mdc-ripple-fg-size, 100%);
}
.mdc-checkbox {
  z-index: 0;
}
.mdc-checkbox .mdc-checkbox__ripple::before,
.mdc-checkbox .mdc-checkbox__ripple::after {
  z-index: -1;
  /* @alternate */
  z-index: var(--mdc-ripple-z-index, -1);
}

.mdc-checkbox__ripple {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

@keyframes mdc-linear-progress-primary-indeterminate-translate {
  0% {
    transform: translateX(0);
  }
  20% {
    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
    transform: translateX(0);
  }
  59.15% {
    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
    transform: translateX(83.67142%);
    /* @alternate */
    transform: translateX(var(--mdc-linear-progress-primary-half, 83.67142%));
  }
  100% {
    transform: translateX(200.611057%);
    /* @alternate */
    transform: translateX(var(--mdc-linear-progress-primary-full, 200.611057%));
  }
}
@keyframes mdc-linear-progress-primary-indeterminate-scale {
  0% {
    transform: scaleX(0.08);
  }
  36.65% {
    animation-timing-function: cubic-bezier(0.334731, 0.12482, 0.785844, 1);
    transform: scaleX(0.08);
  }
  69.15% {
    animation-timing-function: cubic-bezier(0.06, 0.11, 0.6, 1);
    transform: scaleX(0.661479);
  }
  100% {
    transform: scaleX(0.08);
  }
}
@keyframes mdc-linear-progress-secondary-indeterminate-translate {
  0% {
    animation-timing-function: cubic-bezier(0.15, 0, 0.515058, 0.409685);
    transform: translateX(0);
  }
  25% {
    animation-timing-function: cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);
    transform: translateX(37.651913%);
    /* @alternate */
    transform: translateX(var(--mdc-linear-progress-secondary-quarter, 37.651913%));
  }
  48.35% {
    animation-timing-function: cubic-bezier(0.4, 0.627035, 0.6, 0.902026);
    transform: translateX(84.386165%);
    /* @alternate */
    transform: translateX(var(--mdc-linear-progress-secondary-half, 84.386165%));
  }
  100% {
    transform: translateX(160.277782%);
    /* @alternate */
    transform: translateX(var(--mdc-linear-progress-secondary-full, 160.277782%));
  }
}
@keyframes mdc-linear-progress-secondary-indeterminate-scale {
  0% {
    animation-timing-function: cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);
    transform: scaleX(0.08);
  }
  19.15% {
    animation-timing-function: cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);
    transform: scaleX(0.457104);
  }
  44.15% {
    animation-timing-function: cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);
    transform: scaleX(0.72796);
  }
  100% {
    transform: scaleX(0.08);
  }
}
@keyframes mdc-linear-progress-buffering {
  from {
    transform: rotate(180deg) translateX(-10px);
  }
}
@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse {
  0% {
    transform: translateX(0);
  }
  20% {
    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
    transform: translateX(0);
  }
  59.15% {
    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
    transform: translateX(-83.67142%);
    /* @alternate */
    transform: translateX(var(--mdc-linear-progress-primary-half-neg, -83.67142%));
  }
  100% {
    transform: translateX(-200.611057%);
    /* @alternate */
    transform: translateX(var(--mdc-linear-progress-primary-full-neg, -200.611057%));
  }
}
@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse {
  0% {
    animation-timing-function: cubic-bezier(0.15, 0, 0.515058, 0.409685);
    transform: translateX(0);
  }
  25% {
    animation-timing-function: cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);
    transform: translateX(-37.651913%);
    /* @alternate */
    transform: translateX(var(--mdc-linear-progress-secondary-quarter-neg, -37.651913%));
  }
  48.35% {
    animation-timing-function: cubic-bezier(0.4, 0.627035, 0.6, 0.902026);
    transform: translateX(-84.386165%);
    /* @alternate */
    transform: translateX(var(--mdc-linear-progress-secondary-half-neg, -84.386165%));
  }
  100% {
    transform: translateX(-160.277782%);
    /* @alternate */
    transform: translateX(var(--mdc-linear-progress-secondary-full-neg, -160.277782%));
  }
}
@keyframes mdc-linear-progress-buffering-reverse {
  from {
    transform: translateX(-10px);
  }
}
.mdc-linear-progress {
  position: relative;
  width: 100%;
  transform: translateZ(0);
  outline: 1px solid transparent;
  overflow: hidden;
  transition: opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
}
@media screen and (forced-colors: active) {
  .mdc-linear-progress {
    outline-color: CanvasText;
  }
}
.mdc-linear-progress__bar {
  position: absolute;
  width: 100%;
  height: 100%;
  animation: none;
  transform-origin: top left;
  transition: transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
}
.mdc-linear-progress__bar-inner {
  display: inline-block;
  position: absolute;
  width: 100%;
  animation: none;
  border-top-style: solid;
}
.mdc-linear-progress__buffer {
  display: flex;
  position: absolute;
  width: 100%;
  height: 100%;
}
.mdc-linear-progress__buffer-dots {
  background-repeat: repeat-x;
  flex: auto;
  transform: rotate(180deg);
  animation: mdc-linear-progress-buffering 250ms infinite linear;
}
.mdc-linear-progress__buffer-bar {
  flex: 0 1 100%;
  transition: flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);
}
.mdc-linear-progress__primary-bar {
  transform: scaleX(0);
}
.mdc-linear-progress__secondary-bar {
  display: none;
}
.mdc-linear-progress--indeterminate .mdc-linear-progress__bar {
  transition: none;
}
.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar {
  left: -145.166611%;
}
.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar {
  left: -54.888891%;
  display: block;
}
.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar {
  animation: mdc-linear-progress-primary-indeterminate-translate 2s infinite linear;
}
.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar > .mdc-linear-progress__bar-inner {
  animation: mdc-linear-progress-primary-indeterminate-scale 2s infinite linear;
}
.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar {
  animation: mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear;
}
.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar > .mdc-linear-progress__bar-inner {
  animation: mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear;
}
[dir=rtl] .mdc-linear-progress, .mdc-linear-progress[dir=rtl] {
  /*rtl:begin:ignore*/
  /*rtl:end:ignore*/
}
[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__bar, .mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__bar {
  /* @noflip */ /*rtl:ignore*/
  right: 0;
  /* @noflip */ /*rtl:ignore*/
  -webkit-transform-origin: center right;
  /* @noflip */ /*rtl:ignore*/
  transform-origin: center right;
}
[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar, .mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar {
  animation-name: mdc-linear-progress-primary-indeterminate-translate-reverse;
}
[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar, .mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar {
  animation-name: mdc-linear-progress-secondary-indeterminate-translate-reverse;
}
[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__buffer-dots, .mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__buffer-dots {
  animation: mdc-linear-progress-buffering-reverse 250ms infinite linear;
  transform: rotate(0);
}
[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar, .mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar {
  /* @noflip */ /*rtl:ignore*/
  right: -145.166611%;
  /* @noflip */ /*rtl:ignore*/
  left: auto;
}
[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar, .mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar {
  /* @noflip */ /*rtl:ignore*/
  right: -54.888891%;
  /* @noflip */ /*rtl:ignore*/
  left: auto;
}

.mdc-linear-progress--closed {
  opacity: 0;
}
.mdc-linear-progress--closed-animation-off .mdc-linear-progress__buffer-dots {
  animation: none;
}
.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar,
.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar .mdc-linear-progress__bar-inner {
  animation: none;
}

.mdc-linear-progress__bar-inner {
  border-color: #146093;
  /* @alternate */
  border-color: var(--mdc-theme-primary, #146093);
}

.mdc-linear-progress__buffer-dots {
  background-image: url("data:image/svg+xml,%3Csvg version=%271.1%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:xlink=%27http://www.w3.org/1999/xlink%27 x=%270px%27 y=%270px%27 enable-background=%27new 0 0 5 2%27 xml:space=%27preserve%27 viewBox=%270 0 5 2%27 preserveAspectRatio=%27none slice%27%3E%3Ccircle cx=%271%27 cy=%271%27 r=%271%27 fill=%27%23e6e6e6%27/%3E%3C/svg%3E");
}

.mdc-linear-progress__buffer-bar {
  background-color: #e6e6e6;
}

.mdc-linear-progress {
  height: 4px;
}
.mdc-linear-progress__bar-inner {
  border-top-width: 4px;
}
.mdc-linear-progress__buffer-dots {
  background-size: 10px 4px;
}

.mdc-dialog .mdc-dialog__surface {
  background-color: #fff;
  /* @alternate */
  background-color: var(--mdc-theme-surface, #fff);
}
.mdc-dialog .mdc-dialog__scrim {
  background-color: rgba(0, 0, 0, 0.32);
}
.mdc-dialog .mdc-dialog__surface-scrim {
  background-color: rgba(0, 0, 0, 0.32);
}
.mdc-dialog .mdc-dialog__title {
  color: rgba(0, 0, 0, 0.87);
}
.mdc-dialog .mdc-dialog__content {
  color: rgba(0, 0, 0, 0.6);
}
.mdc-dialog .mdc-dialog__close {
  color: #000;
  /* @alternate */
  color: var(--mdc-theme-on-surface, #000);
}
.mdc-dialog .mdc-dialog__close .mdc-icon-button__ripple::before, .mdc-dialog .mdc-dialog__close .mdc-icon-button__ripple::after {
  background-color: #000;
  /* @alternate */
  background-color: var(--mdc-ripple-color, var(--mdc-theme-on-surface, #000));
}
.mdc-dialog .mdc-dialog__close:hover .mdc-icon-button__ripple::before, .mdc-dialog .mdc-dialog__close.mdc-ripple-surface--hover .mdc-icon-button__ripple::before {
  opacity: 0.04;
  /* @alternate */
  opacity: var(--mdc-ripple-hover-opacity, 0.04);
}
.mdc-dialog .mdc-dialog__close.mdc-ripple-upgraded--background-focused .mdc-icon-button__ripple::before, .mdc-dialog .mdc-dialog__close:not(.mdc-ripple-upgraded):focus .mdc-icon-button__ripple::before {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-focus-opacity, 0.12);
}
.mdc-dialog .mdc-dialog__close:not(.mdc-ripple-upgraded) .mdc-icon-button__ripple::after {
  transition: opacity 150ms linear;
}
.mdc-dialog .mdc-dialog__close:not(.mdc-ripple-upgraded):active .mdc-icon-button__ripple::after {
  transition-duration: 75ms;
  opacity: 0.12;
  /* @alternate */
  opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-dialog .mdc-dialog__close.mdc-ripple-upgraded {
  --mdc-ripple-fg-opacity: var(--mdc-ripple-press-opacity, 0.12);
}
.mdc-dialog.mdc-dialog--scrollable .mdc-dialog__title, .mdc-dialog.mdc-dialog--scrollable .mdc-dialog__actions, .mdc-dialog.mdc-dialog--scrollable.mdc-dialog-scroll-divider-footer .mdc-dialog__actions {
  border-color: rgba(0, 0, 0, 0.12);
}
.mdc-dialog.mdc-dialog--scrollable .mdc-dialog__title {
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
  margin-bottom: 0;
}
.mdc-dialog.mdc-dialog-scroll-divider-header.mdc-dialog--fullscreen .mdc-dialog__header {
  /* @alternate */
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}
.mdc-dialog .mdc-dialog__surface {
  border-radius: 4px;
  /* @alternate */
  border-radius: var(--mdc-shape-medium, 4px);
}

.mdc-dialog__surface {
  /* @alternate */
  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
}

.mdc-dialog__title {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 1.25rem;
  /* @alternate */
  font-size: var(--mdc-typography-headline6-font-size, 1.25rem);
  line-height: 2rem;
  /* @alternate */
  line-height: var(--mdc-typography-headline6-line-height, 2rem);
  font-weight: 500;
  /* @alternate */
  font-weight: var(--mdc-typography-headline6-font-weight, 500);
  letter-spacing: 0.0125em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-headline6-letter-spacing, 0.0125em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-headline6-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-headline6-text-transform, inherit);
}

.mdc-dialog__content {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-family: Roboto, sans-serif;
  /* @alternate */
  font-family: var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));
  font-size: 1rem;
  /* @alternate */
  font-size: var(--mdc-typography-body1-font-size, 1rem);
  line-height: 1.5rem;
  /* @alternate */
  line-height: var(--mdc-typography-body1-line-height, 1.5rem);
  font-weight: 400;
  /* @alternate */
  font-weight: var(--mdc-typography-body1-font-weight, 400);
  letter-spacing: 0.03125em;
  /* @alternate */
  letter-spacing: var(--mdc-typography-body1-letter-spacing, 0.03125em);
  text-decoration: inherit;
  /* @alternate */
  text-decoration: var(--mdc-typography-body1-text-decoration, inherit);
  text-transform: inherit;
  /* @alternate */
  text-transform: var(--mdc-typography-body1-text-transform, inherit);
}

.mdc-dialog__title-icon {
  /** Hook for theming API. */
}

.mdc-dialog,
.mdc-dialog__scrim {
  position: fixed;
  top: 0;
  left: 0;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
}

.mdc-dialog {
  display: none;
  z-index: 7;
  /* @alternate */
  z-index: var(--mdc-dialog-z-index, 7);
}
.mdc-dialog .mdc-dialog__content {
  padding: 20px 24px 20px 24px;
}
.mdc-dialog .mdc-dialog__surface {
  min-width: 280px;
}
@media (max-width: 592px) {
  .mdc-dialog .mdc-dialog__surface {
    max-width: calc(100vw - 32px);
  }
}
@media (min-width: 592px) {
  .mdc-dialog .mdc-dialog__surface {
    max-width: 560px;
  }
}
.mdc-dialog .mdc-dialog__surface {
  max-height: calc(100% - 32px);
}
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  .mdc-dialog .mdc-dialog__container {
    /* stylelint-disable */
    /* stylelint-enable*/
  }
}
.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface {
  max-width: none;
}
@media (max-width: 960px) {
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface {
    max-height: 560px;
    width: 560px;
  }
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close {
    right: -12px;
  }
}
@media (max-width: 720px) and (max-width: 672px) {
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface {
    width: calc(100vw - 112px);
  }
}
@media (max-width: 720px) and (min-width: 672px) {
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface {
    width: 560px;
  }
}
@media (max-width: 720px) and (max-height: 720px) {
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface {
    max-height: calc(100vh - 160px);
  }
}
@media (max-width: 720px) and (min-height: 720px) {
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface {
    max-height: 560px;
  }
}
@media (max-width: 720px) {
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close {
    right: -12px;
  }
}
@media (max-width: 720px) and (max-height: 400px) {
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface {
    height: 100%;
    max-height: 100vh;
    max-width: 100vw;
    width: 100vw;
    border-radius: 0;
  }
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close {
    order: -1;
    left: -12px;
  }
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header {
    padding: 0 16px 9px;
    justify-content: flex-start;
  }
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title {
    margin-left: calc(16px - 2 * 12px);
  }
}
@media (max-width: 600px) {
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface {
    height: 100%;
    max-height: 100vh;
    max-width: 100vw;
    width: 100vw;
    border-radius: 0;
  }
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close {
    order: -1;
    left: -12px;
  }
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header {
    padding: 0 16px 9px;
    justify-content: flex-start;
  }
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title {
    margin-left: calc(16px - 2 * 12px);
  }
}
@media (min-width: 960px) {
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface {
    width: calc(100vw - 400px);
  }
  .mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close {
    right: -12px;
  }
}
.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim {
  opacity: 0;
}

.mdc-dialog__scrim {
  opacity: 0;
  z-index: -1;
}

.mdc-dialog__container {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-around;
  box-sizing: border-box;
  height: 100%;
  transform: scale(0.8);
  opacity: 0;
  pointer-events: none;
}

.mdc-dialog__surface {
  /* @alternate */
  position: relative;
  display: flex;
  flex-direction: column;
  flex-grow: 0;
  flex-shrink: 0;
  box-sizing: border-box;
  max-width: 100%;
  max-height: 100%;
  pointer-events: auto;
  overflow-y: auto;
}
.mdc-dialog__surface .mdc-elevation-overlay {
  width: 100%;
  height: 100%;
  top: 0;
  /* @noflip */ /*rtl:ignore*/
  left: 0;
}
[dir=rtl] .mdc-dialog__surface, .mdc-dialog__surface[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  text-align: right;
  /*rtl:end:ignore*/
}

@media screen and (forced-colors: active), (-ms-high-contrast: active) {
  .mdc-dialog__surface {
    outline: 2px solid windowText;
  }
}
.mdc-dialog__surface::before {
  position: absolute;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  border: 2px solid transparent;
  border-radius: inherit;
  content: "";
  pointer-events: none;
}
@media screen and (forced-colors: active) {
  .mdc-dialog__surface::before {
    border-color: CanvasText;
  }
}
@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {
  .mdc-dialog__surface::before {
    content: none;
  }
}

.mdc-dialog__title {
  display: block;
  margin-top: 0;
  /* @alternate */
  position: relative;
  flex-shrink: 0;
  box-sizing: border-box;
  margin: 0 0 1px;
  padding: 0 24px 9px;
}
.mdc-dialog__title::before {
  display: inline-block;
  width: 0;
  height: 40px;
  content: "";
  vertical-align: 0;
}
[dir=rtl] .mdc-dialog__title, .mdc-dialog__title[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  text-align: right;
  /*rtl:end:ignore*/
}

.mdc-dialog--scrollable .mdc-dialog__title {
  margin-bottom: 1px;
  padding-bottom: 15px;
}

.mdc-dialog--fullscreen .mdc-dialog__header {
  align-items: baseline;
  border-bottom: 1px solid transparent;
  display: inline-flex;
  justify-content: space-between;
  padding: 0 24px 9px;
  z-index: 1;
}
@media screen and (forced-colors: active) {
  .mdc-dialog--fullscreen .mdc-dialog__header {
    border-bottom-color: CanvasText;
  }
}
.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close {
  right: -12px;
}
.mdc-dialog--fullscreen .mdc-dialog__title {
  margin-bottom: 0;
  padding: 0;
  border-bottom: 0;
}
.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title {
  border-bottom: 0;
  margin-bottom: 0;
}
.mdc-dialog--fullscreen .mdc-dialog__close {
  top: 5px;
}
.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions {
  border-top: 1px solid transparent;
}
@media screen and (forced-colors: active) {
  .mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions {
    border-top-color: CanvasText;
  }
}

.mdc-dialog__content {
  flex-grow: 1;
  box-sizing: border-box;
  margin: 0;
  overflow: auto;
}
.mdc-dialog__content > :first-child {
  margin-top: 0;
}
.mdc-dialog__content > :last-child {
  margin-bottom: 0;
}

.mdc-dialog__title + .mdc-dialog__content,
.mdc-dialog__header + .mdc-dialog__content {
  padding-top: 0;
}

.mdc-dialog--scrollable .mdc-dialog__title + .mdc-dialog__content {
  padding-top: 8px;
  padding-bottom: 8px;
}

.mdc-dialog__content .mdc-deprecated-list:first-child:last-child {
  padding: 6px 0 0;
}

.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child {
  padding: 0;
}

.mdc-dialog__actions {
  display: flex;
  position: relative;
  flex-shrink: 0;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  box-sizing: border-box;
  min-height: 52px;
  margin: 0;
  padding: 8px;
  border-top: 1px solid transparent;
}
@media screen and (forced-colors: active) {
  .mdc-dialog__actions {
    border-top-color: CanvasText;
  }
}
.mdc-dialog--stacked .mdc-dialog__actions {
  flex-direction: column;
  align-items: flex-end;
}

.mdc-dialog__button {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 8px;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  max-width: 100%;
  /* @noflip */ /*rtl:ignore*/
  text-align: right;
}
[dir=rtl] .mdc-dialog__button, .mdc-dialog__button[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 8px;
  /*rtl:end:ignore*/
}

.mdc-dialog__button:first-child {
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
}
[dir=rtl] .mdc-dialog__button:first-child, .mdc-dialog__button:first-child[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  margin-left: 0;
  /* @noflip */ /*rtl:ignore*/
  margin-right: 0;
  /*rtl:end:ignore*/
}

[dir=rtl] .mdc-dialog__button, .mdc-dialog__button[dir=rtl] {
  /*rtl:begin:ignore*/
  /* @noflip */ /*rtl:ignore*/
  text-align: left;
  /*rtl:end:ignore*/
}

.mdc-dialog--stacked .mdc-dialog__button:not(:first-child) {
  margin-top: 12px;
}

.mdc-dialog--open,
.mdc-dialog--opening,
.mdc-dialog--closing {
  display: flex;
}

.mdc-dialog--opening .mdc-dialog__scrim {
  transition: opacity 150ms linear;
}
.mdc-dialog--opening .mdc-dialog__container {
  transition: opacity 75ms linear, transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-dialog--closing .mdc-dialog__scrim,
.mdc-dialog--closing .mdc-dialog__container {
  transition: opacity 75ms linear;
}
.mdc-dialog--closing .mdc-dialog__container {
  transform: none;
}

.mdc-dialog--open .mdc-dialog__scrim {
  opacity: 1;
}
.mdc-dialog--open .mdc-dialog__container {
  transform: none;
  opacity: 1;
}
.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim {
  opacity: 1;
  z-index: 1;
}
.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim {
  transition: opacity 75ms linear;
}
.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim {
  transition: opacity 150ms linear;
}

.mdc-dialog__surface-scrim {
  display: none;
  opacity: 0;
  position: absolute;
  width: 100%;
  height: 100%;
}
.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim, .mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim, .mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim {
  display: block;
}

.mdc-dialog-scroll-lock {
  overflow: hidden;
}

.mdc-dialog--no-content-padding .mdc-dialog__content {
  padding: 0;
}

.mdc-dialog--sheet .mdc-dialog__close {
  right: 12px;
  top: 9px;
  position: absolute;
  z-index: 1;
}

body {
  font-family: Roboto, sans-serif;
}

#login {
  background-color: #3497db;
}

.menu {
  position: relative;
  padding: 10px 20px 0;
  background-color: #146093;
  color: #fff;
  z-index: 100;
}
.menu p {
  margin-bottom: 0.5rem;
}
.menu .links {
  display: flex;
  flex-direction: row;
  justify-content: space-evenly;
}
.menu .links a {
  color: #fff;
  text-decoration: none;
  padding: 10px 20px;
}
.menu .links .btn {
  height: fit-content;
  padding: 6px 12px;
}
.menu .links .active {
  color: #fff;
  background: #397ba4;
  border-radius: 10px 10px 0 0;
  margin-bottom: 0px;
  box-shadow: 0px 1px 2px 0px rgba(5, 29, 59, 0.9019607843) inset;
}

.bg-pinkGradient {
  background: linear-gradient(to top, #ff3d60, #f52d4e);
}

.bg-greenGradient {
  background: linear-gradient(to top, #00a964, #02926e);
}

.workTimeUser {
  transition: background-color 1s;
}
.workTimeUser .container {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  gap: 20px;
}
.workTimeUser .container .date {
  line-height: 40px;
  font-size: 20px;
  color: #fff;
}

.my-card-top {
  padding: 16px;
  border-bottom: 1px solid;
  border-color: #dee2e6;
}
.my-card-top .mdc-touch-target-wrapper {
  margin: -12px 0;
}
.my-card-top h5, .my-card-top .h5 {
  font-size: 16px;
  font-weight: 500;
}

.mdc-card > .mdc-data-table {
  padding: 16px;
  border: none;
}

.mdc-data-table .mdc-data-table__row {
  height: 36px;
}
.mdc-data-table .mdc-data-table__pagination {
  min-height: 36px;
}
.mdc-data-table .mdc-data-table__header-row {
  height: 40px;
}
.mdc-data-table.reservation-table .mdc-data-table__row {
  height: 36px;
}
.mdc-data-table.reservation-table .mdc-data-table__pagination {
  min-height: 36px;
}
.mdc-data-table.reservation-table .mdc-data-table__header-row {
  height: 40px;
}
.mdc-data-table.reservation-table tr td:last-child {
  padding-right: 0px;
}
.mdc-data-table.reservation-table .mdc-data-table__header-cell, .mdc-data-table.reservation-table .mdc-data-table__cell {
  padding: 2px 12px 2px 12px;
  width: fit-content;
}
.mdc-data-table.reservation-table .reservation_name {
  white-space: normal;
}
.mdc-data-table.service-prices-table .mdc-data-table__row {
  height: 52px;
}
.mdc-data-table.service-prices-table .mdc-data-table__pagination {
  min-height: 52px;
}
.mdc-data-table.service-prices-table .mdc-data-table__header-row {
  height: 56px;
}
.mdc-data-table .icon-only {
  text-align: center;
  vertical-align: center;
  color: rgba(0, 0, 0, 0.87);
}
.mdc-data-table .icon-only i {
  display: block;
}
.mdc-data-table .wrap {
  white-space: normal;
}
.mdc-data-table .sticky-right {
  position: sticky;
  background: #ffffff;
  right: -1px;
}

.table-service-prices th {
  font-size: 15px;
}
.table-service-prices .material-symbols-outlined {
  font-size: 18px;
}

.table_condensed tr {
  height: 40px;
}

.mdc-button.mdc-button--icon-only {
  min-width: 36px;
}
.mdc-button.mdc-button--icon-only .mdc-button__icon {
  margin-right: 0px;
}
.mdc-button--green {
  background: #00a964 !important;
}
.mdc-button--red {
  background: #c92641 !important;
  color: #fff;
}

.btn-circle.btn-xl {
  width: 70px;
  height: 70px;
  padding: 10px 16px;
  border-radius: 35px;
  font-size: 24px;
  line-height: 1.33;
}

.btn-circle.btn-lg, .btn-group-lg > .btn-circle.btn {
  width: 40px;
  height: 40px;
  border-radius: 20px;
  font-size: 16px;
  line-height: 27px;
}

.lightblue-button,
.lightblue-outlined-button {
  --mdc-theme-primary: #3397db;
  --mdc-theme-on-primary: #fff;
  padding: 0 14px 0 14px;
  border-width: 2px;
}
.lightblue-button.mdc-button--icon-trailing,
.lightblue-outlined-button.mdc-button--icon-trailing {
  padding: 0 10px 0 14px;
}
.lightblue-button.mdc-button--icon-leading,
.lightblue-outlined-button.mdc-button--icon-leading {
  padding: 0 14px 0 10px;
}
.lightblue-button .mdc-button__ripple,
.lightblue-outlined-button .mdc-button__ripple {
  top: -2px;
  left: -2px;
  bottom: -2px;
  right: -2px;
  border-width: 2px;
}
.lightblue-button .mdc-button__touch,
.lightblue-outlined-button .mdc-button__touch {
  left: calc(-1 * 2px);
  width: calc(100% + 2 * 2px);
}
.lightblue-button:not(:disabled),
.lightblue-outlined-button:not(:disabled) {
  border-color: rgba(51, 152, 219, 0.5333333333);
}
.lightblue-button:not(:disabled):hover,
.lightblue-outlined-button:not(:disabled):hover {
  border-color: var(--mdc-theme-primary);
}
.lightblue-button:not(:disabled),
.lightblue-outlined-button:not(:disabled) {
  color: var(--mdc-theme-primary);
}
.lightblue-button:not(:disabled),
.lightblue-outlined-button:not(:disabled) {
  background-color: transparent;
}
.lightblue-button:not(:disabled):hover,
.lightblue-outlined-button:not(:disabled):hover {
  background-color: rgba(247, 251, 255, 0.2470588235);
}
.changePassword {
  border-radius: 0.375rem;
}
.changePassword .text {
  padding: 10px;
}
.changePassword .mb-4 {
  margin-bottom: 4px !important;
}

.btn-circle {
  width: 30px;
  height: 30px;
  padding: 6px 0px;
  border-radius: 15px;
  text-align: center;
  font-size: 12px;
  line-height: 1.42857;
}

.navigation-back {
  display: block;
  text-decoration: none;
  margin-top: 15px;
  margin-bottom: -10px;
}

.invalid-feedback {
  border: solid 1px #dc3545;
  padding: 5px 10px;
  margin-bottom: 15px;
  border-radius: 0.375rem;
}

.mdc-text-field {
  height: 40px;
}
.mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,
.mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,
.mdc-text-field:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing {
  border-color: #dee2e6;
}
.mdc-text-field .mdc-floating-label--float-above {
  transform: translateY(-29.25px) scale(1);
}
.mdc-text-field .mdc-floating-label--float-above {
  font-size: 0.75rem;
}
.mdc-text-field.mdc-notched-outline--upgraded .mdc-floating-label--float-above,
.mdc-text-field .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  transform: translateY(-26.75px) scale(0.75);
}
.mdc-text-field.mdc-notched-outline--upgraded .mdc-floating-label--float-above,
.mdc-text-field .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
  font-size: 1rem;
}
.mdc-text-field .mdc-floating-label--shake {
  animation: mdc-floating-label-shake-float-above-text-field-outlined-40px 250ms 1;
}
@keyframes mdc-floating-label-shake-float-above-text-field-outlined-40px {
  0% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-26.75px) scale(0.75);
  }
  33% {
    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(4% - 0%)) translateY(-26.75px) scale(0.75);
  }
  66% {
    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(-4% - 0%)) translateY(-26.75px) scale(0.75);
  }
  100% {
    /* @noflip */ /*rtl:ignore*/
    transform: translateX(calc(0 - 0%)) translateY(-26.75px) scale(0.75);
  }
}
.mdc-text-field select {
  appearance: auto;
}

.form-group .form-row:nth-child(n+2) {
  padding-top: 12px;
}
.form-group .choice_label {
  font-size: 12px;
  color: rgba(0, 0, 0, 0.6);
  display: block;
  padding-left: 16px;
}

textarea:focus,
input:focus {
  outline: none;
}

.form-control:focus {
  box-shadow: none;
}

.input-group.input-daterange {
  flex-wrap: nowrap;
}
.input-group.input-daterange .input-group-addon {
  min-width: 40px;
  padding-right: 16px;
  padding-left: 8px;
}

.mdc-text-field--textarea.mdc-text-field--outlined {
  height: fit-content;
  width: 100%;
}
.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input {
  resize: vertical;
  margin-bottom: 0px;
  height: 100px;
}

.mdc-fab {
  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
}
.mdc-fab:active {
  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
}

.datepicker-multidate {
  display: inline-block;
}

.datepicker {
  background-color: #fff;
  padding: 8px 16px;
  font-family: Roboto, sans-serif;
}
.datepicker.datepicker-inline {
  width: 256px;
}
.datepicker table {
  border-collapse: separate;
  border-spacing: 0 2px;
}
.datepicker table tr td, .datepicker table tr th {
  width: 32px;
  height: 32px;
}
.datepicker table tr td.today {
  background: radial-gradient(ellipse at center, #f7ca77 0%, #f7ca77 65%, #f7ca77 68%, transparent 72%, transparent 50%);
}
.datepicker table tr td.today.range, .datepicker table tr td.today.range-start, .datepicker table tr td.today.range-end {
  background: radial-gradient(ellipse at center, #f7ca77 0%, #f7ca77 65%, #f7ca77 68%, #eee 72%, #eee 50%);
}
.datepicker table tr td.selected {
  background: radial-gradient(ellipse at center, #146093 0%, #146093 65%, #146093 68%, transparent 72%, transparent 50%);
}
.datepicker table tr td.selected.range, .datepicker table tr td.selected.range-start, .datepicker table tr td.selected.range-end {
  background: radial-gradient(ellipse at center, #146093 0%, #146093 65%, #146093 68%, #eee 72%, #eee 50%);
}
.datepicker table tr td.range-start {
  background: radial-gradient(ellipse at center, #3397db 0%, #3397db 65%, #3397db 68%, transparent 72%, transparent 50%);
  border-radius: 50% 0% 0% 50%;
}
.datepicker table tr td.range-start.range, .datepicker table tr td.range-start.range-start, .datepicker table tr td.range-start.range-end {
  background: radial-gradient(ellipse at center, #3397db 0%, #3397db 65%, #3397db 68%, #eee 72%, #eee 50%);
}
.datepicker table tr td.range-end {
  background: radial-gradient(ellipse at center, #3397db 0%, #3397db 65%, #3397db 68%, transparent 72%, transparent 50%);
  border-radius: 0% 50% 50% 0%;
}
.datepicker table tr td.range-end.range, .datepicker table tr td.range-end.range-start, .datepicker table tr td.range-end.range-end {
  background: radial-gradient(ellipse at center, #3397db 0%, #3397db 65%, #3397db 68%, #eee 72%, #eee 50%);
}
.datepicker table tr td.range-start.range-end {
  border-radius: 50%;
}

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

.reservation-summary-table {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
}
.reservation-summary-table .js-res-dog, .reservation-summary-table .js-res-date {
  text-align: right;
}
.reservation-summary-table.info {
  grid-template-columns: 1fr 2fr;
}
.reservation-summary-table.prices {
  grid-template-columns: 1fr 1fr 1fr;
}
.reservation-summary-table.prices div:nth-child(3n), .reservation-summary-table.prices div:nth-child(3n+2) {
  text-align: right;
}
.reservation-summary-table.totalprices #reservation_form_discount {
  text-align: right;
}
.reservation-summary-table.totalprices div:nth-last-child(-n+2) {
  font-weight: 500;
  border-top: 1px solid #dee2e6;
  min-height: 33px;
  margin-top: 8px;
  padding-top: 8px;
}
.reservation-summary-table.payment > div:nth-last-child(-n+2) {
  font-weight: 500;
  border-top: 1px solid #dee2e6;
  min-height: 33px;
  margin-top: 8px;
  padding-top: 8px;
}

.reservation-preview .reservation-summary-top {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
}
.reservation-preview .reservation-summary-top .price {
  text-align: right;
}
.reservation-preview .reservation-summary-top .service .duration {
  color: #136093;
}
.reservation-preview .reservation-status .top {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  flex-wrap: wrap;
}
.reservation-preview .reservation-status .top .text {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  font-size: large;
}
.reservation-preview .reservation-status .reservation-status-desc {
  padding: 8px 32px;
}
.reservation-preview .reservationDetailActions {
  display: flex;
  flex-direction: row;
  gap: 12px;
  justify-content: flex-end;
}

.inline-icon {
  vertical-align: text-top;
  font-size: 16px;
}

.material-icons.icon-confirmed {
  color: #00a964;
}
.material-icons.icon-inprogress {
  color: #3397db;
}
.material-icons.icon-closed {
  color: #ababab;
}
.material-icons.icon-cancel {
  color: #f52d4e;
}
.material-icons.icon-pending {
  color: #146093;
}

.summary_dogs td {
  padding: 8px 4px;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQSxnQkFBZ0I7QUNxQ2Q7RUFPTTtBRHpDUjs7QUV5REU7RUFHTTtFQUNBO0VBQ0E7RUNDRjtFQ1pGO0VEd0JBO0VERkk7RUNWRjtFQ1pGO0VEd0JBO0FIOURKOztBS2lDRTtFQ21RRTtFQUNBO0VEbEpBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7QUxoSko7QU1xU0U7RUgxUEU7RUFBQTtFR2dRSTtFRm5SSjtFRXFSSTtBTnRTUjtBSzRJRTtFQUVJO0VBQ0E7QUwzSU47QUtnSkU7RUFFSTtBTC9JTjtBS21KRTtFQUVJO0FMbEpOO0FLc0pFO0VBRUk7RUFDQTtBTHJKTjtBS0RJO0VESUE7RURtQkE7RUNuQkE7RURtQkE7RUU0SUY7RUFDQTtFQUNBO0FMM0pGO0FPZU07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQVlI7O0FLWkk7RUFLSTtBTFdSO0FLUEk7RUFFSTtBTFFSO0FRY0k7RUhqQkU7SUlQRjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUxoQkE7SUtrQkE7SUxsQkE7SUtvQkE7SUFDQSx3QkF6QjBCO0lBMEIxQix1QkFwQjRCO0lKcUJwQjtFTGNWO0FBQ0Y7QVFISTtFSGpCRTtJSU9BO0VUaUJKO0FBQ0Y7QVFSSTtFQ1BBO0lBQ0U7SUFDQTtJQUNBLGtCQWhFZ0I7SUFpRWhCO0lBQ0E7SUFDQTtJTGxDRjtJS29DRTtJTHBDRjtJS3NDRTtJQUNBLHdCQS9CZ0I7SUFnQ2hCLHVCQWhDZ0I7RVRrRHBCO0FBQ0Y7QVF4Qkk7RUNQQTtJQWVJO0VUb0JOO0FBQ0Y7QUtuQ0k7RUp0QkE7RUFDQTtFQUNBLFlBdENLO0VBa0RIO0VBQ0E7RUFDQTtBRGlETjs7QUt0Q0U7RURsQ0U7RURtQkE7RUNuQkE7RURtQkE7QUg0REo7QU8xRE07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQK0RSOztBSy9DRTtFQXlJQTtBTHRGRjs7QUs3Q0U7RUpKRSxlQUhzQjtFQUl0QixrQkFKc0I7QUR5RDFCOztBS3RDRTtFS21ORTtFQUNBO0VQdlFFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0FId0ZKOztBV3JIRTtFQ21kRTtBWjFWSjs7QWFwSEU7RVJxTUU7RU95UUE7QVpyVko7QVl5Vkk7RUFJSTtBWjFWUjtBWThWSTtFQUlJO0FaL1ZSOztBYy9IRTtFVHFNRTtFT3lRQTtBWjFVSjtBWThVSTtFQUlJO0FaL1VSO0FZbVZJO0VBSUk7QVpwVlI7O0FlN0lFO0VBVUU7RUFNQTtBZmtJSjtBZS9IRTtFQUVJO0VBQ0E7QWZnSU47O0FnQnVHRTtFQUNFO0lBQ0UsdURDM1IyQjtJRGdTM0I7RWhCeEdKO0VnQjJHRTtJQUNFO0VoQnpHSjtBQUNGO0FnQjZHRTtFQUNFO0lBQ0U7SUFDQTtFaEIzR0o7RWdCOEdFO0lBQ0U7RWhCNUdKO0FBQ0Y7QWdCK0dFO0VBQ0U7SUFDRTtJQUNBO0VoQjdHSjtFZ0JnSEU7SUFDRTtFaEI5R0o7QUFDRjtBa0JsTUU7RUYrRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFHRTtBaEJtSE47QWdCL0dFOztFQUdJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCZ0hOO0FnQjVHRTtFQUdJO0ViNUVBO0VDWkY7RUR3QkE7QUgrS0o7QWdCbEdFO0ViekZJO0VDWkY7RUR3QkE7QUhvTEo7QWdCM0ZJO0VBRUk7QWhCNEZSO0FnQnhGSTtFQUVJO0VacEhKO0VZc0hJO0VBQ0E7RUFDQTtBaEJ5RlI7QWdCbkZJO0VBRUk7RVpoSUo7RVlrSUk7QWhCb0ZSO0FnQjlFSTtFQUVJO0FoQitFUjtBZ0J2RUk7RUFFSTtFQUtBO0FoQm9FUjtBZ0J0REU7O0VBR0k7RVoxS0Y7RVk0S0U7RUFDQTtFQUNBO0FoQnVETjtBZ0JsREk7RUFFSTtFQUNBO0FoQm1EUjs7QWtCelBFO0VBRUk7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJ5UE47O0FtQjVQRTtFaEJlSTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0FIeVBKO0FZc0NFO0VUM1NJO0VDWkY7RUR3QkE7QUg4UEo7QVlvREU7RVQ5VEk7RUNaRjtFRHdCQTtBSG1RSjtBWWtSSTtFVGppQkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0FIOFFKO0FvQmxNSTs7RWpCeEZFO0VDWkY7RUR3QkE7QUhvUko7QW9CaU1FO0VqQmplSTtFQ1pGO0VEd0JBO0FIeVJKO0FvQjRMRTtFQTlRSTtFakJuTkE7RUNaRjtFRHdCQTtBSCtSSjtBb0I5RE07RUFFSTtBcEIrRFY7QW9CMURRO0VBRUkseUJBaFJPO0VqQjBCYjtFQ1pGO0VEd0JBO0FId1NKO0FvQm5ESTtFakJyUEE7QUgyU0o7QVlpSEU7RVR4YUk7RUNaRjtFRHdCQTtBSGdUSjs7QW1CclVFO0VoQlNJO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7QUh3VUo7QVk5SkU7RVR0TEk7RUNaRjtFRHdCQTtBSDZVSjtBWXZJRTtFVGxOSTtFQ1pGO0VEd0JBO0FIa1ZKO0FZbkRFO0VUM1NJO0VDWkY7RUR3QkE7QUh1Vko7QVlyQ0U7RVQ5VEk7RUNaRjtFRHdCQTtBSDRWSjtBWXlMSTtFVGppQkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0FIdVdKO0FvQjNSSTs7RWpCeEZFO0VDWkY7RUR3QkE7QUg2V0o7QW9Cd0dFO0VqQmplSTtFQ1pGO0VEd0JBO0FIa1hKO0FvQm1HRTtFQTlRSTtFakJuTkE7RUNaRjtFRHdCQTtBSHdYSjtBb0J2Sk07RUFFSTtBcEJ3SlY7QW9CbkpRO0VBRUkseUJBaFJPO0VqQjBCYjtFQ1pGO0VEd0JBO0FIaVlKO0FvQjVJSTtFakJyUEE7QUhvWUo7QVl3QkU7RVR4YUk7RUNaRjtFRHdCQTtBSHlZSjs7QW1CeFpFO0VoQkdJO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFBQTtFQVpFO0VDWkY7RUR3QkE7QUhxYUo7QVkzUEU7RVR0TEk7RUNaRjtFRHdCQTtBSDBhSjtBWXBPRTtFVGxOSTtFQ1pGO0VEd0JBO0FIK2FKO0FZaEpFO0VUM1NJO0VDWkY7RUR3QkE7QUhvYko7QVlsSUU7RVQ5VEk7RUNaRjtFRHdCQTtBSHliSjtBWTRGSTtFVGppQkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0FIb2NKO0FvQnhYSTs7RWpCeEZFO0VDWkY7RUR3QkE7QUgwY0o7QW9CV0U7RWpCamVJO0VDWkY7RUR3QkE7QUgrY0o7QW9CTUU7RUE5UUk7RWpCbk5BO0VDWkY7RUR3QkE7QUhxZEo7QW9CcFBNO0VBRUk7QXBCcVBWO0FvQmhQUTtFQUVJLHlCQWhSTztFakIwQmI7RUNaRjtFRHdCQTtBSDhkSjtBb0J6T0k7RWpCclBBO0FIaWVKO0FZckVFO0VUeGFJO0VDWkY7RUR3QkE7QUhzZUo7QW9CL0VFO0VqQnZaRTtFQVpFO0VDWkY7RUR3QkE7QUg0ZUo7QVkySU07RVR2bkJGO0VBWkU7RUNaRjtFRHdCQTtBSGtmSjtBb0JwRkU7RWpCOVpFO0VBWkU7RUNaRjtFRHdCQTtBSHdmSjtBWXVKTTtFVC9vQkY7RUFaRTtFQ1pGO0VEd0JBO0FIOGZKO0FtQnZnQkU7RWhCSEk7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFU3NiQTtFVGxjRTtFQ1pGO0VEd0JBO0FIeWhCSjtBWTFQRTtFVDNTSTtFQ1pGO0VEd0JBO0FIOGhCSjtBWTVPRTtFVDlUSTtFQ1pGO0VEd0JBO0FIbWlCSjtBWWRJO0VUamlCRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7QUg4aUJKO0FvQmxlSTs7RWpCeEZFO0VDWkY7RUR3QkE7QUhvakJKO0FvQi9GRTtFakJqZUk7RUNaRjtFRHdCQTtBSHlqQko7QW9CcEdFO0VBOVFJO0VqQm5OQTtFQ1pGO0VEd0JBO0FIK2pCSjtBb0I5Vk07RUFFSTtBcEIrVlY7QW9CMVZRO0VBRUkseUJBaFJPO0VqQjBCYjtFQ1pGO0VEd0JBO0FId2tCSjtBb0JuVkk7RWpCclBBO0FIMmtCSjtBWS9LRTtFVHhhSTtFQ1pGO0VEd0JBO0FIZ2xCSjtBcUI5Z0JFO0VsQjlFSTtFQ1pGO0VEd0JBO0FIcWxCSjtBcUJyZkU7RWxCNUdJO0VDWkY7RUR3QkE7QUgwbEJKO0FZaEtJO0VBSUk7QVorSlI7QVkzSkk7RUFJSTtBWjBKUjtBcUIzY0k7RWxCckpBO0VBQUE7RUFBQTtFQUFBO0VBWkU7RUNaRjtFRHdCQTtBSHltQko7QXFCM2NJO0VsQjFLRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtBSGluQko7O0FtQnZrQkk7OztFZjdEQTtFRG1CQTtFQ25CQTtFRG1CQTtBSDBuQko7QU94bkJNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUDZuQlI7O0FtQmpsQkk7OztFZnBFQTtFRG1CQTtFQ25CQTtFRG1CQTtBSDJvQko7QU96b0JNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUDhvQlI7O0FzQjNyQkU7RVprU0U7RUFDQTtFUHZRRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RW1CaENFO0VsQmFGO0VrQlhFO0VsQldGO0VrQlRFO0VsQlNGO0VrQlBFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFHQTtFQWlCQTtBdEJ3ckJOO0FPeHJCTTtFQUNFO0VIdEJKO0VrQlFJO0VsQlJKO0VrQlVJO0VsQlZKO0VrQllJO0VsQlpKO0VrQmNJO0VsQmRKO0VrQmdCSTtFZlFBO0FQbXNCUjs7QXNCL3JCRTtFQUVJO0F0QmlzQk47O0FzQjVyQkk7RWxCbkNBO0VrQjBMQTtFbEIxTEE7RWtCNExBO0VBQ0E7QXRCMGlCSjtBT2x0Qk07RUFDRTtFQUVBO0FQbXRCUjtBc0Juc0JNO0VsQnhDRjtFa0J3TUE7RWxCeE1BO0VrQjBNQTtBdEJ1aUJKOztBc0JybkJFO0VBY007QXRCMm1CUjs7QXNCbG1CRTtFQUVJO0F0Qm9tQk47O0FzQnhxQkk7RUFDRTtJbEJsRkY7SWtCb0ZJO0V0QjJxQk47RXNCdnFCSTtJQUNFO0lsQnpGSjtJa0IyRkk7RXRCeXFCTjtFc0JycUJJO0lBQ0U7SWxCaEdKO0lrQnVHSTtFdEJrcUJOO0VzQjlwQkk7SWxCM0dGO0lrQjZHSTtFdEJncUJOO0FBQ0Y7QXVCbnlCRTtFQTBVRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RW5CN1RBO0VtQitUQTtFQUNBO0F2QjRkSjtBT3Z3Qk07RUFDRTtFSHRCSjtFbUJvVUU7RWhCNVNFO0FQMHdCUjs7QXVCcHpCSTtFQUlJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXZCb3pCUjtBdUJoekJJO0VuQk1BO0VEbUJBO0VDbkJBO0VEbUJBO0VvQmpCSSxXQ2pDUTtBeEJnMUJoQjtBTzV4Qk07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQaXlCUjs7QXVCbnpCSTtFbkJOQTtFRG1CQTtFQ25CQTtFRG1CQTtFb0JMSTtBdkJtekJSO0FPNXlCTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVBpekJSOztBdUJ2ekJJO0VBRUk7RUFDQTtFQUNBO0F2Qnl6QlI7QXVCcnpCSTtFQUVJO0VBQ0E7RUFDQTtBdkJzekJSO0F1Qmx6Qkk7RUFFSTtBdkJtekJSO0F1Qi95Qkk7RUFFSTtBdkJnekJSOztBdUIxeUJJO0VuQmhEQTtFRG1CQTtFQ25CQTtFRG1CQTtFb0JpQ0k7QXZCOHlCUjtBTzcwQk07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQazFCUjs7QXVCaHpCSTtFQUVJO0F2Qmt6QlI7O0F5QmpzQkU7RXRCMUpFO0FIKzFCSjtBMEIxWEU7RXZCcmVFO0FIazJCSjtBMEI3WEU7RXZCamZJO0VDWkY7RUR3QkE7QUh1MkJKO0EwQnZaRTtFdkI1ZEk7RUNaRjtFRHdCQTtBSDQyQko7QTBCdllFOztFdkJyZUU7QUhnM0JKO0EwQjNZRTs7RXZCcmVFO0FIbzNCSjtBMEJwYUU7O0V2QmhkRTtBSHczQko7QTBCbG1CRTtFdkJsU0k7RUNaRjtFRHdCQTtBSDYzQko7QTBCMWhCRTtFdkJuV0U7RUFBQTtFQUFBO0VBQUE7QUhtNEJKO0EwQm5sQkU7RXZCaFRFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUgwNEJKO0FRdDNCSTtFa0JpZEY7O0l2QnJlRTtFSCs0QkY7RTBCMWFBOztJdkJyZUU7RUhtNUJGO0UwQm5jQTs7SXZCaGRFO0VIdTVCRjtBQUNGOztBeUJuN0JFO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQSxXQ3RCTTtFRHVCTixZQ3ZCTTtFRHdCTjtFQUNBO0VBQ0E7QXpCcTdCTjtBeUJqN0JJO0VBRUk7RUFDQTtFQUNBO0VBQ0EsV0NuQ0k7RURvQ0osWUNwQ0k7QTFCczlCWjtBeUIvNkJNO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBSUE7QXpCNjZCVjtBeUJ4NkJJO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBSUE7QXpCczZCUjtBeUJsNkJJO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFJQTtBekJnNkJSO0F5QjU1Qkk7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCNjVCUjtBeUJ6NUJJO0V4QnJDQSxlQUhzQjtFQUl0QixrQkFKc0I7RUFjcEIsaUJBTndCO0VBT3hCLGdCQVB3QjtBRCs3QjlCO0EwQjNxQkU7RXZCaFRFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUhrK0JKO0F5Qno1Qk07RWhCakZGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFTGhCQTtFS2tCQTtFTGxCQTtFS29CQTtFQUNBLFlBM0J3QjtFQTRCeEIsV0F0QjBCO0FUbWdDOUI7QVFoK0JJO0VpQnlERTtJaEJuRUE7RVQ4K0JKO0FBQ0Y7QVM1K0JJO0VBQ0U7RUFDQTtFQUNBLGtCQWhFZ0I7RUFpRWhCO0VBQ0E7RUFDQTtFTGxDRjtFS29DRTtFTHBDRjtFS3NDRTtFQUNBLHdCQS9CZ0I7RUFnQ2hCLHVCQWhDZ0I7QVQ4Z0N0QjtBUW4vQkk7RUNQQTtJQWVJO0VUKytCTjtBQUNGOztBeUJuN0JJOztFQUVJO0F6QnM3QlI7QXlCbjdCTTs7RUFFSTtBekJxN0JWO0F5Qmo3Qk07O0VBRUk7QXpCbTdCVjs7QXlCNzZCRTtFQUVJO0VBQ0E7QXpCKzZCTjs7QXlCejZCTTtFQUVJO0VBSUE7QXpCdzZCVjs7QXlCaDZCSTs7RUFFSTtBekJtNkJSOztBeUI3NUJJO0VBRUk7RUFDQTtFQUlBO0F6QjQ1QlI7O0F5QnYxQkU7RVQvS0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFHRTtBaEJ1Z0NOO0FnQm5nQ0U7O0VBR0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJvZ0NOO0FnQmhnQ0U7RUFHSTtFYjVFQTtFQ1pGO0VEd0JBO0FIbWtDSjtBZ0J0L0JFO0ViekZJO0VDWkY7RUR3QkE7QUh3a0NKO0FnQi8rQkk7RUFFSTtBaEJnL0JSO0FnQjUrQkk7RUFFSTtFWnBISjtFWXNISTtFQUNBO0VBQ0E7QWhCNitCUjtBZ0J2K0JJO0VBRUk7RVpoSUo7RVlrSUk7QWhCdytCUjtBZ0JsK0JJO0VBRUk7QWhCbStCUjtBZ0IzOUJJO0VBRUk7RUFLQTtBaEJ3OUJSO0FnQjk2QkU7O0VBR0k7RVp0TUY7RVl3TUU7RUFDQSxXQVpLO0VBYUwsWUFiSztBaEI0N0JYO0FnQjE2Qkk7O0VBR0k7RVpsTko7RVlvTkk7RUFDQTtFQUNBO0FoQjI2QlI7QWdCdjZCSTtFQUVJO0VBQ0E7QWhCdzZCUjtBb0J0aUNJO0VqQnhGRTtFQ1pGO0VEd0JBO0FIdW5DSjtBb0JscUJFO0VqQmplSTtFQ1pGO0VEd0JBO0FING5DSjtBb0J2cUJFO0VBOVFJO0VqQm5OQTtFQ1pGO0VEd0JBO0FIa29DSjtBb0JqNkJNO0VBRUk7QXBCazZCVjtBb0I3NUJRO0VBRUkseUJBaFJPO0VqQjBCYjtFQ1pGO0VEd0JBO0FIMm9DSjtBb0J0NUJJO0VqQnJQQTtBSDhvQ0o7QXlCNzZCTTtFQUVJO0F6Qjg2QlY7O0F5Qng2QkU7RVRuQkU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0FoQjY3Qko7O0EyQnZ1Q0U7Ozs7RUFBQTtBQ0RGOztFQVNJO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFHRjtFQUNBO0VBTUE7RUFDQTtFQUNBO0VBT0E7RUMyT0kseUJBTEk7RURwT1I7RUFDQTtFQUtBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUVBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFNQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7RUFDQTtBNUIrdUNGOztBOEIvMUNJO0VGc0hBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUdFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUdGO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7QTVCK3VDSjs7QStCdjVDQTs7O0VBR0U7QS9CMDVDRjs7QStCMzRDSTtFQU5KO0lBT007RS9CKzRDSjtBQUNGOztBK0JsNENBO0VBQ0U7RUFDQTtFRjZPSSxtQ0FMSTtFRXRPUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0JxNENGOztBK0I1M0NBO0VBQ0U7RUFDQSxjQ21uQjRCO0VEbG5CNUI7RUFDQTtFQUNBLGFDeW5CNEI7QWhDc3dCOUI7O0ErQnIzQ0E7RUFDRTtFQUNBLHFCQ3dqQjRCO0VEcmpCNUIsZ0JDd2pCNEI7RUR2akI1QixnQkN3akI0QjtFRHZqQjVCO0EvQnMzQ0Y7O0ErQm4zQ0E7RUZ1TVE7QTdCZ3JDUjtBNkI1MENJO0VFM0NKO0lGOE1RO0U3QjZxQ047QUFDRjs7QStCdjNDQTtFRmtNUTtBN0J5ckNSO0E2QnIxQ0k7RUV0Q0o7SUZ5TVE7RTdCc3JDTjtBQUNGOztBK0IzM0NBO0VGNkxRO0E3QmtzQ1I7QTZCOTFDSTtFRWpDSjtJRm9NUTtFN0IrckNOO0FBQ0Y7O0ErQi8zQ0E7RUZ3TFE7QTdCMnNDUjtBNkJ2MkNJO0VFNUJKO0lGK0xRO0U3QndzQ047QUFDRjs7QStCbjRDQTtFRitLTSxrQkFMSTtBN0I2dENWOztBK0JsNENBO0VGMEtNLGVBTEk7QTdCaXVDVjs7QStCMzNDQTtFQUNFO0VBQ0EsbUJDd1YwQjtBaENzaUM1Qjs7QStCcDNDQTtFQUNFO0VBQ0E7RUFDQTtBL0J1M0NGOztBK0JqM0NBO0VBQ0U7RUFDQTtFQUNBO0EvQm8zQ0Y7O0ErQjkyQ0E7O0VBRUU7QS9CaTNDRjs7QStCOTJDQTs7O0VBR0U7RUFDQTtBL0JpM0NGOztBK0I5MkNBOzs7O0VBSUU7QS9CaTNDRjs7QStCOTJDQTtFQUNFLGdCQzZiNEI7QWhDbzdCOUI7O0ErQjUyQ0E7RUFDRTtFQUNBO0EvQisyQ0Y7O0ErQnoyQ0E7RUFDRTtBL0I0MkNGOztBK0JwMkNBOztFQUVFLG1CQ3NhNEI7QWhDaThCOUI7O0ErQi8xQ0E7RUY2RU0sa0JBTEk7QTdCMnhDVjs7QStCNTFDQTtFQUNFLGlCQ3FmNEI7RURwZjVCO0VBQ0E7QS9CKzFDRjs7QStCdDFDQTs7RUFFRTtFRndESSxpQkFMSTtFRWpEUjtFQUNBO0EvQnkxQ0Y7O0ErQnQxQ0E7RUFBTTtBL0IwMUNOOztBK0J6MUNBO0VBQU07QS9CNjFDTjs7QStCeDFDQTtFQUNFO0VBQ0EsMEJDZ053QztBaEMyb0MxQztBK0J6MUNFO0VBQ0U7QS9CMjFDSjs7QStCaDFDRTtFQUVFO0VBQ0E7QS9CazFDSjs7QStCMzBDQTs7OztFQUlFLHFDQ2dWNEI7RUhsVXhCLGNBTEk7QTdCczBDVjs7QStCdjBDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VGRUksa0JBTEk7QTdCODBDVjtBK0J0MENFO0VGSEksa0JBTEk7RUVVTjtFQUNBO0EvQncwQ0o7O0ErQnAwQ0E7RUZWTSxrQkFMSTtFRWlCUjtFQUNBO0EvQnUwQ0Y7QStCcDBDRTtFQUNFO0EvQnMwQ0o7O0ErQmwwQ0E7RUFDRTtFRnRCSSxrQkFMSTtFRTZCUix3QkN1NUNrQztFRHQ1Q2xDLHNDQ3U1Q2tDO0VDNXJEaEM7QWpDMm1ESjtBK0JuMENFO0VBQ0U7RUY3QkUsY0FMSTtBN0J3MkNWOztBK0IzekNBO0VBQ0U7QS9COHpDRjs7QStCeHpDQTs7RUFFRTtBL0IyekNGOztBK0JuekNBO0VBQ0U7RUFDQTtBL0JzekNGOztBK0JuekNBO0VBQ0UsbUJDNFg0QjtFRDNYNUIsc0JDMlg0QjtFRDFYNUIsZ0NDNFo0QjtFRDNaNUI7QS9Cc3pDRjs7QStCL3lDQTtFQUVFO0VBQ0E7QS9CaXpDRjs7QStCOXlDQTs7Ozs7O0VBTUU7RUFDQTtFQUNBO0EvQml6Q0Y7O0ErQnp5Q0E7RUFDRTtBL0I0eUNGOztBK0J0eUNBO0VBRUU7QS9Cd3lDRjs7QStCaHlDQTtFQUNFO0EvQm15Q0Y7O0ErQjl4Q0E7Ozs7O0VBS0U7RUFDQTtFRjVISSxrQkFMSTtFRW1JUjtBL0JpeUNGOztBK0I3eENBOztFQUVFO0EvQmd5Q0Y7O0ErQjN4Q0E7RUFDRTtBL0I4eENGOztBK0IzeENBO0VBR0U7QS9CNHhDRjtBK0J6eENFO0VBQ0U7QS9CMnhDSjs7QStCcHhDQTtFQUNFO0EvQnV4Q0Y7O0ErQi93Q0E7Ozs7RUFJRTtBL0JreENGO0ErQi93Q0k7Ozs7RUFDRTtBL0JveENOOztBK0I3d0NBO0VBQ0U7RUFDQTtBL0JneENGOztBK0Izd0NBO0VBQ0U7QS9COHdDRjs7QStCcHdDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0EvQnV3Q0Y7O0ErQi92Q0E7RUFDRTtFQUNBO0VBQ0E7RUFDQSxxQkNtTjRCO0VIcGF0QjtFRW9OTjtBL0Jpd0NGO0E2QmpuREk7RUV5V0o7SUZ0TVE7RTdCazlDTjtBQUNGO0ErQnB3Q0U7RUFDRTtBL0Jzd0NKOztBK0IvdkNBOzs7Ozs7O0VBT0U7QS9Ca3dDRjs7QStCL3ZDQTtFQUNFO0EvQmt3Q0Y7O0ErQnp2Q0E7RUFDRTtFQUNBO0EvQjR2Q0Y7O0ErQnB2Q0E7Ozs7Ozs7Q0FBQTtBQVdBO0VBQ0U7QS9Cb3ZDRjs7QStCL3VDQTtFQUNFO0EvQmt2Q0Y7O0ErQjN1Q0E7RUFDRTtFQUNBO0EvQjh1Q0Y7O0ErQnp1Q0E7RUFDRTtBL0I0dUNGOztBK0J2dUNBO0VBQ0U7QS9CMHVDRjs7QStCbnVDQTtFQUNFO0VBQ0E7QS9Cc3VDRjs7QStCOXRDQTtFQUNFO0EvQml1Q0Y7O0ErQnp0Q0E7RUFDRTtBL0I0dENGOztBa0NqeURBO0VMbVFNLGtCQUxJO0VLNVBSLGdCRndvQjRCO0FoQzRwQzlCOztBa0MveERFO0VMZ1FNO0VLNVBKLGdCRnluQmtCO0VFeG5CbEIsZ0JGd21CMEI7QWhDd3JDOUI7QTZCanNESTtFS3BHRjtJTHVRTTtFN0JraUROO0FBQ0Y7O0FrQzF5REU7RUxnUU07RUs1UEosZ0JGeW5Ca0I7RUV4bkJsQixnQkZ3bUIwQjtBaENtc0M5QjtBNkI1c0RJO0VLcEdGO0lMdVFNO0U3QjZpRE47QUFDRjs7QWtDcnpERTtFTGdRTTtFSzVQSixnQkZ5bkJrQjtFRXhuQmxCLGdCRndtQjBCO0FoQzhzQzlCO0E2QnZ0REk7RUtwR0Y7SUx1UU07RTdCd2pETjtBQUNGOztBa0NoMERFO0VMZ1FNO0VLNVBKLGdCRnluQmtCO0VFeG5CbEIsZ0JGd21CMEI7QWhDeXRDOUI7QTZCbHVESTtFS3BHRjtJTHVRTTtFN0Jta0ROO0FBQ0Y7O0FrQzMwREU7RUxnUU07RUs1UEosZ0JGeW5Ca0I7RUV4bkJsQixnQkZ3bUIwQjtBaENvdUM5QjtBNkI3dURJO0VLcEdGO0lMdVFNO0U3QjhrRE47QUFDRjs7QWtDdDFERTtFTGdRTTtFSzVQSixnQkZ5bkJrQjtFRXhuQmxCLGdCRndtQjBCO0FoQyt1QzlCO0E2Qnh2REk7RUtwR0Y7SUx1UU07RTdCeWxETjtBQUNGOztBa0N6MERBO0VDdkRFO0VBQ0E7QW5DbzRERjs7QWtDejBEQTtFQzVERTtFQUNBO0FuQ3k0REY7O0FrQzMwREE7RUFDRTtBbEM4MERGO0FrQzUwREU7RUFDRSxvQkZzb0IwQjtBaEN3c0M5Qjs7QWtDcDBEQTtFTDhNTSxrQkFMSTtFS3ZNUjtBbEN1MERGOztBa0NuMERBO0VBQ0UsbUJGaVVPO0VIMUhILGtCQUxJO0E3QnFvRFY7QWtDcDBERTtFQUNFO0FsQ3MwREo7O0FrQ2wwREE7RUFDRTtFQUNBLG1CRnVUTztFSDFISCxrQkFMSTtFS3RMUixjRnRGUztBaEMyNURYO0FrQ24wREU7RUFDRTtBbENxMERKOztBb0NyNkRBO0VDSUU7RUFHQTtBckNtNkRGOztBb0NwNkRBO0VBQ0UsZ0JKNmpEa0M7RUk1akRsQyxtQ0o2akRrQztFSTVqRGxDO0VIR0U7RUlSRjtFQUdBO0FyQzQ2REY7O0FvQzk1REE7RUFFRTtBcENnNkRGOztBb0M3NURBO0VBQ0U7RUFDQTtBcENnNkRGOztBb0M3NURBO0VQeVBNLGtCQUxJO0VPbFBSLGdDSmdqRGtDO0FoQ2dYcEM7O0FzQ2w4REU7Ozs7Ozs7RUNIQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdkMrOERGOztBd0N6NURJO0VGNUNFO0lBQ0UsZ0JOa2VlO0VoQ3UrQ3JCO0FBQ0Y7QXdDLzVESTtFRjVDRTtJQUNFLGdCTmtlZTtFaEM0K0NyQjtBQUNGO0F3Q3A2REk7RUY1Q0U7SUFDRSxnQk5rZWU7RWhDaS9DckI7QUFDRjtBd0N6NkRJO0VGNUNFO0lBQ0UsaUJOa2VlO0VoQ3MvQ3JCO0FBQ0Y7QXdDOTZESTtFRjVDRTtJQUNFLGlCTmtlZTtFaEMyL0NyQjtBQUNGO0F5QzkrREE7RUFFSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QXpDby9ESjs7QXlDLytERTtFQ05BO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0ExQ3cvREY7QXlDdC9ESTtFQ09GO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUNrL0RGOztBMENuOERNO0VBQ0U7QTFDczhEUjs7QTBDbjhETTtFQXBDSjtFQUNBO0ExQzIrREY7O0EwQzc5REU7RUFDRTtFQUNBO0ExQ2crREo7O0EwQ2wrREU7RUFDRTtFQUNBO0ExQ3ErREo7O0EwQ3YrREU7RUFDRTtFQUNBO0ExQzArREo7O0EwQzUrREU7RUFDRTtFQUNBO0ExQysrREo7O0EwQ2ovREU7RUFDRTtFQUNBO0ExQ28vREo7O0EwQ3QvREU7RUFDRTtFQUNBO0ExQ3kvREo7O0EwQzE5RE07RUFoREo7RUFDQTtBMUM4Z0VGOztBMEN6OURVO0VBaEVOO0VBQ0E7QTFDNmhFSjs7QTBDOTlEVTtFQWhFTjtFQUNBO0ExQ2tpRUo7O0EwQ24rRFU7RUFoRU47RUFDQTtBMUN1aUVKOztBMEN4K0RVO0VBaEVOO0VBQ0E7QTFDNGlFSjs7QTBDNytEVTtFQWhFTjtFQUNBO0ExQ2lqRUo7O0EwQ2wvRFU7RUFoRU47RUFDQTtBMUNzakVKOztBMEN2L0RVO0VBaEVOO0VBQ0E7QTFDMmpFSjs7QTBDNS9EVTtFQWhFTjtFQUNBO0ExQ2drRUo7O0EwQ2pnRVU7RUFoRU47RUFDQTtBMUNxa0VKOztBMEN0Z0VVO0VBaEVOO0VBQ0E7QTFDMGtFSjs7QTBDM2dFVTtFQWhFTjtFQUNBO0ExQytrRUo7O0EwQ2hoRVU7RUFoRU47RUFDQTtBMUNvbEVKOztBMEM3Z0VZO0VBeERWO0ExQ3lrRUY7O0EwQ2poRVk7RUF4RFY7QTFDNmtFRjs7QTBDcmhFWTtFQXhEVjtBMUNpbEVGOztBMEN6aEVZO0VBeERWO0ExQ3FsRUY7O0EwQzdoRVk7RUF4RFY7QTFDeWxFRjs7QTBDamlFWTtFQXhEVjtBMUM2bEVGOztBMENyaUVZO0VBeERWO0ExQ2ltRUY7O0EwQ3ppRVk7RUF4RFY7QTFDcW1FRjs7QTBDN2lFWTtFQXhEVjtBMUN5bUVGOztBMENqakVZO0VBeERWO0ExQzZtRUY7O0EwQ3JqRVk7RUF4RFY7QTFDaW5FRjs7QTBDOWlFUTs7RUFFRTtBMUNpakVWOztBMEM5aUVROztFQUVFO0ExQ2lqRVY7O0EwQ3hqRVE7O0VBRUU7QTFDMmpFVjs7QTBDeGpFUTs7RUFFRTtBMUMyakVWOztBMENsa0VROztFQUVFO0ExQ3FrRVY7O0EwQ2xrRVE7O0VBRUU7QTFDcWtFVjs7QTBDNWtFUTs7RUFFRTtBMUMra0VWOztBMEM1a0VROztFQUVFO0ExQytrRVY7O0EwQ3RsRVE7O0VBRUU7QTFDeWxFVjs7QTBDdGxFUTs7RUFFRTtBMUN5bEVWOztBMENobUVROztFQUVFO0ExQ21tRVY7O0EwQ2htRVE7O0VBRUU7QTFDbW1FVjs7QXdDN3BFSTtFRVVFO0lBQ0U7RTFDdXBFTjtFMENwcEVJO0lBcENKO0lBQ0E7RTFDMnJFQTtFMEM3cUVBO0lBQ0U7SUFDQTtFMUMrcUVGO0UwQ2pyRUE7SUFDRTtJQUNBO0UxQ21yRUY7RTBDcnJFQTtJQUNFO0lBQ0E7RTFDdXJFRjtFMEN6ckVBO0lBQ0U7SUFDQTtFMUMyckVGO0UwQzdyRUE7SUFDRTtJQUNBO0UxQytyRUY7RTBDanNFQTtJQUNFO0lBQ0E7RTFDbXNFRjtFMENwcUVJO0lBaERKO0lBQ0E7RTFDdXRFQTtFMENscUVRO0lBaEVOO0lBQ0E7RTFDcXVFRjtFMEN0cUVRO0lBaEVOO0lBQ0E7RTFDeXVFRjtFMEMxcUVRO0lBaEVOO0lBQ0E7RTFDNnVFRjtFMEM5cUVRO0lBaEVOO0lBQ0E7RTFDaXZFRjtFMENsckVRO0lBaEVOO0lBQ0E7RTFDcXZFRjtFMEN0ckVRO0lBaEVOO0lBQ0E7RTFDeXZFRjtFMEMxckVRO0lBaEVOO0lBQ0E7RTFDNnZFRjtFMEM5ckVRO0lBaEVOO0lBQ0E7RTFDaXdFRjtFMENsc0VRO0lBaEVOO0lBQ0E7RTFDcXdFRjtFMEN0c0VRO0lBaEVOO0lBQ0E7RTFDeXdFRjtFMEMxc0VRO0lBaEVOO0lBQ0E7RTFDNndFRjtFMEM5c0VRO0lBaEVOO0lBQ0E7RTFDaXhFRjtFMEMxc0VVO0lBeERWO0UxQ3F3RUE7RTBDN3NFVTtJQXhEVjtFMUN3d0VBO0UwQ2h0RVU7SUF4RFY7RTFDMndFQTtFMENudEVVO0lBeERWO0UxQzh3RUE7RTBDdHRFVTtJQXhEVjtFMUNpeEVBO0UwQ3p0RVU7SUF4RFY7RTFDb3hFQTtFMEM1dEVVO0lBeERWO0UxQ3V4RUE7RTBDL3RFVTtJQXhEVjtFMUMweEVBO0UwQ2x1RVU7SUF4RFY7RTFDNnhFQTtFMENydUVVO0lBeERWO0UxQ2d5RUE7RTBDeHVFVTtJQXhEVjtFMUNteUVBO0UwQzN1RVU7SUF4RFY7RTFDc3lFQTtFMENudUVNOztJQUVFO0UxQ3F1RVI7RTBDbHVFTTs7SUFFRTtFMUNvdUVSO0UwQzN1RU07O0lBRUU7RTFDNnVFUjtFMEMxdUVNOztJQUVFO0UxQzR1RVI7RTBDbnZFTTs7SUFFRTtFMUNxdkVSO0UwQ2x2RU07O0lBRUU7RTFDb3ZFUjtFMEMzdkVNOztJQUVFO0UxQzZ2RVI7RTBDMXZFTTs7SUFFRTtFMUM0dkVSO0UwQ253RU07O0lBRUU7RTFDcXdFUjtFMENsd0VNOztJQUVFO0UxQ293RVI7RTBDM3dFTTs7SUFFRTtFMUM2d0VSO0UwQzF3RU07O0lBRUU7RTFDNHdFUjtBQUNGO0F3Q3YwRUk7RUVVRTtJQUNFO0UxQ2cwRU47RTBDN3pFSTtJQXBDSjtJQUNBO0UxQ28yRUE7RTBDdDFFQTtJQUNFO0lBQ0E7RTFDdzFFRjtFMEMxMUVBO0lBQ0U7SUFDQTtFMUM0MUVGO0UwQzkxRUE7SUFDRTtJQUNBO0UxQ2cyRUY7RTBDbDJFQTtJQUNFO0lBQ0E7RTFDbzJFRjtFMEN0MkVBO0lBQ0U7SUFDQTtFMUN3MkVGO0UwQzEyRUE7SUFDRTtJQUNBO0UxQzQyRUY7RTBDNzBFSTtJQWhESjtJQUNBO0UxQ2c0RUE7RTBDMzBFUTtJQWhFTjtJQUNBO0UxQzg0RUY7RTBDLzBFUTtJQWhFTjtJQUNBO0UxQ2s1RUY7RTBDbjFFUTtJQWhFTjtJQUNBO0UxQ3M1RUY7RTBDdjFFUTtJQWhFTjtJQUNBO0UxQzA1RUY7RTBDMzFFUTtJQWhFTjtJQUNBO0UxQzg1RUY7RTBDLzFFUTtJQWhFTjtJQUNBO0UxQ2s2RUY7RTBDbjJFUTtJQWhFTjtJQUNBO0UxQ3M2RUY7RTBDdjJFUTtJQWhFTjtJQUNBO0UxQzA2RUY7RTBDMzJFUTtJQWhFTjtJQUNBO0UxQzg2RUY7RTBDLzJFUTtJQWhFTjtJQUNBO0UxQ2s3RUY7RTBDbjNFUTtJQWhFTjtJQUNBO0UxQ3M3RUY7RTBDdjNFUTtJQWhFTjtJQUNBO0UxQzA3RUY7RTBDbjNFVTtJQXhEVjtFMUM4NkVBO0UwQ3QzRVU7SUF4RFY7RTFDaTdFQTtFMEN6M0VVO0lBeERWO0UxQ283RUE7RTBDNTNFVTtJQXhEVjtFMUN1N0VBO0UwQy8zRVU7SUF4RFY7RTFDMDdFQTtFMENsNEVVO0lBeERWO0UxQzY3RUE7RTBDcjRFVTtJQXhEVjtFMUNnOEVBO0UwQ3g0RVU7SUF4RFY7RTFDbThFQTtFMEMzNEVVO0lBeERWO0UxQ3M4RUE7RTBDOTRFVTtJQXhEVjtFMUN5OEVBO0UwQ2o1RVU7SUF4RFY7RTFDNDhFQTtFMENwNUVVO0lBeERWO0UxQys4RUE7RTBDNTRFTTs7SUFFRTtFMUM4NEVSO0UwQzM0RU07O0lBRUU7RTFDNjRFUjtFMENwNUVNOztJQUVFO0UxQ3M1RVI7RTBDbjVFTTs7SUFFRTtFMUNxNUVSO0UwQzU1RU07O0lBRUU7RTFDODVFUjtFMEMzNUVNOztJQUVFO0UxQzY1RVI7RTBDcDZFTTs7SUFFRTtFMUNzNkVSO0UwQ242RU07O0lBRUU7RTFDcTZFUjtFMEM1NkVNOztJQUVFO0UxQzg2RVI7RTBDMzZFTTs7SUFFRTtFMUM2NkVSO0UwQ3A3RU07O0lBRUU7RTFDczdFUjtFMENuN0VNOztJQUVFO0UxQ3E3RVI7QUFDRjtBd0NoL0VJO0VFVUU7SUFDRTtFMUN5K0VOO0UwQ3QrRUk7SUFwQ0o7SUFDQTtFMUM2Z0ZBO0UwQy8vRUE7SUFDRTtJQUNBO0UxQ2lnRkY7RTBDbmdGQTtJQUNFO0lBQ0E7RTFDcWdGRjtFMEN2Z0ZBO0lBQ0U7SUFDQTtFMUN5Z0ZGO0UwQzNnRkE7SUFDRTtJQUNBO0UxQzZnRkY7RTBDL2dGQTtJQUNFO0lBQ0E7RTFDaWhGRjtFMENuaEZBO0lBQ0U7SUFDQTtFMUNxaEZGO0UwQ3QvRUk7SUFoREo7SUFDQTtFMUN5aUZBO0UwQ3AvRVE7SUFoRU47SUFDQTtFMUN1akZGO0UwQ3gvRVE7SUFoRU47SUFDQTtFMUMyakZGO0UwQzUvRVE7SUFoRU47SUFDQTtFMUMrakZGO0UwQ2hnRlE7SUFoRU47SUFDQTtFMUNta0ZGO0UwQ3BnRlE7SUFoRU47SUFDQTtFMUN1a0ZGO0UwQ3hnRlE7SUFoRU47SUFDQTtFMUMya0ZGO0UwQzVnRlE7SUFoRU47SUFDQTtFMUMra0ZGO0UwQ2hoRlE7SUFoRU47SUFDQTtFMUNtbEZGO0UwQ3BoRlE7SUFoRU47SUFDQTtFMUN1bEZGO0UwQ3hoRlE7SUFoRU47SUFDQTtFMUMybEZGO0UwQzVoRlE7SUFoRU47SUFDQTtFMUMrbEZGO0UwQ2hpRlE7SUFoRU47SUFDQTtFMUNtbUZGO0UwQzVoRlU7SUF4RFY7RTFDdWxGQTtFMEMvaEZVO0lBeERWO0UxQzBsRkE7RTBDbGlGVTtJQXhEVjtFMUM2bEZBO0UwQ3JpRlU7SUF4RFY7RTFDZ21GQTtFMEN4aUZVO0lBeERWO0UxQ21tRkE7RTBDM2lGVTtJQXhEVjtFMUNzbUZBO0UwQzlpRlU7SUF4RFY7RTFDeW1GQTtFMENqakZVO0lBeERWO0UxQzRtRkE7RTBDcGpGVTtJQXhEVjtFMUMrbUZBO0UwQ3ZqRlU7SUF4RFY7RTFDa25GQTtFMEMxakZVO0lBeERWO0UxQ3FuRkE7RTBDN2pGVTtJQXhEVjtFMUN3bkZBO0UwQ3JqRk07O0lBRUU7RTFDdWpGUjtFMENwakZNOztJQUVFO0UxQ3NqRlI7RTBDN2pGTTs7SUFFRTtFMUMrakZSO0UwQzVqRk07O0lBRUU7RTFDOGpGUjtFMENya0ZNOztJQUVFO0UxQ3VrRlI7RTBDcGtGTTs7SUFFRTtFMUNza0ZSO0UwQzdrRk07O0lBRUU7RTFDK2tGUjtFMEM1a0ZNOztJQUVFO0UxQzhrRlI7RTBDcmxGTTs7SUFFRTtFMUN1bEZSO0UwQ3BsRk07O0lBRUU7RTFDc2xGUjtFMEM3bEZNOztJQUVFO0UxQytsRlI7RTBDNWxGTTs7SUFFRTtFMUM4bEZSO0FBQ0Y7QXdDenBGSTtFRVVFO0lBQ0U7RTFDa3BGTjtFMEMvb0ZJO0lBcENKO0lBQ0E7RTFDc3JGQTtFMEN4cUZBO0lBQ0U7SUFDQTtFMUMwcUZGO0UwQzVxRkE7SUFDRTtJQUNBO0UxQzhxRkY7RTBDaHJGQTtJQUNFO0lBQ0E7RTFDa3JGRjtFMENwckZBO0lBQ0U7SUFDQTtFMUNzckZGO0UwQ3hyRkE7SUFDRTtJQUNBO0UxQzByRkY7RTBDNXJGQTtJQUNFO0lBQ0E7RTFDOHJGRjtFMEMvcEZJO0lBaERKO0lBQ0E7RTFDa3RGQTtFMEM3cEZRO0lBaEVOO0lBQ0E7RTFDZ3VGRjtFMENqcUZRO0lBaEVOO0lBQ0E7RTFDb3VGRjtFMENycUZRO0lBaEVOO0lBQ0E7RTFDd3VGRjtFMEN6cUZRO0lBaEVOO0lBQ0E7RTFDNHVGRjtFMEM3cUZRO0lBaEVOO0lBQ0E7RTFDZ3ZGRjtFMENqckZRO0lBaEVOO0lBQ0E7RTFDb3ZGRjtFMENyckZRO0lBaEVOO0lBQ0E7RTFDd3ZGRjtFMEN6ckZRO0lBaEVOO0lBQ0E7RTFDNHZGRjtFMEM3ckZRO0lBaEVOO0lBQ0E7RTFDZ3dGRjtFMENqc0ZRO0lBaEVOO0lBQ0E7RTFDb3dGRjtFMENyc0ZRO0lBaEVOO0lBQ0E7RTFDd3dGRjtFMEN6c0ZRO0lBaEVOO0lBQ0E7RTFDNHdGRjtFMENyc0ZVO0lBeERWO0UxQ2d3RkE7RTBDeHNGVTtJQXhEVjtFMUNtd0ZBO0UwQzNzRlU7SUF4RFY7RTFDc3dGQTtFMEM5c0ZVO0lBeERWO0UxQ3l3RkE7RTBDanRGVTtJQXhEVjtFMUM0d0ZBO0UwQ3B0RlU7SUF4RFY7RTFDK3dGQTtFMEN2dEZVO0lBeERWO0UxQ2t4RkE7RTBDMXRGVTtJQXhEVjtFMUNxeEZBO0UwQzd0RlU7SUF4RFY7RTFDd3hGQTtFMENodUZVO0lBeERWO0UxQzJ4RkE7RTBDbnVGVTtJQXhEVjtFMUM4eEZBO0UwQ3R1RlU7SUF4RFY7RTFDaXlGQTtFMEM5dEZNOztJQUVFO0UxQ2d1RlI7RTBDN3RGTTs7SUFFRTtFMUMrdEZSO0UwQ3R1Rk07O0lBRUU7RTFDd3VGUjtFMENydUZNOztJQUVFO0UxQ3V1RlI7RTBDOXVGTTs7SUFFRTtFMUNndkZSO0UwQzd1Rk07O0lBRUU7RTFDK3VGUjtFMEN0dkZNOztJQUVFO0UxQ3d2RlI7RTBDcnZGTTs7SUFFRTtFMUN1dkZSO0UwQzl2Rk07O0lBRUU7RTFDZ3dGUjtFMEM3dkZNOztJQUVFO0UxQyt2RlI7RTBDdHdGTTs7SUFFRTtFMUN3d0ZSO0UwQ3J3Rk07O0lBRUU7RTFDdXdGUjtBQUNGO0F3Q2wwRkk7RUVVRTtJQUNFO0UxQzJ6Rk47RTBDeHpGSTtJQXBDSjtJQUNBO0UxQysxRkE7RTBDajFGQTtJQUNFO0lBQ0E7RTFDbTFGRjtFMENyMUZBO0lBQ0U7SUFDQTtFMUN1MUZGO0UwQ3oxRkE7SUFDRTtJQUNBO0UxQzIxRkY7RTBDNzFGQTtJQUNFO0lBQ0E7RTFDKzFGRjtFMENqMkZBO0lBQ0U7SUFDQTtFMUNtMkZGO0UwQ3IyRkE7SUFDRTtJQUNBO0UxQ3UyRkY7RTBDeDBGSTtJQWhESjtJQUNBO0UxQzIzRkE7RTBDdDBGUTtJQWhFTjtJQUNBO0UxQ3k0RkY7RTBDMTBGUTtJQWhFTjtJQUNBO0UxQzY0RkY7RTBDOTBGUTtJQWhFTjtJQUNBO0UxQ2k1RkY7RTBDbDFGUTtJQWhFTjtJQUNBO0UxQ3E1RkY7RTBDdDFGUTtJQWhFTjtJQUNBO0UxQ3k1RkY7RTBDMTFGUTtJQWhFTjtJQUNBO0UxQzY1RkY7RTBDOTFGUTtJQWhFTjtJQUNBO0UxQ2k2RkY7RTBDbDJGUTtJQWhFTjtJQUNBO0UxQ3E2RkY7RTBDdDJGUTtJQWhFTjtJQUNBO0UxQ3k2RkY7RTBDMTJGUTtJQWhFTjtJQUNBO0UxQzY2RkY7RTBDOTJGUTtJQWhFTjtJQUNBO0UxQ2k3RkY7RTBDbDNGUTtJQWhFTjtJQUNBO0UxQ3E3RkY7RTBDOTJGVTtJQXhEVjtFMUN5NkZBO0UwQ2ozRlU7SUF4RFY7RTFDNDZGQTtFMENwM0ZVO0lBeERWO0UxQys2RkE7RTBDdjNGVTtJQXhEVjtFMUNrN0ZBO0UwQzEzRlU7SUF4RFY7RTFDcTdGQTtFMEM3M0ZVO0lBeERWO0UxQ3c3RkE7RTBDaDRGVTtJQXhEVjtFMUMyN0ZBO0UwQ240RlU7SUF4RFY7RTFDODdGQTtFMEN0NEZVO0lBeERWO0UxQ2k4RkE7RTBDejRGVTtJQXhEVjtFMUNvOEZBO0UwQzU0RlU7SUF4RFY7RTFDdThGQTtFMEMvNEZVO0lBeERWO0UxQzA4RkE7RTBDdjRGTTs7SUFFRTtFMUN5NEZSO0UwQ3Q0Rk07O0lBRUU7RTFDdzRGUjtFMEMvNEZNOztJQUVFO0UxQ2k1RlI7RTBDOTRGTTs7SUFFRTtFMUNnNUZSO0UwQ3Y1Rk07O0lBRUU7RTFDeTVGUjtFMEN0NUZNOztJQUVFO0UxQ3c1RlI7RTBDLzVGTTs7SUFFRTtFMUNpNkZSO0UwQzk1Rk07O0lBRUU7RTFDZzZGUjtFMEN2NkZNOztJQUVFO0UxQ3k2RlI7RTBDdDZGTTs7SUFFRTtFMUN3NkZSO0UwQy82Rk07O0lBRUU7RTFDaTdGUjtFMEM5NkZNOztJQUVFO0UxQ2c3RlI7QUFDRjtBMkN0aUdBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0EsbUJYa1lPO0VXallQLG1CWHVzQjRCO0VXdHNCNUI7QTNDcWlHRjtBMkM5aEdFO0VBQ0U7RUFFQTtFQUNBO0VBQ0EsMkNYK3NCMEI7RVc5c0IxQjtBM0MraEdKO0EyQzVoR0U7RUFDRTtBM0M4aEdKO0EyQzNoR0U7RUFDRTtBM0M2aEdKOztBMkN6aEdBO0VBQ0U7QTNDNGhHRjs7QTJDcmhHQTtFQUNFO0EzQ3doR0Y7O0EyQzlnR0U7RUFDRTtBM0NpaEdKOztBMkNsZ0dFO0VBQ0U7QTNDcWdHSjtBMkNsZ0dJO0VBQ0U7QTNDb2dHTjs7QTJDNy9GRTtFQUNFO0EzQ2dnR0o7QTJDNy9GRTtFQUNFO0EzQysvRko7O0EyQ3IvRkU7RUFDRTtFQUNBO0EzQ3cvRko7O0EyQ2wvRkU7RUFDRTtFQUNBO0EzQ3EvRko7O0EyQzcrRkE7RUFDRTtFQUNBO0EzQ2cvRkY7O0EyQ3grRkU7RUFDRTtFQUNBO0EzQzIrRko7O0E0Q3ZuR0U7RUFPRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0E1Q21uR0o7O0E0Q3JvR0U7RUFPRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0E1Q2lvR0o7O0E0Q25wR0U7RUFPRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0E1QytvR0o7O0E0Q2pxR0U7RUFPRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0E1QzZwR0o7O0E0Qy9xR0U7RUFPRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0E1QzJxR0o7O0E0QzdyR0U7RUFPRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0E1Q3lyR0o7O0E0QzNzR0U7RUFPRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0E1Q3VzR0o7O0E0Q3p0R0U7RUFPRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0E1Q3F0R0o7O0EyQ3BrR0k7RUFDRTtFQUNBO0EzQ3VrR047O0F3Q2xxR0k7RUd5RkE7SUFDRTtJQUNBO0UzQzZrR0o7QUFDRjtBd0N6cUdJO0VHeUZBO0lBQ0U7SUFDQTtFM0NtbEdKO0FBQ0Y7QXdDL3FHSTtFR3lGQTtJQUNFO0lBQ0E7RTNDeWxHSjtBQUNGO0F3Q3JyR0k7RUd5RkE7SUFDRTtJQUNBO0UzQytsR0o7QUFDRjtBd0MzckdJO0VHeUZBO0lBQ0U7SUFDQTtFM0NxbUdKO0FBQ0Y7QTZDendHQTtFQUNFLHFCYnUyQnNDO0FoQ282RXhDOztBNkNsd0dBO0VBQ0U7RUFDQTtFQUNBO0VoQjhRSSxrQkFMSTtFZ0JyUVIsZ0JiK2xCNEI7QWhDb3FGOUI7O0E2Qy92R0E7RUFDRTtFQUNBO0VoQm9RSSxrQkFMSTtBN0JvZ0dWOztBNkMvdkdBO0VBQ0U7RUFDQTtFaEI4UEksbUJBTEk7QTdCMGdHVjs7QThDaHlHQTtFQUNFLG1CZCsxQnNDO0VIcmtCbEMsa0JBTEk7RWlCalJSLGdDZCsxQnNDO0FoQ2s4RXhDOztBK0N0eUdBO0VBQ0U7RUFDQTtFQUNBO0VsQndSSSxlQUxJO0VrQmhSUixnQmZrbUI0QjtFZWptQjVCLGdCZnltQjRCO0VleG1CNUIsMkJmNDNCc0M7RWUzM0J0QztFQUNBLG1DZnEzQnNDO0VlcDNCdEM7RUFDQTtFZEdFO0VlSEUsd0VETUo7QS9Db3lHRjtBZ0R0eUdNO0VEaEJOO0lDaUJRO0VoRHl5R047QUFDRjtBK0N2eUdFO0VBQ0U7QS9DeXlHSjtBK0N2eUdJO0VBQ0U7QS9DeXlHTjtBK0NweUdFO0VBQ0UsMkJmczJCb0M7RWVyMkJwQyxtQ2ZnMkJvQztFZS8xQnBDLHFCZjgyQm9DO0VlNzJCcEM7RUFLRSxrRGZraEJrQjtBaENneEZ4QjtBK0M5eEdFO0VBTUU7RUFNQTtFQUtBO0EvQ2t4R0o7QStDN3dHRTtFQUNFO0VBQ0E7QS9DK3dHSjtBK0Mzd0dFO0VBQ0UsZ0NmNDBCb0M7RWUxMEJwQztBL0M0d0dKO0ErQ3B3R0U7RUFFRSx3Q2Y4eUJvQztFZTN5QnBDO0EvQ213R0o7QStDL3ZHRTtFQUNFO0VBQ0E7RUFDQSwwQmZvckIwQjtFZW5yQjFCLDJCZnN5Qm9DO0VpQnA0QnRDLHVDakJxaUNnQztFZXI4QjlCO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsK0NmZ3NCMEI7RWUvckIxQjtFQ3pGRSxxSUQwRkY7QS9DaXdHSjtBZ0R2MUdNO0VEMEVKO0lDekVNO0VoRDAxR047QUFDRjtBK0Nud0dFO0VBQ0Usd0NmNDdCOEI7QWhDeTBFbEM7O0ErQzV2R0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBLGdCZndmNEI7RWV2ZjVCLDJCZjJ4QnNDO0VlMXhCdEM7RUFDQTtFQUNBO0EvQyt2R0Y7QStDN3ZHRTtFQUNFO0EvQyt2R0o7QStDNXZHRTtFQUVFO0VBQ0E7QS9DNnZHSjs7QStDbHZHQTtFQUNFLG1FZjR3QnNDO0VlM3dCdEM7RWxCeUlJLG1CQUxJO0VJdlFOO0FqQzAzR0o7QStDbnZHRTtFQUNFO0VBQ0E7RUFDQSx5QmZvb0IwQjtBaENpbkY5Qjs7QStDanZHQTtFQUNFLGlFZmd3QnNDO0VlL3ZCdEM7RWxCNEhJLGtCQUxJO0VJdlFOO0FqQ3M0R0o7QStDbHZHRTtFQUNFO0VBQ0E7RUFDQSx1QmYybkIwQjtBaEN5bkY5Qjs7QStDNXVHRTtFQUNFLG9FZjZ1Qm9DO0FoQ2tnRnhDO0ErQzV1R0U7RUFDRSxtRWYwdUJvQztBaENvZ0Z4QztBK0MzdUdFO0VBQ0UsaUVmdXVCb0M7QWhDc2dGeEM7O0ErQ3h1R0E7RUFDRSxXZnF1QnNDO0VlcHVCdEMsZ0VmOHRCc0M7RWU3dEJ0QyxpQmZpbEI0QjtBaEMwcEY5QjtBK0N6dUdFO0VBQ0U7QS9DMnVHSjtBK0N4dUdFO0VBQ0U7RWR2TEE7QWpDazZHSjtBK0N2dUdFO0VBQ0U7RWQ1TEE7QWpDczZHSjtBK0N0dUdFO0VBQW9CLCtEZjhzQmtCO0FoQzJoRnhDO0ErQ3h1R0U7RUFBb0IsNkRmOHNCa0I7QWhDNmhGeEM7O0FrRDE3R0E7RUFDRTtFQUVBO0VBQ0E7RUFDQTtFckJxUkksZUFMSTtFcUI3UVIsZ0JsQitsQjRCO0VrQjlsQjVCLGdCbEJzbUI0QjtFa0JybUI1QiwyQmxCeTNCc0M7RWtCeDNCdEM7RUFDQSxtQ2xCazNCc0M7RWtCajNCdEM7RUFDQTtFQUNBLHlDbEIrOUJrQztFa0I5OUJsQywwQmxCKzlCa0M7RWtCOTlCbEM7RWpCSEU7RWVIRSx3RUVTSjtBbEQwN0dGO0FnRC83R007RUVmTjtJRmdCUTtFaERrOEdOO0FBQ0Y7QWtENzdHRTtFQUNFLHFCbEJzM0JvQztFa0JyM0JwQztFQUtFLGtEbEJpK0I0QjtBaEMwOUVsQztBa0R2N0dFO0VBRUUsc0JsQjZ1QjBCO0VrQjV1QjFCO0FsRHc3R0o7QWtEcjdHRTtFQUVFLHdDbEJ1MUJvQztBaEMrbEZ4QztBa0RqN0dFO0VBQ0U7RUFDQTtBbERtN0dKOztBa0QvNkdBO0VBQ0Usb0JsQnN1QjRCO0VrQnJ1QjVCLHVCbEJxdUI0QjtFa0JwdUI1QixvQmxCcXVCNEI7RUhsZ0J4QixtQkFMSTtFSXZRTjtBakM2OUdKOztBa0QvNkdBO0VBQ0UsbUJsQmt1QjRCO0VrQmp1QjVCLHNCbEJpdUI0QjtFa0JodUI1QixrQmxCaXVCNEI7RUh0Z0J4QixrQkFMSTtFSXZRTjtBakNxK0dKOztBa0Q3NkdJO0VBQ0U7QWxEZzdHTjs7QW1EeC9HQTtFQUNFO0VBQ0Esa0JuQnE2QndDO0VtQnA2QnhDLG1CbkJxNkJ3QztFbUJwNkJ4Qyx1Qm5CcTZCd0M7QWhDc2xGMUM7QW1Eei9HRTtFQUNFO0VBQ0E7QW5EMi9HSjs7QW1Edi9HQTtFQUNFLG9CbkIyNUJ3QztFbUIxNUJ4QztFQUNBO0FuRDAvR0Y7QW1EeC9HRTtFQUNFO0VBQ0E7RUFDQTtBbkQwL0dKOztBbUR0L0dBO0VBQ0U7RUFFQTtFQUNBLFVuQjA0QndDO0VtQno0QnhDLFduQnk0QndDO0VtQng0QnhDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSwyRG5CMjRCd0M7RW1CMTRCeEM7QW5Edy9HRjtBbURyL0dFO0VsQjNCRTtBakNtaEhKO0FtRHAvR0U7RUFFRSxrQm5CbTRCc0M7QWhDa25GMUM7QW1EbC9HRTtFQUNFLHVCbkIwM0JzQztBaEMwbkYxQztBbURqL0dFO0VBQ0UscUJuQnMxQm9DO0VtQnIxQnBDO0VBQ0Esa0RuQjhmb0I7QWhDcS9GeEI7QW1EaC9HRTtFQUNFLHlCbkI1Qk07RW1CNkJOLHFCbkI3Qk07QWhDK2dIVjtBbURoL0dJO0VBSUk7QW5EKytHUjtBbUQzK0dJO0VBSUk7QW5EMCtHUjtBbURyK0dFO0VBQ0UseUJuQmpETTtFbUJrRE4scUJuQmxETTtFbUJ1REo7QW5EbStHTjtBbUQvOUdFO0VBQ0U7RUFDQTtFQUNBLFluQmsyQnVDO0FoQytuRjNDO0FtRDE5R0k7RUFDRTtFQUNBLFluQnkxQnFDO0FoQ21vRjNDOztBbUQ5OEdBO0VBQ0UsbUJuQm8xQmdDO0FoQzZuRmxDO0FtRC84R0U7RUFDRTtFQUVBLFVuQjgwQjhCO0VtQjcwQjlCO0VBQ0E7RUFDQTtFbEJqSEE7RWVIRSxpREdzSEY7QW5EZzlHSjtBZ0Rsa0hNO0VHMEdKO0lIekdNO0VoRHFrSE47QUFDRjtBbURuOUdJO0VBQ0U7QW5EcTlHTjtBbURsOUdJO0VBQ0UsaUNuQjYwQjRCO0VtQngwQjFCO0FuRGc5R1I7QW1EMzhHRTtFQUNFLG9CbkJ3ekI4QjtFbUJ2ekI5QjtBbkQ2OEdKO0FtRDM4R0k7RUFDRTtFQUNBO0FuRDY4R047O0FtRHg4R0E7RUFDRTtFQUNBLGtCbkJzeUJnQztBaENxcUZsQzs7QW1EeDhHQTtFQUNFO0VBQ0E7RUFDQTtBbkQyOEdGO0FtRHY4R0k7RUFDRTtFQUNBO0VBQ0EsYW5Cc3BCd0I7QWhDbXpGOUI7O0FtRGw4R0k7RUFDRTtBbkRxOEdOOztBb0R4bkhBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEQybkhGO0FvRHpuSEU7RUFDRTtBcEQybkhKO0FvRHZuSEk7RUFBMEIscUVwQjhnQ2E7QWhDNG1GM0M7QW9Eem5ISTtFQUEwQixxRXBCNmdDYTtBaEMrbUYzQztBb0R6bkhFO0VBQ0U7QXBEMm5ISjtBb0R4bkhFO0VBQ0UsV3BCKy9CdUM7RW9COS9CdkMsWXBCOC9CdUM7RW9CNy9CdkM7RUFDQTtFSDFCRix5QmpCa0NRO0VvQk5OLFNwQjYvQnVDO0VDMWdDdkM7RWVIRSw0R0ltQkY7QXBEeW5ISjtBZ0R4b0hNO0VJTUo7SUpMTTtFaEQyb0hOO0FBQ0Y7QW9ENW5ISTtFSGpDRix5QmpCOGhDeUM7QWhDa29GM0M7QW9EMW5IRTtFQUNFLFdwQncrQjhCO0VvQnYrQjlCLGNwQncrQjhCO0VvQnYrQjlCO0VBQ0EsZXBCdStCOEI7RW9CdCtCOUIsd0NwQnUrQjhCO0VvQnQrQjlCO0VuQjdCQTtBakMwcEhKO0FvRHhuSEU7RUFDRSxXcEJvK0J1QztFb0JuK0J2QyxZcEJtK0J1QztFb0JsK0J2QztFSHBERix5QmpCa0NRO0VvQm9CTixTcEJtK0J1QztFQzFnQ3ZDO0VlSEUsNEdJNkNGO0FwRHluSEo7QWdEbHFITTtFSWlDSjtJSmhDTTtFaERxcUhOO0FBQ0Y7QW9ENW5ISTtFSDNERix5QmpCOGhDeUM7QWhDNHBGM0M7QW9EMW5IRTtFQUNFLFdwQjg4QjhCO0VvQjc4QjlCLGNwQjg4QjhCO0VvQjc4QjlCO0VBQ0EsZXBCNjhCOEI7RW9CNThCOUIsd0NwQjY4QjhCO0VvQjU4QjlCO0VuQnZEQTtBakNvckhKO0FvRHhuSEU7RUFDRTtBcEQwbkhKO0FvRHhuSEk7RUFDRSwyQ3BCZzlCcUM7QWhDMHFGM0M7QW9Edm5ISTtFQUNFLDJDcEI0OEJxQztBaEM2cUYzQzs7QXFEaHRIQTtFQUNFO0FyRG10SEY7QXFEanRIRTs7O0VBR0UsdURyQndpQ29DO0VxQnZpQ3BDLDJEckJ1aUNvQztFcUJ0aUNwQyxpQnJCdWlDb0M7QWhDNHFGeEM7QXFEaHRIRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VMUkUsZ0VLU0Y7QXJEa3RISjtBZ0R2dEhNO0VLVEo7SUxVTTtFaEQwdEhOO0FBQ0Y7QXFEcHRIRTs7RUFFRTtBckRzdEhKO0FxRHB0SEk7O0VBQ0U7QXJEdXRITjtBcURwdEhJOzs7RUFFRSxxQnJCNGdDa0M7RXFCM2dDbEMsd0JyQjRnQ2tDO0FoQzJzRnhDO0FxRHB0SEk7O0VBQ0UscUJyQnVnQ2tDO0VxQnRnQ2xDLHdCckJ1Z0NrQztBaENndEZ4QztBcURudEhFO0VBQ0UscUJyQmlnQ29DO0VxQmhnQ3BDLHdCckJpZ0NvQztBaENvdEZ4QztBcUQ5c0hJOzs7O0VBQ0U7RUFDQSw4RHJCMi9Ca0M7QWhDd3RGeEM7QXFEanRITTs7OztFQUNFO0VBQ0E7RUFDQTtFQUNBLGFyQm0vQmdDO0VxQmwvQmhDO0VBQ0EsbUNyQmcwQmdDO0VDaDNCcEM7QWpDdXdISjtBcURodEhJO0VBQ0U7RUFDQSw4RHJCMCtCa0M7QWhDd3VGeEM7QXFEN3NISTtFQUNFO0FyRCtzSE47QXFEM3NIRTs7RUFFRSxjckIxRU87QWhDdXhIWDtBcUQzc0hJOztFQUNFLHdDckIweUJrQztBaENvNkZ4Qzs7QXNEcnlIQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXREd3lIRjtBc0R0eUhFOzs7RUFHRTtFQUNBO0VBQ0E7RUFDQTtBdER3eUhKO0FzRHB5SEU7OztFQUdFO0F0RHN5SEo7QXNEaHlIRTtFQUNFO0VBQ0E7QXREa3lISjtBc0RoeUhJO0VBQ0U7QXREa3lITjs7QXNEdnhIQTtFQUNFO0VBQ0E7RUFDQTtFekI4T0ksZUFMSTtFeUJ2T1IsZ0J0QnlqQjRCO0VzQnhqQjVCLGdCdEJna0I0QjtFc0IvakI1QiwyQnRCbTFCc0M7RXNCbDFCdEM7RUFDQTtFQUNBLHVDdEIwNkJzQztFc0J6NkJ0QztFckJ0Q0U7QWpDaTBISjs7QXNEanhIQTs7OztFQUlFO0V6QndOSSxrQkFMSTtFSXZRTjtBakMwMEhKOztBc0RqeEhBOzs7O0VBSUU7RXpCK01JLG1CQUxJO0VJdlFOO0FqQ20xSEo7O0FzRGp4SEE7O0VBRUU7QXREb3hIRjs7QXNEdndISTs7OztFckJqRUE7RUFDQTtBakMrMEhKO0FzRHR3SEk7Ozs7RXJCMUVBO0VBQ0E7QWpDczFISjtBc0Rod0hFO0VBQ0U7RXJCMUVBO0VBQ0E7QWpDNjBISjtBc0Rod0hFOztFckI5RUU7RUFDQTtBakNrMUhKOztBdUQxMkhFO0VBQ0U7RUFDQTtFQUNBLG1CdkJ1MEJvQztFSHJrQmxDLGtCQUxJO0UwQjFQTixpQ3ZCa2pDcUI7QWhDMHpGekI7O0F1RHoySEU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFMUJxUEUsbUJBTEk7RTBCN09OLFd2QnFpQ3FCO0V1QnBpQ3JCLG1DdkJvaUNxQjtFQy9qQ3JCO0FqQ3U0SEo7O0F1RHYySEk7Ozs7RUFFRTtBdkQ0MkhOOztBdUQzNUhJO0VBcURFLCtDdkJ1aENtQjtFdUJwaENqQixvQ3ZCODFCZ0M7RXVCNzFCaEM7RUFDQTtFQUNBO0VBQ0E7QXZEdzJIUjtBdURyMkhNO0VBQ0UsK0N2QjRnQ2lCO0V1QjNnQ2pCLDJEdkIyZ0NpQjtBaEM0MUZ6Qjs7QXVEeDZISTtFQTBFSSxvQ3ZCNDBCZ0M7RXVCMzBCaEM7QXZEazJIUjs7QXVENzZISTtFQWtGRSwrQ3ZCMC9CbUI7QWhDcTJGekI7QXVENTFIUTtFQUVFO0VBQ0EsdUJ2QjA1QjhCO0V1Qno1QjlCO0VBQ0E7QXZENjFIVjtBdUR6MUhNO0VBQ0UsK0N2QjYrQmlCO0V1QjUrQmpCLDJEdkI0K0JpQjtBaEMrMkZ6Qjs7QXVEMzdISTtFQXdHSTtBdkR1MUhSOztBdUQvN0hJO0VBK0dFLCtDdkI2OUJtQjtBaEN1M0Z6QjtBdURsMUhNO0VBQ0UsNEN2QjA5QmlCO0FoQzAzRnpCO0F1RGoxSE07RUFDRSwyRHZCczlCaUI7QWhDNjNGekI7QXVEaDFITTtFQUNFLGlDdkJrOUJpQjtBaENnNEZ6Qjs7QXVENzBISTtFQUNFO0F2RGcxSE47O0F1RGg5SEk7Ozs7O0VBMElNO0F2RDgwSFY7O0F1RHA4SEU7RUFDRTtFQUNBO0VBQ0EsbUJ2QnUwQm9DO0VIcmtCbEMsa0JBTEk7RTBCMVBOLG1DdkJrakNxQjtBaENvNUZ6Qjs7QXVEbjhIRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0UxQnFQRSxtQkFMSTtFMEI3T04sV3ZCcWlDcUI7RXVCcGlDckIsa0N2Qm9pQ3FCO0VDL2pDckI7QWpDaStISjs7QXVEajhISTs7OztFQUVFO0F2RHM4SE47O0F1RHIvSEk7RUFxREUsaUR2QnVoQ21CO0V1QnBoQ2pCLG9DdkI4MUJnQztFdUI3MUJoQztFQUNBO0VBQ0E7RUFDQTtBdkRrOEhSO0F1RC83SE07RUFDRSxpRHZCNGdDaUI7RXVCM2dDakIsMER2QjJnQ2lCO0FoQ3M3RnpCOztBdURsZ0lJO0VBMEVJLG9DdkI0MEJnQztFdUIzMEJoQztBdkQ0N0hSOztBdUR2Z0lJO0VBa0ZFLGlEdkIwL0JtQjtBaEMrN0Z6QjtBdUR0N0hRO0VBRUU7RUFDQSx1QnZCMDVCOEI7RXVCejVCOUI7RUFDQTtBdkR1N0hWO0F1RG43SE07RUFDRSxpRHZCNitCaUI7RXVCNStCakIsMER2QjQrQmlCO0FoQ3k4RnpCOztBdURyaElJO0VBd0dJO0F2RGk3SFI7O0F1RHpoSUk7RUErR0UsaUR2QjY5Qm1CO0FoQ2k5RnpCO0F1RDU2SE07RUFDRSw4Q3ZCMDlCaUI7QWhDbzlGekI7QXVEMzZITTtFQUNFLDBEdkJzOUJpQjtBaEN1OUZ6QjtBdUQxNkhNO0VBQ0UsbUN2Qms5QmlCO0FoQzA5RnpCOztBdUR2NkhJO0VBQ0U7QXZEMDZITjs7QXVEMWlJSTs7Ozs7RUE0SU07QXZEczZIVjs7QXdEcGpJQTtFQUVFO0VBQ0E7RUFDQTtFM0J1Ukksd0JBTEk7RTJCaFJSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RTNCc1FJLGtDQUxJO0UyQi9QUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RXZCakJFO0VnQmZGLGtDT2tDcUI7RVJ0QmpCLHFJUXdCSjtBeERraklGO0FnRHRrSU07RVFoQk47SVJpQlE7RWhEeWtJTjtBQUNGO0F3RHJqSUU7RUFDRTtFQUVBO0VBQ0E7QXhEc2pJSjtBd0RuaklFO0VBRUU7RUFDQTtFQUNBO0F4RG9qSUo7QXdEampJRTtFQUNFO0VQckRGLHdDT3NEdUI7RUFDckI7RUFDQTtFQUtFO0F4RCtpSU47QXdEM2lJRTtFQUNFO0VBQ0E7RUFLRTtBeER5aUlOO0F3RHJpSUU7RUFLRTtFQUNBO0VBR0E7QXhEaWlJSjtBd0Q5aElJO0VBS0k7QXhENGhJUjtBd0R2aElFO0VBR0U7RUFDQTtFQUNBO0VBRUE7RUFDQTtBeERzaElKOztBd0QxZ0lFO0VDdEdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpEb25JRjs7QXdEM2hJRTtFQ3RHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6RHFvSUY7O0F3RDVpSUU7RUN0R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekRzcElGOztBd0Q3aklFO0VDdEdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpEdXFJRjs7QXdEOWtJRTtFQ3RHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6RHdySUY7O0F3RC9sSUU7RUN0R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekR5c0lGOztBd0RobklFO0VDdEdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpEMHRJRjs7QXdEam9JRTtFQ3RHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6RDJ1SUY7O0F3RGxwSUU7RUN0R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekQ0dklGOztBd0RucUlFO0VDdEdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpENndJRjs7QXdEcHJJRTtFQ3RHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6RDh4SUY7O0F3RHJzSUU7RUN0R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekQreUlGOztBd0Q1cklFO0VDdkdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpEdXlJRjs7QXdEN3NJRTtFQ3ZHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6RHd6SUY7O0F3RDl0SUU7RUN2R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekR5MElGOztBd0QvdUlFO0VDdkdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpEMDFJRjs7QXdEaHdJRTtFQ3ZHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6RDIySUY7O0F3RGp4SUU7RUN2R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekQ0M0lGOztBd0RseUlFO0VDdkdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpENjRJRjs7QXdEbnpJRTtFQ3ZHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6RDg1SUY7O0F3RHAwSUU7RUN2R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekQrNklGOztBd0RyMUlFO0VDdkdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpEZzhJRjs7QXdEdDJJRTtFQ3ZHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6RGk5SUY7O0F3RHYzSUU7RUN2R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekRrK0lGOztBd0Q1M0lBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUEsMEJ4QnVSd0M7QWhDdW1JMUM7QXdEcDNJRTtFQUNFO0F4RHMzSUo7QXdEbjNJRTtFQUNFO0F4RHEzSUo7O0F3RDEySUE7RUN4SUU7RUFDQTtFNUI4TkksMkJBTEk7RTRCdk5SO0F6RHMvSUY7O0F3RDcySUE7RUM1SUU7RUFDQTtFNUI4TkksNEJBTEk7RTRCdk5SO0F6RDYvSUY7O0EwRGhrSkE7RVZnQk0sZ0NVZko7QTFEbWtKRjtBZ0RoakpNO0VVcEJOO0lWcUJRO0VoRG1qSk47QUFDRjtBMER0a0pFO0VBQ0U7QTFEd2tKSjs7QTBEbGtKRTtFQUNFO0ExRHFrSko7O0EwRGprSkE7RUFDRTtFQUNBO0VWREksNkJVRUo7QTFEb2tKRjtBZ0Rsa0pNO0VVTE47SVZNUTtFaERxa0pOO0FBQ0Y7QTBEdmtKRTtFQUNFO0VBQ0E7RVZORSw0QlVPRjtBMUR5a0pKO0FnRDVrSk07RVVBSjtJVkNNO0VoRCtrSk47QUFDRjs7QTJEcG1KQTs7Ozs7O0VBTUU7QTNEdW1KRjs7QTJEcG1KQTtFQUNFO0EzRHVtSkY7QTREL2tKSTtFQUNFO0VBQ0Esb0I1QjZoQndCO0U0QjVoQnhCLHVCNUIyaEJ3QjtFNEIxaEJ4QjtFQXJDSjtFQUNBO0VBQ0E7RUFDQTtBNUR1bkpGO0E0RDdqSkk7RUFDRTtBNUQrakpOOztBMkQ3bUpBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFOUJ1UUksNkJBTEk7RThCaFFSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RTlCME9JLHVDQUxJO0U4Qm5PUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RTFCekNFO0FqQ3VwSko7QTJEMW1KRTtFQUNFO0VBQ0E7RUFDQTtBM0Q0bUpKOztBMkRwbEpJO0VBQ0U7QTNEdWxKTjtBMkRybEpNO0VBQ0U7RUFDQTtBM0R1bEpSOztBMkRubEpJO0VBQ0U7QTNEc2xKTjtBMkRwbEpNO0VBQ0U7RUFDQTtBM0RzbEpSOztBd0Nob0pJO0VtQjRCQTtJQUNFO0UzRHdtSko7RTJEdG1KSTtJQUNFO0lBQ0E7RTNEd21KTjtFMkRwbUpFO0lBQ0U7RTNEc21KSjtFMkRwbUpJO0lBQ0U7SUFDQTtFM0RzbUpOO0FBQ0Y7QXdDanBKSTtFbUI0QkE7SUFDRTtFM0R3bkpKO0UyRHRuSkk7SUFDRTtJQUNBO0UzRHduSk47RTJEcG5KRTtJQUNFO0UzRHNuSko7RTJEcG5KSTtJQUNFO0lBQ0E7RTNEc25KTjtBQUNGO0F3Q2pxSkk7RW1CNEJBO0lBQ0U7RTNEd29KSjtFMkR0b0pJO0lBQ0U7SUFDQTtFM0R3b0pOO0UyRHBvSkU7SUFDRTtFM0Rzb0pKO0UyRHBvSkk7SUFDRTtJQUNBO0UzRHNvSk47QUFDRjtBd0NqckpJO0VtQjRCQTtJQUNFO0UzRHdwSko7RTJEdHBKSTtJQUNFO0lBQ0E7RTNEd3BKTjtFMkRwcEpFO0lBQ0U7RTNEc3BKSjtFMkRwcEpJO0lBQ0U7SUFDQTtFM0RzcEpOO0FBQ0Y7QXdDanNKSTtFbUI0QkE7SUFDRTtFM0R3cUpKO0UyRHRxSkk7SUFDRTtJQUNBO0UzRHdxSk47RTJEcHFKRTtJQUNFO0UzRHNxSko7RTJEcHFKSTtJQUNFO0lBQ0E7RTNEc3FKTjtBQUNGO0EyRDdwSkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBM0QrcEpKO0E0RG52Skk7RUFDRTtFQUNBLG9CNUI2aEJ3QjtFNEI1aEJ4Qix1QjVCMmhCd0I7RTRCMWhCeEI7RUE5Qko7RUFDQTtFQUNBO0VBQ0E7QTVEb3hKRjtBNERqdUpJO0VBQ0U7QTVEbXVKTjs7QTJEbnFKRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNEc3FKSjtBNER4d0pJO0VBQ0U7RUFDQSxvQjVCNmhCd0I7RTRCNWhCeEIsdUI1QjJoQndCO0U0QjFoQnhCO0VBdkJKO0VBQ0E7RUFDQTtFQUNBO0E1RGt5SkY7QTREdHZKSTtFQUNFO0E1RHd2Sk47QTJEOXFKSTtFQUNFO0EzRGdySk47O0EyRDFxSkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzRDZxSko7QTREaHlKSTtFQUNFO0VBQ0Esb0I1QjZoQndCO0U0QjVoQnhCLHVCNUIyaEJ3QjtFNEIxaEJ4QjtBNURreUpOO0E0RHZ4Sk07RUFDRTtBNUR5eEpSO0E0RHR4Sk07RUFDRTtFQUNBLHFCNUIwZ0JzQjtFNEJ6Z0J0Qix1QjVCd2dCc0I7RTRCdmdCdEI7RUFuQ047RUFDQTtFQUNBO0E1RDR6SkY7QTREdHhKSTtFQUNFO0E1RHd4Sk47QTJEN3JKSTtFQUNFO0EzRCtySk47O0EyRHhySkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzRDJySkY7O0EyRHJySkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBLGdCM0J5YjRCO0UyQnhiNUI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0UxQnRLRTtBakMrMUpKO0EyRHRySkU7RUFFRTtFVjFMRixrRFU0THVCO0EzRHNySnpCO0EyRG5ySkU7RUFFRTtFQUNBO0VWbE1GLG1EVW1NdUI7QTNEb3JKekI7QTJEanJKRTtFQUVFO0VBQ0E7RUFDQTtBM0RrckpKOztBMkQ1cUpBO0VBQ0U7QTNEK3FKRjs7QTJEM3FKQTtFQUNFO0VBQ0E7RUFDQTtFOUJtRUksbUJBTEk7RThCNURSO0VBQ0E7QTNEOHFKRjs7QTJEMXFKQTtFQUNFO0VBQ0E7RUFDQTtBM0Q2cUpGOztBMkR6cUpBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzRDJxSkY7O0E2RGo2SkE7O0VBRUU7RUFDQTtFQUNBO0E3RG82SkY7QTZEbDZKRTs7RUFDRTtFQUNBO0E3RHE2Sko7QTZEaDZKRTs7Ozs7Ozs7Ozs7O0VBTUU7QTdEdzZKSjs7QTZEbjZKQTtFQUNFO0VBQ0E7RUFDQTtBN0RzNkpGO0E2RHA2SkU7RUFDRTtBN0RzNkpKOztBNkRsNkpBO0U1QmhCSTtBakNzN0pKO0E2RGw2SkU7O0VBRUU7QTdEbzZKSjtBNkRoNkpFOzs7RTVCVkU7RUFDQTtBakMrNkpKO0E2RDU1SkU7OztFNUJORTtFQUNBO0FqQ3U2Sko7O0E2RC80SkE7RUFDRTtFQUNBO0E3RGs1SkY7QTZEaDVKRTtFQUdFO0E3RGc1Sko7QTZENzRKRTtFQUNFO0E3RCs0Sko7O0E2RDM0SkE7RUFDRTtFQUNBO0E3RDg0SkY7O0E2RDM0SkE7RUFDRTtFQUNBO0E3RDg0SkY7O0E2RDEzSkE7RUFDRTtFQUNBO0VBQ0E7QTdENjNKRjtBNkQzM0pFOztFQUVFO0E3RDYzSko7QTZEMTNKRTs7RUFFRTtBN0Q0M0pKO0E2RHgzSkU7O0U1QjFGRTtFQUNBO0FqQ3M5Sko7QTZEeDNKRTs7RTVCN0dFO0VBQ0E7QWpDeStKSjs7QThEamdLQTtFQUVFO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlEZ2dLRjs7QThENy9KQTtFQUNFO0VBQ0E7RWpDc1FJLHVDQUxJO0VpQy9QUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VkZkksdUdjZ0JKO0E5RGdnS0Y7QWdENWdLTTtFY0dOO0lkRlE7RWhEK2dLTjtBQUNGO0E4RG5nS0U7RUFFRTtBOURvZ0tKO0E4RGhnS0U7RUFDRTtFQUNBLGtEOUJraEJvQjtBaENnL0l4QjtBOEQ5L0pFO0VBRUU7RUFDQTtFQUNBO0E5RCsvSko7O0E4RHYvSkE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0E5RHUvSkY7QThEci9KRTtFQUNFO0VBQ0E7RTdCN0NBO0VBQ0E7QWpDcWlLSjtBOER0L0pJO0VBR0U7RUFDQTtBOURzL0pOO0E4RGwvSkU7O0VBRUU7RUFDQTtFQUNBO0E5RG8vSko7QThEai9KRTtFQUVFO0U3QmpFQTtFQUNBO0FqQ29qS0o7O0E4RHorSkE7RUFFRTtFQUNBO0VBQ0E7QTlEMitKRjtBOER4K0pFO0U3QjVGRTtBakN1a0tKO0E4RHYrSkU7O0VBRUU7RWJqSEYsb0Rha0h1QjtBOUR5K0p6Qjs7QThEaCtKQTtFQUVFO0VBQ0E7RUFDQTtFQUdBO0E5RGcrSkY7QThEOTlKRTtFQUNFO0VBQ0E7RUFDQTtBOURnK0pKO0E4RDk5Skk7RUFFRTtBOUQrOUpOO0E4RDM5SkU7O0VBRUUsZ0I5QjBkMEI7RThCemQxQjtFQUNBO0E5RDY5Sko7O0E4RG45SkU7O0VBRUU7RUFDQTtBOURzOUpKOztBOERqOUpFOztFQUVFO0VBQ0E7RUFDQTtBOURvOUpKOztBOEQ5OEpFOztFQUNFO0E5RGs5Sko7O0E4RHg4SkU7RUFDRTtBOUQyOEpKO0E4RHo4SkU7RUFDRTtBOUQyOEpKOztBK0R4b0tBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0R3b0tGO0ErRGxvS0U7Ozs7Ozs7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBL0Qwb0tKO0ErRHRuS0E7RUFDRTtFQUNBO0VBQ0E7RWxDNE5JLDJDQUxJO0VrQ3JOUjtFQUNBO0VBQ0E7QS9Ed25LRjtBK0R0bktFO0VBRUU7QS9EdW5LSjs7QStEN21LQTtFQUVFO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9ENG1LRjtBK0R6bUtJO0VBRUU7QS9EMG1LTjtBK0R0bUtFO0VBQ0U7QS9Ed21LSjs7QStEL2xLQTtFQUNFLG1CL0I4Z0NrQztFK0I3Z0NsQyxzQi9CNmdDa0M7RStCNWdDbEM7QS9Ea21LRjtBK0RobUtFOzs7RUFHRTtBL0RrbUtKOztBK0RybEtBO0VBQ0U7RUFDQTtFQUdBO0EvRHNsS0Y7O0ErRGxsS0E7RUFDRTtFbEN5SUksNkNBTEk7RWtDbElSO0VBQ0E7RUFDQTtFQUNBO0U5QnhJRTtFZUhFLCtDZTZJSjtBL0RxbEtGO0FnRDl0S007RWVpSU47SWZoSVE7RWhEaXVLTjtBQUNGO0ErRHhsS0U7RUFDRTtBL0QwbEtKO0ErRHZsS0U7RUFDRTtFQUNBO0VBQ0E7QS9EeWxLSjs7QStEbmxLQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9Ec2xLRjs7QStEbmxLQTtFQUNFO0VBQ0E7QS9Ec2xLRjs7QXdDaHRLSTtFdUJzSUE7SUFFSTtJQUNBO0UvRDZrS047RStEM2tLTTtJQUNFO0UvRDZrS1I7RStEM2tLUTtJQUNFO0UvRDZrS1Y7RStEMWtLUTtJQUNFO0lBQ0E7RS9ENGtLVjtFK0R4a0tNO0lBQ0U7RS9EMGtLUjtFK0R2a0tNO0lBQ0U7SUFDQTtFL0R5a0tSO0UrRHRrS007SUFDRTtFL0R3a0tSO0UrRHJrS007SUFFRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SWY5TkosZ0JlZ09JO0UvRHFrS1I7RStEbGtLUTtJQUNFO0UvRG9rS1Y7RStEamtLUTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0UvRG1rS1Y7QUFDRjtBd0Nod0tJO0V1QnNJQTtJQUVJO0lBQ0E7RS9ENG5LTjtFK0QxbktNO0lBQ0U7RS9ENG5LUjtFK0QxbktRO0lBQ0U7RS9ENG5LVjtFK0R6bktRO0lBQ0U7SUFDQTtFL0QybktWO0UrRHZuS007SUFDRTtFL0R5bktSO0UrRHRuS007SUFDRTtJQUNBO0UvRHduS1I7RStEcm5LTTtJQUNFO0UvRHVuS1I7RStEcG5LTTtJQUVFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJZjlOSixnQmVnT0k7RS9Eb25LUjtFK0RqbktRO0lBQ0U7RS9EbW5LVjtFK0RobktRO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RS9Ea25LVjtBQUNGO0F3Qy95S0k7RXVCc0lBO0lBRUk7SUFDQTtFL0QycUtOO0UrRHpxS007SUFDRTtFL0QycUtSO0UrRHpxS1E7SUFDRTtFL0QycUtWO0UrRHhxS1E7SUFDRTtJQUNBO0UvRDBxS1Y7RStEdHFLTTtJQUNFO0UvRHdxS1I7RStEcnFLTTtJQUNFO0lBQ0E7RS9EdXFLUjtFK0RwcUtNO0lBQ0U7RS9Ec3FLUjtFK0RucUtNO0lBRUU7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lmOU5KLGdCZWdPSTtFL0RtcUtSO0UrRGhxS1E7SUFDRTtFL0RrcUtWO0UrRC9wS1E7SUFDRTtJQUNBO0lBQ0E7SUFDQTtFL0RpcUtWO0FBQ0Y7QXdDOTFLSTtFdUJzSUE7SUFFSTtJQUNBO0UvRDB0S047RStEeHRLTTtJQUNFO0UvRDB0S1I7RStEeHRLUTtJQUNFO0UvRDB0S1Y7RStEdnRLUTtJQUNFO0lBQ0E7RS9EeXRLVjtFK0RydEtNO0lBQ0U7RS9EdXRLUjtFK0RwdEtNO0lBQ0U7SUFDQTtFL0RzdEtSO0UrRG50S007SUFDRTtFL0RxdEtSO0UrRGx0S007SUFFRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SWY5TkosZ0JlZ09JO0UvRGt0S1I7RStEL3NLUTtJQUNFO0UvRGl0S1Y7RStEOXNLUTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0UvRGd0S1Y7QUFDRjtBd0M3NEtJO0V1QnNJQTtJQUVJO0lBQ0E7RS9EeXdLTjtFK0R2d0tNO0lBQ0U7RS9EeXdLUjtFK0R2d0tRO0lBQ0U7RS9EeXdLVjtFK0R0d0tRO0lBQ0U7SUFDQTtFL0R3d0tWO0UrRHB3S007SUFDRTtFL0Rzd0tSO0UrRG53S007SUFDRTtJQUNBO0UvRHF3S1I7RStEbHdLTTtJQUNFO0UvRG93S1I7RStEandLTTtJQUVFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJZjlOSixnQmVnT0k7RS9EaXdLUjtFK0Q5dktRO0lBQ0U7RS9EZ3dLVjtFK0Q3dktRO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RS9EK3ZLVjtBQUNGO0ErRHR6S0k7RUFFSTtFQUNBO0EvRHV6S1I7QStEcnpLUTtFQUNFO0EvRHV6S1Y7QStEcnpLVTtFQUNFO0EvRHV6S1o7QStEcHpLVTtFQUNFO0VBQ0E7QS9Ec3pLWjtBK0RsektRO0VBQ0U7QS9Eb3pLVjtBK0RqektRO0VBQ0U7RUFDQTtBL0RtektWO0ErRGh6S1E7RUFDRTtBL0RrektWO0ErRC95S1E7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RWY5TkosZ0JlZ09JO0EvRCt5S1Y7QStENXlLVTtFQUNFO0EvRDh5S1o7QStEM3lLVTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0EvRDZ5S1o7O0ErRDV4S0E7O0VBR0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0Q4eEtGOztBK0R4eEtJO0VBQ0U7QS9EMnhLTjs7QWdFcGpMQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RS9CakJFO0FqQ3NrTEo7QWdFampMRTtFQUNFO0VBQ0E7QWhFbWpMSjtBZ0VoakxFO0VBQ0U7RUFDQTtBaEVrakxKO0FnRWhqTEk7RUFDRTtFL0J0QkY7RUFDQTtBakN5a0xKO0FnRWhqTEk7RUFDRTtFL0JiRjtFQUNBO0FqQ2drTEo7QWdFN2lMRTs7RUFFRTtBaEUraUxKOztBZ0UzaUxBO0VBR0U7RUFDQTtFQUNBO0FoRTRpTEY7O0FnRXppTEE7RUFDRTtFQUNBO0FoRTRpTEY7O0FnRXppTEE7RUFDRTtFQUNBO0VBQ0E7QWhFNGlMRjs7QWdFemlMQTtFQUNFO0FoRTRpTEY7O0FnRXBpTEU7RUFDRTtBaEV1aUxKOztBZ0UvaExBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEVraUxGO0FnRWhpTEU7RS9CN0ZFO0FqQ2dvTEo7O0FnRTloTEE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBaEVpaUxGO0FnRS9oTEU7RS9CeEdFO0FqQzBvTEo7O0FnRXhoTEE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBaEUyaExGO0FnRXpoTEU7RUFDRTtFQUNBO0FoRTJoTEo7O0FnRXZoTEE7RUFDRTtFQUNBO0FoRTBoTEY7O0FnRXRoTEE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RS9CMUlFO0FqQ29xTEo7O0FnRXRoTEE7OztFQUdFO0FoRXloTEY7O0FnRXRoTEE7O0UvQjNJSTtFQUNBO0FqQ3NxTEo7O0FnRXZoTEE7O0UvQmxJSTtFQUNBO0FqQzhwTEo7O0FnRWhoTEU7RUFDRTtBaEVtaExKO0F3QzlvTEk7RXdCdUhKO0lBUUk7SUFDQTtFaEVtaExGO0VnRWhoTEU7SUFFRTtJQUNBO0VoRWloTEo7RWdFL2dMSTtJQUNFO0lBQ0E7RWhFaWhMTjtFZ0U1Z0xNO0kvQjNLSjtJQUNBO0VqQzByTEY7RWdFN2dMUTs7SUFHRTtFaEU4Z0xWO0VnRTVnTFE7O0lBR0U7RWhFNmdMVjtFZ0V6Z0xNO0kvQjVLSjtJQUNBO0VqQ3dyTEY7RWdFMWdMUTs7SUFHRTtFaEUyZ0xWO0VnRXpnTFE7O0lBR0U7RWhFMGdMVjtBQUNGOztBaUUvdUxBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpFaXZMRjs7QWlFN3VMQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RXBDMlBJLGVBTEk7RW9DcFBSO0VBQ0E7RUFDQTtFQUNBO0VoQ3RCRTtFZ0N3QkY7RWpCM0JJLDBDaUI0Qko7QWpFZ3ZMRjtBZ0R4d0xNO0VpQldOO0lqQlZRO0VoRDJ3TE47QUFDRjtBaUVudkxFO0VBQ0U7RUFDQTtFQUNBO0FqRXF2TEo7QWlFbnZMSTtFQUNFO0VBQ0E7QWpFcXZMTjtBaUVodkxFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFakJsREUsbURpQm1ERjtBakVrdkxKO0FnRGp5TE07RWlCc0NKO0lqQnJDTTtFaERveUxOO0FBQ0Y7QWlFcHZMRTtFQUNFO0FqRXN2TEo7QWlFbnZMRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FqRXF2TEo7O0FpRWp2TEE7RUFDRTtBakVvdkxGOztBaUVqdkxBO0VBQ0U7RUFDQTtFQUNBO0FqRW92TEY7QWlFbHZMRTtFaEMvREU7RUFDQTtBakNvekxKO0FpRW52TEk7RWhDbEVBO0VBQ0E7QWpDd3pMSjtBaUVsdkxFO0VBQ0U7QWpFb3ZMSjtBaUVodkxFO0VoQzlERTtFQUNBO0FqQ2l6TEo7QWlFaHZMTTtFaENsRUY7RUFDQTtBakNxekxKO0FpRS91TEk7RWhDdkVBO0VBQ0E7QWpDeXpMSjs7QWlFN3VMQTtFQUNFO0FqRWd2TEY7O0FpRXZ1TEU7RUFDRTtBakUwdUxKO0FpRXZ1TEU7RUFDRTtFQUNBO0VoQ3BIQTtBakM4MUxKO0FpRXZ1TEk7RUFBZ0I7QWpFMHVMcEI7QWlFenVMSTtFQUFlO0FqRTR1TG5CO0FpRXp1TE07RWhDM0hGO0FqQ3UyTEo7O0FpRWx1TEk7RUFDRTtFQUNBO0FqRXF1TE47O0FrRS8zTEE7RUFFRTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RXJDK1FJLHlDQUxJO0VxQ3hRUjtFQUNBO0VqQ0FFO0FqQyszTEo7O0FrRXozTEU7RUFDRTtBbEU0M0xKO0FrRTEzTEk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBbEU0M0xOO0FrRXgzTEU7RUFDRTtBbEUwM0xKOztBbUUvNUxBO0VBRUU7RUFDQTtFdEM0UkksK0JBTEk7RXNDclJSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFaENwQkE7RUFDQTtBbkNvN0xGOztBbUU3NUxBO0VBQ0U7RUFDQTtFQUNBO0V0Q2dRSSx5Q0FMSTtFc0N6UFI7RUFDQTtFQUNBO0VBQ0E7RW5CcEJJLHFJbUJxQko7QW5FZzZMRjtBZ0RqN0xNO0VtQlFOO0luQlBRO0VoRG83TE47QUFDRjtBbUVuNkxFO0VBQ0U7RUFDQTtFQUVBO0VBQ0E7QW5FbzZMSjtBbUVqNkxFO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsVW5DMnVDZ0M7RW1DMXVDaEM7QW5FbTZMSjtBbUVoNkxFO0VBRUU7RUFDQTtFbEJ0REYsZ0RrQnVEdUI7RUFDckI7QW5FaTZMSjtBbUU5NUxFO0VBRUU7RUFDQTtFQUNBO0VBQ0E7QW5FKzVMSjs7QW1FMTVMRTtFQUNFLDhDbkM4c0NnQztBaEMrc0pwQztBbUV4NUxNO0VsQzlCRjtFQUNBO0FqQ3k3TEo7QW1FdDVMTTtFbENsREY7RUFDQTtBakMyOExKOztBbUV6NExBO0VDbEdFO0VBQ0E7RXZDMFJJLGtDQUxJO0V1Q25SUjtBcEUrK0xGOztBbUU1NExBO0VDdEdFO0VBQ0E7RXZDMFJJLG1DQUxJO0V1Q25SUjtBcEVzL0xGOztBcUV4L0xBO0VBRUU7RUFDQTtFeEN1UkksNEJBTEk7RXdDaFJSO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RXhDK1FJLG9DQUxJO0V3Q3hRUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RXBDSkU7QWpDNi9MSjtBcUVwL0xFO0VBQ0U7QXJFcy9MSjs7QXFFai9MQTtFQUNFO0VBQ0E7QXJFby9MRjs7QXNFcGhNQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFckNIRTtBakN3aE1KOztBc0VoaE1BO0VBRUU7QXRFa2hNRjs7QXNFOWdNQTtFQUNFLGdCdEM2a0I0QjtFc0M1a0I1QjtBdEVpaE1GOztBc0V6Z01BO0VBQ0UsbUJ0Q28rQzhCO0FoQ3dpSmhDO0FzRXpnTUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0RTJnTUo7O0FzRW5nTUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBdEVzZ01KOztBc0UxZ01FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QXRFNmdNSjs7QXNFamhNRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0F0RW9oTUo7O0FzRXhoTUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBdEUyaE1KOztBc0UvaE1FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QXRFa2lNSjs7QXNFdGlNRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0F0RXlpTUo7O0FzRTdpTUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBdEVnak1KOztBc0Vwak1FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QXRFdWpNSjs7QXNFM2pNRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0F0RThqTUo7O0FzRWxrTUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBdEVxa01KOztBc0V6a01FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QXRFNGtNSjs7QXNFaGxNRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0F0RW1sTUo7O0F1RS9vTUU7RUFDRTtJQUFLLDJCdkN1aEQyQjtFaEM0bkpsQztBQUNGO0F1RS9vTUE7O0VBR0U7RTFDa1JJLGdDQUxJO0UwQzNRUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RTFDc1FJLHVDQUxJO0UwQy9QUjtFdENSRTtBakN1cE1KOztBdUUxb01BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFdkJ4QkksNkN1QnlCSjtBdkU2b01GO0FnRGxxTU07RXVCWU47SXZCWFE7RWhEcXFNTjtBQUNGOztBdUUvb01BO0V0QkFFO0VzQkVBO0F2RWtwTUY7O0F1RS9vTUE7RUFDRTtBdkVrcE1GOztBdUUvb01BO0VBQ0U7QXZFa3BNRjs7QXVFOW9NRTtFQUNFO0F2RWlwTUo7QXVFOW9NTTtFQUpKO0lBS007RXZFaXBNTjtBQUNGOztBd0U3c01BO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUNBO0V2Q1hFO0FqQ3V0TUo7O0F3RXhzTUE7RUFDRTtFQUNBO0F4RTJzTUY7QXdFenNNRTtFQUVFO0VBQ0E7QXhFMHNNSjs7QXdFanNNQTtFQUNFO0VBQ0E7RUFDQTtBeEVvc01GO0F3RWpzTUU7RUFFRTtFQUNBO0VBQ0E7RUFDQTtBeEVrc01KO0F3RS9yTUU7RUFDRTtFQUNBO0F4RWlzTUo7O0F3RXpyTUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEU0ck1GO0F3RTFyTUU7RXZDdkRFO0VBQ0E7QWpDb3ZNSjtBd0Uxck1FO0V2QzdDRTtFQUNBO0FqQzB1TUo7QXdFMXJNRTtFQUVFO0VBQ0E7RUFDQTtBeEUyck1KO0F3RXZyTUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBeEV5ck1KO0F3RXJyTUU7RUFDRTtBeEV1ck1KO0F3RXJyTUk7RUFDRTtFQUNBO0F4RXVyTU47O0F3RTFxTUk7RUFDRTtBeEU2cU1OO0F3RTFxTVE7RXZDdkRKO0VBWkE7QWpDaXZNSjtBd0V6cU1RO0V2Q3hFSjtFQVlBO0FqQ3l1TUo7QXdFeHFNUTtFQUNFO0F4RTBxTVY7QXdFdnFNUTtFQUNFO0VBQ0E7QXhFeXFNVjtBd0V2cU1VO0VBQ0U7RUFDQTtBeEV5cU1aOztBd0Mvdk1JO0VnQzhEQTtJQUNFO0V4RXFzTUo7RXdFbHNNTTtJdkN2REo7SUFaQTtFakN5d01GO0V3RWpzTU07SXZDeEVKO0lBWUE7RWpDaXdNRjtFd0Voc01NO0lBQ0U7RXhFa3NNUjtFd0Uvck1NO0lBQ0U7SUFDQTtFeEVpc01SO0V3RS9yTVE7SUFDRTtJQUNBO0V4RWlzTVY7QUFDRjtBd0N4eE1JO0VnQzhEQTtJQUNFO0V4RTZ0TUo7RXdFMXRNTTtJdkN2REo7SUFaQTtFakNpeU1GO0V3RXp0TU07SXZDeEVKO0lBWUE7RWpDeXhNRjtFd0V4dE1NO0lBQ0U7RXhFMHRNUjtFd0V2dE1NO0lBQ0U7SUFDQTtFeEV5dE1SO0V3RXZ0TVE7SUFDRTtJQUNBO0V4RXl0TVY7QUFDRjtBd0Noek1JO0VnQzhEQTtJQUNFO0V4RXF2TUo7RXdFbHZNTTtJdkN2REo7SUFaQTtFakN5ek1GO0V3RWp2TU07SXZDeEVKO0lBWUE7RWpDaXpNRjtFd0Vodk1NO0lBQ0U7RXhFa3ZNUjtFd0UvdU1NO0lBQ0U7SUFDQTtFeEVpdk1SO0V3RS91TVE7SUFDRTtJQUNBO0V4RWl2TVY7QUFDRjtBd0N4ME1JO0VnQzhEQTtJQUNFO0V4RTZ3TUo7RXdFMXdNTTtJdkN2REo7SUFaQTtFakNpMU1GO0V3RXp3TU07SXZDeEVKO0lBWUE7RWpDeTBNRjtFd0V4d01NO0lBQ0U7RXhFMHdNUjtFd0V2d01NO0lBQ0U7SUFDQTtFeEV5d01SO0V3RXZ3TVE7SUFDRTtJQUNBO0V4RXl3TVY7QUFDRjtBd0NoMk1JO0VnQzhEQTtJQUNFO0V4RXF5TUo7RXdFbHlNTTtJdkN2REo7SUFaQTtFakN5Mk1GO0V3RWp5TU07SXZDeEVKO0lBWUE7RWpDaTJNRjtFd0VoeU1NO0lBQ0U7RXhFa3lNUjtFd0UveE1NO0lBQ0U7SUFDQTtFeEVpeU1SO0V3RS94TVE7SUFDRTtJQUNBO0V4RWl5TVY7QUFDRjtBd0VweE1BO0V2Q2hKSTtBakN1Nk1KO0F3RXB4TUU7RUFDRTtBeEVzeE1KO0F3RXB4TUk7RUFDRTtBeEVzeE1OOztBd0V6d01FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhFNHdNSjs7QXdFdHhNRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4RXl4TUo7O0F3RW55TUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEVzeU1KOztBd0Voek1FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhFbXpNSjs7QXdFN3pNRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4RWcwTUo7O0F3RTEwTUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEU2ME1KOztBd0V2MU1FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhFMDFNSjs7QXdFcDJNRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4RXUyTUo7O0F3RWozTUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEVvM01KOztBd0U5M01FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhFaTRNSjs7QXdFMzRNRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4RTg0TUo7O0F3RXg1TUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEUyNU1KOztBeUV2bE5BO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0EsVXpDbXBEMkI7RXlDbHBEM0IsV3pDa3BEMkI7RXlDanBEM0I7RUFDQTtFQUNBO0VBQ0E7RXhDSkU7RXdDTUY7QXpFdWxORjtBeUVwbE5FO0VBQ0U7RUFDQTtFQUNBO0F6RXNsTko7QXlFbmxORTtFQUNFO0VBQ0E7RUFDQTtBekVxbE5KO0F5RWxsTkU7RUFFRTtFQUNBO0VBQ0E7QXpFbWxOSjs7QXlFM2tOQTtFQUhFO0F6RWtsTkY7O0F5RXprTkk7RUFURjtBekVzbE5GOztBMEV2b05BO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFN0N5UkksOEJBTEk7RTZDbFJSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RTdDMlFJLG9DQUxJO0U2Q3BRUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RXpDUkU7QWpDZ3BOSjtBMEVyb05FO0VBQ0U7QTFFdW9OSjtBMEVwb05FO0VBQ0U7QTFFc29OSjs7QTBFbG9OQTtFQUNFO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUVvb05GO0EwRWxvTkU7RUFDRTtBMUVvb05KOztBMEVob05BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RXpDaENFO0VBQ0E7QWpDb3FOSjtBMEVsb05FO0VBQ0U7RUFDQTtBMUVvb05KOztBMEVob05BO0VBQ0U7RUFDQTtBMUVtb05GOztBMkVqc05BO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7QTNFK3JORjs7QTJFeHJOQTtFQUNFO0VBQ0E7RUFDQTtFQUVBO0EzRTByTkY7QTJFdnJORTtFM0I1Q0ksbUMyQjZDRjtFQUNBLDhCM0NnOENnQztBaEN5dktwQztBZ0RudU5NO0UyQndDSjtJM0J2Q007RWhEc3VOTjtBQUNGO0EyRTVyTkU7RUFDRSxlM0M4N0NnQztBaENnd0twQztBMkUxck5FO0VBQ0Usc0IzQzI3Q2dDO0FoQ2l3S3BDOztBMkV4ck5BO0VBQ0U7QTNFMnJORjtBMkV6ck5FO0VBQ0U7RUFDQTtBM0Uyck5KO0EyRXhyTkU7RUFDRTtBM0Uwck5KOztBMkV0ck5BO0VBQ0U7RUFDQTtFQUNBO0EzRXlyTkY7O0EyRXJyTkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RTFDckZFO0UwQ3lGRjtBM0Vxck5GOztBMkVqck5BO0VBRUU7RUFDQTtFQUNBO0VDbEhBO0VBQ0E7RUFDQTtFQUNBLGtDRGtIMEI7RUNqSDFCO0VBQ0E7RUFDQSx1Q0QrRzREO0EzRXVyTjlEO0E0RW55TkU7RUFBUztBNUVzeU5YO0E0RXJ5TkU7RUFBUyxtQ0QyR2lGO0EzRTZyTjVGOztBMkV4ck5BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0UxQ3RHRTtFQUNBO0FqQ2t5Tko7QTJFMXJORTtFQUNFO0VBQ0E7QTNFNHJOSjs7QTJFdnJOQTtFQUNFO0VBQ0E7QTNFMHJORjs7QTJFcnJOQTtFQUNFO0VBR0E7RUFDQTtBM0Vzck5GOztBMkVsck5BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFMUMxSEU7RUFDQTtBakNnek5KO0EyRWpyTkU7RUFDRTtBM0Vtck5KOztBd0MveE5JO0VtQ2tIRjtJQUNFO0lBQ0E7RTNFaXJORjtFMkU3cU5BO0lBQ0U7SUFDQTtJQUNBO0UzRStxTkY7RTJFNXFOQTtJQUNFO0UzRThxTkY7QUFDRjtBd0M5eU5JO0VtQ29JRjs7SUFFRTtFM0U2cU5GO0FBQ0Y7QXdDcHpOSTtFbUMySUY7SUFDRTtFM0U0cU5GO0FBQ0Y7QTJFbnFOSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0EzRXFxTk47QTJFbnFOTTtFQUNFO0VBQ0E7RTFDMU1KO0FqQ2czTko7QTJFbHFOTTs7RTFDOU1GO0FqQ28zTko7QTJFanFOTTtFQUNFO0EzRW1xTlI7O0F3Qzl6Tkk7RW1DeUlBO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RTNFeXJOSjtFMkV2ck5JO0lBQ0U7SUFDQTtJMUMxTUo7RWpDbzRORjtFMkV0ck5JOztJMUM5TUY7RWpDdzRORjtFMkVyck5JO0lBQ0U7RTNFdXJOTjtBQUNGO0F3Q24xTkk7RW1DeUlBO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RTNFNnNOSjtFMkUzc05JO0lBQ0U7SUFDQTtJMUMxTUo7RWpDdzVORjtFMkUxc05JOztJMUM5TUY7RWpDNDVORjtFMkV6c05JO0lBQ0U7RTNFMnNOTjtBQUNGO0F3Q3YyTkk7RW1DeUlBO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RTNFaXVOSjtFMkUvdE5JO0lBQ0U7SUFDQTtJMUMxTUo7RWpDNDZORjtFMkU5dE5JOztJMUM5TUY7RWpDZzdORjtFMkU3dE5JO0lBQ0U7RTNFK3ROTjtBQUNGO0F3QzMzTkk7RW1DeUlBO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RTNFcXZOSjtFMkVudk5JO0lBQ0U7SUFDQTtJMUMxTUo7RWpDZzhORjtFMkVsdk5JOztJMUM5TUY7RWpDbzhORjtFMkVqdk5JO0lBQ0U7RTNFbXZOTjtBQUNGO0F3Qy80Tkk7RW1DeUlBO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RTNFeXdOSjtFMkV2d05JO0lBQ0U7SUFDQTtJMUMxTUo7RWpDbzlORjtFMkV0d05JOztJMUM5TUY7RWpDdzlORjtFMkVyd05JO0lBQ0U7RTNFdXdOTjtBQUNGO0E2RTkrTkE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VoRHdSSSxnQ0FMSTtFZ0RqUlI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VDbEJBLHNDOUMrbEI0QjtFOEM3bEI1QjtFQUNBLGdCOUN3bUI0QjtFOEN2bUI1QixnQjlDK21CNEI7RThDOW1CNUI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RWpEZ1JJLHNDQUxJO0VnRGhRUjtFQUNBO0E3RXMvTkY7QTZFcC9ORTtFQUFTO0E3RXUvTlg7QTZFci9ORTtFQUNFO0VBQ0E7RUFDQTtBN0V1L05KO0E2RXIvTkk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBN0V1L05OOztBNkVsL05BO0VBQ0U7QTdFcS9ORjtBNkVuL05FO0VBQ0U7RUFDQTtFQUNBO0E3RXEvTko7O0E2RWovTkE7QUFDQTtFQUNFO0VBQ0E7RUFDQTtBN0VvL05GO0E2RWwvTkU7RUFDRTtFQUNBO0VBQ0E7QTdFby9OSjs7QTZFaC9OQTtBQUVBO0VBQ0U7QTdFay9ORjtBNkVoL05FO0VBQ0U7RUFDQTtFQUNBO0E3RWsvTko7O0E2RTkrTkE7QUFDQTtFQUNFO0VBQ0E7RUFDQTtBN0VpL05GO0E2RS8rTkU7RUFDRTtFQUNBO0VBQ0E7QTdFaS9OSjs7QTZFNytOQTtBQWtCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RTVDakdFO0FqQ2lrT0o7O0ErRXBsT0E7RUFFRTtFQUNBO0VsRDRSSSxnQ0FMSTtFa0RyUlI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFbERtUkksbUNBTEk7RWtENVFSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUR6QkEsc0M5QytsQjRCO0U4QzdsQjVCO0VBQ0EsZ0I5Q3dtQjRCO0U4Q3ZtQjVCLGdCOUMrbUI0QjtFOEM5bUI1QjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFakRnUkksc0NBTEk7RWtEMVBSO0VBQ0E7RUFDQTtFQUNBO0U5Q2hCRTtBakMrbU9KO0ErRTNsT0U7RUFDRTtFQUNBO0VBQ0E7QS9FNmxPSjtBK0UzbE9JO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvRTRsT047O0ErRXRsT0U7RUFDRTtBL0V5bE9KO0ErRXZsT0k7RUFFRTtBL0V3bE9OO0ErRXJsT0k7RUFDRTtFQUNBO0EvRXVsT047QStFcGxPSTtFQUNFO0VBQ0E7QS9Fc2xPTjs7QStFamxPQTtBQUVFO0VBQ0U7RUFDQTtFQUNBO0EvRW1sT0o7QStFamxPSTtFQUVFO0EvRWtsT047QStFL2tPSTtFQUNFO0VBQ0E7QS9FaWxPTjtBK0U5a09JO0VBQ0U7RUFDQTtBL0VnbE9OOztBK0Uza09BO0FBR0U7RUFDRTtBL0U0a09KO0ErRTFrT0k7RUFFRTtBL0Uya09OO0ErRXhrT0k7RUFDRTtFQUNBO0EvRTBrT047QStFdmtPSTtFQUNFO0VBQ0E7QS9FeWtPTjtBK0Vwa09FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0Vza09KOztBK0Vsa09BO0FBRUU7RUFDRTtFQUNBO0VBQ0E7QS9Fb2tPSjtBK0Vsa09JO0VBRUU7QS9FbWtPTjtBK0Voa09JO0VBQ0U7RUFDQTtBL0Vra09OO0ErRS9qT0k7RUFDRTtFQUNBO0EvRWlrT047O0ErRTVqT0E7QUFrQkE7RUFDRTtFQUNBO0VsRDJHSSw2Q0FMSTtFa0RwR1I7RUFDQTtFQUNBO0U5QzVKRTtFQUNBO0FqQzJzT0o7QStFN2lPRTtFQUNFO0EvRStpT0o7O0ErRTNpT0E7RUFDRTtFQUNBO0EvRThpT0Y7O0FnRm51T0E7RUFDRTtBaEZzdU9GOztBZ0ZudU9BO0VBQ0U7QWhGc3VPRjs7QWdGbnVPQTtFQUNFO0VBQ0E7RUFDQTtBaEZzdU9GO0FpRjV2T0U7RUFDRTtFQUNBO0VBQ0E7QWpGOHZPSjs7QWdGdnVPQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFaENsQkksc0NnQ21CSjtBaEYwdU9GO0FnRHp2T007RWdDUU47SWhDUFE7RWhENHZPTjtBQUNGOztBZ0Y1dU9BOzs7RUFHRTtBaEYrdU9GOztBZ0Y1dU9BOztFQUVFO0FoRit1T0Y7O0FnRjV1T0E7O0VBRUU7QWhGK3VPRjs7QWdGdHVPRTtFQUNFO0VBQ0E7RUFDQTtBaEZ5dU9KO0FnRnR1T0U7OztFQUdFO0VBQ0E7QWhGd3VPSjtBZ0ZydU9FOztFQUVFO0VBQ0E7RWhDNURFLDJCZ0M2REY7QWhGdXVPSjtBZ0RoeU9NO0VnQ3FESjs7SWhDcERNO0VoRG95T047QUFDRjs7QWdGcHVPQTs7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBLFVoRGdoRG1DO0VnRC9nRG5DO0VBQ0EsY2hGcEVNO0VnRnFFTjtFQUNBO0VBQ0E7RUFDQSxZaEQyZ0RtQztFZ0JqbUQvQiw4QmdDdUZKO0FoRnN1T0Y7QWdEenpPTTtFZ0NrRU47O0loQ2pFUTtFaEQ2ek9OO0FBQ0Y7QWdGenVPRTs7O0VBRUUsY2hGOUVJO0VnRitFSjtFQUNBO0VBQ0EsWWhEbWdEaUM7QWhDeXVMckM7O0FnRnp1T0E7RUFDRTtBaEY0dU9GOztBZ0Z6dU9BO0VBQ0U7QWhGNHVPRjs7QWdGdnVPQTs7RUFFRTtFQUNBLFdoRG9nRG1DO0VnRG5nRG5DLFloRG1nRG1DO0VnRGxnRG5DO0VBQ0E7RUFDQTtBaEYwdU9GOztBZ0Z2dU9BOzs7Ozs7O0dBQUE7QUFRQTtFQUNFO0FoRjB1T0Y7O0FnRnh1T0E7RUFDRTtBaEYydU9GOztBZ0ZudU9BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBLGlCaEQ0OENtQztFZ0QzOENuQztFQUNBLGdCaEQwOENtQztBaEMyeExyQztBZ0ZudU9FO0VBQ0U7RUFDQTtFQUNBLFdoRDA4Q2lDO0VnRHo4Q2pDLFdoRDA4Q2lDO0VnRHo4Q2pDO0VBQ0EsaUJoRDA4Q2lDO0VnRHo4Q2pDLGdCaER5OENpQztFZ0R4OENqQztFQUNBO0VBQ0EseUJoRnBKSTtFZ0ZxSko7RUFDQTtFQUVBO0VBQ0E7RUFDQSxZaERpOENpQztFZ0J6bUQvQiw2QmdDeUtGO0FoRm91T0o7QWdEejRPTTtFZ0NvSko7SWhDbkpNO0VoRDQ0T047QUFDRjtBZ0Z0dU9FO0VBQ0UsVWhEODdDaUM7QWhDMHlMckM7O0FnRi90T0E7RUFDRTtFQUNBO0VBQ0EsZWhEdzdDbUM7RWdEdjdDbkM7RUFDQSxvQmhEcTdDbUM7RWdEcDdDbkMsdUJoRG83Q21DO0VnRG43Q25DLGNoRi9LTTtFZ0ZnTE47QWhGa3VPRjs7QWdGNXRPRTs7RUFFRSxnQ2hEeTdDaUM7QWhDc3lMckM7QWdGNXRPRTtFQUNFLHNCaER4TU87QWhDczZPWDtBZ0YzdE9FO0VBQ0UsV2hENU1PO0FoQ3k2T1g7O0FnRnZ1T0U7OztFQUVFLGdDaER5N0NpQztBaENrekxyQztBZ0Z4dU9FO0VBQ0Usc0JoRHhNTztBaENrN09YO0FnRnZ1T0U7RUFDRSxXaEQ1TU87QWhDcTdPWDs7QWtGbjhPQTs7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7QWxGcThPRjs7QWtGajhPQTtFQUNFO0lBQUs7RWxGcThPTDtBQUNGO0FrRmw4T0E7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0FsRmk4T0Y7O0FrRjk3T0E7RUFFRTtFQUNBO0VBQ0E7QWxGZzhPRjs7QWtGdjdPQTtFQUNFO0lBQ0U7RWxGMDdPRjtFa0Z4N09BO0lBQ0U7SUFDQTtFbEYwN09GO0FBQ0Y7QWtGdDdPQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0FsRnE3T0Y7O0FrRmw3T0E7RUFDRTtFQUNBO0FsRnE3T0Y7O0FrRmo3T0U7RUFDRTs7SUFFRTtFbEZvN09KO0FBQ0Y7QW1GcGdQQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkZxZ1BGOztBd0N4OE9JO0UyQzVDRjtJQUVJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SW5DNUJBLDBDbUM4QkE7RW5Gcy9PSjtBQUNGO0FnRGpoUE07RW1DWUo7SW5DWE07RWhEb2hQTjtBQUNGO0F3Qzk5T0k7RTJDNUJFO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkY2L09OO0VtRjEvT0k7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuRjQvT047RW1Gei9PSTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuRjIvT047RW1GeC9PSTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkYwL09OO0VtRnYvT0k7SUFFRTtFbkZ3L09OO0VtRnIvT0k7SUFHRTtFbkZxL09OO0FBQ0Y7QXdDbGhQSTtFMkMvQkY7SUFpRU07SUFDQTtJQUNBO0VuRm8vT047RW1GbC9PTTtJQUNFO0VuRm8vT1I7RW1Gai9PTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RW5Gay9PUjtBQUNGOztBd0N0aFBJO0UyQzVDRjtJQUVJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SW5DNUJBLDBDbUM4QkE7RW5Gb2tQSjtBQUNGO0FnRC9sUE07RW1DWUo7SW5DWE07RWhEa21QTjtBQUNGO0F3QzVpUEk7RTJDNUJFO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkYya1BOO0VtRnhrUEk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuRjBrUE47RW1GdmtQSTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuRnlrUE47RW1GdGtQSTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkZ3a1BOO0VtRnJrUEk7SUFFRTtFbkZza1BOO0VtRm5rUEk7SUFHRTtFbkZta1BOO0FBQ0Y7QXdDaG1QSTtFMkMvQkY7SUFpRU07SUFDQTtJQUNBO0VuRmtrUE47RW1GaGtQTTtJQUNFO0VuRmtrUFI7RW1GL2pQTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RW5GZ2tQUjtBQUNGOztBd0NwbVBJO0UyQzVDRjtJQUVJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SW5DNUJBLDBDbUM4QkE7RW5Ga3BQSjtBQUNGO0FnRDdxUE07RW1DWUo7SW5DWE07RWhEZ3JQTjtBQUNGO0F3QzFuUEk7RTJDNUJFO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkZ5cFBOO0VtRnRwUEk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuRndwUE47RW1GcnBQSTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuRnVwUE47RW1GcHBQSTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkZzcFBOO0VtRm5wUEk7SUFFRTtFbkZvcFBOO0VtRmpwUEk7SUFHRTtFbkZpcFBOO0FBQ0Y7QXdDOXFQSTtFMkMvQkY7SUFpRU07SUFDQTtJQUNBO0VuRmdwUE47RW1GOW9QTTtJQUNFO0VuRmdwUFI7RW1GN29QTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RW5GOG9QUjtBQUNGOztBd0NsclBJO0UyQzVDRjtJQUVJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SW5DNUJBLDBDbUM4QkE7RW5GZ3VQSjtBQUNGO0FnRDN2UE07RW1DWUo7SW5DWE07RWhEOHZQTjtBQUNGO0F3Q3hzUEk7RTJDNUJFO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkZ1dVBOO0VtRnB1UEk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuRnN1UE47RW1GbnVQSTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuRnF1UE47RW1GbHVQSTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkZvdVBOO0VtRmp1UEk7SUFFRTtFbkZrdVBOO0VtRi90UEk7SUFHRTtFbkYrdFBOO0FBQ0Y7QXdDNXZQSTtFMkMvQkY7SUFpRU07SUFDQTtJQUNBO0VuRjh0UE47RW1GNXRQTTtJQUNFO0VuRjh0UFI7RW1GM3RQTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RW5GNHRQUjtBQUNGOztBd0Nod1BJO0UyQzVDRjtJQUVJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SW5DNUJBLDBDbUM4QkE7RW5GOHlQSjtBQUNGO0FnRHowUE07RW1DWUo7SW5DWE07RWhENDBQTjtBQUNGO0F3Q3R4UEk7RTJDNUJFO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkZxelBOO0VtRmx6UEk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuRm96UE47RW1GanpQSTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuRm16UE47RW1GaHpQSTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkZrelBOO0VtRi95UEk7SUFFRTtFbkZnelBOO0VtRjd5UEk7SUFHRTtFbkY2eVBOO0FBQ0Y7QXdDMTBQSTtFMkMvQkY7SUFpRU07SUFDQTtJQUNBO0VuRjR5UE47RW1GMXlQTTtJQUNFO0VuRjR5UFI7RW1GenlQTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RW5GMHlQUjtBQUNGOztBbUYxM1BFO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFbkM1QkEsMENtQzhCQTtBbkYyM1BOO0FnRHI1UE07RW1DWUo7SW5DWE07RWhEdzVQTjtBQUNGO0FtRjkzUE07RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuRmc0UFI7QW1GNzNQTTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5GKzNQUjtBbUY1M1BNO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5GODNQUjtBbUYzM1BNO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuRjYzUFI7QW1GMTNQTTtFQUVFO0FuRjIzUFI7QW1GeDNQTTtFQUdFO0FuRnczUFI7O0FtRjcxUEE7RVBwSEU7RUFDQTtFQUNBO0VBQ0EsYTVDMG1Da0M7RTRDem1DbEM7RUFDQTtFQUNBLHNCNUNVUztBaEMyOFBYO0E0RWw5UEU7RUFBUztBNUVxOVBYO0E0RXA5UEU7RUFBUyxZNUNpK0N5QjtBaENzL01wQzs7QW1GejJQQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FuRjQyUEY7QW1GMTJQRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FuRjQyUEo7O0FtRngyUEE7RUFDRTtFQUNBO0FuRjIyUEY7O0FtRngyUEE7RUFDRTtFQUNBO0VBQ0E7QW5GMjJQRjs7QW9GMy9QQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZcERnekNrQztBaEM4c05wQztBb0Y1L1BFO0VBQ0U7RUFDQTtBcEY4L1BKOztBb0Z6L1BBO0VBQ0U7QXBGNC9QRjs7QW9Gei9QQTtFQUNFO0FwRjQvUEY7O0FvRnovUEE7RUFDRTtBcEY0L1BGOztBb0Z2L1BFO0VBQ0U7QXBGMC9QSjs7QW9GdC9QQTtFQUNFO0lBQ0UsWXBEbXhDZ0M7RWhDc3VObEM7QUFDRjtBb0Z0L1BBO0VBQ0U7RUFDQTtFQUNBO0FwRncvUEY7O0FvRnIvUEE7RUFDRTtJQUNFO0VwRncvUEY7QUFDRjtBaUZ2aVFFO0VBQ0U7RUFDQTtFQUNBO0FqRnlpUUo7O0FxRjVpUUU7RUFDRTtFQUNBO0FyRitpUUo7O0FxRmpqUUU7RUFDRTtFQUNBO0FyRm9qUUo7O0FxRnRqUUU7RUFDRTtFQUNBO0FyRnlqUUo7O0FxRjNqUUU7RUFDRTtFQUNBO0FyRjhqUUo7O0FxRmhrUUU7RUFDRTtFQUNBO0FyRm1rUUo7O0FxRnJrUUU7RUFDRTtFQUNBO0FyRndrUUo7O0FxRjFrUUU7RUFDRTtFQUNBO0FyRjZrUUo7O0FxRi9rUUU7RUFDRTtFQUNBO0FyRmtsUUo7O0FxRnBsUUU7RUFDRTtFQUNBO0FyRnVsUUo7O0FxRnpsUUU7RUFDRTtFQUNBO0FyRjRsUUo7O0FxRjlsUUU7RUFDRTtFQUNBO0FyRmltUUo7O0FxRm5tUUU7RUFDRTtFQUNBO0FyRnNtUUo7O0FzRnhtUUU7RUFDRTtFQUNBO0F0RjJtUUo7QXNGeG1RTTtFQUdFO0VBQ0E7QXRGd21RUjs7QXNGam5RRTtFQUNFO0VBQ0E7QXRGb25RSjtBc0ZqblFNO0VBR0U7RUFDQTtBdEZpblFSOztBc0YxblFFO0VBQ0U7RUFDQTtBdEY2blFKO0FzRjFuUU07RUFHRTtFQUNBO0F0RjBuUVI7O0FzRm5vUUU7RUFDRTtFQUNBO0F0RnNvUUo7QXNGbm9RTTtFQUdFO0VBQ0E7QXRGbW9RUjs7QXNGNW9RRTtFQUNFO0VBQ0E7QXRGK29RSjtBc0Y1b1FNO0VBR0U7RUFDQTtBdEY0b1FSOztBc0ZycFFFO0VBQ0U7RUFDQTtBdEZ3cFFKO0FzRnJwUU07RUFHRTtFQUNBO0F0RnFwUVI7O0FzRjlwUUU7RUFDRTtFQUNBO0F0RmlxUUo7QXNGOXBRTTtFQUdFO0VBQ0E7QXRGOHBRUjs7QXNGdnFRRTtFQUNFO0VBQ0E7QXRGMHFRSjtBc0Z2cVFNO0VBR0U7RUFDQTtBdEZ1cVFSOztBc0ZoclFFO0VBQ0U7RUFDQTtBdEZtclFKO0FzRmhyUU07RUFHRTtFQUNBO0F0RmdyUVI7O0FzRnpyUUU7RUFDRTtFQUNBO0F0RjRyUUo7QXNGenJRTTtFQUdFO0VBQ0E7QXRGeXJRUjs7QXNGbHNRRTtFQUNFO0VBQ0E7QXRGcXNRSjtBc0Zsc1FNO0VBR0U7RUFDQTtBdEZrc1FSOztBc0Yzc1FFO0VBQ0U7RUFDQTtBdEY4c1FKO0FzRjNzUU07RUFHRTtFQUNBO0F0RjJzUVI7O0FzRnBzUUE7RUFDRTtFQUNBO0F0RnVzUUY7QXNGcHNRSTtFQUVFO0VBQ0E7QXRGcXNRTjs7QXVGL3RRQTtFQUNFO0VBRUE7QXZGaXVRRjs7QXdGcHVRQTtFQUNFO0VBQ0EsYXhENmM0QjtFd0Q1YzVCO0VBQ0E7RUFDQSw2QnhEMmM0QjtFd0QxYzVCO0F4RnV1UUY7QXdGcnVRRTtFQUNFO0VBQ0EsVXhEdWMwQjtFd0R0YzFCLFd4RHNjMEI7RXdEcmMxQjtFeENJRSxzQ3dDSEY7QXhGdXVRSjtBZ0RodVFNO0V3Q1pKO0l4Q2FNO0VoRG11UU47QUFDRjs7QXdGcnVRSTtFQUNFO0F4Rnd1UU47O0F5RjN2UUE7RUFDRTtFQUNBO0F6Rjh2UUY7QXlGNXZRRTtFQUNFO0VBQ0E7RUFDQTtBekY4dlFKO0F5RjN2UUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6RjZ2UUo7O0F5Rnh2UUU7RUFDRTtBekYydlFKOztBeUY1dlFFO0VBQ0U7QXpGK3ZRSjs7QXlGaHdRRTtFQUNFO0F6Rm13UUo7O0F5RnB3UUU7RUFDRTtBekZ1d1FKOztBMEY1eFFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxhMUR1bUNrQztBaEN3ck9wQzs7QTBGNXhRQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsYTFEK2xDa0M7QWhDZ3NPcEM7O0EwRnZ4UUk7RUFDRTtFQUNBO0VBQ0EsYTFEbWxDOEI7QWhDdXNPcEM7O0EwRnZ4UUk7RUFDRTtFQUNBO0VBQ0EsYTFENmtDOEI7QWhDNnNPcEM7O0F3QzN2UUk7RWtEeENBO0lBQ0U7SUFDQTtJQUNBLGExRG1sQzhCO0VoQ290T2xDO0UwRnB5UUU7SUFDRTtJQUNBO0lBQ0EsYTFENmtDOEI7RWhDeXRPbEM7QUFDRjtBd0N4d1FJO0VrRHhDQTtJQUNFO0lBQ0E7SUFDQSxhMURtbEM4QjtFaENndU9sQztFMEZoelFFO0lBQ0U7SUFDQTtJQUNBLGExRDZrQzhCO0VoQ3F1T2xDO0FBQ0Y7QXdDcHhRSTtFa0R4Q0E7SUFDRTtJQUNBO0lBQ0EsYTFEbWxDOEI7RWhDNHVPbEM7RTBGNXpRRTtJQUNFO0lBQ0E7SUFDQSxhMUQ2a0M4QjtFaENpdk9sQztBQUNGO0F3Q2h5UUk7RWtEeENBO0lBQ0U7SUFDQTtJQUNBLGExRG1sQzhCO0VoQ3d2T2xDO0UwRngwUUU7SUFDRTtJQUNBO0lBQ0EsYTFENmtDOEI7RWhDNnZPbEM7QUFDRjtBd0M1eVFJO0VrRHhDQTtJQUNFO0lBQ0E7SUFDQSxhMURtbEM4QjtFaENvd09sQztFMEZwMVFFO0lBQ0U7SUFDQTtJQUNBLGExRDZrQzhCO0VoQ3l3T2xDO0FBQ0Y7QTJGdDNRQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0EzRnczUUY7O0EyRnIzUUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBM0Z3M1FGOztBNEZoNFFBOztFQ0lFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdGaTRRRjtBNkY5M1FFOztFQUNFO0E3Rmk0UUo7O0E4Ri80UUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsVTlEZ2NzQztFOEQvYnRDO0E5Rms1UUo7O0ErRjE1UUE7RUNBRTtFQUNBO0VBQ0E7QWhHODVRRjs7QWlHcDZRQTtFQUNFO0VBQ0E7RUFDQSw2QmpFaXNCNEI7RWlFaHNCNUI7RUFDQTtFQUNBLGFqRTJyQjRCO0FoQzR1UDlCOztBa0czMlFRO0VBT0k7QWxHdzJRWjs7QWtHLzJRUTtFQU9JO0FsRzQyUVo7O0FrR24zUVE7RUFPSTtBbEdnM1FaOztBa0d2M1FRO0VBT0k7QWxHbzNRWjs7QWtHMzNRUTtFQU9JO0FsR3czUVo7O0FrRy8zUVE7RUFPSTtBbEc0M1FaOztBa0duNFFRO0VBT0k7QWxHZzRRWjs7QWtHdjRRUTtFQU9JO0FsR280UVo7O0FrRzM0UVE7RUFPSTtBbEd3NFFaOztBa0cvNFFRO0VBT0k7QWxHNDRRWjs7QWtHbjVRUTtFQU9JO0FsR2c1UVo7O0FrR3Y1UVE7RUFPSTtBbEdvNVFaOztBa0czNVFRO0VBT0k7QWxHdzVRWjs7QWtHLzVRUTtFQU9JO0FsRzQ1UVo7O0FrR242UVE7RUFPSTtBbEdnNlFaOztBa0d2NlFRO0VBT0k7QWxHbzZRWjs7QWtHMzZRUTtFQU9JO0FsR3c2UVo7O0FrRy82UVE7RUFPSTtBbEc0NlFaOztBa0duN1FRO0VBT0k7QWxHZzdRWjs7QWtHdjdRUTtFQU9JO0FsR283UVo7O0FrRzM3UVE7RUFPSTtBbEd3N1FaOztBa0cvN1FRO0VBT0k7QWxHNDdRWjs7QWtHbjhRUTtFQU9JO0FsR2c4UVo7O0FrR3Y4UVE7RUFPSTtBbEdvOFFaOztBa0czOFFRO0VBT0k7QWxHdzhRWjs7QWtHLzhRUTtFQU9JO0FsRzQ4UVo7O0FrR245UVE7RUFPSTtBbEdnOVFaOztBa0d2OVFRO0VBT0k7QWxHbzlRWjs7QWtHMzlRUTtFQU9JO0FsR3c5UVo7O0FrRy85UVE7RUFPSTtBbEc0OVFaOztBa0duK1FRO0VBT0k7QWxHZytRWjs7QWtHditRUTtFQU9JO0FsR28rUVo7O0FrRzMrUVE7RUFPSTtBbEd3K1FaOztBa0cvK1FRO0VBT0k7QWxHNCtRWjs7QWtHbi9RUTtFQU9JO0FsR2cvUVo7O0FrR3YvUVE7RUFPSTtBbEdvL1FaOztBa0czL1FRO0VBT0k7QWxHdy9RWjs7QWtHLy9RUTtFQU9JO0FsRzQvUVo7O0FrR25nUlE7RUFPSTtBbEdnZ1JaOztBa0d2Z1JRO0VBT0k7QWxHb2dSWjs7QWtHM2dSUTtFQU9JO0FsR3dnUlo7O0FrRy9nUlE7RUFPSTtBbEc0Z1JaOztBa0duaFJRO0VBT0k7QWxHZ2hSWjs7QWtHdmhSUTtFQU9JO0FsR29oUlo7O0FrRzNoUlE7RUFPSTtBbEd3aFJaOztBa0cvaFJRO0VBT0k7QWxHNGhSWjs7QWtHN2lSUTtFQUNFO0FsR2dqUlY7O0FrR2pqUlE7RUFDRTtBbEdvalJWOztBa0dyalJRO0VBQ0U7QWxHd2pSVjs7QWtHempSUTtFQUNFO0FsRzRqUlY7O0FrRzdqUlE7RUFDRTtBbEdna1JWOztBa0dqa1JRO0VBQ0U7QWxHb2tSVjs7QWtHcmtSUTtFQUNFO0FsR3drUlY7O0FrR3prUlE7RUFDRTtBbEc0a1JWOztBa0c3a1JRO0VBQ0U7QWxHZ2xSVjs7QWtHamxSUTtFQUNFO0FsR29sUlY7O0FrR3JsUlE7RUFDRTtBbEd3bFJWOztBa0d6bFJRO0VBQ0U7QWxHNGxSVjs7QWtHbmxSUTtFQU9JO0FsR2dsUlo7O0FrR3ZsUlE7RUFPSTtBbEdvbFJaOztBa0czbFJRO0VBT0k7QWxHd2xSWjs7QWtHL2xSUTtFQU9JO0FsRzRsUlo7O0FrR25tUlE7RUFPSTtBbEdnbVJaOztBa0d2bVJRO0VBT0k7QWxHb21SWjs7QWtHM21SUTtFQU9JO0FsR3dtUlo7O0FrRy9tUlE7RUFPSTtBbEc0bVJaOztBa0dublJRO0VBT0k7QWxHZ25SWjs7QWtHdm5SUTtFQU9JO0FsR29uUlo7O0FrRzNuUlE7RUFPSTtBbEd3blJaOztBa0cvblJRO0VBT0k7QWxHNG5SWjs7QWtHbm9SUTtFQU9JO0FsR2dvUlo7O0FrR3ZvUlE7RUFPSTtBbEdvb1JaOztBa0czb1JRO0VBT0k7QWxHd29SWjs7QWtHL29SUTtFQU9JO0FsRzRvUlo7O0FrR25wUlE7RUFPSTtBbEdncFJaOztBa0d2cFJRO0VBT0k7QWxHb3BSWjs7QWtHM3BSUTtFQU9JO0FsR3dwUlo7O0FrRy9wUlE7RUFPSTtBbEc0cFJaOztBa0ducVJRO0VBT0k7QWxHZ3FSWjs7QWtHdnFSUTtFQU9JO0FsR29xUlo7O0FrRzNxUlE7RUFPSTtBbEd3cVJaOztBa0cvcVJRO0VBT0k7QWxHNHFSWjs7QWtHbnJSUTtFQU9JO0FsR2dyUlo7O0FrR3ZyUlE7RUFPSTtBbEdvclJaOztBa0czclJRO0VBT0k7QWxHd3JSWjs7QWtHL3JSUTtFQU9JO0FsRzRyUlo7O0FrR25zUlE7RUFPSTtBbEdnc1JaOztBa0d2c1JRO0VBT0k7QWxHb3NSWjs7QWtHM3NSUTtFQUlRO0VBR0o7QWxHeXNSWjs7QWtHaHRSUTtFQUlRO0VBR0o7QWxHOHNSWjs7QWtHcnRSUTtFQUlRO0VBR0o7QWxHbXRSWjs7QWtHMXRSUTtFQUlRO0VBR0o7QWxHd3RSWjs7QWtHL3RSUTtFQUlRO0VBR0o7QWxHNnRSWjs7QWtHcHVSUTtFQUlRO0VBR0o7QWxHa3VSWjs7QWtHenVSUTtFQUlRO0VBR0o7QWxHdXVSWjs7QWtHOXVSUTtFQUlRO0VBR0o7QWxHNHVSWjs7QWtHbnZSUTtFQUlRO0VBR0o7QWxHaXZSWjs7QWtHeHZSUTtFQUlRO0VBR0o7QWxHc3ZSWjs7QWtHN3ZSUTtFQUlRO0VBR0o7QWxHMnZSWjs7QWtHbHdSUTtFQUlRO0VBR0o7QWxHZ3dSWjs7QWtHdndSUTtFQUlRO0VBR0o7QWxHcXdSWjs7QWtHNXdSUTtFQUlRO0VBR0o7QWxHMHdSWjs7QWtHanhSUTtFQU9JO0FsRzh3Ulo7O0FrR3J4UlE7RUFPSTtBbEdreFJaOztBa0d6eFJRO0VBT0k7QWxHc3hSWjs7QWtHN3hSUTtFQU9JO0FsRzB4Ulo7O0FrR2p5UlE7RUFPSTtBbEc4eFJaOztBa0dyeVJRO0VBT0k7QWxHa3lSWjs7QWtHenlSUTtFQU9JO0FsR3N5Ulo7O0FrRzd5UlE7RUFPSTtBbEcweVJaOztBa0dqelJRO0VBT0k7QWxHOHlSWjs7QWtHcnpSUTtFQU9JO0FsR2t6Ulo7O0FrR3p6UlE7RUFPSTtBbEdzelJaOztBa0c3elJRO0VBT0k7QWxHMHpSWjs7QWtHajBSUTtFQU9JO0FsRzh6Ulo7O0FrRy8wUlE7RUFDRTtBbEdrMVJWOztBa0duMVJRO0VBQ0U7QWxHczFSVjs7QWtHdjFSUTtFQUNFO0FsRzAxUlY7O0FrRzMxUlE7RUFDRTtBbEc4MVJWOztBa0cvMVJRO0VBQ0U7QWxHazJSVjs7QWtHejFSUTtFQU9JO0FsR3MxUlo7O0FrRzcxUlE7RUFPSTtBbEcwMVJaOztBa0dqMlJRO0VBT0k7QWxHODFSWjs7QWtHcjJSUTtFQU9JO0FsR2syUlo7O0FrR3oyUlE7RUFPSTtBbEdzMlJaOztBa0c3MlJRO0VBT0k7QWxHMDJSWjs7QWtHajNSUTtFQU9JO0FsRzgyUlo7O0FrR3IzUlE7RUFPSTtBbEdrM1JaOztBa0d6M1JRO0VBT0k7QWxHczNSWjs7QWtHNzNSUTtFQU9JO0FsRzAzUlo7O0FrR2o0UlE7RUFPSTtBbEc4M1JaOztBa0dyNFJRO0VBT0k7QWxHazRSWjs7QWtHejRSUTtFQU9JO0FsR3M0Ulo7O0FrRzc0UlE7RUFPSTtBbEcwNFJaOztBa0dqNVJRO0VBT0k7QWxHODRSWjs7QWtHcjVSUTtFQU9JO0FsR2s1Ulo7O0FrR3o1UlE7RUFPSTtBbEdzNVJaOztBa0c3NVJRO0VBT0k7QWxHMDVSWjs7QWtHajZSUTtFQU9JO0FsRzg1Ulo7O0FrR3I2UlE7RUFPSTtBbEdrNlJaOztBa0d6NlJRO0VBT0k7QWxHczZSWjs7QWtHNzZSUTtFQU9JO0FsRzA2Ulo7O0FrR2o3UlE7RUFPSTtBbEc4NlJaOztBa0dyN1JRO0VBT0k7QWxHazdSWjs7QWtHejdSUTtFQU9JO0FsR3M3Ulo7O0FrRzc3UlE7RUFPSTtBbEcwN1JaOztBa0dqOFJRO0VBT0k7QWxHODdSWjs7QWtHcjhSUTtFQU9JO0FsR2s4Ulo7O0FrR3o4UlE7RUFPSTtBbEdzOFJaOztBa0c3OFJRO0VBT0k7QWxHMDhSWjs7QWtHajlSUTtFQU9JO0FsRzg4Ulo7O0FrR3I5UlE7RUFPSTtBbEdrOVJaOztBa0d6OVJRO0VBT0k7QWxHczlSWjs7QWtHNzlSUTtFQU9JO0FsRzA5Ulo7O0FrR2orUlE7RUFPSTtBbEc4OVJaOztBa0dyK1JRO0VBT0k7QWxHaytSWjs7QWtHeitSUTtFQU9JO0FsR3MrUlo7O0FrRzcrUlE7RUFPSTtBbEcwK1JaOztBa0dqL1JRO0VBT0k7QWxHOCtSWjs7QWtHci9SUTtFQU9JO0FsR2svUlo7O0FrR3ovUlE7RUFPSTtBbEdzL1JaOztBa0c3L1JRO0VBT0k7QWxHMC9SWjs7QWtHamdTUTtFQU9JO0FsRzgvUlo7O0FrR3JnU1E7RUFPSTtBbEdrZ1NaOztBa0d6Z1NRO0VBT0k7QWxHc2dTWjs7QWtHN2dTUTtFQU9JO0FsRzBnU1o7O0FrR2poU1E7RUFPSTtBbEc4Z1NaOztBa0dyaFNRO0VBT0k7QWxHa2hTWjs7QWtHemhTUTtFQU9JO0FsR3NoU1o7O0FrRzdoU1E7RUFPSTtBbEcwaFNaOztBa0dqaVNRO0VBT0k7QWxHOGhTWjs7QWtHcmlTUTtFQU9JO0FsR2tpU1o7O0FrR3ppU1E7RUFPSTtBbEdzaVNaOztBa0c3aVNRO0VBT0k7QWxHMGlTWjs7QWtHampTUTtFQU9JO0FsRzhpU1o7O0FrR3JqU1E7RUFPSTtBbEdralNaOztBa0d6alNRO0VBT0k7QWxHc2pTWjs7QWtHN2pTUTtFQU9JO0FsRzBqU1o7O0FrR2prU1E7RUFPSTtBbEc4alNaOztBa0dya1NRO0VBT0k7QWxHa2tTWjs7QWtHemtTUTtFQU9JO0FsR3NrU1o7O0FrRzdrU1E7RUFPSTtBbEcwa1NaOztBa0dqbFNRO0VBT0k7QWxHOGtTWjs7QWtHcmxTUTtFQU9JO0FsR2tsU1o7O0FrR3psU1E7RUFPSTtBbEdzbFNaOztBa0c3bFNRO0VBT0k7QWxHMGxTWjs7QWtHam1TUTtFQU9JO0VBQUE7QWxHK2xTWjs7QWtHdG1TUTtFQU9JO0VBQUE7QWxHb21TWjs7QWtHM21TUTtFQU9JO0VBQUE7QWxHeW1TWjs7QWtHaG5TUTtFQU9JO0VBQUE7QWxHOG1TWjs7QWtHcm5TUTtFQU9JO0VBQUE7QWxHbW5TWjs7QWtHMW5TUTtFQU9JO0VBQUE7QWxHd25TWjs7QWtHL25TUTtFQU9JO0VBQUE7QWxHNm5TWjs7QWtHcG9TUTtFQU9JO0VBQUE7QWxHa29TWjs7QWtHem9TUTtFQU9JO0VBQUE7QWxHdW9TWjs7QWtHOW9TUTtFQU9JO0VBQUE7QWxHNG9TWjs7QWtHbnBTUTtFQU9JO0VBQUE7QWxHaXBTWjs7QWtHeHBTUTtFQU9JO0VBQUE7QWxHc3BTWjs7QWtHN3BTUTtFQU9JO0VBQUE7QWxHMnBTWjs7QWtHbHFTUTtFQU9JO0VBQUE7QWxHZ3FTWjs7QWtHdnFTUTtFQU9JO0FsR29xU1o7O0FrRzNxU1E7RUFPSTtBbEd3cVNaOztBa0cvcVNRO0VBT0k7QWxHNHFTWjs7QWtHbnJTUTtFQU9JO0FsR2dyU1o7O0FrR3ZyU1E7RUFPSTtBbEdvclNaOztBa0czclNRO0VBT0k7QWxHd3JTWjs7QWtHL3JTUTtFQU9JO0FsRzRyU1o7O0FrR25zU1E7RUFPSTtBbEdnc1NaOztBa0d2c1NRO0VBT0k7QWxHb3NTWjs7QWtHM3NTUTtFQU9JO0FsR3dzU1o7O0FrRy9zU1E7RUFPSTtBbEc0c1NaOztBa0dudFNRO0VBT0k7QWxHZ3RTWjs7QWtHdnRTUTtFQU9JO0FsR290U1o7O0FrRzN0U1E7RUFPSTtBbEd3dFNaOztBa0cvdFNRO0VBT0k7QWxHNHRTWjs7QWtHbnVTUTtFQU9JO0FsR2d1U1o7O0FrR3Z1U1E7RUFPSTtBbEdvdVNaOztBa0czdVNRO0VBT0k7QWxHd3VTWjs7QWtHL3VTUTtFQU9JO0FsRzR1U1o7O0FrR252U1E7RUFPSTtBbEdndlNaOztBa0d2dlNRO0VBT0k7QWxHb3ZTWjs7QWtHM3ZTUTtFQU9JO0FsR3d2U1o7O0FrRy92U1E7RUFPSTtBbEc0dlNaOztBa0dud1NRO0VBT0k7QWxHZ3dTWjs7QWtHdndTUTtFQU9JO0FsR293U1o7O0FrRzN3U1E7RUFPSTtBbEd3d1NaOztBa0cvd1NRO0VBT0k7QWxHNHdTWjs7QWtHbnhTUTtFQU9JO0FsR2d4U1o7O0FrR3Z4U1E7RUFPSTtBbEdveFNaOztBa0czeFNRO0VBT0k7QWxHd3hTWjs7QWtHL3hTUTtFQU9JO0FsRzR4U1o7O0FrR255U1E7RUFPSTtBbEdneVNaOztBa0d2eVNRO0VBT0k7QWxHb3lTWjs7QWtHM3lTUTtFQU9JO0FsR3d5U1o7O0FrRy95U1E7RUFPSTtFQUFBO0FsRzZ5U1o7O0FrR3B6U1E7RUFPSTtFQUFBO0FsR2t6U1o7O0FrR3p6U1E7RUFPSTtFQUFBO0FsR3V6U1o7O0FrRzl6U1E7RUFPSTtFQUFBO0FsRzR6U1o7O0FrR24wU1E7RUFPSTtFQUFBO0FsR2kwU1o7O0FrR3gwU1E7RUFPSTtFQUFBO0FsR3MwU1o7O0FrRzcwU1E7RUFPSTtFQUFBO0FsRzIwU1o7O0FrR2wxU1E7RUFPSTtFQUFBO0FsR2cxU1o7O0FrR3YxU1E7RUFPSTtFQUFBO0FsR3ExU1o7O0FrRzUxU1E7RUFPSTtFQUFBO0FsRzAxU1o7O0FrR2oyU1E7RUFPSTtFQUFBO0FsRysxU1o7O0FrR3QyU1E7RUFPSTtFQUFBO0FsR28yU1o7O0FrRzMyU1E7RUFPSTtBbEd3MlNaOztBa0cvMlNRO0VBT0k7QWxHNDJTWjs7QWtHbjNTUTtFQU9JO0FsR2czU1o7O0FrR3YzU1E7RUFPSTtBbEdvM1NaOztBa0czM1NRO0VBT0k7QWxHdzNTWjs7QWtHLzNTUTtFQU9JO0FsRzQzU1o7O0FrR240U1E7RUFPSTtBbEdnNFNaOztBa0d2NFNRO0VBT0k7QWxHbzRTWjs7QWtHMzRTUTtFQU9JO0FsR3c0U1o7O0FrRy80U1E7RUFPSTtBbEc0NFNaOztBa0duNVNRO0VBT0k7QWxHZzVTWjs7QWtHdjVTUTtFQU9JO0FsR281U1o7O0FrRzM1U1E7RUFPSTtBbEd3NVNaOztBa0cvNVNRO0VBT0k7QWxHNDVTWjs7QWtHbjZTUTtFQU9JO0FsR2c2U1o7O0FrR3Y2U1E7RUFPSTtBbEdvNlNaOztBa0czNlNRO0VBT0k7QWxHdzZTWjs7QWtHLzZTUTtFQU9JO0FsRzQ2U1o7O0FrR243U1E7RUFPSTtBbEdnN1NaOztBa0d2N1NRO0VBT0k7QWxHbzdTWjs7QWtHMzdTUTtFQU9JO0FsR3c3U1o7O0FrRy83U1E7RUFPSTtBbEc0N1NaOztBa0duOFNRO0VBT0k7QWxHZzhTWjs7QWtHdjhTUTtFQU9JO0FsR284U1o7O0FrRzM4U1E7RUFPSTtBbEd3OFNaOztBa0cvOFNRO0VBT0k7QWxHNDhTWjs7QWtHbjlTUTtFQU9JO0FsR2c5U1o7O0FrR3Y5U1E7RUFPSTtBbEdvOVNaOztBa0czOVNRO0VBT0k7QWxHdzlTWjs7QWtHLzlTUTtFQU9JO0FsRzQ5U1o7O0FrR24rU1E7RUFPSTtBbEdnK1NaOztBa0d2K1NRO0VBT0k7QWxHbytTWjs7QWtHMytTUTtFQU9JO0FsR3crU1o7O0FrRy8rU1E7RUFPSTtBbEc0K1NaOztBa0duL1NRO0VBT0k7QWxHZy9TWjs7QWtHdi9TUTtFQU9JO0FsR28vU1o7O0FrRzMvU1E7RUFPSTtBbEd3L1NaOztBa0cvL1NRO0VBT0k7QWxHNC9TWjs7QWtHbmdUUTtFQU9JO0FsR2dnVFo7O0FrR3ZnVFE7RUFPSTtBbEdvZ1RaOztBa0czZ1RRO0VBT0k7QWxHd2dUWjs7QWtHL2dUUTtFQU9JO0FsRzRnVFo7O0FrR25oVFE7RUFPSTtBbEdnaFRaOztBa0d2aFRRO0VBT0k7QWxHb2hUWjs7QWtHM2hUUTtFQU9JO0FsR3doVFo7O0FrRy9oVFE7RUFPSTtBbEc0aFRaOztBa0duaVRRO0VBT0k7QWxHZ2lUWjs7QWtHdmlUUTtFQU9JO0FsR29pVFo7O0FrRzNpVFE7RUFPSTtBbEd3aVRaOztBa0cvaVRRO0VBT0k7QWxHNGlUWjs7QWtHbmpUUTtFQU9JO0FsR2dqVFo7O0FrR3ZqVFE7RUFPSTtBbEdvalRaOztBa0czalRRO0VBT0k7QWxHd2pUWjs7QWtHL2pUUTtFQU9JO0FsRzRqVFo7O0FrR25rVFE7RUFPSTtBbEdna1RaOztBa0d2a1RRO0VBT0k7QWxHb2tUWjs7QWtHM2tUUTtFQU9JO0FsR3drVFo7O0FrRy9rVFE7RUFPSTtBbEc0a1RaOztBa0dubFRRO0VBT0k7QWxHZ2xUWjs7QWtHdmxUUTtFQU9JO0FsR29sVFo7O0FrRzNsVFE7RUFPSTtBbEd3bFRaOztBa0cvbFRRO0VBT0k7QWxHNGxUWjs7QWtHbm1UUTtFQU9JO0FsR2dtVFo7O0FrR3ZtVFE7RUFPSTtBbEdvbVRaOztBa0czbVRRO0VBT0k7QWxHd21UWjs7QWtHL21UUTtFQU9JO0FsRzRtVFo7O0FrR25uVFE7RUFPSTtBbEdnblRaOztBa0d2blRRO0VBT0k7QWxHb25UWjs7QWtHM25UUTtFQU9JO0FsR3duVFo7O0FrRy9uVFE7RUFPSTtBbEc0blRaOztBa0dub1RRO0VBT0k7QWxHZ29UWjs7QWtHdm9UUTtFQU9JO0FsR29vVFo7O0FrRzNvVFE7RUFPSTtBbEd3b1RaOztBa0c3cFRRO0FBY0E7RUFPSTtFQUFBO0FsRzhvVFo7O0FrRzNuVFE7QUExQkE7RUFJUTtFQUdKO0FsR29wVFo7O0FrRzNwVFE7RUFJUTtFQUdKO0FsR3lwVFo7O0FrR2hxVFE7RUFJUTtFQUdKO0FsRzhwVFo7O0FrR3JxVFE7RUFJUTtFQUdKO0FsR21xVFo7O0FrRzFxVFE7RUFJUTtFQUdKO0FsR3dxVFo7O0FrRy9xVFE7RUFJUTtFQUdKO0FsRzZxVFo7O0FrR3ByVFE7RUFJUTtFQUdKO0FsR2tyVFo7O0FrR3pyVFE7RUFJUTtFQUdKO0FsR3VyVFo7O0FrRzlyVFE7RUFJUTtFQUdKO0FsRzRyVFo7O0FrR25zVFE7RUFJUTtFQUdKO0FsR2lzVFo7O0FrR3hzVFE7RUFJUTtFQUdKO0FsR3NzVFo7O0FrRzdzVFE7RUFJUTtFQUdKO0FsRzJzVFo7O0FrR2x0VFE7RUFJUTtFQUdKO0FsR2d0VFo7O0FrR3Z0VFE7RUFJUTtFQUdKO0FsR3F0VFo7O0FrRzV0VFE7RUFJUTtFQUdKO0FsRzB0VFo7O0FrR2p1VFE7RUFJUTtFQUdKO0FsRyt0VFo7O0FrR3R1VFE7RUFJUTtFQUdKO0FsR291VFo7O0FrRzN1VFE7RUFJUTtFQUdKO0FsR3l1VFo7O0FrR2h2VFE7RUFJUTtFQUdKO0FsRzh1VFo7O0FrR3J2VFE7RUFJUTtFQUdKO0FsR212VFo7O0FrRzF2VFE7RUFJUTtFQUdKO0FsR3d2VFo7O0FrRy92VFE7RUFJUTtFQUdKO0FsRzZ2VFo7O0FrRzl3VFE7RUFDRTtBbEdpeFRWOztBa0dseFRRO0VBQ0U7QWxHcXhUVjs7QWtHdHhUUTtFQUNFO0FsR3l4VFY7O0FrRzF4VFE7RUFDRTtBbEc2eFRWOztBa0dweFRRO0VBT0k7QWxHaXhUWjs7QWtHeHhUUTtFQU9JO0FsR3F4VFo7O0FrRzV4VFE7RUFPSTtBbEd5eFRaOztBa0doeVRRO0VBT0k7QWxHNnhUWjs7QWtHcHlUUTtFQU9JO0FsR2l5VFo7O0FrR3h5VFE7RUFPSTtBbEdxeVRaOztBa0c1eVRRO0VBT0k7QWxHeXlUWjs7QWtHaHpUUTtFQU9JO0FsRzZ5VFo7O0FrRzl6VFE7RUFDRTtBbEdpMFRWOztBa0c3elRVO0VBQ0U7QWxHZzBUWjs7QWtHdDBUUTtFQUNFO0FsR3kwVFY7O0FrR3IwVFU7RUFDRTtBbEd3MFRaOztBa0c5MFRRO0VBQ0U7QWxHaTFUVjs7QWtHNzBUVTtFQUNFO0FsR2cxVFo7O0FrR3QxVFE7RUFDRTtBbEd5MVRWOztBa0dyMVRVO0VBQ0U7QWxHdzFUWjs7QWtHOTFUUTtFQUNFO0FsR2kyVFY7O0FrRzcxVFU7RUFDRTtBbEdnMlRaOztBa0c1MVRRO0VBT0k7QWxHeTFUWjs7QWtHcDFUVTtFQU9JO0FsR2kxVGQ7O0FrR3AyVFE7RUFPSTtBbEdpMlRaOztBa0c1MVRVO0VBT0k7QWxHeTFUZDs7QWtHNTJUUTtFQU9JO0FsR3kyVFo7O0FrR3AyVFU7RUFPSTtBbEdpMlRkOztBa0dwM1RRO0VBSVE7RUFHSjtBbEdrM1RaOztBa0d6M1RRO0VBSVE7RUFHSjtBbEd1M1RaOztBa0c5M1RRO0VBSVE7RUFHSjtBbEc0M1RaOztBa0duNFRRO0VBSVE7RUFHSjtBbEdpNFRaOztBa0d4NFRRO0VBSVE7RUFHSjtBbEdzNFRaOztBa0c3NFRRO0VBSVE7RUFHSjtBbEcyNFRaOztBa0dsNVRRO0VBSVE7RUFHSjtBbEdnNVRaOztBa0d2NVRRO0VBSVE7RUFHSjtBbEdxNVRaOztBa0c1NVRRO0VBSVE7RUFHSjtBbEcwNVRaOztBa0dqNlRRO0VBSVE7RUFHSjtBbEcrNVRaOztBa0d0NlRRO0VBSVE7RUFHSjtBbEdvNlRaOztBa0czNlRRO0VBSVE7RUFHSjtBbEd5NlRaOztBa0doN1RRO0VBSVE7RUFHSjtBbEc4NlRaOztBa0cvN1RRO0VBQ0U7QWxHazhUVjs7QWtHOTdUVTtFQUNFO0FsR2k4VFo7O0FrR3Y4VFE7RUFDRTtBbEcwOFRWOztBa0d0OFRVO0VBQ0U7QWxHeThUWjs7QWtHLzhUUTtFQUNFO0FsR2s5VFY7O0FrRzk4VFU7RUFDRTtBbEdpOVRaOztBa0d2OVRRO0VBQ0U7QWxHMDlUVjs7QWtHdDlUVTtFQUNFO0FsR3k5VFo7O0FrRy85VFE7RUFDRTtBbEdrK1RWOztBa0c5OVRVO0VBQ0U7QWxHaStUWjs7QWtHditUUTtFQUNFO0FsRzArVFY7O0FrR3QrVFU7RUFDRTtBbEd5K1RaOztBa0dyK1RRO0VBSVE7RUFHSjtBbEdtK1RaOztBa0cxK1RRO0VBSVE7RUFHSjtBbEd3K1RaOztBa0cvK1RRO0VBSVE7RUFHSjtBbEc2K1RaOztBa0dwL1RRO0VBSVE7RUFHSjtBbEdrL1RaOztBa0d6L1RRO0VBSVE7RUFHSjtBbEd1L1RaOztBa0c5L1RRO0VBSVE7RUFHSjtBbEc0L1RaOztBa0duZ1VRO0VBSVE7RUFHSjtBbEdpZ1VaOztBa0d4Z1VRO0VBSVE7RUFHSjtBbEdzZ1VaOztBa0c3Z1VRO0VBSVE7RUFHSjtBbEcyZ1VaOztBa0dsaFVRO0VBSVE7RUFHSjtBbEdnaFVaOztBa0d2aFVRO0VBSVE7RUFHSjtBbEdxaFVaOztBa0c1aFVRO0VBSVE7RUFHSjtBbEcwaFVaOztBa0dqaVVRO0VBSVE7RUFHSjtBbEcraFVaOztBa0d0aVVRO0VBSVE7RUFHSjtBbEdvaVVaOztBa0czaVVRO0VBSVE7RUFHSjtBbEd5aVVaOztBa0doalVRO0VBSVE7RUFHSjtBbEc4aVVaOztBa0dyalVRO0VBSVE7RUFHSjtBbEdtalVaOztBa0cxalVRO0VBSVE7RUFHSjtBbEd3alVaOztBa0d6a1VRO0VBQ0U7QWxHNGtVVjs7QWtHN2tVUTtFQUNFO0FsR2dsVVY7O0FrR2psVVE7RUFDRTtBbEdvbFVWOztBa0dybFVRO0VBQ0U7QWxHd2xVVjs7QWtHemxVUTtFQUNFO0FsRzRsVVY7O0FrR25sVVE7RUFPSTtBbEdnbFVaOztBa0d2bFVRO0VBT0k7QWxHb2xVWjs7QWtHM2xVUTtFQU9JO0FsR3dsVVo7O0FrRy9sVVE7RUFPSTtBbEc0bFVaOztBa0dubVVRO0VBT0k7QWxHZ21VWjs7QWtHdm1VUTtFQU9JO0FsR29tVVo7O0FrRzNtVVE7RUFPSTtBbEd3bVVaOztBa0cvbVVRO0VBT0k7QWxHNG1VWjs7QWtHbm5VUTtFQU9JO0FsR2duVVo7O0FrR3ZuVVE7RUFPSTtBbEdvblVaOztBa0czblVRO0VBT0k7QWxHd25VWjs7QWtHL25VUTtFQU9JO0FsRzRuVVo7O0FrR25vVVE7RUFPSTtBbEdnb1VaOztBa0d2b1VRO0VBT0k7QWxHb29VWjs7QWtHM29VUTtFQU9JO0FsR3dvVVo7O0FrRy9vVVE7RUFPSTtBbEc0b1VaOztBa0ducFVRO0VBT0k7QWxHZ3BVWjs7QWtHdnBVUTtFQU9JO0FsR29wVVo7O0FrRzNwVVE7RUFPSTtBbEd3cFVaOztBa0cvcFVRO0VBT0k7QWxHNHBVWjs7QWtHbnFVUTtFQU9JO0FsR2dxVVo7O0FrR3ZxVVE7RUFPSTtBbEdvcVVaOztBa0czcVVRO0VBT0k7QWxHd3FVWjs7QWtHL3FVUTtFQU9JO0VBQUE7QWxHNnFVWjs7QWtHcHJVUTtFQU9JO0VBQUE7QWxHa3JVWjs7QWtHenJVUTtFQU9JO0VBQUE7QWxHdXJVWjs7QWtHOXJVUTtFQU9JO0VBQUE7QWxHNHJVWjs7QWtHbnNVUTtFQU9JO0VBQUE7QWxHaXNVWjs7QWtHeHNVUTtFQU9JO0VBQUE7QWxHc3NVWjs7QWtHN3NVUTtFQU9JO0VBQUE7QWxHMnNVWjs7QWtHbHRVUTtFQU9JO0VBQUE7QWxHZ3RVWjs7QWtHdnRVUTtFQU9JO0VBQUE7QWxHcXRVWjs7QWtHNXRVUTtFQU9JO0VBQUE7QWxHMHRVWjs7QWtHanVVUTtFQU9JO0VBQUE7QWxHK3RVWjs7QWtHdHVVUTtFQU9JO0VBQUE7QWxHb3VVWjs7QWtHM3VVUTtFQU9JO0VBQUE7QWxHeXVVWjs7QWtHaHZVUTtFQU9JO0VBQUE7QWxHOHVVWjs7QWtHcnZVUTtFQU9JO0VBQUE7QWxHbXZVWjs7QWtHMXZVUTtFQU9JO0VBQUE7QWxHd3ZVWjs7QWtHL3ZVUTtFQU9JO0VBQUE7QWxHNnZVWjs7QWtHcHdVUTtFQU9JO0VBQUE7QWxHa3dVWjs7QWtHendVUTtFQU9JO0VBQUE7QWxHdXdVWjs7QWtHOXdVUTtFQU9JO0VBQUE7QWxHNHdVWjs7QWtHbnhVUTtFQU9JO0VBQUE7QWxHaXhVWjs7QWtHeHhVUTtFQU9JO0VBQUE7QWxHc3hVWjs7QWtHN3hVUTtFQU9JO0VBQUE7QWxHMnhVWjs7QWtHbHlVUTtFQU9JO0VBQUE7QWxHZ3lVWjs7QWtHdnlVUTtFQU9JO0VBQUE7QWxHcXlVWjs7QWtHNXlVUTtFQU9JO0VBQUE7QWxHMHlVWjs7QWtHanpVUTtFQU9JO0VBQUE7QWxHK3lVWjs7QWtHdHpVUTtFQU9JO0VBQUE7QWxHb3pVWjs7QWtHM3pVUTtFQU9JO0VBQUE7QWxHeXpVWjs7QWtHaDBVUTtFQU9JO0VBQUE7QWxHOHpVWjs7QWtHcjBVUTtFQU9JO0VBQUE7QWxHbTBVWjs7QWtHMTBVUTtFQU9JO0VBQUE7QWxHdzBVWjs7QWtHLzBVUTtFQU9JO0VBQUE7QWxHNjBVWjs7QWtHcDFVUTtFQU9JO0VBQUE7QWxHazFVWjs7QWtHejFVUTtFQU9JO0VBQUE7QWxHdTFVWjs7QWtHOTFVUTtFQU9JO0VBQUE7QWxHNDFVWjs7QWtHbjJVUTtFQU9JO0FsR2cyVVo7O0FrR3YyVVE7RUFPSTtBbEdvMlVaOztBa0czMlVRO0VBT0k7QWxHdzJVWjs7QWtHLzJVUTtFQU9JO0FsRzQyVVo7O0FrR24zVVE7RUFPSTtBbEdnM1VaOztBa0d2M1VRO0VBT0k7QWxHbzNVWjs7QWtHMzNVUTtFQU9JO0FsR3czVVo7O0F3Q2w0VUk7RTBER0k7SUFPSTtFbEc2M1VWO0VrR3A0VU07SUFPSTtFbEdnNFVWO0VrR3Y0VU07SUFPSTtFbEdtNFVWO0VrRzE0VU07SUFPSTtFbEdzNFVWO0VrRzc0VU07SUFPSTtFbEd5NFVWO0VrR2g1VU07SUFPSTtFbEc0NFVWO0VrR241VU07SUFPSTtFbEcrNFVWO0VrR3Q1VU07SUFPSTtFbEdrNVVWO0VrR3o1VU07SUFPSTtFbEdxNVVWO0VrRzU1VU07SUFPSTtFbEd3NVVWO0VrRy81VU07SUFPSTtFbEcyNVVWO0VrR2w2VU07SUFPSTtFbEc4NVVWO0VrR3I2VU07SUFPSTtFbEdpNlVWO0VrR3g2VU07SUFPSTtFbEdvNlVWO0VrRzM2VU07SUFPSTtFbEd1NlVWO0VrRzk2VU07SUFPSTtFbEcwNlVWO0VrR2o3VU07SUFPSTtFbEc2NlVWO0VrR3A3VU07SUFPSTtFbEdnN1VWO0VrR3Y3VU07SUFPSTtFbEdtN1VWO0VrRzE3VU07SUFPSTtFbEdzN1VWO0VrRzc3VU07SUFPSTtFbEd5N1VWO0VrR2g4VU07SUFPSTtFbEc0N1VWO0VrR244VU07SUFPSTtFbEcrN1VWO0VrR3Q4VU07SUFPSTtFbEdrOFVWO0VrR3o4VU07SUFPSTtFbEdxOFVWO0VrRzU4VU07SUFPSTtFbEd3OFVWO0VrRy84VU07SUFPSTtFbEcyOFVWO0VrR2w5VU07SUFPSTtFbEc4OFVWO0VrR3I5VU07SUFPSTtFbEdpOVVWO0VrR3g5VU07SUFPSTtFbEdvOVVWO0VrRzM5VU07SUFPSTtFbEd1OVVWO0VrRzk5VU07SUFPSTtFbEcwOVVWO0VrR2orVU07SUFPSTtFbEc2OVVWO0VrR3ArVU07SUFPSTtFbEdnK1VWO0VrR3YrVU07SUFPSTtFbEdtK1VWO0VrRzErVU07SUFPSTtFbEdzK1VWO0VrRzcrVU07SUFPSTtFbEd5K1VWO0VrR2gvVU07SUFPSTtFbEc0K1VWO0VrR24vVU07SUFPSTtFbEcrK1VWO0VrR3QvVU07SUFPSTtFbEdrL1VWO0VrR3ovVU07SUFPSTtFbEdxL1VWO0VrRzUvVU07SUFPSTtFbEd3L1VWO0VrRy8vVU07SUFPSTtFbEcyL1VWO0VrR2xnVk07SUFPSTtFbEc4L1VWO0VrR3JnVk07SUFPSTtFbEdpZ1ZWO0VrR3hnVk07SUFPSTtFbEdvZ1ZWO0VrRzNnVk07SUFPSTtFbEd1Z1ZWO0VrRzlnVk07SUFPSTtFbEcwZ1ZWO0VrR2poVk07SUFPSTtFbEc2Z1ZWO0VrR3BoVk07SUFPSTtFbEdnaFZWO0VrR3ZoVk07SUFPSTtFbEdtaFZWO0VrRzFoVk07SUFPSTtFbEdzaFZWO0VrRzdoVk07SUFPSTtFbEd5aFZWO0VrR2hpVk07SUFPSTtFbEc0aFZWO0VrR25pVk07SUFPSTtFbEcraFZWO0VrR3RpVk07SUFPSTtFbEdraVZWO0VrR3ppVk07SUFPSTtFbEdxaVZWO0VrRzVpVk07SUFPSTtFbEd3aVZWO0VrRy9pVk07SUFPSTtFbEcyaVZWO0VrR2xqVk07SUFPSTtFbEc4aVZWO0VrR3JqVk07SUFPSTtFbEdpalZWO0VrR3hqVk07SUFPSTtFbEdvalZWO0VrRzNqVk07SUFPSTtFbEd1alZWO0VrRzlqVk07SUFPSTtFbEcwalZWO0VrR2prVk07SUFPSTtFbEc2alZWO0VrR3BrVk07SUFPSTtFbEdna1ZWO0VrR3ZrVk07SUFPSTtFbEdta1ZWO0VrRzFrVk07SUFPSTtFbEdza1ZWO0VrRzdrVk07SUFPSTtFbEd5a1ZWO0VrR2hsVk07SUFPSTtJQUFBO0VsRzZrVlY7RWtHcGxWTTtJQU9JO0lBQUE7RWxHaWxWVjtFa0d4bFZNO0lBT0k7SUFBQTtFbEdxbFZWO0VrRzVsVk07SUFPSTtJQUFBO0VsR3lsVlY7RWtHaG1WTTtJQU9JO0lBQUE7RWxHNmxWVjtFa0dwbVZNO0lBT0k7SUFBQTtFbEdpbVZWO0VrR3htVk07SUFPSTtJQUFBO0VsR3FtVlY7RWtHNW1WTTtJQU9JO0lBQUE7RWxHeW1WVjtFa0doblZNO0lBT0k7SUFBQTtFbEc2bVZWO0VrR3BuVk07SUFPSTtJQUFBO0VsR2luVlY7RWtHeG5WTTtJQU9JO0lBQUE7RWxHcW5WVjtFa0c1blZNO0lBT0k7SUFBQTtFbEd5blZWO0VrR2hvVk07SUFPSTtJQUFBO0VsRzZuVlY7RWtHcG9WTTtJQU9JO0lBQUE7RWxHaW9WVjtFa0d4b1ZNO0lBT0k7RWxHb29WVjtFa0czb1ZNO0lBT0k7RWxHdW9WVjtFa0c5b1ZNO0lBT0k7RWxHMG9WVjtFa0dqcFZNO0lBT0k7RWxHNm9WVjtFa0dwcFZNO0lBT0k7RWxHZ3BWVjtFa0d2cFZNO0lBT0k7RWxHbXBWVjtFa0cxcFZNO0lBT0k7RWxHc3BWVjtFa0c3cFZNO0lBT0k7RWxHeXBWVjtFa0docVZNO0lBT0k7RWxHNHBWVjtFa0ducVZNO0lBT0k7RWxHK3BWVjtFa0d0cVZNO0lBT0k7RWxHa3FWVjtFa0d6cVZNO0lBT0k7RWxHcXFWVjtFa0c1cVZNO0lBT0k7RWxHd3FWVjtFa0cvcVZNO0lBT0k7RWxHMnFWVjtFa0dsclZNO0lBT0k7RWxHOHFWVjtFa0dyclZNO0lBT0k7RWxHaXJWVjtFa0d4clZNO0lBT0k7RWxHb3JWVjtFa0czclZNO0lBT0k7RWxHdXJWVjtFa0c5clZNO0lBT0k7RWxHMHJWVjtFa0dqc1ZNO0lBT0k7RWxHNnJWVjtFa0dwc1ZNO0lBT0k7RWxHZ3NWVjtFa0d2c1ZNO0lBT0k7RWxHbXNWVjtFa0cxc1ZNO0lBT0k7RWxHc3NWVjtFa0c3c1ZNO0lBT0k7RWxHeXNWVjtFa0dodFZNO0lBT0k7RWxHNHNWVjtFa0dudFZNO0lBT0k7RWxHK3NWVjtFa0d0dFZNO0lBT0k7RWxHa3RWVjtFa0d6dFZNO0lBT0k7RWxHcXRWVjtFa0c1dFZNO0lBT0k7RWxHd3RWVjtFa0cvdFZNO0lBT0k7RWxHMnRWVjtFa0dsdVZNO0lBT0k7RWxHOHRWVjtFa0dydVZNO0lBT0k7RWxHaXVWVjtFa0d4dVZNO0lBT0k7RWxHb3VWVjtFa0czdVZNO0lBT0k7RWxHdXVWVjtFa0c5dVZNO0lBT0k7SUFBQTtFbEcydVZWO0VrR2x2Vk07SUFPSTtJQUFBO0VsRyt1VlY7RWtHdHZWTTtJQU9JO0lBQUE7RWxHbXZWVjtFa0cxdlZNO0lBT0k7SUFBQTtFbEd1dlZWO0VrRzl2Vk07SUFPSTtJQUFBO0VsRzJ2VlY7RWtHbHdWTTtJQU9JO0lBQUE7RWxHK3ZWVjtFa0d0d1ZNO0lBT0k7SUFBQTtFbEdtd1ZWO0VrRzF3Vk07SUFPSTtJQUFBO0VsR3V3VlY7RWtHOXdWTTtJQU9JO0lBQUE7RWxHMndWVjtFa0dseFZNO0lBT0k7SUFBQTtFbEcrd1ZWO0VrR3R4Vk07SUFPSTtJQUFBO0VsR214VlY7RWtHMXhWTTtJQU9JO0lBQUE7RWxHdXhWVjtFa0c5eFZNO0lBT0k7RWxHMHhWVjtFa0dqeVZNO0lBT0k7RWxHNnhWVjtFa0dweVZNO0lBT0k7RWxHZ3lWVjtFa0d2eVZNO0lBT0k7RWxHbXlWVjtFa0cxeVZNO0lBT0k7RWxHc3lWVjtFa0c3eVZNO0lBT0k7RWxHeXlWVjtFa0doelZNO0lBT0k7RWxHNHlWVjtFa0duelZNO0lBT0k7RWxHK3lWVjtFa0d0elZNO0lBT0k7RWxHa3pWVjtFa0d6elZNO0lBT0k7RWxHcXpWVjtFa0c1elZNO0lBT0k7RWxHd3pWVjtFa0cvelZNO0lBT0k7RWxHMnpWVjtFa0dsMFZNO0lBT0k7RWxHOHpWVjtFa0dyMFZNO0lBT0k7RWxHaTBWVjtFa0d4MFZNO0lBT0k7RWxHbzBWVjtFa0czMFZNO0lBT0k7RWxHdTBWVjtFa0c5MFZNO0lBT0k7RWxHMDBWVjtFa0dqMVZNO0lBT0k7RWxHNjBWVjtFa0dwMVZNO0lBT0k7RWxHZzFWVjtFa0d2MVZNO0lBT0k7RWxHbTFWVjtFa0cxMVZNO0lBT0k7RWxHczFWVjtFa0c3MVZNO0lBT0k7RWxHeTFWVjtFa0doMlZNO0lBT0k7RWxHNDFWVjtFa0duMlZNO0lBT0k7RWxHKzFWVjtFa0d0MlZNO0lBT0k7RWxHazJWVjtFa0d6MlZNO0lBT0k7RWxHcTJWVjtFa0c1MlZNO0lBT0k7RWxHdzJWVjtFa0cvMlZNO0lBT0k7RWxHMjJWVjtFa0dsM1ZNO0lBT0k7RWxHODJWVjtFa0dyM1ZNO0lBT0k7RWxHaTNWVjtFa0d4M1ZNO0lBT0k7RWxHbzNWVjtFa0czM1ZNO0lBT0k7RWxHdTNWVjtFa0c5M1ZNO0lBT0k7RWxHMDNWVjtFa0dqNFZNO0lBT0k7RWxHNjNWVjtFa0dwNFZNO0lBT0k7RWxHZzRWVjtFa0d2NFZNO0lBT0k7RWxHbTRWVjtFa0cxNFZNO0lBT0k7RWxHczRWVjtFa0c3NFZNO0lBT0k7RWxHeTRWVjtFa0doNVZNO0lBT0k7RWxHNDRWVjtFa0duNVZNO0lBT0k7RWxHKzRWVjtFa0d0NVZNO0lBT0k7RWxHazVWVjtFa0d6NVZNO0lBT0k7RWxHcTVWVjtFa0c1NVZNO0lBT0k7RWxHdzVWVjtFa0cvNVZNO0lBT0k7RWxHMjVWVjtFa0dsNlZNO0lBT0k7RWxHODVWVjtBQUNGO0F3Q3o2Vkk7RTBER0k7SUFPSTtFbEdtNlZWO0VrRzE2Vk07SUFPSTtFbEdzNlZWO0VrRzc2Vk07SUFPSTtFbEd5NlZWO0VrR2g3Vk07SUFPSTtFbEc0NlZWO0VrR243Vk07SUFPSTtFbEcrNlZWO0VrR3Q3Vk07SUFPSTtFbEdrN1ZWO0VrR3o3Vk07SUFPSTtFbEdxN1ZWO0VrRzU3Vk07SUFPSTtFbEd3N1ZWO0VrRy83Vk07SUFPSTtFbEcyN1ZWO0VrR2w4Vk07SUFPSTtFbEc4N1ZWO0VrR3I4Vk07SUFPSTtFbEdpOFZWO0VrR3g4Vk07SUFPSTtFbEdvOFZWO0VrRzM4Vk07SUFPSTtFbEd1OFZWO0VrRzk4Vk07SUFPSTtFbEcwOFZWO0VrR2o5Vk07SUFPSTtFbEc2OFZWO0VrR3A5Vk07SUFPSTtFbEdnOVZWO0VrR3Y5Vk07SUFPSTtFbEdtOVZWO0VrRzE5Vk07SUFPSTtFbEdzOVZWO0VrRzc5Vk07SUFPSTtFbEd5OVZWO0VrR2grVk07SUFPSTtFbEc0OVZWO0VrR24rVk07SUFPSTtFbEcrOVZWO0VrR3QrVk07SUFPSTtFbEdrK1ZWO0VrR3orVk07SUFPSTtFbEdxK1ZWO0VrRzUrVk07SUFPSTtFbEd3K1ZWO0VrRy8rVk07SUFPSTtFbEcyK1ZWO0VrR2wvVk07SUFPSTtFbEc4K1ZWO0VrR3IvVk07SUFPSTtFbEdpL1ZWO0VrR3gvVk07SUFPSTtFbEdvL1ZWO0VrRzMvVk07SUFPSTtFbEd1L1ZWO0VrRzkvVk07SUFPSTtFbEcwL1ZWO0VrR2pnV007SUFPSTtFbEc2L1ZWO0VrR3BnV007SUFPSTtFbEdnZ1dWO0VrR3ZnV007SUFPSTtFbEdtZ1dWO0VrRzFnV007SUFPSTtFbEdzZ1dWO0VrRzdnV007SUFPSTtFbEd5Z1dWO0VrR2hoV007SUFPSTtFbEc0Z1dWO0VrR25oV007SUFPSTtFbEcrZ1dWO0VrR3RoV007SUFPSTtFbEdraFdWO0VrR3poV007SUFPSTtFbEdxaFdWO0VrRzVoV007SUFPSTtFbEd3aFdWO0VrRy9oV007SUFPSTtFbEcyaFdWO0VrR2xpV007SUFPSTtFbEc4aFdWO0VrR3JpV007SUFPSTtFbEdpaVdWO0VrR3hpV007SUFPSTtFbEdvaVdWO0VrRzNpV007SUFPSTtFbEd1aVdWO0VrRzlpV007SUFPSTtFbEcwaVdWO0VrR2pqV007SUFPSTtFbEc2aVdWO0VrR3BqV007SUFPSTtFbEdnaldWO0VrR3ZqV007SUFPSTtFbEdtaldWO0VrRzFqV007SUFPSTtFbEdzaldWO0VrRzdqV007SUFPSTtFbEd5aldWO0VrR2hrV007SUFPSTtFbEc0aldWO0VrR25rV007SUFPSTtFbEcraldWO0VrR3RrV007SUFPSTtFbEdra1dWO0VrR3prV007SUFPSTtFbEdxa1dWO0VrRzVrV007SUFPSTtFbEd3a1dWO0VrRy9rV007SUFPSTtFbEcya1dWO0VrR2xsV007SUFPSTtFbEc4a1dWO0VrR3JsV007SUFPSTtFbEdpbFdWO0VrR3hsV007SUFPSTtFbEdvbFdWO0VrRzNsV007SUFPSTtFbEd1bFdWO0VrRzlsV007SUFPSTtFbEcwbFdWO0VrR2ptV007SUFPSTtFbEc2bFdWO0VrR3BtV007SUFPSTtFbEdnbVdWO0VrR3ZtV007SUFPSTtFbEdtbVdWO0VrRzFtV007SUFPSTtFbEdzbVdWO0VrRzdtV007SUFPSTtFbEd5bVdWO0VrR2huV007SUFPSTtFbEc0bVdWO0VrR25uV007SUFPSTtFbEcrbVdWO0VrR3RuV007SUFPSTtJQUFBO0VsR21uV1Y7RWtHMW5XTTtJQU9JO0lBQUE7RWxHdW5XVjtFa0c5bldNO0lBT0k7SUFBQTtFbEcybldWO0VrR2xvV007SUFPSTtJQUFBO0VsRytuV1Y7RWtHdG9XTTtJQU9JO0lBQUE7RWxHbW9XVjtFa0cxb1dNO0lBT0k7SUFBQTtFbEd1b1dWO0VrRzlvV007SUFPSTtJQUFBO0VsRzJvV1Y7RWtHbHBXTTtJQU9JO0lBQUE7RWxHK29XVjtFa0d0cFdNO0lBT0k7SUFBQTtFbEdtcFdWO0VrRzFwV007SUFPSTtJQUFBO0VsR3VwV1Y7RWtHOXBXTTtJQU9JO0lBQUE7RWxHMnBXVjtFa0dscVdNO0lBT0k7SUFBQTtFbEcrcFdWO0VrR3RxV007SUFPSTtJQUFBO0VsR21xV1Y7RWtHMXFXTTtJQU9JO0lBQUE7RWxHdXFXVjtFa0c5cVdNO0lBT0k7RWxHMHFXVjtFa0dqcldNO0lBT0k7RWxHNnFXVjtFa0dwcldNO0lBT0k7RWxHZ3JXVjtFa0d2cldNO0lBT0k7RWxHbXJXVjtFa0cxcldNO0lBT0k7RWxHc3JXVjtFa0c3cldNO0lBT0k7RWxHeXJXVjtFa0doc1dNO0lBT0k7RWxHNHJXVjtFa0duc1dNO0lBT0k7RWxHK3JXVjtFa0d0c1dNO0lBT0k7RWxHa3NXVjtFa0d6c1dNO0lBT0k7RWxHcXNXVjtFa0c1c1dNO0lBT0k7RWxHd3NXVjtFa0cvc1dNO0lBT0k7RWxHMnNXVjtFa0dsdFdNO0lBT0k7RWxHOHNXVjtFa0dydFdNO0lBT0k7RWxHaXRXVjtFa0d4dFdNO0lBT0k7RWxHb3RXVjtFa0czdFdNO0lBT0k7RWxHdXRXVjtFa0c5dFdNO0lBT0k7RWxHMHRXVjtFa0dqdVdNO0lBT0k7RWxHNnRXVjtFa0dwdVdNO0lBT0k7RWxHZ3VXVjtFa0d2dVdNO0lBT0k7RWxHbXVXVjtFa0cxdVdNO0lBT0k7RWxHc3VXVjtFa0c3dVdNO0lBT0k7RWxHeXVXVjtFa0dodldNO0lBT0k7RWxHNHVXVjtFa0dudldNO0lBT0k7RWxHK3VXVjtFa0d0dldNO0lBT0k7RWxHa3ZXVjtFa0d6dldNO0lBT0k7RWxHcXZXVjtFa0c1dldNO0lBT0k7RWxHd3ZXVjtFa0cvdldNO0lBT0k7RWxHMnZXVjtFa0dsd1dNO0lBT0k7RWxHOHZXVjtFa0dyd1dNO0lBT0k7RWxHaXdXVjtFa0d4d1dNO0lBT0k7RWxHb3dXVjtFa0czd1dNO0lBT0k7RWxHdXdXVjtFa0c5d1dNO0lBT0k7RWxHMHdXVjtFa0dqeFdNO0lBT0k7RWxHNndXVjtFa0dweFdNO0lBT0k7SUFBQTtFbEdpeFdWO0VrR3h4V007SUFPSTtJQUFBO0VsR3F4V1Y7RWtHNXhXTTtJQU9JO0lBQUE7RWxHeXhXVjtFa0doeVdNO0lBT0k7SUFBQTtFbEc2eFdWO0VrR3B5V007SUFPSTtJQUFBO0VsR2l5V1Y7RWtHeHlXTTtJQU9JO0lBQUE7RWxHcXlXVjtFa0c1eVdNO0lBT0k7SUFBQTtFbEd5eVdWO0VrR2h6V007SUFPSTtJQUFBO0VsRzZ5V1Y7RWtHcHpXTTtJQU9JO0lBQUE7RWxHaXpXVjtFa0d4eldNO0lBT0k7SUFBQTtFbEdxeldWO0VrRzV6V007SUFPSTtJQUFBO0VsR3l6V1Y7RWtHaDBXTTtJQU9JO0lBQUE7RWxHNnpXVjtFa0dwMFdNO0lBT0k7RWxHZzBXVjtFa0d2MFdNO0lBT0k7RWxHbTBXVjtFa0cxMFdNO0lBT0k7RWxHczBXVjtFa0c3MFdNO0lBT0k7RWxHeTBXVjtFa0doMVdNO0lBT0k7RWxHNDBXVjtFa0duMVdNO0lBT0k7RWxHKzBXVjtFa0d0MVdNO0lBT0k7RWxHazFXVjtFa0d6MVdNO0lBT0k7RWxHcTFXVjtFa0c1MVdNO0lBT0k7RWxHdzFXVjtFa0cvMVdNO0lBT0k7RWxHMjFXVjtFa0dsMldNO0lBT0k7RWxHODFXVjtFa0dyMldNO0lBT0k7RWxHaTJXVjtFa0d4MldNO0lBT0k7RWxHbzJXVjtFa0czMldNO0lBT0k7RWxHdTJXVjtFa0c5MldNO0lBT0k7RWxHMDJXVjtFa0dqM1dNO0lBT0k7RWxHNjJXVjtFa0dwM1dNO0lBT0k7RWxHZzNXVjtFa0d2M1dNO0lBT0k7RWxHbTNXVjtFa0cxM1dNO0lBT0k7RWxHczNXVjtFa0c3M1dNO0lBT0k7RWxHeTNXVjtFa0doNFdNO0lBT0k7RWxHNDNXVjtFa0duNFdNO0lBT0k7RWxHKzNXVjtFa0d0NFdNO0lBT0k7RWxHazRXVjtFa0d6NFdNO0lBT0k7RWxHcTRXVjtFa0c1NFdNO0lBT0k7RWxHdzRXVjtFa0cvNFdNO0lBT0k7RWxHMjRXVjtFa0dsNVdNO0lBT0k7RWxHODRXVjtFa0dyNVdNO0lBT0k7RWxHaTVXVjtFa0d4NVdNO0lBT0k7RWxHbzVXVjtFa0czNVdNO0lBT0k7RWxHdTVXVjtFa0c5NVdNO0lBT0k7RWxHMDVXVjtFa0dqNldNO0lBT0k7RWxHNjVXVjtFa0dwNldNO0lBT0k7RWxHZzZXVjtFa0d2NldNO0lBT0k7RWxHbTZXVjtFa0cxNldNO0lBT0k7RWxHczZXVjtFa0c3NldNO0lBT0k7RWxHeTZXVjtFa0doN1dNO0lBT0k7RWxHNDZXVjtFa0duN1dNO0lBT0k7RWxHKzZXVjtFa0d0N1dNO0lBT0k7RWxHazdXVjtFa0d6N1dNO0lBT0k7RWxHcTdXVjtFa0c1N1dNO0lBT0k7RWxHdzdXVjtFa0cvN1dNO0lBT0k7RWxHMjdXVjtFa0dsOFdNO0lBT0k7RWxHODdXVjtFa0dyOFdNO0lBT0k7RWxHaThXVjtFa0d4OFdNO0lBT0k7RWxHbzhXVjtBQUNGO0F3Qy84V0k7RTBER0k7SUFPSTtFbEd5OFdWO0VrR2g5V007SUFPSTtFbEc0OFdWO0VrR245V007SUFPSTtFbEcrOFdWO0VrR3Q5V007SUFPSTtFbEdrOVdWO0VrR3o5V007SUFPSTtFbEdxOVdWO0VrRzU5V007SUFPSTtFbEd3OVdWO0VrRy85V007SUFPSTtFbEcyOVdWO0VrR2wrV007SUFPSTtFbEc4OVdWO0VrR3IrV007SUFPSTtFbEdpK1dWO0VrR3grV007SUFPSTtFbEdvK1dWO0VrRzMrV007SUFPSTtFbEd1K1dWO0VrRzkrV007SUFPSTtFbEcwK1dWO0VrR2ovV007SUFPSTtFbEc2K1dWO0VrR3AvV007SUFPSTtFbEdnL1dWO0VrR3YvV007SUFPSTtFbEdtL1dWO0VrRzEvV007SUFPSTtFbEdzL1dWO0VrRzcvV007SUFPSTtFbEd5L1dWO0VrR2hnWE07SUFPSTtFbEc0L1dWO0VrR25nWE07SUFPSTtFbEcrL1dWO0VrR3RnWE07SUFPSTtFbEdrZ1hWO0VrR3pnWE07SUFPSTtFbEdxZ1hWO0VrRzVnWE07SUFPSTtFbEd3Z1hWO0VrRy9nWE07SUFPSTtFbEcyZ1hWO0VrR2xoWE07SUFPSTtFbEc4Z1hWO0VrR3JoWE07SUFPSTtFbEdpaFhWO0VrR3hoWE07SUFPSTtFbEdvaFhWO0VrRzNoWE07SUFPSTtFbEd1aFhWO0VrRzloWE07SUFPSTtFbEcwaFhWO0VrR2ppWE07SUFPSTtFbEc2aFhWO0VrR3BpWE07SUFPSTtFbEdnaVhWO0VrR3ZpWE07SUFPSTtFbEdtaVhWO0VrRzFpWE07SUFPSTtFbEdzaVhWO0VrRzdpWE07SUFPSTtFbEd5aVhWO0VrR2hqWE07SUFPSTtFbEc0aVhWO0VrR25qWE07SUFPSTtFbEcraVhWO0VrR3RqWE07SUFPSTtFbEdralhWO0VrR3pqWE07SUFPSTtFbEdxalhWO0VrRzVqWE07SUFPSTtFbEd3alhWO0VrRy9qWE07SUFPSTtFbEcyalhWO0VrR2xrWE07SUFPSTtFbEc4alhWO0VrR3JrWE07SUFPSTtFbEdpa1hWO0VrR3hrWE07SUFPSTtFbEdva1hWO0VrRzNrWE07SUFPSTtFbEd1a1hWO0VrRzlrWE07SUFPSTtFbEcwa1hWO0VrR2psWE07SUFPSTtFbEc2a1hWO0VrR3BsWE07SUFPSTtFbEdnbFhWO0VrR3ZsWE07SUFPSTtFbEdtbFhWO0VrRzFsWE07SUFPSTtFbEdzbFhWO0VrRzdsWE07SUFPSTtFbEd5bFhWO0VrR2htWE07SUFPSTtFbEc0bFhWO0VrR25tWE07SUFPSTtFbEcrbFhWO0VrR3RtWE07SUFPSTtFbEdrbVhWO0VrR3ptWE07SUFPSTtFbEdxbVhWO0VrRzVtWE07SUFPSTtFbEd3bVhWO0VrRy9tWE07SUFPSTtFbEcybVhWO0VrR2xuWE07SUFPSTtFbEc4bVhWO0VrR3JuWE07SUFPSTtFbEdpblhWO0VrR3huWE07SUFPSTtFbEdvblhWO0VrRzNuWE07SUFPSTtFbEd1blhWO0VrRzluWE07SUFPSTtFbEcwblhWO0VrR2pvWE07SUFPSTtFbEc2blhWO0VrR3BvWE07SUFPSTtFbEdnb1hWO0VrR3ZvWE07SUFPSTtFbEdtb1hWO0VrRzFvWE07SUFPSTtFbEdzb1hWO0VrRzdvWE07SUFPSTtFbEd5b1hWO0VrR2hwWE07SUFPSTtFbEc0b1hWO0VrR25wWE07SUFPSTtFbEcrb1hWO0VrR3RwWE07SUFPSTtFbEdrcFhWO0VrR3pwWE07SUFPSTtFbEdxcFhWO0VrRzVwWE07SUFPSTtJQUFBO0VsR3lwWFY7RWtHaHFYTTtJQU9JO0lBQUE7RWxHNnBYVjtFa0dwcVhNO0lBT0k7SUFBQTtFbEdpcVhWO0VrR3hxWE07SUFPSTtJQUFBO0VsR3FxWFY7RWtHNXFYTTtJQU9JO0lBQUE7RWxHeXFYVjtFa0doclhNO0lBT0k7SUFBQTtFbEc2cVhWO0VrR3ByWE07SUFPSTtJQUFBO0VsR2lyWFY7RWtHeHJYTTtJQU9JO0lBQUE7RWxHcXJYVjtFa0c1clhNO0lBT0k7SUFBQTtFbEd5clhWO0VrR2hzWE07SUFPSTtJQUFBO0VsRzZyWFY7RWtHcHNYTTtJQU9JO0lBQUE7RWxHaXNYVjtFa0d4c1hNO0lBT0k7SUFBQTtFbEdxc1hWO0VrRzVzWE07SUFPSTtJQUFBO0VsR3lzWFY7RWtHaHRYTTtJQU9JO0lBQUE7RWxHNnNYVjtFa0dwdFhNO0lBT0k7RWxHZ3RYVjtFa0d2dFhNO0lBT0k7RWxHbXRYVjtFa0cxdFhNO0lBT0k7RWxHc3RYVjtFa0c3dFhNO0lBT0k7RWxHeXRYVjtFa0dodVhNO0lBT0k7RWxHNHRYVjtFa0dudVhNO0lBT0k7RWxHK3RYVjtFa0d0dVhNO0lBT0k7RWxHa3VYVjtFa0d6dVhNO0lBT0k7RWxHcXVYVjtFa0c1dVhNO0lBT0k7RWxHd3VYVjtFa0cvdVhNO0lBT0k7RWxHMnVYVjtFa0dsdlhNO0lBT0k7RWxHOHVYVjtFa0dydlhNO0lBT0k7RWxHaXZYVjtFa0d4dlhNO0lBT0k7RWxHb3ZYVjtFa0czdlhNO0lBT0k7RWxHdXZYVjtFa0c5dlhNO0lBT0k7RWxHMHZYVjtFa0dqd1hNO0lBT0k7RWxHNnZYVjtFa0dwd1hNO0lBT0k7RWxHZ3dYVjtFa0d2d1hNO0lBT0k7RWxHbXdYVjtFa0cxd1hNO0lBT0k7RWxHc3dYVjtFa0c3d1hNO0lBT0k7RWxHeXdYVjtFa0doeFhNO0lBT0k7RWxHNHdYVjtFa0dueFhNO0lBT0k7RWxHK3dYVjtFa0d0eFhNO0lBT0k7RWxHa3hYVjtFa0d6eFhNO0lBT0k7RWxHcXhYVjtFa0c1eFhNO0lBT0k7RWxHd3hYVjtFa0cveFhNO0lBT0k7RWxHMnhYVjtFa0dseVhNO0lBT0k7RWxHOHhYVjtFa0dyeVhNO0lBT0k7RWxHaXlYVjtFa0d4eVhNO0lBT0k7RWxHb3lYVjtFa0czeVhNO0lBT0k7RWxHdXlYVjtFa0c5eVhNO0lBT0k7RWxHMHlYVjtFa0dqelhNO0lBT0k7RWxHNnlYVjtFa0dwelhNO0lBT0k7RWxHZ3pYVjtFa0d2elhNO0lBT0k7RWxHbXpYVjtFa0cxelhNO0lBT0k7SUFBQTtFbEd1elhWO0VrRzl6WE07SUFPSTtJQUFBO0VsRzJ6WFY7RWtHbDBYTTtJQU9JO0lBQUE7RWxHK3pYVjtFa0d0MFhNO0lBT0k7SUFBQTtFbEdtMFhWO0VrRzEwWE07SUFPSTtJQUFBO0VsR3UwWFY7RWtHOTBYTTtJQU9JO0lBQUE7RWxHMjBYVjtFa0dsMVhNO0lBT0k7SUFBQTtFbEcrMFhWO0VrR3QxWE07SUFPSTtJQUFBO0VsR20xWFY7RWtHMTFYTTtJQU9JO0lBQUE7RWxHdTFYVjtFa0c5MVhNO0lBT0k7SUFBQTtFbEcyMVhWO0VrR2wyWE07SUFPSTtJQUFBO0VsRysxWFY7RWtHdDJYTTtJQU9JO0lBQUE7RWxHbTJYVjtFa0cxMlhNO0lBT0k7RWxHczJYVjtFa0c3MlhNO0lBT0k7RWxHeTJYVjtFa0doM1hNO0lBT0k7RWxHNDJYVjtFa0duM1hNO0lBT0k7RWxHKzJYVjtFa0d0M1hNO0lBT0k7RWxHazNYVjtFa0d6M1hNO0lBT0k7RWxHcTNYVjtFa0c1M1hNO0lBT0k7RWxHdzNYVjtFa0cvM1hNO0lBT0k7RWxHMjNYVjtFa0dsNFhNO0lBT0k7RWxHODNYVjtFa0dyNFhNO0lBT0k7RWxHaTRYVjtFa0d4NFhNO0lBT0k7RWxHbzRYVjtFa0czNFhNO0lBT0k7RWxHdTRYVjtFa0c5NFhNO0lBT0k7RWxHMDRYVjtFa0dqNVhNO0lBT0k7RWxHNjRYVjtFa0dwNVhNO0lBT0k7RWxHZzVYVjtFa0d2NVhNO0lBT0k7RWxHbTVYVjtFa0cxNVhNO0lBT0k7RWxHczVYVjtFa0c3NVhNO0lBT0k7RWxHeTVYVjtFa0doNlhNO0lBT0k7RWxHNDVYVjtFa0duNlhNO0lBT0k7RWxHKzVYVjtFa0d0NlhNO0lBT0k7RWxHazZYVjtFa0d6NlhNO0lBT0k7RWxHcTZYVjtFa0c1NlhNO0lBT0k7RWxHdzZYVjtFa0cvNlhNO0lBT0k7RWxHMjZYVjtFa0dsN1hNO0lBT0k7RWxHODZYVjtFa0dyN1hNO0lBT0k7RWxHaTdYVjtFa0d4N1hNO0lBT0k7RWxHbzdYVjtFa0czN1hNO0lBT0k7RWxHdTdYVjtFa0c5N1hNO0lBT0k7RWxHMDdYVjtFa0dqOFhNO0lBT0k7RWxHNjdYVjtFa0dwOFhNO0lBT0k7RWxHZzhYVjtFa0d2OFhNO0lBT0k7RWxHbThYVjtFa0cxOFhNO0lBT0k7RWxHczhYVjtFa0c3OFhNO0lBT0k7RWxHeThYVjtFa0doOVhNO0lBT0k7RWxHNDhYVjtFa0duOVhNO0lBT0k7RWxHKzhYVjtFa0d0OVhNO0lBT0k7RWxHazlYVjtFa0d6OVhNO0lBT0k7RWxHcTlYVjtFa0c1OVhNO0lBT0k7RWxHdzlYVjtFa0cvOVhNO0lBT0k7RWxHMjlYVjtFa0dsK1hNO0lBT0k7RWxHODlYVjtFa0dyK1hNO0lBT0k7RWxHaStYVjtFa0d4K1hNO0lBT0k7RWxHbytYVjtFa0czK1hNO0lBT0k7RWxHdStYVjtFa0c5K1hNO0lBT0k7RWxHMCtYVjtBQUNGO0F3Q3IvWEk7RTBER0k7SUFPSTtFbEcrK1hWO0VrR3QvWE07SUFPSTtFbEdrL1hWO0VrR3ovWE07SUFPSTtFbEdxL1hWO0VrRzUvWE07SUFPSTtFbEd3L1hWO0VrRy8vWE07SUFPSTtFbEcyL1hWO0VrR2xnWU07SUFPSTtFbEc4L1hWO0VrR3JnWU07SUFPSTtFbEdpZ1lWO0VrR3hnWU07SUFPSTtFbEdvZ1lWO0VrRzNnWU07SUFPSTtFbEd1Z1lWO0VrRzlnWU07SUFPSTtFbEcwZ1lWO0VrR2poWU07SUFPSTtFbEc2Z1lWO0VrR3BoWU07SUFPSTtFbEdnaFlWO0VrR3ZoWU07SUFPSTtFbEdtaFlWO0VrRzFoWU07SUFPSTtFbEdzaFlWO0VrRzdoWU07SUFPSTtFbEd5aFlWO0VrR2hpWU07SUFPSTtFbEc0aFlWO0VrR25pWU07SUFPSTtFbEcraFlWO0VrR3RpWU07SUFPSTtFbEdraVlWO0VrR3ppWU07SUFPSTtFbEdxaVlWO0VrRzVpWU07SUFPSTtFbEd3aVlWO0VrRy9pWU07SUFPSTtFbEcyaVlWO0VrR2xqWU07SUFPSTtFbEc4aVlWO0VrR3JqWU07SUFPSTtFbEdpallWO0VrR3hqWU07SUFPSTtFbEdvallWO0VrRzNqWU07SUFPSTtFbEd1allWO0VrRzlqWU07SUFPSTtFbEcwallWO0VrR2prWU07SUFPSTtFbEc2allWO0VrR3BrWU07SUFPSTtFbEdna1lWO0VrR3ZrWU07SUFPSTtFbEdta1lWO0VrRzFrWU07SUFPSTtFbEdza1lWO0VrRzdrWU07SUFPSTtFbEd5a1lWO0VrR2hsWU07SUFPSTtFbEc0a1lWO0VrR25sWU07SUFPSTtFbEcra1lWO0VrR3RsWU07SUFPSTtFbEdrbFlWO0VrR3psWU07SUFPSTtFbEdxbFlWO0VrRzVsWU07SUFPSTtFbEd3bFlWO0VrRy9sWU07SUFPSTtFbEcybFlWO0VrR2xtWU07SUFPSTtFbEc4bFlWO0VrR3JtWU07SUFPSTtFbEdpbVlWO0VrR3htWU07SUFPSTtFbEdvbVlWO0VrRzNtWU07SUFPSTtFbEd1bVlWO0VrRzltWU07SUFPSTtFbEcwbVlWO0VrR2puWU07SUFPSTtFbEc2bVlWO0VrR3BuWU07SUFPSTtFbEdnbllWO0VrR3ZuWU07SUFPSTtFbEdtbllWO0VrRzFuWU07SUFPSTtFbEdzbllWO0VrRzduWU07SUFPSTtFbEd5bllWO0VrR2hvWU07SUFPSTtFbEc0bllWO0VrR25vWU07SUFPSTtFbEcrbllWO0VrR3RvWU07SUFPSTtFbEdrb1lWO0VrR3pvWU07SUFPSTtFbEdxb1lWO0VrRzVvWU07SUFPSTtFbEd3b1lWO0VrRy9vWU07SUFPSTtFbEcyb1lWO0VrR2xwWU07SUFPSTtFbEc4b1lWO0VrR3JwWU07SUFPSTtFbEdpcFlWO0VrR3hwWU07SUFPSTtFbEdvcFlWO0VrRzNwWU07SUFPSTtFbEd1cFlWO0VrRzlwWU07SUFPSTtFbEcwcFlWO0VrR2pxWU07SUFPSTtFbEc2cFlWO0VrR3BxWU07SUFPSTtFbEdncVlWO0VrR3ZxWU07SUFPSTtFbEdtcVlWO0VrRzFxWU07SUFPSTtFbEdzcVlWO0VrRzdxWU07SUFPSTtFbEd5cVlWO0VrR2hyWU07SUFPSTtFbEc0cVlWO0VrR25yWU07SUFPSTtFbEcrcVlWO0VrR3RyWU07SUFPSTtFbEdrcllWO0VrR3pyWU07SUFPSTtFbEdxcllWO0VrRzVyWU07SUFPSTtFbEd3cllWO0VrRy9yWU07SUFPSTtFbEcycllWO0VrR2xzWU07SUFPSTtJQUFBO0VsRytyWVY7RWtHdHNZTTtJQU9JO0lBQUE7RWxHbXNZVjtFa0cxc1lNO0lBT0k7SUFBQTtFbEd1c1lWO0VrRzlzWU07SUFPSTtJQUFBO0VsRzJzWVY7RWtHbHRZTTtJQU9JO0lBQUE7RWxHK3NZVjtFa0d0dFlNO0lBT0k7SUFBQTtFbEdtdFlWO0VrRzF0WU07SUFPSTtJQUFBO0VsR3V0WVY7RWtHOXRZTTtJQU9JO0lBQUE7RWxHMnRZVjtFa0dsdVlNO0lBT0k7SUFBQTtFbEcrdFlWO0VrR3R1WU07SUFPSTtJQUFBO0VsR211WVY7RWtHMXVZTTtJQU9JO0lBQUE7RWxHdXVZVjtFa0c5dVlNO0lBT0k7SUFBQTtFbEcydVlWO0VrR2x2WU07SUFPSTtJQUFBO0VsRyt1WVY7RWtHdHZZTTtJQU9JO0lBQUE7RWxHbXZZVjtFa0cxdllNO0lBT0k7RWxHc3ZZVjtFa0c3dllNO0lBT0k7RWxHeXZZVjtFa0dod1lNO0lBT0k7RWxHNHZZVjtFa0dud1lNO0lBT0k7RWxHK3ZZVjtFa0d0d1lNO0lBT0k7RWxHa3dZVjtFa0d6d1lNO0lBT0k7RWxHcXdZVjtFa0c1d1lNO0lBT0k7RWxHd3dZVjtFa0cvd1lNO0lBT0k7RWxHMndZVjtFa0dseFlNO0lBT0k7RWxHOHdZVjtFa0dyeFlNO0lBT0k7RWxHaXhZVjtFa0d4eFlNO0lBT0k7RWxHb3hZVjtFa0czeFlNO0lBT0k7RWxHdXhZVjtFa0c5eFlNO0lBT0k7RWxHMHhZVjtFa0dqeVlNO0lBT0k7RWxHNnhZVjtFa0dweVlNO0lBT0k7RWxHZ3lZVjtFa0d2eVlNO0lBT0k7RWxHbXlZVjtFa0cxeVlNO0lBT0k7RWxHc3lZVjtFa0c3eVlNO0lBT0k7RWxHeXlZVjtFa0doellNO0lBT0k7RWxHNHlZVjtFa0duellNO0lBT0k7RWxHK3lZVjtFa0d0ellNO0lBT0k7RWxHa3pZVjtFa0d6ellNO0lBT0k7RWxHcXpZVjtFa0c1ellNO0lBT0k7RWxHd3pZVjtFa0cvellNO0lBT0k7RWxHMnpZVjtFa0dsMFlNO0lBT0k7RWxHOHpZVjtFa0dyMFlNO0lBT0k7RWxHaTBZVjtFa0d4MFlNO0lBT0k7RWxHbzBZVjtFa0czMFlNO0lBT0k7RWxHdTBZVjtFa0c5MFlNO0lBT0k7RWxHMDBZVjtFa0dqMVlNO0lBT0k7RWxHNjBZVjtFa0dwMVlNO0lBT0k7RWxHZzFZVjtFa0d2MVlNO0lBT0k7RWxHbTFZVjtFa0cxMVlNO0lBT0k7RWxHczFZVjtFa0c3MVlNO0lBT0k7RWxHeTFZVjtFa0doMllNO0lBT0k7SUFBQTtFbEc2MVlWO0VrR3AyWU07SUFPSTtJQUFBO0VsR2kyWVY7RWtHeDJZTTtJQU9JO0lBQUE7RWxHcTJZVjtFa0c1MllNO0lBT0k7SUFBQTtFbEd5MllWO0VrR2gzWU07SUFPSTtJQUFBO0VsRzYyWVY7RWtHcDNZTTtJQU9JO0lBQUE7RWxHaTNZVjtFa0d4M1lNO0lBT0k7SUFBQTtFbEdxM1lWO0VrRzUzWU07SUFPSTtJQUFBO0VsR3kzWVY7RWtHaDRZTTtJQU9JO0lBQUE7RWxHNjNZVjtFa0dwNFlNO0lBT0k7SUFBQTtFbEdpNFlWO0VrR3g0WU07SUFPSTtJQUFBO0VsR3E0WVY7RWtHNTRZTTtJQU9JO0lBQUE7RWxHeTRZVjtFa0doNVlNO0lBT0k7RWxHNDRZVjtFa0duNVlNO0lBT0k7RWxHKzRZVjtFa0d0NVlNO0lBT0k7RWxHazVZVjtFa0d6NVlNO0lBT0k7RWxHcTVZVjtFa0c1NVlNO0lBT0k7RWxHdzVZVjtFa0cvNVlNO0lBT0k7RWxHMjVZVjtFa0dsNllNO0lBT0k7RWxHODVZVjtFa0dyNllNO0lBT0k7RWxHaTZZVjtFa0d4NllNO0lBT0k7RWxHbzZZVjtFa0czNllNO0lBT0k7RWxHdTZZVjtFa0c5NllNO0lBT0k7RWxHMDZZVjtFa0dqN1lNO0lBT0k7RWxHNjZZVjtFa0dwN1lNO0lBT0k7RWxHZzdZVjtFa0d2N1lNO0lBT0k7RWxHbTdZVjtFa0cxN1lNO0lBT0k7RWxHczdZVjtFa0c3N1lNO0lBT0k7RWxHeTdZVjtFa0doOFlNO0lBT0k7RWxHNDdZVjtFa0duOFlNO0lBT0k7RWxHKzdZVjtFa0d0OFlNO0lBT0k7RWxHazhZVjtFa0d6OFlNO0lBT0k7RWxHcThZVjtFa0c1OFlNO0lBT0k7RWxHdzhZVjtFa0cvOFlNO0lBT0k7RWxHMjhZVjtFa0dsOVlNO0lBT0k7RWxHODhZVjtFa0dyOVlNO0lBT0k7RWxHaTlZVjtFa0d4OVlNO0lBT0k7RWxHbzlZVjtFa0czOVlNO0lBT0k7RWxHdTlZVjtFa0c5OVlNO0lBT0k7RWxHMDlZVjtFa0dqK1lNO0lBT0k7RWxHNjlZVjtFa0dwK1lNO0lBT0k7RWxHZytZVjtFa0d2K1lNO0lBT0k7RWxHbStZVjtFa0cxK1lNO0lBT0k7RWxHcytZVjtFa0c3K1lNO0lBT0k7RWxHeStZVjtFa0doL1lNO0lBT0k7RWxHNCtZVjtFa0duL1lNO0lBT0k7RWxHKytZVjtFa0d0L1lNO0lBT0k7RWxHay9ZVjtFa0d6L1lNO0lBT0k7RWxHcS9ZVjtFa0c1L1lNO0lBT0k7RWxHdy9ZVjtFa0cvL1lNO0lBT0k7RWxHMi9ZVjtFa0dsZ1pNO0lBT0k7RWxHOC9ZVjtFa0dyZ1pNO0lBT0k7RWxHaWdaVjtFa0d4Z1pNO0lBT0k7RWxHb2daVjtFa0czZ1pNO0lBT0k7RWxHdWdaVjtFa0c5Z1pNO0lBT0k7RWxHMGdaVjtFa0dqaFpNO0lBT0k7RWxHNmdaVjtFa0dwaFpNO0lBT0k7RWxHZ2haVjtBQUNGO0F3QzNoWkk7RTBER0k7SUFPSTtFbEdxaFpWO0VrRzVoWk07SUFPSTtFbEd3aFpWO0VrRy9oWk07SUFPSTtFbEcyaFpWO0VrR2xpWk07SUFPSTtFbEc4aFpWO0VrR3JpWk07SUFPSTtFbEdpaVpWO0VrR3hpWk07SUFPSTtFbEdvaVpWO0VrRzNpWk07SUFPSTtFbEd1aVpWO0VrRzlpWk07SUFPSTtFbEcwaVpWO0VrR2pqWk07SUFPSTtFbEc2aVpWO0VrR3BqWk07SUFPSTtFbEdnalpWO0VrR3ZqWk07SUFPSTtFbEdtalpWO0VrRzFqWk07SUFPSTtFbEdzalpWO0VrRzdqWk07SUFPSTtFbEd5alpWO0VrR2hrWk07SUFPSTtFbEc0alpWO0VrR25rWk07SUFPSTtFbEcralpWO0VrR3RrWk07SUFPSTtFbEdra1pWO0VrR3prWk07SUFPSTtFbEdxa1pWO0VrRzVrWk07SUFPSTtFbEd3a1pWO0VrRy9rWk07SUFPSTtFbEcya1pWO0VrR2xsWk07SUFPSTtFbEc4a1pWO0VrR3JsWk07SUFPSTtFbEdpbFpWO0VrR3hsWk07SUFPSTtFbEdvbFpWO0VrRzNsWk07SUFPSTtFbEd1bFpWO0VrRzlsWk07SUFPSTtFbEcwbFpWO0VrR2ptWk07SUFPSTtFbEc2bFpWO0VrR3BtWk07SUFPSTtFbEdnbVpWO0VrR3ZtWk07SUFPSTtFbEdtbVpWO0VrRzFtWk07SUFPSTtFbEdzbVpWO0VrRzdtWk07SUFPSTtFbEd5bVpWO0VrR2huWk07SUFPSTtFbEc0bVpWO0VrR25uWk07SUFPSTtFbEcrbVpWO0VrR3RuWk07SUFPSTtFbEdrblpWO0VrR3puWk07SUFPSTtFbEdxblpWO0VrRzVuWk07SUFPSTtFbEd3blpWO0VrRy9uWk07SUFPSTtFbEcyblpWO0VrR2xvWk07SUFPSTtFbEc4blpWO0VrR3JvWk07SUFPSTtFbEdpb1pWO0VrR3hvWk07SUFPSTtFbEdvb1pWO0VrRzNvWk07SUFPSTtFbEd1b1pWO0VrRzlvWk07SUFPSTtFbEcwb1pWO0VrR2pwWk07SUFPSTtFbEc2b1pWO0VrR3BwWk07SUFPSTtFbEdncFpWO0VrR3ZwWk07SUFPSTtFbEdtcFpWO0VrRzFwWk07SUFPSTtFbEdzcFpWO0VrRzdwWk07SUFPSTtFbEd5cFpWO0VrR2hxWk07SUFPSTtFbEc0cFpWO0VrR25xWk07SUFPSTtFbEcrcFpWO0VrR3RxWk07SUFPSTtFbEdrcVpWO0VrR3pxWk07SUFPSTtFbEdxcVpWO0VrRzVxWk07SUFPSTtFbEd3cVpWO0VrRy9xWk07SUFPSTtFbEcycVpWO0VrR2xyWk07SUFPSTtFbEc4cVpWO0VrR3JyWk07SUFPSTtFbEdpclpWO0VrR3hyWk07SUFPSTtFbEdvclpWO0VrRzNyWk07SUFPSTtFbEd1clpWO0VrRzlyWk07SUFPSTtFbEcwclpWO0VrR2pzWk07SUFPSTtFbEc2clpWO0VrR3BzWk07SUFPSTtFbEdnc1pWO0VrR3ZzWk07SUFPSTtFbEdtc1pWO0VrRzFzWk07SUFPSTtFbEdzc1pWO0VrRzdzWk07SUFPSTtFbEd5c1pWO0VrR2h0Wk07SUFPSTtFbEc0c1pWO0VrR250Wk07SUFPSTtFbEcrc1pWO0VrR3R0Wk07SUFPSTtFbEdrdFpWO0VrR3p0Wk07SUFPSTtFbEdxdFpWO0VrRzV0Wk07SUFPSTtFbEd3dFpWO0VrRy90Wk07SUFPSTtFbEcydFpWO0VrR2x1Wk07SUFPSTtFbEc4dFpWO0VrR3J1Wk07SUFPSTtFbEdpdVpWO0VrR3h1Wk07SUFPSTtJQUFBO0VsR3F1WlY7RWtHNXVaTTtJQU9JO0lBQUE7RWxHeXVaVjtFa0dodlpNO0lBT0k7SUFBQTtFbEc2dVpWO0VrR3B2Wk07SUFPSTtJQUFBO0VsR2l2WlY7RWtHeHZaTTtJQU9JO0lBQUE7RWxHcXZaVjtFa0c1dlpNO0lBT0k7SUFBQTtFbEd5dlpWO0VrR2h3Wk07SUFPSTtJQUFBO0VsRzZ2WlY7RWtHcHdaTTtJQU9JO0lBQUE7RWxHaXdaVjtFa0d4d1pNO0lBT0k7SUFBQTtFbEdxd1pWO0VrRzV3Wk07SUFPSTtJQUFBO0VsR3l3WlY7RWtHaHhaTTtJQU9JO0lBQUE7RWxHNndaVjtFa0dweFpNO0lBT0k7SUFBQTtFbEdpeFpWO0VrR3h4Wk07SUFPSTtJQUFBO0VsR3F4WlY7RWtHNXhaTTtJQU9JO0lBQUE7RWxHeXhaVjtFa0doeVpNO0lBT0k7RWxHNHhaVjtFa0dueVpNO0lBT0k7RWxHK3haVjtFa0d0eVpNO0lBT0k7RWxHa3laVjtFa0d6eVpNO0lBT0k7RWxHcXlaVjtFa0c1eVpNO0lBT0k7RWxHd3laVjtFa0cveVpNO0lBT0k7RWxHMnlaVjtFa0dselpNO0lBT0k7RWxHOHlaVjtFa0dyelpNO0lBT0k7RWxHaXpaVjtFa0d4elpNO0lBT0k7RWxHb3paVjtFa0czelpNO0lBT0k7RWxHdXpaVjtFa0c5elpNO0lBT0k7RWxHMHpaVjtFa0dqMFpNO0lBT0k7RWxHNnpaVjtFa0dwMFpNO0lBT0k7RWxHZzBaVjtFa0d2MFpNO0lBT0k7RWxHbTBaVjtFa0cxMFpNO0lBT0k7RWxHczBaVjtFa0c3MFpNO0lBT0k7RWxHeTBaVjtFa0doMVpNO0lBT0k7RWxHNDBaVjtFa0duMVpNO0lBT0k7RWxHKzBaVjtFa0d0MVpNO0lBT0k7RWxHazFaVjtFa0d6MVpNO0lBT0k7RWxHcTFaVjtFa0c1MVpNO0lBT0k7RWxHdzFaVjtFa0cvMVpNO0lBT0k7RWxHMjFaVjtFa0dsMlpNO0lBT0k7RWxHODFaVjtFa0dyMlpNO0lBT0k7RWxHaTJaVjtFa0d4MlpNO0lBT0k7RWxHbzJaVjtFa0czMlpNO0lBT0k7RWxHdTJaVjtFa0c5MlpNO0lBT0k7RWxHMDJaVjtFa0dqM1pNO0lBT0k7RWxHNjJaVjtFa0dwM1pNO0lBT0k7RWxHZzNaVjtFa0d2M1pNO0lBT0k7RWxHbTNaVjtFa0cxM1pNO0lBT0k7RWxHczNaVjtFa0c3M1pNO0lBT0k7RWxHeTNaVjtFa0doNFpNO0lBT0k7RWxHNDNaVjtFa0duNFpNO0lBT0k7RWxHKzNaVjtFa0d0NFpNO0lBT0k7SUFBQTtFbEdtNFpWO0VrRzE0Wk07SUFPSTtJQUFBO0VsR3U0WlY7RWtHOTRaTTtJQU9JO0lBQUE7RWxHMjRaVjtFa0dsNVpNO0lBT0k7SUFBQTtFbEcrNFpWO0VrR3Q1Wk07SUFPSTtJQUFBO0VsR201WlY7RWtHMTVaTTtJQU9JO0lBQUE7RWxHdTVaVjtFa0c5NVpNO0lBT0k7SUFBQTtFbEcyNVpWO0VrR2w2Wk07SUFPSTtJQUFBO0VsRys1WlY7RWtHdDZaTTtJQU9JO0lBQUE7RWxHbTZaVjtFa0cxNlpNO0lBT0k7SUFBQTtFbEd1NlpWO0VrRzk2Wk07SUFPSTtJQUFBO0VsRzI2WlY7RWtHbDdaTTtJQU9JO0lBQUE7RWxHKzZaVjtFa0d0N1pNO0lBT0k7RWxHazdaVjtFa0d6N1pNO0lBT0k7RWxHcTdaVjtFa0c1N1pNO0lBT0k7RWxHdzdaVjtFa0cvN1pNO0lBT0k7RWxHMjdaVjtFa0dsOFpNO0lBT0k7RWxHODdaVjtFa0dyOFpNO0lBT0k7RWxHaThaVjtFa0d4OFpNO0lBT0k7RWxHbzhaVjtFa0czOFpNO0lBT0k7RWxHdThaVjtFa0c5OFpNO0lBT0k7RWxHMDhaVjtFa0dqOVpNO0lBT0k7RWxHNjhaVjtFa0dwOVpNO0lBT0k7RWxHZzlaVjtFa0d2OVpNO0lBT0k7RWxHbTlaVjtFa0cxOVpNO0lBT0k7RWxHczlaVjtFa0c3OVpNO0lBT0k7RWxHeTlaVjtFa0doK1pNO0lBT0k7RWxHNDlaVjtFa0duK1pNO0lBT0k7RWxHKzlaVjtFa0d0K1pNO0lBT0k7RWxHaytaVjtFa0d6K1pNO0lBT0k7RWxHcStaVjtFa0c1K1pNO0lBT0k7RWxHdytaVjtFa0cvK1pNO0lBT0k7RWxHMitaVjtFa0dsL1pNO0lBT0k7RWxHOCtaVjtFa0dyL1pNO0lBT0k7RWxHaS9aVjtFa0d4L1pNO0lBT0k7RWxHby9aVjtFa0czL1pNO0lBT0k7RWxHdS9aVjtFa0c5L1pNO0lBT0k7RWxHMC9aVjtFa0dqZ2FNO0lBT0k7RWxHNi9aVjtFa0dwZ2FNO0lBT0k7RWxHZ2dhVjtFa0d2Z2FNO0lBT0k7RWxHbWdhVjtFa0cxZ2FNO0lBT0k7RWxHc2dhVjtFa0c3Z2FNO0lBT0k7RWxHeWdhVjtFa0doaGFNO0lBT0k7RWxHNGdhVjtFa0duaGFNO0lBT0k7RWxHK2dhVjtFa0d0aGFNO0lBT0k7RWxHa2hhVjtFa0d6aGFNO0lBT0k7RWxHcWhhVjtFa0c1aGFNO0lBT0k7RWxHd2hhVjtFa0cvaGFNO0lBT0k7RWxHMmhhVjtFa0dsaWFNO0lBT0k7RWxHOGhhVjtFa0dyaWFNO0lBT0k7RWxHaWlhVjtFa0d4aWFNO0lBT0k7RWxHb2lhVjtFa0czaWFNO0lBT0k7RWxHdWlhVjtFa0c5aWFNO0lBT0k7RWxHMGlhVjtFa0dqamFNO0lBT0k7RWxHNmlhVjtFa0dwamFNO0lBT0k7RWxHZ2phVjtFa0d2amFNO0lBT0k7RWxHbWphVjtFa0cxamFNO0lBT0k7RWxHc2phVjtBQUNGO0FtRzdtYUE7RUQrQ1E7SUFPSTtFbEcyamFWO0VrR2xrYU07SUFPSTtFbEc4amFWO0VrR3JrYU07SUFPSTtFbEdpa2FWO0VrR3hrYU07SUFPSTtFbEdva2FWO0FBQ0Y7QW1HeG1hQTtFRDRCUTtJQU9JO0VsR3lrYVY7RWtHaGxhTTtJQU9JO0VsRzRrYVY7RWtHbmxhTTtJQU9JO0VsRytrYVY7RWtHdGxhTTtJQU9JO0VsR2tsYVY7RWtHemxhTTtJQU9JO0VsR3FsYVY7RWtHNWxhTTtJQU9JO0VsR3dsYVY7RWtHL2xhTTtJQU9JO0VsRzJsYVY7RWtHbG1hTTtJQU9JO0VsRzhsYVY7RWtHcm1hTTtJQU9JO0VsR2ltYVY7RWtHeG1hTTtJQU9JO0VsR29tYVY7RWtHM21hTTtJQU9JO0VsR3VtYVY7QUFDRjtBb0d0bmFFO0VqR09JO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VHc09BO0VBQ0E7RUFkRTtFQUNBLHlIQXFHUztFOEZLYjtFQUNBO0VBQ0E7QXBHNHlaRjtBTXgzWkU7RUgxUEU7RUFBQTtFR2dRSTtFRm5SSjtFRXFSSTtBTnUzWlI7QW9HaG9hSTtFakdMRTtFQ1pGO0VEd0JBO0VLeENBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0U0RjRCSTtBcEc0b2FSO0FRem5hSTtFNEZ2QkE7STVGbEJFO0VSc3FhSjtBQUNGOztBb0c1b2FFO0U5RnVOSTtFQUNBLHdIQXFHUztFOEY1QlgsaUJDOVVZO0VEK1VaO0VBSUE7QXBHODJaSjtBb0c5b2FJO0VBRUk7QXBHK29hUjs7QW9HMW9hRTtFQUVJO0VBQ0E7QXBHNG9hTjs7QW9HcG9hRTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBHc29hTjtBb0dub2FJO0VBRUk7RUFDQTtBcEdvb2FSOztBb0cvbmFFO0VBRUk7RUFDQTtBcEdpb2FOOztBb0c3bmFFO0VBRUk7RUFDQTtBcEcrbmFOOztBb0c3M1pFO0VBR0k7QXBHODNaTjs7QW9HajRaRTtFQUdJO0FwR2s0Wk47O0FvRzNuYUU7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBHNm5hTjs7QW9Hcm5hRTtFQW9QQTtFQUNBO0VBQ0E7RUFsUEk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwR3duYU47O0FvR3BuYUU7RUFFSTtFQUNBO0FwR3NuYU47O0FvR2xuYUU7RUFFSTtFQUNBO0FwR29uYU47O0FvRzVtYUU7RUEyTkEsYUFEK0I7RUFFL0I7RUFDQTtFQUNBO0VBMU5JO0VBQ0E7QXBHZ25hTjs7QW9HNW1hRTtFQUVJO0FwRzhtYU47O0FvRzFtYUU7O0VBNE1BLGFBRCtCO0VBRS9CO0VBQ0E7RUFDQTtBcEdtNlpGOztBb0czbWFFO0VqR3JJRTtFaUcySUU7RUFDQTtBcEcwbWFOOztBb0d0bWFFO0VoR25LRTtFRG1CQTtFQ25CQTtFRG1CQTtBSDZ2YUo7QU8zdmFNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUGd3YVI7O0FvRzNtYUU7RUFnTEEsb0JBOUs2QjtFQStLN0I7RUFDQTtFQUNBO0VBL0tJO0VBQ0E7RUFDQTtBcEcrbWFOO0FvRzVtYUk7RUFFSTtBcEc2bWFSOztBb0dwbWFFO0VoR2pNRTtFRG1CQTtFQ25CQTtFRG1CQTtFaUdrTEU7QXBHd21hTjtBT3h4YU07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQNnhhUjs7QW9HN21hSTtFaEd4TUE7RURtQkE7RUNuQkE7RURtQkE7QUh5eWFKO0FPdnlhTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVA0eWFSOztBb0dybmFFO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VoR3RORjtFZ0d3TkU7QXBHdW5hTjtBTzF6YU07RUFDRTtFSHRCSjtFZ0c4Tkk7RTdGdE1BO0FQNnphUjs7QW9HOW1hRTtFQUlJO0VBR0E7QXBHNG1hTjs7QW9HeG1hRTtFakcvTkU7QUgyMGFKOztBb0c3bGFFO0VwRjFNRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUdFO0FoQnd5YU47QWdCcHlhRTs7RUFHSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQnF5YU47QWdCanlhRTtFQUdJO0ViNUVBO0VDWkY7RUR3QkE7QUhvMmFKO0FnQnZ4YUU7RWJ6Rkk7RUNaRjtFRHdCQTtBSHkyYUo7QWdCaHhhSTtFQUVJO0FoQml4YVI7QWdCN3dhSTtFQUVJO0VacEhKO0VZc0hJO0VBQ0E7RUFDQTtBaEI4d2FSO0FnQnh3YUk7RUFFSTtFWmhJSjtFWWtJSTtBaEJ5d2FSO0FnQm53YUk7RUFFSTtBaEJvd2FSO0FnQjV2YUk7RUFFSTtFQUtBO0FoQnl2YVI7QWdCM3VhRTs7RUFHSTtFWjFLRjtFWTRLRTtFQUNBO0VBQ0E7QWhCNHVhTjtBZ0J2dWFJO0VBRUk7RUFDQTtBaEJ3dWFSO0FvQi96YUk7RWpCeEZFO0VDWkY7RUR3QkE7QUhnNWFKO0FvQjM3WkU7RWpCamVJO0VDWkY7RUR3QkE7QUhxNWFKO0FvQmg4WkU7RUE5UUk7RWpCbk5BO0VDWkY7RUR3QkE7QUgyNWFKO0FvQjFyYU07RUFFSTtBcEIycmFWO0FvQnRyYVE7RUFFSSx5QkFoUk87RWpCMEJiO0VDWkY7RUR3QkE7QUhvNmFKO0FvQi9xYUk7RWpCclBBO0FIdTZhSjtBb0c5cWFJO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEcrcWFSO0FvRzFxYU07RTVGL1NGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSNDlhSjtBUTc2YUk7RTRGdVBFO0k1RmhTQTtFUjA5YUo7QUFDRjs7QXNHcjlhRTtFaEd5UEU7RUFDQTtFZ0c3SUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdDbklLO0VEb0lMLFlDcElLO0VEcUlMO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUlBO0F0R3kyYUo7QU05dGFFO0VIMVBFO0VBQUE7RUdnUUk7RUZuUko7RUVxUkk7QU42dGFSO0FzR3YyYUU7RUFFSTtFQUNBO0F0R3cyYU47QXNHcDJhRTtFaEcwRkk7RUFDQSwySEFxR1M7QU53cWFmO0FvQmhsYUU7RWQ5TEk7RUFDQSwySEFxR1M7QU40cWFmO0FzR3AyYUU7RUFFSTtBdEdxMmFOO0FzR2gyYUk7RTdGdEpBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFTGhCQTtFS2tCQTtFTGxCQTtFS29CQTtFQUNBLHdCQXpCMEI7RUEwQjFCLHVCQXBCNEI7QVQ2Z2JoQztBUTUrYUk7RThGOEhBO0k3RnhJRTtFVDAvYUo7QUFDRjtBU3gvYUk7RUFDRTtFQUNBO0VBQ0Esa0JBaEVnQjtFQWlFaEI7RUFDQTtFQUNBO0VMbENGO0VLb0NFO0VMcENGO0VLc0NFO0VBQ0Esd0JBL0JnQjtFQWdDaEIsdUJBaENnQjtBVDBoYnRCO0FRLy9hSTtFQ1BBO0lBZUk7RVQyL2FOO0FBQ0Y7QXNHaDRhRTtFaEdxRUk7RUFDQSw0SEFxR1M7QU55dGFmO0FzRy8zYUU7RUFPSTtBdEcyM2FOO0FzR3YzYUU7RUFFSTtBdEd3M2FOO0FzRy8yYUU7RUFFSTtBdEdnM2FOOztBc0doamJFO0VBME1FLFdDOU5VO0VEK05WLFlDL05VO0F2R3lrYmQ7O0FzR2pqYkU7RTVGcVFFO0VBQ0E7RVB2UUU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQUFBO0VDbkJBO0VEbUJBO0VDbkJBO0VEbUJBO0VtR3VOQTtFQUNBO0VBQ0EsWUV0UGM7RUZ3UGQ7RUFDQTtBdEc4MmFKO0F3R3Q3YUU7RXJHcEpFO0FINmtiSjtBd0dsZ2JFO0VwRzlGRTtFRG1CQTtFQ25CQTtFRG1CQTtBSG1sYko7QU9qbGJNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUHNsYlI7O0F3R3pnYkU7RXBHckdFO0VEbUJBO0VDbkJBO0VEbUJBO0FIa21iSjtBT2htYk07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQcW1iUjs7QXNHam5iRTtFckc4QkUsZUFIc0I7RUFJdEIsa0JBSnNCO0VBY3BCLGlCQU53QjtFQU94QixnQkFQd0I7QURxbGI5QjtBc0dqbmJJO0VyR1pBO0VBQ0E7RUFDQSxZQXRDSztFRzZCTDtFSGVFO0VBQ0EsV0E3Q0c7RUE4Q0g7QUQ0bmJOOztBc0dsbmJFO0U5RmhERTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUnNxYko7QVF2bmJJO0U4RlJGO0k5RmpDSTtFUm9xYko7QUFDRjs7QXNHaG9iRTtFQTBPRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0RzA1YUo7O0FzR3BvYkU7RUFxTkU7RUFRQTtFQUNBO0F0RzQ2YUo7O0FzR3BvYkU7RUE0T0U7RUFDQTtFQUNBO0F0RzQ1YUo7O0FzR3RvYkU7RUFtUEU7RUFDQTtFQUlBO0F0R281YUo7QXNHaDVhRTtFQUVJO0VBSUE7QXRHODRhTjs7QXNHdm9iRTtFbkcvQ0k7RUNaRjtFRHdCQTtFR3lORTtFQUNBLDJIQXFHUztBTm0zYWY7QXVHOWdiRTtFcEdwS0U7RUFBQTtFQUFBO0FIdXJiSjtBdUd0Z2JJO0VwRzdMRTtFQ1pGO0VEd0JBO0FINHJiSjtBdUc5cWFFO0VwRzlnQkU7QUgrcmJKO0F1RzNxYUk7RXBHcGhCQTtBSGtzYko7O0FzR2pwYkU7RXRGYkU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFHRTtBaEIrcGJOO0FnQjNwYkU7O0VBR0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI0cGJOO0FnQnhwYkU7RUFHSTtFYjVFQTtFQ1pGO0VEd0JBO0FIMnRiSjtBZ0I5b2JFO0ViekZJO0VDWkY7RUR3QkE7QUhndWJKO0FnQnZvYkk7RUFFSTtBaEJ3b2JSO0FnQnBvYkk7RUFFSTtFWnBISjtFWXNISTtFQUNBO0VBQ0E7QWhCcW9iUjtBZ0IvbmJJO0VBRUk7RVpoSUo7RVlrSUk7QWhCZ29iUjtBZ0IxbmJJO0VBRUk7QWhCMm5iUjtBZ0JubmJJO0VBRUk7RUFLQTtBaEJnbmJSO0FnQmxtYkU7O0VBR0k7RVoxS0Y7RVk0S0U7RUFDQTtFQUNBO0FoQm1tYk47QWdCOWxiSTtFQUVJO0VBQ0E7QWhCK2xiUjtBb0J0cmJJO0VqQnhGRTtFQ1pGO0VEd0JBO0FIdXdiSjtBb0JsemFFO0VqQmplSTtFQ1pGO0VEd0JBO0FINHdiSjtBb0J2emFFO0VBOVFJO0VqQm5OQTtFQ1pGO0VEd0JBO0FIa3hiSjtBb0JqamJNO0VBRUk7QXBCa2piVjtBb0I3aWJRO0VBRUkseUJBaFJPO0VqQjBCYjtFQ1pGO0VEd0JBO0FIMnhiSjtBb0J0aWJJO0VqQnJQQTtBSDh4Yko7QXNHN3RiSTtFdEZxSkE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VzRnhKSTtBdEdrdWJSO0FvQm4zYUU7RUFFSTtBcEJvM2FOO0FvQmgzYUU7O0VqQnRjSTtFQ1pGO0VEd0JBO0FIZ3piSjs7QXlHenpiRTtFL0ZtUUU7RUFDQTtFUHZRRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0FIMDBiSjs7QXlHLzBiRTtFdEdQSTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFdUc4UUEsaUJBM1JVO0VBNFJWO0VBUUEsaUNBblNXO0VENkJUO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpHczBiTjtBMEdscGJFO0V2R3JOSTtFQ1pGO0VEd0JBO0FIZzJiSjtBTzkxYk07RUFDRTtFSmZGO0VDWkY7RUR3QkE7RXVHbU5JO0VuRzlNQTtBUG0yYlI7O0EwR2hwYkU7RXZHcE9JO0VDWkY7RUR3QkE7QUg4MmJKO0FPNTJiTTtFQUNFO0VKZkY7RUNaRjtFRHdCQTtFdUdrT0k7RW5HN05BO0FQaTNiUjs7QTBHL29iRTtFdkduUEk7RUNaRjtFRHdCQTtBSDQzYko7QU8xM2JNO0VBQ0U7RUpmRjtFQ1pGO0VEd0JBO0V1R21QSTtFbkc5T0E7QVArM2JSOztBMEc1b2JFO0V2R3BRSTtFQ1pGO0VEd0JBO0FIMDRiSjtBT3g0Yk07RUFDRTtFSmZGO0VDWkY7RUR3QkE7RXVHb1FJO0VuRy9QQTtBUDY0YlI7O0EwRzUxYkU7RXZHdERFO0FIczViSjs7QTBHMTJiRTtFdkd4REk7RUNaRjtFRHdCQTtBSDQ1Yko7O0EwRzUxYkU7RXZHaEVFO0FIZzZiSjs7QXVCOTJiRTs7O0VwQmxERTtBSHM2Yko7QTBHdjBiRTs7RUFHSSx3Q0E5SFU7QTFHczhiaEI7O0EwR3AwYkU7RUFFSSxxQ0FwSVU7QTFHMDhiaEI7O0EwRzl6YkU7O0VBR0ksd0JBOUlTO0VBK0lUO0ExR2cwYk47O0EwRzV6YkU7RUFFSSxxQkFySlM7RUFzSlQ7QTFHOHpiTjs7QTBHMXpiRTtFQUVJO0ExRzR6Yk47O0EwR3B6YkU7RXZHeklFO0FIaThiSjs7QTBHOXliRTtFdkduSkU7QUhxOGJKOztBMEdweWJFOzs7RXZHaktFO0FIMjhiSjs7QTBHbnFiRTtFQUVJLFlBa0hLO0ExR21qYlg7O0EwR2pxYkU7RUFFSSxnQkE0R0s7QTFHdWpiWDs7QTBHcnJiRTtFQUVJLFlBbUl1QjtBMUdvamI3Qjs7QTBHN29iRTs7RUFHSTtBMUcrb2JOOztBMEdqbmJFOztFdEc5WEU7RURtQkE7RUNuQkE7RURtQkE7QUhvK2JKO0FPbCtiTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVB1K2JSOztBeUd0NmJFO0VBR0k7RUFDQTtFQUNBO0F6R3U2Yk47O0F5R242YkU7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7OztJQUFBO0VBTUE7QXpHcTZiTjs7QTJHMWljRTtFakdvU0U7RUFDQTtFUHZRRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0V3R3RDRTtFQUNBO0VBQ0E7RUFDQTtBM0dpa2NOO0FPNWhjTTtFQUNFO0VIdEJKO0V1R1pJO0VwR29DQTtBUCtoY1I7O0EyRzlqY0U7RUFFSTtBM0dna2NOO0FPdGljTTtFQUNFO0VIdEJKO0V1R0NJO0VwR3VCQTtBUHlpY1I7O0EyRzNqY0U7RUFZRTtBM0dtamNKOztBNEd2bGNFO0VsRytSRTtFQUNBO0VQdlFFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RXlHakNFO0VBQ0E7RUFDQTtFQUNBO0V4R1dGO0V3R1JFO0E1RzZtY047QU9obGNNO0VBQ0U7RUh0Qko7RXdHSkk7RXJHNEJBO0FQbWxjUjs7QTRHMW1jRTtFRGlCRTtBM0c2bGNKOztBNEcxbWNFO0VBRUk7QTVHNG1jTjtBTzlsY007RUFDRTtFSHRCSjtFd0dhSTtFckdXQTtBUGltY1I7O0E0R3ZtY0U7RUNzRUUsV0FuQks7RUFvQkwsWUFwQks7RUFxQkw7RURoRUU7RXhHMUJGO0VEbUJBO0VDbkJBO0VEbUJBO0V5R3FCRTtFQVVBO0E1R29sY047QTZHemljRTtFQUVJO0E3RzBpY047QTZHcmljSTtFQVVJO0VBQ0EsZ0JBMUNDO0VBMkNELGVBM0NDO0E3R3lrY1Q7QVEzbWNJO0VxR2lFQTtJcEd6RkE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lMaEJBO0lLa0JBO0lMbEJBO0lLb0JBO0lBQ0EsWUEzQndCO0lBNEJ4QixXQXRCMEI7RVQ2cGM1QjtBQUNGO0FRM25jSTtFcUdpRUE7SXBHM0VFO0VUeW9jSjtBQUNGO0FRaG9jSTtFQ1BBO0lBQ0U7SUFDQTtJQUNBLGtCQWhFZ0I7SUFpRWhCO0lBQ0E7SUFDQTtJTGxDRjtJS29DRTtJTHBDRjtJS3NDRTtJQUNBLHdCQS9CZ0I7SUFnQ2hCLHVCQWhDZ0I7RVQwcWNwQjtBQUNGO0FRaHBjSTtFQ1BBO0lBZUk7RVQ0b2NOO0FBQ0Y7QTZHMWpjSTtFQUVJLFdBM0RDO0VBNERELFlBNURDO0U1RzNCTCxlQUhzQjtFQUl0QixrQkFKc0I7RUFjcEIsaUJBTndCO0VBT3hCLGdCQVB3QjtBRGlwYzlCO0E2R2xqY007RUFFSSxnQkEzRUQ7RUE0RUMsZUE1RUQ7QTdHK25jVDtBNkc3aWNFO0U1R2hKRTtFQUNBO0VBQ0EsWTRHNERLO0V6R3JFTDtFSGVFO0VBQ0EsVzRHcURHO0U1R3BESDtBRDRyY047QU94cmNNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUDZyY1I7O0E0R3ByY0k7RXhHakNBO0VEbUJBO0VDbkJBO0VEbUJBO0FIeXNjSjtBT3ZzY007RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQNHNjUjs7QTRHenJjSTtFQUVJO0E1RzJyY1I7QTRHbnJjSTtFQUlJO0E1R2tyY1I7O0E0RzdxY0U7RUFFSTtFQUNBO0VBQ0E7QTVHK3FjTjs7QTRHM3FjRTtFQUVJO0E1RzZxY047O0E0R3pxY0U7RXBHcEVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUml2Y0o7O0E0R3pxY0U7RUFFSTtFQUNBO0VBQ0E7QTVHMnFjTjs7QTBHaHVjRTtFdkdqQkU7QUhxdmNKO0FvQnpxY0k7RWpCeEZFO0VDWkY7RUR3QkE7QUgwdmNKO0FvQnJ5YkU7RWpCamVJO0VDWkY7RUR3QkE7QUgrdmNKO0FvQjF5YkU7RUE5UUk7RWpCbk5BO0VDWkY7RUR3QkE7QUhxd2NKO0FvQnBpY007RUFFSTtBcEJxaWNWO0FvQmhpY1E7RUFFSSx5QkFoUk87RWpCMEJiO0VDWkY7RUR3QkE7QUg4d2NKO0FvQnpoY0k7RWpCclBBO0FIaXhjSjs7QTBHdHZjRTtFdkczQkU7QUhxeGNKO0FvQnpzY0k7RWpCeEZFO0VDWkY7RUR3QkE7QUgweGNKO0FvQnIwYkU7RWpCamVJO0VDWkY7RUR3QkE7QUgreGNKO0FvQjEwYkU7RUE5UUk7RWpCbk5BO0VDWkY7RUR3QkE7QUhxeWNKO0FvQnBrY007RUFFSTtBcEJxa2NWO0FvQmhrY1E7RUFFSSx5QkFoUk87RWpCMEJiO0VDWkY7RUR3QkE7QUg4eWNKO0FvQnpqY0k7RWpCclBBO0FIaXpjSjs7QThHOTFjRTtFQUVJO0VBQ0E7RUFDQTtBOUdnMmNOO0E4RzcxY0k7RUFFSTtBOUc4MWNSOztBOEd6MWNFO0UzR21CSTtFQ1pGO0VEd0JBO0UyRzNCRTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0E5RzAxY047O0ErR2w0Y0U7RXJHdVRFO0VBQ0E7RVB2UUU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFNEd6REU7RUFDQTtFQUNBO0EvR3k1Y047O0ErR3I1Y0U7RTNHZ0NFO0VEbUJBO0VDbkJBO0VEbUJBO0U0Ry9DRTtFQUNBO0VBQ0E7RUFDQTtBL0d5NWNOO0FPMzJjTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVBnM2NSOztBK0c3NWNFO0VBRUk7RUFDQTtBL0crNWNOOztBK0czNWNFO0UzR2NFO0VEbUJBO0VDbkJBO0VEbUJBO0FIaTRjSjtBTy8zY007RUFDRTtFSHRCSjtFeUc4Tkk7RXRHdE1BO0FQazRjUjs7QU9yNGNNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUDI0Y1I7O0ErRzE2Y0U7RTNHT0U7RURtQkE7RUNuQkE7RURtQkE7RTRHbEJFO0EvRzA2Y047QU90NWNNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUDI1Y1I7O0ErRzk2Y0U7RTNHTEU7RURtQkE7RUNuQkE7RURtQkE7RTRHVkU7RUFDQTtBL0drN2NOO0FPdjZjTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVA0NmNSOztBK0d0N2NFO0UzR2RFO0VEbUJBO0VDbkJBO0VEbUJBO0U0R0RFO0EvRzA3Y047QU92N2NNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUDQ3Y1I7O0ErRzk3Y0U7RTVHZkk7RUNaRjtFRHdCQTtFNEdRRTtBL0dnOGNOO0FnSHgxYkU7RUFFSTtFQUNBLGVEL21CK0M7QS9HdzhjckQ7QWdIenhhRTtFQXFCSSxZTm5zQ21DO0ExRzA4Y3pDO0FzQnQyY0U7RUFjTTtBdEIyMWNSO0F1Qjl0Y0U7RUFFSTtBdkIrdGNOO0FzQjUyY0U7O0VBY007QXRCazJjUjtBdUJydGNJOztFQUVJO0F2QnV0Y1I7QXNCNzFjRTtFQUVJO0F0QjgxY047QXNCbDZjSTtFQUNFO0lsQmxGRjtJa0JvRkk7RXRCbzZjTjtFc0JoNmNJO0lBQ0U7SWxCekZKO0lrQjJGSTtFdEJrNmNOO0VzQjk1Y0k7SUFDRTtJbEJoR0o7SWtCdUdJO0V0QjI1Y047RXNCdjVjSTtJbEIzR0Y7SWtCNkdJO0V0Qnk1Y047QUFDRjtBZ0gzcmJFO0VBRUksV0M1MkJZO0VENjJCWixZQzcyQlk7QWpIeWlkbEI7QXVCcHVjRTtFQUVJLDRCeUZvd0NBO0FoSGkrWk47QWtIditiRTtFQUVJLFlSamhCbUM7QTFHeS9jekM7O0FvQmw3Y0k7OztFakJ4RkU7RUNaRjtFRHdCQTtBSHNnZEo7QW9CampjRTs7O0VqQmplSTtFQ1pGO0VEd0JBO0FINmdkSjtBb0J4amNFOzs7RUE5UUk7RWpCbk5BO0VDWkY7RUR3QkE7QUhxaGRKO0FvQnB6Y007O0VBRUk7QXBCc3pjVjtBb0JqemNROztFQUVJLHlCQWhSTztFakIwQmI7RUNaRjtFRHdCQTtBSGdpZEo7QW9CM3ljSTs7RWpCclBBO0FIb2lkSjtBb0J4OWNJOzs7O0VqQnhGRTtFQ1pGO0VEd0JBO0FINGlkSjtBbUh2M2JFOztFaEhqc0JJO0VDWkY7RUR3QkE7RUFBQTtBSG1qZEo7QW1IOTNiRTs7Ozs7O0VoSGpzQkk7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7QUhna2RKO0FtSHAyYkU7RUFDRTtJaEh6dUJFO0lDWkY7SUR3QkE7SUFBQTtFSHVrZEY7RW1IcjJiRTtJaEg5dUJFO0lDWkY7SUR3QkE7SUFaRTtJQ1pGO0lEd0JBO0VIK2tkRjtBQUNGO0FtSHgyYkU7RUFDRTtJaEhydkJFO0lDWkY7SUR3QkE7SUFaRTtJQ1pGO0lEd0JBO0VIeWxkRjtFbUgxMmJFO0loSDN2QkU7SUNaRjtJRHdCQTtJQUFBO0VIK2xkRjtBQUNGO0FtSDlxY1E7OztFQUVJO0FuSGlyY1o7QW1IMXFjUTs7O0VBRUk7QW5INnFjWjs7QW9INzNjRTtFcEd6TUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFHRTtBaEJ1a2ROO0FnQm5rZEU7O0VBR0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJva2ROO0FnQmhrZEU7RUFHSTtFYjVFQTtFQ1pGO0VEd0JBO0FIbW9kSjtBZ0J0amRFO0ViekZJO0VDWkY7RUR3QkE7QUh3b2RKO0FnQi9pZEk7RUFFSTtBaEJnamRSO0FnQjVpZEk7RUFFSTtFWnBISjtFWXNISTtFQUNBO0VBQ0E7QWhCNmlkUjtBZ0J2aWRJO0VBRUk7RVpoSUo7RVlrSUk7QWhCd2lkUjtBZ0JsaWRJO0VBRUk7QWhCbWlkUjtBZ0IzaGRJO0VBRUk7RUFLQTtBaEJ3aGRSO0FnQjFnZEU7O0VBR0k7RVoxS0Y7RVk0S0U7RUFDQTtFQUNBO0FoQjJnZE47QWdCdGdkSTtFQUVJO0VBQ0E7QWhCdWdkUjs7QW9IbDdjRTtFcEdsQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0FoQnM5Y0o7O0FvSGhzZEU7RWpIQ0k7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFBQTtFQUFBO0VpSGd5Q0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEgrNWFKO0FvSHZ5WUU7RWpILzVFRTtBSHlzZEo7QW9ILzJZRTtFakgxMUVFO0FINHNkSjtBb0gzd1lFO0VBR0U7SWpIcDhFQTtFSGd0ZEY7QUFDRjtBb0h4d1lFO0VBR0U7SWpINThFQTtFSHF0ZEY7QUFDRjtBb0hsMGJFO0VqSGg2Qkk7RUNaRjtFRHdCQTtBSDJ0ZEo7QXFIdHNkRTtFbEhyQkU7QUg4dGRKO0FzSHpzZEU7O0VuSHJCRTtBSGt1ZEo7QXVIdHBkRTtFcEg1RUU7QUhxdWRKO0F1SC9vZEU7RXBIdEZFO0FId3VkSjtBb0hoMFlJO0VqSHg2RUE7QUgydWRKO0FvSHp6WUk7RWpIbDdFQTtBSDh1ZEo7QW9ILzNhRTtFQUVJO0VBQ0E7RUFDQTtBcEhnNGFOOztBb0g1dmRFO0UxR21RRTtFQUNBO0VQdlFFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFaUhrbUVBLFlJcmpFVztFSnlqRVg7RUFTQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEg4cFpKO0FvSDFwWkk7RUFDRTtBcEg0cFpOO0FvSHhwWkk7RUFDRTtBcEgwcFpOO0FvSHZwWkk7RUFDRTtBcEh5cFpOO0FvSHJwWkk7RUFDRTtBcEh1cFpOO0FvSDkxWUU7RUFHRTtJQWxUQTtJQUlBO0VwSDhvWkY7QUFDRjtBb0g1MVlFO0VBR0U7SUExVEE7SUFJQTtFcEhvcFpGO0FBQ0Y7QW9IMTJZRTtFQUdFO0lBclNBO0lBQ0E7SUFJQTtFcEg2b1pGO0FBQ0Y7QW9IejJZRTtFQUdFO0lBN1NBO0lBQ0E7SUFJQTtFcEhvcFpGO0FBQ0Y7O0FvSGp6ZEU7RTFHa1BFO0VBQ0E7RVB2UUU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VpSGttRUEsWUlyakVXO0VKeWpFWDtFQXVFQTtFQUNBO0FwSHNxWko7QW9IejBkSTtFQXdyRUE7QXBIb3BaSjtBb0h0MGRJO0VBQ0U7SUFzcUVGO0lBQ0E7SUFDQTtJQUNBO0VwSG1xWkY7QUFDRjs7QW9IdjBkRTtFaEgzQ0U7RURtQkE7RUNuQkE7RURtQkE7QUhzMmRKO0FPcDJkTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVB5MmRSOztBb0huMWRJO0VoSDlDQTtFRG1CQTtFQ25CQTtFRG1CQTtBSHEzZEo7QU9uM2RNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUHczZFI7O0FvSDcxZEU7RWhIbkRFO0VEbUJBO0VDbkJBO0VEbUJBO0FIbzRkSjtBT2w0ZE07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQdTRkUjs7QW9IejJkSTtFaEh0REE7RURtQkE7RUNuQkE7RURtQkE7QUhtNWRKO0FPajVkTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVBzNWRSOztBb0hqM2RFO0VBcWhCRSxZSTVpQks7QXhINDRkVDtBb0JuMWRJOztFakJ4RkU7RUNaRjtFRHdCQTtBSHE2ZEo7QW9CaDljRTtFakJqZUk7RUNaRjtFRHdCQTtBSDA2ZEo7QW9CcjljRTtFQTlRSTtFakJuTkE7RUNaRjtFRHdCQTtBSGc3ZEo7QVV4amRFO0VBeUNBO0VBQ0E7RUFDQSxZOEd2WG9CO0U5R3dYcEI7RUF4Q0k7QVYyamROO0FvSDk5WUU7RWpIejlFRTtBSDA3ZEo7QXlIaDZkSTtFdEgxQkE7QUg2N2RKO0F5SG42ZEk7RXRIMUJBO0FIZzhkSjtBeUhoN2RJO0V0SDVCRTtFQ1pGO0VEd0JBO0FIcThkSjtBb0h2aWJFO0VoSGo3Q0U7RURtQkE7RUNuQkE7RURtQkE7QUgyOGRKO0FPejhkTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVA4OGRSOztBc0IxMmRFO0VBY007QXRCZzJkUjtBb0g1b2JJO0VBQ0U7QXBIOG9iTjtBb0h4aWJJO0VBQ0U7QXBIMGliTjtBb0h2aWJJO0VBRUU7QXBId2liTjtBb0huaWJFO0VBQ0U7SUEwdkJBO0lBQ0E7SUFDQTtJQUNBO0VwSDR5WkY7QUFDRjs7QW9IdDdkRTtFQXlqQkUsWUl4bEJLO0VKKzhDTDtBcEgyZ2JKO0FzQnA0ZEU7RUFjTTtBdEJ5M2RSO0F1QjV2ZEU7RUFFSTtBdkI2dmROO0FzQjE0ZEU7O0VBY007QXRCZzRkUjtBdUJudmRJOztFQUVJO0F2QnF2ZFI7QXNCMzNkRTtFQUVJO0F0QjQzZE47QXNCaDhkSTtFQUNFO0lsQmxGRjtJa0JvRkk7RXRCazhkTjtFc0I5N2RJO0lBQ0U7SWxCekZKO0lrQjJGSTtFdEJnOGROO0VzQjU3ZEk7SUFDRTtJbEJoR0o7SWtCdUdJO0V0Qnk3ZE47RXNCcjdkSTtJbEIzR0Y7SWtCNkdJO0V0QnU3ZE47QUFDRjtBb0h2c2JJO0VBQ0U7QXBIeXNiTjtBdUJuK2RFOzs7RXBCbERFO0FIMGhlSjtBdUJ4K2RFOzs7RXBCbERFO0FIK2hlSjtBdUI3K2RFOzs7RXBCOURJO0VDWkY7RUR3QkE7QUhzaWVKO0F1QnA3ZEU7RW5CcklFO0VET0U7RUNaRjtFQUtBO0VEbUJBO0VDbkJBO0VEbUJBO0VDbkJBO0VEbUJBO0VDbkJBO0VET0U7RUNaRjtFQUtBO0VEbUJBO0FIc2plSjtBT3BqZU07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRE9FO0VDWkY7RUFLQTtFRG1CQTtFQ25CQTtFRE9FO0VDWkY7RUFLQTtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQbWtlUjs7QXVCMzdkUTtFQTNCTjtJQTRCUTtFdkIrN2RSO0FBQ0Y7QXVCNTZkUTtFQVpOO0lBYVE7RXZCKzZkUjtBQUNGO0F1QjE2ZEU7RW5CNUxFO0VEbUJBO0VDbkJBO0VET0U7RUNaRjtFQUtBO0VEbUJBO0VDbkJBO0VET0U7RUNaRjtFQUtBO0VEbUJBO0VDbkJBO0VEbUJBO0FIbW1lSjtBT2ptZU07RUFDRTtFSHRCSjtFRE9FO0VDWkY7RUFLQTtFRG1CQTtFQ25CQTtFRG1CQTtFQ25CQTtFRG1CQTtFQ25CQTtFRE9FO0VDWkY7RUFLQTtFRG1CQTtFSUtJO0FQZ25lUjs7QW9IMTdiTTtFQXpvQ0o7SWhIckVFO0lnSG10Q0k7RXBIMjdiTjtBQUNGO0FvSGo4Yk07RUF6b0NKO0loSHJFRTtJZ0htdENJO0VwSGk4Yk47QUFDRjtBb0h2OGJNO0VBM0xGO0loSG5oQ0E7SWdIbXRDSTtFcEh1OGJOO0FBQ0Y7QW9INzhiTTtFQTNMRjtJaEhuaENBO0lnSG10Q0k7RXBINjhiTjtBQUNGO0FvSDluY0k7RWhIbmlDQTtFZ0h1aUNNO0FwSDhuY1Y7QW9IdjliTTtFQTNLRjtJaEhuaUNBO0lnSG10Q0k7RXBIdTliTjtBQUNGO0FPdHBlTTtFQUNFO0VIdEJKO0VnSHVqQ1E7RTdHL2hDSjtBUHlwZVI7QW9IbitiTTtFN0d6ckNBO0lIckJGO0lnSG10Q0k7RXBIbStiTjtBQUNGOztBb0h4bmNJO0VoSC9qQ0E7RWdINmtDTTtBcEgrbWNWO0FvSDkrYk07RUEvSUY7SWhIL2pDQTtJZ0htdENJO0VwSDgrYk47QUFDRjtBTzdxZU07RUFDRTtFSHRCSjtFZ0htbENRO0U3RzNqQ0o7QVBncmVSO0FvSDEvYk07RTdHenJDQTtJSHJCRjtJZ0htdENJO0VwSDAvYk47QUFDRjs7QW9IN21jSTtFaEhqbUNBO0VnSHkzQ0E7RWhIejNDQTtFZ0gyM0NBO0FwSDAxYko7QXVCbm5lRTtFQUVJLGdCQ3BJUztBeEJ3dmVmO0FvQnpuZUk7O0VqQnhGRTtFQ1pGO0VEd0JBO0FIMnNlSjtBb0h6dGJFO0VoSHJnREU7RURtQkE7RUNuQkE7RURtQkE7QUhpdGVKO0FPL3NlTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVBvdGVSOztBb0hwdmJFO0VBR0k7RUFDQTtFQUNBO0FwSHF2Yk47QW9IMXFlSTtFQTQ4Q0E7QXBIaXViSjs7QW9IdHFlRTtFQTB3REU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUlBO0FwSDY1YUo7QW9IbHphRTtFQUVJLFNJNzREZTtBeEhnc2VyQjtBb0gveWFJO0VBRUk7QXBIZ3phUjtBb0hscmVJO0VBNjREQTtFQUNBO0VBQ0Esa0JJNzVEbUI7RUo4NURuQjtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBSUEsbUJJeDZEbUI7QXhIMnNldkI7QW9IaHdhSTtFQUdFO0FwSGd3YU47QXNCdHBlRTtFQWNNO0F0QjJvZVI7QXNCbG9lRTtFQUVJO0F0Qm1vZU47QXNCdnNlSTtFQUNFO0lsQmxGRjtJa0JvRkk7RXRCeXNlTjtFc0Jyc2VJO0lBQ0U7SWxCekZKO0lrQjJGSTtFdEJ1c2VOO0VzQm5zZUk7SUFDRTtJbEJoR0o7SWtCdUdJO0V0QmdzZU47RXNCNXJlSTtJbEIzR0Y7SWtCNkdJO0V0QjhyZU47QUFDRjtBb0hudGVNO0VBczlERixnQkk5OEQrQjtFSis4RC9CLGtCSTk4RGtDO0F4SDhzZXRDO0FvSGx0ZVE7RUEwOURKLGdCSXY4RHdDO0VKdzhEeEMsbUJJdjhEMkM7QXhIa3NlL0M7QXVCbHRlRTtFQUVJLGM2RjA5RHlDO0FwSHl2YS9DO0FzQjNyZUU7RUFjTTtBdEJncmVSO0F1Qm5qZUU7RUFFSTtBdkJvamVOO0FzQmpzZUU7O0VBY007QXRCdXJlUjtBdUIxaWVJOztFQUVJO0F2QjRpZVI7QXNCbHJlRTtFQUVJO0F0Qm1yZU47QXNCdnZlSTtFQUNFO0lsQmxGRjtJa0JvRkk7RXRCeXZlTjtFc0JydmVJO0lBQ0U7SWxCekZKO0lrQjJGSTtFdEJ1dmVOO0VzQm52ZUk7SUFDRTtJbEJoR0o7SWtCdUdJO0V0Qmd2ZU47RXNCNXVlSTtJbEIzR0Y7SWtCNkdJO0V0Qjh1ZU47QUFDRjtBb0hydmVNO0VBMC9ERixnQklyaEVpQztFSnNoRWpDLG1CSXJoRW9DO0F4SG14ZXhDO0FvSHJ2ZU07RUE4K0RGLFNJdmhFMEI7QXhIaXllOUI7QW9IbHZlTTtFQXM1REYsa0JJeDRENEM7QXhIdXVlaEQ7QW9IanZlTTtFQW00REY7RUFFQTtBcEhnM2FKO0FVOThkRTtFQXdCQTtFQUNBO0VBQ0EsWThHdFQwQztFOUd1VDFDO0VBdkJJO0FWaTlkTjtBb0hyM2FJO0VBRUU7QXBIczNhTjs7QW9IdnZlRTtFQTR1REU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsZ0JJejBESztFSnExREw7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7QXBIbWdiSjtBb0hyd2VJO0VBZ3hEQTtBcEh3L2FKO0FvSHJ3ZU07O0VBd3hERjtBcEhpL2FKO0FvSG53ZUk7RWhIeklBO0VnSDI2REE7QXBIcSthSjtBTzMzZU07RUFDRTtFSHRCSjtFZ0hnN0RFO0U3R3g1REU7QVA4M2VSOztBb0gxd2VNOztFaEg1SUY7RWdIODdEQTtBcEg4OWFKO0FPdjRlTTtFQUNFO0VIdEJKO0VnSG04REU7RTdHMzZERTtBUDA0ZVI7O0FvSC93ZUU7RWhIbkpFO0VEbUJBO0VDbkJBO0VEbUJBO0FIczVlSjtBT3A1ZU07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQeTVlUjs7QW9IanZiRTtFOUZsaURFLDRCOEY2cERBO0VoSDN6REE7RURtQkE7RUNuQkE7RURtQkE7QUhzNmVKO0FPcDZlTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVB5NmVSOztBb0h4dmJFO0U5RjNpREUsMEM4RjZxREE7QXBIMG5iSjtBb0h4c2JFO0VoSDd2REU7RURtQkE7RUNuQkE7RURtQkE7QUh3N2VKO0FPdDdlTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVAyN2VSOztBdUI1cWVFO0VBRUksNEI2Rm1nREY7QXBIMnFiSjtBc0IzMWVFO0VsQjVIRTtFa0JnSUk7QXRCMjFlUjtBT3Q4ZU07RUFDRTtFSHRCSjtFa0JzSU07RWY5R0Y7QVB5OGVSOztBdUIxdGVFO0VBRUk7QXZCNHRlTjtBc0J6MmVFOztFbEI1SEU7RWtCZ0lJO0F0QjAyZVI7QU9yOWVNO0VBQ0U7RUh0Qko7RWtCc0lNO0VmOUdGO0FQdzllUjs7QXVCenRlSTs7RUFFSTtBdkI0dGVSO0FzQmwyZUU7RUFFSTtBdEJtMmVOO0FzQnY2ZUk7RUFDRTtJbEJsRkY7SWtCb0ZJO0V0Qnk2ZU47RXNCcjZlSTtJQUNFO0lsQnpGSjtJa0IyRkk7RXRCdTZlTjtFc0JuNmVJO0lBQ0U7SWxCaEdKO0lrQnVHSTtFdEJnNmVOO0VzQjU1ZUk7SWxCM0dGO0lrQjZHSTtFdEI4NWVOO0FBQ0Y7QU92L2VNO0VBQ0U7RUFFQTtBUHcvZVI7QXNCNzNlRTtFQUVJO0F0QjgzZU47O0FzQmw4ZUk7RUFDRTtJbEJsRkY7SWtCb0ZJO0V0QnE4ZU47RXNCajhlSTtJQUNFO0lsQnpGSjtJa0IyRkk7RXRCbThlTjtFc0IvN2VJO0lBQ0U7SWxCaEdKO0lrQnVHSTtFdEI0N2VOO0VzQng3ZUk7SWxCM0dGO0lrQjZHSTtFdEIwN2VOO0FBQ0Y7O0FvSHo0ZUU7RWhIL0pFO0VEbUJBO0VDbkJBO0VEbUJBO0FINGhmSjtBTzFoZk07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQK2hmUjs7QW9IajJiRTtFOUZ4akRFLDRCOEY2cERBO0FwSGd3Yko7QW9IajJiRTtFOUY1akRFLDBDOEY2cURBO0FwSG12Yko7QXVCdnhlRTtFQUVJLDRCNkZtZ0RGO0FwSHF4Yko7O0FvSHQ1ZUU7RWhIM0tFO0VnSHkzQ0E7RWhIejNDQTtFZ0gyM0NBO0FwSDZzY0o7QW9ILzFiRTtFOUYza0RFLDRCOEY2cERBO0FwSGd4Yko7QW9IOTFiRTtFOUYva0RFLDBDOEY2cURBO0FwSG13Yko7O0FvSHg1ZUU7RUFFSTtFQUNBO0VBQ0E7QXBIMDVlTjtBb0h2NWVJO0VBRUksbUJJakljO0VKa0lkLGtCSWxJYztBeEgwaGZ0Qjs7QW9IOTRlRTtFQUVJO0FwSGc1ZU47O0FvSDFxYUU7RWpILzVFRTtBSDZrZko7QXVCL2dmRTs7O0VBSUksaUJpR2hEa0I7QXhIZ2tmeEI7QW9IaDhiRTtFQUdJO0FwSGc4Yk47QXVCdGdmRTtFQUVJLGdCaUcvRGtCO0F4SHNrZnhCO0F1QnpnZkU7RUFFSSxjNkZpbER5QztBcEh5N2IvQzs7QXlIamtmSTtFdEh0Q0U7RUNaRjtFRHdCQTtBSGltZko7QXlIamxmSTtFdEg1QkU7RUNaRjtFRHdCQTtBSHNtZko7QW9IdnNhRTtFakgzNkVJO0VDWkY7RUR3QkE7QUgybWZKO0FxSDVrZkU7RWxIM0NJO0VDWkY7RUR3QkE7QUhnbmZKO0FvSDV0ZEU7RWpIaDZCSTtFQ1pGO0VEd0JBO0FIcW5mSjtBdUgvaGZFO0VwSGxHSTtFQ1pGO0VEd0JBO0FIMG5mSjtBeUhobWZJO0V0SHRDRTtFQ1pGO0VEd0JBO0FIK25mSjtBdUI3a2ZFOzs7RXBCOURJO0VDWkY7RUR3QkE7QUhzb2ZKO0F1QnBsZkU7OztFcEI5REk7RUNaRjtFRHdCQTtBSDZvZko7QXVCM2xmRTs7O0VwQjlESTtFQ1pGO0VEd0JBO0FIb3BmSjtBb0hwaGNFO0VBRUk7QXBIcWhjTjs7QW9IeDhlRTtFQTQzQ0U7QXBIZ2xjSjtBb0hqMGFFO0VqSDExRUU7QUg4cGZKO0FvSDd0YUU7RUFHRTtJakhwOEVBO0VIa3FmRjtBQUNGO0FvSDF0YUU7RUFHRTtJakg1OEVBO0VIdXFmRjtBQUNGO0FvSHp3YUU7RWpILzVFRTtBSDJxZko7QXFIdHBmRTtFbEhyQkU7QUg4cWZKO0FzSHpwZkU7O0VuSHJCRTtBSGtyZko7QXVIdG1mRTtFcEg1RUU7QUhxcmZKO0F1SC9sZkU7RXBIdEZFO0FId3JmSjtBb0hoeGFJO0VqSHg2RUE7QUgycmZKO0FvSHp3YUk7RWpIbDdFQTtBSDhyZko7QXlIcHFmSTtFdEgxQkE7QUhpc2ZKO0F1Qi9vZkU7OztFcEJsREU7QUhzc2ZKO0FvSHJ3YUU7RUFHRTtJakhwOEVBO0VIMHNmRjtBQUNGO0FvSGx3YUU7RUFHRTtJakg1OEVBO0VIK3NmRjtFb0hoemFBO0lqSC81RUU7RUhrdGZGO0VxSDdyZkE7SWxIckJFO0VIcXRmRjtFc0hoc2ZBOztJbkhyQkU7RUh5dGZGO0V1SDdvZkE7SXBINUVFO0VINHRmRjtFdUh0b2ZBO0lwSHRGRTtFSCt0ZkY7RW9IdnphRTtJakh4NkVBO0VIa3VmRjtFb0hoemFFO0lqSGw3RUE7RUhxdWZGO0V5SDNzZkU7SXRIMUJBO0VId3VmRjtFdUJ0cmZBOzs7SXBCbERFO0VINnVmRjtBQUNGO0FROXRmSTtFNEc2aURBO0lBRUk7RXBIbXJjTjtFb0gvcWNFO0lBRUk7RXBIZ3JjTjtBQUNGO0FvSHhxY0U7RUFFSTtBcEh5cWNOO0FvSHZpZkk7RWpIbE5BO0FINHZmSjtBb0h4cGNFO0VBSUk7QXBIdXBjTjtBb0h6aWZJO0VBcTRDQTtBcEh1cWNKOztBb0gvZ2JFO0VoSHR3RUU7RWdIMHdFRTtBcEhnaGJOO0FPcndmTTtFQUNFO0VIdEJKO0VnSGd4RUk7RTdHeHZFQTtBUHd3ZlI7O0FPM3dmTTtFQUNFO0VBRUE7QVA2d2ZSO0FvSHhnYk07OztFaEg3eEVGO0VnSGd5RUk7QXBIMmdiUjtBb0h4Z2JNO0VoSG55RUY7RWdIcXlFSTtFaEhyeUVKO0VnSHV5RUksa0JJcHFFUztBeEg4cWZqQjtBb0h2Z2JNO0VoSDF5RUY7RWdINHlFSSxrQkl2cUVTO0VwSHJJYjtFZ0g4eUVJO0FwSHlnYlI7QW9IcGdiTTtFQUNFO0FwSHNnYlI7QW9IbmdiTTtFQUNFO0FwSHFnYlI7QW9IbGdiTTtFQUNFO0FwSG9nYlI7QW9IamdiTTtFQUNFO0FwSG1nYlI7QW9IaGdiTTtFQUNFO0FwSGtnYlI7O0FPanpmTTtFQUNFO0VBRUE7QVBtemZSO0FvSHovYU07RWhIbDFFRjtFZ0hzMUVJO0FwSHkvYVI7QW9IdC9hTTtFaEh6MUVGO0VnSDQxRUksbUJJeHRFcUI7QXhIK3NmN0I7QW9IcC9hTTtFaEgvMUVGO0VnSGkyRUksaUJJM3RFcUI7QXhIaXRmN0I7O0FxSDMyZkU7RTNHaVNFO0VBQ0E7RVB2UUU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFT3NTQSxjQTJDUTtFQW9CTjtFQUNBO0VBQ0E7RTJHellBO0VBQ0E7RUFDQTtFQUlBO0FySGs0Zk47QVU5K2VFO0VBeUNBO0VBQ0E7RUFDQSxZMkd4YzBDO0UzR3ljMUM7RUF4Q0k7QVZpL2VOOztBcUhyNGZFO0VBRUk7RUFJQTtFQUNBO0FySG80Zk47O0FzSDU1ZkU7RTVHbVNFO0VBQ0E7RVB2UUU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFT3NTQSxjQTJDUTtFQW9CTjtFQUNBO0VBQ0E7RU4xWEY7RURtQkE7RUNuQkE7RURtQkE7RUNuQkE7RURtQkE7RUNuQkE7RURtQkE7RW1IaENFO0F0SDA3Zk47QVVsaWZFO0VBeUNBO0VBQ0E7RUFDQSxZNEcxYzBDO0U1RzJjMUM7RUF4Q0k7QVZxaWZOO0FPLzVmTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVBvNmZSOztBT3Y2Zk07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQNjZmUjs7QXVIOTlmRTtFQW9FRTtFQUNBO0F2SDg1Zko7QXVIMzVmRTtFQUdJO0VBQ0E7QXZIMjVmTjtBdUhwK2ZJO0VBcUZBO0F2SGs1Zko7O0F1SGwrZkU7RW5IaUJFO0VEbUJBO0VDbkJBO0VEbUJBO0FIcThmSjtBT244Zk07RUFDRTtFSHRCSjtFRG1CQTtFQ25CQTtFRG1CQTtFSUtJO0FQdzhmUjs7QXVINytmRTtFQW9HRSxhQUpVO0VuSG5GVjtFRG1CQTtFQ25CQTtFRG1CQTtBSHE5Zko7QU9uOWZNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUHc5ZlI7O0F1SHpnZ0JFO0VBb0VFO0VBQ0E7QXZIeThmSjtBdUh0OGZFO0VBR0k7RUFDQTtBdkhzOGZOO0F1SC9nZ0JJO0VBcUZBO0F2SDY3Zko7O0F1SDdnZ0JFO0VuSGlCRTtFRG1CQTtFQ25CQTtFRG1CQTtBSGcvZko7QU85K2ZNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUG0vZlI7O0F1SHhoZ0JFO0VBb0dFLGFBSlU7RW5IbkZWO0VEbUJBO0VDbkJBO0VEbUJBO0FIZ2dnQko7QU85L2ZNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUG1nZ0JSOztBMEhuamdCRTtFaEhxU0U7RUFDQTtFUHZRRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFdUhuQ0U7RUFDQTtFQUNBO0ExSHlrZ0JOO0EwSHRrZ0JJO0V0SFdBO0VEbUJBO0VDbkJBO0VEbUJBO0VDbkJBO0VEbUJBO0VDbkJBO0VEbUJBO0V1SHpCSTtBMUg0a2dCUjtBT2pqZ0JNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUHNqZ0JSOztBT3pqZ0JNO0VBQ0U7RUh0Qko7RURtQkE7RUNuQkE7RURtQkE7RUlLSTtBUCtqZ0JSOztBMEh2bGdCSTtFQUVJO0VBQ0E7RUFDQTtBMUh5bGdCUjs7QTBIbmxnQkk7RXRIVkE7RURtQkE7RUNuQkE7RURtQkE7RUNuQkE7RURtQkE7RUNuQkE7RURtQkE7RXVISkk7QTFIMGxnQlI7QU9wbGdCTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVB5bGdCUjs7QU81bGdCTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVBrbWdCUjs7QTBIdG1nQkU7RUFFSTtBMUh3bWdCTjtBMEhybWdCSTtFQUVJO0ExSHNtZ0JSO0FPNW1nQk07RUFDRTtFbUhTRTtFbkhQRjtBUDhtZ0JSOztBMkh2K2ZFO0V4SHhKSTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtBSDRuZ0JKO0FvQmhqZ0JJO0VqQnhGRTtFQ1pGO0VEd0JBO0FIaW9nQko7QW9CNXFmRTtFakJqZUk7RUNaRjtFRHdCQTtBSHNvZ0JKO0FvQmpyZkU7RUE5UUk7RWpCbk5BO0VDWkY7RUR3QkE7QUg0b2dCSjtBb0IzNmZNO0VBRUk7QXBCNDZmVjtBb0J2NmZRO0VBRUkseUJBaFJPO0VqQjBCYjtFQ1pGO0VEd0JBO0FIcXBnQko7QW9CaDZmSTtFakJyUEE7QUh3cGdCSjtBb0I1a2dCSTtFakJ4RkU7RUNaRjtFRHdCQTtBSDZwZ0JKO0FvQnhzZkU7RWpCamVJO0VDWkY7RUR3QkE7QUhrcWdCSjtBb0I3c2ZFO0VBOVFJO0VqQm5OQTtFQ1pGO0VEd0JBO0FId3FnQko7QW9CdjhmTTtFQUVJO0FwQnc4ZlY7QW9CbjhmUTtFQUVJLHlCQWhSTztFakIwQmI7RUNaRjtFRHdCQTtBSGlyZ0JKO0FvQjU3Zkk7RWpCclBBO0FIb3JnQko7QW9CeG1nQkk7O0VqQnhGRTtFQ1pGO0VEd0JBO0FIMHJnQko7QW1IMTZmRTtFaEg1Ukk7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7QUhrc2dCSjtBbUgxNGZNO0VoSHBVQTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtBSG10Z0JKO0FtSDloZkU7RWhIanNCSTtFQ1pGO0VEd0JBO0VBQUE7QUh5dGdCSjtBbUhwaWZFOzs7RWhIanNCSTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtBSG11Z0JKO0FtSHZnZkU7RUFDRTtJaEh6dUJFO0lDWkY7SUR3QkE7SUFBQTtFSDB1Z0JGO0VtSHhnZkU7SWhIOXVCRTtJQ1pGO0lEd0JBO0lBWkU7SUNaRjtJRHdCQTtFSGt2Z0JGO0FBQ0Y7QW1IM2dmRTtFQUNFO0loSHJ2QkU7SUNaRjtJRHdCQTtJQVpFO0lDWkY7SUR3QkE7RUg0dmdCRjtFbUg3Z2ZFO0loSDN2QkU7SUNaRjtJRHdCQTtJQUFBO0VIa3dnQkY7QUFDRjtBbUhqMWZRO0VBRUk7QW5IazFmWjtBbUgzMGZRO0VBRUk7QW5INDBmWjtBbUhwbGZFO0VoSGpzQkk7RUNaRjtFRHdCQTtFQUFBO0FIK3dnQko7QW1IMWxmRTs7O0VoSHJyQkU7RUFaRTtFQ1pGO0VEd0JBO0FIdXhnQko7QW1IaGxmSTtFaEhudEJFO0VDWkY7RUR3QkE7QUg0eGdCSjtBbUgva2ZJO0VoSHp0QkU7RUNaRjtFRHdCQTtBSGl5Z0JKO0FtSDFsZkk7RWhIbnRCRTtFQ1pGO0VEd0JBO0FIc3lnQko7QW1IemxmSTtFaEh6dEJFO0VDWkY7RUR3QkE7QUgyeWdCSjs7QTJIbDFmRTtFQUNFO0lBRUUsNkJBUGM7RTNIMjFmbEI7RTJIajFmRTtJQUNFLHFEMUd4aEIrQjtFakIyMmdCbkM7RTJIaDFmRTtJQUNFO0UzSGsxZko7QUFDRjtBMkgvMGZFO0VBQ0U7SUFFRTtFM0hnMWZKO0UySDcwZkU7SUFDRTtFM0grMGZKO0UySDUwZkU7SUFDRTtFM0g4MGZKO0FBQ0Y7QTJIMzBmRTtFQUNFO0lBQ0UscUQxRy9pQitCO0kwR2dqQi9CO0lBQ0E7RTNINjBmSjtFMkgxMGZFO0lBQ0U7SUFDQTtFM0g0MGZKO0FBQ0Y7QTJIejBmRTtFQUNFO0lBQ0UscUQxRzlqQitCO0kwRytqQi9CO0lBQ0E7RTNIMjBmSjtFMkh4MGZFO0lBQ0U7SUFDQTtFM0gwMGZKO0FBQ0Y7QTJIdjBmRTtFQUNFO0lBQ0Usc0RBN0RtQztJQThEbkM7SUFDQTtFM0h5MGZKO0UySHQwZkU7SUFDRTtJQUNBO0UzSHcwZko7QUFDRjtBMkhyMGZFO0VBQ0U7SUFDRTtJQUNBO0lBQ0E7RTNIdTBmSjtFMkhwMGZFO0lBQ0U7SUFDQTtFM0hzMGZKO0FBQ0Y7QTJIbjBmRTtFQUNFO0lBQ0Usc0RBdkZtQztJQXdGbkM7SUFDQTtFM0hxMGZKO0UySGwwZkU7SUFDRTtJQUNBO0UzSG8wZko7QUFDRjtBMkhqMGZFO0VBQ0U7SUFDRTtJQUNBO0lBQ0E7RTNIbTBmSjtFMkhoMGZFO0lBRUU7SUFDQTtFM0hpMGZKO0FBQ0Y7QTJIdjRnQkU7RUFxTEE7RUFDQTtFQUNBO0VBQ0E7RUFDQSxXUnBOVTtFUXFOVixZUnJOVTtFUXNOVjtFQUNBO0VBQ0E7RUFDQTtBM0hxdGdCRjtBMkg3NGdCTTtFbEhYRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUxoQkE7RUtrQkE7RUxsQkE7RUtvQkE7RUFDQSxZQTNCd0I7RUE0QnhCLFdBdEIwQjtBVGk3Z0I5QjtBUTk0Z0JJO0VtSGJFO0lsSEdBO0VUNDVnQko7QUFDRjtBUzE1Z0JJO0VBQ0U7RUFDQTtFQUNBLGtCQWhFZ0I7RUFpRWhCO0VBQ0E7RUFDQTtFTGxDRjtFS29DRTtFTHBDRjtFS3NDRTtFQUNBLHdCQS9CZ0I7RUFnQ2hCLHVCQWhDZ0I7QVQ0N2dCdEI7QVFqNmdCSTtFQ1BBO0lBZUk7RVQ2NWdCTjtBQUNGO0EySHg2Z0JJO0VBQ0U7SUFDRTtFM0gwNmdCTjtBQUNGOztBUXY2Z0JJO0VtSEVBO0lBRUk7RTNIdzZnQk47QUFDRjtBMkhuNmdCRTtFQWlLQTtFQUNBO0EzSHF3Z0JGOztBMkhqNmdCRTtFQTRQRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsV1JuVVE7RVFvVVIsWVJwVVE7RVFzVVI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUlBO0EzSHFxZ0JKOztBMkg3NmdCRTtFQXdTRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUlBO0EzSHNvZ0JKO0EySC9uZ0JFO0VBRUk7QTNIZ29nQk47O0EySHY3Z0JFO0VBd1dFO0VBUUE7RUFDQTtFQUNBLDZCQXVEZ0I7RUF0RGhCLDRCQXNEZ0I7QTNIc2hnQnBCOztBMkgzN2dCRTtFQThYRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFJQTtBM0g4amdCSjs7QTJIbnlnQkk7RUFDRTtFQUNBO0EzSHN5Z0JOO0EySGp5Z0JJO0VBSUU7RUFFQTtBM0greGdCTjtBMkgxeGdCSTtFQUNFO0VBRUE7QTNIMnhnQk47QTJIdHhnQkk7RUFDRTtFQUVBO0EzSHV4Z0JOO0EySGx4Z0JJO0VBQ0U7RUFFQTtBM0hteGdCTjtBMkhoeGdCSTtFQUNFO0VBRUE7QTNIaXhnQk47QTJINXdnQkk7RUFDRTtFQUVBO0EzSDZ3Z0JOO0EySDF3Z0JJO0VBQ0U7RUFFQTtBM0gyd2dCTjtBMkh0d2dCSTtFQUNFO0VBRUE7QTNIdXdnQk47O0EySGgrZ0JFOzs7RUEyUEE7QTNIMnVnQkY7QTJIOTlnQkk7OztFQWtXRjtBM0hpb2dCRjs7QTJINTlnQkU7RUF5UEE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0h1dWdCRjtBMkgvOWdCSTtFQWlIRjtFQUNBO0EzSGkzZ0JGOztBMkg1OWdCRTtFeEhqR0k7RUNaRjtFRHdCQTtBSHVqaEJKO0FtSC92Z0JNO0VoSHBVQTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtBSHdraEJKOztBMkhwK2dCSTtFQXlRQTtFQVNBO0EzSHV0Z0JKO0EySHIrZ0JJO0VBb1ZGO0EzSG9wZ0JGOztBMkgvOWdCSTs7RUE4UUE7RUFDQTtFQUlBO0EzSG10Z0JKO0EySGwrZ0JJOztFQTJVRjtFQUNBO0EzSDJwZ0JGOztBMkg5OWdCSTs7OztFQXNFRjtBM0grNWdCRjs7QTJIdDhnQkU7RTNHekhFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBR0U7QWhCZ2toQk47QWdCNWpoQkU7O0VBR0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI2amhCTjtBZ0J6amhCRTtFQUdJO0ViNUVBO0VDWkY7RUR3QkE7QUg0bmhCSjtBZ0IvaWhCRTtFYnpGSTtFQ1pGO0VEd0JBO0FIaW9oQko7QWdCeGloQkk7RUFFSTtBaEJ5aWhCUjtBZ0JyaWhCSTtFQUVJO0VacEhKO0VZc0hJO0VBQ0E7RUFDQTtBaEJzaWhCUjtBZ0JoaWhCSTtFQUVJO0VaaElKO0VZa0lJO0FoQmlpaEJSO0FnQjNoaEJJO0VBRUk7QWhCNGhoQlI7QWdCcGhoQkk7RUFFSTtFQUtBO0FoQmloaEJSO0FnQnYrZ0JFOztFQUdJO0VadE1GO0VZd01FO0VBQ0EsV0FaSztFQWFMLFlBYks7QWhCcS9nQlg7QWdCbitnQkk7O0VBR0k7RVpsTko7RVlvTkk7RUFDQTtFQUNBO0FoQm8rZ0JSO0FnQmgrZ0JJO0VBRUk7RUFDQTtBaEJpK2dCUjtBb0J2dmdCRTtFQUVJO0FwQnd2Z0JOO0FvQnB2Z0JFOztFakJ0Y0k7RUNaRjtFRHdCQTtBSG9yaEJKOztBMkh4Z2hCRTtFM0cwQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0FoQmcrZ0JKOztBNEhsdmhCRTtFQUNFO0lBQ0U7RTVIcXZoQko7RTRIbHZoQkU7SUFDRTtJQUNBO0U1SG92aEJKO0U0SGp2aEJFO0lBQ0U7SXpIOEJBO0lDWkY7SUR3QkE7RUg0c2hCRjtFNEh4dWhCRTtJekhnQkU7SUNaRjtJRHdCQTtFSGl0aEJGO0FBQ0Y7QTRIbnVoQkU7RUFDRTtJQUNFO0U1SHF1aEJKO0U0SGx1aEJFO0lBQ0U7SUFDQTtFNUhvdWhCSjtFNEhqdWhCRTtJQUNFO0lBQ0E7RTVIbXVoQko7RTRIaHVoQkU7SUFDRTtFNUhrdWhCSjtBQUNGO0E0SDd0aEJFO0VBQ0U7SUFDRTtJQUNBO0U1SCt0aEJKO0U0SDV0aEJFO0lBQ0U7SXpIeEJBO0lDWkY7SUR3QkE7RUg2dWhCRjtFNEh6dGhCRTtJQUNFO0l6SGpDQTtJQ1pGO0lEd0JBO0VIbXZoQkY7RTRIdHRoQkU7SXpIekNFO0lDWkY7SUR3QkE7RUh3dmhCRjtBQUNGO0E0SGp0aEJFO0VBQ0U7SUFDRTtJQU1BO0U1SDhzaEJKO0U0SDNzaEJFO0lBQ0U7SUFNQTtFNUh3c2hCSjtFNEhyc2hCRTtJQUNFO0lBTUE7RTVIa3NoQko7RTRIL3JoQkU7SUFDRTtFNUhpc2hCSjtBQUNGO0E0SDVyaEJFO0VBQ0U7SUFJRTtFNUgycmhCSjtBQUNGO0E0SHRyaEJFO0VBQ0U7SUFDRTtFNUh3cmhCSjtFNEhycmhCRTtJQUNFO0lBQ0E7RTVIdXJoQko7RTRIcHJoQkU7SUFDRTtJekhoSEE7SUNaRjtJRHdCQTtFSDZ4aEJGO0U0SDVxaEJFO0l6SDdIRTtJQ1pGO0lEd0JBO0VIa3loQkY7QUFDRjtBNEh2cWhCRTtFQUNFO0lBQ0U7SUFDQTtFNUh5cWhCSjtFNEh0cWhCRTtJQUNFO0l6SC9JQTtJQ1pGO0lEd0JBO0VIOHloQkY7RTRIbnFoQkU7SUFDRTtJekh4SkE7SUNaRjtJRHdCQTtFSG96aEJGO0U0SGhxaEJFO0l6SGhLRTtJQ1pGO0lEd0JBO0VIeXpoQkY7QUFDRjtBNEgzcGhCRTtFQUNFO0lBQ0U7RTVINnBoQko7QUFDRjtBNkh2MWhCRTtFQUVJO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFRQTtBN0hnMWhCTjtBUXZ6aEJJO0VxSHhDRjtJQVVNO0U3SHkxaEJOO0FBQ0Y7QTZIbDFoQkk7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBSUE7QTdIZzFoQlI7QTZINTBoQkk7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0E3SDIwaEJSO0E2SHYwaEJJO0VBRUk7RUFDQTtFQUNBO0VBQ0E7QTdIdzBoQlI7QTZIcDBoQkk7RUFFSTtFQUVBO0VBQ0E7RUFJQTtBN0hpMGhCUjtBNkg3emhCSTtFQUVJO0VBSUE7QTdIMnpoQlI7QTZIdnpoQkk7RUFFSTtBN0h3emhCUjtBNkhwemhCSTtFQUVJO0E3SHF6aEJSO0E2SHJzaEJJO0VBRUk7QTdIc3NoQlI7QTZIbHNoQkk7RUFFSTtBN0htc2hCUjtBNkgvcmhCSTtFQUVJO0VBQ0E7QTdIZ3NoQlI7QTZIM3JoQk07RUFFSTtBN0g0cmhCVjtBNkh4cmhCUTtFQUVJO0E3SHlyaEJaO0E2SG5yaEJNO0VBRUk7QTdIb3JoQlY7QTZIaHJoQlE7RUFFSTtBN0hpcmhCWjtBT3I0aEJNO0VBQ0U7RUFFQTtBUHM0aEJSO0E2SHhxaEJFO0V6SHRQRTtFeUh5UEU7RXpIelBGO0V5SDJQRTtFekgzUEY7RXlINlBFO0E3SHlxaEJOO0E2SHBxaEJJO0VBRUk7QTdIcXFoQlI7QTZIanFoQkk7RUFFSTtBN0hrcWhCUjtBNkg3cGhCRTtFQUVJO0VBSUE7QTdIMnBoQk47QTZIdHBoQkk7RXpIMVJBO0V5SDZSSTtFekg3Uko7RXlIK1JJO0E3SHVwaEJSO0E2SG5waEJJO0V6SG5TQTtFeUhzU0k7RXpIdFNKO0V5SHdTSTtBN0hvcGhCUjs7QTZILzFoQkk7RUFFSTtBN0hpMmhCUjtBNkg1MWhCTTtFQUVJO0E3SDYxaEJWO0E2SHgxaEJROztFQUdJO0E3SHkxaEJaOztBNkh4MGhCRTtFMUh4SEk7RUNaRjtFRHdCQTtBSDA3aEJKOztBNkgzemhCRTtFQUlJO0E3SDJ6aEJOOztBNkh2emhCRTtFQUVJLHlCQWxCa0I7QTdIMjBoQnhCOztBNkhsemhCRTtFQUVJLFdDM01HO0E5SCsvaEJUO0E2SGp6aEJJO0VBRUkscUJDaE5DO0E5SGtnaUJUO0E2SDl5aEJJO0VBRUk7QTdIK3loQlI7O0ErSHJnaEJFO0U1SG5kSTtFQ1pGO0VEd0JBO0FIazloQko7QStINy9nQkU7RUFFSTtBL0g4L2dCTjtBK0gxL2dCRTtFQUVJO0EvSDIvZ0JOO0ErSC8rZ0JFO0VBRUk7QS9IZy9nQk47QStIcCtnQkU7RUFFSTtBL0hxK2dCTjtBK0hqK2dCRTtFNUh6Z0JJO0VDWkY7RUR3QkE7QUhtK2hCSjtBb0J2NWhCSTtFakJ4RkU7RUNaRjtFRHdCQTtBSHcraEJKO0FvQm5oaEJFO0VqQmplSTtFQ1pGO0VEd0JBO0FINitoQko7QW9CeGhoQkU7RUE5UUk7RWpCbk5BO0VDWkY7RUR3QkE7QUhtL2hCSjtBb0JseGhCTTtFQUVJO0FwQm14aEJWO0FvQjl3aEJRO0VBRUkseUJBaFJPO0VqQjBCYjtFQ1pGO0VEd0JBO0FINC9oQko7QW9CdndoQkk7RWpCclBBO0FIKy9oQko7QStIdCtnQkU7RUFLSTtBL0hvK2dCTjtBK0hoK2dCRTtFQUVJO0VBQ0E7QS9IaStnQk47QStINzlnQkU7RXpIaFZJO0VBQ0EseUhBcUdTO0FOMnNoQmY7QStIcDlnQkU7RTVIbGtCSTtFQ1pGO0VEd0JBO0FIK2dpQko7O0ErSGptaEJFO0V6SHJOSTtFQUNBLDhIQXFHUztBTnF0aEJmOztBK0hsbWhCRTtFckh4TEU7RUFDQTtFUHZRRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0FIOGlpQko7O0ErSHhuaEJFO0VySDVMRTtFQUNBO0VQdlFFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7RUFaRTtFQ1pGO0VEd0JBO0VBWkU7RUNaRjtFRHdCQTtFQVpFO0VDWkY7RUR3QkE7QUh3a2lCSjs7QStIN29oQkU7RUFFSTtBL0grb2hCTjs7QStIcm1pQkU7O0VBR0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0h1bWlCTjs7QStIbm1pQkU7RUFTSTtFNUhWQTtFQ1pGO0VEd0JBO0FIK2xpQko7QStIcGxoQkU7RUFFSTtBL0hxbGhCTjtBK0hwaWhCRTtFQUVJLGdCQzltQk07QWhJbXBpQlo7QStIdGhoQlE7RUFOTjtJQU9RLDZCQVRhO0UvSGtpaEJyQjtBQUNGO0ErSHRoaEJRO0VBWE47SUFZUSxnQkNsb0JFO0VoSTJwaUJWO0FBQ0Y7QStIN2doQkU7RUFlTSw2QkFqQmU7QS9Ia2hoQnZCO0ErSDMvZ0JFO0VBSUU7SUFFSTtJQVdBO0UvSCsrZ0JOO0FBQ0Y7QStIaDNnQkU7RUFJSTtBL0grMmdCTjtBK0gzMmdCSTtFQVJGO0lBVU07SUFDQTtFL0g2MmdCTjtFK0h6dWdCQTtJNUh2NUJFO0VIbW9pQkY7QUFDRjtBK0h6eGdCRTtFQW5HQTtJQW9HRSwwQkFKb0I7RS9IZ3lnQnRCO0FBQ0Y7QStIM3hnQkU7RUF0R0E7SUF1R0UsWUFqRnNCO0UvSCsyZ0J4QjtBQUNGO0ErSHp4Z0JFO0VBN0dBO0lBOEdFLCtCQUpxQjtFL0hneWdCdkI7QUFDRjtBK0gzeGdCRTtFQWhIQTtJQWlIRSxpQkE1RnVCO0UvSDAzZ0J6QjtBQUNGO0ErSDczZ0JJO0VBNEhGO0k1SHY1QkU7RUg0cGlCRjtBQUNGO0ErSC8yZ0JJO0VBdENGO0lBMENNO0lBQ0E7SUFDQTtJQUNBO0k1SHJ6Qko7RUhxcWlCRjtFK0hueWdCQTtJQUNFO0k1SG40QkE7RUh5cWlCRjtFK0hueWdCQTtJQUNFO0lBRUE7RS9Ib3lnQkY7RStIbHlnQkE7STVIMzRCRTtFSGdyaUJGO0FBQ0Y7QStIbDNnQkk7RUF2REY7SUEyRE07SUFDQTtJQUNBO0lBQ0E7STVIdDBCSjtFSHlyaUJGO0UrSHZ6Z0JBO0lBQ0U7STVIbjRCQTtFSDZyaUJGO0UrSHZ6Z0JBO0lBQ0U7SUFFQTtFL0h3emdCRjtFK0h0emdCQTtJNUgzNEJFO0VIb3NpQkY7QUFDRjtBK0hyM2dCSTtFQXhFRjtJQTJFTTtFL0hzM2dCTjtFK0hsemdCQTtJNUh2NUJFO0VINHNpQkY7QUFDRjtBK0hsc2lCTTtFQUVJO0EvSG1zaUJWOztBK0g3cmlCRTtFQUVJO0VBQ0E7QS9IK3JpQk47O0ErSHpyaUJFO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0EvSHlyaUJOOztBK0hycmlCRTtFekgwTEU7RUFDQTtFeUh0TEU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0EvSHFyaUJOO0FNci9oQkU7RUgxUEU7RUFBQTtFR2dRSTtFRm5SSjtFRXFSSTtBTm8vaEJSO0FPcHZpQk07RUFDRTtFSHRCSjtFMkhpRkk7RXhIekRBO0FQdXZpQlI7O0FReHVpQkk7RXVId0JGO0lBd0JNO0UvSDZyaUJOO0FBQ0Y7QStIMXJpQkk7RXZIaEhBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSNnlpQko7QVE5dmlCSTtFdUh3REE7SXZIakdFO0VSMnlpQko7QUFDRjtBK0h0c2lCUTtFQUxKO0lBT007RS9Id3NpQlI7QUFDRjs7QStIbnNpQkU7RXJIaU5FLGNxSDlNWTtFckg2UVY7RUFDQTtFcUh6UUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0hrc2lCTjtBVTM2aEJFO0VBeUNBO0VBQ0E7RUFDQSxZcUg1VVU7RXJINlVWO0VBeENJO0FWODZoQk47QU94eWlCTTtFQUNFO0VIdEJKO0UySHdISTtFeEhoR0E7QVAyeWlCUjs7QStIdHNpQkU7RUFFSTtFQUdBO0EvSHNzaUJOOztBK0hqc2lCSTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBL0hrc2lCUjtBUTl5aUJJO0V1SG9HQTtJQVdNO0UvSG1zaUJSO0FBQ0Y7QStINTZnQkU7RTVIdjVCRTtBSHMwaUJKO0ErSDlyaUJJO0VBRUk7RUFDQTtFQUNBO0EvSCtyaUJSO0ErSDNyaUJJO0VBRUk7RUFDQTtBL0g0cmlCUjtBK0h4cmlCSTtFQUVJO0EvSHlyaUJSO0ErSHJyaUJJO0VBUUk7QS9IZ3JpQlI7QVFyMGlCSTtFdUg2SUE7SUFVTTtFL0hrcmlCUjtBQUNGOztBK0g3cWlCRTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0EvSCtxaUJOO0ErSDNxaUJJO0VBRUk7QS9INHFpQlI7QStIdnFpQkk7RUFFSTtBL0h3cWlCUjs7QStIbnFpQkU7O0VBS0k7QS9IbXFpQk47O0ErSC9waUJFO0VBSUk7RUFDQTtBL0grcGlCTjs7QStIM3BpQkU7RUFHSTtBL0g0cGlCTjs7QStIeHBpQkU7RUFLSTtBL0h1cGlCTjs7QStIbnBpQkU7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZQzFSWTtFRDJSWjtBL0hxcGlCTjtBUXYzaUJJO0V1SHNORjtJQWNNO0UvSHVwaUJOO0FBQ0Y7QStIcHBpQkk7RUFFSTtFQUNBO0EvSHFwaUJSOztBK0hocGlCRTtFM0huUkU7RURtQkE7RUNuQkE7RURtQkE7RTRINFFFO0UzSC9SRjtFMkhpU0U7QS9ING9pQk47QU94NWlCTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVA2NWlCUjs7QStIN3BpQkk7RTNIeFJBO0VEbUJBO0VDbkJBO0VEbUJBO0FIeTZpQko7QU92NmlCTTtFQUNFO0VIdEJKO0VEbUJBO0VDbkJBO0VEbUJBO0VJS0k7QVA0NmlCUjs7QU8vNmlCTTtFQUNFO0VIdEJKO0UySHFTSTtFeEg3UUE7QVBtN2lCUjs7QStIbHFpQkk7RUFFSTtBL0hvcWlCUjs7QStIL3BpQkU7OztFQUlJO0EvSGlxaUJOOztBK0g1cGlCSTtFQUVJO0EvSDhwaUJSO0ErSDFwaUJJO0VBRUk7QS9IMnBpQlI7O0ErSHBwaUJJOztFQUdJO0EvSHNwaUJSO0ErSGxwaUJJO0VBR0k7QS9Ia3BpQlI7O0ErSDVvaUJJO0VBRUk7QS9IOG9pQlI7QStIMW9pQkk7RUFFSTtFQUNBO0EvSDJvaUJSO0ErSHRvaUJNO0VBRUk7RUFDQTtBL0h1b2lCVjtBK0hqb2lCTTtFQUVJO0EvSGtvaUJWO0ErSDVuaUJNO0VBRUk7QS9INm5pQlY7O0ErSHZuaUJFO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0h5bmlCTjtBK0h0bmlCSTtFQUlJO0EvSHFuaUJSOztBK0g3bWlCRTtFQUVJO0EvSCttaUJOOztBK0gxbWlCSTtFQUVJO0EvSDRtaUJSOztBK0h0bWlCSTtFQUVJLFdDcGJpQjtFRHFiakIsUUNwYmU7RURxYmY7RUFLQTtBL0hvbWlCUjs7QUF2Z2pCQTtFQUNJO0FBMGdqQko7O0FBdmdqQkE7RUFDSTtBQTBnakJKOztBQXZnakJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTBnakJKO0FBeGdqQkk7RUFDSTtBQTBnakJSO0FBdmdqQkk7RUFDSTtFQUNBO0VBQ0E7QUF5Z2pCUjtBQXZnakJRO0VBQ0k7RUFDQTtFQUNBO0FBeWdqQlo7QUF0Z2pCUTtFQUNJO0VBQ0E7QUF3Z2pCWjtBQXJnakJRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXVnakJaOztBQWpnakJBO0VBQ0k7QUFvZ2pCSjs7QUFqZ2pCQTtFQUNJO0FBb2dqQko7O0FBamdqQkE7RUFDSTtBQW9nakJKO0FBbGdqQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQW9nakJSO0FBbGdqQlE7RUFDSTtFQUNBO0VBQ0E7QUFvZ2pCWjs7QUEvL2lCQTtFQUNJO0VBQ0E7RUFDQSxxQkE1R1k7QUE4bWpCaEI7QUFoZ2pCSTtFQUNJO0FBa2dqQlI7QUEvL2lCSTtFQUNJO0VBQ0E7QUFpZ2pCUjs7QUE1L2lCSTtFQUNJO0VBQ0E7QUErL2lCUjs7QTBHdHlpQkU7RUFFSSxZQWtISztBMUdzcmlCWDtBMEdweWlCRTtFQUVJLGdCQTRHSztBMUd5cmlCWDtBMEd2emlCRTtFQUVJLFlBbUl1QjtBMUdxcmlCN0I7QTBHaHppQkU7RUFFSSxZQWtISztBMUcrcmlCWDtBMEc3eWlCRTtFQUVJLGdCQTRHSztBMUdrc2lCWDtBMEdoMGlCRTtFQUVJLFlBbUl1QjtBMUc4cmlCN0I7QUF0Z2pCUTtFQUNJO0FBd2dqQlo7QUF0Z2pCUTtFQUNJO0VBQ0E7QUF3Z2pCWjtBQXJnakJRO0VBQ0k7QUF1Z2pCWjtBMEduMGlCRTtFQUVJLFlBa0hLO0ExR2t0aUJYO0EwR2gwaUJFO0VBRUksZ0JBNEdLO0ExR3F0aUJYO0EwR24xaUJFO0VBRUksWUFtSXVCO0ExR2l0aUI3QjtBQXJnakJJO0VBQ0k7RUFDQTtFQUNBO0FBdWdqQlI7QUFyZ2pCUTtFQUNJO0FBdWdqQlo7QUFuZ2pCSTtFQUNJO0FBcWdqQlI7QUFsZ2pCSTtFQUNJO0VBQ0EsbUJBL0tBO0VBZ0xBO0FBb2dqQlI7O0FBLy9pQkk7RUFDSTtBQWtnakJSO0FBLy9pQkk7RUFDSTtBQWlnakJSOztBQTUvaUJJO0VBQ0k7QUErL2lCUjs7QUF6L2lCSTtFQUNJO0FBNC9pQlI7QUEzL2lCUTtFQUNJO0FBNi9pQlo7QUExL2lCSTtFQUNJO0FBNC9pQlI7QUExL2lCSTtFQUNJO0VBQ0E7QUE0L2lCUjs7QUF4L2lCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTIvaUJKOztBQXgvaUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTIvaUJKOztBQXgvaUJBOztFQUVJO0VBQ0E7RVk2UEE7RVR0YkE7QUhzcmpCSjtBWTV2aUJJOztFQUlJO0FaNHZpQlI7QVl4dmlCSTs7RUFJSTtBWnd2aUJSO0FxQnppakJJOztFbEJySkE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBSHNzakJKO0FxQnhpakJJOztFbEI5SkE7RUFBQTtBSDJzakJKO0FxQnpvakJFOztFbEJsRUU7QUgrc2pCSjtBcUJ2b2pCSTs7RWxCeEVBO0FIbXRqQko7QVlwN2lCRTs7RVQvUkU7QUh1dGpCSjtBWTdpakJFOztFVDFLRTtBSDJ0akJKO0FZM2lqQkk7O0VUaExBO0FIK3RqQko7QUE5aGpCQTtFQUNJO0FBZ2lqQko7QUE5aGpCSTtFQUNJO0FBZ2lqQlI7QUE3aGpCSTtFQUNJO0FBK2hqQlI7O0FBeGhqQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTJoakJKOztBQXhoakJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUEyaGpCSjs7QUF2aGpCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FBMGhqQko7O0FBcmhqQkE7RW9IZ1lJLFlwSHJwQmdCO0FBOHlqQnBCO0F1Qmx0akJFOzs7RXBCbERFO0FIeXdqQko7QXNCaHFqQkU7RUFjTTtBdEJxcGpCUjtBdUJ4aGpCRTtFQUVJO0F2QnloakJOO0FzQnRxakJFOztFQWNNO0F0QjRwakJSO0F1Qi9nakJJOztFQUVJO0F2QmloakJSO0FzQnZwakJFO0VBRUk7QXRCd3BqQk47QXNCNXRqQkk7RUFDRTtJbEJsRkY7SWtCb0ZJO0V0Qjh0akJOO0VzQjF0akJJO0lBQ0U7SWxCekZKO0lrQjJGSTtFdEI0dGpCTjtFc0J4dGpCSTtJQUNFO0lsQmhHSjtJa0J1R0k7RXRCcXRqQk47RXNCanRqQkk7SWxCM0dGO0lrQjZHSTtFdEJtdGpCTjtBQUNGO0FBL2pqQkk7RUFDSTtBQWlrakJSOztBQTVqakJJO0VBQ0k7QUErampCUjtBQTdqakJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUErampCUjs7QUE1ampCQTs7RUFFSTtBQStqakJKOztBQTVqakJBO0VBQ0k7QUErampCSjs7QUEzampCSTtFQUNJO0FBOGpqQlI7QUE1ampCUTtFQUNJO0VBQ0E7RUFDQTtBQThqakJaOztBQXhqakJJO0VBQ0k7RUFDQTtBQTJqakJSO0FBempqQlE7RUFDSTtFQUNBO0VBQ0E7QUEyampCWjs7QUFwampCQTtFQUNJO0FBdWpqQko7QUFyampCSTtFQUNJO0FBdWpqQlI7O0FBdGlqQkE7RUFDSTtBQXlpakJKOztBQXRpakJBO0VBQ0k7RUFDQTtFQUNBO0FBeWlqQko7QUF2aWpCSTtFQUNJO0FBeWlqQlI7QUF0aWpCSTtFQUNJO0VBQ0E7QUF3aWpCUjtBQXRpakJZO0VBQ0k7RUFDQTtBQXdpakJoQjtBQXJpakJnQjtFQTdCWjtBQXFrakJKO0FBbmtqQkk7RUFDSTtBQXFrakJSO0FBeGlqQmdCO0VBaENaO0FBMmtqQko7QUF6a2pCSTtFQUNJO0FBMmtqQlI7QUEzaWpCZ0I7RUFuQ1o7RUFxQ2dCO0FBNmlqQnBCO0FBaGxqQkk7RUFDSTtBQWtsakJSO0FBOWlqQmdCO0VBdkNaO0VBeUNnQjtBQWdqakJwQjtBQXZsakJJO0VBQ0k7QUF5bGpCUjtBQWpqakJnQjtFQUNJO0FBbWpqQnBCOztBQTVpakJBO0VBQ0k7QUEraWpCSjs7QUEzaWpCSTtFQUNJO0VBQ0E7RUFDQTtBQThpakJSO0FBNWlqQlE7RUFDSTtBQThpakJaO0FBM2lqQlE7RUFDSTtBQTZpakJaO0FBMWlqQlE7RUFDSTtBQTRpakJaO0FBMWlqQlk7RUFDSTtBQTRpakJoQjtBQXRpakJZO0VBQ0k7QUF3aWpCaEI7QUFyaWpCWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUF1aWpCaEI7QUFsaWpCWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFvaWpCaEI7O0FBNWhqQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQStoakJSO0FBN2hqQlE7RUFDSTtBQStoakJaO0FBNWhqQlk7RUFDSTtBQThoakJoQjtBQXZoakJRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUF5aGpCWjtBQXZoakJZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXloakJoQjtBQXJoakJRO0VBQ0k7QUF1aGpCWjtBQW5oakJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUFxaGpCUjs7QUFqaGpCQTtFQUNJO0VBQ0E7QUFvaGpCSjs7QUFqaGpCSTtFQUNJO0FBb2hqQlI7QUFsaGpCSTtFQUNJO0FBb2hqQlI7QUFsaGpCSTtFQUNJO0FBb2hqQlI7QUFsaGpCSTtFQUNJO0FBb2hqQlI7QUFsaGpCSTtFQUNJO0FBb2hqQlI7O0FBL2dqQkk7RUFDSTtBQWtoakJSLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vYXNzZXRzL3N0eWxlcy9hcHAuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC90b3VjaC10YXJnZXQvX3RvdWNoLXRhcmdldC5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2VsZXZhdGlvbi9fZWxldmF0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvdGhlbWUvX2Nzcy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL3RoZW1lL19nc3Muc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9idXR0b24vX2J1dHRvbi1iYXNlLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvZWxldmF0aW9uL19lbGV2YXRpb24tdGhlbWUuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9ydGwvX3J0bC5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2RvbS9fZG9tLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvZm9jdXMtcmluZy9fZm9jdXMtcmluZy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL3R5cG9ncmFwaHkvX3R5cG9ncmFwaHkuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9idXR0b24vX2J1dHRvbi10ZXh0LnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvYnV0dG9uL19idXR0b24tc2hhcmVkLXRoZW1lLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvYnV0dG9uL19idXR0b24tZmlsbGVkLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvYnV0dG9uL19idXR0b24tcHJvdGVjdGVkLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvYnV0dG9uL19idXR0b24tb3V0bGluZWQuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9yaXBwbGUvX3JpcHBsZS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2FuaW1hdGlvbi9fYW5pbWF0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvYnV0dG9uL19idXR0b24tcmlwcGxlLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvYnV0dG9uL19idXR0b24uc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9yaXBwbGUvX3JpcHBsZS10aGVtZS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2J1dHRvbi9fYnV0dG9uLW91dGxpbmVkLXRoZW1lLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvZmxvYXRpbmctbGFiZWwvX21peGlucy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL25vdGNoZWQtb3V0bGluZS9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvbm90Y2hlZC1vdXRsaW5lL192YXJpYWJsZXMuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9yYWRpby9fcmFkaW8uc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9yYWRpby9fcmFkaW8tdGhlbWUuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYmFubmVyLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcm9vdC5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdmVuZG9yL19yZnMuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fY29sb3ItbW9kZS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3JlYm9vdC5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ib3JkZXItcmFkaXVzLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdHlwZS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19saXN0cy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2ltYWdlcy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19pbWFnZS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2NvbnRhaW5lcnMuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fY29udGFpbmVyLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JyZWFrcG9pbnRzLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fZ3JpZC5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ncmlkLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdGFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RhYmxlLXZhcmlhbnRzLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9mb3Jtcy9fbGFiZWxzLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9mb3Jtcy9fZm9ybS10ZXh0LnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9mb3Jtcy9fZm9ybS1jb250cm9sLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RyYW5zaXRpb24uc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JhZGllbnRzLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9mb3Jtcy9fZm9ybS1zZWxlY3Quc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2Zvcm1zL19mb3JtLWNoZWNrLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9mb3Jtcy9fZm9ybS1yYW5nZS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvZm9ybXMvX2Zsb2F0aW5nLWxhYmVscy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvZm9ybXMvX2lucHV0LWdyb3VwLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2Zvcm1zLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fYnV0dG9ucy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19idXR0b25zLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdHJhbnNpdGlvbnMuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19kcm9wZG93bi5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19jYXJldC5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2J1dHRvbi1ncm91cC5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX25hdi5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX25hdmJhci5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2NhcmQuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19hY2NvcmRpb24uc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19icmVhZGNydW1iLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcGFnaW5hdGlvbi5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19wYWdpbmF0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fYmFkZ2Uuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19hbGVydC5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3Byb2dyZXNzLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbGlzdC1ncm91cC5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Nsb3NlLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdG9hc3RzLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbW9kYWwuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYmFja2Ryb3Auc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL190b29sdGlwLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3Jlc2V0LXRleHQuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19wb3BvdmVyLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY2Fyb3VzZWwuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fY2xlYXJmaXguc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19zcGlubmVycy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX29mZmNhbnZhcy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3BsYWNlaG9sZGVycy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvaGVscGVycy9fY29sb3ItYmcuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2hlbHBlcnMvX2NvbG9yZWQtbGlua3Muc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2hlbHBlcnMvX2ZvY3VzLXJpbmcuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2hlbHBlcnMvX2ljb24tbGluay5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvaGVscGVycy9fcmF0aW8uc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2hlbHBlcnMvX3Bvc2l0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9oZWxwZXJzL19zdGFja3Muc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2hlbHBlcnMvX3Zpc3VhbGx5LWhpZGRlbi5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL192aXN1YWxseS1oaWRkZW4uc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2hlbHBlcnMvX3N0cmV0Y2hlZC1saW5rLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9oZWxwZXJzL190ZXh0LXRydW5jYXRpb24uc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC10cnVuY2F0ZS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvaGVscGVycy9fdnIuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdXRpbGl0aWVzLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2FwaS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2NhcmQvX21peGlucy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2NhcmQvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2ZhYi9fZmFiLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvZmFiL19mYWItdGhlbWUuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9mYWIvX2V4dGVuZGVkLWZhYi10aGVtZS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2RhdGEtdGFibGUvX2RhdGEtdGFibGUuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9kYXRhLXRhYmxlL19kYXRhLXRhYmxlLXRoZW1lLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvZGF0YS10YWJsZS9fZGF0YS10YWJsZS1jZWxsLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvZGF0YS10YWJsZS9fZGF0YS10YWJsZS1oZWFkZXItY2VsbC5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2ljb24tYnV0dG9uL19pY29uLWJ1dHRvbi10aGVtZS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2RhdGEtdGFibGUvX2RhdGEtdGFibGUtcHJvZ3Jlc3MtaW5kaWNhdG9yLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvZGF0YS10YWJsZS9fZGF0YS10YWJsZS1wYWdpbmF0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvc2VsZWN0L19zZWxlY3QtdGhlbWUuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9zZWxlY3QvX3NlbGVjdC1pY29uLXRoZW1lLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvbGlzdC9fZXZvbHV0aW9uLW1peGlucy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2NoZWNrYm94L19jaGVja2JveC10aGVtZS5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL3RleHRmaWVsZC9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvdGV4dGZpZWxkL2hlbHBlci10ZXh0L19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC90ZXh0ZmllbGQvY2hhcmFjdGVyLWNvdW50ZXIvX21peGlucy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL3RleHRmaWVsZC9pY29uL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC90ZXh0ZmllbGQvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2xpbmUtcmlwcGxlL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9mb3JtLWZpZWxkL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9jaGVja2JveC9fY2hlY2tib3guc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9saW5lYXItcHJvZ3Jlc3MvX2tleWZyYW1lcy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2xpbmVhci1wcm9ncmVzcy9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vZG9nc3RhdGlvbi1wYW5lbC8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvbGluZWFyLXByb2dyZXNzL192YXJpYWJsZXMuc2NzcyIsIndlYnBhY2s6Ly9kb2dzdGF0aW9uLXBhbmVsLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9kaWFsb2cvX21peGlucy5zY3NzIiwid2VicGFjazovL2RvZ3N0YXRpb24tcGFuZWwvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2RpYWxvZy9fdmFyaWFibGVzLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gYXNzZXRzL3N0eWxlcy9nbG9iYWwuc2Nzc1xuXG4vLyBjdXN0b21pemUgc29tZSBCb290c3RyYXAgdmFyaWFibGVzXG5AdXNlIFwic2FzczptYXBcIjtcbi8vIE1hdGVyaWFsIERlc2lnblxuLy9AdXNlIFwibWF0ZXJpYWwtY29tcG9uZW50cy13ZWIvbWF0ZXJpYWwtY29tcG9uZW50cy13ZWJcIjtcbkB1c2UgXCJAbWF0ZXJpYWwvdGhlbWVcIiB3aXRoICgkcHJpbWFyeTogIzE0NjA5MyxcbiAgICAkc2Vjb25kYXJ5OiAjZmYzZDYwLFxuICAgICRvbi1wcmltYXJ5OiAjZmZmLFxuICAgICRvbi1zZWNvbmRhcnk6ICNmZmYsXG4pO1xuQHVzZSBcIkBtYXRlcmlhbC9jYXJkXCI7XG5AdXNlIFwiQG1hdGVyaWFsL2ZhYlwiO1xuQHVzZSBcIkBtYXRlcmlhbC9idXR0b25cIjtcbkB1c2UgXCJAbWF0ZXJpYWwvYnV0dG9uL3N0eWxlc1wiO1xuQHVzZSBcIkBtYXRlcmlhbC9idXR0b24vbWRjLWJ1dHRvblwiO1xuQHVzZSBcIkBtYXRlcmlhbC9kYXRhLXRhYmxlL2RhdGEtdGFibGVcIjtcbkB1c2UgXCJAbWF0ZXJpYWwvbGluZWFyLXByb2dyZXNzXCI7XG5AdXNlIFwiQG1hdGVyaWFsL2RpYWxvZ1wiO1xuLy8gVGV4dCBGaWVsZHNcbkB1c2UgXCJAbWF0ZXJpYWwvZmxvYXRpbmctbGFiZWwvbWRjLWZsb2F0aW5nLWxhYmVsXCI7XG5AdXNlIFwiQG1hdGVyaWFsL25vdGNoZWQtb3V0bGluZS9tZGMtbm90Y2hlZC1vdXRsaW5lXCI7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSBcIkBtYXRlcmlhbC90ZXh0ZmllbGRcIjtcbkB1c2UgXCJAbWF0ZXJpYWwvdGV4dGZpZWxkL2ljb25cIjtcbkB1c2UgXCJAbWF0ZXJpYWwvcmFkaW8vc3R5bGVzXCIgYXMgcmFkaW87XG5AdXNlIFwiQG1hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbkB1c2UgXCJAbWF0ZXJpYWwvY2hlY2tib3hcIjtcblxuXG4kd2hpdGU6ICNmZmZmZmY7XG4kYm9keS1iZzogI2VkZWRlZDtcbiRsaW5rLWNvbG9yOiAjMTQ2MDkzO1xuJGxpbmstaG92ZXItY29sb3I6ICMzMzk3ZGI7XG4kZGl2aWRlci1jb2xvcjogI2RlZTJlNjtcbiRib3JkZXItY29sb3I6ICNkZWUyZTY7XG4kZm9ybS1maWVsZC1oZWlnaHQ6IDQwcHg7XG5cbiR0aGVtZS1jb2xvcnM6IChcbiAgICBcImxpZ2h0XCI6ICNlZGVkZWQsXG4gICAgXCJkYXJrXCI6ICMxMzYwOTMsXG4gICAgXCJwcmltYXJ5XCI6ICMxNDYwOTMsXG4gICAgXCJzZWNvbmRhcnlcIjogI2ZmM2Q2MCxcbiAgICBcInNlY29uZGFyeURhcmtcIjogI2Y1MmQ0ZSxcbiAgICBcInNlY29uZGFyeURhcmtlclwiOiAjYzkyNjQxLFxuICAgIFwiaW5mb1wiOiAjMzM5N2RiLFxuICAgIFwiaW5mb0xpZ2h0XCI6ICNlZWY4ZmYsXG4gICAgXCJzdWNjZXNzXCI6ICMwMGE5NjQsXG4gICAgXCJzdWNjZXNzRGFya1wiOiAjMDI5MjZlLFxuICAgIFwid2FybmluZ1wiOiAjZTJjZDAwLFxuICAgIFwiZGFuZ2VyXCI6ICNmMTIyMDAsXG4pO1xuXG4vLyB0aGUgfiBhbGxvd3MgeW91IHRvIHJlZmVyZW5jZSB0aGluZ3MgaW4gbm9kZV9tb2R1bGVzXG5AaW1wb3J0IFwifmJvb3RzdHJhcC9zY3NzL2Jvb3RzdHJhcFwiO1xuQGltcG9ydCBcIkBtYXRlcmlhbC9kYXRhLXRhYmxlL21peGluc1wiO1xuLy8gTWF0ZXJpYWwgRGVzaWduXG5AaW5jbHVkZSBjYXJkLmNvcmUtc3R5bGVzO1xuQGluY2x1ZGUgZmFiLmNvcmUtc3R5bGVzO1xuQGluY2x1ZGUgZGF0YS10YWJsZS5jb3JlLXN0eWxlcztcbkBpbmNsdWRlIGRhdGEtdGFibGUudGhlbWUtYmFzZWxpbmU7XG5AaW5jbHVkZSB0ZXh0ZmllbGQuY29yZS1zdHlsZXM7XG5AaW5jbHVkZSBpY29uLmljb24tY29yZS1zdHlsZXM7XG5AaW5jbHVkZSBmb3JtLWZpZWxkLmNvcmUtc3R5bGVzO1xuQGluY2x1ZGUgY2hlY2tib3guY29yZS1zdHlsZXM7XG5AaW5jbHVkZSBsaW5lYXItcHJvZ3Jlc3MuY29yZS1zdHlsZXM7XG5AaW5jbHVkZSBkaWFsb2cuY29yZS1zdHlsZXM7XG5cbmJvZHl7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjtcbn1cblxuI2xvZ2luIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5N2RiO1xufVxuXG4ubWVudSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDEwcHggMjBweCAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxNDYwOTM7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgei1pbmRleDogMTAwO1xuXG4gICAgcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICB9XG5cbiAgICAubGlua3Mge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzM5N2JhNDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHggMTBweCAwIDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMXB4IDJweCAwcHggIzA1MWQzYmU2IGluc2V0O1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi5iZy1waW5rR3JhZGllbnQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgXCJzZWNvbmRhcnlcIiksIG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgXCJzZWNvbmRhcnlEYXJrXCIpKTtcbn1cblxuLmJnLWdyZWVuR3JhZGllbnQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgXCJzdWNjZXNzXCIpLCBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIFwic3VjY2Vzc0RhcmtcIikpO1xufVxuXG4ud29ya1RpbWVVc2VyIHtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDFzO1xuXG4gICAgLmNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiAyMHB4O1xuXG4gICAgICAgIC5kYXRlIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teS1jYXJkLXRvcCB7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiAkZGl2aWRlci1jb2xvcjtcblxuICAgIC5tZGMtdG91Y2gtdGFyZ2V0LXdyYXBwZXIge1xuICAgICAgICBtYXJnaW46IC0xMnB4IDA7XG4gICAgfVxuXG4gICAgaDV7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9XG59XG5cbi5tZGMtY2FyZCB7XG4gICAgJj4ubWRjLWRhdGEtdGFibGUge1xuICAgICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxufVxuXG4vLyB0YWJsZXNcblxuLm1kYy1kYXRhLXRhYmxle1xuICAgIEBpbmNsdWRlIG1kYy1kYXRhLXRhYmxlLWRlbnNpdHkoLTQpO1xuXG4gICAgJi5yZXNlcnZhdGlvbi10YWJsZXtcbiAgICAgICAgQGluY2x1ZGUgbWRjLWRhdGEtdGFibGUtZGVuc2l0eSgtNCk7XG5cbiAgICAgICAgdHIgdGQ6bGFzdC1jaGlsZHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDBweDtcbiAgICAgICAgfVxuICAgICAgICAubWRjLWRhdGEtdGFibGVfX2hlYWRlci1jZWxsLCAubWRjLWRhdGEtdGFibGVfX2NlbGwge1xuICAgICAgICAgICAgcGFkZGluZzogMnB4IDEycHggMnB4IDEycHg7XG4gICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAucmVzZXJ2YXRpb25fbmFtZXtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5zZXJ2aWNlLXByaWNlcy10YWJsZXtcbiAgICAgICAgQGluY2x1ZGUgbWRjLWRhdGEtdGFibGUtZGVuc2l0eSgwKTtcbiAgICB9XG5cbiAgICAmX190YWJsZSB7XG4gICAgICAgIC8vIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5pY29uLW9ubHl7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG4gICAgICAgIFxuICAgICAgICBpe1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAud3JhcHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICB9XG5cbiAgICAuc3RpY2t5LXJpZ2h0e1xuICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgICAgIHJpZ2h0OiAtMXB4O1xuICAgIH1cbn1cblxuLnRhYmxlLXNlcnZpY2UtcHJpY2VzIHtcbiAgICB0aCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICB9XG5cbiAgICAubWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICB9XG59XG5cbi50YWJsZV9jb25kZW5zZWQge1xuICAgIHRyIHtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgIH1cbn1cblxuLy8gQnV0dG9uc1xuLm1kYy1idXR0b257XG4gICAgJi5tZGMtYnV0dG9uLS1pY29uLW9ubHl7XG4gICAgICAgIG1pbi13aWR0aDogMzZweDtcbiAgICAgICAgLm1kYy1idXR0b25fX2ljb257XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDBweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAmLS1ncmVlbntcbiAgICAgICAgYmFja2dyb3VuZDogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBcInN1Y2Nlc3NcIikgIWltcG9ydGFudDtcbiAgICB9XG4gICAgJi0tcmVke1xuICAgICAgICBiYWNrZ3JvdW5kOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIFwic2Vjb25kYXJ5RGFya2VyXCIpICFpbXBvcnRhbnQ7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbn1cblxuLmJ0bi1jaXJjbGUuYnRuLXhsIHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBoZWlnaHQ6IDcwcHg7XG4gICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDM1cHg7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjMzO1xufVxuXG4uYnRuLWNpcmNsZS5idG4tbGcge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMjdweDtcbn1cblxuLmxpZ2h0Ymx1ZS1idXR0b24sXG4ubGlnaHRibHVlLW91dGxpbmVkLWJ1dHRvbiB7XG4gICAgLS1tZGMtdGhlbWUtcHJpbWFyeTogIzMzOTdkYjtcbiAgICAtLW1kYy10aGVtZS1vbi1wcmltYXJ5OiAjZmZmO1xuXG4gICAgQGluY2x1ZGUgYnV0dG9uLm91dGxpbmUtd2lkdGgoMnB4KTtcbiAgICBAaW5jbHVkZSBidXR0b24ub3V0bGluZS1jb2xvcigoIFwiZGVmYXVsdFwiOiAjMzM5OGRiODgsIFwiaG92ZXJcIjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnkpKSk7XG4gICAgQGluY2x1ZGUgYnV0dG9uLmluay1jb2xvcih2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSkpO1xuICAgIEBpbmNsdWRlIGJ1dHRvbi5jb250YWluZXItZmlsbC1jb2xvcigoIFwiZGVmYXVsdFwiOiB0cmFuc3BhcmVudCwgXCJob3ZlclwiOiAjZjdmYmZmM2YpKTtcbn1cblxuLmNoYW5nZVBhc3N3b3JkIHtcbiAgICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcblxuICAgIC50ZXh0IHtcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICB9XG5cbiAgICAubWItNCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweCAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gYS5idG4tY2lyY2xlLmJ0bi1sZyB7XG4vLyB9XG5cbi5idG4tY2lyY2xlIHtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgcGFkZGluZzogNnB4IDBweDtcbiAgICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDI4NTc7XG59XG5cbi5uYXZpZ2F0aW9uLWJhY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IC0xMHB4O1xufVxuXG4vLyBlcnJvcnNcbi5pbnZhbGlkLWZlZWRiYWNrIHtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAjZGMzNTQ1O1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XG59XG5cbi8vIGZvcm1zXG5cbi5tZGMtdGV4dC1maWVsZHtcbiAgICBAaW5jbHVkZSB0ZXh0ZmllbGQub3V0bGluZS1jb2xvcigkYm9yZGVyLWNvbG9yKTtcbiAgICBAaW5jbHVkZSB0ZXh0ZmllbGQub3V0bGluZWQtaGVpZ2h0KCRmb3JtLWZpZWxkLWhlaWdodCk7XG4gICAgXG4gICAgc2VsZWN0e1xuICAgICAgICBhcHBlYXJhbmNlOiBhdXRvO1xuICAgIH1cbn1cblxuLmZvcm0tZ3JvdXB7XG4gICAgLmZvcm0tcm93Om50aC1jaGlsZChuKzIpe1xuICAgICAgICBwYWRkaW5nLXRvcDogMTJweDtcbiAgICB9XG4gICAgLmNob2ljZV9sYWJlbHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNnB4O1xuICAgIH1cbn1cbnRleHRhcmVhOmZvY3VzLFxuaW5wdXQ6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbi5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5pbnB1dC1ncm91cHtcbiAgICAmLmlucHV0LWRhdGVyYW5nZXtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG5cbiAgICAgICAgLmlucHV0LWdyb3VwLWFkZG9ue1xuICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTZweDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubWRjLXRleHQtZmllbGQtLXRleHRhcmVhe1xuICAgICYubWRjLXRleHQtZmllbGQtLW91dGxpbmVke1xuICAgICAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAubWRjLXRleHQtZmllbGRfX2lucHV0e1xuICAgICAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgICAgICAgICAgIGhlaWdodDogMTAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vbWF0ZXJpYWwgZGVzaWduXG5cbi5tZGMtZmFiIHtcbiAgICBib3gtc2hhZG93OiAwcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuXG4gICAgJjphY3RpdmUge1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgIH1cblxufVxuXG4vLyBkYXRlcGlja2VyXG5cbiRkYXRlcGlja2VyX2NvbG9yX3JhbmdlOiAjZWVlO1xuXG5AbWl4aW4gZGF0ZXBpY2tlcl9jaXJjbGUoJGNpcmNsZTogI2Y3Y2E3NywgJGJhY2tncm91bmQ6IHRyYW5zcGFyZW50KSB7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgY2VudGVyLCAgJGNpcmNsZSAwJSwkY2lyY2xlIDY1JSwkY2lyY2xlIDY4JSwkYmFja2dyb3VuZCA3MiUsJGJhY2tncm91bmQgNTAlKTtcblxuICAgICYucmFuZ2UsICYucmFuZ2Utc3RhcnQsICYucmFuZ2UtZW5ke1xuICAgICAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCBjZW50ZXIsICAkY2lyY2xlIDAlLCRjaXJjbGUgNjUlLCRjaXJjbGUgNjglLCAkZGF0ZXBpY2tlcl9jb2xvcl9yYW5nZSA3MiUsICRkYXRlcGlja2VyX2NvbG9yX3JhbmdlIDUwJSk7XG4gICAgfVxufVxuXG4uZGF0ZXBpY2tlci1tdWx0aWRhdGV7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZGF0ZXBpY2tlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuXG4gICAgJi5kYXRlcGlja2VyLWlubGluZSB7XG4gICAgICAgIHdpZHRoOiAyNTZweDtcbiAgICB9XG5cbiAgICB0YWJsZXtcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsgXG4gICAgICAgIGJvcmRlci1zcGFjaW5nOiAwIDJweDtcbiAgICAgICAgdHJ7XG4gICAgICAgICAgICB0ZCwgdGh7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGR7XG4gICAgICAgICAgICAgICAgJi50b2RheXtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZGF0ZXBpY2tlcl9jaXJjbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICYuc2VsZWN0ZWR7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGRhdGVwaWNrZXJfY2lyY2xlKCRjaXJjbGU6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgXCJwcmltYXJ5XCIpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmLnJhbmdlLXN0YXJ0e1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBkYXRlcGlja2VyX2NpcmNsZSgkY2lyY2xlOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIFwiaW5mb1wiKSk7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAgMCUgMCUgNTAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmLnJhbmdlLWVuZHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZGF0ZXBpY2tlcl9jaXJjbGUoJGNpcmNsZTogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBcImluZm9cIikpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwJSAgNTAlIDUwJSAwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJi5yYW5nZS1zdGFydC5yYW5nZS1lbmR7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi50ZXh0LXJpZ2h0e1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4ucmVzZXJ2YXRpb24tc3VtbWFyeXtcbiAgICAmLXRhYmxle1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIFxuICAgICAgICAuanMtcmVzLWRvZywgLmpzLXJlcy1kYXRle1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLmluZm97XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAyZnI7XG4gICAgICAgIH1cblxuICAgICAgICAmLnByaWNlc3tcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmciAxZnI7XG5cbiAgICAgICAgICAgIGRpdjpudGgtY2hpbGQoM24pLGRpdjpudGgtY2hpbGQoM24rMil7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnRvdGFscHJpY2Vze1xuXG4gICAgICAgICAgICAjcmVzZXJ2YXRpb25fZm9ybV9kaXNjb3VudHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGl2Om50aC1sYXN0LWNoaWxkKC1uICsgMikge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZWUyZTY7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMzNweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDhweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYucGF5bWVudHtcbiAgICAgICAgICAgID5kaXY6bnRoLWxhc3QtY2hpbGQoLW4gKyAyKSB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNjtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAzM3B4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogOHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIFxufVxuXG4ucmVzZXJ2YXRpb24tcHJldmlld3tcbiAgICAucmVzZXJ2YXRpb24tc3VtbWFyeS10b3B7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBcbiAgICAgICAgLnByaWNle1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgLnNlcnZpY2V7XG4gICAgICAgICAgICAuZHVyYXRpb257XG4gICAgICAgICAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgXCJkYXJrXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucmVzZXJ2YXRpb24tc3RhdHVzIHtcbiAgICBcbiAgICAgICAgLnRvcHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgICAgICAudGV4dHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IGxhcmdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnJlc2VydmF0aW9uLXN0YXR1cy1kZXNje1xuICAgICAgICAgICAgcGFkZGluZzogOHB4IDMycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucmVzZXJ2YXRpb25EZXRhaWxBY3Rpb25ze1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgfVxufVxuXG4uaW5saW5lLWljb257XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbn1cbi5tYXRlcmlhbC1pY29uc3tcbiAgICAmLmljb24tY29uZmlybWVke1xuICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBcInN1Y2Nlc3NcIik7XG4gICAgfVxuICAgICYuaWNvbi1pbnByb2dyZXNze1xuICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBcImluZm9cIik7XG4gICAgfVxuICAgICYuaWNvbi1jbG9zZWR7XG4gICAgICAgIGNvbG9yOiAjYWJhYmFiO1xuICAgIH1cbiAgICAmLmljb24tY2FuY2Vse1xuICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBcInNlY29uZGFyeURhcmtcIik7XG4gICAgfVxuICAgICYuaWNvbi1wZW5kaW5ne1xuICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBcInByaW1hcnlcIik7XG4gICAgfVxufVxuXG4uc3VtbWFyeV9kb2dze1xuICAgIHRke1xuICAgICAgICBwYWRkaW5nOiA4cHggNHB4O1xuICAgIH1cbn0iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTkgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdAbWF0ZXJpYWwvYmFzZS9taXhpbnMnIGFzIGJhc2UtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcblxuJGhlaWdodDogNDhweCAhZGVmYXVsdDtcbiR3aWR0aDogJGhlaWdodCAhZGVmYXVsdDtcblxuLy8vIFN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQncyB0b3VjaCB0YXJnZXQgd3JhcHBlciBlbGVtZW50LlxuQG1peGluIHdyYXBwZXIoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtdG91Y2gtdGFyZ2V0LXdyYXBwZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAvLyBFbnN1cmUgdGhhdCBzdHlsZXMgYXJlIG9ubHkgZW1pdHRlZCBvbmNlIGFjcm9zcyBhbGwgY29tcG9uZW50cyB0aGF0XG4gICAgICAvLyBoYXZlIGluY3JlYXNlZCB0b3VjaCB0YXJnZXRzLlxuICAgICAgQGluY2x1ZGUgYmFzZS1taXhpbnMuZW1pdC1vbmNlKCdtZGMtdG91Y2gtdGFyZ2V0L3dyYXBwZXInKSB7XG4gICAgICAgIC8vIE5PVEU6IFdpbGwgY2hhbmdlIHRvIGBpbmxpbmUtYmxvY2tgIGluIHRoZSBmdXR1cmUsIGJ1dCBrZWVwaW5nIGFzIGlzXG4gICAgICAgIC8vIHRlbXBvcmFyaWx5IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS5cbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gU3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudCdzIGlubmVyIHRvdWNoIHRhcmdldCBlbGVtZW50LlxuLy8vIEJ5IGRlZmF1bHQsIG9ubHkgc2V0cyB0aGUgaW5uZXIgZWxlbWVudCBoZWlnaHQgdG8gdGhlIG1pbmltdW0gdG91Y2ggdGFyZ2V0XG4vLy8gaGVpZ2h0ICgkbWRjLXRvdWNoLXRhcmdldC1oZWlnaHQpLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHNldC13aWR0aCBbZmFsc2VdIC0gU2V0cyB0aGUgaW5uZXIgZWxlbWVudCB3aWR0aCB0byB0aGVcbi8vLyAgICAgbWluaW11bSB0b3VjaCB0YXJnZXQgd2lkdGggKCRtZGMtdG91Y2gtdGFyZ2V0LXdpZHRoKS5cbi8vLyBAcGFyYW0gJGhlaWdodCBbJG1kYy10b3VjaC10YXJnZXQtaGVpZ2h0XSAtIFRvdWNoIHRhcmdldCBoZWlnaHQuXG4vLy8gQHBhcmFtICR3aWR0aCBbJG1kYy10b3VjaC10YXJnZXQtd2lkdGhdIC0gVG91Y2ggdGFyZ2V0IHdpZHRoLlxuQG1peGluIHRvdWNoLXRhcmdldChcbiAgJHNldC13aWR0aDogZmFsc2UsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksXG4gICRoZWlnaHQ6ICRoZWlnaHQsXG4gICR3aWR0aDogJHdpZHRoXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxuICBAaWYgJHNldC13aWR0aCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB3aWR0aDogJHdpZHRoO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgbGVmdDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQXBwbGllcyBtYXJnaW4gdG8gdGhlIGNvbXBvbmVudCB3aXRoIHRoZSBpbmNyZWFzZWQgdG91Y2ggdGFyZ2V0LFxuLy8vIHRvIGNvbXBlbnNhdGUgZm9yIHRoZSB0b3VjaCB0YXJnZXQuXG5AbWl4aW4gbWFyZ2luKFxuICAkY29tcG9uZW50LWhlaWdodCxcbiAgJGNvbXBvbmVudC13aWR0aDogbnVsbCxcbiAgJHRvdWNoLXRhcmdldC1oZWlnaHQ6ICRoZWlnaHQsXG4gICR0b3VjaC10YXJnZXQtd2lkdGg6ICR3aWR0aCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgJHZlcnRpY2FsLW1hcmdpbi12YWx1ZTogbWF0aC5kaXYoJHRvdWNoLXRhcmdldC1oZWlnaHQgLSAkY29tcG9uZW50LWhlaWdodCwgMik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBtYXJnaW4tdG9wOiAkdmVydGljYWwtbWFyZ2luLXZhbHVlO1xuICAgIG1hcmdpbi1ib3R0b206ICR2ZXJ0aWNhbC1tYXJnaW4tdmFsdWU7XG4gIH1cblxuICBAaWYgJGNvbXBvbmVudC13aWR0aCB7XG4gICAgJGhvcml6b250YWwtbWFyZ2luLXZhbHVlOiBtYXRoLmRpdihcbiAgICAgICR0b3VjaC10YXJnZXQtd2lkdGggLSAkY29tcG9uZW50LXdpZHRoLFxuICAgICAgMlxuICAgICk7XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkaG9yaXpvbnRhbC1tYXJnaW4tdmFsdWU7XG4gICAgICBtYXJnaW4tbGVmdDogJGhvcml6b250YWwtbWFyZ2luLXZhbHVlO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL2Jhc2UvbWl4aW5zJyBhcyBiYXNlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcbkB1c2UgJy4vZWxldmF0aW9uLXRoZW1lJztcblxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAZm9yICR6LXZhbHVlIGZyb20gMCB0aHJvdWdoIDI0IHtcbiAgICAubWRjLWVsZXZhdGlvbi0teiN7JHotdmFsdWV9IHtcbiAgICAgIEBpbmNsdWRlIGVsZXZhdGlvbi10aGVtZS5lbGV2YXRpb24oJHotdmFsdWUsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cblxuICAubWRjLWVsZXZhdGlvbi10cmFuc2l0aW9uIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogZWxldmF0aW9uLXRoZW1lLnRyYW5zaXRpb24tdmFsdWUoKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgd2lsbC1jaGFuZ2U6IGVsZXZhdGlvbi10aGVtZS4kcHJvcGVydHk7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIENhbGxlZCBvbmNlIHBlciBhcHBsaWNhdGlvbiB0byBzZXQgdXAgdGhlIGdsb2JhbCBkZWZhdWx0IGVsZXZhdGlvbiBzdHlsZXMuXG4vLy9cbkBtaXhpbiBvdmVybGF5LWNvbW1vbigkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1lbGV2YXRpb24tb3ZlcmxheSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIGJhc2UtbWl4aW5zLmVtaXQtb25jZSgnbWRjLWVsZXZhdGlvbi9jb21tb24vc3RydWN0dXJlJykge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KFxuICAgICAgICAgIG9wYWNpdHksXG4gICAgICAgICAgY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKC0tbWRjLWVsZXZhdGlvbi1vdmVybGF5LW9wYWNpdHksIDApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgIEBpbmNsdWRlIGJhc2UtbWl4aW5zLmVtaXQtb25jZSgnbWRjLWVsZXZhdGlvbi9jb21tb24vYW5pbWF0aW9uJykge1xuICAgICAgICB0cmFuc2l0aW9uOiBlbGV2YXRpb24tdGhlbWUub3ZlcmxheS10cmFuc2l0aW9uLXZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYmFzZS1taXhpbnMuZW1pdC1vbmNlKCdtZGMtZWxldmF0aW9uL2NvbW1vbi9jb2xvcicpIHtcbiAgICAgICRmaWxsLWNvbG9yOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIC0tbWRjLWVsZXZhdGlvbi1vdmVybGF5LWNvbG9yLFxuICAgICAgICBlbGV2YXRpb24tdGhlbWUuJG92ZXJsYXktY29sb3JcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBlbGV2YXRpb24tdGhlbWUub3ZlcmxheS1maWxsLWNvbG9yKCRmaWxsLWNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuQHVzZSAnc2FzczpsaXN0JztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5AdXNlICcuL2dzcyc7XG5cbi8vLyBXaGVuIHRydWUsIGFkZCBhbiBhZGRpdGlvbmFsIHByb3BlcnR5L3ZhbHVlIGRlY2xhcmF0aW9uIGJlZm9yZSBkZWNsYXJhdGlvbnNcbi8vLyB0aGF0IHVzZSBhZHZhbmNlZCBmZWF0dXJlcyBzdWNoIGFzIGN1c3RvbSBwcm9wZXJ0aWVzIG9yIENTUyBmdW5jdGlvbnMuIFRoaXNcbi8vLyBhZGRzIGZhbGxiYWNrIHN1cHBvcnQgZm9yIG9sZGVyIGJyb3dzZXJzIHN1Y2ggYXMgSUUxMSB0aGF0IGRvIG5vdCBzdXBwb3J0XG4vLy8gdGhlc2UgZmVhdHVyZXMgYXQgdGhlIGNvc3Qgb2YgYWRkaXRpb25hbCBDU1MuIFNldCB0aGlzIHZhcmlhYmxlIHRvIGZhbHNlIHRvXG4vLy8gZGlzYWJsZSBnZW5lcmF0aW5nIGZhbGxiYWNrIGRlY2xhcmF0aW9ucy5cbiRlbmFibGUtZmFsbGJhY2stZGVjbGFyYXRpb25zOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gV3JpdGVzIGEgQ1NTIHByb3BlcnR5L3ZhbHVlIGRlY2xhcmF0aW9uLiBUaGlzIG1peGluIGlzIHVzZWQgdGhyb3VnaG91dCB0aGVcbi8vLyB0aGVtZSBwYWNrYWdlIGZvciBjb25zaXN0ZW5jeSBmb3IgZHluYW1pY2FsbHkgc2V0dGluZyBDU1MgcHJvcGVydHkgdmFsdWVzLlxuLy8vXG4vLy8gVGhpcyBtaXhpbiBtYXkgb3B0aW9uYWxseSB0YWtlIGEgZmFsbGJhY2sgdmFsdWUuIEZvciBhZHZhbmNlZCBmZWF0dXJlcyBzdWNoXG4vLy8gYXMgY3VzdG9tIHByb3BlcnRpZXMgb3IgQ1NTIGZ1bmN0aW9ucyBsaWtlIG1pbiBhbmQgbWF4LCBhIGZhbGxiYWNrIHZhbHVlIGlzXG4vLy8gcmVjb21tZW5kZWQgdG8gc3VwcG9ydCBvbGRlciBicm93c2Vycy5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcHJvcGVydHkgLSBUaGUgQ1NTIHByb3BlcnR5IG9mIHRoZSBkZWNsYXJhdGlvbi5cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgQ1NTIGRlY2xhcmF0aW9uLiBUaGUgdmFsdWUgc2hvdWxkIGJlXG4vLy8gICAgIHJlc29sdmVkIGJ5IG90aGVyIHRoZW1lIGZ1bmN0aW9ucyBmaXJzdCAoaS5lLiBjdXN0b20gcHJvcGVydHkgTWFwcyBhbmRcbi8vLyAgICAgTWF0ZXJpYWwgdGhlbWUga2V5cyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIG1peGluKS4gSWYgdGhlIHZhbHVlIGlzXG4vLy8gICAgIG51bGwsIG5vIGRlY2xhcmF0aW9ucyB3aWxsIGJlIGVtaXR0ZWQuXG4vLy8gQHBhcmFtIHsqfSAkZmFsbGJhY2sgLSBBbiBvcHRpb25hbCBmYWxsYmFjayB2YWx1ZSBmb3Igb2xkZXIgYnJvd3NlcnMuIElmXG4vLy8gICAgIHByb3ZpZGVkLCBhIHNlY29uZCBwcm9wZXJ0eS92YWx1ZSBkZWNsYXJhdGlvbiB3aWxsIGJlIGFkZGVkIGJlZm9yZSB0aGVcbi8vLyAgICAgbWFpbiBwcm9wZXJ0eS92YWx1ZSBkZWNsYXJhdGlvbi5cbi8vLyBAcGFyYW0ge01hcH0gJGdzcyAtIEFuIG9wdGlvbmFsIE1hcCBvZiBHU1MgYW5ub3RhdGlvbnMgdG8gYWRkLlxuLy8vIEBwYXJhbSB7Qm9vbH0gJGltcG9ydGFudCAtIElmIHRydWUsIGFkZCBgIWltcG9ydGFudGAgdG8gdGhlIGRlY2xhcmF0aW9uLlxuQG1peGluIGRlY2xhcmF0aW9uKFxuICAkcHJvcGVydHksXG4gICR2YWx1ZSxcbiAgJGZhbGxiYWNrLXZhbHVlOiBudWxsLFxuICAkZ3NzOiAoKSxcbiAgJGltcG9ydGFudDogZmFsc2Vcbikge1xuICAvLyBOb3JtYWxseSBzZXR0aW5nIGEgbnVsbCB2YWx1ZSB0byBhIHByb3BlcnR5IHdpbGwgbm90IGVtaXQgQ1NTLCBzbyBtaXhpbnNcbiAgLy8gd291bGRuJ3QgbmVlZCB0byBjaGVjayB0aGlzLiBIb3dldmVyLCBTYXNzIHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlXG4gIC8vIGludGVycG9sYXRlZCBwcm9wZXJ0eSBpcyBhIGN1c3RvbSBwcm9wZXJ0eS5cbiAgQGlmICR2YWx1ZSAhPSBudWxsIHtcbiAgICAkaW1wb3J0YW50LXJ1bGU6IGlmKCRpbXBvcnRhbnQsICcgIWltcG9ydGFudCcsICcnKTtcblxuICAgIEBpZiAkZmFsbGJhY2stdmFsdWUgYW5kICRlbmFibGUtZmFsbGJhY2stZGVjbGFyYXRpb25zIHtcbiAgICAgIEBpbmNsdWRlIGdzcy5hbm5vdGF0ZSgkZ3NzKTtcbiAgICAgICN7JHByb3BlcnR5fTogI3skZmFsbGJhY2stdmFsdWV9ICN7JGltcG9ydGFudC1ydWxlfTtcblxuICAgICAgLy8gQWRkIEBhbHRlcm5hdGUgdG8gYW5ub3RhdGlvbnMuXG4gICAgICAkZ3NzOiBtYXAubWVyZ2UoXG4gICAgICAgICRnc3MsXG4gICAgICAgIChcbiAgICAgICAgICBhbHRlcm5hdGU6IHRydWUsXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZ3NzLmFubm90YXRlKCRnc3MpO1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9I3skaW1wb3J0YW50LXJ1bGV9O1xuICB9XG59XG5cbi8vLyBVbnBhY2tzIHNob3J0aGFuZCB2YWx1ZXMgZm9yIENTUyBwcm9wZXJ0aWVzIChpLmUuIGxpc3RzIG9mIDEtMyB2YWx1ZXMpLlxuLy8vIElmIGEgbGlzdCBvZiA0IHZhbHVlcyBpcyBnaXZlbiwgaXQgaXMgcmV0dXJuZWQgYXMtaXMuXG4vLy9cbi8vLyBFeGFtcGxlczpcbi8vL1xuLy8vIHVucGFjay12YWx1ZSg0cHgpID0+IDRweCA0cHggNHB4IDRweFxuLy8vIHVucGFjay12YWx1ZSg0cHggMnB4KSA9PiA0cHggMnB4IDRweCAycHhcbi8vLyB1bnBhY2stdmFsdWUoNHB4IDJweCAycHgpID0+IDRweCAycHggMnB4IDJweFxuLy8vIHVucGFjay12YWx1ZSg0cHggMnB4IDAgMnB4KSA9PiA0cHggMnB4IDAgMnB4XG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IE1hcCB8IExpc3R9ICR2YWx1ZSAtIExpc3Qgb2YgMSB0byA0IHZhbHVlIG51bWJlcnMuXG4vLy8gQHJldHVybiB7TGlzdH0gYSBMaXN0IG9mIDQgdmFsdWUgbnVtYmVycy5cbkBmdW5jdGlvbiB1bnBhY2stdmFsdWUoJHZhbHVlKSB7XG4gIEBpZiBtZXRhLnR5cGUtb2YoJHZhbHVlKSA9PSAnbWFwJyBvciBsaXN0Lmxlbmd0aCgkdmFsdWUpID09IDEge1xuICAgIEByZXR1cm4gJHZhbHVlICR2YWx1ZSAkdmFsdWUgJHZhbHVlO1xuICB9IEBlbHNlIGlmIGxpc3QubGVuZ3RoKCR2YWx1ZSkgPT0gNCB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH0gQGVsc2UgaWYgbGlzdC5sZW5ndGgoJHZhbHVlKSA9PSAzIHtcbiAgICBAcmV0dXJuIGxpc3QubnRoKCR2YWx1ZSwgMSkgbGlzdC5udGgoJHZhbHVlLCAyKSBsaXN0Lm50aCgkdmFsdWUsIDMpXG4gICAgICBsaXN0Lm50aCgkdmFsdWUsIDIpO1xuICB9IEBlbHNlIGlmIGxpc3QubGVuZ3RoKCR2YWx1ZSkgPT0gMiB7XG4gICAgQHJldHVybiBsaXN0Lm50aCgkdmFsdWUsIDEpIGxpc3QubnRoKCR2YWx1ZSwgMikgbGlzdC5udGgoJHZhbHVlLCAxKVxuICAgICAgbGlzdC5udGgoJHZhbHVlLCAyKTtcbiAgfVxuXG4gIEBlcnJvciBcIkludmFsaWQgQ1NTIHByb3BlcnR5IHZhbHVlOiAnI3skdmFsdWV9JyBpcyBtb3JlIHRoYW4gNCB2YWx1ZXNcIjtcbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAyMCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcblxuLy8vIEFkZHMgb3B0aW9uYWwgR1NTIGFubm90YXRpb24gY29tbWVudHMuIFVzZWZ1bCBmb3IgdGhlbWUgbWl4aW5zIHdoZXJlIG9uZSBvclxuLy8vIG1vcmUgcHJvcGVydGllcyBhcmUgc2V0IGluZGlyZWN0bHkuXG4vLy9cbi8vLyBBbm5vdGF0aW9ucyBtYXkgYmUgcHJvdmlkZWQgYXMgYSBNYXAgb2YgYW5ub3RhdGlvbnMgb3IgYXMgbmFtZWQgYXJndW1lbnRzLlxuLy8vXG4vLy8gQGV4YW1wbGUgLSBzY3NzXG4vLy8gICBAaW5jbHVkZSBhbm5vdGF0ZSgobm9mbGlwOiB0cnVlKSk7XG4vLy8gICBsZWZ0OiAwO1xuLy8vXG4vLy8gQGV4YW1wbGUgLSBzY3NzXG4vLy8gICBAaW5jbHVkZSBhbm5vdGF0ZSgkbm9mbGlwOiB0cnVlKTtcbi8vLyAgIGxlZnQ6IDA7XG4vLy9cbi8vLyBAZXhhbXBsZSAtIGNzc1xuLy8vICAgLyogQG5vZmxpcCAqLyAvKnJ0bDppZ25vcmUqL1xuLy8vICAgbGVmdDogMDtcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkYW5ub3RhdGlvbnMgLSBNYXAgb2YgYW5ub3RhdGlvbnMuIFZhbHVlcyBtdXN0IGJlIHNldCB0byBgdHJ1ZWBcbi8vLyAgICAgZm9yIGFuIGFubm90YXRpb24gdG8gYmUgYWRkZWQuXG5AbWl4aW4gYW5ub3RhdGUoJGFubm90YXRpb25zLi4uKSB7XG4gICRrZXl3b3JkczogbWV0YS5rZXl3b3JkcygkYW5ub3RhdGlvbnMpO1xuICBAaWYgbGlzdC5sZW5ndGgoJGFubm90YXRpb25zKSA+IDAge1xuICAgICRhbm5vdGF0aW9uczogbGlzdC5udGgoJGFubm90YXRpb25zLCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJGFubm90YXRpb25zOiAka2V5d29yZHM7XG4gIH1cblxuICBAaWYgKG1hcC5nZXQoJGFubm90YXRpb25zLCBhbHRlcm5hdGUpID09IHRydWUpIHtcbiAgICAvKiBAYWx0ZXJuYXRlICovXG4gIH1cblxuICAvLyBub2ZsaXAgbXVzdCBiZSB0aGUgbGFzdCB0YWcgcmlnaHQgYmVmb3JlIHRoZSBwcm9wZXJ0eVxuICBAaWYgKG1hcC5nZXQoJGFubm90YXRpb25zLCBub2ZsaXApID09IHRydWUpIHtcbiAgICAvKiBAbm9mbGlwICovIC8qcnRsOmlnbm9yZSovXG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAyMCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnQG1hdGVyaWFsL2VsZXZhdGlvbi9lbGV2YXRpb24nO1xuQHVzZSAnQG1hdGVyaWFsL2VsZXZhdGlvbi9lbGV2YXRpb24tdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcbkB1c2UgJ0BtYXRlcmlhbC9kb20vZG9tJztcbkB1c2UgJ0BtYXRlcmlhbC90b3VjaC10YXJnZXQvdG91Y2gtdGFyZ2V0JztcbkB1c2UgJ0BtYXRlcmlhbC9mb2N1cy1yaW5nL2ZvY3VzLXJpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuL2J1dHRvbi1zaGFyZWQtdGhlbWUnO1xuXG5AbWl4aW4gc3RhdGljLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIF9zdGF0aWMtc3R5bGVzLWJhc2UoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBfdHlwb2dyYXBoeS1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gX3N0YXRpYy1zdHlsZXMtYmFzZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgdG91Y2gtdGFyZ2V0LndyYXBwZXIoJHF1ZXJ5KTsgLy8gQ09QWUJBUkFfQ09NTUVOVF9USElTX0xJTkVcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBpbmNsdWRlIGVsZXZhdGlvbi5vdmVybGF5LWNvbW1vbigkcXVlcnkpOyAvLyBDT1BZQkFSQV9DT01NRU5UX1RISVNfTElORVxuXG4gIC8vIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIGJ1dHRvblxuICAubWRjLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgX3Jvb3Qtc3RydWN0dXJlKCRxdWVyeSk7XG4gICAgLy8gVGhlIGljb24gQ1NTIGNsYXNzIG92ZXJyaWRlcyBzdHlsZXMgZGVmaW5lZCBpbiB0aGUgLm1hdGVyaWFsLWljb25zIENTU1xuICAgIC8vIGNsYXNzLCB3aGljaCBpcyBsb2FkZWQgc2VwYXJhdGVseSBzbyB0aGUgb3JkZXIgb2YgQ1NTIGRlZmluaXRpb25zIGlzIG5vdFxuICAgIC8vIGd1YXJhbnRlZWQuIFRoZXJlZm9yZSwgaW5jcmVhc2Ugc3BlY2lmaXR5IGJ5IG5lc3RpbmcgdGhpcyBjbGFzcyB0byBlbnN1cmVcbiAgICAvLyBvdmVycmlkZXMgYXBwbHkuXG4gICAgLm1kYy1idXR0b25fX2ljb24ge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgQGluY2x1ZGUgX2ljb24tc3RydWN0dXJlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtYnV0dG9uX19sYWJlbCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICAvLyBOZWNlc3Nhcnkgc3VjaCB0aGF0IGxhYmVsIGlzIHN0YWNrZWQgb24gdG9wIG9mIHJpcHBsZVxuICAgICAgICAvLyAoc2luY2UgcmlwcGxlIGlzIGEgcG9zaXRpb25lZCBlbGVtZW50LCBub24tcG9zaXRpb25lZCBlbGVtZW50c1xuICAgICAgICAvLyBhcHBlYXIgdW5kZXIgaXQpLlxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1idXR0b25fX2ZvY3VzLXJpbmcge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuZm9jdXMge1xuICAgICAgLm1kYy1idXR0b25fX2ZvY3VzLXJpbmcge1xuICAgICAgICBAaW5jbHVkZSBkb20uZm9yY2VkLWNvbG9ycy1tb2RlKCRleGNsdWRlLWllMTE6IHRydWUpIHtcbiAgICAgICAgICBAaW5jbHVkZSBmb2N1cy1yaW5nLmZvY3VzLXJpbmcoJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtYnV0dG9uX190b3VjaCB7XG4gICAgICBAaW5jbHVkZSB0b3VjaC10YXJnZXQudG91Y2gtdGFyZ2V0KCRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cblxuICAubWRjLWJ1dHRvbl9fbGFiZWwgKyAubWRjLWJ1dHRvbl9faWNvbiB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tdHJhaWxpbmc7XG4gICAgfVxuICB9XG5cbiAgc3ZnLm1kYy1idXR0b25fX2ljb24ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBpY29uLXN2ZztcbiAgICB9XG4gIH1cblxuICAubWRjLWJ1dHRvbi0tdG91Y2gge1xuICAgIC8vIFRvdWNoIHRhcmdldCBkb2Vzbid0IGNoYW5nZSB3aXRoIGhlaWdodC4gSXQgc2ltcGx5IGdldHMgcmVtb3ZlZCBpZlxuICAgIC8vIGRlbnNpdHkgKGhlaWdodCkgY2hhbmdlcy4gVGhlcmVmb3JlLCBpdCBpcyBhIHN0YXRpYyBzdHlsZS5cbiAgICBAaW5jbHVkZSB0b3VjaC10YXJnZXQubWFyZ2luKFxuICAgICAgJGNvbXBvbmVudC1oZWlnaHQ6IGJ1dHRvbi1zaGFyZWQtdGhlbWUuJGhlaWdodCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuICAvLyBwb3N0Y3NzLWJlbS1saW50ZXI6IGVuZFxufVxuXG5AbWl4aW4gX3R5cG9ncmFwaHktc3R5bGVzKCRxdWVyeSkge1xuICAubWRjLWJ1dHRvbiB7XG4gICAgLy8gRXhjbHVkZSBwcm9wZXJ0aWVzIGRlY2xhcmVkIGluIHRoZW1lIHN0eWxlcy5cbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoXG4gICAgICBidXR0b24sXG4gICAgICAkZXhjbHVkZS1wcm9wczogKFxuICAgICAgICBmb250LXNpemUsXG4gICAgICAgIGxpbmUtaGVpZ2h0LFxuICAgICAgICBmb250LXdlaWdodCxcbiAgICAgICAgbGV0dGVyLXNwYWNpbmcsXG4gICAgICAgIHRleHQtdHJhbnNmb3JtXG4gICAgICApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbi8vLyBAZGVwcmVjYXRlZCBDb250YWlucyB0eXBvZ3JhcGh5IGRlY2xhcmF0aW9ucyBub3cgcGFydCBvZiB0aGVtZS1zdHlsZXMuXG5AbWl4aW4gZGVwcmVjYXRlZC1zdGF0aWMtc3R5bGVzLXdpdGhvdXQtcmlwcGxlKFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgQGluY2x1ZGUgX2RlcHJlY2F0ZWQtdHlwb2dyYXBoeS1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBfc3RhdGljLXN0eWxlcy1iYXNlKCRxdWVyeTogJHF1ZXJ5KTtcbn1cblxuQG1peGluIF9kZXByZWNhdGVkLXR5cG9ncmFwaHktc3R5bGVzKCRxdWVyeSkge1xuICAubWRjLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50eXBvZ3JhcGh5KGJ1dHRvbiwgJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gZGVwcmVjYXRlZC1iYXNlKCRxdWVyeSkge1xuICBAaW5jbHVkZSBiYXNlKCRxdWVyeSk7XG59XG5cbkBtaXhpbiBiYXNlKCRxdWVyeSkge1xuICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoYnV0dG9uLCAkcXVlcnkpO1xuICBAaW5jbHVkZSBfcm9vdC1zdHJ1Y3R1cmUoJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gX3Jvb3Qtc3RydWN0dXJlKCRxdWVyeSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGVsZXZhdGlvbi10aGVtZS5vdmVybGF5LXN1cmZhY2UtcG9zaXRpb24oJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBlbGV2YXRpb24tdGhlbWUub3ZlcmxheS1kaW1lbnNpb25zKDEwMCUsICRxdWVyeTogJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIC8vIHBvc2l0aW9uOiByZWxhdGl2ZTsgYWxyZWFkeSBzZXQgaW4gbWRjLWVsZXZhdGlvbi1vdmVybGF5LXN1cmZhY2UtcG9zaXRpb25cbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgbWluLXdpZHRoOiA2NHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIC8qIEBhbHRlcm5hdGUgKi9cbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLy8gRXZlbiB0aG91Z2ggYHZpc2libGVgIGlzIHRoZSBkZWZhdWx0LCBJRSAxMSBjb21wdXRlcyB0aGUgcHJvcGVydHkgYXNcbiAgICAvLyBgaGlkZGVuYCBpbiBzb21lIGNhc2VzLCB1bmxlc3MgaXQncyBleHBsaWNpdGx5IGRlZmluZWQgaGVyZS5cbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gcG9zdGNzcy1iZW0tbGludGVyOiBpZ25vcmVcbiAgJjphY3RpdmUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaWNvbiB7XG4gIEBpbmNsdWRlIF9pY29uLXN0cnVjdHVyZTtcbiAgQGluY2x1ZGUgX2ljb24tc2l6ZSgxOHB4KTtcbn1cblxuQG1peGluIF9pY29uLXN0cnVjdHVyZSB7XG4gIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtYm94KG1hcmdpbiwgcmlnaHQsIDhweCk7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG5cbkBtaXhpbiBfaWNvbi1zaXplKCRzaXplLXB4KSB7XG4gICRpY29uLXNpemU6IHR5cG9ncmFwaHkucHgtdG8tcmVtKCRzaXplLXB4KTtcblxuICBmb250LXNpemU6ICRpY29uLXNpemU7XG4gIGhlaWdodDogJGljb24tc2l6ZTtcbiAgd2lkdGg6ICRpY29uLXNpemU7XG59XG5cbkBtaXhpbiBpY29uLXRyYWlsaW5nIHtcbiAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1ib3gobWFyZ2luLCBsZWZ0LCA4cHgpO1xufVxuXG5AbWl4aW4gaWNvbi1zdmcge1xuICBmaWxsOiBjdXJyZW50Q29sb3I7XG59XG5cbkBtaXhpbiBpY29uLWNvbnRhaW5lZCB7XG4gIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkobWFyZ2luLCAtNHB4LCA4cHgpO1xufVxuXG5AbWl4aW4gaWNvbi1jb250YWluZWQtdHJhaWxpbmcge1xuICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KG1hcmdpbiwgOHB4LCAtNHB4KTtcbn1cblxuQG1peGluIHJhaXNlZC10cmFuc2l0aW9uKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgIHRyYW5zaXRpb246IGVsZXZhdGlvbi10aGVtZS50cmFuc2l0aW9uLXZhbHVlKCk7XG4gIH1cbn1cblxuLy8vIEBkZXByZWNhdGVkIFByaXZhdGUgc3R5bGUgbWl4aW4gZm9yIHBhcnRuZXJzOyBub3QgYXZhaWxhYmxlIGZvciBwdWJsaWMgdXNlLlxuQG1peGluIGRlcHJlY2F0ZWQtaWNvbiB7XG4gIEBpbmNsdWRlIGljb247XG59XG5cbi8vLyBAZGVwcmVjYXRlZCBQcml2YXRlIHN0eWxlIG1peGluIGZvciBwYXJ0bmVyczsgbm90IGF2YWlsYWJsZSBmb3IgcHVibGljIHVzZS5cbkBtaXhpbiBkZXByZWNhdGVkLWljb24tdHJhaWxpbmcge1xuICBAaW5jbHVkZSBpY29uLXRyYWlsaW5nO1xufVxuXG4vLy8gQGRlcHJlY2F0ZWQgUHJpdmF0ZSBzdHlsZSBtaXhpbiBmb3IgcGFydG5lcnM7IG5vdCBhdmFpbGFibGUgZm9yIHB1YmxpYyB1c2UuXG5AbWl4aW4gZGVwcmVjYXRlZC1pY29uLXN2ZyB7XG4gIEBpbmNsdWRlIGljb24tc3ZnO1xufVxuXG4vLy8gQGRlcHJlY2F0ZWQgUHJpdmF0ZSBzdHlsZSBtaXhpbiBmb3IgcGFydG5lcnM7IG5vdCBhdmFpbGFibGUgZm9yIHB1YmxpYyB1c2UuXG5AbWl4aW4gZGVwcmVjYXRlZC1pY29uLWNvbnRhaW5lZCB7XG4gIEBpbmNsdWRlIGljb24tY29udGFpbmVkO1xufVxuXG4vLy8gQGRlcHJlY2F0ZWQgUHJpdmF0ZSBzdHlsZSBtaXhpbiBmb3IgcGFydG5lcnM7IG5vdCBhdmFpbGFibGUgZm9yIHB1YmxpYyB1c2UuXG5AbWl4aW4gZGVwcmVjYXRlZC1pY29uLWNvbnRhaW5lZC10cmFpbGluZyB7XG4gIEBpbmNsdWRlIGljb24tY29udGFpbmVkLXRyYWlsaW5nO1xufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vdmFyaWFibGVzJyBhcyBhbmltYXRpb24tdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2N1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ0BtYXRlcmlhbC9iYXNlL21peGlucycgYXMgYmFzZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2Nzcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcblxuJGJhc2VsaW5lLWNvbG9yOiBibGFjayAhZGVmYXVsdDtcbiR1bWJyYS1vcGFjaXR5OiAwLjIgIWRlZmF1bHQ7XG4kcGVudW1icmEtb3BhY2l0eTogMC4xNCAhZGVmYXVsdDtcbiRhbWJpZW50LW9wYWNpdHk6IDAuMTIgIWRlZmF1bHQ7XG5cbiR1bWJyYS1tYXA6IChcbiAgMDogJzBweCAwcHggMHB4IDBweCcsXG4gIDE6ICcwcHggMnB4IDFweCAtMXB4JyxcbiAgMjogJzBweCAzcHggMXB4IC0ycHgnLFxuICAzOiAnMHB4IDNweCAzcHggLTJweCcsXG4gIDQ6ICcwcHggMnB4IDRweCAtMXB4JyxcbiAgNTogJzBweCAzcHggNXB4IC0xcHgnLFxuICA2OiAnMHB4IDNweCA1cHggLTFweCcsXG4gIDc6ICcwcHggNHB4IDVweCAtMnB4JyxcbiAgODogJzBweCA1cHggNXB4IC0zcHgnLFxuICA5OiAnMHB4IDVweCA2cHggLTNweCcsXG4gIDEwOiAnMHB4IDZweCA2cHggLTNweCcsXG4gIDExOiAnMHB4IDZweCA3cHggLTRweCcsXG4gIDEyOiAnMHB4IDdweCA4cHggLTRweCcsXG4gIDEzOiAnMHB4IDdweCA4cHggLTRweCcsXG4gIDE0OiAnMHB4IDdweCA5cHggLTRweCcsXG4gIDE1OiAnMHB4IDhweCA5cHggLTVweCcsXG4gIDE2OiAnMHB4IDhweCAxMHB4IC01cHgnLFxuICAxNzogJzBweCA4cHggMTFweCAtNXB4JyxcbiAgMTg6ICcwcHggOXB4IDExcHggLTVweCcsXG4gIDE5OiAnMHB4IDlweCAxMnB4IC02cHgnLFxuICAyMDogJzBweCAxMHB4IDEzcHggLTZweCcsXG4gIDIxOiAnMHB4IDEwcHggMTNweCAtNnB4JyxcbiAgMjI6ICcwcHggMTBweCAxNHB4IC02cHgnLFxuICAyMzogJzBweCAxMXB4IDE0cHggLTdweCcsXG4gIDI0OiAnMHB4IDExcHggMTVweCAtN3B4JyxcbikgIWRlZmF1bHQ7XG5cbiRwZW51bWJyYS1tYXA6IChcbiAgMDogJzBweCAwcHggMHB4IDBweCcsXG4gIDE6ICcwcHggMXB4IDFweCAwcHgnLFxuICAyOiAnMHB4IDJweCAycHggMHB4JyxcbiAgMzogJzBweCAzcHggNHB4IDBweCcsXG4gIDQ6ICcwcHggNHB4IDVweCAwcHgnLFxuICA1OiAnMHB4IDVweCA4cHggMHB4JyxcbiAgNjogJzBweCA2cHggMTBweCAwcHgnLFxuICA3OiAnMHB4IDdweCAxMHB4IDFweCcsXG4gIDg6ICcwcHggOHB4IDEwcHggMXB4JyxcbiAgOTogJzBweCA5cHggMTJweCAxcHgnLFxuICAxMDogJzBweCAxMHB4IDE0cHggMXB4JyxcbiAgMTE6ICcwcHggMTFweCAxNXB4IDFweCcsXG4gIDEyOiAnMHB4IDEycHggMTdweCAycHgnLFxuICAxMzogJzBweCAxM3B4IDE5cHggMnB4JyxcbiAgMTQ6ICcwcHggMTRweCAyMXB4IDJweCcsXG4gIDE1OiAnMHB4IDE1cHggMjJweCAycHgnLFxuICAxNjogJzBweCAxNnB4IDI0cHggMnB4JyxcbiAgMTc6ICcwcHggMTdweCAyNnB4IDJweCcsXG4gIDE4OiAnMHB4IDE4cHggMjhweCAycHgnLFxuICAxOTogJzBweCAxOXB4IDI5cHggMnB4JyxcbiAgMjA6ICcwcHggMjBweCAzMXB4IDNweCcsXG4gIDIxOiAnMHB4IDIxcHggMzNweCAzcHgnLFxuICAyMjogJzBweCAyMnB4IDM1cHggM3B4JyxcbiAgMjM6ICcwcHggMjNweCAzNnB4IDNweCcsXG4gIDI0OiAnMHB4IDI0cHggMzhweCAzcHgnLFxuKSAhZGVmYXVsdDtcblxuJGFtYmllbnQtbWFwOiAoXG4gIDA6ICcwcHggMHB4IDBweCAwcHgnLFxuICAxOiAnMHB4IDFweCAzcHggMHB4JyxcbiAgMjogJzBweCAxcHggNXB4IDBweCcsXG4gIDM6ICcwcHggMXB4IDhweCAwcHgnLFxuICA0OiAnMHB4IDFweCAxMHB4IDBweCcsXG4gIDU6ICcwcHggMXB4IDE0cHggMHB4JyxcbiAgNjogJzBweCAxcHggMThweCAwcHgnLFxuICA3OiAnMHB4IDJweCAxNnB4IDFweCcsXG4gIDg6ICcwcHggM3B4IDE0cHggMnB4JyxcbiAgOTogJzBweCAzcHggMTZweCAycHgnLFxuICAxMDogJzBweCA0cHggMThweCAzcHgnLFxuICAxMTogJzBweCA0cHggMjBweCAzcHgnLFxuICAxMjogJzBweCA1cHggMjJweCA0cHgnLFxuICAxMzogJzBweCA1cHggMjRweCA0cHgnLFxuICAxNDogJzBweCA1cHggMjZweCA0cHgnLFxuICAxNTogJzBweCA2cHggMjhweCA1cHgnLFxuICAxNjogJzBweCA2cHggMzBweCA1cHgnLFxuICAxNzogJzBweCA2cHggMzJweCA1cHgnLFxuICAxODogJzBweCA3cHggMzRweCA2cHgnLFxuICAxOTogJzBweCA3cHggMzZweCA2cHgnLFxuICAyMDogJzBweCA4cHggMzhweCA3cHgnLFxuICAyMTogJzBweCA4cHggNDBweCA3cHgnLFxuICAyMjogJzBweCA4cHggNDJweCA3cHgnLFxuICAyMzogJzBweCA5cHggNDRweCA4cHgnLFxuICAyNDogJzBweCA5cHggNDZweCA4cHgnLFxuKSAhZGVmYXVsdDtcblxuLy8gVGhlIGNzcyBwcm9wZXJ0eSB1c2VkIGZvciBlbGV2YXRpb24uIEluIG1vc3QgY2FzZXMgdGhpcyBzaG91bGQgbm90IGJlIGNoYW5nZWQuIEl0IGlzIGV4cG9zZWRcbi8vIGFzIGEgdmFyaWFibGUgZm9yIGFic3RyYWN0aW9uIC8gZWFzeSB1c2Ugd2hlbiBuZWVkaW5nIHRvIHJlZmVyZW5jZSB0aGUgcHJvcGVydHkgZGlyZWN0bHksIGZvclxuLy8gZXhhbXBsZSBpbiBhIGB3aWxsLWNoYW5nZWAgcnVsZS5cbiRwcm9wZXJ0eTogYm94LXNoYWRvdyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgY29sb3IgZm9yIHRoZSBlbGV2YXRpb24gb3ZlcmxheS5cbiRvdmVybGF5LWNvbG9yOiAjZmZmO1xuXG4vLyBUaGUgY3NzIHByb3BlcnR5IHVzZWQgZm9yIGVsZXZhdGlvbiBvdmVybGF5IHRyYW5zaXRpb25zLiBJbiBtb3N0IGNhc2VzIHRoaXMgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLiBJdCBpcyBleHBvc2VkXG4vLyBhcyBhIHZhcmlhYmxlIGZvciBhYnN0cmFjdGlvbiAvIGVhc3kgdXNlIHdoZW4gbmVlZGluZyB0byByZWZlcmVuY2UgdGhlIHByb3BlcnR5IGRpcmVjdGx5LCBmb3Jcbi8vIGV4YW1wbGUgaW4gYSBgd2lsbC1jaGFuZ2VgIHJ1bGUuXG4kb3ZlcmxheS1wcm9wZXJ0eTogb3BhY2l0eSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZHVyYXRpb24gdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAyODBtcyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZWFzaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4kdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGFuaW1hdGlvbi12YXJpYWJsZXMuJHN0YW5kYXJkLWN1cnZlLXRpbWluZy1mdW5jdGlvbiAhZGVmYXVsdDtcblxuLy8vXG4vLy8gU2V0cyB0aGUgZWxldmF0aW9uIHRyYW5zaXRpb24gdmFsdWUuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGR1cmF0aW9uIC0gVGhlIGR1cmF0aW9uIG9mIHRoZSB0cmFuc2l0aW9uLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZWFzaW5nIC0gVGhlIGVhc2luZyBmdW5jdGlvbiBmb3IgdGhlIHRyYW5zaXRpb24uXG4vLy8gQHJldHVybiB7U3RyaW5nfVxuLy8vXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi12YWx1ZShcbiAgJGR1cmF0aW9uOiAkdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgJGVhc2luZzogJHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4pIHtcbiAgQHJldHVybiAjeyRwcm9wZXJ0eX0gI3skZHVyYXRpb259ICN7JGVhc2luZ307XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGVsZXZhdGlvbiBvdmVybGF5IHRyYW5zaXRpb24gdmFsdWUuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGR1cmF0aW9uIC0gVGhlIGR1cmF0aW9uIG9mIHRoZSB0cmFuc2l0aW9uLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZWFzaW5nIC0gVGhlIGVhc2luZyBmdW5jdGlvbiBmb3IgdGhlIHRyYW5zaXRpb24uXG4vLy8gQHJldHVybiB7U3RyaW5nfVxuLy8vXG5AZnVuY3Rpb24gb3ZlcmxheS10cmFuc2l0aW9uLXZhbHVlKFxuICAkZHVyYXRpb246ICR0cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAkZWFzaW5nOiAkdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cbikge1xuICBAcmV0dXJuICN7JG92ZXJsYXktcHJvcGVydHl9ICN7JGR1cmF0aW9ufSAjeyRlYXNpbmd9O1xufVxuXG4vLy9cbi8vLyBDcmVhdGVzIGEgYm94LXNoYWRvdyBmcm9tIHRoZSBNYXRlcmlhbCBlbGV2YXRpb24gc3lzdGVtLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGV2ZWwgLSB0aGUgbGV2ZWwgb2YgdGhlIE1hdGVyaWFsIGVsZXZhdGlvbiBzeXN0ZW0uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRjb2xvciAtIHRoZSBjb2xvciBvZiB0aGUgc2hhZG93LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3BhY2l0eS1ib29zdCBbMF0gLSBvcHRpb25hbCBvcGFjaXR5IGJvb3N0IGZvciB0aGUgc2hhZG93LlxuLy8vIEByZXR1cm4ge0xpc3R9IHRoZSBjb21wbGV0ZSBib3ggc2hhZG93LlxuLy8vXG5AZnVuY3Rpb24gX2JveC1zaGFkb3coJGxldmVsLCAkY29sb3IsICRvcGFjaXR5LWJvb3N0OiAwKSB7XG4gICRjb2xvcjogdGhlbWUtY29sb3IucHJvcC12YWx1ZSgkY29sb3IpO1xuICAkdW1icmEtei12YWx1ZTogbWFwLmdldCgkdW1icmEtbWFwLCAkbGV2ZWwpO1xuICAkcGVudW1icmEtei12YWx1ZTogbWFwLmdldCgkcGVudW1icmEtbWFwLCAkbGV2ZWwpO1xuICAkYW1iaWVudC16LXZhbHVlOiBtYXAuZ2V0KCRhbWJpZW50LW1hcCwgJGxldmVsKTtcblxuICAkdW1icmEtY29sb3I6IHJnYmEoJGNvbG9yLCAkdW1icmEtb3BhY2l0eSArICRvcGFjaXR5LWJvb3N0KTtcbiAgJHBlbnVtYnJhLWNvbG9yOiByZ2JhKCRjb2xvciwgJHBlbnVtYnJhLW9wYWNpdHkgKyAkb3BhY2l0eS1ib29zdCk7XG4gICRhbWJpZW50LWNvbG9yOiByZ2JhKCRjb2xvciwgJGFtYmllbnQtb3BhY2l0eSArICRvcGFjaXR5LWJvb3N0KTtcblxuICBAcmV0dXJuIChcbiAgICAjeycjeyR1bWJyYS16LXZhbHVlfSAjeyR1bWJyYS1jb2xvcn0nfSxcbiAgICAjeycjeyRwZW51bWJyYS16LXZhbHVlfSAjeyRwZW51bWJyYS1jb2xvcn0nfSxcbiAgICAjeyRhbWJpZW50LXotdmFsdWV9ICRhbWJpZW50LWNvbG9yXG4gICk7XG59XG5cbi8vIFJldHVybnMgdGhlIGNvcnJlY3QgYm94LXNoYWRvdyBzcGVjaWZpZWQgYnkgJHotdmFsdWUuXG4vLyBUaGUgJHotdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0LlxuLy8gSWYgJGNvbG9yIGhhcyBhbiBhbHBoYSBjaGFubmVsLCBpdCB3aWxsIGJlIGlnbm9yZWQgYW5kIG92ZXJyaWRkZW4uIFRvIGluY3JlYXNlIHRoZSBvcGFjaXR5IG9mIHRoZSBzaGFkb3csIHVzZVxuLy8gJG9wYWNpdHktYm9vc3QuXG5AZnVuY3Rpb24gZWxldmF0aW9uLWJveC1zaGFkb3coXG4gICR6LXZhbHVlLFxuICAkY29sb3I6ICRiYXNlbGluZS1jb2xvcixcbiAgJG9wYWNpdHktYm9vc3Q6IDBcbikge1xuICBAaWYgbWV0YS50eXBlLW9mKCR6LXZhbHVlKSAhPSBudW1iZXIgb3Igbm90IG1hdGguaXMtdW5pdGxlc3MoJHotdmFsdWUpIHtcbiAgICBAZXJyb3IgXCIkei12YWx1ZSBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLCBidXQgcmVjZWl2ZWQgJyN7JHotdmFsdWV9J1wiO1xuICB9XG5cbiAgQGlmICR6LXZhbHVlIDwgMCBvciAkei12YWx1ZSA+IDI0IHtcbiAgICBAZXJyb3IgXCIkei12YWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQsIGJ1dCByZWNlaXZlZCAnI3skei12YWx1ZX0nXCI7XG4gIH1cblxuICBAcmV0dXJuIF9ib3gtc2hhZG93KCR6LXZhbHVlLCAkY29sb3IsICRvcGFjaXR5LWJvb3N0KTtcbn1cblxuLy8vXG4vLy8gUmV0dXJucyBhIHNoYWRvdyBvciBudWxsIGlmIHBhcmFtcyBhcmUgaW52YWxpZC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGxldmVsIC0gdGhlIGxldmVsIG9mIHRoZSBNYXRlcmlhbCBlbGV2YXRpb24gc3lzdGVtLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkY29sb3IgLSB0aGUgY29sb3Igb2YgdGhlIHNoYWRvdy5cbi8vLyBAcmV0dXJuIHtMaXN0fG51bGx9IHRoZSBjb21wbGV0ZSBib3ggc2hhZG93IG9yIG51bGwuXG4vLy9cbkBmdW5jdGlvbiBfc2hhZG93KCRsZXZlbCwgJGNvbG9yKSB7XG4gIEBpZiAkbGV2ZWwgPT0gbnVsbCBhbmQgJGNvbG9yID09IG51bGwge1xuICAgIC8vIERvIG5vdCBlbWl0IGEgd2FybmluZyBpZiBib3RoIGFyZSBudWxsLCB3aGljaCBtZWFucyB0aGUgdXNlciBkaWQgbm90XG4gICAgLy8gcHJvdmlkZSB0b2tlbnMuXG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgQGlmICRsZXZlbCA9PSBudWxsIG9yICRjb2xvciA9PSBudWxsIHtcbiAgICAvLyBJZiBvbmUgb2YgdGhlIHRva2VucyBpcyBudWxsLCBlbWl0IGEgd2FybmluZzogdGhlIHVzZXIgbWF5IG5vdCByZWFsaXplXG4gICAgLy8gdGhhdCBib3RoIGFyZSByZXF1aXJlZC5cbiAgICBAd2FybiBcImJvdGggJGxldmVsIGFuZCAkY29sb3IgYXJlIHJlcXVpcmVkOyByZWNlaXZlZCAkbGV2ZWw6ICcjeyRsZXZlbH0nLCAkY29sb3I6ICcjeyRjb2xvcn0nXCI7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgQGlmICRsZXZlbCA8IDAgb3IgJGxldmVsID4gMjQge1xuICAgIEB3YXJuIFwiJGxldmVsIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNDsgcmVjZWl2ZWQgJyN7JGxldmVsfSdcIjtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cblxuICBAcmV0dXJuIF9ib3gtc2hhZG93KCRsZXZlbCwgJGNvbG9yKTtcbn1cblxuQGZ1bmN0aW9uIGdldC1lbGV2YXRpb24oJGxldmVsKSB7XG4gIEByZXR1cm4gKGJveC1zaGFkb3c6IGVsZXZhdGlvbi1ib3gtc2hhZG93KCRsZXZlbCkpO1xufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBzaGFkb3cgb2YgdGhlIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJveC1zaGFkb3cgLSBUaGUgc2hhZG93IHRvIGFwcGx5IHRvIHRoZSBlbGVtZW50LlxuLy8vXG5AbWl4aW4gX2JveC1zaGFkb3coJHNoYWRvdywgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYm94LXNoYWRvdywgJHNoYWRvdyk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgc2hhZG93IG9mIHRoZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRib3gtc2hhZG93IC0gVGhlIHNoYWRvdyB0byBhcHBseSB0byB0aGUgZWxlbWVudC5cbi8vL1xuQG1peGluIHNoYWRvdygkYm94LXNoYWRvdywgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgQGlmIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRib3gtc2hhZG93KSB7XG4gICAgICAvLyBUT0RPKGIvMTg1MTg4NDU4KTogVXNlIHRoZW1lLnByb3BlcnR5KCkgb25jZSByZXNvbHZlZC5cbiAgICAgICRmYWxsYmFjazogY3VzdG9tLXByb3BlcnRpZXMuZ2V0LWZhbGxiYWNrKCRib3gtc2hhZG93KTtcblxuICAgICAgLy8gdmFyKC0tPGJveC1zaGFkb3ctcHJvcD4sIHZhcigtLW0tZWxldmF0aW9uLWJveC1zaGFkb3ctZm9yLWdzcykpXG4gICAgICAkZ3NzLWN1c3RvbS1wcm9wOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmdldC12YXJuYW1lKCRib3gtc2hhZG93KSxcbiAgICAgICAgY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKGVsZXZhdGlvbi1ib3gtc2hhZG93LWZvci1nc3MpXG4gICAgICApO1xuXG4gICAgICAkdmFsdWU6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZS12YXIoJGdzcy1jdXN0b20tcHJvcCk7XG4gICAgICBAaWYgJHZhbHVlID09IG51bGwge1xuICAgICAgICAvLyBDdXN0b20gcHJvcGVydGllcyBhcmUgZGlzYWJsZWQsIHNpbmNlICRnc3MtY3VzdG9tLXByb3BcbiAgICAgICAgLy8gZG9lcyBub3QgaGF2ZSBhIGZhbGxiYWNrLiBBdm9pZCBlbWl0dGluZyB0d28gbm9uLWN1c3RvbVxuICAgICAgICAvLyBwcm9wIGRlY2xhcmF0aW9ucyBieSBzZXR0aW5nICRmYWxsYmFjayB0byBudWxsLlxuICAgICAgICAkdmFsdWU6ICRmYWxsYmFjaztcbiAgICAgICAgJGZhbGxiYWNrOiBudWxsO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBjdXN0b20tcHJvcGVydGllcy5kZWNsYXJhdGlvbihcbiAgICAgICAgY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKGVsZXZhdGlvbi1ib3gtc2hhZG93LWZvci1nc3MsICRmYWxsYmFjaylcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBjc3MuZGVjbGFyYXRpb24oYm94LXNoYWRvdywgJHZhbHVlLCAkZmFsbGJhY2stdmFsdWU6ICRmYWxsYmFjayk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAvKiBAYWx0ZXJuYXRlICovXG4gICAgICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgZWxldmF0aW9uIG92ZXJsYXkgc3VyZmFjZSByZXF1aXJlZCBwb3NpdGlvbmluZy5cbi8vL1xuQG1peGluIG92ZXJsYXktc3VyZmFjZS1wb3NpdGlvbigkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAvKiBAYWx0ZXJuYXRlICovXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGVsZXZhdGlvbiBvdmVybGF5LCBpbmNsdWRpbmcgcG9zaXRpb25pbmcgYW5kIHNpemluZy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBUaGUgd2lkdGggb2YgdGhlIGVsZXZhdGlvbiBvdmVybGF5XG4vLy8gQHBhcmFtIHtOdW1iZXJ9IFskaGVpZ2h0XSAtIFRoZSBoZWlnaHQgb2YgdGhlIGVsZXZhdGlvbiBvdmVybGF5XG4vLy8gQHBhcmFtIHtCb29sZWFufSBbJGhhcy1jb250ZW50LXNpemluZ10gLSBTZXQgdG8gZmFsc2UgaWYgdGhlIGNvbnRhaW5lciBoYXMgbm8gY29udGVudCBzaXppbmdcbi8vL1xuQG1peGluIG92ZXJsYXktZGltZW5zaW9ucyhcbiAgJHdpZHRoLFxuICAkaGVpZ2h0OiAkd2lkdGgsXG4gICRoYXMtY29udGVudC1zaXppbmc6IHRydWUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZWxldmF0aW9uLW92ZXJsYXkge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSh3aWR0aCwgJHdpZHRoKTtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGhlaWdodCwgJGhlaWdodCk7XG5cbiAgICAgIEBpZiAkaGFzLWNvbnRlbnQtc2l6aW5nIHtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBlbGV2YXRpb24gb3ZlcmxheSBmaWxsIGNvbG9yLlxuLy8vIEV4cGVjdGVkIHRvIGJlIGNhbGxlZCBkaXJlY3RseSBvbiB0aGUgZWxldmF0aW9uIG92ZXJsYXkgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBjb2xvciBvZiB0aGUgZWxldmF0aW9uIG92ZXJsYXkuXG4vLy9cbkBtaXhpbiBvdmVybGF5LWZpbGwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShiYWNrZ3JvdW5kLWNvbG9yLCAkY29sb3IpO1xuICB9XG59XG5cbi8vL1xuLy8vIEFwcGxpZXMgdGhlIGdpdmVuIGNvbG9yIHRvIHRoZSBjb250YWluZXIgb2YgdGhlIG92ZXJsYXkuXG4vLy8gQHBhcmFtIHtjb2xvcn0gJGNvbG9yIC0gdGhlIGNvbG9yIG9mIHRoZSBvdmVybGF5IGNvbnRhaW5lclxuLy8vXG5AbWl4aW4gb3ZlcmxheS1jb250YWluZXItY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIC5tZGMtZWxldmF0aW9uLW92ZXJsYXkge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZmlsbC1jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBlbGV2YXRpb24gb3ZlcmxheSBvcGFjaXR5LlxuLy8vIEV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG9wYWNpdHkgLSBUaGUgb3BhY2l0eSBvZiB0aGUgZWxldmF0aW9uIG92ZXJsYXkuXG4vLy9cbkBtaXhpbiBvdmVybGF5LW9wYWNpdHkoJG9wYWNpdHksICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1lbGV2YXRpb24tb3ZlcmxheSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkob3BhY2l0eSwgJG9wYWNpdHkpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBBcHBsaWVzIHRoZSBjb3JyZWN0IENTUyBydWxlcyB0byBhbiBlbGVtZW50IHRvIGdpdmUgaXQgdGhlIGVsZXZhdGlvbiBzcGVjaWZpZWQgYnkgJHotdmFsdWUuXG4vLyBUaGUgJHotdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0LlxuLy8gSWYgJGNvbG9yIGhhcyBhbiBhbHBoYSBjaGFubmVsLCBpdCB3aWxsIGJlIGlnbm9yZWQgYW5kIG92ZXJyaWRkZW4uIFRvIGluY3JlYXNlIHRoZSBvcGFjaXR5IG9mIHRoZSBzaGFkb3csIHVzZVxuLy8gJG9wYWNpdHktYm9vc3QuXG5AbWl4aW4gZWxldmF0aW9uKFxuICAkei12YWx1ZSxcbiAgJGNvbG9yOiAkYmFzZWxpbmUtY29sb3IsXG4gICRvcGFjaXR5LWJvb3N0OiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGJveC1zaGFkb3c6IGVsZXZhdGlvbi1ib3gtc2hhZG93KFxuICAgICR6LXZhbHVlLFxuICAgICRjb2xvcjogJGNvbG9yLFxuICAgICRvcGFjaXR5LWJvb3N0OiAkb3BhY2l0eS1ib29zdFxuICApO1xuXG4gIEBpbmNsdWRlIHNoYWRvdygkYm94LXNoYWRvdywgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLy9cbi8vLyBSZXByZXNlbnRzIHRoZSBjb25maWd1cmFibGUgdmFsdWVzIG9mIHRoZSBlbGV2YXRpb24gdGhlbWUuXG4vLy9cbiRfdGhlbWUtdmFsdWVzOiAoXG4gIHNoYWRvdzogbnVsbCxcbiAgb3ZlcmxheS1vcGFjaXR5OiBudWxsLFxuICBvdmVybGF5LWNvbG9yOiBudWxsLFxuKTtcblxuLy8vXG4vLy8gQXBwbGllcyB0aGUgc2hhZG93IHRoZW1lIHdpdGggdGhlIGdpdmVuICRyZXNvbHZlciBmdW5jdGlvbi5cbi8vLyBAcGFyYW0ge0Z1bmN0aW9ufSAkcmVzb2x2ZXIgLSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHZhbGlkIHRoZW1lIGNvbmZpZy5cbi8vLyAgIEBzZWUgcmVzb2x2ZXIgZm9yIGFuIGV4YW1wbGUgYW5kIGV4cGVjdGVkIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHZhbHVlLlxuLy8vIEFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25hbCBrZXl3b3JkIGFyZ3M6XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbGV2YXRpb24gLSB0aGUgbGV2ZWwgaW4gdGhlIGVsZXZhdGlvbiBzeXN0ZW0uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzaGFkb3ctY29sb3IgLSB0aGUgY29sb3IgdXNlZCBmb3IgdGhlIHNoYWRvdy5cbi8vL1xuQG1peGluIHdpdGgtcmVzb2x2ZXIoJHJlc29sdmVyLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpLCAkYXJncy4uLikge1xuICBAaWYgJHJlc29sdmVyIHtcbiAgICBAaW5jbHVkZSBfdGhlbWUobWV0YS5jYWxsKCRyZXNvbHZlciwgJGFyZ3MuLi4pLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gQXBwbGllcyB0aGUgZ2l2ZW4gdGhlbWUgd2l0aCB2YWxpZGF0aW9uLlxuLy8vIEBwYXJhbSB7TWFwfSAkdGhlbWUgLSBAc2VlICRfdGhlbWUtdmFsdWVzIGZvciBhY2NlcHRlZCB0aGVtZSBwcm9wZXJ0aWVzLlxuLy8vXG5AbWl4aW4gdGhlbWUoJHRoZW1lOiAoKSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZSgkX3RoZW1lLXZhbHVlcywgJHRoZW1lKTtcbiAgQGluY2x1ZGUgX3RoZW1lKCR0aGVtZSwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLy9cbi8vLyBBcHBsaWVzIHRoZSBnaXZlbiB0aGVtZS5cbi8vLyBAcGFyYW0ge01hcH0gJHRoZW1lIC0gQHNlZSAkX3RoZW1lLXZhbHVlcyBmb3IgYWNjZXB0ZWQgdGhlbWUgcHJvcGVydGllcy5cbi8vL1xuQG1peGluIF90aGVtZSgkdGhlbWU6ICgpLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHNoYWRvdyhtYXAuZ2V0KCR0aGVtZSwgc2hhZG93KSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBvdmVybGF5LW9wYWNpdHkobWFwLmdldCgkdGhlbWUsIG92ZXJsYXktb3BhY2l0eSksICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgb3ZlcmxheS1jb250YWluZXItY29sb3IoXG4gICAgbWFwLmdldCgkdGhlbWUsIG92ZXJsYXktY29sb3IpLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbi8vL1xuLy8vIFRyYW5zZm9ybXMgdGhlIGZvbGxvd2luZyBvcHRpb25hbCBwYXJhbWV0ZXJzIGludG8gYSB0aGVtZSBjb25maWcuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbGV2YXRpb24gLSB0aGUgbGV2ZWwgb2YgdGhlIGVsZXZhdGlvbiBzeXN0ZW0gaW4gTWF0ZXJpYWwuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzaGFkb3ctY29sb3IgLSB0aGUgY29sb3IgdG8gYmUgdXNlZCBieSB0aGUgc2hhZG93LlxuLy8vIEByZXR1cm4ge01hcH0gQHNlZSAkX3RoZW1lLXZhbHVlcyBmb3IgYWNjZXB0ZWQgdGhlbWUgcHJvcGVydGllcy5cbi8vL1xuQGZ1bmN0aW9uIHJlc29sdmVyKCRhcmdzLi4uKSB7XG4gICRvcHRzOiBtZXRhLmtleXdvcmRzKCRhcmdzKTtcbiAgJGVsZXZhdGlvbjogbWFwLmdldCgkb3B0cywgZWxldmF0aW9uKTtcbiAgJHNoYWRvdy1jb2xvcjogbWFwLmdldCgkb3B0cywgc2hhZG93LWNvbG9yKTtcbiAgQGlmIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRlbGV2YXRpb24pIHtcbiAgICBAcmV0dXJuIF9yZXNvbHZlLWN1c3RvbS1wcm9wcygkZWxldmF0aW9uLCAkc2hhZG93LWNvbG9yKTtcbiAgfVxuXG4gIEByZXR1cm4gKHNoYWRvdzogX3NoYWRvdygkZWxldmF0aW9uLCAkc2hhZG93LWNvbG9yKSk7XG59XG5cbkBmdW5jdGlvbiBfcmVzb2x2ZS1jdXN0b20tcHJvcHMoJGVsZXZhdGlvbiwgJHNoYWRvdy1jb2xvcikge1xuICAkZmFsbGJhY2stZHA6IGN1c3RvbS1wcm9wZXJ0aWVzLmdldC1mYWxsYmFjaygkZWxldmF0aW9uKTtcbiAgJGZhbGxiYWNrLXNoYWRvdy1jb2xvcjogY3VzdG9tLXByb3BlcnRpZXMuZ2V0LWZhbGxiYWNrKCRzaGFkb3ctY29sb3IpO1xuICAkc2hhZG93OiBjdXN0b20tcHJvcGVydGllcy5zZXQtZmFsbGJhY2soXG4gICAgJGVsZXZhdGlvbixcbiAgICBfc2hhZG93KCRmYWxsYmFjay1kcCwgJGZhbGxiYWNrLXNoYWRvdy1jb2xvcilcbiAgKTtcbiAgQHJldHVybiAoc2hhZG93OiAkc2hhZG93KTtcbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3Nhc3M6c2VsZWN0b3InO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2dzcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvc2VsZWN0b3ItZXh0JztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5cbiRpbmNsdWRlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQ3JlYXRlcyBhIHJ1bGUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgd2hlbiBhIGNvbXBvbmVudCBpcyB3aXRoaW4gdGhlIGNvbnRleHRcbi8vLyBvZiBhbiBSVEwgbGF5b3V0LlxuLy8vXG4vLy8gQGV4YW1wbGUgLSBzY3NzXG4vLy8gLm1kYy1mb28ge1xuLy8vICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4vLy9cbi8vLyAgIEBpbmNsdWRlIHJ0bCB7XG4vLy8gICAgIHBhZGRpbmctbGVmdDogYXV0bztcbi8vLyAgICAgcGFkZGluZy1yaWdodDogNHB4O1xuLy8vICAgfVxuLy8vIH1cbi8vL1xuLy8vIEBleGFtcGxlIC0gY3NzXG4vLy8gICAubWRjLWZvbyB7XG4vLy8gICAgIHBhZGRpbmctbGVmdDogNHB4O1xuLy8vICAgfVxuLy8vXG4vLy8gICBbZGlyPVwicnRsXCJdIC5tZGMtZm9vLFxuLy8vICAgLm1kYy1mb29bZGlyPVwicnRsXCJdIHtcbi8vLyAgICAgcGFkZGluZy1sZWZ0OiBhdXRvO1xuLy8vICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG4vLy8gICB9XG4vLy9cbi8vLyBOb3RlIHRoYXQgdGhpcyBtaXhpbiB3b3JrcyBieSBjaGVja2luZyBmb3IgYW4gYW5jZXN0b3IgZWxlbWVudCB3aXRoXG4vLy8gYFtkaXI9XCJydGxcIl1gLiBBcyBhIHJlc3VsdCwgbmVzdGVkIGBkaXJgIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZDpcbi8vL1xuLy8vIEBleGFtcGxlIC0gaHRtbFxuLy8vIDxodG1sIGRpcj1cInJ0bFwiPlxuLy8vICAgPCEtLSAuLi4gLS0+XG4vLy8gICA8ZGl2IGRpcj1cImx0clwiPlxuLy8vICAgICA8ZGl2IGNsYXNzPVwibWRjLWZvb1wiPlN0eWxlZCBpbmNvcnJlY3RseSBhcyBSVEwhPC9kaXY+XG4vLy8gICA8L2Rpdj5cbi8vLyA8L2h0bWw+XG4vLy9cbi8vLyBJbiB0aGUgZnV0dXJlLCBzZWxlY3RvcnMgc3VjaCBhcyB0aGUgYDpkaXJgIHBzZXVkby1jbGFzc1xuLy8vIChodHRwOi8vbWRuLmlvL2Nzcy86ZGlyKSB3aWxsIGhlbHAgdXMgbWl0aWdhdGUgdGhpcy5cbi8vL1xuLy8vIEBjb250ZW50IENvbnRlbnQgdG8gYmUgc3R5bGVkIGluIGFuIFJUTCBjb250ZXh0LlxuQG1peGluIHJ0bCgpIHtcbiAgQGlmICgkaW5jbHVkZSkge1xuICAgICRkaXItcnRsOiAnW2Rpcj1ydGxdJztcblxuICAgICRydGwtc2VsZWN0b3JzOiBsaXN0LmpvaW4oXG4gICAgICBzZWxlY3Rvci5uZXN0KCRkaXItcnRsLCAmKSxcbiAgICAgIHNlbGVjdG9yLWV4dC5hcHBlbmQtc3RyaWN0KCYsICRkaXItcnRsKVxuICAgICk7XG5cbiAgICBAYXQtcm9vdCB7XG4gICAgICAjeyRydGwtc2VsZWN0b3JzfSB7XG4gICAgICAgIC8qcnRsOmJlZ2luOmlnbm9yZSovXG4gICAgICAgIEBjb250ZW50O1xuICAgICAgICAvKnJ0bDplbmQ6aWdub3JlKi9cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gVGFrZXMgYSBiYXNlIGJveC1tb2RlbCBwcm9wZXJ0eSBuYW1lIChgbWFyZ2luYCwgYGJvcmRlcmAsIGBwYWRkaW5nYCwgZXRjLikgYWxvbmcgd2l0aCBhXG4vLyBkZWZhdWx0IGRpcmVjdGlvbiAoYGxlZnRgIG9yIGByaWdodGApIGFuZCB2YWx1ZSwgYW5kIGVtaXRzIHJ1bGVzIHdoaWNoIGFwcGx5IHRoZSBnaXZlbiB2YWx1ZSB0byB0aGVcbi8vIHNwZWNpZmllZCBkaXJlY3Rpb24gYnkgZGVmYXVsdCBhbmQgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBpbiBSVEwuXG4vL1xuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gYGBgc2Nzc1xuLy8gLm1kYy1mb28ge1xuLy8gICBAaW5jbHVkZSBydGwtcmVmbGV4aXZlLWJveChtYXJnaW4sIGxlZnQsIDhweCk7XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBpcyBlcXVpdmFsZW50IHRvOlxuLy9cbi8vIGBgYHNjc3Ncbi8vIC5tZGMtZm9vIHtcbi8vICAgbWFyZ2luLWxlZnQ6IDhweDtcbi8vICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy9cbi8vICAgQGluY2x1ZGUgcnRsIHtcbi8vICAgICBtYXJnaW4tbGVmdDogMDtcbi8vICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbi8vICAgfVxuLy8gfVxuLy8gYGBgXG4vL1xuLy8gd2hlcmVhczpcbi8vXG4vLyBgYGBzY3NzXG4vLyAubWRjLWZvbyB7XG4vLyAgIEBpbmNsdWRlIHJ0bC1yZWZsZXhpdmUtYm94KG1hcmdpbiwgcmlnaHQsIDhweCk7XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBpcyBlcXVpdmFsZW50IHRvOlxuLy9cbi8vIGBgYHNjc3Ncbi8vIC5tZGMtZm9vIHtcbi8vICAgbWFyZ2luLWxlZnQ6IDA7XG4vLyAgIG1hcmdpbi1yaWdodDogOHB4O1xuLy9cbi8vICAgQGluY2x1ZGUgcnRsIHtcbi8vICAgICBtYXJnaW4tbGVmdDogOHB4O1xuLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vICAgfVxuLy8gfVxuLy8gYGBgXG4vL1xuLy8gWW91IGNhbiBhbHNvIHBhc3MgYW4gb3B0aW9uYWwgNHRoIGAkcm9vdC1zZWxlY3RvcmAgYXJndW1lbnQgd2hpY2ggd2lsbCBiZSBmb3J3YXJkZWQgdG8gYG1kYy1ydGxgLFxuLy8gZS5nLiBgQGluY2x1ZGUgcnRsLXJlZmxleGl2ZS1ib3gobWFyZ2luLCBsZWZ0LCA4cHgsICcubWRjLWNvbXBvbmVudCcpYC5cbi8vXG4vLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyB6ZXJvIG91dCB0aGUgb3JpZ2luYWwgdmFsdWUgaW4gYW4gUlRMIGNvbnRleHQuXG4vLyBJZiB5b3UncmUgdHJ5aW5nIHRvIGZsaXAgdGhlIHZhbHVlcywgdXNlIGBtZGMtcnRsLXJlZmxleGl2ZS1wcm9wZXJ0eSgpYCBpbnN0ZWFkLlxuQG1peGluIHJlZmxleGl2ZS1ib3goXG4gICRiYXNlLXByb3BlcnR5LFxuICAkZGVmYXVsdC1kaXJlY3Rpb24sXG4gICR2YWx1ZSxcbiAgJHJlcGxhY2U6IG51bGxcbikge1xuICBAaWYgKGxpc3QuaW5kZXgoKHJpZ2h0LCBsZWZ0KSwgJGRlZmF1bHQtZGlyZWN0aW9uKSA9PSBudWxsKSB7XG4gICAgQGVycm9yIFwiSW52YWxpZCBkZWZhdWx0IGRpcmVjdGlvbjogJyN7JGRlZmF1bHQtZGlyZWN0aW9ufScuIFBsZWFzZSBzcGVjaWZpeSBlaXRoZXIgJ3JpZ2h0JyBvciAnbGVmdCcuXCI7XG4gIH1cblxuICAkbGVmdC12YWx1ZTogJHZhbHVlO1xuICAkcmlnaHQtdmFsdWU6IDA7XG5cbiAgQGlmICgkZGVmYXVsdC1kaXJlY3Rpb24gPT0gcmlnaHQpIHtcbiAgICAkbGVmdC12YWx1ZTogMDtcbiAgICAkcmlnaHQtdmFsdWU6ICR2YWx1ZTtcbiAgfVxuXG4gIEBpbmNsdWRlIHJlZmxleGl2ZS1wcm9wZXJ0eShcbiAgICAkYmFzZS1wcm9wZXJ0eSxcbiAgICAkbGVmdC12YWx1ZSxcbiAgICAkcmlnaHQtdmFsdWUsXG4gICAgJHJlcGxhY2U6ICRyZXBsYWNlXG4gICk7XG59XG5cbi8vIFRha2VzIGEgYmFzZSBwcm9wZXJ0eSBhbmQgZW1pdHMgcnVsZXMgdGhhdCBhc3NpZ24gPGJhc2UtcHJvcGVydHk+LWxlZnQgdG8gPGxlZnQtdmFsdWU+IGFuZFxuLy8gPGJhc2UtcHJvcGVydHk+LXJpZ2h0IHRvIDxyaWdodC12YWx1ZT4gaW4gYSBMVFIgY29udGV4dCwgYW5kIHZpY2UgdmVyc2EgaW4gYSBSVEwgY29udGV4dC5cbi8vIEZvciBleGFtcGxlOlxuLy9cbi8vIGBgYHNjc3Ncbi8vIC5tZGMtZm9vIHtcbi8vICAgQGluY2x1ZGUgcnRsLXJlZmxleGl2ZS1wcm9wZXJ0eShtYXJnaW4sIGF1dG8sIDEycHgpO1xuLy8gfVxuLy8gYGBgXG4vL1xuLy8gaXMgZXF1aXZhbGVudCB0bzpcbi8vXG4vLyBgYGBzY3NzXG4vLyAubWRjLWZvbyB7XG4vLyAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuLy8gICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4vL1xuLy8gICBAaW5jbHVkZSBydGwge1xuLy8gICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuLy8gICAgIG1hcmdpbi1yaWdodDogYXV0bztcbi8vICAgfVxuLy8gfVxuLy8gYGBgXG4vL1xuLy8gQW4gb3B0aW9uYWwgNHRoIGAkcm9vdC1zZWxlY3RvcmAgYXJndW1lbnQgY2FuIGJlIGdpdmVuLCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byBgbWRjLXJ0bGAuXG5AbWl4aW4gcmVmbGV4aXZlLXByb3BlcnR5KFxuICAkYmFzZS1wcm9wZXJ0eSxcbiAgJGxlZnQtdmFsdWUsXG4gICRyaWdodC12YWx1ZSxcbiAgJHJlcGxhY2U6IG51bGxcbikge1xuICAkcHJvcC1sZWZ0OiAjeyRiYXNlLXByb3BlcnR5fS1sZWZ0O1xuICAkcHJvcC1yaWdodDogI3skYmFzZS1wcm9wZXJ0eX0tcmlnaHQ7XG5cbiAgQGluY2x1ZGUgcmVmbGV4aXZlKFxuICAgICRwcm9wLWxlZnQsXG4gICAgJGxlZnQtdmFsdWUsXG4gICAgJHByb3AtcmlnaHQsXG4gICAgJHJpZ2h0LXZhbHVlLFxuICAgICRyZXBsYWNlOiAkcmVwbGFjZVxuICApO1xufVxuXG4vLyBUYWtlcyBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGEgaG9yaXpvbnRhbCBwb3NpdGlvbiBwcm9wZXJ0eSAoZWl0aGVyICdsZWZ0JyBvciAncmlnaHQnKSBhcyB3ZWxsXG4vLyBhcyBhIHZhbHVlLCBhbmQgYXBwbGllcyB0aGF0IHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gYSBMVFIgY29udGV4dCwgYW5kIGZsaXBzIGl0IGluIGFcbi8vIFJUTCBjb250ZXh0LiBGb3IgZXhhbXBsZTpcbi8vXG4vLyBgYGBzY3NzXG4vLyAubWRjLWZvbyB7XG4vLyAgIEBpbmNsdWRlIHJ0bC1yZWZsZXhpdmUtcG9zaXRpb24obGVmdCwgMCk7XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBpcyBlcXVpdmFsZW50IHRvOlxuLy9cbi8vIGBgYHNjc3Ncbi8vIC5tZGMtZm9vIHtcbi8vICAgbGVmdDogMDtcbi8vICAgcmlnaHQ6IGluaXRpYWw7XG4vL1xuLy8gICBAaW5jbHVkZSBydGwge1xuLy8gICAgIGxlZnQ6IGluaXRpYWw7XG4vLyAgICAgcmlnaHQ6IDA7XG4vLyAgIH1cbi8vIH1cbi8vIGBgYFxuLy9cbi8vIEFuIG9wdGlvbmFsIHRoaXJkICRyb290LXNlbGVjdG9yIGFyZ3VtZW50IG1heSBhbHNvIGJlIGdpdmVuLCB3aGljaCBpcyBwYXNzZWQgdG8gYG1kYy1ydGxgLlxuQG1peGluIHJlZmxleGl2ZS1wb3NpdGlvbigkcG9zaXRpb24tcHJvcGVydHksICR2YWx1ZSwgJHJlcGxhY2U6IG51bGwpIHtcbiAgQGlmIChsaXN0LmluZGV4KChyaWdodCwgbGVmdCksICRwb3NpdGlvbi1wcm9wZXJ0eSkgPT0gbnVsbCkge1xuICAgIEBlcnJvciBcIkludmFsaWQgcG9zaXRpb24gI3twb3NpdGlvbi1wcm9wZXJ0eX0uIFBsZWFzZSBzcGVjaWZpeSBlaXRoZXIgcmlnaHQgb3IgbGVmdFwiO1xuICB9XG5cbiAgLy8gVE9ETzogJ2luaXRpYWwnIGlzIG5vdCBzdXBwb3J0ZWQgaW4gSUUgMTEuIGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLWluaXRpYWwtdmFsdWVcbiAgJGxlZnQtdmFsdWU6ICR2YWx1ZTtcbiAgJHJpZ2h0LXZhbHVlOiBpbml0aWFsO1xuXG4gIEBpZiAoJHBvc2l0aW9uLXByb3BlcnR5ID09IHJpZ2h0KSB7XG4gICAgJHJpZ2h0LXZhbHVlOiAkdmFsdWU7XG4gICAgJGxlZnQtdmFsdWU6IGluaXRpYWw7XG4gIH1cblxuICBAaW5jbHVkZSByZWZsZXhpdmUoXG4gICAgbGVmdCxcbiAgICAkbGVmdC12YWx1ZSxcbiAgICByaWdodCxcbiAgICAkcmlnaHQtdmFsdWUsXG4gICAgJHJlcGxhY2U6ICRyZXBsYWNlXG4gICk7XG59XG5cbi8vIFRha2VzIHBhaXIgb2YgcHJvcGVydGllcyB3aXRoIHZhbHVlcyBhcyBhcmd1bWVudHMgYW5kIGZsaXBzIGl0IGluIFJUTCBjb250ZXh0LlxuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gYGBgc2Nzc1xuLy8gLm1kYy1mb28ge1xuLy8gICBAaW5jbHVkZSBydGwtcmVmbGV4aXZlKGxlZnQsIDJweCwgcmlnaHQsIDVweCk7XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBpcyBlcXVpdmFsZW50IHRvOlxuLy9cbi8vIGBgYHNjc3Ncbi8vIC5tZGMtZm9vIHtcbi8vICAgbGVmdDogMnB4O1xuLy8gICByaWdodDogNXB4O1xuLy9cbi8vICAgQGluY2x1ZGUgcnRsIHtcbi8vICAgICByaWdodDogMnB4O1xuLy8gICAgIGxlZnQ6IDVweDtcbi8vICAgfVxuLy8gfVxuLy8gYGBgXG4vL1xuLy8gQW4gb3B0aW9uYWwgZmlmdGggYCRyb290LXNlbGVjdG9yYCBhcmd1bWVudCBtYXkgYWxzbyBiZSBnaXZlbiwgd2hpY2ggaXMgcGFzc2VkIHRvIGBtZGMtcnRsYC5cbkBtaXhpbiByZWZsZXhpdmUoXG4gICRsZWZ0LXByb3BlcnR5LFxuICAkbGVmdC12YWx1ZSxcbiAgJHJpZ2h0LXByb3BlcnR5LFxuICAkcmlnaHQtdmFsdWUsXG4gICRyZXBsYWNlOiBudWxsXG4pIHtcbiAgJGxlZnQtcmVwbGFjZTogbnVsbDtcbiAgJHJpZ2h0LXJlcGxhY2U6IG51bGw7XG4gIEBpZiAkcmVwbGFjZSB7XG4gICAgQGlmIG1ldGEudHlwZS1vZigkbGVmdC12YWx1ZSkgPT0gJ3N0cmluZycge1xuICAgICAgJGxlZnQtcmVwbGFjZTogJHJlcGxhY2U7XG4gICAgfVxuXG4gICAgQGlmIG1ldGEudHlwZS1vZigkcmlnaHQtdmFsdWUpID09ICdzdHJpbmcnIHtcbiAgICAgICRyaWdodC1yZXBsYWNlOiAkcmVwbGFjZTtcbiAgICB9XG5cbiAgICBAaWYgJGxlZnQtcmVwbGFjZSA9PSBudWxsIGFuZCAkcmlnaHQtcmVwbGFjZSA9PSBudWxsIHtcbiAgICAgIEBlcnJvciAnbWRjLXJ0bDogJHJlcGxhY2UgbWF5IG9ubHkgYmUgdXNlZCB3aXRoIHN0cmluZ3MgYnV0IG5laXRoZXIgbGVmdCBub3IgcmlnaHQgdmFsdWVzIGFyZSBzdHJpbmdzLic7XG4gICAgfVxuXG4gICAgLy8gSWYgYW55IHJlcGxhY2VtZW50cyBhcmUgbnVsbCwgdHJlYXQgdGhlIGVudGlyZSB2YWx1ZSBhcyBudWxsIChkbyBub3RcbiAgICAvLyBlbWl0IGFueXRoaW5nKS5cbiAgICBAZWFjaCAkbmFtZSwgJHJlcGxhY2VtZW50IGluICRyZXBsYWNlIHtcbiAgICAgIEBpZiAkcmVwbGFjZW1lbnQgPT0gbnVsbCB7XG4gICAgICAgICRsZWZ0LXZhbHVlOiBudWxsO1xuICAgICAgICAkcmlnaHQtdmFsdWU6IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRG8gbm90IGVtaXQgaWYgZWl0aGVyIHZhbHVlIGFyZSBudWxsXG4gIEBpZiAkbGVmdC12YWx1ZSBhbmQgJHJpZ2h0LXZhbHVlIHtcbiAgICBAaW5jbHVkZSBfcHJvcGVydHkoJGxlZnQtcHJvcGVydHksICRsZWZ0LXZhbHVlLCAkcmVwbGFjZTogJGxlZnQtcmVwbGFjZSk7XG4gICAgQGluY2x1ZGUgX3Byb3BlcnR5KCRyaWdodC1wcm9wZXJ0eSwgJHJpZ2h0LXZhbHVlLCAkcmVwbGFjZTogJHJpZ2h0LXJlcGxhY2UpO1xuXG4gICAgQGluY2x1ZGUgcnRsIHtcbiAgICAgIEBpbmNsdWRlIF9wcm9wZXJ0eShcbiAgICAgICAgJGxlZnQtcHJvcGVydHksXG4gICAgICAgICRyaWdodC12YWx1ZSxcbiAgICAgICAgJHJlcGxhY2U6ICRyaWdodC1yZXBsYWNlXG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgX3Byb3BlcnR5KCRyaWdodC1wcm9wZXJ0eSwgJGxlZnQtdmFsdWUsICRyZXBsYWNlOiAkbGVmdC1yZXBsYWNlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gQWRkcyBSVEwgaWdub3JlIGFubm90YXRpb24gd2hlbiBgJG1kYy1ydGwtaW5jbHVkZWAgaXMgdHJ1ZS5cbi8vL1xuQG1peGluIGlnbm9yZS1uZXh0LWxpbmUoKSB7XG4gIEBpbmNsdWRlIGdzcy5hbm5vdGF0ZShcbiAgICAoXG4gICAgICBub2ZsaXA6ICRpbmNsdWRlLFxuICAgIClcbiAgKTtcbn1cblxuLy8vXG4vLy8gQWRkcyBgQG5vZmxpcGAgYW5ub3RhdGlvbiB3aGVuIGAkbWRjLXJ0bC1pbmNsdWRlYCBpcyB0cnVlLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcbi8vLyBAcGFyYW0ge01hcH0gJHJlcGxhY2Vcbi8vL1xuQG1peGluIF9wcm9wZXJ0eSgkcHJvcGVydHksICR2YWx1ZSwgJHJlcGxhY2U6IG51bGwpIHtcbiAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoXG4gICAgJHByb3BlcnR5LFxuICAgICR2YWx1ZSxcbiAgICAkcmVwbGFjZTogJHJlcGxhY2UsXG4gICAgJGdzczogKG5vZmxpcDogJGluY2x1ZGUpXG4gICk7XG59XG4iLCIvLyBDb3B5cmlnaHQgMjAyMCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG4vLy9cbi8vLyBFbWl0cyBuZWNlc3NhcnkgbGF5b3V0IHN0eWxlcyB0byBzZXQgYSB0cmFuc3BhcmVudCBib3JkZXIgYXJvdW5kIGFuIGVsZW1lbnRcbi8vLyB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggdGhlIHJlc3Qgb2YgaXRzIGNvbXBvbmVudCBsYXlvdXQuIFRoZSBib3JkZXIgaXNcbi8vLyBvbmx5IHZpc2libGUgaW4gaGlnaC1jb250cmFzdCBtb2RlLiBUaGUgdGFyZ2V0IGVsZW1lbnQgc2hvdWxkIGJlIGEgY2hpbGQgb2Zcbi8vLyBhIHJlbGF0aXZlbHkgcG9zaXRpb25lZCB0b3AtbGV2ZWwgZWxlbWVudCAoaS5lLiBhIDo6YmVmb3JlIHBzZXVkby1lbGVtZW50KS5cbi8vL1xuLy8vIEBwYXJhbSB7bnVtYmVyfSAkYm9yZGVyLXdpZHRoIC0gVGhlIHdpZHRoIG9mIHRoZSB0cmFuc3BhcmVudCBib3JkZXIuXG4vLy8gQHBhcmFtIHtzdHJpbmd9ICRib3JkZXItc3R5bGUgLSBUaGUgc3R5bGUgb2YgdGhlIHRyYW5zcGFyZW50IGJvcmRlci5cbi8vL1xuQG1peGluIHRyYW5zcGFyZW50LWJvcmRlcihcbiAgJGJvcmRlci13aWR0aDogMXB4LFxuICAkYm9yZGVyLXN0eWxlOiBzb2xpZCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4gIC8vIFVzZWQgdG8gc2F0aXNmeSBGaXJlZm94IHY5NCB3aGljaCBkb2VzIG5vdCByZW5kZXIgdHJhbnNwYXJlbnQgYm9yZGVycyBpbiBIQ00gKGIvMjA2NDQwODM4KS5cbiAgQGluY2x1ZGUgZm9yY2VkLWNvbG9ycy1tb2RlKCRleGNsdWRlLWllMTE6IHRydWUpIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgYm9yZGVyLWNvbG9yOiBDYW52YXNUZXh0O1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBWaXN1YWxseSBoaWRlcyB0ZXh0IGNvbnRlbnQgZm9yIGFjY2Vzc2liaWxpdHkuIFRoaXMgdGV4dCBzaG91bGQgb25seSBiZVxuLy8vIHZpc2libGUgdG8gc2NyZWVuIHJlYWRlciB1c2Vycy5cbi8vLyBTZWUgaHR0cHM6Ly9hMTF5cHJvamVjdC5jb20vcG9zdHMvaG93LXRvLWhpZGUtY29udGVudC9cbi8vL1xuQG1peGluIHZpc3VhbGx5LWhpZGRlbigkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBjbGlwOiByZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLyogYWRkZWQgbGluZSAqL1xuICAgIHdpZHRoOiAxcHg7XG4gIH1cbn1cblxuLy8vIFNlbGVjdHMgZm9yIElFMTEgc3VwcG9ydC5cbi8vL1xuLy8vIEBjb250ZW50IHN0eWxlcyB0byBlbWl0IGZvciBJRTExIHN1cHBvcnRcbkBtaXhpbiBpZTExLXN1cHBvcnQge1xuICBAbWVkaWEgYWxsIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3RzIGZvciBgZm9yY2VkLWNvbG9yc2AgaGlnaCBjb250cmFzdCBtb2RlLlxuLy8vXG4vLy8gV2hpbGUgaW4gYGZvcmNlZC1jb2xvcnNgIG1vZGUsIG9ubHkgc3lzdGVtIGNvbG9ycyBzaG91bGQgYmUgdXNlZC5cbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvcl92YWx1ZSNzeXN0ZW1fY29sb3JzXG4vLy8gQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0BtZWRpYS9mb3JjZWQtY29sb3JzXG4vLy8gQGNvbnRlbnQgc3R5bGVzIHRvIGVtaXQgaW4gYGZvcmNlZC1jb2xvcnNgIG1vZGVcbkBtaXhpbiBmb3JjZWQtY29sb3JzLW1vZGUoJGV4Y2x1ZGUtaWUxMTogZmFsc2UpIHtcbiAgQGlmICRleGNsdWRlLWllMTEge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSksICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAyMSBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL2RvbS9kb20nO1xuXG4kcmluZy1yYWRpdXMtZGVmYXVsdDogOHB4ICFkZWZhdWx0O1xuJGlubmVyLXJpbmctd2lkdGgtZGVmYXVsdDogMnB4ICFkZWZhdWx0O1xuJGlubmVyLXJpbmctY29sb3ItZGVmYXVsdDogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kb3V0ZXItcmluZy13aWR0aC1kZWZhdWx0OiAycHggIWRlZmF1bHQ7XG4kb3V0ZXItcmluZy1jb2xvci1kZWZhdWx0OiB0cmFuc3BhcmVudCAhZGVmYXVsdDtcbiRjb250YWluZXItb3V0ZXItcGFkZGluZy1kZWZhdWx0OiAycHggIWRlZmF1bHQ7XG5cbi8vLyBTdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50J3MgaW5uZXIgZm9jdXMgcmluZyBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtICRyaW5nLXJhZGl1cyBbJHJpbmctcmFkaXVzLWRlZmF1bHRdIC0gRm9jdXMgcmluZyByYWRpdXMuXG4vLy8gQHBhcmFtICRpbm5lci1yaW5nLXdpZHRoIFskaW5uZXItcmluZy13aWR0aC1kZWZhdWx0XSAtIElubmVyIGZvY3VzIHJpbmcgd2lkdGguXG4vLy8gQHBhcmFtICRpbm5lci1yaW5nLWNvbG9yIFskaW5uZXItcmluZy1jb2xvci1kZWZhdWx0XSAtIElubmVyIGZvY3VzIHJpbmcgY29sb3IuXG4vLy8gQHBhcmFtICRvdXRlci1yaW5nLXdpZHRoIFskb3V0ZXItcmluZy13aWR0aC1kZWZhdWx0XSAtIE91dGVyIGZvY3VzIHJpbmcgd2lkdGguXG4vLy8gQHBhcmFtICRvdXRlci1yaW5nLWNvbG9yIFskb3V0ZXItcmluZy1jb2xvci1kZWZhdWx0XSAtIE91dGVyIGZvY3VzIHJpbmcgY29sb3IuXG4vLy8gQHBhcmFtICRjb250YWluZXItb3V0ZXItcGFkZGluZyBbJGNvbnRhaW5lci1vdXRlci1wYWRkaW5nLWRlZmF1bHRdIC0gVGhlXG4vLy8gICAgIGRpc3RhbmNlIGJldHdlZW4gdGhlIGZvY3VzIHJpbmcgYW5kIHRoZSBjb250YWluZXIuXG5AbWl4aW4gZm9jdXMtcmluZyhcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJHJpbmctcmFkaXVzOiAkcmluZy1yYWRpdXMtZGVmYXVsdCxcbiAgJGlubmVyLXJpbmctd2lkdGg6ICRpbm5lci1yaW5nLXdpZHRoLWRlZmF1bHQsXG4gICRpbm5lci1yaW5nLWNvbG9yOiAkaW5uZXItcmluZy1jb2xvci1kZWZhdWx0LFxuICAkb3V0ZXItcmluZy13aWR0aDogJG91dGVyLXJpbmctd2lkdGgtZGVmYXVsdCxcbiAgJG91dGVyLXJpbmctY29sb3I6ICRvdXRlci1yaW5nLWNvbG9yLWRlZmF1bHQsXG4gICRjb250YWluZXItb3V0ZXItcGFkZGluZy12ZXJ0aWNhbDogJGNvbnRhaW5lci1vdXRlci1wYWRkaW5nLWRlZmF1bHQsXG4gICRjb250YWluZXItb3V0ZXItcGFkZGluZy1ob3Jpem9udGFsOiAkY29udGFpbmVyLW91dGVyLXBhZGRpbmctZGVmYXVsdFxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRjb250YWluZXItc2l6ZS12ZXJ0aWNhbDogMTAwJTtcbiAgQGlmICRjb250YWluZXItb3V0ZXItcGFkZGluZy12ZXJ0aWNhbCAhPSAwIHtcbiAgICAkY29udGFpbmVyLXNpemUtdmVydGljYWw6IGNhbGMoXG4gICAgICAxMDAlICsgI3skY29udGFpbmVyLW91dGVyLXBhZGRpbmctdmVydGljYWwgKiAyfVxuICAgICk7XG4gIH1cbiAgJGNvbnRhaW5lci1zaXplLWhvcml6b250YWw6IDEwMCU7XG4gIEBpZiAkY29udGFpbmVyLW91dGVyLXBhZGRpbmctaG9yaXpvbnRhbCAhPSAwIHtcbiAgICAkY29udGFpbmVyLXNpemUtaG9yaXpvbnRhbDogY2FsYyhcbiAgICAgIDEwMCUgKyAjeyRjb250YWluZXItb3V0ZXItcGFkZGluZy1ob3Jpem9udGFsICogMn1cbiAgICApO1xuICB9XG4gICRvdXRlci1yaW5nLXNpemU6IDEwMCU7XG4gIEBpZiAkb3V0ZXItcmluZy13aWR0aCA+IDAge1xuICAgICRvdXRlci1yaW5nLXNpemU6IGNhbGMoMTAwJSArICN7JG91dGVyLXJpbmctd2lkdGggKiAyfSk7XG4gIH1cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBib3JkZXI6ICRpbm5lci1yaW5nLXdpZHRoIHNvbGlkICRpbm5lci1yaW5nLWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6ICRyaW5nLXJhZGl1cyAtICRvdXRlci1yaW5nLXdpZHRoO1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIGhlaWdodDogJGNvbnRhaW5lci1zaXplLXZlcnRpY2FsO1xuICAgIHdpZHRoOiAkY29udGFpbmVyLXNpemUtaG9yaXpvbnRhbDtcblxuICAgIEBpbmNsdWRlIGRvbS5mb3JjZWQtY29sb3JzLW1vZGUoJGV4Y2x1ZGUtaWUxMTogdHJ1ZSkge1xuICAgICAgYm9yZGVyLWNvbG9yOiBDYW52YXNUZXh0O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgYm9yZGVyOiAkb3V0ZXItcmluZy13aWR0aCBzb2xpZCAkb3V0ZXItcmluZy1jb2xvcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRyaW5nLXJhZGl1cztcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgaGVpZ2h0OiAkb3V0ZXItcmluZy1zaXplO1xuICAgICAgd2lkdGg6ICRvdXRlci1yaW5nLXNpemU7XG5cbiAgICAgIEBpbmNsdWRlIGRvbS5mb3JjZWQtY29sb3JzLW1vZGUoJGV4Y2x1ZGUtaWUxMTogdHJ1ZSkge1xuICAgICAgICBib3JkZXItY29sb3I6IENhbnZhc1RleHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vLy8gQ3VzdG9taXplcyB0aGUgY29sb3Igb2YgdGhlIGJ1dHRvbiBmb2N1cyByaW5nLlxuLy8vXG4vLy8gQHBhcmFtICRpbm5lci1yaW5nLWNvbG9yIFskaW5uZXItcmluZy1jb2xvci1kZWZhdWx0XSAtIElubmVyIGZvY3VzIHJpbmcgY29sb3IuXG4vLy8gQHBhcmFtICRvdXRlci1yaW5nLXdpZHRoIFskb3V0ZXItcmluZy13aWR0aC1kZWZhdWx0XSAtIE91dGVyIGZvY3VzIHJpbmcgd2lkdGguXG5AbWl4aW4gZm9jdXMtcmluZy1jb2xvcihcbiAgJGlubmVyLXJpbmctY29sb3I6ICRpbm5lci1yaW5nLWNvbG9yLWRlZmF1bHQsXG4gICRvdXRlci1yaW5nLWNvbG9yOiAkb3V0ZXItcmluZy1jb2xvci1kZWZhdWx0XG4pIHtcbiAgYm9yZGVyLWNvbG9yOiAkaW5uZXItcmluZy1jb2xvcjtcblxuICAmOjphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiAkb3V0ZXItcmluZy1jb2xvcjtcbiAgfVxufVxuXG4vLy8gQ3VzdG9taXplcyB0aGUgYm9yZGVyIHJhZGl1cyBvZiB0aGUgYnV0dG9uIGZvY3VzIHJpbmcuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHJpbmctcmFkaXVzIC0gVGhlIGJvcmRlciByYWRpdXMgb2YgdGhlIGZvY3VzIHJpbmcuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvdXRlci1yaW5nLXdpZHRoIFskb3V0ZXItcmluZy13aWR0aF0gLSBXaWR0aCBvZiB0aGUgb3V0ZXJcbi8vLyAgICAgcmluZywgcmVxdWlyZWQgdG8gY29tcHV0ZSB0aGUgcmFkaXVzIGZvciB0aGUgaW5uZXIgcmluZy5cbkBtaXhpbiBmb2N1cy1yaW5nLXJhZGl1cyhcbiAgJHJpbmctcmFkaXVzLFxuICAkb3V0ZXItcmluZy13aWR0aDogJG91dGVyLXJpbmctd2lkdGgtZGVmYXVsdCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBib3JkZXItcmFkaXVzOiAkcmluZy1yYWRpdXMgLSAkb3V0ZXItcmluZy13aWR0aDtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRyaW5nLXJhZGl1cztcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJ3Nhc3M6bGlzdCc7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOnN0cmluZyc7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2N1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9rZXlzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5cbi8vLyBAZGVwcmVjYXRlZCBBdm9pZCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkuIEluc3RlYWQsIGNvbmZpZ3VyZSB0aGVcbi8vLyBgJHN0eWxlcy08c3R5bGU+YCB2YXJpYWJsZSBNYXBzLlxuQGZ1bmN0aW9uIHNldC1zdHlsZXNfKCRiYXNlLXN0eWxlcywgJHNjYWxlLXN0eWxlcywgJG92ZXJyaWRlLXN0eWxlcykge1xuICAkb3B0aW9uczogKFxuICAgIGN1c3RvbS1wcm9wZXJ0eS1wcmVmaXg6IHR5cG9ncmFwaHksXG4gICk7XG5cbiAgJGJhc2Utc3R5bGVzOiBrZXlzLnNldC12YWx1ZXMoJGJhc2Utc3R5bGVzLCAkb3B0aW9uczogJG9wdGlvbnMpO1xuXG4gIEBlYWNoICRzdHlsZSwgJHN0eWxlLXByb3BzIGluICRzY2FsZS1zdHlsZXMge1xuICAgIEBlYWNoICRiYXNlLWtleSBpbiBtYXAua2V5cygkYmFzZS1zdHlsZXMpIHtcbiAgICAgIC8vIElnbm9yZSB0aGUgcmV0dXJuIHJlc3VsdCwgaXQncyBub3QgbmVlZGVkXG4gICAgICAkdW51c2VkOiBrZXlzLmFkZC1saW5rKGtleXMuY29tYmluZSgkc3R5bGUsICRiYXNlLWtleSksICRiYXNlLWtleSk7XG4gICAgfVxuXG4gICAgLy8gTWVyZ2UgYmFzZSBwcm9wZXJ0aWVzIGZvciBhbGwgc3R5bGVzLlxuICAgICRzdHlsZS1wcm9wczogbWFwLm1lcmdlKCRiYXNlLXN0eWxlcywgJHN0eWxlLXByb3BzKTtcblxuICAgIC8vIE1lcmdlIG92ZXJyaWRlcyBvbnRvIGVhY2ggc3R5bGUuXG4gICAgJHN0eWxlLXByb3BzOiBtYXAubWVyZ2UoJHN0eWxlLXByb3BzLCBtYXAuZ2V0KCRvdmVycmlkZS1zdHlsZXMsICRzdHlsZSkpO1xuXG4gICAgLy8gUmVnaXN0ZXIga2V5cyBmb3IgdGhpcyBzdHlsZVxuICAgIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRzdHlsZS1wcm9wcyB7XG4gICAgICAkdW51c2VkOiBrZXlzLnNldC12YWx1ZShcbiAgICAgICAga2V5cy5jb21iaW5lKCRzdHlsZSwgJHByb3BlcnR5KSxcbiAgICAgICAgJHZhbHVlLFxuICAgICAgICAkb3B0aW9uczogJG9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGUgb3JpZ2luYWwgc3R5bGVzIHdpdGggbmV3IHN0eWxlcy5cbiAgICAkc2NhbGUtc3R5bGVzOiBtYXAubWVyZ2UoJHNjYWxlLXN0eWxlcywgKCN7JHN0eWxlfTogJHN0eWxlLXByb3BzKSk7XG4gIH1cblxuICBAcmV0dXJuICRzY2FsZS1zdHlsZXM7XG59XG5cbkBmdW5jdGlvbiBnZXQtbGV0dGVyLXNwYWNpbmdfKCR0cmFja2luZywgJGZvbnQtc2l6ZSkge1xuICBAcmV0dXJuIG1hdGguZGl2KCR0cmFja2luZywgJGZvbnQtc2l6ZSAqIDE2KSAqIDFlbTtcbn1cblxuQGZ1bmN0aW9uIHB4LXRvLXJlbSgkcHgpIHtcbiAgQGlmIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRweCkge1xuICAgIEByZXR1cm4gY3VzdG9tLXByb3BlcnRpZXMuc2V0LWZhbGxiYWNrKFxuICAgICAgJHB4LFxuICAgICAgX3B4LXRvLXJlbShjdXN0b20tcHJvcGVydGllcy5nZXQtZmFsbGJhY2soJHB4KSlcbiAgICApO1xuICB9XG4gIEByZXR1cm4gX3B4LXRvLXJlbSgkcHgpO1xufVxuXG5AZnVuY3Rpb24gX3B4LXRvLXJlbSgkcHgpIHtcbiAgQGlmICRweCA9PSBudWxsIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgQHJldHVybiBtYXRoLmRpdigkcHgsIDE2cHgpICogMXJlbTtcbn1cblxuJGZvbnQtZmFtaWx5OiBzdHJpbmcudW5xdW90ZSgnUm9ib3RvLCBzYW5zLXNlcmlmJykgIWRlZmF1bHQ7XG5cbi8vIE92ZXJyaWRlIHN0eWxlc1xuJHN0eWxlcy1oZWFkbGluZTE6ICgpICFkZWZhdWx0O1xuJHN0eWxlcy1oZWFkbGluZTI6ICgpICFkZWZhdWx0O1xuJHN0eWxlcy1oZWFkbGluZTM6ICgpICFkZWZhdWx0O1xuJHN0eWxlcy1oZWFkbGluZTQ6ICgpICFkZWZhdWx0O1xuJHN0eWxlcy1oZWFkbGluZTU6ICgpICFkZWZhdWx0O1xuJHN0eWxlcy1oZWFkbGluZTY6ICgpICFkZWZhdWx0O1xuJHN0eWxlcy1zdWJ0aXRsZTE6ICgpICFkZWZhdWx0O1xuJHN0eWxlcy1zdWJ0aXRsZTI6ICgpICFkZWZhdWx0O1xuJHN0eWxlcy1ib2R5MTogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLWJvZHkyOiAoKSAhZGVmYXVsdDtcbiRzdHlsZXMtY2FwdGlvbjogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLWJ1dHRvbjogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLW92ZXJsaW5lOiAoKSAhZGVmYXVsdDtcblxuLy8vIEBkZXByZWNhdGVkIERvIG5vdCBvdmVycmlkZSB0aGlzIHZhcmlhYmxlLiBVc2UgdGhlICRzdHlsZXMtPHN0eWxlPiBvdmVycmlkZVxuLy8vIE1hcCB2YXJpYWJsZXMgaW5zdGVhZCwgb3IgJGZvbnQtZmFtaWx5IHRvIHNldCB0aGUgYmFzZSBmb250IGZhbWlseS5cbiRiYXNlOiAoXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHksXG4pICFkZWZhdWx0O1xuXG4kZm9udC13ZWlnaHQtdmFsdWVzOiAoXG4gIHRoaW46IDEwMCxcbiAgbGlnaHQ6IDMwMCxcbiAgcmVndWxhcjogNDAwLFxuICBtZWRpdW06IDUwMCxcbiAgYm9sZDogNzAwLFxuICBibGFjazogOTAwLFxuKSAhZGVmYXVsdDtcblxuLy8vIEBkZXByZWNhdGVkIERvIG5vdCBvdmVycmlkZSB0aGlzIHZhcmlhYmxlLiBVc2UgdGhlICRzdHlsZXMtPHN0eWxlPiBvdmVycmlkZVxuLy8vIE1hcCB2YXJpYWJsZXMgaW5zdGVhZC5cbiRzdHlsZXM6IHNldC1zdHlsZXNfKFxuICAkYmFzZSxcbiAgKFxuICAgIGhlYWRsaW5lMTogKFxuICAgICAgZm9udC1zaXplOiBweC10by1yZW0oOTZweCksXG4gICAgICBsaW5lLWhlaWdodDogcHgtdG8tcmVtKDk2cHgpLFxuICAgICAgZm9udC13ZWlnaHQ6IG1hcC5nZXQoJGZvbnQtd2VpZ2h0LXZhbHVlcywgbGlnaHQpLFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IGdldC1sZXR0ZXItc3BhY2luZ18oLTEuNSwgNiksXG4gICAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQsXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdCxcbiAgICApLFxuICAgIGhlYWRsaW5lMjogKFxuICAgICAgZm9udC1zaXplOiBweC10by1yZW0oNjBweCksXG4gICAgICBsaW5lLWhlaWdodDogcHgtdG8tcmVtKDYwcHgpLFxuICAgICAgZm9udC13ZWlnaHQ6IG1hcC5nZXQoJGZvbnQtd2VpZ2h0LXZhbHVlcywgbGlnaHQpLFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IGdldC1sZXR0ZXItc3BhY2luZ18oLTAuNSwgMy43NSksXG4gICAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQsXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdCxcbiAgICApLFxuICAgIGhlYWRsaW5lMzogKFxuICAgICAgZm9udC1zaXplOiBweC10by1yZW0oNDhweCksXG4gICAgICBsaW5lLWhlaWdodDogcHgtdG8tcmVtKDUwcHgpLFxuICAgICAgZm9udC13ZWlnaHQ6IG1hcC5nZXQoJGZvbnQtd2VpZ2h0LXZhbHVlcywgcmVndWxhciksXG4gICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsLFxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0LFxuICAgICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQsXG4gICAgKSxcbiAgICBoZWFkbGluZTQ6IChcbiAgICAgIGZvbnQtc2l6ZTogcHgtdG8tcmVtKDM0cHgpLFxuICAgICAgbGluZS1oZWlnaHQ6IHB4LXRvLXJlbSg0MHB4KSxcbiAgICAgIGZvbnQtd2VpZ2h0OiBtYXAuZ2V0KCRmb250LXdlaWdodC12YWx1ZXMsIHJlZ3VsYXIpLFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IGdldC1sZXR0ZXItc3BhY2luZ18oMC4yNSwgMi4xMjUpLFxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0LFxuICAgICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQsXG4gICAgKSxcbiAgICBoZWFkbGluZTU6IChcbiAgICAgIGZvbnQtc2l6ZTogcHgtdG8tcmVtKDI0cHgpLFxuICAgICAgbGluZS1oZWlnaHQ6IHB4LXRvLXJlbSgzMnB4KSxcbiAgICAgIGZvbnQtd2VpZ2h0OiBtYXAuZ2V0KCRmb250LXdlaWdodC12YWx1ZXMsIHJlZ3VsYXIpLFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbCxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdCxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbmhlcml0LFxuICAgICksXG4gICAgaGVhZGxpbmU2OiAoXG4gICAgICBmb250LXNpemU6IHB4LXRvLXJlbSgyMHB4KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBweC10by1yZW0oMzJweCksXG4gICAgICBmb250LXdlaWdodDogbWFwLmdldCgkZm9udC13ZWlnaHQtdmFsdWVzLCBtZWRpdW0pLFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IGdldC1sZXR0ZXItc3BhY2luZ18oMC4yNSwgMS4yNSksXG4gICAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQsXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdCxcbiAgICApLFxuICAgIHN1YnRpdGxlMTogKFxuICAgICAgZm9udC1zaXplOiBweC10by1yZW0oMTZweCksXG4gICAgICBsaW5lLWhlaWdodDogcHgtdG8tcmVtKDI4cHgpLFxuICAgICAgZm9udC13ZWlnaHQ6IG1hcC5nZXQoJGZvbnQtd2VpZ2h0LXZhbHVlcywgcmVndWxhciksXG4gICAgICBsZXR0ZXItc3BhY2luZzogZ2V0LWxldHRlci1zcGFjaW5nXygwLjE1LCAxKSxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdCxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbmhlcml0LFxuICAgICksXG4gICAgc3VidGl0bGUyOiAoXG4gICAgICBmb250LXNpemU6IHB4LXRvLXJlbSgxNHB4KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBweC10by1yZW0oMjJweCksXG4gICAgICBmb250LXdlaWdodDogbWFwLmdldCgkZm9udC13ZWlnaHQtdmFsdWVzLCBtZWRpdW0pLFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IGdldC1sZXR0ZXItc3BhY2luZ18oMC4xLCAwLjg3NSksXG4gICAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQsXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdCxcbiAgICApLFxuICAgIGJvZHkxOiAoXG4gICAgICBmb250LXNpemU6IHB4LXRvLXJlbSgxNnB4KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBweC10by1yZW0oMjRweCksXG4gICAgICBmb250LXdlaWdodDogbWFwLmdldCgkZm9udC13ZWlnaHQtdmFsdWVzLCByZWd1bGFyKSxcbiAgICAgIGxldHRlci1zcGFjaW5nOiBnZXQtbGV0dGVyLXNwYWNpbmdfKDAuNSwgMSksXG4gICAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQsXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdCxcbiAgICApLFxuICAgIGJvZHkyOiAoXG4gICAgICBmb250LXNpemU6IHB4LXRvLXJlbSgxNHB4KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBweC10by1yZW0oMjBweCksXG4gICAgICBmb250LXdlaWdodDogbWFwLmdldCgkZm9udC13ZWlnaHQtdmFsdWVzLCByZWd1bGFyKSxcbiAgICAgIGxldHRlci1zcGFjaW5nOiBnZXQtbGV0dGVyLXNwYWNpbmdfKDAuMjUsIDAuODc1KSxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdCxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbmhlcml0LFxuICAgICksXG4gICAgY2FwdGlvbjogKFxuICAgICAgZm9udC1zaXplOiBweC10by1yZW0oMTJweCksXG4gICAgICBsaW5lLWhlaWdodDogcHgtdG8tcmVtKDIwcHgpLFxuICAgICAgZm9udC13ZWlnaHQ6IG1hcC5nZXQoJGZvbnQtd2VpZ2h0LXZhbHVlcywgcmVndWxhciksXG4gICAgICBsZXR0ZXItc3BhY2luZzogZ2V0LWxldHRlci1zcGFjaW5nXygwLjQsIDAuNzUpLFxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0LFxuICAgICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQsXG4gICAgKSxcbiAgICBidXR0b246IChcbiAgICAgIGZvbnQtc2l6ZTogcHgtdG8tcmVtKDE0cHgpLFxuICAgICAgbGluZS1oZWlnaHQ6IHB4LXRvLXJlbSgzNnB4KSxcbiAgICAgIGZvbnQtd2VpZ2h0OiBtYXAuZ2V0KCRmb250LXdlaWdodC12YWx1ZXMsIG1lZGl1bSksXG4gICAgICBsZXR0ZXItc3BhY2luZzogZ2V0LWxldHRlci1zcGFjaW5nXygxLjI1LCAwLjg3NSksXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUsXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlLFxuICAgICksXG4gICAgb3ZlcmxpbmU6IChcbiAgICAgIGZvbnQtc2l6ZTogcHgtdG8tcmVtKDEycHgpLFxuICAgICAgbGluZS1oZWlnaHQ6IHB4LXRvLXJlbSgzMnB4KSxcbiAgICAgIGZvbnQtd2VpZ2h0OiBtYXAuZ2V0KCRmb250LXdlaWdodC12YWx1ZXMsIG1lZGl1bSksXG4gICAgICBsZXR0ZXItc3BhY2luZzogZ2V0LWxldHRlci1zcGFjaW5nXygyLCAwLjc1KSxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UsXG4gICAgKSxcbiAgKSxcbiAgKFxuICAgIGhlYWRsaW5lMTogJHN0eWxlcy1oZWFkbGluZTEsXG4gICAgaGVhZGxpbmUyOiAkc3R5bGVzLWhlYWRsaW5lMixcbiAgICBoZWFkbGluZTM6ICRzdHlsZXMtaGVhZGxpbmUzLFxuICAgIGhlYWRsaW5lNDogJHN0eWxlcy1oZWFkbGluZTQsXG4gICAgaGVhZGxpbmU1OiAkc3R5bGVzLWhlYWRsaW5lNSxcbiAgICBoZWFkbGluZTY6ICRzdHlsZXMtaGVhZGxpbmU2LFxuICAgIHN1YnRpdGxlMTogJHN0eWxlcy1zdWJ0aXRsZTEsXG4gICAgc3VidGl0bGUyOiAkc3R5bGVzLXN1YnRpdGxlMixcbiAgICBib2R5MTogJHN0eWxlcy1ib2R5MSxcbiAgICBib2R5MjogJHN0eWxlcy1ib2R5MixcbiAgICBjYXB0aW9uOiAkc3R5bGVzLWNhcHRpb24sXG4gICAgYnV0dG9uOiAkc3R5bGVzLWJ1dHRvbixcbiAgICBvdmVybGluZTogJHN0eWxlcy1vdmVybGluZSxcbiAgKVxuKSAhZGVmYXVsdDtcblxuLy8gQSBjb3B5IG9mIHRoZSBzdHlsZXMgTWFwIHRoYXQgaXMgdXNlZCB0byBkZXRlY3QgY29tcGlsZS10aW1lIGNoYW5nZXMgZm9yXG4vLyBBbmd1bGFyIHN1cHBvcnQuXG4kX3N0eWxlcy1jb3B5OiAkc3R5bGVzO1xuXG5AZnVuY3Rpb24gaXMtdHlwb2dyYXBoeS1zdHlsZSgkc3R5bGUpIHtcbiAgQHJldHVybiBtYXAuaGFzLWtleSgkc3R5bGVzLCAkc3R5bGUpO1xufVxuXG5AZnVuY3Rpb24gZ2V0LXR5cG9ncmFwaHktc3R5bGVzKCkge1xuICBAcmV0dXJuIG1hcC5rZXlzKCRzdHlsZXMpO1xufVxuXG5AbWl4aW4gY29yZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAubWRjLXR5cG9ncmFwaHkge1xuICAgIEBpbmNsdWRlIGJhc2UoJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgQGVhY2ggJHN0eWxlIGluIGdldC10eXBvZ3JhcGh5LXN0eWxlcygpIHtcbiAgICAubWRjLXR5cG9ncmFwaHktLSN7JHN0eWxlfSB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCRzdHlsZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYmFzZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXR5cG9ncmFwaHk6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCB0eXBvZ3JhcGh5KTtcblxuICBAaW5jbHVkZSBzbW9vdGgtZm9udCgkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtdHlwb2dyYXBoeSkge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGZvbnQtZmFtaWx5LCBmb250LWZhbWlseSk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJHN0eWxlLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpLCAkZXhjbHVkZS1wcm9wczogKCkpIHtcbiAgJGZlYXQtdHlwb2dyYXBoeTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHR5cG9ncmFwaHkpO1xuXG4gIEBpZiBub3QgaXMtdHlwb2dyYXBoeS1zdHlsZSgkc3R5bGUpIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIHN0eWxlIHNwZWNpZmllZCEgI3skc3R5bGV9IGRvZXNuJ3QgZXhpc3QuIENob29zZSBvbmUgb2YgI3tnZXQtdHlwb2dyYXBoeS1zdHlsZXMoKX1cIjtcbiAgfVxuXG4gIEBpbmNsdWRlIHNtb290aC1mb250KCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC10eXBvZ3JhcGh5KSB7XG4gICAgQGVhY2ggJGtleSBpbiBrZXlzLmdldC1rZXlzKCRzdHlsZSkge1xuICAgICAgLy8gPHN0eWxlPi08cHJvcGVydHk+OiBoZWFkbGluZTEtZm9udC1zaXplXG4gICAgICAvLyBTbGljZSB0aGUgc3RyaW5nIHBhc3QgdGhlIGZpcnN0IGtleSBzZXBhcmF0b3IgdG8gcmV0cmlldmUgdGhlXG4gICAgICAvLyBwcm9wZXJ0eSBuYW1lXG4gICAgICAkcHJvcGVydHk6IHN0cmluZy5zbGljZSgka2V5LCBzdHJpbmcuaW5kZXgoJGtleSwgJy0nKSArIDEpO1xuICAgICAgQGlmIGxpc3QuaW5kZXgoJGV4Y2x1ZGUtcHJvcHMsICRwcm9wZXJ0eSkgPT0gbnVsbCB7XG4gICAgICAgICRjdXJyZW50LWdsb2JhbC12YWx1ZTogbWFwLmdldCgkc3R5bGVzLCAkc3R5bGUsICRwcm9wZXJ0eSk7XG4gICAgICAgICRjb25maWd1cmVkLWdsb2JhbC12YWx1ZTogbWFwLmdldCgkX3N0eWxlcy1jb3B5LCAkc3R5bGUsICRwcm9wZXJ0eSk7XG4gICAgICAgIEBpZiAkY3VycmVudC1nbG9iYWwtdmFsdWUgIT0gJGNvbmZpZ3VyZWQtZ2xvYmFsLXZhbHVlIHtcbiAgICAgICAgICAvLyBBIGNvbXBpbGUgdGltZSBjaGFuZ2Ugd2FzIG1hZGUgdG8gJG1kYy10eXBvZ3JhcGh5LXN0eWxlcy4gVG9cbiAgICAgICAgICAvLyBzdXBwb3J0IEFuZ3VsYXIsIHVzZSB0aGlzIHZhbHVlIGluc3RlYWQgb2YgdGhlIGtleSdzIHZhbHVlLlxuICAgICAgICAgIEBpZiAkY3VycmVudC1nbG9iYWwtdmFsdWUge1xuICAgICAgICAgICAgLy8gT25seSBlbWl0IGlmIHRoZSBvdmVycmlkZGVuIHZhbHVlIGV4aXN0c1xuICAgICAgICAgICAgJGN1c3RvbS1wcm9wOiBrZXlzLmNyZWF0ZS1jdXN0b20tcHJvcGVydHkoJGtleSk7XG4gICAgICAgICAgICAkY3VzdG9tLXByb3A6IGN1c3RvbS1wcm9wZXJ0aWVzLnNldC1mYWxsYmFjayhcbiAgICAgICAgICAgICAgJGN1c3RvbS1wcm9wLFxuICAgICAgICAgICAgICAkY3VycmVudC1nbG9iYWwtdmFsdWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSgkcHJvcGVydHksICRjdXN0b20tcHJvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAvLyBPdGhlcndpc2UsIHVzZSB0aGUga2V5LCB3aGljaCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsXG4gICAgICAgICAgLy8gY29uZmlndXJlZCBnbG9iYWwgdmFsdWUuXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoJHByb3BlcnR5LCAka2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQXBwbGllcyBhbnRpYWxpYXNpbmcgdmlhIGZvbnQtc21vb3RoaW5nIHRvIHRleHQuXG5AbWl4aW4gc21vb3RoLWZvbnQoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC10eXBvZ3JhcGh5OiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgdHlwb2dyYXBoeSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC10eXBvZ3JhcGh5KSB7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxufVxuXG4vLyBFbGVtZW50IG11c3QgYmUgYGRpc3BsYXk6IGJsb2NrYCBvciBgZGlzcGxheTogaW5saW5lLWJsb2NrYCBmb3IgdGhpcyB0byB3b3JrLlxuQG1peGluIG92ZXJmbG93LWVsbGlwc2lzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuXG4vLy8gU2V0cyBhIGNvbnRhaW5lcidzIGJhc2VsaW5lIHRoYXQgdGV4dCBjb250ZW50IHdpbGwgYWxpZ24gdG8uXG4vLy9cbi8vLyBJZiB0aGUgYCRkaXNwbGF5YCBpcyBzZXQgdG8gYSBmbGV4Ym94IGRpc3BsYXksIG9ubHkgYCR0b3BgIGJhc2VsaW5lIG1heSBiZVxuLy8vIHNldC4gQSBzZXBhcmF0ZSBlbGVtZW50IG11c3QgYmUgYWRkZWQgYXMgYSBjaGlsZCBvZiB0aGUgY29udGFpbmVyIHdpdGggYVxuLy8vIGAkYm90dG9tYCBiYXNlbGluZS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIC0gdGhlIGRpc3RhbmNlIGZyb20gdGhlIHRvcCBvZiB0aGUgY29udGFpbmVyIHRvIHRoZVxuLy8vICAgICB0ZXh0J3MgYmFzZWxpbmUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gLSB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgdGV4dCdzIGJhc2VsaW5lIHRvIHRoZVxuLy8vICAgICBib3R0b20gb2YgdGhlIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpc3BsYXkgLSB0aGUgZGlzcGxheSB0eXBlIG9mIHRoZSBjb250YWluZXIuIE1heSBiZSBgZmxleGAsXG4vLy8gICAgIGBpbmxpbmUtZmxleGAsIGBibG9ja2AsIG9yIGBpbmxpbmUtYmxvY2tgLlxuQG1peGluIGJhc2VsaW5lKFxuICAkdG9wOiAwLFxuICAkYm90dG9tOiAwLFxuICAkZGlzcGxheTogYmxvY2ssXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkdmFsaWREaXNwbGF5VHlwZXM6IChmbGV4LCBpbmxpbmUtZmxleCwgYmxvY2ssIGlubGluZS1ibG9jayk7XG5cbiAgQGlmIGxpc3QuaW5kZXgoJHZhbGlkRGlzcGxheVR5cGVzLCAkZGlzcGxheSkgPT0gbnVsbCB7XG4gICAgQGVycm9yIFwibWRjLXR5cG9ncmFwaHk6IGludmFsaWQgZGlzcGxheSBzcGVjaWZpZWQhICN7JGRpc3BsYXl9IG11c3QgYmUgb25lIG9mICN7JHZhbGlkRGlzcGxheVR5cGVzfVwiO1xuICB9XG5cbiAgJGlzRmxleGJveDogJGRpc3BsYXkgPT0gJ2ZsZXgnIG9yICRkaXNwbGF5ID09ICdpbmxpbmUtZmxleCc7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBkaXNwbGF5OiAkZGlzcGxheTtcblxuICAgIEBpZiAkaXNGbGV4Ym94IHtcbiAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHRvcCA+IDAge1xuICAgIEBpbmNsdWRlIGJhc2VsaW5lLXRvcCgkdG9wLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICBAaWYgJGJvdHRvbSA+IDAge1xuICAgIEBpZiAkaXNGbGV4Ym94IHtcbiAgICAgIEBlcnJvciBcIm1kYy10eXBvZ3JhcGh5OiBpbnZhbGlkIGJhc2VsaW5lIHdpdGggZGlzcGxheSB0eXBlLiAjeyRkaXNwbGF5fSBjYW5ub3Qgc3BlY2lmaXkgJGJvdHRvbS4gQWRkIGEgc2VwYXJhdGUgY2hpbGQgZWxlbWVudCB3aXRoIGl0cyBvd24gJGJvdHRvbS5cIjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBiYXNlbGluZS1ib3R0b20oJGJvdHRvbSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBiYXNlbGluZSBvZiBmbG93IHRleHQgY29udGVudC5cbi8vL1xuLy8vIFNlcGFyYXRlIGAkdG9wYCBhbmQgYCRib3R0b21gIGJhc2VsaW5lcyBtYXkgYmUgc3BlY2lmaWVkLiBZb3Ugc2hvdWxkIGVuc3VyZVxuLy8vIHRoYXQgdGhlIGAkdG9wYCBiYXNlbGluZSBtYXRjaGVzIHRoZSBwcmV2aW91cyB0ZXh0IGNvbnRlbnQncyAkYm90dG9tXG4vLy8gYmFzZWxpbmUgdG8gZW5zdXJlIHRleHQgaXMgcG9zaXRpb25lZCBhcHByb3ByaWF0ZWx5LlxuLy8vXG4vLy8gU2VlIGdvL2Nzcy1iYXNlbGluZSBmb3IgcmVmZXJlbmNlIG9uIGhvdyB0aGlzIG1peGluIHdvcmtzLlxuLy8vXG4vLy8gVGhpcyBpcyBpbnRlbmRlZCBmb3IgdGV4dCBmbG93IGNvbnRlbnQgb25seSAoZS5nLiBgPGgxPmAsIGA8cD5gLCBgPHNwYW4+YCxcbi8vLyBvciBgPGRpdj5gIHdpdGggb25seSB0ZXh0IGNvbnRlbnQpLiBVc2UgYGJhc2VsaW5lKClgIHRvIHNldCB0aGUgYmFzZWxpbmUgb2Zcbi8vLyBjb250YWluZXJzIHRoYXQgYXJlIGZsZXhib3ggb3IgaGF2ZSBub24tZmxvdyBjb250ZW50IGNoaWxkcmVuLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgLSB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgdG9wIG9mIHRoZSBjb250YWluZXIgdG8gdGhlXG4vLy8gICAgIHRleHQncyBiYXNlbGluZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJvdHRvbSAtIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSB0ZXh0J3MgYmFzZWxpbmUgdG8gdGhlXG4vLy8gICAgIGJvdHRvbSBvZiB0aGUgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGxpbmVIZWlnaHQgLSB0aGUgbGluZS1oZWlnaHQgdG8gdXNlIGZvciB0aGUgdGV4dC4gVGhpc1xuLy8vICAgICBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiBiYXNlbGluZXMgb2YgbXVsdGlwbGUgbGluZXMgb2YgdGV4dC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpc3BsYXkgLSB0aGUgZGlzcGxheSB0eXBlIG9mIHRoZSBjb250YWluZXIuIE1heSBiZSBgYmxvY2tgXG4vLy8gICAgIG9yIGBpbmxpbmUtYmxvY2tgLlxuQG1peGluIHRleHQtYmFzZWxpbmUoXG4gICR0b3A6IDAsXG4gICRib3R0b206IDAsXG4gICRkaXNwbGF5OiBibG9jayxcbiAgJGxpbmVIZWlnaHQ6IG5vcm1hbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICR2YWxpZERpc3BsYXlUeXBlczogKGJsb2NrLCBpbmxpbmUtYmxvY2spO1xuXG4gIEBpZiBsaXN0LmluZGV4KCR2YWxpZERpc3BsYXlUeXBlcywgJGRpc3BsYXkpID09IG51bGwge1xuICAgIEBlcnJvciBcIm1kYy10eXBvZ3JhcGh5OiBpbnZhbGlkIGRpc3BsYXkgc3BlY2lmaWVkISAjeyRkaXNwbGF5fSBtdXN0IGJlIG9uZSBvZiAjeyR2YWxpZERpc3BsYXlUeXBlc31cIjtcbiAgfVxuXG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgYmFzZWxpbmUoXG4gICAgJGRpc3BsYXk6ICRkaXNwbGF5LFxuICAgICR0b3A6ICR0b3AsXG4gICAgJGJvdHRvbTogJGJvdHRvbSxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpZiAkdG9wID4gMCB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgLyogQGFsdGVybmF0ZSAqL1xuICAgICAgbGluZS1oZWlnaHQ6ICN7JGxpbmVIZWlnaHR9O1xuICAgIH1cblxuICAgIEBpZiAkYm90dG9tID4gMCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAtMSAqICRib3R0b207XG4gICAgfVxuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgYmFzZWxpbmUgc3RydXQgZnJvbSB0aGUgdG9wIG9mIGEgY29udGFpbmVyLiBUaGlzIG1peGluIGlzIGZvclxuLy8vIGFkdmFuY2VkIHVzZXJzLCBwcmVmZXIgYGJhc2VsaW5lKClgLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkaXN0YW5jZSAtIFRoZSBkaXN0YW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlIGNvbnRhaW5lciB0b1xuLy8vICAgICB0aGUgdGV4dCdzIGJhc2VsaW5lLlxuQG1peGluIGJhc2VsaW5lLXRvcCgkZGlzdGFuY2UsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAmOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBiYXNlbGluZS1zdHJ1dF8oJGRpc3RhbmNlKTtcblxuICAgICAgdmVydGljYWwtYWxpZ246IDA7XG4gICAgfVxuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgYmFzZWxpbmUgc3RydXQgZnJvbSB0aGUgYmFzZWxpbmUgdG8gdGhlIGJvdHRvbSBvZiBhIGNvbnRhaW5lci5cbi8vLyBUaGlzIG1peGluIGlzIGZvciBhZHZhbmNlZCB1c2VycywgcHJlZmVyIGBiYXNlbGluZSgpYC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGlzdGFuY2UgLSBUaGUgZGlzdGFuY2UgZnJvbSB0aGUgdGV4dCdzIGJhc2VsaW5lIHRvIHRoZVxuLy8vICAgICBib3R0b20gb2YgdGhlIGNvbnRhaW5lci5cbkBtaXhpbiBiYXNlbGluZS1ib3R0b20oJGRpc3RhbmNlLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgJjo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBiYXNlbGluZS1zdHJ1dF8oJGRpc3RhbmNlKTtcblxuICAgICAgdmVydGljYWwtYWxpZ246IC0xICogJGRpc3RhbmNlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBhbiBpbnZpc2libGUsIHplcm8td2lkdGggcHJlZml4IHRvIGEgY29udGFpbmVyJ3MgdGV4dC5cbi8vLyBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYmFzZWxpbmUgaXMgYWx3YXlzIHdoZXJlIHRoZSB0ZXh0IHdvdWxkIGJlLCBpbnN0ZWFkXG4vLy8gb2YgZGVmYXVsdGluZyB0byB0aGUgY29udGFpbmVyIGJvdHRvbSB3aGVuIHRleHQgaXMgZW1wdHkuIERvIG5vdCB1c2UgdGhpc1xuLy8vIG1peGluIGlmIHRoZSBgYmFzZWxpbmVgIG1peGluIGlzIGFscmVhZHkgYXBwbGllZC5cbkBtaXhpbiB6ZXJvLXdpZHRoLXByZWZpeCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgY29udGVudDogJ1xcMjAwYic7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBiYXNlbGluZS1zdHJ1dF8oJGRpc3RhbmNlKSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogJGRpc3RhbmNlO1xuICBjb250ZW50OiAnJztcbn1cblxuQGZ1bmN0aW9uIGdldC1mb250KCR0eXBvZ3JhcGh5KSB7XG4gIEByZXR1cm4gbWFwLmdldCgkc3R5bGVzLCAkdHlwb2dyYXBoeSwgZm9udC1mYW1pbHkpO1xufVxuXG5AZnVuY3Rpb24gZ2V0LWxpbmUtaGVpZ2h0KCR0eXBvZ3JhcGh5KSB7XG4gIEByZXR1cm4gbWFwLmdldCgkc3R5bGVzLCAkdHlwb2dyYXBoeSwgbGluZS1oZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gZ2V0LXNpemUoJHR5cG9ncmFwaHkpIHtcbiAgQHJldHVybiBtYXAuZ2V0KCRzdHlsZXMsICR0eXBvZ3JhcGh5LCBmb250LXNpemUpO1xufVxuXG5AZnVuY3Rpb24gZ2V0LXdlaWdodCgkdHlwb2dyYXBoeSkge1xuICBAcmV0dXJuIG1hcC5nZXQoJHN0eWxlcywgJHR5cG9ncmFwaHksIGZvbnQtd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGdldC10cmFja2luZygkdHlwb2dyYXBoeSkge1xuICBAcmV0dXJuIG1hcC5nZXQoJHN0eWxlcywgJHR5cG9ncmFwaHksIGxldHRlci1zcGFjaW5nKTtcbn1cblxuJF90eXBvZ3JhcGh5LXRoZW1lOiAoXG4gIGZvbnQ6IG51bGwsXG4gIGxpbmUtaGVpZ2h0OiBudWxsLFxuICBzaXplOiBudWxsLFxuICB3ZWlnaHQ6IG51bGwsXG4gIHRyYWNraW5nOiBudWxsLFxuKTtcblxuQG1peGluIHRoZW1lLXN0eWxlcygkdGhlbWUpIHtcbiAgQGluY2x1ZGUgdGhlbWUudmFsaWRhdGUtdGhlbWUta2V5cygkX3R5cG9ncmFwaHktdGhlbWUsICR0aGVtZSk7XG5cbiAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoZm9udC1mYW1pbHksIG1hcC5nZXQoJHRoZW1lLCBmb250KSk7XG4gIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGxpbmUtaGVpZ2h0LCBtYXAuZ2V0KCR0aGVtZSwgbGluZS1oZWlnaHQpKTtcbiAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoZm9udC1zaXplLCBtYXAuZ2V0KCR0aGVtZSwgc2l6ZSkpO1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShmb250LXdlaWdodCwgbWFwLmdldCgkdGhlbWUsIHdlaWdodCkpO1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShsZXR0ZXItc3BhY2luZywgbWFwLmdldCgkdGhlbWUsIHRyYWNraW5nKSk7XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjEgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvdG9rZW5zL3Jlc29sdmVycyc7XG5AdXNlICcuL2J1dHRvbi1yaXBwbGUnO1xuQHVzZSAnLi9idXR0b24tc2hhcmVkLXRoZW1lJztcbkB1c2UgJy4vYnV0dG9uLXRleHQtdGhlbWUnO1xuXG5AbWl4aW4gc3R5bGVzKFxuICAkdGhlbWU6IGJ1dHRvbi10ZXh0LXRoZW1lLiRsaWdodC10aGVtZSxcbiAgJHJlc29sdmVyOiByZXNvbHZlcnMuJG1hdGVyaWFsLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgQGluY2x1ZGUgYnV0dG9uLWJhc2Uuc3RhdGljLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIHN0YXRpYy1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICAubWRjLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLXRleHQtdGhlbWUudGhlbWUtc3R5bGVzKCR0aGVtZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgc3RhdGljLXN0eWxlcy13aXRob3V0LXJpcHBsZSgkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGJ1dHRvbi1yaXBwbGUuc3RhdGljLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzLXdpdGhvdXQtcmlwcGxlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLm1kYy1idXR0b24ge1xuICAgIC8vIFRPRE8oYi8xNzk0MDI2NzcpOiBtb3ZlIHRoaXMgaW50byB0aGVtZSBjb25maWdcbiAgICBAaW5jbHVkZSBidXR0b24tc2hhcmVkLXRoZW1lLmhvcml6b250YWwtcGFkZGluZyhcbiAgICAgIGJ1dHRvbi1zaGFyZWQtdGhlbWUuJGhvcml6b250YWwtcGFkZGluZyxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDIxIEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ0BtYXRlcmlhbC9kZW5zaXR5L2Z1bmN0aW9ucycgYXMgZGVuc2l0eS1mdW5jdGlvbnM7XG5AdXNlICdAbWF0ZXJpYWwvZGVuc2l0eS92YXJpYWJsZXMnIGFzIGRlbnNpdHktdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL2RvbS9taXhpbnMnIGFzIGRvbS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvZWxldmF0aW9uL2VsZXZhdGlvbi10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL2ZvY3VzLXJpbmcvZm9jdXMtcmluZyc7XG5AdXNlICdAbWF0ZXJpYWwvcmlwcGxlL3JpcHBsZS10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvc2hhcGUvbWl4aW5zJyBhcyBzaGFwZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3N0YXRlJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUtY29sb3InO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuL2J1dHRvbi1yaXBwbGUnO1xuXG4kaGVpZ2h0OiAzNnB4ICFkZWZhdWx0O1xuJGhvcml6b250YWwtcGFkZGluZzogOHB4ICFkZWZhdWx0O1xuJGNvbnRhaW5lZC1ob3Jpem9udGFsLXBhZGRpbmc6IDE2cHggIWRlZmF1bHQ7XG4vLyBGb3IgYSBjb250YWluZWQgYnV0dG9uIHdpdGggYW4gaWNvbiwgdGhlIHBhZGRpbmcgb24gdGhlIHNpZGUgb2YgdGhlXG4vLyBidXR0b24gd2l0aCB0aGUgaWNvbi5cbiRjb250YWluZWQtaG9yaXpvbnRhbC1wYWRkaW5nLWljb246IDEycHggIWRlZmF1bHQ7XG5cbiRtaW5pbXVtLWhlaWdodDogMjRweCAhZGVmYXVsdDtcbiRtYXhpbXVtLWhlaWdodDogJGhlaWdodCAhZGVmYXVsdDtcbiRkZW5zaXR5LXNjYWxlOiBkZW5zaXR5LXZhcmlhYmxlcy4kZGVmYXVsdC1zY2FsZSAhZGVmYXVsdDtcbiRkZW5zaXR5LWNvbmZpZzogKFxuICBoZWlnaHQ6IChcbiAgICBkZWZhdWx0OiAkaGVpZ2h0LFxuICAgIG1heGltdW06ICRtYXhpbXVtLWhlaWdodCxcbiAgICBtaW5pbXVtOiAkbWluaW11bS1oZWlnaHQsXG4gICksXG4pICFkZWZhdWx0O1xuXG4kc2hhcGUtcmFkaXVzOiBzbWFsbCAhZGVmYXVsdDtcblxuJGRpc2FibGVkLWluay1jb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjM4KSAhZGVmYXVsdDtcbiRkaXNhYmxlZC1jb250YWluZXItY29sb3I6IHJnYmEoXG4gIHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIDAuMTJcbikgIWRlZmF1bHQ7XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUsICRyZXNvbHZlciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBfbGFiZWwtdGV4dC10eXBvZ3JhcGh5KFxuICAgIChcbiAgICAgIGZhbWlseTogbWFwLmdldCgkdGhlbWUsIGxhYmVsLXRleHQtZm9udCksXG4gICAgICBzaXplOiBtYXAuZ2V0KCR0aGVtZSwgbGFiZWwtdGV4dC1zaXplKSxcbiAgICAgIHRyYWNraW5nOiBtYXAuZ2V0KCR0aGVtZSwgbGFiZWwtdGV4dC10cmFja2luZyksXG4gICAgICB3ZWlnaHQ6IG1hcC5nZXQoJHRoZW1lLCBsYWJlbC10ZXh0LXdlaWdodCksXG4gICAgICB0cmFuc2Zvcm06IG1hcC5nZXQoJHRoZW1lLCBsYWJlbC10ZXh0LXRyYW5zZm9ybSksXG4gICAgKSxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuXG4gIEBpbmNsdWRlIGNvbnRhaW5lci1maWxsLWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCBjb250YWluZXItY29sb3IpLFxuICAgICAgZGlzYWJsZWQ6IG1hcC5nZXQoJHRoZW1lLCBkaXNhYmxlZC1jb250YWluZXItY29sb3IpLFxuICAgICksXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICBAaW5jbHVkZSBpbmstY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIGxhYmVsLXRleHQtY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCBob3Zlci1sYWJlbC10ZXh0LWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgZm9jdXMtbGFiZWwtdGV4dC1jb2xvciksXG4gICAgICBwcmVzc2VkOiBtYXAuZ2V0KCR0aGVtZSwgcHJlc3NlZC1sYWJlbC10ZXh0LWNvbG9yKSxcbiAgICAgIGRpc2FibGVkOiBtYXAuZ2V0KCR0aGVtZSwgZGlzYWJsZWQtbGFiZWwtdGV4dC1jb2xvciksXG4gICAgKSxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuXG4gIEBpbmNsdWRlIGljb24tY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHdpdGgtaWNvbi1pY29uLWNvbG9yKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgd2l0aC1pY29uLWhvdmVyLWljb24tY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB3aXRoLWljb24tZm9jdXMtaWNvbi1jb2xvciksXG4gICAgICBwcmVzc2VkOiBtYXAuZ2V0KCR0aGVtZSwgd2l0aC1pY29uLXByZXNzZWQtaWNvbi1jb2xvciksXG4gICAgICBkaXNhYmxlZDogbWFwLmdldCgkdGhlbWUsIHdpdGgtaWNvbi1kaXNhYmxlZC1pY29uLWNvbG9yKSxcbiAgICApLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgJGljb24tc2l6ZTogbWFwLmdldCgkdGhlbWUsIHdpdGgtaWNvbi1pY29uLXNpemUpO1xuICBAaW5jbHVkZSBfaWNvbi1zaXplKCRpY29uLXNpemUsICRxdWVyeTogJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBfc3RhdGVzLWNvbG9ycyhcbiAgICAoXG4gICAgICBmb2N1czogbWFwLmdldCgkdGhlbWUsIGZvY3VzLXN0YXRlLWxheWVyLWNvbG9yKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgaG92ZXItc3RhdGUtbGF5ZXItY29sb3IpLFxuICAgICAgcHJlc3NlZDogbWFwLmdldCgkdGhlbWUsIHByZXNzZWQtc3RhdGUtbGF5ZXItY29sb3IpLFxuICAgICksXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICAkaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eTogbWFwLmdldCgkdGhlbWUsIGhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHkpO1xuICAkZm9jdXMtc3RhdGUtbGF5ZXItb3BhY2l0eTogbWFwLmdldCgkdGhlbWUsIGZvY3VzLXN0YXRlLWxheWVyLW9wYWNpdHkpO1xuICAkcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5OiBtYXAuZ2V0KCR0aGVtZSwgcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5KTtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1vcGFjaXRpZXMoXG4gICAgJG9wYWNpdHktbWFwOiAoXG4gICAgICBmb2N1czogJGZvY3VzLXN0YXRlLWxheWVyLW9wYWNpdHksXG4gICAgICBob3ZlcjogJGhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHksXG4gICAgICBwcmVzczogJHByZXNzZWQtc3RhdGUtbGF5ZXItb3BhY2l0eSxcbiAgICApLFxuICAgICRyaXBwbGUtdGFyZ2V0OiBidXR0b24tcmlwcGxlLiRyaXBwbGUtdGFyZ2V0LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgJGNvbnRhaW5lci1oZWlnaHQ6IG1hcC5nZXQoJHRoZW1lLCBjb250YWluZXItaGVpZ2h0KTtcbiAgQGluY2x1ZGUgaGVpZ2h0KCRjb250YWluZXItaGVpZ2h0LCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgJGNvbnRhaW5lci1oZWlnaHQtdmFsdWU6IGlmKFxuICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRjb250YWluZXItaGVpZ2h0KSxcbiAgICBjdXN0b20tcHJvcGVydGllcy5nZXQtZmFsbGJhY2soJGNvbnRhaW5lci1oZWlnaHQpLFxuICAgICRjb250YWluZXItaGVpZ2h0XG4gICk7XG4gIEBpZiAkY29udGFpbmVyLWhlaWdodC12YWx1ZSAhPSBudWxsIGFuZCAkY29udGFpbmVyLWhlaWdodC12YWx1ZSAhPSAkaGVpZ2h0IHtcbiAgICBAaW5jbHVkZSBfdG91Y2gtdGFyZ2V0LXJlc2V0KCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gICRzaGFwZTogbWFwLmdldCgkdGhlbWUsIGNvbnRhaW5lci1zaGFwZSk7XG4gIEBpZiAkc2hhcGUge1xuICAgICRjb250YWluZXItaGVpZ2h0OiBpZihcbiAgICAgICRjb250YWluZXItaGVpZ2h0ICE9IG51bGwsXG4gICAgICAkY29udGFpbmVyLWhlaWdodCxcbiAgICAgICRoZWlnaHRcbiAgICApO1xuICAgIEBpbmNsdWRlIF9zaGFwZS1yYWRpdXMtd2l0aC1oZWlnaHQoXG4gICAgICAkc2hhcGUsXG4gICAgICAkaGVpZ2h0OiAkY29udGFpbmVyLWhlaWdodCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIEBpbmNsdWRlIF9lbGV2YXRpb24oXG4gICAgJHJlc29sdmVyLFxuICAgICRlbGV2YXRpb24tbWFwOiAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgY29udGFpbmVyLWVsZXZhdGlvbiksXG4gICAgICBkaXNhYmxlZDogbWFwLmdldCgkdGhlbWUsIGRpc2FibGVkLWNvbnRhaW5lci1lbGV2YXRpb24pLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCBmb2N1cy1jb250YWluZXItZWxldmF0aW9uKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgaG92ZXItY29udGFpbmVyLWVsZXZhdGlvbiksXG4gICAgICBwcmVzc2VkOiBtYXAuZ2V0KCR0aGVtZSwgcHJlc3NlZC1jb250YWluZXItZWxldmF0aW9uKVxuICAgICksXG4gICAgJHNoYWRvdy1jb2xvcjogbWFwLmdldCgkdGhlbWUsIGNvbnRhaW5lci1zaGFkb3ctY29sb3IpLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbkBmdW5jdGlvbiByZXNvbHZlLXRoZW1lLWVsZXZhdGlvbi1rZXlzKCR0aGVtZSwgJHJlc29sdmVyKSB7XG4gICRlbGV2YXRpb24tcmVzb2x2ZXI6IG1hcC5nZXQoJHJlc29sdmVyLCBlbGV2YXRpb24pO1xuICAkc2hhZG93LWNvbG9yOiBtYXAuZ2V0KCR0aGVtZSwgY29udGFpbmVyLXNoYWRvdy1jb2xvcik7XG4gIEBpZiAkZWxldmF0aW9uLXJlc29sdmVyID09IG51bGwgb3IgJHNoYWRvdy1jb2xvciA9PSBudWxsIHtcbiAgICBAcmV0dXJuICR0aGVtZTtcbiAgfVxuXG4gICRlbGV2YXRpb24ta2V5czogKFxuICAgIGNvbnRhaW5lci1lbGV2YXRpb24sXG4gICAgaG92ZXItY29udGFpbmVyLWVsZXZhdGlvbixcbiAgICBmb2N1cy1jb250YWluZXItZWxldmF0aW9uLFxuICAgIHByZXNzZWQtY29udGFpbmVyLWVsZXZhdGlvbixcbiAgICBkaXNhYmxlZC1jb250YWluZXItZWxldmF0aW9uXG4gICk7XG5cbiAgQGVhY2ggJGtleSBpbiAkZWxldmF0aW9uLWtleXMge1xuICAgICRlbGV2YXRpb246IG1hcC5nZXQoJHRoZW1lLCAka2V5KTtcbiAgICBAaWYgJGVsZXZhdGlvbiAhPSBudWxsIHtcbiAgICAgICRyZXNvbHZlZC12YWx1ZTogbWV0YS5jYWxsKFxuICAgICAgICAkcmVzb2x2ZXIsXG4gICAgICAgICRlbGV2YXRpb246ICRlbGV2YXRpb24sXG4gICAgICAgICRzaGFkb3ctY29sb3I6ICRzaGFkb3ctY29sb3JcbiAgICAgICk7XG4gICAgICAvLyBVcGRhdGUgdGhlIGtleSB3aXRoIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgICR0aGVtZTogbWFwLnNldCgkdGhlbWUsICRrZXksICRyZXNvbHZlZC12YWx1ZSk7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHRoZW1lO1xufVxuXG4vLy9cbi8vLyBTZXRzIHJpcHBsZSBjb2xvciBmb3IgYnV0dG9uLlxuLy8vXG5AbWl4aW4gcmlwcGxlLXN0YXRlcyhcbiAgJGNvbG9yLFxuICAkb3BhY2l0eS1tYXA6IG51bGwsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzKFxuICAgICRjb2xvcjogJGNvbG9yLFxuICAgICRvcGFjaXR5LW1hcDogJG9wYWNpdHktbWFwLFxuICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICRyaXBwbGUtdGFyZ2V0OiBidXR0b24tcmlwcGxlLiRyaXBwbGUtdGFyZ2V0XG4gICk7XG59XG5cbkBtaXhpbiBmaWxsZWQtYWNjZXNzaWJsZShcbiAgJGNvbnRhaW5lci1maWxsLWNvbG9yLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZpbGwtdG9uZTogdGhlbWUtY29sb3IudG9uZSgkY29udGFpbmVyLWZpbGwtY29sb3IpO1xuXG4gIEBpbmNsdWRlIGNvbnRhaW5lci1maWxsLWNvbG9yKCRjb250YWluZXItZmlsbC1jb2xvciwgJHF1ZXJ5KTtcblxuICBAaWYgKCRmaWxsLXRvbmUgPT0gJ2RhcmsnKSB7XG4gICAgQGluY2x1ZGUgaW5rLWNvbG9yKHRleHQtcHJpbWFyeS1vbi1kYXJrLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHJpcHBsZS1zdGF0ZXMoJGNvbG9yOiB0ZXh0LXByaW1hcnktb24tZGFyaywgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBpbmstY29sb3IodGV4dC1wcmltYXJ5LW9uLWxpZ2h0LCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHJpcHBsZS1zdGF0ZXMoJGNvbG9yOiB0ZXh0LXByaW1hcnktb24tbGlnaHQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBjb250YWluZXIgZmlsbCBjb2xvciB0byB0aGUgZ2l2ZW4gY29sb3IgZm9yIGFuIGVuYWJsZWQgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J8bWFwfSAkY29sb3Itb3ItbWFwIC0gVGhlIGRlc2lyZWQgY29udGFpbmVyIGZpbGwgY29sb3IsXG4vLy8gICAgIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBmbGF0IHZhbHVlIG9yIGEgbWFwIG9mIGNvbG9ycyB3aXRoIHN0YXRlc1xuLy8vICAgICB7ZGVmYXVsdCwgaG92ZXIsIGZvY3VzZWQsIHByZXNzZWQsIGRpc2FibGVkfSBhcyBrZXlzLlxuLy8vXG5AbWl4aW4gY29udGFpbmVyLWZpbGwtY29sb3IoJGNvbG9yLW9yLW1hcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAvLyA6bm90KDpkaXNhYmxlZCkgaXMgdXNlZCB0byBzdXBwb3J0IGxpbmsgc3R5bGVkIGFzIGJ1dHRvblxuICAvLyBhcyBsaW5rIGRvZXMgbm90IHN1cHBvcnQgOmVuYWJsZWQgc3R5bGVcbiAgJjpub3QoOmRpc2FibGVkKSB7XG4gICAgQGluY2x1ZGUgX2NvbnRhaW5lci1maWxsLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIF9jb250YWluZXItZmlsbC1jb2xvcihcbiAgICAgICAgc3RhdGUuZ2V0LWhvdmVyLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuZm9jdXMoKSB7XG4gICAgICBAaW5jbHVkZSBfY29udGFpbmVyLWZpbGwtY29sb3IoXG4gICAgICAgIHN0YXRlLmdldC1mb2N1cy1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBfY29udGFpbmVyLWZpbGwtY29sb3IoXG4gICAgICAgIHN0YXRlLmdldC1wcmVzc2VkLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBfY29udGFpbmVyLWZpbGwtY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgY29udGFpbmVyIGZpbGwgY29sb3IgdG8gdGhlIGdpdmVuIGNvbG9yIGZvciBhIGRpc2FibGVkIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBjb250YWluZXIgZmlsbCBjb2xvci5cbi8vLyBAZGVwcmVjYXRlZCAtIGNhbGwgYGNvbnRhaW5lci1maWxsLWNvbG9yYCBpbnN0ZWFkIHdpdGggYGRpc2FibGVkYCBhcyBhIG1hcFxuLy8vICAgICBrZXkuXG4vLy9cbkBtaXhpbiBkaXNhYmxlZC1jb250YWluZXItZmlsbC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgY29udGFpbmVyLWZpbGwtY29sb3IoXG4gICAgKFxuICAgICAgZGlzYWJsZWQ6ICRjb2xvcixcbiAgICApLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGljb24gY29sb3IgdG8gdGhlIGdpdmVuIGNvbG9yIGZvciBhbiBlbmFibGVkIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3Itb3ItbWFwIC0gVGhlIGRlc2lyZWQgaWNvbiBjb2xvciwgc3BlY2lmaWVkIGVpdGhlclxuLy8vICAgICBhcyBhIGZsYXQgdmFsdWUgb3IgYSBtYXAgb2YgY29sb3JzIHdpdGggc3RhdGVzXG4vLy8gICAgIHtkZWZhdWx0LCBob3ZlciwgZm9jdXNlZCwgcHJlc3NlZCwgZGlzYWJsZWR9IGFzIGtleXMuXG4vLy9cbkBtaXhpbiBpY29uLWNvbG9yKCRjb2xvci1vci1tYXAsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJjpub3QoOmRpc2FibGVkKSB7XG4gICAgQGluY2x1ZGUgX2ljb24tY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgQGluY2x1ZGUgX2ljb24tY29sb3IoXG4gICAgICAgIHN0YXRlLmdldC1ob3Zlci1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLmZvY3VzKCkge1xuICAgICAgQGluY2x1ZGUgX2ljb24tY29sb3IoXG4gICAgICAgIHN0YXRlLmdldC1mb2N1cy1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBfaWNvbi1jb2xvcihcbiAgICAgICAgc3RhdGUuZ2V0LXByZXNzZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIEBpbmNsdWRlIF9pY29uLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRpc2FibGVkLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGljb24gY29sb3IgdG8gdGhlIGdpdmVuIGNvbG9yIGZvciBhIGRpc2FibGVkIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBpY29uIGNvbG9yLlxuLy8vIEBkZXByZWNhdGVkIC0gY2FsbCBgaWNvbi1jb2xvcmAgaW5zdGVhZCB3aXRoIGBkaXNhYmxlZGAgYXMgYSBtYXAga2V5LlxuLy8vXG5AbWl4aW4gZGlzYWJsZWQtaWNvbi1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgaWNvbi1jb2xvcihcbiAgICAoXG4gICAgICBkaXNhYmxlZDogJGNvbG9yLFxuICAgICksXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgaW5rIGNvbG9yIHRvIHRoZSBnaXZlbiBjb2xvciBmb3IgYW4gZW5hYmxlZCBidXR0b24sXG4vLy8gYW5kIHNldHMgdGhlIGljb24gY29sb3IgdG8gdGhlIGdpdmVuIGNvbG9yIHVubGVzcyBgbWRjLWJ1dHRvbi1pY29uLWNvbG9yYFxuLy8vIGlzIGFsc28gdXNlZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3Itb3ItbWFwIC0gVGhlIGRlc2lyZWQgaW5rIGNvbG9yLCBzcGVjaWZpZWQgZWl0aGVyXG4vLy8gICAgIGFzIGEgZmxhdCB2YWx1ZSBvciBhIG1hcCBvZiBjb2xvcnMgd2l0aCBzdGF0ZXNcbi8vLyAgICAge2RlZmF1bHQsIGhvdmVyLCBmb2N1c2VkLCBwcmVzc2VkLCBkaXNhYmxlZH0gYXMga2V5cy5cbi8vL1xuQG1peGluIGluay1jb2xvcigkY29sb3Itb3ItbWFwLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICY6bm90KDpkaXNhYmxlZCkge1xuICAgIEBpbmNsdWRlIF9pbmstY29sb3Ioc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJGNvbG9yLW9yLW1hcCksICRxdWVyeTogJHF1ZXJ5KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgQGluY2x1ZGUgX2luay1jb2xvcihzdGF0ZS5nZXQtaG92ZXItc3RhdGUoJGNvbG9yLW9yLW1hcCksICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuZm9jdXMoKSB7XG4gICAgICBAaW5jbHVkZSBfaW5rLWNvbG9yKHN0YXRlLmdldC1mb2N1cy1zdGF0ZSgkY29sb3Itb3ItbWFwKSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5hY3RpdmUge1xuICAgICAgQGluY2x1ZGUgX2luay1jb2xvcihcbiAgICAgICAgc3RhdGUuZ2V0LXByZXNzZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIEBpbmNsdWRlIF9pbmstY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgaW5rIGNvbG9yIHRvIHRoZSBnaXZlbiBjb2xvciBmb3IgYSBkaXNhYmxlZCBidXR0b24sXG4vLy8gYW5kIHNldHMgdGhlIGljb24gY29sb3IgdG8gdGhlIGdpdmVuIGNvbG9yIHVubGVzcyBgbWRjLWJ1dHRvbi1pY29uLWNvbG9yYFxuLy8vIGlzIGFsc28gdXNlZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBpbmsgY29sb3IuXG4vLy8gQGRlcHJlY2F0ZWQgLSBjYWxsIGBpbmstY29sb3JgIGluc3RlYWQgd2l0aCBgZGlzYWJsZWRgIGFzIGEgbWFwIGtleS5cbi8vL1xuQG1peGluIGRpc2FibGVkLWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgaW5rLWNvbG9yKFxuICAgIChcbiAgICAgIGRpc2FibGVkOiAkY29sb3IsXG4gICAgKSxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xufVxuXG4vLy9cbi8vLyBTZXRzIGRlbnNpdHkgc2NhbGUgZm9yIGJ1dHRvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIHwgU3RyaW5nfSAkZGVuc2l0eS1zY2FsZSAtIERlbnNpdHkgc2NhbGUgdmFsdWUgZm9yIGNvbXBvbmVudC4gU3VwcG9ydGVkIGRlbnNpdHkgc2NhbGUgdmFsdWVzIGAtM2AsXG4vLy8gICAgIGAtMmAsIGAtMWAsIGAwYC5cbi8vL1xuQG1peGluIGRlbnNpdHkoJGRlbnNpdHktc2NhbGUsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGhlaWdodDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAkZGVuc2l0eS1jb25maWc6ICRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBoZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIEBpZiAkZGVuc2l0eS1zY2FsZSAhPSAwIHtcbiAgICBAaW5jbHVkZSBfdG91Y2gtdGFyZ2V0LXJlc2V0KCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBSZXNldHMgdG91Y2ggdGFyZ2V0LXJlbGF0ZWQgc3R5bGVzLiBUaGlzIGlzIGNhbGxlZCBmcm9tIHRoZSBkZW5zaXR5IG1peGluIHRvXG4vLy8gYXV0b21hdGljYWxseSByZW1vdmUgdGhlIGluY3JlYXNlZCB0b3VjaCB0YXJnZXQsIHNpbmNlIGRlbnNlIGNvbXBvbmVudHNcbi8vLyBkb24ndCBoYXZlIHRoZSBzYW1lIGRlZmF1bHQgYTExeSByZXF1aXJlbWVudHMuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBfdG91Y2gtdGFyZ2V0LXJlc2V0KCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC5tZGMtYnV0dG9uX190b3VjaCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIERvIG5vdCBzZXQgZGlzcGxheTogbm9uZSBpbiBjYXNlIHRoZSB0b3VjaCB0YXJnZXQgaXMgPGE+IGVsZW1lbnQuXG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgY3VzdG9tIGhlaWdodCBmb3IgYnV0dG9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IC0gSGVpZ2h0IG9mIGJ1dHRvbiBpbiBgcHhgLlxuLy8vXG5AbWl4aW4gaGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGhlaWdodCwgJGhlaWdodCk7XG4gIH1cbn1cblxuQG1peGluIHNoYXBlLXJhZGl1cyhcbiAgJHJhZGl1cyxcbiAgJHJ0bC1yZWZsZXhpdmU6IGZhbHNlLFxuICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkaGVpZ2h0OiBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICRkZW5zaXR5LWNvbmZpZzogJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0LFxuICApO1xuXG4gIEBpbmNsdWRlIF9zaGFwZS1yYWRpdXMtd2l0aC1oZWlnaHQoJHJhZGl1cywgJHJ0bC1yZWZsZXhpdmUsICRoZWlnaHQsICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfc2hhcGUtcmFkaXVzLXdpdGgtaGVpZ2h0KFxuICAkcmFkaXVzLFxuICAkcnRsLXJlZmxleGl2ZTogZmFsc2UsXG4gICRoZWlnaHQ6ICRoZWlnaHQsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICBAaW5jbHVkZSBzaGFwZS1taXhpbnMucmFkaXVzKFxuICAgICRyYWRpdXMsXG4gICAgJHJ0bC1yZWZsZXhpdmUsXG4gICAgJGNvbXBvbmVudC1oZWlnaHQ6ICRoZWlnaHQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICAje2J1dHRvbi1yaXBwbGUuJHJpcHBsZS10YXJnZXR9IHtcbiAgICBAaW5jbHVkZSBzaGFwZS1taXhpbnMucmFkaXVzKFxuICAgICAgJHJhZGl1cyxcbiAgICAgICRydGwtcmVmbGV4aXZlLFxuICAgICAgJGNvbXBvbmVudC1oZWlnaHQ6ICRoZWlnaHQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBob3Jpem9udGFsIHBhZGRpbmcgdG8gdGhlIGdpdmVuIG51bWJlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRpbmdcbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRpbmctaWNvbiBbbnVsbF0gRm9yIGJ1dHRvbnMgd2l0aCBhbiBpY29uLCB0aGVcbi8vLyAgICAgaG9yaXpvbnRhbCBwYWRkaW5nIG9uIHRoZSBzaWRlIHdpdGggdGhlIGljb24sIGlmIGRpZmZlcmVudCBmcm9tXG4vLy8gICAgICRwYWRkaW5nLlxuLy8vXG5AbWl4aW4gaG9yaXpvbnRhbC1wYWRkaW5nKFxuICAkcGFkZGluZyxcbiAgJHBhZGRpbmctaWNvbjogbnVsbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAvLyAkcGFkZGluZyBzaG91bGQgYmUgYSBzaW5nbGUgdmFsdWU7IGVuZm9yY2UgaXQgYnkgc3BlY2lmeWluZyBhbGwgNCBzaWRlcyBpbiB0aGUgb3V0cHV0XG4gICAgcGFkZGluZzogMCAkcGFkZGluZyAwICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmICRwYWRkaW5nLWljb24gIT0gbnVsbCB7XG4gICAgJi5tZGMtYnV0dG9uLS1pY29uLXRyYWlsaW5nIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIC8vICRwYWRkaW5nIHNob3VsZCBiZSBhIHNpbmdsZSB2YWx1ZTsgZW5mb3JjZSBpdCBieSBzcGVjaWZ5aW5nIGFsbCA0XG4gICAgICAgIC8vIHNpZGVzIGluIHRoZSBvdXRwdXQuXG4gICAgICAgIHBhZGRpbmc6IDAgJHBhZGRpbmctaWNvbiAwICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWRjLWJ1dHRvbi0taWNvbi1sZWFkaW5nIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIC8vICRwYWRkaW5nIHNob3VsZCBiZSBhIHNpbmdsZSB2YWx1ZTsgZW5mb3JjZSBpdCBieSBzcGVjaWZ5aW5nIGFsbCA0XG4gICAgICAgIC8vIHNpZGVzIGluIHRoZSBvdXRwdXQuXG4gICAgICAgIHBhZGRpbmc6IDAgJHBhZGRpbmcgMCAkcGFkZGluZy1pY29uO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBidXR0b24gbGFiZWwgdG8gb3ZlcmZsb3cgYXMgZWxsaXBzaXNcbi8vL1xuQG1peGluIGxhYmVsLW92ZXJmbG93LWVsbGlwc2lzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLm1kYy1idXR0b25fX2xhYmVsIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5Lm92ZXJmbG93LWVsbGlwc2lzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBBZGQgYSB2aXNpYmxlIG91dGxpbmUgdG8gdGhlIGJ1dHRvbiBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuXG4vLy9cbkBtaXhpbiBvdXRsaW5lLWhjbS1zaGltKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJjo6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBkb20tbWl4aW5zLnRyYW5zcGFyZW50LWJvcmRlcigkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gSW5jbHVkZXMgYWQtaG9jIGhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0LlxuLy8vIEBkZXByZWNhdGVkIFVzZSBgb3V0bGluZS1oY20tc2hpbWAgZm9yIHRoZSBvdXRsaW5lIGJ1dHRvbi4gVGhlIGZvY3VzIHJpbmdcbi8vLyAgICAgaXMgcHJvdmlkZWQgYnkgZGVmYXVsdC5cbi8vL1xuQG1peGluIGhpZ2gtY29udHJhc3QtbW9kZS1zaGltKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgb3V0bGluZS1oY20tc2hpbSgkcXVlcnk6ICRxdWVyeSk7XG5cbiAgLy8gTGluayBidXR0b25zIGFwcGx5IGZvY3VzIHRvIHRoZSBjb250YWluZWQgbGluay4gRm9jdXMgaXMgaW5kaWNhdGVkIHZpYSB0aGVcbiAgLy8gbGluayBzaW5jZSBmb2N1cy13aXRoaW4gaXNuJ3Qgc3VwcG9ydGVkIGJ5IElFLlxuICAmIC5tZGMtYnV0dG9uX19saW5rOmZvY3VzLFxuICAmOmZvY3VzIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZm9jdXMtcmluZy5mb2N1cy1yaW5nKCRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgY29udGFpbmVyIGZpbGwgY29sb3IgdG8gdGhlIGdpdmVuIGNvbG9yLiBUaGlzIG1peGluIHNob3VsZCBiZVxuLy8vIHdyYXBwZWQgaW4gYSBzZWxlY3RvciB0aGF0IHF1YWxpZmllcyBidXR0b24gc3RhdGUuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBfY29udGFpbmVyLWZpbGwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpZiAkY29sb3Ige1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJhY2tncm91bmQtY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGljb24gY29sb3IgdG8gdGhlIGdpdmVuIGNvbG9yLiBUaGlzIG1peGluIHNob3VsZCBiZVxuLy8vIHdyYXBwZWQgaW4gYSBzZWxlY3RvciB0aGF0IHF1YWxpZmllcyBidXR0b24gc3RhdGUuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBfaWNvbi1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGlmICRjb2xvciB7XG4gICAgLm1kYy1idXR0b25fX2ljb24ge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9pY29uLXNpemUoJHNpemUtcHgsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaWYgJHNpemUtcHggIT0gbnVsbCB7XG4gICAgJHNpemUtcmVtOiB0eXBvZ3JhcGh5LnB4LXRvLXJlbSgkc2l6ZS1weCk7XG4gICAgLm1kYy1idXR0b25fX2ljb24ge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoZm9udC1zaXplLCAkc2l6ZS1yZW0pO1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSh3aWR0aCwgJHNpemUtcmVtKTtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoaGVpZ2h0LCAkc2l6ZS1yZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBpbmsgY29sb3IgdG8gdGhlIGdpdmVuIGNvbG9yLiBUaGlzIG1peGluIHNob3VsZCBiZVxuLy8vIHdyYXBwZWQgaW4gYSBzZWxlY3RvciB0aGF0IHF1YWxpZmllcyBidXR0b24gc3RhdGUuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBfaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaWYgJGNvbG9yIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9zdGF0ZXMtY29sb3JzKCRjb2xvci1tYXAsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGhvdmVyOiBtYXAuZ2V0KCRjb2xvci1tYXAsIGhvdmVyKTtcblxuICAkaG92ZXItdmFsdWU6IGlmKFxuICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRob3ZlciksXG4gICAgY3VzdG9tLXByb3BlcnRpZXMuZ2V0LWZhbGxiYWNrKCRob3ZlciksXG4gICAgJGhvdmVyXG4gICk7XG4gIC8vIFRPRE8oYi8xOTEyOTg3OTYpOiBzdXBwb3J0IGZvY3VzZWQgJiBwcmVzc2VkIGtleSBjb2xvcnMuXG5cbiAgQGlmICRob3Zlci12YWx1ZSAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWJhc2UtY29sb3IoXG4gICAgICAkY29sb3I6ICRob3ZlcixcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiBidXR0b24tcmlwcGxlLiRyaXBwbGUtdGFyZ2V0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBfbGFiZWwtdGV4dC10eXBvZ3JhcGh5KFxuICAkdHlwb2dyYXBoeS1tYXAsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC10eXBvZ3JhcGh5OiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgdHlwb2dyYXBoeSk7XG5cbiAgJGZhbWlseTogbWFwLmdldCgkdHlwb2dyYXBoeS1tYXAsIGZhbWlseSk7XG4gICRzaXplOiBtYXAuZ2V0KCR0eXBvZ3JhcGh5LW1hcCwgc2l6ZSk7XG4gICR0cmFja2luZzogbWFwLmdldCgkdHlwb2dyYXBoeS1tYXAsIHRyYWNraW5nKTtcbiAgJHdlaWdodDogbWFwLmdldCgkdHlwb2dyYXBoeS1tYXAsIHdlaWdodCk7XG4gICR0cmFuc2Zvcm06IG1hcC5nZXQoJHR5cG9ncmFwaHktbWFwLCB0cmFuc2Zvcm0pO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtdHlwb2dyYXBoeSkge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGZvbnQtZmFtaWx5LCAkZmFtaWx5KTtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShmb250LXNpemUsICRzaXplKTtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShsZXR0ZXItc3BhY2luZywgJHRyYWNraW5nKTtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShmb250LXdlaWdodCwgJHdlaWdodCk7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkodGV4dC10cmFuc2Zvcm0sICR0cmFuc2Zvcm0pO1xuICB9XG59XG5cbkBtaXhpbiBfZWxldmF0aW9uKFxuICAkcmVzb2x2ZXIsXG4gICRlbGV2YXRpb24tbWFwLFxuICAkc2hhZG93LWNvbG9yLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGVsZXZhdGlvbi1yZXNvbHZlcjogbWFwLmdldCgkcmVzb2x2ZXIsIGVsZXZhdGlvbik7XG5cbiAgQGlmICRzaGFkb3ctY29sb3Ige1xuICAgICRkZWZhdWx0OiBzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkZWxldmF0aW9uLW1hcCk7XG4gICAgQGlmICRkZWZhdWx0ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZWxldmF0aW9uLXRoZW1lLndpdGgtcmVzb2x2ZXIoXG4gICAgICAgICRlbGV2YXRpb24tcmVzb2x2ZXIsXG4gICAgICAgICRlbGV2YXRpb246ICRkZWZhdWx0LFxuICAgICAgICAkc2hhZG93LWNvbG9yOiAkc2hhZG93LWNvbG9yLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkZm9jdXM6IHN0YXRlLmdldC1mb2N1cy1zdGF0ZSgkZWxldmF0aW9uLW1hcCk7XG4gICAgQGlmICRmb2N1cyAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5mb2N1cyB7XG4gICAgICAgIEBpbmNsdWRlIGVsZXZhdGlvbi10aGVtZS53aXRoLXJlc29sdmVyKFxuICAgICAgICAgICRlbGV2YXRpb24tcmVzb2x2ZXIsXG4gICAgICAgICAgJGVsZXZhdGlvbjogJGZvY3VzLFxuICAgICAgICAgICRzaGFkb3ctY29sb3I6ICRzaGFkb3ctY29sb3IsXG4gICAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkaG92ZXI6IHN0YXRlLmdldC1ob3Zlci1zdGF0ZSgkZWxldmF0aW9uLW1hcCk7XG4gICAgQGlmICRob3ZlciAhPSBudWxsIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBAaW5jbHVkZSBlbGV2YXRpb24tdGhlbWUud2l0aC1yZXNvbHZlcihcbiAgICAgICAgICAkZWxldmF0aW9uLXJlc29sdmVyLFxuICAgICAgICAgICRlbGV2YXRpb246ICRob3ZlcixcbiAgICAgICAgICAkc2hhZG93LWNvbG9yOiAkc2hhZG93LWNvbG9yLFxuICAgICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHByZXNzZWQ6IHN0YXRlLmdldC1wcmVzc2VkLXN0YXRlKCRlbGV2YXRpb24tbWFwKTtcbiAgICBAaWYgJHByZXNzZWQgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuYWN0aXZlIHtcbiAgICAgICAgQGluY2x1ZGUgZWxldmF0aW9uLXRoZW1lLndpdGgtcmVzb2x2ZXIoXG4gICAgICAgICAgJGVsZXZhdGlvbi1yZXNvbHZlcixcbiAgICAgICAgICAkZWxldmF0aW9uOiAkcHJlc3NlZCxcbiAgICAgICAgICAkc2hhZG93LWNvbG9yOiAkc2hhZG93LWNvbG9yLFxuICAgICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJGRpc2FibGVkOiBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGVsZXZhdGlvbi1tYXApO1xuICAgIEBpZiAkZGlzYWJsZWQgIT0gbnVsbCB7XG4gICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgQGluY2x1ZGUgZWxldmF0aW9uLXRoZW1lLndpdGgtcmVzb2x2ZXIoXG4gICAgICAgICAgJGVsZXZhdGlvbi1yZXNvbHZlcixcbiAgICAgICAgICAkZWxldmF0aW9uOiAkZGlzYWJsZWQsXG4gICAgICAgICAgJHNoYWRvdy1jb2xvcjogJHNoYWRvdy1jb2xvcixcbiAgICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDIwIEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3Rva2Vucy9yZXNvbHZlcnMnO1xuQHVzZSAnLi9idXR0b24tYmFzZSc7XG5AdXNlICcuL2J1dHRvbi1maWxsZWQtdGhlbWUnO1xuQHVzZSAnLi9idXR0b24tcmlwcGxlJztcbkB1c2UgJy4vYnV0dG9uLXNoYXJlZC10aGVtZSc7XG5cbkBtaXhpbiBzdHlsZXMoXG4gICR0aGVtZTogYnV0dG9uLWZpbGxlZC10aGVtZS4kbGlnaHQtdGhlbWUsXG4gICRyZXNvbHZlcjogcmVzb2x2ZXJzLiRtYXRlcmlhbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIEBpbmNsdWRlIGJ1dHRvbi1iYXNlLnN0YXRpYy1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBzdGF0aWMtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgLm1kYy1idXR0b24tLXVuZWxldmF0ZWQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsZWQtdGhlbWUudGhlbWUtc3R5bGVzKFxuICAgICAgJHRoZW1lLFxuICAgICAgJHJlc29sdmVyLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgc3RhdGljLXN0eWxlcy13aXRob3V0LXJpcHBsZSgkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGJ1dHRvbi1yaXBwbGUuc3RhdGljLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzLXdpdGhvdXQtcmlwcGxlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLm1kYy1idXR0b24tLXVuZWxldmF0ZWQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1iYXNlLnJhaXNlZC10cmFuc2l0aW9uKCRxdWVyeTogJHF1ZXJ5KTtcbiAgICAvLyBUT0RPKGIvMTc5NDAyNjc3KTogbW92ZSBpbnRvIHRoZW1lIGNvbmZpZ1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1zaGFyZWQtdGhlbWUuaG9yaXpvbnRhbC1wYWRkaW5nKFxuICAgICAgJHBhZGRpbmc6IGJ1dHRvbi1zaGFyZWQtdGhlbWUuJGNvbnRhaW5lZC1ob3Jpem9udGFsLXBhZGRpbmcsXG4gICAgICAkcGFkZGluZy1pY29uOiBidXR0b24tc2hhcmVkLXRoZW1lLiRjb250YWluZWQtaG9yaXpvbnRhbC1wYWRkaW5nLWljb24sXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuLy8gTGVnYWN5IG1peGluc1xuXG5AbWl4aW4gZmlsbGVkKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLy8gVE9ETyhiLzE3OTQwMjY3Nyk6IG1vdmUgaW50byB0aGVtZSBjb25maWdcbiAgQGluY2x1ZGUgYnV0dG9uLXNoYXJlZC10aGVtZS5ob3Jpem9udGFsLXBhZGRpbmcoXG4gICAgJHBhZGRpbmc6IGJ1dHRvbi1zaGFyZWQtdGhlbWUuJGNvbnRhaW5lZC1ob3Jpem9udGFsLXBhZGRpbmcsXG4gICAgJHBhZGRpbmctaWNvbjogYnV0dG9uLXNoYXJlZC10aGVtZS4kY29udGFpbmVkLWhvcml6b250YWwtcGFkZGluZy1pY29uLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIGJ1dHRvbi1maWxsZWQtdGhlbWUudGhlbWUtc3R5bGVzKFxuICAgIGJ1dHRvbi1maWxsZWQtdGhlbWUuJGxpZ2h0LXRoZW1lLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbi8vLyBAZGVwcmVjYXRlZCBQcml2YXRlIHN0eWxlIG1peGluIGZvciBwYXJ0bmVyczsgbm90IGF2YWlsYWJsZSBmb3IgcHVibGljIHVzZS5cbkBtaXhpbiBkZXByZWNhdGVkLWZpbGxlZCgkcXVlcnkpIHtcbiAgQGluY2x1ZGUgZmlsbGVkKCRxdWVyeSk7XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ0BtYXRlcmlhbC9lbGV2YXRpb24vZWxldmF0aW9uLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICcuL2J1dHRvbi1iYXNlJztcbkB1c2UgJy4vYnV0dG9uLXByb3RlY3RlZC10aGVtZSc7XG5AdXNlICcuL2J1dHRvbi1yaXBwbGUnO1xuQHVzZSAnLi9idXR0b24tc2hhcmVkLXRoZW1lJztcblxuQG1peGluIHN0eWxlcyhcbiAgJHRoZW1lOiBidXR0b24tcHJvdGVjdGVkLXRoZW1lLiRsaWdodC10aGVtZSxcbiAgJHJlc29sdmVyOiByZXNvbHZlcnMuJG1hdGVyaWFsLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgQGluY2x1ZGUgYnV0dG9uLWJhc2Uuc3RhdGljLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIHN0YXRpYy1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICAubWRjLWJ1dHRvbi0tcmFpc2VkIHtcbiAgICBAaW5jbHVkZSBidXR0b24tcHJvdGVjdGVkLXRoZW1lLnRoZW1lLXN0eWxlcyhcbiAgICAgICR0aGVtZSxcbiAgICAgICRyZXNvbHZlcjogJHJlc29sdmVyLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgc3RhdGljLXN0eWxlcy13aXRob3V0LXJpcHBsZSgkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGJ1dHRvbi1yaXBwbGUuc3RhdGljLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzLXdpdGhvdXQtcmlwcGxlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLm1kYy1idXR0b24tLXJhaXNlZCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWJhc2UucmFpc2VkLXRyYW5zaXRpb24oJHF1ZXJ5KTtcbiAgICAvLyBUT0RPKGIvMTc5NDAyNjc3KTogbW92ZSBpbnRvIHRoZW1lIGNvbmZpZ1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1zaGFyZWQtdGhlbWUuaG9yaXpvbnRhbC1wYWRkaW5nKFxuICAgICAgJHBhZGRpbmc6IGJ1dHRvbi1zaGFyZWQtdGhlbWUuJGNvbnRhaW5lZC1ob3Jpem9udGFsLXBhZGRpbmcsXG4gICAgICAkcGFkZGluZy1pY29uOiBidXR0b24tc2hhcmVkLXRoZW1lLiRjb250YWluZWQtaG9yaXpvbnRhbC1wYWRkaW5nLWljb24sXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuLy8vIEBkZXByZWNhdGVkIFByaXZhdGUgc3R5bGUgbWl4aW4gZm9yIHBhcnRuZXJzOyBub3QgYXZhaWxhYmxlIGZvciBwdWJsaWMgdXNlLlxuQG1peGluIGRlcHJlY2F0ZWQtcmFpc2VkKCRxdWVyeSkge1xuICBAaW5jbHVkZSByYWlzZWQoJHF1ZXJ5KTtcbn1cblxuQG1peGluIHJhaXNlZCgkcXVlcnkpIHtcbiAgQGluY2x1ZGUgZWxldmF0aW9uLXRoZW1lLmVsZXZhdGlvbigyLCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgQGluY2x1ZGUgZWxldmF0aW9uLXRoZW1lLmVsZXZhdGlvbig0LCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICAmOmFjdGl2ZSB7XG4gICAgQGluY2x1ZGUgZWxldmF0aW9uLXRoZW1lLmVsZXZhdGlvbig4LCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBlbGV2YXRpb24tdGhlbWUuZWxldmF0aW9uKDAsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJ1dHRvbi1iYXNlLnJhaXNlZC10cmFuc2l0aW9uKCRxdWVyeSk7XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ0BtYXRlcmlhbC9lbGV2YXRpb24vZWxldmF0aW9uLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICcuL2J1dHRvbi1iYXNlJztcbkB1c2UgJy4vYnV0dG9uLW91dGxpbmVkLXRoZW1lJztcbkB1c2UgJy4vYnV0dG9uLXJpcHBsZSc7XG5AdXNlICcuL2J1dHRvbi1zaGFyZWQtdGhlbWUnO1xuXG5AbWl4aW4gc3R5bGVzKFxuICAkdGhlbWU6IGJ1dHRvbi1vdXRsaW5lZC10aGVtZS4kbGlnaHQtdGhlbWUsXG4gICRyZXNvbHZlcjogcmVzb2x2ZXJzLiRtYXRlcmlhbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIEBpbmNsdWRlIGJ1dHRvbi1iYXNlLnN0YXRpYy1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBzdGF0aWMtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgLm1kYy1idXR0b24tLW91dGxpbmVkIHtcbiAgICBAaW5jbHVkZSB0aGVtZS1zdHlsZXMoJHRoZW1lLCAkcmVzb2x2ZXIsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gc3RhdGljLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHN0YXRpYy1zdHlsZXMtd2l0aG91dC1yaXBwbGUoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBidXR0b24tcmlwcGxlLnN0YXRpYy1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gc3RhdGljLXN0eWxlcy13aXRob3V0LXJpcHBsZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIC5tZGMtYnV0dG9uLS1vdXRsaW5lZCB7XG4gICAgQGluY2x1ZGUgX3N0YXRpYy1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBfc3RhdGljLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAkZHVyYXRpb246IGVsZXZhdGlvbi10aGVtZS4kdHJhbnNpdGlvbi1kdXJhdGlvbjtcbiAgICAkZWFzaW5nOiBlbGV2YXRpb24tdGhlbWUuJHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uO1xuICAgIHRyYW5zaXRpb246IGJvcmRlciAjeyRkdXJhdGlvbn0gI3skZWFzaW5nfTtcbiAgfVxuXG4gICN7YnV0dG9uLXJpcHBsZS4kcmlwcGxlLXRhcmdldH0ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG91dGxpbmVkKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgX3N0YXRpYy1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBidXR0b24tb3V0bGluZWQtdGhlbWUudGhlbWUtc3R5bGVzKFxuICAgIGJ1dHRvbi1vdXRsaW5lZC10aGVtZS4kbGlnaHQtdGhlbWUsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbn1cblxuLy8vIEBkZXByZWNhdGVkIFByaXZhdGUgc3R5bGUgbWl4aW4gZm9yIHBhcnRuZXJzOyBub3QgYXZhaWxhYmxlIGZvciBwdWJsaWMgdXNlLlxuQG1peGluIGRlcHJlY2F0ZWQtb3V0bGluZWQoJHF1ZXJ5KSB7XG4gIEBpbmNsdWRlIG91dGxpbmVkKCRxdWVyeSk7XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vZnVuY3Rpb25zJyBhcyBmdW5jdGlvbnMyO1xuQHVzZSAnQG1hdGVyaWFsL2FuaW1hdGlvbi92YXJpYWJsZXMnIGFzIHZhcmlhYmxlczI7XG5AdXNlICdAbWF0ZXJpYWwvYmFzZS9taXhpbnMnIGFzIGJhc2UtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2N1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnLi9yaXBwbGUtdGhlbWUnO1xuXG5AbWl4aW4gY29yZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBzdGF0aWMtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcblxuICAubWRjLXJpcHBsZS1zdXJmYWNlIHtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gc3RhdGljLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1yaXBwbGUtc3VyZmFjZSB7XG4gICAgQGluY2x1ZGUgc3VyZmFjZSgkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgcmFkaXVzLWJvdW5kZWQoJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHN1cmZhY2Utc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtcmlwcGxlLXN1cmZhY2VbZGF0YS1tZGMtcmlwcGxlLWlzLXVuYm91bmRlZF0sXG4gIC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQge1xuICAgIEBpbmNsdWRlIHJhZGl1cy11bmJvdW5kZWQoJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHVuYm91bmRlZC1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vLyBTZXRzIGFsbCBzdGF0ZXMgKGluY2x1ZGluZyBob3ZlciwgZm9jdXMsIHByZXNzLCBhY3RpdmF0ZWQgYW5kIHNlbGVjdGVkKSB3aXRoXG4vLy8gZ2l2ZW4gY29sb3IgYXMgYmFzZSBjb2xvci5cbi8vL1xuLy8vIFRoaXMgbWl4aW4gaXMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBVc2UgYHJpcHBsZS10aGVtZS5zdGF0ZXMoJGNvbG9yKWAgbWl4aW5cbi8vLyB0byBzZXQgaW50ZXJhY3RpdmUgc3RhdGVzIChob3ZlciwgZm9jdXMgJiBwcmVzcykgY29sb3IuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfFN0cmluZ30gJGNvbG9yIC0gVGFyZ2V0IGJhc2UgY29sb3IuIENhbiBiZSB2YWxpZCBDU1MgY29sb3Igb3Jcbi8vLyAgICAgYSBjb2xvciBzdHJpbmcgbGl0ZXJhbCAoaS5lLiwgYHByaW1hcnlgLCBgc2Vjb25kYXJ5YCwgZXRjKS5cbkBtaXhpbiBzdGF0ZXMtZm9yLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWFjdGl2YXRlZCgkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1zZWxlY3RlZCgkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbn1cblxuQG1peGluIHN1cmZhY2Utc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbn1cblxuQG1peGluIHVuYm91bmRlZC1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG59XG5cbkBtaXhpbiBjb21tb24oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gIC8vIEVuc3VyZSB0aGF0IHN0eWxlcyBuZWVkZWQgYnkgYW55IGNvbXBvbmVudCB1c2luZyBNREMgUmlwcGxlIGFyZSBlbWl0dGVkLCBidXQgb25seSBvbmNlLlxuICAvLyAoRXZlcnkgY29tcG9uZW50IHVzaW5nIE1EQyBSaXBwbGUgaW1wb3J0cyB0aGVzZSBtaXhpbnMsIGJ1dCBkb2Vzbid0IG5lY2Vzc2FyaWx5IGltcG9ydFxuICAvLyBtZGMtcmlwcGxlLnNjc3MuKVxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgIEBpbmNsdWRlIGJhc2UtbWl4aW5zLmVtaXQtb25jZSgnbWRjLXJpcHBsZS9jb21tb24vYW5pbWF0aW9uJykge1xuICAgICAgQGluY2x1ZGUga2V5ZnJhbWVzXztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHN1cmZhY2UoXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksXG4gICRyaXBwbGUtdGFyZ2V0OiAnJicsXG4gICRpbmNsdWRlLXdpbGwtY2hhbmdlOiB0cnVlIC8vIFRPRE8oYi8xNTE5MzE5NjEpOiBSZW1vdmUgb25jZSByZXNvbHZlZFxuKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAtLW1kYy1yaXBwbGUtZmctc2l6ZTogMDtcbiAgICAtLW1kYy1yaXBwbGUtbGVmdDogMDtcbiAgICAtLW1kYy1yaXBwbGUtdG9wOiAwO1xuICAgIC0tbWRjLXJpcHBsZS1mZy1zY2FsZTogMTtcbiAgICAtLW1kYy1yaXBwbGUtZmctdHJhbnNsYXRlLWVuZDogMDtcbiAgICAtLW1kYy1yaXBwbGUtZmctdHJhbnNsYXRlLXN0YXJ0OiAwO1xuXG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xuICAgIC8vIFRPRE8oYi8xNTE5MzE5NjEpOiBSZW1vdmUgdGhlIGZvbGxvd2luZyBibG9jayBvbmNlIHJlc29sdmVkXG4gICAgQGlmICRpbmNsdWRlLXdpbGwtY2hhbmdlIHtcbiAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gICAgfVxuICB9XG5cbiAgI3skcmlwcGxlLXRhcmdldH06OmJlZm9yZSxcbiAgI3skcmlwcGxlLXRhcmdldH06OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgY29udGVudDogJyc7XG4gICAgfVxuICB9XG5cbiAgI3skcmlwcGxlLXRhcmdldH06OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgIC8vIEFsc28gdHJhbnNpdGlvbiBiYWNrZ3JvdW5kLWNvbG9yIHRvIGF2b2lkIHVubmF0dXJhbCBjb2xvciBmbGFzaGVzIHdoZW4gdG9nZ2xpbmcgYWN0aXZhdGVkL3NlbGVjdGVkIHN0YXRlXG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHJpcHBsZS10aGVtZS4kc3RhdGVzLXdhc2gtZHVyYXRpb24gbGluZWFyLFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHJpcHBsZS10aGVtZS4kc3RhdGVzLXdhc2gtZHVyYXRpb24gbGluZWFyO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcmlwcGxlIHdhc2ggZm9yIGhvdmVyL2ZvY3VzIHN0YXRlcyBpcyBkaXNwbGF5ZWQgb24gdG9wIG9mIHBvc2l0aW9uZWQgY2hpbGQgZWxlbWVudHNcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KFxuICAgICAgICB6LWluZGV4LFxuICAgICAgICBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoLS1tZGMtcmlwcGxlLXotaW5kZXgsIDEpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICN7JHJpcHBsZS10YXJnZXR9OjphZnRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KFxuICAgICAgICB6LWluZGV4LFxuICAgICAgICBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoLS1tZGMtcmlwcGxlLXotaW5kZXgsIDApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbW1vbiBzdHlsZXMgZm9yIHVwZ3JhZGVkIHN1cmZhY2VzIChzb21lIG9mIHRoZXNlIGRlcGVuZCBvbiBjdXN0b20gcHJvcGVydGllcyBzZXQgdmlhIEpTIG9yIG90aGVyIG1peGlucylcblxuICAmLm1kYy1yaXBwbGUtdXBncmFkZWQge1xuICAgICN7JHJpcHBsZS10YXJnZXR9OjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1tZGMtcmlwcGxlLWZnLXNjYWxlLCAxKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgI3skcmlwcGxlLXRhcmdldH06OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZCB7XG4gICAgI3skcmlwcGxlLXRhcmdldH06OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIHRvcDogdmFyKC0tbWRjLXJpcHBsZS10b3AsIDApO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQsIDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC1hY3RpdmF0aW9uIHtcbiAgICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgYW5pbWF0aW9uOiBtZGMtcmlwcGxlLWZnLXJhZGl1cy1pbiByaXBwbGUtdGhlbWUuJHRyYW5zbGF0ZS1kdXJhdGlvblxuICAgICAgICAgICAgZm9yd2FyZHMsXG4gICAgICAgICAgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LWluIHJpcHBsZS10aGVtZS4kZmFkZS1pbi1kdXJhdGlvbiBmb3J3YXJkcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLm1kYy1yaXBwbGUtdXBncmFkZWQtLWZvcmVncm91bmQtZGVhY3RpdmF0aW9uIHtcbiAgICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgYW5pbWF0aW9uOiBtZGMtcmlwcGxlLWZnLW9wYWNpdHktb3V0IHJpcHBsZS10aGVtZS4kZmFkZS1vdXQtZHVyYXRpb247XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIC8vIFJldGFpbiB0cmFuc2Zvcm0gZnJvbSBtZGMtcmlwcGxlLWZnLXJhZGl1cy1pbiBhY3RpdmF0aW9uXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLW1kYy1yaXBwbGUtZmctdHJhbnNsYXRlLWVuZCwgMCkpXG4gICAgICAgICAgc2NhbGUodmFyKC0tbWRjLXJpcHBsZS1mZy1zY2FsZSwgMSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcmFkaXVzLWJvdW5kZWQoXG4gICRyYWRpdXM6IDEwMCUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksXG4gICRyaXBwbGUtdGFyZ2V0OiAnJidcbikge1xuICAkZmVhdC1zdHJ1dHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgI3skcmlwcGxlLXRhcmdldH06OmJlZm9yZSxcbiAgI3skcmlwcGxlLXRhcmdldH06OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnV0dXJlKSB7XG4gICAgICB0b3A6IGNhbGMoNTAlIC0gI3skcmFkaXVzfSk7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgbGVmdDogY2FsYyg1MCUgLSAjeyRyYWRpdXN9KTtcbiAgICAgIHdpZHRoOiAkcmFkaXVzICogMjtcbiAgICAgIGhlaWdodDogJHJhZGl1cyAqIDI7XG4gICAgfVxuICB9XG5cbiAgJi5tZGMtcmlwcGxlLXVwZ3JhZGVkIHtcbiAgICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1dHVyZSkge1xuICAgICAgICB3aWR0aDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplLCAkcmFkaXVzKTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUsICRyYWRpdXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcmFkaXVzLXVuYm91bmRlZChcbiAgJHJhZGl1czogMTAwJSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJHJpcHBsZS10YXJnZXQ6ICcmJ1xuKSB7XG4gICRmZWF0LXN0cnV0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAjeyRyaXBwbGUtdGFyZ2V0fTo6YmVmb3JlLFxuICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydXR1cmUpIHtcbiAgICAgIHRvcDogY2FsYyg1MCUgLSAje21hdGguZGl2KCRyYWRpdXMsIDIpfSk7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgbGVmdDogY2FsYyg1MCUgLSAje21hdGguZGl2KCRyYWRpdXMsIDIpfSk7XG4gICAgICB3aWR0aDogJHJhZGl1cztcbiAgICAgIGhlaWdodDogJHJhZGl1cztcbiAgICB9XG4gIH1cblxuICAmLm1kYy1yaXBwbGUtdXBncmFkZWQge1xuICAgICN7JHJpcHBsZS10YXJnZXR9OjpiZWZvcmUsXG4gICAgI3skcmlwcGxlLXRhcmdldH06OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydXR1cmUpIHtcbiAgICAgICAgdG9wOiB2YXIoLS1tZGMtcmlwcGxlLXRvcCwgY2FsYyg1MCUgLSAje21hdGguZGl2KCRyYWRpdXMsIDIpfSkpO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQsIGNhbGMoNTAlIC0gI3ttYXRoLmRpdigkcmFkaXVzLCAyKX0pKTtcbiAgICAgICAgd2lkdGg6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSwgJHJhZGl1cyk7XG4gICAgICAgIGhlaWdodDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplLCAkcmFkaXVzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1dHVyZSkge1xuICAgICAgICB3aWR0aDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplLCAkcmFkaXVzKTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUsICRyYWRpdXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBDb21tb24gc3R5bGVzIGZvciBhIHJpcHBsZSB0YXJnZXQgZWxlbWVudC5cbi8vIFVzZWQgZm9yIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSBhbiBpbm5lciByaXBwbGUgdGFyZ2V0IGVsZW1lbnQuXG5AbWl4aW4gdGFyZ2V0LWNvbW1vbigkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIC8vIE5lY2Vzc2FyeSBmb3IgY2xpY2tzIG9uIG90aGVyIGlubmVyIGVsZW1lbnRzIChlLmcuIGNsb3NlIGljb24gaW4gY2hpcClcbiAgICAvLyB0byBnbyB0aHJvdWdoLlxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBrZXlmcmFtZXNfIHtcbiAgQGtleWZyYW1lcyBtZGMtcmlwcGxlLWZnLXJhZGl1cy1pbiB7XG4gICAgZnJvbSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXJpYWJsZXMyLiRzdGFuZGFyZC1jdXJ2ZS10aW1pbmctZnVuY3Rpb247XG4gICAgICAvLyBOT1RFOiBGb3IgdGhlc2Uga2V5ZnJhbWVzLCB3ZSBkbyBub3QgbmVlZCBjdXN0b20gcHJvcGVydHkgZmFsbGJhY2tzIGJlY2F1c2UgdGhleSBhcmUgb25seVxuICAgICAgLy8gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGAubWRjLXJpcHBsZS11cGdyYWRlZGAuIFNpbmNlIE1EQ1JpcHBsZUZvdW5kYXRpb24gY2hlY2tzIHRvIGVuc3VyZVxuICAgICAgLy8gdGhhdCBjdXN0b20gcHJvcGVydGllcyBhcmUgc3VwcG9ydGVkIHdpdGhpbiB0aGUgYnJvd3NlciBiZWZvcmUgYWRkaW5nIHRoaXMgY2xhc3MsIHdlIGNhblxuICAgICAgLy8gc2FmZWx5IHVzZSB0aGVtIHdpdGhvdXQgYSBmYWxsYmFjay5cbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLW1kYy1yaXBwbGUtZmctdHJhbnNsYXRlLXN0YXJ0LCAwKSkgc2NhbGUoMSk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tbWRjLXJpcHBsZS1mZy10cmFuc2xhdGUtZW5kLCAwKSlcbiAgICAgICAgc2NhbGUodmFyKC0tbWRjLXJpcHBsZS1mZy1zY2FsZSwgMSkpO1xuICAgIH1cbiAgfVxuXG4gIEBrZXlmcmFtZXMgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LWluIHtcbiAgICBmcm9tIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgb3BhY2l0eTogdmFyKC0tbWRjLXJpcHBsZS1mZy1vcGFjaXR5LCAwKTtcbiAgICB9XG4gIH1cblxuICBAa2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctb3BhY2l0eS1vdXQge1xuICAgIGZyb20ge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAgICAgb3BhY2l0eTogdmFyKC0tbWRjLXJpcHBsZS1mZy1vcGFjaXR5LCAwKTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbiRkZWNlbGVyYXRpb24tY3VydmUtdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSAhZGVmYXVsdDtcbiRzdGFuZGFyZC1jdXJ2ZS10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgIWRlZmF1bHQ7XG4kYWNjZWxlcmF0aW9uLWN1cnZlLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSkgIWRlZmF1bHQ7XG4kc2hhcnAtY3VydmUtdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gZW50ZXIoJG5hbWUsICRkdXJhdGlvbiwgJGRlbGF5OiAwbXMpIHtcbiAgQHJldHVybiAkbmFtZSAkZHVyYXRpb24gJGRlbGF5ICRkZWNlbGVyYXRpb24tY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xufVxuXG5AZnVuY3Rpb24gZXhpdC1wZXJtYW5lbnQoJG5hbWUsICRkdXJhdGlvbiwgJGRlbGF5OiAwbXMpIHtcbiAgQHJldHVybiAkbmFtZSAkZHVyYXRpb24gJGRlbGF5ICRhY2NlbGVyYXRpb24tY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xufVxuXG5AZnVuY3Rpb24gZXhpdC10ZW1wb3JhcnkoJG5hbWUsICRkdXJhdGlvbiwgJGRlbGF5OiAwbXMpIHtcbiAgQHJldHVybiAkbmFtZSAkZHVyYXRpb24gJGRlbGF5ICRzaGFycC1jdXJ2ZS10aW1pbmctZnVuY3Rpb247XG59XG5cbkBmdW5jdGlvbiBzdGFuZGFyZCgkbmFtZSwgJGR1cmF0aW9uLCAkZGVsYXk6IDBtcykge1xuICBAcmV0dXJuICRuYW1lICRkdXJhdGlvbiAkZGVsYXkgJHN0YW5kYXJkLWN1cnZlLXRpbWluZy1mdW5jdGlvbjtcbn1cblxuQGZ1bmN0aW9uIGxpbmVhcigkbmFtZSwgJGR1cmF0aW9uLCAkZGVsYXk6IDBtcykge1xuICBAcmV0dXJuICRuYW1lICRkdXJhdGlvbiAkZGVsYXkgbGluZWFyO1xufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3JpcHBsZS9yaXBwbGUnO1xuXG4kcmlwcGxlLXRhcmdldDogJy5tZGMtYnV0dG9uX19yaXBwbGUnO1xuXG5AbWl4aW4gc3RhdGljLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgcmlwcGxlLmNvbW1vbigkcXVlcnkpOyAvLyBDT1BZQkFSQV9DT01NRU5UX1RISVNfTElORVxuXG4gIC5tZGMtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSByaXBwbGUuc3VyZmFjZSgkcXVlcnk6ICRxdWVyeSwgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0KTtcbiAgICBAaW5jbHVkZSByaXBwbGUucmFkaXVzLWJvdW5kZWQoXG4gICAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldFxuICAgICk7XG4gIH1cblxuICAjeyRyaXBwbGUtdGFyZ2V0fSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIC8vIFJpcHBsZSBuZWVkcyBjb250ZW50LWJveCBhcyB0aGUgYm94IHNpemluZyBhbmQgYm94LXNpemluZzogYm9yZGVyLWJveFxuICAgICAgLy8gaXMgb2Z0ZW4gc2V0IGFzIGEgZGVmYXVsdCwgc28gd2Ugb3ZlcnJpZGUgdGhhdCBoZXJlLlxuICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgei1pbmRleDogMDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICByaWdodDogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAyMCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcbkB1c2UgJ0BtYXRlcmlhbC90b3VjaC10YXJnZXQvbWl4aW5zJyBhcyB0b3VjaC10YXJnZXQtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuL2J1dHRvbi1iYXNlJztcbkB1c2UgJy4vYnV0dG9uLWZpbGxlZCc7XG5AdXNlICcuL2J1dHRvbi1maWxsZWQtdGhlbWUnO1xuQHVzZSAnLi9idXR0b24tb3V0bGluZWQnO1xuQHVzZSAnLi9idXR0b24tb3V0bGluZWQtdGhlbWUnO1xuQHVzZSAnLi9idXR0b24tcHJvdGVjdGVkJztcbkB1c2UgJy4vYnV0dG9uLXByb3RlY3RlZC10aGVtZSc7XG5AdXNlICcuL2J1dHRvbi1yaXBwbGUnO1xuQHVzZSAnLi9idXR0b24tdGV4dCc7XG5AdXNlICcuL2J1dHRvbi10ZXh0LXRoZW1lJztcbkB1c2UgJy4vYnV0dG9uLXRoZW1lJztcbkB1c2UgJy4vYnV0dG9uLXNoYXJlZC10aGVtZSc7XG5cbi8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbkBmb3J3YXJkICcuL2J1dHRvbi1iYXNlJyBzaG93IGRlcHJlY2F0ZWQtYmFzZSwgYmFzZSwgaWNvbiwgaWNvbi10cmFpbGluZywgaWNvbi1zdmcsIGljb24tY29udGFpbmVkLCBpY29uLWNvbnRhaW5lZC10cmFpbGluZywgZGVwcmVjYXRlZC1pY29uLCBkZXByZWNhdGVkLWljb24tdHJhaWxpbmcsIGRlcHJlY2F0ZWQtaWNvbi1zdmcsIGRlcHJlY2F0ZWQtaWNvbi1jb250YWluZWQsIGRlcHJlY2F0ZWQtaWNvbi1jb250YWluZWQtdHJhaWxpbmc7XG5cbkBtaXhpbiBzdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBzdGF0aWMtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgdGhlbWUtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbn1cblxuQG1peGluIHRoZW1lLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIC5tZGMtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBidXR0b24tdGV4dC10aGVtZS50aGVtZS1zdHlsZXMoXG4gICAgICBidXR0b24tdGV4dC10aGVtZS4kbGlnaHQtdGhlbWUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbiAgLm1kYy1idXR0b24tLXVuZWxldmF0ZWQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsZWQtdGhlbWUudGhlbWUtc3R5bGVzKFxuICAgICAgYnV0dG9uLWZpbGxlZC10aGVtZS4kbGlnaHQtdGhlbWUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbiAgLm1kYy1idXR0b24tLXJhaXNlZCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLXByb3RlY3RlZC10aGVtZS50aGVtZS1zdHlsZXMoXG4gICAgICBidXR0b24tcHJvdGVjdGVkLXRoZW1lLiRsaWdodC10aGVtZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuICAubWRjLWJ1dHRvbi0tb3V0bGluZWQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1vdXRsaW5lZC10aGVtZS50aGVtZS1zdHlsZXMoXG4gICAgICBidXR0b24tb3V0bGluZWQtdGhlbWUuJGxpZ2h0LXRoZW1lLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgc3RhdGljLXN0eWxlcy13aXRob3V0LXJpcHBsZSgkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGJ1dHRvbi1yaXBwbGUuc3RhdGljLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzLXdpdGhvdXQtcmlwcGxlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgYnV0dG9uLWJhc2Uuc3RhdGljLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGJ1dHRvbi10ZXh0LnN0YXRpYy1zdHlsZXMtd2l0aG91dC1yaXBwbGUoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBidXR0b24tZmlsbGVkLnN0YXRpYy1zdHlsZXMtd2l0aG91dC1yaXBwbGUoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBidXR0b24tcHJvdGVjdGVkLnN0YXRpYy1zdHlsZXMtd2l0aG91dC1yaXBwbGUoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBidXR0b24tb3V0bGluZWQuc3RhdGljLXN0eWxlcy13aXRob3V0LXJpcHBsZSgkcXVlcnk6ICRxdWVyeSk7XG59XG5cbi8vIExlZ2FjeSBtaXhpbnNcblxuQG1peGluIHdpdGhvdXQtcmlwcGxlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgYnV0dG9uLWJhc2UuZGVwcmVjYXRlZC1zdGF0aWMtc3R5bGVzLXdpdGhvdXQtcmlwcGxlKCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgYnV0dG9uLXRleHQuc3RhdGljLXN0eWxlcy13aXRob3V0LXJpcHBsZSgkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGJ1dHRvbi1maWxsZWQuc3RhdGljLXN0eWxlcy13aXRob3V0LXJpcHBsZSgkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGJ1dHRvbi1wcm90ZWN0ZWQuc3RhdGljLXN0eWxlcy13aXRob3V0LXJpcHBsZSgkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGJ1dHRvbi1vdXRsaW5lZC5zdGF0aWMtc3R5bGVzLXdpdGhvdXQtcmlwcGxlKCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgX3RoZW1lLXN0eWxlcy13aXRob3V0LXJpcHBsZSgkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfdGhlbWUtc3R5bGVzLXdpdGhvdXQtcmlwcGxlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgYnV0dG9uLXRleHQtdGhlbWUuZGVwcmVjYXRlZC10aGVtZS1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBidXR0b24tZmlsbGVkLXRoZW1lLmRlcHJlY2F0ZWQtdGhlbWUtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgYnV0dG9uLW91dGxpbmVkLXRoZW1lLmRlcHJlY2F0ZWQtdGhlbWUtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgLy8gRWxldmF0aW9uIGhhcyBiZWVuIHJlY2F0ZWdvcml6ZWQgaW50byB0aGVtZSBzdHlsZXMuIEtlZXBpbmcgb2xkIGVsZXZhdGlvblxuICAvLyBzdHlsZXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gIC5tZGMtYnV0dG9uLS1yYWlzZWQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1wcm90ZWN0ZWQucmFpc2VkKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLyBAZGVwcmVjYXRlZCAtIHVzZSBzdHlsZXMoKSBpbnN0ZWFkLlxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgcnVsZSBzaW5jZSBwYWRkaW5nIG5vdyB0YWtlcyBjYXJlIG9mIGljb24gbWFyZ2lucy5cbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgLm1kYy1idXR0b24tLXJhaXNlZCxcbiAgLm1kYy1idXR0b24tLXVuZWxldmF0ZWQsXG4gIC5tZGMtYnV0dG9uLS1vdXRsaW5lZCB7XG4gICAgLm1kYy1idXR0b25fX2ljb24ge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgLy8gSWNvbnMgaW5zaWRlIGNvbnRhaW5lZCBidXR0b25zIGhhdmUgZGlmZmVyZW50IHN0eWxlcyBkdWUgdG8gaW5jcmVhc2VkIGJ1dHRvbiBwYWRkaW5nXG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1iYXNlLmljb24tY29udGFpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtYnV0dG9uX19sYWJlbCArIC5tZGMtYnV0dG9uX19pY29uIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1iYXNlLmljb24tY29udGFpbmVkLXRyYWlsaW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vZnVuY3Rpb25zJyBhcyBmdW5jdGlvbnMyO1xuQHVzZSAnQG1hdGVyaWFsL2FuaW1hdGlvbi92YXJpYWJsZXMnIGFzIHZhcmlhYmxlczI7XG5AdXNlICdAbWF0ZXJpYWwvYmFzZS9taXhpbnMnIGFzIGJhc2UtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jc3MnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2N1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUva2V5cyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvc2hhZG93LWRvbSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUtY29sb3InO1xuXG4kY3VzdG9tLXByb3BlcnR5LXByZWZpeDogJ3JpcHBsZSc7XG5cbiRmYWRlLWluLWR1cmF0aW9uOiA3NW1zICFkZWZhdWx0O1xuJGZhZGUtb3V0LWR1cmF0aW9uOiAxNTBtcyAhZGVmYXVsdDtcbiR0cmFuc2xhdGUtZHVyYXRpb246IDIyNW1zICFkZWZhdWx0O1xuJHN0YXRlcy13YXNoLWR1cmF0aW9uOiAxNW1zICFkZWZhdWx0O1xuXG4vLyBOb3RlcyBvbiBzdGF0ZXM6XG4vLyAqIGZvY3VzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBob3ZlciAoaS5lLiBpZiBhbiBlbGVtZW50IGlzIGJvdGggZm9jdXNlZCBhbmQgaG92ZXJlZCwgb25seSBmb2N1cyB2YWx1ZSBhcHBsaWVzKVxuLy8gKiBwcmVzcyBzdGF0ZSBhcHBsaWVzIHRvIGEgc2VwYXJhdGUgcHNldWRvLWVsZW1lbnQsIHNvIGl0IGhhcyBhbiBhZGRpdGl2ZSBlZmZlY3Qgb24gdG9wIG9mIG90aGVyIHN0YXRlc1xuLy8gKiBzZWxlY3RlZC9hY3RpdmF0ZWQgYXJlIGFwcGxpZWQgYWRkaXRpdmVseSB0byBob3Zlci9mb2N1cyB2aWEgY2FsY3VsYXRpb25zIGF0IHByZXByb2Nlc3NpbmcgdGltZVxuXG4kZGFyay1pbmstb3BhY2l0aWVzOiAoXG4gIGhvdmVyOiAwLjA0LFxuICBmb2N1czogMC4xMixcbiAgcHJlc3M6IDAuMTIsXG4gIHNlbGVjdGVkOiAwLjA4LFxuICBhY3RpdmF0ZWQ6IDAuMTIsXG4pICFkZWZhdWx0O1xuXG4kbGlnaHQtaW5rLW9wYWNpdGllczogKFxuICBob3ZlcjogMC4wOCxcbiAgZm9jdXM6IDAuMjQsXG4gIHByZXNzOiAwLjI0LFxuICBzZWxlY3RlZDogMC4xNixcbiAgYWN0aXZhdGVkOiAwLjI0LFxuKSAhZGVmYXVsdDtcblxuLy8gTGVnYWN5XG5cbiRwcmVzc2VkLWRhcmstaW5rLW9wYWNpdHk6IDAuMTYgIWRlZmF1bHQ7XG4kcHJlc3NlZC1saWdodC1pbmstb3BhY2l0eTogMC4zMiAhZGVmYXVsdDtcblxuLy8gU3RhdGUgc2VsZWN0b3IgdmFyaWFibGVzIHVzZWQgZm9yIHN0YXRlIHNlbGVjdG9yIG1peGlucyBiZWxvdy5cbiRfaG92ZXItc2VsZWN0b3I6ICcmOmhvdmVyJztcbiRfZm9jdXMtc2VsZWN0b3I6ICcmLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtZm9jdXNlZCwgJjpub3QoLm1kYy1yaXBwbGUtdXBncmFkZWQpOmZvY3VzJztcbiRfYWN0aXZlLXNlbGVjdG9yOiAnJjpub3QoOmRpc2FibGVkKTphY3RpdmUnO1xuXG4kbGlnaHQtdGhlbWU6IChcbiAgZm9jdXMtc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRvbi1zdXJmYWNlLFxuICBmb2N1cy1zdGF0ZS1sYXllci1vcGFjaXR5OiBtYXAuZ2V0KCRkYXJrLWluay1vcGFjaXRpZXMsIGZvY3VzKSxcbiAgaG92ZXItc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRvbi1zdXJmYWNlLFxuICBob3Zlci1zdGF0ZS1sYXllci1vcGFjaXR5OiBtYXAuZ2V0KCRkYXJrLWluay1vcGFjaXRpZXMsIGhvdmVyKSxcbiAgcHJlc3NlZC1zdGF0ZS1sYXllci1jb2xvcjogdGhlbWUtY29sb3IuJG9uLXN1cmZhY2UsXG4gIHByZXNzZWQtc3RhdGUtbGF5ZXItb3BhY2l0eTogbWFwLmdldCgkZGFyay1pbmstb3BhY2l0aWVzLCBwcmVzcyksXG4pO1xuXG5AbWl4aW4gdGhlbWUoJHRoZW1lKSB7XG4gIEBpbmNsdWRlIGtleXMuZGVjbGFyZS1jdXN0b20tcHJvcGVydGllcyhcbiAgICAkdGhlbWUsXG4gICAgJHByZWZpeDogJGN1c3RvbS1wcm9wZXJ0eS1wcmVmaXhcbiAgKTtcblxuICBAaWYgc2hhZG93LWRvbS4kY3NzLXNlbGVjdG9yLWZhbGxiYWNrLWRlY2xhcmF0aW9ucyB7XG4gICAgLm1kYy1yaXBwbGUtc3VyZmFjZSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS1zdHlsZXMoJHRoZW1lKTtcbiAgICB9XG4gIH1cbn1cblxuJF9yaXBwbGUtdGhlbWU6IChcbiAgaG92ZXItc3RhdGUtbGF5ZXItY29sb3I6IG51bGwsXG4gIGZvY3VzLXN0YXRlLWxheWVyLWNvbG9yOiBudWxsLFxuICBwcmVzc2VkLXN0YXRlLWxheWVyLWNvbG9yOiBudWxsLFxuICBob3Zlci1zdGF0ZS1sYXllci1vcGFjaXR5OiBudWxsLFxuICBmb2N1cy1zdGF0ZS1sYXllci1vcGFjaXR5OiBudWxsLFxuICBwcmVzc2VkLXN0YXRlLWxheWVyLW9wYWNpdHk6IG51bGwsXG4pO1xuXG5AbWl4aW4gdGhlbWUtc3R5bGVzKCR0aGVtZSwgJHJpcHBsZS10YXJnZXQ6ICcmJykge1xuICAkdGhlbWU6IGtleXMuY3JlYXRlLXRoZW1lLXByb3BlcnRpZXMoXG4gICAgJHRoZW1lLFxuICAgICRwcmVmaXg6ICRjdXN0b20tcHJvcGVydHktcHJlZml4XG4gICk7XG5cbiAgLy8gVE9ETyhiLzE5MTI5ODc5Nik6IFN1cHBvcnQgc3RhdGVzIGxheWVyIGNvbG9yIGZvciBldmVyeSBpbnRlcmFjdGl2ZSBzdGF0ZXMuXG4gIC8vIFVzZSBvbmx5IGhvdmVyIHN0YXRlIGxheWVyIGNvbG9yLCBpZ25vcmluZyBmb2N1cyBhbmQgcHJlc3NlZCBjb2xvci5cbiAgQGluY2x1ZGUgaW50ZXJuYWwtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJHJpcHBsZS10YXJnZXQpO1xufVxuXG5AbWl4aW4gaW50ZXJuYWwtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJHJpcHBsZS10YXJnZXQ6ICcmJykge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZS1rZXlzKCRfcmlwcGxlLXRoZW1lLCAkdGhlbWUpO1xuXG4gIEBpbmNsdWRlIHN0YXRlcy1iYXNlLWNvbG9yKFxuICAgIG1hcC5nZXQoJHRoZW1lLCBob3Zlci1zdGF0ZS1sYXllci1jb2xvciksXG4gICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0XG4gICk7XG4gIEBpbmNsdWRlIHN0YXRlcy1ob3Zlci1vcGFjaXR5KFxuICAgIG1hcC5nZXQoJHRoZW1lLCBob3Zlci1zdGF0ZS1sYXllci1vcGFjaXR5KSxcbiAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgKTtcbiAgQGluY2x1ZGUgc3RhdGVzLWZvY3VzLW9wYWNpdHkoXG4gICAgbWFwLmdldCgkdGhlbWUsIGZvY3VzLXN0YXRlLWxheWVyLW9wYWNpdHkpLFxuICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldFxuICApO1xuICBAaW5jbHVkZSBzdGF0ZXMtcHJlc3Mtb3BhY2l0eShcbiAgICBtYXAuZ2V0KCR0aGVtZSwgcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5KSxcbiAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgKTtcbn1cblxuQG1peGluIHN0YXRlcy1iYXNlLWNvbG9yKFxuICAkY29sb3IsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksXG4gICRyaXBwbGUtdGFyZ2V0OiAnJidcbikge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaWYgJGNvbG9yIHtcbiAgICBAaWYgbm90IGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRjb2xvcikge1xuICAgICAgJGNvbG9yOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIHJpcHBsZS1jb2xvcixcbiAgICAgICAgdGhlbWUtY29sb3IuZ2V0LWN1c3RvbS1wcm9wZXJ0eSgkY29sb3IpXG4gICAgICApO1xuICAgIH1cblxuICAgICN7JHJpcHBsZS10YXJnZXR9OjpiZWZvcmUsXG4gICAgI3skcmlwcGxlLXRhcmdldH06OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYmFja2dyb3VuZC1jb2xvciwgJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gQ3VzdG9taXplcyByaXBwbGUgb3BhY2l0aWVzIGluIGBob3ZlcmAsIGBmb2N1c2AsIG9yIGBwcmVzc2Agc3RhdGVzXG4vLy8gQHBhcmFtIHttYXB9ICRvcGFjaXR5LW1hcCAtIG1hcCBzcGVjaWZ5aW5nIGN1c3RvbSBvcGFjaXR5IG9mIHplcm8gb3IgbW9yZSBzdGF0ZXNcbi8vLyBAcGFyYW0ge2Jvb2x9ICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50IC0gd2hldGhlciB0aGUgY29tcG9uZW50IGNvbnRhaW5zIGEgZm9jdXNhYmxlIGVsZW1lbnQgaW4gdGhlIHJvb3Rcbi8vLyBAcGFyYW0ge3N0cmluZ30gJHJpcHBsZS10YXJnZXQgLSB0aGUgb3B0aW9uYWwgc2VsZWN0b3IgZm9yIHRoZSByaXBwbGUgZWxlbWVudFxuLy8vXG5AbWl4aW4gc3RhdGVzLW9wYWNpdGllcyhcbiAgJG9wYWNpdHktbWFwOiAoKSxcbiAgJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQ6IGZhbHNlLFxuICAkcmlwcGxlLXRhcmdldDogJyYnLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgLy8gRW5zdXJlIHN1ZmZpY2llbnQgc3BlY2lmaWNpdHkgdG8gb3ZlcnJpZGUgYmFzZSBzdGF0ZSBvcGFjaXRpZXNcbiAgQGlmIG1hcC5nZXQoJG9wYWNpdHktbWFwLCBob3Zlcikge1xuICAgIEBpbmNsdWRlIHN0YXRlcy1ob3Zlci1vcGFjaXR5KFxuICAgICAgbWFwLmdldCgkb3BhY2l0eS1tYXAsIGhvdmVyKSxcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIEBpZiBtYXAuZ2V0KCRvcGFjaXR5LW1hcCwgZm9jdXMpIHtcbiAgICBAaW5jbHVkZSBzdGF0ZXMtZm9jdXMtb3BhY2l0eShcbiAgICAgIG1hcC5nZXQoJG9wYWNpdHktbWFwLCBmb2N1cyksXG4gICAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXQsXG4gICAgICAkaGFzLW5lc3RlZC1mb2N1c2FibGUtZWxlbWVudDogJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICBAaWYgbWFwLmdldCgkb3BhY2l0eS1tYXAsIHByZXNzKSB7XG4gICAgQGluY2x1ZGUgc3RhdGVzLXByZXNzLW9wYWNpdHkoXG4gICAgICBtYXAuZ2V0KCRvcGFjaXR5LW1hcCwgcHJlc3MpLFxuICAgICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBzdGF0ZXMtaG92ZXItb3BhY2l0eShcbiAgJG9wYWNpdHksXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksXG4gICRyaXBwbGUtdGFyZ2V0OiAnJidcbikge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaWYgJG9wYWNpdHkgYW5kIG5vdCBjdXN0b20tcHJvcGVydGllcy5pcy1jdXN0b20tcHJvcCgkb3BhY2l0eSkge1xuICAgICRvcGFjaXR5OiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUocmlwcGxlLWhvdmVyLW9wYWNpdHksICRvcGFjaXR5KTtcbiAgfVxuXG4gIC8vIEJhY2tncm91bmQgd2FzaCBzdHlsZXMsIGZvciBib3RoIENTUy1vbmx5IGFuZCB1cGdyYWRlZCBzdGF0ZWZ1bCBzdXJmYWNlc1xuICAmOmhvdmVyLFxuICAmLm1kYy1yaXBwbGUtc3VyZmFjZS0taG92ZXIge1xuICAgIEBpbmNsdWRlIHN0YXRlcy1iYWNrZ3JvdW5kLXNlbGVjdG9yKCRyaXBwbGUtdGFyZ2V0KSB7XG4gICAgICAvLyBPcGFjaXR5IGZhbGxzIHVuZGVyIGNvbG9yIGJlY2F1c2UgdGhlIGNob3NlbiBvcGFjaXR5IGlzIGNvbG9yLWRlcGVuZGVudCBpbiB0eXBpY2FsIHVzYWdlXG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KG9wYWNpdHksICRvcGFjaXR5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHN0YXRlcy1mb2N1cy1vcGFjaXR5KFxuICAkb3BhY2l0eSxcbiAgJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQ6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpLFxuICAkcmlwcGxlLXRhcmdldDogJyYnXG4pIHtcbiAgLy8gRm9jdXMgb3ZlcnJpZGVzIGhvdmVyIGJ5IHJldXNpbmcgdGhlIDo6YmVmb3JlIHBzZXVkby1lbGVtZW50LlxuICAvLyA6Zm9jdXMtd2l0aGluIGdlbmVyYWxseSB3b3JrcyBvbiBub24tTVMgYnJvd3NlcnMgYW5kIG1hdGNoZXMgd2hlbiBhICpjaGlsZCogb2YgdGhlIGVsZW1lbnQgaGFzIGZvY3VzLlxuICAvLyBJdCBpcyB1c2VmdWwgZm9yIGNhc2VzIHdoZXJlIGEgY29tcG9uZW50IGhhcyBhIGZvY3VzYWJsZSBlbGVtZW50IHdpdGhpbiB0aGUgcm9vdCBub2RlLCBlLmcuIHRleHQgZmllbGQsXG4gIC8vIGJ1dCB1bmRlc2lyYWJsZSBpbiBnZW5lcmFsIGluIGNhc2Ugb2YgbmVzdGVkIHN0YXRlZnVsIGNvbXBvbmVudHMuXG4gIC8vIFdlIHVzZSBhIG1vZGlmaWVyIGNsYXNzIGZvciBKUy1lbmFibGVkIHN1cmZhY2VzIHRvIHN1cHBvcnQgYWxsIHVzZSBjYXNlcyBpbiBhbGwgYnJvd3NlcnMuXG4gIEBpZiAkaGFzLW5lc3RlZC1mb2N1c2FibGUtZWxlbWVudCB7XG4gICAgLy8gSlMtZW5hYmxlZCBzZWxlY3RvcnMuXG4gICAgJi5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWZvY3VzZWQsXG4gICAgJi5tZGMtcmlwcGxlLXVwZ3JhZGVkOmZvY3VzLXdpdGhpbixcbiAgICAvLyBDU1Mtb25seSBzZWxlY3RvcnMuXG4gICAgJjpub3QoLm1kYy1yaXBwbGUtdXBncmFkZWQpOmZvY3VzLFxuICAgICY6bm90KC5tZGMtcmlwcGxlLXVwZ3JhZGVkKTpmb2N1cy13aXRoaW4ge1xuICAgICAgQGluY2x1ZGUgc3RhdGVzLWJhY2tncm91bmQtc2VsZWN0b3IoJHJpcHBsZS10YXJnZXQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3RhdGVzLWZvY3VzLW9wYWNpdHktcHJvcGVydGllc18oXG4gICAgICAgICAgJG9wYWNpdHk6ICRvcGFjaXR5LFxuICAgICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAvLyBKUy1lbmFibGVkIHNlbGVjdG9ycy5cbiAgICAmLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtZm9jdXNlZCxcbiAgICAvLyBDU1Mtb25seSBzZWxlY3RvcnMuXG4gICAgJjpub3QoLm1kYy1yaXBwbGUtdXBncmFkZWQpOmZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIHN0YXRlcy1iYWNrZ3JvdW5kLXNlbGVjdG9yKCRyaXBwbGUtdGFyZ2V0KSB7XG4gICAgICAgIEBpbmNsdWRlIHN0YXRlcy1mb2N1cy1vcGFjaXR5LXByb3BlcnRpZXNfKFxuICAgICAgICAgICRvcGFjaXR5OiAkb3BhY2l0eSxcbiAgICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc3RhdGVzLWZvY3VzLW9wYWNpdHktcHJvcGVydGllc18oJG9wYWNpdHksICRxdWVyeSkge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAvLyBPcGFjaXR5IGZhbGxzIHVuZGVyIGNvbG9yIGJlY2F1c2UgdGhlIGNob3NlbiBvcGFjaXR5IGlzIGNvbG9yLWRlcGVuZGVudCBpbiB0eXBpY2FsIHVzYWdlXG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpZiAkb3BhY2l0eSB7XG4gICAgQGlmIG5vdCBjdXN0b20tcHJvcGVydGllcy5pcy1jdXN0b20tcHJvcCgkb3BhY2l0eSkge1xuICAgICAgJG9wYWNpdHk6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShyaXBwbGUtZm9jdXMtb3BhY2l0eSwgJG9wYWNpdHkpO1xuICAgIH1cblxuICAgIC8vIE5vdGUgdGhhdCB0aGlzIGR1cmF0aW9uIGlzIG9ubHkgZWZmZWN0aXZlIG9uIGZvY3VzLCBub3QgYmx1clxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA3NW1zO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KG9wYWNpdHksICRvcGFjaXR5KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHN0YXRlcy1wcmVzcy1vcGFjaXR5KFxuICAkb3BhY2l0eSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJHJpcHBsZS10YXJnZXQ6ICcmJ1xuKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC8vIFN0eWxlcyBmb3Igbm9uLXVwZ3JhZGVkIChDU1Mtb25seSkgc3RhdGVmdWwgc3VyZmFjZXNcblxuICBAaWYgJG9wYWNpdHkge1xuICAgIEBpZiBub3QgY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoJG9wYWNpdHkpIHtcbiAgICAgICRvcGFjaXR5OiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUocmlwcGxlLXByZXNzLW9wYWNpdHksICRvcGFjaXR5KTtcbiAgICB9XG5cbiAgICAmOm5vdCgubWRjLXJpcHBsZS11cGdyYWRlZCkge1xuICAgICAgLy8gQXBwbHkgcHJlc3MgYWRkaXRpdmVseSBieSB1c2luZyB0aGUgOjphZnRlciBwc2V1ZG8tZWxlbWVudFxuICAgICAgI3skcmlwcGxlLXRhcmdldH06OmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRmYWRlLW91dC1kdXJhdGlvbiBsaW5lYXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZmFkZS1pbi1kdXJhdGlvbjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBPcGFjaXR5IGZhbGxzIHVuZGVyIGNvbG9yIGJlY2F1c2UgdGhlIGNob3NlbiBvcGFjaXR5IGlzIGNvbG9yLWRlcGVuZGVudCBpbiB0eXBpY2FsIHVzYWdlXG4gICAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkob3BhY2l0eSwgJG9wYWNpdHkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubWRjLXJpcHBsZS11cGdyYWRlZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIC8vIFVwZ3JhZGVkIHJpcHBsZSBzaG91bGQgYWx3YXlzIGVtaXQgY3VzdG9tIHByb3BlcnR5LCByZWdhcmRsZXNzIG9mXG4gICAgICAgIC8vIGNvbmZpZ3VyYXRpb24sIHNpbmNlIHJpcHBsZSBpdHNlbGYgZmVhdHVyZSBkZXRlY3RzIGN1c3RvbSBwcm9wZXJ0eVxuICAgICAgICAvLyBzdXBwb3J0IGF0IHJ1bnRpbWUuXG4gICAgICAgIEBpbmNsdWRlIGN1c3RvbS1wcm9wZXJ0aWVzLmNvbmZpZ3VyZSgkZW1pdC1jdXN0b20tcHJvcGVydGllczogdHJ1ZSkge1xuICAgICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KFxuICAgICAgICAgICAgY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKHJpcHBsZS1mZy1vcGFjaXR5LCAkb3BhY2l0eSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFNpbXBsZSBtaXhpbiBmb3IgYmFzZSBzdGF0ZXMgd2hpY2ggYXV0b21hdGljYWxseSBzZWxlY3RzIG9wYWNpdHkgdmFsdWVzIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGluayBjb2xvciBpc1xuLy8gbGlnaHQgb3IgZGFyay5cbkBtaXhpbiBzdGF0ZXMoXG4gICRjb2xvcjogdGhlbWUtY29sb3IucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQ6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpLFxuICAkcmlwcGxlLXRhcmdldDogJyYnLFxuICAkb3BhY2l0eS1tYXA6IG51bGxcbikge1xuICBAaW5jbHVkZSBzdGF0ZXMtaW50ZXJhY3Rpb25zXyhcbiAgICAkY29sb3I6ICRjb2xvcixcbiAgICAkaGFzLW5lc3RlZC1mb2N1c2FibGUtZWxlbWVudDogJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQsXG4gICAgJHF1ZXJ5OiAkcXVlcnksXG4gICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0LFxuICAgICRvcGFjaXR5LW1hcDogJG9wYWNpdHktbWFwXG4gICk7XG59XG5cbi8vIFNpbXBsZSBtaXhpbiBmb3IgYWN0aXZhdGVkIHN0YXRlcyB3aGljaCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgb3BhY2l0eSB2YWx1ZXMgYmFzZWQgb24gd2hldGhlciB0aGUgaW5rIGNvbG9yIGlzXG4vLyBsaWdodCBvciBkYXJrLlxuQG1peGluIHN0YXRlcy1hY3RpdmF0ZWQoXG4gICRjb2xvcixcbiAgJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQ6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpLFxuICAkcmlwcGxlLXRhcmdldDogJyYnXG4pIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG4gICRhY3RpdmF0ZWQtb3BhY2l0eTogc3RhdGVzLW9wYWNpdHkoJGNvbG9yLCBhY3RpdmF0ZWQpO1xuXG4gICYtLWFjdGl2YXRlZCB7XG4gICAgLy8gU3R5bGVsaW50IHNlZW1zIHRvIHRoaW5rIHRoYXQgJyYnIHF1YWxpZmllcyBhcyBhIHR5cGUgc2VsZWN0b3IgaGVyZT9cbiAgICBAaW5jbHVkZSBzdGF0ZXMtYmFja2dyb3VuZC1zZWxlY3RvcigkcmlwcGxlLXRhcmdldCkge1xuICAgICAgLy8gT3BhY2l0eSBmYWxscyB1bmRlciBjb2xvciBiZWNhdXNlIHRoZSBjaG9zZW4gb3BhY2l0eSBpcyBjb2xvci1kZXBlbmRlbnQuXG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KFxuICAgICAgICAgIG9wYWNpdHksXG4gICAgICAgICAgY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAgICAgLS1tZGMtcmlwcGxlLWFjdGl2YXRlZC1vcGFjaXR5LFxuICAgICAgICAgICAgJGFjdGl2YXRlZC1vcGFjaXR5XG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIHN0YXRlcy1pbnRlcmFjdGlvbnNfKFxuICAgICAgJGNvbG9yOiAkY29sb3IsXG4gICAgICAkaGFzLW5lc3RlZC1mb2N1c2FibGUtZWxlbWVudDogJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQsXG4gICAgICAkb3BhY2l0eS1tb2RpZmllcjogJGFjdGl2YXRlZC1vcGFjaXR5LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnksXG4gICAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgICApO1xuICB9XG59XG5cbi8vIFNpbXBsZSBtaXhpbiBmb3Igc2VsZWN0ZWQgc3RhdGVzIHdoaWNoIGF1dG9tYXRpY2FsbHkgc2VsZWN0cyBvcGFjaXR5IHZhbHVlcyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBpbmsgY29sb3IgaXNcbi8vIGxpZ2h0IG9yIGRhcmsuXG5AbWl4aW4gc3RhdGVzLXNlbGVjdGVkKFxuICAkY29sb3IsXG4gICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50OiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJHJpcHBsZS10YXJnZXQ6ICcmJ1xuKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuICAkc2VsZWN0ZWQtb3BhY2l0eTogc3RhdGVzLW9wYWNpdHkoJGNvbG9yLCBzZWxlY3RlZCk7XG5cbiAgJi0tc2VsZWN0ZWQge1xuICAgIEBpbmNsdWRlIHN0YXRlcy1iYWNrZ3JvdW5kLXNlbGVjdG9yKCRyaXBwbGUtdGFyZ2V0KSB7XG4gICAgICAvLyBPcGFjaXR5IGZhbGxzIHVuZGVyIGNvbG9yIGJlY2F1c2UgdGhlIGNob3NlbiBvcGFjaXR5IGlzIGNvbG9yLWRlcGVuZGVudC5cbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoXG4gICAgICAgICAgb3BhY2l0eSxcbiAgICAgICAgICBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgICAgICAtLW1kYy1yaXBwbGUtc2VsZWN0ZWQtb3BhY2l0eSxcbiAgICAgICAgICAgICRzZWxlY3RlZC1vcGFjaXR5XG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIHN0YXRlcy1pbnRlcmFjdGlvbnNfKFxuICAgICAgJGNvbG9yOiAkY29sb3IsXG4gICAgICAkaGFzLW5lc3RlZC1mb2N1c2FibGUtZWxlbWVudDogJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQsXG4gICAgICAkb3BhY2l0eS1tb2RpZmllcjogJHNlbGVjdGVkLW9wYWNpdHksXG4gICAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldFxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIHN0YXRlcy1pbnRlcmFjdGlvbnNfKFxuICAkY29sb3IsXG4gICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50LFxuICAkb3BhY2l0eS1tb2RpZmllcjogMCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJHJpcHBsZS10YXJnZXQ6ICcmJyxcbiAgJG9wYWNpdHktbWFwOiBudWxsXG4pIHtcbiAgQGluY2x1ZGUgdGFyZ2V0LXNlbGVjdG9yKCRyaXBwbGUtdGFyZ2V0KSB7XG4gICAgQGluY2x1ZGUgc3RhdGVzLWJhc2UtY29sb3IoJGNvbG9yLCAkcXVlcnkpO1xuICB9XG5cbiAgQGlmICRvcGFjaXR5LW1hcCA9PSBudWxsIHtcbiAgICAkb3BhY2l0eS1tYXA6IChcbiAgICAgIGhvdmVyOiBzdGF0ZXMtb3BhY2l0eSgkY29sb3IsIGhvdmVyKSArICRvcGFjaXR5LW1vZGlmaWVyLFxuICAgICAgZm9jdXM6IHN0YXRlcy1vcGFjaXR5KCRjb2xvciwgZm9jdXMpICsgJG9wYWNpdHktbW9kaWZpZXIsXG4gICAgICBwcmVzczogc3RhdGVzLW9wYWNpdHkoJGNvbG9yLCBwcmVzcykgKyAkb3BhY2l0eS1tb2RpZmllcixcbiAgICApO1xuICB9XG5cbiAgQGluY2x1ZGUgc3RhdGVzLW9wYWNpdGllcyhcbiAgICAkb3BhY2l0eS1tYXAsXG4gICAgJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQ6ICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50LFxuICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xufVxuXG4vLyBXcmFwcyBjb250ZW50IGluIHRoZSBgcmlwcGxlLXRhcmdldGAgc2VsZWN0b3IgaWYgaXQgZXhpc3RzLlxuQG1peGluIHRhcmdldC1zZWxlY3RvcigkcmlwcGxlLXRhcmdldDogJyYnKSB7XG4gIEBpZiAkcmlwcGxlLXRhcmdldCA9PSAnJicge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICAjeyRyaXBwbGUtdGFyZ2V0fSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFNlbGVjdG9yIGZvciBob3ZlciwgYWN0aXZlIGFuZCBmb2N1cyBzdGF0ZXMuXG5AbWl4aW4gc3RhdGVzLXNlbGVjdG9yKCkge1xuICAjeyRfaG92ZXItc2VsZWN0b3J9LFxuICAjeyRfZm9jdXMtc2VsZWN0b3J9LFxuICAjeyRfYWN0aXZlLXNlbGVjdG9yfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGhvdmVyKCkge1xuICAjeyRfaG92ZXItc2VsZWN0b3J9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTZWxlY3RvciBmb3IgZm9jdXMgc3RhdGUuIFVzaW5nICc6bm90KC5tZGMtcmlwcGxlLXVwZ3JhZGVkKScgdG8gY29udGludWVcbi8vIGFwcGx5aW5nIGZvY3VzIHN0eWxlcyBvbiBKUy1kaXNhYmxlZCBjb21wb25lbnRzLCBhbmQgY29udHJvbCBmb2N1c1xuLy8gb24gSlMtZW5hYmxlZCBjb21wb25lbnRzIHdpdGggJy5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWZvY3VzZWQnLlxuQG1peGluIGZvY3VzKCkge1xuICAjeyRfZm9jdXMtc2VsZWN0b3J9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTZWxlY3RvciBmb3IgYWN0aXZlIHN0YXRlLiBVc2luZyBgOmFjdGl2ZTphY3RpdmVgIHRvIG92ZXJyaWRlIGZvY3VzIHN0eWxlcy5cbkBtaXhpbiBwcmVzc2VkKCkge1xuICAjeyRfYWN0aXZlLXNlbGVjdG9yfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gQGRlcHJlY2F0ZWQgVXNlIGBwcmVzc2VkKClgIG1peGluIC0gcmVuYW1lZCBmb3IgY29uc2lzdGVuY3kuXG5AbWl4aW4gYWN0aXZlKCkge1xuICBAaW5jbHVkZSBwcmVzc2VkKCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBLZWVwIHRoZSByaXBwbGUgKFN0YXRlIG92ZXJsYXkpIGJlaGluZCB0aGUgY29udGVudC5cbkBtaXhpbiBiZWhpbmQtY29udGVudChcbiAgJHJpcHBsZS10YXJnZXQsXG4gICRjb250ZW50LXJvb3Qtc2VsZWN0b3I6ICcmJyxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIC8vIE5lZWRlZCBmb3IgSUUxMS4gV2l0aG91dCB0aGlzLCBJRTExIHJlbmRlcnMgdGhlIHN0YXRlIGxheWVyIGNvbXBsZXRlbHlcbiAgLy8gdW5kZXJuZWF0aCB0aGUgY29udGFpbmVyLCBtYWtpbmcgaXQgaW52aXNpYmxlLlxuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gICN7JGNvbnRlbnQtcm9vdC1zZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICB6LWluZGV4OiAwO1xuICAgIH1cbiAgfVxuXG4gICN7JHJpcHBsZS10YXJnZXR9OjpiZWZvcmUsXG4gICN7JHJpcHBsZS10YXJnZXR9OjphZnRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KFxuICAgICAgICB6LWluZGV4LFxuICAgICAgICBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoLS1tZGMtcmlwcGxlLXotaW5kZXgsIC0xKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHN0YXRlcy1vcGFjaXR5KCRjb2xvciwgJHN0YXRlKSB7XG4gICRjb2xvci12YWx1ZTogdGhlbWUtY29sb3IucHJvcC12YWx1ZSgkY29sb3IpO1xuICAkb3BhY2l0eS1tYXA6IGlmKFxuICAgIHRoZW1lLWNvbG9yLnRvbmUoJGNvbG9yLXZhbHVlKSA9PSAnbGlnaHQnLFxuICAgICRsaWdodC1pbmstb3BhY2l0aWVzLFxuICAgICRkYXJrLWluay1vcGFjaXRpZXNcbiAgKTtcblxuICBAaWYgbm90IG1hcC5oYXMta2V5KCRvcGFjaXR5LW1hcCwgJHN0YXRlKSB7XG4gICAgQGVycm9yIFwiSW52YWxpZCBzdGF0ZTogJyN7JHN0YXRlfScuIENob29zZSBvbmUgb2Y6ICN7bWFwLmtleXMoJG9wYWNpdHktbWFwKX1cIjtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLmdldCgkb3BhY2l0eS1tYXAsICRzdGF0ZSk7XG59XG5cbkBtaXhpbiBzdGF0ZXMtYmFja2dyb3VuZC1zZWxlY3RvcigkcmlwcGxlLXRhcmdldCkge1xuICAjeyRyaXBwbGUtdGFyZ2V0fTo6YmVmb3JlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDIxIEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jdXN0b20tcHJvcGVydGllcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUva2V5cyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvc3RhdGUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5AdXNlICdAbWF0ZXJpYWwvdG9rZW5zL3Jlc29sdmVycyc7XG5AdXNlICdAbWF0ZXJpYWwvcmlwcGxlL3JpcHBsZS10aGVtZSc7XG5AdXNlICcuL2J1dHRvbi1iYXNlJztcbkB1c2UgJy4vYnV0dG9uLXNoYXJlZC10aGVtZSc7XG5AdXNlICcuL2J1dHRvbi1yaXBwbGUnO1xuXG4kb3V0bGluZWQtYm9yZGVyLXdpZHRoOiAxcHggIWRlZmF1bHQ7XG4kb3V0bGluZS1jb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjEyKSAhZGVmYXVsdDtcblxuJF9jdXN0b20tcHJvcGVydHktcHJlZml4OiAnb3V0bGluZWQtYnV0dG9uJztcblxuJGxpZ2h0LXRoZW1lOiAoXG4gIGNvbnRhaW5lci1oZWlnaHQ6IGJ1dHRvbi1zaGFyZWQtdGhlbWUuJGhlaWdodCxcbiAgY29udGFpbmVyLXNoYXBlOiBidXR0b24tc2hhcmVkLXRoZW1lLiRzaGFwZS1yYWRpdXMsXG4gIGRpc2FibGVkLWxhYmVsLXRleHQtY29sb3I6IGJ1dHRvbi1zaGFyZWQtdGhlbWUuJGRpc2FibGVkLWluay1jb2xvcixcbiAgZGlzYWJsZWQtb3V0bGluZS1jb2xvcjogYnV0dG9uLXNoYXJlZC10aGVtZS4kZGlzYWJsZWQtY29udGFpbmVyLWNvbG9yLFxuICBmb2N1cy1sYWJlbC10ZXh0LWNvbG9yOiBudWxsLFxuICBmb2N1cy1vdXRsaW5lLWNvbG9yOiBudWxsLFxuICBmb2N1cy1zdGF0ZS1sYXllci1jb2xvcjogcHJpbWFyeSxcbiAgZm9jdXMtc3RhdGUtbGF5ZXItb3BhY2l0eTogMC4xMixcbiAgaG92ZXItbGFiZWwtdGV4dC1jb2xvcjogbnVsbCxcbiAgaG92ZXItb3V0bGluZS1jb2xvcjogbnVsbCxcbiAgaG92ZXItc3RhdGUtbGF5ZXItY29sb3I6IHByaW1hcnksXG4gIGhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHk6IDAuMDQsXG4gIGxhYmVsLXRleHQtY29sb3I6IHByaW1hcnksXG4gIGxhYmVsLXRleHQtZm9udDogYnV0dG9uLWZvbnQtZmFtaWx5LFxuICBsYWJlbC10ZXh0LXNpemU6IGJ1dHRvbi1mb250LXNpemUsXG4gIGxhYmVsLXRleHQtdHJhY2tpbmc6IGJ1dHRvbi1sZXR0ZXItc3BhY2luZyxcbiAgbGFiZWwtdGV4dC10cmFuc2Zvcm06IGJ1dHRvbi10ZXh0LXRyYW5zZm9ybSxcbiAgbGFiZWwtdGV4dC13ZWlnaHQ6IGJ1dHRvbi1mb250LXdlaWdodCxcbiAgb3V0bGluZS1jb2xvcjogJG91dGxpbmUtY29sb3IsXG4gIG91dGxpbmUtd2lkdGg6ICRvdXRsaW5lZC1ib3JkZXItd2lkdGgsXG4gIHByZXNzZWQtbGFiZWwtdGV4dC1jb2xvcjogbnVsbCxcbiAgcHJlc3NlZC1zdGF0ZS1sYXllci1jb2xvcjogcHJpbWFyeSxcbiAgcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5OiAwLjEyLFxuICB3aXRoLWljb24taWNvbi1jb2xvcjogbnVsbCxcbiAgd2l0aC1pY29uLWljb24tc2l6ZTogMThweCxcbiAgd2l0aC1pY29uLWhvdmVyLWljb24tY29sb3I6IG51bGwsXG4gIHdpdGgtaWNvbi1mb2N1cy1pY29uLWNvbG9yOiBudWxsLFxuICB3aXRoLWljb24tcHJlc3NlZC1pY29uLWNvbG9yOiBudWxsLFxuICB3aXRoLWljb24tZGlzYWJsZWQtaWNvbi1jb2xvcjogbnVsbCxcbik7XG5cbi8vLyBTZXRzIHRoZW1lIGJhc2VkIG9uIHByb3ZpZGVkIHRoZW1lIGNvbmZpZ3VyYXRpb24uXG4vLy8gT25seSBlbWl0cyB0aGVtZSByZWxhdGVkIHN0eWxlcy5cbi8vLyBAcGFyYW0ge01hcH0gJHRoZW1lIC0gVGhlbWUgY29uZmlndXJhdGlvbiB0byB1c2UuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLCAkcmVzb2x2ZXI6IHJlc29sdmVycy4kbWF0ZXJpYWwpIHtcbiAgQGluY2x1ZGUgdGhlbWUudmFsaWRhdGUtdGhlbWUoJGxpZ2h0LXRoZW1lLCAkdGhlbWUpO1xuICAkdGhlbWU6IGJ1dHRvbi1zaGFyZWQtdGhlbWUucmVzb2x2ZS10aGVtZS1lbGV2YXRpb24ta2V5cyhcbiAgICAkdGhlbWUsXG4gICAgJHJlc29sdmVyOiAkcmVzb2x2ZXJcbiAgKTtcbiAgQGluY2x1ZGUga2V5cy5kZWNsYXJlLWN1c3RvbS1wcm9wZXJ0aWVzKCR0aGVtZSwgJF9jdXN0b20tcHJvcGVydHktcHJlZml4KTtcbn1cblxuQG1peGluIHRoZW1lLXN0eWxlcyhcbiAgJHRoZW1lLFxuICAkcmVzb2x2ZXI6IHJlc29sdmVycy4kbWF0ZXJpYWwsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZS1rZXlzKCRsaWdodC10aGVtZSwgJHRoZW1lKTtcbiAgJHRoZW1lOiBrZXlzLmNyZWF0ZS10aGVtZS1wcm9wZXJ0aWVzKFxuICAgICR0aGVtZSxcbiAgICAkcHJlZml4OiAkX2N1c3RvbS1wcm9wZXJ0eS1wcmVmaXhcbiAgKTtcbiAgQGluY2x1ZGUgX3RoZW1lKCR0aGVtZSwgJHJlc29sdmVyLCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfdGhlbWUoJHRoZW1lLCAkcmVzb2x2ZXIsICRxdWVyeSkge1xuICBAaW5jbHVkZSBidXR0b24tc2hhcmVkLXRoZW1lLnRoZW1lKCR0aGVtZSwgJHJlc29sdmVyLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIG91dGxpbmUtY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIG91dGxpbmUtY29sb3IpLFxuICAgICAgZGlzYWJsZWQ6IG1hcC5nZXQoJHRoZW1lLCBkaXNhYmxlZC1vdXRsaW5lLWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgZm9jdXMtb3V0bGluZS1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIGhvdmVyLW91dGxpbmUtY29sb3IpLFxuICAgICksXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgb3V0bGluZS13aWR0aChtYXAuZ2V0KCR0aGVtZSwgb3V0bGluZS13aWR0aCksICRxdWVyeTogJHF1ZXJ5KTtcbn1cblxuQG1peGluIGRlcHJlY2F0ZWQtdGhlbWUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLm1kYy1idXR0b24tLW91dGxpbmVkIHtcbiAgICAkdGhlbWU6IG1hcC5tZXJnZShcbiAgICAgICRsaWdodC10aGVtZSxcbiAgICAgIChcbiAgICAgICAgZm9jdXMtc3RhdGUtbGF5ZXItY29sb3I6IG51bGwsXG4gICAgICAgIGZvY3VzLXN0YXRlLWxheWVyLW9wYWNpdHk6IG51bGwsXG4gICAgICAgIGhvdmVyLXN0YXRlLWxheWVyLWNvbG9yOiBudWxsLFxuICAgICAgICBob3Zlci1zdGF0ZS1sYXllci1vcGFjaXR5OiBudWxsLFxuICAgICAgICBwcmVzc2VkLXN0YXRlLWxheWVyLWNvbG9yOiBudWxsLFxuICAgICAgICBwcmVzc2VkLXN0YXRlLWxheWVyLW9wYWNpdHk6IG51bGwsXG4gICAgICAgIGxhYmVsLXRleHQtZm9udDogbnVsbCxcbiAgICAgICAgbGFiZWwtdGV4dC1zaXplOiBudWxsLFxuICAgICAgICBsYWJlbC10ZXh0LXRyYWNraW5nOiBudWxsLFxuICAgICAgICBsYWJlbC10ZXh0LXRyYW5zZm9ybTogbnVsbCxcbiAgICAgICAgbGFiZWwtdGV4dC13ZWlnaHQ6IG51bGwsXG4gICAgICApXG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdGhlbWUoJHRoZW1lLCByZXNvbHZlcnMuJG1hdGVyaWFsLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgb3V0bGluZSBjb2xvciB0byB0aGUgZ2l2ZW4gY29sb3IgZm9yIGFuIGVuYWJsZWQgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvci1vci1tYXAgLSBUaGUgZGVzaXJlZCBvdXRsaW5lIGNvbG9yLCBzcGVjaWZpZWQgZWl0aGVyXG4vLy8gICAgIGFzIGEgZmxhdCB2YWx1ZSBvciBhIG1hcCBvZiBjb2xvcnMgd2l0aCBzdGF0ZXNcbi8vLyAgICAge2RlZmF1bHQsIGhvdmVyLCBmb2N1c2VkLCBwcmVzc2VkLCBkaXNhYmxlZH0gYXMga2V5cy5cbi8vL1xuQG1peGluIG91dGxpbmUtY29sb3IoJGNvbG9yLW9yLW1hcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBAaW5jbHVkZSBfb3V0bGluZS1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kZWZhdWx0LXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBAaW5jbHVkZSBfb3V0bGluZS1jb2xvcihcbiAgICAgICAgc3RhdGUuZ2V0LWhvdmVyLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuZm9jdXMoKSB7XG4gICAgICBAaW5jbHVkZSBfb3V0bGluZS1jb2xvcihcbiAgICAgICAgc3RhdGUuZ2V0LWZvY3VzLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJbmNyZWFzZSBhY3RpdmUgc3RhdGUgc3BlY2lmaWNpdHkgZHVlIHRvIHJpcHBsZS10aGVtZS5mb2N1cygpLlxuICAgICY6YWN0aXZlLFxuICAgICY6Zm9jdXM6YWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIF9vdXRsaW5lLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtcHJlc3NlZC1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX291dGxpbmUtY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgb3V0bGluZSBjb2xvciB0byB0aGUgZ2l2ZW4gY29sb3IgZm9yIGEgZGlzYWJsZWQgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIG91dGxpbmUgY29sb3IuXG4vLy8gQGRlcHJlY2F0ZWQgLSBjYWxsIGBvdXRsaW5lLWNvbG9yYCBpbnN0ZWFkIHdpdGggYGRpc2FibGVkYCBhcyBhIG1hcCBrZXkuXG4vLy9cbkBtaXhpbiBkaXNhYmxlZC1vdXRsaW5lLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBvdXRsaW5lLWNvbG9yKFxuICAgIChcbiAgICAgIGRpc2FibGVkOiAkY29sb3IsXG4gICAgKSxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xufVxuXG5AbWl4aW4gb3V0bGluZS13aWR0aChcbiAgJG91dGxpbmUtd2lkdGgsXG4gICRwYWRkaW5nOiBidXR0b24tc2hhcmVkLXRoZW1lLiRjb250YWluZWQtaG9yaXpvbnRhbC1wYWRkaW5nLFxuICAvLyBGb3IgYSBidXR0b24gd2l0aCBhbiBpY29uLCB0aGUgcGFkZGluZyBvbiB0aGUgc2lkZSBvZiB0aGUgYnV0dG9uIHdpdGggdGhlXG4gIC8vIGljb24uXG4gICRwYWRkaW5nLWljb246IGJ1dHRvbi1zaGFyZWQtdGhlbWUuJGNvbnRhaW5lZC1ob3Jpem9udGFsLXBhZGRpbmctaWNvbixcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGlmICRvdXRsaW5lLXdpZHRoICE9IG51bGwge1xuICAgICRvdXRsaW5lLXdpZHRoLXZhbHVlOiBpZihcbiAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRvdXRsaW5lLXdpZHRoKSxcbiAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmdldC1mYWxsYmFjaygkb3V0bGluZS13aWR0aCksXG4gICAgICAkb3V0bGluZS13aWR0aFxuICAgICk7XG4gICAgLy8gVE9ETyhiLzE5NDc5MjA0NCk6IHVuY291cGxlIHBhZGRpbmcgZnJvbSBvdXRsaW5lLXdpZHRoXG4gICAgLy8gTm90ZTogQWRqdXN0IHBhZGRpbmcgdG8gbWFpbnRhaW4gY29uc2lzdGVudCB3aWR0aCB3aXRoIG5vbi1vdXRsaW5lZCBidXR0b25zXG4gICAgJHBhZGRpbmctdmFsdWU6IG1hdGgubWF4KCRwYWRkaW5nIC0gJG91dGxpbmUtd2lkdGgtdmFsdWUsIDApO1xuICAgICRwYWRkaW5nLWljb24tdmFsdWU6IG1hdGgubWF4KCRwYWRkaW5nLWljb24gLSAkb3V0bGluZS13aWR0aC12YWx1ZSwgMCk7XG5cbiAgICBAaW5jbHVkZSBidXR0b24tc2hhcmVkLXRoZW1lLmhvcml6b250YWwtcGFkZGluZyhcbiAgICAgICRwYWRkaW5nOiAkcGFkZGluZy12YWx1ZSxcbiAgICAgICRwYWRkaW5nLWljb246ICRwYWRkaW5nLWljb24tdmFsdWUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYm9yZGVyLXdpZHRoLCAkb3V0bGluZS13aWR0aCk7XG4gICAgfVxuXG4gICAgI3tidXR0b24tcmlwcGxlLiRyaXBwbGUtdGFyZ2V0fSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSh0b3AsIC0xICogJG91dGxpbmUtd2lkdGgtdmFsdWUpO1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShsZWZ0LCAtMSAqICRvdXRsaW5lLXdpZHRoLXZhbHVlKTtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYm90dG9tLCAtMSAqICRvdXRsaW5lLXdpZHRoLXZhbHVlKTtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkocmlnaHQsIC0xICogJG91dGxpbmUtd2lkdGgtdmFsdWUpO1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShib3JkZXItd2lkdGgsICRvdXRsaW5lLXdpZHRoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLm1kYy1idXR0b25fX3RvdWNoIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KFxuICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgJ2NhbGMoLTEgKiBvdXRsaW5lLXdpZHRoKScsXG4gICAgICAgICAgJHJlcGxhY2U6IChvdXRsaW5lLXdpZHRoOiAkb3V0bGluZS13aWR0aClcbiAgICAgICAgKTtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoXG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgJ2NhbGMoMTAwJSArIDIgKiBvdXRsaW5lLXdpZHRoKScsXG4gICAgICAgICAgJHJlcGxhY2U6IChvdXRsaW5lLXdpZHRoOiAkb3V0bGluZS13aWR0aClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgb3V0bGluZSBjb2xvciB0byB0aGUgZ2l2ZW4gY29sb3IuIFRoaXMgbWl4aW4gc2hvdWxkIGJlXG4vLy8gd3JhcHBlZCBpbiBhIHNlbGVjdG9yIHRoYXQgcXVhbGlmaWVzIGJ1dHRvbiBzdGF0ZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIF9vdXRsaW5lLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaWYgJGNvbG9yIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShib3JkZXItY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTggR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vdmFyaWFibGVzJyBhcyBhbmltYXRpb24tdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuL3ZhcmlhYmxlcyc7XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG5cbiAgLy8gcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgZmxvYXRpbmctbGFiZWxcbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50eXBvZ3JhcGh5KFxuICAgICAgc3VidGl0bGUxLFxuICAgICAgJGV4Y2x1ZGUtcHJvcHM6IChsaW5lLWhlaWdodCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1cmVtO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIGN1cnNvcjogdGV4dDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgIC8qIEBhbHRlcm5hdGUgKi9cbiAgICAgIC8vIEZvcmNlIHRoZSBsYWJlbCBpbnRvIGl0cyBvd24gbGF5ZXIgdG8gcHJldmVudCB2aXNpYmxlIGxheWVyIHByb21vdGlvbiBhZGp1c3RtZW50c1xuICAgICAgLy8gd2hlbiB0aGUgcmlwcGxlIGlzIGFjdGl2YXRlZCBiZWhpbmQgaXQuXG4gICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuXG4gICAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyaWFibGVzLiR0cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgICAgYW5pbWF0aW9uLXZhcmlhYmxlcy4kc3RhbmRhcmQtY3VydmUtdGltaW5nLWZ1bmN0aW9uLFxuICAgICAgICBjb2xvciB2YXJpYWJsZXMuJHRyYW5zaXRpb24tZHVyYXRpb25cbiAgICAgICAgICBhbmltYXRpb24tdmFyaWFibGVzLiRzdGFuZGFyZC1jdXJ2ZS10aW1pbmctZnVuY3Rpb247XG4gICAgfVxuICB9XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBjdXJzb3I6IGF1dG87XG4gICAgfVxuICB9XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbC0tcmVxdWlyZWQge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIF9yZXF1aXJlZC1jb250ZW50KCRxdWVyeSk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIF9yZXF1aXJlZC1jb250ZW50LXJ0bCgkcXVlcnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBhdC1yb290IHtcbiAgICBAaW5jbHVkZSBmbG9hdC1wb3NpdGlvbih2YXJpYWJsZXMuJHBvc2l0aW9uLXksICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBzaGFrZS1hbmltYXRpb24oc3RhbmRhcmQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHNoYWtlLWtleWZyYW1lcyhzdGFuZGFyZCwgdmFyaWFibGVzLiRwb3NpdGlvbi15LCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBpbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbiAgfVxufVxuXG4vLyBVc2VkIGZvciB0ZXh0YXJlYSBpbiBjYXNlIG9mIHNjcm9sbGluZ1xuQG1peGluIGZpbGwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShiYWNrZ3JvdW5kLWNvbG9yLCAkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBzaGFrZS1rZXlmcmFtZXMoXG4gICRtb2RpZmllcixcbiAgJHBvc2l0aW9uWSxcbiAgJHBvc2l0aW9uWDogMCUsXG4gICRzY2FsZTogdmFyaWFibGVzLiRmbG9hdC1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICBAa2V5ZnJhbWVzIG1kYy1mbG9hdGluZy1sYWJlbC1zaGFrZS1mbG9hdC1hYm92ZS0jeyRtb2RpZmllcn0ge1xuICAgICAgMCUge1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygwIC0gI3skcG9zaXRpb25YfSkpXG4gICAgICAgICAgdHJhbnNsYXRlWSgtI3skcG9zaXRpb25ZfSkgc2NhbGUoI3skc2NhbGV9KTtcbiAgICAgIH1cblxuICAgICAgMzMlIHtcbiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNSwgMCwgMC43MDE3MzIsIDAuNDk1ODE5KTtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoNCUgLSAjeyRwb3NpdGlvblh9KSlcbiAgICAgICAgICB0cmFuc2xhdGVZKC0jeyRwb3NpdGlvbll9KSBzY2FsZSgjeyRzY2FsZX0pO1xuICAgICAgfVxuXG4gICAgICA2NiUge1xuICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoXG4gICAgICAgICAgMC4zMDI0MzUsXG4gICAgICAgICAgMC4zODEzNTIsXG4gICAgICAgICAgMC41NSxcbiAgICAgICAgICAwLjk1NjM1MlxuICAgICAgICApO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygtNCUgLSAjeyRwb3NpdGlvblh9KSlcbiAgICAgICAgICB0cmFuc2xhdGVZKC0jeyRwb3NpdGlvbll9KSBzY2FsZSgjeyRzY2FsZX0pO1xuICAgICAgfVxuXG4gICAgICAxMDAlIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMCAtICN7JHBvc2l0aW9uWH0pKVxuICAgICAgICAgIHRyYW5zbGF0ZVkoLSN7JHBvc2l0aW9uWX0pIHNjYWxlKCN7JHNjYWxlfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmbG9hdC1wb3NpdGlvbihcbiAgJHBvc2l0aW9uWSxcbiAgJHBvc2l0aW9uWDogMCUsXG4gICRzY2FsZTogdmFyaWFibGVzLiRmbG9hdC1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaWYgJHBvc2l0aW9uWCA+IDAgb3IgJHBvc2l0aW9uWCA8IDAge1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEgKiAkcG9zaXRpb25ZKVxuICAgICAgICAgIHRyYW5zbGF0ZVgoLTEgKiAkcG9zaXRpb25YKVxuICAgICAgICAgIHNjYWxlKCRzY2FsZSk7XG5cbiAgICAgICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEgKiAkcG9zaXRpb25ZKSB0cmFuc2xhdGVYKCRwb3NpdGlvblgpXG4gICAgICAgICAgICBzY2FsZSgkc2NhbGUpO1xuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xICogJHBvc2l0aW9uWSkgc2NhbGUoJHNjYWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNoYWtlLWFuaW1hdGlvbigkbW9kaWZpZXIsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcblxuICAubWRjLWZsb2F0aW5nLWxhYmVsLS1zaGFrZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgIGFuaW1hdGlvbjogbWRjLWZsb2F0aW5nLWxhYmVsLXNoYWtlLWZsb2F0LWFib3ZlLSN7JG1vZGlmaWVyfSAyNTBtcyAxO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF4LXdpZHRoKCRtYXgtd2lkdGgsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBDU1MgdHJhbnNpdGlvbiBmb3IgdGhlIGZsb2F0aW5nIGFuaW1hdGlvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZHVyYXRpb24tbXMgLSBEdXJhdGlvbiAoaW4gbXMpIG9mIHRoZSBhbmltYXRpb24uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0aW1pbmctZnVuY3Rpb24gLSBPcHRpb25hbGx5IG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBhbmltYXRpb24gdGltaW5nIGZ1bmN0aW9uLlxuLy8vXG5AbWl4aW4gZmxvYXQtdHJhbnNpdGlvbihcbiAgJGR1cmF0aW9uLW1zLFxuICAkdGltaW5nLWZ1bmN0aW9uOiBhbmltYXRpb24tdmFyaWFibGVzLiRzdGFuZGFyZC1jdXJ2ZS10aW1pbmctZnVuY3Rpb24sXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgJGR1cmF0aW9uLW1zICR0aW1pbmctZnVuY3Rpb24sXG4gICAgICB0cmFuc2Zvcm0gJGR1cmF0aW9uLW1zICR0aW1pbmctZnVuY3Rpb247XG4gIH1cbn1cblxuQG1peGluIF9yZXF1aXJlZC1jb250ZW50KCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgbWFyZ2luLWxlZnQ6IDFweDtcbiAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgIG1hcmdpbi1yaWdodDogMHB4O1xuICAgIGNvbnRlbnQ6ICcqJztcbiAgfVxufVxuXG4vLyBOZWVkIHRvIHNwZWNpZnkgTFRSL1JUTCBtYW51YWxseSBzaW5jZSBydGwgbWl4aW5zIHdpbGwgYWRkIDo6YWZ0ZXJbZGlyPXJ0bF1cbi8vIHNlbGVjdG9yIGFuZCB0aGF0IGJyZWFrcyBzb21lIGJyb3dzZXJzXG5AbWl4aW4gX3JlcXVpcmVkLWNvbnRlbnQtcnRsKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICBtYXJnaW4tcmlnaHQ6IDFweDtcbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE4IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2N1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvc2hhcGUvZnVuY3Rpb25zJyBhcyBzaGFwZS1mdW5jdGlvbnM7XG5AdXNlICdAbWF0ZXJpYWwvc2hhcGUvbWl4aW5zJyBhcyBzaGFwZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvZmxvYXRpbmctbGFiZWwvbWl4aW5zJyBhcyBmbG9hdGluZy1sYWJlbC1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnLi92YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29yZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lIHtcbiAgICBAaW5jbHVkZSBiYXNlXygkcXVlcnkpO1xuXG4gICAgJl9fbGVhZGluZyxcbiAgICAmX19ub3RjaCxcbiAgICAmX190cmFpbGluZyB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJvcmRlci10b3A6IHZhcmlhYmxlcy4kYm9yZGVyLXdpZHRoIHNvbGlkO1xuICAgICAgICBib3JkZXItYm90dG9tOiB2YXJpYWJsZXMuJGJvcmRlci13aWR0aCBzb2xpZDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fbGVhZGluZyB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KFxuICAgICAgICAgIGJvcmRlcixcbiAgICAgICAgICB2YXJpYWJsZXMuJGJvcmRlci13aWR0aCBzb2xpZCxcbiAgICAgICAgICBub25lXG4gICAgICAgICk7XG5cbiAgICAgICAgd2lkdGg6IHZhcmlhYmxlcy4kbGVhZGluZy13aWR0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX190cmFpbGluZyB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KFxuICAgICAgICAgIGJvcmRlcixcbiAgICAgICAgICBub25lLFxuICAgICAgICAgIHZhcmlhYmxlcy4kYm9yZGVyLXdpZHRoIHNvbGlkXG4gICAgICAgICk7XG5cbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX25vdGNoIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAje3ZhcmlhYmxlcy4kbGVhZGluZy13aWR0aH0gKiAyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWRjLWZsb2F0aW5nLWxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLS11cGdyYWRlZCAubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAvIDAuNzUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lLS1ub3RjaGVkIHtcbiAgICAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1ib3gocGFkZGluZywgcmlnaHQsIDhweCk7XG5cbiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLW5vdGNoZWQtb3V0bGluZS0tbm8tbGFiZWwge1xuICAgIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxuICAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gsXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYm9yZGVyLWNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc3Ryb2tlLXdpZHRoKCR3aWR0aCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxuICAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gsXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGJvcmRlci13aWR0aDogJHdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBBZGRzIHRvcCBvZmZzZXQgdG8gY29tcGVuc2F0ZSBmb3IgYm9yZGVyIHdpZHRoIGJveCBzaXplIHdoZW4gaXQgaXMgbm90Y2hlZC5cbi8vLyBVc2UgdGhpcyB3aGVuIGZsb2F0aW5nIGxhYmVsIGlzIGFsaWduZWQgdG8gY2VudGVyIHRvIHByZXZlbnQgbGFiZWwganVtcCBvbiBmb2N1cy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0cm9rZS13aWR0aCBTdHJva2Ugd2lkdGggb2Ygbm90Y2hlZCBvdXRsaW5lIHRoYXQgbmVlZHMgdG8gYmUgb2Zmc2V0LlxuLy8vXG5AbWl4aW4gbm90Y2gtb2Zmc2V0KCRzdHJva2Utd2lkdGgsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLW5vdGNoZWQtb3V0bGluZS0tbm90Y2hlZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBwYWRkaW5nLXRvcDogJHN0cm9rZS13aWR0aDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNoYXBlLXJhZGl1cyhcbiAgJHJhZGl1cyxcbiAgJHJ0bC1yZWZsZXhpdmU6IGZhbHNlLFxuICAkY29tcG9uZW50LWhlaWdodDogbnVsbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gIC8vIFJlc29sdmUgdGhlIHJhZGl1cyByZWxhdGl2ZSB0byB0aGUgbm90Y2hlZCBvdXRsaW5lIGNvbXBvbmVudCdzIGhlaWdodC4gVGhlXG4gIC8vIGNvbXBvbmVudCBzaG91bGQgcHJvdmlkZSBpdHMgY3VycmVudCBoZWlnaHQgZnJvbSBpdHMgZGVuc2l0eS4gVGhlIHJlc29sdmVkXG4gIC8vIHJhZGl1cyBhbGxvd3MgcGVyY2VudGFnZSByYWRpaSB0byBiZSBjb252ZXJ0ZWQgdG8gcGl4ZWxzLlxuICAkcmVzb2x2ZWQtcmFkaXVzOiBzaGFwZS1mdW5jdGlvbnMucmVzb2x2ZS1yYWRpdXMoXG4gICAgJHJhZGl1cyxcbiAgICAkY29tcG9uZW50LWhlaWdodDogJGNvbXBvbmVudC1oZWlnaHRcbiAgKTtcblxuICAvLyBHcmFiIHRoZSB0b3AtbGVmdCByYWRpdXMuIFdlJ2xsIG5lZWQgaXQgdG8gYWRqdXN0IHRoZSBsZWFkaW5nIGZvciB0aGVcbiAgLy8gbGFiZWwgbm90Y2ggaWYgdGhlIHJlc3VsdGluZyByYWRpdXMgc2hhcGUgaXMgbGFyZ2VyIHRoYW4gdGhlIGRlZmF1bHRcbiAgLy8gbGVhZGluZy5cbiAgJHRvcC1sZWZ0LXJhZGl1czogbGlzdC5udGgoXG4gICAgc2hhcGUtZnVuY3Rpb25zLnVucGFjay1yYWRpdXMoJHJlc29sdmVkLXJhZGl1cyksXG4gICAgMVxuICApO1xuICAkdG9wLWxlZnQtaXMtY3VzdG9tLXByb3A6IGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCR0b3AtbGVmdC1yYWRpdXMpO1xuICAkdG9wLWxlZnQtcmFkaXVzLXB4OiAkdG9wLWxlZnQtcmFkaXVzO1xuICBAaWYgKCR0b3AtbGVmdC1pcy1jdXN0b20tcHJvcCkge1xuICAgICR0b3AtbGVmdC1yYWRpdXMtcHg6IGN1c3RvbS1wcm9wZXJ0aWVzLmdldC1mYWxsYmFjaygkdG9wLWxlZnQtcmFkaXVzKTtcbiAgfVxuXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nIHtcbiAgICAvLyBtYXNrIHRoZSBsZWFkaW5nIHRvIGFwcGx5IHRoZSB0b3AtbGVmdCBhbmQgYm90dG9tLWxlZnQgY29ybmVyc1xuICAgIEBpbmNsdWRlIHNoYXBlLW1peGlucy5yYWRpdXMoXG4gICAgICBzaGFwZS1mdW5jdGlvbnMubWFzay1yYWRpdXMoJHJhZGl1cywgMSAwIDAgMSksXG4gICAgICAkcnRsLXJlZmxleGl2ZTogdHJ1ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OiAkY29tcG9uZW50LWhlaWdodCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaWYgKCR0b3AtbGVmdC1yYWRpdXMtcHggPiB2YXJpYWJsZXMuJGxlYWRpbmctd2lkdGgpIHtcbiAgICAgICAgLy8gSWYgdGhlIHJhZGl1cyBpcyBiaWdnZXIgdGhhbiB0aGUgZGVmYXVsdCBsZWFkaW5nIHdpZHRoLCB3ZSBuZWVkIHRvXG4gICAgICAgIC8vIGluY3JlYXNlIHRoZSBsZWFkaW5nIHdpZHRoXG4gICAgICAgIHdpZHRoOiAkdG9wLWxlZnQtcmFkaXVzLXB4O1xuICAgICAgICBAaWYgKCR0b3AtbGVmdC1pcy1jdXN0b20tcHJvcCkge1xuICAgICAgICAgIC8vIFRoZSByYWRpdXMgbWF5IGJlIGEgY3VzdG9tIHByb3BlcnR5LCBpbiB3aGljaCBjYXNlIHRoZSBhYm92ZSB3aWR0aFxuICAgICAgICAgIC8vIGlzIHRoZSBJRTExIGZhbGxiYWNrIHZhbHVlLlxuICAgICAgICAgIC8qIEBhbHRlcm5hdGUgKi9cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgKCR0b3AtbGVmdC1pcy1jdXN0b20tcHJvcCkge1xuICAgICAgICAvLyBJZiB0aGUgdG9wLWxlZnQgcmFkaXVzIGlzIGR5bmFtaWMsIHRoZSB3aWR0aCBvZiB0aGUgbGVhZGluZyBpc1xuICAgICAgICAvLyB0aGUgbWF4IG9mIHdoaWNoZXZlciBpcyBsYXJnZXI6IHRoZSBkZWZhdWx0IGxlYWRpbmcgd2lkdGggb3IgdGhlXG4gICAgICAgIC8vIHZhbHVlIG9mIHRoZSBjdXN0b20gcHJvcGVydHkuXG4gICAgICAgICR2YXI6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZS12YXIoJHRvcC1sZWZ0LXJhZGl1cyk7XG4gICAgICAgIC8vIEludGVycG9sYXRpb24gaXMgYSB3b3JrYXJvdW5kIGZvciBzYXNzL3Nhc3MjMzI1OS5cbiAgICAgICAgQHN1cHBvcnRzICh0b3A6IG1heCgjezAlfSkpIHtcbiAgICAgICAgICB3aWR0aDogbWF4KCN7dmFyaWFibGVzLiRsZWFkaW5nLXdpZHRofSwgI3skdmFyfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTaW1pbGFyIHRvIGFib3ZlLCBhZGp1c3QgdGhlIG1heC13aWR0aCBvZiB0aGUgbm90Y2ggaWYgd2UgYWRqdXN0ZWQgdGhlXG4gIC8vIGxlYWRpbmcncyB3aWR0aC5cbiAgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGlmICgkdG9wLWxlZnQtcmFkaXVzLXB4ID4gdmFyaWFibGVzLiRsZWFkaW5nLXdpZHRoKSB7XG4gICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gI3skdG9wLWxlZnQtcmFkaXVzLXB4fSAqIDIpO1xuICAgICAgICBAaWYgKCR0b3AtbGVmdC1pcy1jdXN0b20tcHJvcCkge1xuICAgICAgICAgIC8qIEBhbHRlcm5hdGUgKi9cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgKCR0b3AtbGVmdC1pcy1jdXN0b20tcHJvcCkge1xuICAgICAgICAkdmFyOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUtdmFyKCR0b3AtbGVmdC1yYWRpdXMpO1xuICAgICAgICAvLyBJbnRlcnBvbGF0aW9uIGlzIGEgd29ya2Fyb3VuZCBmb3Igc2Fzcy9zYXNzIzMyNTkuXG4gICAgICAgIEBzdXBwb3J0cyAodG9wOiBtYXgoI3swJX0pKSB7XG4gICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSBtYXgoI3t2YXJpYWJsZXMuJGxlYWRpbmctd2lkdGh9LCAjeyR2YXJ9KSAqIDIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1ub3RjaGVkLW91dGxpbmVfX3RyYWlsaW5nIHtcbiAgICAvLyBtYXNrIHRoZSBsZWFkaW5nIHRvIGFwcGx5IHRoZSB0b3AtcmlnaHQgYW5kIGJvdHRvbS1yaWdodCBjb3JuZXJzXG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cyhcbiAgICAgIHNoYXBlLWZ1bmN0aW9ucy5tYXNrLXJhZGl1cygkcmFkaXVzLCAwIDEgMSAwKSxcbiAgICAgICRydGwtcmVmbGV4aXZlOiB0cnVlLFxuICAgICAgJGNvbXBvbmVudC1oZWlnaHQ6ICRjb21wb25lbnQtaGVpZ2h0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBmbG9hdGluZy1sYWJlbC1mbG9hdC1wb3NpdGlvbihcbiAgJHBvc2l0aW9uWSxcbiAgJHBvc2l0aW9uWDogMCUsXG4gICRzY2FsZTogMC43NSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLmZsb2F0LXBvc2l0aW9uKFxuICAgICRwb3NpdGlvblkgKyB2YXJpYWJsZXMuJGxhYmVsLWFkanVzdCxcbiAgICAkcG9zaXRpb25YLFxuICAgIDEsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICAubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGZvbnQtc2l6ZTogKCRzY2FsZSAqIDFyZW0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFR3byBzZWxlY3RvcnMgdG8gZW5zdXJlIHdlIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgY2xhc3Mgd2hlbiBhcHBsaWVkIGZyb20gdGhpcyBjb21wb25lbnQgb3IgYSBwYXJlbnQgY29tcG9uZW50LlxuICAmLm1kYy1ub3RjaGVkLW91dGxpbmUtLXVwZ3JhZGVkLFxuICAubWRjLW5vdGNoZWQtb3V0bGluZS0tdXBncmFkZWQge1xuICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5mbG9hdC1wb3NpdGlvbihcbiAgICAgICRwb3NpdGlvblksXG4gICAgICAkcG9zaXRpb25YLFxuICAgICAgJHNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIGZsb2F0aW5nIGxhYmVsIHBvc2l0aW9uIGluIG5vdGNoZWQgb3V0bGluZSB3aGVuIGxhYmVsIGlzIGFmbG9hdC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcG9zaXRpb25ZIEFic29sdXRlIFktYXhpcyBwb3NpdGlvbiBpbiBgcHhgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcG9zaXRpb25YIEFic29sdXRlIFgtYXhpcyBwb3NpdGlvbiBpbiBgcHhgLiBEZWZhdWx0cyB0byBgMGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZSBEZWZhdWx0cyB0byBgLjc1YC5cbi8vL1xuLy8vIEB0b2RvIFJlcGxhY2UgbWl4aW4gYG1kYy1ub3RjaGVkLW91dGxpbmUtZmxvYXRpbmctbGFiZWwtZmxvYXQtcG9zaXRpb25gIHdpdGggdGhpcyBtaXhpbiB3aGVuIGZsb2F0aW5nIGxhYmVsIGlzXG4vLy8gICAgIGNlbnRlciBhbGlnbmVkIGluIGFsbCB0aGUgcGxhY2VzLlxuLy8vXG5AbWl4aW4gZmxvYXRpbmctbGFiZWwtZmxvYXQtcG9zaXRpb24tYWJzb2x1dGUoXG4gICRwb3NpdGlvblksXG4gICRwb3NpdGlvblg6IDAsXG4gICRzY2FsZTogMC43NSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLmZsb2F0LXBvc2l0aW9uKFxuICAgICRwb3NpdGlvblkgKyB2YXJpYWJsZXMuJGxhYmVsLWFkanVzdC1hYnNvbHV0ZSxcbiAgICAkcG9zaXRpb25YLFxuICAgIDEsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICAubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGZvbnQtc2l6ZTogKCRzY2FsZSAqIDFyZW0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFR3byBzZWxlY3RvcnMgdG8gZW5zdXJlIHdlIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgY2xhc3Mgd2hlbiBhcHBsaWVkIGZyb20gdGhpcyBjb21wb25lbnQgb3IgYSBwYXJlbnQgY29tcG9uZW50LlxuICAmLm1kYy1ub3RjaGVkLW91dGxpbmUtLXVwZ3JhZGVkLFxuICAubWRjLW5vdGNoZWQtb3V0bGluZS0tdXBncmFkZWQge1xuICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5mbG9hdC1wb3NpdGlvbihcbiAgICAgICRwb3NpdGlvblksXG4gICAgICAkcG9zaXRpb25YLFxuICAgICAgJHNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBtYXgtd2lkdGggZm9yIHRoZSBub3RjaFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXgtd2lkdGggTWF4LXdpZHRoIGZvciB0aGUgbm90Y2hcbi8vL1xuQG1peGluIG5vdGNoLW1heC13aWR0aCgkbWF4LXdpZHRoLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgOm5vdCgubWRjLW5vdGNoZWQtb3V0bGluZS0tbm90Y2hlZCkgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG4vL1xuLy8gUHJpdmF0ZVxuLy9cbkBtaXhpbiBiYXNlXygkcXVlcnkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIGNvbnN0YW50cy5udW1iZXJzLk1JTl9MRUFESU5HX1NUUk9LRV9FREdFX1BPU0lUSU9OXG4kbWluLWxlYWRpbmctc3Ryb2tlLWVkZ2UtcG9zaXRpb246IDEycHggIWRlZmF1bHQ7XG4vLyBUaGUgZ2FwIGJldHdlZW4gdGhlIHN0cm9rZSBlbmQgYW5kIGZsb2F0aW5nIGxhYmVsXG4vLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIGNvbnN0YW50cy5udW1iZXJzLk5PVENIX0dVVFRFUl9TSVpFXG4kbm90Y2gtZ3V0dGVyLXNpemU6IDRweCAhZGVmYXVsdDtcbiRib3JkZXItd2lkdGg6IDFweCAhZGVmYXVsdDtcbiRsZWFkaW5nLXdpZHRoOiAxMnB4ICFkZWZhdWx0O1xuJHBhZGRpbmc6IDRweCAhZGVmYXVsdDtcbi8vIFRoaXMgdmFyaWFibGUga2VlcHMgdGhlIGJlZm9yZS9hZnRlciBKUyBsYWJlbCBjZW50ZXJlZCBpbiB0aGUgbm90Y2ggd2hlbiB0aGUgZm9udC1zaXplIGlzIGNoYW5nZWQuXG4kbGFiZWwtYWRqdXN0OiAxNCUgIWRlZmF1bHQ7XG5cbi8vLyBMYWJlbCBib3ggaGVpZ2h0IHdoZW4gaXQgaXMgZmxvYXRpbmcgYWJvdmUgZm9yIG5vdGNoZWQgdXBncmFkZWQuIFRoaXMgdmFsdWUgaXMgdXNlZCB0byBwdXQgdGhlIGxhYmVsIHZlcnRpY2FsbHkgaW5cbi8vLyB0aGUgbWlkZGxlIHdoZW4gaXQgaXMgbm90Y2hlZC5cbiRsYWJlbC1ib3gtaGVpZ2h0OiAxMy41cHggIWRlZmF1bHQ7XG5cbi8vLyBMYWJlbCBhZGp1c3Qgb2Zmc2V0IGFwcGxpZWQgdG8gZmxvYXRpbmcgbGFiZWwgd2hlbiBpdCBpcyBub3RjaGVkLiBTaW5jZSBub3RjaCB3aXRob3V0IHVwZ3JhZGVkIGhhcyBkaWZmZXJlbnQgZm9udFxuLy8vIHNpemUgd2UgYWRkIGFkZGl0aW9uYWwgb2Zmc2V0IHZhbHVlLlxuJGxhYmVsLWFkanVzdC1hYnNvbHV0ZTogMi41cHggIWRlZmF1bHQ7XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vYW5pbWF0aW9uJztcbkB1c2UgJ0BtYXRlcmlhbC9kb20vZG9tJztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvcmlwcGxlL3JpcHBsZSc7XG5AdXNlICdAbWF0ZXJpYWwvcmlwcGxlL3JpcHBsZS10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvdG91Y2gtdGFyZ2V0L21peGlucycgYXMgdG91Y2gtdGFyZ2V0LW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC90b3VjaC10YXJnZXQvdmFyaWFibGVzJyBhcyB0b3VjaC10YXJnZXQtdmFyaWFibGVzO1xuQHVzZSAnLi9yYWRpby10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvZm9jdXMtcmluZy9mb2N1cy1yaW5nJztcblxuJHJpcHBsZS10YXJnZXQ6IHJhZGlvLXRoZW1lLiRyaXBwbGUtdGFyZ2V0O1xuXG4vLy9cbi8vLyBSYWRpbyBjb3JlIHN0eWxlcy5cbi8vL1xuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgd2l0aG91dC1yaXBwbGUoJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgcmlwcGxlKCRxdWVyeSk7XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1yYWRpbyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICB3aWR0aDogcmFkaW8tdGhlbWUuJGljb24tc2l6ZTtcbiAgICAgIGhlaWdodDogcmFkaW8tdGhlbWUuJGljb24tc2l6ZTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIC8qIEBhbHRlcm5hdGUgKi9cbiAgICAgIHdpbGwtY2hhbmdlOiBvcGFjaXR5LCB0cmFuc2Zvcm0sIGJvcmRlci1jb2xvciwgY29sb3I7XG4gICAgfVxuXG4gICAgLy8gQ29udGFpbmVyIGZvciByYWRpbyBjaXJjbGVzIGFuZCByaXBwbGUuXG4gICAgJl9fYmFja2dyb3VuZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgd2lkdGg6IHJhZGlvLXRoZW1lLiRpY29uLXNpemU7XG4gICAgICAgIGhlaWdodDogcmFkaW8tdGhlbWUuJGljb24tc2l6ZTtcbiAgICAgIH1cblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogZXhpdChvcGFjaXR5KSwgZXhpdCh0cmFuc2Zvcm0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fb3V0ZXItY2lyY2xlIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICB0cmFuc2l0aW9uOiBleGl0KGJvcmRlci1jb2xvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9faW5uZXItY2lyY2xlIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDApO1xuICAgICAgICBib3JkZXItd2lkdGg6IDEwcHg7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgdHJhbnNpdGlvbjogZXhpdCh0cmFuc2Zvcm0pLCBleGl0KGJvcmRlci1jb2xvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fbmF0aXZlLWNvbnRyb2wge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIGN1cnNvcjogaW5oZXJpdDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLS10b3VjaCB7XG4gICAgICBAaW5jbHVkZSB0b3VjaC10YXJnZXQtbWl4aW5zLm1hcmdpbihcbiAgICAgICAgJGNvbXBvbmVudC1oZWlnaHQ6IHJhZGlvLXRoZW1lLiRyaXBwbGUtc2l6ZSxcbiAgICAgICAgJGNvbXBvbmVudC13aWR0aDogcmFkaW8tdGhlbWUuJHJpcHBsZS1zaXplLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIHJhZGlvLXRoZW1lLnRvdWNoLXRhcmdldChcbiAgICAgICAgJHNpemU6IHRvdWNoLXRhcmdldC12YXJpYWJsZXMuJGhlaWdodCxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLmZvY3VzIHtcbiAgICAgIC5tZGMtcmFkaW9fX2ZvY3VzLXJpbmcge1xuICAgICAgICBAaW5jbHVkZSBmb2N1cy1yaW5nLmZvY3VzLXJpbmcoXG4gICAgICAgICAgJGNvbnRhaW5lci1vdXRlci1wYWRkaW5nLXZlcnRpY2FsOiAwLFxuICAgICAgICAgICRjb250YWluZXItb3V0ZXItcGFkZGluZy1ob3Jpem9udGFsOiAwLFxuICAgICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6Y2hlY2tlZCxcbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6ZGlzYWJsZWQge1xuICAgICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICB0cmFuc2l0aW9uOiBlbnRlcihvcGFjaXR5KSwgZW50ZXIodHJhbnNmb3JtKTtcbiAgICAgIH1cblxuICAgICAgLm1kYy1yYWRpb19fb3V0ZXItY2lyY2xlIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBlbnRlcihib3JkZXItY29sb3IpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogZW50ZXIodHJhbnNmb3JtKSwgZW50ZXIoYm9yZGVyLWNvbG9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtcmFkaW8tLWRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6Y2hlY2tlZCB7XG4gICAgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIHtcbiAgICAgIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBlbnRlcih0cmFuc2Zvcm0pLCBlbnRlcihib3JkZXItY29sb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6ZGlzYWJsZWQsXG4gIFthcmlhLWRpc2FibGVkPSd0cnVlJ10gLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wge1xuICAgICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6Zm9jdXMge1xuICAgICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZDo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIG9wYWNpdHk6IG1hcC5nZXQocmlwcGxlLXRoZW1lLiRkYXJrLWluay1vcGFjaXRpZXMsIGZvY3VzKTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgdHJhbnNpdGlvbjogZW50ZXIob3BhY2l0eSksIGVudGVyKHRyYW5zZm9ybSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgQVBJIGlzIGludGVuZGVkIGZvciB1c2UgYnkgZnJhbWV3b3JrcyB0aGF0IG1heSB3YW50IHRvIHNlcGFyYXRlIHRoZSByaXBwbGUtcmVsYXRlZCBzdHlsZXMgZnJvbSB0aGUgb3RoZXJcbi8vIHJhZGlvIHN0eWxlcy4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBtb3N0IHVzZXJzIHVzZSBgbWRjLXJhZGlvLWNvcmUtc3R5bGVzYCBpbnN0ZWFkLlxuQG1peGluIHdpdGhvdXQtcmlwcGxlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLy8gcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgcmFkaW9cbiAgQGluY2x1ZGUgdG91Y2gtdGFyZ2V0LW1peGlucy53cmFwcGVyKCRxdWVyeSk7IC8vIENPUFlCQVJBX0NPTU1FTlRfVEhJU19MSU5FXG5cbiAgLm1kYy1yYWRpbyB7XG4gICAgQGluY2x1ZGUgcmFkaW8tdGhlbWUudW5jaGVja2VkLXN0cm9rZS1jb2xvcihcbiAgICAgIHJhZGlvLXRoZW1lLiR1bmNoZWNrZWQtY29sb3IsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgcmFkaW8tdGhlbWUuY2hlY2tlZC1zdHJva2UtY29sb3IoXG4gICAgICByYWRpby10aGVtZS4kYmFzZWxpbmUtdGhlbWUtY29sb3IsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgcmFkaW8tdGhlbWUuaW5rLWNvbG9yKFxuICAgICAgcmFkaW8tdGhlbWUuJGJhc2VsaW5lLXRoZW1lLWNvbG9yLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIHJhZGlvLXRoZW1lLmRpc2FibGVkLXVuY2hlY2tlZC1zdHJva2UtY29sb3IoXG4gICAgICByYWRpby10aGVtZS4kZGlzYWJsZWQtY2lyY2xlLWNvbG9yLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIHJhZGlvLXRoZW1lLmRpc2FibGVkLWNoZWNrZWQtc3Ryb2tlLWNvbG9yKFxuICAgICAgcmFkaW8tdGhlbWUuJGRpc2FibGVkLWNpcmNsZS1jb2xvcixcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSByYWRpby10aGVtZS5kaXNhYmxlZC1pbmstY29sb3IoXG4gICAgICByYWRpby10aGVtZS4kZGlzYWJsZWQtY2lyY2xlLWNvbG9yLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIHJhZGlvLXRoZW1lLmZvY3VzLWluZGljYXRvci1jb2xvcihcbiAgICAgIHJhZGlvLXRoZW1lLiRiYXNlbGluZS10aGVtZS1jb2xvcixcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSByYWRpby10aGVtZS5kZW5zaXR5KHJhZGlvLXRoZW1lLiRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgICBAaW5jbHVkZSBkb20uZm9yY2VkLWNvbG9ycy1tb2RlIHtcbiAgICAgICYubWRjLXJhZGlvLS1kaXNhYmxlZCB7XG4gICAgICAgIEBpbmNsdWRlIHJhZGlvLXRoZW1lLmRpc2FibGVkLXVuY2hlY2tlZC1zdHJva2UtY29sb3IoXG4gICAgICAgICAgR3JheVRleHQsXG4gICAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICAgKTtcbiAgICAgICAgQGluY2x1ZGUgcmFkaW8tdGhlbWUuZGlzYWJsZWQtY2hlY2tlZC1zdHJva2UtY29sb3IoXG4gICAgICAgICAgR3JheVRleHQsXG4gICAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICAgKTtcbiAgICAgICAgQGluY2x1ZGUgcmFkaW8tdGhlbWUuZGlzYWJsZWQtaW5rLWNvbG9yKEdyYXlUZXh0LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3RhdGljLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG4gIC8vIHBvc3Rjc3MtYmVtLWxpbnRlcjogZW5kXG59XG5cbi8vIFRoaXMgQVBJIGlzIGludGVuZGVkIGZvciB1c2UgYnkgZnJhbWV3b3JrcyB0aGF0IG1heSB3YW50IHRvIHNlcGFyYXRlIHRoZSByaXBwbGUtcmVsYXRlZCBzdHlsZXMgZnJvbSB0aGUgb3RoZXJcbi8vIHJhZGlvIHN0eWxlcy4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBtb3N0IHVzZXJzIHVzZSBgbWRjLXJhZGlvLWNvcmUtc3R5bGVzYCBpbnN0ZWFkLlxuQG1peGluIHJpcHBsZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgcmlwcGxlLmNvbW1vbigkcXVlcnkpOyAvLyBDT1BZQkFSQV9DT01NRU5UX1RISVNfTElORVxuXG4gIC5tZGMtcmFkaW8ge1xuICAgIEBpbmNsdWRlIHJpcHBsZS5zdXJmYWNlKCRxdWVyeTogJHF1ZXJ5LCAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXQpO1xuICAgIEBpbmNsdWRlIHJpcHBsZS5yYWRpdXMtdW5ib3VuZGVkKFxuICAgICAgJHF1ZXJ5OiAkcXVlcnksXG4gICAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgICApO1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMoXG4gICAgICAkY29sb3I6IHJhZGlvLXRoZW1lLiRiYXNlbGluZS10aGVtZS1jb2xvcixcbiAgICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0XG4gICAgKTtcblxuICAgICYubWRjLXJpcHBsZS11cGdyYWRlZCxcbiAgICAmLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtZm9jdXNlZCB7XG4gICAgICAubWRjLXJhZGlvX19iYWNrZ3JvdW5kOjpiZWZvcmUge1xuICAgICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjeyRyaXBwbGUtdGFyZ2V0fSB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnRhcmdldC1jb21tb24oJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBlbnRlcigkbmFtZSkge1xuICBAcmV0dXJuIGFuaW1hdGlvbi5lbnRlcigkbmFtZSwgcmFkaW8tdGhlbWUuJHRyYW5zaXRpb24tZHVyYXRpb24pO1xufVxuXG5AZnVuY3Rpb24gZXhpdCgkbmFtZSkge1xuICBAcmV0dXJuIGFuaW1hdGlvbi5leGl0LXRlbXBvcmFyeSgkbmFtZSwgcmFkaW8tdGhlbWUuJHRyYW5zaXRpb24tZHVyYXRpb24pO1xufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdAbWF0ZXJpYWwvZGVuc2l0eS9mdW5jdGlvbnMnIGFzIGRlbnNpdHktZnVuY3Rpb25zO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUva2V5cyc7XG5AdXNlICdAbWF0ZXJpYWwvZGVuc2l0eS92YXJpYWJsZXMnIGFzIGRlbnNpdHktdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlLXRoZW1lJztcblxuJHJpcHBsZS1zaXplOiA0MHB4ICFkZWZhdWx0O1xuJGljb24tc2l6ZTogMjBweCAhZGVmYXVsdDtcbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAxMjBtcyAhZGVmYXVsdDtcbiRyaXBwbGUtb3BhY2l0eTogMC4xNCAhZGVmYXVsdDtcbiRiYXNlbGluZS10aGVtZS1jb2xvcjogc2Vjb25kYXJ5ICFkZWZhdWx0O1xuJHVuY2hlY2tlZC1jb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjU0KSAhZGVmYXVsdDtcbiRkaXNhYmxlZC1jaXJjbGUtY29sb3I6IHJnYmEodGhlbWUtY29sb3IucHJvcC12YWx1ZShvbi1zdXJmYWNlKSwgMC4zOCkgIWRlZmF1bHQ7XG5cbiRtaW5pbXVtLXNpemU6IDI4cHggIWRlZmF1bHQ7XG4kbWF4aW11bS1zaXplOiAkcmlwcGxlLXNpemUgIWRlZmF1bHQ7XG4kZGVuc2l0eS1zY2FsZTogZGVuc2l0eS12YXJpYWJsZXMuJGRlZmF1bHQtc2NhbGUgIWRlZmF1bHQ7XG4kZGVuc2l0eS1jb25maWc6IChcbiAgc2l6ZTogKFxuICAgIG1pbmltdW06ICRtaW5pbXVtLXNpemUsXG4gICAgZGVmYXVsdDogJHJpcHBsZS1zaXplLFxuICAgIG1heGltdW06ICRtYXhpbXVtLXNpemUsXG4gICksXG4pICFkZWZhdWx0O1xuXG4kcmlwcGxlLXRhcmdldDogJy5tZGMtcmFkaW9fX3JpcHBsZSc7XG4kdW5zZWxlY3RlZC1yaXBwbGUtdGFyZ2V0OiAnLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6ZW5hYmxlZDpub3QoOmNoZWNrZWQpIH4gI3skcmlwcGxlLXRhcmdldH0nO1xuJGN1c3RvbS1wcm9wZXJ0eS1wcmVmaXg6ICdyYWRpbyc7XG5cbi8vIFRPRE8oYi8xODg0MTc3NTYpOiBgaWNvbi1zaXplYCB0b2tlbiBrZXkgaXMgbm90IHN1cHBvcnRlZC5cbiRsaWdodC10aGVtZTogKFxuICBkaXNhYmxlZC1zZWxlY3RlZC1pY29uLWNvbG9yOiB0aGVtZS1jb2xvci4kb24tc3VyZmFjZSxcbiAgZGlzYWJsZWQtc2VsZWN0ZWQtaWNvbi1vcGFjaXR5OiAwLjM4LFxuICBkaXNhYmxlZC11bnNlbGVjdGVkLWljb24tY29sb3I6IHRoZW1lLWNvbG9yLiRvbi1zdXJmYWNlLFxuICBkaXNhYmxlZC11bnNlbGVjdGVkLWljb24tb3BhY2l0eTogMC4zOCxcbiAgc2VsZWN0ZWQtZm9jdXMtaWNvbi1jb2xvcjogdGhlbWUtY29sb3IuJHByaW1hcnksXG4gIHNlbGVjdGVkLWZvY3VzLXN0YXRlLWxheWVyLWNvbG9yOiB0aGVtZS1jb2xvci4kcHJpbWFyeSxcbiAgc2VsZWN0ZWQtZm9jdXMtc3RhdGUtbGF5ZXItb3BhY2l0eTogMC4xMixcbiAgc2VsZWN0ZWQtaG92ZXItaWNvbi1jb2xvcjogdGhlbWUtY29sb3IuJHByaW1hcnksXG4gIHNlbGVjdGVkLWhvdmVyLXN0YXRlLWxheWVyLWNvbG9yOiB0aGVtZS1jb2xvci4kcHJpbWFyeSxcbiAgc2VsZWN0ZWQtaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eTogMC4wNCxcbiAgc2VsZWN0ZWQtaWNvbi1jb2xvcjogdGhlbWUtY29sb3IuJHByaW1hcnksXG4gIHNlbGVjdGVkLXByZXNzZWQtaWNvbi1jb2xvcjogdGhlbWUtY29sb3IuJHByaW1hcnksXG4gIHNlbGVjdGVkLXByZXNzZWQtc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRwcmltYXJ5LFxuICBzZWxlY3RlZC1wcmVzc2VkLXN0YXRlLWxheWVyLW9wYWNpdHk6IDAuMSxcbiAgc3RhdGUtbGF5ZXItc2l6ZTogJHJpcHBsZS1zaXplLFxuICB1bnNlbGVjdGVkLWZvY3VzLWljb24tY29sb3I6IHRoZW1lLWNvbG9yLiRvbi1zdXJmYWNlLFxuICB1bnNlbGVjdGVkLWZvY3VzLXN0YXRlLWxheWVyLWNvbG9yOiB0aGVtZS1jb2xvci4kb24tc3VyZmFjZSxcbiAgdW5zZWxlY3RlZC1mb2N1cy1zdGF0ZS1sYXllci1vcGFjaXR5OiAwLjEyLFxuICB1bnNlbGVjdGVkLWhvdmVyLWljb24tY29sb3I6IHRoZW1lLWNvbG9yLiRvbi1zdXJmYWNlLFxuICB1bnNlbGVjdGVkLWhvdmVyLXN0YXRlLWxheWVyLWNvbG9yOiB0aGVtZS1jb2xvci4kb24tc3VyZmFjZSxcbiAgdW5zZWxlY3RlZC1ob3Zlci1zdGF0ZS1sYXllci1vcGFjaXR5OiAwLjA0LFxuICB1bnNlbGVjdGVkLWljb24tY29sb3I6IHRoZW1lLWNvbG9yLiRvbi1zdXJmYWNlLFxuICB1bnNlbGVjdGVkLXByZXNzZWQtaWNvbi1jb2xvcjogdGhlbWUtY29sb3IuJG9uLXN1cmZhY2UsXG4gIHVuc2VsZWN0ZWQtcHJlc3NlZC1zdGF0ZS1sYXllci1jb2xvcjogdGhlbWUtY29sb3IuJG9uLXN1cmZhY2UsXG4gIHVuc2VsZWN0ZWQtcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5OiAwLjEsXG4pO1xuXG5AbWl4aW4gdGhlbWUoJHRoZW1lKSB7XG4gIEBpbmNsdWRlIHRoZW1lLnZhbGlkYXRlLXRoZW1lKCRsaWdodC10aGVtZSwgJHRoZW1lKTtcbiAgQGluY2x1ZGUga2V5cy5kZWNsYXJlLWN1c3RvbS1wcm9wZXJ0aWVzKFxuICAgICR0aGVtZSxcbiAgICAkcHJlZml4OiAkY3VzdG9tLXByb3BlcnR5LXByZWZpeFxuICApO1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGVzKCR0aGVtZSkge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZS1rZXlzKCRsaWdodC10aGVtZSwgJHRoZW1lKTtcblxuICAkdGhlbWU6IGtleXMuY3JlYXRlLXRoZW1lLXByb3BlcnRpZXMoXG4gICAgJHRoZW1lLFxuICAgICRwcmVmaXg6ICRjdXN0b20tcHJvcGVydHktcHJlZml4XG4gICk7XG5cbiAgQGluY2x1ZGUgX2Rpc2FibGVkLXNlbGVjdGVkLWljb24tY29sb3IoXG4gICAgbWFwLmdldCgkdGhlbWUsIGRpc2FibGVkLXNlbGVjdGVkLWljb24tY29sb3IpXG4gICk7XG4gIEBpbmNsdWRlIF9kaXNhYmxlZC1zZWxlY3RlZC1pY29uLW9wYWNpdHkoXG4gICAgbWFwLmdldCgkdGhlbWUsIGRpc2FibGVkLXNlbGVjdGVkLWljb24tb3BhY2l0eSlcbiAgKTtcbiAgQGluY2x1ZGUgX2Rpc2FibGVkLXVuc2VsZWN0ZWQtaWNvbi1jb2xvcihcbiAgICBtYXAuZ2V0KCR0aGVtZSwgZGlzYWJsZWQtdW5zZWxlY3RlZC1pY29uLWNvbG9yKVxuICApO1xuICBAaW5jbHVkZSBfZGlzYWJsZWQtdW5zZWxlY3RlZC1pY29uLW9wYWNpdHkoXG4gICAgbWFwLmdldCgkdGhlbWUsIGRpc2FibGVkLXVuc2VsZWN0ZWQtaWNvbi1vcGFjaXR5KVxuICApO1xuXG4gIC8vIHNlbGVjdGVkXG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5mb2N1cygpIHtcbiAgICBAaW5jbHVkZSBfc2VsZWN0ZWQtaWNvbi1jb2xvcihtYXAuZ2V0KCR0aGVtZSwgc2VsZWN0ZWQtZm9jdXMtaWNvbi1jb2xvcikpO1xuICAgIEBpbmNsdWRlIF9zZWxlY3RlZC1zdGF0ZS1sYXllci1jb2xvcihcbiAgICAgIG1hcC5nZXQoJHRoZW1lLCBzZWxlY3RlZC1mb2N1cy1zdGF0ZS1sYXllci1jb2xvcilcbiAgICApO1xuICAgIEBpbmNsdWRlIF9zZWxlY3RlZC1mb2N1cy1zdGF0ZS1sYXllci1vcGFjaXR5KFxuICAgICAgbWFwLmdldCgkdGhlbWUsIHNlbGVjdGVkLWZvY3VzLXN0YXRlLWxheWVyLW9wYWNpdHkpXG4gICAgKTtcbiAgfVxuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuaG92ZXIoKSB7XG4gICAgQGluY2x1ZGUgX3NlbGVjdGVkLWljb24tY29sb3IobWFwLmdldCgkdGhlbWUsIHNlbGVjdGVkLWhvdmVyLWljb24tY29sb3IpKTtcbiAgICBAaW5jbHVkZSBfc2VsZWN0ZWQtc3RhdGUtbGF5ZXItY29sb3IoXG4gICAgICBtYXAuZ2V0KCR0aGVtZSwgc2VsZWN0ZWQtaG92ZXItc3RhdGUtbGF5ZXItY29sb3IpXG4gICAgKTtcbiAgICBAaW5jbHVkZSBfc2VsZWN0ZWQtaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eShcbiAgICAgIG1hcC5nZXQoJHRoZW1lLCBzZWxlY3RlZC1ob3Zlci1zdGF0ZS1sYXllci1vcGFjaXR5KVxuICAgICk7XG4gIH1cbiAgQGluY2x1ZGUgX3NlbGVjdGVkLWljb24tY29sb3IobWFwLmdldCgkdGhlbWUsIHNlbGVjdGVkLWljb24tY29sb3IpKTtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLmFjdGl2ZSgpIHtcbiAgICBAaW5jbHVkZSBfc2VsZWN0ZWQtaWNvbi1jb2xvcihtYXAuZ2V0KCR0aGVtZSwgc2VsZWN0ZWQtcHJlc3NlZC1pY29uLWNvbG9yKSk7XG4gICAgQGluY2x1ZGUgX3NlbGVjdGVkLXN0YXRlLWxheWVyLWNvbG9yKFxuICAgICAgbWFwLmdldCgkdGhlbWUsIHNlbGVjdGVkLXByZXNzZWQtc3RhdGUtbGF5ZXItY29sb3IpXG4gICAgKTtcbiAgICBAaW5jbHVkZSBfc2VsZWN0ZWQtcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5KFxuICAgICAgbWFwLmdldCgkdGhlbWUsIHNlbGVjdGVkLXByZXNzZWQtc3RhdGUtbGF5ZXItb3BhY2l0eSlcbiAgICApO1xuICB9XG5cbiAgLy8gdW5zZWxlY3RlZFxuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuZm9jdXMoKSB7XG4gICAgQGluY2x1ZGUgX3Vuc2VsZWN0ZWQtaWNvbi1jb2xvcihcbiAgICAgIG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWZvY3VzLWljb24tY29sb3IpXG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdW5zZWxlY3RlZC1zdGF0ZS1sYXllci1jb2xvcihcbiAgICAgIG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWZvY3VzLXN0YXRlLWxheWVyLWNvbG9yKVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3Vuc2VsZWN0ZWQtZm9jdXMtc3RhdGUtbGF5ZXItb3BhY2l0eShcbiAgICAgIG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWZvY3VzLXN0YXRlLWxheWVyLW9wYWNpdHkpXG4gICAgKTtcbiAgfVxuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuaG92ZXIoKSB7XG4gICAgQGluY2x1ZGUgX3Vuc2VsZWN0ZWQtaWNvbi1jb2xvcihcbiAgICAgIG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWhvdmVyLWljb24tY29sb3IpXG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdW5zZWxlY3RlZC1zdGF0ZS1sYXllci1jb2xvcihcbiAgICAgIG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWhvdmVyLXN0YXRlLWxheWVyLWNvbG9yKVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3Vuc2VsZWN0ZWQtaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eShcbiAgICAgIG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHkpXG4gICAgKTtcbiAgfVxuICBAaW5jbHVkZSBfdW5zZWxlY3RlZC1pY29uLWNvbG9yKG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWljb24tY29sb3IpKTtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLmFjdGl2ZSgpIHtcbiAgICBAaW5jbHVkZSBfdW5zZWxlY3RlZC1pY29uLWNvbG9yKFxuICAgICAgbWFwLmdldCgkdGhlbWUsIHVuc2VsZWN0ZWQtcHJlc3NlZC1pY29uLWNvbG9yKVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3Vuc2VsZWN0ZWQtc3RhdGUtbGF5ZXItY29sb3IoXG4gICAgICBtYXAuZ2V0KCR0aGVtZSwgdW5zZWxlY3RlZC1wcmVzc2VkLXN0YXRlLWxheWVyLWNvbG9yKVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3Vuc2VsZWN0ZWQtcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5KFxuICAgICAgbWFwLmdldCgkdGhlbWUsIHVuc2VsZWN0ZWQtcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5KVxuICAgICk7XG4gIH1cblxuICBAaW5jbHVkZSByaXBwbGUtc2l6ZShtYXAuZ2V0KCR0aGVtZSwgc3RhdGUtbGF5ZXItc2l6ZSkpO1xuICAvLyBTZXQgdG91Y2ggdGFyZ2V0IHNpemUgc2FtZSBhcyByaXBwbGUgc2l6ZS5cbiAgQGluY2x1ZGUgdG91Y2gtdGFyZ2V0KFxuICAgICRzaXplOiBtYXAuZ2V0KCR0aGVtZSwgc3RhdGUtbGF5ZXItc2l6ZSksXG4gICAgJHJpcHBsZS1zaXplOiBtYXAuZ2V0KCR0aGVtZSwgc3RhdGUtbGF5ZXItc2l6ZSlcbiAgKTtcbn1cblxuQG1peGluIF9kaXNhYmxlZC1zZWxlY3RlZC1pY29uLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSBkaXNhYmxlZC1jaGVja2VkLXN0cm9rZS1jb2xvcigkY29sb3IpO1xuICBAaW5jbHVkZSBkaXNhYmxlZC1pbmstY29sb3IoJGNvbG9yKTtcbn1cblxuQG1peGluIF9kaXNhYmxlZC1zZWxlY3RlZC1pY29uLW9wYWNpdHkoJG9wYWNpdHkpIHtcbiAgQGluY2x1ZGUgX2Rpc2FibGVkLWNoZWNrZWQtc3Ryb2tlLW9wYWNpdHkoJG9wYWNpdHkpO1xuICBAaW5jbHVkZSBfZGlzYWJsZWQtaW5rLW9wYWNpdHkoJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gX2Rpc2FibGVkLXVuc2VsZWN0ZWQtaWNvbi1jb2xvcigkY29sb3IpIHtcbiAgQGluY2x1ZGUgZGlzYWJsZWQtdW5jaGVja2VkLXN0cm9rZS1jb2xvcigkY29sb3IpO1xufVxuXG5AbWl4aW4gX2Rpc2FibGVkLXVuc2VsZWN0ZWQtaWNvbi1vcGFjaXR5KCRvcGFjaXR5KSB7XG4gIEBpbmNsdWRlIF9kaXNhYmxlZC11bmNoZWNrZWQtc3Ryb2tlLW9wYWNpdHkoJG9wYWNpdHkpO1xufVxuXG5AbWl4aW4gX3NlbGVjdGVkLWljb24tY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIGNoZWNrZWQtc3Ryb2tlLWNvbG9yKCRjb2xvcik7XG4gIEBpbmNsdWRlIGluay1jb2xvcigkY29sb3IpO1xufVxuXG5AbWl4aW4gX3NlbGVjdGVkLXN0YXRlLWxheWVyLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWJhc2UtY29sb3IoXG4gICAgJGNvbG9yOiAkY29sb3IsXG4gICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0XG4gICk7XG59XG5cbkBtaXhpbiBfc2VsZWN0ZWQtaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eSgkb3BhY2l0eSkge1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWhvdmVyLW9wYWNpdHkoXG4gICAgJG9wYWNpdHk6ICRvcGFjaXR5LFxuICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldFxuICApO1xufVxuXG5AbWl4aW4gX3NlbGVjdGVkLWZvY3VzLXN0YXRlLWxheWVyLW9wYWNpdHkoJG9wYWNpdHkpIHtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1mb2N1cy1vcGFjaXR5KFxuICAgICRvcGFjaXR5OiAkb3BhY2l0eSxcbiAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgKTtcbn1cblxuQG1peGluIF9zZWxlY3RlZC1wcmVzc2VkLXN0YXRlLWxheWVyLW9wYWNpdHkoJG9wYWNpdHkpIHtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1wcmVzcy1vcGFjaXR5KFxuICAgICRvcGFjaXR5OiAkb3BhY2l0eSxcbiAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgKTtcbn1cblxuQG1peGluIF91bnNlbGVjdGVkLWljb24tY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIHVuY2hlY2tlZC1zdHJva2UtY29sb3IoJGNvbG9yKTtcbn1cblxuQG1peGluIF91bnNlbGVjdGVkLXN0YXRlLWxheWVyLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWJhc2UtY29sb3IoXG4gICAgJGNvbG9yOiAkY29sb3IsXG4gICAgJHJpcHBsZS10YXJnZXQ6ICR1bnNlbGVjdGVkLXJpcHBsZS10YXJnZXRcbiAgKTtcbn1cblxuQG1peGluIF91bnNlbGVjdGVkLWhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHkoJG9wYWNpdHkpIHtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1ob3Zlci1vcGFjaXR5KFxuICAgICRvcGFjaXR5OiAkb3BhY2l0eSxcbiAgICAkcmlwcGxlLXRhcmdldDogJHVuc2VsZWN0ZWQtcmlwcGxlLXRhcmdldFxuICApO1xufVxuXG5AbWl4aW4gX3Vuc2VsZWN0ZWQtZm9jdXMtc3RhdGUtbGF5ZXItb3BhY2l0eSgkb3BhY2l0eSkge1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWZvY3VzLW9wYWNpdHkoXG4gICAgJG9wYWNpdHk6ICRvcGFjaXR5LFxuICAgICRyaXBwbGUtdGFyZ2V0OiAkdW5zZWxlY3RlZC1yaXBwbGUtdGFyZ2V0XG4gICk7XG59XG5cbkBtaXhpbiBfdW5zZWxlY3RlZC1wcmVzc2VkLXN0YXRlLWxheWVyLW9wYWNpdHkoJG9wYWNpdHkpIHtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1wcmVzcy1vcGFjaXR5KFxuICAgICRvcGFjaXR5OiAkb3BhY2l0eSxcbiAgICAkcmlwcGxlLXRhcmdldDogJHVuc2VsZWN0ZWQtcmlwcGxlLXRhcmdldFxuICApO1xufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBzdHJva2UgY29sb3Igb2YgYW4gdW5jaGVja2VkLCBlbmFibGVkIHJhZGlvIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBzdHJva2UgY29sb3IuXG4vLy9cbkBtaXhpbiB1bmNoZWNrZWQtc3Ryb2tlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBfaWYtZW5hYmxlZC11bmNoZWNrZWQge1xuICAgIEBpbmNsdWRlIF9zdHJva2UtY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgc3Ryb2tlIGNvbG9yIG9mIGEgY2hlY2tlZCwgZW5hYmxlZCByYWRpbyBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGRlc2lyZWQgc3Ryb2tlIGNvbG9yLlxuLy8vXG5AbWl4aW4gY2hlY2tlZC1zdHJva2UtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIF9pZi1lbmFibGVkLWNoZWNrZWQge1xuICAgIEBpbmNsdWRlIF9zdHJva2UtY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgaW5rIGNvbG9yIG9mIGFuIGVuYWJsZWQgcmFkaW8gYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIGluayBjb2xvci5cbi8vL1xuQG1peGluIGluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgX2lmLWVuYWJsZWQge1xuICAgIEBpbmNsdWRlIF9pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgc3Ryb2tlIGNvbG9yIG9mIGFuIHVuY2hlY2tlZCwgZGlzYWJsZWQgcmFkaW8gYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIHN0cm9rZSBjb2xvci5cbi8vL1xuQG1peGluIGRpc2FibGVkLXVuY2hlY2tlZC1zdHJva2UtY29sb3IoXG4gICRjb2xvcixcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIEBpbmNsdWRlIF9pZi1kaXNhYmxlZC11bmNoZWNrZWQge1xuICAgIEBpbmNsdWRlIF9zdHJva2UtY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuQG1peGluIF9kaXNhYmxlZC11bmNoZWNrZWQtc3Ryb2tlLW9wYWNpdHkoJG9wYWNpdHkpIHtcbiAgQGluY2x1ZGUgX2lmLWRpc2FibGVkLXVuY2hlY2tlZCB7XG4gICAgQGluY2x1ZGUgX3N0cm9rZS1vcGFjaXR5KCRvcGFjaXR5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBzdHJva2UgY29sb3Igb2YgYSBjaGVja2VkLCBkaXNhYmxlZCByYWRpbyBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGRlc2lyZWQgc3Ryb2tlIGNvbG9yLlxuLy8vXG5AbWl4aW4gZGlzYWJsZWQtY2hlY2tlZC1zdHJva2UtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIGlmLWRpc2FibGVkLWNoZWNrZWRfIHtcbiAgICBAaW5jbHVkZSBfc3Ryb2tlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBfZGlzYWJsZWQtY2hlY2tlZC1zdHJva2Utb3BhY2l0eSgkb3BhY2l0eSkge1xuICBAaW5jbHVkZSBpZi1kaXNhYmxlZC1jaGVja2VkXyB7XG4gICAgQGluY2x1ZGUgX3N0cm9rZS1vcGFjaXR5KCRvcGFjaXR5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBpbmsgY29sb3Igb2YgYSBkaXNhYmxlZCByYWRpbyBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGRlc2lyZWQgaW5rIGNvbG9yXG4vLy9cbkBtaXhpbiBkaXNhYmxlZC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIGlmLWRpc2FibGVkXyB7XG4gICAgQGluY2x1ZGUgX2luay1jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gX2Rpc2FibGVkLWluay1vcGFjaXR5KCRvcGFjaXR5KSB7XG4gIEBpbmNsdWRlIGlmLWRpc2FibGVkXyB7XG4gICAgQGluY2x1ZGUgX2luay1vcGFjaXR5KCRvcGFjaXR5KTtcbiAgfVxufVxuXG5AbWl4aW4gZm9jdXMtaW5kaWNhdG9yLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLXJhZGlvX19iYWNrZ3JvdW5kOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJhY2tncm91bmQtY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgcmFkaW8gdG91Y2ggdGFyZ2V0IHNpemUgd2hpY2ggY2FuIGJlIG1vcmUgdGhhbiB0aGUgcmlwcGxlIHNpemUuIFBhcmFtIGAkcmlwcGxlLXNpemVgIGlzIHJlcXVpcmVkIGZvciBjdXN0b21cbi8vLyByaXBwbGUgc2l6ZS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSBTaXplIG9mIHRvdWNoIHRhcmdldCAoTmF0aXZlIGlucHV0KSBpbiBgcHhgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlwcGxlLXNpemUgU2l6ZSBvZiByaXBwbGUgaW4gYHB4YC4gUmVxdWlyZWQgb25seSBmb3IgY3VzdG9tIHJpcHBsZSBzaXplLlxuLy8vXG5AbWl4aW4gdG91Y2gtdGFyZ2V0KFxuICAkc2l6ZTogJHJpcHBsZS1zaXplLFxuICAkcmlwcGxlLXNpemU6ICRyaXBwbGUtc2l6ZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRvZmZzZXQ6ICdjYWxjKChfX3JpcHBsZV9zaXplIC0gX19zaXplKSAvIDIpJztcbiAgJHJlcGxhY2U6IChcbiAgICBfX3JpcHBsZV9zaXplOiAkcmlwcGxlLXNpemUsXG4gICAgX19zaXplOiAkc2l6ZSxcbiAgKTtcblxuICAubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCd0b3AnLCAkb2Zmc2V0LCAkcmVwbGFjZTogJHJlcGxhY2UpO1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoJ3JpZ2h0JywgJG9mZnNldCwgJHJlcGxhY2U6ICRyZXBsYWNlKTtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCdsZWZ0JywgJG9mZnNldCwgJHJlcGxhY2U6ICRyZXBsYWNlKTtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCd3aWR0aCcsICRzaXplKTtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCdoZWlnaHQnLCAkc2l6ZSk7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgZGVuc2l0eSBzY2FsZSBmb3IgcmFkaW8uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IFN0cmluZ30gJGRlbnNpdHktc2NhbGUgLSBEZW5zaXR5IHNjYWxlIHZhbHVlIGZvciBjb21wb25lbnQuIFN1cHBvcnRlZCBkZW5zaXR5IHNjYWxlIHZhbHVlc1xuLy8vICAgICBgLTNgLCBgLTJgLCBgLTFgLCBgMGAuXG4vLy9cbkBtaXhpbiBkZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRzaXplOiBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICRkZW5zaXR5LWNvbmZpZzogJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAkcHJvcGVydHktbmFtZTogc2l6ZSxcbiAgKTtcblxuICBAaW5jbHVkZSByaXBwbGUtc2l6ZSgkc2l6ZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAvLyBTZXRzIHRvdWNoIHRhcmdldCBzaXplIHNhbWUgYXMgcmlwcGxlIHNpemUuXG4gIEBpbmNsdWRlIHRvdWNoLXRhcmdldCgkc2l6ZTogJHNpemUsICRyaXBwbGUtc2l6ZTogJHNpemUsICRxdWVyeTogJHF1ZXJ5KTtcblxuICBAaWYgJGRlbnNpdHktc2NhbGUgIT0gMCB7XG4gICAgQGluY2x1ZGUgdG91Y2gtdGFyZ2V0LXJlc2V0XygkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyByYWRpbyByaXBwbGUgc2l6ZS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSAtIFJpcHBsZSBzaXplIGluIGBweGAuXG4vLy9cbkBtaXhpbiByaXBwbGUtc2l6ZSgkc2l6ZSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkcmVwbGFjZTogKFxuICAgIF9fc2l6ZTogJHNpemUsXG4gICAgX19pY29uX3NpemU6ICRpY29uLXNpemUsXG4gICk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAkcGFkZGluZzogJ2NhbGMoKF9fc2l6ZSAtIF9faWNvbl9zaXplKSAvIDIpJztcblxuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCdwYWRkaW5nJywgJHBhZGRpbmcsICRyZXBsYWNlOiAkcmVwbGFjZSk7XG4gIH1cblxuICAubWRjLXJhZGlvX19iYWNrZ3JvdW5kOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAkcGFkZGluZy1vZmZzZXQ6ICdjYWxjKC0xICogKF9fc2l6ZSAtIF9faWNvbl9zaXplKSAvIDIpJztcblxuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoJ3RvcCcsICRwYWRkaW5nLW9mZnNldCwgJHJlcGxhY2U6ICRyZXBsYWNlKTtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCdsZWZ0JywgJHBhZGRpbmctb2Zmc2V0LCAkcmVwbGFjZTogJHJlcGxhY2UpO1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoJ3dpZHRoJywgJHNpemUpO1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoJ2hlaWdodCcsICRzaXplKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gUmVzZXRzIHRvdWNoIHRhcmdldC1yZWxhdGVkIHN0eWxlcy4gVGhpcyBpcyBjYWxsZWQgZnJvbSB0aGUgZGVuc2l0eSBtaXhpbiB0b1xuLy8vIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHRoZSBpbmNyZWFzZWQgdG91Y2ggdGFyZ2V0LCBzaW5jZSBkZW5zZSBjb21wb25lbnRzXG4vLy8gZG9uJ3QgaGF2ZSB0aGUgc2FtZSBkZWZhdWx0IGExMXkgcmVxdWlyZW1lbnRzLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG5AbWl4aW4gdG91Y2gtdGFyZ2V0LXJlc2V0XygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8vXG4vLy8gSGVscHMgc2VsZWN0IHRoZSByYWRpbyBiYWNrZ3JvdW5kIG9ubHkgd2hlbiBpdHMgbmF0aXZlIGNvbnRyb2wgaXMgaW4gdGhlXG4vLy8gZW5hYmxlZCBzdGF0ZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIF9pZi1lbmFibGVkIHtcbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6ZW5hYmxlZCArIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy9cbi8vLyBIZWxwcyBzZWxlY3QgdGhlIHJhZGlvIGJhY2tncm91bmQgb25seSB3aGVuIGl0cyBuYXRpdmUgY29udHJvbCBpcyBpbiB0aGVcbi8vLyBlbmFibGVkICYgdW5jaGVja2VkIHN0YXRlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG5AbWl4aW4gX2lmLWVuYWJsZWQtdW5jaGVja2VkIHtcbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6ZW5hYmxlZDpub3QoOmNoZWNrZWQpICsge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vL1xuLy8vIEhlbHBzIHNlbGVjdCB0aGUgcmFkaW8gYmFja2dyb3VuZCBvbmx5IHdoZW4gaXRzIG5hdGl2ZSBjb250cm9sIGlzIGluIHRoZVxuLy8vIGVuYWJsZWQgJiBjaGVja2VkIHN0YXRlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG5AbWl4aW4gX2lmLWVuYWJsZWQtY2hlY2tlZCB7XG4gIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sOmVuYWJsZWQ6Y2hlY2tlZCArIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy9cbi8vLyBIZWxwcyBzZWxlY3QgdGhlIHJhZGlvIGJhY2tncm91bmQgb25seSB3aGVuIGl0cyBuYXRpdmUgY29udHJvbCBpcyBpbiB0aGVcbi8vLyBkaXNhYmxlZCBzdGF0ZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIGlmLWRpc2FibGVkXyB7XG4gIFthcmlhLWRpc2FibGVkPSd0cnVlJ10gLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wsXG4gIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sOmRpc2FibGVkIHtcbiAgICArIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBIZWxwcyBzZWxlY3QgdGhlIHJhZGlvIGJhY2tncm91bmQgb25seSB3aGVuIGl0cyBuYXRpdmUgY29udHJvbCBpcyBpbiB0aGVcbi8vLyBkaXNhYmxlZCAmIHVuY2hlY2tlZCBzdGF0ZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIF9pZi1kaXNhYmxlZC11bmNoZWNrZWQge1xuICBbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sLFxuICAubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbDpkaXNhYmxlZCB7XG4gICAgJjpub3QoOmNoZWNrZWQpICsge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIEhlbHBzIHNlbGVjdCB0aGUgcmFkaW8gYmFja2dyb3VuZCBvbmx5IHdoZW4gaXRzIG5hdGl2ZSBjb250cm9sIGlzIGluIHRoZVxuLy8vIGRpc2FibGVkICYgY2hlY2tlZCBzdGF0ZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIGlmLWRpc2FibGVkLWNoZWNrZWRfIHtcbiAgW2FyaWEtZGlzYWJsZWQ9J3RydWUnXSAubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbCxcbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6ZGlzYWJsZWQge1xuICAgICY6Y2hlY2tlZCArIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBpbmsgY29sb3IgZm9yIHJhZGlvLiBUaGlzIGlzIHdyYXBwZWQgaW4gYSBtaXhpblxuLy8vIHRoYXQgcXVhbGlmaWVzIHN0YXRlIHN1Y2ggYXMgYF9pZi1lbmFibGVkYFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG5AbWl4aW4gX2luay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1yYWRpb19fYmFja2dyb3VuZCAubWRjLXJhZGlvX19pbm5lci1jaXJjbGUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci1jb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9pbmstb3BhY2l0eSgkb3BhY2l0eSkge1xuICAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkob3BhY2l0eSwgJG9wYWNpdHkpO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIHN0cm9rZSBjb2xvciBmb3IgcmFkaW8uIFRoaXMgaXMgd3JhcHBlZCBpbiBhIG1peGluXG4vLy8gdGhhdCBxdWFsaWZpZXMgc3RhdGUgc3VjaCBhcyBgX2lmLWVuYWJsZWRgXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBfc3Ryb2tlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX291dGVyLWNpcmNsZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYm9yZGVyLWNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX3N0cm9rZS1vcGFjaXR5KCRvcGFjaXR5KSB7XG4gIC5tZGMtcmFkaW9fX2JhY2tncm91bmQgLm1kYy1yYWRpb19fb3V0ZXItY2lyY2xlIHtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShvcGFjaXR5LCAkb3BhY2l0eSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBic0Jhbm5lcigkZmlsZSkge1xuICAvKiFcbiAgICogQm9vdHN0cmFwICN7JGZpbGV9IHY1LjMuMiAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcbiAgICogQ29weXJpZ2h0IDIwMTEtMjAyMyBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcbiAgICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gICAqL1xufVxuIiwiOnJvb3QsXG5bZGF0YS1icy10aGVtZT1cImxpZ2h0XCJdIHtcbiAgLy8gTm90ZTogQ3VzdG9tIHZhcmlhYmxlIHZhbHVlcyBvbmx5IHN1cHBvcnQgU2Fzc1NjcmlwdCBpbnNpZGUgYCN7fWAuXG5cbiAgLy8gQ29sb3JzXG4gIC8vXG4gIC8vIEdlbmVyYXRlIHBhbGV0dGVzIGZvciBmdWxsIGNvbG9ycywgZ3JheXMsIGFuZCB0aGVtZSBjb2xvcnMuXG5cbiAgQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJGNvbG9ycyB7XG4gICAgLS0jeyRwcmVmaXh9I3skY29sb3J9OiAjeyR2YWx1ZX07XG4gIH1cblxuICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkZ3JheXMge1xuICAgIC0tI3skcHJlZml4fWdyYXktI3skY29sb3J9OiAjeyR2YWx1ZX07XG4gIH1cblxuICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgICAtLSN7JHByZWZpeH0jeyRjb2xvcn06ICN7JHZhbHVlfTtcbiAgfVxuXG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMtcmdiIHtcbiAgICAtLSN7JHByZWZpeH0jeyRjb2xvcn0tcmdiOiAjeyR2YWx1ZX07XG4gIH1cblxuICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzLXRleHQge1xuICAgIC0tI3skcHJlZml4fSN7JGNvbG9yfS10ZXh0LWVtcGhhc2lzOiAjeyR2YWx1ZX07XG4gIH1cblxuICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzLWJnLXN1YnRsZSB7XG4gICAgLS0jeyRwcmVmaXh9I3skY29sb3J9LWJnLXN1YnRsZTogI3skdmFsdWV9O1xuICB9XG5cbiAgQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycy1ib3JkZXItc3VidGxlIHtcbiAgICAtLSN7JHByZWZpeH0jeyRjb2xvcn0tYm9yZGVyLXN1YnRsZTogI3skdmFsdWV9O1xuICB9XG5cbiAgLS0jeyRwcmVmaXh9d2hpdGUtcmdiOiAje3RvLXJnYigkd2hpdGUpfTtcbiAgLS0jeyRwcmVmaXh9YmxhY2stcmdiOiAje3RvLXJnYigkYmxhY2spfTtcblxuICAvLyBGb250c1xuXG4gIC8vIE5vdGU6IFVzZSBgaW5zcGVjdGAgZm9yIGxpc3RzIHNvIHRoYXQgcXVvdGVkIGl0ZW1zIGtlZXAgdGhlIHF1b3Rlcy5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3MvaXNzdWVzLzIzODMjaXNzdWVjb21tZW50LTMzNjM0OTE3MlxuICAtLSN7JHByZWZpeH1mb250LXNhbnMtc2VyaWY6ICN7aW5zcGVjdCgkZm9udC1mYW1pbHktc2Fucy1zZXJpZil9O1xuICAtLSN7JHByZWZpeH1mb250LW1vbm9zcGFjZTogI3tpbnNwZWN0KCRmb250LWZhbWlseS1tb25vc3BhY2UpfTtcbiAgLS0jeyRwcmVmaXh9Z3JhZGllbnQ6ICN7JGdyYWRpZW50fTtcblxuICAvLyBSb290IGFuZCBib2R5XG4gIC8vIHNjc3MtZG9jcy1zdGFydCByb290LWJvZHktdmFyaWFibGVzXG4gIEBpZiAkZm9udC1zaXplLXJvb3QgIT0gbnVsbCB7XG4gICAgLS0jeyRwcmVmaXh9cm9vdC1mb250LXNpemU6ICN7JGZvbnQtc2l6ZS1yb290fTtcbiAgfVxuICAtLSN7JHByZWZpeH1ib2R5LWZvbnQtZmFtaWx5OiAje2luc3BlY3QoJGZvbnQtZmFtaWx5LWJhc2UpfTtcbiAgQGluY2x1ZGUgcmZzKCRmb250LXNpemUtYmFzZSwgLS0jeyRwcmVmaXh9Ym9keS1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1ib2R5LWZvbnQtd2VpZ2h0OiAjeyRmb250LXdlaWdodC1iYXNlfTtcbiAgLS0jeyRwcmVmaXh9Ym9keS1saW5lLWhlaWdodDogI3skbGluZS1oZWlnaHQtYmFzZX07XG4gIEBpZiAkYm9keS10ZXh0LWFsaWduICE9IG51bGwge1xuICAgIC0tI3skcHJlZml4fWJvZHktdGV4dC1hbGlnbjogI3skYm9keS10ZXh0LWFsaWdufTtcbiAgfVxuXG4gIC0tI3skcHJlZml4fWJvZHktY29sb3I6ICN7JGJvZHktY29sb3J9O1xuICAtLSN7JHByZWZpeH1ib2R5LWNvbG9yLXJnYjogI3t0by1yZ2IoJGJvZHktY29sb3IpfTtcbiAgLS0jeyRwcmVmaXh9Ym9keS1iZzogI3skYm9keS1iZ307XG4gIC0tI3skcHJlZml4fWJvZHktYmctcmdiOiAje3RvLXJnYigkYm9keS1iZyl9O1xuXG4gIC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yOiAjeyRib2R5LWVtcGhhc2lzLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9ZW1waGFzaXMtY29sb3ItcmdiOiAje3RvLXJnYigkYm9keS1lbXBoYXNpcy1jb2xvcil9O1xuXG4gIC0tI3skcHJlZml4fXNlY29uZGFyeS1jb2xvcjogI3skYm9keS1zZWNvbmRhcnktY29sb3J9O1xuICAtLSN7JHByZWZpeH1zZWNvbmRhcnktY29sb3ItcmdiOiAje3RvLXJnYigkYm9keS1zZWNvbmRhcnktY29sb3IpfTtcbiAgLS0jeyRwcmVmaXh9c2Vjb25kYXJ5LWJnOiAjeyRib2R5LXNlY29uZGFyeS1iZ307XG4gIC0tI3skcHJlZml4fXNlY29uZGFyeS1iZy1yZ2I6ICN7dG8tcmdiKCRib2R5LXNlY29uZGFyeS1iZyl9O1xuXG4gIC0tI3skcHJlZml4fXRlcnRpYXJ5LWNvbG9yOiAjeyRib2R5LXRlcnRpYXJ5LWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dGVydGlhcnktY29sb3ItcmdiOiAje3RvLXJnYigkYm9keS10ZXJ0aWFyeS1jb2xvcil9O1xuICAtLSN7JHByZWZpeH10ZXJ0aWFyeS1iZzogI3skYm9keS10ZXJ0aWFyeS1iZ307XG4gIC0tI3skcHJlZml4fXRlcnRpYXJ5LWJnLXJnYjogI3t0by1yZ2IoJGJvZHktdGVydGlhcnktYmcpfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCByb290LWJvZHktdmFyaWFibGVzXG5cbiAgLS0jeyRwcmVmaXh9aGVhZGluZy1jb2xvcjogI3skaGVhZGluZ3MtY29sb3J9O1xuXG4gIC0tI3skcHJlZml4fWxpbmstY29sb3I6ICN7JGxpbmstY29sb3J9O1xuICAtLSN7JHByZWZpeH1saW5rLWNvbG9yLXJnYjogI3t0by1yZ2IoJGxpbmstY29sb3IpfTtcbiAgLS0jeyRwcmVmaXh9bGluay1kZWNvcmF0aW9uOiAjeyRsaW5rLWRlY29yYXRpb259O1xuXG4gIC0tI3skcHJlZml4fWxpbmstaG92ZXItY29sb3I6ICN7JGxpbmstaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1saW5rLWhvdmVyLWNvbG9yLXJnYjogI3t0by1yZ2IoJGxpbmstaG92ZXItY29sb3IpfTtcblxuICBAaWYgJGxpbmstaG92ZXItZGVjb3JhdGlvbiAhPSBudWxsIHtcbiAgICAtLSN7JHByZWZpeH1saW5rLWhvdmVyLWRlY29yYXRpb246ICN7JGxpbmstaG92ZXItZGVjb3JhdGlvbn07XG4gIH1cblxuICAtLSN7JHByZWZpeH1jb2RlLWNvbG9yOiAjeyRjb2RlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9aGlnaGxpZ2h0LWNvbG9yOiAjeyRtYXJrLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9aGlnaGxpZ2h0LWJnOiAjeyRtYXJrLWJnfTtcblxuICAvLyBzY3NzLWRvY3Mtc3RhcnQgcm9vdC1ib3JkZXItdmFyXG4gIC0tI3skcHJlZml4fWJvcmRlci13aWR0aDogI3skYm9yZGVyLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXN0eWxlOiAjeyRib3JkZXItc3R5bGV9O1xuICAtLSN7JHByZWZpeH1ib3JkZXItY29sb3I6ICN7JGJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fWJvcmRlci1jb2xvci10cmFuc2x1Y2VudDogI3skYm9yZGVyLWNvbG9yLXRyYW5zbHVjZW50fTtcblxuICAtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzOiAjeyRib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cy1zbTogI3skYm9yZGVyLXJhZGl1cy1zbX07XG4gIC0tI3skcHJlZml4fWJvcmRlci1yYWRpdXMtbGc6ICN7JGJvcmRlci1yYWRpdXMtbGd9O1xuICAtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLXhsOiAjeyRib3JkZXItcmFkaXVzLXhsfTtcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cy14eGw6ICN7JGJvcmRlci1yYWRpdXMteHhsfTtcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cy0yeGw6IHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLXh4bCk7IC8vIERlcHJlY2F0ZWQgaW4gdjUuMy4wIGZvciBjb25zaXN0ZW5jeVxuICAtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLXBpbGw6ICN7JGJvcmRlci1yYWRpdXMtcGlsbH07XG4gIC8vIHNjc3MtZG9jcy1lbmQgcm9vdC1ib3JkZXItdmFyXG5cbiAgLS0jeyRwcmVmaXh9Ym94LXNoYWRvdzogI3skYm94LXNoYWRvd307XG4gIC0tI3skcHJlZml4fWJveC1zaGFkb3ctc206ICN7JGJveC1zaGFkb3ctc219O1xuICAtLSN7JHByZWZpeH1ib3gtc2hhZG93LWxnOiAjeyRib3gtc2hhZG93LWxnfTtcbiAgLS0jeyRwcmVmaXh9Ym94LXNoYWRvdy1pbnNldDogI3skYm94LXNoYWRvdy1pbnNldH07XG5cbiAgLy8gRm9jdXMgc3R5bGVzXG4gIC8vIHNjc3MtZG9jcy1zdGFydCByb290LWZvY3VzLXZhcmlhYmxlc1xuICAtLSN7JHByZWZpeH1mb2N1cy1yaW5nLXdpZHRoOiAjeyRmb2N1cy1yaW5nLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9Zm9jdXMtcmluZy1vcGFjaXR5OiAjeyRmb2N1cy1yaW5nLW9wYWNpdHl9O1xuICAtLSN7JHByZWZpeH1mb2N1cy1yaW5nLWNvbG9yOiAjeyRmb2N1cy1yaW5nLWNvbG9yfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCByb290LWZvY3VzLXZhcmlhYmxlc1xuXG4gIC8vIHNjc3MtZG9jcy1zdGFydCByb290LWZvcm0tdmFsaWRhdGlvbi12YXJpYWJsZXNcbiAgLS0jeyRwcmVmaXh9Zm9ybS12YWxpZC1jb2xvcjogI3skZm9ybS12YWxpZC1jb2xvcn07XG4gIC0tI3skcHJlZml4fWZvcm0tdmFsaWQtYm9yZGVyLWNvbG9yOiAjeyRmb3JtLXZhbGlkLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fWZvcm0taW52YWxpZC1jb2xvcjogI3skZm9ybS1pbnZhbGlkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9Zm9ybS1pbnZhbGlkLWJvcmRlci1jb2xvcjogI3skZm9ybS1pbnZhbGlkLWJvcmRlci1jb2xvcn07XG4gIC8vIHNjc3MtZG9jcy1lbmQgcm9vdC1mb3JtLXZhbGlkYXRpb24tdmFyaWFibGVzXG59XG5cbkBpZiAkZW5hYmxlLWRhcmstbW9kZSB7XG4gIEBpbmNsdWRlIGNvbG9yLW1vZGUoZGFyaywgdHJ1ZSkge1xuICAgIGNvbG9yLXNjaGVtZTogZGFyaztcblxuICAgIC8vIHNjc3MtZG9jcy1zdGFydCByb290LWRhcmstbW9kZS12YXJzXG4gICAgLS0jeyRwcmVmaXh9Ym9keS1jb2xvcjogI3skYm9keS1jb2xvci1kYXJrfTtcbiAgICAtLSN7JHByZWZpeH1ib2R5LWNvbG9yLXJnYjogI3t0by1yZ2IoJGJvZHktY29sb3ItZGFyayl9O1xuICAgIC0tI3skcHJlZml4fWJvZHktYmc6ICN7JGJvZHktYmctZGFya307XG4gICAgLS0jeyRwcmVmaXh9Ym9keS1iZy1yZ2I6ICN7dG8tcmdiKCRib2R5LWJnLWRhcmspfTtcblxuICAgIC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yOiAjeyRib2R5LWVtcGhhc2lzLWNvbG9yLWRhcmt9O1xuICAgIC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yLXJnYjogI3t0by1yZ2IoJGJvZHktZW1waGFzaXMtY29sb3ItZGFyayl9O1xuXG4gICAgLS0jeyRwcmVmaXh9c2Vjb25kYXJ5LWNvbG9yOiAjeyRib2R5LXNlY29uZGFyeS1jb2xvci1kYXJrfTtcbiAgICAtLSN7JHByZWZpeH1zZWNvbmRhcnktY29sb3ItcmdiOiAje3RvLXJnYigkYm9keS1zZWNvbmRhcnktY29sb3ItZGFyayl9O1xuICAgIC0tI3skcHJlZml4fXNlY29uZGFyeS1iZzogI3skYm9keS1zZWNvbmRhcnktYmctZGFya307XG4gICAgLS0jeyRwcmVmaXh9c2Vjb25kYXJ5LWJnLXJnYjogI3t0by1yZ2IoJGJvZHktc2Vjb25kYXJ5LWJnLWRhcmspfTtcblxuICAgIC0tI3skcHJlZml4fXRlcnRpYXJ5LWNvbG9yOiAjeyRib2R5LXRlcnRpYXJ5LWNvbG9yLWRhcmt9O1xuICAgIC0tI3skcHJlZml4fXRlcnRpYXJ5LWNvbG9yLXJnYjogI3t0by1yZ2IoJGJvZHktdGVydGlhcnktY29sb3ItZGFyayl9O1xuICAgIC0tI3skcHJlZml4fXRlcnRpYXJ5LWJnOiAjeyRib2R5LXRlcnRpYXJ5LWJnLWRhcmt9O1xuICAgIC0tI3skcHJlZml4fXRlcnRpYXJ5LWJnLXJnYjogI3t0by1yZ2IoJGJvZHktdGVydGlhcnktYmctZGFyayl9O1xuXG4gICAgQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycy10ZXh0LWRhcmsge1xuICAgICAgLS0jeyRwcmVmaXh9I3skY29sb3J9LXRleHQtZW1waGFzaXM6ICN7JHZhbHVlfTtcbiAgICB9XG5cbiAgICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzLWJnLXN1YnRsZS1kYXJrIHtcbiAgICAgIC0tI3skcHJlZml4fSN7JGNvbG9yfS1iZy1zdWJ0bGU6ICN7JHZhbHVlfTtcbiAgICB9XG5cbiAgICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzLWJvcmRlci1zdWJ0bGUtZGFyayB7XG4gICAgICAtLSN7JHByZWZpeH0jeyRjb2xvcn0tYm9yZGVyLXN1YnRsZTogI3skdmFsdWV9O1xuICAgIH1cblxuICAgIC0tI3skcHJlZml4fWhlYWRpbmctY29sb3I6ICN7JGhlYWRpbmdzLWNvbG9yLWRhcmt9O1xuXG4gICAgLS0jeyRwcmVmaXh9bGluay1jb2xvcjogI3skbGluay1jb2xvci1kYXJrfTtcbiAgICAtLSN7JHByZWZpeH1saW5rLWhvdmVyLWNvbG9yOiAjeyRsaW5rLWhvdmVyLWNvbG9yLWRhcmt9O1xuICAgIC0tI3skcHJlZml4fWxpbmstY29sb3ItcmdiOiAje3RvLXJnYigkbGluay1jb2xvci1kYXJrKX07XG4gICAgLS0jeyRwcmVmaXh9bGluay1ob3Zlci1jb2xvci1yZ2I6ICN7dG8tcmdiKCRsaW5rLWhvdmVyLWNvbG9yLWRhcmspfTtcblxuICAgIC0tI3skcHJlZml4fWNvZGUtY29sb3I6ICN7JGNvZGUtY29sb3ItZGFya307XG4gICAgLS0jeyRwcmVmaXh9aGlnaGxpZ2h0LWNvbG9yOiAjeyRtYXJrLWNvbG9yLWRhcmt9O1xuICAgIC0tI3skcHJlZml4fWhpZ2hsaWdodC1iZzogI3skbWFyay1iZy1kYXJrfTtcblxuICAgIC0tI3skcHJlZml4fWJvcmRlci1jb2xvcjogI3skYm9yZGVyLWNvbG9yLWRhcmt9O1xuICAgIC0tI3skcHJlZml4fWJvcmRlci1jb2xvci10cmFuc2x1Y2VudDogI3skYm9yZGVyLWNvbG9yLXRyYW5zbHVjZW50LWRhcmt9O1xuXG4gICAgLS0jeyRwcmVmaXh9Zm9ybS12YWxpZC1jb2xvcjogI3skZm9ybS12YWxpZC1jb2xvci1kYXJrfTtcbiAgICAtLSN7JHByZWZpeH1mb3JtLXZhbGlkLWJvcmRlci1jb2xvcjogI3skZm9ybS12YWxpZC1ib3JkZXItY29sb3ItZGFya307XG4gICAgLS0jeyRwcmVmaXh9Zm9ybS1pbnZhbGlkLWNvbG9yOiAjeyRmb3JtLWludmFsaWQtY29sb3ItZGFya307XG4gICAgLS0jeyRwcmVmaXh9Zm9ybS1pbnZhbGlkLWJvcmRlci1jb2xvcjogI3skZm9ybS1pbnZhbGlkLWJvcmRlci1jb2xvci1kYXJrfTtcbiAgICAvLyBzY3NzLWRvY3MtZW5kIHJvb3QtZGFyay1tb2RlLXZhcnNcbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kaW1lbnNpb24tbm8tbm9uLW51bWVyaWMtdmFsdWVzXG5cbi8vIFNDU1MgUkZTIG1peGluXG4vL1xuLy8gQXV0b21hdGVkIHJlc3BvbnNpdmUgdmFsdWVzIGZvciBmb250IHNpemVzLCBwYWRkaW5ncywgbWFyZ2lucyBhbmQgbXVjaCBtb3JlXG4vL1xuLy8gTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9yZnMvYmxvYi9tYWluL0xJQ0VOU0UpXG5cbi8vIENvbmZpZ3VyYXRpb25cblxuLy8gQmFzZSB2YWx1ZVxuJHJmcy1iYXNlLXZhbHVlOiAxLjI1cmVtICFkZWZhdWx0O1xuJHJmcy11bml0OiByZW0gIWRlZmF1bHQ7XG5cbkBpZiAkcmZzLXVuaXQgIT0gcmVtIGFuZCAkcmZzLXVuaXQgIT0gcHgge1xuICBAZXJyb3IgXCJgI3skcmZzLXVuaXR9YCBpcyBub3QgYSB2YWxpZCB1bml0IGZvciAkcmZzLXVuaXQuIFVzZSBgcHhgIG9yIGByZW1gLlwiO1xufVxuXG4vLyBCcmVha3BvaW50IGF0IHdoZXJlIHZhbHVlcyBzdGFydCBkZWNyZWFzaW5nIGlmIHNjcmVlbiB3aWR0aCBpcyBzbWFsbGVyXG4kcmZzLWJyZWFrcG9pbnQ6IDEyMDBweCAhZGVmYXVsdDtcbiRyZnMtYnJlYWtwb2ludC11bml0OiBweCAhZGVmYXVsdDtcblxuQGlmICRyZnMtYnJlYWtwb2ludC11bml0ICE9IHB4IGFuZCAkcmZzLWJyZWFrcG9pbnQtdW5pdCAhPSBlbSBhbmQgJHJmcy1icmVha3BvaW50LXVuaXQgIT0gcmVtIHtcbiAgQGVycm9yIFwiYCN7JHJmcy1icmVha3BvaW50LXVuaXR9YCBpcyBub3QgYSB2YWxpZCB1bml0IGZvciAkcmZzLWJyZWFrcG9pbnQtdW5pdC4gVXNlIGBweGAsIGBlbWAgb3IgYHJlbWAuXCI7XG59XG5cbi8vIFJlc2l6ZSB2YWx1ZXMgYmFzZWQgb24gc2NyZWVuIGhlaWdodCBhbmQgd2lkdGhcbiRyZnMtdHdvLWRpbWVuc2lvbmFsOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRmFjdG9yIG9mIGRlY3JlYXNlXG4kcmZzLWZhY3RvcjogMTAgIWRlZmF1bHQ7XG5cbkBpZiB0eXBlLW9mKCRyZnMtZmFjdG9yKSAhPSBudW1iZXIgb3IgJHJmcy1mYWN0b3IgPD0gMSB7XG4gIEBlcnJvciBcImAjeyRyZnMtZmFjdG9yfWAgaXMgbm90IGEgdmFsaWQgICRyZnMtZmFjdG9yLCBpdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxLlwiO1xufVxuXG4vLyBNb2RlLiBQb3NzaWJpbGl0aWVzOiBcIm1pbi1tZWRpYS1xdWVyeVwiLCBcIm1heC1tZWRpYS1xdWVyeVwiXG4kcmZzLW1vZGU6IG1pbi1tZWRpYS1xdWVyeSAhZGVmYXVsdDtcblxuLy8gR2VuZXJhdGUgZW5hYmxlIG9yIGRpc2FibGUgY2xhc3Nlcy4gUG9zc2liaWxpdGllczogZmFsc2UsIFwiZW5hYmxlXCIgb3IgXCJkaXNhYmxlXCJcbiRyZnMtY2xhc3M6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyAxIHJlbSA9ICRyZnMtcmVtLXZhbHVlIHB4XG4kcmZzLXJlbS12YWx1ZTogMTYgIWRlZmF1bHQ7XG5cbi8vIFNhZmFyaSBpZnJhbWUgcmVzaXplIGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvcmZzL2lzc3Vlcy8xNFxuJHJmcy1zYWZhcmktaWZyYW1lLXJlc2l6ZS1idWctZml4OiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRGlzYWJsZSBSRlMgYnkgc2V0dGluZyAkZW5hYmxlLXJmcyB0byBmYWxzZVxuJGVuYWJsZS1yZnM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIENhY2hlICRyZnMtYmFzZS12YWx1ZSB1bml0XG4kcmZzLWJhc2UtdmFsdWUtdW5pdDogdW5pdCgkcmZzLWJhc2UtdmFsdWUpO1xuXG5AZnVuY3Rpb24gZGl2aWRlKCRkaXZpZGVuZCwgJGRpdmlzb3IsICRwcmVjaXNpb246IDEwKSB7XG4gICRzaWduOiBpZigkZGl2aWRlbmQgPiAwIGFuZCAkZGl2aXNvciA+IDAgb3IgJGRpdmlkZW5kIDwgMCBhbmQgJGRpdmlzb3IgPCAwLCAxLCAtMSk7XG4gICRkaXZpZGVuZDogYWJzKCRkaXZpZGVuZCk7XG4gICRkaXZpc29yOiBhYnMoJGRpdmlzb3IpO1xuICBAaWYgJGRpdmlkZW5kID09IDAge1xuICAgIEByZXR1cm4gMDtcbiAgfVxuICBAaWYgJGRpdmlzb3IgPT0gMCB7XG4gICAgQGVycm9yIFwiQ2Fubm90IGRpdmlkZSBieSAwXCI7XG4gIH1cbiAgJHJlbWFpbmRlcjogJGRpdmlkZW5kO1xuICAkcmVzdWx0OiAwO1xuICAkZmFjdG9yOiAxMDtcbiAgQHdoaWxlICgkcmVtYWluZGVyID4gMCBhbmQgJHByZWNpc2lvbiA+PSAwKSB7XG4gICAgJHF1b3RpZW50OiAwO1xuICAgIEB3aGlsZSAoJHJlbWFpbmRlciA+PSAkZGl2aXNvcikge1xuICAgICAgJHJlbWFpbmRlcjogJHJlbWFpbmRlciAtICRkaXZpc29yO1xuICAgICAgJHF1b3RpZW50OiAkcXVvdGllbnQgKyAxO1xuICAgIH1cbiAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTAgKyAkcXVvdGllbnQ7XG4gICAgJGZhY3RvcjogJGZhY3RvciAqIC4xO1xuICAgICRyZW1haW5kZXI6ICRyZW1haW5kZXIgKiAxMDtcbiAgICAkcHJlY2lzaW9uOiAkcHJlY2lzaW9uIC0gMTtcbiAgICBAaWYgKCRwcmVjaXNpb24gPCAwIGFuZCAkcmVtYWluZGVyID49ICRkaXZpc29yICogNSkge1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCArIDE7XG4gICAgfVxuICB9XG4gICRyZXN1bHQ6ICRyZXN1bHQgKiAkZmFjdG9yICogJHNpZ247XG4gICRkaXZpZGVuZC11bml0OiB1bml0KCRkaXZpZGVuZCk7XG4gICRkaXZpc29yLXVuaXQ6IHVuaXQoJGRpdmlzb3IpO1xuICAkdW5pdC1tYXA6IChcbiAgICBcInB4XCI6IDFweCxcbiAgICBcInJlbVwiOiAxcmVtLFxuICAgIFwiZW1cIjogMWVtLFxuICAgIFwiJVwiOiAxJVxuICApO1xuICBAaWYgKCRkaXZpZGVuZC11bml0ICE9ICRkaXZpc29yLXVuaXQgYW5kIG1hcC1oYXMta2V5KCR1bml0LW1hcCwgJGRpdmlkZW5kLXVuaXQpKSB7XG4gICAgJHJlc3VsdDogJHJlc3VsdCAqIG1hcC1nZXQoJHVuaXQtbWFwLCAkZGl2aWRlbmQtdW5pdCk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vLyBSZW1vdmUgcHgtdW5pdCBmcm9tICRyZnMtYmFzZS12YWx1ZSBmb3IgY2FsY3VsYXRpb25zXG5AaWYgJHJmcy1iYXNlLXZhbHVlLXVuaXQgPT0gcHgge1xuICAkcmZzLWJhc2UtdmFsdWU6IGRpdmlkZSgkcmZzLWJhc2UtdmFsdWUsICRyZnMtYmFzZS12YWx1ZSAqIDAgKyAxKTtcbn1cbkBlbHNlIGlmICRyZnMtYmFzZS12YWx1ZS11bml0ID09IHJlbSB7XG4gICRyZnMtYmFzZS12YWx1ZTogZGl2aWRlKCRyZnMtYmFzZS12YWx1ZSwgZGl2aWRlKCRyZnMtYmFzZS12YWx1ZSAqIDAgKyAxLCAkcmZzLXJlbS12YWx1ZSkpO1xufVxuXG4vLyBDYWNoZSAkcmZzLWJyZWFrcG9pbnQgdW5pdCB0byBwcmV2ZW50IG11bHRpcGxlIGNhbGxzXG4kcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZTogdW5pdCgkcmZzLWJyZWFrcG9pbnQpO1xuXG4vLyBSZW1vdmUgdW5pdCBmcm9tICRyZnMtYnJlYWtwb2ludCBmb3IgY2FsY3VsYXRpb25zXG5AaWYgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gcHgge1xuICAkcmZzLWJyZWFrcG9pbnQ6IGRpdmlkZSgkcmZzLWJyZWFrcG9pbnQsICRyZnMtYnJlYWtwb2ludCAqIDAgKyAxKTtcbn1cbkBlbHNlIGlmICRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlID09IHJlbSBvciAkcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZSA9PSBcImVtXCIge1xuICAkcmZzLWJyZWFrcG9pbnQ6IGRpdmlkZSgkcmZzLWJyZWFrcG9pbnQsIGRpdmlkZSgkcmZzLWJyZWFrcG9pbnQgKiAwICsgMSwgJHJmcy1yZW0tdmFsdWUpKTtcbn1cblxuLy8gQ2FsY3VsYXRlIHRoZSBtZWRpYSBxdWVyeSB2YWx1ZVxuJHJmcy1tcS12YWx1ZTogaWYoJHJmcy1icmVha3BvaW50LXVuaXQgPT0gcHgsICN7JHJmcy1icmVha3BvaW50fXB4LCAje2RpdmlkZSgkcmZzLWJyZWFrcG9pbnQsICRyZnMtcmVtLXZhbHVlKX0jeyRyZnMtYnJlYWtwb2ludC11bml0fSk7XG4kcmZzLW1xLXByb3BlcnR5LXdpZHRoOiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCBtYXgtd2lkdGgsIG1pbi13aWR0aCk7XG4kcmZzLW1xLXByb3BlcnR5LWhlaWdodDogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgbWF4LWhlaWdodCwgbWluLWhlaWdodCk7XG5cbi8vIEludGVybmFsIG1peGluIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIG1lZGlhIHF1ZXJ5IG5lZWRzIHRvIGJlIHVzZWRcbkBtaXhpbiBfcmZzLW1lZGlhLXF1ZXJ5IHtcbiAgQGlmICRyZnMtdHdvLWRpbWVuc2lvbmFsIHtcbiAgICBAaWYgJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSB7XG4gICAgICBAbWVkaWEgKCN7JHJmcy1tcS1wcm9wZXJ0eS13aWR0aH06ICN7JHJmcy1tcS12YWx1ZX0pLCAoI3skcmZzLW1xLXByb3BlcnR5LWhlaWdodH06ICN7JHJmcy1tcS12YWx1ZX0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBtZWRpYSAoI3skcmZzLW1xLXByb3BlcnR5LXdpZHRofTogI3skcmZzLW1xLXZhbHVlfSkgYW5kICgjeyRyZnMtbXEtcHJvcGVydHktaGVpZ2h0fTogI3skcmZzLW1xLXZhbHVlfSkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBtZWRpYSAoI3skcmZzLW1xLXByb3BlcnR5LXdpZHRofTogI3skcmZzLW1xLXZhbHVlfSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIEludGVybmFsIG1peGluIHRoYXQgYWRkcyBkaXNhYmxlIGNsYXNzZXMgdG8gdGhlIHNlbGVjdG9yIGlmIG5lZWRlZC5cbkBtaXhpbiBfcmZzLXJ1bGUge1xuICBAaWYgJHJmcy1jbGFzcyA9PSBkaXNhYmxlIGFuZCAkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5IHtcbiAgICAvLyBBZGRpbmcgYW4gZXh0cmEgY2xhc3MgaW5jcmVhc2VzIHNwZWNpZmljaXR5LCB3aGljaCBwcmV2ZW50cyB0aGUgbWVkaWEgcXVlcnkgdG8gb3ZlcnJpZGUgdGhlIHByb3BlcnR5XG4gICAgJixcbiAgICAuZGlzYWJsZS1yZnMgJixcbiAgICAmLmRpc2FibGUtcmZzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcmZzLWNsYXNzID09IGVuYWJsZSBhbmQgJHJmcy1tb2RlID09IG1pbi1tZWRpYS1xdWVyeSB7XG4gICAgLmVuYWJsZS1yZnMgJixcbiAgICAmLmVuYWJsZS1yZnMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBJbnRlcm5hbCBtaXhpbiB0aGF0IGFkZHMgZW5hYmxlIGNsYXNzZXMgdG8gdGhlIHNlbGVjdG9yIGlmIG5lZWRlZC5cbkBtaXhpbiBfcmZzLW1lZGlhLXF1ZXJ5LXJ1bGUge1xuXG4gIEBpZiAkcmZzLWNsYXNzID09IGVuYWJsZSB7XG4gICAgQGlmICRyZnMtbW9kZSA9PSBtaW4tbWVkaWEtcXVlcnkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgX3Jmcy1tZWRpYS1xdWVyeSAoKSB7XG4gICAgICAuZW5hYmxlLXJmcyAmLFxuICAgICAgJi5lbmFibGUtcmZzIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJHJmcy1jbGFzcyA9PSBkaXNhYmxlIGFuZCAkcmZzLW1vZGUgPT0gbWluLW1lZGlhLXF1ZXJ5IHtcbiAgICAgIC5kaXNhYmxlLXJmcyAmLFxuICAgICAgJi5kaXNhYmxlLXJmcyB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBfcmZzLW1lZGlhLXF1ZXJ5ICgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBmb3JtYXR0ZWQgbm9uLXJlc3BvbnNpdmUgdmFsdWVcbkBmdW5jdGlvbiByZnMtdmFsdWUoJHZhbHVlcykge1xuICAvLyBDb252ZXJ0IHRvIGxpc3RcbiAgJHZhbHVlczogaWYodHlwZS1vZigkdmFsdWVzKSAhPSBsaXN0LCAoJHZhbHVlcywpLCAkdmFsdWVzKTtcblxuICAkdmFsOiBcIlwiO1xuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHZhbHVlIGFuZCBjYWxjdWxhdGUgdmFsdWVcbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuICAgIEBpZiAkdmFsdWUgPT0gMCB7XG4gICAgICAkdmFsOiAkdmFsICsgXCIgMFwiO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBDYWNoZSAkdmFsdWUgdW5pdFxuICAgICAgJHVuaXQ6IGlmKHR5cGUtb2YoJHZhbHVlKSA9PSBcIm51bWJlclwiLCB1bml0KCR2YWx1ZSksIGZhbHNlKTtcblxuICAgICAgQGlmICR1bml0ID09IHB4IHtcbiAgICAgICAgLy8gQ29udmVydCB0byByZW0gaWYgbmVlZGVkXG4gICAgICAgICR2YWw6ICR2YWwgKyBcIiBcIiArIGlmKCRyZnMtdW5pdCA9PSByZW0sICN7ZGl2aWRlKCR2YWx1ZSwgJHZhbHVlICogMCArICRyZnMtcmVtLXZhbHVlKX1yZW0sICR2YWx1ZSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiAkdW5pdCA9PSByZW0ge1xuICAgICAgICAvLyBDb252ZXJ0IHRvIHB4IGlmIG5lZWRlZFxuICAgICAgICAkdmFsOiAkdmFsICsgXCIgXCIgKyBpZigkcmZzLXVuaXQgPT0gcHgsICN7ZGl2aWRlKCR2YWx1ZSwgJHZhbHVlICogMCArIDEpICogJHJmcy1yZW0tdmFsdWV9cHgsICR2YWx1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLy8gSWYgJHZhbHVlIGlzbid0IGEgbnVtYmVyIChsaWtlIGluaGVyaXQpIG9yICR2YWx1ZSBoYXMgYSB1bml0IChub3QgcHggb3IgcmVtLCBsaWtlIDEuNWVtKSBvciAkIGlzIDAsIGp1c3QgcHJpbnQgdGhlIHZhbHVlXG4gICAgICAgICR2YWw6ICR2YWwgKyBcIiBcIiArICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmUgZmlyc3Qgc3BhY2VcbiAgQHJldHVybiB1bnF1b3RlKHN0ci1zbGljZSgkdmFsLCAyKSk7XG59XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIHJlc3BvbnNpdmUgdmFsdWUgY2FsY3VsYXRlZCBieSBSRlNcbkBmdW5jdGlvbiByZnMtZmx1aWQtdmFsdWUoJHZhbHVlcykge1xuICAvLyBDb252ZXJ0IHRvIGxpc3RcbiAgJHZhbHVlczogaWYodHlwZS1vZigkdmFsdWVzKSAhPSBsaXN0LCAoJHZhbHVlcywpLCAkdmFsdWVzKTtcblxuICAkdmFsOiBcIlwiO1xuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHZhbHVlIGFuZCBjYWxjdWxhdGUgdmFsdWVcbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuICAgIEBpZiAkdmFsdWUgPT0gMCB7XG4gICAgICAkdmFsOiAkdmFsICsgXCIgMFwiO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLy8gQ2FjaGUgJHZhbHVlIHVuaXRcbiAgICAgICR1bml0OiBpZih0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiwgdW5pdCgkdmFsdWUpLCBmYWxzZSk7XG5cbiAgICAgIC8vIElmICR2YWx1ZSBpc24ndCBhIG51bWJlciAobGlrZSBpbmhlcml0KSBvciAkdmFsdWUgaGFzIGEgdW5pdCAobm90IHB4IG9yIHJlbSwgbGlrZSAxLjVlbSkgb3IgJCBpcyAwLCBqdXN0IHByaW50IHRoZSB2YWx1ZVxuICAgICAgQGlmIG5vdCAkdW5pdCBvciAkdW5pdCAhPSBweCBhbmQgJHVuaXQgIT0gcmVtIHtcbiAgICAgICAgJHZhbDogJHZhbCArIFwiIFwiICsgJHZhbHVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSB1bml0IGZyb20gJHZhbHVlIGZvciBjYWxjdWxhdGlvbnNcbiAgICAgICAgJHZhbHVlOiBkaXZpZGUoJHZhbHVlLCAkdmFsdWUgKiAwICsgaWYoJHVuaXQgPT0gcHgsIDEsIGRpdmlkZSgxLCAkcmZzLXJlbS12YWx1ZSkpKTtcblxuICAgICAgICAvLyBPbmx5IGFkZCB0aGUgbWVkaWEgcXVlcnkgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZVxuICAgICAgICBAaWYgYWJzKCR2YWx1ZSkgPD0gJHJmcy1iYXNlLXZhbHVlIG9yIG5vdCAkZW5hYmxlLXJmcyB7XG4gICAgICAgICAgJHZhbDogJHZhbCArIFwiIFwiICsgaWYoJHJmcy11bml0ID09IHJlbSwgI3tkaXZpZGUoJHZhbHVlLCAkcmZzLXJlbS12YWx1ZSl9cmVtLCAjeyR2YWx1ZX1weCk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgbWluaW11bSB2YWx1ZVxuICAgICAgICAgICR2YWx1ZS1taW46ICRyZnMtYmFzZS12YWx1ZSArIGRpdmlkZShhYnMoJHZhbHVlKSAtICRyZnMtYmFzZS12YWx1ZSwgJHJmcy1mYWN0b3IpO1xuXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIGRpZmZlcmVuY2UgYmV0d2VlbiAkdmFsdWUgYW5kIHRoZSBtaW5pbXVtIHZhbHVlXG4gICAgICAgICAgJHZhbHVlLWRpZmY6IGFicygkdmFsdWUpIC0gJHZhbHVlLW1pbjtcblxuICAgICAgICAgIC8vIEJhc2UgdmFsdWUgZm9ybWF0dGluZ1xuICAgICAgICAgICRtaW4td2lkdGg6IGlmKCRyZnMtdW5pdCA9PSByZW0sICN7ZGl2aWRlKCR2YWx1ZS1taW4sICRyZnMtcmVtLXZhbHVlKX1yZW0sICN7JHZhbHVlLW1pbn1weCk7XG5cbiAgICAgICAgICAvLyBVc2UgbmVnYXRpdmUgdmFsdWUgaWYgbmVlZGVkXG4gICAgICAgICAgJG1pbi13aWR0aDogaWYoJHZhbHVlIDwgMCwgLSRtaW4td2lkdGgsICRtaW4td2lkdGgpO1xuXG4gICAgICAgICAgLy8gVXNlIGB2bWluYCBpZiB0d28tZGltZW5zaW9uYWwgaXMgZW5hYmxlZFxuICAgICAgICAgICR2YXJpYWJsZS11bml0OiBpZigkcmZzLXR3by1kaW1lbnNpb25hbCwgdm1pbiwgdncpO1xuXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB2YXJpYWJsZSB3aWR0aCBiZXR3ZWVuIDAgYW5kICRyZnMtYnJlYWtwb2ludFxuICAgICAgICAgICR2YXJpYWJsZS13aWR0aDogI3tkaXZpZGUoJHZhbHVlLWRpZmYgKiAxMDAsICRyZnMtYnJlYWtwb2ludCl9I3skdmFyaWFibGUtdW5pdH07XG5cbiAgICAgICAgICAvLyBSZXR1cm4gdGhlIGNhbGN1bGF0ZWQgdmFsdWVcbiAgICAgICAgICAkdmFsOiAkdmFsICsgXCIgY2FsYyhcIiArICRtaW4td2lkdGggKyBpZigkdmFsdWUgPCAwLCBcIiAtIFwiLCBcIiArIFwiKSArICR2YXJpYWJsZS13aWR0aCArIFwiKVwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIGZpcnN0IHNwYWNlXG4gIEByZXR1cm4gdW5xdW90ZShzdHItc2xpY2UoJHZhbCwgMikpO1xufVxuXG4vLyBSRlMgbWl4aW5cbkBtaXhpbiByZnMoJHZhbHVlcywgJHByb3BlcnR5OiBmb250LXNpemUpIHtcbiAgQGlmICR2YWx1ZXMgIT0gbnVsbCB7XG4gICAgJHZhbDogcmZzLXZhbHVlKCR2YWx1ZXMpO1xuICAgICRmbHVpZC12YWw6IHJmcy1mbHVpZC12YWx1ZSgkdmFsdWVzKTtcblxuICAgIC8vIERvIG5vdCBwcmludCB0aGUgbWVkaWEgcXVlcnkgaWYgcmVzcG9uc2l2ZSAmIG5vbi1yZXNwb25zaXZlIHZhbHVlcyBhcmUgdGhlIHNhbWVcbiAgICBAaWYgJHZhbCA9PSAkZmx1aWQtdmFsIHtcbiAgICAgICN7JHByb3BlcnR5fTogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgX3Jmcy1ydWxlICgpIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCAkdmFsLCAkZmx1aWQtdmFsKTtcblxuICAgICAgICAvLyBJbmNsdWRlIHNhZmFyaSBpZnJhbWUgcmVzaXplIGZpeCBpZiBuZWVkZWRcbiAgICAgICAgbWluLXdpZHRoOiBpZigkcmZzLXNhZmFyaS1pZnJhbWUtcmVzaXplLWJ1Zy1maXgsICgwICogMXZ3KSwgbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIF9yZnMtbWVkaWEtcXVlcnktcnVsZSAoKSB7XG4gICAgICAgICN7JHByb3BlcnR5fTogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgJGZsdWlkLXZhbCwgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFNob3J0aGFuZCBoZWxwZXIgbWl4aW5zXG5AbWl4aW4gZm9udC1zaXplKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlKTtcbn1cblxuQG1peGluIHBhZGRpbmcoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmcpO1xufVxuXG5AbWl4aW4gcGFkZGluZy10b3AoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmctdG9wKTtcbn1cblxuQG1peGluIHBhZGRpbmctcmlnaHQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmctcmlnaHQpO1xufVxuXG5AbWl4aW4gcGFkZGluZy1ib3R0b20oJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmctYm90dG9tKTtcbn1cblxuQG1peGluIHBhZGRpbmctbGVmdCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZy1sZWZ0KTtcbn1cblxuQG1peGluIG1hcmdpbigkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luKTtcbn1cblxuQG1peGluIG1hcmdpbi10b3AoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi10b3ApO1xufVxuXG5AbWl4aW4gbWFyZ2luLXJpZ2h0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4tcmlnaHQpO1xufVxuXG5AbWl4aW4gbWFyZ2luLWJvdHRvbSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luLWJvdHRvbSk7XG59XG5cbkBtaXhpbiBtYXJnaW4tbGVmdCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luLWxlZnQpO1xufVxuIiwiLy8gc2Nzcy1kb2NzLXN0YXJ0IGNvbG9yLW1vZGUtbWl4aW5cbkBtaXhpbiBjb2xvci1tb2RlKCRtb2RlOiBsaWdodCwgJHJvb3Q6IGZhbHNlKSB7XG4gIEBpZiAkY29sb3ItbW9kZS10eXBlID09IFwibWVkaWEtcXVlcnlcIiB7XG4gICAgQGlmICRyb290ID09IHRydWUge1xuICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogJG1vZGUpIHtcbiAgICAgICAgOnJvb3Qge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiAkbW9kZSkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIFtkYXRhLWJzLXRoZW1lPVwiI3skbW9kZX1cIl0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIGNvbG9yLW1vZGUtbWl4aW5cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCwgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlLCBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4XG5cblxuLy8gUmVib290XG4vL1xuLy8gTm9ybWFsaXphdGlvbiBvZiBIVE1MIGVsZW1lbnRzLCBtYW51YWxseSBmb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzIHRvIHJlbW92ZVxuLy8gc3R5bGVzIHRhcmdldGluZyBpcnJlbGV2YW50IGJyb3dzZXJzIHdoaWxlIGFwcGx5aW5nIG5ldyBzdHlsZXMuXG4vL1xuLy8gTm9ybWFsaXplIGlzIGxpY2Vuc2VkIE1JVC4gaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzc1xuXG5cbi8vIERvY3VtZW50XG4vL1xuLy8gQ2hhbmdlIGZyb20gYGJveC1zaXppbmc6IGNvbnRlbnQtYm94YCBzbyB0aGF0IGB3aWR0aGAgaXMgbm90IGFmZmVjdGVkIGJ5IGBwYWRkaW5nYCBvciBgYm9yZGVyYC5cblxuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuXG4vLyBSb290XG4vL1xuLy8gQWJpbGl0eSB0byB0aGUgdmFsdWUgb2YgdGhlIHJvb3QgZm9udCBzaXplcywgYWZmZWN0aW5nIHRoZSB2YWx1ZSBvZiBgcmVtYC5cbi8vIG51bGwgYnkgZGVmYXVsdCwgdGh1cyBub3RoaW5nIGlzIGdlbmVyYXRlZC5cblxuOnJvb3Qge1xuICBAaWYgJGZvbnQtc2l6ZS1yb290ICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSh2YXIoLS0jeyRwcmVmaXh9cm9vdC1mb250LXNpemUpKTtcbiAgfVxuXG4gIEBpZiAkZW5hYmxlLXNtb290aC1zY3JvbGwge1xuICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogbm8tcHJlZmVyZW5jZSkge1xuICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gICAgfVxuICB9XG59XG5cblxuLy8gQm9keVxuLy9cbi8vIDEuIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbi8vIDIuIEFzIGEgYmVzdCBwcmFjdGljZSwgYXBwbHkgYSBkZWZhdWx0IGBiYWNrZ3JvdW5kLWNvbG9yYC5cbi8vIDMuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuLy8gNC4gQ2hhbmdlIHRoZSBkZWZhdWx0IHRhcCBoaWdobGlnaHQgdG8gYmUgY29tcGxldGVseSB0cmFuc3BhcmVudCBpbiBpT1MuXG5cbi8vIHNjc3MtZG9jcy1zdGFydCByZWJvb3QtYm9keS1ydWxlc1xuYm9keSB7XG4gIG1hcmdpbjogMDsgLy8gMVxuICBmb250LWZhbWlseTogdmFyKC0tI3skcHJlZml4fWJvZHktZm9udC1mYW1pbHkpO1xuICBAaW5jbHVkZSBmb250LXNpemUodmFyKC0tI3skcHJlZml4fWJvZHktZm9udC1zaXplKSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9Ym9keS1mb250LXdlaWdodCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9Ym9keS1saW5lLWhlaWdodCk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9Ym9keS1jb2xvcik7XG4gIHRleHQtYWxpZ246IHZhcigtLSN7JHByZWZpeH1ib2R5LXRleHQtYWxpZ24pO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9Ym9keS1iZyk7IC8vIDJcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyAzXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgkYmxhY2ssIDApOyAvLyA0XG59XG4vLyBzY3NzLWRvY3MtZW5kIHJlYm9vdC1ib2R5LXJ1bGVzXG5cblxuLy8gQ29udGVudCBncm91cGluZ1xuLy9cbi8vIDEuIFJlc2V0IEZpcmVmb3gncyBncmF5IGNvbG9yXG5cbmhyIHtcbiAgbWFyZ2luOiAkaHItbWFyZ2luLXkgMDtcbiAgY29sb3I6ICRoci1jb2xvcjsgLy8gMVxuICBib3JkZXI6IDA7XG4gIGJvcmRlci10b3A6ICRoci1ib3JkZXItd2lkdGggc29saWQgJGhyLWJvcmRlci1jb2xvcjtcbiAgb3BhY2l0eTogJGhyLW9wYWNpdHk7XG59XG5cblxuLy8gVHlwb2dyYXBoeVxuLy9cbi8vIDEuIFJlbW92ZSB0b3AgbWFyZ2lucyBmcm9tIGhlYWRpbmdzXG4vLyAgICBCeSBkZWZhdWx0LCBgPGgxPmAtYDxoNj5gIGFsbCByZWNlaXZlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMuIFdlIG51a2UgdGhlIHRvcFxuLy8gICAgbWFyZ2luIGZvciBlYXNpZXIgY29udHJvbCB3aXRoaW4gdHlwZSBzY2FsZXMgYXMgaXQgYXZvaWRzIG1hcmdpbiBjb2xsYXBzaW5nLlxuXG4laGVhZGluZyB7XG4gIG1hcmdpbi10b3A6IDA7IC8vIDFcbiAgbWFyZ2luLWJvdHRvbTogJGhlYWRpbmdzLW1hcmdpbi1ib3R0b207XG4gIGZvbnQtZmFtaWx5OiAkaGVhZGluZ3MtZm9udC1mYW1pbHk7XG4gIGZvbnQtc3R5bGU6ICRoZWFkaW5ncy1mb250LXN0eWxlO1xuICBmb250LXdlaWdodDogJGhlYWRpbmdzLWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlYWRpbmdzLWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWhlYWRpbmctY29sb3IpO1xufVxuXG5oMSB7XG4gIEBleHRlbmQgJWhlYWRpbmc7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDEtZm9udC1zaXplKTtcbn1cblxuaDIge1xuICBAZXh0ZW5kICVoZWFkaW5nO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGgyLWZvbnQtc2l6ZSk7XG59XG5cbmgzIHtcbiAgQGV4dGVuZCAlaGVhZGluZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoMy1mb250LXNpemUpO1xufVxuXG5oNCB7XG4gIEBleHRlbmQgJWhlYWRpbmc7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDQtZm9udC1zaXplKTtcbn1cblxuaDUge1xuICBAZXh0ZW5kICVoZWFkaW5nO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGg1LWZvbnQtc2l6ZSk7XG59XG5cbmg2IHtcbiAgQGV4dGVuZCAlaGVhZGluZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoNi1mb250LXNpemUpO1xufVxuXG5cbi8vIFJlc2V0IG1hcmdpbnMgb24gcGFyYWdyYXBoc1xuLy9cbi8vIFNpbWlsYXJseSwgdGhlIHRvcCBtYXJnaW4gb24gYDxwPmBzIGdldCByZXNldC4gSG93ZXZlciwgd2UgYWxzbyByZXNldCB0aGVcbi8vIGJvdHRvbSBtYXJnaW4gdG8gdXNlIGByZW1gIHVuaXRzIGluc3RlYWQgb2YgYGVtYC5cblxucCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcbn1cblxuXG4vLyBBYmJyZXZpYXRpb25zXG4vL1xuLy8gMS4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIE9wZXJhLCBhbmQgU2FmYXJpLlxuLy8gMi4gQWRkIGV4cGxpY2l0IGN1cnNvciB0byBpbmRpY2F0ZSBjaGFuZ2VkIGJlaGF2aW9yLlxuLy8gMy4gUHJldmVudCB0aGUgdGV4dC1kZWNvcmF0aW9uIHRvIGJlIHNraXBwZWQuXG5cbmFiYnJbdGl0bGVdIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvLyAxXG4gIGN1cnNvcjogaGVscDsgLy8gMlxuICB0ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6IG5vbmU7IC8vIDNcbn1cblxuXG4vLyBBZGRyZXNzXG5cbmFkZHJlc3Mge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5cbi8vIExpc3RzXG5cbm9sLFxudWwge1xuICBwYWRkaW5nLWxlZnQ6IDJyZW07XG59XG5cbm9sLFxudWwsXG5kbCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbm9sIG9sLFxudWwgdWwsXG5vbCB1bCxcbnVsIG9sIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuZHQge1xuICBmb250LXdlaWdodDogJGR0LWZvbnQtd2VpZ2h0O1xufVxuXG4vLyAxLiBVbmRvIGJyb3dzZXIgZGVmYXVsdFxuXG5kZCB7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBtYXJnaW4tbGVmdDogMDsgLy8gMVxufVxuXG5cbi8vIEJsb2NrcXVvdGVcblxuYmxvY2txdW90ZSB7XG4gIG1hcmdpbjogMCAwIDFyZW07XG59XG5cblxuLy8gU3Ryb25nXG4vL1xuLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaVxuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkZXI7XG59XG5cblxuLy8gU21hbGxcbi8vXG4vLyBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vyc1xuXG5zbWFsbCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkc21hbGwtZm9udC1zaXplKTtcbn1cblxuXG4vLyBNYXJrXG5cbm1hcmsge1xuICBwYWRkaW5nOiAkbWFyay1wYWRkaW5nO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWhpZ2hsaWdodC1jb2xvcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1oaWdobGlnaHQtYmcpO1xufVxuXG5cbi8vIFN1YiBhbmQgU3VwXG4vL1xuLy8gUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4vLyBhbGwgYnJvd3NlcnMuXG5cbnN1YixcbnN1cCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRzdWItc3VwLWZvbnQtc2l6ZSk7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7IGJvdHRvbTogLS4yNWVtOyB9XG5zdXAgeyB0b3A6IC0uNWVtOyB9XG5cblxuLy8gTGlua3NcblxuYSB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLSN7JHByZWZpeH1saW5rLWNvbG9yLXJnYiksIHZhcigtLSN7JHByZWZpeH1saW5rLW9wYWNpdHksIDEpKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1kZWNvcmF0aW9uO1xuXG4gICY6aG92ZXIge1xuICAgIC0tI3skcHJlZml4fWxpbmstY29sb3ItcmdiOiB2YXIoLS0jeyRwcmVmaXh9bGluay1ob3Zlci1jb2xvci1yZ2IpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogJGxpbmstaG92ZXItZGVjb3JhdGlvbjtcbiAgfVxufVxuXG4vLyBBbmQgdW5kbyB0aGVzZSBzdHlsZXMgZm9yIHBsYWNlaG9sZGVyIGxpbmtzL25hbWVkIGFuY2hvcnMgKHdpdGhvdXQgaHJlZikuXG4vLyBJdCB3b3VsZCBiZSBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB0byBqdXN0IHVzZSBhW2hyZWZdIGluIHByZXZpb3VzIGJsb2NrLCBidXQgdGhhdFxuLy8gY2F1c2VzIHNwZWNpZmljaXR5IGlzc3VlcyBpbiBtYW55IG90aGVyIHN0eWxlcyB0aGF0IGFyZSB0b28gY29tcGxleCB0byBmaXguXG4vLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xOTQwMlxuXG5hOm5vdChbaHJlZl0pOm5vdChbY2xhc3NdKSB7XG4gICYsXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxufVxuXG5cbi8vIENvZGVcblxucHJlLFxuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWNvZGU7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgxZW0pOyAvLyBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG59XG5cbi8vIDEuIFJlbW92ZSBicm93c2VyIGRlZmF1bHQgdG9wIG1hcmdpblxuLy8gMi4gUmVzZXQgYnJvd3NlciBkZWZhdWx0IG9mIGAxZW1gIHRvIHVzZSBgcmVtYHNcbi8vIDMuIERvbid0IGFsbG93IGNvbnRlbnQgdG8gYnJlYWsgb3V0c2lkZVxuXG5wcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogMDsgLy8gMVxuICBtYXJnaW4tYm90dG9tOiAxcmVtOyAvLyAyXG4gIG92ZXJmbG93OiBhdXRvOyAvLyAzXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY29kZS1mb250LXNpemUpO1xuICBjb2xvcjogJHByZS1jb2xvcjtcblxuICAvLyBBY2NvdW50IGZvciBzb21lIGNvZGUgb3V0cHV0cyB0aGF0IHBsYWNlIGNvZGUgdGFncyBpbiBwcmUgdGFnc1xuICBjb2RlIHtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoaW5oZXJpdCk7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgd29yZC1icmVhazogbm9ybWFsO1xuICB9XG59XG5cbmNvZGUge1xuICBAaW5jbHVkZSBmb250LXNpemUoJGNvZGUtZm9udC1zaXplKTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1jb2RlLWNvbG9yKTtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuXG4gIC8vIFN0cmVhbWxpbmUgdGhlIHN0eWxlIHdoZW4gaW5zaWRlIGFuY2hvcnMgdG8gYXZvaWQgYnJva2VuIHVuZGVybGluZSBhbmQgbW9yZVxuICBhID4gJiB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gIH1cbn1cblxua2JkIHtcbiAgcGFkZGluZzogJGtiZC1wYWRkaW5nLXkgJGtiZC1wYWRkaW5nLXg7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgka2JkLWZvbnQtc2l6ZSk7XG4gIGNvbG9yOiAka2JkLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAka2JkLWJnO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRib3JkZXItcmFkaXVzLXNtKTtcblxuICBrYmQge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKDFlbSk7XG4gICAgZm9udC13ZWlnaHQ6ICRuZXN0ZWQta2JkLWZvbnQtd2VpZ2h0O1xuICB9XG59XG5cblxuLy8gRmlndXJlc1xuLy9cbi8vIEFwcGx5IGEgY29uc2lzdGVudCBtYXJnaW4gc3RyYXRlZ3kgKG1hdGNoZXMgb3VyIHR5cGUgc3R5bGVzKS5cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuXG4vLyBJbWFnZXMgYW5kIGNvbnRlbnRcblxuaW1nLFxuc3ZnIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuXG4vLyBUYWJsZXNcbi8vXG4vLyBQcmV2ZW50IGRvdWJsZSBib3JkZXJzXG5cbnRhYmxlIHtcbiAgY2FwdGlvbi1zaWRlOiBib3R0b207XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbmNhcHRpb24ge1xuICBwYWRkaW5nLXRvcDogJHRhYmxlLWNlbGwtcGFkZGluZy15O1xuICBwYWRkaW5nLWJvdHRvbTogJHRhYmxlLWNlbGwtcGFkZGluZy15O1xuICBjb2xvcjogJHRhYmxlLWNhcHRpb24tY29sb3I7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi8vIDEuIFJlbW92ZXMgZm9udC13ZWlnaHQgYm9sZCBieSBpbmhlcml0aW5nXG4vLyAyLiBNYXRjaGVzIGRlZmF1bHQgYDx0ZD5gIGFsaWdubWVudCBieSBpbmhlcml0aW5nIGB0ZXh0LWFsaWduYC5cbi8vIDMuIEZpeCBhbGlnbm1lbnQgZm9yIFNhZmFyaVxuXG50aCB7XG4gIGZvbnQtd2VpZ2h0OiAkdGFibGUtdGgtZm9udC13ZWlnaHQ7IC8vIDFcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDsgLy8gMlxuICB0ZXh0LWFsaWduOiAtd2Via2l0LW1hdGNoLXBhcmVudDsgLy8gM1xufVxuXG50aGVhZCxcbnRib2R5LFxudGZvb3QsXG50cixcbnRkLFxudGgge1xuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMDtcbn1cblxuXG4vLyBGb3Jtc1xuLy9cbi8vIDEuIEFsbG93IGxhYmVscyB0byB1c2UgYG1hcmdpbmAgZm9yIHNwYWNpbmcuXG5cbmxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvLyAxXG59XG5cbi8vIFJlbW92ZSB0aGUgZGVmYXVsdCBgYm9yZGVyLXJhZGl1c2AgdGhhdCBtYWNPUyBDaHJvbWUgYWRkcy5cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI0MDkzXG5cbmJ1dHRvbiB7XG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1kaXNhbGxvd2VkLWxpc3RcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuLy8gRXhwbGljaXRseSByZW1vdmUgZm9jdXMgb3V0bGluZSBpbiBDaHJvbWl1bSB3aGVuIGl0IHNob3VsZG4ndCBiZVxuLy8gdmlzaWJsZSAoZS5nLiBhcyByZXN1bHQgb2YgbW91c2UgY2xpY2sgb3IgdG91Y2ggdGFwKS4gSXQgYWxyZWFkeVxuLy8gc2hvdWxkIGJlIGRvaW5nIHRoaXMgYXV0b21hdGljYWxseSwgYnV0IHNlZW1zIHRvIGN1cnJlbnRseSBiZVxuLy8gY29uZnVzZWQgYW5kIGFwcGxpZXMgaXRzIHZlcnkgdmlzaWJsZSB0d28tdG9uZSBvdXRsaW5lIGFueXdheS5cblxuYnV0dG9uOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICBvdXRsaW5lOiAwO1xufVxuXG4vLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmlcblxuaW5wdXQsXG5idXR0b24sXG5zZWxlY3QsXG5vcHRncm91cCxcbnRleHRhcmVhIHtcbiAgbWFyZ2luOiAwOyAvLyAxXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBAaW5jbHVkZSBmb250LXNpemUoaW5oZXJpdCk7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG4vLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3hcbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuLy8gU2V0IHRoZSBjdXJzb3IgZm9yIG5vbi1gPGJ1dHRvbj5gIGJ1dHRvbnNcbi8vXG4vLyBEZXRhaWxzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzMwNTYyXG5bcm9sZT1cImJ1dHRvblwiXSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuc2VsZWN0IHtcbiAgLy8gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB3b3JkLXdyYXAgaW4gU2FmYXJpLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDk5MFxuICB3b3JkLXdyYXA6IG5vcm1hbDtcblxuICAvLyBVbmRvIHRoZSBvcGFjaXR5IGNoYW5nZSBmcm9tIENocm9tZVxuICAmOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi8vIFJlbW92ZSB0aGUgZHJvcGRvd24gYXJyb3cgb25seSBmcm9tIHRleHQgdHlwZSBpbnB1dHMgYnVpbHQgd2l0aCBkYXRhbGlzdHMgaW4gQ2hyb21lLlxuLy8gU2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81NDk5NzExOFxuXG5bbGlzdF06bm90KFt0eXBlPVwiZGF0ZVwiXSk6bm90KFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0pOm5vdChbdHlwZT1cIm1vbnRoXCJdKTpub3QoW3R5cGU9XCJ3ZWVrXCJdKTpub3QoW3R5cGU9XCJ0aW1lXCJdKTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vLyAxLiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2Bcbi8vICAgIGNvbnRyb2xzIGluIEFuZHJvaWQgNC5cbi8vIDIuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4vLyAzLiBPcGluaW9uYXRlZDogYWRkIFwiaGFuZFwiIGN1cnNvciB0byBub24tZGlzYWJsZWQgYnV0dG9uIGVsZW1lbnRzLlxuXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSwgLy8gMVxuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8vIDJcblxuICBAaWYgJGVuYWJsZS1idXR0b24tcG9pbnRlcnMge1xuICAgICY6bm90KDpkaXNhYmxlZCkge1xuICAgICAgY3Vyc29yOiBwb2ludGVyOyAvLyAzXG4gICAgfVxuICB9XG59XG5cbi8vIFJlbW92ZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgZnJvbSBGaXJlZm94LCBidXQgZG9uJ3QgcmVzdG9yZSB0aGUgb3V0bGluZSBsaWtlIE5vcm1hbGl6ZS5cblxuOjotbW96LWZvY3VzLWlubmVyIHtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vLyAxLiBUZXh0YXJlYXMgc2hvdWxkIHJlYWxseSBvbmx5IHJlc2l6ZSB2ZXJ0aWNhbGx5IHNvIHRoZXkgZG9uJ3QgYnJlYWsgdGhlaXIgKGhvcml6b250YWwpIGNvbnRhaW5lcnMuXG5cbnRleHRhcmVhIHtcbiAgcmVzaXplOiB2ZXJ0aWNhbDsgLy8gMVxufVxuXG4vLyAxLiBCcm93c2VycyBzZXQgYSBkZWZhdWx0IGBtaW4td2lkdGg6IG1pbi1jb250ZW50O2Agb24gZmllbGRzZXRzLFxuLy8gICAgdW5saWtlIGUuZy4gYDxkaXY+YHMsIHdoaWNoIGhhdmUgYG1pbi13aWR0aDogMDtgIGJ5IGRlZmF1bHQuXG4vLyAgICBTbyB3ZSByZXNldCB0aGF0IHRvIGVuc3VyZSBmaWVsZHNldHMgYmVoYXZlIG1vcmUgbGlrZSBhIHN0YW5kYXJkIGJsb2NrIGVsZW1lbnQuXG4vLyAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMjM1OVxuLy8gICAgYW5kIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN0aGUtZmllbGRzZXQtYW5kLWxlZ2VuZC1lbGVtZW50c1xuLy8gMi4gUmVzZXQgdGhlIGRlZmF1bHQgb3V0bGluZSBiZWhhdmlvciBvZiBmaWVsZHNldHMgc28gdGhleSBkb24ndCBhZmZlY3QgcGFnZSBsYXlvdXQuXG5cbmZpZWxkc2V0IHtcbiAgbWluLXdpZHRoOiAwOyAvLyAxXG4gIHBhZGRpbmc6IDA7IC8vIDJcbiAgbWFyZ2luOiAwOyAvLyAyXG4gIGJvcmRlcjogMDsgLy8gMlxufVxuXG4vLyAxLiBCeSB1c2luZyBgZmxvYXQ6IGxlZnRgLCB0aGUgbGVnZW5kIHdpbGwgYmVoYXZlIGxpa2UgYSBibG9jayBlbGVtZW50LlxuLy8gICAgVGhpcyB3YXkgdGhlIGJvcmRlciBvZiBhIGZpZWxkc2V0IHdyYXBzIGFyb3VuZCB0aGUgbGVnZW5kIGlmIHByZXNlbnQuXG4vLyAyLiBGaXggd3JhcHBpbmcgYnVnLlxuLy8gICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMjk3MTJcblxubGVnZW5kIHtcbiAgZmxvYXQ6IGxlZnQ7IC8vIDFcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbi1ib3R0b206ICRsZWdlbmQtbWFyZ2luLWJvdHRvbTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRsZWdlbmQtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRsZWdlbmQtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuXG4gICsgKiB7XG4gICAgY2xlYXI6IGxlZnQ7IC8vIDJcbiAgfVxufVxuXG4vLyBGaXggaGVpZ2h0IG9mIGlucHV0cyB3aXRoIGEgdHlwZSBvZiBkYXRldGltZS1sb2NhbCwgZGF0ZSwgbW9udGgsIHdlZWssIG9yIHRpbWVcbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE4ODQyXG5cbjo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWZpZWxkcy13cmFwcGVyLFxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtdGV4dCxcbjo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbnV0ZSxcbjo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWhvdXItZmllbGQsXG46Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGQsXG46Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tb250aC1maWVsZCxcbjo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXllYXItZmllbGQge1xuICBwYWRkaW5nOiAwO1xufVxuXG46Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8vIDEuIFRoaXMgb3ZlcnJpZGVzIHRoZSBleHRyYSByb3VuZGVkIGNvcm5lcnMgb24gc2VhcmNoIGlucHV0cyBpbiBpT1Mgc28gdGhhdCBvdXJcbi8vICAgIGAuZm9ybS1jb250cm9sYCBjbGFzcyBjYW4gcHJvcGVybHkgc3R5bGUgdGhlbS4gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHNpbXBseVxuLy8gICAgYmUgYWRkZWQgdG8gYC5mb3JtLWNvbnRyb2xgIGFzIGl0J3Mgbm90IHNwZWNpZmljIGVub3VnaC4gRm9yIGRldGFpbHMsIHNlZVxuLy8gICAgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTU4Ni5cbi8vIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvLyAxXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvLyAyXG59XG5cbi8vIDEuIEEgZmV3IGlucHV0IHR5cGVzIHNob3VsZCBzdGF5IExUUlxuLy8gU2VlIGh0dHBzOi8vcnRsc3R5bGluZy5jb20vcG9zdHMvcnRsLXN0eWxpbmcjZm9ybS1pbnB1dHNcbi8vIDIuIFJUTCBvbmx5IG91dHB1dFxuLy8gU2VlIGh0dHBzOi8vcnRsY3NzLmNvbS9sZWFybi91c2FnZS1ndWlkZS9jb250cm9sLWRpcmVjdGl2ZXMvI3Jhd1xuXG4vKiBydGw6cmF3OlxuW3R5cGU9XCJ0ZWxcIl0sXG5bdHlwZT1cInVybFwiXSxcblt0eXBlPVwiZW1haWxcIl0sXG5bdHlwZT1cIm51bWJlclwiXSB7XG4gIGRpcmVjdGlvbjogbHRyO1xufVxuKi9cblxuLy8gUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuXG46Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8vIFJlbW92ZSBwYWRkaW5nIGFyb3VuZCBjb2xvciBwaWNrZXJzIGluIHdlYmtpdCBicm93c2Vyc1xuXG46Oi13ZWJraXQtY29sb3Itc3dhdGNoLXdyYXBwZXIge1xuICBwYWRkaW5nOiAwO1xufVxuXG5cbi8vIDEuIEluaGVyaXQgZm9udCBmYW1pbHkgYW5kIGxpbmUgaGVpZ2h0IGZvciBmaWxlIGlucHV0IGJ1dHRvbnNcbi8vIDIuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG5cbjo6ZmlsZS1zZWxlY3Rvci1idXR0b24ge1xuICBmb250OiBpbmhlcml0OyAvLyAxXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAyXG59XG5cbi8vIENvcnJlY3QgZWxlbWVudCBkaXNwbGF5c1xuXG5vdXRwdXQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi8vIFJlbW92ZSBib3JkZXIgZnJvbSBpZnJhbWVcblxuaWZyYW1lIHtcbiAgYm9yZGVyOiAwO1xufVxuXG4vLyBTdW1tYXJ5XG4vL1xuLy8gMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzXG5cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07IC8vIDFcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5cbi8vIFByb2dyZXNzXG4vL1xuLy8gQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cblxuLy8gSGlkZGVuIGF0dHJpYnV0ZVxuLy9cbi8vIEFsd2F5cyBoaWRlIGFuIGVsZW1lbnQgd2l0aCB0aGUgYGhpZGRlbmAgSFRNTCBhdHRyaWJ1dGUuXG5cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuIiwiLy8gVmFyaWFibGVzXG4vL1xuLy8gVmFyaWFibGVzIHNob3VsZCBmb2xsb3cgdGhlIGAkY29tcG9uZW50LXN0YXRlLXByb3BlcnR5LXNpemVgIGZvcm11bGEgZm9yXG4vLyBjb25zaXN0ZW50IG5hbWluZy4gRXg6ICRuYXYtbGluay1kaXNhYmxlZC1jb2xvciBhbmQgJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy14cy5cblxuLy8gQ29sb3Igc3lzdGVtXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBncmF5LWNvbG9yLXZhcmlhYmxlc1xuJHdoaXRlOiAgICAjZmZmICFkZWZhdWx0O1xuJGdyYXktMTAwOiAjZjhmOWZhICFkZWZhdWx0O1xuJGdyYXktMjAwOiAjZTllY2VmICFkZWZhdWx0O1xuJGdyYXktMzAwOiAjZGVlMmU2ICFkZWZhdWx0O1xuJGdyYXktNDAwOiAjY2VkNGRhICFkZWZhdWx0O1xuJGdyYXktNTAwOiAjYWRiNWJkICFkZWZhdWx0O1xuJGdyYXktNjAwOiAjNmM3NTdkICFkZWZhdWx0O1xuJGdyYXktNzAwOiAjNDk1MDU3ICFkZWZhdWx0O1xuJGdyYXktODAwOiAjMzQzYTQwICFkZWZhdWx0O1xuJGdyYXktOTAwOiAjMjEyNTI5ICFkZWZhdWx0O1xuJGJsYWNrOiAgICAjMDAwICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBncmF5LWNvbG9yLXZhcmlhYmxlc1xuXG4vLyBmdXN2LWRpc2FibGVcbi8vIHNjc3MtZG9jcy1zdGFydCBncmF5LWNvbG9ycy1tYXBcbiRncmF5czogKFxuICBcIjEwMFwiOiAkZ3JheS0xMDAsXG4gIFwiMjAwXCI6ICRncmF5LTIwMCxcbiAgXCIzMDBcIjogJGdyYXktMzAwLFxuICBcIjQwMFwiOiAkZ3JheS00MDAsXG4gIFwiNTAwXCI6ICRncmF5LTUwMCxcbiAgXCI2MDBcIjogJGdyYXktNjAwLFxuICBcIjcwMFwiOiAkZ3JheS03MDAsXG4gIFwiODAwXCI6ICRncmF5LTgwMCxcbiAgXCI5MDBcIjogJGdyYXktOTAwXG4pICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBncmF5LWNvbG9ycy1tYXBcbi8vIGZ1c3YtZW5hYmxlXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBjb2xvci12YXJpYWJsZXNcbiRibHVlOiAgICAjMGQ2ZWZkICFkZWZhdWx0O1xuJGluZGlnbzogICM2NjEwZjIgIWRlZmF1bHQ7XG4kcHVycGxlOiAgIzZmNDJjMSAhZGVmYXVsdDtcbiRwaW5rOiAgICAjZDYzMzg0ICFkZWZhdWx0O1xuJHJlZDogICAgICNkYzM1NDUgIWRlZmF1bHQ7XG4kb3JhbmdlOiAgI2ZkN2UxNCAhZGVmYXVsdDtcbiR5ZWxsb3c6ICAjZmZjMTA3ICFkZWZhdWx0O1xuJGdyZWVuOiAgICMxOTg3NTQgIWRlZmF1bHQ7XG4kdGVhbDogICAgIzIwYzk5NyAhZGVmYXVsdDtcbiRjeWFuOiAgICAjMGRjYWYwICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBjb2xvci12YXJpYWJsZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNvbG9ycy1tYXBcbiRjb2xvcnM6IChcbiAgXCJibHVlXCI6ICAgICAgICRibHVlLFxuICBcImluZGlnb1wiOiAgICAgJGluZGlnbyxcbiAgXCJwdXJwbGVcIjogICAgICRwdXJwbGUsXG4gIFwicGlua1wiOiAgICAgICAkcGluayxcbiAgXCJyZWRcIjogICAgICAgICRyZWQsXG4gIFwib3JhbmdlXCI6ICAgICAkb3JhbmdlLFxuICBcInllbGxvd1wiOiAgICAgJHllbGxvdyxcbiAgXCJncmVlblwiOiAgICAgICRncmVlbixcbiAgXCJ0ZWFsXCI6ICAgICAgICR0ZWFsLFxuICBcImN5YW5cIjogICAgICAgJGN5YW4sXG4gIFwiYmxhY2tcIjogICAgICAkYmxhY2ssXG4gIFwid2hpdGVcIjogICAgICAkd2hpdGUsXG4gIFwiZ3JheVwiOiAgICAgICAkZ3JheS02MDAsXG4gIFwiZ3JheS1kYXJrXCI6ICAkZ3JheS04MDBcbikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGNvbG9ycy1tYXBcblxuLy8gVGhlIGNvbnRyYXN0IHJhdGlvIHRvIHJlYWNoIGFnYWluc3Qgd2hpdGUsIHRvIGRldGVybWluZSBpZiBjb2xvciBjaGFuZ2VzIGZyb20gXCJsaWdodFwiIHRvIFwiZGFya1wiLiBBY2NlcHRhYmxlIHZhbHVlcyBmb3IgV0NBRyAyLjAgYXJlIDMsIDQuNSBhbmQgNy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLyN2aXN1YWwtYXVkaW8tY29udHJhc3QtY29udHJhc3RcbiRtaW4tY29udHJhc3QtcmF0aW86ICAgNC41ICFkZWZhdWx0O1xuXG4vLyBDdXN0b21pemUgdGhlIGxpZ2h0IGFuZCBkYXJrIHRleHQgY29sb3JzIGZvciB1c2UgaW4gb3VyIGNvbG9yIGNvbnRyYXN0IGZ1bmN0aW9uLlxuJGNvbG9yLWNvbnRyYXN0LWRhcms6ICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJGNvbG9yLWNvbnRyYXN0LWxpZ2h0OiAgICAgJHdoaXRlICFkZWZhdWx0O1xuXG4vLyBmdXN2LWRpc2FibGVcbiRibHVlLTEwMDogdGludC1jb2xvcigkYmx1ZSwgODAlKSAhZGVmYXVsdDtcbiRibHVlLTIwMDogdGludC1jb2xvcigkYmx1ZSwgNjAlKSAhZGVmYXVsdDtcbiRibHVlLTMwMDogdGludC1jb2xvcigkYmx1ZSwgNDAlKSAhZGVmYXVsdDtcbiRibHVlLTQwMDogdGludC1jb2xvcigkYmx1ZSwgMjAlKSAhZGVmYXVsdDtcbiRibHVlLTUwMDogJGJsdWUgIWRlZmF1bHQ7XG4kYmx1ZS02MDA6IHNoYWRlLWNvbG9yKCRibHVlLCAyMCUpICFkZWZhdWx0O1xuJGJsdWUtNzAwOiBzaGFkZS1jb2xvcigkYmx1ZSwgNDAlKSAhZGVmYXVsdDtcbiRibHVlLTgwMDogc2hhZGUtY29sb3IoJGJsdWUsIDYwJSkgIWRlZmF1bHQ7XG4kYmx1ZS05MDA6IHNoYWRlLWNvbG9yKCRibHVlLCA4MCUpICFkZWZhdWx0O1xuXG4kaW5kaWdvLTEwMDogdGludC1jb2xvcigkaW5kaWdvLCA4MCUpICFkZWZhdWx0O1xuJGluZGlnby0yMDA6IHRpbnQtY29sb3IoJGluZGlnbywgNjAlKSAhZGVmYXVsdDtcbiRpbmRpZ28tMzAwOiB0aW50LWNvbG9yKCRpbmRpZ28sIDQwJSkgIWRlZmF1bHQ7XG4kaW5kaWdvLTQwMDogdGludC1jb2xvcigkaW5kaWdvLCAyMCUpICFkZWZhdWx0O1xuJGluZGlnby01MDA6ICRpbmRpZ28gIWRlZmF1bHQ7XG4kaW5kaWdvLTYwMDogc2hhZGUtY29sb3IoJGluZGlnbywgMjAlKSAhZGVmYXVsdDtcbiRpbmRpZ28tNzAwOiBzaGFkZS1jb2xvcigkaW5kaWdvLCA0MCUpICFkZWZhdWx0O1xuJGluZGlnby04MDA6IHNoYWRlLWNvbG9yKCRpbmRpZ28sIDYwJSkgIWRlZmF1bHQ7XG4kaW5kaWdvLTkwMDogc2hhZGUtY29sb3IoJGluZGlnbywgODAlKSAhZGVmYXVsdDtcblxuJHB1cnBsZS0xMDA6IHRpbnQtY29sb3IoJHB1cnBsZSwgODAlKSAhZGVmYXVsdDtcbiRwdXJwbGUtMjAwOiB0aW50LWNvbG9yKCRwdXJwbGUsIDYwJSkgIWRlZmF1bHQ7XG4kcHVycGxlLTMwMDogdGludC1jb2xvcigkcHVycGxlLCA0MCUpICFkZWZhdWx0O1xuJHB1cnBsZS00MDA6IHRpbnQtY29sb3IoJHB1cnBsZSwgMjAlKSAhZGVmYXVsdDtcbiRwdXJwbGUtNTAwOiAkcHVycGxlICFkZWZhdWx0O1xuJHB1cnBsZS02MDA6IHNoYWRlLWNvbG9yKCRwdXJwbGUsIDIwJSkgIWRlZmF1bHQ7XG4kcHVycGxlLTcwMDogc2hhZGUtY29sb3IoJHB1cnBsZSwgNDAlKSAhZGVmYXVsdDtcbiRwdXJwbGUtODAwOiBzaGFkZS1jb2xvcigkcHVycGxlLCA2MCUpICFkZWZhdWx0O1xuJHB1cnBsZS05MDA6IHNoYWRlLWNvbG9yKCRwdXJwbGUsIDgwJSkgIWRlZmF1bHQ7XG5cbiRwaW5rLTEwMDogdGludC1jb2xvcigkcGluaywgODAlKSAhZGVmYXVsdDtcbiRwaW5rLTIwMDogdGludC1jb2xvcigkcGluaywgNjAlKSAhZGVmYXVsdDtcbiRwaW5rLTMwMDogdGludC1jb2xvcigkcGluaywgNDAlKSAhZGVmYXVsdDtcbiRwaW5rLTQwMDogdGludC1jb2xvcigkcGluaywgMjAlKSAhZGVmYXVsdDtcbiRwaW5rLTUwMDogJHBpbmsgIWRlZmF1bHQ7XG4kcGluay02MDA6IHNoYWRlLWNvbG9yKCRwaW5rLCAyMCUpICFkZWZhdWx0O1xuJHBpbmstNzAwOiBzaGFkZS1jb2xvcigkcGluaywgNDAlKSAhZGVmYXVsdDtcbiRwaW5rLTgwMDogc2hhZGUtY29sb3IoJHBpbmssIDYwJSkgIWRlZmF1bHQ7XG4kcGluay05MDA6IHNoYWRlLWNvbG9yKCRwaW5rLCA4MCUpICFkZWZhdWx0O1xuXG4kcmVkLTEwMDogdGludC1jb2xvcigkcmVkLCA4MCUpICFkZWZhdWx0O1xuJHJlZC0yMDA6IHRpbnQtY29sb3IoJHJlZCwgNjAlKSAhZGVmYXVsdDtcbiRyZWQtMzAwOiB0aW50LWNvbG9yKCRyZWQsIDQwJSkgIWRlZmF1bHQ7XG4kcmVkLTQwMDogdGludC1jb2xvcigkcmVkLCAyMCUpICFkZWZhdWx0O1xuJHJlZC01MDA6ICRyZWQgIWRlZmF1bHQ7XG4kcmVkLTYwMDogc2hhZGUtY29sb3IoJHJlZCwgMjAlKSAhZGVmYXVsdDtcbiRyZWQtNzAwOiBzaGFkZS1jb2xvcigkcmVkLCA0MCUpICFkZWZhdWx0O1xuJHJlZC04MDA6IHNoYWRlLWNvbG9yKCRyZWQsIDYwJSkgIWRlZmF1bHQ7XG4kcmVkLTkwMDogc2hhZGUtY29sb3IoJHJlZCwgODAlKSAhZGVmYXVsdDtcblxuJG9yYW5nZS0xMDA6IHRpbnQtY29sb3IoJG9yYW5nZSwgODAlKSAhZGVmYXVsdDtcbiRvcmFuZ2UtMjAwOiB0aW50LWNvbG9yKCRvcmFuZ2UsIDYwJSkgIWRlZmF1bHQ7XG4kb3JhbmdlLTMwMDogdGludC1jb2xvcigkb3JhbmdlLCA0MCUpICFkZWZhdWx0O1xuJG9yYW5nZS00MDA6IHRpbnQtY29sb3IoJG9yYW5nZSwgMjAlKSAhZGVmYXVsdDtcbiRvcmFuZ2UtNTAwOiAkb3JhbmdlICFkZWZhdWx0O1xuJG9yYW5nZS02MDA6IHNoYWRlLWNvbG9yKCRvcmFuZ2UsIDIwJSkgIWRlZmF1bHQ7XG4kb3JhbmdlLTcwMDogc2hhZGUtY29sb3IoJG9yYW5nZSwgNDAlKSAhZGVmYXVsdDtcbiRvcmFuZ2UtODAwOiBzaGFkZS1jb2xvcigkb3JhbmdlLCA2MCUpICFkZWZhdWx0O1xuJG9yYW5nZS05MDA6IHNoYWRlLWNvbG9yKCRvcmFuZ2UsIDgwJSkgIWRlZmF1bHQ7XG5cbiR5ZWxsb3ctMTAwOiB0aW50LWNvbG9yKCR5ZWxsb3csIDgwJSkgIWRlZmF1bHQ7XG4keWVsbG93LTIwMDogdGludC1jb2xvcigkeWVsbG93LCA2MCUpICFkZWZhdWx0O1xuJHllbGxvdy0zMDA6IHRpbnQtY29sb3IoJHllbGxvdywgNDAlKSAhZGVmYXVsdDtcbiR5ZWxsb3ctNDAwOiB0aW50LWNvbG9yKCR5ZWxsb3csIDIwJSkgIWRlZmF1bHQ7XG4keWVsbG93LTUwMDogJHllbGxvdyAhZGVmYXVsdDtcbiR5ZWxsb3ctNjAwOiBzaGFkZS1jb2xvcigkeWVsbG93LCAyMCUpICFkZWZhdWx0O1xuJHllbGxvdy03MDA6IHNoYWRlLWNvbG9yKCR5ZWxsb3csIDQwJSkgIWRlZmF1bHQ7XG4keWVsbG93LTgwMDogc2hhZGUtY29sb3IoJHllbGxvdywgNjAlKSAhZGVmYXVsdDtcbiR5ZWxsb3ctOTAwOiBzaGFkZS1jb2xvcigkeWVsbG93LCA4MCUpICFkZWZhdWx0O1xuXG4kZ3JlZW4tMTAwOiB0aW50LWNvbG9yKCRncmVlbiwgODAlKSAhZGVmYXVsdDtcbiRncmVlbi0yMDA6IHRpbnQtY29sb3IoJGdyZWVuLCA2MCUpICFkZWZhdWx0O1xuJGdyZWVuLTMwMDogdGludC1jb2xvcigkZ3JlZW4sIDQwJSkgIWRlZmF1bHQ7XG4kZ3JlZW4tNDAwOiB0aW50LWNvbG9yKCRncmVlbiwgMjAlKSAhZGVmYXVsdDtcbiRncmVlbi01MDA6ICRncmVlbiAhZGVmYXVsdDtcbiRncmVlbi02MDA6IHNoYWRlLWNvbG9yKCRncmVlbiwgMjAlKSAhZGVmYXVsdDtcbiRncmVlbi03MDA6IHNoYWRlLWNvbG9yKCRncmVlbiwgNDAlKSAhZGVmYXVsdDtcbiRncmVlbi04MDA6IHNoYWRlLWNvbG9yKCRncmVlbiwgNjAlKSAhZGVmYXVsdDtcbiRncmVlbi05MDA6IHNoYWRlLWNvbG9yKCRncmVlbiwgODAlKSAhZGVmYXVsdDtcblxuJHRlYWwtMTAwOiB0aW50LWNvbG9yKCR0ZWFsLCA4MCUpICFkZWZhdWx0O1xuJHRlYWwtMjAwOiB0aW50LWNvbG9yKCR0ZWFsLCA2MCUpICFkZWZhdWx0O1xuJHRlYWwtMzAwOiB0aW50LWNvbG9yKCR0ZWFsLCA0MCUpICFkZWZhdWx0O1xuJHRlYWwtNDAwOiB0aW50LWNvbG9yKCR0ZWFsLCAyMCUpICFkZWZhdWx0O1xuJHRlYWwtNTAwOiAkdGVhbCAhZGVmYXVsdDtcbiR0ZWFsLTYwMDogc2hhZGUtY29sb3IoJHRlYWwsIDIwJSkgIWRlZmF1bHQ7XG4kdGVhbC03MDA6IHNoYWRlLWNvbG9yKCR0ZWFsLCA0MCUpICFkZWZhdWx0O1xuJHRlYWwtODAwOiBzaGFkZS1jb2xvcigkdGVhbCwgNjAlKSAhZGVmYXVsdDtcbiR0ZWFsLTkwMDogc2hhZGUtY29sb3IoJHRlYWwsIDgwJSkgIWRlZmF1bHQ7XG5cbiRjeWFuLTEwMDogdGludC1jb2xvcigkY3lhbiwgODAlKSAhZGVmYXVsdDtcbiRjeWFuLTIwMDogdGludC1jb2xvcigkY3lhbiwgNjAlKSAhZGVmYXVsdDtcbiRjeWFuLTMwMDogdGludC1jb2xvcigkY3lhbiwgNDAlKSAhZGVmYXVsdDtcbiRjeWFuLTQwMDogdGludC1jb2xvcigkY3lhbiwgMjAlKSAhZGVmYXVsdDtcbiRjeWFuLTUwMDogJGN5YW4gIWRlZmF1bHQ7XG4kY3lhbi02MDA6IHNoYWRlLWNvbG9yKCRjeWFuLCAyMCUpICFkZWZhdWx0O1xuJGN5YW4tNzAwOiBzaGFkZS1jb2xvcigkY3lhbiwgNDAlKSAhZGVmYXVsdDtcbiRjeWFuLTgwMDogc2hhZGUtY29sb3IoJGN5YW4sIDYwJSkgIWRlZmF1bHQ7XG4kY3lhbi05MDA6IHNoYWRlLWNvbG9yKCRjeWFuLCA4MCUpICFkZWZhdWx0O1xuXG4kYmx1ZXM6IChcbiAgXCJibHVlLTEwMFwiOiAkYmx1ZS0xMDAsXG4gIFwiYmx1ZS0yMDBcIjogJGJsdWUtMjAwLFxuICBcImJsdWUtMzAwXCI6ICRibHVlLTMwMCxcbiAgXCJibHVlLTQwMFwiOiAkYmx1ZS00MDAsXG4gIFwiYmx1ZS01MDBcIjogJGJsdWUtNTAwLFxuICBcImJsdWUtNjAwXCI6ICRibHVlLTYwMCxcbiAgXCJibHVlLTcwMFwiOiAkYmx1ZS03MDAsXG4gIFwiYmx1ZS04MDBcIjogJGJsdWUtODAwLFxuICBcImJsdWUtOTAwXCI6ICRibHVlLTkwMFxuKSAhZGVmYXVsdDtcblxuJGluZGlnb3M6IChcbiAgXCJpbmRpZ28tMTAwXCI6ICRpbmRpZ28tMTAwLFxuICBcImluZGlnby0yMDBcIjogJGluZGlnby0yMDAsXG4gIFwiaW5kaWdvLTMwMFwiOiAkaW5kaWdvLTMwMCxcbiAgXCJpbmRpZ28tNDAwXCI6ICRpbmRpZ28tNDAwLFxuICBcImluZGlnby01MDBcIjogJGluZGlnby01MDAsXG4gIFwiaW5kaWdvLTYwMFwiOiAkaW5kaWdvLTYwMCxcbiAgXCJpbmRpZ28tNzAwXCI6ICRpbmRpZ28tNzAwLFxuICBcImluZGlnby04MDBcIjogJGluZGlnby04MDAsXG4gIFwiaW5kaWdvLTkwMFwiOiAkaW5kaWdvLTkwMFxuKSAhZGVmYXVsdDtcblxuJHB1cnBsZXM6IChcbiAgXCJwdXJwbGUtMTAwXCI6ICRwdXJwbGUtMTAwLFxuICBcInB1cnBsZS0yMDBcIjogJHB1cnBsZS0yMDAsXG4gIFwicHVycGxlLTMwMFwiOiAkcHVycGxlLTMwMCxcbiAgXCJwdXJwbGUtNDAwXCI6ICRwdXJwbGUtNDAwLFxuICBcInB1cnBsZS01MDBcIjogJHB1cnBsZS01MDAsXG4gIFwicHVycGxlLTYwMFwiOiAkcHVycGxlLTYwMCxcbiAgXCJwdXJwbGUtNzAwXCI6ICRwdXJwbGUtNzAwLFxuICBcInB1cnBsZS04MDBcIjogJHB1cnBsZS04MDAsXG4gIFwicHVycGxlLTkwMFwiOiAkcHVycGxlLTkwMFxuKSAhZGVmYXVsdDtcblxuJHBpbmtzOiAoXG4gIFwicGluay0xMDBcIjogJHBpbmstMTAwLFxuICBcInBpbmstMjAwXCI6ICRwaW5rLTIwMCxcbiAgXCJwaW5rLTMwMFwiOiAkcGluay0zMDAsXG4gIFwicGluay00MDBcIjogJHBpbmstNDAwLFxuICBcInBpbmstNTAwXCI6ICRwaW5rLTUwMCxcbiAgXCJwaW5rLTYwMFwiOiAkcGluay02MDAsXG4gIFwicGluay03MDBcIjogJHBpbmstNzAwLFxuICBcInBpbmstODAwXCI6ICRwaW5rLTgwMCxcbiAgXCJwaW5rLTkwMFwiOiAkcGluay05MDBcbikgIWRlZmF1bHQ7XG5cbiRyZWRzOiAoXG4gIFwicmVkLTEwMFwiOiAkcmVkLTEwMCxcbiAgXCJyZWQtMjAwXCI6ICRyZWQtMjAwLFxuICBcInJlZC0zMDBcIjogJHJlZC0zMDAsXG4gIFwicmVkLTQwMFwiOiAkcmVkLTQwMCxcbiAgXCJyZWQtNTAwXCI6ICRyZWQtNTAwLFxuICBcInJlZC02MDBcIjogJHJlZC02MDAsXG4gIFwicmVkLTcwMFwiOiAkcmVkLTcwMCxcbiAgXCJyZWQtODAwXCI6ICRyZWQtODAwLFxuICBcInJlZC05MDBcIjogJHJlZC05MDBcbikgIWRlZmF1bHQ7XG5cbiRvcmFuZ2VzOiAoXG4gIFwib3JhbmdlLTEwMFwiOiAkb3JhbmdlLTEwMCxcbiAgXCJvcmFuZ2UtMjAwXCI6ICRvcmFuZ2UtMjAwLFxuICBcIm9yYW5nZS0zMDBcIjogJG9yYW5nZS0zMDAsXG4gIFwib3JhbmdlLTQwMFwiOiAkb3JhbmdlLTQwMCxcbiAgXCJvcmFuZ2UtNTAwXCI6ICRvcmFuZ2UtNTAwLFxuICBcIm9yYW5nZS02MDBcIjogJG9yYW5nZS02MDAsXG4gIFwib3JhbmdlLTcwMFwiOiAkb3JhbmdlLTcwMCxcbiAgXCJvcmFuZ2UtODAwXCI6ICRvcmFuZ2UtODAwLFxuICBcIm9yYW5nZS05MDBcIjogJG9yYW5nZS05MDBcbikgIWRlZmF1bHQ7XG5cbiR5ZWxsb3dzOiAoXG4gIFwieWVsbG93LTEwMFwiOiAkeWVsbG93LTEwMCxcbiAgXCJ5ZWxsb3ctMjAwXCI6ICR5ZWxsb3ctMjAwLFxuICBcInllbGxvdy0zMDBcIjogJHllbGxvdy0zMDAsXG4gIFwieWVsbG93LTQwMFwiOiAkeWVsbG93LTQwMCxcbiAgXCJ5ZWxsb3ctNTAwXCI6ICR5ZWxsb3ctNTAwLFxuICBcInllbGxvdy02MDBcIjogJHllbGxvdy02MDAsXG4gIFwieWVsbG93LTcwMFwiOiAkeWVsbG93LTcwMCxcbiAgXCJ5ZWxsb3ctODAwXCI6ICR5ZWxsb3ctODAwLFxuICBcInllbGxvdy05MDBcIjogJHllbGxvdy05MDBcbikgIWRlZmF1bHQ7XG5cbiRncmVlbnM6IChcbiAgXCJncmVlbi0xMDBcIjogJGdyZWVuLTEwMCxcbiAgXCJncmVlbi0yMDBcIjogJGdyZWVuLTIwMCxcbiAgXCJncmVlbi0zMDBcIjogJGdyZWVuLTMwMCxcbiAgXCJncmVlbi00MDBcIjogJGdyZWVuLTQwMCxcbiAgXCJncmVlbi01MDBcIjogJGdyZWVuLTUwMCxcbiAgXCJncmVlbi02MDBcIjogJGdyZWVuLTYwMCxcbiAgXCJncmVlbi03MDBcIjogJGdyZWVuLTcwMCxcbiAgXCJncmVlbi04MDBcIjogJGdyZWVuLTgwMCxcbiAgXCJncmVlbi05MDBcIjogJGdyZWVuLTkwMFxuKSAhZGVmYXVsdDtcblxuJHRlYWxzOiAoXG4gIFwidGVhbC0xMDBcIjogJHRlYWwtMTAwLFxuICBcInRlYWwtMjAwXCI6ICR0ZWFsLTIwMCxcbiAgXCJ0ZWFsLTMwMFwiOiAkdGVhbC0zMDAsXG4gIFwidGVhbC00MDBcIjogJHRlYWwtNDAwLFxuICBcInRlYWwtNTAwXCI6ICR0ZWFsLTUwMCxcbiAgXCJ0ZWFsLTYwMFwiOiAkdGVhbC02MDAsXG4gIFwidGVhbC03MDBcIjogJHRlYWwtNzAwLFxuICBcInRlYWwtODAwXCI6ICR0ZWFsLTgwMCxcbiAgXCJ0ZWFsLTkwMFwiOiAkdGVhbC05MDBcbikgIWRlZmF1bHQ7XG5cbiRjeWFuczogKFxuICBcImN5YW4tMTAwXCI6ICRjeWFuLTEwMCxcbiAgXCJjeWFuLTIwMFwiOiAkY3lhbi0yMDAsXG4gIFwiY3lhbi0zMDBcIjogJGN5YW4tMzAwLFxuICBcImN5YW4tNDAwXCI6ICRjeWFuLTQwMCxcbiAgXCJjeWFuLTUwMFwiOiAkY3lhbi01MDAsXG4gIFwiY3lhbi02MDBcIjogJGN5YW4tNjAwLFxuICBcImN5YW4tNzAwXCI6ICRjeWFuLTcwMCxcbiAgXCJjeWFuLTgwMFwiOiAkY3lhbi04MDAsXG4gIFwiY3lhbi05MDBcIjogJGN5YW4tOTAwXG4pICFkZWZhdWx0O1xuLy8gZnVzdi1lbmFibGVcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHRoZW1lLWNvbG9yLXZhcmlhYmxlc1xuJHByaW1hcnk6ICAgICAgICRibHVlICFkZWZhdWx0O1xuJHNlY29uZGFyeTogICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRzdWNjZXNzOiAgICAgICAkZ3JlZW4gIWRlZmF1bHQ7XG4kaW5mbzogICAgICAgICAgJGN5YW4gIWRlZmF1bHQ7XG4kd2FybmluZzogICAgICAgJHllbGxvdyAhZGVmYXVsdDtcbiRkYW5nZXI6ICAgICAgICAkcmVkICFkZWZhdWx0O1xuJGxpZ2h0OiAgICAgICAgICRncmF5LTEwMCAhZGVmYXVsdDtcbiRkYXJrOiAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHRoZW1lLWNvbG9yLXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdGhlbWUtY29sb3JzLW1hcFxuJHRoZW1lLWNvbG9yczogKFxuICBcInByaW1hcnlcIjogICAgJHByaW1hcnksXG4gIFwic2Vjb25kYXJ5XCI6ICAkc2Vjb25kYXJ5LFxuICBcInN1Y2Nlc3NcIjogICAgJHN1Y2Nlc3MsXG4gIFwiaW5mb1wiOiAgICAgICAkaW5mbyxcbiAgXCJ3YXJuaW5nXCI6ICAgICR3YXJuaW5nLFxuICBcImRhbmdlclwiOiAgICAgJGRhbmdlcixcbiAgXCJsaWdodFwiOiAgICAgICRsaWdodCxcbiAgXCJkYXJrXCI6ICAgICAgICRkYXJrXG4pICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCB0aGVtZS1jb2xvcnMtbWFwXG5cbi8vIHNjc3MtZG9jcy1zdGFydCB0aGVtZS10ZXh0LXZhcmlhYmxlc1xuJHByaW1hcnktdGV4dC1lbXBoYXNpczogICBzaGFkZS1jb2xvcigkcHJpbWFyeSwgNjAlKSAhZGVmYXVsdDtcbiRzZWNvbmRhcnktdGV4dC1lbXBoYXNpczogc2hhZGUtY29sb3IoJHNlY29uZGFyeSwgNjAlKSAhZGVmYXVsdDtcbiRzdWNjZXNzLXRleHQtZW1waGFzaXM6ICAgc2hhZGUtY29sb3IoJHN1Y2Nlc3MsIDYwJSkgIWRlZmF1bHQ7XG4kaW5mby10ZXh0LWVtcGhhc2lzOiAgICAgIHNoYWRlLWNvbG9yKCRpbmZvLCA2MCUpICFkZWZhdWx0O1xuJHdhcm5pbmctdGV4dC1lbXBoYXNpczogICBzaGFkZS1jb2xvcigkd2FybmluZywgNjAlKSAhZGVmYXVsdDtcbiRkYW5nZXItdGV4dC1lbXBoYXNpczogICAgc2hhZGUtY29sb3IoJGRhbmdlciwgNjAlKSAhZGVmYXVsdDtcbiRsaWdodC10ZXh0LWVtcGhhc2lzOiAgICAgJGdyYXktNzAwICFkZWZhdWx0O1xuJGRhcmstdGV4dC1lbXBoYXNpczogICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHRoZW1lLXRleHQtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCB0aGVtZS1iZy1zdWJ0bGUtdmFyaWFibGVzXG4kcHJpbWFyeS1iZy1zdWJ0bGU6ICAgICAgIHRpbnQtY29sb3IoJHByaW1hcnksIDgwJSkgIWRlZmF1bHQ7XG4kc2Vjb25kYXJ5LWJnLXN1YnRsZTogICAgIHRpbnQtY29sb3IoJHNlY29uZGFyeSwgODAlKSAhZGVmYXVsdDtcbiRzdWNjZXNzLWJnLXN1YnRsZTogICAgICAgdGludC1jb2xvcigkc3VjY2VzcywgODAlKSAhZGVmYXVsdDtcbiRpbmZvLWJnLXN1YnRsZTogICAgICAgICAgdGludC1jb2xvcigkaW5mbywgODAlKSAhZGVmYXVsdDtcbiR3YXJuaW5nLWJnLXN1YnRsZTogICAgICAgdGludC1jb2xvcigkd2FybmluZywgODAlKSAhZGVmYXVsdDtcbiRkYW5nZXItYmctc3VidGxlOiAgICAgICAgdGludC1jb2xvcigkZGFuZ2VyLCA4MCUpICFkZWZhdWx0O1xuJGxpZ2h0LWJnLXN1YnRsZTogICAgICAgICBtaXgoJGdyYXktMTAwLCAkd2hpdGUpICFkZWZhdWx0O1xuJGRhcmstYmctc3VidGxlOiAgICAgICAgICAkZ3JheS00MDAgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHRoZW1lLWJnLXN1YnRsZS12YXJpYWJsZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHRoZW1lLWJvcmRlci1zdWJ0bGUtdmFyaWFibGVzXG4kcHJpbWFyeS1ib3JkZXItc3VidGxlOiAgIHRpbnQtY29sb3IoJHByaW1hcnksIDYwJSkgIWRlZmF1bHQ7XG4kc2Vjb25kYXJ5LWJvcmRlci1zdWJ0bGU6IHRpbnQtY29sb3IoJHNlY29uZGFyeSwgNjAlKSAhZGVmYXVsdDtcbiRzdWNjZXNzLWJvcmRlci1zdWJ0bGU6ICAgdGludC1jb2xvcigkc3VjY2VzcywgNjAlKSAhZGVmYXVsdDtcbiRpbmZvLWJvcmRlci1zdWJ0bGU6ICAgICAgdGludC1jb2xvcigkaW5mbywgNjAlKSAhZGVmYXVsdDtcbiR3YXJuaW5nLWJvcmRlci1zdWJ0bGU6ICAgdGludC1jb2xvcigkd2FybmluZywgNjAlKSAhZGVmYXVsdDtcbiRkYW5nZXItYm9yZGVyLXN1YnRsZTogICAgdGludC1jb2xvcigkZGFuZ2VyLCA2MCUpICFkZWZhdWx0O1xuJGxpZ2h0LWJvcmRlci1zdWJ0bGU6ICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kZGFyay1ib3JkZXItc3VidGxlOiAgICAgICRncmF5LTUwMCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgdGhlbWUtYm9yZGVyLXN1YnRsZS12YXJpYWJsZXNcblxuLy8gQ2hhcmFjdGVycyB3aGljaCBhcmUgZXNjYXBlZCBieSB0aGUgZXNjYXBlLXN2ZyBmdW5jdGlvblxuJGVzY2FwZWQtY2hhcmFjdGVyczogKFxuICAoXCI8XCIsIFwiJTNjXCIpLFxuICAoXCI+XCIsIFwiJTNlXCIpLFxuICAoXCIjXCIsIFwiJTIzXCIpLFxuICAoXCIoXCIsIFwiJTI4XCIpLFxuICAoXCIpXCIsIFwiJTI5XCIpLFxuKSAhZGVmYXVsdDtcblxuLy8gT3B0aW9uc1xuLy9cbi8vIFF1aWNrbHkgbW9kaWZ5IGdsb2JhbCBzdHlsaW5nIGJ5IGVuYWJsaW5nIG9yIGRpc2FibGluZyBvcHRpb25hbCBmZWF0dXJlcy5cblxuJGVuYWJsZS1jYXJldDogICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcm91bmRlZDogICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXNoYWRvd3M6ICAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtZ3JhZGllbnRzOiAgICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGVuYWJsZS10cmFuc2l0aW9uczogICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcmVkdWNlZC1tb3Rpb246ICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXNtb290aC1zY3JvbGw6ICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1ncmlkLWNsYXNzZXM6ICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtY29udGFpbmVyLWNsYXNzZXM6ICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLWNzc2dyaWQ6ICAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtYnV0dG9uLXBvaW50ZXJzOiAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXJmczogICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS12YWxpZGF0aW9uLWljb25zOiAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtbmVnYXRpdmUtbWFyZ2luczogICAgIGZhbHNlICFkZWZhdWx0O1xuJGVuYWJsZS1kZXByZWNhdGlvbi1tZXNzYWdlczogdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtaW1wb3J0YW50LXV0aWxpdGllczogIHRydWUgIWRlZmF1bHQ7XG5cbiRlbmFibGUtZGFyay1tb2RlOiAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kY29sb3ItbW9kZS10eXBlOiAgICAgICAgICAgICBkYXRhICFkZWZhdWx0OyAvLyBgZGF0YWAgb3IgYG1lZGlhLXF1ZXJ5YFxuXG4vLyBQcmVmaXggZm9yIDpyb290IENTUyB2YXJpYWJsZXNcblxuJHZhcmlhYmxlLXByZWZpeDogICAgICAgICAgICAgYnMtICFkZWZhdWx0OyAvLyBEZXByZWNhdGVkIGluIHY1LjIuMCBmb3IgdGhlIHNob3J0ZXIgYCRwcmVmaXhgXG4kcHJlZml4OiAgICAgICAgICAgICAgICAgICAgICAkdmFyaWFibGUtcHJlZml4ICFkZWZhdWx0O1xuXG4vLyBHcmFkaWVudFxuLy9cbi8vIFRoZSBncmFkaWVudCB3aGljaCBpcyBhZGRlZCB0byBjb21wb25lbnRzIGlmIGAkZW5hYmxlLWdyYWRpZW50c2AgaXMgYHRydWVgXG4vLyBUaGlzIGdyYWRpZW50IGlzIGFsc28gYWRkZWQgdG8gZWxlbWVudHMgd2l0aCBgLmJnLWdyYWRpZW50YFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHZhcmlhYmxlLWdyYWRpZW50XG4kZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoJHdoaXRlLCAuMTUpLCByZ2JhKCR3aGl0ZSwgMCkpICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCB2YXJpYWJsZS1ncmFkaWVudFxuXG4vLyBTcGFjaW5nXG4vL1xuLy8gQ29udHJvbCB0aGUgZGVmYXVsdCBzdHlsaW5nIG9mIG1vc3QgQm9vdHN0cmFwIGVsZW1lbnRzIGJ5IG1vZGlmeWluZyB0aGVzZVxuLy8gdmFyaWFibGVzLiBNb3N0bHkgZm9jdXNlZCBvbiBzcGFjaW5nLlxuLy8gWW91IGNhbiBhZGQgbW9yZSBlbnRyaWVzIHRvIHRoZSAkc3BhY2VycyBtYXAsIHNob3VsZCB5b3UgbmVlZCBtb3JlIHZhcmlhdGlvbi5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHNwYWNlci12YXJpYWJsZXMtbWFwc1xuJHNwYWNlcjogMXJlbSAhZGVmYXVsdDtcbiRzcGFjZXJzOiAoXG4gIDA6IDAsXG4gIDE6ICRzcGFjZXIgKiAuMjUsXG4gIDI6ICRzcGFjZXIgKiAuNSxcbiAgMzogJHNwYWNlcixcbiAgNDogJHNwYWNlciAqIDEuNSxcbiAgNTogJHNwYWNlciAqIDMsXG4pICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBzcGFjZXItdmFyaWFibGVzLW1hcHNcblxuLy8gUG9zaXRpb25cbi8vXG4vLyBEZWZpbmUgdGhlIGVkZ2UgcG9zaXRpb25pbmcgYW5jaG9ycyBvZiB0aGUgcG9zaXRpb24gdXRpbGl0aWVzLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgcG9zaXRpb24tbWFwXG4kcG9zaXRpb24tdmFsdWVzOiAoXG4gIDA6IDAsXG4gIDUwOiA1MCUsXG4gIDEwMDogMTAwJVxuKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgcG9zaXRpb24tbWFwXG5cbi8vIEJvZHlcbi8vXG4vLyBTZXR0aW5ncyBmb3IgdGhlIGA8Ym9keT5gIGVsZW1lbnQuXG5cbiRib2R5LXRleHQtYWxpZ246ICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGJvZHktY29sb3I6ICAgICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcbiRib2R5LWJnOiAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG5cbiRib2R5LXNlY29uZGFyeS1jb2xvcjogICAgICByZ2JhKCRib2R5LWNvbG9yLCAuNzUpICFkZWZhdWx0O1xuJGJvZHktc2Vjb25kYXJ5LWJnOiAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcblxuJGJvZHktdGVydGlhcnktY29sb3I6ICAgICAgIHJnYmEoJGJvZHktY29sb3IsIC41KSAhZGVmYXVsdDtcbiRib2R5LXRlcnRpYXJ5LWJnOiAgICAgICAgICAkZ3JheS0xMDAgIWRlZmF1bHQ7XG5cbiRib2R5LWVtcGhhc2lzLWNvbG9yOiAgICAgICAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vIExpbmtzXG4vL1xuLy8gU3R5bGUgYW5jaG9yIGVsZW1lbnRzLlxuXG4kbGluay1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJpbWFyeSAhZGVmYXVsdDtcbiRsaW5rLWRlY29yYXRpb246ICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVybGluZSAhZGVmYXVsdDtcbiRsaW5rLXNoYWRlLXBlcmNlbnRhZ2U6ICAgICAgICAgICAgICAgICAgIDIwJSAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0LWNvbG9yKCRsaW5rLWNvbG9yLCAkbGluay1zaGFkZS1wZXJjZW50YWdlKSAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246ICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG5cbiRzdHJldGNoZWQtbGluay1wc2V1ZG8tZWxlbWVudDogICAgICAgICAgIGFmdGVyICFkZWZhdWx0O1xuJHN0cmV0Y2hlZC1saW5rLXotaW5kZXg6ICAgICAgICAgICAgICAgICAgMSAhZGVmYXVsdDtcblxuLy8gSWNvbiBsaW5rc1xuLy8gc2Nzcy1kb2NzLXN0YXJ0IGljb24tbGluay12YXJpYWJsZXNcbiRpY29uLWxpbmstZ2FwOiAgICAgICAgICAgICAgIC4zNzVyZW0gIWRlZmF1bHQ7XG4kaWNvbi1saW5rLXVuZGVybGluZS1vZmZzZXQ6ICAuMjVlbSAhZGVmYXVsdDtcbiRpY29uLWxpbmstaWNvbi1zaXplOiAgICAgICAgIDFlbSAhZGVmYXVsdDtcbiRpY29uLWxpbmstaWNvbi10cmFuc2l0aW9uOiAgIC4ycyBlYXNlLWluLW91dCB0cmFuc2Zvcm0gIWRlZmF1bHQ7XG4kaWNvbi1saW5rLWljb24tdHJhbnNmb3JtOiAgICB0cmFuc2xhdGUzZCguMjVlbSwgMCwgMCkgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGljb24tbGluay12YXJpYWJsZXNcblxuLy8gUGFyYWdyYXBoc1xuLy9cbi8vIFN0eWxlIHAgZWxlbWVudC5cblxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAgIDFyZW0gIWRlZmF1bHQ7XG5cblxuLy8gR3JpZCBicmVha3BvaW50c1xuLy9cbi8vIERlZmluZSB0aGUgbWluaW11bSBkaW1lbnNpb25zIGF0IHdoaWNoIHlvdXIgbGF5b3V0IHdpbGwgY2hhbmdlLFxuLy8gYWRhcHRpbmcgdG8gZGlmZmVyZW50IHNjcmVlbiBzaXplcywgZm9yIHVzZSBpbiBtZWRpYSBxdWVyaWVzLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZ3JpZC1icmVha3BvaW50c1xuJGdyaWQtYnJlYWtwb2ludHM6IChcbiAgeHM6IDAsXG4gIHNtOiA1NzZweCxcbiAgbWQ6IDc2OHB4LFxuICBsZzogOTkycHgsXG4gIHhsOiAxMjAwcHgsXG4gIHh4bDogMTQwMHB4XG4pICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBncmlkLWJyZWFrcG9pbnRzXG5cbkBpbmNsdWRlIF9hc3NlcnQtYXNjZW5kaW5nKCRncmlkLWJyZWFrcG9pbnRzLCBcIiRncmlkLWJyZWFrcG9pbnRzXCIpO1xuQGluY2x1ZGUgX2Fzc2VydC1zdGFydHMtYXQtemVybygkZ3JpZC1icmVha3BvaW50cywgXCIkZ3JpZC1icmVha3BvaW50c1wiKTtcblxuXG4vLyBHcmlkIGNvbnRhaW5lcnNcbi8vXG4vLyBEZWZpbmUgdGhlIG1heGltdW0gd2lkdGggb2YgYC5jb250YWluZXJgIGZvciBkaWZmZXJlbnQgc2NyZWVuIHNpemVzLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgY29udGFpbmVyLW1heC13aWR0aHNcbiRjb250YWluZXItbWF4LXdpZHRoczogKFxuICBzbTogNTQwcHgsXG4gIG1kOiA3MjBweCxcbiAgbGc6IDk2MHB4LFxuICB4bDogMTE0MHB4LFxuICB4eGw6IDEzMjBweFxuKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgY29udGFpbmVyLW1heC13aWR0aHNcblxuQGluY2x1ZGUgX2Fzc2VydC1hc2NlbmRpbmcoJGNvbnRhaW5lci1tYXgtd2lkdGhzLCBcIiRjb250YWluZXItbWF4LXdpZHRoc1wiKTtcblxuXG4vLyBHcmlkIGNvbHVtbnNcbi8vXG4vLyBTZXQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGFuZCBzcGVjaWZ5IHRoZSB3aWR0aCBvZiB0aGUgZ3V0dGVycy5cblxuJGdyaWQtY29sdW1uczogICAgICAgICAgICAgICAgMTIgIWRlZmF1bHQ7XG4kZ3JpZC1ndXR0ZXItd2lkdGg6ICAgICAgICAgICAxLjVyZW0gIWRlZmF1bHQ7XG4kZ3JpZC1yb3ctY29sdW1uczogICAgICAgICAgICA2ICFkZWZhdWx0O1xuXG4vLyBDb250YWluZXIgcGFkZGluZ1xuXG4kY29udGFpbmVyLXBhZGRpbmcteDogJGdyaWQtZ3V0dGVyLXdpZHRoICFkZWZhdWx0O1xuXG5cbi8vIENvbXBvbmVudHNcbi8vXG4vLyBEZWZpbmUgY29tbW9uIHBhZGRpbmcgYW5kIGJvcmRlciByYWRpdXMgc2l6ZXMgYW5kIG1vcmUuXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBib3JkZXItdmFyaWFibGVzXG4kYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAxcHggIWRlZmF1bHQ7XG4kYm9yZGVyLXdpZHRoczogKFxuICAxOiAxcHgsXG4gIDI6IDJweCxcbiAgMzogM3B4LFxuICA0OiA0cHgsXG4gIDU6IDVweFxuKSAhZGVmYXVsdDtcbiRib3JkZXItc3R5bGU6ICAgICAgICAgICAgICAgIHNvbGlkICFkZWZhdWx0O1xuJGJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgJGdyYXktMzAwICFkZWZhdWx0O1xuJGJvcmRlci1jb2xvci10cmFuc2x1Y2VudDogICAgcmdiYSgkYmxhY2ssIC4xNzUpICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBib3JkZXItdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBib3JkZXItcmFkaXVzLXZhcmlhYmxlc1xuJGJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgLjM3NXJlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLXNtOiAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJGJvcmRlci1yYWRpdXMteGw6ICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLXh4bDogICAgICAgICAgIDJyZW0gIWRlZmF1bHQ7XG4kYm9yZGVyLXJhZGl1cy1waWxsOiAgICAgICAgICA1MHJlbSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgYm9yZGVyLXJhZGl1cy12YXJpYWJsZXNcbi8vIGZ1c3YtZGlzYWJsZVxuJGJvcmRlci1yYWRpdXMtMnhsOiAgICAgICAgICAgJGJvcmRlci1yYWRpdXMteHhsICFkZWZhdWx0OyAvLyBEZXByZWNhdGVkIGluIHY1LjMuMFxuLy8gZnVzdi1lbmFibGVcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJveC1zaGFkb3ctdmFyaWFibGVzXG4kYm94LXNoYWRvdzogICAgICAgICAgICAgICAgICAwIC41cmVtIDFyZW0gcmdiYSgkYmxhY2ssIC4xNSkgIWRlZmF1bHQ7XG4kYm94LXNoYWRvdy1zbTogICAgICAgICAgICAgICAwIC4xMjVyZW0gLjI1cmVtIHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcbiRib3gtc2hhZG93LWxnOiAgICAgICAgICAgICAgIDAgMXJlbSAzcmVtIHJnYmEoJGJsYWNrLCAuMTc1KSAhZGVmYXVsdDtcbiRib3gtc2hhZG93LWluc2V0OiAgICAgICAgICAgIGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgLjA3NSkgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGJveC1zaGFkb3ctdmFyaWFibGVzXG5cbiRjb21wb25lbnQtYWN0aXZlLWNvbG9yOiAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjb21wb25lbnQtYWN0aXZlLWJnOiAgICAgICAgICRwcmltYXJ5ICFkZWZhdWx0O1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9jdXMtcmluZy12YXJpYWJsZXNcbiRmb2N1cy1yaW5nLXdpZHRoOiAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRmb2N1cy1yaW5nLW9wYWNpdHk6ICAgIC4yNSAhZGVmYXVsdDtcbiRmb2N1cy1yaW5nLWNvbG9yOiAgICAgIHJnYmEoJHByaW1hcnksICRmb2N1cy1yaW5nLW9wYWNpdHkpICFkZWZhdWx0O1xuJGZvY3VzLXJpbmctYmx1cjogICAgICAgMCAhZGVmYXVsdDtcbiRmb2N1cy1yaW5nLWJveC1zaGFkb3c6IDAgMCAkZm9jdXMtcmluZy1ibHVyICRmb2N1cy1yaW5nLXdpZHRoICRmb2N1cy1yaW5nLWNvbG9yICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb2N1cy1yaW5nLXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgY2FyZXQtdmFyaWFibGVzXG4kY2FyZXQtd2lkdGg6ICAgICAgICAgICAgICAgICAuM2VtICFkZWZhdWx0O1xuJGNhcmV0LXZlcnRpY2FsLWFsaWduOiAgICAgICAgJGNhcmV0LXdpZHRoICogLjg1ICFkZWZhdWx0O1xuJGNhcmV0LXNwYWNpbmc6ICAgICAgICAgICAgICAgJGNhcmV0LXdpZHRoICogLjg1ICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBjYXJldC12YXJpYWJsZXNcblxuJHRyYW5zaXRpb24tYmFzZTogICAgICAgICAgICAgYWxsIC4ycyBlYXNlLWluLW91dCAhZGVmYXVsdDtcbiR0cmFuc2l0aW9uLWZhZGU6ICAgICAgICAgICAgIG9wYWNpdHkgLjE1cyBsaW5lYXIgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3Mtc3RhcnQgY29sbGFwc2UtdHJhbnNpdGlvblxuJHRyYW5zaXRpb24tY29sbGFwc2U6ICAgICAgICAgaGVpZ2h0IC4zNXMgZWFzZSAhZGVmYXVsdDtcbiR0cmFuc2l0aW9uLWNvbGxhcHNlLXdpZHRoOiAgIHdpZHRoIC4zNXMgZWFzZSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgY29sbGFwc2UtdHJhbnNpdGlvblxuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3Rcbi8vIHNjc3MtZG9jcy1zdGFydCBhc3BlY3QtcmF0aW9zXG4kYXNwZWN0LXJhdGlvczogKFxuICBcIjF4MVwiOiAxMDAlLFxuICBcIjR4M1wiOiBjYWxjKDMgLyA0ICogMTAwJSksXG4gIFwiMTZ4OVwiOiBjYWxjKDkgLyAxNiAqIDEwMCUpLFxuICBcIjIxeDlcIjogY2FsYyg5IC8gMjEgKiAxMDAlKVxuKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgYXNwZWN0LXJhdGlvc1xuLy8gc3R5bGVsaW50LWVuYWJsZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcblxuLy8gVHlwb2dyYXBoeVxuLy9cbi8vIEZvbnQsIGxpbmUtaGVpZ2h0LCBhbmQgY29sb3IgZm9yIGJvZHkgdGV4dCwgaGVhZGluZ3MsIGFuZCBtb3JlLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9udC12YXJpYWJsZXNcbi8vIHN0eWxlbGludC1kaXNhYmxlIHZhbHVlLWtleXdvcmQtY2FzZVxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICAgICAgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBcIk5vdG8gU2Fuc1wiLCBcIkxpYmVyYXRpb24gU2Fuc1wiLCBBcmlhbCwgc2Fucy1zZXJpZiwgXCJBcHBsZSBDb2xvciBFbW9qaVwiLCBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCIsIFwiTm90byBDb2xvciBFbW9qaVwiICFkZWZhdWx0O1xuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogICAgICAgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZSAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1lbmFibGUgdmFsdWUta2V5d29yZC1jYXNlXG4kZm9udC1mYW1pbHktYmFzZTogICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Zm9udC1zYW5zLXNlcmlmKSAhZGVmYXVsdDtcbiRmb250LWZhbWlseS1jb2RlOiAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1mb250LW1vbm9zcGFjZSkgIWRlZmF1bHQ7XG5cbi8vICRmb250LXNpemUtcm9vdCBhZmZlY3RzIHRoZSB2YWx1ZSBvZiBgcmVtYCwgd2hpY2ggaXMgdXNlZCBmb3IgYXMgd2VsbCBmb250IHNpemVzLCBwYWRkaW5ncywgYW5kIG1hcmdpbnNcbi8vICRmb250LXNpemUtYmFzZSBhZmZlY3RzIHRoZSBmb250IHNpemUgb2YgdGhlIGJvZHkgdGV4dFxuJGZvbnQtc2l6ZS1yb290OiAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRmb250LXNpemUtYmFzZTogICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7IC8vIEFzc3VtZXMgdGhlIGJyb3dzZXIgZGVmYXVsdCwgdHlwaWNhbGx5IGAxNnB4YFxuJGZvbnQtc2l6ZS1zbTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogLjg3NSAhZGVmYXVsdDtcbiRmb250LXNpemUtbGc6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuMjUgIWRlZmF1bHQ7XG5cbiRmb250LXdlaWdodC1saWdodGVyOiAgICAgICAgIGxpZ2h0ZXIgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtbGlnaHQ6ICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtbm9ybWFsOiAgICAgICAgICA0MDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtbWVkaXVtOiAgICAgICAgICA1MDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtc2VtaWJvbGQ6ICAgICAgICA2MDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtYm9sZDogICAgICAgICAgICA3MDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtYm9sZGVyOiAgICAgICAgICBib2xkZXIgIWRlZmF1bHQ7XG5cbiRmb250LXdlaWdodC1iYXNlOiAgICAgICAgICAgICRmb250LXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbiRsaW5lLWhlaWdodC1iYXNlOiAgICAgICAgICAgIDEuNSAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1zbTogICAgICAgICAgICAgIDEuMjUgIWRlZmF1bHQ7XG4kbGluZS1oZWlnaHQtbGc6ICAgICAgICAgICAgICAyICFkZWZhdWx0O1xuXG4kaDEtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAyLjUgIWRlZmF1bHQ7XG4kaDItZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAyICFkZWZhdWx0O1xuJGgzLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS43NSAhZGVmYXVsdDtcbiRoNC1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuNSAhZGVmYXVsdDtcbiRoNS1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuMjUgIWRlZmF1bHQ7XG4kaDYtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvbnQtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb250LXNpemVzXG4kZm9udC1zaXplczogKFxuICAxOiAkaDEtZm9udC1zaXplLFxuICAyOiAkaDItZm9udC1zaXplLFxuICAzOiAkaDMtZm9udC1zaXplLFxuICA0OiAkaDQtZm9udC1zaXplLFxuICA1OiAkaDUtZm9udC1zaXplLFxuICA2OiAkaDYtZm9udC1zaXplXG4pICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb250LXNpemVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBoZWFkaW5ncy12YXJpYWJsZXNcbiRoZWFkaW5ncy1tYXJnaW4tYm90dG9tOiAgICAgICRzcGFjZXIgKiAuNSAhZGVmYXVsdDtcbiRoZWFkaW5ncy1mb250LWZhbWlseTogICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtZm9udC1zdHlsZTogICAgICAgICBudWxsICFkZWZhdWx0O1xuJGhlYWRpbmdzLWZvbnQtd2VpZ2h0OiAgICAgICAgNTAwICFkZWZhdWx0O1xuJGhlYWRpbmdzLWxpbmUtaGVpZ2h0OiAgICAgICAgMS4yICFkZWZhdWx0O1xuJGhlYWRpbmdzLWNvbG9yOiAgICAgICAgICAgICAgaW5oZXJpdCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgaGVhZGluZ3MtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBkaXNwbGF5LWhlYWRpbmdzXG4kZGlzcGxheS1mb250LXNpemVzOiAoXG4gIDE6IDVyZW0sXG4gIDI6IDQuNXJlbSxcbiAgMzogNHJlbSxcbiAgNDogMy41cmVtLFxuICA1OiAzcmVtLFxuICA2OiAyLjVyZW1cbikgIWRlZmF1bHQ7XG5cbiRkaXNwbGF5LWZvbnQtZmFtaWx5OiBudWxsICFkZWZhdWx0O1xuJGRpc3BsYXktZm9udC1zdHlsZTogIG51bGwgIWRlZmF1bHQ7XG4kZGlzcGxheS1mb250LXdlaWdodDogMzAwICFkZWZhdWx0O1xuJGRpc3BsYXktbGluZS1oZWlnaHQ6ICRoZWFkaW5ncy1saW5lLWhlaWdodCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgZGlzcGxheS1oZWFkaW5nc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdHlwZS12YXJpYWJsZXNcbiRsZWFkLWZvbnQtc2l6ZTogICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuMjUgIWRlZmF1bHQ7XG4kbGVhZC1mb250LXdlaWdodDogICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG5cbiRzbWFsbC1mb250LXNpemU6ICAgICAgICAgICAgIC44NzVlbSAhZGVmYXVsdDtcblxuJHN1Yi1zdXAtZm9udC1zaXplOiAgICAgICAgICAgLjc1ZW0gIWRlZmF1bHQ7XG5cbi8vIGZ1c3YtZGlzYWJsZVxuJHRleHQtbXV0ZWQ6ICAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1jb2xvcikgIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gNS4zLjBcbi8vIGZ1c3YtZW5hYmxlXG5cbiRpbml0aWFsaXNtLWZvbnQtc2l6ZTogICAgICAgICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XG5cbiRibG9ja3F1b3RlLW1hcmdpbi15OiAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG4kYmxvY2txdW90ZS1mb250LXNpemU6ICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuJGJsb2NrcXVvdGUtZm9vdGVyLWNvbG9yOiAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGJsb2NrcXVvdGUtZm9vdGVyLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcblxuJGhyLW1hcmdpbi15OiAgICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcbiRoci1jb2xvcjogICAgICAgICAgICAgICAgICAgIGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vIGZ1c3YtZGlzYWJsZVxuJGhyLWJnLWNvbG9yOiAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDsgLy8gRGVwcmVjYXRlZCBpbiB2NS4yLjBcbiRoci1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gdjUuMi4wXG4vLyBmdXN2LWVuYWJsZVxuXG4kaHItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICBudWxsICFkZWZhdWx0OyAvLyBBbGxvd3MgZm9yIGluaGVyaXRlZCBjb2xvcnNcbiRoci1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJGhyLW9wYWNpdHk6ICAgICAgICAgICAgICAgICAgLjI1ICFkZWZhdWx0O1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdnItdmFyaWFibGVzXG4kdnItYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgdnItdmFyaWFibGVzXG5cbiRsZWdlbmQtbWFyZ2luLWJvdHRvbTogICAgICAgIC41cmVtICFkZWZhdWx0O1xuJGxlZ2VuZC1mb250LXNpemU6ICAgICAgICAgICAgMS41cmVtICFkZWZhdWx0O1xuJGxlZ2VuZC1mb250LXdlaWdodDogICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJGR0LWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbiRsaXN0LWlubGluZS1wYWRkaW5nOiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4kbWFyay1wYWRkaW5nOiAgICAgICAgICAgICAgICAuMTg3NWVtICFkZWZhdWx0O1xuJG1hcmstY29sb3I6ICAgICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG4kbWFyay1iZzogICAgICAgICAgICAgICAgICAgICAkeWVsbG93LTEwMCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgdHlwZS12YXJpYWJsZXNcblxuXG4vLyBUYWJsZXNcbi8vXG4vLyBDdXN0b21pemVzIHRoZSBgLnRhYmxlYCBjb21wb25lbnQgd2l0aCBiYXNpYyB2YWx1ZXMsIGVhY2ggdXNlZCBhY3Jvc3MgYWxsIHRhYmxlIHZhcmlhdGlvbnMuXG5cbi8vIHNjc3MtZG9jcy1zdGFydCB0YWJsZS12YXJpYWJsZXNcbiR0YWJsZS1jZWxsLXBhZGRpbmcteTogICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHRhYmxlLWNlbGwtcGFkZGluZy14OiAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kdGFibGUtY2VsbC1wYWRkaW5nLXktc206ICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kdGFibGUtY2VsbC1wYWRkaW5nLXgtc206ICAgICAuMjVyZW0gIWRlZmF1bHQ7XG5cbiR0YWJsZS1jZWxsLXZlcnRpY2FsLWFsaWduOiAgIHRvcCAhZGVmYXVsdDtcblxuJHRhYmxlLWNvbG9yOiAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yKSAhZGVmYXVsdDtcbiR0YWJsZS1iZzogICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWJnKSAhZGVmYXVsdDtcbiR0YWJsZS1hY2NlbnQtYmc6ICAgICAgICAgICAgIHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuXG4kdGFibGUtdGgtZm9udC13ZWlnaHQ6ICAgICAgICBudWxsICFkZWZhdWx0O1xuXG4kdGFibGUtc3RyaXBlZC1jb2xvcjogICAgICAgICAkdGFibGUtY29sb3IgIWRlZmF1bHQ7XG4kdGFibGUtc3RyaXBlZC1iZy1mYWN0b3I6ICAgICAuMDUgIWRlZmF1bHQ7XG4kdGFibGUtc3RyaXBlZC1iZzogICAgICAgICAgICByZ2JhKHZhcigtLSN7JHByZWZpeH1lbXBoYXNpcy1jb2xvci1yZ2IpLCAkdGFibGUtc3RyaXBlZC1iZy1mYWN0b3IpICFkZWZhdWx0O1xuXG4kdGFibGUtYWN0aXZlLWNvbG9yOiAgICAgICAgICAkdGFibGUtY29sb3IgIWRlZmF1bHQ7XG4kdGFibGUtYWN0aXZlLWJnLWZhY3RvcjogICAgICAuMSAhZGVmYXVsdDtcbiR0YWJsZS1hY3RpdmUtYmc6ICAgICAgICAgICAgIHJnYmEodmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yLXJnYiksICR0YWJsZS1hY3RpdmUtYmctZmFjdG9yKSAhZGVmYXVsdDtcblxuJHRhYmxlLWhvdmVyLWNvbG9yOiAgICAgICAgICAgJHRhYmxlLWNvbG9yICFkZWZhdWx0O1xuJHRhYmxlLWhvdmVyLWJnLWZhY3RvcjogICAgICAgLjA3NSAhZGVmYXVsdDtcbiR0YWJsZS1ob3Zlci1iZzogICAgICAgICAgICAgIHJnYmEodmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yLXJnYiksICR0YWJsZS1ob3Zlci1iZy1mYWN0b3IpICFkZWZhdWx0O1xuXG4kdGFibGUtYm9yZGVyLWZhY3RvcjogICAgICAgICAuMiAhZGVmYXVsdDtcbiR0YWJsZS1ib3JkZXItd2lkdGg6ICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJHRhYmxlLWJvcmRlci1jb2xvcjogICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvcikgIWRlZmF1bHQ7XG5cbiR0YWJsZS1zdHJpcGVkLW9yZGVyOiAgICAgICAgIG9kZCAhZGVmYXVsdDtcbiR0YWJsZS1zdHJpcGVkLWNvbHVtbnMtb3JkZXI6IGV2ZW4gIWRlZmF1bHQ7XG5cbiR0YWJsZS1ncm91cC1zZXBhcmF0b3ItY29sb3I6IGN1cnJlbnRjb2xvciAhZGVmYXVsdDtcblxuJHRhYmxlLWNhcHRpb24tY29sb3I6ICAgICAgICAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1jb2xvcikgIWRlZmF1bHQ7XG5cbiR0YWJsZS1iZy1zY2FsZTogICAgICAgICAgICAgIC04MCUgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHRhYmxlLXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdGFibGUtbG9vcFxuJHRhYmxlLXZhcmlhbnRzOiAoXG4gIFwicHJpbWFyeVwiOiAgICBzaGlmdC1jb2xvcigkcHJpbWFyeSwgJHRhYmxlLWJnLXNjYWxlKSxcbiAgXCJzZWNvbmRhcnlcIjogIHNoaWZ0LWNvbG9yKCRzZWNvbmRhcnksICR0YWJsZS1iZy1zY2FsZSksXG4gIFwic3VjY2Vzc1wiOiAgICBzaGlmdC1jb2xvcigkc3VjY2VzcywgJHRhYmxlLWJnLXNjYWxlKSxcbiAgXCJpbmZvXCI6ICAgICAgIHNoaWZ0LWNvbG9yKCRpbmZvLCAkdGFibGUtYmctc2NhbGUpLFxuICBcIndhcm5pbmdcIjogICAgc2hpZnQtY29sb3IoJHdhcm5pbmcsICR0YWJsZS1iZy1zY2FsZSksXG4gIFwiZGFuZ2VyXCI6ICAgICBzaGlmdC1jb2xvcigkZGFuZ2VyLCAkdGFibGUtYmctc2NhbGUpLFxuICBcImxpZ2h0XCI6ICAgICAgJGxpZ2h0LFxuICBcImRhcmtcIjogICAgICAgJGRhcmssXG4pICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCB0YWJsZS1sb29wXG5cblxuLy8gQnV0dG9ucyArIEZvcm1zXG4vL1xuLy8gU2hhcmVkIHZhcmlhYmxlcyB0aGF0IGFyZSByZWFzc2lnbmVkIHRvIGAkaW5wdXQtYCBhbmQgYCRidG4tYCBzcGVjaWZpYyB2YXJpYWJsZXMuXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBpbnB1dC1idG4tdmFyaWFibGVzXG4kaW5wdXQtYnRuLXBhZGRpbmcteTogICAgICAgICAuMzc1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1wYWRkaW5nLXg6ICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LWZhbWlseTogICAgICAgbnVsbCAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9udC1zaXplOiAgICAgICAgICRmb250LXNpemUtYmFzZSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tbGluZS1oZWlnaHQ6ICAgICAgICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLWZvY3VzLXdpZHRoOiAgICAgICAgICRmb2N1cy1yaW5nLXdpZHRoICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb2N1cy1jb2xvci1vcGFjaXR5OiAkZm9jdXMtcmluZy1vcGFjaXR5ICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb2N1cy1jb2xvcjogICAgICAgICAkZm9jdXMtcmluZy1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9jdXMtYmx1cjogICAgICAgICAgJGZvY3VzLXJpbmctYmx1ciAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdzogICAgJGZvY3VzLXJpbmctYm94LXNoYWRvdyAhZGVmYXVsdDtcblxuJGlucHV0LWJ0bi1wYWRkaW5nLXktc206ICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1wYWRkaW5nLXgtc206ICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvbnQtc2l6ZS1zbTogICAgICAkZm9udC1zaXplLXNtICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLXBhZGRpbmcteS1sZzogICAgICAuNXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tcGFkZGluZy14LWxnOiAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvbnQtc2l6ZS1sZzogICAgICAkZm9udC1zaXplLWxnICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLWJvcmRlci13aWR0aDogICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgaW5wdXQtYnRuLXZhcmlhYmxlc1xuXG5cbi8vIEJ1dHRvbnNcbi8vXG4vLyBGb3IgZWFjaCBvZiBCb290c3RyYXAncyBidXR0b25zLCBkZWZpbmUgdGV4dCwgYmFja2dyb3VuZCwgYW5kIGJvcmRlciBjb2xvci5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJ0bi12YXJpYWJsZXNcbiRidG4tY29sb3I6ICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWNvbG9yKSAhZGVmYXVsdDtcbiRidG4tcGFkZGluZy15OiAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15ICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kYnRuLWZvbnQtZmFtaWx5OiAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemU6ICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUgIWRlZmF1bHQ7XG4kYnRuLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuJGJ0bi13aGl0ZS1zcGFjZTogICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDsgLy8gU2V0IHRvIGBub3dyYXBgIHRvIHByZXZlbnQgdGV4dCB3cmFwcGluZ1xuXG4kYnRuLXBhZGRpbmcteS1zbTogICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteS1zbSAhZGVmYXVsdDtcbiRidG4tcGFkZGluZy14LXNtOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LXNtICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemUtc206ICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtc20gIWRlZmF1bHQ7XG5cbiRidG4tcGFkZGluZy15LWxnOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LWxnICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXgtbGc6ICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgIWRlZmF1bHQ7XG4kYnRuLWZvbnQtc2l6ZS1sZzogICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcblxuJGJ0bi1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgJGlucHV0LWJ0bi1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG5cbiRidG4tZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICRmb250LXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG4kYnRuLWJveC1zaGFkb3c6ICAgICAgICAgICAgICBpbnNldCAwIDFweCAwIHJnYmEoJHdoaXRlLCAuMTUpLCAwIDFweCAxcHggcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xuJGJ0bi1mb2N1cy13aWR0aDogICAgICAgICAgICAgJGlucHV0LWJ0bi1mb2N1cy13aWR0aCAhZGVmYXVsdDtcbiRidG4tZm9jdXMtYm94LXNoYWRvdzogICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRidG4tZGlzYWJsZWQtb3BhY2l0eTogICAgICAgIC42NSAhZGVmYXVsdDtcbiRidG4tYWN0aXZlLWJveC1zaGFkb3c6ICAgICAgIGluc2V0IDAgM3B4IDVweCByZ2JhKCRibGFjaywgLjEyNSkgIWRlZmF1bHQ7XG5cbiRidG4tbGluay1jb2xvcjogICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWNvbG9yKSAhZGVmYXVsdDtcbiRidG4tbGluay1ob3Zlci1jb2xvcjogICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWhvdmVyLWNvbG9yKSAhZGVmYXVsdDtcbiRidG4tbGluay1kaXNhYmxlZC1jb2xvcjogICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRidG4tbGluay1mb2N1cy1zaGFkb3ctcmdiOiAgIHRvLXJnYihtaXgoY29sb3ItY29udHJhc3QoJGxpbmstY29sb3IpLCAkbGluay1jb2xvciwgMTUlKSkgIWRlZmF1bHQ7XG5cbi8vIEFsbG93cyBmb3IgY3VzdG9taXppbmcgYnV0dG9uIHJhZGl1cyBpbmRlcGVuZGVudGx5IGZyb20gZ2xvYmFsIGJvcmRlciByYWRpdXNcbiRidG4tYm9yZGVyLXJhZGl1czogICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzKSAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1zbTogICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLXNtKSAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1sZzogICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLWxnKSAhZGVmYXVsdDtcblxuJGJ0bi10cmFuc2l0aW9uOiAgICAgICAgICAgICAgY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4kYnRuLWhvdmVyLWJnLXNoYWRlLWFtb3VudDogICAgICAgMTUlICFkZWZhdWx0O1xuJGJ0bi1ob3Zlci1iZy10aW50LWFtb3VudDogICAgICAgIDE1JSAhZGVmYXVsdDtcbiRidG4taG92ZXItYm9yZGVyLXNoYWRlLWFtb3VudDogICAyMCUgIWRlZmF1bHQ7XG4kYnRuLWhvdmVyLWJvcmRlci10aW50LWFtb3VudDogICAgMTAlICFkZWZhdWx0O1xuJGJ0bi1hY3RpdmUtYmctc2hhZGUtYW1vdW50OiAgICAgIDIwJSAhZGVmYXVsdDtcbiRidG4tYWN0aXZlLWJnLXRpbnQtYW1vdW50OiAgICAgICAyMCUgIWRlZmF1bHQ7XG4kYnRuLWFjdGl2ZS1ib3JkZXItc2hhZGUtYW1vdW50OiAgMjUlICFkZWZhdWx0O1xuJGJ0bi1hY3RpdmUtYm9yZGVyLXRpbnQtYW1vdW50OiAgIDEwJSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgYnRuLXZhcmlhYmxlc1xuXG5cbi8vIEZvcm1zXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXRleHQtdmFyaWFibGVzXG4kZm9ybS10ZXh0LW1hcmdpbi10b3A6ICAgICAgICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJGZvcm0tdGV4dC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XG4kZm9ybS10ZXh0LWZvbnQtc3R5bGU6ICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRmb3JtLXRleHQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGZvcm0tdGV4dC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1zZWNvbmRhcnktY29sb3IpICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLXRleHQtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLWxhYmVsLXZhcmlhYmxlc1xuJGZvcm0tbGFiZWwtbWFyZ2luLWJvdHRvbTogICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJGZvcm0tbGFiZWwtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kZm9ybS1sYWJlbC1mb250LXN0eWxlOiAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGZvcm0tbGFiZWwtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tbGFiZWwtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLWlucHV0LXZhcmlhYmxlc1xuJGlucHV0LXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15ICFkZWZhdWx0O1xuJGlucHV0LXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14ICFkZWZhdWx0O1xuJGlucHV0LWZvbnQtZmFtaWx5OiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUgIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LWJhc2UgIWRlZmF1bHQ7XG4kaW5wdXQtbGluZS1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1saW5lLWhlaWdodCAhZGVmYXVsdDtcblxuJGlucHV0LXBhZGRpbmcteS1zbTogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LXNtICFkZWZhdWx0O1xuJGlucHV0LXBhZGRpbmcteC1zbTogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LXNtICFkZWZhdWx0O1xuJGlucHV0LWZvbnQtc2l6ZS1zbTogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1zaXplLXNtICFkZWZhdWx0O1xuXG4kaW5wdXQtcGFkZGluZy15LWxnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXktbGcgIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy14LWxnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC1zaXplLWxnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtbGcgIWRlZmF1bHQ7XG5cbiRpbnB1dC1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1iZykgIWRlZmF1bHQ7XG4kaW5wdXQtZGlzYWJsZWQtY29sb3I6ICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRpbnB1dC1kaXNhYmxlZC1iZzogICAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9c2Vjb25kYXJ5LWJnKSAhZGVmYXVsdDtcbiRpbnB1dC1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuXG4kaW5wdXQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvZHktY29sb3IpICFkZWZhdWx0O1xuJGlucHV0LWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItY29sb3IpICFkZWZhdWx0O1xuJGlucHV0LWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGlucHV0LWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3gtc2hhZG93LWluc2V0KSAhZGVmYXVsdDtcblxuJGlucHV0LWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzKSAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItcmFkaXVzLXNtOiAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cy1zbSkgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1yYWRpdXMtbGcpICFkZWZhdWx0O1xuXG4kaW5wdXQtZm9jdXMtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJnICFkZWZhdWx0O1xuJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgIHRpbnQtY29sb3IoJGNvbXBvbmVudC1hY3RpdmUtYmcsIDUwJSkgIWRlZmF1bHQ7XG4kaW5wdXQtZm9jdXMtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGlucHV0LWZvY3VzLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9jdXMtd2lkdGggIWRlZmF1bHQ7XG4kaW5wdXQtZm9jdXMtYm94LXNoYWRvdzogICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuXG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1jb2xvcikgIWRlZmF1bHQ7XG4kaW5wdXQtcGxhaW50ZXh0LWNvbG9yOiAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvZHktY29sb3IpICFkZWZhdWx0O1xuXG4kaW5wdXQtaGVpZ2h0LWJvcmRlcjogICAgICAgICAgICAgICAgICAgY2FsYygjeyRpbnB1dC1ib3JkZXItd2lkdGh9ICogMikgIWRlZmF1bHQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG5cbiRpbnB1dC1oZWlnaHQtaW5uZXI6ICAgICAgICAgICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0ICogMWVtLCAkaW5wdXQtcGFkZGluZy15ICogMikgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGY6ICAgICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodCAqIC41ZW0sICRpbnB1dC1wYWRkaW5nLXkpICFkZWZhdWx0O1xuJGlucHV0LWhlaWdodC1pbm5lci1xdWFydGVyOiAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAuMjVlbSwgJGlucHV0LXBhZGRpbmcteSAqIC41KSAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodDogICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAxZW0sIGFkZCgkaW5wdXQtcGFkZGluZy15ICogMiwgJGlucHV0LWhlaWdodC1ib3JkZXIsIGZhbHNlKSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LXNtOiAgICAgICAgICAgICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodCAqIDFlbSwgYWRkKCRpbnB1dC1wYWRkaW5nLXktc20gKiAyLCAkaW5wdXQtaGVpZ2h0LWJvcmRlciwgZmFsc2UpKSAhZGVmYXVsdDtcbiRpbnB1dC1oZWlnaHQtbGc6ICAgICAgICAgICAgICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0ICogMWVtLCBhZGQoJGlucHV0LXBhZGRpbmcteS1sZyAqIDIsICRpbnB1dC1oZWlnaHQtYm9yZGVyLCBmYWxzZSkpICFkZWZhdWx0O1xuXG4kaW5wdXQtdHJhbnNpdGlvbjogICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuJGZvcm0tY29sb3Itd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgIDNyZW0gIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0taW5wdXQtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLWNoZWNrLXZhcmlhYmxlc1xuJGZvcm0tY2hlY2staW5wdXQtd2lkdGg6ICAgICAgICAgICAgICAgICAgMWVtICFkZWZhdWx0O1xuJGZvcm0tY2hlY2stbWluLWhlaWdodDogICAgICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1wYWRkaW5nLXN0YXJ0OiAgICAgICAgICAgICAgICAkZm9ybS1jaGVjay1pbnB1dC13aWR0aCArIC41ZW0gIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1tYXJnaW4tYm90dG9tOiAgICAgICAgICAgICAgICAuMTI1cmVtICFkZWZhdWx0O1xuJGZvcm0tY2hlY2stbGFiZWwtY29sb3I6ICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWxhYmVsLWN1cnNvcjogICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay10cmFuc2l0aW9uOiAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuXG4kZm9ybS1jaGVjay1pbnB1dC1hY3RpdmUtZmlsdGVyOiAgICAgICAgICBicmlnaHRuZXNzKDkwJSkgIWRlZmF1bHQ7XG5cbiRmb3JtLWNoZWNrLWlucHV0LWJnOiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1iZyAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlucHV0LWJvcmRlcjogICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1ib3JkZXItY29sb3IpICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtYm9yZGVyLXJhZGl1czogICAgICAgICAgLjI1ZW0gIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1yYWRpby1ib3JkZXItcmFkaXVzOiAgICAgICAgICA1MCUgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1mb2N1cy1ib3JkZXI6ICAgICAgICAgICAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtZm9jdXMtYm94LXNoYWRvdzogICAgICAgJGZvY3VzLXJpbmctYm94LXNoYWRvdyAhZGVmYXVsdDtcblxuJGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1jb2xvcjogICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJnLWNvbG9yOiAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtYm9yZGVyLWNvbG9yOiAgICRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtYmctY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJnLWltYWdlOiAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyMCAyMCc+PHBhdGggZmlsbD0nbm9uZScgc3Ryb2tlPScjeyRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtY29sb3J9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMycgZD0nbTYgMTAgMyAzIDYtNicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLXJhZGlvLWNoZWNrZWQtYmctaW1hZ2U6ICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nLTQgLTQgOCA4Jz48Y2lyY2xlIHI9JzInIGZpbGw9JyN7JGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1jb2xvcn0nLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG5cbiRmb3JtLWNoZWNrLWlucHV0LWluZGV0ZXJtaW5hdGUtY29sb3I6ICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1iZy1jb2xvcjogICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1pbmRldGVybWluYXRlLWJvcmRlci1jb2xvcjogICAkZm9ybS1jaGVjay1pbnB1dC1pbmRldGVybWluYXRlLWJnLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1iZy1pbWFnZTogICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjAgMjAnPjxwYXRoIGZpbGw9J25vbmUnIHN0cm9rZT0nI3skZm9ybS1jaGVjay1pbnB1dC1pbmRldGVybWluYXRlLWNvbG9yfScgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzMnIGQ9J002IDEwaDgnLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG5cbiRmb3JtLWNoZWNrLWlucHV0LWRpc2FibGVkLW9wYWNpdHk6ICAgICAgICAuNSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWxhYmVsLWRpc2FibGVkLW9wYWNpdHk6ICAgICAgICAkZm9ybS1jaGVjay1pbnB1dC1kaXNhYmxlZC1vcGFjaXR5ICFkZWZhdWx0O1xuJGZvcm0tY2hlY2stYnRuLWNoZWNrLWRpc2FibGVkLW9wYWNpdHk6ICAgICRidG4tZGlzYWJsZWQtb3BhY2l0eSAhZGVmYXVsdDtcblxuJGZvcm0tY2hlY2staW5saW5lLW1hcmdpbi1lbmQ6ICAgIDFyZW0gIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tY2hlY2stdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXN3aXRjaC12YXJpYWJsZXNcbiRmb3JtLXN3aXRjaC1jb2xvcjogICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjI1KSAhZGVmYXVsdDtcbiRmb3JtLXN3aXRjaC13aWR0aDogICAgICAgICAgICAgICAyZW0gIWRlZmF1bHQ7XG4kZm9ybS1zd2l0Y2gtcGFkZGluZy1zdGFydDogICAgICAgJGZvcm0tc3dpdGNoLXdpZHRoICsgLjVlbSAhZGVmYXVsdDtcbiRmb3JtLXN3aXRjaC1iZy1pbWFnZTogICAgICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9Jy00IC00IDggOCc+PGNpcmNsZSByPSczJyBmaWxsPScjeyRmb3JtLXN3aXRjaC1jb2xvcn0nLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kZm9ybS1zd2l0Y2gtYm9yZGVyLXJhZGl1czogICAgICAgJGZvcm0tc3dpdGNoLXdpZHRoICFkZWZhdWx0O1xuJGZvcm0tc3dpdGNoLXRyYW5zaXRpb246ICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb24gLjE1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuJGZvcm0tc3dpdGNoLWZvY3VzLWNvbG9yOiAgICAgICAgICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1zd2l0Y2gtZm9jdXMtYmctaW1hZ2U6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnPjxjaXJjbGUgcj0nMycgZmlsbD0nI3skZm9ybS1zd2l0Y2gtZm9jdXMtY29sb3J9Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kZm9ybS1zd2l0Y2gtY2hlY2tlZC1jb2xvcjogICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1zd2l0Y2gtY2hlY2tlZC1iZy1pbWFnZTogICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnPjxjaXJjbGUgcj0nMycgZmlsbD0nI3skZm9ybS1zd2l0Y2gtY2hlY2tlZC1jb2xvcn0nLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kZm9ybS1zd2l0Y2gtY2hlY2tlZC1iZy1wb3NpdGlvbjogcmlnaHQgY2VudGVyICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLXN3aXRjaC12YXJpYWJsZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGlucHV0LWdyb3VwLXZhcmlhYmxlc1xuJGlucHV0LWdyb3VwLWFkZG9uLXBhZGRpbmcteTogICAgICAgICAgICRpbnB1dC1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kaW5wdXQtZ3JvdXAtYWRkb24tcGFkZGluZy14OiAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteCAhZGVmYXVsdDtcbiRpbnB1dC1ncm91cC1hZGRvbi1mb250LXdlaWdodDogICAgICAgICAkaW5wdXQtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kaW5wdXQtZ3JvdXAtYWRkb24tY29sb3I6ICAgICAgICAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGlucHV0LWdyb3VwLWFkZG9uLWJnOiAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH10ZXJ0aWFyeS1iZykgIWRlZmF1bHQ7XG4kaW5wdXQtZ3JvdXAtYWRkb24tYm9yZGVyLWNvbG9yOiAgICAgICAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgaW5wdXQtZ3JvdXAtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXNlbGVjdC12YXJpYWJsZXNcbiRmb3JtLXNlbGVjdC1wYWRkaW5nLXk6ICAgICAgICAgICAgICRpbnB1dC1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtcGFkZGluZy14OiAgICAgICAgICAgICAkaW5wdXQtcGFkZGluZy14ICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWZvbnQtZmFtaWx5OiAgICAgICAgICAgJGlucHV0LWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWZvbnQtc2l6ZTogICAgICAgICAgICAgJGlucHV0LWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZzogICAgICRmb3JtLXNlbGVjdC1wYWRkaW5nLXggKiAzICFkZWZhdWx0OyAvLyBFeHRyYSBwYWRkaW5nIGZvciBiYWNrZ3JvdW5kLWltYWdlXG4kZm9ybS1zZWxlY3QtZm9udC13ZWlnaHQ6ICAgICAgICAgICAkaW5wdXQtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtbGluZS1oZWlnaHQ6ICAgICAgICAgICAkaW5wdXQtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtY29sb3I6ICAgICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtYmc6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtZGlzYWJsZWQtY29sb3I6ICAgICAgICBudWxsICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWRpc2FibGVkLWJnOiAgICAgICAgICAgJGlucHV0LWRpc2FibGVkLWJnICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWRpc2FibGVkLWJvcmRlci1jb2xvcjogJGlucHV0LWRpc2FibGVkLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1iZy1wb3NpdGlvbjogICAgICAgICAgIHJpZ2h0ICRmb3JtLXNlbGVjdC1wYWRkaW5nLXggY2VudGVyICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWJnLXNpemU6ICAgICAgICAgICAgICAgMTZweCAxMnB4ICFkZWZhdWx0OyAvLyBJbiBwaXhlbHMgYmVjYXVzZSBpbWFnZSBkaW1lbnNpb25zXG4kZm9ybS1zZWxlY3QtaW5kaWNhdG9yLWNvbG9yOiAgICAgICAkZ3JheS04MDAgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtaW5kaWNhdG9yOiAgICAgICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNiAxNic+PHBhdGggZmlsbD0nbm9uZScgc3Ryb2tlPScjeyRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItY29sb3J9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMicgZD0nbTIgNSA2IDYgNi02Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kZm9ybS1zZWxlY3QtZmVlZGJhY2staWNvbi1wYWRkaW5nLWVuZDogJGZvcm0tc2VsZWN0LXBhZGRpbmcteCAqIDIuNSArICRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZyAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1mZWVkYmFjay1pY29uLXBvc2l0aW9uOiAgICBjZW50ZXIgcmlnaHQgJGZvcm0tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWZlZWRiYWNrLWljb24tc2l6ZTogICAgICAgICRpbnB1dC1oZWlnaHQtaW5uZXItaGFsZiAkaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGYgIWRlZmF1bHQ7XG5cbiRmb3JtLXNlbGVjdC1ib3JkZXItd2lkdGg6ICAgICAgICAkaW5wdXQtYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWJvcmRlci1jb2xvcjogICAgICAgICRpbnB1dC1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtYm9yZGVyLXJhZGl1czogICAgICAgJGlucHV0LWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtYm94LXNoYWRvdzogICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJveC1zaGFkb3ctaW5zZXQpICFkZWZhdWx0O1xuXG4kZm9ybS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yOiAgJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1mb2N1cy13aWR0aDogICAgICAgICAkaW5wdXQtZm9jdXMtd2lkdGggIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdzogICAgMCAwIDAgJGZvcm0tc2VsZWN0LWZvY3VzLXdpZHRoICRpbnB1dC1idG4tZm9jdXMtY29sb3IgIWRlZmF1bHQ7XG5cbiRmb3JtLXNlbGVjdC1wYWRkaW5nLXktc206ICAgICAgICAkaW5wdXQtcGFkZGluZy15LXNtICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LXBhZGRpbmcteC1zbTogICAgICAgICRpbnB1dC1wYWRkaW5nLXgtc20gIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtZm9udC1zaXplLXNtOiAgICAgICAgJGlucHV0LWZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1ib3JkZXItcmFkaXVzLXNtOiAgICAkaW5wdXQtYm9yZGVyLXJhZGl1cy1zbSAhZGVmYXVsdDtcblxuJGZvcm0tc2VsZWN0LXBhZGRpbmcteS1sZzogICAgICAgICRpbnB1dC1wYWRkaW5nLXktbGcgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtcGFkZGluZy14LWxnOiAgICAgICAgJGlucHV0LXBhZGRpbmcteC1sZyAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1mb250LXNpemUtbGc6ICAgICAgICAkaW5wdXQtZm9udC1zaXplLWxnICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWJvcmRlci1yYWRpdXMtbGc6ICAgICRpbnB1dC1ib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xuXG4kZm9ybS1zZWxlY3QtdHJhbnNpdGlvbjogICAgICAgICAgJGlucHV0LXRyYW5zaXRpb24gIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tc2VsZWN0LXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9ybS1yYW5nZS12YXJpYWJsZXNcbiRmb3JtLXJhbmdlLXRyYWNrLXdpZHRoOiAgICAgICAgICAxMDAlICFkZWZhdWx0O1xuJGZvcm0tcmFuZ2UtdHJhY2staGVpZ2h0OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJGZvcm0tcmFuZ2UtdHJhY2stY3Vyc29yOiAgICAgICAgIHBvaW50ZXIgIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10cmFjay1iZzogICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1iZykgIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzOiAgMXJlbSAhZGVmYXVsdDtcbiRmb3JtLXJhbmdlLXRyYWNrLWJveC1zaGFkb3c6ICAgICB2YXIoLS0jeyRwcmVmaXh9Ym94LXNoYWRvdy1pbnNldCkgIWRlZmF1bHQ7XG5cbiRmb3JtLXJhbmdlLXRodW1iLXdpZHRoOiAgICAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGZvcm0tcmFuZ2UtdGh1bWItaGVpZ2h0OiAgICAgICAgICAgICAgICAgICRmb3JtLXJhbmdlLXRodW1iLXdpZHRoICFkZWZhdWx0O1xuJGZvcm0tcmFuZ2UtdGh1bWItYmc6ICAgICAgICAgICAgICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuJGZvcm0tcmFuZ2UtdGh1bWItYm9yZGVyOiAgICAgICAgICAgICAgICAgIDAgIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRmb3JtLXJhbmdlLXRodW1iLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAwIC4xcmVtIC4yNXJlbSByZ2JhKCRibGFjaywgLjEpICFkZWZhdWx0O1xuJGZvcm0tcmFuZ2UtdGh1bWItZm9jdXMtYm94LXNoYWRvdzogICAgICAgIDAgMCAwIDFweCAkYm9keS1iZywgJGlucHV0LWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93LXdpZHRoOiAgJGlucHV0LWZvY3VzLXdpZHRoICFkZWZhdWx0OyAvLyBGb3IgZm9jdXMgYm94IHNoYWRvdyBpc3N1ZSBpbiBFZGdlXG4kZm9ybS1yYW5nZS10aHVtYi1hY3RpdmUtYmc6ICAgICAgICAgICAgICAgdGludC1jb2xvcigkY29tcG9uZW50LWFjdGl2ZS1iZywgNzAlKSAhZGVmYXVsdDtcbiRmb3JtLXJhbmdlLXRodW1iLWRpc2FibGVkLWJnOiAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9c2Vjb25kYXJ5LWNvbG9yKSAhZGVmYXVsdDtcbiRmb3JtLXJhbmdlLXRodW1iLXRyYW5zaXRpb246ICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tcmFuZ2UtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLWZpbGUtdmFyaWFibGVzXG4kZm9ybS1maWxlLWJ1dHRvbi1jb2xvcjogICAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tZmlsZS1idXR0b24tYmc6ICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH10ZXJ0aWFyeS1iZykgIWRlZmF1bHQ7XG4kZm9ybS1maWxlLWJ1dHRvbi1ob3Zlci1iZzogICAgICAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1iZykgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tZmlsZS12YXJpYWJsZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGZvcm0tZmxvYXRpbmctdmFyaWFibGVzXG4kZm9ybS1mbG9hdGluZy1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgYWRkKDMuNXJlbSwgJGlucHV0LWhlaWdodC1ib3JkZXIpICFkZWZhdWx0O1xuJGZvcm0tZmxvYXRpbmctbGluZS1oZWlnaHQ6ICAgICAgICAgICAgIDEuMjUgIWRlZmF1bHQ7XG4kZm9ybS1mbG9hdGluZy1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteCAhZGVmYXVsdDtcbiRmb3JtLWZsb2F0aW5nLXBhZGRpbmcteTogICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGZvcm0tZmxvYXRpbmctaW5wdXQtcGFkZGluZy10OiAgICAgICAgIDEuNjI1cmVtICFkZWZhdWx0O1xuJGZvcm0tZmxvYXRpbmctaW5wdXQtcGFkZGluZy1iOiAgICAgICAgIC42MjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1mbG9hdGluZy1sYWJlbC1oZWlnaHQ6ICAgICAgICAgICAgMS41ZW0gIWRlZmF1bHQ7XG4kZm9ybS1mbG9hdGluZy1sYWJlbC1vcGFjaXR5OiAgICAgICAgICAgLjY1ICFkZWZhdWx0O1xuJGZvcm0tZmxvYXRpbmctbGFiZWwtdHJhbnNmb3JtOiAgICAgICAgIHNjYWxlKC44NSkgdHJhbnNsYXRlWSgtLjVyZW0pIHRyYW5zbGF0ZVgoLjE1cmVtKSAhZGVmYXVsdDtcbiRmb3JtLWZsb2F0aW5nLWxhYmVsLWRpc2FibGVkLWNvbG9yOiAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kZm9ybS1mbG9hdGluZy10cmFuc2l0aW9uOiAgICAgICAgICAgICAgb3BhY2l0eSAuMXMgZWFzZS1pbi1vdXQsIHRyYW5zZm9ybSAuMXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tZmxvYXRpbmctdmFyaWFibGVzXG5cbi8vIEZvcm0gdmFsaWRhdGlvblxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9ybS1mZWVkYmFjay12YXJpYWJsZXNcbiRmb3JtLWZlZWRiYWNrLW1hcmdpbi10b3A6ICAgICAgICAgICRmb3JtLXRleHQtbWFyZ2luLXRvcCAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWZvbnQtc2l6ZTogICAgICAgICAgICRmb3JtLXRleHQtZm9udC1zaXplICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stZm9udC1zdHlsZTogICAgICAgICAgJGZvcm0tdGV4dC1mb250LXN0eWxlICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdmFsaWQtY29sb3I6ICAgICAgICAgJHN1Y2Nlc3MgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay1pbnZhbGlkLWNvbG9yOiAgICAgICAkZGFuZ2VyICFkZWZhdWx0O1xuXG4kZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkLWNvbG9yOiAgICAkZm9ybS1mZWVkYmFjay12YWxpZC1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWljb24tdmFsaWQ6ICAgICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDggOCc+PHBhdGggZmlsbD0nI3skZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkLWNvbG9yfScgZD0nTTIuMyA2LjczLjYgNC41M2MtLjQtMS4wNC40Ni0xLjQgMS4xLS44bDEuMSAxLjQgMy40LTMuOGMuNi0uNjMgMS42LS4yNyAxLjIuN2wtNCA0LjZjLS40My41LS44LjQtMS4xLjF6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkLWNvbG9yOiAgJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZDogICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDEyIDEyJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nI3skZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWQtY29sb3J9Jz48Y2lyY2xlIGN4PSc2JyBjeT0nNicgcj0nNC41Jy8+PHBhdGggc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgZD0nTTUuOCAzLjZoLjRMNiA2LjV6Jy8+PGNpcmNsZSBjeD0nNicgY3k9JzguMicgcj0nLjYnIGZpbGw9JyN7JGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkLWNvbG9yfScgc3Ryb2tlPSdub25lJy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLWZlZWRiYWNrLXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9ybS12YWxpZGF0aW9uLWNvbG9yc1xuJGZvcm0tdmFsaWQtY29sb3I6ICAgICAgICAgICAgICAgICAgJGZvcm0tZmVlZGJhY2stdmFsaWQtY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS12YWxpZC1ib3JkZXItY29sb3I6ICAgICAgICAgICAkZm9ybS1mZWVkYmFjay12YWxpZC1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLWludmFsaWQtY29sb3I6ICAgICAgICAgICAgICAgICRmb3JtLWZlZWRiYWNrLWludmFsaWQtY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1pbnZhbGlkLWJvcmRlci1jb2xvcjogICAgICAgICAkZm9ybS1mZWVkYmFjay1pbnZhbGlkLWNvbG9yICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLXZhbGlkYXRpb24tY29sb3JzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXZhbGlkYXRpb24tc3RhdGVzXG4kZm9ybS12YWxpZGF0aW9uLXN0YXRlczogKFxuICBcInZhbGlkXCI6IChcbiAgICBcImNvbG9yXCI6IHZhcigtLSN7JHByZWZpeH1mb3JtLXZhbGlkLWNvbG9yKSxcbiAgICBcImljb25cIjogJGZvcm0tZmVlZGJhY2staWNvbi12YWxpZCxcbiAgICBcInRvb2x0aXAtY29sb3JcIjogI2ZmZixcbiAgICBcInRvb2x0aXAtYmctY29sb3JcIjogdmFyKC0tI3skcHJlZml4fXN1Y2Nlc3MpLFxuICAgIFwiZm9jdXMtYm94LXNoYWRvd1wiOiAwIDAgJGlucHV0LWJ0bi1mb2N1cy1ibHVyICRpbnB1dC1mb2N1cy13aWR0aCByZ2JhKHZhcigtLSN7JHByZWZpeH1zdWNjZXNzLXJnYiksICRpbnB1dC1idG4tZm9jdXMtY29sb3Itb3BhY2l0eSksXG4gICAgXCJib3JkZXItY29sb3JcIjogdmFyKC0tI3skcHJlZml4fWZvcm0tdmFsaWQtYm9yZGVyLWNvbG9yKSxcbiAgKSxcbiAgXCJpbnZhbGlkXCI6IChcbiAgICBcImNvbG9yXCI6IHZhcigtLSN7JHByZWZpeH1mb3JtLWludmFsaWQtY29sb3IpLFxuICAgIFwiaWNvblwiOiAkZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWQsXG4gICAgXCJ0b29sdGlwLWNvbG9yXCI6ICNmZmYsXG4gICAgXCJ0b29sdGlwLWJnLWNvbG9yXCI6IHZhcigtLSN7JHByZWZpeH1kYW5nZXIpLFxuICAgIFwiZm9jdXMtYm94LXNoYWRvd1wiOiAwIDAgJGlucHV0LWJ0bi1mb2N1cy1ibHVyICRpbnB1dC1mb2N1cy13aWR0aCByZ2JhKHZhcigtLSN7JHByZWZpeH1kYW5nZXItcmdiKSwgJGlucHV0LWJ0bi1mb2N1cy1jb2xvci1vcGFjaXR5KSxcbiAgICBcImJvcmRlci1jb2xvclwiOiB2YXIoLS0jeyRwcmVmaXh9Zm9ybS1pbnZhbGlkLWJvcmRlci1jb2xvciksXG4gIClcbikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZXNcblxuLy8gWi1pbmRleCBtYXN0ZXIgbGlzdFxuLy9cbi8vIFdhcm5pbmc6IEF2b2lkIGN1c3RvbWl6aW5nIHRoZXNlIHZhbHVlcy4gVGhleSdyZSB1c2VkIGZvciBhIGJpcmQncyBleWUgdmlld1xuLy8gb2YgY29tcG9uZW50cyBkZXBlbmRlbnQgb24gdGhlIHotYXhpcyBhbmQgYXJlIGRlc2lnbmVkIHRvIGFsbCB3b3JrIHRvZ2V0aGVyLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgemluZGV4LXN0YWNrXG4kemluZGV4LWRyb3Bkb3duOiAgICAgICAgICAgICAgICAgICAxMDAwICFkZWZhdWx0O1xuJHppbmRleC1zdGlja3k6ICAgICAgICAgICAgICAgICAgICAgMTAyMCAhZGVmYXVsdDtcbiR6aW5kZXgtZml4ZWQ6ICAgICAgICAgICAgICAgICAgICAgIDEwMzAgIWRlZmF1bHQ7XG4kemluZGV4LW9mZmNhbnZhcy1iYWNrZHJvcDogICAgICAgICAxMDQwICFkZWZhdWx0O1xuJHppbmRleC1vZmZjYW52YXM6ICAgICAgICAgICAgICAgICAgMTA0NSAhZGVmYXVsdDtcbiR6aW5kZXgtbW9kYWwtYmFja2Ryb3A6ICAgICAgICAgICAgIDEwNTAgIWRlZmF1bHQ7XG4kemluZGV4LW1vZGFsOiAgICAgICAgICAgICAgICAgICAgICAxMDU1ICFkZWZhdWx0O1xuJHppbmRleC1wb3BvdmVyOiAgICAgICAgICAgICAgICAgICAgMTA3MCAhZGVmYXVsdDtcbiR6aW5kZXgtdG9vbHRpcDogICAgICAgICAgICAgICAgICAgIDEwODAgIWRlZmF1bHQ7XG4kemluZGV4LXRvYXN0OiAgICAgICAgICAgICAgICAgICAgICAxMDkwICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCB6aW5kZXgtc3RhY2tcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHppbmRleC1sZXZlbHMtbWFwXG4kemluZGV4LWxldmVsczogKFxuICBuMTogLTEsXG4gIDA6IDAsXG4gIDE6IDEsXG4gIDI6IDIsXG4gIDM6IDNcbikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHppbmRleC1sZXZlbHMtbWFwXG5cblxuLy8gTmF2c1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgbmF2LXZhcmlhYmxlc1xuJG5hdi1saW5rLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kbmF2LWxpbmstcGFkZGluZy14OiAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJG5hdi1saW5rLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRuYXYtbGluay1mb250LXdlaWdodDogICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kbmF2LWxpbmstY29sb3I6ICAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9bGluay1jb2xvcikgIWRlZmF1bHQ7XG4kbmF2LWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9bGluay1ob3Zlci1jb2xvcikgIWRlZmF1bHQ7XG4kbmF2LWxpbmstdHJhbnNpdGlvbjogICAgICAgICAgICAgICBjb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1jb2xvcikgIWRlZmF1bHQ7XG4kbmF2LWxpbmstZm9jdXMtYm94LXNoYWRvdzogICAgICAgICAkZm9jdXMtcmluZy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuXG4kbmF2LXRhYnMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yKSAhZGVmYXVsdDtcbiRuYXYtdGFicy1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJG5hdi10YWJzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1yYWRpdXMpICFkZWZhdWx0O1xuJG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1iZykgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1iZykgJG5hdi10YWJzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1jb2xvcjogICAgICAgIHZhcigtLSN7JHByZWZpeH1lbXBoYXNpcy1jb2xvcikgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYmc6ICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1iZykgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yKSB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yKSAkbmF2LXRhYnMtbGluay1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRuYXYtcGlsbHMtYm9yZGVyLXJhZGl1czogICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzKSAhZGVmYXVsdDtcbiRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdi1waWxscy1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRuYXYtdW5kZXJsaW5lLWdhcDogICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kbmF2LXVuZGVybGluZS1ib3JkZXItd2lkdGg6ICAgICAgICAuMTI1cmVtICFkZWZhdWx0O1xuJG5hdi11bmRlcmxpbmUtbGluay1hY3RpdmUtY29sb3I6ICAgdmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgbmF2LXZhcmlhYmxlc1xuXG5cbi8vIE5hdmJhclxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgbmF2YmFyLXZhcmlhYmxlc1xuJG5hdmJhci1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgJHNwYWNlciAqIC41ICFkZWZhdWx0O1xuJG5hdmJhci1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJG5hdmJhci1uYXYtbGluay1wYWRkaW5nLXg6ICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRuYXZiYXItYnJhbmQtZm9udC1zaXplOiAgICAgICAgICAgICRmb250LXNpemUtbGcgIWRlZmF1bHQ7XG4vLyBDb21wdXRlIHRoZSBuYXZiYXItYnJhbmQgcGFkZGluZy15IHNvIHRoZSBuYXZiYXItYnJhbmQgd2lsbCBoYXZlIHRoZSBzYW1lIGhlaWdodCBhcyBuYXZiYXItdGV4dCBhbmQgbmF2LWxpbmtcbiRuYXYtbGluay1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqICRsaW5lLWhlaWdodC1iYXNlICsgJG5hdi1saW5rLXBhZGRpbmcteSAqIDIgIWRlZmF1bHQ7XG4kbmF2YmFyLWJyYW5kLWhlaWdodDogICAgICAgICAgICAgICAkbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZSAqICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xuJG5hdmJhci1icmFuZC1wYWRkaW5nLXk6ICAgICAgICAgICAgKCRuYXYtbGluay1oZWlnaHQgLSAkbmF2YmFyLWJyYW5kLWhlaWdodCkgKiAuNSAhZGVmYXVsdDtcbiRuYXZiYXItYnJhbmQtbWFyZ2luLWVuZDogICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG5cbiRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXk6ICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXg6ICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRuYXZiYXItdG9nZ2xlci1mb250LXNpemU6ICAgICAgICAgICRmb250LXNpemUtbGcgIWRlZmF1bHQ7XG4kbmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1czogICAgICAkYnRuLWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kbmF2YmFyLXRvZ2dsZXItZm9jdXMtd2lkdGg6ICAgICAgICAkYnRuLWZvY3VzLXdpZHRoICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLXRyYW5zaXRpb246ICAgICAgICAgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4kbmF2YmFyLWxpZ2h0LWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKHZhcigtLSN7JHByZWZpeH1lbXBoYXNpcy1jb2xvci1yZ2IpLCAuNjUpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1ob3Zlci1jb2xvcjogICAgICAgICAgcmdiYSh2YXIoLS0jeyRwcmVmaXh9ZW1waGFzaXMtY29sb3ItcmdiKSwgLjgpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I6ICAgICAgICAgcmdiYSh2YXIoLS0jeyRwcmVmaXh9ZW1waGFzaXMtY29sb3ItcmdiKSwgMSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LWRpc2FibGVkLWNvbG9yOiAgICAgICByZ2JhKHZhcigtLSN7JHByZWZpeH1lbXBoYXNpcy1jb2xvci1yZ2IpLCAuMykgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LWljb24tY29sb3I6ICAgICAgICAgICByZ2JhKCRib2R5LWNvbG9yLCAuNzUpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC10b2dnbGVyLWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzAgMzAnPjxwYXRoIHN0cm9rZT0nI3skbmF2YmFyLWxpZ2h0LWljb24tY29sb3J9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgc3Ryb2tlLXdpZHRoPScyJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtdG9nZ2xlci1ib3JkZXItY29sb3I6IHJnYmEodmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yLXJnYiksIC4xNSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LWJyYW5kLWNvbG9yOiAgICAgICAgICAkbmF2YmFyLWxpZ2h0LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtYnJhbmQtaG92ZXItY29sb3I6ICAgICRuYXZiYXItbGlnaHQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBuYXZiYXItdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBuYXZiYXItZGFyay12YXJpYWJsZXNcbiRuYXZiYXItZGFyay1jb2xvcjogICAgICAgICAgICAgICAgIHJnYmEoJHdoaXRlLCAuNTUpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWhvdmVyLWNvbG9yOiAgICAgICAgICAgcmdiYSgkd2hpdGUsIC43NSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yOiAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstZGlzYWJsZWQtY29sb3I6ICAgICAgICByZ2JhKCR3aGl0ZSwgLjI1KSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay1pY29uLWNvbG9yOiAgICAgICAgICAgICRuYXZiYXItZGFyay1jb2xvciAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay10b2dnbGVyLWljb24tYmc6ICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMwIDMwJz48cGF0aCBzdHJva2U9JyN7JG5hdmJhci1kYXJrLWljb24tY29sb3J9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgc3Ryb2tlLXdpZHRoPScyJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay10b2dnbGVyLWJvcmRlci1jb2xvcjogIHJnYmEoJHdoaXRlLCAuMSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstYnJhbmQtY29sb3I6ICAgICAgICAgICAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWJyYW5kLWhvdmVyLWNvbG9yOiAgICAgJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgbmF2YmFyLWRhcmstdmFyaWFibGVzXG5cblxuLy8gRHJvcGRvd25zXG4vL1xuLy8gRHJvcGRvd24gbWVudSBjb250YWluZXIgYW5kIGNvbnRlbnRzLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZHJvcGRvd24tdmFyaWFibGVzXG4kZHJvcGRvd24tbWluLXdpZHRoOiAgICAgICAgICAgICAgICAxMHJlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgIDAgIWRlZmF1bHQ7XG4kZHJvcGRvd24tcGFkZGluZy15OiAgICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1zcGFjZXI6ICAgICAgICAgICAgICAgICAgIC4xMjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XG4kZHJvcGRvd24tY29sb3I6ICAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1jb2xvcikgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYmc6ICAgICAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1iZykgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yLXRyYW5zbHVjZW50KSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzKSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWlubmVyLWJvcmRlci1yYWRpdXM6ICAgICAgY2FsYygjeyRkcm9wZG93bi1ib3JkZXItcmFkaXVzfSAtICN7JGRyb3Bkb3duLWJvcmRlci13aWR0aH0pICFkZWZhdWx0OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuJGRyb3Bkb3duLWRpdmlkZXItYmc6ICAgICAgICAgICAgICAgJGRyb3Bkb3duLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1kaXZpZGVyLW1hcmdpbi15OiAgICAgICAgICRzcGFjZXIgKiAuNSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3gtc2hhZG93KSAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstY29sb3I6ICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvZHktY29sb3IpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgJGRyb3Bkb3duLWxpbmstY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tbGluay1ob3Zlci1iZzogICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9dGVydGlhcnktYmcpICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I6ICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjogICAgICB2YXIoLS0jeyRwcmVmaXh9dGVydGlhcnktY29sb3IpICFkZWZhdWx0O1xuXG4kZHJvcGRvd24taXRlbS1wYWRkaW5nLXk6ICAgICAgICAgICAkc3BhY2VyICogLjI1ICFkZWZhdWx0O1xuJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy14OiAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWhlYWRlci1jb2xvcjogICAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXg6ICAgICAgICAgJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy14ICFkZWZhdWx0O1xuJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXk6ICAgICAgICAgJGRyb3Bkb3duLXBhZGRpbmcteSAhZGVmYXVsdDtcbi8vIGZ1c3YtZGlzYWJsZVxuJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nOiAgICAgICAgICAgJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXkgJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXggIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gdjUuMi4wXG4vLyBmdXN2LWVuYWJsZVxuLy8gc2Nzcy1kb2NzLWVuZCBkcm9wZG93bi12YXJpYWJsZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGRyb3Bkb3duLWRhcmstdmFyaWFibGVzXG4kZHJvcGRvd24tZGFyay1jb2xvcjogICAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG4kZHJvcGRvd24tZGFyay1iZzogICAgICAgICAgICAgICAgICAkZ3JheS04MDAgIWRlZmF1bHQ7XG4kZHJvcGRvd24tZGFyay1ib3JkZXItY29sb3I6ICAgICAgICAkZHJvcGRvd24tYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGRyb3Bkb3duLWRhcmstZGl2aWRlci1iZzogICAgICAgICAgJGRyb3Bkb3duLWRpdmlkZXItYmcgIWRlZmF1bHQ7XG4kZHJvcGRvd24tZGFyay1ib3gtc2hhZG93OiAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGRyb3Bkb3duLWRhcmstbGluay1jb2xvcjogICAgICAgICAgJGRyb3Bkb3duLWRhcmstY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tZGFyay1saW5rLWhvdmVyLWNvbG9yOiAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kZHJvcGRvd24tZGFyay1saW5rLWhvdmVyLWJnOiAgICAgICByZ2JhKCR3aGl0ZSwgLjE1KSAhZGVmYXVsdDtcbiRkcm9wZG93bi1kYXJrLWxpbmstYWN0aXZlLWNvbG9yOiAgICRkcm9wZG93bi1saW5rLWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1kYXJrLWxpbmstYWN0aXZlLWJnOiAgICAgICRkcm9wZG93bi1saW5rLWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRkcm9wZG93bi1kYXJrLWxpbmstZGlzYWJsZWQtY29sb3I6ICRncmF5LTUwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1kYXJrLWhlYWRlci1jb2xvcjogICAgICAgICRncmF5LTUwMCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgZHJvcGRvd24tZGFyay12YXJpYWJsZXNcblxuXG4vLyBQYWdpbmF0aW9uXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBwYWdpbmF0aW9uLXZhcmlhYmxlc1xuJHBhZ2luYXRpb24tcGFkZGluZy15OiAgICAgICAgICAgICAgLjM3NXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteDogICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteS1zbTogICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteC1zbTogICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy15LWxnOiAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14LWxnOiAgICAgICAgICAgMS41cmVtICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1mb250LXNpemU6ICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWNvbG9yOiAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWNvbG9yKSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJnOiAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWJnKSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci1yYWRpdXM6ICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzKSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci13aWR0aDogICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tbWFyZ2luLXN0YXJ0OiAgICAgICAgICAgY2FsYygjeyRwYWdpbmF0aW9uLWJvcmRlci13aWR0aH0gKiAtMSkgIWRlZmF1bHQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4kcGFnaW5hdGlvbi1ib3JkZXItY29sb3I6ICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yKSAhZGVmYXVsdDtcblxuJHBhZ2luYXRpb24tZm9jdXMtY29sb3I6ICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWxpbmstaG92ZXItY29sb3IpICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tZm9jdXMtYmc6ICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1iZykgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1mb2N1cy1ib3gtc2hhZG93OiAgICAgICAkZm9jdXMtcmluZy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tZm9jdXMtb3V0bGluZTogICAgICAgICAgMCAhZGVmYXVsdDtcblxuJHBhZ2luYXRpb24taG92ZXItY29sb3I6ICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWxpbmstaG92ZXItY29sb3IpICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYmc6ICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fXRlcnRpYXJ5LWJnKSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWhvdmVyLWJvcmRlci1jb2xvcjogICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItY29sb3IpICFkZWZhdWx0OyAvLyBUb2RvIGluIHY2OiByZW1vdmUgdGhpcz9cblxuJHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOiAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1hY3RpdmUtYmc6ICAgICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWFjdGl2ZS1ib3JkZXItY29sb3I6ICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjogICAgICAgICB2YXIoLS0jeyRwcmVmaXh9c2Vjb25kYXJ5LWNvbG9yKSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWRpc2FibGVkLWJnOiAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1zZWNvbmRhcnktYmcpICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvcikgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLXRyYW5zaXRpb246ICAgICAgICAgICAgICBjb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWJvcmRlci1yYWRpdXMtc206ICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLXNtKSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci1yYWRpdXMtbGc6ICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLWxnKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgcGFnaW5hdGlvbi12YXJpYWJsZXNcblxuXG4vLyBQbGFjZWhvbGRlcnNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHBsYWNlaG9sZGVyc1xuJHBsYWNlaG9sZGVyLW9wYWNpdHktbWF4OiAgICAgICAgICAgLjUgIWRlZmF1bHQ7XG4kcGxhY2Vob2xkZXItb3BhY2l0eS1taW46ICAgICAgICAgICAuMiAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgcGxhY2Vob2xkZXJzXG5cbi8vIENhcmRzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBjYXJkLXZhcmlhYmxlc1xuJGNhcmQtc3BhY2VyLXk6ICAgICAgICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcbiRjYXJkLXNwYWNlci14OiAgICAgICAgICAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG4kY2FyZC10aXRsZS1zcGFjZXIteTogICAgICAgICAgICAgICAkc3BhY2VyICogLjUgIWRlZmF1bHQ7XG4kY2FyZC10aXRsZS1jb2xvcjogICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGNhcmQtc3VidGl0bGUtY29sb3I6ICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRjYXJkLWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJGNhcmQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCkgIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cykgIWRlZmF1bHQ7XG4kY2FyZC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1czogICAgICAgICAgc3VidHJhY3QoJGNhcmQtYm9yZGVyLXJhZGl1cywgJGNhcmQtYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcbiRjYXJkLWNhcC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICRjYXJkLXNwYWNlci15ICogLjUgIWRlZmF1bHQ7XG4kY2FyZC1jYXAtcGFkZGluZy14OiAgICAgICAgICAgICAgICAkY2FyZC1zcGFjZXIteCAhZGVmYXVsdDtcbiRjYXJkLWNhcC1iZzogICAgICAgICAgICAgICAgICAgICAgIHJnYmEodmFyKC0tI3skcHJlZml4fWJvZHktY29sb3ItcmdiKSwgLjAzKSAhZGVmYXVsdDtcbiRjYXJkLWNhcC1jb2xvcjogICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kY2FyZC1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGNhcmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRjYXJkLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWJnKSAhZGVmYXVsdDtcbiRjYXJkLWltZy1vdmVybGF5LXBhZGRpbmc6ICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG4kY2FyZC1ncm91cC1tYXJnaW46ICAgICAgICAgICAgICAgICAkZ3JpZC1ndXR0ZXItd2lkdGggKiAuNSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgY2FyZC12YXJpYWJsZXNcblxuLy8gQWNjb3JkaW9uXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBhY2NvcmRpb24tdmFyaWFibGVzXG4kYWNjb3JkaW9uLXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGFjY29yZGlvbi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRhY2NvcmRpb24tY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWNvbG9yKSAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWJnKSAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJGFjY29yZGlvbi1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvcikgIWRlZmF1bHQ7XG4kYWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cykgIWRlZmF1bHQ7XG4kYWNjb3JkaW9uLWlubmVyLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICBzdWJ0cmFjdCgkYWNjb3JkaW9uLWJvcmRlci1yYWRpdXMsICRhY2NvcmRpb24tYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcblxuJGFjY29yZGlvbi1ib2R5LXBhZGRpbmcteTogICAgICAgICAgICAgICAgJGFjY29yZGlvbi1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kYWNjb3JkaW9uLWJvZHktcGFkZGluZy14OiAgICAgICAgICAgICAgICAkYWNjb3JkaW9uLXBhZGRpbmcteCAhZGVmYXVsdDtcblxuJGFjY29yZGlvbi1idXR0b24tcGFkZGluZy15OiAgICAgICAgICAgICAgJGFjY29yZGlvbi1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kYWNjb3JkaW9uLWJ1dHRvbi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAkYWNjb3JkaW9uLXBhZGRpbmcteCAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYnV0dG9uLWNvbG9yOiAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWNvbG9yKSAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYnV0dG9uLWJnOiAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYmcpICFkZWZhdWx0O1xuJGFjY29yZGlvbi10cmFuc2l0aW9uOiAgICAgICAgICAgICAgICAgICAgJGJ0bi10cmFuc2l0aW9uLCBib3JkZXItcmFkaXVzIC4xNXMgZWFzZSAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYnV0dG9uLWFjdGl2ZS1iZzogICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1wcmltYXJ5LWJnLXN1YnRsZSkgIWRlZmF1bHQ7XG4kYWNjb3JkaW9uLWJ1dHRvbi1hY3RpdmUtY29sb3I6ICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9cHJpbWFyeS10ZXh0LWVtcGhhc2lzKSAhZGVmYXVsdDtcblxuJGFjY29yZGlvbi1idXR0b24tZm9jdXMtYm9yZGVyLWNvbG9yOiAgICAgJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYnV0dG9uLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICRidG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcblxuJGFjY29yZGlvbi1pY29uLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRhY2NvcmRpb24taWNvbi1jb2xvcjogICAgICAgICAgICAgICAgICAgICRib2R5LWNvbG9yICFkZWZhdWx0O1xuJGFjY29yZGlvbi1pY29uLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICAgJHByaW1hcnktdGV4dC1lbXBoYXNpcyAhZGVmYXVsdDtcbiRhY2NvcmRpb24taWNvbi10cmFuc2l0aW9uOiAgICAgICAgICAgICAgIHRyYW5zZm9ybSAuMnMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG4kYWNjb3JkaW9uLWljb24tdHJhbnNmb3JtOiAgICAgICAgICAgICAgICByb3RhdGUoLTE4MGRlZykgIWRlZmF1bHQ7XG5cbiRhY2NvcmRpb24tYnV0dG9uLWljb246ICAgICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyN7JGFjY29yZGlvbi1pY29uLWNvbG9yfSc+PHBhdGggZmlsbC1ydWxlPSdldmVub2RkJyBkPSdNMS42NDYgNC42NDZhLjUuNSAwIDAgMSAuNzA4IDBMOCAxMC4yOTNsNS42NDYtNS42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOGwtNiA2YS41LjUgMCAwIDEtLjcwOCAwbC02LTZhLjUuNSAwIDAgMSAwLS43MDh6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJGFjY29yZGlvbi1idXR0b24tYWN0aXZlLWljb246ICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nI3skYWNjb3JkaW9uLWljb24tYWN0aXZlLWNvbG9yfSc+PHBhdGggZmlsbC1ydWxlPSdldmVub2RkJyBkPSdNMS42NDYgNC42NDZhLjUuNSAwIDAgMSAuNzA4IDBMOCAxMC4yOTNsNS42NDYtNS42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOGwtNiA2YS41LjUgMCAwIDEtLjcwOCAwbC02LTZhLjUuNSAwIDAgMSAwLS43MDh6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBhY2NvcmRpb24tdmFyaWFibGVzXG5cbi8vIFRvb2x0aXBzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCB0b29sdGlwLXZhcmlhYmxlc1xuJHRvb2x0aXAtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiR0b29sdGlwLW1heC13aWR0aDogICAgICAgICAgICAgICAgIDIwMHB4ICFkZWZhdWx0O1xuJHRvb2x0aXAtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvZHktYmcpICFkZWZhdWx0O1xuJHRvb2x0aXAtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yKSAhZGVmYXVsdDtcbiR0b29sdGlwLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzKSAhZGVmYXVsdDtcbiR0b29sdGlwLW9wYWNpdHk6ICAgICAgICAgICAgICAgICAgIC45ICFkZWZhdWx0O1xuJHRvb2x0aXAtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgJHNwYWNlciAqIC4yNSAhZGVmYXVsdDtcbiR0b29sdGlwLXBhZGRpbmcteDogICAgICAgICAgICAgICAgICRzcGFjZXIgKiAuNSAhZGVmYXVsdDtcbiR0b29sdGlwLW1hcmdpbjogICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7IC8vIFRPRE86IHJlbW92ZSB0aGlzIGluIHY2XG5cbiR0b29sdGlwLWFycm93LXdpZHRoOiAgICAgICAgICAgICAgIC44cmVtICFkZWZhdWx0O1xuJHRvb2x0aXAtYXJyb3ctaGVpZ2h0OiAgICAgICAgICAgICAgLjRyZW0gIWRlZmF1bHQ7XG4vLyBmdXN2LWRpc2FibGVcbiR0b29sdGlwLWFycm93LWNvbG9yOiAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gQm9vdHN0cmFwIDUuMi4wIGZvciBDU1MgdmFyaWFibGVzXG4vLyBmdXN2LWVuYWJsZVxuLy8gc2Nzcy1kb2NzLWVuZCB0b29sdGlwLXZhcmlhYmxlc1xuXG4vLyBGb3JtIHRvb2x0aXBzIG11c3QgY29tZSBhZnRlciByZWd1bGFyIHRvb2x0aXBzXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdG9vbHRpcC1mZWVkYmFjay12YXJpYWJsZXNcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtcGFkZGluZy15OiAgICAgJHRvb2x0aXAtcGFkZGluZy15ICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1wYWRkaW5nLXg6ICAgICAkdG9vbHRpcC1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay10b29sdGlwLWZvbnQtc2l6ZTogICAgICR0b29sdGlwLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtbGluZS1oZWlnaHQ6ICAgbnVsbCAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtb3BhY2l0eTogICAgICAgJHRvb2x0aXAtb3BhY2l0eSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtYm9yZGVyLXJhZGl1czogJHRvb2x0aXAtYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgdG9vbHRpcC1mZWVkYmFjay12YXJpYWJsZXNcblxuXG4vLyBQb3BvdmVyc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgcG9wb3Zlci12YXJpYWJsZXNcbiRwb3BvdmVyLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICRmb250LXNpemUtc20gIWRlZmF1bHQ7XG4kcG9wb3Zlci1iZzogICAgICAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1iZykgIWRlZmF1bHQ7XG4kcG9wb3Zlci1tYXgtd2lkdGg6ICAgICAgICAgICAgICAgICAyNzZweCAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvcmRlci13aWR0aDogICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJHBvcG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCkgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cy1sZykgIWRlZmF1bHQ7XG4kcG9wb3Zlci1pbm5lci1ib3JkZXItcmFkaXVzOiAgICAgICBjYWxjKCN7JHBvcG92ZXItYm9yZGVyLXJhZGl1c30gLSAjeyRwb3BvdmVyLWJvcmRlci13aWR0aH0pICFkZWZhdWx0OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuJHBvcG92ZXItYm94LXNoYWRvdzogICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJveC1zaGFkb3cpICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1oZWFkZXItZm9udC1zaXplOiAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XG4kcG9wb3Zlci1oZWFkZXItYmc6ICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9c2Vjb25kYXJ5LWJnKSAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1jb2xvcjogICAgICAgICAgICAgICRoZWFkaW5ncy1jb2xvciAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXk6ICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteDogICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcblxuJHBvcG92ZXItYm9keS1jb2xvcjogICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvZHktY29sb3IpICFkZWZhdWx0O1xuJHBvcG92ZXItYm9keS1wYWRkaW5nLXk6ICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvZHktcGFkZGluZy14OiAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG5cbiRwb3BvdmVyLWFycm93LXdpZHRoOiAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kcG9wb3Zlci1hcnJvdy1oZWlnaHQ6ICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgcG9wb3Zlci12YXJpYWJsZXNcblxuLy8gZnVzdi1kaXNhYmxlXG4vLyBEZXByZWNhdGVkIGluIEJvb3RzdHJhcCA1LjIuMCBmb3IgQ1NTIHZhcmlhYmxlc1xuJHBvcG92ZXItYXJyb3ctY29sb3I6ICAgICAgICAgICAgICAgJHBvcG92ZXItYmcgIWRlZmF1bHQ7XG4kcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjogICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yLXRyYW5zbHVjZW50KSAhZGVmYXVsdDtcbi8vIGZ1c3YtZW5hYmxlXG5cblxuLy8gVG9hc3RzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCB0b2FzdC12YXJpYWJsZXNcbiR0b2FzdC1tYXgtd2lkdGg6ICAgICAgICAgICAgICAgICAgIDM1MHB4ICFkZWZhdWx0O1xuJHRvYXN0LXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHRvYXN0LXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kdG9hc3QtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAuODc1cmVtICFkZWZhdWx0O1xuJHRvYXN0LWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiR0b2FzdC1iYWNrZ3JvdW5kLWNvbG9yOiAgICAgICAgICAgIHJnYmEodmFyKC0tI3skcHJlZml4fWJvZHktYmctcmdiKSwgLjg1KSAhZGVmYXVsdDtcbiR0b2FzdC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJHRvYXN0LWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCkgIWRlZmF1bHQ7XG4kdG9hc3QtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cykgIWRlZmF1bHQ7XG4kdG9hc3QtYm94LXNoYWRvdzogICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym94LXNoYWRvdykgIWRlZmF1bHQ7XG4kdG9hc3Qtc3BhY2luZzogICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLXBhZGRpbmcteCAhZGVmYXVsdDtcblxuJHRvYXN0LWhlYWRlci1jb2xvcjogICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1jb2xvcikgIWRlZmF1bHQ7XG4kdG9hc3QtaGVhZGVyLWJhY2tncm91bmQtY29sb3I6ICAgICByZ2JhKHZhcigtLSN7JHByZWZpeH1ib2R5LWJnLXJnYiksIC44NSkgIWRlZmF1bHQ7XG4kdG9hc3QtaGVhZGVyLWJvcmRlci1jb2xvcjogICAgICAgICAkdG9hc3QtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCB0b2FzdC12YXJpYWJsZXNcblxuXG4vLyBCYWRnZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJhZGdlLXZhcmlhYmxlc1xuJGJhZGdlLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgLjc1ZW0gIWRlZmF1bHQ7XG4kYmFkZ2UtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcbiRiYWRnZS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRiYWRnZS1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgIC4zNWVtICFkZWZhdWx0O1xuJGJhZGdlLXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAgLjY1ZW0gIWRlZmF1bHQ7XG4kYmFkZ2UtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cykgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGJhZGdlLXZhcmlhYmxlc1xuXG5cbi8vIE1vZGFsc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgbW9kYWwtdmFyaWFibGVzXG4kbW9kYWwtaW5uZXItcGFkZGluZzogICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuXG4kbW9kYWwtZm9vdGVyLW1hcmdpbi1iZXR3ZWVuOiAgICAgICAuNXJlbSAhZGVmYXVsdDtcblxuJG1vZGFsLWRpYWxvZy1tYXJnaW46ICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwOiAgICAgICAxLjc1cmVtICFkZWZhdWx0O1xuXG4kbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQ6ICAgICAgICAgICAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcblxuJG1vZGFsLWNvbnRlbnQtY29sb3I6ICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJnOiAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWJnKSAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJvcmRlci1jb2xvcjogICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItY29sb3ItdHJhbnNsdWNlbnQpICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoOiAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci13aWR0aCkgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1ib3JkZXItcmFkaXVzOiAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cy1sZykgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1pbm5lci1ib3JkZXItcmFkaXVzOiBzdWJ0cmFjdCgkbW9kYWwtY29udGVudC1ib3JkZXItcmFkaXVzLCAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy14czogICAgICAgdmFyKC0tI3skcHJlZml4fWJveC1zaGFkb3ctc20pICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy1zbS11cDogICAgdmFyKC0tI3skcHJlZml4fWJveC1zaGFkb3cpICFkZWZhdWx0O1xuXG4kbW9kYWwtYmFja2Ryb3AtYmc6ICAgICAgICAgICAgICAgICAkYmxhY2sgIWRlZmF1bHQ7XG4kbW9kYWwtYmFja2Ryb3Atb3BhY2l0eTogICAgICAgICAgICAuNSAhZGVmYXVsdDtcblxuJG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3I6ICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvcikgIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aDogICAgICAgICAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLXBhZGRpbmcteTogICAgICAgICAgICAkbW9kYWwtaW5uZXItcGFkZGluZyAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItcGFkZGluZy14OiAgICAgICAgICAgICRtb2RhbC1pbm5lci1wYWRkaW5nICFkZWZhdWx0O1xuJG1vZGFsLWhlYWRlci1wYWRkaW5nOiAgICAgICAgICAgICAgJG1vZGFsLWhlYWRlci1wYWRkaW5nLXkgJG1vZGFsLWhlYWRlci1wYWRkaW5nLXggIWRlZmF1bHQ7IC8vIEtlZXAgdGhpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuJG1vZGFsLWZvb3Rlci1iZzogICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRtb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICRtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJG1vZGFsLWZvb3Rlci1ib3JkZXItd2lkdGg6ICAgICAgICAgJG1vZGFsLWhlYWRlci1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG5cbiRtb2RhbC1zbTogICAgICAgICAgICAgICAgICAgICAgICAgIDMwMHB4ICFkZWZhdWx0O1xuJG1vZGFsLW1kOiAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwcHggIWRlZmF1bHQ7XG4kbW9kYWwtbGc6ICAgICAgICAgICAgICAgICAgICAgICAgICA4MDBweCAhZGVmYXVsdDtcbiRtb2RhbC14bDogICAgICAgICAgICAgICAgICAgICAgICAgIDExNDBweCAhZGVmYXVsdDtcblxuJG1vZGFsLWZhZGUtdHJhbnNmb3JtOiAgICAgICAgICAgICAgdHJhbnNsYXRlKDAsIC01MHB4KSAhZGVmYXVsdDtcbiRtb2RhbC1zaG93LXRyYW5zZm9ybTogICAgICAgICAgICAgIG5vbmUgIWRlZmF1bHQ7XG4kbW9kYWwtdHJhbnNpdGlvbjogICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0ICFkZWZhdWx0O1xuJG1vZGFsLXNjYWxlLXRyYW5zZm9ybTogICAgICAgICAgICAgc2NhbGUoMS4wMikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIG1vZGFsLXZhcmlhYmxlc1xuXG5cbi8vIEFsZXJ0c1xuLy9cbi8vIERlZmluZSBhbGVydCBjb2xvcnMsIGJvcmRlciByYWRpdXMsIGFuZCBwYWRkaW5nLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYWxlcnQtdmFyaWFibGVzXG4kYWxlcnQtcGFkZGluZy15OiAgICAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG4kYWxlcnQtcGFkZGluZy14OiAgICAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG4kYWxlcnQtbWFyZ2luLWJvdHRvbTogICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kYWxlcnQtYm9yZGVyLXJhZGl1czogICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzKSAhZGVmYXVsdDtcbiRhbGVydC1saW5rLWZvbnQtd2VpZ2h0OiAgICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG4kYWxlcnQtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJGFsZXJ0LWRpc21pc3NpYmxlLXBhZGRpbmctcjogICAkYWxlcnQtcGFkZGluZy14ICogMyAhZGVmYXVsdDsgLy8gM3ggY292ZXJzIHdpZHRoIG9mIHggcGx1cyBkZWZhdWx0IHBhZGRpbmcgb24gZWl0aGVyIHNpZGVcbi8vIHNjc3MtZG9jcy1lbmQgYWxlcnQtdmFyaWFibGVzXG5cbi8vIGZ1c3YtZGlzYWJsZVxuJGFsZXJ0LWJnLXNjYWxlOiAgICAgICAgICAgICAgICAtODAlICFkZWZhdWx0OyAvLyBEZXByZWNhdGVkIGluIHY1LjIuMCwgdG8gYmUgcmVtb3ZlZCBpbiB2NlxuJGFsZXJ0LWJvcmRlci1zY2FsZTogICAgICAgICAgICAtNzAlICFkZWZhdWx0OyAvLyBEZXByZWNhdGVkIGluIHY1LjIuMCwgdG8gYmUgcmVtb3ZlZCBpbiB2NlxuJGFsZXJ0LWNvbG9yLXNjYWxlOiAgICAgICAgICAgICA0MCUgIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gdjUuMi4wLCB0byBiZSByZW1vdmVkIGluIHY2XG4vLyBmdXN2LWVuYWJsZVxuXG4vLyBQcm9ncmVzcyBiYXJzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBwcm9ncmVzcy12YXJpYWJsZXNcbiRwcm9ncmVzcy1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAuNzUgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmc6ICAgICAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9c2Vjb25kYXJ5LWJnKSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzKSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1ib3gtc2hhZG93OiAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3gtc2hhZG93LWluc2V0KSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iYXItY29sb3I6ICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iYXItYmc6ICAgICAgICAgICAgICAgICAgICRwcmltYXJ5ICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1hbmltYXRpb24tdGltaW5nOiAgICAgMXMgbGluZWFyIGluZmluaXRlICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci10cmFuc2l0aW9uOiAgICAgICAgICAgd2lkdGggLjZzIGVhc2UgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHByb2dyZXNzLXZhcmlhYmxlc1xuXG5cbi8vIExpc3QgZ3JvdXBcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGxpc3QtZ3JvdXAtdmFyaWFibGVzXG4kbGlzdC1ncm91cC1jb2xvcjogICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1jb2xvcikgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1iZzogICAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1iZykgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItY29sb3I6ICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yKSAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDogICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1czogICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1yYWRpdXMpICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteTogICAgICAgICAkc3BhY2VyICogLjUgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteDogICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuLy8gZnVzdi1kaXNhYmxlXG4kbGlzdC1ncm91cC1pdGVtLWJnLXNjYWxlOiAgICAgICAgICAtODAlICFkZWZhdWx0OyAvLyBEZXByZWNhdGVkIGluIHY1LjMuMFxuJGxpc3QtZ3JvdXAtaXRlbS1jb2xvci1zY2FsZTogICAgICAgNDAlICFkZWZhdWx0OyAvLyBEZXByZWNhdGVkIGluIHY1LjMuMFxuLy8gZnVzdi1lbmFibGVcblxuJGxpc3QtZ3JvdXAtaG92ZXItYmc6ICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fXRlcnRpYXJ5LWJnKSAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aXZlLWJnOiAgICAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLWNvbG9yOiAgICAkbGlzdC1ncm91cC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWRpc2FibGVkLWNvbG9yOiAgICAgICAgIHZhcigtLSN7JHByZWZpeH1zZWNvbmRhcnktY29sb3IpICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtZGlzYWJsZWQtYmc6ICAgICAgICAgICAgJGxpc3QtZ3JvdXAtYmcgIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWFjdGlvbi1jb2xvcjogICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1zZWNvbmRhcnktY29sb3IpICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yOiAgICAgdmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yKSAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjogICAgdmFyKC0tI3skcHJlZml4fWJvZHktY29sb3IpICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1iZzogICAgICAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1iZykgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGxpc3QtZ3JvdXAtdmFyaWFibGVzXG5cblxuLy8gSW1hZ2UgdGh1bWJuYWlsc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdGh1bWJuYWlsLXZhcmlhYmxlc1xuJHRodW1ibmFpbC1wYWRkaW5nOiAgICAgICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHRodW1ibmFpbC1iZzogICAgICAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvZHktYmcpICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci13aWR0aCkgIWRlZmF1bHQ7XG4kdGh1bWJuYWlsLWJvcmRlci1jb2xvcjogICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yKSAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm9yZGVyLXJhZGl1czogICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzKSAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm94LXNoYWRvdzogICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3gtc2hhZG93LXNtKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgdGh1bWJuYWlsLXZhcmlhYmxlc1xuXG5cbi8vIEZpZ3VyZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGZpZ3VyZS12YXJpYWJsZXNcbiRmaWd1cmUtY2FwdGlvbi1mb250LXNpemU6ICAgICAgICAgICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XG4kZmlndXJlLWNhcHRpb24tY29sb3I6ICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9c2Vjb25kYXJ5LWNvbG9yKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgZmlndXJlLXZhcmlhYmxlc1xuXG5cbi8vIEJyZWFkY3J1bWJzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBicmVhZGNydW1iLXZhcmlhYmxlc1xuJGJyZWFkY3J1bWItZm9udC1zaXplOiAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLXBhZGRpbmcteTogICAgICAgICAgICAgIDAgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAwICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItaXRlbS1wYWRkaW5nLXg6ICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1tYXJnaW4tYm90dG9tOiAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItYmc6ICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWRpdmlkZXItY29sb3I6ICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1zZWNvbmRhcnktY29sb3IpICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yOiAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fXNlY29uZGFyeS1jb2xvcikgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1kaXZpZGVyOiAgICAgICAgICAgICAgICBxdW90ZShcIi9cIikgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1kaXZpZGVyLWZsaXBwZWQ6ICAgICAgICAkYnJlYWRjcnVtYi1kaXZpZGVyICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItYm9yZGVyLXJhZGl1czogICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgYnJlYWRjcnVtYi12YXJpYWJsZXNcblxuLy8gQ2Fyb3VzZWxcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNhcm91c2VsLXZhcmlhYmxlc1xuJGNhcm91c2VsLWNvbnRyb2wtY29sb3I6ICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLXdpZHRoOiAgICAgICAgICAgICAxNSUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1vcGFjaXR5OiAgICAgICAgICAgLjUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1ob3Zlci1vcGFjaXR5OiAgICAgLjkgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC10cmFuc2l0aW9uOiAgICAgICAgb3BhY2l0eSAuMTVzIGVhc2UgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1pbmRpY2F0b3Itd2lkdGg6ICAgICAgICAgICAzMHB4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1oZWlnaHQ6ICAgICAgICAgIDNweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItaGl0LWFyZWEtaGVpZ2h0OiAxMHB4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI6ICAgICAgICAgIDNweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3Itb3BhY2l0eTogICAgICAgICAuNSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtaW5kaWNhdG9yLWFjdGl2ZS1vcGFjaXR5OiAgMSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItdHJhbnNpdGlvbjogICAgICBvcGFjaXR5IC42cyBlYXNlICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY2FwdGlvbi13aWR0aDogICAgICAgICAgICAgNzAlICFkZWZhdWx0O1xuJGNhcm91c2VsLWNhcHRpb24tY29sb3I6ICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jYXB0aW9uLXBhZGRpbmcteTogICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGNhcm91c2VsLWNhcHRpb24tc3BhY2VyOiAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1jb250cm9sLWljb24td2lkdGg6ICAgICAgICAycmVtICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyN7JGNhcm91c2VsLWNvbnRyb2wtY29sb3J9Jz48cGF0aCBkPSdNMTEuMzU0IDEuNjQ2YS41LjUgMCAwIDEgMCAuNzA4TDUuNzA3IDhsNS42NDcgNS42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtNi02YS41LjUgMCAwIDEgMC0uNzA4bDYtNmEuNS41IDAgMCAxIC43MDggMHonLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyN7JGNhcm91c2VsLWNvbnRyb2wtY29sb3J9Jz48cGF0aCBkPSdNNC42NDYgMS42NDZhLjUuNSAwIDAgMSAuNzA4IDBsNiA2YS41LjUgMCAwIDEgMCAuNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTAuMjkzIDggNC42NDYgMi4zNTRhLjUuNSAwIDAgMSAwLS43MDh6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbjogICAgICAgLjZzICFkZWZhdWx0O1xuJGNhcm91c2VsLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAkY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbiBlYXNlLWluLW91dCAhZGVmYXVsdDsgLy8gRGVmaW5lIHRyYW5zZm9ybSB0cmFuc2l0aW9uIGZpcnN0IGlmIHVzaW5nIG11bHRpcGxlIHRyYW5zaXRpb25zIChlLmcuLCBgdHJhbnNmb3JtIDJzIGVhc2UsIG9wYWNpdHkgLjVzIGVhc2Utb3V0YClcbi8vIHNjc3MtZG9jcy1lbmQgY2Fyb3VzZWwtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBjYXJvdXNlbC1kYXJrLXZhcmlhYmxlc1xuJGNhcm91c2VsLWRhcmstaW5kaWNhdG9yLWFjdGl2ZS1iZzogICRibGFjayAhZGVmYXVsdDtcbiRjYXJvdXNlbC1kYXJrLWNhcHRpb24tY29sb3I6ICAgICAgICAkYmxhY2sgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtZGFyay1jb250cm9sLWljb24tZmlsdGVyOiAgaW52ZXJ0KDEpIGdyYXlzY2FsZSgxMDApICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBjYXJvdXNlbC1kYXJrLXZhcmlhYmxlc1xuXG5cbi8vIFNwaW5uZXJzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBzcGlubmVyLXZhcmlhYmxlc1xuJHNwaW5uZXItd2lkdGg6ICAgICAgICAgICAycmVtICFkZWZhdWx0O1xuJHNwaW5uZXItaGVpZ2h0OiAgICAgICAgICAkc3Bpbm5lci13aWR0aCAhZGVmYXVsdDtcbiRzcGlubmVyLXZlcnRpY2FsLWFsaWduOiAgLS4xMjVlbSAhZGVmYXVsdDtcbiRzcGlubmVyLWJvcmRlci13aWR0aDogICAgLjI1ZW0gIWRlZmF1bHQ7XG4kc3Bpbm5lci1hbmltYXRpb24tc3BlZWQ6IC43NXMgIWRlZmF1bHQ7XG5cbiRzcGlubmVyLXdpZHRoLXNtOiAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRzcGlubmVyLWhlaWdodC1zbTogICAgICAgJHNwaW5uZXItd2lkdGgtc20gIWRlZmF1bHQ7XG4kc3Bpbm5lci1ib3JkZXItd2lkdGgtc206IC4yZW0gIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHNwaW5uZXItdmFyaWFibGVzXG5cblxuLy8gQ2xvc2VcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNsb3NlLXZhcmlhYmxlc1xuJGJ0bi1jbG9zZS13aWR0aDogICAgICAgICAgICAxZW0gIWRlZmF1bHQ7XG4kYnRuLWNsb3NlLWhlaWdodDogICAgICAgICAgICRidG4tY2xvc2Utd2lkdGggIWRlZmF1bHQ7XG4kYnRuLWNsb3NlLXBhZGRpbmcteDogICAgICAgIC4yNWVtICFkZWZhdWx0O1xuJGJ0bi1jbG9zZS1wYWRkaW5nLXk6ICAgICAgICAkYnRuLWNsb3NlLXBhZGRpbmcteCAhZGVmYXVsdDtcbiRidG4tY2xvc2UtY29sb3I6ICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJGJ0bi1jbG9zZS1iZzogICAgICAgICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nI3skYnRuLWNsb3NlLWNvbG9yfSc+PHBhdGggZD0nTS4yOTMuMjkzYTEgMSAwIDAgMSAxLjQxNCAwTDggNi41ODYgMTQuMjkzLjI5M2ExIDEgMCAxIDEgMS40MTQgMS40MTRMOS40MTQgOGw2LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQgMS40MTRMOCA5LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0TDYuNTg2IDggLjI5MyAxLjcwN2ExIDEgMCAwIDEgMC0xLjQxNHonLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kYnRuLWNsb3NlLWZvY3VzLXNoYWRvdzogICAgICRmb2N1cy1yaW5nLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kYnRuLWNsb3NlLW9wYWNpdHk6ICAgICAgICAgIC41ICFkZWZhdWx0O1xuJGJ0bi1jbG9zZS1ob3Zlci1vcGFjaXR5OiAgICAuNzUgIWRlZmF1bHQ7XG4kYnRuLWNsb3NlLWZvY3VzLW9wYWNpdHk6ICAgIDEgIWRlZmF1bHQ7XG4kYnRuLWNsb3NlLWRpc2FibGVkLW9wYWNpdHk6IC4yNSAhZGVmYXVsdDtcbiRidG4tY2xvc2Utd2hpdGUtZmlsdGVyOiAgICAgaW52ZXJ0KDEpIGdyYXlzY2FsZSgxMDAlKSBicmlnaHRuZXNzKDIwMCUpICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBjbG9zZS12YXJpYWJsZXNcblxuXG4vLyBPZmZjYW52YXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IG9mZmNhbnZhcy12YXJpYWJsZXNcbiRvZmZjYW52YXMtcGFkZGluZy15OiAgICAgICAgICAgICAgICRtb2RhbC1pbm5lci1wYWRkaW5nICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgJG1vZGFsLWlubmVyLXBhZGRpbmcgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWhvcml6b250YWwtd2lkdGg6ICAgICAgICA0MDBweCAhZGVmYXVsdDtcbiRvZmZjYW52YXMtdmVydGljYWwtaGVpZ2h0OiAgICAgICAgIDMwdmggIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLXRyYW5zaXRpb24tZHVyYXRpb246ICAgICAuM3MgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWJvcmRlci1jb2xvcjogICAgICAgICAgICAkbW9kYWwtY29udGVudC1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWJvcmRlci13aWR0aDogICAgICAgICAgICAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLXRpdGxlLWxpbmUtaGVpZ2h0OiAgICAgICAkbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWJnLWNvbG9yOiAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1iZykgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWNvbG9yOiAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1jb2xvcikgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAkbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXhzICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1iYWNrZHJvcC1iZzogICAgICAgICAgICAgJG1vZGFsLWJhY2tkcm9wLWJnICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1iYWNrZHJvcC1vcGFjaXR5OiAgICAgICAgJG1vZGFsLWJhY2tkcm9wLW9wYWNpdHkgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIG9mZmNhbnZhcy12YXJpYWJsZXNcblxuLy8gQ29kZVxuXG4kY29kZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xuJGNvZGUtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgJHBpbmsgIWRlZmF1bHQ7XG5cbiRrYmQtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAgIC4xODc1cmVtICFkZWZhdWx0O1xuJGtiZC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgICAgLjM3NXJlbSAhZGVmYXVsdDtcbiRrYmQtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgICRjb2RlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRrYmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWJnKSAhZGVmYXVsdDtcbiRrYmQtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWNvbG9yKSAhZGVmYXVsdDtcbiRuZXN0ZWQta2JkLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gdjUuMi4wLCByZW1vdmluZyBpbiB2NlxuXG4kcHJlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgcHJvcGVydHktZGlzYWxsb3dlZC1saXN0XG4vLyBTaW5nbGUgc2lkZSBib3JkZXItcmFkaXVzXG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXBsYWNlIG5lZ2F0aXZlIHZhbHVlcyB3aXRoIDBcbkBmdW5jdGlvbiB2YWxpZC1yYWRpdXMoJHJhZGl1cykge1xuICAkcmV0dXJuOiAoKTtcbiAgQGVhY2ggJHZhbHVlIGluICRyYWRpdXMge1xuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbnVtYmVyIHtcbiAgICAgICRyZXR1cm46IGFwcGVuZCgkcmV0dXJuLCBtYXgoJHZhbHVlLCAwKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBhcHBlbmQoJHJldHVybiwgJHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYm9yZGVyLXJhZGl1cy1taXhpbnNcbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzLCAkZmFsbGJhY2stYm9yZGVyLXJhZGl1czogZmFsc2UpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICB9XG4gIEBlbHNlIGlmICRmYWxsYmFjay1ib3JkZXItcmFkaXVzICE9IGZhbHNlIHtcbiAgICBib3JkZXItcmFkaXVzOiAkZmFsbGJhY2stYm9yZGVyLXJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1lbmQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1zdGFydC1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1zdGFydC1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItdG9wLWVuZC1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1lbmQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tc3RhcnQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgfVxufVxuLy8gc2Nzcy1kb2NzLWVuZCBib3JkZXItcmFkaXVzLW1peGluc1xuIiwiLy9cbi8vIEhlYWRpbmdzXG4vL1xuLmgxIHtcbiAgQGV4dGVuZCBoMTtcbn1cblxuLmgyIHtcbiAgQGV4dGVuZCBoMjtcbn1cblxuLmgzIHtcbiAgQGV4dGVuZCBoMztcbn1cblxuLmg0IHtcbiAgQGV4dGVuZCBoNDtcbn1cblxuLmg1IHtcbiAgQGV4dGVuZCBoNTtcbn1cblxuLmg2IHtcbiAgQGV4dGVuZCBoNjtcbn1cblxuXG4ubGVhZCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkbGVhZC1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGxlYWQtZm9udC13ZWlnaHQ7XG59XG5cbi8vIFR5cGUgZGlzcGxheSBjbGFzc2VzXG5AZWFjaCAkZGlzcGxheSwgJGZvbnQtc2l6ZSBpbiAkZGlzcGxheS1mb250LXNpemVzIHtcbiAgLmRpc3BsYXktI3skZGlzcGxheX0ge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplKTtcbiAgICBmb250LWZhbWlseTogJGRpc3BsYXktZm9udC1mYW1pbHk7XG4gICAgZm9udC1zdHlsZTogJGRpc3BsYXktZm9udC1zdHlsZTtcbiAgICBmb250LXdlaWdodDogJGRpc3BsYXktZm9udC13ZWlnaHQ7XG4gICAgbGluZS1oZWlnaHQ6ICRkaXNwbGF5LWxpbmUtaGVpZ2h0O1xuICB9XG59XG5cbi8vXG4vLyBFbXBoYXNpc1xuLy9cbi5zbWFsbCB7XG4gIEBleHRlbmQgc21hbGw7XG59XG5cbi5tYXJrIHtcbiAgQGV4dGVuZCBtYXJrO1xufVxuXG4vL1xuLy8gTGlzdHNcbi8vXG5cbi5saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgbGlzdC11bnN0eWxlZCgpO1xufVxuXG4vLyBJbmxpbmUgdHVybnMgbGlzdCBpdGVtcyBpbnRvIGlubGluZS1ibG9ja1xuLmxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgbGlzdC11bnN0eWxlZCgpO1xufVxuLmxpc3QtaW5saW5lLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRsaXN0LWlubGluZS1wYWRkaW5nO1xuICB9XG59XG5cblxuLy9cbi8vIE1pc2Ncbi8vXG5cbi8vIEJ1aWxkcyBvbiBgYWJicmBcbi5pbml0aWFsaXNtIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbml0aWFsaXNtLWZvbnQtc2l6ZSk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8vIEJsb2NrcXVvdGVzXG4uYmxvY2txdW90ZSB7XG4gIG1hcmdpbi1ib3R0b206ICRibG9ja3F1b3RlLW1hcmdpbi15O1xuICBAaW5jbHVkZSBmb250LXNpemUoJGJsb2NrcXVvdGUtZm9udC1zaXplKTtcblxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi5ibG9ja3F1b3RlLWZvb3RlciB7XG4gIG1hcmdpbi10b3A6IC0kYmxvY2txdW90ZS1tYXJnaW4teTtcbiAgbWFyZ2luLWJvdHRvbTogJGJsb2NrcXVvdGUtbWFyZ2luLXk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYmxvY2txdW90ZS1mb290ZXItZm9udC1zaXplKTtcbiAgY29sb3I6ICRibG9ja3F1b3RlLWZvb3Rlci1jb2xvcjtcblxuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDE0XFwwMEEwXCI7IC8vIGVtIGRhc2gsIG5ic3BcbiAgfVxufVxuIiwiLy8gTGlzdHNcblxuLy8gVW5zdHlsZWQga2VlcHMgbGlzdCBpdGVtcyBibG9jayBsZXZlbCwganVzdCByZW1vdmVzIGRlZmF1bHQgYnJvd3NlciBwYWRkaW5nIGFuZCBsaXN0LXN0eWxlXG5AbWl4aW4gbGlzdC11bnN0eWxlZCB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbiIsIi8vIFJlc3BvbnNpdmUgaW1hZ2VzIChlbnN1cmUgaW1hZ2VzIGRvbid0IHNjYWxlIGJleW9uZCB0aGVpciBwYXJlbnRzKVxuLy9cbi8vIFRoaXMgaXMgcHVycG9zZWZ1bGx5IG9wdC1pbiB2aWEgYW4gZXhwbGljaXQgY2xhc3MgcmF0aGVyIHRoYW4gYmVpbmcgdGhlIGRlZmF1bHQgZm9yIGFsbCBgPGltZz5gcy5cbi8vIFdlIHByZXZpb3VzbHkgdHJpZWQgdGhlIFwiaW1hZ2VzIGFyZSByZXNwb25zaXZlIGJ5IGRlZmF1bHRcIiBhcHByb2FjaCBpbiBCb290c3RyYXAgdjIsXG4vLyBhbmQgYWJhbmRvbmVkIGl0IGluIEJvb3RzdHJhcCB2MyBiZWNhdXNlIGl0IGJyZWFrcyBsb3RzIG9mIHRoaXJkLXBhcnR5IHdpZGdldHMgKGluY2x1ZGluZyBHb29nbGUgTWFwcylcbi8vIHdoaWNoIHdlcmVuJ3QgZXhwZWN0aW5nIHRoZSBpbWFnZXMgd2l0aGluIHRoZW1zZWx2ZXMgdG8gYmUgaW52b2x1bnRhcmlseSByZXNpemVkLlxuLy8gU2VlIGFsc28gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xODE3OFxuLmltZy1mbHVpZCB7XG4gIEBpbmNsdWRlIGltZy1mbHVpZCgpO1xufVxuXG5cbi8vIEltYWdlIHRodW1ibmFpbHNcbi5pbWctdGh1bWJuYWlsIHtcbiAgcGFkZGluZzogJHRodW1ibmFpbC1wYWRkaW5nO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGh1bWJuYWlsLWJnO1xuICBib3JkZXI6ICR0aHVtYm5haWwtYm9yZGVyLXdpZHRoIHNvbGlkICR0aHVtYm5haWwtYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCR0aHVtYm5haWwtYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJHRodW1ibmFpbC1ib3gtc2hhZG93KTtcblxuICAvLyBLZWVwIHRoZW0gYXQgbW9zdCAxMDAlIHdpZGVcbiAgQGluY2x1ZGUgaW1nLWZsdWlkKCk7XG59XG5cbi8vXG4vLyBGaWd1cmVzXG4vL1xuXG4uZmlndXJlIHtcbiAgLy8gRW5zdXJlcyB0aGUgY2FwdGlvbidzIHRleHQgYWxpZ25zIHdpdGggdGhlIGltYWdlLlxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5maWd1cmUtaW1nIHtcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNlciAqIC41O1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLmZpZ3VyZS1jYXB0aW9uIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmaWd1cmUtY2FwdGlvbi1mb250LXNpemUpO1xuICBjb2xvcjogJGZpZ3VyZS1jYXB0aW9uLWNvbG9yO1xufVxuIiwiLy8gSW1hZ2UgTWl4aW5zXG4vLyAtIFJlc3BvbnNpdmUgaW1hZ2Vcbi8vIC0gUmV0aW5hIGltYWdlXG5cblxuLy8gUmVzcG9uc2l2ZSBpbWFnZVxuLy9cbi8vIEtlZXAgaW1hZ2VzIGZyb20gc2NhbGluZyBiZXlvbmQgdGhlIHdpZHRoIG9mIHRoZWlyIHBhcmVudHMuXG5cbkBtaXhpbiBpbWctZmx1aWQge1xuICAvLyBQYXJ0IDE6IFNldCBhIG1heGltdW0gcmVsYXRpdmUgdG8gdGhlIHBhcmVudFxuICBtYXgtd2lkdGg6IDEwMCU7XG4gIC8vIFBhcnQgMjogT3ZlcnJpZGUgdGhlIGhlaWdodCB0byBhdXRvLCBvdGhlcndpc2UgaW1hZ2VzIHdpbGwgYmUgc3RyZXRjaGVkXG4gIC8vIHdoZW4gc2V0dGluZyBhIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlIG9uIHRoZSBpbWcgZWxlbWVudC5cbiAgaGVpZ2h0OiBhdXRvO1xufVxuIiwiLy8gQ29udGFpbmVyIHdpZHRoc1xuLy9cbi8vIFNldCB0aGUgY29udGFpbmVyIHdpZHRoLCBhbmQgb3ZlcnJpZGUgaXQgZm9yIGZpeGVkIG5hdmJhcnMgaW4gbWVkaWEgcXVlcmllcy5cblxuQGlmICRlbmFibGUtY29udGFpbmVyLWNsYXNzZXMge1xuICAvLyBTaW5nbGUgY29udGFpbmVyIGNsYXNzIHdpdGggYnJlYWtwb2ludCBtYXgtd2lkdGhzXG4gIC5jb250YWluZXIsXG4gIC8vIDEwMCUgd2lkZSBjb250YWluZXIgYXQgYWxsIGJyZWFrcG9pbnRzXG4gIC5jb250YWluZXItZmx1aWQge1xuICAgIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyKCk7XG4gIH1cblxuICAvLyBSZXNwb25zaXZlIGNvbnRhaW5lcnMgdGhhdCBhcmUgMTAwJSB3aWRlIHVudGlsIGEgYnJlYWtwb2ludFxuICBAZWFjaCAkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJGNvbnRhaW5lci1tYXgtd2lkdGhzIHtcbiAgICAuY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgIEBleHRlbmQgLmNvbnRhaW5lci1mbHVpZDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cykge1xuICAgICAgJXJlc3BvbnNpdmUtY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgICAgbWF4LXdpZHRoOiAkY29udGFpbmVyLW1heC13aWR0aDtcbiAgICAgIH1cblxuICAgICAgLy8gRXh0ZW5kIGVhY2ggYnJlYWtwb2ludCB3aGljaCBpcyBzbWFsbGVyIG9yIGVxdWFsIHRvIHRoZSBjdXJyZW50IGJyZWFrcG9pbnRcbiAgICAgICRleHRlbmQtYnJlYWtwb2ludDogdHJ1ZTtcblxuICAgICAgQGVhY2ggJG5hbWUsICR3aWR0aCBpbiAkZ3JpZC1icmVha3BvaW50cyB7XG4gICAgICAgIEBpZiAoJGV4dGVuZC1icmVha3BvaW50KSB7XG4gICAgICAgICAgLmNvbnRhaW5lciN7YnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGdyaWQtYnJlYWtwb2ludHMpfSB7XG4gICAgICAgICAgICBAZXh0ZW5kICVyZXNwb25zaXZlLWNvbnRhaW5lci0jeyRicmVha3BvaW50fTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBPbmNlIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgaXMgcmVhY2hlZCwgc3RvcCBleHRlbmRpbmdcbiAgICAgICAgICBAaWYgKCRicmVha3BvaW50ID09ICRuYW1lKSB7XG4gICAgICAgICAgICAkZXh0ZW5kLWJyZWFrcG9pbnQ6IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQ29udGFpbmVyIG1peGluc1xuXG5AbWl4aW4gbWFrZS1jb250YWluZXIoJGd1dHRlcjogJGNvbnRhaW5lci1wYWRkaW5nLXgpIHtcbiAgLS0jeyRwcmVmaXh9Z3V0dGVyLXg6ICN7JGd1dHRlcn07XG4gIC0tI3skcHJlZml4fWd1dHRlci15OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS0jeyRwcmVmaXh9Z3V0dGVyLXgpICogLjUpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tI3skcHJlZml4fWd1dHRlci14KSAqIC41KTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsIHh4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEBpZiBub3QgJG4ge1xuICAgIEBlcnJvciBcImJyZWFrcG9pbnQgYCN7JG5hbWV9YCBub3QgZm91bmQgaW4gYCN7JGJyZWFrcG9pbnRzfWBcIjtcbiAgfVxuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyByZWR1Y2VkIGJ5IDAuMDJweCB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2Zcbi8vIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgobWQsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtYXggYW5kICRtYXggPiAwLCAkbWF4IC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiLXNtXCJcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXggYnJlYWtwb2ludHNcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkdXBwZXIsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiAgYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6ICBicmVha3BvaW50LW1heCgkbmV4dCwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3dcbi8vXG4vLyBSb3dzIGNvbnRhaW4geW91ciBjb2x1bW5zLlxuXG46cm9vdCB7XG4gIEBlYWNoICRuYW1lLCAkdmFsdWUgaW4gJGdyaWQtYnJlYWtwb2ludHMge1xuICAgIC0tI3skcHJlZml4fWJyZWFrcG9pbnQtI3skbmFtZX06ICN7JHZhbHVlfTtcbiAgfVxufVxuXG5AaWYgJGVuYWJsZS1ncmlkLWNsYXNzZXMge1xuICAucm93IHtcbiAgICBAaW5jbHVkZSBtYWtlLXJvdygpO1xuXG4gICAgPiAqIHtcbiAgICAgIEBpbmNsdWRlIG1ha2UtY29sLXJlYWR5KCk7XG4gICAgfVxuICB9XG59XG5cbkBpZiAkZW5hYmxlLWNzc2dyaWQge1xuICAuZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCh2YXIoLS0jeyRwcmVmaXh9cm93cywgMSksIDFmcik7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQodmFyKC0tI3skcHJlZml4fWNvbHVtbnMsICN7JGdyaWQtY29sdW1uc30pLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tI3skcHJlZml4fWdhcCwgI3skZ3JpZC1ndXR0ZXItd2lkdGh9KTtcblxuICAgIEBpbmNsdWRlIG1ha2UtY3NzZ3JpZCgpO1xuICB9XG59XG5cblxuLy8gQ29sdW1uc1xuLy9cbi8vIENvbW1vbiBzdHlsZXMgZm9yIHNtYWxsIGFuZCBsYXJnZSBncmlkIGNvbHVtbnNcblxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcbiAgQGluY2x1ZGUgbWFrZS1ncmlkLWNvbHVtbnMoKTtcbn1cbiIsIi8vIEdyaWQgc3lzdGVtXG4vL1xuLy8gR2VuZXJhdGUgc2VtYW50aWMgZ3JpZCBjb2x1bW5zIHdpdGggdGhlc2UgbWl4aW5zLlxuXG5AbWl4aW4gbWFrZS1yb3coJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoKSB7XG4gIC0tI3skcHJlZml4fWd1dHRlci14OiAjeyRndXR0ZXJ9O1xuICAtLSN7JHByZWZpeH1ndXR0ZXIteTogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICAvLyBUT0RPOiBSZXZpc2l0IGNhbGMgb3JkZXIgYWZ0ZXIgaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzYwMzkgaXMgZml4ZWRcbiAgbWFyZ2luLXRvcDogY2FsYygtMSAqIHZhcigtLSN7JHByZWZpeH1ndXR0ZXIteSkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fWd1dHRlci14KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gIG1hcmdpbi1sZWZ0OiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH1ndXR0ZXIteCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxufVxuXG5AbWl4aW4gbWFrZS1jb2wtcmVhZHkoKSB7XG4gIC8vIEFkZCBib3ggc2l6aW5nIGlmIG9ubHkgdGhlIGdyaWQgaXMgbG9hZGVkXG4gIGJveC1zaXppbmc6IGlmKHZhcmlhYmxlLWV4aXN0cyhpbmNsdWRlLWNvbHVtbi1ib3gtc2l6aW5nKSBhbmQgJGluY2x1ZGUtY29sdW1uLWJveC1zaXppbmcsIGJvcmRlci1ib3gsIG51bGwpO1xuICAvLyBQcmV2ZW50IGNvbHVtbnMgZnJvbSBiZWNvbWluZyB0b28gbmFycm93IHdoZW4gYXQgc21hbGxlciBncmlkIHRpZXJzIGJ5XG4gIC8vIGFsd2F5cyBzZXR0aW5nIGB3aWR0aDogMTAwJTtgLiBUaGlzIHdvcmtzIGJlY2F1c2Ugd2Ugc2V0IHRoZSB3aWR0aFxuICAvLyBsYXRlciBvbiB0byBvdmVycmlkZSB0aGlzIGluaXRpYWwgd2lkdGguXG4gIGZsZXgtc2hyaW5rOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlOyAvLyBQcmV2ZW50IGAuY29sLWF1dG9gLCBgLmNvbGAgKCYgcmVzcG9uc2l2ZSB2YXJpYW50cykgZnJvbSBicmVha2luZyBvdXQgdGhlIGdyaWRcbiAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS0jeyRwcmVmaXh9Z3V0dGVyLXgpICogLjUpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tI3skcHJlZml4fWd1dHRlci14KSAqIC41KTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgbWFyZ2luLXRvcDogdmFyKC0tI3skcHJlZml4fWd1dHRlci15KTtcbn1cblxuQG1peGluIG1ha2UtY29sKCRzaXplOiBmYWxzZSwgJGNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgQGlmICRzaXplIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogcGVyY2VudGFnZShkaXZpZGUoJHNpemUsICRjb2x1bW5zKSk7XG5cbiAgfSBAZWxzZSB7XG4gICAgZmxleDogMSAxIDA7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG59XG5cbkBtaXhpbiBtYWtlLWNvbC1hdXRvKCkge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgd2lkdGg6IGF1dG87XG59XG5cbkBtaXhpbiBtYWtlLWNvbC1vZmZzZXQoJHNpemUsICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gICRudW06IGRpdmlkZSgkc2l6ZSwgJGNvbHVtbnMpO1xuICBtYXJnaW4tbGVmdDogaWYoJG51bSA9PSAwLCAwLCBwZXJjZW50YWdlKCRudW0pKTtcbn1cblxuLy8gUm93IGNvbHVtbnNcbi8vXG4vLyBTcGVjaWZ5IG9uIGEgcGFyZW50IGVsZW1lbnQoZS5nLiwgLnJvdykgdG8gZm9yY2UgaW1tZWRpYXRlIGNoaWxkcmVuIGludG8gTk5cbi8vIG51bWJlciBvZiBjb2x1bW5zLiBTdXBwb3J0cyB3cmFwcGluZyB0byBuZXcgbGluZXMsIGJ1dCBkb2VzIG5vdCBkbyBhIE1hc29ucnlcbi8vIHN0eWxlIGdyaWQuXG5AbWl4aW4gcm93LWNvbHMoJGNvdW50KSB7XG4gID4gKiB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoZGl2aWRlKDEsICRjb3VudCkpO1xuICB9XG59XG5cbi8vIEZyYW1ld29yayBncmlkIGdlbmVyYXRpb25cbi8vXG4vLyBVc2VkIG9ubHkgYnkgQm9vdHN0cmFwIHRvIGdlbmVyYXRlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBncmlkIGNsYXNzZXMgZ2l2ZW5cbi8vIGFueSB2YWx1ZSBvZiBgJGdyaWQtY29sdW1uc2AuXG5cbkBtaXhpbiBtYWtlLWdyaWQtY29sdW1ucygkY29sdW1uczogJGdyaWQtY29sdW1ucywgJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRicmVha3BvaW50cykge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cykge1xuICAgICAgLy8gUHJvdmlkZSBiYXNpYyBgLmNvbC17YnB9YCBjbGFzc2VzIGZvciBlcXVhbC13aWR0aCBmbGV4Ym94IGNvbHVtbnNcbiAgICAgIC5jb2wjeyRpbmZpeH0ge1xuICAgICAgICBmbGV4OiAxIDAgMCU7IC8vIEZsZXhidWdzICM0OiBodHRwczovL2dpdGh1Yi5jb20vcGhpbGlwd2FsdG9uL2ZsZXhidWdzI2ZsZXhidWctNFxuICAgICAgfVxuXG4gICAgICAucm93LWNvbHMjeyRpbmZpeH0tYXV0byA+ICoge1xuICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1hdXRvKCk7XG4gICAgICB9XG5cbiAgICAgIEBpZiAkZ3JpZC1yb3ctY29sdW1ucyA+IDAge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLXJvdy1jb2x1bW5zIHtcbiAgICAgICAgICAucm93LWNvbHMjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgcm93LWNvbHMoJGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY29sI3skaW5maXh9LWF1dG8ge1xuICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1hdXRvKCk7XG4gICAgICB9XG5cbiAgICAgIEBpZiAkY29sdW1ucyA+IDAge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb2x1bW5zIHtcbiAgICAgICAgICAuY29sI3skaW5maXh9LSN7JGl9IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1ha2UtY29sKCRpLCAkY29sdW1ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gYCRjb2x1bW5zIC0gMWAgYmVjYXVzZSBvZmZzZXR0aW5nIGJ5IHRoZSB3aWR0aCBvZiBhbiBlbnRpcmUgcm93IGlzbid0IHBvc3NpYmxlXG4gICAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggKCRjb2x1bW5zIC0gMSkge1xuICAgICAgICAgIEBpZiBub3QgKCRpbmZpeCA9PSBcIlwiIGFuZCAkaSA9PSAwKSB7IC8vIEF2b2lkIGVtaXR0aW5nIHVzZWxlc3MgLm9mZnNldC0wXG4gICAgICAgICAgICAub2Zmc2V0I3skaW5maXh9LSN7JGl9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbWFrZS1jb2wtb2Zmc2V0KCRpLCAkY29sdW1ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEd1dHRlcnNcbiAgICAgIC8vXG4gICAgICAvLyBNYWtlIHVzZSBvZiBgLmctKmAsIGAuZ3gtKmAgb3IgYC5neS0qYCB1dGlsaXRpZXMgdG8gY2hhbmdlIHNwYWNpbmcgYmV0d2VlbiB0aGUgY29sdW1ucy5cbiAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkZ3V0dGVycyB7XG4gICAgICAgIC5nI3skaW5maXh9LSN7JGtleX0sXG4gICAgICAgIC5neCN7JGluZml4fS0jeyRrZXl9IHtcbiAgICAgICAgICAtLSN7JHByZWZpeH1ndXR0ZXIteDogI3skdmFsdWV9O1xuICAgICAgICB9XG5cbiAgICAgICAgLmcjeyRpbmZpeH0tI3ska2V5fSxcbiAgICAgICAgLmd5I3skaW5maXh9LSN7JGtleX0ge1xuICAgICAgICAgIC0tI3skcHJlZml4fWd1dHRlci15OiAjeyR2YWx1ZX07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1ha2UtY3NzZ3JpZCgkY29sdW1uczogJGdyaWQtY29sdW1ucywgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkYnJlYWtwb2ludHMpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBpZiAkY29sdW1ucyA+IDAge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb2x1bW5zIHtcbiAgICAgICAgICAuZy1jb2wjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgICAgZ3JpZC1jb2x1bW46IGF1dG8gLyBzcGFuICRpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0YXJ0IHdpdGggYDFgIGJlY2F1c2UgYDBgIGlzIGFuZCBpbnZhbGlkIHZhbHVlLlxuICAgICAgICAvLyBFbmRzIHdpdGggYCRjb2x1bW5zIC0gMWAgYmVjYXVzZSBvZmZzZXR0aW5nIGJ5IHRoZSB3aWR0aCBvZiBhbiBlbnRpcmUgcm93IGlzbid0IHBvc3NpYmxlLlxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkY29sdW1ucyAtIDEpIHtcbiAgICAgICAgICAuZy1zdGFydCN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbi1zdGFydDogJGk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQmFzaWMgQm9vdHN0cmFwIHRhYmxlXG4vL1xuXG4udGFibGUge1xuICAvLyBSZXNldCBuZWVkZWQgZm9yIG5lc3RpbmcgdGFibGVzXG4gIC0tI3skcHJlZml4fXRhYmxlLWNvbG9yLXR5cGU6IGluaXRpYWw7XG4gIC0tI3skcHJlZml4fXRhYmxlLWJnLXR5cGU6IGluaXRpYWw7XG4gIC0tI3skcHJlZml4fXRhYmxlLWNvbG9yLXN0YXRlOiBpbml0aWFsO1xuICAtLSN7JHByZWZpeH10YWJsZS1iZy1zdGF0ZTogaW5pdGlhbDtcbiAgLy8gRW5kIG9mIHJlc2V0XG4gIC0tI3skcHJlZml4fXRhYmxlLWNvbG9yOiAjeyR0YWJsZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fXRhYmxlLWJnOiAjeyR0YWJsZS1iZ307XG4gIC0tI3skcHJlZml4fXRhYmxlLWJvcmRlci1jb2xvcjogI3skdGFibGUtYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dGFibGUtYWNjZW50LWJnOiAjeyR0YWJsZS1hY2NlbnQtYmd9O1xuICAtLSN7JHByZWZpeH10YWJsZS1zdHJpcGVkLWNvbG9yOiAjeyR0YWJsZS1zdHJpcGVkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dGFibGUtc3RyaXBlZC1iZzogI3skdGFibGUtc3RyaXBlZC1iZ307XG4gIC0tI3skcHJlZml4fXRhYmxlLWFjdGl2ZS1jb2xvcjogI3skdGFibGUtYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dGFibGUtYWN0aXZlLWJnOiAjeyR0YWJsZS1hY3RpdmUtYmd9O1xuICAtLSN7JHByZWZpeH10YWJsZS1ob3Zlci1jb2xvcjogI3skdGFibGUtaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH10YWJsZS1ob3Zlci1iZzogI3skdGFibGUtaG92ZXItYmd9O1xuXG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAkc3BhY2VyO1xuICB2ZXJ0aWNhbC1hbGlnbjogJHRhYmxlLWNlbGwtdmVydGljYWwtYWxpZ247XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fXRhYmxlLWJvcmRlci1jb2xvcik7XG5cbiAgLy8gVGFyZ2V0IHRoICYgdGRcbiAgLy8gV2UgbmVlZCB0aGUgY2hpbGQgY29tYmluYXRvciB0byBwcmV2ZW50IHN0eWxlcyBsZWFraW5nIHRvIG5lc3RlZCB0YWJsZXMgd2hpY2ggZG9lc24ndCBoYXZlIGEgYC50YWJsZWAgY2xhc3MuXG4gIC8vIFdlIHVzZSB0aGUgdW5pdmVyc2FsIHNlbGVjdG9ycyBoZXJlIHRvIHNpbXBsaWZ5IHRoZSBzZWxlY3RvciAoZWxzZSB3ZSB3b3VsZCBuZWVkIDYgZGlmZmVyZW50IHNlbGVjdG9ycykuXG4gIC8vIEFub3RoZXIgYWR2YW50YWdlIGlzIHRoYXQgdGhpcyBnZW5lcmF0ZXMgbGVzcyBjb2RlIGFuZCBtYWtlcyB0aGUgc2VsZWN0b3IgbGVzcyBzcGVjaWZpYyBtYWtpbmcgaXQgZWFzaWVyIHRvIG92ZXJyaWRlLlxuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3ItbWF4LXVuaXZlcnNhbFxuICA+IDpub3QoY2FwdGlvbikgPiAqID4gKiB7XG4gICAgcGFkZGluZzogJHRhYmxlLWNlbGwtcGFkZGluZy15ICR0YWJsZS1jZWxsLXBhZGRpbmcteDtcbiAgICAvLyBGb2xsb3dpbmcgdGhlIHByZWNlcHQgb2YgY2FzY2FkZXM6IGh0dHBzOi8vY29kZXBlbi5pby9taXJpYW1zdXphbm5lL2Z1bGwvdllOZ29kYlxuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtY29sb3Itc3RhdGUsIHZhcigtLSN7JHByZWZpeH10YWJsZS1jb2xvci10eXBlLCB2YXIoLS0jeyRwcmVmaXh9dGFibGUtY29sb3IpKSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXRhYmxlLWJnKTtcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAkdGFibGUtYm9yZGVyLXdpZHRoO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDk5OTlweCB2YXIoLS0jeyRwcmVmaXh9dGFibGUtYmctc3RhdGUsIHZhcigtLSN7JHByZWZpeH10YWJsZS1iZy10eXBlLCB2YXIoLS0jeyRwcmVmaXh9dGFibGUtYWNjZW50LWJnKSkpO1xuICB9XG5cbiAgPiB0Ym9keSB7XG4gICAgdmVydGljYWwtYWxpZ246IGluaGVyaXQ7XG4gIH1cblxuICA+IHRoZWFkIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICB9XG59XG5cbi50YWJsZS1ncm91cC1kaXZpZGVyIHtcbiAgYm9yZGVyLXRvcDogY2FsYygjeyR0YWJsZS1ib3JkZXItd2lkdGh9ICogMikgc29saWQgJHRhYmxlLWdyb3VwLXNlcGFyYXRvci1jb2xvcjsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3Rcbn1cblxuLy9cbi8vIENoYW5nZSBwbGFjZW1lbnQgb2YgY2FwdGlvbnMgd2l0aCBhIGNsYXNzXG4vL1xuXG4uY2FwdGlvbi10b3Age1xuICBjYXB0aW9uLXNpZGU6IHRvcDtcbn1cblxuXG4vL1xuLy8gQ29uZGVuc2VkIHRhYmxlIHcvIGhhbGYgcGFkZGluZ1xuLy9cblxuLnRhYmxlLXNtIHtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW1heC11bml2ZXJzYWxcbiAgPiA6bm90KGNhcHRpb24pID4gKiA+ICoge1xuICAgIHBhZGRpbmc6ICR0YWJsZS1jZWxsLXBhZGRpbmcteS1zbSAkdGFibGUtY2VsbC1wYWRkaW5nLXgtc207XG4gIH1cbn1cblxuXG4vLyBCb3JkZXIgdmVyc2lvbnNcbi8vXG4vLyBBZGQgb3IgcmVtb3ZlIGJvcmRlcnMgYWxsIGFyb3VuZCB0aGUgdGFibGUgYW5kIGJldHdlZW4gYWxsIHRoZSBjb2x1bW5zLlxuLy9cbi8vIFdoZW4gYm9yZGVycyBhcmUgYWRkZWQgb24gYWxsIHNpZGVzIG9mIHRoZSBjZWxscywgdGhlIGNvcm5lcnMgY2FuIHJlbmRlciBvZGQgd2hlblxuLy8gdGhlc2UgYm9yZGVycyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBjb2xvciBvciBpZiB0aGV5IGFyZSBzZW1pLXRyYW5zcGFyZW50LlxuLy8gVGhlcmVmb3Igd2UgYWRkIHRvcCBhbmQgYm9yZGVyIGJvdHRvbXMgdG8gdGhlIGB0cmBzIGFuZCBsZWZ0IGFuZCByaWdodCBib3JkZXJzXG4vLyB0byB0aGUgYHRkYHMgb3IgYHRoYHNcblxuLnRhYmxlLWJvcmRlcmVkIHtcbiAgPiA6bm90KGNhcHRpb24pID4gKiB7XG4gICAgYm9yZGVyLXdpZHRoOiAkdGFibGUtYm9yZGVyLXdpZHRoIDA7XG5cbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3ItbWF4LXVuaXZlcnNhbFxuICAgID4gKiB7XG4gICAgICBib3JkZXItd2lkdGg6IDAgJHRhYmxlLWJvcmRlci13aWR0aDtcbiAgICB9XG4gIH1cbn1cblxuLnRhYmxlLWJvcmRlcmxlc3Mge1xuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3ItbWF4LXVuaXZlcnNhbFxuICA+IDpub3QoY2FwdGlvbikgPiAqID4gKiB7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgfVxuXG4gID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICB9XG59XG5cbi8vIFplYnJhLXN0cmlwaW5nXG4vL1xuLy8gRGVmYXVsdCB6ZWJyYS1zdHJpcGUgc3R5bGVzIChhbHRlcm5hdGluZyBncmF5IGFuZCB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kcylcblxuLy8gRm9yIHJvd3Ncbi50YWJsZS1zdHJpcGVkIHtcbiAgPiB0Ym9keSA+IHRyOm50aC1vZi10eXBlKCN7JHRhYmxlLXN0cmlwZWQtb3JkZXJ9KSA+ICoge1xuICAgIC0tI3skcHJlZml4fXRhYmxlLWNvbG9yLXR5cGU6IHZhcigtLSN7JHByZWZpeH10YWJsZS1zdHJpcGVkLWNvbG9yKTtcbiAgICAtLSN7JHByZWZpeH10YWJsZS1iZy10eXBlOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtc3RyaXBlZC1iZyk7XG4gIH1cbn1cblxuLy8gRm9yIGNvbHVtbnNcbi50YWJsZS1zdHJpcGVkLWNvbHVtbnMge1xuICA+IDpub3QoY2FwdGlvbikgPiB0ciA+IDpudGgtY2hpbGQoI3skdGFibGUtc3RyaXBlZC1jb2x1bW5zLW9yZGVyfSkge1xuICAgIC0tI3skcHJlZml4fXRhYmxlLWNvbG9yLXR5cGU6IHZhcigtLSN7JHByZWZpeH10YWJsZS1zdHJpcGVkLWNvbG9yKTtcbiAgICAtLSN7JHByZWZpeH10YWJsZS1iZy10eXBlOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtc3RyaXBlZC1iZyk7XG4gIH1cbn1cblxuLy8gQWN0aXZlIHRhYmxlXG4vL1xuLy8gVGhlIGAudGFibGUtYWN0aXZlYCBjbGFzcyBjYW4gYmUgYWRkZWQgdG8gaGlnaGxpZ2h0IHJvd3Mgb3IgY2VsbHNcblxuLnRhYmxlLWFjdGl2ZSB7XG4gIC0tI3skcHJlZml4fXRhYmxlLWNvbG9yLXN0YXRlOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtYWN0aXZlLWNvbG9yKTtcbiAgLS0jeyRwcmVmaXh9dGFibGUtYmctc3RhdGU6IHZhcigtLSN7JHByZWZpeH10YWJsZS1hY3RpdmUtYmcpO1xufVxuXG4vLyBIb3ZlciBlZmZlY3Rcbi8vXG4vLyBQbGFjZWQgaGVyZSBzaW5jZSBpdCBoYXMgdG8gY29tZSBhZnRlciB0aGUgcG90ZW50aWFsIHplYnJhIHN0cmlwaW5nXG5cbi50YWJsZS1ob3ZlciB7XG4gID4gdGJvZHkgPiB0cjpob3ZlciA+ICoge1xuICAgIC0tI3skcHJlZml4fXRhYmxlLWNvbG9yLXN0YXRlOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtaG92ZXItY29sb3IpO1xuICAgIC0tI3skcHJlZml4fXRhYmxlLWJnLXN0YXRlOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtaG92ZXItYmcpO1xuICB9XG59XG5cblxuLy8gVGFibGUgdmFyaWFudHNcbi8vXG4vLyBUYWJsZSB2YXJpYW50cyBzZXQgdGhlIHRhYmxlIGNlbGwgYmFja2dyb3VuZHMsIGJvcmRlciBjb2xvcnNcbi8vIGFuZCB0aGUgY29sb3JzIG9mIHRoZSBzdHJpcGVkLCBob3ZlcmVkICYgYWN0aXZlIHRhYmxlc1xuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGFibGUtdmFyaWFudHMge1xuICBAaW5jbHVkZSB0YWJsZS12YXJpYW50KCRjb2xvciwgJHZhbHVlKTtcbn1cblxuLy8gUmVzcG9uc2l2ZSB0YWJsZXNcbi8vXG4vLyBHZW5lcmF0ZSBzZXJpZXMgb2YgYC50YWJsZS1yZXNwb25zaXZlLSpgIGNsYXNzZXMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBzY3JlZW5cbi8vIHNpemUgb2Ygd2hlcmUgeW91ciB0YWJsZSB3aWxsIG92ZXJmbG93LlxuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJGJyZWFrcG9pbnQpIHtcbiAgICAudGFibGUtcmVzcG9uc2l2ZSN7JGluZml4fSB7XG4gICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc2Nzcy1kb2NzLXN0YXJ0IHRhYmxlLXZhcmlhbnRcbkBtaXhpbiB0YWJsZS12YXJpYW50KCRzdGF0ZSwgJGJhY2tncm91bmQpIHtcbiAgLnRhYmxlLSN7JHN0YXRlfSB7XG4gICAgJGNvbG9yOiBjb2xvci1jb250cmFzdChvcGFxdWUoJGJvZHktYmcsICRiYWNrZ3JvdW5kKSk7XG4gICAgJGhvdmVyLWJnOiBtaXgoJGNvbG9yLCAkYmFja2dyb3VuZCwgcGVyY2VudGFnZSgkdGFibGUtaG92ZXItYmctZmFjdG9yKSk7XG4gICAgJHN0cmlwZWQtYmc6IG1peCgkY29sb3IsICRiYWNrZ3JvdW5kLCBwZXJjZW50YWdlKCR0YWJsZS1zdHJpcGVkLWJnLWZhY3RvcikpO1xuICAgICRhY3RpdmUtYmc6IG1peCgkY29sb3IsICRiYWNrZ3JvdW5kLCBwZXJjZW50YWdlKCR0YWJsZS1hY3RpdmUtYmctZmFjdG9yKSk7XG4gICAgJHRhYmxlLWJvcmRlci1jb2xvcjogbWl4KCRjb2xvciwgJGJhY2tncm91bmQsIHBlcmNlbnRhZ2UoJHRhYmxlLWJvcmRlci1mYWN0b3IpKTtcblxuICAgIC0tI3skcHJlZml4fXRhYmxlLWNvbG9yOiAjeyRjb2xvcn07XG4gICAgLS0jeyRwcmVmaXh9dGFibGUtYmc6ICN7JGJhY2tncm91bmR9O1xuICAgIC0tI3skcHJlZml4fXRhYmxlLWJvcmRlci1jb2xvcjogI3skdGFibGUtYm9yZGVyLWNvbG9yfTtcbiAgICAtLSN7JHByZWZpeH10YWJsZS1zdHJpcGVkLWJnOiAjeyRzdHJpcGVkLWJnfTtcbiAgICAtLSN7JHByZWZpeH10YWJsZS1zdHJpcGVkLWNvbG9yOiAje2NvbG9yLWNvbnRyYXN0KCRzdHJpcGVkLWJnKX07XG4gICAgLS0jeyRwcmVmaXh9dGFibGUtYWN0aXZlLWJnOiAjeyRhY3RpdmUtYmd9O1xuICAgIC0tI3skcHJlZml4fXRhYmxlLWFjdGl2ZS1jb2xvcjogI3tjb2xvci1jb250cmFzdCgkYWN0aXZlLWJnKX07XG4gICAgLS0jeyRwcmVmaXh9dGFibGUtaG92ZXItYmc6ICN7JGhvdmVyLWJnfTtcbiAgICAtLSN7JHByZWZpeH10YWJsZS1ob3Zlci1jb2xvcjogI3tjb2xvci1jb250cmFzdCgkaG92ZXItYmcpfTtcblxuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtY29sb3IpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fXRhYmxlLWJvcmRlci1jb2xvcik7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgdGFibGUtdmFyaWFudFxuIiwiLy9cbi8vIExhYmVsc1xuLy9cblxuLmZvcm0tbGFiZWwge1xuICBtYXJnaW4tYm90dG9tOiAkZm9ybS1sYWJlbC1tYXJnaW4tYm90dG9tO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvcm0tbGFiZWwtZm9udC1zaXplKTtcbiAgZm9udC1zdHlsZTogJGZvcm0tbGFiZWwtZm9udC1zdHlsZTtcbiAgZm9udC13ZWlnaHQ6ICRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGZvcm0tbGFiZWwtY29sb3I7XG59XG5cbi8vIEZvciB1c2Ugd2l0aCBob3Jpem9udGFsIGFuZCBpbmxpbmUgZm9ybXMsIHdoZW4geW91IG5lZWQgdGhlIGxhYmVsIChvciBsZWdlbmQpXG4vLyB0ZXh0IHRvIGFsaWduIHdpdGggdGhlIGZvcm0gY29udHJvbHMuXG4uY29sLWZvcm0tbGFiZWwge1xuICBwYWRkaW5nLXRvcDogYWRkKCRpbnB1dC1wYWRkaW5nLXksICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBwYWRkaW5nLWJvdHRvbTogYWRkKCRpbnB1dC1wYWRkaW5nLXksICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBPdmVycmlkZSB0aGUgYDxsZWdlbmQ+YCBkZWZhdWx0XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShpbmhlcml0KTsgLy8gT3ZlcnJpZGUgdGhlIGA8bGVnZW5kPmAgZGVmYXVsdFxuICBmb250LXN0eWxlOiAkZm9ybS1sYWJlbC1mb250LXN0eWxlO1xuICBmb250LXdlaWdodDogJGZvcm0tbGFiZWwtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvcjtcbn1cblxuLmNvbC1mb3JtLWxhYmVsLWxnIHtcbiAgcGFkZGluZy10b3A6IGFkZCgkaW5wdXQtcGFkZGluZy15LWxnLCAkaW5wdXQtYm9yZGVyLXdpZHRoKTtcbiAgcGFkZGluZy1ib3R0b206IGFkZCgkaW5wdXQtcGFkZGluZy15LWxnLCAkaW5wdXQtYm9yZGVyLXdpZHRoKTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtbGcpO1xufVxuXG4uY29sLWZvcm0tbGFiZWwtc20ge1xuICBwYWRkaW5nLXRvcDogYWRkKCRpbnB1dC1wYWRkaW5nLXktc20sICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBwYWRkaW5nLWJvdHRvbTogYWRkKCRpbnB1dC1wYWRkaW5nLXktc20sICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZS1zbSk7XG59XG4iLCIvL1xuLy8gRm9ybSB0ZXh0XG4vL1xuXG4uZm9ybS10ZXh0IHtcbiAgbWFyZ2luLXRvcDogJGZvcm0tdGV4dC1tYXJnaW4tdG9wO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvcm0tdGV4dC1mb250LXNpemUpO1xuICBmb250LXN0eWxlOiAkZm9ybS10ZXh0LWZvbnQtc3R5bGU7XG4gIGZvbnQtd2VpZ2h0OiAkZm9ybS10ZXh0LWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGZvcm0tdGV4dC1jb2xvcjtcbn1cbiIsIi8vXG4vLyBHZW5lcmFsIGZvcm0gY29udHJvbHMgKHBsdXMgYSBmZXcgc3BlY2lmaWMgaGlnaC1sZXZlbCBpbnRlcnZlbnRpb25zKVxuLy9cblxuLmZvcm0tY29udHJvbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmcteSAkaW5wdXQtcGFkZGluZy14O1xuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG4gIGFwcGVhcmFuY2U6IG5vbmU7IC8vIEZpeCBhcHBlYXJhbmNlIGZvciBkYXRlIGlucHV0cyBpbiBTYWZhcmlcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRpbnB1dC1ib3JkZXItd2lkdGggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcblxuICAvLyBOb3RlOiBUaGlzIGhhcyBubyBlZmZlY3Qgb24gPHNlbGVjdD5zIGluIHNvbWUgYnJvd3NlcnMsIGR1ZSB0byB0aGUgbGltaXRlZCBzdHlsYWJpbGl0eSBvZiBgPHNlbGVjdD5gcyBpbiBDU1MuXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMsIDApO1xuXG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGlucHV0LWJveC1zaGFkb3cpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRpbnB1dC10cmFuc2l0aW9uKTtcblxuICAmW3R5cGU9XCJmaWxlXCJdIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuOyAvLyBwcmV2ZW50IHBzZXVkbyBlbGVtZW50IGJ1dHRvbiBvdmVybGFwXG5cbiAgICAmOm5vdCg6ZGlzYWJsZWQpOm5vdChbcmVhZG9ubHldKSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG5cbiAgLy8gQ3VzdG9taXplIHRoZSBgOmZvY3VzYCBzdGF0ZSB0byBpbWl0YXRlIG5hdGl2ZSBXZWJLaXQgc3R5bGVzLlxuICAmOmZvY3VzIHtcbiAgICBjb2xvcjogJGlucHV0LWZvY3VzLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1mb2N1cy1iZztcbiAgICBib3JkZXItY29sb3I6ICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3I7XG4gICAgb3V0bGluZTogMDtcbiAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGlucHV0LWJveC1zaGFkb3csICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC8vIEF2b2lkIHVzaW5nIG1peGluIHNvIHdlIGNhbiBwYXNzIGN1c3RvbSBmb2N1cyBzaGFkb3cgcHJvcGVybHlcbiAgICAgIGJveC1zaGFkb3c6ICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93O1xuICAgIH1cbiAgfVxuXG4gICY6Oi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSB7XG4gICAgLy8gT24gQW5kcm9pZCBDaHJvbWUsIGZvcm0tY29udHJvbCdzIFwid2lkdGg6IDEwMCVcIiBtYWtlcyB0aGUgaW5wdXQgd2lkdGggdG9vIHNtYWxsXG4gICAgLy8gVGVzdGVkIHVuZGVyIEFuZHJvaWQgMTEgLyBDaHJvbWUgODksIEFuZHJvaWQgMTIgLyBDaHJvbWUgMTAwLCBBbmRyb2lkIDEzIC8gQ2hyb21lIDEwOVxuICAgIC8vXG4gICAgLy8gT24gaU9TIFNhZmFyaSwgZm9ybS1jb250cm9sJ3MgXCJhcHBlYXJhbmNlOiBub25lXCIgKyBcIndpZHRoOiAxMDAlXCIgbWFrZXMgdGhlIGlucHV0IHdpZHRoIHRvbyBzbWFsbFxuICAgIC8vIFRlc3RlZCB1bmRlciBpT1MgMTYuMiAvIFNhZmFyaSAxNi4yXG4gICAgbWluLXdpZHRoOiA4NXB4OyAvLyBTZWVtcyB0byBiZSBhIGdvb2QgbWluaW11bSBzYWZlIHdpZHRoXG5cbiAgICAvLyBBZGQgc29tZSBoZWlnaHQgdG8gZGF0ZSBpbnB1dHMgb24gaU9TXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yMzMwN1xuICAgIC8vIFRPRE86IHdlIGNhbiByZW1vdmUgdGhpcyB3b3JrYXJvdW5kIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODk1OSBpcyByZXNvbHZlZFxuICAgIC8vIE11bHRpcGx5IGxpbmUtaGVpZ2h0IGJ5IDFlbSBpZiBpdCBoYXMgbm8gdW5pdFxuICAgIGhlaWdodDogaWYodW5pdCgkaW5wdXQtbGluZS1oZWlnaHQpID09IFwiXCIsICRpbnB1dC1saW5lLWhlaWdodCAqIDFlbSwgJGlucHV0LWxpbmUtaGVpZ2h0KTtcblxuICAgIC8vIEFuZHJvaWQgQ2hyb21lIHR5cGU9XCJkYXRlXCIgaXMgdGFsbGVyIHRoYW4gdGhlIG90aGVyIGlucHV0c1xuICAgIC8vIGJlY2F1c2Ugb2YgXCJtYXJnaW46IDFweCAyNHB4IDFweCA0cHhcIiBpbnNpZGUgdGhlIHNoYWRvdyBET01cbiAgICAvLyBUZXN0ZWQgdW5kZXIgQW5kcm9pZCAxMSAvIENocm9tZSA4OSwgQW5kcm9pZCAxMiAvIENocm9tZSAxMDAsIEFuZHJvaWQgMTMgLyBDaHJvbWUgMTA5XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLy8gUHJldmVudCBleGNlc3NpdmUgZGF0ZSBpbnB1dCBoZWlnaHQgaW4gV2Via2l0XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMzQ0MzNcbiAgJjo6LXdlYmtpdC1kYXRldGltZS1lZGl0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLy8gUGxhY2Vob2xkZXJcbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkaW5wdXQtcGxhY2Vob2xkZXItY29sb3I7XG4gICAgLy8gT3ZlcnJpZGUgRmlyZWZveCdzIHVudXN1YWwgZGVmYXVsdCBvcGFjaXR5OyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMTE1MjYuXG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC8vIERpc2FibGVkIGlucHV0c1xuICAvL1xuICAvLyBIVE1MNSBzYXlzIHRoYXQgY29udHJvbHMgdW5kZXIgYSBmaWVsZHNldCA+IGxlZ2VuZDpmaXJzdC1jaGlsZCB3b24ndCBiZVxuICAvLyBkaXNhYmxlZCBpZiB0aGUgZmllbGRzZXQgaXMgZGlzYWJsZWQuIER1ZSB0byBpbXBsZW1lbnRhdGlvbiBkaWZmaWN1bHR5LCB3ZVxuICAvLyBkb24ndCBob25vciB0aGF0IGVkZ2UgY2FzZTsgd2Ugc3R5bGUgdGhlbSBhcyBkaXNhYmxlZCBhbnl3YXkuXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWRpc2FibGVkLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJGlucHV0LWRpc2FibGVkLWJvcmRlci1jb2xvcjtcbiAgICAvLyBpT1MgZml4IGZvciB1bnJlYWRhYmxlIGRpc2FibGVkIGNvbnRlbnQ7IHNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzExNjU1LlxuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAvLyBGaWxlIGlucHV0IGJ1dHRvbnMgdGhlbWluZ1xuICAmOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiB7XG4gICAgcGFkZGluZzogJGlucHV0LXBhZGRpbmcteSAkaW5wdXQtcGFkZGluZy14O1xuICAgIG1hcmdpbjogKC0kaW5wdXQtcGFkZGluZy15KSAoLSRpbnB1dC1wYWRkaW5nLXgpO1xuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAkaW5wdXQtcGFkZGluZy14O1xuICAgIGNvbG9yOiAkZm9ybS1maWxlLWJ1dHRvbi1jb2xvcjtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkZm9ybS1maWxlLWJ1dHRvbi1iZyk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAwO1xuICAgIGJvcmRlci1pbmxpbmUtZW5kLXdpZHRoOiAkaW5wdXQtYm9yZGVyLXdpZHRoO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgcHJvcGVydHktZGlzYWxsb3dlZC1saXN0XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkYnRuLXRyYW5zaXRpb24pO1xuICB9XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKTpub3QoW3JlYWRvbmx5XSk6OmZpbGUtc2VsZWN0b3ItYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9ybS1maWxlLWJ1dHRvbi1ob3Zlci1iZztcbiAgfVxufVxuXG4vLyBSZWFkb25seSBjb250cm9scyBhcyBwbGFpbiB0ZXh0XG4vL1xuLy8gQXBwbHkgY2xhc3MgdG8gYSByZWFkb25seSBpbnB1dCB0byBtYWtlIGl0IGFwcGVhciBsaWtlIHJlZ3VsYXIgcGxhaW5cbi8vIHRleHQgKHdpdGhvdXQgYW55IGJvcmRlciwgYmFja2dyb3VuZCBjb2xvciwgZm9jdXMgaW5kaWNhdG9yKVxuXG4uZm9ybS1jb250cm9sLXBsYWludGV4dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmcteSAwO1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBtYXRjaCBpbnB1dHMgaWYgdGhpcyBjbGFzcyBjb21lcyBvbiBpbnB1dHMgd2l0aCBkZWZhdWx0IG1hcmdpbnNcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1wbGFpbnRleHQtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6ICRpbnB1dC1ib3JkZXItd2lkdGggMDtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG5cbiAgJi5mb3JtLWNvbnRyb2wtc20sXG4gICYuZm9ybS1jb250cm9sLWxnIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuXG4vLyBGb3JtIGNvbnRyb2wgc2l6aW5nXG4vL1xuLy8gQnVpbGQgb24gYC5mb3JtLWNvbnRyb2xgIHdpdGggbW9kaWZpZXIgY2xhc3NlcyB0byBkZWNyZWFzZSBvciBpbmNyZWFzZSB0aGVcbi8vIGhlaWdodCBhbmQgZm9udC1zaXplIG9mIGZvcm0gY29udHJvbHMuXG4vL1xuLy8gUmVwZWF0ZWQgaW4gYF9pbnB1dF9ncm91cC5zY3NzYCB0byBhdm9pZCBTYXNzIGV4dGVuZCBpc3N1ZXMuXG5cbi5mb3JtLWNvbnRyb2wtc20ge1xuICBtaW4taGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LXNtO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15LXNtICRpbnB1dC1wYWRkaW5nLXgtc207XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplLXNtKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1zbSk7XG5cbiAgJjo6ZmlsZS1zZWxlY3Rvci1idXR0b24ge1xuICAgIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktc20gJGlucHV0LXBhZGRpbmcteC1zbTtcbiAgICBtYXJnaW46ICgtJGlucHV0LXBhZGRpbmcteS1zbSkgKC0kaW5wdXQtcGFkZGluZy14LXNtKTtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogJGlucHV0LXBhZGRpbmcteC1zbTtcbiAgfVxufVxuXG4uZm9ybS1jb250cm9sLWxnIHtcbiAgbWluLWhlaWdodDogJGlucHV0LWhlaWdodC1sZztcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmcteS1sZyAkaW5wdXQtcGFkZGluZy14LWxnO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZS1sZyk7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMtbGcpO1xuXG4gICY6OmZpbGUtc2VsZWN0b3ItYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15LWxnICRpbnB1dC1wYWRkaW5nLXgtbGc7XG4gICAgbWFyZ2luOiAoLSRpbnB1dC1wYWRkaW5nLXktbGcpICgtJGlucHV0LXBhZGRpbmcteC1sZyk7XG4gICAgbWFyZ2luLWlubGluZS1lbmQ6ICRpbnB1dC1wYWRkaW5nLXgtbGc7XG4gIH1cbn1cblxuLy8gTWFrZSBzdXJlIHRleHRhcmVhcyBkb24ndCBzaHJpbmsgdG9vIG11Y2ggd2hlbiByZXNpemVkXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8yOTEyNFxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG50ZXh0YXJlYSB7XG4gICYuZm9ybS1jb250cm9sIHtcbiAgICBtaW4taGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICB9XG5cbiAgJi5mb3JtLWNvbnRyb2wtc20ge1xuICAgIG1pbi1oZWlnaHQ6ICRpbnB1dC1oZWlnaHQtc207XG4gIH1cblxuICAmLmZvcm0tY29udHJvbC1sZyB7XG4gICAgbWluLWhlaWdodDogJGlucHV0LWhlaWdodC1sZztcbiAgfVxufVxuLy8gc3R5bGVsaW50LWVuYWJsZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblxuLmZvcm0tY29udHJvbC1jb2xvciB7XG4gIHdpZHRoOiAkZm9ybS1jb2xvci13aWR0aDtcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15O1xuXG4gICY6bm90KDpkaXNhYmxlZCk6bm90KFtyZWFkb25seV0pIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOjotbW96LWNvbG9yLXN3YXRjaCB7XG4gICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cyk7XG4gIH1cblxuICAmOjotd2Via2l0LWNvbG9yLXN3YXRjaCB7XG4gICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cyk7XG4gIH1cblxuICAmLmZvcm0tY29udHJvbC1zbSB7IGhlaWdodDogJGlucHV0LWhlaWdodC1zbTsgfVxuICAmLmZvcm0tY29udHJvbC1sZyB7IGhlaWdodDogJGlucHV0LWhlaWdodC1sZzsgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgcHJvcGVydHktZGlzYWxsb3dlZC1saXN0XG5AbWl4aW4gdHJhbnNpdGlvbigkdHJhbnNpdGlvbi4uLikge1xuICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA9PSAwIHtcbiAgICAkdHJhbnNpdGlvbjogJHRyYW5zaXRpb24tYmFzZTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMSB7XG4gICAgQGVhY2ggJHZhbHVlIGluICR0cmFuc2l0aW9uIHtcbiAgICAgIEBpZiAkdmFsdWUgPT0gbnVsbCBvciAkdmFsdWUgPT0gbm9uZSB7XG4gICAgICAgIEB3YXJuIFwiVGhlIGtleXdvcmQgJ25vbmUnIG9yICdudWxsJyBtdXN0IGJlIHVzZWQgYXMgYSBzaW5nbGUgYXJndW1lbnQuXCI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlbmFibGUtdHJhbnNpdGlvbnMge1xuICAgIEBpZiBudGgoJHRyYW5zaXRpb24sIDEpICE9IG51bGwge1xuICAgICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgQGlmICRlbmFibGUtcmVkdWNlZC1tb3Rpb24gYW5kIG50aCgkdHJhbnNpdGlvbiwgMSkgIT0gbnVsbCBhbmQgbnRoKCR0cmFuc2l0aW9uLCAxKSAhPSBub25lIHtcbiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBHcmFkaWVudHNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGdyYWRpZW50LWJnLW1peGluXG5AbWl4aW4gZ3JhZGllbnQtYmcoJGNvbG9yOiBudWxsKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLSN7JHByZWZpeH1ncmFkaWVudCk7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgZ3JhZGllbnQtYmctbWl4aW5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGdyYWRpZW50LW1peGluc1xuLy8gSG9yaXpvbnRhbCBncmFkaWVudCwgZnJvbSBsZWZ0IHRvIHJpZ2h0XG4vL1xuLy8gQ3JlYXRlcyB0d28gY29sb3Igc3RvcHMsIHN0YXJ0IGFuZCBlbmQsIGJ5IHNwZWNpZnlpbmcgYSBjb2xvciBhbmQgcG9zaXRpb24gZm9yIGVhY2ggY29sb3Igc3RvcC5cbkBtaXhpbiBncmFkaWVudC14KCRzdGFydC1jb2xvcjogJGdyYXktNzAwLCAkZW5kLWNvbG9yOiAkZ3JheS04MDAsICRzdGFydC1wZXJjZW50OiAwJSwgJGVuZC1wZXJjZW50OiAxMDAlKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHN0YXJ0LWNvbG9yICRzdGFydC1wZXJjZW50LCAkZW5kLWNvbG9yICRlbmQtcGVyY2VudCk7XG59XG5cbi8vIFZlcnRpY2FsIGdyYWRpZW50LCBmcm9tIHRvcCB0byBib3R0b21cbi8vXG4vLyBDcmVhdGVzIHR3byBjb2xvciBzdG9wcywgc3RhcnQgYW5kIGVuZCwgYnkgc3BlY2lmeWluZyBhIGNvbG9yIGFuZCBwb3NpdGlvbiBmb3IgZWFjaCBjb2xvciBzdG9wLlxuQG1peGluIGdyYWRpZW50LXkoJHN0YXJ0LWNvbG9yOiAkZ3JheS03MDAsICRlbmQtY29sb3I6ICRncmF5LTgwMCwgJHN0YXJ0LXBlcmNlbnQ6IG51bGwsICRlbmQtcGVyY2VudDogbnVsbCkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAkc3RhcnQtY29sb3IgJHN0YXJ0LXBlcmNlbnQsICRlbmQtY29sb3IgJGVuZC1wZXJjZW50KTtcbn1cblxuQG1peGluIGdyYWRpZW50LWRpcmVjdGlvbmFsKCRzdGFydC1jb2xvcjogJGdyYXktNzAwLCAkZW5kLWNvbG9yOiAkZ3JheS04MDAsICRkZWc6IDQ1ZGVnKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgkZGVnLCAkc3RhcnQtY29sb3IsICRlbmQtY29sb3IpO1xufVxuXG5AbWl4aW4gZ3JhZGllbnQteC10aHJlZS1jb2xvcnMoJHN0YXJ0LWNvbG9yOiAkYmx1ZSwgJG1pZC1jb2xvcjogJHB1cnBsZSwgJGNvbG9yLXN0b3A6IDUwJSwgJGVuZC1jb2xvcjogJHJlZCkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRzdGFydC1jb2xvciwgJG1pZC1jb2xvciAkY29sb3Itc3RvcCwgJGVuZC1jb2xvcik7XG59XG5cbkBtaXhpbiBncmFkaWVudC15LXRocmVlLWNvbG9ycygkc3RhcnQtY29sb3I6ICRibHVlLCAkbWlkLWNvbG9yOiAkcHVycGxlLCAkY29sb3Itc3RvcDogNTAlLCAkZW5kLWNvbG9yOiAkcmVkKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgkc3RhcnQtY29sb3IsICRtaWQtY29sb3IgJGNvbG9yLXN0b3AsICRlbmQtY29sb3IpO1xufVxuXG5AbWl4aW4gZ3JhZGllbnQtcmFkaWFsKCRpbm5lci1jb2xvcjogJGdyYXktNzAwLCAkb3V0ZXItY29sb3I6ICRncmF5LTgwMCkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCAkaW5uZXItY29sb3IsICRvdXRlci1jb2xvcik7XG59XG5cbkBtaXhpbiBncmFkaWVudC1zdHJpcGVkKCRjb2xvcjogcmdiYSgkd2hpdGUsIC4xNSksICRhbmdsZTogNDVkZWcpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRhbmdsZSwgJGNvbG9yIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsICRjb2xvciA1MCUsICRjb2xvciA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO1xufVxuLy8gc2Nzcy1kb2NzLWVuZCBncmFkaWVudC1taXhpbnNcbiIsIi8vIFNlbGVjdFxuLy9cbi8vIFJlcGxhY2VzIHRoZSBicm93c2VyIGRlZmF1bHQgc2VsZWN0IHdpdGggYSBjdXN0b20gb25lLCBtb3N0bHkgcHVsbGVkIGZyb21cbi8vIGh0dHBzOi8vcHJpbWVyLmdpdGh1Yi5pby8uXG5cbi5mb3JtLXNlbGVjdCB7XG4gIC0tI3skcHJlZml4fWZvcm0tc2VsZWN0LWJnLWltZzogI3tlc2NhcGUtc3ZnKCRmb3JtLXNlbGVjdC1pbmRpY2F0b3IpfTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6ICRmb3JtLXNlbGVjdC1wYWRkaW5nLXkgJGZvcm0tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nICRmb3JtLXNlbGVjdC1wYWRkaW5nLXkgJGZvcm0tc2VsZWN0LXBhZGRpbmcteDtcbiAgZm9udC1mYW1pbHk6ICRmb3JtLXNlbGVjdC1mb250LWZhbWlseTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmb3JtLXNlbGVjdC1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGZvcm0tc2VsZWN0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGZvcm0tc2VsZWN0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGZvcm0tc2VsZWN0LWNvbG9yO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9ybS1zZWxlY3QtYmc7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLSN7JHByZWZpeH1mb3JtLXNlbGVjdC1iZy1pbWcpLCB2YXIoLS0jeyRwcmVmaXh9Zm9ybS1zZWxlY3QtYmctaWNvbiwgbm9uZSk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246ICRmb3JtLXNlbGVjdC1iZy1wb3NpdGlvbjtcbiAgYmFja2dyb3VuZC1zaXplOiAkZm9ybS1zZWxlY3QtYmctc2l6ZTtcbiAgYm9yZGVyOiAkZm9ybS1zZWxlY3QtYm9yZGVyLXdpZHRoIHNvbGlkICRmb3JtLXNlbGVjdC1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGZvcm0tc2VsZWN0LWJvcmRlci1yYWRpdXMsIDApO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRmb3JtLXNlbGVjdC1ib3gtc2hhZG93KTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkZm9ybS1zZWxlY3QtdHJhbnNpdGlvbik7XG5cbiAgJjpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAkZm9ybS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yO1xuICAgIG91dGxpbmU6IDA7XG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRmb3JtLXNlbGVjdC1ib3gtc2hhZG93LCAkZm9ybS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgICBib3gtc2hhZG93OiAkZm9ybS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdztcbiAgICB9XG4gIH1cblxuICAmW211bHRpcGxlXSxcbiAgJltzaXplXTpub3QoW3NpemU9XCIxXCJdKSB7XG4gICAgcGFkZGluZy1yaWdodDogJGZvcm0tc2VsZWN0LXBhZGRpbmcteDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICRmb3JtLXNlbGVjdC1kaXNhYmxlZC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9ybS1zZWxlY3QtZGlzYWJsZWQtYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkZm9ybS1zZWxlY3QtZGlzYWJsZWQtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgLy8gUmVtb3ZlIG91dGxpbmUgZnJvbSBzZWxlY3QgYm94IGluIEZGXG4gICY6LW1vei1mb2N1c3Jpbmcge1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0ZXh0LXNoYWRvdzogMCAwIDAgJGZvcm0tc2VsZWN0LWNvbG9yO1xuICB9XG59XG5cbi5mb3JtLXNlbGVjdC1zbSB7XG4gIHBhZGRpbmctdG9wOiAkZm9ybS1zZWxlY3QtcGFkZGluZy15LXNtO1xuICBwYWRkaW5nLWJvdHRvbTogJGZvcm0tc2VsZWN0LXBhZGRpbmcteS1zbTtcbiAgcGFkZGluZy1sZWZ0OiAkZm9ybS1zZWxlY3QtcGFkZGluZy14LXNtO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvcm0tc2VsZWN0LWZvbnQtc2l6ZS1zbSk7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGZvcm0tc2VsZWN0LWJvcmRlci1yYWRpdXMtc20pO1xufVxuXG4uZm9ybS1zZWxlY3QtbGcge1xuICBwYWRkaW5nLXRvcDogJGZvcm0tc2VsZWN0LXBhZGRpbmcteS1sZztcbiAgcGFkZGluZy1ib3R0b206ICRmb3JtLXNlbGVjdC1wYWRkaW5nLXktbGc7XG4gIHBhZGRpbmctbGVmdDogJGZvcm0tc2VsZWN0LXBhZGRpbmcteC1sZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmb3JtLXNlbGVjdC1mb250LXNpemUtbGcpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRmb3JtLXNlbGVjdC1ib3JkZXItcmFkaXVzLWxnKTtcbn1cblxuQGlmICRlbmFibGUtZGFyay1tb2RlIHtcbiAgQGluY2x1ZGUgY29sb3ItbW9kZShkYXJrKSB7XG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgIC0tI3skcHJlZml4fWZvcm0tc2VsZWN0LWJnLWltZzogI3tlc2NhcGUtc3ZnKCRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItZGFyayl9O1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENoZWNrL3JhZGlvXG4vL1xuXG4uZm9ybS1jaGVjayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtaW4taGVpZ2h0OiAkZm9ybS1jaGVjay1taW4taGVpZ2h0O1xuICBwYWRkaW5nLWxlZnQ6ICRmb3JtLWNoZWNrLXBhZGRpbmctc3RhcnQ7XG4gIG1hcmdpbi1ib3R0b206ICRmb3JtLWNoZWNrLW1hcmdpbi1ib3R0b207XG5cbiAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1sZWZ0OiAkZm9ybS1jaGVjay1wYWRkaW5nLXN0YXJ0ICogLTE7XG4gIH1cbn1cblxuLmZvcm0tY2hlY2stcmV2ZXJzZSB7XG4gIHBhZGRpbmctcmlnaHQ6ICRmb3JtLWNoZWNrLXBhZGRpbmctc3RhcnQ7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tcmlnaHQ6ICRmb3JtLWNoZWNrLXBhZGRpbmctc3RhcnQgKiAtMTtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxufVxuXG4uZm9ybS1jaGVjay1pbnB1dCB7XG4gIC0tI3skcHJlZml4fWZvcm0tY2hlY2stYmc6ICN7JGZvcm0tY2hlY2staW5wdXQtYmd9O1xuXG4gIGZsZXgtc2hyaW5rOiAwO1xuICB3aWR0aDogJGZvcm0tY2hlY2staW5wdXQtd2lkdGg7XG4gIGhlaWdodDogJGZvcm0tY2hlY2staW5wdXQtd2lkdGg7XG4gIG1hcmdpbi10b3A6ICgkbGluZS1oZWlnaHQtYmFzZSAtICRmb3JtLWNoZWNrLWlucHV0LXdpZHRoKSAqIC41OyAvLyBsaW5lLWhlaWdodCBtaW51cyBjaGVjayBoZWlnaHRcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWZvcm0tY2hlY2stYmcpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS0jeyRwcmVmaXh9Zm9ybS1jaGVjay1iZy1pbWFnZSk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICBib3JkZXI6ICRmb3JtLWNoZWNrLWlucHV0LWJvcmRlcjtcbiAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDsgLy8gS2VlcCB0aGVtZWQgYXBwZWFyYW5jZSBmb3IgcHJpbnRcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkZm9ybS1jaGVjay10cmFuc2l0aW9uKTtcblxuICAmW3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZm9ybS1jaGVjay1pbnB1dC1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICZbdHlwZT1cInJhZGlvXCJdIHtcbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktZGlzYWxsb3dlZC1saXN0XG4gICAgYm9yZGVyLXJhZGl1czogJGZvcm0tY2hlY2stcmFkaW8tYm9yZGVyLXJhZGl1cztcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICBmaWx0ZXI6ICRmb3JtLWNoZWNrLWlucHV0LWFjdGl2ZS1maWx0ZXI7XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRmb3JtLWNoZWNrLWlucHV0LWZvY3VzLWJvcmRlcjtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJveC1zaGFkb3c6ICRmb3JtLWNoZWNrLWlucHV0LWZvY3VzLWJveC1zaGFkb3c7XG4gIH1cblxuICAmOmNoZWNrZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtYmctY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yOiAkZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJvcmRlci1jb2xvcjtcblxuICAgICZbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgIEBpZiAkZW5hYmxlLWdyYWRpZW50cyB7XG4gICAgICAgIC0tI3skcHJlZml4fWZvcm0tY2hlY2stYmctaW1hZ2U6ICN7ZXNjYXBlLXN2ZygkZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJnLWltYWdlKX0sIHZhcigtLSN7JHByZWZpeH1ncmFkaWVudCk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLS0jeyRwcmVmaXh9Zm9ybS1jaGVjay1iZy1pbWFnZTogI3tlc2NhcGUtc3ZnKCRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtYmctaW1hZ2UpfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmW3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgICAtLSN7JHByZWZpeH1mb3JtLWNoZWNrLWJnLWltYWdlOiAje2VzY2FwZS1zdmcoJGZvcm0tY2hlY2stcmFkaW8tY2hlY2tlZC1iZy1pbWFnZSl9LCB2YXIoLS0jeyRwcmVmaXh9Z3JhZGllbnQpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC0tI3skcHJlZml4fWZvcm0tY2hlY2stYmctaW1hZ2U6ICN7ZXNjYXBlLXN2ZygkZm9ybS1jaGVjay1yYWRpby1jaGVja2VkLWJnLWltYWdlKX07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJlt0eXBlPVwiY2hlY2tib3hcIl06aW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1iZy1jb2xvcjtcbiAgICBib3JkZXItY29sb3I6ICRmb3JtLWNoZWNrLWlucHV0LWluZGV0ZXJtaW5hdGUtYm9yZGVyLWNvbG9yO1xuXG4gICAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICAgIC0tI3skcHJlZml4fWZvcm0tY2hlY2stYmctaW1hZ2U6ICN7ZXNjYXBlLXN2ZygkZm9ybS1jaGVjay1pbnB1dC1pbmRldGVybWluYXRlLWJnLWltYWdlKX0sIHZhcigtLSN7JHByZWZpeH1ncmFkaWVudCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtLSN7JHByZWZpeH1mb3JtLWNoZWNrLWJnLWltYWdlOiAje2VzY2FwZS1zdmcoJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1iZy1pbWFnZSl9O1xuICAgIH1cbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGZpbHRlcjogbm9uZTtcbiAgICBvcGFjaXR5OiAkZm9ybS1jaGVjay1pbnB1dC1kaXNhYmxlZC1vcGFjaXR5O1xuICB9XG5cbiAgLy8gVXNlIGRpc2FibGVkIGF0dHJpYnV0ZSBpbiBhZGRpdGlvbiBvZiA6ZGlzYWJsZWQgcHNldWRvLWNsYXNzXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yODI0N1xuICAmW2Rpc2FibGVkXSxcbiAgJjpkaXNhYmxlZCB7XG4gICAgfiAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICBvcGFjaXR5OiAkZm9ybS1jaGVjay1sYWJlbC1kaXNhYmxlZC1vcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuXG4uZm9ybS1jaGVjay1sYWJlbCB7XG4gIGNvbG9yOiAkZm9ybS1jaGVjay1sYWJlbC1jb2xvcjtcbiAgY3Vyc29yOiAkZm9ybS1jaGVjay1sYWJlbC1jdXJzb3I7XG59XG5cbi8vXG4vLyBTd2l0Y2hcbi8vXG5cbi5mb3JtLXN3aXRjaCB7XG4gIHBhZGRpbmctbGVmdDogJGZvcm0tc3dpdGNoLXBhZGRpbmctc3RhcnQ7XG5cbiAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgIC0tI3skcHJlZml4fWZvcm0tc3dpdGNoLWJnOiAje2VzY2FwZS1zdmcoJGZvcm0tc3dpdGNoLWJnLWltYWdlKX07XG5cbiAgICB3aWR0aDogJGZvcm0tc3dpdGNoLXdpZHRoO1xuICAgIG1hcmdpbi1sZWZ0OiAkZm9ybS1zd2l0Y2gtcGFkZGluZy1zdGFydCAqIC0xO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLSN7JHByZWZpeH1mb3JtLXN3aXRjaC1iZyk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZm9ybS1zd2l0Y2gtYm9yZGVyLXJhZGl1cyk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkZm9ybS1zd2l0Y2gtdHJhbnNpdGlvbik7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIC0tI3skcHJlZml4fWZvcm0tc3dpdGNoLWJnOiAje2VzY2FwZS1zdmcoJGZvcm0tc3dpdGNoLWZvY3VzLWJnLWltYWdlKX07XG4gICAgfVxuXG4gICAgJjpjaGVja2VkIHtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246ICRmb3JtLXN3aXRjaC1jaGVja2VkLWJnLXBvc2l0aW9uO1xuXG4gICAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgICAtLSN7JHByZWZpeH1mb3JtLXN3aXRjaC1iZzogI3tlc2NhcGUtc3ZnKCRmb3JtLXN3aXRjaC1jaGVja2VkLWJnLWltYWdlKX0sIHZhcigtLSN7JHByZWZpeH1ncmFkaWVudCk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLS0jeyRwcmVmaXh9Zm9ybS1zd2l0Y2gtYmc6ICN7ZXNjYXBlLXN2ZygkZm9ybS1zd2l0Y2gtY2hlY2tlZC1iZy1pbWFnZSl9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuZm9ybS1jaGVjay1yZXZlcnNlIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkZm9ybS1zd2l0Y2gtcGFkZGluZy1zdGFydDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRmb3JtLXN3aXRjaC1wYWRkaW5nLXN0YXJ0ICogLTE7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cbn1cblxuLmZvcm0tY2hlY2staW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6ICRmb3JtLWNoZWNrLWlubGluZS1tYXJnaW4tZW5kO1xufVxuXG4uYnRuLWNoZWNrIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAmW2Rpc2FibGVkXSxcbiAgJjpkaXNhYmxlZCB7XG4gICAgKyAuYnRuIHtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgZmlsdGVyOiBub25lO1xuICAgICAgb3BhY2l0eTogJGZvcm0tY2hlY2stYnRuLWNoZWNrLWRpc2FibGVkLW9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBpZiAkZW5hYmxlLWRhcmstbW9kZSB7XG4gIEBpbmNsdWRlIGNvbG9yLW1vZGUoZGFyaykge1xuICAgIC5mb3JtLXN3aXRjaCAuZm9ybS1jaGVjay1pbnB1dDpub3QoOmNoZWNrZWQpOm5vdCg6Zm9jdXMpIHtcbiAgICAgIC0tI3skcHJlZml4fWZvcm0tc3dpdGNoLWJnOiAje2VzY2FwZS1zdmcoJGZvcm0tc3dpdGNoLWJnLWltYWdlLWRhcmspfTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJhbmdlXG4vL1xuLy8gU3R5bGUgcmFuZ2UgaW5wdXRzIHRoZSBzYW1lIGFjcm9zcyBicm93c2Vycy4gVmVuZG9yLXNwZWNpZmljIHJ1bGVzIGZvciBwc2V1ZG9cbi8vIGVsZW1lbnRzIGNhbm5vdCBiZSBtaXhlZC4gQXMgc3VjaCwgdGhlcmUgYXJlIG5vIHNoYXJlZCBzdHlsZXMgZm9yIGZvY3VzIG9yXG4vLyBhY3RpdmUgc3RhdGVzIG9uIHByZWZpeGVkIHNlbGVjdG9ycy5cblxuLmZvcm0tcmFuZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhZGQoJGZvcm0tcmFuZ2UtdGh1bWItaGVpZ2h0LCAkZm9ybS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93LXdpZHRoICogMik7XG4gIHBhZGRpbmc6IDA7IC8vIE5lZWQgdG8gcmVzZXQgcGFkZGluZ1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuXG4gICAgLy8gUHNldWRvLWVsZW1lbnRzIG11c3QgYmUgc3BsaXQgYWNyb3NzIG11bHRpcGxlIHJ1bGVzZXRzIHRvIGhhdmUgYW4gZWZmZWN0LlxuICAgIC8vIE5vIGJveC1zaGFkb3coKSBtaXhpbiBmb3IgZm9jdXMgYWNjZXNzaWJpbGl0eS5cbiAgICAmOjotd2Via2l0LXNsaWRlci10aHVtYiB7IGJveC1zaGFkb3c6ICRmb3JtLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3c7IH1cbiAgICAmOjotbW96LXJhbmdlLXRodW1iICAgICB7IGJveC1zaGFkb3c6ICRmb3JtLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3c7IH1cbiAgfVxuXG4gICY6Oi1tb3otZm9jdXMtb3V0ZXIge1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gICY6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICB3aWR0aDogJGZvcm0tcmFuZ2UtdGh1bWItd2lkdGg7XG4gICAgaGVpZ2h0OiAkZm9ybS1yYW5nZS10aHVtYi1oZWlnaHQ7XG4gICAgbWFyZ2luLXRvcDogKCRmb3JtLXJhbmdlLXRyYWNrLWhlaWdodCAtICRmb3JtLXJhbmdlLXRodW1iLWhlaWdodCkgKiAuNTsgLy8gV2Via2l0IHNwZWNpZmljXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkZm9ybS1yYW5nZS10aHVtYi1iZyk7XG4gICAgYm9yZGVyOiAkZm9ybS1yYW5nZS10aHVtYi1ib3JkZXI7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZm9ybS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRmb3JtLXJhbmdlLXRodW1iLWJveC1zaGFkb3cpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJGZvcm0tcmFuZ2UtdGh1bWItdHJhbnNpdGlvbik7XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkZm9ybS1yYW5nZS10aHVtYi1hY3RpdmUtYmcpO1xuICAgIH1cbiAgfVxuXG4gICY6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcbiAgICB3aWR0aDogJGZvcm0tcmFuZ2UtdHJhY2std2lkdGg7XG4gICAgaGVpZ2h0OiAkZm9ybS1yYW5nZS10cmFjay1oZWlnaHQ7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50OyAvLyBXaHk/XG4gICAgY3Vyc29yOiAkZm9ybS1yYW5nZS10cmFjay1jdXJzb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZvcm0tcmFuZ2UtdHJhY2stYmc7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRmb3JtLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXMpO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGZvcm0tcmFuZ2UtdHJhY2stYm94LXNoYWRvdyk7XG4gIH1cblxuICAmOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICB3aWR0aDogJGZvcm0tcmFuZ2UtdGh1bWItd2lkdGg7XG4gICAgaGVpZ2h0OiAkZm9ybS1yYW5nZS10aHVtYi1oZWlnaHQ7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkZm9ybS1yYW5nZS10aHVtYi1iZyk7XG4gICAgYm9yZGVyOiAkZm9ybS1yYW5nZS10aHVtYi1ib3JkZXI7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZm9ybS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRmb3JtLXJhbmdlLXRodW1iLWJveC1zaGFkb3cpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJGZvcm0tcmFuZ2UtdGh1bWItdHJhbnNpdGlvbik7XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkZm9ybS1yYW5nZS10aHVtYi1hY3RpdmUtYmcpO1xuICAgIH1cbiAgfVxuXG4gICY6Oi1tb3otcmFuZ2UtdHJhY2sge1xuICAgIHdpZHRoOiAkZm9ybS1yYW5nZS10cmFjay13aWR0aDtcbiAgICBoZWlnaHQ6ICRmb3JtLXJhbmdlLXRyYWNrLWhlaWdodDtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY3Vyc29yOiAkZm9ybS1yYW5nZS10cmFjay1jdXJzb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZvcm0tcmFuZ2UtdHJhY2stYmc7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgLy8gRmlyZWZveCBzcGVjaWZpYz9cbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRmb3JtLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXMpO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGZvcm0tcmFuZ2UtdHJhY2stYm94LXNoYWRvdyk7XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICY6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb3JtLXJhbmdlLXRodW1iLWRpc2FibGVkLWJnO1xuICAgIH1cblxuICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvcm0tcmFuZ2UtdGh1bWItZGlzYWJsZWQtYmc7XG4gICAgfVxuICB9XG59XG4iLCIuZm9ybS1mbG9hdGluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICA+IC5mb3JtLWNvbnRyb2wsXG4gID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQsXG4gID4gLmZvcm0tc2VsZWN0IHtcbiAgICBoZWlnaHQ6ICRmb3JtLWZsb2F0aW5nLWhlaWdodDtcbiAgICBtaW4taGVpZ2h0OiAkZm9ybS1mbG9hdGluZy1oZWlnaHQ7XG4gICAgbGluZS1oZWlnaHQ6ICRmb3JtLWZsb2F0aW5nLWxpbmUtaGVpZ2h0O1xuICB9XG5cbiAgPiBsYWJlbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDI7XG4gICAgaGVpZ2h0OiAxMDAlOyAvLyBhbGxvdyB0ZXh0YXJlYXNcbiAgICBwYWRkaW5nOiAkZm9ybS1mbG9hdGluZy1wYWRkaW5nLXkgJGZvcm0tZmxvYXRpbmctcGFkZGluZy14O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7IC8vIFJlcXVpcmVkIGZvciBhbGlnbmluZyBsYWJlbCdzIHRleHQgd2l0aCB0aGUgaW5wdXQgYXMgaXQgYWZmZWN0cyBpbm5lciBib3ggbW9kZWxcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkZm9ybS1mbG9hdGluZy10cmFuc2l0aW9uKTtcbiAgfVxuXG4gID4gLmZvcm0tY29udHJvbCxcbiAgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dCB7XG4gICAgcGFkZGluZzogJGZvcm0tZmxvYXRpbmctcGFkZGluZy15ICRmb3JtLWZsb2F0aW5nLXBhZGRpbmcteDtcblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmOmZvY3VzLFxuICAgICY6bm90KDpwbGFjZWhvbGRlci1zaG93bikge1xuICAgICAgcGFkZGluZy10b3A6ICRmb3JtLWZsb2F0aW5nLWlucHV0LXBhZGRpbmctdDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkZm9ybS1mbG9hdGluZy1pbnB1dC1wYWRkaW5nLWI7XG4gICAgfVxuICAgIC8vIER1cGxpY2F0ZWQgYmVjYXVzZSBgOi13ZWJraXQtYXV0b2ZpbGxgIGludmFsaWRhdGVzIG90aGVyIHNlbGVjdG9ycyB3aGVuIGdyb3VwZWRcbiAgICAmOi13ZWJraXQtYXV0b2ZpbGwge1xuICAgICAgcGFkZGluZy10b3A6ICRmb3JtLWZsb2F0aW5nLWlucHV0LXBhZGRpbmctdDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkZm9ybS1mbG9hdGluZy1pbnB1dC1wYWRkaW5nLWI7XG4gICAgfVxuICB9XG5cbiAgPiAuZm9ybS1zZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAkZm9ybS1mbG9hdGluZy1pbnB1dC1wYWRkaW5nLXQ7XG4gICAgcGFkZGluZy1ib3R0b206ICRmb3JtLWZsb2F0aW5nLWlucHV0LXBhZGRpbmctYjtcbiAgfVxuXG4gID4gLmZvcm0tY29udHJvbDpmb2N1cyxcbiAgPiAuZm9ybS1jb250cm9sOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pLFxuICA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LFxuICA+IC5mb3JtLXNlbGVjdCB7XG4gICAgfiBsYWJlbCB7XG4gICAgICBjb2xvcjogcmdiYSh2YXIoLS0jeyRwcmVmaXh9Ym9keS1jb2xvci1yZ2IpLCAjeyRmb3JtLWZsb2F0aW5nLWxhYmVsLW9wYWNpdHl9KTtcbiAgICAgIHRyYW5zZm9ybTogJGZvcm0tZmxvYXRpbmctbGFiZWwtdHJhbnNmb3JtO1xuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6ICRmb3JtLWZsb2F0aW5nLXBhZGRpbmcteSAoJGZvcm0tZmxvYXRpbmctcGFkZGluZy14ICogLjUpO1xuICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgaGVpZ2h0OiAkZm9ybS1mbG9hdGluZy1sYWJlbC1oZWlnaHQ7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iZztcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIER1cGxpY2F0ZWQgYmVjYXVzZSBgOi13ZWJraXQtYXV0b2ZpbGxgIGludmFsaWRhdGVzIG90aGVyIHNlbGVjdG9ycyB3aGVuIGdyb3VwZWRcbiAgPiAuZm9ybS1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwge1xuICAgIH4gbGFiZWwge1xuICAgICAgY29sb3I6IHJnYmEodmFyKC0tI3skcHJlZml4fWJvZHktY29sb3ItcmdiKSwgI3skZm9ybS1mbG9hdGluZy1sYWJlbC1vcGFjaXR5fSk7XG4gICAgICB0cmFuc2Zvcm06ICRmb3JtLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTtcbiAgICB9XG4gIH1cblxuICA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0IHtcbiAgICB+IGxhYmVsIHtcbiAgICAgIGJvcmRlci13aWR0aDogJGlucHV0LWJvcmRlci13aWR0aCAwOyAvLyBSZXF1aXJlZCB0byBwcm9wZXJseSBwb3NpdGlvbiBsYWJlbCB0ZXh0IC0gYXMgZXhwbGFpbmVkIGFib3ZlXG4gICAgfVxuICB9XG5cbiAgPiA6ZGlzYWJsZWQgfiBsYWJlbCxcbiAgPiAuZm9ybS1jb250cm9sOmRpc2FibGVkIH4gbGFiZWwgeyAvLyBSZXF1aXJlZCBmb3IgYC5mb3JtLWNvbnRyb2xgcyBiZWNhdXNlIG9mIHNwZWNpZmljaXR5XG4gICAgY29sb3I6ICRmb3JtLWZsb2F0aW5nLWxhYmVsLWRpc2FibGVkLWNvbG9yO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWRpc2FibGVkLWJnO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uaW5wdXQtZ3JvdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDsgLy8gRm9yIGZvcm0gdmFsaWRhdGlvbiBmZWVkYmFja1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAuZm9ybS1jb250cm9sLFxuICA+IC5mb3JtLXNlbGVjdCxcbiAgPiAuZm9ybS1mbG9hdGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvLyBGb3IgZm9jdXMgc3RhdGUncyB6LWluZGV4XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgd2lkdGg6IDElO1xuICAgIG1pbi13aWR0aDogMDsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzYyNDcxNDAvd2h5LWRvbnQtZmxleC1pdGVtcy1zaHJpbmstcGFzdC1jb250ZW50LXNpemVcbiAgfVxuXG4gIC8vIEJyaW5nIHRoZSBcImFjdGl2ZVwiIGZvcm0gY29udHJvbCB0byB0aGUgdG9wIG9mIHN1cnJvdW5kaW5nIGVsZW1lbnRzXG4gID4gLmZvcm0tY29udHJvbDpmb2N1cyxcbiAgPiAuZm9ybS1zZWxlY3Q6Zm9jdXMsXG4gID4gLmZvcm0tZmxvYXRpbmc6Zm9jdXMtd2l0aGluIHtcbiAgICB6LWluZGV4OiA1O1xuICB9XG5cbiAgLy8gRW5zdXJlIGJ1dHRvbnMgYXJlIGFsd2F5cyBhYm92ZSBpbnB1dHMgZm9yIG1vcmUgdmlzdWFsbHkgcGxlYXNpbmcgYm9yZGVycy5cbiAgLy8gVGhpcyBpc24ndCBuZWVkZWQgZm9yIGAuaW5wdXQtZ3JvdXAtdGV4dGAgc2luY2UgaXQgc2hhcmVzIHRoZSBzYW1lIGJvcmRlci1jb2xvclxuICAvLyBhcyBvdXIgaW5wdXRzLlxuICAuYnRuIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMjtcblxuICAgICY6Zm9jdXMge1xuICAgICAgei1pbmRleDogNTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBUZXh0dWFsIGFkZG9uc1xuLy9cbi8vIFNlcnZlcyBhcyBhIGNhdGNoLWFsbCBlbGVtZW50IGZvciBhbnkgdGV4dCBvciByYWRpby9jaGVja2JveCBpbnB1dCB5b3Ugd2lzaFxuLy8gdG8gcHJlcGVuZCBvciBhcHBlbmQgdG8gYW4gaW5wdXQuXG5cbi5pbnB1dC1ncm91cC10ZXh0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogJGlucHV0LWdyb3VwLWFkZG9uLXBhZGRpbmcteSAkaW5wdXQtZ3JvdXAtYWRkb24tcGFkZGluZy14O1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZSk7IC8vIE1hdGNoIGlucHV0c1xuICBmb250LXdlaWdodDogJGlucHV0LWdyb3VwLWFkZG9uLWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWdyb3VwLWFkZG9uLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1ncm91cC1hZGRvbi1iZztcbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLXdpZHRoIHNvbGlkICRpbnB1dC1ncm91cC1hZGRvbi1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMpO1xufVxuXG5cbi8vIFNpemluZ1xuLy9cbi8vIFJlbWl4IHRoZSBkZWZhdWx0IGZvcm0gY29udHJvbCBzaXppbmcgY2xhc3NlcyBpbnRvIG5ldyBvbmVzIGZvciBlYXNpZXJcbi8vIG1hbmlwdWxhdGlvbi5cblxuLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLXNlbGVjdCxcbi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLWxnID4gLmJ0biB7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktbGcgJGlucHV0LXBhZGRpbmcteC1sZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtbGcpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLWxnKTtcbn1cblxuLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLXNlbGVjdCxcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLXNtID4gLmJ0biB7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktc20gJGlucHV0LXBhZGRpbmcteC1zbTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtc20pO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLXNtKTtcbn1cblxuLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tc2VsZWN0LFxuLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tc2VsZWN0IHtcbiAgcGFkZGluZy1yaWdodDogJGZvcm0tc2VsZWN0LXBhZGRpbmcteCArICRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZztcbn1cblxuXG4vLyBSb3VuZGVkIGNvcm5lcnNcbi8vXG4vLyBUaGVzZSBydWxlc2V0cyBtdXN0IGNvbWUgYWZ0ZXIgdGhlIHNpemluZyBvbmVzIHRvIHByb3Blcmx5IG92ZXJyaWRlIHNtIGFuZCBsZ1xuLy8gYm9yZGVyLXJhZGl1cyB2YWx1ZXMgd2hlbiBleHRlbmRpbmcuIFRoZXkncmUgbW9yZSBzcGVjaWZpYyB0aGFuIHdlJ2QgbGlrZVxuLy8gd2l0aCB0aGUgYC5pbnB1dC1ncm91cCA+YCBwYXJ0LCBidXQgd2l0aG91dCBpdCwgd2UgY2Fubm90IG92ZXJyaWRlIHRoZSBzaXppbmcuXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kdXBsaWNhdGUtc2VsZWN0b3JzXG4uaW5wdXQtZ3JvdXAge1xuICAmOm5vdCguaGFzLXZhbGlkYXRpb24pIHtcbiAgICA+IDpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKTpub3QoLmRyb3Bkb3duLW1lbnUpOm5vdCguZm9ybS1mbG9hdGluZyksXG4gICAgPiAuZHJvcGRvd24tdG9nZ2xlOm50aC1sYXN0LWNoaWxkKG4gKyAzKSxcbiAgICA+IC5mb3JtLWZsb2F0aW5nOm5vdCg6bGFzdC1jaGlsZCkgPiAuZm9ybS1jb250cm9sLFxuICAgID4gLmZvcm0tZmxvYXRpbmc6bm90KDpsYXN0LWNoaWxkKSA+IC5mb3JtLXNlbGVjdCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItZW5kLXJhZGl1cygwKTtcbiAgICB9XG4gIH1cblxuICAmLmhhcy12YWxpZGF0aW9uIHtcbiAgICA+IDpudGgtbGFzdC1jaGlsZChuICsgMyk6bm90KC5kcm9wZG93bi10b2dnbGUpOm5vdCguZHJvcGRvd24tbWVudSk6bm90KC5mb3JtLWZsb2F0aW5nKSxcbiAgICA+IC5kcm9wZG93bi10b2dnbGU6bnRoLWxhc3QtY2hpbGQobiArIDQpLFxuICAgID4gLmZvcm0tZmxvYXRpbmc6bnRoLWxhc3QtY2hpbGQobiArIDMpID4gLmZvcm0tY29udHJvbCxcbiAgICA+IC5mb3JtLWZsb2F0aW5nOm50aC1sYXN0LWNoaWxkKG4gKyAzKSA+IC5mb3JtLXNlbGVjdCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItZW5kLXJhZGl1cygwKTtcbiAgICB9XG4gIH1cblxuICAkdmFsaWRhdGlvbi1tZXNzYWdlczogXCJcIjtcbiAgQGVhY2ggJHN0YXRlIGluIG1hcC1rZXlzKCRmb3JtLXZhbGlkYXRpb24tc3RhdGVzKSB7XG4gICAgJHZhbGlkYXRpb24tbWVzc2FnZXM6ICR2YWxpZGF0aW9uLW1lc3NhZ2VzICsgXCI6bm90KC5cIiArIHVucXVvdGUoJHN0YXRlKSArIFwiLXRvb2x0aXApXCIgKyBcIjpub3QoLlwiICsgdW5xdW90ZSgkc3RhdGUpICsgXCItZmVlZGJhY2spXCI7XG4gIH1cblxuICA+IDpub3QoOmZpcnN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLW1lbnUpI3skdmFsaWRhdGlvbi1tZXNzYWdlc30ge1xuICAgIG1hcmdpbi1sZWZ0OiBjYWxjKCN7JGlucHV0LWJvcmRlci13aWR0aH0gKiAtMSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgQGluY2x1ZGUgYm9yZGVyLXN0YXJ0LXJhZGl1cygwKTtcbiAgfVxuXG4gID4gLmZvcm0tZmxvYXRpbmc6bm90KDpmaXJzdC1jaGlsZCkgPiAuZm9ybS1jb250cm9sLFxuICA+IC5mb3JtLWZsb2F0aW5nOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmZvcm0tc2VsZWN0IHtcbiAgICBAaW5jbHVkZSBib3JkZXItc3RhcnQtcmFkaXVzKDApO1xuICB9XG59XG4iLCIvLyBUaGlzIG1peGluIHVzZXMgYW4gYGlmKClgIHRlY2huaXF1ZSB0byBiZSBjb21wYXRpYmxlIHdpdGggRGFydCBTYXNzXG4vLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3Mvc2Fzcy9pc3N1ZXMvMTg3MyNpc3N1ZWNvbW1lbnQtMTUyMjkzNzI1IGZvciBtb3JlIGRldGFpbHNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGZvcm0tdmFsaWRhdGlvbi1taXhpbnNcbkBtaXhpbiBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gIEBpZiAoJHN0YXRlID09IFwidmFsaWRcIiBvciAkc3RhdGUgPT0gXCJpbnZhbGlkXCIpIHtcbiAgICAud2FzLXZhbGlkYXRlZCAje2lmKCYsIFwiJlwiLCBcIlwiKX06I3skc3RhdGV9LFxuICAgICN7aWYoJiwgXCImXCIsIFwiXCIpfS5pcy0jeyRzdGF0ZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAje2lmKCYsIFwiJlwiLCBcIlwiKX0uaXMtI3skc3RhdGV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm9ybS12YWxpZGF0aW9uLXN0YXRlKFxuICAkc3RhdGUsXG4gICRjb2xvcixcbiAgJGljb24sXG4gICR0b29sdGlwLWNvbG9yOiBjb2xvci1jb250cmFzdCgkY29sb3IpLFxuICAkdG9vbHRpcC1iZy1jb2xvcjogcmdiYSgkY29sb3IsICRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtb3BhY2l0eSksXG4gICRmb2N1cy1ib3gtc2hhZG93OiAwIDAgJGlucHV0LWJ0bi1mb2N1cy1ibHVyICRpbnB1dC1mb2N1cy13aWR0aCByZ2JhKCRjb2xvciwgJGlucHV0LWJ0bi1mb2N1cy1jb2xvci1vcGFjaXR5KSxcbiAgJGJvcmRlci1jb2xvcjogJGNvbG9yXG4pIHtcbiAgLiN7JHN0YXRlfS1mZWVkYmFjayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tdG9wOiAkZm9ybS1mZWVkYmFjay1tYXJnaW4tdG9wO1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9ybS1mZWVkYmFjay1mb250LXNpemUpO1xuICAgIGZvbnQtc3R5bGU6ICRmb3JtLWZlZWRiYWNrLWZvbnQtc3R5bGU7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgfVxuXG4gIC4jeyRzdGF0ZX0tdG9vbHRpcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTAwJTtcbiAgICB6LWluZGV4OiA1O1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvLyBDb250YWluIHRvIHBhcmVudCB3aGVuIHBvc3NpYmxlXG4gICAgcGFkZGluZzogJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1wYWRkaW5nLXkgJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1wYWRkaW5nLXg7XG4gICAgbWFyZ2luLXRvcDogLjFyZW07XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1saW5lLWhlaWdodDtcbiAgICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRvb2x0aXAtYmctY29sb3I7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZm9ybS1mZWVkYmFjay10b29sdGlwLWJvcmRlci1yYWRpdXMpO1xuICB9XG5cbiAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgIH4gLiN7JHN0YXRlfS1mZWVkYmFjayxcbiAgICB+IC4jeyRzdGF0ZX0tdG9vbHRpcCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAuZm9ybS1jb250cm9sIHtcbiAgICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgICBib3JkZXItY29sb3I6ICRib3JkZXItY29sb3I7XG5cbiAgICAgIEBpZiAkZW5hYmxlLXZhbGlkYXRpb24taWNvbnMge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkaW5wdXQtaGVpZ2h0LWlubmVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRpY29uKTtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgJGlucHV0LWhlaWdodC1pbm5lci1xdWFydGVyIGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAkaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGYgJGlucHV0LWhlaWdodC1pbm5lci1oYWxmO1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLWNvbG9yO1xuICAgICAgICBib3gtc2hhZG93OiAkZm9jdXMtYm94LXNoYWRvdztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG4gIHRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gICAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgICAgQGlmICRlbmFibGUtdmFsaWRhdGlvbi1pY29ucyB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRpbnB1dC1oZWlnaHQtaW5uZXI7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHRvcCAkaW5wdXQtaGVpZ2h0LWlubmVyLXF1YXJ0ZXIgcmlnaHQgJGlucHV0LWhlaWdodC1pbm5lci1xdWFydGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5mb3JtLXNlbGVjdCB7XG4gICAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLWNvbG9yO1xuXG4gICAgICBAaWYgJGVuYWJsZS12YWxpZGF0aW9uLWljb25zIHtcbiAgICAgICAgJjpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksXG4gICAgICAgICY6bm90KFttdWx0aXBsZV0pW3NpemU9XCIxXCJdIHtcbiAgICAgICAgICAtLSN7JHByZWZpeH1mb3JtLXNlbGVjdC1iZy1pY29uOiAje2VzY2FwZS1zdmcoJGljb24pfTtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkZm9ybS1zZWxlY3QtZmVlZGJhY2staWNvbi1wYWRkaW5nLWVuZDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkZm9ybS1zZWxlY3QtYmctcG9zaXRpb24sICRmb3JtLXNlbGVjdC1mZWVkYmFjay1pY29uLXBvc2l0aW9uO1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogJGZvcm0tc2VsZWN0LWJnLXNpemUsICRmb3JtLXNlbGVjdC1mZWVkYmFjay1pY29uLXNpemU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGJvcmRlci1jb2xvcjtcbiAgICAgICAgYm94LXNoYWRvdzogJGZvY3VzLWJveC1zaGFkb3c7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZvcm0tY29udHJvbC1jb2xvciB7XG4gICAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgICAgQGlmICRlbmFibGUtdmFsaWRhdGlvbi1pY29ucyB7XG4gICAgICAgIHdpZHRoOiBhZGQoJGZvcm0tY29sb3Itd2lkdGgsICRpbnB1dC1oZWlnaHQtaW5uZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgICBib3JkZXItY29sb3I6ICRib3JkZXItY29sb3I7XG5cbiAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJveC1zaGFkb3c6ICRmb2N1cy1ib3gtc2hhZG93O1xuICAgICAgfVxuXG4gICAgICB+IC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLmZvcm0tY2hlY2staW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICB+IC4jeyRzdGF0ZX0tZmVlZGJhY2sge1xuICAgICAgbWFyZ2luLWxlZnQ6IC41ZW07XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwIHtcbiAgICA+IC5mb3JtLWNvbnRyb2w6bm90KDpmb2N1cyksXG4gICAgPiAuZm9ybS1zZWxlY3Q6bm90KDpmb2N1cyksXG4gICAgPiAuZm9ybS1mbG9hdGluZzpub3QoOmZvY3VzLXdpdGhpbikge1xuICAgICAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgICAgICBAaWYgJHN0YXRlID09IFwidmFsaWRcIiB7XG4gICAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgfSBAZWxzZSBpZiAkc3RhdGUgPT0gXCJpbnZhbGlkXCIge1xuICAgICAgICAgIHotaW5kZXg6IDQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgZm9ybS12YWxpZGF0aW9uLW1peGluc1xuIiwiLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uYnRuIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IGJ0bi1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1idG4tcGFkZGluZy14OiAjeyRidG4tcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9YnRuLXBhZGRpbmcteTogI3skYnRuLXBhZGRpbmcteX07XG4gIC0tI3skcHJlZml4fWJ0bi1mb250LWZhbWlseTogI3skYnRuLWZvbnQtZmFtaWx5fTtcbiAgQGluY2x1ZGUgcmZzKCRidG4tZm9udC1zaXplLCAtLSN7JHByZWZpeH1idG4tZm9udC1zaXplKTtcbiAgLS0jeyRwcmVmaXh9YnRuLWZvbnQtd2VpZ2h0OiAjeyRidG4tZm9udC13ZWlnaHR9O1xuICAtLSN7JHByZWZpeH1idG4tbGluZS1oZWlnaHQ6ICN7JGJ0bi1saW5lLWhlaWdodH07XG4gIC0tI3skcHJlZml4fWJ0bi1jb2xvcjogI3skYnRuLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWJnOiB0cmFuc3BhcmVudDtcbiAgLS0jeyRwcmVmaXh9YnRuLWJvcmRlci13aWR0aDogI3skYnRuLWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fWJ0bi1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAtLSN7JHByZWZpeH1idG4tYm9yZGVyLXJhZGl1czogI3skYnRuLWJvcmRlci1yYWRpdXN9O1xuICAtLSN7JHByZWZpeH1idG4taG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLS0jeyRwcmVmaXh9YnRuLWJveC1zaGFkb3c6ICN7JGJ0bi1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLW9wYWNpdHk6ICN7JGJ0bi1kaXNhYmxlZC1vcGFjaXR5fTtcbiAgLS0jeyRwcmVmaXh9YnRuLWZvY3VzLWJveC1zaGFkb3c6IDAgMCAwICN7JGJ0bi1mb2N1cy13aWR0aH0gcmdiYSh2YXIoLS0jeyRwcmVmaXh9YnRuLWZvY3VzLXNoYWRvdy1yZ2IpLCAuNSk7XG4gIC8vIHNjc3MtZG9jcy1lbmQgYnRuLWNzcy12YXJzXG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9YnRuLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fWJ0bi1wYWRkaW5nLXgpO1xuICBmb250LWZhbWlseTogdmFyKC0tI3skcHJlZml4fWJ0bi1mb250LWZhbWlseSk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSh2YXIoLS0jeyRwcmVmaXh9YnRuLWZvbnQtc2l6ZSkpO1xuICBmb250LXdlaWdodDogdmFyKC0tI3skcHJlZml4fWJ0bi1mb250LXdlaWdodCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWxpbmUtaGVpZ2h0KTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4tY29sb3IpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogaWYoJGxpbmstZGVjb3JhdGlvbiA9PSBub25lLCBudWxsLCBub25lKTtcbiAgd2hpdGUtc3BhY2U6ICRidG4td2hpdGUtc3BhY2U7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGN1cnNvcjogaWYoJGVuYWJsZS1idXR0b24tcG9pbnRlcnMsIHBvaW50ZXIsIG51bGwpO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tI3skcHJlZml4fWJ0bi1ib3JkZXItY29sb3IpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1idG4tYm9yZGVyLXJhZGl1cykpO1xuICBAaW5jbHVkZSBncmFkaWVudC1iZyh2YXIoLS0jeyRwcmVmaXh9YnRuLWJnKSk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3codmFyKC0tI3skcHJlZml4fWJ0bi1ib3gtc2hhZG93KSk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGJ0bi10cmFuc2l0aW9uKTtcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1ob3Zlci1jb2xvcik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBpZigkbGluay1ob3Zlci1kZWNvcmF0aW9uID09IHVuZGVybGluZSwgbm9uZSwgbnVsbCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1ob3Zlci1iZyk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJvcmRlci1jb2xvcik7XG4gIH1cblxuICAuYnRuLWNoZWNrICsgJjpob3ZlciB7XG4gICAgLy8gb3ZlcnJpZGUgZm9yIHRoZSBjaGVja2JveC9yYWRpbyBidXR0b25zXG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4tY29sb3IpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4tYmcpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1ib3JkZXItY29sb3IpO1xuICB9XG5cbiAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1ob3Zlci1jb2xvcik7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcodmFyKC0tI3skcHJlZml4fWJ0bi1ob3Zlci1iZykpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1ob3Zlci1ib3JkZXItY29sb3IpO1xuICAgIG91dGxpbmU6IDA7XG4gICAgLy8gQXZvaWQgdXNpbmcgbWl4aW4gc28gd2UgY2FuIHBhc3MgY3VzdG9tIGZvY3VzIHNoYWRvdyBwcm9wZXJseVxuICAgIEBpZiAkZW5hYmxlLXNoYWRvd3Mge1xuICAgICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fWJ0bi1ib3gtc2hhZG93KSwgdmFyKC0tI3skcHJlZml4fWJ0bi1mb2N1cy1ib3gtc2hhZG93KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIGJveC1zaGFkb3c6IHZhcigtLSN7JHByZWZpeH1idG4tZm9jdXMtYm94LXNoYWRvdyk7XG4gICAgfVxuICB9XG5cbiAgLmJ0bi1jaGVjazpmb2N1cy12aXNpYmxlICsgJiB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJvcmRlci1jb2xvcik7XG4gICAgb3V0bGluZTogMDtcbiAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWJveC1zaGFkb3cpLCB2YXIoLS0jeyRwcmVmaXh9YnRuLWZvY3VzLWJveC1zaGFkb3cpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fWJ0bi1mb2N1cy1ib3gtc2hhZG93KTtcbiAgICB9XG4gIH1cblxuICAuYnRuLWNoZWNrOmNoZWNrZWQgKyAmLFxuICA6bm90KC5idG4tY2hlY2spICsgJjphY3RpdmUsXG4gICY6Zmlyc3QtY2hpbGQ6YWN0aXZlLFxuICAmLmFjdGl2ZSxcbiAgJi5zaG93IHtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtY29sb3IpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4tYWN0aXZlLWJnKTtcbiAgICAvLyBSZW1vdmUgQ1NTIGdyYWRpZW50cyBpZiB0aGV5J3JlIGVuYWJsZWRcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpZigkZW5hYmxlLWdyYWRpZW50cywgbm9uZSwgbnVsbCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1ib3JkZXItY29sb3IpO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3codmFyKC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtc2hhZG93KSk7XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgLy8gQXZvaWQgdXNpbmcgbWl4aW4gc28gd2UgY2FuIHBhc3MgY3VzdG9tIGZvY3VzIHNoYWRvdyBwcm9wZXJseVxuICAgICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLSN7JHByZWZpeH1idG4tYWN0aXZlLXNoYWRvdyksIHZhcigtLSN7JHByZWZpeH1idG4tZm9jdXMtYm94LXNoYWRvdyk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fWJ0bi1mb2N1cy1ib3gtc2hhZG93KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmRpc2FibGVkLFxuICAmLmRpc2FibGVkLFxuICBmaWVsZHNldDpkaXNhYmxlZCAmIHtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1jb2xvcik7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1iZyk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaWYoJGVuYWJsZS1ncmFkaWVudHMsIG5vbmUsIG51bGwpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3IpO1xuICAgIG9wYWNpdHk6IHZhcigtLSN7JHByZWZpeH1idG4tZGlzYWJsZWQtb3BhY2l0eSk7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBBbHRlcm5hdGUgYnV0dG9uc1xuLy9cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJ0bi12YXJpYW50LWxvb3BzXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgLmJ0bi0jeyRjb2xvcn0ge1xuICAgIEBpZiAkY29sb3IgPT0gXCJsaWdodFwiIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi12YXJpYW50KFxuICAgICAgICAkdmFsdWUsXG4gICAgICAgICR2YWx1ZSxcbiAgICAgICAgJGhvdmVyLWJhY2tncm91bmQ6IHNoYWRlLWNvbG9yKCR2YWx1ZSwgJGJ0bi1ob3Zlci1iZy1zaGFkZS1hbW91bnQpLFxuICAgICAgICAkaG92ZXItYm9yZGVyOiBzaGFkZS1jb2xvcigkdmFsdWUsICRidG4taG92ZXItYm9yZGVyLXNoYWRlLWFtb3VudCksXG4gICAgICAgICRhY3RpdmUtYmFja2dyb3VuZDogc2hhZGUtY29sb3IoJHZhbHVlLCAkYnRuLWFjdGl2ZS1iZy1zaGFkZS1hbW91bnQpLFxuICAgICAgICAkYWN0aXZlLWJvcmRlcjogc2hhZGUtY29sb3IoJHZhbHVlLCAkYnRuLWFjdGl2ZS1ib3JkZXItc2hhZGUtYW1vdW50KVxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRjb2xvciA9PSBcImRhcmtcIiB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tdmFyaWFudChcbiAgICAgICAgJHZhbHVlLFxuICAgICAgICAkdmFsdWUsXG4gICAgICAgICRob3Zlci1iYWNrZ3JvdW5kOiB0aW50LWNvbG9yKCR2YWx1ZSwgJGJ0bi1ob3Zlci1iZy10aW50LWFtb3VudCksXG4gICAgICAgICRob3Zlci1ib3JkZXI6IHRpbnQtY29sb3IoJHZhbHVlLCAkYnRuLWhvdmVyLWJvcmRlci10aW50LWFtb3VudCksXG4gICAgICAgICRhY3RpdmUtYmFja2dyb3VuZDogdGludC1jb2xvcigkdmFsdWUsICRidG4tYWN0aXZlLWJnLXRpbnQtYW1vdW50KSxcbiAgICAgICAgJGFjdGl2ZS1ib3JkZXI6IHRpbnQtY29sb3IoJHZhbHVlLCAkYnRuLWFjdGl2ZS1ib3JkZXItdGludC1hbW91bnQpXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLXZhcmlhbnQoJHZhbHVlLCAkdmFsdWUpO1xuICAgIH1cbiAgfVxufVxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgLmJ0bi1vdXRsaW5lLSN7JGNvbG9yfSB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLW91dGxpbmUtdmFyaWFudCgkdmFsdWUpO1xuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIGJ0bi12YXJpYW50LWxvb3BzXG5cblxuLy9cbi8vIExpbmsgYnV0dG9uc1xuLy9cblxuLy8gTWFrZSBhIGJ1dHRvbiBsb29rIGFuZCBiZWhhdmUgbGlrZSBhIGxpbmtcbi5idG4tbGluayB7XG4gIC0tI3skcHJlZml4fWJ0bi1mb250LXdlaWdodDogI3skZm9udC13ZWlnaHQtbm9ybWFsfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWNvbG9yOiAjeyRidG4tbGluay1jb2xvcn07XG4gIC0tI3skcHJlZml4fWJ0bi1iZzogdHJhbnNwYXJlbnQ7XG4gIC0tI3skcHJlZml4fWJ0bi1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAtLSN7JHByZWZpeH1idG4taG92ZXItY29sb3I6ICN7JGJ0bi1saW5rLWhvdmVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtY29sb3I6ICN7JGJ0bi1saW5rLWhvdmVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAtLSN7JHByZWZpeH1idG4tZGlzYWJsZWQtY29sb3I6ICN7JGJ0bi1saW5rLWRpc2FibGVkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC0tI3skcHJlZml4fWJ0bi1ib3gtc2hhZG93OiAwIDAgMCAjMDAwOyAvLyBDYW4ndCB1c2UgYG5vbmVgIGFzIGtleXdvcmQgbmVnYXRlcyBhbGwgdmFsdWVzIHdoZW4gdXNlZCB3aXRoIG11bHRpcGxlIHNoYWRvd3NcbiAgLS0jeyRwcmVmaXh9YnRuLWZvY3VzLXNoYWRvdy1yZ2I6ICN7JGJ0bi1saW5rLWZvY3VzLXNoYWRvdy1yZ2J9O1xuXG4gIHRleHQtZGVjb3JhdGlvbjogJGxpbmstZGVjb3JhdGlvbjtcbiAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWhvdmVyLWRlY29yYXRpb247XG4gIH1cblxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWNvbG9yKTtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWNvbG9yKTtcbiAgfVxuXG4gIC8vIE5vIG5lZWQgZm9yIGFuIGFjdGl2ZSBzdGF0ZSBoZXJlXG59XG5cblxuLy9cbi8vIEJ1dHRvbiBTaXplc1xuLy9cblxuLmJ0bi1sZyB7XG4gIEBpbmNsdWRlIGJ1dHRvbi1zaXplKCRidG4tcGFkZGluZy15LWxnLCAkYnRuLXBhZGRpbmcteC1sZywgJGJ0bi1mb250LXNpemUtbGcsICRidG4tYm9yZGVyLXJhZGl1cy1sZyk7XG59XG5cbi5idG4tc20ge1xuICBAaW5jbHVkZSBidXR0b24tc2l6ZSgkYnRuLXBhZGRpbmcteS1zbSwgJGJ0bi1wYWRkaW5nLXgtc20sICRidG4tZm9udC1zaXplLXNtLCAkYnRuLWJvcmRlci1yYWRpdXMtc20pO1xufVxuIiwiLy8gQnV0dG9uIHZhcmlhbnRzXG4vL1xuLy8gRWFzaWx5IHB1bXAgb3V0IGRlZmF1bHQgc3R5bGVzLCBhcyB3ZWxsIGFzIDpob3ZlciwgOmZvY3VzLCA6YWN0aXZlLFxuLy8gYW5kIGRpc2FibGVkIG9wdGlvbnMgZm9yIGFsbCBidXR0b25zXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBidG4tdmFyaWFudC1taXhpblxuQG1peGluIGJ1dHRvbi12YXJpYW50KFxuICAkYmFja2dyb3VuZCxcbiAgJGJvcmRlcixcbiAgJGNvbG9yOiBjb2xvci1jb250cmFzdCgkYmFja2dyb3VuZCksXG4gICRob3Zlci1iYWNrZ3JvdW5kOiBpZigkY29sb3IgPT0gJGNvbG9yLWNvbnRyYXN0LWxpZ2h0LCBzaGFkZS1jb2xvcigkYmFja2dyb3VuZCwgJGJ0bi1ob3Zlci1iZy1zaGFkZS1hbW91bnQpLCB0aW50LWNvbG9yKCRiYWNrZ3JvdW5kLCAkYnRuLWhvdmVyLWJnLXRpbnQtYW1vdW50KSksXG4gICRob3Zlci1ib3JkZXI6IGlmKCRjb2xvciA9PSAkY29sb3ItY29udHJhc3QtbGlnaHQsIHNoYWRlLWNvbG9yKCRib3JkZXIsICRidG4taG92ZXItYm9yZGVyLXNoYWRlLWFtb3VudCksIHRpbnQtY29sb3IoJGJvcmRlciwgJGJ0bi1ob3Zlci1ib3JkZXItdGludC1hbW91bnQpKSxcbiAgJGhvdmVyLWNvbG9yOiBjb2xvci1jb250cmFzdCgkaG92ZXItYmFja2dyb3VuZCksXG4gICRhY3RpdmUtYmFja2dyb3VuZDogaWYoJGNvbG9yID09ICRjb2xvci1jb250cmFzdC1saWdodCwgc2hhZGUtY29sb3IoJGJhY2tncm91bmQsICRidG4tYWN0aXZlLWJnLXNoYWRlLWFtb3VudCksIHRpbnQtY29sb3IoJGJhY2tncm91bmQsICRidG4tYWN0aXZlLWJnLXRpbnQtYW1vdW50KSksXG4gICRhY3RpdmUtYm9yZGVyOiBpZigkY29sb3IgPT0gJGNvbG9yLWNvbnRyYXN0LWxpZ2h0LCBzaGFkZS1jb2xvcigkYm9yZGVyLCAkYnRuLWFjdGl2ZS1ib3JkZXItc2hhZGUtYW1vdW50KSwgdGludC1jb2xvcigkYm9yZGVyLCAkYnRuLWFjdGl2ZS1ib3JkZXItdGludC1hbW91bnQpKSxcbiAgJGFjdGl2ZS1jb2xvcjogY29sb3ItY29udHJhc3QoJGFjdGl2ZS1iYWNrZ3JvdW5kKSxcbiAgJGRpc2FibGVkLWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLFxuICAkZGlzYWJsZWQtYm9yZGVyOiAkYm9yZGVyLFxuICAkZGlzYWJsZWQtY29sb3I6IGNvbG9yLWNvbnRyYXN0KCRkaXNhYmxlZC1iYWNrZ3JvdW5kKVxuKSB7XG4gIC0tI3skcHJlZml4fWJ0bi1jb2xvcjogI3skY29sb3J9O1xuICAtLSN7JHByZWZpeH1idG4tYmc6ICN7JGJhY2tncm91bmR9O1xuICAtLSN7JHByZWZpeH1idG4tYm9yZGVyLWNvbG9yOiAjeyRib3JkZXJ9O1xuICAtLSN7JHByZWZpeH1idG4taG92ZXItY29sb3I6ICN7JGhvdmVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJnOiAjeyRob3Zlci1iYWNrZ3JvdW5kfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJvcmRlci1jb2xvcjogI3skaG92ZXItYm9yZGVyfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWZvY3VzLXNoYWRvdy1yZ2I6ICN7dG8tcmdiKG1peCgkY29sb3IsICRib3JkZXIsIDE1JSkpfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1jb2xvcjogI3skYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1iZzogI3skYWN0aXZlLWJhY2tncm91bmR9O1xuICAtLSN7JHByZWZpeH1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogI3skYWN0aXZlLWJvcmRlcn07XG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtc2hhZG93OiAjeyRidG4tYWN0aXZlLWJveC1zaGFkb3d9O1xuICAtLSN7JHByZWZpeH1idG4tZGlzYWJsZWQtY29sb3I6ICN7JGRpc2FibGVkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWJnOiAjeyRkaXNhYmxlZC1iYWNrZ3JvdW5kfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogI3skZGlzYWJsZWQtYm9yZGVyfTtcbn1cbi8vIHNjc3MtZG9jcy1lbmQgYnRuLXZhcmlhbnQtbWl4aW5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJ0bi1vdXRsaW5lLXZhcmlhbnQtbWl4aW5cbkBtaXhpbiBidXR0b24tb3V0bGluZS12YXJpYW50KFxuICAkY29sb3IsXG4gICRjb2xvci1ob3ZlcjogY29sb3ItY29udHJhc3QoJGNvbG9yKSxcbiAgJGFjdGl2ZS1iYWNrZ3JvdW5kOiAkY29sb3IsXG4gICRhY3RpdmUtYm9yZGVyOiAkY29sb3IsXG4gICRhY3RpdmUtY29sb3I6IGNvbG9yLWNvbnRyYXN0KCRhY3RpdmUtYmFja2dyb3VuZClcbikge1xuICAtLSN7JHByZWZpeH1idG4tY29sb3I6ICN7JGNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWJvcmRlci1jb2xvcjogI3skY29sb3J9O1xuICAtLSN7JHByZWZpeH1idG4taG92ZXItY29sb3I6ICN7JGNvbG9yLWhvdmVyfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJnOiAjeyRhY3RpdmUtYmFja2dyb3VuZH07XG4gIC0tI3skcHJlZml4fWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICN7JGFjdGl2ZS1ib3JkZXJ9O1xuICAtLSN7JHByZWZpeH1idG4tZm9jdXMtc2hhZG93LXJnYjogI3t0by1yZ2IoJGNvbG9yKX07XG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtY29sb3I6ICN7JGFjdGl2ZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtYmc6ICN7JGFjdGl2ZS1iYWNrZ3JvdW5kfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICN7JGFjdGl2ZS1ib3JkZXJ9O1xuICAtLSN7JHByZWZpeH1idG4tYWN0aXZlLXNoYWRvdzogI3skYnRuLWFjdGl2ZS1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWNvbG9yOiAjeyRjb2xvcn07XG4gIC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQ7XG4gIC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICN7JGNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9Z3JhZGllbnQ6IG5vbmU7XG59XG4vLyBzY3NzLWRvY3MtZW5kIGJ0bi1vdXRsaW5lLXZhcmlhbnQtbWl4aW5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJ0bi1zaXplLW1peGluXG5AbWl4aW4gYnV0dG9uLXNpemUoJHBhZGRpbmcteSwgJHBhZGRpbmcteCwgJGZvbnQtc2l6ZSwgJGJvcmRlci1yYWRpdXMpIHtcbiAgLS0jeyRwcmVmaXh9YnRuLXBhZGRpbmcteTogI3skcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9YnRuLXBhZGRpbmcteDogI3skcGFkZGluZy14fTtcbiAgQGluY2x1ZGUgcmZzKCRmb250LXNpemUsIC0tI3skcHJlZml4fWJ0bi1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1idG4tYm9yZGVyLXJhZGl1czogI3skYm9yZGVyLXJhZGl1c307XG59XG4vLyBzY3NzLWRvY3MtZW5kIGJ0bi1zaXplLW1peGluXG4iLCIuZmFkZSB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tZmFkZSk7XG5cbiAgJjpub3QoLnNob3cpIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbi8vIHNjc3MtZG9jcy1zdGFydCBjb2xsYXBzZS1jbGFzc2VzXG4uY29sbGFwc2Uge1xuICAmOm5vdCguc2hvdykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLmNvbGxhcHNpbmcge1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tY29sbGFwc2UpO1xuXG4gICYuY29sbGFwc2UtaG9yaXpvbnRhbCB7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tY29sbGFwc2Utd2lkdGgpO1xuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIGNvbGxhcHNlLWNsYXNzZXNcbiIsIi8vIFRoZSBkcm9wZG93biB3cmFwcGVyIChgPGRpdj5gKVxuLmRyb3B1cCxcbi5kcm9wZW5kLFxuLmRyb3Bkb3duLFxuLmRyb3BzdGFydCxcbi5kcm9wdXAtY2VudGVyLFxuLmRyb3Bkb3duLWNlbnRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgLy8gR2VuZXJhdGUgdGhlIGNhcmV0IGF1dG9tYXRpY2FsbHlcbiAgQGluY2x1ZGUgY2FyZXQoKTtcbn1cblxuLy8gVGhlIGRyb3Bkb3duIG1lbnVcbi5kcm9wZG93bi1tZW51IHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IGRyb3Bkb3duLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLXppbmRleDogI3skemluZGV4LWRyb3Bkb3dufTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbWluLXdpZHRoOiAjeyRkcm9wZG93bi1taW4td2lkdGh9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1wYWRkaW5nLXg6ICN7JGRyb3Bkb3duLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLXBhZGRpbmcteTogI3skZHJvcGRvd24tcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tc3BhY2VyOiAjeyRkcm9wZG93bi1zcGFjZXJ9O1xuICBAaW5jbHVkZSByZnMoJGRyb3Bkb3duLWZvbnQtc2l6ZSwgLS0jeyRwcmVmaXh9ZHJvcGRvd24tZm9udC1zaXplKTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tY29sb3I6ICN7JGRyb3Bkb3duLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tYmc6ICN7JGRyb3Bkb3duLWJnfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAjeyRkcm9wZG93bi1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1ib3JkZXItcmFkaXVzOiAjeyRkcm9wZG93bi1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLXdpZHRoOiAjeyRkcm9wZG93bi1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzOiAjeyRkcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tZGl2aWRlci1iZzogI3skZHJvcGRvd24tZGl2aWRlci1iZ307XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWRpdmlkZXItbWFyZ2luLXk6ICN7JGRyb3Bkb3duLWRpdmlkZXItbWFyZ2luLXl9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1ib3gtc2hhZG93OiAjeyRkcm9wZG93bi1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1jb2xvcjogI3skZHJvcGRvd24tbGluay1jb2xvcn07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I6ICN7JGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWhvdmVyLWJnOiAjeyRkcm9wZG93bi1saW5rLWhvdmVyLWJnfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I6ICN7JGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1hY3RpdmUtYmc6ICN7JGRyb3Bkb3duLWxpbmstYWN0aXZlLWJnfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjogI3skZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcn07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWl0ZW0tcGFkZGluZy14OiAjeyRkcm9wZG93bi1pdGVtLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWl0ZW0tcGFkZGluZy15OiAjeyRkcm9wZG93bi1pdGVtLXBhZGRpbmcteX07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWhlYWRlci1jb2xvcjogI3skZHJvcGRvd24taGVhZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24taGVhZGVyLXBhZGRpbmcteDogI3skZHJvcGRvd24taGVhZGVyLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXk6ICN7JGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXl9O1xuICAvLyBzY3NzLWRvY3MtZW5kIGRyb3Bkb3duLWNzcy12YXJzXG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24temluZGV4KTtcbiAgZGlzcGxheTogbm9uZTsgLy8gbm9uZSBieSBkZWZhdWx0LCBidXQgYmxvY2sgb24gXCJvcGVuXCIgb2YgdGhlIG1lbnVcbiAgbWluLXdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tbWluLXdpZHRoKTtcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLXBhZGRpbmcteCk7XG4gIG1hcmdpbjogMDsgLy8gT3ZlcnJpZGUgZGVmYXVsdCBtYXJnaW4gb2YgdWxcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1mb250LXNpemUpKTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1jb2xvcik7XG4gIHRleHQtYWxpZ246IGxlZnQ7IC8vIEVuc3VyZXMgcHJvcGVyIGFsaWdubWVudCBpZiBwYXJlbnQgaGFzIGl0IGNoYW5nZWQgKGUuZy4sIG1vZGFsIGZvb3RlcilcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWJnKTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLWNvbG9yKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLXJhZGl1cykpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1ib3gtc2hhZG93KSk7XG5cbiAgJltkYXRhLWJzLXBvcHBlcl0ge1xuICAgIHRvcDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1zcGFjZXIpO1xuICB9XG5cbiAgQGlmICRkcm9wZG93bi1wYWRkaW5nLXkgPT0gMCB7XG4gICAgPiAuZHJvcGRvd24taXRlbTpmaXJzdC1jaGlsZCxcbiAgICA+IGxpOmZpcnN0LWNoaWxkIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG4gICAgfVxuICAgID4gLmRyb3Bkb3duLWl0ZW06bGFzdC1jaGlsZCxcbiAgICA+IGxpOmxhc3QtY2hpbGQgLmRyb3Bkb3duLWl0ZW0ge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXModmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWlubmVyLWJvcmRlci1yYWRpdXMpKTtcbiAgICB9XG5cbiAgfVxufVxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgcmVzcG9uc2l2ZS1icmVha3BvaW50c1xuLy8gV2UgZGVsaWJlcmF0ZWx5IGhhcmRjb2RlIHRoZSBgYnMtYCBwcmVmaXggYmVjYXVzZSB3ZSBjaGVja1xuLy8gdGhpcyBjdXN0b20gcHJvcGVydHkgaW4gSlMgdG8gZGV0ZXJtaW5lIFBvcHBlcidzIHBvc2l0aW9uaW5nXG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC5kcm9wZG93bi1tZW51I3skaW5maXh9LXN0YXJ0IHtcbiAgICAgIC0tYnMtcG9zaXRpb246IHN0YXJ0O1xuXG4gICAgICAmW2RhdGEtYnMtcG9wcGVyXSB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1tZW51I3skaW5maXh9LWVuZCB7XG4gICAgICAtLWJzLXBvc2l0aW9uOiBlbmQ7XG5cbiAgICAgICZbZGF0YS1icy1wb3BwZXJdIHtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIHJlc3BvbnNpdmUtYnJlYWtwb2ludHNcblxuLy8gQWxsb3cgZm9yIGRyb3Bkb3ducyB0byBnbyBib3R0b20gdXAgKGFrYSwgZHJvcHVwLW1lbnUpXG4vLyBKdXN0IGFkZCAuZHJvcHVwIGFmdGVyIHRoZSBzdGFuZGFyZCAuZHJvcGRvd24gY2xhc3MgYW5kIHlvdSdyZSBzZXQuXG4uZHJvcHVwIHtcbiAgLmRyb3Bkb3duLW1lbnVbZGF0YS1icy1wb3BwZXJdIHtcbiAgICB0b3A6IGF1dG87XG4gICAgYm90dG9tOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLXNwYWNlcik7XG4gIH1cblxuICAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBjYXJldCh1cCk7XG4gIH1cbn1cblxuLmRyb3BlbmQge1xuICAuZHJvcGRvd24tbWVudVtkYXRhLWJzLXBvcHBlcl0ge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1zcGFjZXIpO1xuICB9XG5cbiAgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgQGluY2x1ZGUgY2FyZXQoZW5kKTtcbiAgICAmOjphZnRlciB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogMDtcbiAgICB9XG4gIH1cbn1cblxuLmRyb3BzdGFydCB7XG4gIC5kcm9wZG93bi1tZW51W2RhdGEtYnMtcG9wcGVyXSB7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAxMDAlO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1zcGFjZXIpO1xuICB9XG5cbiAgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgQGluY2x1ZGUgY2FyZXQoc3RhcnQpO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogMDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBEaXZpZGVycyAoYmFzaWNhbGx5IGFuIGA8aHI+YCkgd2l0aGluIHRoZSBkcm9wZG93blxuLmRyb3Bkb3duLWRpdmlkZXIge1xuICBoZWlnaHQ6IDA7XG4gIG1hcmdpbjogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWRpdmlkZXItbWFyZ2luLXkpIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tZGl2aWRlci1iZyk7XG4gIG9wYWNpdHk6IDE7IC8vIFJldmlzaXQgaW4gdjYgdG8gZGUtZHVwZSBzdHlsZXMgdGhhdCBjb25mbGljdCB3aXRoIDxocj4gZWxlbWVudFxufVxuXG4vLyBMaW5rcywgYnV0dG9ucywgYW5kIG1vcmUgd2l0aGluIHRoZSBkcm9wZG93biBtZW51XG4vL1xuLy8gYDxidXR0b24+YC1zcGVjaWZpYyBzdHlsZXMgYXJlIGRlbm90ZWQgd2l0aCBgLy8gRm9yIDxidXR0b24+c2Bcbi5kcm9wZG93bi1pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlOyAvLyBGb3IgYDxidXR0b24+YHNcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWl0ZW0tcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24taXRlbS1wYWRkaW5nLXgpO1xuICBjbGVhcjogYm90aDtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1jb2xvcik7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IC8vIEZvciBgPGJ1dHRvbj5gc1xuICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWRlY29yYXRpb24gPT0gbm9uZSwgbnVsbCwgbm9uZSk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8vIHByZXZlbnQgbGlua3MgZnJvbSByYW5kb21seSBicmVha2luZyBvbnRvIG5ldyBsaW5lc1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLy8gRm9yIGA8YnV0dG9uPmBzXG4gIGJvcmRlcjogMDsgLy8gRm9yIGA8YnV0dG9uPmBzXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWl0ZW0tYm9yZGVyLXJhZGl1cywgMCkpO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1ob3Zlci1jb2xvcik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBpZigkbGluay1ob3Zlci1kZWNvcmF0aW9uID09IHVuZGVybGluZSwgbm9uZSwgbnVsbCk7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcodmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstaG92ZXItYmcpKTtcbiAgfVxuXG4gICYuYWN0aXZlLFxuICAmOmFjdGl2ZSB7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWFjdGl2ZS1jb2xvcik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWFjdGl2ZS1iZykpO1xuICB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWRpc2FibGVkLWNvbG9yKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAvLyBSZW1vdmUgQ1NTIGdyYWRpZW50cyBpZiB0aGV5J3JlIGVuYWJsZWRcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpZigkZW5hYmxlLWdyYWRpZW50cywgbm9uZSwgbnVsbCk7XG4gIH1cbn1cblxuLmRyb3Bkb3duLW1lbnUuc2hvdyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vLyBEcm9wZG93biBzZWN0aW9uIGhlYWRlcnNcbi5kcm9wZG93bi1oZWFkZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1oZWFkZXItcGFkZGluZy14KTtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gZm9yIHVzZSB3aXRoIGhlYWRpbmcgZWxlbWVudHNcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmb250LXNpemUtc20pO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWhlYWRlci1jb2xvcik7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8vIGFzIHdpdGggPiBsaSA+IGFcbn1cblxuLy8gRHJvcGRvd24gdGV4dFxuLmRyb3Bkb3duLWl0ZW0tdGV4dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24taXRlbS1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1pdGVtLXBhZGRpbmcteCk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1jb2xvcik7XG59XG5cbi8vIERhcmsgZHJvcGRvd25zXG4uZHJvcGRvd24tbWVudS1kYXJrIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IGRyb3Bkb3duLWRhcmstY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tY29sb3I6ICN7JGRyb3Bkb3duLWRhcmstY29sb3J9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1iZzogI3skZHJvcGRvd24tZGFyay1iZ307XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWJvcmRlci1jb2xvcjogI3skZHJvcGRvd24tZGFyay1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1ib3gtc2hhZG93OiAjeyRkcm9wZG93bi1kYXJrLWJveC1zaGFkb3d9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWNvbG9yOiAjeyRkcm9wZG93bi1kYXJrLWxpbmstY29sb3J9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yOiAjeyRkcm9wZG93bi1kYXJrLWxpbmstaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1kaXZpZGVyLWJnOiAjeyRkcm9wZG93bi1kYXJrLWRpdmlkZXItYmd9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWhvdmVyLWJnOiAjeyRkcm9wZG93bi1kYXJrLWxpbmstaG92ZXItYmd9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWFjdGl2ZS1jb2xvcjogI3skZHJvcGRvd24tZGFyay1saW5rLWFjdGl2ZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstYWN0aXZlLWJnOiAjeyRkcm9wZG93bi1kYXJrLWxpbmstYWN0aXZlLWJnfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjogI3skZHJvcGRvd24tZGFyay1saW5rLWRpc2FibGVkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24taGVhZGVyLWNvbG9yOiAjeyRkcm9wZG93bi1kYXJrLWhlYWRlci1jb2xvcn07XG4gIC8vIHNjc3MtZG9jcy1lbmQgZHJvcGRvd24tZGFyay1jc3MtdmFyc1xufVxuIiwiLy8gc2Nzcy1kb2NzLXN0YXJ0IGNhcmV0LW1peGluc1xuQG1peGluIGNhcmV0LWRvd24oJHdpZHRoOiAkY2FyZXQtd2lkdGgpIHtcbiAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkO1xuICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbiAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuQG1peGluIGNhcmV0LXVwKCR3aWR0aDogJGNhcmV0LXdpZHRoKSB7XG4gIGJvcmRlci10b3A6IDA7XG4gIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQ7XG4gIGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbkBtaXhpbiBjYXJldC1lbmQoJHdpZHRoOiAkY2FyZXQtd2lkdGgpIHtcbiAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQ6IDA7XG4gIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZDtcbn1cblxuQG1peGluIGNhcmV0LXN0YXJ0KCR3aWR0aDogJGNhcmV0LXdpZHRoKSB7XG4gIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQ7XG4gIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuQG1peGluIGNhcmV0KFxuICAkZGlyZWN0aW9uOiBkb3duLFxuICAkd2lkdGg6ICRjYXJldC13aWR0aCxcbiAgJHNwYWNpbmc6ICRjYXJldC1zcGFjaW5nLFxuICAkdmVydGljYWwtYWxpZ246ICRjYXJldC12ZXJ0aWNhbC1hbGlnblxuKSB7XG4gIEBpZiAkZW5hYmxlLWNhcmV0IHtcbiAgICAmOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmc7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogJHZlcnRpY2FsLWFsaWduO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIEBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgICBAaW5jbHVkZSBjYXJldC1kb3duKCR3aWR0aCk7XG4gICAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgICBAaW5jbHVkZSBjYXJldC11cCgkd2lkdGgpO1xuICAgICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGVuZCB7XG4gICAgICAgIEBpbmNsdWRlIGNhcmV0LWVuZCgkd2lkdGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHN0YXJ0IHtcbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjaW5nO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogJHZlcnRpY2FsLWFsaWduO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBAaW5jbHVkZSBjYXJldC1zdGFydCgkd2lkdGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6ZW1wdHk6OmFmdGVyIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuLy8gc2Nzcy1kb2NzLWVuZCBjYXJldC1taXhpbnNcbiIsIi8vIE1ha2UgdGhlIGRpdiBiZWhhdmUgbGlrZSBhIGJ1dHRvblxuLmJ0bi1ncm91cCxcbi5idG4tZ3JvdXAtdmVydGljYWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvLyBtYXRjaCAuYnRuIGFsaWdubWVudCBnaXZlbiBmb250LXNpemUgaGFjayBhYm92ZVxuXG4gID4gLmJ0biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgLy8gQnJpbmcgdGhlIGhvdmVyLCBmb2N1c2VkLCBhbmQgXCJhY3RpdmVcIiBidXR0b25zIHRvIHRoZSBmcm9udCB0byBvdmVybGF5XG4gIC8vIHRoZSBib3JkZXJzIHByb3Blcmx5XG4gID4gLmJ0bi1jaGVjazpjaGVja2VkICsgLmJ0bixcbiAgPiAuYnRuLWNoZWNrOmZvY3VzICsgLmJ0bixcbiAgPiAuYnRuOmhvdmVyLFxuICA+IC5idG46Zm9jdXMsXG4gID4gLmJ0bjphY3RpdmUsXG4gID4gLmJ0bi5hY3RpdmUge1xuICAgIHotaW5kZXg6IDE7XG4gIH1cbn1cblxuLy8gT3B0aW9uYWw6IEdyb3VwIG11bHRpcGxlIGJ1dHRvbiBncm91cHMgdG9nZXRoZXIgZm9yIGEgdG9vbGJhclxuLmJ0bi10b29sYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cbiAgLmlucHV0LWdyb3VwIHtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4uYnRuLWdyb3VwIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkYnRuLWJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIFByZXZlbnQgZG91YmxlIGJvcmRlcnMgd2hlbiBidXR0b25zIGFyZSBuZXh0IHRvIGVhY2ggb3RoZXJcbiAgPiA6bm90KC5idG4tY2hlY2s6Zmlyc3QtY2hpbGQpICsgLmJ0bixcbiAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tbGVmdDogY2FsYygjeyRidG4tYm9yZGVyLXdpZHRofSAqIC0xKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgfVxuXG4gIC8vIFJlc2V0IHJvdW5kZWQgY29ybmVyc1xuICA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksXG4gID4gLmJ0bi5kcm9wZG93bi10b2dnbGUtc3BsaXQ6Zmlyc3QtY2hpbGQsXG4gID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWVuZC1yYWRpdXMoMCk7XG4gIH1cblxuICAvLyBUaGUgbGVmdCByYWRpdXMgc2hvdWxkIGJlIDAgaWYgdGhlIGJ1dHRvbiBpczpcbiAgLy8gLSB0aGUgXCJ0aGlyZCBvciBtb3JlXCIgY2hpbGRcbiAgLy8gLSB0aGUgc2Vjb25kIGNoaWxkIGFuZCB0aGUgcHJldmlvdXMgZWxlbWVudCBpc24ndCBgLmJ0bi1jaGVja2AgKG1ha2luZyBpdCB0aGUgZmlyc3QgY2hpbGQgdmlzdWFsbHkpXG4gIC8vIC0gcGFydCBvZiBhIGJ0bi1ncm91cCB3aGljaCBpc24ndCB0aGUgZmlyc3QgY2hpbGRcbiAgPiAuYnRuOm50aC1jaGlsZChuICsgMyksXG4gID4gOm5vdCguYnRuLWNoZWNrKSArIC5idG4sXG4gID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4ge1xuICAgIEBpbmNsdWRlIGJvcmRlci1zdGFydC1yYWRpdXMoMCk7XG4gIH1cbn1cblxuLy8gU2l6aW5nXG4vL1xuLy8gUmVtaXggdGhlIGRlZmF1bHQgYnV0dG9uIHNpemluZyBjbGFzc2VzIGludG8gbmV3IG9uZXMgZm9yIGVhc2llciBtYW5pcHVsYXRpb24uXG5cbi5idG4tZ3JvdXAtc20gPiAuYnRuIHsgQGV4dGVuZCAuYnRuLXNtOyB9XG4uYnRuLWdyb3VwLWxnID4gLmJ0biB7IEBleHRlbmQgLmJ0bi1sZzsgfVxuXG5cbi8vXG4vLyBTcGxpdCBidXR0b24gZHJvcGRvd25zXG4vL1xuXG4uZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHtcbiAgcGFkZGluZy1yaWdodDogJGJ0bi1wYWRkaW5nLXggKiAuNzU7XG4gIHBhZGRpbmctbGVmdDogJGJ0bi1wYWRkaW5nLXggKiAuNzU7XG5cbiAgJjo6YWZ0ZXIsXG4gIC5kcm9wdXAgJjo6YWZ0ZXIsXG4gIC5kcm9wZW5kICY6OmFmdGVyIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuXG4gIC5kcm9wc3RhcnQgJjo6YmVmb3JlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmJ0bi1zbSArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAkYnRuLXBhZGRpbmcteC1zbSAqIC43NTtcbiAgcGFkZGluZy1sZWZ0OiAkYnRuLXBhZGRpbmcteC1zbSAqIC43NTtcbn1cblxuLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAkYnRuLXBhZGRpbmcteC1sZyAqIC43NTtcbiAgcGFkZGluZy1sZWZ0OiAkYnRuLXBhZGRpbmcteC1sZyAqIC43NTtcbn1cblxuXG4vLyBUaGUgY2xpY2thYmxlIGJ1dHRvbiBmb3IgdG9nZ2xpbmcgdGhlIG1lbnVcbi8vIFNldCB0aGUgc2FtZSBpbnNldCBzaGFkb3cgYXMgdGhlIDphY3RpdmUgc3RhdGVcbi5idG4tZ3JvdXAuc2hvdyAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkYnRuLWFjdGl2ZS1ib3gtc2hhZG93KTtcblxuICAvLyBTaG93IG5vIHNoYWRvdyBmb3IgYC5idG4tbGlua2Agc2luY2UgaXQgaGFzIG5vIG90aGVyIGJ1dHRvbiBzdHlsZXMuXG4gICYuYnRuLWxpbmsge1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gIH1cbn1cblxuXG4vL1xuLy8gVmVydGljYWwgYnV0dG9uIGdyb3Vwc1xuLy9cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICA+IC5idG4sXG4gID4gLmJ0bi1ncm91cCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksXG4gID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLXRvcDogY2FsYygjeyRidG4tYm9yZGVyLXdpZHRofSAqIC0xKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgfVxuXG4gIC8vIFJlc2V0IHJvdW5kZWQgY29ybmVyc1xuICA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksXG4gID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoMCk7XG4gIH1cblxuICA+IC5idG4gfiAuYnRuLFxuICA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuIHtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygwKTtcbiAgfVxufVxuIiwiLy8gQmFzZSBjbGFzc1xuLy9cbi8vIEtpY2tzdGFydCBhbnkgbmF2aWdhdGlvbiBjb21wb25lbnQgd2l0aCBhIHNldCBvZiBzdHlsZSByZXNldHMuIFdvcmtzIHdpdGhcbi8vIGA8bmF2PmBzLCBgPHVsPmBzIG9yIGA8b2w+YHMuXG5cbi5uYXYge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbmF2LWNzcy12YXJzXG4gIC0tI3skcHJlZml4fW5hdi1saW5rLXBhZGRpbmcteDogI3skbmF2LWxpbmstcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9bmF2LWxpbmstcGFkZGluZy15OiAjeyRuYXYtbGluay1wYWRkaW5nLXl9O1xuICBAaW5jbHVkZSByZnMoJG5hdi1saW5rLWZvbnQtc2l6ZSwgLS0jeyRwcmVmaXh9bmF2LWxpbmstZm9udC1zaXplKTtcbiAgLS0jeyRwcmVmaXh9bmF2LWxpbmstZm9udC13ZWlnaHQ6ICN7JG5hdi1saW5rLWZvbnQtd2VpZ2h0fTtcbiAgLS0jeyRwcmVmaXh9bmF2LWxpbmstY29sb3I6ICN7JG5hdi1saW5rLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2LWxpbmstaG92ZXItY29sb3I6ICN7JG5hdi1saW5rLWhvdmVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2LWxpbmstZGlzYWJsZWQtY29sb3I6ICN7JG5hdi1saW5rLWRpc2FibGVkLWNvbG9yfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBuYXYtY3NzLXZhcnNcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLm5hdi1saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1uYXYtbGluay1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1uYXYtbGluay1wYWRkaW5nLXgpO1xuICBAaW5jbHVkZSBmb250LXNpemUodmFyKC0tI3skcHJlZml4fW5hdi1saW5rLWZvbnQtc2l6ZSkpO1xuICBmb250LXdlaWdodDogdmFyKC0tI3skcHJlZml4fW5hdi1saW5rLWZvbnQtd2VpZ2h0KTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1uYXYtbGluay1jb2xvcik7XG4gIHRleHQtZGVjb3JhdGlvbjogaWYoJGxpbmstZGVjb3JhdGlvbiA9PSBub25lLCBudWxsLCBub25lKTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiAwO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRuYXYtbGluay10cmFuc2l0aW9uKTtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdi1saW5rLWhvdmVyLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWhvdmVyLWRlY29yYXRpb24gPT0gdW5kZXJsaW5lLCBub25lLCBudWxsKTtcbiAgfVxuXG4gICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3gtc2hhZG93OiAkbmF2LWxpbmstZm9jdXMtYm94LXNoYWRvdztcbiAgfVxuXG4gIC8vIERpc2FibGVkIHN0YXRlIGxpZ2h0ZW5zIHRleHRcbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1uYXYtbGluay1kaXNhYmxlZC1jb2xvcik7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG59XG5cbi8vXG4vLyBUYWJzXG4vL1xuXG4ubmF2LXRhYnMge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbmF2LXRhYnMtY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9bmF2LXRhYnMtYm9yZGVyLXdpZHRoOiAjeyRuYXYtdGFicy1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH1uYXYtdGFicy1ib3JkZXItY29sb3I6ICN7JG5hdi10YWJzLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdi10YWJzLWJvcmRlci1yYWRpdXM6ICN7JG5hdi10YWJzLWJvcmRlci1yYWRpdXN9O1xuICAtLSN7JHByZWZpeH1uYXYtdGFicy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogI3skbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXYtdGFicy1saW5rLWFjdGl2ZS1jb2xvcjogI3skbmF2LXRhYnMtbGluay1hY3RpdmUtY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXYtdGFicy1saW5rLWFjdGl2ZS1iZzogI3skbmF2LXRhYnMtbGluay1hY3RpdmUtYmd9O1xuICAtLSN7JHByZWZpeH1uYXYtdGFicy1saW5rLWFjdGl2ZS1ib3JkZXItY29sb3I6ICN7JG5hdi10YWJzLWxpbmstYWN0aXZlLWJvcmRlci1jb2xvcn07XG4gIC8vIHNjc3MtZG9jcy1lbmQgbmF2LXRhYnMtY3NzLXZhcnNcblxuICBib3JkZXItYm90dG9tOiB2YXIoLS0jeyRwcmVmaXh9bmF2LXRhYnMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9bmF2LXRhYnMtYm9yZGVyLWNvbG9yKTtcblxuICAubmF2LWxpbmsge1xuICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS0jeyRwcmVmaXh9bmF2LXRhYnMtYm9yZGVyLXdpZHRoKSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9bmF2LXRhYnMtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9bmF2LXRhYnMtYm9yZGVyLXJhZGl1cykpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIC8vIFByZXZlbnRzIGFjdGl2ZSAubmF2LWxpbmsgdGFiIG92ZXJsYXBwaW5nIGZvY3VzIG91dGxpbmUgb2YgcHJldmlvdXMvbmV4dCAubmF2LWxpbmtcbiAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yKTtcbiAgICB9XG4gIH1cblxuICAubmF2LWxpbmsuYWN0aXZlLFxuICAubmF2LWl0ZW0uc2hvdyAubmF2LWxpbmsge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2LXRhYnMtbGluay1hY3RpdmUtY29sb3IpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1uYXYtdGFicy1saW5rLWFjdGl2ZS1iZyk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2LXRhYnMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yKTtcbiAgfVxuXG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICAvLyBNYWtlIGRyb3Bkb3duIGJvcmRlciBvdmVybGFwIHRhYiBib3JkZXJcbiAgICBtYXJnaW4tdG9wOiBjYWxjKC0xICogdmFyKC0tI3skcHJlZml4fW5hdi10YWJzLWJvcmRlci13aWR0aCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIC8vIFJlbW92ZSB0aGUgdG9wIHJvdW5kZWQgY29ybmVycyBoZXJlIHNpbmNlIHRoZXJlIGlzIGEgaGFyZCBlZGdlIGFib3ZlIHRoZSBtZW51XG4gICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoMCk7XG4gIH1cbn1cblxuXG4vL1xuLy8gUGlsbHNcbi8vXG5cbi5uYXYtcGlsbHMge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbmF2LXBpbGxzLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fW5hdi1waWxscy1ib3JkZXItcmFkaXVzOiAjeyRuYXYtcGlsbHMtYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fW5hdi1waWxscy1saW5rLWFjdGl2ZS1jb2xvcjogI3skbmF2LXBpbGxzLWxpbmstYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2LXBpbGxzLWxpbmstYWN0aXZlLWJnOiAjeyRuYXYtcGlsbHMtbGluay1hY3RpdmUtYmd9O1xuICAvLyBzY3NzLWRvY3MtZW5kIG5hdi1waWxscy1jc3MtdmFyc1xuXG4gIC5uYXYtbGluayB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9bmF2LXBpbGxzLWJvcmRlci1yYWRpdXMpKTtcbiAgfVxuXG4gIC5uYXYtbGluay5hY3RpdmUsXG4gIC5zaG93ID4gLm5hdi1saW5rIHtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdi1waWxscy1saW5rLWFjdGl2ZS1jb2xvcik7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcodmFyKC0tI3skcHJlZml4fW5hdi1waWxscy1saW5rLWFjdGl2ZS1iZykpO1xuICB9XG59XG5cblxuLy9cbi8vIFVuZGVybGluZVxuLy9cblxuLm5hdi11bmRlcmxpbmUge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbmF2LXVuZGVybGluZS1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1uYXYtdW5kZXJsaW5lLWdhcDogI3skbmF2LXVuZGVybGluZS1nYXB9O1xuICAtLSN7JHByZWZpeH1uYXYtdW5kZXJsaW5lLWJvcmRlci13aWR0aDogI3skbmF2LXVuZGVybGluZS1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH1uYXYtdW5kZXJsaW5lLWxpbmstYWN0aXZlLWNvbG9yOiAjeyRuYXYtdW5kZXJsaW5lLWxpbmstYWN0aXZlLWNvbG9yfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBuYXYtdW5kZXJsaW5lLWNzcy12YXJzXG5cbiAgZ2FwOiB2YXIoLS0jeyRwcmVmaXh9bmF2LXVuZGVybGluZS1nYXApO1xuXG4gIC5uYXYtbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgYm9yZGVyLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fW5hdi11bmRlcmxpbmUtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiBjdXJyZW50Y29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdi1saW5rLmFjdGl2ZSxcbiAgLnNob3cgPiAubmF2LWxpbmsge1xuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdi11bmRlcmxpbmUtbGluay1hY3RpdmUtY29sb3IpO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IGN1cnJlbnRjb2xvcjtcbiAgfVxufVxuXG5cbi8vXG4vLyBKdXN0aWZpZWQgdmFyaWFudHNcbi8vXG5cbi5uYXYtZmlsbCB7XG4gID4gLm5hdi1saW5rLFxuICAubmF2LWl0ZW0ge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG4ubmF2LWp1c3RpZmllZCB7XG4gID4gLm5hdi1saW5rLFxuICAubmF2LWl0ZW0ge1xuICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG4ubmF2LWZpbGwsXG4ubmF2LWp1c3RpZmllZCB7XG4gIC5uYXYtaXRlbSAubmF2LWxpbmsge1xuICAgIHdpZHRoOiAxMDAlOyAvLyBNYWtlIHN1cmUgYnV0dG9uIHdpbGwgZ3Jvd1xuICB9XG59XG5cblxuLy8gVGFiYmFibGUgdGFic1xuLy9cbi8vIEhpZGUgdGFiYmFibGUgcGFuZXMgdG8gc3RhcnQsIHNob3cgdGhlbSB3aGVuIGAuYWN0aXZlYFxuXG4udGFiLWNvbnRlbnQge1xuICA+IC50YWItcGFuZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICA+IC5hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG4iLCIvLyBOYXZiYXJcbi8vXG4vLyBQcm92aWRlIGEgc3RhdGljIG5hdmJhciBmcm9tIHdoaWNoIHdlIGV4cGFuZCB0byBjcmVhdGUgZnVsbC13aWR0aCwgZml4ZWQsIGFuZFxuLy8gb3RoZXIgbmF2YmFyIHZhcmlhdGlvbnMuXG5cbi5uYXZiYXIge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbmF2YmFyLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fW5hdmJhci1wYWRkaW5nLXg6ICN7aWYoJG5hdmJhci1wYWRkaW5nLXggPT0gbnVsbCwgMCwgJG5hdmJhci1wYWRkaW5nLXgpfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLXBhZGRpbmcteTogI3skbmF2YmFyLXBhZGRpbmcteX07XG4gIC0tI3skcHJlZml4fW5hdmJhci1jb2xvcjogI3skbmF2YmFyLWxpZ2h0LWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWhvdmVyLWNvbG9yOiAjeyRuYXZiYXItbGlnaHQtaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItZGlzYWJsZWQtY29sb3I6ICN7JG5hdmJhci1saWdodC1kaXNhYmxlZC1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdmJhci1hY3RpdmUtY29sb3I6ICN7JG5hdmJhci1saWdodC1hY3RpdmUtY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItYnJhbmQtcGFkZGluZy15OiAjeyRuYXZiYXItYnJhbmQtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLW1hcmdpbi1lbmQ6ICN7JG5hdmJhci1icmFuZC1tYXJnaW4tZW5kfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLWZvbnQtc2l6ZTogI3skbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZX07XG4gIC0tI3skcHJlZml4fW5hdmJhci1icmFuZC1jb2xvcjogI3skbmF2YmFyLWxpZ2h0LWJyYW5kLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLWhvdmVyLWNvbG9yOiAjeyRuYXZiYXItbGlnaHQtYnJhbmQtaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItbmF2LWxpbmstcGFkZGluZy14OiAjeyRuYXZiYXItbmF2LWxpbmstcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItcGFkZGluZy15OiAjeyRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXl9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci1wYWRkaW5nLXg6ICN7JG5hdmJhci10b2dnbGVyLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLWZvbnQtc2l6ZTogI3skbmF2YmFyLXRvZ2dsZXItZm9udC1zaXplfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItaWNvbi1iZzogI3tlc2NhcGUtc3ZnKCRuYXZiYXItbGlnaHQtdG9nZ2xlci1pY29uLWJnKX07XG4gIC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLWJvcmRlci1jb2xvcjogI3skbmF2YmFyLWxpZ2h0LXRvZ2dsZXItYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1czogI3skbmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLWZvY3VzLXdpZHRoOiAjeyRuYXZiYXItdG9nZ2xlci1mb2N1cy13aWR0aH07XG4gIC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLXRyYW5zaXRpb246ICN7JG5hdmJhci10b2dnbGVyLXRyYW5zaXRpb259O1xuICAvLyBzY3NzLWRvY3MtZW5kIG5hdmJhci1jc3MtdmFyc1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwOyAvLyBhbGxvdyB1cyB0byBkbyB0aGUgbGluZSBicmVhayBmb3IgY29sbGFwc2luZyBjb250ZW50XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgLy8gc3BhY2Ugb3V0IGJyYW5kIGZyb20gbG9nb1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fW5hdmJhci1wYWRkaW5nLXgpO1xuICBAaW5jbHVkZSBncmFkaWVudC1iZygpO1xuXG4gIC8vIEJlY2F1c2UgZmxleCBwcm9wZXJ0aWVzIGFyZW4ndCBpbmhlcml0ZWQsIHdlIG5lZWQgdG8gcmVkZWNsYXJlIHRoZXNlIGZpcnN0XG4gIC8vIGZldyBwcm9wZXJ0aWVzIHNvIHRoYXQgY29udGVudCBuZXN0ZWQgd2l0aGluIGJlaGF2ZSBwcm9wZXJseS5cbiAgLy8gVGhlIGBmbGV4LXdyYXBgIHByb3BlcnR5IGlzIGluaGVyaXRlZCB0byBzaW1wbGlmeSB0aGUgZXhwYW5kZWQgbmF2YmFyc1xuICAlY29udGFpbmVyLWZsZXgtcHJvcGVydGllcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IGluaGVyaXQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cblxuICA+IC5jb250YWluZXIsXG4gID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgQGV4dGVuZCAlY29udGFpbmVyLWZsZXgtcHJvcGVydGllcztcbiAgfVxuXG4gIEBlYWNoICRicmVha3BvaW50LCAkY29udGFpbmVyLW1heC13aWR0aCBpbiAkY29udGFpbmVyLW1heC13aWR0aHMge1xuICAgID4gLmNvbnRhaW5lciN7YnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGhzKX0ge1xuICAgICAgQGV4dGVuZCAlY29udGFpbmVyLWZsZXgtcHJvcGVydGllcztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgYnJhbmRcbi8vXG4vLyBVc2VkIGZvciBicmFuZCwgcHJvamVjdCwgb3Igc2l0ZSBuYW1lcy5cblxuLm5hdmJhci1icmFuZCB7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLXBhZGRpbmcteSk7XG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLXBhZGRpbmcteSk7XG4gIG1hcmdpbi1yaWdodDogdmFyKC0tI3skcHJlZml4fW5hdmJhci1icmFuZC1tYXJnaW4tZW5kKTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1uYXZiYXItYnJhbmQtZm9udC1zaXplKSk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLWNvbG9yKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpZigkbGluay1kZWNvcmF0aW9uID09IG5vbmUsIG51bGwsIG5vbmUpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLWhvdmVyLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWhvdmVyLWRlY29yYXRpb24gPT0gdW5kZXJsaW5lLCBub25lLCBudWxsKTtcbiAgfVxufVxuXG5cbi8vIE5hdmJhciBuYXZcbi8vXG4vLyBDdXN0b20gbmF2YmFyIG5hdmlnYXRpb24gKGRvZXNuJ3QgcmVxdWlyZSBgLm5hdmAsIGJ1dCBkb2VzIG1ha2UgdXNlIG9mIGAubmF2LWxpbmtgKS5cblxuLm5hdmJhci1uYXYge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbmF2YmFyLW5hdi1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1uYXYtbGluay1wYWRkaW5nLXg6IDA7XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLXBhZGRpbmcteTogI3skbmF2LWxpbmstcGFkZGluZy15fTtcbiAgQGluY2x1ZGUgcmZzKCRuYXYtbGluay1mb250LXNpemUsIC0tI3skcHJlZml4fW5hdi1saW5rLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLWZvbnQtd2VpZ2h0OiAjeyRuYXYtbGluay1mb250LXdlaWdodH07XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWNvbG9yKTtcbiAgLS0jeyRwcmVmaXh9bmF2LWxpbmstaG92ZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1uYXZiYXItaG92ZXItY29sb3IpO1xuICAtLSN7JHByZWZpeH1uYXYtbGluay1kaXNhYmxlZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdmJhci1kaXNhYmxlZC1jb2xvcik7XG4gIC8vIHNjc3MtZG9jcy1lbmQgbmF2YmFyLW5hdi1jc3MtdmFyc1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IC8vIGNhbm5vdCB1c2UgYGluaGVyaXRgIHRvIGdldCB0aGUgYC5uYXZiYXJgcyB2YWx1ZVxuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgLm5hdi1saW5rIHtcbiAgICAmLmFjdGl2ZSxcbiAgICAmLnNob3cge1xuICAgICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1uYXZiYXItYWN0aXZlLWNvbG9yKTtcbiAgICB9XG4gIH1cblxuICAuZHJvcGRvd24tbWVudSB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgfVxufVxuXG5cbi8vIE5hdmJhciB0ZXh0XG4vL1xuLy9cblxuLm5hdmJhci10ZXh0IHtcbiAgcGFkZGluZy10b3A6ICRuYXYtbGluay1wYWRkaW5nLXk7XG4gIHBhZGRpbmctYm90dG9tOiAkbmF2LWxpbmstcGFkZGluZy15O1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdmJhci1jb2xvcik7XG5cbiAgYSxcbiAgYTpob3ZlcixcbiAgYTpmb2N1cyAge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWFjdGl2ZS1jb2xvcik7XG4gIH1cbn1cblxuXG4vLyBSZXNwb25zaXZlIG5hdmJhclxuLy9cbi8vIEN1c3RvbSBzdHlsZXMgZm9yIHJlc3BvbnNpdmUgY29sbGFwc2luZyBhbmQgdG9nZ2xpbmcgb2YgbmF2YmFyIGNvbnRlbnRzLlxuLy8gUG93ZXJlZCBieSB0aGUgY29sbGFwc2UgQm9vdHN0cmFwIEphdmFTY3JpcHQgcGx1Z2luLlxuXG4vLyBXaGVuIGNvbGxhcHNlZCwgcHJldmVudCB0aGUgdG9nZ2xlYWJsZSBuYXZiYXIgY29udGVudHMgZnJvbSBhcHBlYXJpbmcgaW5cbi8vIHRoZSBkZWZhdWx0IGZsZXhib3ggcm93IG9yaWVudGF0aW9uLiBSZXF1aXJlcyB0aGUgdXNlIG9mIGBmbGV4LXdyYXA6IHdyYXBgXG4vLyBvbiB0aGUgYC5uYXZiYXJgIHBhcmVudC5cbi5uYXZiYXItY29sbGFwc2Uge1xuICBmbGV4LWJhc2lzOiAxMDAlO1xuICBmbGV4LWdyb3c6IDE7XG4gIC8vIEZvciBhbHdheXMgZXhwYW5kZWQgb3IgZXh0cmEgZnVsbCBuYXZiYXJzLCBlbnN1cmUgY29udGVudCBhbGlnbnMgaXRzZWxmXG4gIC8vIHByb3Blcmx5IHZlcnRpY2FsbHkuIENhbiBiZSBlYXNpbHkgb3ZlcnJpZGRlbiB3aXRoIGZsZXggdXRpbGl0aWVzLlxuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4vLyBCdXR0b24gZm9yIHRvZ2dsaW5nIHRoZSBuYXZiYXIgd2hlbiBpbiBpdHMgY29sbGFwc2VkIHN0YXRlXG4ubmF2YmFyLXRvZ2dsZXIge1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItcGFkZGluZy14KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci1mb250LXNpemUpKTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8vIHJlbW92ZSBkZWZhdWx0IGJ1dHRvbiBzdHlsZVxuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci1ib3JkZXItY29sb3IpOyAvLyByZW1vdmUgZGVmYXVsdCBidXR0b24gc3R5bGVcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1cykpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKHZhcigtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci10cmFuc2l0aW9uKSk7XG5cbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIG91dGxpbmU6IDA7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgdmFyKC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLWZvY3VzLXdpZHRoKTtcbiAgfVxufVxuXG4vLyBLZWVwIGFzIGEgc2VwYXJhdGUgZWxlbWVudCBzbyBmb2xrcyBjYW4gZWFzaWx5IG92ZXJyaWRlIGl0IHdpdGggYW5vdGhlciBpY29uXG4vLyBvciBpbWFnZSBmaWxlIGFzIG5lZWRlZC5cbi5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMS41ZW07XG4gIGhlaWdodDogMS41ZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci1pY29uLWJnKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XG59XG5cbi5uYXZiYXItbmF2LXNjcm9sbCB7XG4gIG1heC1oZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1zY3JvbGwtaGVpZ2h0LCA3NXZoKTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IG5hdmJhci1leHBhbmQtbG9vcFxuLy8gR2VuZXJhdGUgc2VyaWVzIG9mIGAubmF2YmFyLWV4cGFuZC0qYCByZXNwb25zaXZlIGNsYXNzZXMgZm9yIGNvbmZpZ3VyaW5nXG4vLyB3aGVyZSB5b3VyIG5hdmJhciBjb2xsYXBzZXMuXG4ubmF2YmFyLWV4cGFuZCB7XG4gIEBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkbmV4dCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3Mvc2VsZWN0b3Itbm8tdW5pb24tY2xhc3MtbmFtZVxuICAgICYjeyRpbmZpeH0ge1xuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmV4dCkge1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICAgICAgIC5uYXZiYXItbmF2IHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuXG4gICAgICAgICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5uYXYtbGluayB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLW5hdi1saW5rLXBhZGRpbmcteCk7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLSN7JHByZWZpeH1uYXZiYXItbmF2LWxpbmstcGFkZGluZy14KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubmF2YmFyLW5hdi1zY3JvbGwge1xuICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuICAgICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAubmF2YmFyLXRvZ2dsZXIge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAub2ZmY2FudmFzIHtcbiAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcbiAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgIHotaW5kZXg6IGF1dG87XG4gICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG5vbmUpO1xuICAgICAgICAgIC8vIHN0eWxlbGludC1lbmFibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbiAgICAgICAgICAub2ZmY2FudmFzLWhlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5vZmZjYW52YXMtYm9keSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1ncm93OiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IHZpc2libGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIG5hdmJhci1leHBhbmQtbG9vcFxuXG4vLyBOYXZiYXIgdGhlbWVzXG4vL1xuLy8gU3R5bGVzIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBuYXZiYXJzIHdpdGggbGlnaHQgb3IgZGFyayBiYWNrZ3JvdW5kLlxuXG4ubmF2YmFyLWxpZ2h0IHtcbiAgQGluY2x1ZGUgZGVwcmVjYXRlKFwiYC5uYXZiYXItbGlnaHRgXCIsIFwidjUuMi4wXCIsIFwidjYuMC4wXCIsIHRydWUpO1xufVxuXG4ubmF2YmFyLWRhcmssXG4ubmF2YmFyW2RhdGEtYnMtdGhlbWU9XCJkYXJrXCJdIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IG5hdmJhci1kYXJrLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fW5hdmJhci1jb2xvcjogI3skbmF2YmFyLWRhcmstY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItaG92ZXItY29sb3I6ICN7JG5hdmJhci1kYXJrLWhvdmVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWRpc2FibGVkLWNvbG9yOiAjeyRuYXZiYXItZGFyay1kaXNhYmxlZC1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdmJhci1hY3RpdmUtY29sb3I6ICN7JG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdmJhci1icmFuZC1jb2xvcjogI3skbmF2YmFyLWRhcmstYnJhbmQtY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItYnJhbmQtaG92ZXItY29sb3I6ICN7JG5hdmJhci1kYXJrLWJyYW5kLWhvdmVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItYm9yZGVyLWNvbG9yOiAjeyRuYXZiYXItZGFyay10b2dnbGVyLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLWljb24tYmc6ICN7ZXNjYXBlLXN2ZygkbmF2YmFyLWRhcmstdG9nZ2xlci1pY29uLWJnKX07XG4gIC8vIHNjc3MtZG9jcy1lbmQgbmF2YmFyLWRhcmstY3NzLXZhcnNcbn1cblxuQGlmICRlbmFibGUtZGFyay1tb2RlIHtcbiAgQGluY2x1ZGUgY29sb3ItbW9kZShkYXJrKSB7XG4gICAgLm5hdmJhci10b2dnbGVyLWljb24ge1xuICAgICAgLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItaWNvbi1iZzogI3tlc2NhcGUtc3ZnKCRuYXZiYXItZGFyay10b2dnbGVyLWljb24tYmcpfTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmNhcmQge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgY2FyZC1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1jYXJkLXNwYWNlci15OiAjeyRjYXJkLXNwYWNlci15fTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC1zcGFjZXIteDogI3skY2FyZC1zcGFjZXIteH07XG4gIC0tI3skcHJlZml4fWNhcmQtdGl0bGUtc3BhY2VyLXk6ICN7JGNhcmQtdGl0bGUtc3BhY2VyLXl9O1xuICAtLSN7JHByZWZpeH1jYXJkLXRpdGxlLWNvbG9yOiAjeyRjYXJkLXRpdGxlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC1zdWJ0aXRsZS1jb2xvcjogI3skY2FyZC1zdWJ0aXRsZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLXdpZHRoOiAjeyRjYXJkLWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLWNvbG9yOiAjeyRjYXJkLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLXJhZGl1czogI3skY2FyZC1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC1ib3gtc2hhZG93OiAjeyRjYXJkLWJveC1zaGFkb3d9O1xuICAtLSN7JHByZWZpeH1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXM6ICN7JGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fWNhcmQtY2FwLXBhZGRpbmcteTogI3skY2FyZC1jYXAtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC1jYXAtcGFkZGluZy14OiAjeyRjYXJkLWNhcC1wYWRkaW5nLXh9O1xuICAtLSN7JHByZWZpeH1jYXJkLWNhcC1iZzogI3skY2FyZC1jYXAtYmd9O1xuICAtLSN7JHByZWZpeH1jYXJkLWNhcC1jb2xvcjogI3skY2FyZC1jYXAtY29sb3J9O1xuICAtLSN7JHByZWZpeH1jYXJkLWhlaWdodDogI3skY2FyZC1oZWlnaHR9O1xuICAtLSN7JHByZWZpeH1jYXJkLWNvbG9yOiAjeyRjYXJkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC1iZzogI3skY2FyZC1iZ307XG4gIC0tI3skcHJlZml4fWNhcmQtaW1nLW92ZXJsYXktcGFkZGluZzogI3skY2FyZC1pbWctb3ZlcmxheS1wYWRkaW5nfTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC1ncm91cC1tYXJnaW46ICN7JGNhcmQtZ3JvdXAtbWFyZ2lufTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBjYXJkLWNzcy12YXJzXG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtaW4td2lkdGg6IDA7IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8yMjc0MCNpc3N1ZWNvbW1lbnQtMzA1ODY4MTA2XG4gIGhlaWdodDogdmFyKC0tI3skcHJlZml4fWNhcmQtaGVpZ2h0KTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1ib2R5LWNvbG9yKTtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1iZyk7XG4gIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1jYXJkLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLXJhZGl1cykpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KHZhcigtLSN7JHByZWZpeH1jYXJkLWJveC1zaGFkb3cpKTtcblxuICA+IGhyIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cblxuICA+IC5saXN0LWdyb3VwIHtcbiAgICBib3JkZXItdG9wOiBpbmhlcml0O1xuICAgIGJvcmRlci1ib3R0b206IGluaGVyaXQ7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9Y2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkICB7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXModmFyKC0tI3skcHJlZml4fWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cykpO1xuICAgIH1cbiAgfVxuXG4gIC8vIER1ZSB0byBzcGVjaWZpY2l0eSBvZiB0aGUgYWJvdmUgc2VsZWN0b3IgKGAuY2FyZCA+IC5saXN0LWdyb3VwYCksIHdlIG11c3RcbiAgLy8gdXNlIGEgY2hpbGQgc2VsZWN0b3IgaGVyZSB0byBwcmV2ZW50IGRvdWJsZSBib3JkZXJzLlxuICA+IC5jYXJkLWhlYWRlciArIC5saXN0LWdyb3VwLFxuICA+IC5saXN0LWdyb3VwICsgLmNhcmQtZm9vdGVyIHtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG59XG5cbi5jYXJkLWJvZHkge1xuICAvLyBFbmFibGUgYGZsZXgtZ3JvdzogMWAgZm9yIGRlY2tzIGFuZCBncm91cHMgc28gdGhhdCBjYXJkIGJsb2NrcyB0YWtlIHVwXG4gIC8vIGFzIG11Y2ggc3BhY2UgYXMgcG9zc2libGUsIGVuc3VyaW5nIGZvb3RlcnMgYXJlIGFsaWduZWQgdG8gdGhlIGJvdHRvbS5cbiAgZmxleDogMSAxIGF1dG87XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1jYXJkLXNwYWNlci15KSB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1zcGFjZXIteCk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1jb2xvcik7XG59XG5cbi5jYXJkLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fWNhcmQtdGl0bGUtc3BhY2VyLXkpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWNhcmQtdGl0bGUtY29sb3IpO1xufVxuXG4uY2FyZC1zdWJ0aXRsZSB7XG4gIG1hcmdpbi10b3A6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fWNhcmQtdGl0bGUtc3BhY2VyLXkpKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1jYXJkLXN1YnRpdGxlLWNvbG9yKTtcbn1cblxuLmNhcmQtdGV4dDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmNhcmQtbGluayB7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogaWYoJGxpbmstaG92ZXItZGVjb3JhdGlvbiA9PSB1bmRlcmxpbmUsIG5vbmUsIG51bGwpO1xuICB9XG5cbiAgKyAuY2FyZC1saW5rIHtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tI3skcHJlZml4fWNhcmQtc3BhY2VyLXgpO1xuICB9XG59XG5cbi8vXG4vLyBPcHRpb25hbCB0ZXh0dWFsIGNhcHNcbi8vXG5cbi5jYXJkLWhlYWRlciB7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1jYXJkLWNhcC1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1jYXJkLWNhcC1wYWRkaW5nLXgpO1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBSZW1vdmVzIHRoZSBkZWZhdWx0IG1hcmdpbi1ib3R0b20gb2YgPGhOPlxuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWNhcmQtY2FwLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWNhcmQtY2FwLWJnKTtcbiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1ib3JkZXItY29sb3IpO1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cykgdmFyKC0tI3skcHJlZml4fWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cykgMCAwKTtcbiAgfVxufVxuXG4uY2FyZC1mb290ZXIge1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1jYXAtcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1jYXAtcGFkZGluZy14KTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1jYXJkLWNhcC1jb2xvcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1jYXJkLWNhcC1iZyk7XG4gIGJvcmRlci10b3A6IHZhcigtLSN7JHByZWZpeH1jYXJkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLWNvbG9yKTtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCAwIHZhcigtLSN7JHByZWZpeH1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpIHZhcigtLSN7JHByZWZpeH1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBIZWFkZXIgbmF2c1xuLy9cblxuLmNhcmQtaGVhZGVyLXRhYnMge1xuICBtYXJnaW4tcmlnaHQ6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fWNhcmQtY2FwLXBhZGRpbmcteCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBtYXJnaW4tYm90dG9tOiBjYWxjKC0xICogdmFyKC0tI3skcHJlZml4fWNhcmQtY2FwLXBhZGRpbmcteSkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBtYXJnaW4tbGVmdDogY2FsYygtLjUgKiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1jYXAtcGFkZGluZy14KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gIGJvcmRlci1ib3R0b206IDA7XG5cbiAgLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWNhcmQtYmcpO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLSN7JHByZWZpeH1jYXJkLWJnKTtcbiAgfVxufVxuXG4uY2FyZC1oZWFkZXItcGlsbHMge1xuICBtYXJnaW4tcmlnaHQ6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fWNhcmQtY2FwLXBhZGRpbmcteCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBtYXJnaW4tbGVmdDogY2FsYygtLjUgKiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1jYXAtcGFkZGluZy14KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG59XG5cbi8vIENhcmQgaW1hZ2Vcbi5jYXJkLWltZy1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1jYXJkLWltZy1vdmVybGF5LXBhZGRpbmcpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpKTtcbn1cblxuLmNhcmQtaW1nLFxuLmNhcmQtaW1nLXRvcCxcbi5jYXJkLWltZy1ib3R0b20ge1xuICB3aWR0aDogMTAwJTsgLy8gUmVxdWlyZWQgYmVjYXVzZSB3ZSB1c2UgZmxleGJveCBhbmQgdGhpcyBpbmhlcmVudGx5IGFwcGxpZXMgYWxpZ24tc2VsZjogc3RyZXRjaFxufVxuXG4uY2FyZC1pbWcsXG4uY2FyZC1pbWctdG9wIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXModmFyKC0tI3skcHJlZml4fWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cykpO1xufVxuXG4uY2FyZC1pbWcsXG4uY2FyZC1pbWctYm90dG9tIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXModmFyKC0tI3skcHJlZml4fWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cykpO1xufVxuXG5cbi8vXG4vLyBDYXJkIGdyb3Vwc1xuLy9cblxuLmNhcmQtZ3JvdXAge1xuICAvLyBUaGUgY2hpbGQgc2VsZWN0b3IgYWxsb3dzIG5lc3RlZCBgLmNhcmRgIHdpdGhpbiBgLmNhcmQtZ3JvdXBgXG4gIC8vIHRvIGRpc3BsYXkgcHJvcGVybHkuXG4gID4gLmNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLSN7JHByZWZpeH1jYXJkLWdyb3VwLW1hcmdpbik7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIC8vIFRoZSBjaGlsZCBzZWxlY3RvciBhbGxvd3MgbmVzdGVkIGAuY2FyZGAgd2l0aGluIGAuY2FyZC1ncm91cGBcbiAgICAvLyB0byBkaXNwbGF5IHByb3Blcmx5LlxuICAgID4gLmNhcmQge1xuICAgICAgLy8gRmxleGJ1Z3MgIzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsaXB3YWx0b24vZmxleGJ1Z3MjZmxleGJ1Zy00XG4gICAgICBmbGV4OiAxIDAgMCU7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICArIC5jYXJkIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgcm91bmRlZCBjb3JuZXJzXG4gICAgICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItZW5kLXJhZGl1cygwKTtcblxuICAgICAgICAgIC5jYXJkLWltZy10b3AsXG4gICAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1kaXNhbGxvd2VkLWxpc3RcbiAgICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuY2FyZC1pbWctYm90dG9tLFxuICAgICAgICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktZGlzYWxsb3dlZC1saXN0XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItc3RhcnQtcmFkaXVzKDApO1xuXG4gICAgICAgICAgLmNhcmQtaW1nLXRvcCxcbiAgICAgICAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWRpc2FsbG93ZWQtbGlzdFxuICAgICAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmNhcmQtaW1nLWJvdHRvbSxcbiAgICAgICAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWRpc2FsbG93ZWQtbGlzdFxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmFjY29yZGlvbiB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBhY2NvcmRpb24tY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWNvbG9yOiAjeyRhY2NvcmRpb24tY29sb3J9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYmc6ICN7JGFjY29yZGlvbi1iZ307XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi10cmFuc2l0aW9uOiAjeyRhY2NvcmRpb24tdHJhbnNpdGlvbn07XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1ib3JkZXItY29sb3I6ICN7JGFjY29yZGlvbi1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYm9yZGVyLXdpZHRoOiAjeyRhY2NvcmRpb24tYm9yZGVyLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6ICN7JGFjY29yZGlvbi1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWlubmVyLWJvcmRlci1yYWRpdXM6ICN7JGFjY29yZGlvbi1pbm5lci1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1wYWRkaW5nLXg6ICN7JGFjY29yZGlvbi1idXR0b24tcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1wYWRkaW5nLXk6ICN7JGFjY29yZGlvbi1idXR0b24tcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1jb2xvcjogI3skYWNjb3JkaW9uLWJ1dHRvbi1jb2xvcn07XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4tYmc6ICN7JGFjY29yZGlvbi1idXR0b24tYmd9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWljb246ICN7ZXNjYXBlLXN2ZygkYWNjb3JkaW9uLWJ1dHRvbi1pY29uKX07XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4taWNvbi13aWR0aDogI3skYWNjb3JkaW9uLWljb24td2lkdGh9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWljb24tdHJhbnNmb3JtOiAjeyRhY2NvcmRpb24taWNvbi10cmFuc2Zvcm19O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWljb24tdHJhbnNpdGlvbjogI3skYWNjb3JkaW9uLWljb24tdHJhbnNpdGlvbn07XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4tYWN0aXZlLWljb246ICN7ZXNjYXBlLXN2ZygkYWNjb3JkaW9uLWJ1dHRvbi1hY3RpdmUtaWNvbil9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWZvY3VzLWJvcmRlci1jb2xvcjogI3skYWNjb3JkaW9uLWJ1dHRvbi1mb2N1cy1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWZvY3VzLWJveC1zaGFkb3c6ICN7JGFjY29yZGlvbi1idXR0b24tZm9jdXMtYm94LXNoYWRvd307XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1ib2R5LXBhZGRpbmcteDogI3skYWNjb3JkaW9uLWJvZHktcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvZHktcGFkZGluZy15OiAjeyRhY2NvcmRpb24tYm9keS1wYWRkaW5nLXl9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYWN0aXZlLWNvbG9yOiAjeyRhY2NvcmRpb24tYnV0dG9uLWFjdGl2ZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1hY3RpdmUtYmc6ICN7JGFjY29yZGlvbi1idXR0b24tYWN0aXZlLWJnfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBhY2NvcmRpb24tY3NzLXZhcnNcbn1cblxuLmFjY29yZGlvbi1idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLXBhZGRpbmcteCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLWJhc2UpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4tY29sb3IpO1xuICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBSZXNldCBidXR0b24gc3R5bGVcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4tYmcpO1xuICBib3JkZXI6IDA7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG4gIG92ZXJmbG93LWFuY2hvcjogbm9uZTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbih2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLXRyYW5zaXRpb24pKTtcblxuICAmOm5vdCguY29sbGFwc2VkKSB7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYWN0aXZlLWNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWFjdGl2ZS1iZyk7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCBjYWxjKC0xICogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1ib3JkZXItd2lkdGgpKSAwIHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYm9yZGVyLWNvbG9yKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWFjdGl2ZS1pY29uKTtcbiAgICAgIHRyYW5zZm9ybTogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4taWNvbi10cmFuc2Zvcm0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFjY29yZGlvbiBpY29uXG4gICY6OmFmdGVyIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICB3aWR0aDogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4taWNvbi13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1pY29uLXdpZHRoKTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWljb24pO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1pY29uLXdpZHRoKTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWljb24tdHJhbnNpdGlvbikpO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgei1pbmRleDogMjtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIHotaW5kZXg6IDM7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1mb2N1cy1ib3JkZXItY29sb3IpO1xuICAgIG91dGxpbmU6IDA7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4tZm9jdXMtYm94LXNoYWRvdyk7XG4gIH1cbn1cblxuLmFjY29yZGlvbi1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uYWNjb3JkaW9uLWl0ZW0ge1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1jb2xvcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYmcpO1xuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvcmRlci1jb2xvcik7XG5cbiAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvcmRlci1yYWRpdXMpKTtcblxuICAgIC5hY2NvcmRpb24tYnV0dG9uIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24taW5uZXItYm9yZGVyLXJhZGl1cykpO1xuICAgIH1cbiAgfVxuXG4gICY6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0IGEgYm9yZGVyLXJhZGl1cyBvbiB0aGUgbGFzdCBpdGVtIGlmIHRoZSBhY2NvcmRpb24gaXMgY29sbGFwc2VkXG4gICY6bGFzdC1vZi10eXBlIHtcbiAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvcmRlci1yYWRpdXMpKTtcblxuICAgIC5hY2NvcmRpb24tYnV0dG9uIHtcbiAgICAgICYuY29sbGFwc2VkIHtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXModmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmFjY29yZGlvbi1jb2xsYXBzZSB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvcmRlci1yYWRpdXMpKTtcbiAgICB9XG4gIH1cbn1cblxuLmFjY29yZGlvbi1ib2R5IHtcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1ib2R5LXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1ib2R5LXBhZGRpbmcteCk7XG59XG5cblxuLy8gRmx1c2ggYWNjb3JkaW9uIGl0ZW1zXG4vL1xuLy8gUmVtb3ZlIGJvcmRlcnMgYW5kIGJvcmRlci1yYWRpdXMgdG8ga2VlcCBhY2NvcmRpb24gaXRlbXMgZWRnZS10by1lZGdlLlxuXG4uYWNjb3JkaW9uLWZsdXNoIHtcbiAgLmFjY29yZGlvbi1jb2xsYXBzZSB7XG4gICAgYm9yZGVyLXdpZHRoOiAwO1xuICB9XG5cbiAgLmFjY29yZGlvbi1pdGVtIHtcbiAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTtcblxuICAgICY6Zmlyc3QtY2hpbGQgeyBib3JkZXItdG9wOiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogMDsgfVxuXG4gICAgLmFjY29yZGlvbi1idXR0b24ge1xuICAgICAgJixcbiAgICAgICYuY29sbGFwc2VkIHtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQGlmICRlbmFibGUtZGFyay1tb2RlIHtcbiAgQGluY2x1ZGUgY29sb3ItbW9kZShkYXJrKSB7XG4gICAgLmFjY29yZGlvbi1idXR0b246OmFmdGVyIHtcbiAgICAgIC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4taWNvbjogI3tlc2NhcGUtc3ZnKCRhY2NvcmRpb24tYnV0dG9uLWljb24tZGFyayl9O1xuICAgICAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1hY3RpdmUtaWNvbjogI3tlc2NhcGUtc3ZnKCRhY2NvcmRpb24tYnV0dG9uLWFjdGl2ZS1pY29uLWRhcmspfTtcbiAgICB9XG4gIH1cbn1cbiIsIi5icmVhZGNydW1iIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IGJyZWFkY3J1bWItY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1wYWRkaW5nLXg6ICN7JGJyZWFkY3J1bWItcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1wYWRkaW5nLXk6ICN7JGJyZWFkY3J1bWItcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1tYXJnaW4tYm90dG9tOiAjeyRicmVhZGNydW1iLW1hcmdpbi1ib3R0b219O1xuICBAaW5jbHVkZSByZnMoJGJyZWFkY3J1bWItZm9udC1zaXplLCAtLSN7JHByZWZpeH1icmVhZGNydW1iLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fWJyZWFkY3J1bWItYmc6ICN7JGJyZWFkY3J1bWItYmd9O1xuICAtLSN7JHByZWZpeH1icmVhZGNydW1iLWJvcmRlci1yYWRpdXM6ICN7JGJyZWFkY3J1bWItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fWJyZWFkY3J1bWItZGl2aWRlci1jb2xvcjogI3skYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1pdGVtLXBhZGRpbmcteDogI3skYnJlYWRjcnVtYi1pdGVtLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWJyZWFkY3J1bWItaXRlbS1hY3RpdmUtY29sb3I6ICN7JGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBicmVhZGNydW1iLWNzcy12YXJzXG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLXBhZGRpbmcteCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLW1hcmdpbi1ib3R0b20pO1xuICBAaW5jbHVkZSBmb250LXNpemUodmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItZm9udC1zaXplKSk7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLWJnKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1ib3JkZXItcmFkaXVzKSk7XG59XG5cbi5icmVhZGNydW1iLWl0ZW0ge1xuICAvLyBUaGUgc2VwYXJhdG9yIGJldHdlZW4gYnJlYWRjcnVtYnMgKGJ5IGRlZmF1bHQsIGEgZm9yd2FyZC1zbGFzaDogXCIvXCIpXG4gICsgLmJyZWFkY3J1bWItaXRlbSB7XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1pdGVtLXBhZGRpbmcteCk7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgZmxvYXQ6IGxlZnQ7IC8vIFN1cHByZXNzIGlubGluZSBzcGFjaW5ncyBhbmQgdW5kZXJsaW5pbmcgb2YgdGhlIHNlcGFyYXRvclxuICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItaXRlbS1wYWRkaW5nLXgpO1xuICAgICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLWRpdmlkZXItY29sb3IpO1xuICAgICAgY29udGVudDogdmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItZGl2aWRlciwgZXNjYXBlLXN2ZygkYnJlYWRjcnVtYi1kaXZpZGVyKSkgI3tcIi8qIHJ0bDpcIn0gdmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItZGl2aWRlciwgZXNjYXBlLXN2ZygkYnJlYWRjcnVtYi1kaXZpZGVyLWZsaXBwZWQpKSAje1wiKi9cIn07XG4gICAgfVxuICB9XG5cbiAgJi5hY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1pdGVtLWFjdGl2ZS1jb2xvcik7XG4gIH1cbn1cbiIsIi5wYWdpbmF0aW9uIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IHBhZ2luYXRpb24tY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1wYWRkaW5nLXg6ICN7JHBhZ2luYXRpb24tcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1wYWRkaW5nLXk6ICN7JHBhZ2luYXRpb24tcGFkZGluZy15fTtcbiAgQGluY2x1ZGUgcmZzKCRwYWdpbmF0aW9uLWZvbnQtc2l6ZSwgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1iZzogI3skcGFnaW5hdGlvbi1iZ307XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tYm9yZGVyLXdpZHRoOiAjeyRwYWdpbmF0aW9uLWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tYm9yZGVyLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tYm9yZGVyLXJhZGl1czogI3skcGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1ob3Zlci1jb2xvcjogI3skcGFnaW5hdGlvbi1ob3Zlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24taG92ZXItYmc6ICN7JHBhZ2luYXRpb24taG92ZXItYmd9O1xuICAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWhvdmVyLWJvcmRlci1jb2xvcjogI3skcGFnaW5hdGlvbi1ob3Zlci1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWZvY3VzLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWZvY3VzLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1mb2N1cy1iZzogI3skcGFnaW5hdGlvbi1mb2N1cy1iZ307XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tZm9jdXMtYm94LXNoYWRvdzogI3skcGFnaW5hdGlvbi1mb2N1cy1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1hY3RpdmUtY29sb3I6ICN7JHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1hY3RpdmUtYmc6ICN7JHBhZ2luYXRpb24tYWN0aXZlLWJnfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWFjdGl2ZS1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1kaXNhYmxlZC1iZzogI3skcGFnaW5hdGlvbi1kaXNhYmxlZC1iZ307XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWRpc2FibGVkLWJvcmRlci1jb2xvcn07XG4gIC8vIHNjc3MtZG9jcy1lbmQgcGFnaW5hdGlvbi1jc3MtdmFyc1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIEBpbmNsdWRlIGxpc3QtdW5zdHlsZWQoKTtcbn1cblxuLnBhZ2UtbGluayB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tcGFkZGluZy14KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWZvbnQtc2l6ZSkpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tY29sb3IpO1xuICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWRlY29yYXRpb24gPT0gbm9uZSwgbnVsbCwgbm9uZSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWJnKTtcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHBhZ2luYXRpb24tdHJhbnNpdGlvbik7XG5cbiAgJjpob3ZlciB7XG4gICAgei1pbmRleDogMjtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24taG92ZXItY29sb3IpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogaWYoJGxpbmstaG92ZXItZGVjb3JhdGlvbiA9PSB1bmRlcmxpbmUsIG5vbmUsIG51bGwpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWhvdmVyLWJnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWhvdmVyLWJvcmRlci1jb2xvcik7XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICB6LWluZGV4OiAzO1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1mb2N1cy1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tZm9jdXMtYmcpO1xuICAgIG91dGxpbmU6ICRwYWdpbmF0aW9uLWZvY3VzLW91dGxpbmU7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tZm9jdXMtYm94LXNoYWRvdyk7XG4gIH1cblxuICAmLmFjdGl2ZSxcbiAgLmFjdGl2ZSA+ICYge1xuICAgIHotaW5kZXg6IDM7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWFjdGl2ZS1jb2xvcik7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcodmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tYWN0aXZlLWJnKSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1hY3RpdmUtYm9yZGVyLWNvbG9yKTtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gIC5kaXNhYmxlZCA+ICYge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcik7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tZGlzYWJsZWQtYmcpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtcbiAgfVxufVxuXG4ucGFnZS1pdGVtIHtcbiAgJjpub3QoOmZpcnN0LWNoaWxkKSAucGFnZS1saW5rIHtcbiAgICBtYXJnaW4tbGVmdDogJHBhZ2luYXRpb24tbWFyZ2luLXN0YXJ0O1xuICB9XG5cbiAgQGlmICRwYWdpbmF0aW9uLW1hcmdpbi1zdGFydCA9PSBjYWxjKCN7JHBhZ2luYXRpb24tYm9yZGVyLXdpZHRofSAqIC0xKSB7XG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAucGFnZS1saW5rIHtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXN0YXJ0LXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIC5wYWdlLWxpbmsge1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItZW5kLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzKSk7XG4gICAgICB9XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAvLyBBZGQgYm9yZGVyLXJhZGl1cyB0byBhbGwgcGFnZUxpbmtzIGluIGNhc2UgdGhleSBoYXZlIGxlZnQgbWFyZ2luXG4gICAgLnBhZ2UtbGluayB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWJvcmRlci1yYWRpdXMpKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vL1xuLy8gU2l6aW5nXG4vL1xuXG4ucGFnaW5hdGlvbi1sZyB7XG4gIEBpbmNsdWRlIHBhZ2luYXRpb24tc2l6ZSgkcGFnaW5hdGlvbi1wYWRkaW5nLXktbGcsICRwYWdpbmF0aW9uLXBhZGRpbmcteC1sZywgJGZvbnQtc2l6ZS1sZywgJHBhZ2luYXRpb24tYm9yZGVyLXJhZGl1cy1sZyk7XG59XG5cbi5wYWdpbmF0aW9uLXNtIHtcbiAgQGluY2x1ZGUgcGFnaW5hdGlvbi1zaXplKCRwYWdpbmF0aW9uLXBhZGRpbmcteS1zbSwgJHBhZ2luYXRpb24tcGFkZGluZy14LXNtLCAkZm9udC1zaXplLXNtLCAkcGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzLXNtKTtcbn1cbiIsIi8vIFBhZ2luYXRpb25cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHBhZ2luYXRpb24tbWl4aW5cbkBtaXhpbiBwYWdpbmF0aW9uLXNpemUoJHBhZGRpbmcteSwgJHBhZGRpbmcteCwgJGZvbnQtc2l6ZSwgJGJvcmRlci1yYWRpdXMpIHtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1wYWRkaW5nLXg6ICN7JHBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tcGFkZGluZy15OiAjeyRwYWRkaW5nLXl9O1xuICBAaW5jbHVkZSByZnMoJGZvbnQtc2l6ZSwgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWJvcmRlci1yYWRpdXM6ICN7JGJvcmRlci1yYWRpdXN9O1xufVxuLy8gc2Nzcy1kb2NzLWVuZCBwYWdpbmF0aW9uLW1peGluXG4iLCIvLyBCYXNlIGNsYXNzXG4vL1xuLy8gUmVxdWlyZXMgb25lIG9mIHRoZSBjb250ZXh0dWFsLCBjb2xvciBtb2RpZmllciBjbGFzc2VzIGZvciBgY29sb3JgIGFuZFxuLy8gYGJhY2tncm91bmQtY29sb3JgLlxuXG4uYmFkZ2Uge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgYmFkZ2UtY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9YmFkZ2UtcGFkZGluZy14OiAjeyRiYWRnZS1wYWRkaW5nLXh9O1xuICAtLSN7JHByZWZpeH1iYWRnZS1wYWRkaW5nLXk6ICN7JGJhZGdlLXBhZGRpbmcteX07XG4gIEBpbmNsdWRlIHJmcygkYmFkZ2UtZm9udC1zaXplLCAtLSN7JHByZWZpeH1iYWRnZS1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1iYWRnZS1mb250LXdlaWdodDogI3skYmFkZ2UtZm9udC13ZWlnaHR9O1xuICAtLSN7JHByZWZpeH1iYWRnZS1jb2xvcjogI3skYmFkZ2UtY29sb3J9O1xuICAtLSN7JHByZWZpeH1iYWRnZS1ib3JkZXItcmFkaXVzOiAjeyRiYWRnZS1ib3JkZXItcmFkaXVzfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBiYWRnZS1jc3MtdmFyc1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fWJhZGdlLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fWJhZGdlLXBhZGRpbmcteCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSh2YXIoLS0jeyRwcmVmaXh9YmFkZ2UtZm9udC1zaXplKSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9YmFkZ2UtZm9udC13ZWlnaHQpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1iYWRnZS1jb2xvcik7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1iYWRnZS1ib3JkZXItcmFkaXVzKSk7XG4gIEBpbmNsdWRlIGdyYWRpZW50LWJnKCk7XG5cbiAgLy8gRW1wdHkgYmFkZ2VzIGNvbGxhcHNlIGF1dG9tYXRpY2FsbHlcbiAgJjplbXB0eSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBRdWljayBmaXggZm9yIGJhZGdlcyBpbiBidXR0b25zXG4uYnRuIC5iYWRnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMXB4O1xufVxuIiwiLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uYWxlcnQge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgYWxlcnQtY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9YWxlcnQtYmc6IHRyYW5zcGFyZW50O1xuICAtLSN7JHByZWZpeH1hbGVydC1wYWRkaW5nLXg6ICN7JGFsZXJ0LXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWFsZXJ0LXBhZGRpbmcteTogI3skYWxlcnQtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9YWxlcnQtbWFyZ2luLWJvdHRvbTogI3skYWxlcnQtbWFyZ2luLWJvdHRvbX07XG4gIC0tI3skcHJlZml4fWFsZXJ0LWNvbG9yOiBpbmhlcml0O1xuICAtLSN7JHByZWZpeH1hbGVydC1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAtLSN7JHByZWZpeH1hbGVydC1ib3JkZXI6ICN7JGFsZXJ0LWJvcmRlci13aWR0aH0gc29saWQgdmFyKC0tI3skcHJlZml4fWFsZXJ0LWJvcmRlci1jb2xvcik7XG4gIC0tI3skcHJlZml4fWFsZXJ0LWJvcmRlci1yYWRpdXM6ICN7JGFsZXJ0LWJvcmRlci1yYWRpdXN9O1xuICAtLSN7JHByZWZpeH1hbGVydC1saW5rLWNvbG9yOiBpbmhlcml0O1xuICAvLyBzY3NzLWRvY3MtZW5kIGFsZXJ0LWNzcy12YXJzXG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9YWxlcnQtcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9YWxlcnQtcGFkZGluZy14KTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fWFsZXJ0LW1hcmdpbi1ib3R0b20pO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWFsZXJ0LWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWFsZXJ0LWJnKTtcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9YWxlcnQtYm9yZGVyKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9YWxlcnQtYm9yZGVyLXJhZGl1cykpO1xufVxuXG4vLyBIZWFkaW5ncyBmb3IgbGFyZ2VyIGFsZXJ0c1xuLmFsZXJ0LWhlYWRpbmcge1xuICAvLyBTcGVjaWZpZWQgdG8gcHJldmVudCBjb25mbGljdHMgb2YgY2hhbmdpbmcgJGhlYWRpbmdzLWNvbG9yXG4gIGNvbG9yOiBpbmhlcml0O1xufVxuXG4vLyBQcm92aWRlIGNsYXNzIGZvciBsaW5rcyB0aGF0IG1hdGNoIGFsZXJ0c1xuLmFsZXJ0LWxpbmsge1xuICBmb250LXdlaWdodDogJGFsZXJ0LWxpbmstZm9udC13ZWlnaHQ7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YWxlcnQtbGluay1jb2xvcik7XG59XG5cblxuLy8gRGlzbWlzc2libGUgYWxlcnRzXG4vL1xuLy8gRXhwYW5kIHRoZSByaWdodCBwYWRkaW5nIGFuZCBhY2NvdW50IGZvciB0aGUgY2xvc2UgYnV0dG9uJ3MgcG9zaXRpb25pbmcuXG5cbi5hbGVydC1kaXNtaXNzaWJsZSB7XG4gIHBhZGRpbmctcmlnaHQ6ICRhbGVydC1kaXNtaXNzaWJsZS1wYWRkaW5nLXI7XG5cbiAgLy8gQWRqdXN0IGNsb3NlIGxpbmsgcG9zaXRpb25cbiAgLmJ0bi1jbG9zZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB6LWluZGV4OiAkc3RyZXRjaGVkLWxpbmstei1pbmRleCArIDE7XG4gICAgcGFkZGluZzogJGFsZXJ0LXBhZGRpbmcteSAqIDEuMjUgJGFsZXJ0LXBhZGRpbmcteDtcbiAgfVxufVxuXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBhbGVydC1tb2RpZmllcnNcbi8vIEdlbmVyYXRlIGNvbnRleHR1YWwgbW9kaWZpZXIgY2xhc3NlcyBmb3IgY29sb3JpemluZyB0aGUgYWxlcnRcbkBlYWNoICRzdGF0ZSBpbiBtYXAta2V5cygkdGhlbWUtY29sb3JzKSB7XG4gIC5hbGVydC0jeyRzdGF0ZX0ge1xuICAgIC0tI3skcHJlZml4fWFsZXJ0LWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9I3skc3RhdGV9LXRleHQtZW1waGFzaXMpO1xuICAgIC0tI3skcHJlZml4fWFsZXJ0LWJnOiB2YXIoLS0jeyRwcmVmaXh9I3skc3RhdGV9LWJnLXN1YnRsZSk7XG4gICAgLS0jeyRwcmVmaXh9YWxlcnQtYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9I3skc3RhdGV9LWJvcmRlci1zdWJ0bGUpO1xuICAgIC0tI3skcHJlZml4fWFsZXJ0LWxpbmstY29sb3I6IHZhcigtLSN7JHByZWZpeH0jeyRzdGF0ZX0tdGV4dC1lbXBoYXNpcyk7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgYWxlcnQtbW9kaWZpZXJzXG4iLCIvLyBEaXNhYmxlIGFuaW1hdGlvbiBpZiB0cmFuc2l0aW9ucyBhcmUgZGlzYWJsZWRcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHByb2dyZXNzLWtleWZyYW1lc1xuQGlmICRlbmFibGUtdHJhbnNpdGlvbnMge1xuICBAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHtcbiAgICAwJSB7IGJhY2tncm91bmQtcG9zaXRpb24teDogJHByb2dyZXNzLWhlaWdodDsgfVxuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIHByb2dyZXNzLWtleWZyYW1lc1xuXG4ucHJvZ3Jlc3MsXG4ucHJvZ3Jlc3Mtc3RhY2tlZCB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBwcm9ncmVzcy1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1wcm9ncmVzcy1oZWlnaHQ6ICN7JHByb2dyZXNzLWhlaWdodH07XG4gIEBpbmNsdWRlIHJmcygkcHJvZ3Jlc3MtZm9udC1zaXplLCAtLSN7JHByZWZpeH1wcm9ncmVzcy1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1wcm9ncmVzcy1iZzogI3skcHJvZ3Jlc3MtYmd9O1xuICAtLSN7JHByZWZpeH1wcm9ncmVzcy1ib3JkZXItcmFkaXVzOiAjeyRwcm9ncmVzcy1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYm94LXNoYWRvdzogI3skcHJvZ3Jlc3MtYm94LXNoYWRvd307XG4gIC0tI3skcHJlZml4fXByb2dyZXNzLWJhci1jb2xvcjogI3skcHJvZ3Jlc3MtYmFyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYmFyLWJnOiAjeyRwcm9ncmVzcy1iYXItYmd9O1xuICAtLSN7JHByZWZpeH1wcm9ncmVzcy1iYXItdHJhbnNpdGlvbjogI3skcHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb259O1xuICAvLyBzY3NzLWRvY3MtZW5kIHByb2dyZXNzLWNzcy12YXJzXG5cbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtaGVpZ2h0KTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgLy8gZm9yY2Ugcm91bmRlZCBjb3JuZXJzIGJ5IGNyb3BwaW5nIGl0XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSh2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtZm9udC1zaXplKSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1iZyk7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fXByb2dyZXNzLWJvcmRlci1yYWRpdXMpKTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdyh2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYm94LXNoYWRvdykpO1xufVxuXG4ucHJvZ3Jlc3MtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYmFyLWNvbG9yKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYmFyLWJnKTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbih2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb24pKTtcbn1cblxuLnByb2dyZXNzLWJhci1zdHJpcGVkIHtcbiAgQGluY2x1ZGUgZ3JhZGllbnQtc3RyaXBlZCgpO1xuICBiYWNrZ3JvdW5kLXNpemU6IHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1oZWlnaHQpIHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1oZWlnaHQpO1xufVxuXG4ucHJvZ3Jlc3Mtc3RhY2tlZCA+IC5wcm9ncmVzcyB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4ucHJvZ3Jlc3Mtc3RhY2tlZCA+IC5wcm9ncmVzcyA+IC5wcm9ncmVzcy1iYXIge1xuICB3aWR0aDogMTAwJTtcbn1cblxuQGlmICRlbmFibGUtdHJhbnNpdGlvbnMge1xuICAucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIHtcbiAgICBhbmltYXRpb246ICRwcm9ncmVzcy1iYXItYW5pbWF0aW9uLXRpbWluZyBwcm9ncmVzcy1iYXItc3RyaXBlcztcblxuICAgIEBpZiAkZW5hYmxlLXJlZHVjZWQtbW90aW9uIHtcbiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEJhc2UgY2xhc3Ncbi8vXG4vLyBFYXNpbHkgdXNhYmxlIG9uIDx1bD4sIDxvbD4sIG9yIDxkaXY+LlxuXG4ubGlzdC1ncm91cCB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBsaXN0LWdyb3VwLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtY29sb3I6ICN7JGxpc3QtZ3JvdXAtY29sb3J9O1xuICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWJnOiAjeyRsaXN0LWdyb3VwLWJnfTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItY29sb3I6ICN7JGxpc3QtZ3JvdXAtYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItd2lkdGg6ICN7JGxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItcmFkaXVzOiAjeyRsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXN9O1xuICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWl0ZW0tcGFkZGluZy14OiAjeyRsaXN0LWdyb3VwLWl0ZW0tcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteTogI3skbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteX07XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWNvbG9yOiAjeyRsaXN0LWdyb3VwLWFjdGlvbi1jb2xvcn07XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yOiAjeyRsaXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWJnOiAjeyRsaXN0LWdyb3VwLWhvdmVyLWJnfTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWNvbG9yOiAjeyRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtY29sb3J9O1xuICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6ICN7JGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1iZ307XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtZGlzYWJsZWQtY29sb3I6ICN7JGxpc3QtZ3JvdXAtZGlzYWJsZWQtY29sb3J9O1xuICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWRpc2FibGVkLWJnOiAjeyRsaXN0LWdyb3VwLWRpc2FibGVkLWJnfTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3RpdmUtY29sb3I6ICN7JGxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3RpdmUtYmc6ICN7JGxpc3QtZ3JvdXAtYWN0aXZlLWJnfTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjeyRsaXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3J9O1xuICAvLyBzY3NzLWRvY3MtZW5kIGxpc3QtZ3JvdXAtY3NzLXZhcnNcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8vIE5vIG5lZWQgdG8gc2V0IGxpc3Qtc3R5bGU6IG5vbmU7IHNpbmNlIC5saXN0LWdyb3VwLWl0ZW0gaXMgYmxvY2sgbGV2ZWxcbiAgcGFkZGluZy1sZWZ0OiAwOyAvLyByZXNldCBwYWRkaW5nIGJlY2F1c2UgdWwgYW5kIG9sXG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cykpO1xufVxuXG4ubGlzdC1ncm91cC1udW1iZXJlZCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgY291bnRlci1yZXNldDogc2VjdGlvbjtcblxuICA+IC5saXN0LWdyb3VwLWl0ZW06OmJlZm9yZSB7XG4gICAgLy8gSW5jcmVtZW50cyBvbmx5IHRoaXMgaW5zdGFuY2Ugb2YgdGhlIHNlY3Rpb24gY291bnRlclxuICAgIGNvbnRlbnQ6IGNvdW50ZXJzKHNlY3Rpb24sIFwiLlwiKSBcIi4gXCI7XG4gICAgY291bnRlci1pbmNyZW1lbnQ6IHNlY3Rpb247XG4gIH1cbn1cblxuLy8gSW50ZXJhY3RpdmUgbGlzdCBpdGVtc1xuLy9cbi8vIFVzZSBhbmNob3Igb3IgYnV0dG9uIGVsZW1lbnRzIGluc3RlYWQgb2YgYGxpYHMgb3IgYGRpdmBzIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZVxuLy8gbGlzdCBpdGVtcy4gSW5jbHVkZXMgYW4gZXh0cmEgYC5hY3RpdmVgIG1vZGlmaWVyIGNsYXNzIGZvciBzZWxlY3RlZCBpdGVtcy5cblxuLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24ge1xuICB3aWR0aDogMTAwJTsgLy8gRm9yIGA8YnV0dG9uPmBzIChhbmNob3JzIGJlY29tZSAxMDAlIGJ5IGRlZmF1bHQgdGhvdWdoKVxuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWNvbG9yKTtcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDsgLy8gRm9yIGA8YnV0dG9uPmBzIChhbmNob3JzIGluaGVyaXQpXG5cbiAgLy8gSG92ZXIgc3RhdGVcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgei1pbmRleDogMTsgLy8gUGxhY2UgaG92ZXIvZm9jdXMgaXRlbXMgYWJvdmUgdGhlaXIgc2libGluZ3MgZm9yIHByb3BlciBib3JkZXIgc3R5bGluZ1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3IpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3Rpb24taG92ZXItYmcpO1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWJnKTtcbiAgfVxufVxuXG4vLyBJbmRpdmlkdWFsIGxpc3QgaXRlbXNcbi8vXG4vLyBVc2Ugb24gYGxpYHMgb3IgYGRpdmBzIHdpdGhpbiB0aGUgYC5saXN0LWdyb3VwYCBwYXJlbnQuXG5cbi5saXN0LWdyb3VwLWl0ZW0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXgpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtY29sb3IpO1xuICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWRlY29yYXRpb24gPT0gbm9uZSwgbnVsbCwgbm9uZSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWJnKTtcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWJvcmRlci1jb2xvcik7XG5cbiAgJjpmaXJzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoaW5oZXJpdCk7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKGluaGVyaXQpO1xuICB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWRpc2FibGVkLWNvbG9yKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1kaXNhYmxlZC1iZyk7XG4gIH1cblxuICAvLyBJbmNsdWRlIGJvdGggaGVyZSBmb3IgYDxhPmBzIGFuZCBgPGJ1dHRvbj5gc1xuICAmLmFjdGl2ZSB7XG4gICAgei1pbmRleDogMjsgLy8gUGxhY2UgYWN0aXZlIGl0ZW1zIGFib3ZlIHRoZWlyIHNpYmxpbmdzIGZvciBwcm9wZXIgYm9yZGVyIHN0eWxpbmdcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3RpdmUtYmcpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aXZlLWJvcmRlci1jb2xvcik7XG4gIH1cblxuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9zZWxlY3Rvci1uby1yZWR1bmRhbnQtbmVzdGluZy1zZWxlY3RvclxuICAmICsgLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcblxuICAgICYuYWN0aXZlIHtcbiAgICAgIG1hcmdpbi10b3A6IGNhbGMoLTEgKiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItd2lkdGgpKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWJvcmRlci13aWR0aCk7XG4gICAgfVxuICB9XG59XG5cbi8vIEhvcml6b250YWxcbi8vXG4vLyBDaGFuZ2UgdGhlIGxheW91dCBvZiBsaXN0IGdyb3VwIGl0ZW1zIGZyb20gdmVydGljYWwgKGRlZmF1bHQpIHRvIGhvcml6b250YWwuXG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC5saXN0LWdyb3VwLWhvcml6b250YWwjeyRpbmZpeH0ge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcblxuICAgICAgPiAubGlzdC1ncm91cC1pdGVtIHtcbiAgICAgICAgJjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXN0YXJ0LXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKSk7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1lbmQtcmFkaXVzKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItdG9wLWVuZC1yYWRpdXModmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cykpO1xuICAgICAgICAgIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tc3RhcnQtcmFkaXVzKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICArIC5saXN0LWdyb3VwLWl0ZW0ge1xuICAgICAgICAgIGJvcmRlci10b3Atd2lkdGg6IHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWJvcmRlci13aWR0aCk7XG4gICAgICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG5cbiAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtMSAqIHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWJvcmRlci13aWR0aCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgICAgICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWJvcmRlci13aWR0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuLy8gRmx1c2ggbGlzdCBpdGVtc1xuLy9cbi8vIFJlbW92ZSBib3JkZXJzIGFuZCBib3JkZXItcmFkaXVzIHRvIGtlZXAgbGlzdCBncm91cCBpdGVtcyBlZGdlLXRvLWVkZ2UuIE1vc3Rcbi8vIHVzZWZ1bCB3aXRoaW4gb3RoZXIgY29tcG9uZW50cyAoZS5nLiwgY2FyZHMpLlxuXG4ubGlzdC1ncm91cC1mbHVzaCB7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG5cbiAgPiAubGlzdC1ncm91cC1pdGVtIHtcbiAgICBib3JkZXItd2lkdGg6IDAgMCB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItd2lkdGgpO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgfVxuICB9XG59XG5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGxpc3QtZ3JvdXAtbW9kaWZpZXJzXG4vLyBMaXN0IGdyb3VwIGNvbnRleHR1YWwgdmFyaWFudHNcbi8vXG4vLyBBZGQgbW9kaWZpZXIgY2xhc3NlcyB0byBjaGFuZ2UgdGV4dCBhbmQgYmFja2dyb3VuZCBjb2xvciBvbiBpbmRpdmlkdWFsIGl0ZW1zLlxuLy8gT3JnYW5pemF0aW9uYWxseSwgdGhpcyBtdXN0IGNvbWUgYWZ0ZXIgdGhlIGA6aG92ZXJgIHN0YXRlcy5cblxuQGVhY2ggJHN0YXRlIGluIG1hcC1rZXlzKCR0aGVtZS1jb2xvcnMpIHtcbiAgLmxpc3QtZ3JvdXAtaXRlbS0jeyRzdGF0ZX0ge1xuICAgIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtY29sb3I6IHZhcigtLSN7JHByZWZpeH0jeyRzdGF0ZX0tdGV4dC1lbXBoYXNpcyk7XG4gICAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1iZzogdmFyKC0tI3skcHJlZml4fSN7JHN0YXRlfS1iZy1zdWJ0bGUpO1xuICAgIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9I3skc3RhdGV9LWJvcmRlci1zdWJ0bGUpO1xuICAgIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9ZW1waGFzaXMtY29sb3IpO1xuICAgIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWJnOiB2YXIoLS0jeyRwcmVmaXh9I3skc3RhdGV9LWJvcmRlci1zdWJ0bGUpO1xuICAgIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjogdmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yKTtcbiAgICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6IHZhcigtLSN7JHByZWZpeH0jeyRzdGF0ZX0tYm9yZGVyLXN1YnRsZSk7XG4gICAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3RpdmUtY29sb3I6IHZhcigtLSN7JHByZWZpeH0jeyRzdGF0ZX0tYmctc3VidGxlKTtcbiAgICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWFjdGl2ZS1iZzogdmFyKC0tI3skcHJlZml4fSN7JHN0YXRlfS10ZXh0LWVtcGhhc2lzKTtcbiAgICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH0jeyRzdGF0ZX0tdGV4dC1lbXBoYXNpcyk7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgbGlzdC1ncm91cC1tb2RpZmllcnNcbiIsIi8vIFRyYW5zcGFyZW50IGJhY2tncm91bmQgYW5kIGJvcmRlciBwcm9wZXJ0aWVzIGluY2x1ZGVkIGZvciBidXR0b24gdmVyc2lvbi5cbi8vIGlPUyByZXF1aXJlcyB0aGUgYnV0dG9uIGVsZW1lbnQgaW5zdGVhZCBvZiBhbiBhbmNob3IgdGFnLlxuLy8gSWYgeW91IHdhbnQgdGhlIGFuY2hvciB2ZXJzaW9uLCBpdCByZXF1aXJlcyBgaHJlZj1cIiNcImAuXG4vLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2NsaWNrI1NhZmFyaV9Nb2JpbGVcblxuLmJ0bi1jbG9zZSB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBjbG9zZS1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1idG4tY2xvc2UtY29sb3I6ICN7JGJ0bi1jbG9zZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fWJ0bi1jbG9zZS1iZzogI3sgZXNjYXBlLXN2ZygkYnRuLWNsb3NlLWJnKSB9O1xuICAtLSN7JHByZWZpeH1idG4tY2xvc2Utb3BhY2l0eTogI3skYnRuLWNsb3NlLW9wYWNpdHl9O1xuICAtLSN7JHByZWZpeH1idG4tY2xvc2UtaG92ZXItb3BhY2l0eTogI3skYnRuLWNsb3NlLWhvdmVyLW9wYWNpdHl9O1xuICAtLSN7JHByZWZpeH1idG4tY2xvc2UtZm9jdXMtc2hhZG93OiAjeyRidG4tY2xvc2UtZm9jdXMtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9YnRuLWNsb3NlLWZvY3VzLW9wYWNpdHk6ICN7JGJ0bi1jbG9zZS1mb2N1cy1vcGFjaXR5fTtcbiAgLS0jeyRwcmVmaXh9YnRuLWNsb3NlLWRpc2FibGVkLW9wYWNpdHk6ICN7JGJ0bi1jbG9zZS1kaXNhYmxlZC1vcGFjaXR5fTtcbiAgLS0jeyRwcmVmaXh9YnRuLWNsb3NlLXdoaXRlLWZpbHRlcjogI3skYnRuLWNsb3NlLXdoaXRlLWZpbHRlcn07XG4gIC8vIHNjc3MtZG9jcy1lbmQgY2xvc2UtY3NzLXZhcnNcblxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgd2lkdGg6ICRidG4tY2xvc2Utd2lkdGg7XG4gIGhlaWdodDogJGJ0bi1jbG9zZS1oZWlnaHQ7XG4gIHBhZGRpbmc6ICRidG4tY2xvc2UtcGFkZGluZy15ICRidG4tY2xvc2UtcGFkZGluZy14O1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1jbG9zZS1jb2xvcik7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHZhcigtLSN7JHByZWZpeH1idG4tY2xvc2UtYmcpIGNlbnRlciAvICRidG4tY2xvc2Utd2lkdGggYXV0byBuby1yZXBlYXQ7IC8vIGluY2x1ZGUgdHJhbnNwYXJlbnQgZm9yIGJ1dHRvbiBlbGVtZW50c1xuICBib3JkZXI6IDA7IC8vIGZvciBidXR0b24gZWxlbWVudHNcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygpO1xuICBvcGFjaXR5OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWNsb3NlLW9wYWNpdHkpO1xuXG4gIC8vIE92ZXJyaWRlIDxhPidzIGhvdmVyIHN0eWxlXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWNsb3NlLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgb3BhY2l0eTogdmFyKC0tI3skcHJlZml4fWJ0bi1jbG9zZS1ob3Zlci1vcGFjaXR5KTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fWJ0bi1jbG9zZS1mb2N1cy1zaGFkb3cpO1xuICAgIG9wYWNpdHk6IHZhcigtLSN7JHByZWZpeH1idG4tY2xvc2UtZm9jdXMtb3BhY2l0eSk7XG4gIH1cblxuICAmOmRpc2FibGVkLFxuICAmLmRpc2FibGVkIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBvcGFjaXR5OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWNsb3NlLWRpc2FibGVkLW9wYWNpdHkpO1xuICB9XG59XG5cbkBtaXhpbiBidG4tY2xvc2Utd2hpdGUoKSB7XG4gIGZpbHRlcjogdmFyKC0tI3skcHJlZml4fWJ0bi1jbG9zZS13aGl0ZS1maWx0ZXIpO1xufVxuXG4uYnRuLWNsb3NlLXdoaXRlIHtcbiAgQGluY2x1ZGUgYnRuLWNsb3NlLXdoaXRlKCk7XG59XG5cbkBpZiAkZW5hYmxlLWRhcmstbW9kZSB7XG4gIEBpbmNsdWRlIGNvbG9yLW1vZGUoZGFyaykge1xuICAgIC5idG4tY2xvc2Uge1xuICAgICAgQGluY2x1ZGUgYnRuLWNsb3NlLXdoaXRlKCk7XG4gICAgfVxuICB9XG59XG4iLCIudG9hc3Qge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgdG9hc3QtY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9dG9hc3QtemluZGV4OiAjeyR6aW5kZXgtdG9hc3R9O1xuICAtLSN7JHByZWZpeH10b2FzdC1wYWRkaW5nLXg6ICN7JHRvYXN0LXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fXRvYXN0LXBhZGRpbmcteTogI3skdG9hc3QtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9dG9hc3Qtc3BhY2luZzogI3skdG9hc3Qtc3BhY2luZ307XG4gIC0tI3skcHJlZml4fXRvYXN0LW1heC13aWR0aDogI3skdG9hc3QtbWF4LXdpZHRofTtcbiAgQGluY2x1ZGUgcmZzKCR0b2FzdC1mb250LXNpemUsIC0tI3skcHJlZml4fXRvYXN0LWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fXRvYXN0LWNvbG9yOiAjeyR0b2FzdC1jb2xvcn07XG4gIC0tI3skcHJlZml4fXRvYXN0LWJnOiAjeyR0b2FzdC1iYWNrZ3JvdW5kLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dG9hc3QtYm9yZGVyLXdpZHRoOiAjeyR0b2FzdC1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH10b2FzdC1ib3JkZXItY29sb3I6ICN7JHRvYXN0LWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fXRvYXN0LWJvcmRlci1yYWRpdXM6ICN7JHRvYXN0LWJvcmRlci1yYWRpdXN9O1xuICAtLSN7JHByZWZpeH10b2FzdC1ib3gtc2hhZG93OiAjeyR0b2FzdC1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9dG9hc3QtaGVhZGVyLWNvbG9yOiAjeyR0b2FzdC1oZWFkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH10b2FzdC1oZWFkZXItYmc6ICN7JHRvYXN0LWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dG9hc3QtaGVhZGVyLWJvcmRlci1jb2xvcjogI3skdG9hc3QtaGVhZGVyLWJvcmRlci1jb2xvcn07XG4gIC8vIHNjc3MtZG9jcy1lbmQgdG9hc3QtY3NzLXZhcnNcblxuICB3aWR0aDogdmFyKC0tI3skcHJlZml4fXRvYXN0LW1heC13aWR0aCk7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH10b2FzdC1mb250LXNpemUpKTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH10b2FzdC1jb2xvcik7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtYmcpO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH10b2FzdC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH10b2FzdC1ib3JkZXItY29sb3IpO1xuICBib3gtc2hhZG93OiB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtYm94LXNoYWRvdyk7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fXRvYXN0LWJvcmRlci1yYWRpdXMpKTtcblxuICAmLnNob3dpbmcge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAmOm5vdCguc2hvdykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLnRvYXN0LWNvbnRhaW5lciB7XG4gIC0tI3skcHJlZml4fXRvYXN0LXppbmRleDogI3skemluZGV4LXRvYXN0fTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IHZhcigtLSN7JHByZWZpeH10b2FzdC16aW5kZXgpO1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgPiA6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fXRvYXN0LXNwYWNpbmcpO1xuICB9XG59XG5cbi50b2FzdC1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtcGFkZGluZy14KTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH10b2FzdC1oZWFkZXItY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtaGVhZGVyLWJnKTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fXRvYXN0LWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tI3skcHJlZml4fXRvYXN0LWhlYWRlci1ib3JkZXItY29sb3IpO1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyhjYWxjKHZhcigtLSN7JHByZWZpeH10b2FzdC1ib3JkZXItcmFkaXVzKSAtIHZhcigtLSN7JHByZWZpeH10b2FzdC1ib3JkZXItd2lkdGgpKSk7XG5cbiAgLmJ0bi1jbG9zZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH10b2FzdC1wYWRkaW5nLXgpKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tI3skcHJlZml4fXRvYXN0LXBhZGRpbmcteCk7XG4gIH1cbn1cblxuLnRvYXN0LWJvZHkge1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtcGFkZGluZy14KTtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG5cbi8vIC5tb2RhbC1vcGVuICAgICAgLSBib2R5IGNsYXNzIGZvciBraWxsaW5nIHRoZSBzY3JvbGxcbi8vIC5tb2RhbCAgICAgICAgICAgLSBjb250YWluZXIgdG8gc2Nyb2xsIHdpdGhpblxuLy8gLm1vZGFsLWRpYWxvZyAgICAtIHBvc2l0aW9uaW5nIHNoZWxsIGZvciB0aGUgYWN0dWFsIG1vZGFsXG4vLyAubW9kYWwtY29udGVudCAgIC0gYWN0dWFsIG1vZGFsIHcvIGJnIGFuZCBjb3JuZXJzIGFuZCBzdHVmZlxuXG5cbi8vIENvbnRhaW5lciB0aGF0IHRoZSBtb2RhbCBzY3JvbGxzIHdpdGhpblxuLm1vZGFsIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IG1vZGFsLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fW1vZGFsLXppbmRleDogI3skemluZGV4LW1vZGFsfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtd2lkdGg6ICN7JG1vZGFsLW1kfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtcGFkZGluZzogI3skbW9kYWwtaW5uZXItcGFkZGluZ307XG4gIC0tI3skcHJlZml4fW1vZGFsLW1hcmdpbjogI3skbW9kYWwtZGlhbG9nLW1hcmdpbn07XG4gIC0tI3skcHJlZml4fW1vZGFsLWNvbG9yOiAjeyRtb2RhbC1jb250ZW50LWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtYmc6ICN7JG1vZGFsLWNvbnRlbnQtYmd9O1xuICAtLSN7JHByZWZpeH1tb2RhbC1ib3JkZXItY29sb3I6ICN7JG1vZGFsLWNvbnRlbnQtYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtYm9yZGVyLXdpZHRoOiAjeyRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fW1vZGFsLWJvcmRlci1yYWRpdXM6ICN7JG1vZGFsLWNvbnRlbnQtYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fW1vZGFsLWJveC1zaGFkb3c6ICN7JG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy14c307XG4gIC0tI3skcHJlZml4fW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXM6ICN7JG1vZGFsLWNvbnRlbnQtaW5uZXItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fW1vZGFsLWhlYWRlci1wYWRkaW5nLXg6ICN7JG1vZGFsLWhlYWRlci1wYWRkaW5nLXh9O1xuICAtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZy15OiAjeyRtb2RhbC1oZWFkZXItcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLXBhZGRpbmc6ICN7JG1vZGFsLWhlYWRlci1wYWRkaW5nfTsgLy8gVG9kbyBpbiB2NjogU3BsaXQgdGhpcyBwYWRkaW5nIGludG8geCBhbmQgeVxuICAtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yOiAjeyRtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aDogI3skbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fW1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0OiAjeyRtb2RhbC10aXRsZS1saW5lLWhlaWdodH07XG4gIC0tI3skcHJlZml4fW1vZGFsLWZvb3Rlci1nYXA6ICN7JG1vZGFsLWZvb3Rlci1tYXJnaW4tYmV0d2Vlbn07XG4gIC0tI3skcHJlZml4fW1vZGFsLWZvb3Rlci1iZzogI3skbW9kYWwtZm9vdGVyLWJnfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcjogI3skbW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fW1vZGFsLWZvb3Rlci1ib3JkZXItd2lkdGg6ICN7JG1vZGFsLWZvb3Rlci1ib3JkZXItd2lkdGh9O1xuICAvLyBzY3NzLWRvY3MtZW5kIG1vZGFsLWNzcy12YXJzXG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IHZhcigtLSN7JHByZWZpeH1tb2RhbC16aW5kZXgpO1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIC8vIFByZXZlbnQgQ2hyb21lIG9uIFdpbmRvd3MgZnJvbSBhZGRpbmcgYSBmb2N1cyBvdXRsaW5lLiBGb3IgZGV0YWlscywgc2VlXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzEwOTUxLlxuICBvdXRsaW5lOiAwO1xuICAvLyBXZSBkZWxpYmVyYXRlbHkgZG9uJ3QgdXNlIGAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7YCBkdWUgdG8gYVxuICAvLyBnbmFybHkgaU9TIFNhZmFyaSBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNDJcbiAgLy8gU2VlIGFsc28gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xNzY5NVxufVxuXG4vLyBTaGVsbCBkaXYgdG8gcG9zaXRpb24gdGhlIG1vZGFsIHdpdGggYm90dG9tIHBhZGRpbmdcbi5tb2RhbC1kaWFsb2cge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiBhdXRvO1xuICBtYXJnaW46IHZhcigtLSN7JHByZWZpeH1tb2RhbC1tYXJnaW4pO1xuICAvLyBhbGxvdyBjbGlja3MgdG8gcGFzcyB0aHJvdWdoIGZvciBjdXN0b20gY2xpY2sgaGFuZGxpbmcgdG8gY2xvc2UgbW9kYWxcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgLy8gV2hlbiBmYWRpbmcgaW4gdGhlIG1vZGFsLCBhbmltYXRlIGl0IHRvIHNsaWRlIGRvd25cbiAgLm1vZGFsLmZhZGUgJiB7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkbW9kYWwtdHJhbnNpdGlvbik7XG4gICAgdHJhbnNmb3JtOiAkbW9kYWwtZmFkZS10cmFuc2Zvcm07XG4gIH1cbiAgLm1vZGFsLnNob3cgJiB7XG4gICAgdHJhbnNmb3JtOiAkbW9kYWwtc2hvdy10cmFuc2Zvcm07XG4gIH1cblxuICAvLyBXaGVuIHRyeWluZyB0byBjbG9zZSwgYW5pbWF0ZSBmb2N1cyB0byBzY2FsZVxuICAubW9kYWwubW9kYWwtc3RhdGljICYge1xuICAgIHRyYW5zZm9ybTogJG1vZGFsLXNjYWxlLXRyYW5zZm9ybTtcbiAgfVxufVxuXG4ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUge1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLSN7JHByZWZpeH1tb2RhbC1tYXJnaW4pICogMik7XG5cbiAgLm1vZGFsLWNvbnRlbnQge1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC5tb2RhbC1ib2R5IHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG59XG5cbi5tb2RhbC1kaWFsb2ctY2VudGVyZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtbWFyZ2luKSAqIDIpO1xufVxuXG4vLyBBY3R1YWwgbW9kYWxcbi5tb2RhbC1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTsgLy8gRW5zdXJlIGAubW9kYWwtY29udGVudGAgZXh0ZW5kcyB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgcGFyZW50IGAubW9kYWwtZGlhbG9nYFxuICAvLyBjb3VudGVyYWN0IHRoZSBwb2ludGVyLWV2ZW50czogbm9uZTsgaW4gdGhlIC5tb2RhbC1kaWFsb2dcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1tb2RhbC1jb2xvcik7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtYmcpO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH1tb2RhbC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1tb2RhbC1ib3JkZXItY29sb3IpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1tb2RhbC1ib3JkZXItcmFkaXVzKSk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3codmFyKC0tI3skcHJlZml4fW1vZGFsLWJveC1zaGFkb3cpKTtcbiAgLy8gUmVtb3ZlIGZvY3VzIG91dGxpbmUgZnJvbSBvcGVuZWQgbW9kYWxcbiAgb3V0bGluZTogMDtcbn1cblxuLy8gTW9kYWwgYmFja2dyb3VuZFxuLm1vZGFsLWJhY2tkcm9wIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IG1vZGFsLWJhY2tkcm9wLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fWJhY2tkcm9wLXppbmRleDogI3skemluZGV4LW1vZGFsLWJhY2tkcm9wfTtcbiAgLS0jeyRwcmVmaXh9YmFja2Ryb3AtYmc6ICN7JG1vZGFsLWJhY2tkcm9wLWJnfTtcbiAgLS0jeyRwcmVmaXh9YmFja2Ryb3Atb3BhY2l0eTogI3skbW9kYWwtYmFja2Ryb3Atb3BhY2l0eX07XG4gIC8vIHNjc3MtZG9jcy1lbmQgbW9kYWwtYmFja2Ryb3AtY3NzLXZhcnNcblxuICBAaW5jbHVkZSBvdmVybGF5LWJhY2tkcm9wKHZhcigtLSN7JHByZWZpeH1iYWNrZHJvcC16aW5kZXgpLCB2YXIoLS0jeyRwcmVmaXh9YmFja2Ryb3AtYmcpLCB2YXIoLS0jeyRwcmVmaXh9YmFja2Ryb3Atb3BhY2l0eSkpO1xufVxuXG4vLyBNb2RhbCBoZWFkZXJcbi8vIFRvcCBzZWN0aW9uIG9mIHRoZSBtb2RhbCB3LyB0aXRsZSBhbmQgZGlzbWlzc1xuLm1vZGFsLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IC8vIFB1dCBtb2RhbCBoZWFkZXIgZWxlbWVudHMgKHRpdGxlIGFuZCBkaXNtaXNzKSBvbiBvcHBvc2l0ZSBlbmRzXG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZyk7XG4gIGJvcmRlci1ib3R0b206IHZhcigtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKHZhcigtLSN7JHByZWZpeH1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG5cbiAgLmJ0bi1jbG9zZSB7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLXBhZGRpbmcteSkgKiAuNSkgY2FsYyh2YXIoLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLXBhZGRpbmcteCkgKiAuNSk7XG4gICAgbWFyZ2luOiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZy15KSkgY2FsYygtLjUgKiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLXBhZGRpbmcteCkpIGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fW1vZGFsLWhlYWRlci1wYWRkaW5nLXkpKSBhdXRvO1xuICB9XG59XG5cbi8vIFRpdGxlIHRleHQgd2l0aGluIGhlYWRlclxuLm1vZGFsLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1tb2RhbC10aXRsZS1saW5lLWhlaWdodCk7XG59XG5cbi8vIE1vZGFsIGJvZHlcbi8vIFdoZXJlIGFsbCBtb2RhbCBjb250ZW50IHJlc2lkZXMgKHNpYmxpbmcgb2YgLm1vZGFsLWhlYWRlciBhbmQgLm1vZGFsLWZvb3Rlcilcbi5tb2RhbC1ib2R5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvLyBFbmFibGUgYGZsZXgtZ3JvdzogMWAgc28gdGhhdCB0aGUgYm9keSB0YWtlIHVwIGFzIG11Y2ggc3BhY2UgYXMgcG9zc2libGVcbiAgLy8gd2hlbiB0aGVyZSBzaG91bGQgYmUgYSBmaXhlZCBoZWlnaHQgb24gYC5tb2RhbC1kaWFsb2dgLlxuICBmbGV4OiAxIDEgYXV0bztcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fW1vZGFsLXBhZGRpbmcpO1xufVxuXG4vLyBGb290ZXIgKGZvciBhY3Rpb25zKVxuLm1vZGFsLWZvb3RlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8vIHZlcnRpY2FsbHkgY2VudGVyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IC8vIFJpZ2h0IGFsaWduIGJ1dHRvbnMgd2l0aCBmbGV4IHByb3BlcnR5IGJlY2F1c2UgdGV4dC1hbGlnbiBkb2Vzbid0IHdvcmsgb24gZmxleCBpdGVtc1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLSN7JHByZWZpeH1tb2RhbC1wYWRkaW5nKSAtIHZhcigtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItZ2FwKSAqIC41KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fW1vZGFsLWZvb3Rlci1iZyk7XG4gIGJvcmRlci10b3A6IHZhcigtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKHZhcigtLSN7JHByZWZpeH1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG5cbiAgLy8gUGxhY2UgbWFyZ2luIGJldHdlZW4gZm9vdGVyIGVsZW1lbnRzXG4gIC8vIFRoaXMgc29sdXRpb24gaXMgZmFyIGZyb20gaWRlYWwgYmVjYXVzZSBvZiB0aGUgdW5pdmVyc2FsIHNlbGVjdG9yIHVzYWdlLFxuICAvLyBidXQgaXMgbmVlZGVkIHRvIGZpeCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI0ODAwXG4gID4gKiB7XG4gICAgbWFyZ2luOiBjYWxjKHZhcigtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItZ2FwKSAqIC41KTsgLy8gVG9kbyBpbiB2NjogcmVwbGFjZSB3aXRoIGdhcCBvbiBwYXJlbnQgY2xhc3NcbiAgfVxufVxuXG4vLyBTY2FsZSB1cCB0aGUgbW9kYWxcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgLm1vZGFsIHtcbiAgICAtLSN7JHByZWZpeH1tb2RhbC1tYXJnaW46ICN7JG1vZGFsLWRpYWxvZy1tYXJnaW4teS1zbS11cH07XG4gICAgLS0jeyRwcmVmaXh9bW9kYWwtYm94LXNoYWRvdzogI3skbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXNtLXVwfTtcbiAgfVxuXG4gIC8vIEF1dG9tYXRpY2FsbHkgc2V0IG1vZGFsJ3Mgd2lkdGggZm9yIGxhcmdlciB2aWV3cG9ydHNcbiAgLm1vZGFsLWRpYWxvZyB7XG4gICAgbWF4LXdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtd2lkdGgpO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIC5tb2RhbC1zbSB7XG4gICAgLS0jeyRwcmVmaXh9bW9kYWwtd2lkdGg6ICN7JG1vZGFsLXNtfTtcbiAgfVxufVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gIC5tb2RhbC1sZyxcbiAgLm1vZGFsLXhsIHtcbiAgICAtLSN7JHByZWZpeH1tb2RhbC13aWR0aDogI3skbW9kYWwtbGd9O1xuICB9XG59XG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoeGwpIHtcbiAgLm1vZGFsLXhsIHtcbiAgICAtLSN7JHByZWZpeH1tb2RhbC13aWR0aDogI3skbW9kYWwteGx9O1xuICB9XG59XG5cbi8vIHNjc3MtZG9jcy1zdGFydCBtb2RhbC1mdWxsc2NyZWVuLWxvb3BcbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuICAkcG9zdGZpeDogaWYoJGluZml4ICE9IFwiXCIsICRpbmZpeCArIFwiLWRvd25cIiwgXCJcIik7XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRicmVha3BvaW50KSB7XG4gICAgLm1vZGFsLWZ1bGxzY3JlZW4jeyRwb3N0Zml4fSB7XG4gICAgICB3aWR0aDogMTAwdnc7XG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBtYXJnaW46IDA7XG5cbiAgICAgIC5tb2RhbC1jb250ZW50IHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG4gICAgICB9XG5cbiAgICAgIC5tb2RhbC1oZWFkZXIsXG4gICAgICAubW9kYWwtZm9vdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTtcbiAgICAgIH1cblxuICAgICAgLm1vZGFsLWJvZHkge1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLy8gc2Nzcy1kb2NzLWVuZCBtb2RhbC1mdWxsc2NyZWVuLWxvb3BcbiIsIi8vIFNoYXJlZCBiZXR3ZWVuIG1vZGFscyBhbmQgb2ZmY2FudmFzZXNcbkBtaXhpbiBvdmVybGF5LWJhY2tkcm9wKCR6aW5kZXgsICRiYWNrZHJvcC1iZywgJGJhY2tkcm9wLW9wYWNpdHkpIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXg7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tkcm9wLWJnO1xuXG4gIC8vIEZhZGUgZm9yIGJhY2tkcm9wXG4gICYuZmFkZSB7IG9wYWNpdHk6IDA7IH1cbiAgJi5zaG93IHsgb3BhY2l0eTogJGJhY2tkcm9wLW9wYWNpdHk7IH1cbn1cbiIsIi8vIEJhc2UgY2xhc3Ncbi50b29sdGlwIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IHRvb2x0aXAtY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC16aW5kZXg6ICN7JHppbmRleC10b29sdGlwfTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1tYXgtd2lkdGg6ICN7JHRvb2x0aXAtbWF4LXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1wYWRkaW5nLXg6ICN7JHRvb2x0aXAtcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1wYWRkaW5nLXk6ICN7JHRvb2x0aXAtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1tYXJnaW46ICN7JHRvb2x0aXAtbWFyZ2lufTtcbiAgQGluY2x1ZGUgcmZzKCR0b29sdGlwLWZvbnQtc2l6ZSwgLS0jeyRwcmVmaXh9dG9vbHRpcC1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH10b29sdGlwLWNvbG9yOiAjeyR0b29sdGlwLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1iZzogI3skdG9vbHRpcC1iZ307XG4gIC0tI3skcHJlZml4fXRvb2x0aXAtYm9yZGVyLXJhZGl1czogI3skdG9vbHRpcC1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1vcGFjaXR5OiAjeyR0b29sdGlwLW9wYWNpdHl9O1xuICAtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoOiAjeyR0b29sdGlwLWFycm93LXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy1oZWlnaHQ6ICN7JHRvb2x0aXAtYXJyb3ctaGVpZ2h0fTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCB0b29sdGlwLWNzcy12YXJzXG5cbiAgei1pbmRleDogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtemluZGV4KTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtbWFyZ2luKTtcbiAgQGluY2x1ZGUgZGVwcmVjYXRlKFwiYCR0b29sdGlwLW1hcmdpbmBcIiwgXCJ2NVwiLCBcInY1LnhcIiwgdHJ1ZSk7XG4gIC8vIE91ciBwYXJlbnQgZWxlbWVudCBjYW4gYmUgYXJiaXRyYXJ5IHNpbmNlIHRvb2x0aXBzIGFyZSBieSBkZWZhdWx0IGluc2VydGVkIGFzIGEgc2libGluZyBvZiB0aGVpciB0YXJnZXQgZWxlbWVudC5cbiAgLy8gU28gcmVzZXQgb3VyIGZvbnQgYW5kIHRleHQgcHJvcGVydGllcyB0byBhdm9pZCBpbmhlcml0aW5nIHdlaXJkIHZhbHVlcy5cbiAgQGluY2x1ZGUgcmVzZXQtdGV4dCgpO1xuICBAaW5jbHVkZSBmb250LXNpemUodmFyKC0tI3skcHJlZml4fXRvb2x0aXAtZm9udC1zaXplKSk7XG4gIC8vIEFsbG93IGJyZWFraW5nIHZlcnkgbG9uZyB3b3JkcyBzbyB0aGV5IGRvbid0IG92ZXJmbG93IHRoZSB0b29sdGlwJ3MgYm91bmRzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgb3BhY2l0eTogMDtcblxuICAmLnNob3cgeyBvcGFjaXR5OiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1vcGFjaXR5KTsgfVxuXG4gIC50b29sdGlwLWFycm93IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctd2lkdGgpO1xuICAgIGhlaWdodDogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctaGVpZ2h0KTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgfVxuICB9XG59XG5cbi5icy10b29sdGlwLXRvcCAudG9vbHRpcC1hcnJvdyB7XG4gIGJvdHRvbTogY2FsYygtMSAqIHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LWhlaWdodCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuXG4gICY6OmJlZm9yZSB7XG4gICAgdG9wOiAtMXB4O1xuICAgIGJvcmRlci13aWR0aDogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctaGVpZ2h0KSBjYWxjKHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSAwOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLSN7JHByZWZpeH10b29sdGlwLWJnKTtcbiAgfVxufVxuXG4vKiBydGw6YmVnaW46aWdub3JlICovXG4uYnMtdG9vbHRpcC1lbmQgLnRvb2x0aXAtYXJyb3cge1xuICBsZWZ0OiBjYWxjKC0xICogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctaGVpZ2h0KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gIHdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy1oZWlnaHQpO1xuICBoZWlnaHQ6IHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoKTtcblxuICAmOjpiZWZvcmUge1xuICAgIHJpZ2h0OiAtMXB4O1xuICAgIGJvcmRlci13aWR0aDogY2FsYyh2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy13aWR0aCkgKiAuNSkgdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctaGVpZ2h0KSBjYWxjKHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSAwOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIGJvcmRlci1yaWdodC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYmcpO1xuICB9XG59XG5cbi8qIHJ0bDplbmQ6aWdub3JlICovXG5cbi5icy10b29sdGlwLWJvdHRvbSAudG9vbHRpcC1hcnJvdyB7XG4gIHRvcDogY2FsYygtMSAqIHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LWhlaWdodCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuXG4gICY6OmJlZm9yZSB7XG4gICAgYm90dG9tOiAtMXB4O1xuICAgIGJvcmRlci13aWR0aDogMCBjYWxjKHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy1oZWlnaHQpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLSN7JHByZWZpeH10b29sdGlwLWJnKTtcbiAgfVxufVxuXG4vKiBydGw6YmVnaW46aWdub3JlICovXG4uYnMtdG9vbHRpcC1zdGFydCAudG9vbHRpcC1hcnJvdyB7XG4gIHJpZ2h0OiBjYWxjKC0xICogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctaGVpZ2h0KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gIHdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy1oZWlnaHQpO1xuICBoZWlnaHQ6IHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoKTtcblxuICAmOjpiZWZvcmUge1xuICAgIGxlZnQ6IC0xcHg7XG4gICAgYm9yZGVyLXdpZHRoOiBjYWxjKHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSAwIGNhbGModmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctd2lkdGgpICogLjUpIHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LWhlaWdodCk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLSN7JHByZWZpeH10b29sdGlwLWJnKTtcbiAgfVxufVxuXG4vKiBydGw6ZW5kOmlnbm9yZSAqL1xuXG4uYnMtdG9vbHRpcC1hdXRvIHtcbiAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePVwidG9wXCJdIHtcbiAgICBAZXh0ZW5kIC5icy10b29sdGlwLXRvcDtcbiAgfVxuICAmW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49XCJyaWdodFwiXSB7XG4gICAgQGV4dGVuZCAuYnMtdG9vbHRpcC1lbmQ7XG4gIH1cbiAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePVwiYm90dG9tXCJdIHtcbiAgICBAZXh0ZW5kIC5icy10b29sdGlwLWJvdHRvbTtcbiAgfVxuICAmW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49XCJsZWZ0XCJdIHtcbiAgICBAZXh0ZW5kIC5icy10b29sdGlwLXN0YXJ0O1xuICB9XG59XG5cbi8vIFdyYXBwZXIgZm9yIHRoZSB0b29sdGlwIGNvbnRlbnRcbi50b29sdGlwLWlubmVyIHtcbiAgbWF4LXdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1tYXgtd2lkdGgpO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH10b29sdGlwLXBhZGRpbmcteCk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1jb2xvcik7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYmcpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH10b29sdGlwLWJvcmRlci1yYWRpdXMpKTtcbn1cbiIsIkBtaXhpbiByZXNldC10ZXh0IHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xuICAvLyBXZSBkZWxpYmVyYXRlbHkgZG8gTk9UIHJlc2V0IGZvbnQtc2l6ZSBvciBvdmVyZmxvdy13cmFwIC8gd29yZC13cmFwLlxuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG4gIHRleHQtYWxpZ246IGxlZnQ7IC8vIEZhbGxiYWNrIGZvciB3aGVyZSBgc3RhcnRgIGlzIG5vdCBzdXBwb3J0ZWRcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICBsaW5lLWJyZWFrOiBhdXRvO1xufVxuIiwiLnBvcG92ZXIge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgcG9wb3Zlci1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLXppbmRleDogI3skemluZGV4LXBvcG92ZXJ9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLW1heC13aWR0aDogI3skcG9wb3Zlci1tYXgtd2lkdGh9O1xuICBAaW5jbHVkZSByZnMoJHBvcG92ZXItZm9udC1zaXplLCAtLSN7JHByZWZpeH1wb3BvdmVyLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fXBvcG92ZXItYmc6ICN7JHBvcG92ZXItYmd9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci13aWR0aDogI3skcG9wb3Zlci1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci1jb2xvcjogI3skcG9wb3Zlci1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci1yYWRpdXM6ICN7JHBvcG92ZXItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fXBvcG92ZXItaW5uZXItYm9yZGVyLXJhZGl1czogI3skcG9wb3Zlci1pbm5lci1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3gtc2hhZG93OiAjeyRwb3BvdmVyLWJveC1zaGFkb3d9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWhlYWRlci1wYWRkaW5nLXg6ICN7JHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fXBvcG92ZXItaGVhZGVyLXBhZGRpbmcteTogI3skcG9wb3Zlci1oZWFkZXItcGFkZGluZy15fTtcbiAgQGluY2x1ZGUgcmZzKCRwb3BvdmVyLWhlYWRlci1mb250LXNpemUsIC0tI3skcHJlZml4fXBvcG92ZXItaGVhZGVyLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fXBvcG92ZXItaGVhZGVyLWNvbG9yOiAjeyRwb3BvdmVyLWhlYWRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fXBvcG92ZXItaGVhZGVyLWJnOiAjeyRwb3BvdmVyLWhlYWRlci1iZ307XG4gIC0tI3skcHJlZml4fXBvcG92ZXItYm9keS1wYWRkaW5nLXg6ICN7JHBvcG92ZXItYm9keS1wYWRkaW5nLXh9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWJvZHktcGFkZGluZy15OiAjeyRwb3BvdmVyLWJvZHktcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1ib2R5LWNvbG9yOiAjeyRwb3BvdmVyLWJvZHktY29sb3J9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LXdpZHRoOiAjeyRwb3BvdmVyLWFycm93LXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1oZWlnaHQ6ICN7JHBvcG92ZXItYXJyb3ctaGVpZ2h0fTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1ib3JkZXI6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci1jb2xvcik7XG4gIC8vIHNjc3MtZG9jcy1lbmQgcG9wb3Zlci1jc3MtdmFyc1xuXG4gIHotaW5kZXg6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLXppbmRleCk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXgtd2lkdGg6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLW1heC13aWR0aCk7XG4gIC8vIE91ciBwYXJlbnQgZWxlbWVudCBjYW4gYmUgYXJiaXRyYXJ5IHNpbmNlIHRvb2x0aXBzIGFyZSBieSBkZWZhdWx0IGluc2VydGVkIGFzIGEgc2libGluZyBvZiB0aGVpciB0YXJnZXQgZWxlbWVudC5cbiAgLy8gU28gcmVzZXQgb3VyIGZvbnQgYW5kIHRleHQgcHJvcGVydGllcyB0byBhdm9pZCBpbmhlcml0aW5nIHdlaXJkIHZhbHVlcy5cbiAgQGluY2x1ZGUgcmVzZXQtdGV4dCgpO1xuICBAaW5jbHVkZSBmb250LXNpemUodmFyKC0tI3skcHJlZml4fXBvcG92ZXItZm9udC1zaXplKSk7XG4gIC8vIEFsbG93IGJyZWFraW5nIHZlcnkgbG9uZyB3b3JkcyBzbyB0aGV5IGRvbid0IG92ZXJmbG93IHRoZSBwb3BvdmVyJ3MgYm91bmRzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYmcpO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9yZGVyLWNvbG9yKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItcmFkaXVzKSk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3codmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm94LXNoYWRvdykpO1xuXG4gIC5wb3BvdmVyLWFycm93IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctd2lkdGgpO1xuICAgIGhlaWdodDogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctaGVpZ2h0KTtcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIGJvcmRlci13aWR0aDogMDtcbiAgICB9XG4gIH1cbn1cblxuLmJzLXBvcG92ZXItdG9wIHtcbiAgPiAucG9wb3Zlci1hcnJvdyB7XG4gICAgYm90dG9tOiBjYWxjKC0xICogKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWhlaWdodCkpIC0gdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9yZGVyLXdpZHRoKSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYm9yZGVyLXdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1oZWlnaHQpIGNhbGModmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctd2lkdGgpICogLjUpIDA7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWJvcmRlcik7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYm90dG9tOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItd2lkdGgpO1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYmcpO1xuICAgIH1cbiAgfVxufVxuXG4vKiBydGw6YmVnaW46aWdub3JlICovXG4uYnMtcG9wb3Zlci1lbmQge1xuICA+IC5wb3BvdmVyLWFycm93IHtcbiAgICBsZWZ0OiBjYWxjKC0xICogKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWhlaWdodCkpIC0gdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9yZGVyLXdpZHRoKSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgd2lkdGg6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWhlaWdodCk7XG4gICAgaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy13aWR0aCk7XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYm9yZGVyLXdpZHRoOiBjYWxjKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LXdpZHRoKSAqIC41KSB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1oZWlnaHQpIGNhbGModmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctd2lkdGgpICogLjUpIDA7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWJvcmRlcik7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgbGVmdDogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9yZGVyLXdpZHRoKTtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYmcpO1xuICAgIH1cbiAgfVxufVxuXG4vKiBydGw6ZW5kOmlnbm9yZSAqL1xuXG4uYnMtcG9wb3Zlci1ib3R0b20ge1xuICA+IC5wb3BvdmVyLWFycm93IHtcbiAgICB0b3A6IGNhbGMoLTEgKiAodmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctaGVpZ2h0KSkgLSB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItd2lkdGgpKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICBib3JkZXItd2lkdGg6IDAgY2FsYyh2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy13aWR0aCkgKiAuNSkgdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctaGVpZ2h0KTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgdG9wOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctYm9yZGVyKTtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICB0b3A6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci13aWR0aCk7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1iZyk7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhpcyB3aWxsIHJlbW92ZSB0aGUgcG9wb3Zlci1oZWFkZXIncyBib3JkZXIganVzdCBiZWxvdyB0aGUgYXJyb3dcbiAgLnBvcG92ZXItaGVhZGVyOjpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogNTAlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy13aWR0aCk7XG4gICAgbWFyZ2luLWxlZnQ6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctd2lkdGgpKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJvcmRlci1ib3R0b206IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tI3skcHJlZml4fXBvcG92ZXItaGVhZGVyLWJnKTtcbiAgfVxufVxuXG4vKiBydGw6YmVnaW46aWdub3JlICovXG4uYnMtcG9wb3Zlci1zdGFydCB7XG4gID4gLnBvcG92ZXItYXJyb3cge1xuICAgIHJpZ2h0OiBjYWxjKC0xICogKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWhlaWdodCkpIC0gdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9yZGVyLXdpZHRoKSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgd2lkdGg6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWhlaWdodCk7XG4gICAgaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy13aWR0aCk7XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYm9yZGVyLXdpZHRoOiBjYWxjKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LXdpZHRoKSAqIC41KSAwIGNhbGModmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctd2lkdGgpICogLjUpIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWhlaWdodCk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWJvcmRlcik7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgcmlnaHQ6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci13aWR0aCk7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYmcpO1xuICAgIH1cbiAgfVxufVxuXG4vKiBydGw6ZW5kOmlnbm9yZSAqL1xuXG4uYnMtcG9wb3Zlci1hdXRvIHtcbiAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePVwidG9wXCJdIHtcbiAgICBAZXh0ZW5kIC5icy1wb3BvdmVyLXRvcDtcbiAgfVxuICAmW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49XCJyaWdodFwiXSB7XG4gICAgQGV4dGVuZCAuYnMtcG9wb3Zlci1lbmQ7XG4gIH1cbiAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePVwiYm90dG9tXCJdIHtcbiAgICBAZXh0ZW5kIC5icy1wb3BvdmVyLWJvdHRvbTtcbiAgfVxuICAmW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49XCJsZWZ0XCJdIHtcbiAgICBAZXh0ZW5kIC5icy1wb3BvdmVyLXN0YXJ0O1xuICB9XG59XG5cbi8vIE9mZnNldCB0aGUgcG9wb3ZlciB0byBhY2NvdW50IGZvciB0aGUgcG9wb3ZlciBhcnJvd1xuLnBvcG92ZXItaGVhZGVyIHtcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItaGVhZGVyLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fXBvcG92ZXItaGVhZGVyLXBhZGRpbmcteCk7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIFJlc2V0IHRoZSBkZWZhdWx0IGZyb20gUmVib290XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSh2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1oZWFkZXItZm9udC1zaXplKSk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1oZWFkZXItY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1oZWFkZXItYmcpO1xuICBib3JkZXItYm90dG9tOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWlubmVyLWJvcmRlci1yYWRpdXMpKTtcblxuICAmOmVtcHR5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5wb3BvdmVyLWJvZHkge1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib2R5LXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9keS1wYWRkaW5nLXgpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9keS1jb2xvcik7XG59XG4iLCIvLyBOb3RlcyBvbiB0aGUgY2xhc3Nlczpcbi8vXG4vLyAxLiAuY2Fyb3VzZWwucG9pbnRlci1ldmVudCBzaG91bGQgaWRlYWxseSBiZSBwYW4teSAodG8gYWxsb3cgZm9yIHVzZXJzIHRvIHNjcm9sbCB2ZXJ0aWNhbGx5KVxuLy8gICAgZXZlbiB3aGVuIHRoZWlyIHNjcm9sbCBhY3Rpb24gc3RhcnRlZCBvbiBhIGNhcm91c2VsLCBidXQgZm9yIGNvbXBhdGliaWxpdHkgKHdpdGggRmlyZWZveClcbi8vICAgIHdlJ3JlIHByZXZlbnRpbmcgYWxsIGFjdGlvbnMgaW5zdGVhZFxuLy8gMi4gVGhlIC5jYXJvdXNlbC1pdGVtLXN0YXJ0IGFuZCAuY2Fyb3VzZWwtaXRlbS1lbmQgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGVyZVxuLy8gICAgdGhlIGFjdGl2ZSBzbGlkZSBpcyBoZWFkaW5nLlxuLy8gMy4gLmFjdGl2ZS5jYXJvdXNlbC1pdGVtIGlzIHRoZSBjdXJyZW50IHNsaWRlLlxuLy8gNC4gLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXN0YXJ0IGFuZCAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tZW5kIGlzIHRoZSBjdXJyZW50XG4vLyAgICBzbGlkZSBpbiBpdHMgaW4tdHJhbnNpdGlvbiBzdGF0ZS4gT25seSBvbmUgb2YgdGhlc2Ugb2NjdXJzIGF0IGEgdGltZS5cbi8vIDUuIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1zdGFydCBhbmQgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLWVuZFxuLy8gICAgaXMgdGhlIHVwY29taW5nIHNsaWRlIGluIHRyYW5zaXRpb24uXG5cbi5jYXJvdXNlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNhcm91c2VsLnBvaW50ZXItZXZlbnQge1xuICB0b3VjaC1hY3Rpb246IHBhbi15O1xufVxuXG4uY2Fyb3VzZWwtaW5uZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xufVxuXG4uY2Fyb3VzZWwtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGNhcm91c2VsLXRyYW5zaXRpb24pO1xufVxuXG4uY2Fyb3VzZWwtaXRlbS5hY3RpdmUsXG4uY2Fyb3VzZWwtaXRlbS1uZXh0LFxuLmNhcm91c2VsLWl0ZW0tcHJldiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY2Fyb3VzZWwtaXRlbS1uZXh0Om5vdCguY2Fyb3VzZWwtaXRlbS1zdGFydCksXG4uYWN0aXZlLmNhcm91c2VsLWl0ZW0tZW5kIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xufVxuXG4uY2Fyb3VzZWwtaXRlbS1wcmV2Om5vdCguY2Fyb3VzZWwtaXRlbS1lbmQpLFxuLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXN0YXJ0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbn1cblxuXG4vL1xuLy8gQWx0ZXJuYXRlIHRyYW5zaXRpb25zXG4vL1xuXG4uY2Fyb3VzZWwtZmFkZSB7XG4gIC5jYXJvdXNlbC1pdGVtIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHk7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLmNhcm91c2VsLWl0ZW0uYWN0aXZlLFxuICAuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tc3RhcnQsXG4gIC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1lbmQge1xuICAgIHotaW5kZXg6IDE7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1zdGFydCxcbiAgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWVuZCB7XG4gICAgei1pbmRleDogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSAwcyAkY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbik7XG4gIH1cbn1cblxuXG4vL1xuLy8gTGVmdC9yaWdodCBjb250cm9scyBmb3IgbmF2XG4vL1xuXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LFxuLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHotaW5kZXg6IDE7XG4gIC8vIFVzZSBmbGV4IGZvciBhbGlnbm1lbnQgKDEtMylcbiAgZGlzcGxheTogZmxleDsgLy8gMS4gYWxsb3cgZmxleCBzdHlsZXNcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgLy8gMi4gdmVydGljYWxseSBjZW50ZXIgY29udGVudHNcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IC8vIDMuIGhvcml6b250YWxseSBjZW50ZXIgY29udGVudHNcbiAgd2lkdGg6ICRjYXJvdXNlbC1jb250cm9sLXdpZHRoO1xuICBwYWRkaW5nOiAwO1xuICBjb2xvcjogJGNhcm91c2VsLWNvbnRyb2wtY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiAwO1xuICBvcGFjaXR5OiAkY2Fyb3VzZWwtY29udHJvbC1vcGFjaXR5O1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRjYXJvdXNlbC1jb250cm9sLXRyYW5zaXRpb24pO1xuXG4gIC8vIEhvdmVyL2ZvY3VzIHN0YXRlXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkY2Fyb3VzZWwtY29udHJvbC1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgb3V0bGluZTogMDtcbiAgICBvcGFjaXR5OiAkY2Fyb3VzZWwtY29udHJvbC1ob3Zlci1vcGFjaXR5O1xuICB9XG59XG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2IHtcbiAgbGVmdDogMDtcbiAgYmFja2dyb3VuZC1pbWFnZTogaWYoJGVuYWJsZS1ncmFkaWVudHMsIGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgkYmxhY2ssIC4yNSksIHJnYmEoJGJsYWNrLCAuMDAxKSksIG51bGwpO1xufVxuLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBpZigkZW5hYmxlLWdyYWRpZW50cywgbGluZWFyLWdyYWRpZW50KDI3MGRlZywgcmdiYSgkYmxhY2ssIC4yNSksIHJnYmEoJGJsYWNrLCAuMDAxKSksIG51bGwpO1xufVxuXG4vLyBJY29ucyBmb3Igd2l0aGluXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24sXG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkY2Fyb3VzZWwtY29udHJvbC1pY29uLXdpZHRoO1xuICBoZWlnaHQ6ICRjYXJvdXNlbC1jb250cm9sLWljb24td2lkdGg7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG59XG5cbi8qIHJ0bDpvcHRpb25zOiB7XG4gIFwiYXV0b1JlbmFtZVwiOiB0cnVlLFxuICBcInN0cmluZ01hcFwiOlsge1xuICAgIFwibmFtZVwiICAgIDogXCJwcmV2LW5leHRcIixcbiAgICBcInNlYXJjaFwiICA6IFwicHJldlwiLFxuICAgIFwicmVwbGFjZVwiIDogXCJuZXh0XCJcbiAgfSBdXG59ICovXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbi1iZyk7XG59XG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbi1iZyk7XG59XG5cbi8vIE9wdGlvbmFsIGluZGljYXRvciBwaXBzL2NvbnRyb2xzXG4vL1xuLy8gQWRkIGEgY29udGFpbmVyIChzdWNoIGFzIGEgbGlzdCkgd2l0aCB0aGUgZm9sbG93aW5nIGNsYXNzIGFuZCBhZGQgYW4gaXRlbSAoaWRlYWxseSBhIGZvY3VzYWJsZSBjb250cm9sLFxuLy8gbGlrZSBhIGJ1dHRvbikgd2l0aCBkYXRhLWJzLXRhcmdldCBmb3IgZWFjaCBzbGlkZSB5b3VyIGNhcm91c2VsIGhvbGRzLlxuXG4uY2Fyb3VzZWwtaW5kaWNhdG9ycyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMjtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IDA7XG4gIC8vIFVzZSB0aGUgLmNhcm91c2VsLWNvbnRyb2wncyB3aWR0aCBhcyBtYXJnaW4gc28gd2UgZG9uJ3Qgb3ZlcmxheSB0aG9zZVxuICBtYXJnaW4tcmlnaHQ6ICRjYXJvdXNlbC1jb250cm9sLXdpZHRoO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBtYXJnaW4tbGVmdDogJGNhcm91c2VsLWNvbnRyb2wtd2lkdGg7XG5cbiAgW2RhdGEtYnMtdGFyZ2V0XSB7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6ICRjYXJvdXNlbC1pbmRpY2F0b3Itd2lkdGg7XG4gICAgaGVpZ2h0OiAkY2Fyb3VzZWwtaW5kaWNhdG9yLWhlaWdodDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbi1yaWdodDogJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI7XG4gICAgbWFyZ2luLWxlZnQ6ICRjYXJvdXNlbC1pbmRpY2F0b3Itc3BhY2VyO1xuICAgIHRleHQtaW5kZW50OiAtOTk5cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnO1xuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gICAgYm9yZGVyOiAwO1xuICAgIC8vIFVzZSB0cmFuc3BhcmVudCBib3JkZXJzIHRvIGluY3JlYXNlIHRoZSBoaXQgYXJlYSBieSAxMHB4IG9uIHRvcCBhbmQgYm90dG9tLlxuICAgIGJvcmRlci10b3A6ICRjYXJvdXNlbC1pbmRpY2F0b3ItaGl0LWFyZWEtaGVpZ2h0IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b206ICRjYXJvdXNlbC1pbmRpY2F0b3ItaGl0LWFyZWEtaGVpZ2h0IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIG9wYWNpdHk6ICRjYXJvdXNlbC1pbmRpY2F0b3Itb3BhY2l0eTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRjYXJvdXNlbC1pbmRpY2F0b3ItdHJhbnNpdGlvbik7XG4gIH1cblxuICAuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAkY2Fyb3VzZWwtaW5kaWNhdG9yLWFjdGl2ZS1vcGFjaXR5O1xuICB9XG59XG5cblxuLy8gT3B0aW9uYWwgY2FwdGlvbnNcbi8vXG4vL1xuXG4uY2Fyb3VzZWwtY2FwdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6ICgxMDAlIC0gJGNhcm91c2VsLWNhcHRpb24td2lkdGgpICogLjU7XG4gIGJvdHRvbTogJGNhcm91c2VsLWNhcHRpb24tc3BhY2VyO1xuICBsZWZ0OiAoMTAwJSAtICRjYXJvdXNlbC1jYXB0aW9uLXdpZHRoKSAqIC41O1xuICBwYWRkaW5nLXRvcDogJGNhcm91c2VsLWNhcHRpb24tcGFkZGluZy15O1xuICBwYWRkaW5nLWJvdHRvbTogJGNhcm91c2VsLWNhcHRpb24tcGFkZGluZy15O1xuICBjb2xvcjogJGNhcm91c2VsLWNhcHRpb24tY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLy8gRGFyayBtb2RlIGNhcm91c2VsXG5cbkBtaXhpbiBjYXJvdXNlbC1kYXJrKCkge1xuICAuY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24sXG4gIC5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7XG4gICAgZmlsdGVyOiAkY2Fyb3VzZWwtZGFyay1jb250cm9sLWljb24tZmlsdGVyO1xuICB9XG5cbiAgLmNhcm91c2VsLWluZGljYXRvcnMgW2RhdGEtYnMtdGFyZ2V0XSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNhcm91c2VsLWRhcmstaW5kaWNhdG9yLWFjdGl2ZS1iZztcbiAgfVxuXG4gIC5jYXJvdXNlbC1jYXB0aW9uIHtcbiAgICBjb2xvcjogJGNhcm91c2VsLWRhcmstY2FwdGlvbi1jb2xvcjtcbiAgfVxufVxuXG4uY2Fyb3VzZWwtZGFyayB7XG4gIEBpbmNsdWRlIGNhcm91c2VsLWRhcmsoKTtcbn1cblxuQGlmICRlbmFibGUtZGFyay1tb2RlIHtcbiAgQGluY2x1ZGUgY29sb3ItbW9kZShkYXJrKSB7XG4gICAgQGlmICRjb2xvci1tb2RlLXR5cGUgPT0gXCJtZWRpYS1xdWVyeVwiIHtcbiAgICAgIC5jYXJvdXNlbCB7XG4gICAgICAgIEBpbmNsdWRlIGNhcm91c2VsLWRhcmsoKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIC5jYXJvdXNlbCxcbiAgICAgICYuY2Fyb3VzZWwge1xuICAgICAgICBAaW5jbHVkZSBjYXJvdXNlbC1kYXJrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBzY3NzLWRvY3Mtc3RhcnQgY2xlYXJmaXhcbkBtaXhpbiBjbGVhcmZpeCgpIHtcbiAgJjo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgY2xlYXJmaXhcbiIsIi8vXG4vLyBSb3RhdGluZyBib3JkZXJcbi8vXG5cbi5zcGlubmVyLWdyb3csXG4uc3Bpbm5lci1ib3JkZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9c3Bpbm5lci13aWR0aCk7XG4gIGhlaWdodDogdmFyKC0tI3skcHJlZml4fXNwaW5uZXItaGVpZ2h0KTtcbiAgdmVydGljYWwtYWxpZ246IHZhcigtLSN7JHByZWZpeH1zcGlubmVyLXZlcnRpY2FsLWFsaWduKTtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWRpc2FsbG93ZWQtbGlzdFxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogdmFyKC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkKSBsaW5lYXIgaW5maW5pdGUgdmFyKC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLW5hbWUpO1xufVxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgc3Bpbm5lci1ib3JkZXIta2V5ZnJhbWVzXG5Aa2V5ZnJhbWVzIHNwaW5uZXItYm9yZGVyIHtcbiAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpICN7XCIvKiBydGw6aWdub3JlICovXCJ9OyB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIHNwaW5uZXItYm9yZGVyLWtleWZyYW1lc1xuXG4uc3Bpbm5lci1ib3JkZXIge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgc3Bpbm5lci1ib3JkZXItY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci13aWR0aDogI3skc3Bpbm5lci13aWR0aH07XG4gIC0tI3skcHJlZml4fXNwaW5uZXItaGVpZ2h0OiAjeyRzcGlubmVyLWhlaWdodH07XG4gIC0tI3skcHJlZml4fXNwaW5uZXItdmVydGljYWwtYWxpZ246ICN7JHNwaW5uZXItdmVydGljYWwtYWxpZ259O1xuICAtLSN7JHByZWZpeH1zcGlubmVyLWJvcmRlci13aWR0aDogI3skc3Bpbm5lci1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH1zcGlubmVyLWFuaW1hdGlvbi1zcGVlZDogI3skc3Bpbm5lci1hbmltYXRpb24tc3BlZWR9O1xuICAtLSN7JHByZWZpeH1zcGlubmVyLWFuaW1hdGlvbi1uYW1lOiBzcGlubmVyLWJvcmRlcjtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBzcGlubmVyLWJvcmRlci1jc3MtdmFyc1xuXG4gIGJvcmRlcjogdmFyKC0tI3skcHJlZml4fXNwaW5uZXItYm9yZGVyLXdpZHRoKSBzb2xpZCBjdXJyZW50Y29sb3I7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5zcGlubmVyLWJvcmRlci1zbSB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBzcGlubmVyLWJvcmRlci1zbS1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1zcGlubmVyLXdpZHRoOiAjeyRzcGlubmVyLXdpZHRoLXNtfTtcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1oZWlnaHQ6ICN7JHNwaW5uZXItaGVpZ2h0LXNtfTtcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1ib3JkZXItd2lkdGg6ICN7JHNwaW5uZXItYm9yZGVyLXdpZHRoLXNtfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBzcGlubmVyLWJvcmRlci1zbS1jc3MtdmFyc1xufVxuXG4vL1xuLy8gR3Jvd2luZyBjaXJjbGVcbi8vXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBzcGlubmVyLWdyb3cta2V5ZnJhbWVzXG5Aa2V5ZnJhbWVzIHNwaW5uZXItZ3JvdyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgc3Bpbm5lci1ncm93LWtleWZyYW1lc1xuXG4uc3Bpbm5lci1ncm93IHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IHNwaW5uZXItZ3Jvdy1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1zcGlubmVyLXdpZHRoOiAjeyRzcGlubmVyLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1oZWlnaHQ6ICN7JHNwaW5uZXItaGVpZ2h0fTtcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci12ZXJ0aWNhbC1hbGlnbjogI3skc3Bpbm5lci12ZXJ0aWNhbC1hbGlnbn07XG4gIC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkOiAjeyRzcGlubmVyLWFuaW1hdGlvbi1zcGVlZH07XG4gIC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLW5hbWU6IHNwaW5uZXItZ3JvdztcbiAgLy8gc2Nzcy1kb2NzLWVuZCBzcGlubmVyLWdyb3ctY3NzLXZhcnNcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Y29sb3I7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5zcGlubmVyLWdyb3ctc20ge1xuICAtLSN7JHByZWZpeH1zcGlubmVyLXdpZHRoOiAjeyRzcGlubmVyLXdpZHRoLXNtfTtcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1oZWlnaHQ6ICN7JHNwaW5uZXItaGVpZ2h0LXNtfTtcbn1cblxuQGlmICRlbmFibGUtcmVkdWNlZC1tb3Rpb24ge1xuICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIC5zcGlubmVyLWJvcmRlcixcbiAgICAuc3Bpbm5lci1ncm93IHtcbiAgICAgIC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkOiAjeyRzcGlubmVyLWFuaW1hdGlvbi1zcGVlZCAqIDJ9O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG5cbiVvZmZjYW52YXMtY3NzLXZhcnMge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgb2ZmY2FudmFzLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fW9mZmNhbnZhcy16aW5kZXg6ICN7JHppbmRleC1vZmZjYW52YXN9O1xuICAtLSN7JHByZWZpeH1vZmZjYW52YXMtd2lkdGg6ICN7JG9mZmNhbnZhcy1ob3Jpem9udGFsLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWhlaWdodDogI3skb2ZmY2FudmFzLXZlcnRpY2FsLWhlaWdodH07XG4gIC0tI3skcHJlZml4fW9mZmNhbnZhcy1wYWRkaW5nLXg6ICN7JG9mZmNhbnZhcy1wYWRkaW5nLXh9O1xuICAtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy15OiAjeyRvZmZjYW52YXMtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWNvbG9yOiAjeyRvZmZjYW52YXMtY29sb3J9O1xuICAtLSN7JHByZWZpeH1vZmZjYW52YXMtYmc6ICN7JG9mZmNhbnZhcy1iZy1jb2xvcn07XG4gIC0tI3skcHJlZml4fW9mZmNhbnZhcy1ib3JkZXItd2lkdGg6ICN7JG9mZmNhbnZhcy1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH1vZmZjYW52YXMtYm9yZGVyLWNvbG9yOiAjeyRvZmZjYW52YXMtYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWJveC1zaGFkb3c6ICN7JG9mZmNhbnZhcy1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLXRyYW5zaXRpb246ICN7dHJhbnNmb3JtICRvZmZjYW52YXMtdHJhbnNpdGlvbi1kdXJhdGlvbiBlYXNlLWluLW91dH07XG4gIC0tI3skcHJlZml4fW9mZmNhbnZhcy10aXRsZS1saW5lLWhlaWdodDogI3skb2ZmY2FudmFzLXRpdGxlLWxpbmUtaGVpZ2h0fTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBvZmZjYW52YXMtY3NzLXZhcnNcbn1cblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJG5leHQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAub2ZmY2FudmFzI3skaW5maXh9IHtcbiAgICBAZXh0ZW5kICVvZmZjYW52YXMtY3NzLXZhcnM7XG4gIH1cbn1cblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJG5leHQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAub2ZmY2FudmFzI3skaW5maXh9IHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQpIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIHotaW5kZXg6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtemluZGV4KTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtY29sb3IpO1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy1iZyk7XG4gICAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgICAgb3V0bGluZTogMDtcbiAgICAgIEBpbmNsdWRlIGJveC1zaGFkb3codmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy1ib3gtc2hhZG93KSk7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtdHJhbnNpdGlvbikpO1xuXG4gICAgICAmLm9mZmNhbnZhcy1zdGFydCB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtd2lkdGgpO1xuICAgICAgICBib3JkZXItcmlnaHQ6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWJvcmRlci1jb2xvcik7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgICB9XG5cbiAgICAgICYub2ZmY2FudmFzLWVuZCB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLXdpZHRoKTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWJvcmRlci1jb2xvcik7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAgIH1cblxuICAgICAgJi5vZmZjYW52YXMtdG9wIHtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWhlaWdodCk7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWJvcmRlci1jb2xvcik7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XG4gICAgICB9XG5cbiAgICAgICYub2ZmY2FudmFzLWJvdHRvbSB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtaGVpZ2h0KTtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXRvcDogdmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgfVxuXG4gICAgICAmLnNob3dpbmcsXG4gICAgICAmLnNob3c6bm90KC5oaWRpbmcpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgfVxuXG4gICAgICAmLnNob3dpbmcsXG4gICAgICAmLmhpZGluZyxcbiAgICAgICYuc2hvdyB7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmIG5vdCAoJGluZml4ID09IFwiXCIpIHtcbiAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5leHQpIHtcbiAgICAgICAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWhlaWdodDogYXV0bztcbiAgICAgICAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWJvcmRlci13aWR0aDogMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuICAgICAgICAub2ZmY2FudmFzLWhlYWRlciB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5vZmZjYW52YXMtYm9keSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWdyb3c6IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBvdmVyZmxvdy15OiB2aXNpYmxlO1xuICAgICAgICAgIC8vIFJlc2V0IGBiYWNrZ3JvdW5kLWNvbG9yYCBpbiBjYXNlIGAuYmctKmAgY2xhc3NlcyBhcmUgdXNlZCBpbiBvZmZjYW52YXNcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5vZmZjYW52YXMtYmFja2Ryb3Age1xuICBAaW5jbHVkZSBvdmVybGF5LWJhY2tkcm9wKCR6aW5kZXgtb2ZmY2FudmFzLWJhY2tkcm9wLCAkb2ZmY2FudmFzLWJhY2tkcm9wLWJnLCAkb2ZmY2FudmFzLWJhY2tkcm9wLW9wYWNpdHkpO1xufVxuXG4ub2ZmY2FudmFzLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy14KTtcblxuICAuYnRuLWNsb3NlIHtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy15KSAqIC41KSBjYWxjKHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy14KSAqIC41KTtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy15KSk7XG4gICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy14KSk7XG4gICAgbWFyZ2luLWJvdHRvbTogY2FsYygtLjUgKiB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLXBhZGRpbmcteSkpO1xuICB9XG59XG5cbi5vZmZjYW52YXMtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBsaW5lLWhlaWdodDogdmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy10aXRsZS1saW5lLWhlaWdodCk7XG59XG5cbi5vZmZjYW52YXMtYm9keSB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy14KTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cbiIsIi5wbGFjZWhvbGRlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWluLWhlaWdodDogMWVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBjdXJzb3I6IHdhaXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRjb2xvcjtcbiAgb3BhY2l0eTogJHBsYWNlaG9sZGVyLW9wYWNpdHktbWF4O1xuXG4gICYuYnRuOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb250ZW50OiBcIlwiO1xuICB9XG59XG5cbi8vIFNpemluZ1xuLnBsYWNlaG9sZGVyLXhzIHtcbiAgbWluLWhlaWdodDogLjZlbTtcbn1cblxuLnBsYWNlaG9sZGVyLXNtIHtcbiAgbWluLWhlaWdodDogLjhlbTtcbn1cblxuLnBsYWNlaG9sZGVyLWxnIHtcbiAgbWluLWhlaWdodDogMS4yZW07XG59XG5cbi8vIEFuaW1hdGlvblxuLnBsYWNlaG9sZGVyLWdsb3cge1xuICAucGxhY2Vob2xkZXIge1xuICAgIGFuaW1hdGlvbjogcGxhY2Vob2xkZXItZ2xvdyAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyLWdsb3cge1xuICA1MCUge1xuICAgIG9wYWNpdHk6ICRwbGFjZWhvbGRlci1vcGFjaXR5LW1pbjtcbiAgfVxufVxuXG4ucGxhY2Vob2xkZXItd2F2ZSB7XG4gIG1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudCgxMzBkZWcsICRibGFjayA1NSUsIHJnYmEoMCwgMCwgMCwgKDEgLSAkcGxhY2Vob2xkZXItb3BhY2l0eS1taW4pKSA3NSUsICRibGFjayA5NSUpO1xuICBtYXNrLXNpemU6IDIwMCUgMTAwJTtcbiAgYW5pbWF0aW9uOiBwbGFjZWhvbGRlci13YXZlIDJzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwbGFjZWhvbGRlci13YXZlIHtcbiAgMTAwJSB7XG4gICAgbWFzay1wb3NpdGlvbjogLTIwMCUgMCU7XG4gIH1cbn1cbiIsIi8vIEFsbC1jYXBzIGBSR0JBKClgIGZ1bmN0aW9uIHVzZWQgYmVjYXVzZSBvZiB0aGlzIFNhc3MgYnVnOiBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy9ub2RlLXNhc3MvaXNzdWVzLzIyNTFcbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAudGV4dC1iZy0jeyRjb2xvcn0ge1xuICAgIGNvbG9yOiBjb2xvci1jb250cmFzdCgkdmFsdWUpIGlmKCRlbmFibGUtaW1wb3J0YW50LXV0aWxpdGllcywgIWltcG9ydGFudCwgbnVsbCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogUkdCQSh2YXIoLS0jeyRwcmVmaXh9I3skY29sb3J9LXJnYiksIHZhcigtLSN7JHByZWZpeH1iZy1vcGFjaXR5LCAxKSkgaWYoJGVuYWJsZS1pbXBvcnRhbnQtdXRpbGl0aWVzLCAhaW1wb3J0YW50LCBudWxsKTtcbiAgfVxufVxuIiwiLy8gQWxsLWNhcHMgYFJHQkEoKWAgZnVuY3Rpb24gdXNlZCBiZWNhdXNlIG9mIHRoaXMgU2FzcyBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL25vZGUtc2Fzcy9pc3N1ZXMvMjI1MVxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5saW5rLSN7JGNvbG9yfSB7XG4gICAgY29sb3I6IFJHQkEodmFyKC0tI3skcHJlZml4fSN7JGNvbG9yfS1yZ2IpLCB2YXIoLS0jeyRwcmVmaXh9bGluay1vcGFjaXR5LCAxKSkgaWYoJGVuYWJsZS1pbXBvcnRhbnQtdXRpbGl0aWVzLCAhaW1wb3J0YW50LCBudWxsKTtcbiAgICB0ZXh0LWRlY29yYXRpb24tY29sb3I6IFJHQkEodmFyKC0tI3skcHJlZml4fSN7JGNvbG9yfS1yZ2IpLCB2YXIoLS0jeyRwcmVmaXh9bGluay11bmRlcmxpbmUtb3BhY2l0eSwgMSkpIGlmKCRlbmFibGUtaW1wb3J0YW50LXV0aWxpdGllcywgIWltcG9ydGFudCwgbnVsbCk7XG5cbiAgICBAaWYgJGxpbmstc2hhZGUtcGVyY2VudGFnZSAhPSAwIHtcbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgJGhvdmVyLWNvbG9yOiBpZihjb2xvci1jb250cmFzdCgkdmFsdWUpID09ICRjb2xvci1jb250cmFzdC1saWdodCwgc2hhZGUtY29sb3IoJHZhbHVlLCAkbGluay1zaGFkZS1wZXJjZW50YWdlKSwgdGludC1jb2xvcigkdmFsdWUsICRsaW5rLXNoYWRlLXBlcmNlbnRhZ2UpKTtcbiAgICAgICAgY29sb3I6IFJHQkEoI3t0by1yZ2IoJGhvdmVyLWNvbG9yKX0sIHZhcigtLSN7JHByZWZpeH1saW5rLW9wYWNpdHksIDEpKSBpZigkZW5hYmxlLWltcG9ydGFudC11dGlsaXRpZXMsICFpbXBvcnRhbnQsIG51bGwpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb24tY29sb3I6IFJHQkEodG8tcmdiKCRob3Zlci1jb2xvciksIHZhcigtLSN7JHByZWZpeH1saW5rLXVuZGVybGluZS1vcGFjaXR5LCAxKSkgaWYoJGVuYWJsZS1pbXBvcnRhbnQtdXRpbGl0aWVzLCAhaW1wb3J0YW50LCBudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gT25lLW9mZiBzcGVjaWFsIGxpbmsgaGVscGVyIGFzIGEgYnJpZGdlIHVudGlsIHY2XG4ubGluay1ib2R5LWVtcGhhc2lzIHtcbiAgY29sb3I6IFJHQkEodmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yLXJnYiksIHZhcigtLSN7JHByZWZpeH1saW5rLW9wYWNpdHksIDEpKSBpZigkZW5hYmxlLWltcG9ydGFudC11dGlsaXRpZXMsICFpbXBvcnRhbnQsIG51bGwpO1xuICB0ZXh0LWRlY29yYXRpb24tY29sb3I6IFJHQkEodmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yLXJnYiksIHZhcigtLSN7JHByZWZpeH1saW5rLXVuZGVybGluZS1vcGFjaXR5LCAxKSkgaWYoJGVuYWJsZS1pbXBvcnRhbnQtdXRpbGl0aWVzLCAhaW1wb3J0YW50LCBudWxsKTtcblxuICBAaWYgJGxpbmstc2hhZGUtcGVyY2VudGFnZSAhPSAwIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6IFJHQkEodmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yLXJnYiksIHZhcigtLSN7JHByZWZpeH1saW5rLW9wYWNpdHksIC43NSkpIGlmKCRlbmFibGUtaW1wb3J0YW50LXV0aWxpdGllcywgIWltcG9ydGFudCwgbnVsbCk7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tY29sb3I6IFJHQkEodmFyKC0tI3skcHJlZml4fWVtcGhhc2lzLWNvbG9yLXJnYiksIHZhcigtLSN7JHByZWZpeH1saW5rLXVuZGVybGluZS1vcGFjaXR5LCAuNzUpKSBpZigkZW5hYmxlLWltcG9ydGFudC11dGlsaXRpZXMsICFpbXBvcnRhbnQsIG51bGwpO1xuICAgIH1cbiAgfVxufVxuIiwiLmZvY3VzLXJpbmc6Zm9jdXMge1xuICBvdXRsaW5lOiAwO1xuICAvLyBCeSBkZWZhdWx0LCB0aGVyZSBpcyBubyBgLS1icy1mb2N1cy1yaW5nLXhgLCBgLS1icy1mb2N1cy1yaW5nLXlgLCBvciBgLS1icy1mb2N1cy1yaW5nLWJsdXJgLCBidXQgd2UgcHJvdmlkZSBDU1MgdmFyaWFibGVzIHdpdGggZmFsbGJhY2tzIHRvIGluaXRpYWwgYDBgIHZhbHVlc1xuICBib3gtc2hhZG93OiB2YXIoLS0jeyRwcmVmaXh9Zm9jdXMtcmluZy14LCAwKSB2YXIoLS0jeyRwcmVmaXh9Zm9jdXMtcmluZy15LCAwKSB2YXIoLS0jeyRwcmVmaXh9Zm9jdXMtcmluZy1ibHVyLCAwKSB2YXIoLS0jeyRwcmVmaXh9Zm9jdXMtcmluZy13aWR0aCkgdmFyKC0tI3skcHJlZml4fWZvY3VzLXJpbmctY29sb3IpO1xufVxuIiwiLmljb24tbGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBnYXA6ICRpY29uLWxpbmstZ2FwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb24tY29sb3I6IHJnYmEodmFyKC0tI3skcHJlZml4fWxpbmstY29sb3ItcmdiKSwgdmFyKC0tI3skcHJlZml4fWxpbmstb3BhY2l0eSwgLjUpKTtcbiAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAkaWNvbi1saW5rLXVuZGVybGluZS1vZmZzZXQ7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblxuICA+IC5iaSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgd2lkdGg6ICRpY29uLWxpbmstaWNvbi1zaXplO1xuICAgIGhlaWdodDogJGljb24tbGluay1pY29uLXNpemU7XG4gICAgZmlsbDogY3VycmVudGNvbG9yO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJGljb24tbGluay1pY29uLXRyYW5zaXRpb24pO1xuICB9XG59XG5cbi5pY29uLWxpbmstaG92ZXIge1xuICAmOmhvdmVyLFxuICAmOmZvY3VzLXZpc2libGUge1xuICAgID4gLmJpIHtcbiAgICAgIHRyYW5zZm9ybTogdmFyKC0tI3skcHJlZml4fWljb24tbGluay10cmFuc2Zvcm0sICRpY29uLWxpbmstaWNvbi10cmFuc2Zvcm0pO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQ3JlZGl0OiBOaWNvbGFzIEdhbGxhZ2hlciBhbmQgU1VJVCBDU1MuXG5cbi5yYXRpbyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tI3skcHJlZml4fWFzcGVjdC1yYXRpbyk7XG4gICAgY29udGVudDogXCJcIjtcbiAgfVxuXG4gID4gKiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxufVxuXG5AZWFjaCAka2V5LCAkcmF0aW8gaW4gJGFzcGVjdC1yYXRpb3Mge1xuICAucmF0aW8tI3ska2V5fSB7XG4gICAgLS0jeyRwcmVmaXh9YXNwZWN0LXJhdGlvOiAjeyRyYXRpb307XG4gIH1cbn1cbiIsIi8vIFNob3J0aGFuZFxuXG4uZml4ZWQtdG9wIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAkemluZGV4LWZpeGVkO1xufVxuXG4uZml4ZWQtYm90dG9tIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAkemluZGV4LWZpeGVkO1xufVxuXG4vLyBSZXNwb25zaXZlIHN0aWNreSB0b3AgYW5kIGJvdHRvbVxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgLnN0aWNreSN7JGluZml4fS10b3Age1xuICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHotaW5kZXg6ICR6aW5kZXgtc3RpY2t5O1xuICAgIH1cblxuICAgIC5zdGlja3kjeyRpbmZpeH0tYm90dG9tIHtcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBib3R0b206IDA7XG4gICAgICB6LWluZGV4OiAkemluZGV4LXN0aWNreTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHNjc3MtZG9jcy1zdGFydCBzdGFja3Ncbi5oc3RhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xufVxuXG4udnN0YWNrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMSAxIGF1dG87XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG59XG4vLyBzY3NzLWRvY3MtZW5kIHN0YWNrc1xuIiwiLy9cbi8vIFZpc3VhbGx5IGhpZGRlblxuLy9cblxuLnZpc3VhbGx5LWhpZGRlbixcbi52aXN1YWxseS1oaWRkZW4tZm9jdXNhYmxlOm5vdCg6Zm9jdXMpOm5vdCg6Zm9jdXMtd2l0aGluKSB7XG4gIEBpbmNsdWRlIHZpc3VhbGx5LWhpZGRlbigpO1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbi8vIEhpZGUgY29udGVudCB2aXN1YWxseSB3aGlsZSBrZWVwaW5nIGl0IGFjY2Vzc2libGUgdG8gYXNzaXN0aXZlIHRlY2hub2xvZ2llc1xuLy9cbi8vIFNlZTogaHR0cHM6Ly93d3cuYTExeXByb2plY3QuY29tL3Bvc3RzLzIwMTMtMDEtMTEtaG93LXRvLWhpZGUtY29udGVudC9cbi8vIFNlZTogaHR0cHM6Ly9raXR0eWdpcmF1ZGVsLmNvbS8yMDE2LzEwLzEzL2Nzcy1oaWRlLWFuZC1zZWVrL1xuXG5AbWl4aW4gdmlzdWFsbHktaGlkZGVuKCkge1xuICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7IC8vIEZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNTY4NlxuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCkgIWltcG9ydGFudDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcblxuICAvLyBGaXggZm9yIHBvc2l0aW9uZWQgdGFibGUgY2FwdGlvbiB0aGF0IGNvdWxkIGJlY29tZSBhbm9ueW1vdXMgY2VsbHNcbiAgJjpub3QoY2FwdGlvbikge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vIFVzZSB0byBvbmx5IGRpc3BsYXkgY29udGVudCB3aGVuIGl0J3MgZm9jdXNlZCwgb3Igb25lIG9mIGl0cyBjaGlsZCBlbGVtZW50cyBpcyBmb2N1c2VkXG4vLyAoaS5lLiB3aGVuIGZvY3VzIGlzIHdpdGhpbiB0aGUgZWxlbWVudC9jb250YWluZXIgdGhhdCB0aGUgY2xhc3Mgd2FzIGFwcGxpZWQgdG8pXG4vL1xuLy8gVXNlZnVsIGZvciBcIlNraXAgdG8gbWFpbiBjb250ZW50XCIgbGlua3M7IHNlZSBodHRwczovL3d3dy53My5vcmcvVFIvMjAxMy9OT1RFLVdDQUcyMC1URUNIUy0yMDEzMDkwNS9HMVxuXG5AbWl4aW4gdmlzdWFsbHktaGlkZGVuLWZvY3VzYWJsZSgpIHtcbiAgJjpub3QoOmZvY3VzKTpub3QoOmZvY3VzLXdpdGhpbikge1xuICAgIEBpbmNsdWRlIHZpc3VhbGx5LWhpZGRlbigpO1xuICB9XG59XG4iLCIvL1xuLy8gU3RyZXRjaGVkIGxpbmtcbi8vXG5cbi5zdHJldGNoZWQtbGluayB7XG4gICY6OiN7JHN0cmV0Y2hlZC1saW5rLXBzZXVkby1lbGVtZW50fSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAkc3RyZXRjaGVkLWxpbmstei1pbmRleDtcbiAgICBjb250ZW50OiBcIlwiO1xuICB9XG59XG4iLCIvL1xuLy8gVGV4dCB0cnVuY2F0aW9uXG4vL1xuXG4udGV4dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGUoKTtcbn1cbiIsIi8vIFRleHQgdHJ1bmNhdGVcbi8vIFJlcXVpcmVzIGlubGluZS1ibG9jayBvciBibG9jayBmb3IgcHJvcGVyIHN0eWxpbmdcblxuQG1peGluIHRleHQtdHJ1bmNhdGUoKSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuIiwiLnZyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICB3aWR0aDogJHZyLWJvcmRlci13aWR0aDtcbiAgbWluLWhlaWdodDogMWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Y29sb3I7XG4gIG9wYWNpdHk6ICRoci1vcGFjaXR5O1xufVxuIiwiLy8gVXRpbGl0eSBnZW5lcmF0b3Jcbi8vIFVzZWQgdG8gZ2VuZXJhdGUgdXRpbGl0aWVzICYgcHJpbnQgdXRpbGl0aWVzXG5AbWl4aW4gZ2VuZXJhdGUtdXRpbGl0eSgkdXRpbGl0eSwgJGluZml4OiBcIlwiLCAkaXMtcmZzLW1lZGlhLXF1ZXJ5OiBmYWxzZSkge1xuICAkdmFsdWVzOiBtYXAtZ2V0KCR1dGlsaXR5LCB2YWx1ZXMpO1xuXG4gIC8vIElmIHRoZSB2YWx1ZXMgYXJlIGEgbGlzdCBvciBzdHJpbmcsIGNvbnZlcnQgaXQgaW50byBhIG1hcFxuICBAaWYgdHlwZS1vZigkdmFsdWVzKSA9PSBcInN0cmluZ1wiIG9yIHR5cGUtb2YobnRoKCR2YWx1ZXMsIDEpKSAhPSBcImxpc3RcIiB7XG4gICAgJHZhbHVlczogemlwKCR2YWx1ZXMsICR2YWx1ZXMpO1xuICB9XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICR2YWx1ZXMge1xuICAgICRwcm9wZXJ0aWVzOiBtYXAtZ2V0KCR1dGlsaXR5LCBwcm9wZXJ0eSk7XG5cbiAgICAvLyBNdWx0aXBsZSBwcm9wZXJ0aWVzIGFyZSBwb3NzaWJsZSwgZm9yIGV4YW1wbGUgd2l0aCB2ZXJ0aWNhbCBvciBob3Jpem9udGFsIG1hcmdpbnMgb3IgcGFkZGluZ3NcbiAgICBAaWYgdHlwZS1vZigkcHJvcGVydGllcykgPT0gXCJzdHJpbmdcIiB7XG4gICAgICAkcHJvcGVydGllczogYXBwZW5kKCgpLCAkcHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgLy8gVXNlIGN1c3RvbSBjbGFzcyBpZiBwcmVzZW50XG4gICAgJHByb3BlcnR5LWNsYXNzOiBpZihtYXAtaGFzLWtleSgkdXRpbGl0eSwgY2xhc3MpLCBtYXAtZ2V0KCR1dGlsaXR5LCBjbGFzcyksIG50aCgkcHJvcGVydGllcywgMSkpO1xuICAgICRwcm9wZXJ0eS1jbGFzczogaWYoJHByb3BlcnR5LWNsYXNzID09IG51bGwsIFwiXCIsICRwcm9wZXJ0eS1jbGFzcyk7XG5cbiAgICAvLyBVc2UgY3VzdG9tIENTUyB2YXJpYWJsZSBuYW1lIGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0IHRvIGBjbGFzc2BcbiAgICAkY3NzLXZhcmlhYmxlLW5hbWU6IGlmKG1hcC1oYXMta2V5KCR1dGlsaXR5LCBjc3MtdmFyaWFibGUtbmFtZSksIG1hcC1nZXQoJHV0aWxpdHksIGNzcy12YXJpYWJsZS1uYW1lKSwgbWFwLWdldCgkdXRpbGl0eSwgY2xhc3MpKTtcblxuICAgIC8vIFN0YXRlIHBhcmFtcyB0byBnZW5lcmF0ZSBwc2V1ZG8tY2xhc3Nlc1xuICAgICRzdGF0ZTogaWYobWFwLWhhcy1rZXkoJHV0aWxpdHksIHN0YXRlKSwgbWFwLWdldCgkdXRpbGl0eSwgc3RhdGUpLCAoKSk7XG5cbiAgICAkaW5maXg6IGlmKCRwcm9wZXJ0eS1jbGFzcyA9PSBcIlwiIGFuZCBzdHItc2xpY2UoJGluZml4LCAxLCAxKSA9PSBcIi1cIiwgc3RyLXNsaWNlKCRpbmZpeCwgMiksICRpbmZpeCk7XG5cbiAgICAvLyBEb24ndCBwcmVmaXggaWYgdmFsdWUga2V5IGlzIG51bGwgKGUuZy4gd2l0aCBzaGFkb3cgY2xhc3MpXG4gICAgJHByb3BlcnR5LWNsYXNzLW1vZGlmaWVyOiBpZigka2V5LCBpZigkcHJvcGVydHktY2xhc3MgPT0gXCJcIiBhbmQgJGluZml4ID09IFwiXCIsIFwiXCIsIFwiLVwiKSArICRrZXksIFwiXCIpO1xuXG4gICAgQGlmIG1hcC1nZXQoJHV0aWxpdHksIHJmcykge1xuICAgICAgLy8gSW5zaWRlIHRoZSBtZWRpYSBxdWVyeVxuICAgICAgQGlmICRpcy1yZnMtbWVkaWEtcXVlcnkge1xuICAgICAgICAkdmFsOiByZnMtdmFsdWUoJHZhbHVlKTtcblxuICAgICAgICAvLyBEbyBub3QgcmVuZGVyIGFueXRoaW5nIGlmIGZsdWlkIGFuZCBub24gZmx1aWQgdmFsdWVzIGFyZSB0aGUgc2FtZVxuICAgICAgICAkdmFsdWU6IGlmKCR2YWwgPT0gcmZzLWZsdWlkLXZhbHVlKCR2YWx1ZSksIG51bGwsICR2YWwpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdmFsdWU6IHJmcy1mbHVpZC12YWx1ZSgkdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgICRpcy1jc3MtdmFyOiBtYXAtZ2V0KCR1dGlsaXR5LCBjc3MtdmFyKTtcbiAgICAkaXMtbG9jYWwtdmFyczogbWFwLWdldCgkdXRpbGl0eSwgbG9jYWwtdmFycyk7XG4gICAgJGlzLXJ0bDogbWFwLWdldCgkdXRpbGl0eSwgcnRsKTtcblxuICAgIEBpZiAkdmFsdWUgIT0gbnVsbCB7XG4gICAgICBAaWYgJGlzLXJ0bCA9PSBmYWxzZSB7XG4gICAgICAgIC8qIHJ0bDpiZWdpbjpyZW1vdmUgKi9cbiAgICAgIH1cblxuICAgICAgQGlmICRpcy1jc3MtdmFyIHtcbiAgICAgICAgLiN7JHByb3BlcnR5LWNsYXNzICsgJGluZml4ICsgJHByb3BlcnR5LWNsYXNzLW1vZGlmaWVyfSB7XG4gICAgICAgICAgLS0jeyRwcmVmaXh9I3skY3NzLXZhcmlhYmxlLW5hbWV9OiAjeyR2YWx1ZX07XG4gICAgICAgIH1cblxuICAgICAgICBAZWFjaCAkcHNldWRvIGluICRzdGF0ZSB7XG4gICAgICAgICAgLiN7JHByb3BlcnR5LWNsYXNzICsgJGluZml4ICsgJHByb3BlcnR5LWNsYXNzLW1vZGlmaWVyfS0jeyRwc2V1ZG99OiN7JHBzZXVkb30ge1xuICAgICAgICAgICAgLS0jeyRwcmVmaXh9I3skY3NzLXZhcmlhYmxlLW5hbWV9OiAjeyR2YWx1ZX07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLiN7JHByb3BlcnR5LWNsYXNzICsgJGluZml4ICsgJHByb3BlcnR5LWNsYXNzLW1vZGlmaWVyfSB7XG4gICAgICAgICAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAgICAgICAgIEBpZiAkaXMtbG9jYWwtdmFycyB7XG4gICAgICAgICAgICAgIEBlYWNoICRsb2NhbC12YXIsICR2YXJpYWJsZSBpbiAkaXMtbG9jYWwtdmFycyB7XG4gICAgICAgICAgICAgICAgLS0jeyRwcmVmaXh9I3skbG9jYWwtdmFyfTogI3skdmFyaWFibGV9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZSBpZigkZW5hYmxlLWltcG9ydGFudC11dGlsaXRpZXMsICFpbXBvcnRhbnQsIG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlYWNoICRwc2V1ZG8gaW4gJHN0YXRlIHtcbiAgICAgICAgICAuI3skcHJvcGVydHktY2xhc3MgKyAkaW5maXggKyAkcHJvcGVydHktY2xhc3MtbW9kaWZpZXJ9LSN7JHBzZXVkb306I3skcHNldWRvfSB7XG4gICAgICAgICAgICBAZWFjaCAkcHJvcGVydHkgaW4gJHByb3BlcnRpZXMge1xuICAgICAgICAgICAgICBAaWYgJGlzLWxvY2FsLXZhcnMge1xuICAgICAgICAgICAgICAgIEBlYWNoICRsb2NhbC12YXIsICR2YXJpYWJsZSBpbiAkaXMtbG9jYWwtdmFycyB7XG4gICAgICAgICAgICAgICAgICAtLSN7JHByZWZpeH0jeyRsb2NhbC12YXJ9OiAjeyR2YXJpYWJsZX07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlIGlmKCRlbmFibGUtaW1wb3J0YW50LXV0aWxpdGllcywgIWltcG9ydGFudCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAkaXMtcnRsID09IGZhbHNlIHtcbiAgICAgICAgLyogcnRsOmVuZDpyZW1vdmUgKi9cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIExvb3Agb3ZlciBlYWNoIGJyZWFrcG9pbnRcbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG5cbiAgLy8gR2VuZXJhdGUgbWVkaWEgcXVlcnkgaWYgbmVlZGVkXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC8vIExvb3Agb3ZlciBlYWNoIHV0aWxpdHkgcHJvcGVydHlcbiAgICBAZWFjaCAka2V5LCAkdXRpbGl0eSBpbiAkdXRpbGl0aWVzIHtcbiAgICAgIC8vIFRoZSB1dGlsaXR5IGNhbiBiZSBkaXNhYmxlZCB3aXRoIGBmYWxzZWAsIHRodXMgY2hlY2sgaWYgdGhlIHV0aWxpdHkgaXMgYSBtYXAgZmlyc3RcbiAgICAgIC8vIE9ubHkgcHJvY2VlZCBpZiByZXNwb25zaXZlIG1lZGlhIHF1ZXJpZXMgYXJlIGVuYWJsZWQgb3IgaWYgaXQncyB0aGUgYmFzZSBtZWRpYSBxdWVyeVxuICAgICAgQGlmIHR5cGUtb2YoJHV0aWxpdHkpID09IFwibWFwXCIgYW5kIChtYXAtZ2V0KCR1dGlsaXR5LCByZXNwb25zaXZlKSBvciAkaW5maXggPT0gXCJcIikge1xuICAgICAgICBAaW5jbHVkZSBnZW5lcmF0ZS11dGlsaXR5KCR1dGlsaXR5LCAkaW5maXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBSRlMgcmVzY2FsaW5nXG5AbWVkaWEgKG1pbi13aWR0aDogJHJmcy1tcS12YWx1ZSkge1xuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgQGlmIChtYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludCkgPCAkcmZzLWJyZWFrcG9pbnQpIHtcbiAgICAgIC8vIExvb3Agb3ZlciBlYWNoIHV0aWxpdHkgcHJvcGVydHlcbiAgICAgIEBlYWNoICRrZXksICR1dGlsaXR5IGluICR1dGlsaXRpZXMge1xuICAgICAgICAvLyBUaGUgdXRpbGl0eSBjYW4gYmUgZGlzYWJsZWQgd2l0aCBgZmFsc2VgLCB0aHVzIGNoZWNrIGlmIHRoZSB1dGlsaXR5IGlzIGEgbWFwIGZpcnN0XG4gICAgICAgIC8vIE9ubHkgcHJvY2VlZCBpZiByZXNwb25zaXZlIG1lZGlhIHF1ZXJpZXMgYXJlIGVuYWJsZWQgb3IgaWYgaXQncyB0aGUgYmFzZSBtZWRpYSBxdWVyeVxuICAgICAgICBAaWYgdHlwZS1vZigkdXRpbGl0eSkgPT0gXCJtYXBcIiBhbmQgbWFwLWdldCgkdXRpbGl0eSwgcmZzKSBhbmQgKG1hcC1nZXQoJHV0aWxpdHksIHJlc3BvbnNpdmUpIG9yICRpbmZpeCA9PSBcIlwiKSB7XG4gICAgICAgICAgQGluY2x1ZGUgZ2VuZXJhdGUtdXRpbGl0eSgkdXRpbGl0eSwgJGluZml4LCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIFByaW50IHV0aWxpdGllc1xuQG1lZGlhIHByaW50IHtcbiAgQGVhY2ggJGtleSwgJHV0aWxpdHkgaW4gJHV0aWxpdGllcyB7XG4gICAgLy8gVGhlIHV0aWxpdHkgY2FuIGJlIGRpc2FibGVkIHdpdGggYGZhbHNlYCwgdGh1cyBjaGVjayBpZiB0aGUgdXRpbGl0eSBpcyBhIG1hcCBmaXJzdFxuICAgIC8vIFRoZW4gY2hlY2sgaWYgdGhlIHV0aWxpdHkgbmVlZHMgcHJpbnQgc3R5bGVzXG4gICAgQGlmIHR5cGUtb2YoJHV0aWxpdHkpID09IFwibWFwXCIgYW5kIG1hcC1nZXQoJHV0aWxpdHksIHByaW50KSA9PSB0cnVlIHtcbiAgICAgIEBpbmNsdWRlIGdlbmVyYXRlLXV0aWxpdHkoJHV0aWxpdHksIFwiLXByaW50XCIpO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnQG1hdGVyaWFsL2VsZXZhdGlvbi9taXhpbnMnIGFzIGVsZXZhdGlvbi1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3JpcHBsZS9yaXBwbGUnO1xuQHVzZSAnQG1hdGVyaWFsL3JpcHBsZS9yaXBwbGUtdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3NoYXBlL21peGlucycgYXMgc2hhcGUtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJy4vdmFyaWFibGVzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5AdXNlICdAbWF0ZXJpYWwvZG9tL21peGlucycgYXMgZG9tLW1peGlucztcblxuLy9cbi8vIFB1YmxpY1xuLy9cblxuJHJpcHBsZS10YXJnZXQ6ICcubWRjLWNhcmRfX3JpcHBsZSc7XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHdpdGhvdXQtcmlwcGxlKCRxdWVyeSk7XG4gIEBpbmNsdWRlIHJpcHBsZSgkcXVlcnkpO1xufVxuXG4vLyBUaGlzIEFQSSBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IGZyYW1ld29ya3MgdGhhdCBtYXkgd2FudCB0byBzZXBhcmF0ZSB0aGUgcmlwcGxlLXJlbGF0ZWQgc3R5bGVzIGZyb20gdGhlIG90aGVyXG4vLyBjYXJkIHN0eWxlcy4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBtb3N0IHVzZXJzIHVzZSBgbWRjLWNhcmQtY29yZS1zdHlsZXNgIGluc3RlYWQuXG5AbWl4aW4gd2l0aG91dC1yaXBwbGUoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAvLyBwb3N0Y3NzLWJlbS1saW50ZXI6IGRlZmluZSBjYXJkXG5cbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBpbmNsdWRlIGVsZXZhdGlvbi1taXhpbnMub3ZlcmxheS1jb21tb24oJHF1ZXJ5KTsgLy8gQ09QWUJBUkFfQ09NTUVOVF9USElTX0xJTkVcblxuICAubWRjLWNhcmQge1xuICAgIEBpbmNsdWRlIHNoYXBlLXJhZGl1cyh2YXJpYWJsZXMuJHNoYXBlLXJhZGl1cywgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGZpbGwtY29sb3Ioc3VyZmFjZSwgJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBlbGV2YXRpb24tbWl4aW5zLm92ZXJsYXktc3VyZmFjZS1wb3NpdGlvbigkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgZWxldmF0aW9uLW1peGlucy5vdmVybGF5LWRpbWVuc2lvbnMoMTAwJSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGVsZXZhdGlvbi1taXhpbnMuZWxldmF0aW9uKDEsICRxdWVyeTogJHF1ZXJ5KTtcblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBjb250YWluZXItbGF5b3V0XztcbiAgICB9XG5cbiAgICAvLyBUcmFuc3BhcmVudCBjYXJkIGJvcmRlciBmb3IgaGlnaC1jb250cmFzdCBtb2RlLlxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIHNoYXBlLXJhZGl1cyh2YXJpYWJsZXMuJHNoYXBlLXJhZGl1cywgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgICAgQGluY2x1ZGUgZG9tLW1peGlucy50cmFuc3BhcmVudC1ib3JkZXIoJHF1ZXJ5OiAkcXVlcnkpO1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1jYXJkLS1vdXRsaW5lZCB7XG4gICAgQGluY2x1ZGUgZWxldmF0aW9uLW1peGlucy5lbGV2YXRpb24oMCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIG91dGxpbmUodmFyaWFibGVzLiRvdXRsaW5lLWNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgICAvLyBPdXRsaW5lZCBjYXJkIGFscmVhZHkgZGlzcGxheXMgYm9yZGVyIGluIGhpZ2gtY29udHJhc3QgbW9kZS4gT3ZlcndyaXRpbmdcbiAgICAvLyBzdHlsZXMgc2V0IGFib3ZlIHRvIHJlbW92ZSBhIGR1cGxpY2F0ZSBib3JkZXIuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtY2FyZF9fY29udGVudCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgLy8gTWVkaWFcbiAgLy9cblxuICAubWRjLWNhcmRfX21lZGlhIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyAvLyBDaGlsZCBlbGVtZW50IGBfX21lZGlhLWNvbnRlbnRgIGhhcyBgcG9zaXRpb246IGFic29sdXRlYFxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1jYXJkX19tZWRpYTpmaXJzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogaW5oZXJpdDtcbiAgICB9XG4gIH1cblxuICAubWRjLWNhcmRfX21lZGlhOmxhc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBpbmhlcml0O1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IGluaGVyaXQ7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1jYXJkX19tZWRpYS0tc3F1YXJlIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1hc3BlY3QtcmF0aW8oMSwgMSwgJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtY2FyZF9fbWVkaWEtLTE2LTkge1xuICAgIEBpbmNsdWRlIG1lZGlhLWFzcGVjdC1yYXRpbygxNiwgOSwgJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtY2FyZF9fbWVkaWEtY29udGVudCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgLy8gUHJpbWFyeSBhY3Rpb25cbiAgLy9cblxuICAubWRjLWNhcmRfX3ByaW1hcnktYWN0aW9uIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgY29udGFpbmVyLWxheW91dF87XG5cbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLy8gTmVlZGVkIHRvIHByZXZlbnQgdGhlIHJpcHBsZSB3YXNoIGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNvbnRhaW5lciBpbiBJRSBhbmQgRWRnZVxuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAubWRjLWNhcmRfX3ByaW1hcnktYWN0aW9uOmZpcnN0LWNoaWxkIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogaW5oZXJpdDtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBpbmhlcml0O1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtY2FyZF9fcHJpbWFyeS1hY3Rpb246bGFzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogaW5oZXJpdDtcbiAgICB9XG4gIH1cblxuICAvL1xuICAvLyBBY3Rpb24gcm93XG4gIC8vXG5cbiAgLm1kYy1jYXJkX19hY3Rpb25zIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgYWN0aW9ucy1sYXlvdXRfO1xuXG4gICAgICBtaW4taGVpZ2h0OiA1MnB4O1xuICAgICAgcGFkZGluZzogOHB4O1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtY2FyZF9fYWN0aW9ucy0tZnVsbC1ibGVlZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1jYXJkX19hY3Rpb24tYnV0dG9ucyxcbiAgLm1kYy1jYXJkX19hY3Rpb24taWNvbnMge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBhY3Rpb25zLWxheW91dF87XG4gICAgfVxuICB9XG5cbiAgLm1kYy1jYXJkX19hY3Rpb24taWNvbnMge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCB2YXJpYWJsZXMuJGFjdGlvbi1pY29uLWNvbG9yKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG4gIH1cblxuICAubWRjLWNhcmRfX2FjdGlvbi1idXR0b25zICsgLm1kYy1jYXJkX19hY3Rpb24taWNvbnMge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChtYXJnaW4sIGxlZnQsIDE2cHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIEFjdGlvbiBpdGVtc1xuICAvL1xuXG4gIC5tZGMtY2FyZF9fYWN0aW9uIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgYWN0aW9ucy1sYXlvdXRfKGlubGluZS1mbGV4KTtcblxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgLy8gQWN0aW9uIGJ1dHRvbnNcbiAgLy9cblxuICAubWRjLWNhcmRfX2FjdGlvbi0tYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1ib3gobWFyZ2luLCByaWdodCwgOHB4KTtcblxuICAgICAgcGFkZGluZzogMCA4cHg7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtYm94KG1hcmdpbiwgcmlnaHQsIDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtY2FyZF9fYWN0aW9ucy0tZnVsbC1ibGVlZCAubWRjLWNhcmRfX2FjdGlvbi0tYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIEFjdGlvbiBpY29uc1xuICAvL1xuXG4gIC5tZGMtY2FyZF9fYWN0aW9uLS1pY29uIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgLy8gSWNvbiBidXR0b25zIGFyZSB0YWxsZXIgdGhhbiBidXR0b25zLCBzbyB3ZSBuZWVkIHRvIGFkanVzdCB0aGVpciBtYXJnaW5zIHRvIHByZXZlbnQgdGhlIGFjdGlvbiByb3cgZnJvbVxuICAgICAgLy8gZXhwYW5kaW5nLlxuICAgICAgbWFyZ2luOiAtNnB4IDA7XG5cbiAgICAgIC8vIFNhbWUgcGFkZGluZyBhcyBtZGMtaWNvbi1idXR0b24uXG4gICAgICBwYWRkaW5nOiAxMnB4O1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtY2FyZF9fYWN0aW9uLS1pY29uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgdmFyaWFibGVzLiRhY3Rpb24taWNvbi1jb2xvcik7XG4gICAgfVxuICB9XG5cbiAgLy8gcG9zdGNzcy1iZW0tbGludGVyOiBlbmRcbn1cblxuLy8gVGhpcyBBUEkgaXMgaW50ZW5kZWQgZm9yIHVzZSBieSBmcmFtZXdvcmtzIHRoYXQgbWF5IHdhbnQgdG8gc2VwYXJhdGUgdGhlIHJpcHBsZS1yZWxhdGVkIHN0eWxlcyBmcm9tIHRoZSBvdGhlclxuLy8gY2FyZCBzdHlsZXMuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgbW9zdCB1c2VycyB1c2UgYG1kYy1jYXJkLWNvcmUtc3R5bGVzYCBpbnN0ZWFkLlxuQG1peGluIHJpcHBsZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHJpcHBsZS5jb21tb24oJHF1ZXJ5KTsgLy8gQ09QWUJBUkFfQ09NTUVOVF9USElTX0xJTkVcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLWNhcmRfX3ByaW1hcnktYWN0aW9uIHtcbiAgICBAaW5jbHVkZSByaXBwbGUuc3VyZmFjZSgkcXVlcnksICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldCk7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnJhZGl1cy1ib3VuZGVkKFxuICAgICAgJHF1ZXJ5OiAkcXVlcnksXG4gICAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgICApO1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMoXG4gICAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldFxuICAgICk7XG5cbiAgICAjeyRyaXBwbGUtdGFyZ2V0fSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5mb2N1cyB7XG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGRvbS1taXhpbnMudHJhbnNwYXJlbnQtYm9yZGVyKFxuICAgICAgICAgICRib3JkZXItd2lkdGg6IDVweCxcbiAgICAgICAgICAkYm9yZGVyLXN0eWxlOiBkb3VibGUsXG4gICAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZpbGwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShiYWNrZ3JvdW5kLWNvbG9yLCAkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBvdXRsaW5lKFxuICAkY29sb3IsXG4gICR0aGlja25lc3M6IHZhcmlhYmxlcy4kb3V0bGluZS13aWR0aCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgYm9yZGVyLXdpZHRoOiAkdGhpY2tuZXNzO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKCRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIHNoYXBlLXJhZGl1cyhcbiAgJHJhZGl1cyxcbiAgJHJ0bC1yZWZsZXhpdmU6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cygkcmFkaXVzLCAkcnRsLXJlZmxleGl2ZSwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gbWVkaWEtYXNwZWN0LXJhdGlvKCR4LCAkeSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIFRoaXMgY2xldmVyIHRyaWNrIGJyb3VnaHQgdG8geW91IGJ5OiBodHRwOi8vd3d3Lm1hZGVteWRheS5kZS9jc3MtaGVpZ2h0LWVxdWFscy13aWR0aC13aXRoLXB1cmUtY3NzLmh0bWxcbiAgICAgIG1hcmdpbi10b3A6IG1hdGgucGVyY2VudGFnZShtYXRoLmRpdigkeSwgJHgpKTtcbiAgICB9XG4gIH1cbn1cblxuLy9cbi8vIFByaXZhdGVcbi8vXG5cbkBtaXhpbiBjb250YWluZXItbGF5b3V0XyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbkBtaXhpbiBhY3Rpb25zLWxheW91dF8oJGRpc3BsYXk6IGZsZXgpIHtcbiAgZGlzcGxheTogJGRpc3BsYXk7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTggR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcblxuJGFjdGlvbi1pY29uLWNvbG9yOiByZ2JhKFxuICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICB0aGVtZS1jb2xvci50ZXh0LWVtcGhhc2lzKG1lZGl1bSlcbikgIWRlZmF1bHQ7XG4kb3V0bGluZS1jb2xvcjogY29sb3IubWl4KFxuICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKHN1cmZhY2UpLFxuICAxMiVcbikgIWRlZmF1bHQ7XG4kb3V0bGluZS13aWR0aDogMXB4ICFkZWZhdWx0O1xuJHNoYXBlLXJhZGl1czogbWVkaXVtICFkZWZhdWx0O1xuIiwiLy8gQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnQG1hdGVyaWFsL2FuaW1hdGlvbi9mdW5jdGlvbnMnIGFzIGFuaW1hdGlvbi1mdW5jdGlvbnM7XG5AdXNlICdAbWF0ZXJpYWwvZWxldmF0aW9uL2VsZXZhdGlvbi10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvZWxldmF0aW9uL2VsZXZhdGlvbic7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL2ZvY3VzLXJpbmcvZm9jdXMtcmluZyc7XG5AdXNlICdAbWF0ZXJpYWwvZG9tL21peGlucycgYXMgZG9tLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlJztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9taXhpbnMnIGFzIHNoYXBlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9mdW5jdGlvbnMnIGFzIHNoYXBlLWZ1bmN0aW9ucztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jc3MnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2N1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9yZXBsYWNlJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9zdGF0ZSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUtY29sb3InO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90b3VjaC10YXJnZXQvbWl4aW5zJyBhcyB0b3VjaC10YXJnZXQtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuL2ZhYi1jdXN0b20tcHJvcGVydGllcyc7XG5AdXNlICcuL2V4dGVuZGVkLWZhYi10aGVtZSc7XG5AdXNlICcuL2ZhYi10aGVtZSc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczpsaXN0JztcblxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgd2l0aG91dC1yaXBwbGUoJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgcmlwcGxlKCRxdWVyeSk7XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLy8gcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgZmFiXG5cbiAgQGluY2x1ZGUgdG91Y2gtdGFyZ2V0LW1peGlucy53cmFwcGVyKCRxdWVyeSk7IC8vIENPUFlCQVJBX0NPTU1FTlRfVEhJU19MSU5FXG4gIC8vIHByZXR0aWVyLWlnbm9yZVxuICBAaW5jbHVkZSBlbGV2YXRpb24ub3ZlcmxheS1jb21tb24oJHF1ZXJ5KTsgLy8gQ09QWUJBUkFfQ09NTUVOVF9USElTX0xJTkVcblxuICAubWRjLWZhYiB7XG4gICAgQGluY2x1ZGUgYmFzZV8oJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1mYWItLW1pbmkge1xuICAgIEBpbmNsdWRlIG1pbmlfKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtZmFiLS1leHRlbmRlZCB7XG4gICAgQGluY2x1ZGUgZXh0ZW5kZWRfKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtZmFiLS10b3VjaCB7XG4gICAgQGluY2x1ZGUgdG91Y2gtdGFyZ2V0LW1peGlucy5tYXJnaW4oXG4gICAgICAkY29tcG9uZW50LWhlaWdodDogZmFiLXRoZW1lLiRtaW5pLWhlaWdodCxcbiAgICAgICRjb21wb25lbnQtd2lkdGg6IGZhYi10aGVtZS4kbWluaS1oZWlnaHQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAubWRjLWZhYl9fdG91Y2gge1xuICAgICAgQGluY2x1ZGUgdG91Y2gtdGFyZ2V0LW1peGlucy50b3VjaC10YXJnZXQoXG4gICAgICAgICRzZXQtd2lkdGg6IHRydWUsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZmFiOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGRvbS1taXhpbnMudHJhbnNwYXJlbnQtYm9yZGVyKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtZmFiX19sYWJlbCB7XG4gICAgQGluY2x1ZGUgbGFiZWxfKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtZmFiX19pY29uIHtcbiAgICBAaW5jbHVkZSBpY29uXygkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICAvLyBJbmNyZWFzZSBzcGVjaWZpY2l0eSBmb3IgRkFCIGljb24gc3R5bGVzIHRoYXQgbmVlZCB0byBvdmVycmlkZSBzdHlsZXMgZGVmaW5lZCBmb3IgLm1hdGVyaWFsLWljb25zXG4gIC8vICh3aGljaCBpcyBsb2FkZWQgc2VwYXJhdGVseSBzbyB0aGUgb3JkZXIgb2YgQ1NTIGRlZmluaXRpb25zIGlzIG5vdCBndWFyYW50ZWVkKVxuICAubWRjLWZhYiAubWRjLWZhYl9faWNvbiB7XG4gICAgQGluY2x1ZGUgaWNvbi1vdmVycmlkZXNfKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtZmFiLS1leGl0ZWQge1xuICAgIEBpbmNsdWRlIGV4aXRlZF8oJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG4gIC8vIHBvc3Rjc3MtYmVtLWxpbnRlcjogZW5kXG59XG5cbkBtaXhpbiB3aXRob3V0LXJpcHBsZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHN0YXRpYy1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC5tZGMtZmFiIHtcbiAgICBAaW5jbHVkZSBmYWItdGhlbWUuY29udGFpbmVyLWNvbG9yKHNlY29uZGFyeSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGZhYi10aGVtZS5pY29uLXNpemUoMjRweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGZhYi10aGVtZS5pbmstY29sb3Iob24tc2Vjb25kYXJ5LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgZmFiLXRoZW1lLnNoYXBlLXJhZGl1cyhmYWItdGhlbWUuJHNoYXBlLXJhZGl1cywgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGVsZXZhdGlvbi10aGVtZS5lbGV2YXRpb24oNiwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiByaXBwbGUoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIHJpcHBsZS5jb21tb24oJHF1ZXJ5KTsgLy8gQ09QWUJBUkFfQ09NTUVOVF9USElTX0xJTkVcblxuICAubWRjLWZhYiB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnN1cmZhY2UoXG4gICAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiBmYWItdGhlbWUuJHJpcHBsZS10YXJnZXRcbiAgICApO1xuICAgIEBpbmNsdWRlIHJpcHBsZS5yYWRpdXMtYm91bmRlZChcbiAgICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICAgJHJpcHBsZS10YXJnZXQ6IGZhYi10aGVtZS4kcmlwcGxlLXRhcmdldFxuICAgICk7XG4gICAgLy8gU2V0IGAkb3BhY2l0eS1tYXBgIHRvIG51bGwgdG8gYXBwbHkgZGVmYXVsdCBvcGFjaXR5LW1hcC5cbiAgICBAaW5jbHVkZSBmYWItdGhlbWUucmlwcGxlLWNvbG9yKFxuICAgICAgb24tc2Vjb25kYXJ5LFxuICAgICAgJG9wYWNpdHktbWFwOiBudWxsLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgI3tmYWItdGhlbWUuJHJpcHBsZS10YXJnZXR9IHtcbiAgICAgIEBpbmNsdWRlIHJpcHBsZS50YXJnZXQtY29tbW9uKCRxdWVyeTogJHF1ZXJ5KTtcblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLmJlaGluZC1jb250ZW50KFxuICAgICAgZmFiLXRoZW1lLiRyaXBwbGUtdGFyZ2V0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbiRpY29uLWVudGVyLWRlbGF5XzogOTBtcztcbiRpY29uLWVudGVyLWR1cmF0aW9uXzogMTgwbXM7XG5cbkBtaXhpbiBiYXNlXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIGVsZXZhdGlvbi10aGVtZS5vdmVybGF5LXN1cmZhY2UtcG9zaXRpb24oJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBlbGV2YXRpb24tdGhlbWUub3ZlcmxheS1kaW1lbnNpb25zKDEwMCUsICRxdWVyeTogJHF1ZXJ5KTtcblxuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB3aWR0aDogZmFiLXRoZW1lLiRoZWlnaHQ7XG4gICAgaGVpZ2h0OiBmYWItdGhlbWUuJGhlaWdodDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC8vIEV2ZW4gdGhvdWdoIGB2aXNpYmxlYCBpcyB0aGUgZGVmYXVsdCwgSUUgMTEgY29tcHV0ZXMgdGhlIHByb3BlcnR5IGFzXG4gICAgLy8gYGhpZGRlbmAgaW4gc29tZSBjYXNlcywgdW5sZXNzIGl0J3MgZXhwbGljaXRseSBkZWZpbmVkIGhlcmUuXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgZWxldmF0aW9uLXRoZW1lLiR0cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgIGVsZXZhdGlvbi10aGVtZS4kdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sXG4gICAgICBvcGFjaXR5IDE1bXMgbGluZWFyIDMwbXMsXG4gICAgICBhbmltYXRpb24tZnVuY3Rpb25zLmVudGVyKFxuICAgICAgICB0cmFuc2Zvcm0sXG4gICAgICAgICRpY29uLWVudGVyLWR1cmF0aW9uXyArICRpY29uLWVudGVyLWRlbGF5X1xuICAgICAgKTtcbiAgfVxuXG4gICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIEBpbmNsdWRlIGVsZXZhdGlvbi10aGVtZS5lbGV2YXRpb24oOCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLmZvY3VzKCkge1xuICAgIEBpbmNsdWRlIGVsZXZhdGlvbi10aGVtZS5lbGV2YXRpb24oOCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1mYWJfX2ZvY3VzLXJpbmcge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLmZvY3VzKCkge1xuICAgIC5tZGMtZmFiX19mb2N1cy1yaW5nIHtcbiAgICAgIEBpbmNsdWRlIGZvY3VzLXJpbmcuZm9jdXMtcmluZygkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG5cbiAgLy8gSW5jcmVhc2UgYWN0aXZlIHN0YXRlIHNwZWNpZmljaXR5IGR1ZSB0byByaXBwbGUtdGhlbWUuZm9jdXMoKS5cbiAgJjphY3RpdmUsXG4gICY6Zm9jdXM6YWN0aXZlIHtcbiAgICBAaW5jbHVkZSBlbGV2YXRpb24tdGhlbWUuZWxldmF0aW9uKDEyLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgLy8gVE9ETyhhY2R2b3Jhayk6IFNob3VsZCB0aGlzIGJlIHBhaXJlZCB3aXRoIHN0YXRlcyBhbmQvb3IgcmlwcGxlPyBXZSBkb24ndCB3YW50IHRvIGRpc2FibGUgb3V0bGluZVxuICAgIC8vIChhbiBhY2Nlc3NpYmlsaXR5L3VzYWJpbGl0eSBmZWF0dXJlKSB1bmxlc3Mgd2UncmUgY29uZmlkZW50IHRoYXQgdGhlcmUgaXMgYWxzbyBhIHZpc3VhbCBpbmRpY2F0aW9uIHRoYXQgdGhlXG4gICAgLy8gZWxlbWVudCBoYXMgZm9jdXMuIElmIHRoZSBjbGllbnQgaGFzIGN1c3RvbWl6ZWQgdGhlIERPTSBpbiBzb21lIHVuZXhwZWN0ZWQgd2F5LCBhbmQgaXMgY2VydGFpbiB0aGF0IGFub3RoZXJcbiAgICAvLyBlbGVtZW50IHdpbGwgcmVjZWl2ZSBmb2N1cyBpbnN0ZWFkLCB0aGV5IGNhbiBhbHdheXMgb3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBtYW51YWxseSBpbiB0aGVpciBDU1MuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIGFsbG93cyBmb3IgdXNpbmcgU1ZHcyB3aXRoaW4gdGhlbSB0byBhbGlnbiBwcm9wZXJseSBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIENhbiByZW1vdmUgb25jZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDUxNSBpcyByZXNvbHZlZC5cblxuICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1tYXgtdHlwZVxuICAvLyBwb3N0Y3NzLWJlbS1saW50ZXI6IGlnbm9yZVxuICA+IHN2ZyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuICAvLyBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW1heC10eXBlXG59XG5cbkBtaXhpbiBtaW5pXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICB3aWR0aDogZmFiLXRoZW1lLiRtaW5pLWhlaWdodDtcbiAgICBoZWlnaHQ6IGZhYi10aGVtZS4kbWluaS1oZWlnaHQ7XG4gIH1cbn1cblxuQG1peGluIGV4dGVuZGVkXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShidXR0b24sICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgZXh0ZW5kZWQtZmFiLXRoZW1lLmV4dGVuZGVkLXNoYXBlLXJhZGl1cyhcbiAgICBmYWItdGhlbWUuJHNoYXBlLXJhZGl1cyxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICAkZXh0ZW5kZWQtaWNvbi1wYWRkaW5nOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgZmFiLWN1c3RvbS1wcm9wZXJ0aWVzLiRleHRlbmRlZC1pY29uLXBhZGRpbmcsXG4gICAgZXh0ZW5kZWQtZmFiLXRoZW1lLiRleHRlbmRlZC1pY29uLXBhZGRpbmdcbiAgKTtcbiAgJGV4dGVuZGVkLWxhYmVsLXBhZGRpbmc6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICBmYWItY3VzdG9tLXByb3BlcnRpZXMuJGV4dGVuZGVkLWxhYmVsLXBhZGRpbmcsXG4gICAgZXh0ZW5kZWQtZmFiLXRoZW1lLiRleHRlbmRlZC1sYWJlbC1wYWRkaW5nXG4gICk7XG4gIEBpbmNsdWRlIGV4dGVuZGVkLWZhYi10aGVtZS5leHRlbmRlZC1wYWRkaW5nKFxuICAgIGV4dGVuZGVkLWZhYi10aGVtZS4kZXh0ZW5kZWQtaWNvbi1wYWRkaW5nLFxuICAgIGV4dGVuZGVkLWZhYi10aGVtZS4kZXh0ZW5kZWQtbGFiZWwtcGFkZGluZyxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuXG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBleHRlbmRlZC1mYWItdGhlbWUuJGV4dGVuZGVkLWhlaWdodDtcbiAgICAvLyBUaGlzIGFsbG93cyB0aGUgdGV4dCB3aXRoaW4gdGhlIGV4dGVuZGVkIGZhYiB0byBiZSBjZW50ZXJlZCBmb3IgdmFyeWluZyBmb250IHNpemVzLlxuICAgIC8qIEBhbHRlcm5hdGUgKi9cbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBpY29uXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiBhbmltYXRpb24tZnVuY3Rpb25zLmVudGVyKFxuICAgICAgdHJhbnNmb3JtLFxuICAgICAgJGljb24tZW50ZXItZHVyYXRpb25fLFxuICAgICAgJGljb24tZW50ZXItZGVsYXlfXG4gICAgKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgZmlsbDogY3VycmVudENvbG9yO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gIH1cbn1cblxuQG1peGluIGxhYmVsXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogdmlzaWJsZTtcbiAgfVxufVxuXG5AbWl4aW4gaWNvbi1vdmVycmlkZXNfKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuQG1peGluIGV4aXRlZF8oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDE1bXMgbGluZWFyIDE1MG1zLFxuICAgICAgYW5pbWF0aW9uLWZ1bmN0aW9ucy5leGl0LXBlcm1hbmVudCh0cmFuc2Zvcm0sIDE4MG1zKTtcbiAgfVxuXG4gIC5tZGMtZmFiX19pY29uIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogYW5pbWF0aW9uLWZ1bmN0aW9ucy5leGl0LXBlcm1hbmVudCh0cmFuc2Zvcm0sIDEzNW1zKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ0BtYXRlcmlhbC9lbGV2YXRpb24vZWxldmF0aW9uLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vZnVuY3Rpb25zJyBhcyBhbmltYXRpb24tZnVuY3Rpb25zO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9taXhpbnMnIGFzIHNoYXBlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jc3MnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2N1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9rZXlzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9yZXBsYWNlJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9zdGF0ZSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcbkB1c2UgJ0BtYXRlcmlhbC90b2tlbnMvcmVzb2x2ZXJzJztcbkB1c2UgJy4vZmFiLWN1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcblxuJGhlaWdodDogNTZweCAhZGVmYXVsdDtcbiRtaW5pLWhlaWdodDogNDBweCAhZGVmYXVsdDtcbiRzaGFwZS1yYWRpdXM6IDUwJSAhZGVmYXVsdDtcbiRyaXBwbGUtdGFyZ2V0OiAnLm1kYy1mYWJfX3JpcHBsZSc7XG5cbiRfbGlnaHQtdGhlbWU6IChcbiAgY29udGFpbmVyLWNvbG9yOiBzZWNvbmRhcnksXG4gIGNvbnRhaW5lci1lbGV2YXRpb246IDYsXG4gIGNvbnRhaW5lci1oZWlnaHQ6IDU2cHgsXG4gIGNvbnRhaW5lci1zaGFkb3ctY29sb3I6IGJsYWNrLFxuICBjb250YWluZXItc2hhcGU6ICRzaGFwZS1yYWRpdXMsXG4gIGNvbnRhaW5lci13aWR0aDogNTZweCxcbiAgZm9jdXMtY29udGFpbmVyLWVsZXZhdGlvbjogbnVsbCxcbiAgZm9jdXMtaWNvbi1jb2xvcjogbnVsbCxcbiAgZm9jdXMtb3V0bGluZS1jb2xvcjogbnVsbCxcbiAgZm9jdXMtb3V0bGluZS13aWR0aDogbnVsbCxcbiAgZm9jdXMtc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRwcmltYXJ5LFxuICBmb2N1cy1zdGF0ZS1sYXllci1vcGFjaXR5OiBudWxsLFxuICBob3Zlci1jb250YWluZXItZWxldmF0aW9uOiBudWxsLFxuICBob3Zlci1pY29uLWNvbG9yOiBudWxsLFxuICBob3Zlci1zdGF0ZS1sYXllci1jb2xvcjogdGhlbWUtY29sb3IuJHByaW1hcnksXG4gIGhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHk6IG51bGwsXG4gIGljb24tY29sb3I6IG9uLXNlY29uZGFyeSxcbiAgaWNvbi1zaXplOiAyNHB4LFxuICBsb3dlcmVkLWNvbnRhaW5lci1lbGV2YXRpb246IG51bGwsXG4gIGxvd2VyZWQtZm9jdXMtY29udGFpbmVyLWVsZXZhdGlvbjogbnVsbCxcbiAgbG93ZXJlZC1ob3Zlci1jb250YWluZXItZWxldmF0aW9uOiBudWxsLFxuICBsb3dlcmVkLXByZXNzZWQtY29udGFpbmVyLWVsZXZhdGlvbjogbnVsbCxcbiAgcHJlc3NlZC1jb250YWluZXItZWxldmF0aW9uOiBudWxsLFxuICBwcmVzc2VkLWljb24tY29sb3I6IG51bGwsXG4gIHByZXNzZWQtcmlwcGxlLWNvbG9yOiBudWxsLFxuICBwcmVzc2VkLXJpcHBsZS1vcGFjaXR5OiBudWxsLFxuICBwcmVzc2VkLXN0YXRlLWxheWVyLWNvbG9yOiB0aGVtZS1jb2xvci4kcHJpbWFyeSxcbiAgcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5OiBudWxsLFxuKTtcblxuJGN1c3RvbS1wcm9wZXJ0eS1wcmVmaXg6ICdmYWInO1xuXG4vLy9cbi8vLyBBcHBsaWVzIHRoZSBnaXZlbiB0aGVtZSBhcyBjdXN0b20gcHJvcGVydGllcyB3aXRob3V0IGFueSBzZWxlY3RvcnMuXG4vLy9cbkBtaXhpbiB0aGVtZSgkdGhlbWUsICRyZXNvbHZlcnM6IHJlc29sdmVycy4kbWF0ZXJpYWwpIHtcbiAgQGluY2x1ZGUgdGhlbWUudmFsaWRhdGUtdGhlbWUoJF9saWdodC10aGVtZSwgJHRoZW1lKTtcbiAgJHJlc29sdmVkLXRoZW1lOiByZXNvbHZlLXRoZW1lKCR0aGVtZSwgJHJlc29sdmVycyk7XG4gIEBpbmNsdWRlIGtleXMuZGVjbGFyZS1jdXN0b20tcHJvcGVydGllcyhcbiAgICAkcmVzb2x2ZWQtdGhlbWUsXG4gICAgJHByZWZpeDogJGN1c3RvbS1wcm9wZXJ0eS1wcmVmaXhcbiAgKTtcbn1cblxuQG1peGluIHRoZW1lLXN0eWxlcygkdGhlbWUsICRyZXNvbHZlcnM6IHJlc29sdmVycy4kbWF0ZXJpYWwpIHtcbiAgQGluY2x1ZGUgdGhlbWUudmFsaWRhdGUtdGhlbWUoJF9saWdodC10aGVtZSwgJHRoZW1lKTtcblxuICAkdGhlbWU6IGtleXMuY3JlYXRlLXRoZW1lLXByb3BlcnRpZXMoXG4gICAgJHRoZW1lLFxuICAgICRwcmVmaXg6ICRjdXN0b20tcHJvcGVydHktcHJlZml4XG4gICk7XG4gIEBpbmNsdWRlIGJhc2UtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJHJlc29sdmVyczogJHJlc29sdmVycyk7XG5cbiAgJHNoYXBlLXJhZGl1czogbWFwLmdldCgkdGhlbWUsIGNvbnRhaW5lci1zaGFwZSk7XG4gIEBpZiAkc2hhcGUtcmFkaXVzIHtcbiAgICBAaW5jbHVkZSBzaGFwZS1yYWRpdXMoJHNoYXBlLXJhZGl1cyk7XG4gIH1cbn1cblxuLy8vXG4vLy8gUmVzb2x2ZXMgdGhlIGdpdmVuIHRoZW1lIHdpdGggdGhlIGdpdmVuIHJlc29sdmVycy5cbi8vL1xuQGZ1bmN0aW9uIHJlc29sdmUtdGhlbWUoJHRoZW1lLCAkcmVzb2x2ZXJzKSB7XG4gICRlbGV2YXRpb24tcmVzb2x2ZXI6IG1hcC5nZXQoJHJlc29sdmVycywgZWxldmF0aW9uKTtcbiAgQHJldHVybiBfcmVzb2x2ZS10aGVtZS1lbGV2YXRpb24ta2V5cyhcbiAgICAkdGhlbWUsXG4gICAgJGVsZXZhdGlvbi1yZXNvbHZlcixcbiAgICAoXG4gICAgICBjb250YWluZXItZWxldmF0aW9uLFxuICAgICAgaG92ZXItY29udGFpbmVyLWVsZXZhdGlvbixcbiAgICAgIGZvY3VzLWNvbnRhaW5lci1lbGV2YXRpb24sXG4gICAgICBwcmVzc2VkLWNvbnRhaW5lci1lbGV2YXRpb24sXG4gICAgICBkaXNhYmxlZC1jb250YWluZXItZWxldmF0aW9uLFxuICAgICAgbG93ZXJlZC1jb250YWluZXItZWxldmF0aW9uLFxuICAgICAgbG93ZXJlZC1mb2N1cy1jb250YWluZXItZWxldmF0aW9uLFxuICAgICAgbG93ZXJlZC1ob3Zlci1jb250YWluZXItZWxldmF0aW9uLFxuICAgICAgbG93ZXJlZC1wcmVzc2VkLWNvbnRhaW5lci1lbGV2YXRpb25cbiAgICApXG4gICk7XG59XG5cbi8vL1xuLy8vIFJldHVybnMgdGhlIHRoZW1lIHdpdGggdGhlIGVsZXZhdGlvbiBrZXlzIHJlc29sdmVkLlxuLy8vXG5AZnVuY3Rpb24gX3Jlc29sdmUtdGhlbWUtZWxldmF0aW9uLWtleXMoJHRoZW1lLCAkcmVzb2x2ZXIsICRlbGV2YXRpb24ta2V5cykge1xuICBAaWYgJHJlc29sdmVyID09IG51bGwge1xuICAgIEByZXR1cm4gJHRoZW1lO1xuICB9XG5cbiAgLy8gU2hhZG93IGNvbG9yIGlzIHVuaXZlcnNhbCBmb3IgdGhlIGNvbXBvbmVudC5cbiAgJHNoYWRvdy1jb2xvcjogbWFwLmdldCgkdGhlbWUsIGNvbnRhaW5lci1zaGFkb3ctY29sb3IpO1xuXG4gIEBlYWNoICRrZXkgaW4gJGVsZXZhdGlvbi1rZXlzIHtcbiAgICAkZWxldmF0aW9uOiBtYXAuZ2V0KCR0aGVtZSwgJGtleSk7XG4gICAgQGlmICRlbGV2YXRpb24gIT0gbnVsbCB7XG4gICAgICAkcmVzb2x2ZWQtdmFsdWU6IG1ldGEuY2FsbChcbiAgICAgICAgJHJlc29sdmVyLFxuICAgICAgICAkZWxldmF0aW9uOiAkZWxldmF0aW9uLFxuICAgICAgICAkc2hhZG93LWNvbG9yOiAkc2hhZG93LWNvbG9yXG4gICAgICApO1xuICAgICAgLy8gVXBkYXRlIHRoZSBrZXkgd2l0aCB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICAkdGhlbWU6IG1hcC5zZXQoJHRoZW1lLCAka2V5LCAkcmVzb2x2ZWQtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHRoZW1lO1xufVxuXG5AbWl4aW4gYmFzZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAkcmVzb2x2ZXJzOiByZXNvbHZlcnMuJG1hdGVyaWFsKSB7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1jb2xvcihtYXAuZ2V0KCR0aGVtZSwgY29udGFpbmVyLWNvbG9yKSk7XG4gIEBpbmNsdWRlIF9jb250YWluZXItZWxldmF0aW9uKFxuICAgIG1hcC5nZXQoJHJlc29sdmVycywgZWxldmF0aW9uKSxcbiAgICBtYXAuZ2V0KCR0aGVtZSwgY29udGFpbmVyLXNoYWRvdy1jb2xvciksXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIGNvbnRhaW5lci1lbGV2YXRpb24pLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCBob3Zlci1jb250YWluZXItZWxldmF0aW9uKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgZm9jdXMtY29udGFpbmVyLWVsZXZhdGlvbiksXG4gICAgICBwcmVzc2VkOiBtYXAuZ2V0KCR0aGVtZSwgcHJlc3NlZC1jb250YWluZXItZWxldmF0aW9uKSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIF9jb250YWluZXItaGVpZ2h0KG1hcC5nZXQoJHRoZW1lLCBjb250YWluZXItaGVpZ2h0KSk7XG4gIEBpbmNsdWRlIF9jb250YWluZXItd2lkdGgobWFwLmdldCgkdGhlbWUsIGNvbnRhaW5lci13aWR0aCkpO1xuICBAaW5jbHVkZSBpY29uLXNpemUobWFwLmdldCgkdGhlbWUsIGljb24tc2l6ZSkpO1xuICBAaW5jbHVkZSBfaWNvbi1jb2xvcihcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgaWNvbi1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIGhvdmVyLWljb24tY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCBmb2N1cy1pY29uLWNvbG9yKSxcbiAgICAgIHByZXNzZWQ6IG1hcC5nZXQoJHRoZW1lLCBwcmVzc2VkLWljb24tY29sb3IpLFxuICAgIClcbiAgKTtcblxuICAkb3BhY2l0eS1tYXA6IChcbiAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIGhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHkpLFxuICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgZm9jdXMtc3RhdGUtbGF5ZXItb3BhY2l0eSksXG4gICAgcHJlc3M6IG1hcC5nZXQoJHRoZW1lLCBwcmVzc2VkLXN0YXRlLWxheWVyLW9wYWNpdHkpLFxuICApO1xuICAkaG92ZXItc3RhdGUtbGF5ZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLCBob3Zlci1zdGF0ZS1sYXllci1jb2xvcik7XG4gIEBpZiAkaG92ZXItc3RhdGUtbGF5ZXItY29sb3Ige1xuICAgIEBpbmNsdWRlIHJpcHBsZS1jb2xvcigkaG92ZXItc3RhdGUtbGF5ZXItY29sb3IsICRvcGFjaXR5LW1hcDogJG9wYWNpdHktbWFwKTtcbiAgfVxuXG4gICRmb2N1cy1vdXRsaW5lLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZSwgZm9jdXMtb3V0bGluZS1jb2xvcik7XG4gIEBpZiAkZm9jdXMtb3V0bGluZS1jb2xvciB7XG4gICAgQGluY2x1ZGUgZm9jdXMtb3V0bGluZS1jb2xvcigkZm9jdXMtb3V0bGluZS1jb2xvcik7XG4gIH1cbiAgJGZvY3VzLW91dGxpbmUtd2lkdGg6IG1hcC5nZXQoJHRoZW1lLCBmb2N1cy1vdXRsaW5lLXdpZHRoKTtcbiAgQGlmICRmb2N1cy1vdXRsaW5lLXdpZHRoIHtcbiAgICBAaW5jbHVkZSBmb2N1cy1vdXRsaW5lLXdpZHRoKCRmb2N1cy1vdXRsaW5lLXdpZHRoKTtcbiAgfVxufVxuXG5AbWl4aW4gcmlwcGxlLWNvbG9yKCRjb2xvciwgJG9wYWNpdHktbWFwOiAoKSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzKFxuICAgICRjb2xvcixcbiAgICAkb3BhY2l0eS1tYXA6ICRvcGFjaXR5LW1hcCxcbiAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgKTtcbn1cblxuQG1peGluIGFjY2Vzc2libGUoJGNvbnRhaW5lci1jb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBjb250YWluZXItY29sb3IoJGNvbnRhaW5lci1jb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICRmaWxsLXRvbmU6IHRoZW1lLWNvbG9yLnRvbmUoJGNvbnRhaW5lci1jb2xvcik7XG5cbiAgQGlmICgkZmlsbC10b25lID09ICdkYXJrJykge1xuICAgIEBpbmNsdWRlIGluay1jb2xvcih0ZXh0LXByaW1hcnktb24tZGFyaywgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMoXG4gICAgICB0ZXh0LXByaW1hcnktb24tZGFyayxcbiAgICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0XG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgaW5rLWNvbG9yKHRleHQtcHJpbWFyeS1vbi1saWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMoXG4gICAgICB0ZXh0LXByaW1hcnktb24tbGlnaHQsXG4gICAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldFxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIGNvbnRhaW5lci1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJhY2tncm91bmQtY29sb3IsICRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIGljb24tc2l6ZSgkd2lkdGgsICRoZWlnaHQ6ICR3aWR0aCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZmFiX19pY29uIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoJ3dpZHRoJywgJHdpZHRoKTtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCdoZWlnaHQnLCAkaGVpZ2h0KTtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCdmb250LXNpemUnLCAkaGVpZ2h0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICYsXG4gICAgJjpub3QoOmRpc2FibGVkKSAubWRjLWZhYl9faWNvbixcbiAgICAmOm5vdCg6ZGlzYWJsZWQpIC5tZGMtZmFiX19sYWJlbCxcbiAgICAmOmRpc2FibGVkIC5tZGMtZmFiX19pY29uLFxuICAgICY6ZGlzYWJsZWQgLm1kYy1mYWJfX2xhYmVsIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2NvbnRhaW5lci1oZWlnaHQoJGhlaWdodCkge1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSgnaGVpZ2h0JywgJGhlaWdodCk7XG59XG5cbkBtaXhpbiBfY29udGFpbmVyLXdpZHRoKCR3aWR0aCkge1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSgnd2lkdGgnLCAkd2lkdGgpO1xufVxuXG5AbWl4aW4gX2ljb24tY29sb3IoJGNvbG9yLW9yLW1hcCkge1xuICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBAaW5jbHVkZSBfc2V0LWljb24tY29sb3Ioc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJGNvbG9yLW9yLW1hcCkpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBAaW5jbHVkZSBfc2V0LWljb24tY29sb3Ioc3RhdGUuZ2V0LWhvdmVyLXN0YXRlKCRjb2xvci1vci1tYXApKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIF9zZXQtaWNvbi1jb2xvcihzdGF0ZS5nZXQtZm9jdXMtc3RhdGUoJGNvbG9yLW9yLW1hcCkpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIF9zZXQtaWNvbi1jb2xvcihzdGF0ZS5nZXQtcHJlc3NlZC1zdGF0ZSgkY29sb3Itb3ItbWFwKSk7XG4gICAgfVxuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX3NldC1pY29uLWNvbG9yKHN0YXRlLmdldC1kaXNhYmxlZC1zdGF0ZSgkY29sb3Itb3ItbWFwKSk7XG4gIH1cbn1cblxuQG1peGluIF9zZXQtaWNvbi1jb2xvcigkY29sb3IpIHtcbiAgLm1kYy1mYWJfX2ljb24ge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfY29udGFpbmVyLWVsZXZhdGlvbigkcmVzb2x2ZXIsICRzaGFkb3ctY29sb3IsICRtYXApIHtcbiAgJjpub3QoOmRpc2FibGVkKSB7XG4gICAgQGluY2x1ZGUgZWxldmF0aW9uLXRoZW1lLndpdGgtcmVzb2x2ZXIoXG4gICAgICAkcmVzb2x2ZXIsXG4gICAgICAkZWxldmF0aW9uOiBzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkbWFwKSxcbiAgICAgICRzaGFkb3ctY29sb3I6ICRzaGFkb3ctY29sb3JcbiAgICApO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBAaW5jbHVkZSBlbGV2YXRpb24tdGhlbWUud2l0aC1yZXNvbHZlcihcbiAgICAgICAgJHJlc29sdmVyLFxuICAgICAgICAkZWxldmF0aW9uOiBzdGF0ZS5nZXQtaG92ZXItc3RhdGUoJG1hcCksXG4gICAgICAgICRzaGFkb3ctY29sb3I6ICRzaGFkb3ctY29sb3JcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICBAaW5jbHVkZSBlbGV2YXRpb24tdGhlbWUud2l0aC1yZXNvbHZlcihcbiAgICAgICAgJHJlc29sdmVyLFxuICAgICAgICAkZWxldmF0aW9uOiBzdGF0ZS5nZXQtZm9jdXMtc3RhdGUoJG1hcCksXG4gICAgICAgICRzaGFkb3ctY29sb3I6ICRzaGFkb3ctY29sb3JcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgQGluY2x1ZGUgZWxldmF0aW9uLXRoZW1lLndpdGgtcmVzb2x2ZXIoXG4gICAgICAgICRyZXNvbHZlcixcbiAgICAgICAgJGVsZXZhdGlvbjogc3RhdGUuZ2V0LXByZXNzZWQtc3RhdGUoJG1hcCksXG4gICAgICAgICRzaGFkb3ctY29sb3I6ICRzaGFkb3ctY29sb3JcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgLy8gRkFCIGRvZXMgbm90IGhhdmUgZGlzYWJsZWQgc3RhdGUuIFVzZSBkZWZhdWx0IHN0YXRlJ3MgZWxldmF0aW9uLlxuICAgIEBpbmNsdWRlIGVsZXZhdGlvbi10aGVtZS53aXRoLXJlc29sdmVyKFxuICAgICAgJHJlc29sdmVyLFxuICAgICAgJGVsZXZhdGlvbjogc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJG1hcCksXG4gICAgICAkc2hhZG93LWNvbG9yOiAkc2hhZG93LWNvbG9yXG4gICAgKTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIG91dGxpbmUgd2lkdGggb25seSB3aGVuIGJ1dHRvbiBpcyBpbiBmb2N1cy4gQWxzbyBzZXRzIHBhZGRpbmcgdG9cbi8vLyBpbmNsdWRlIG91dGxpbmUgb24gZm9jdXMgKEhlbHBzIHByZXZlbnQgc2l6ZSBqdW1wIG9uIGZvY3VzKS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIC0gT3V0bGluZSAoYm9yZGVyKSB3aWR0aC5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkcGFkZGluZyBbMF0gLSBQYWRkaW5nIHdoZW4gYnV0dG9uIGlzIG5vdCBpbiBmb2N1cy5cbi8vLyAgICAgT2Zmc2V0cyBwYWRkaW5nIGJhc2VkIG9uIGdpdmVuIG91dGxpbmUgd2lkdGggb24gZm9jdXMuXG4vLy9cbkBtaXhpbiBmb2N1cy1vdXRsaW5lLXdpZHRoKFxuICAkd2lkdGgsXG4gICRwYWRkaW5nOiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAkcGFkZGluZzogY3NzLnVucGFjay12YWx1ZSgkcGFkZGluZyk7XG4gICRwYWRkaW5nLWZhbGxiYWNrczogKDAgMCAwIDApO1xuICAkaXMtcGFkZGluZy1jdXN0b20tcHJvcDogKGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlKTtcbiAgJGlzLXdpZHRoLWN1c3RvbS1wcm9wOiBjdXN0b20tcHJvcGVydGllcy5pcy1jdXN0b20tcHJvcCgkd2lkdGgpO1xuICAkd2lkdGgtZmFsbGJhY2s6IGlmKFxuICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCR3aWR0aCksXG4gICAgY3VzdG9tLXByb3BlcnRpZXMuZ2V0LWZhbGxiYWNrKCR3aWR0aCksXG4gICAgJHdpZHRoXG4gICk7XG4gICR3aWR0aDogaWYoXG4gICAgY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoJHdpZHRoKSxcbiAgICBjdXN0b20tcHJvcGVydGllcy5nZXQtZGVjbGFyYXRpb24tdmFsdWUoJHdpZHRoKSxcbiAgICAkd2lkdGhcbiAgKTtcblxuICAvLyBjb25mb3JtIHBhZGRpbmcgdmFsdWVzIGFuZCBleHRyYWN0IGN1c3RvbSBwcm9wZXJ0eSBtZXRhZGF0YSBmcm9tIHRoZW1cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsaXN0Lmxlbmd0aCgkcGFkZGluZykge1xuICAgICR2YWx1ZTogbGlzdC5udGgoJHBhZGRpbmcsICRpKTtcbiAgICAkdmFsdWUtaXMtY3VzdG9tLXByb3A6IGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCR2YWx1ZSk7XG4gICAgLy8gY3NzIG1heCB3aWxsIGZhaWwgdG8gY29tcGFyZSBhIGJhcmUgMCB0byBhIHB4IHZhbHVlXG4gICAgJHZhbHVlOiBpZigkdmFsdWUgPT0gMCwgMHB4LCAkdmFsdWUpO1xuICAgICR2YWx1ZS1mYWxsYmFjazogaWYoXG4gICAgICAkdmFsdWUtaXMtY3VzdG9tLXByb3AsXG4gICAgICBjdXN0b20tcHJvcGVydGllcy5nZXQtZmFsbGJhY2soJHZhbHVlKSxcbiAgICAgICR2YWx1ZVxuICAgICk7XG4gICAgJHZhbHVlOiBpZihcbiAgICAgICR2YWx1ZS1pcy1jdXN0b20tcHJvcCxcbiAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmdldC1kZWNsYXJhdGlvbi12YWx1ZSgkdmFsdWUpLFxuICAgICAgJHZhbHVlXG4gICAgKTtcblxuICAgICRwYWRkaW5nOiBsaXN0LnNldC1udGgoJHBhZGRpbmcsICRpLCAkdmFsdWUpO1xuICAgICRwYWRkaW5nLWZhbGxiYWNrczogbGlzdC5zZXQtbnRoKCRwYWRkaW5nLWZhbGxiYWNrcywgJGksICR2YWx1ZS1mYWxsYmFjayk7XG4gICAgJGlzLXBhZGRpbmctY3VzdG9tLXByb3A6IGxpc3Quc2V0LW50aChcbiAgICAgICRpcy1wYWRkaW5nLWN1c3RvbS1wcm9wLFxuICAgICAgJGksXG4gICAgICAkdmFsdWUtaXMtY3VzdG9tLXByb3BcbiAgICApO1xuICB9XG5cbiAgLy8gUGFkZGluZyBzaG91bGQgaW5jbHVkZSBvdXRsaW5lIHdpZHRoIHdoaWNoIHdpbGwgYmUgc2V0IG9uIGZvY3VzLlxuICAvLyBzYXNzIG1hdGggcmVxdWlyZWQgZm9yIElFIHNpbmNlIElFIGRvZXNuJ3Qgc3VwcG9ydCBjc3MgbWF4XG4gICRwYWRkaW5nLXRvcC1mYWxsYmFjazogbWF0aC5tYXgoXG4gICAgbGlzdC5udGgoJHBhZGRpbmctZmFsbGJhY2tzLCAxKSxcbiAgICAkd2lkdGgtZmFsbGJhY2tcbiAgKTtcbiAgJHBhZGRpbmctcmlnaHQtZmFsbGJhY2s6IG1hdGgubWF4KFxuICAgIGxpc3QubnRoKCRwYWRkaW5nLWZhbGxiYWNrcywgMiksXG4gICAgJHdpZHRoLWZhbGxiYWNrXG4gICk7XG4gICRwYWRkaW5nLWJvdHRvbS1mYWxsYmFjazogbWF0aC5tYXgoXG4gICAgbGlzdC5udGgoJHBhZGRpbmctZmFsbGJhY2tzLCAzKSxcbiAgICAkd2lkdGgtZmFsbGJhY2tcbiAgKTtcbiAgJHBhZGRpbmctbGVmdC1mYWxsYmFjazogbWF0aC5tYXgoXG4gICAgbGlzdC5udGgoJHBhZGRpbmctZmFsbGJhY2tzLCA0KSxcbiAgICAkd2lkdGgtZmFsbGJhY2tcbiAgKTtcblxuICAkcGFkZGluZy10b3A6IHJlcGxhY2UucmVwbGFjZS1zdHJpbmcoXG4gICAgJ21heChwYWRkaW5ndmFsLCB3aWR0aCknLFxuICAgIChcbiAgICAgIHBhZGRpbmd2YWw6IGxpc3QubnRoKCRwYWRkaW5nLCAxKSxcbiAgICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgKVxuICApO1xuICAkcGFkZGluZy1yaWdodDogcmVwbGFjZS5yZXBsYWNlLXN0cmluZyhcbiAgICAnbWF4KHBhZGRpbmd2YWwsIHdpZHRoKScsXG4gICAgKFxuICAgICAgcGFkZGluZ3ZhbDogbGlzdC5udGgoJHBhZGRpbmcsIDIpLFxuICAgICAgd2lkdGg6ICR3aWR0aCxcbiAgICApXG4gICk7XG4gICRwYWRkaW5nLWJvdHRvbTogcmVwbGFjZS5yZXBsYWNlLXN0cmluZyhcbiAgICAnbWF4KHBhZGRpbmd2YWwsIHdpZHRoKScsXG4gICAgKFxuICAgICAgcGFkZGluZ3ZhbDogbGlzdC5udGgoJHBhZGRpbmcsIDMpLFxuICAgICAgd2lkdGg6ICR3aWR0aCxcbiAgICApXG4gICk7XG4gICRwYWRkaW5nLWxlZnQ6IHJlcGxhY2UucmVwbGFjZS1zdHJpbmcoXG4gICAgJ21heChwYWRkaW5ndmFsLCB3aWR0aCknLFxuICAgIChcbiAgICAgIHBhZGRpbmd2YWw6IGxpc3QubnRoKCRwYWRkaW5nLCA0KSxcbiAgICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgKVxuICApO1xuXG4gICR0b3AtaGFzLWN1c3RvbS1wcm9wOiAkaXMtd2lkdGgtY3VzdG9tLXByb3Agb3JcbiAgICBsaXN0Lm50aCgkaXMtcGFkZGluZy1jdXN0b20tcHJvcCwgMSk7XG4gIEBpbmNsdWRlIGNzcy5kZWNsYXJhdGlvbihwYWRkaW5nLXRvcCwgJHBhZGRpbmctdG9wLWZhbGxiYWNrKTtcbiAgQGlmICR0b3AtaGFzLWN1c3RvbS1wcm9wIHtcbiAgICBAaW5jbHVkZSBjc3MuZGVjbGFyYXRpb24oXG4gICAgICBwYWRkaW5nLXRvcCxcbiAgICAgICRwYWRkaW5nLXRvcCxcbiAgICAgICRnc3M6IChhbHRlcm5hdGU6ICR0b3AtaGFzLWN1c3RvbS1wcm9wKVxuICAgICk7XG4gIH1cblxuICAkcmlnaHQtaGFzLWN1c3RvbS1wcm9wOiAkaXMtd2lkdGgtY3VzdG9tLXByb3Agb3JcbiAgICBsaXN0Lm50aCgkaXMtcGFkZGluZy1jdXN0b20tcHJvcCwgMik7XG4gIEBpbmNsdWRlIGNzcy5kZWNsYXJhdGlvbihwYWRkaW5nLXJpZ2h0LCAkcGFkZGluZy1yaWdodC1mYWxsYmFjayk7XG4gIEBpZiAkcmlnaHQtaGFzLWN1c3RvbS1wcm9wIHtcbiAgICBAaW5jbHVkZSBjc3MuZGVjbGFyYXRpb24oXG4gICAgICBwYWRkaW5nLXJpZ2h0LFxuICAgICAgJHBhZGRpbmctcmlnaHQsXG4gICAgICAkZ3NzOiAoYWx0ZXJuYXRlOiAkcmlnaHQtaGFzLWN1c3RvbS1wcm9wKVxuICAgICk7XG4gIH1cblxuICAkYm90dG9tLWhhcy1jdXN0b20tcHJvcDogJGlzLXdpZHRoLWN1c3RvbS1wcm9wIG9yXG4gICAgbGlzdC5udGgoJGlzLXBhZGRpbmctY3VzdG9tLXByb3AsIDMpO1xuICBAaW5jbHVkZSBjc3MuZGVjbGFyYXRpb24ocGFkZGluZy1ib3R0b20sICRwYWRkaW5nLWJvdHRvbS1mYWxsYmFjayk7XG4gIEBpZiAkYm90dG9tLWhhcy1jdXN0b20tcHJvcCB7XG4gICAgQGluY2x1ZGUgY3NzLmRlY2xhcmF0aW9uKFxuICAgICAgcGFkZGluZy1ib3R0b20sXG4gICAgICAkcGFkZGluZy1ib3R0b20sXG4gICAgICAkZ3NzOiAoYWx0ZXJuYXRlOiAkYm90dG9tLWhhcy1jdXN0b20tcHJvcClcbiAgICApO1xuICB9XG5cbiAgJGxlZnQtaGFzLWN1c3RvbS1wcm9wOiAkaXMtd2lkdGgtY3VzdG9tLXByb3Agb3JcbiAgICBsaXN0Lm50aCgkaXMtcGFkZGluZy1jdXN0b20tcHJvcCwgNCk7XG4gIEBpbmNsdWRlIGNzcy5kZWNsYXJhdGlvbihwYWRkaW5nLWxlZnQsICRwYWRkaW5nLWxlZnQtZmFsbGJhY2spO1xuICBAaWYgJGxlZnQtaGFzLWN1c3RvbS1wcm9wIHtcbiAgICBAaW5jbHVkZSBjc3MuZGVjbGFyYXRpb24oXG4gICAgICBwYWRkaW5nLWxlZnQsXG4gICAgICAkcGFkZGluZy1sZWZ0LFxuICAgICAgJGdzczogKGFsdGVybmF0ZTogJGxlZnQtaGFzLWN1c3RvbS1wcm9wKVxuICAgICk7XG4gIH1cblxuICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuZm9jdXMoKSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShib3JkZXItd2lkdGgsICR3aWR0aCk7XG5cbiAgICAgICAgLy8gc2FzcyBtYXRoIHJlcXVpcmVkIGZvciBJRSBzaW5jZSBJRSBkb2Vzbid0IHN1cHBvcnQgY3NzIG1heFxuICAgICAgICAkcGFkZGluZy10b3AtZmFsbGJhY2s6IG1hdGguYWJzKFxuICAgICAgICAgIGxpc3QubnRoKCRwYWRkaW5nLWZhbGxiYWNrcywgMSkgLSAkd2lkdGgtZmFsbGJhY2tcbiAgICAgICAgKTtcbiAgICAgICAgJHBhZGRpbmctcmlnaHQtZmFsbGJhY2s6IG1hdGguYWJzKFxuICAgICAgICAgIGxpc3QubnRoKCRwYWRkaW5nLWZhbGxiYWNrcywgMikgLSAkd2lkdGgtZmFsbGJhY2tcbiAgICAgICAgKTtcbiAgICAgICAgJHBhZGRpbmctYm90dG9tLWZhbGxiYWNrOiBtYXRoLmFicyhcbiAgICAgICAgICBsaXN0Lm50aCgkcGFkZGluZy1mYWxsYmFja3MsIDMpIC0gJHdpZHRoLWZhbGxiYWNrXG4gICAgICAgICk7XG4gICAgICAgICRwYWRkaW5nLWxlZnQtZmFsbGJhY2s6IG1hdGguYWJzKFxuICAgICAgICAgIGxpc3QubnRoKCRwYWRkaW5nLWZhbGxiYWNrcywgNCkgLSAkd2lkdGgtZmFsbGJhY2tcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBtYXgoYSwgY2FsYyhhICogLTEpKSBpcyBlcXVpdmFsZW50IHRvIG1hdGguYWJzXG4gICAgICAgICRwYWRkaW5nLXRvcDogcmVwbGFjZS5yZXBsYWNlLXN0cmluZyhcbiAgICAgICAgICAnbWF4KHBhZGRpbmdjYWxjLCBjYWxjKHBhZGRpbmdjYWxjICogLTEpKScsXG4gICAgICAgICAgKFxuICAgICAgICAgICAgcGFkZGluZ2NhbGM6ICdjYWxjKHBhZGRpbmd2YWwgLSB3aWR0aCknLFxuICAgICAgICAgICAgcGFkZGluZ3ZhbDogbGlzdC5udGgoJHBhZGRpbmcsIDEpLFxuICAgICAgICAgICAgd2lkdGg6ICR3aWR0aCxcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgICRwYWRkaW5nLXJpZ2h0OiByZXBsYWNlLnJlcGxhY2Utc3RyaW5nKFxuICAgICAgICAgICdtYXgocGFkZGluZ2NhbGMsIGNhbGMocGFkZGluZ2NhbGMgKiAtMSkpJyxcbiAgICAgICAgICAoXG4gICAgICAgICAgICBwYWRkaW5nY2FsYzogJ2NhbGMocGFkZGluZ3ZhbCAtIHdpZHRoKScsXG4gICAgICAgICAgICBwYWRkaW5ndmFsOiBsaXN0Lm50aCgkcGFkZGluZywgMiksXG4gICAgICAgICAgICB3aWR0aDogJHdpZHRoLFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgJHBhZGRpbmctYm90dG9tOiByZXBsYWNlLnJlcGxhY2Utc3RyaW5nKFxuICAgICAgICAgICdtYXgocGFkZGluZ2NhbGMsIGNhbGMocGFkZGluZ2NhbGMgKiAtMSkpJyxcbiAgICAgICAgICAoXG4gICAgICAgICAgICBwYWRkaW5nY2FsYzogJ2NhbGMocGFkZGluZ3ZhbCAtIHdpZHRoKScsXG4gICAgICAgICAgICBwYWRkaW5ndmFsOiBsaXN0Lm50aCgkcGFkZGluZywgMyksXG4gICAgICAgICAgICB3aWR0aDogJHdpZHRoLFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgJHBhZGRpbmctbGVmdDogcmVwbGFjZS5yZXBsYWNlLXN0cmluZyhcbiAgICAgICAgICAnbWF4KHBhZGRpbmdjYWxjLCBjYWxjKHBhZGRpbmdjYWxjICogLTEpKScsXG4gICAgICAgICAgKFxuICAgICAgICAgICAgcGFkZGluZ2NhbGM6ICdjYWxjKHBhZGRpbmd2YWwgLSB3aWR0aCknLFxuICAgICAgICAgICAgcGFkZGluZ3ZhbDogbGlzdC5udGgoJHBhZGRpbmcsIDQpLFxuICAgICAgICAgICAgd2lkdGg6ICR3aWR0aCxcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgQGluY2x1ZGUgY3NzLmRlY2xhcmF0aW9uKHBhZGRpbmctdG9wLCAkcGFkZGluZy10b3AtZmFsbGJhY2spO1xuICAgICAgICBAaWYgJHRvcC1oYXMtY3VzdG9tLXByb3Age1xuICAgICAgICAgIEBpbmNsdWRlIGNzcy5kZWNsYXJhdGlvbihcbiAgICAgICAgICAgIHBhZGRpbmctdG9wLFxuICAgICAgICAgICAgJHBhZGRpbmctdG9wLFxuICAgICAgICAgICAgJGdzczogKGFsdGVybmF0ZTogJHRvcC1oYXMtY3VzdG9tLXByb3ApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBjc3MuZGVjbGFyYXRpb24ocGFkZGluZy1yaWdodCwgJHBhZGRpbmctcmlnaHQtZmFsbGJhY2spO1xuICAgICAgICBAaWYgJHJpZ2h0LWhhcy1jdXN0b20tcHJvcCB7XG4gICAgICAgICAgQGluY2x1ZGUgY3NzLmRlY2xhcmF0aW9uKFxuICAgICAgICAgICAgcGFkZGluZy1yaWdodCxcbiAgICAgICAgICAgICRwYWRkaW5nLXJpZ2h0LFxuICAgICAgICAgICAgJGdzczogKGFsdGVybmF0ZTogJHJpZ2h0LWhhcy1jdXN0b20tcHJvcClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIGNzcy5kZWNsYXJhdGlvbihwYWRkaW5nLWJvdHRvbSwgJHBhZGRpbmctYm90dG9tLWZhbGxiYWNrKTtcbiAgICAgICAgQGlmICRib3R0b20taGFzLWN1c3RvbS1wcm9wIHtcbiAgICAgICAgICBAaW5jbHVkZSBjc3MuZGVjbGFyYXRpb24oXG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbSxcbiAgICAgICAgICAgICRwYWRkaW5nLWJvdHRvbSxcbiAgICAgICAgICAgICRnc3M6IChhbHRlcm5hdGU6ICRib3R0b20taGFzLWN1c3RvbS1wcm9wKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgY3NzLmRlY2xhcmF0aW9uKHBhZGRpbmctbGVmdCwgJHBhZGRpbmctbGVmdC1mYWxsYmFjayk7XG4gICAgICAgIEBpZiAkbGVmdC1oYXMtY3VzdG9tLXByb3Age1xuICAgICAgICAgIEBpbmNsdWRlIGNzcy5kZWNsYXJhdGlvbihcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdCxcbiAgICAgICAgICAgICRwYWRkaW5nLWxlZnQsXG4gICAgICAgICAgICAkZ3NzOiAoYWx0ZXJuYXRlOiAkbGVmdC1oYXMtY3VzdG9tLXByb3ApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIG91dGxpbmUgY29sb3Igb25seSB3aGVuIGJ1dHRvbiBpcyBpbiBmb2N1cy4gVXNlIGBmb2N1cy1vdXRsaW5lLXdpZHRoKClgXG4vLy8gdG8gc2V0IGFwcHJvcHJpYXRlIG91dGxpbmUgd2lkdGguXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gT3V0bGluZSAoYm9yZGVyKSBjb2xvci5cbi8vL1xuQG1peGluIGZvY3VzLW91dGxpbmUtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gICY6bm90KDpkaXNhYmxlZCkge1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5mb2N1cygpIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYm9yZGVyLWNvbG9yLCAkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2hhcGUtcmFkaXVzKFxuICAkcmFkaXVzLFxuICAkcnRsLXJlZmxleGl2ZTogZmFsc2UsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAmOm5vdCgubWRjLWZhYi0tZXh0ZW5kZWQpIHtcbiAgICAvLyBEbyBub3Qgc3BlY2lmeSAkY29tcG9uZW50LWhlaWdodCBmb3Igc2hhcGUgcmFkaXVzLiBGQUJzIGFyZSBjaXJjdWxhcixcbiAgICAvLyB3aGljaCBtZWFucyB0aGV5IGNhbiB1c2UgcGVyY2VudGFnZSBib3JkZXIgcmFkaXVzIHdpdGhvdXQgcmVzb2x2aW5nIHRvXG4gICAgLy8gYSBjb21wb25lbnQgaGVpZ2h0LlxuICAgIEBpbmNsdWRlIHNoYXBlLW1peGlucy5yYWRpdXMoJHJhZGl1cywgJHJ0bC1yZWZsZXhpdmUsICRxdWVyeTogJHF1ZXJ5KTtcblxuICAgICN7JHJpcHBsZS10YXJnZXR9IHtcbiAgICAgIEBpbmNsdWRlIHNoYXBlLW1peGlucy5yYWRpdXMoJHJhZGl1cywgJHJ0bC1yZWZsZXhpdmUsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vZnVuY3Rpb25zJyBhcyBhbmltYXRpb24tZnVuY3Rpb25zO1xuQHVzZSAnQG1hdGVyaWFsL2VsZXZhdGlvbi9lbGV2YXRpb24tdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9kb20vbWl4aW5zJyBhcyBkb20tbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3JpcHBsZS9yaXBwbGUnO1xuQHVzZSAnQG1hdGVyaWFsL3JpcHBsZS9yaXBwbGUtdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3NoYXBlL21peGlucycgYXMgc2hhcGUtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3NoYXBlL2Z1bmN0aW9ucycgYXMgc2hhcGUtZnVuY3Rpb25zO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2Nzcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2tleXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3JlcGxhY2UnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3N0YXRlJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3Rva2Vucy9yZXNvbHZlcnMnO1xuQHVzZSAnQG1hdGVyaWFsL3RvdWNoLXRhcmdldC9taXhpbnMnIGFzIHRvdWNoLXRhcmdldC1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4vZmFiLXRoZW1lJztcbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOmxpc3QnO1xuXG4kZXh0ZW5kZWQtaWNvbi1wYWRkaW5nOiAxMnB4ICFkZWZhdWx0O1xuJGV4dGVuZGVkLWxhYmVsLXBhZGRpbmc6IDIwcHggIWRlZmF1bHQ7XG4kZXh0ZW5kZWQtaGVpZ2h0OiA0OHB4ICFkZWZhdWx0O1xuXG4kX2V4dGVuZGVkLWxpZ2h0LXRoZW1lOiAoXG4gIGNvbnRhaW5lci1jb2xvcjogdGhlbWUtY29sb3IuJHN1cmZhY2UsXG4gIGNvbnRhaW5lci1lbGV2YXRpb246IDMsXG4gIGNvbnRhaW5lci1oZWlnaHQ6IDU2cHgsXG4gIGNvbnRhaW5lci1zaGFkb3ctY29sb3I6IGJsYWNrLFxuICBjb250YWluZXItc2hhcGU6IDUwJSxcbiAgZm9jdXMtY29udGFpbmVyLWVsZXZhdGlvbjogbnVsbCxcbiAgZm9jdXMtaWNvbi1jb2xvcjogbnVsbCxcbiAgZm9jdXMtbGFiZWwtdGV4dC1jb2xvcjogbnVsbCxcbiAgZm9jdXMtb3V0bGluZS1jb2xvcjogbnVsbCxcbiAgZm9jdXMtb3V0bGluZS13aWR0aDogbnVsbCxcbiAgZm9jdXMtc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRwcmltYXJ5LFxuICBmb2N1cy1zdGF0ZS1sYXllci1vcGFjaXR5OiBudWxsLFxuICBob3Zlci1jb250YWluZXItZWxldmF0aW9uOiBudWxsLFxuICBob3Zlci1pY29uLWNvbG9yOiBudWxsLFxuICBob3Zlci1sYWJlbC10ZXh0LWNvbG9yOiBudWxsLFxuICBob3Zlci1zdGF0ZS1sYXllci1jb2xvcjogdGhlbWUtY29sb3IuJHByaW1hcnksXG4gIGhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHk6IG51bGwsXG4gIGljb24tY29sb3I6IG51bGwsXG4gIGljb24tc2l6ZTogMzZweCxcbiAgbGFiZWwtdGV4dC1jb2xvcjogdGhlbWUtY29sb3IuJG9uLXN1cmZhY2UsXG4gIGxhYmVsLXRleHQtZm9udDogdHlwb2dyYXBoeS5nZXQtZm9udChidXR0b24pLFxuICBsYWJlbC10ZXh0LXNpemU6IHR5cG9ncmFwaHkuZ2V0LXNpemUoYnV0dG9uKSxcbiAgbGFiZWwtdGV4dC10cmFja2luZzogdHlwb2dyYXBoeS5nZXQtdHJhY2tpbmcoYnV0dG9uKSxcbiAgbGFiZWwtdGV4dC13ZWlnaHQ6IHR5cG9ncmFwaHkuZ2V0LXdlaWdodChidXR0b24pLFxuICBsb3dlcmVkLWNvbnRhaW5lci1lbGV2YXRpb246IG51bGwsXG4gIGxvd2VyZWQtZm9jdXMtY29udGFpbmVyLWVsZXZhdGlvbjogbnVsbCxcbiAgbG93ZXJlZC1ob3Zlci1jb250YWluZXItZWxldmF0aW9uOiBudWxsLFxuICBsb3dlcmVkLXByZXNzZWQtY29udGFpbmVyLWVsZXZhdGlvbjogbnVsbCxcbiAgcHJlc3NlZC1jb250YWluZXItZWxldmF0aW9uOiBudWxsLFxuICBwcmVzc2VkLWljb24tY29sb3I6IG51bGwsXG4gIHByZXNzZWQtbGFiZWwtdGV4dC1jb2xvcjogbnVsbCxcbiAgcHJlc3NlZC1yaXBwbGUtY29sb3I6IG51bGwsXG4gIHByZXNzZWQtcmlwcGxlLW9wYWNpdHk6IG51bGwsXG4gIHByZXNzZWQtc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRwcmltYXJ5LFxuICBwcmVzc2VkLXN0YXRlLWxheWVyLW9wYWNpdHk6IG51bGwsXG4pO1xuXG4kY3VzdG9tLXByb3BlcnR5LXByZWZpeDogJ2V4dGVuZGVkLWZhYic7XG5cbi8vL1xuLy8vIEFwcGxpZXMgdGhlIGdpdmVuIHRoZW1lIGFzIGN1c3RvbSBwcm9wZXJ0aWVzIHdpdGhvdXQgYW55IHNlbGVjdG9ycy5cbi8vL1xuQG1peGluIHRoZW1lKCR0aGVtZSwgJHJlc29sdmVyczogcmVzb2x2ZXJzLiRtYXRlcmlhbCkge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZSgkX2V4dGVuZGVkLWxpZ2h0LXRoZW1lLCAkdGhlbWUpO1xuICAkcmVzb2x2ZWQtdGhlbWU6IGZhYi10aGVtZS5yZXNvbHZlLXRoZW1lKCR0aGVtZSwgJHJlc29sdmVycyk7XG4gIEBpbmNsdWRlIGtleXMuZGVjbGFyZS1jdXN0b20tcHJvcGVydGllcyhcbiAgICAkcmVzb2x2ZWQtdGhlbWUsXG4gICAgJHByZWZpeDogJGN1c3RvbS1wcm9wZXJ0eS1wcmVmaXhcbiAgKTtcbn1cblxuQG1peGluIHRoZW1lLXN0eWxlcygkdGhlbWUsICRyZXNvbHZlcnM6IHJlc29sdmVycy4kbWF0ZXJpYWwpIHtcbiAgQGluY2x1ZGUgdGhlbWUudmFsaWRhdGUtdGhlbWUoJF9leHRlbmRlZC1saWdodC10aGVtZSwgJHRoZW1lKTtcblxuICAkdGhlbWU6IGtleXMuY3JlYXRlLXRoZW1lLXByb3BlcnRpZXMoXG4gICAgJHRoZW1lLFxuICAgICRwcmVmaXg6ICRjdXN0b20tcHJvcGVydHktcHJlZml4XG4gICk7XG5cbiAgQGluY2x1ZGUgZmFiLXRoZW1lLmJhc2UtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJHJlc29sdmVyczogJHJlc29sdmVycyk7XG4gICRjb250YWluZXItc2hhcGU6IG1hcC5nZXQoJHRoZW1lLCBjb250YWluZXItc2hhcGUpO1xuICBAaWYgJGNvbnRhaW5lci1zaGFwZSB7XG4gICAgQGluY2x1ZGUgZXh0ZW5kZWQtc2hhcGUtcmFkaXVzKCRjb250YWluZXItc2hhcGUpO1xuICB9XG4gIEBpbmNsdWRlIF9sYWJlbC1jb2xvcihcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgbGFiZWwtdGV4dC1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIGhvdmVyLWxhYmVsLXRleHQtY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCBmb2N1cy1sYWJlbC10ZXh0LWNvbG9yKSxcbiAgICAgIHByZXNzZWQ6IG1hcC5nZXQoJHRoZW1lLCBwcmVzc2VkLWxhYmVsLXRleHQtY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgX2xhYmVsLXR5cG9ncmFwaHkoXG4gICAgKFxuICAgICAgZm9udDogbWFwLmdldCgkdGhlbWUsIGxhYmVsLXRleHQtZm9udCksXG4gICAgICBzaXplOiBtYXAuZ2V0KCR0aGVtZSwgbGFiZWwtdGV4dC1zaXplKSxcbiAgICAgIHdlaWdodDogbWFwLmdldCgkdGhlbWUsIGxhYmVsLXRleHQtd2VpZ2h0KSxcbiAgICAgIHRyYWNraW5nOiBtYXAuZ2V0KCR0aGVtZSwgbGFiZWwtdGV4dC10cmFja2luZyksXG4gICAgKVxuICApO1xufVxuXG5AbWl4aW4gZXh0ZW5kZWQtZmx1aWQoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuQG1peGluIGV4dGVuZGVkLXBhZGRpbmcoXG4gICRpY29uLXBhZGRpbmcsXG4gICRsYWJlbC1wYWRkaW5nLFxuICAkZm9jdXMtb3V0bGluZS13aWR0aDogbnVsbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZXh0ZW5kZWQtbGFiZWwtcGFkZGluZygkbGFiZWwtcGFkZGluZywgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC8vIE9mZnNldHMgdGhlIG91dGVyIGxhYmVsIHBhZGRpbmcgYnkgZGVkdWN0aW5nIGl0IGZyb20gaWNvbiBwYWRkaW5nLlxuICAubWRjLWZhYl9faWNvbiB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIGV4dGVuZGVkLWljb24tcGFkZGluZygkaWNvbi1wYWRkaW5nLCAkbGFiZWwtcGFkZGluZyk7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIEV4dGVuZGVkIEZBQiB3aXRoIHRleHQgbGFiZWwgZm9sbG93ZWQgYnkgaWNvbi5cbiAgLm1kYy1mYWJfX2xhYmVsICsgLm1kYy1mYWJfX2ljb24ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBleHRlbmRlZC1pY29uLXBhZGRpbmcoXG4gICAgICAgICRpY29uLXBhZGRpbmcsXG4gICAgICAgICRsYWJlbC1wYWRkaW5nLFxuICAgICAgICAkaXMtaWNvbi1hdC1lbmQ6IHRydWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQGlmICRmb2N1cy1vdXRsaW5lLXdpZHRoIHtcbiAgICBAaW5jbHVkZSBmYWItdGhlbWUuZm9jdXMtb3V0bGluZS13aWR0aChcbiAgICAgICRmb2N1cy1vdXRsaW5lLXdpZHRoLFxuICAgICAgJHBhZGRpbmc6IDAgJGxhYmVsLXBhZGRpbmdcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBleHRlbmRlZC1pY29uLXBhZGRpbmcoXG4gICRpY29uLXBhZGRpbmcsXG4gICRsYWJlbC1wYWRkaW5nLFxuICAkaXMtaWNvbi1hdC1lbmQ6IGZhbHNlXG4pIHtcbiAgJHN0YXJ0OiAnY2FsYyhpY29uIC0gbGFiZWwpJztcbiAgJGVuZDogJGljb24tcGFkZGluZztcblxuICBAaWYgJGlzLWljb24tYXQtZW5kIHtcbiAgICAkc3RhcnQ6ICRpY29uLXBhZGRpbmc7XG4gICAgJGVuZDogJ2NhbGMoaWNvbiAtIGxhYmVsKSc7XG4gIH1cblxuICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KFxuICAgIG1hcmdpbixcbiAgICAkc3RhcnQsXG4gICAgJGVuZCxcbiAgICAkcmVwbGFjZTogKGljb246ICRpY29uLXBhZGRpbmcsIGxhYmVsOiAkbGFiZWwtcGFkZGluZylcbiAgKTtcbn1cblxuQG1peGluIGV4dGVuZGVkLWxhYmVsLXBhZGRpbmcoJGxhYmVsLXBhZGRpbmcsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KHBhZGRpbmctbGVmdCwgJGxhYmVsLXBhZGRpbmcsICRnc3M6IChub2ZsaXA6IHRydWUpKTtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShcbiAgICAgIHBhZGRpbmctcmlnaHQsXG4gICAgICAkbGFiZWwtcGFkZGluZyxcbiAgICAgICRnc3M6IChub2ZsaXA6IHRydWUpXG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gZXh0ZW5kZWQtc2hhcGUtcmFkaXVzKFxuICAkcmFkaXVzLFxuICAkcnRsLXJlZmxleGl2ZTogZmFsc2UsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAvLyBFeHRlbmRlZCBGQUJzIF9kb18gbmVlZCBhICRjb21wb25lbnQtaGVpZ2h0IHNpbmNlIHRoZXkgYXJlIG5vdCBjaXJjdWxhci5cbiAgLy8gUGVyY2VudGFnZSByYWRpaSBtdXN0IGJlIHJlc29sdmVkLlxuICBAaW5jbHVkZSBzaGFwZS1taXhpbnMucmFkaXVzKFxuICAgICRyYWRpdXMsXG4gICAgJHJ0bC1yZWZsZXhpdmUsXG4gICAgJGNvbXBvbmVudC1oZWlnaHQ6ICRleHRlbmRlZC1oZWlnaHQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICAje2ZhYi10aGVtZS4kcmlwcGxlLXRhcmdldH0ge1xuICAgIEBpbmNsdWRlIHNoYXBlLW1peGlucy5yYWRpdXMoXG4gICAgICAkcmFkaXVzLFxuICAgICAgJHJ0bC1yZWZsZXhpdmUsXG4gICAgICAkY29tcG9uZW50LWhlaWdodDogJGV4dGVuZGVkLWhlaWdodCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gX2xhYmVsLWNvbG9yKCRjb2xvci1vci1tYXApIHtcbiAgJjpub3QoOmRpc2FibGVkKSB7XG4gICAgQGluY2x1ZGUgX3NldC1sYWJlbC1jb2xvcihzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkY29sb3Itb3ItbWFwKSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIF9zZXQtbGFiZWwtY29sb3Ioc3RhdGUuZ2V0LWhvdmVyLXN0YXRlKCRjb2xvci1vci1tYXApKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIF9zZXQtbGFiZWwtY29sb3Ioc3RhdGUuZ2V0LWZvY3VzLXN0YXRlKCRjb2xvci1vci1tYXApKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBfc2V0LWxhYmVsLWNvbG9yKHN0YXRlLmdldC1wcmVzc2VkLXN0YXRlKCRjb2xvci1vci1tYXApKTtcbiAgICB9XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBfc2V0LWxhYmVsLWNvbG9yKHN0YXRlLmdldC1kaXNhYmxlZC1zdGF0ZSgkY29sb3Itb3ItbWFwKSk7XG4gIH1cbn1cblxuQG1peGluIF9zZXQtbGFiZWwtY29sb3IoJGNvbG9yKSB7XG4gIC5tZGMtZmFiX19sYWJlbCB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIF9sYWJlbC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5LW1hcCkge1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShmb250LWZhbWlseSwgbWFwLmdldCgkdHlwb2dyYXBoeS1tYXAsIGZvbnQpKTtcbiAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoZm9udC1zaXplLCBtYXAuZ2V0KCR0eXBvZ3JhcGh5LW1hcCwgc2l6ZSkpO1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShmb250LXdlaWdodCwgbWFwLmdldCgkdHlwb2dyYXBoeS1tYXAsIHdlaWdodCkpO1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShsZXR0ZXItc3BhY2luZywgbWFwLmdldCgkdHlwb2dyYXBoeS1tYXAsIHRyYWNraW5nKSk7XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gTk9URTogV2UgZGlzYWJsZSBgc2VsZWN0b3ItY2xhc3MtcGF0dGVybmAgYWJvdmUgdG8gYWxsb3cgdXNpbmcgYG1kYy1gIGNsYXNzXG4vLyBzZWxlY3RvcnMuXG5cbkB1c2UgJ3Nhc3M6bGlzdCc7XG5AdXNlICdAbWF0ZXJpYWwvYW5pbWF0aW9uL2Z1bmN0aW9ucyc7XG5AdXNlICdAbWF0ZXJpYWwvY2hlY2tib3gvbWl4aW5zJyBhcyBjaGVja2JveC1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvZGVuc2l0eS9mdW5jdGlvbnMnIGFzIGRlbnNpdHktZnVuY3Rpb25zO1xuQHVzZSAnQG1hdGVyaWFsL2RvbS9taXhpbnMnIGFzIGRvbTtcbkB1c2UgJ0BtYXRlcmlhbC9lbGV2YXRpb24vbWl4aW5zJztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICdAbWF0ZXJpYWwvc2hhcGUvbWl4aW5zJyBhcyBzaGFwZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcbkB1c2UgJ0BtYXRlcmlhbC90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi9kYXRhLXRhYmxlLWNlbGwnO1xuQHVzZSAnLi9kYXRhLXRhYmxlLWhlYWRlci1jZWxsJztcbkB1c2UgJy4vZGF0YS10YWJsZS1wYWdpbmF0aW9uJztcbkB1c2UgJy4vZGF0YS10YWJsZS1wcm9ncmVzcy1pbmRpY2F0b3InO1xuQHVzZSAnLi9kYXRhLXRhYmxlLXRoZW1lJztcblxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgdGFibGUtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgZGF0YS10YWJsZS10aGVtZS5zb3J0LWljb24tY29sb3IoXG4gICAgZGF0YS10YWJsZS10aGVtZS4kc29ydC1pY29uLWNvbG9yLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIGRhdGEtdGFibGUtdGhlbWUuc29ydC1pY29uLWFjdGl2ZS1jb2xvcihcbiAgICBkYXRhLXRhYmxlLXRoZW1lLiRzb3J0LWljb24tYWN0aXZlLWNvbG9yLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgQGluY2x1ZGUgZGF0YS10YWJsZS1wcm9ncmVzcy1pbmRpY2F0b3IuY29yZS1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBkYXRhLXRhYmxlLXBhZ2luYXRpb24uY29yZS1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLyBUaGlzIEFQSSBpbmNsdWRlcyBvbmx5IHRoZSB0YWJsZSBzdHlsZXMgd2l0aG91dCB0aGUgc29ydGluZywgcGFnaW5hdGlvbiBhbmRcbi8vIGxvYWRpbmcgc3R5bGVzLiBJdCBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IGZyYW1ld29ya3MgdGhhdCBvbmx5IG5lZWQgdGhlXG4vLyB0YWJsZSBzdHlsZXMuXG5AbWl4aW4gdGFibGUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGZlYXQtdHlwb2dyYXBoeTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHR5cG9ncmFwaHkpO1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gIC8vIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIGRhdGEtdGFibGVcblxuICAubWRjLWRhdGEtdGFibGVfX2NvbnRlbnQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShib2R5MiwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1kYXRhLXRhYmxlIHtcbiAgICBAaW5jbHVkZSBkYXRhLXRhYmxlLXRoZW1lLmZpbGwtY29sb3IoXG4gICAgICBkYXRhLXRhYmxlLXRoZW1lLiRmaWxsLWNvbG9yLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIGRhdGEtdGFibGUtdGhlbWUuc2hhcGUtcmFkaXVzKFxuICAgICAgZGF0YS10YWJsZS10aGVtZS4kc2hhcGUtcmFkaXVzLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIGRhdGEtdGFibGUtdGhlbWUuc3Ryb2tlLXNpemUoXG4gICAgICBkYXRhLXRhYmxlLXRoZW1lLiRzdHJva2Utc2l6ZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBkYXRhLXRhYmxlLXRoZW1lLnN0cm9rZS1jb2xvcihcbiAgICAgIGRhdGEtdGFibGUtdGhlbWUuJHN0cm9rZS1jb2xvcixcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAvLyBNYWtlcyB0aGUgdGFibGUgc2Nyb2xsIHNtb290aGx5IGluIGlPUy5cbiAgICAgIC8vIE5PVEU6IFJvb3QgZWxlbWVudCBzaG91bGQgbm90IGJlIHNjcm9sbGFibGUsIGFkZGVkIHRoaXMgZm9yIGJhY2t3YXJkXG4gICAgICAvLyBjb21wYXRpYmlsaXR5LlxuICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3Qgb3V0cHV0IHRoZSBjb2xvciBzdHlsZXMgaW5zaWRlIHRoZSBgQGF0LXJvb3RgLFxuICAvLyBiZWNhdXNlIGl0IG1ha2VzIGl0IGRpZmZpY3VsdCB0byBjb25zdW1lIGJ5IHByb2plY3RzIHRoYXQgd3JhcCB0aGVpclxuICAvLyB0aGVtZXMgaW4gYSBjbGFzcyAoZS5nLiBgLm15LXRoZW1lIHsgQGluY2x1ZGUgbWRjLWRhdGEtdGFibGUtY29yZS1zdHlsZSgpIH1gKS5cbiAgQGluY2x1ZGUgZGF0YS10YWJsZS10aGVtZS5yb3ctZmlsbC1jb2xvcihcbiAgICBkYXRhLXRhYmxlLXRoZW1lLiRyb3ctZmlsbC1jb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBkYXRhLXRhYmxlLXRoZW1lLmhlYWRlci1yb3ctZmlsbC1jb2xvcihcbiAgICBkYXRhLXRhYmxlLXRoZW1lLiRoZWFkZXItcm93LWZpbGwtY29sb3IsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgZGF0YS10YWJsZS10aGVtZS5zZWxlY3RlZC1yb3ctZmlsbC1jb2xvcihcbiAgICBkYXRhLXRhYmxlLXRoZW1lLiRzZWxlY3RlZC1yb3ctZmlsbC1jb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBkYXRhLXRhYmxlLXRoZW1lLmRpdmlkZXItY29sb3IoXG4gICAgZGF0YS10YWJsZS10aGVtZS4kZGl2aWRlci1jb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBkYXRhLXRhYmxlLXRoZW1lLmRpdmlkZXItc2l6ZShcbiAgICBkYXRhLXRhYmxlLXRoZW1lLiRkaXZpZGVyLXNpemUsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgZGF0YS10YWJsZS10aGVtZS5yb3ctaG92ZXItZmlsbC1jb2xvcihcbiAgICBkYXRhLXRhYmxlLXRoZW1lLiRyb3ctaG92ZXItZmlsbC1jb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBkYXRhLXRhYmxlLXRoZW1lLmhlYWRlci1yb3ctdGV4dC1jb2xvcihcbiAgICBkYXRhLXRhYmxlLXRoZW1lLiRoZWFkZXItcm93LXRleHQtY29sb3IsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgZGF0YS10YWJsZS10aGVtZS5yb3ctdGV4dC1jb2xvcihcbiAgICBkYXRhLXRhYmxlLXRoZW1lLiRyb3ctdGV4dC1jb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBkYXRhLXRhYmxlLXRoZW1lLmRlbnNpdHkoXG4gICAgZGF0YS10YWJsZS10aGVtZS4kZGVmYXVsdC1kZW5zaXR5LXNjYWxlLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIGRhdGEtdGFibGUtdGhlbWUuY2VsbC1wYWRkaW5nKFxuICAgICRsZWFkaW5nLXBhZGRpbmc6IGRhdGEtdGFibGUtdGhlbWUuJGNlbGwtbGVhZGluZy1wYWRkaW5nLFxuICAgICR0cmFpbGluZy1wYWRkaW5nOiBkYXRhLXRhYmxlLXRoZW1lLiRjZWxsLXRyYWlsaW5nLXBhZGRpbmcsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICAubWRjLWRhdGEtdGFibGVfX3RhYmxlLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIE1ha2VzIHRoZSB0YWJsZSBzY3JvbGwgc21vb3RobHkgaW4gaU9TLlxuICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGF0YS10YWJsZV9fdGFibGUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBtaW4td2lkdGg6IDEwMCU7IC8vIE1ha2VzIHRhYmxlIGZ1bGwtd2lkdGggb2YgaXRzIGNvbnRhaW5lciAoRmlyZWZveCAvIElFMTEpXG4gICAgICBib3JkZXI6IDA7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgICAvKipcbiAgICAgICAqIFdpdGggdGFibGUtbGF5b3V0OmZpeGVkLCB0YWJsZSBhbmQgY29sdW1uIHdpZHRocyBhcmUgZGVmaW5lZCBieSB0aGUgd2lkdGhcbiAgICAgICAqIG9mIHRoZSBmaXJzdCByb3cgb2YgY2VsbHMuIENlbGxzIGluIHN1YnNlcXVlbnQgcm93cyBkbyBub3QgYWZmZWN0IGNvbHVtblxuICAgICAgICogd2lkdGhzLiBUaGlzIHJlc3VsdHMgaW4gYSBwcmVkaWN0YWJsZSB0YWJsZSBsYXlvdXQgYW5kIG1heSBhbHNvIHNwZWVkIHVwXG4gICAgICAgKiByZW5kZXJpbmcuXG4gICAgICAgKi9cbiAgICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgZGF0YS10YWJsZS1jZWxsLmNvcmUtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgZGF0YS10YWJsZS1oZWFkZXItY2VsbC5jb3JlLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG5cbiAgLm1kYy1kYXRhLXRhYmxlLS1zdGlja3ktaGVhZGVyIHtcbiAgICBAaW5jbHVkZSBkYXRhLXRhYmxlLWhlYWRlci1jZWxsLmhlYWRlci1jZWxsLXN0aWNreSgkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuQG1peGluIHRoZW1lLWJhc2VsaW5lKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgZGF0YS10YWJsZS10aGVtZS5jaGVja2VkLWljb24tY29sb3IoXG4gICAgZGF0YS10YWJsZS10aGVtZS4kY2hlY2tlZC1pY29uLWNvbG9yLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gTk9URTogV2UgZGlzYWJsZSBgc2VsZWN0b3ItY2xhc3MtcGF0dGVybmAgYWJvdmUgdG8gYWxsb3cgdXNpbmcgYG1kYy1gIGNsYXNzXG4vLyBzZWxlY3RvcnMuXG5cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vZnVuY3Rpb25zJztcbkB1c2UgJ0BtYXRlcmlhbC9jaGVja2JveC9jaGVja2JveC10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvZGVuc2l0eS9kZW5zaXR5JztcbkB1c2UgJ0BtYXRlcmlhbC9lbGV2YXRpb24vbWl4aW5zJztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvaWNvbi1idXR0b24vaWNvbi1idXR0b24tdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL2xpc3QvZXZvbHV0aW9uLW1peGlucycgYXMgbGlzdC10aGVtZTtcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcbkB1c2UgJ0BtYXRlcmlhbC9zZWxlY3Qvc2VsZWN0LXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9mdW5jdGlvbnMnIGFzIHNoYXBlLWZ1bmN0aW9ucztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9taXhpbnMnIGFzIHNoYXBlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUtY29sb3InO1xuQHVzZSAnQG1hdGVyaWFsL3RvdWNoLXRhcmdldC90b3VjaC10YXJnZXQnO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5cbiRmaWxsLWNvbG9yOiBzdXJmYWNlICFkZWZhdWx0O1xuJGhlYWRlci1yb3ctZmlsbC1jb2xvcjogc3VyZmFjZSAhZGVmYXVsdDtcbiRyb3ctZmlsbC1jb2xvcjogaW5oZXJpdCAhZGVmYXVsdDtcbiRzZWxlY3RlZC1yb3ctZmlsbC1jb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKHByaW1hcnkpLCAwLjA0KSAhZGVmYXVsdDtcbiRjaGVja2VkLWljb24tY29sb3I6IHByaW1hcnkgIWRlZmF1bHQ7XG4kZGl2aWRlci1jb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjEyKSAhZGVmYXVsdDtcbiRkaXZpZGVyLXNpemU6IDFweCAhZGVmYXVsdDtcbiRyb3ctaG92ZXItZmlsbC1jb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjA0KSAhZGVmYXVsdDtcblxuJGhlYWRlci1yb3ctdGV4dC1jb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjg3KSAhZGVmYXVsdDtcbiRyb3ctdGV4dC1jb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjg3KSAhZGVmYXVsdDtcblxuJHNvcnQtaWNvbi1jb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjYpICFkZWZhdWx0O1xuJHNvcnQtaWNvbi1hY3RpdmUtY29sb3I6IHJnYmEoXG4gIHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIDAuODdcbikgIWRlZmF1bHQ7XG4kc29ydC1pY29uLWRlbnNpdHktc2NhbGU6IC01ICFkZWZhdWx0O1xuXG4kc2hhcGUtcmFkaXVzOiBtZWRpdW0gIWRlZmF1bHQ7XG4kc3Ryb2tlLXNpemU6IDFweCAhZGVmYXVsdDtcbiRzdHJva2UtY29sb3I6IHJnYmEodGhlbWUtY29sb3IucHJvcC12YWx1ZShvbi1zdXJmYWNlKSwgMC4xMikgIWRlZmF1bHQ7XG5cbiRyb3ctaGVpZ2h0OiA1MnB4ICFkZWZhdWx0O1xuJGhlYWRlci1yb3ctaGVpZ2h0OiBnZXQtaGVhZGVyLXJvdy1oZWlnaHQoJHJvdy1oZWlnaHQpICFkZWZhdWx0O1xuJGNlbGwtbGVhZGluZy1wYWRkaW5nOiAxNnB4ICFkZWZhdWx0O1xuJGNlbGwtdHJhaWxpbmctcGFkZGluZzogMTZweCAhZGVmYXVsdDtcblxuJG1pbmltdW0tcm93LWhlaWdodDogMzZweCAhZGVmYXVsdDtcbiRtYXhpbXVtLXJvdy1oZWlnaHQ6ICRyb3ctaGVpZ2h0ICFkZWZhdWx0O1xuJGRlZmF1bHQtZGVuc2l0eS1zY2FsZTogZGVuc2l0eS4kZGVmYXVsdC1zY2FsZSAhZGVmYXVsdDtcbiRkZW5zaXR5LWNvbmZpZzogKFxuICBoZWlnaHQ6IChcbiAgICBtYXhpbXVtOiAkcm93LWhlaWdodCxcbiAgICBkZWZhdWx0OiAkcm93LWhlaWdodCxcbiAgICBtaW5pbXVtOiAkbWluaW11bS1yb3ctaGVpZ2h0LFxuICApLFxuKTtcbiRwYWdpbmF0aW9uLXJvd3MtcGVyLXBhZ2Utc2VsZWN0LWhlaWdodDogMzZweDtcblxuQGZ1bmN0aW9uIGdldC1oZWFkZXItcm93LWhlaWdodCgkaGVpZ2h0KSB7XG4gIEByZXR1cm4gJGhlaWdodCArIDRweDtcbn1cblxuLy8vIFNldHMgdGhlIGNvbG9yIG9mIHNvcnQgaWNvbiBidXR0b24gd2hlbiBpdCBpcyBpbiBpZGxlIHN0YXRlLlxuLy8vIChpY29uIHNob3dlZCBvbiBoZWFkZXIgY2VsbCBmb2N1cylcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGNvbG9yIC0gQ29sb3Igb2Ygc29ydCBpY29uIGJ1dHRvblxuQG1peGluIHNvcnQtaWNvbi1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19zb3J0LWljb24tYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBpY29uLWJ1dHRvbi10aGVtZS5pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGNvbG9yIG9mIHNvcnQgaWNvbiBidXR0b24gd2hlbiBpdCBpcyBhY3RpdmF0ZWQgKHNvcnRlZCkuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRjb2xvciAtIENvbG9yIG9mIHNvcnQgaWNvbiBidXR0b25cbkBtaXhpbiBzb3J0LWljb24tYWN0aXZlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWRhdGEtdGFibGVfX2hlYWRlci1jZWxsLS1zb3J0ZWQgLm1kYy1kYXRhLXRhYmxlX19zb3J0LWljb24tYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBpY29uLWJ1dHRvbi10aGVtZS5pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuQG1peGluIGZpbGwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSgnYmFja2dyb3VuZC1jb2xvcicsICRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIGhlYWRlci1yb3ctZmlsbC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLy8gU2V0IGJhY2tncm91bmQgY29sb3IgdG8gY2VsbCBpbnN0ZWFkIG9mIHJvdyB0byBzdXBwb3J0IHN0aWNreSBoZWFkZXIuXG4gIC5tZGMtZGF0YS10YWJsZV9faGVhZGVyLWNlbGwge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCdiYWNrZ3JvdW5kLWNvbG9yJywgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHJvdy1maWxsLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWRhdGEtdGFibGVfX3JvdyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoJ2JhY2tncm91bmQtY29sb3InLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2VsZWN0ZWQtcm93LWZpbGwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtZGF0YS10YWJsZV9fcm93LS1zZWxlY3RlZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoJ2JhY2tncm91bmQtY29sb3InLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY2hlY2tlZC1pY29uLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAubWRjLWRhdGEtdGFibGVfX2hlYWRlci1yb3ctY2hlY2tib3gsXG4gIC5tZGMtZGF0YS10YWJsZV9fcm93LWNoZWNrYm94IHtcbiAgICBAaW5jbHVkZSBjaGVja2JveC10aGVtZS5mb2N1cy1pbmRpY2F0b3ItY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgY2hlY2tib3gtdGhlbWUuY29udGFpbmVyLWNvbG9ycyhcbiAgICAgICRtYXJrZWQtc3Ryb2tlLWNvbG9yOiAkY29sb3IsXG4gICAgICAkbWFya2VkLWZpbGwtY29sb3I6ICRjb2xvcixcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIGRpdmlkZXIgY29sb3Igb2YgZGF0YSB0YWJsZSAoaW5jbHVkaW5nIG91dGxpbmUgY29sb3Igb2Ygcm93cyBwZXIgcGFnZVxuLy8vIHNlbGVjdCkuIFVzZSBgc3Ryb2tlLWNvbG9yKClgIHRvIHNldCB0YWJsZSBib3JkZXIgY29sb3IuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIERpdmlkZXIgY29sb3IuXG4vLy9cbkBtaXhpbiBkaXZpZGVyLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWRhdGEtdGFibGVfX3BhZ2luYXRpb24tcm93cy1wZXItcGFnZS1zZWxlY3Qge1xuICAgIEBpbmNsdWRlIHNlbGVjdC10aGVtZS5vdXRsaW5lLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19jZWxsLFxuICAubWRjLWRhdGEtdGFibGVfX2hlYWRlci1jZWxsIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19wYWdpbmF0aW9uIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXZpZGVyLXNpemUoJHNpemUsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLWRhdGEtdGFibGVfX2NlbGwsXG4gIC5tZGMtZGF0YS10YWJsZV9faGVhZGVyLWNlbGwge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAkc2l6ZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGF0YS10YWJsZV9fcGFnaW5hdGlvbiB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6ICRzaXplO1xuICAgICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19yb3c6bGFzdC1jaGlsZCAubWRjLWRhdGEtdGFibGVfX2NlbGwge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcm93LWhvdmVyLWZpbGwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtZGF0YS10YWJsZV9fcm93Om5vdCgubWRjLWRhdGEtdGFibGVfX3Jvdy0tc2VsZWN0ZWQpOmhvdmVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSgnYmFja2dyb3VuZC1jb2xvcicsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoZWFkZXItcm93LXRleHQtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtZGF0YS10YWJsZV9faGVhZGVyLWNlbGwge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCdjb2xvcicsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgcm93IHRleHQgY29sb3IgKGluY2x1ZGluZyBwYWdpbmF0aW9uIHJvdyB0ZXh0KS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgUm93IHRleHQgY29sb3Jcbi8vL1xuQG1peGluIHJvdy10ZXh0LWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWRhdGEtdGFibGVfX3BhZ2luYXRpb24tdG90YWwsXG4gIC5tZGMtZGF0YS10YWJsZV9fcGFnaW5hdGlvbi1yb3dzLXBlci1wYWdlLWxhYmVsLFxuICAubWRjLWRhdGEtdGFibGVfX2NlbGwge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCdjb2xvcicsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgcm91bmRlZCBzaGFwZSByYWRpdXMgdG8gZGF0YSB0YWJsZS5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkcmFkaXVzIC0gU2hhcGUgcmFkaXVzIGluIGBib3JkZXItcmFkaXVzYCBDU1MgZm9ybWF0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHJ0bC1yZWZsZXhpdmUgLSBTZXQgdG8gYHRydWVgIHRvIGZsaXAgcmFkaXVzIGNvcm5lcnMgaW5cbi8vLyAgICAgUlRMIGNvbnRleHQuXG4vLy9cbkBtaXhpbiBzaGFwZS1yYWRpdXMoXG4gICRyYWRpdXMsXG4gICRydGwtcmVmbGV4aXZlOiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cygkcmFkaXVzLCAkcnRsLXJlZmxleGl2ZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC8vIEFwcGx5IHNhbWUgYm9yZGVyIHJhZGl1cyBhcyBwYXJlbnQgdG8gbGVhZGluZy90cmFpbGluZyBoZWFkZXIgY2VsbHMsXG4gIC8vIGFuZCBsZWFkaW5nL3RyYWlsaW5nIGNlbGxzIG9mIGxhc3Qgcm93LlxuICAvLyBDZWxscyB0aGF0IGhhdmUgZXhwbGljaXQgYmFja2dyb3VuZCBjb2xvciBhcHBsaWVkIHJlcXVpcmUgYm9yZGVyXG4gIC8vIHJhZGl1cyB0byB0YWtlIHRoZSBwYXJlbnRzJyByb3VuZGVkIHNoYXBlLlxuICAkYm9yZGVyLXJhZGl1czogc2hhcGUtZnVuY3Rpb25zLnVucGFjay1yYWRpdXMoJHJhZGl1cyk7XG4gICR0b3AtbGVmdC1yYWRpdXM6IHNoYXBlLWZ1bmN0aW9ucy5yZXNvbHZlLXJhZGl1cyhsaXN0Lm50aCgkYm9yZGVyLXJhZGl1cywgMSkpO1xuICAkdG9wLXJpZ2h0LXJhZGl1czogc2hhcGUtZnVuY3Rpb25zLnJlc29sdmUtcmFkaXVzKFxuICAgIGxpc3QubnRoKCRib3JkZXItcmFkaXVzLCAyKVxuICApO1xuICAkYm90dG9tLXJpZ2h0LXJhZGl1czogc2hhcGUtZnVuY3Rpb25zLnJlc29sdmUtcmFkaXVzKFxuICAgIGxpc3QubnRoKCRib3JkZXItcmFkaXVzLCAzKVxuICApO1xuICAkYm90dG9tLWxlZnQtcmFkaXVzOiBzaGFwZS1mdW5jdGlvbnMucmVzb2x2ZS1yYWRpdXMoXG4gICAgbGlzdC5udGgoJGJvcmRlci1yYWRpdXMsIDQpXG4gICk7XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19oZWFkZXItY2VsbDpmaXJzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci10b3AtbGVmdC1yYWRpdXMsICR0b3AtbGVmdC1yYWRpdXMpO1xuXG4gICAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoXG4gICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsXG4gICAgICAgICAgaWYoJHJ0bC1yZWZsZXhpdmUsICR0b3AtbGVmdC1yYWRpdXMsICR0b3AtcmlnaHQtcmFkaXVzKVxuICAgICAgICApO1xuXG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19oZWFkZXItY2VsbDpsYXN0LWNoaWxkIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsICR0b3AtcmlnaHQtcmFkaXVzKTtcblxuICAgICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KFxuICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXMsXG4gICAgICAgICAgaWYoJHJ0bC1yZWZsZXhpdmUsICR0b3AtcmlnaHQtcmFkaXVzLCAkdG9wLWxlZnQtcmFkaXVzKVxuICAgICAgICApO1xuXG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYubWRjLWRhdGEtdGFibGUtLXdpdGhvdXQtZm9vdGVyXG4gICAgLm1kYy1kYXRhLXRhYmxlX19yb3c6bGFzdC1jaGlsZFxuICAgIC5tZGMtZGF0YS10YWJsZV9fY2VsbDpmaXJzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMsICRib3R0b20tbGVmdC1yYWRpdXMpO1xuXG4gICAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoXG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMsXG4gICAgICAgICAgaWYoJHJ0bC1yZWZsZXhpdmUsICRib3R0b20tbGVmdC1yYWRpdXMsICRib3R0b20tcmlnaHQtcmFkaXVzKVxuICAgICAgICApO1xuXG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5tZGMtZGF0YS10YWJsZS0td2l0aG91dC1mb290ZXJcbiAgICAubWRjLWRhdGEtdGFibGVfX3JvdzpsYXN0LWNoaWxkXG4gICAgLm1kYy1kYXRhLXRhYmxlX19jZWxsOmxhc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cywgJGJvdHRvbS1yaWdodC1yYWRpdXMpO1xuXG4gICAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoXG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyxcbiAgICAgICAgICBpZigkcnRsLXJlZmxleGl2ZSwgJGJvdHRvbS1yaWdodC1yYWRpdXMsICRib3R0b20tbGVmdC1yYWRpdXMpXG4gICAgICAgICk7XG5cbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzdHJva2Utc2l6ZSgkc2l6ZSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgYm9yZGVyLXdpZHRoOiAkc2l6ZTtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICB9XG59XG5cbkBtaXhpbiBzdHJva2UtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gaGVhZGVyLXJvdy1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZGF0YS10YWJsZV9faGVhZGVyLXJvdyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHJvdy1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZGF0YS10YWJsZV9fcm93IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGF0YS10YWJsZV9fcGFnaW5hdGlvbiB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG1pbi1oZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgY2VsbCBwYWRkaW5nIGluY2x1ZGluZyBjZWxsLCBoZWFkZXIgY2VsbCwgcm93IGNoZWNrYm94IGNlbGwgYW5kIGhlYWRlclxuLy8vIHJvdyBjaGVja2JveCBjZWxsLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVhZGluZy1wYWRkaW5nIFskY2VsbC1sZWFkaW5nLXBhZGRpbmddIExlYWRpbmcgcGFkZGluZy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRyYWlsaW5nLXBhZGRpbmcgWyRjZWxsLXRyYWlsaW5nLXBhZGRpbmddIFRyYWlsaW5nIHBhZGRpbmcuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjaGVja2JveC10b3VjaC1zaXplIFskY2hlY2tib3gtdG91Y2gtc2l6ZV0gQ2hlY2tib3ggVG91Y2hcbi8vLyAgICAgU2l6ZS4gVXNlIHRoaXMgdG8gYWRqdXN0IHJvdyBjaGVja2JveCBjZWxsIGxlYWRpbmcgcGFkZGluZyBiYXNlZCBvblxuLy8vICAgICBjaGVja2JveCBkZW5zaXR5IHNjYWxlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcm93LWNoZWNrYm94LWRlbnNpdHktc2NhbGUgW251bGxdIERlbnNpdHkgc2NhbGUgb2Ygcm93XG4vLy8gICAgIGNoZWNrYm94LiBVc2UgdGhpcyB0byBhZGp1c3QgYWxpZ25tZW50IG9mIHJvdyBjaGVja2JveCB3aXRoaW4gYSBjZWxsLlxuLy8vICAgICBJZ25vcmUgaWYgZGF0YSB0YWJsZSdzIGRlbnNpdHkgc2NhbGUgaXMgMC5cbi8vLyAgICAgU2VlIGBjaGVja2JveC10aGVtZS5kZW5zaXR5KClgIG1peGluIGZvciBzdXBwb3J0ZWQgZGVuc2l0eSBzY2FsZXMuXG4vLy9cbkBtaXhpbiBjZWxsLXBhZGRpbmcoXG4gICRsZWFkaW5nLXBhZGRpbmc6ICRjZWxsLWxlYWRpbmctcGFkZGluZyxcbiAgJHRyYWlsaW5nLXBhZGRpbmc6ICRjZWxsLXRyYWlsaW5nLXBhZGRpbmcsXG4gICRyb3ctY2hlY2tib3gtZGVuc2l0eS1zY2FsZTogbnVsbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19jZWxsLFxuICAubWRjLWRhdGEtdGFibGVfX2hlYWRlci1jZWxsIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgcGFkZGluZzogMCAkdHJhaWxpbmctcGFkZGluZyAwICRsZWFkaW5nLXBhZGRpbmc7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgY2hlY2tib3gtY2VsbC1wYWRkaW5nKFxuICAgICRsZWFkaW5nLXBhZGRpbmc6ICRsZWFkaW5nLXBhZGRpbmcsXG4gICAgJHJvdy1jaGVja2JveC1kZW5zaXR5LXNjYWxlOiAkcm93LWNoZWNrYm94LWRlbnNpdHktc2NhbGUsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbn1cblxuLy8vXG4vLy8gU2V0cyBvbmx5IHJvdyBjaGVja2JveCBjZWxsIGFuZCBoZWFkZXIgcm93IGNoZWNrYm94IGNlbGwgbGVhZGluZyBwYWRkaW5nLlxuLy8vIFVzZSBgY2VsbC1wYWRkaW5nKClgIHRvIHNldCBhbGwgY2VsbCdzIHBhZGRpbmcuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWFkaW5nLXBhZGRpbmcgWyRjZWxsLWxlYWRpbmctcGFkZGluZ10gTGVhZGluZyBwYWRkaW5nLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY2hlY2tib3gtdG91Y2gtc2l6ZSBbJGNoZWNrYm94LXRvdWNoLXNpemVdIENoZWNrYm94IFRvdWNoXG4vLy8gICAgIFNpemUuIFVzZSB0aGlzIHRvIGFkanVzdCByb3cgY2hlY2tib3ggY2VsbCBsZWFkaW5nIHBhZGRpbmcgYmFzZWQgb25cbi8vLyAgICAgY2hlY2tib3ggZGVuc2l0eSBzY2FsZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHJvdy1jaGVja2JveC1kZW5zaXR5LXNjYWxlIFtudWxsXSBEZW5zaXR5IHNjYWxlIG9mIHJvd1xuLy8vICAgICBjaGVja2JveC4gVXNlIHRoaXMgdG8gYWRqdXN0IGFsaWdubWVudCBvZiByb3cgY2hlY2tib3ggd2l0aGluIGEgY2VsbC5cbi8vLyAgICAgSWdub3JlIGlmIGRhdGEgdGFibGUncyBkZW5zaXR5IHNjYWxlIGlzIDAuXG4vLy8gICAgIFNlZSBgY2hlY2tib3gtdGhlbWUuZGVuc2l0eSgpYCBtaXhpbiBmb3Igc3VwcG9ydGVkIGRlbnNpdHkgc2NhbGVzLlxuLy8vXG5AbWl4aW4gY2hlY2tib3gtY2VsbC1wYWRkaW5nKFxuICAkbGVhZGluZy1wYWRkaW5nOiAkY2VsbC1sZWFkaW5nLXBhZGRpbmcsXG4gICRyb3ctY2hlY2tib3gtZGVuc2l0eS1zY2FsZTogbnVsbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19oZWFkZXItY2VsbC0tY2hlY2tib3gsXG4gIC5tZGMtZGF0YS10YWJsZV9fY2VsbC0tY2hlY2tib3gge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAvLyBEaXN0YW5jZSBmcm9tIGxlYWRpbmcgY2VsbCBib3VuZCB0byBjaGVja2JveCdzIGljb24gYm91bmQgc2hvdWxkIGJlXG4gICAgICAvLyAxNmRwIChgJGxlYWRpbmctcGFkZGluZ2ApLiBDYWxjdWxhdGUgcmVxdWlyZWQgcGFkZGluZyBleGNsdWRpbmdcbiAgICAgIC8vIGNoZWNrYm94IGJvdW5kcy5cbiAgICAgICRjaGVja2JveC1pY29uLXNpemU6IDI0cHg7XG4gICAgICAkY2hlY2tib3gtdG91Y2gtc2l6ZTogdG91Y2gtdGFyZ2V0LiRoZWlnaHQ7XG4gICAgICBAaWYgJHJvdy1jaGVja2JveC1kZW5zaXR5LXNjYWxlIGFuZCAkcm93LWNoZWNrYm94LWRlbnNpdHktc2NhbGUgPCAwIHtcbiAgICAgICAgJGNoZWNrYm94LXRvdWNoLXNpemU6IGNoZWNrYm94LXRoZW1lLmdldC1yaXBwbGUtc2l6ZShcbiAgICAgICAgICAkcm93LWNoZWNrYm94LWRlbnNpdHktc2NhbGVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgICRsZWFkaW5nLXBhZGRpbmc6ICRsZWFkaW5nLXBhZGRpbmcgLVxuICAgICAgICBtYXRoLmRpdigkY2hlY2tib3gtdG91Y2gtc2l6ZSAtICRjaGVja2JveC1pY29uLXNpemUsIDIpO1xuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wcm9wZXJ0eShwYWRkaW5nLCAkbGVhZGluZy1wYWRkaW5nLCAwKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGNvbHVtbi13aWR0aHMoJHdpZHRoLWxpc3QsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxpc3QubGVuZ3RoKCR3aWR0aC1saXN0KSB7XG4gICAgLm1kYy1kYXRhLXRhYmxlX19yb3cgPiA6bnRoLWNoaWxkKCN7JGl9KSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICB3aWR0aDogbGlzdC5udGgoJHdpZHRoLWxpc3QsICRpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBkZW5zaXR5IHNjYWxlIGZvciBkYXRhIHRhYmxlLiBVc2UgY29ycmVzcG9uZGluZyBkZW5zaXR5IG1peGlucyBvZiBjaGlsZCBjb21wb25lbnRzIChzdWNoIGFzIENoZWNrYm94KSB0byBhcHBseVxuLy8vIGRlbnNpdHkgc2NhbGVzIHdoaWNoIHdpbGwgYmUgcmVuZGVyZWQgaW5zaWRlIGRhdGEgdGFibGUuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IFN0cmluZ30gJGRlbnNpdHktc2NhbGUgLSBEZW5zaXR5IHNjYWxlIHZhbHVlIGZvciBjb21wb25lbnQuIFN1cHBvcnRlZCBkZW5zaXR5IHNjYWxlIHZhbHVlcyBgLTRgLFxuLy8vICAgICBgLTNgLCBgLTJgLCBgLTFgLCBgMGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyb3ctY2hlY2tib3gtZGVuc2l0eS1zY2FsZSBbbnVsbF0gRGVuc2l0eSBzY2FsZSBvZiByb3dcbi8vLyAgICAgY2hlY2tib3guIFVzZSB0aGlzIHRvIHNldCBkZW5zaXR5IG9mIHJvdyBjaGVja2JveCBhbmQgYWxzb1xuLy8vICAgICBhdXRvbWF0aWNhbGx5IGFkanVzdCB0aGUgYWxpZ25tZW50IG9mIHJvdyBjaGVja2JveCB3aXRoaW4gYSBjZWxsLlxuLy8vICAgICBTZWUgYGNoZWNrYm94LmRlbnNpdHkoKWAgbWl4aW4gZm9yIHN1cHBvcnRlZCBkZW5zaXR5IHNjYWxlcy5cbi8vL1xuQG1peGluIGRlbnNpdHkoXG4gICRkZW5zaXR5LXNjYWxlLFxuICAkcm93LWNoZWNrYm94LWRlbnNpdHktc2NhbGU6IG51bGwsXG4gICRwYWdpbmF0aW9uLXNlbGVjdC1kZW5zaXR5LXNjYWxlOiBudWxsLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGhlaWdodDogZGVuc2l0eS5wcm9wLXZhbHVlKFxuICAgICRkZW5zaXR5LWNvbmZpZzogJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0LFxuICApO1xuXG4gIEBpbmNsdWRlIHJvdy1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBoZWFkZXItcm93LWhlaWdodChnZXQtaGVhZGVyLXJvdy1oZWlnaHQoJGhlaWdodCksICRxdWVyeTogJHF1ZXJ5KTtcblxuICBAaWYgJHJvdy1jaGVja2JveC1kZW5zaXR5LXNjYWxlIHtcbiAgICBAaW5jbHVkZSBjaGVja2JveC1jZWxsLXBhZGRpbmcoXG4gICAgICAkbGVhZGluZy1wYWRkaW5nOiAkY2VsbC1sZWFkaW5nLXBhZGRpbmcsXG4gICAgICAkcm93LWNoZWNrYm94LWRlbnNpdHktc2NhbGU6ICRyb3ctY2hlY2tib3gtZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIC5tZGMtZGF0YS10YWJsZV9faGVhZGVyLXJvdy1jaGVja2JveCxcbiAgICAubWRjLWRhdGEtdGFibGVfX3Jvdy1jaGVja2JveCB7XG4gICAgICBAaW5jbHVkZSBjaGVja2JveC10aGVtZS5kZW5zaXR5KCRyb3ctY2hlY2tib3gtZGVuc2l0eS1zY2FsZSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICRwYWdpbmF0aW9uLXNlbGVjdC1kZW5zaXR5LXNjYWxlIHtcbiAgICBAaW5jbHVkZSBzZWxlY3QtZGVuc2l0eSgkcGFnaW5hdGlvbi1zZWxlY3QtZGVuc2l0eS1zY2FsZSk7XG4gIH1cbn1cblxuQG1peGluIHNlbGVjdC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlKSB7XG4gIEBpbmNsdWRlIHNlbGVjdC10aGVtZS5vdXRsaW5lZC1oZWlnaHQoXG4gICAgc2VsZWN0LXRoZW1lLiRoZWlnaHQgKyBkZW5zaXR5LiRpbnRlcnZhbCAqICRkZW5zaXR5LXNjYWxlXG4gICk7XG4gIC5tZGMtbGlzdC1pdGVtIHtcbiAgICBAaW5jbHVkZSBsaXN0LXRoZW1lLm9uZS1saW5lLWl0ZW0tZGVuc2l0eShcbiAgICAgICRkZW5zaXR5LXNjYWxlICsgMixcbiAgICAgICRleGNsdWRlLXZhcmlhbnRzOiB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIG1hcmdpbjogMDtcbn1cblxuLy8vXG4vLy8gU2V0cyBtYXhpbXVtIGhlaWdodCBvZiBkYXRhIHRhYmxlLiBVc2UgdGhpcyB0byBtYWtlIHRhYmxlIHZlcnRpY2FsbHlcbi8vLyBzY3JvbGxhYmxlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0XG4vLy9cbkBtaXhpbiBtYXgtaGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLWRhdGEtdGFibGVfX3RhYmxlLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG1heC1oZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVyblxuLy8gTk9URTogV2UgZGlzYWJsZSBgc2VsZWN0b3ItY2xhc3MtcGF0dGVybmAgYWJvdmUgdG8gYWxsb3cgdXNpbmcgYG1kYy1gIGNsYXNzXG4vLyBzZWxlY3RvcnMuXG5cbkB1c2UgJ3Nhc3M6bGlzdCc7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRmZWF0LXR5cG9ncmFwaHk6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCB0eXBvZ3JhcGh5KTtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcblxuICAubWRjLWRhdGEtdGFibGVfX2NlbGwge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShib2R5MiwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG4gICAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19jZWxsLS1udW1lcmljIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGF0YS10YWJsZV9fY2VsbC0tY2hlY2tib3gge1xuICAgIEBpbmNsdWRlIGFkYXB0aXZlLXdpZHRoKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gYWRhcHRpdmUtd2lkdGgoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgLy8gU2V0IHRvIGxvd2VzdCB3aWR0aCB0byBhZGFwdCB0byBjZWxsIGNvbnRlbnQuIENlbGwgd2lkdGggc2hvdWxkIGFkYXB0XG4gICAgLy8gdG8gcm93IGNoZWNrYm94IHNpemUgd2hlbiBpdCBpcyBkZW5zZS5cbiAgICAvLyBOT1RFOiBgbWluLXdpZHRoYCBkb2VzIG5vdCBzZWVtIHRvIHdvcmsgb24gdGFibGUgY2VsbHMuXG4gICAgd2lkdGg6IDFweDtcbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDIwIEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm5cbi8vIE5PVEU6IFdlIGRpc2FibGUgYHNlbGVjdG9yLWNsYXNzLXBhdHRlcm5gIGFib3ZlIHRvIGFsbG93IHVzaW5nIGBtZGMtYCBjbGFzc1xuLy8gc2VsZWN0b3JzLlxuXG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnQG1hdGVyaWFsL2FuaW1hdGlvbi9mdW5jdGlvbnMnO1xuQHVzZSAnQG1hdGVyaWFsL2RlbnNpdHkvZnVuY3Rpb25zJyBhcyBkZW5zaXR5LWZ1bmN0aW9ucztcbkB1c2UgJ0BtYXRlcmlhbC9kb20vbWl4aW5zJyBhcyBkb207XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcbkB1c2UgJ0BtYXRlcmlhbC90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi9kYXRhLXRhYmxlLXRoZW1lJztcbkB1c2UgJy4vZGF0YS10YWJsZS1jZWxsJztcblxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcblxuICAubWRjLWRhdGEtdGFibGVfX2hlYWRlci1jZWxsIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoc3VidGl0bGUyLCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19oZWFkZXItY2VsbC0tY2hlY2tib3gge1xuICAgIEBpbmNsdWRlIGRhdGEtdGFibGUtY2VsbC5hZGFwdGl2ZS13aWR0aCgkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICAubWRjLWRhdGEtdGFibGVfX2hlYWRlci1jZWxsLS1udW1lcmljIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGF0YS10YWJsZV9fc29ydC1pY29uLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgaWNvbi1idXR0b24tdGhlbWUuZGVuc2l0eShcbiAgICAgICRkZW5zaXR5LXNjYWxlOiBkYXRhLXRhYmxlLXRoZW1lLiRzb3J0LWljb24tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAvLyBBcHBseSBkdW1teSBgdHJhbnNmb3JtYCB0byBhdm9pZCBwaXhlbCBzaGlmdCBvbiBzb3J0IGRvd24gYW5pbWF0aW9uLlxuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMC4wMDAxZGVnKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1ib3gobWFyZ2luLCBsZWZ0LCA0cHgpO1xuICAgIH1cblxuICAgIC5tZGMtZGF0YS10YWJsZV9faGVhZGVyLWNlbGwtLW51bWVyaWMgJiB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChtYXJnaW4sIHJpZ2h0LCA0cHgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiBmdW5jdGlvbnMuc3RhbmRhcmQodHJhbnNmb3JtLCAkZHVyYXRpb246IDE1MG1zKTtcbiAgICB9XG5cbiAgICAubWRjLWRhdGEtdGFibGVfX2hlYWRlci1jZWxsLS1zb3J0ZWQtZGVzY2VuZGluZyAmIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cblxuICAgICY6Zm9jdXMsXG4gICAgLm1kYy1kYXRhLXRhYmxlX19oZWFkZXItY2VsbDpob3ZlciAmLFxuICAgIC5tZGMtZGF0YS10YWJsZV9faGVhZGVyLWNlbGwtLXNvcnRlZCAmIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19oZWFkZXItY2VsbC13cmFwcGVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxuICAubWRjLWRhdGEtdGFibGVfX2hlYWRlci1jZWxsLS13aXRoLXNvcnQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19zb3J0LXN0YXR1cy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgZG9tLnZpc3VhbGx5LWhpZGRlbigkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vIFNldHMgaGVhZGVyIGNlbGwgaW4gc3RpY2t5IHBvc2l0aW9uIG9uIHRhYmxlIGNvbnRlbnQgdmVydGljYWwgc2Nyb2xsLlxuQG1peGluIGhlYWRlci1jZWxsLXN0aWNreSgkcXVlcnk6ICRxdWVyeSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZGF0YS10YWJsZV9faGVhZGVyLWNlbGwge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgdG9wOiAwO1xuICAgICAgei1pbmRleDogMTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAyMSBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5AdXNlICdAbWF0ZXJpYWwvZGVuc2l0eS9mdW5jdGlvbnMnIGFzIGRlbnNpdHktZnVuY3Rpb25zO1xuQHVzZSAnQG1hdGVyaWFsL2RlbnNpdHkvdmFyaWFibGVzJyBhcyBkZW5zaXR5LXZhcmlhYmxlcztcbkB1c2UgJ0BtYXRlcmlhbC9lbGV2YXRpb24vZWxldmF0aW9uLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvZm9jdXMtcmluZy9mb2N1cy1yaW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcbkB1c2UgJ0BtYXRlcmlhbC9kb20vZG9tJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9rZXlzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9zdGF0ZSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcbkB1c2UgJ0BtYXRlcmlhbC90b3VjaC10YXJnZXQvbWl4aW5zJyBhcyB0b3VjaC10YXJnZXQtbWl4aW5zO1xuXG4kcmlwcGxlLXRhcmdldDogJy5tZGMtaWNvbi1idXR0b25fX3JpcHBsZSc7XG5cbiRpY29uLXNpemU6IDI0cHggIWRlZmF1bHQ7XG4kc2l6ZTogNDhweCAhZGVmYXVsdDtcbiRtaW5pbXVtLWhlaWdodDogMjhweCAhZGVmYXVsdDtcbiRtYXhpbXVtLWhlaWdodDogJHNpemUgIWRlZmF1bHQ7XG4kY29udGFpbmVyLXNoYXBlOiA1MCU7XG4kZGVuc2l0eS1zY2FsZTogZGVuc2l0eS12YXJpYWJsZXMuJGRlZmF1bHQtc2NhbGUgIWRlZmF1bHQ7XG4kZGVuc2l0eS1jb25maWc6IChcbiAgc2l6ZTogKFxuICAgIGRlZmF1bHQ6ICRzaXplLFxuICAgIG1heGltdW06ICRtYXhpbXVtLWhlaWdodCxcbiAgICBtaW5pbXVtOiAkbWluaW11bS1oZWlnaHQsXG4gICksXG4pICFkZWZhdWx0O1xuXG4kX2N1c3RvbS1wcm9wZXJ0eS1wcmVmaXg6ICdpY29uLWJ1dHRvbic7XG5cbiRsaWdodC10aGVtZTogKFxuICBkaXNhYmxlZC1pY29uLWNvbG9yOiB0aGVtZS1jb2xvci4kb24tc3VyZmFjZSxcbiAgZGlzYWJsZWQtaWNvbi1vcGFjaXR5OiAwLjM4LFxuICBpY29uLWNvbG9yOiB0aGVtZS1jb2xvci4kcHJpbWFyeSxcbiAgaWNvbi1zaXplOiAkaWNvbi1zaXplLFxuICBmb2N1cy1pY29uLWNvbG9yOiB0aGVtZS1jb2xvci4kcHJpbWFyeSxcbiAgZm9jdXMtc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRwcmltYXJ5LFxuICBmb2N1cy1zdGF0ZS1sYXllci1vcGFjaXR5OiAwLjEyLFxuICBob3Zlci1pY29uLWNvbG9yOiB0aGVtZS1jb2xvci4kcHJpbWFyeSxcbiAgaG92ZXItc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRwcmltYXJ5LFxuICBob3Zlci1zdGF0ZS1sYXllci1vcGFjaXR5OiAwLjA4LFxuICBwcmVzc2VkLWljb24tY29sb3I6IHRoZW1lLWNvbG9yLiRwcmltYXJ5LFxuICBwcmVzc2VkLXN0YXRlLWxheWVyLWNvbG9yOiB0aGVtZS1jb2xvci4kcHJpbWFyeSxcbiAgcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5OiAwLjEyLFxuICBzdGF0ZS1sYXllci1zaXplOiAkc2l6ZSxcbik7XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUpIHtcbiAgQGluY2x1ZGUgdGhlbWUudmFsaWRhdGUtdGhlbWUoJGxpZ2h0LXRoZW1lLCAkdGhlbWUpO1xuXG4gIEBpbmNsdWRlIGtleXMuZGVjbGFyZS1jdXN0b20tcHJvcGVydGllcyhcbiAgICAkdGhlbWUsXG4gICAgJHByZWZpeDogJF9jdXN0b20tcHJvcGVydHktcHJlZml4XG4gICk7XG59XG5cbkBtaXhpbiB0aGVtZS1zdHlsZXMoJHRoZW1lKSB7XG4gIEBpbmNsdWRlIHRoZW1lLnZhbGlkYXRlLXRoZW1lKCRsaWdodC10aGVtZSwgJHRoZW1lKTtcblxuICAkdGhlbWU6IGtleXMuY3JlYXRlLXRoZW1lLXByb3BlcnRpZXMoXG4gICAgJHRoZW1lLFxuICAgICRwcmVmaXg6ICRfY3VzdG9tLXByb3BlcnR5LXByZWZpeFxuICApO1xuXG4gIEBpbmNsdWRlIF9zdGF0ZS1sYXllci1zaXplKCRzaXplOiBtYXAuZ2V0KCR0aGVtZSwgc3RhdGUtbGF5ZXItc2l6ZSkpO1xuICBAaW5jbHVkZSBfaWNvbi1zaXplKG1hcC5nZXQoJHRoZW1lLCBpY29uLXNpemUpKTtcbiAgQGluY2x1ZGUgX2Rpc2FibGVkLWljb24tb3BhY2l0eShtYXAuZ2V0KCR0aGVtZSwgZGlzYWJsZWQtaWNvbi1vcGFjaXR5KSk7XG4gIEBpbmNsdWRlIF9pY29uLWNvbG9yLXdpdGgtbWFwKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCBpY29uLWNvbG9yKSxcbiAgICAgIGRpc2FibGVkOiBtYXAuZ2V0KCR0aGVtZSwgZGlzYWJsZWQtaWNvbi1jb2xvciksXG4gICAgICBmb2N1czogbWFwLmdldCgkdGhlbWUsIGZvY3VzLWljb24tY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCBob3Zlci1pY29uLWNvbG9yKSxcbiAgICAgIHByZXNzZWQ6IG1hcC5nZXQoJHRoZW1lLCBwcmVzc2VkLWljb24tY29sb3IpLFxuICAgIClcbiAgKTtcblxuICAvLyBTdGF0ZXMgc3R5bGVzXG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS50aGVtZS1zdHlsZXMoXG4gICAgKFxuICAgICAgZm9jdXMtc3RhdGUtbGF5ZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLCBmb2N1cy1zdGF0ZS1sYXllci1jb2xvciksXG4gICAgICBmb2N1cy1zdGF0ZS1sYXllci1vcGFjaXR5OiBtYXAuZ2V0KCR0aGVtZSwgZm9jdXMtc3RhdGUtbGF5ZXItb3BhY2l0eSksXG4gICAgICBob3Zlci1zdGF0ZS1sYXllci1jb2xvcjogbWFwLmdldCgkdGhlbWUsIGhvdmVyLXN0YXRlLWxheWVyLWNvbG9yKSxcbiAgICAgIGhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHk6IG1hcC5nZXQoJHRoZW1lLCBob3Zlci1zdGF0ZS1sYXllci1vcGFjaXR5KSxcbiAgICAgIHByZXNzZWQtc3RhdGUtbGF5ZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLCBwcmVzc2VkLXN0YXRlLWxheWVyLWNvbG9yKSxcbiAgICAgIHByZXNzZWQtc3RhdGUtbGF5ZXItb3BhY2l0eTogbWFwLmdldCgkdGhlbWUsIHByZXNzZWQtc3RhdGUtbGF5ZXItb3BhY2l0eSksXG4gICAgKSxcbiAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgKTtcbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgZGVuc2l0eSBzY2FsZSBmb3IgaWNvbiBidXR0b24uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IFN0cmluZ30gJGRlbnNpdHktc2NhbGUgLSBEZW5zaXR5IHNjYWxlIHZhbHVlIGZvciBjb21wb25lbnQuXG4vLy8gICAgIFN1cHBvcnRlZCBkZW5zaXR5IHNjYWxlIHZhbHVlcyByYW5nZSBmcm9tIGAtNWAgdG8gYDBgLCB3aXRoIGAwYCBiZWluZyB0aGUgZGVmYXVsdC5cbi8vL1xuQG1peGluIGRlbnNpdHkoJGRlbnNpdHktc2NhbGUsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJHNpemU6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiAkZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBzaXplLFxuICApO1xuXG4gIEBpbmNsdWRlIHNpemUoJHNpemUsICRxdWVyeTogJHF1ZXJ5KTtcbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgc2l6ZSBvZiB0aGUgaWNvbi1idXR0b24uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNpemUgLSBTaXplIHZhbHVlIGZvciBpY29uLWJ1dHRvbi5cbi8vLyAgICAgU2l6ZSB3aWxsIHNldCB0aGUgd2lkdGgsIGhlaWdodCwgYW5kIHBhZGRpbmcgZm9yIHRoZSBvdmVyYWxsIGNvbXBvbmVudC5cbi8vL1xuQG1peGluIHNpemUoJHNpemUsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHBhZGRpbmc6IG1hdGguZGl2KCRzaXplIC0gJGljb24tc2l6ZSwgMik7XG4gIH1cblxuICAubWRjLWljb24tYnV0dG9uX19mb2N1cy1yaW5nIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuZm9jdXMge1xuICAgIC5tZGMtaWNvbi1idXR0b25fX2ZvY3VzLXJpbmcge1xuICAgICAgQGluY2x1ZGUgZG9tLmZvcmNlZC1jb2xvcnMtbW9kZSgkZXhjbHVkZS1pZTExOiB0cnVlKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvY3VzLXJpbmcuZm9jdXMtcmluZyhcbiAgICAgICAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAgICAgICAkY29udGFpbmVyLW91dGVyLXBhZGRpbmctdmVydGljYWw6IDAsXG4gICAgICAgICAgJGNvbnRhaW5lci1vdXRlci1wYWRkaW5nLWhvcml6b250YWw6IDBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1heC1oZWlnaHQ6ICRzaXplO1xuICAgICAgICBtYXgtd2lkdGg6ICRzaXplO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYubWRjLWljb24tYnV0dG9uLS1yZWR1Y2VkLXNpemUge1xuICAgICRjb21wb25lbnQtc2l6ZTogJHNpemU7XG4gICAgLy8gSWNvbiBidXR0b24gcmlwcGxlIHNpemUgaXMgY2FwcGVkIGF0IDQwcHggZm9yIGljb24gYnV0dG9ucyB3aXRoXG4gICAgLy8gZGVuc2l0aWVzIC0xIGFuZCAwIChpY29uIGJ1dHRvbnMgd2l0aCBzaXplcyA0NHg0NCBhbmQgNDh4NDhweCkuXG4gICAgLy8gU2VlIGh0dHA6Ly9iLzE5MjM1Mzk2OCBmb3IgbW9yZSBpbmZvLlxuICAgIEBpZiAkc2l6ZSA+PSA0MHB4IGFuZCAkc2l6ZSA8PSA0OHB4IHtcbiAgICAgICRjb21wb25lbnQtc2l6ZTogNDBweDtcbiAgICB9XG5cbiAgICAubWRjLWljb24tYnV0dG9uX19yaXBwbGUge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgd2lkdGg6ICRjb21wb25lbnQtc2l6ZTtcbiAgICAgICAgaGVpZ2h0OiAkY29tcG9uZW50LXNpemU7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIHRvdWNoLXRhcmdldC1taXhpbnMubWFyZ2luKFxuICAgICAgICAkY29tcG9uZW50LWhlaWdodDogJGNvbXBvbmVudC1zaXplLFxuICAgICAgICAkY29tcG9uZW50LXdpZHRoOiAkY29tcG9uZW50LXNpemUsXG4gICAgICAgICR0b3VjaC10YXJnZXQtaGVpZ2h0OiAkc2l6ZSxcbiAgICAgICAgJHRvdWNoLXRhcmdldC13aWR0aDogJHNpemUsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5mb2N1cyB7XG4gICAgICAubWRjLWljb24tYnV0dG9uX19mb2N1cy1yaW5nIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiAkY29tcG9uZW50LXNpemU7XG4gICAgICAgICAgbWF4LXdpZHRoOiAkY29tcG9uZW50LXNpemU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWljb24tYnV0dG9uX190b3VjaCB7XG4gICAgQGluY2x1ZGUgdG91Y2gtdGFyZ2V0LW1peGlucy50b3VjaC10YXJnZXQoXG4gICAgICAkc2V0LXdpZHRoOiB0cnVlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnksXG4gICAgICAkaGVpZ2h0OiAkc2l6ZSxcbiAgICAgICR3aWR0aDogJHNpemVcbiAgICApO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIHdpZHRoLCBoZWlnaHQgYW5kIHBhZGRpbmcgb2YgaWNvbiBidXR0b24uIEFsc28gY2hhbmdlcyB0aGUgc2l6ZSBvZlxuLy8vIHRoZSBpY29uIGl0c2VsZiBiYXNlZCBvbiBidXR0b24gc2l6ZS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCB2YWx1ZSBmb3IgaWNvbi1idXR0b24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHQgLSBIZWlnaHQgdmFsdWUgZm9yIGljb24tYnV0dG9uLiAoZGVmYXVsdDogJHdpZHRoKVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGluZyAtIFBhZGRpbmcgdmFsdWUgZm9yIGljb24tYnV0dG9uLiAoZGVmYXVsdDogbWF4KCR3aWR0aCwgJGhlaWdodCkgLyAyKVxuLy8vIEBkZXByZWNhdGVkXG4vLy8gICAgIFRoaXMgbWl4aW4gcHJvdmlkZXMgdG9vIG11Y2ggb2YgbG93IGxldmVsIGN1c3RvbWl6YXRpb24uXG4vLy8gICAgIFBsZWFzZSB1c2UgbWRjLWljb24tYnV0dG9uLXNpemUgaW5zdGVhZC5cbi8vL1xuQG1peGluIGljb24tc2l6ZShcbiAgJHdpZHRoLFxuICAkaGVpZ2h0OiAkd2lkdGgsXG4gICRwYWRkaW5nOiBtYXRoLmRpdihtYXRoLm1heCgkd2lkdGgsICRoZWlnaHQpLCAyKSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgJGNvbXBvbmVudC13aWR0aDogJHdpZHRoICsgJHBhZGRpbmcgKiAyO1xuICAkY29tcG9uZW50LWhlaWdodDogJGhlaWdodCArICRwYWRkaW5nICogMjtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHdpZHRoOiAkY29tcG9uZW50LXdpZHRoO1xuICAgIGhlaWdodDogJGNvbXBvbmVudC1oZWlnaHQ7XG4gICAgcGFkZGluZzogJHBhZGRpbmc7XG4gICAgZm9udC1zaXplOiBtYXRoLm1heCgkd2lkdGgsICRoZWlnaHQpO1xuICB9XG5cbiAgc3ZnLFxuICBpbWcge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICB3aWR0aDogJHdpZHRoO1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBmb250IGNvbG9yIGFuZCB0aGUgcmlwcGxlIGNvbG9yIHRvIHRoZSBwcm92aWRlZCBjb2xvciB2YWx1ZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBmb250IGFuZCByaXBwbGUgY29sb3IuXG4vLy9cbkBtaXhpbiBpbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIGluay1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMoXG4gICAgJGNvbG9yLFxuICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldFxuICApO1xufVxuXG4vLy9cbi8vLyBGbGlwcyBpY29uIG9ubHkgaW4gUlRMIGNvbnRleHQuXG4vLy9cbkBtaXhpbiBmbGlwLWljb24taW4tcnRsKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLWJ1dHRvbl9faWNvbiB7XG4gICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBmb250IGNvbG9yIHRvIHRoZSBwcm92aWRlZCBjb2xvciB2YWx1ZSBmb3IgYSBkaXNhYmxlZCBpY29uIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBmb250IGNvbG9yLlxuLy8vXG5AbWl4aW4gZGlzYWJsZWQtaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1kaXNhYmxlZF8ge1xuICAgIEBpbmNsdWRlIGluay1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gSW5jbHVkZXMgYWQtaG9jIGhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0LlxuLy8vXG5AbWl4aW4gaGlnaC1jb250cmFzdC1tb2RlLXNoaW0oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgLy8gVE9ETyhiLzE3NTgwNjg3NCk6IFVzZSB0aGUgRE9NIGJvcmRlciBtaXhpbiBhZnRlciB0aGUgcmlwcGxlIGlzIG1vdmVkXG4gICAgLy8gYXdheSBmcm9tIDpiZWZvcmUgdG8gYSBkZWRpY2F0ZWQgZWxlbWVudC5cbiAgICBvdXRsaW5lOiBzb2xpZCAzcHggdHJhbnNwYXJlbnQ7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IGRvdWJsZSA1cHggdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGZvbnQgY29sb3IgdG8gdGhlIHByb3ZpZGVkIGNvbG9yIHZhbHVlLiBUaGlzIGNhbiBiZSB3cmFwcGVkIGluXG4vLy8gYSBzdGF0ZSBxdWFsaWZpZXIgc3VjaCBhcyBgbWRjLWljb24tYnV0dG9uLWlmLWRpc2FibGVkX2AuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBpbmstY29sb3JfKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIF9zdGF0ZS1sYXllci1zaXplKCRzaXplKSB7XG4gIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGhlaWdodCwgJHNpemUpO1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSh3aWR0aCwgJHNpemUpO1xufVxuXG5AbWl4aW4gX2ljb24tc2l6ZSgkc2l6ZSkge1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShmb250LXNpemUsICRzaXplKTtcblxuICBzdmcsXG4gIGltZyB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkod2lkdGgsICRzaXplKTtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShoZWlnaHQsICRzaXplKTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBpY29uIG9wYWNpdHkgdG8gdGhlIGdpdmVuIG9wYWNpdHkuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBfZGlzYWJsZWQtaWNvbi1vcGFjaXR5KCRvcGFjaXR5KSB7XG4gICY6ZGlzYWJsZWQge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KG9wYWNpdHksICRvcGFjaXR5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBpY29uIGNvbG9yIHRvIHRoZSBnaXZlbiBjb2xvci5cbi8vLyBAcGFyYW0ge21hcH0gJGNvbG9yLW1hcCAtIFRoZSBkZXNpcmVkIGljb24gY29sb3IsIHNwZWNpZmllZCBhcyBhIG1hcCBvZlxuLy8vICAgICBjb2xvcnMgd2l0aCBzdGF0ZXMge2RlZmF1bHQsIGRpc2FibGVkLCBmb2N1cywgaG92ZXIsIHByZXNzZWR9IGFzIGtleXMuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBfaWNvbi1jb2xvci13aXRoLW1hcCgkY29sb3ItbWFwKSB7XG4gIEBpbmNsdWRlIGluay1jb2xvcl8oc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJGNvbG9yLW1hcCkpO1xuXG4gICRkaXNhYmxlZDogc3RhdGUuZ2V0LWRpc2FibGVkLXN0YXRlKCRjb2xvci1tYXApO1xuICBAaWYgJGRpc2FibGVkIHtcbiAgICAmOmRpc2FibGVkIHtcbiAgICAgIEBpbmNsdWRlIGluay1jb2xvcl8oJGRpc2FibGVkKTtcbiAgICB9XG4gIH1cblxuICAkZm9jdXM6IHN0YXRlLmdldC1mb2N1cy1zdGF0ZSgkY29sb3ItbWFwKTtcbiAgQGlmICRmb2N1cyB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLmZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIGluay1jb2xvcl8oJGZvY3VzKTtcbiAgICB9XG4gIH1cblxuICAkaG92ZXI6IHN0YXRlLmdldC1ob3Zlci1zdGF0ZSgkY29sb3ItbWFwKTtcbiAgQGlmICRob3ZlciB7XG4gICAgJjpob3ZlciB7XG4gICAgICBAaW5jbHVkZSBpbmstY29sb3JfKCRob3Zlcik7XG4gICAgfVxuICB9XG5cbiAgJHByZXNzZWQ6IHN0YXRlLmdldC1wcmVzc2VkLXN0YXRlKCRjb2xvci1tYXApO1xuICBAaWYgJHByZXNzZWQge1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5hY3RpdmUge1xuICAgICAgQGluY2x1ZGUgaW5rLWNvbG9yXygkcHJlc3NlZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfc3RhdGVzLWNvbG9ycygkY29sb3ItbWFwKSB7XG4gIC8vIFRPRE8oYi8xOTEyOTg3OTYpOiBzdXBwb3J0IGZvY3VzZWQgJiBwcmVzc2VkIGtleSBjb2xvcnMuXG5cbiAgJGhvdmVyOiBtYXAuZ2V0KCRjb2xvci1tYXAsIGhvdmVyKTtcbiAgQGlmICRob3ZlciB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1iYXNlLWNvbG9yKFxuICAgICAgJGNvbG9yOiAkaG92ZXIsXG4gICAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgICApO1xuICB9XG59XG5cbi8vL1xuLy8vIEhlbHBzIHN0eWxlIHRoZSBpY29uIGJ1dHRvbiBpbiBpdHMgZGlzYWJsZWQgc3RhdGUuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBpZi1kaXNhYmxlZF8ge1xuICAmOmRpc2FibGVkIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDIwIEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm5cbi8vIE5PVEU6IFdlIGRpc2FibGUgYHNlbGVjdG9yLWNsYXNzLXBhdHRlcm5gIGFib3ZlIHRvIGFsbG93IHVzaW5nIGBtZGMtYCBjbGFzc1xuLy8gc2VsZWN0b3JzLlxuXG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19wcm9ncmVzcy1pbmRpY2F0b3Ige1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLm1kYy1kYXRhLXRhYmxlLS1pbi1wcm9ncmVzcyAmIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGF0YS10YWJsZV9fc2NyaW0ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSgnYmFja2dyb3VuZC1jb2xvcicsIHN1cmZhY2UpO1xuXG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAvLyBUT0RPKGIvMTUxNDUzMjg3KTogU2V0IGFwcHJvcHJpYXRlIG9wYWNpdHkgdmFsdWUgb25jZSB3ZSd2ZSBhIFVYXG4gICAgICAvLyBndWlkYW5jZS5cbiAgICAgIG9wYWNpdHk6IDAuMzI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvbWl4aW5zJyBhcyBydGw7XG5AdXNlICdAbWF0ZXJpYWwvaWNvbi1idXR0b24vaWNvbi1idXR0b24tdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3NlbGVjdC9zZWxlY3QtdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL2xpc3QvZXZvbHV0aW9uLW1peGlucycgYXMgbGlzdC10aGVtZTtcbkB1c2UgJ0BtYXRlcmlhbC9tZW51L21peGlucycgYXMgbWVudS10aGVtZTtcbkB1c2UgJy4vZGF0YS10YWJsZS10aGVtZSc7XG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm5cbi8vIE5PVEU6IFdlIGRpc2FibGUgYHNlbGVjdG9yLWNsYXNzLXBhdHRlcm5gIGFib3ZlIHRvIGFsbG93IHVzaW5nIGBtZGMtYCBjbGFzc1xuLy8gc2VsZWN0b3JzLlxuXG4vLy8gU2V0cyBjb3JlIHN0eWxlcyBmb3IgZGF0YSB0YWJsZSBwYWdpbmF0aW9uLlxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLWRhdGEtdGFibGVfX3BhZ2luYXRpb24ge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShib2R5MiwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG4gIH1cblxuICAubWRjLWRhdGEtdGFibGVfX3BhZ2luYXRpb24tdHJhaWxpbmcge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChtYXJnaW4sIGxlZnQsIDRweCk7XG5cbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG4gIH1cblxuICAubWRjLWRhdGEtdGFibGVfX3BhZ2luYXRpb24tbmF2aWdhdGlvbiB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGF0YS10YWJsZV9fcGFnaW5hdGlvbi1idXR0b24ge1xuICAgIEBpbmNsdWRlIGljb24tYnV0dG9uLXRoZW1lLmZsaXAtaWNvbi1pbi1ydGwoJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChtYXJnaW4sIHJpZ2h0LCA0cHgpO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGF0YS10YWJsZV9fcGFnaW5hdGlvbi10b3RhbCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkoXG4gICAgICAgIG1hcmdpbixcbiAgICAgICAgJGxlZnQtdmFsdWU6IDE0cHgsXG4gICAgICAgICRyaWdodC12YWx1ZTogMzZweFxuICAgICAgKTtcblxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG4gIH1cblxuICAubWRjLWRhdGEtdGFibGVfX3BhZ2luYXRpb24tcm93cy1wZXItcGFnZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtYm94KG1hcmdpbiwgcmlnaHQsIDIycHgpO1xuXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kYXRhLXRhYmxlX19wYWdpbmF0aW9uLXJvd3MtcGVyLXBhZ2UtbGFiZWwge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChtYXJnaW4sIHJpZ2h0LCAxMnB4KTtcblxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG4gIH1cblxuICAubWRjLWRhdGEtdGFibGVfX3BhZ2luYXRpb24tcm93cy1wZXItcGFnZS1zZWxlY3Qge1xuICAgIEBpbmNsdWRlIHNlbGVjdC10aGVtZS52YXJpYWJsZS13aWR0aCgkbWluLXdpZHRoOiA4MHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgbWVudS10aGVtZS5taW4td2lkdGgoODBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG1hcmdpbjogOHB4IDA7XG4gICAgfVxuXG4gICAgLy8gVE9ETyhiLzE1ODE5NjE0NCk6IFNldCBpdCB0byBgLTVgIGRlbnNpdHkgc2NhbGUgdXNpbmcgZGVuc2l0eSBtaXhpbiB3aGVuXG4gICAgLy8gc2VsZWN0IGNvbXBvbmVudCBzdXBwb3J0cyBpdC5cbiAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUub3V0bGluZWQtaGVpZ2h0KFxuICAgICAgZGF0YS10YWJsZS10aGVtZS4kcGFnaW5hdGlvbi1yb3dzLXBlci1wYWdlLXNlbGVjdC1oZWlnaHQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgLm1kYy1saXN0LWl0ZW0ge1xuICAgICAgQGluY2x1ZGUgbGlzdC10aGVtZS5vbmUtbGluZS1pdGVtLWhlaWdodChcbiAgICAgICAgZGF0YS10YWJsZS10aGVtZS4kcGFnaW5hdGlvbi1yb3dzLXBlci1wYWdlLXNlbGVjdC1oZWlnaHQsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDIwIEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gTk9URTogdGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGFmb3JlbWVudGlvbmVkIGNsYXNzZXMuXG5cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ3Nhc3M6bGlzdCc7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnQG1hdGVyaWFsL3Rva2Vucy9yZXNvbHZlcnMnO1xuQHVzZSAnQG1hdGVyaWFsL2RlbnNpdHkvZnVuY3Rpb25zJyBhcyBkZW5zaXR5LWZ1bmN0aW9ucztcbkB1c2UgJ0BtYXRlcmlhbC9kZW5zaXR5L3ZhcmlhYmxlcycgYXMgZGVuc2l0eS12YXJpYWJsZXM7XG5AdXNlICdAbWF0ZXJpYWwvZWxldmF0aW9uL2VsZXZhdGlvbi10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL2Zsb2F0aW5nLWxhYmVsL21peGlucycgYXMgZmxvYXRpbmctbGFiZWwtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL2Zsb2F0aW5nLWxhYmVsL3ZhcmlhYmxlcycgYXMgZmxvYXRpbmctbGFiZWwtdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL2xpbmUtcmlwcGxlL21peGlucycgYXMgbGluZS1yaXBwbGUtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL2xpc3QvbWl4aW5zJyBhcyBsaXN0LW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9saXN0L2V2b2x1dGlvbi1taXhpbnMnIGFzIGxpc3QtZXZvbHV0aW9uLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9tZW51LXN1cmZhY2UvbWl4aW5zJyBhcyBtZW51LXN1cmZhY2UtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL25vdGNoZWQtb3V0bGluZS9taXhpbnMnIGFzIG5vdGNoZWQtb3V0bGluZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvbm90Y2hlZC1vdXRsaW5lL3ZhcmlhYmxlcycgYXMgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9mdW5jdGlvbnMnIGFzIHNoYXBlLWZ1bmN0aW9ucztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9taXhpbnMnIGFzIHNoYXBlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jdXN0b20tcHJvcGVydGllcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvZ3NzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9taXhpbnMnIGFzIHRoZW1lLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9zdGF0ZSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3ZhcmlhYmxlcycgYXMgdGhlbWUtdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvbWl4aW5zJyBhcyB0eXBvZ3JhcGh5LW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi9zZWxlY3QtaWNvbi10aGVtZSc7XG5AdXNlICcuL3NlbGVjdC1oZWxwZXItdGV4dC10aGVtZSc7XG5cbiRyaXBwbGUtdGFyZ2V0OiAnLm1kYy1zZWxlY3RfX3JpcHBsZSc7XG5cbkBmdW5jdGlvbiBnZXQtb3V0bGluZWQtbGFiZWwtcG9zaXRpb24teSgkc2VsZWN0LWFuY2hvci1oZWlnaHQpIHtcbiAgQHJldHVybiBtYXRoLmRpdigkc2VsZWN0LWFuY2hvci1oZWlnaHQsIDIpICtcbiAgICBtYXRoLmRpdihub3RjaGVkLW91dGxpbmUtdmFyaWFibGVzLiRsYWJlbC1ib3gtaGVpZ2h0LCAyKTtcbn1cblxuJGFycm93LXBhZGRpbmc6IDUycHggIWRlZmF1bHQ7XG4kbGFiZWwtcGFkZGluZzogMTZweCAhZGVmYXVsdDtcbiRoZWlnaHQ6IDU2cHggIWRlZmF1bHQ7XG4kbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbDogNTJweCAhZGVmYXVsdDtcbiRmaWxsZWQtYmFzZWxpbmUtdG9wOiA0MHB4ICFkZWZhdWx0O1xuJHNlbGVjdGVkLXRleHQtaGVpZ2h0OiAyOHB4ICFkZWZhdWx0O1xuJGFuY2hvci1wYWRkaW5nLWxlZnQ6IDE2cHggIWRlZmF1bHQ7XG4kYW5jaG9yLXBhZGRpbmctbGVmdC13aXRoLWxlYWRpbmctaWNvbjogMCAhZGVmYXVsdDtcbiRhbmNob3ItcGFkZGluZy1yaWdodDogMCAhZGVmYXVsdDtcbiRvdXRsaW5lZC1zdHJva2Utd2lkdGg6IDJweCAhZGVmYXVsdDtcbiRkZWZhdWx0LXdpZHRoOiAyMDBweCAhZGVmYXVsdDtcbiRzaGFwZS1yYWRpdXM6IHNtYWxsICFkZWZhdWx0O1xuXG4kbWluaW11bS1oZWlnaHQ6IDQwcHggIWRlZmF1bHQ7XG4kbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbDogNTJweCAhZGVmYXVsdDtcbiRtYXhpbXVtLWhlaWdodDogJGhlaWdodCAhZGVmYXVsdDtcbiRkZW5zaXR5LXNjYWxlOiBkZW5zaXR5LXZhcmlhYmxlcy4kZGVmYXVsdC1zY2FsZSAhZGVmYXVsdDtcbiRkZW5zaXR5LWNvbmZpZzogKFxuICBoZWlnaHQ6IChcbiAgICBkZWZhdWx0OiAkaGVpZ2h0LFxuICAgIG1heGltdW06ICRtYXhpbXVtLWhlaWdodCxcbiAgICBtaW5pbXVtOiAkbWluaW11bS1oZWlnaHQsXG4gICksXG4pICFkZWZhdWx0O1xuXG4kaW5rLWNvbG9yOiByZ2JhKHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjg3KSAhZGVmYXVsdDtcbiRkcm9wZG93bi1pY29uLWNvbG9yOiByZ2JhKFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgMC41NFxuKSAhZGVmYXVsdDtcbiRsYWJlbC1jb2xvcjogcmdiYSh0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSwgMC42KSAhZGVmYXVsdDtcbiRmb2N1c2VkLWxhYmVsLWNvbG9yOiByZ2JhKHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKHByaW1hcnkpLCAwLjg3KSAhZGVmYXVsdDtcbiRib3R0b20tbGluZS1pZGxlLWNvbG9yOiByZ2JhKFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgMC40MlxuKSAhZGVmYXVsdDtcbiRib3R0b20tbGluZS1ob3Zlci1jb2xvcjogcmdiYShcbiAgdGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIDAuODdcbikgIWRlZmF1bHQ7XG5cbiRmaWxsLWNvbG9yOiBjb2xvci5taXgoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShzdXJmYWNlKSxcbiAgNCVcbikgIWRlZmF1bHQ7XG5cbi8vIERpc2FibGVkIFN0eWxlc1xuJGRpc2FibGVkLWxhYmVsLWNvbG9yOiByZ2JhKFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgMC4zOFxuKSAhZGVmYXVsdDtcbiRkaXNhYmxlZC1pbmstY29sb3I6IHJnYmEoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjM4XG4pICFkZWZhdWx0O1xuJGRpc2FibGVkLWZpbGwtY29sb3I6IGNvbG9yLm1peChcbiAgdGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKHN1cmZhY2UpLFxuICAyJVxuKSAhZGVmYXVsdDtcbiRkaXNhYmxlZC1maWxsLWJvcmRlcjogcmdiYShcbiAgdGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIDAuMDZcbikgIWRlZmF1bHQ7XG4kZGlzYWJsZWQtYm90dG9tLWxpbmUtY29sb3I6IHJnYmEoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjA2XG4pICFkZWZhdWx0O1xuJGRpc2FibGVkLWRyb3Bkb3duLWljb24tY29sb3I6IHJnYmEoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjM4XG4pICFkZWZhdWx0O1xuJGRpc2FibGVkLW91dGxpbmUtY29sb3I6IHJnYmEoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjA2XG4pICFkZWZhdWx0O1xuXG4kb3V0bGluZWQtaWRsZS1ib3JkZXI6IHJnYmEoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjM4XG4pICFkZWZhdWx0O1xuJG91dGxpbmVkLWhvdmVyLWJvcmRlcjogcmdiYShcbiAgdGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIDAuODdcbikgIWRlZmF1bHQ7XG5cbiRsYWJlbC1wb3NpdGlvbi15OiAxMDYlICFkZWZhdWx0O1xuJG91dGxpbmUtbGFiZWwtb2Zmc2V0OiAxNnB4ICFkZWZhdWx0O1xuJG91dGxpbmVkLWxhYmVsLXBvc2l0aW9uLXk6IGdldC1vdXRsaW5lZC1sYWJlbC1wb3NpdGlvbi15KCRoZWlnaHQpICFkZWZhdWx0O1xuJG91dGxpbmVkLXdpdGgtbGVhZGluZy1pY29uLWxhYmVsLXBvc2l0aW9uLXg6IDMycHggIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi10cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcyAhZGVmYXVsdDtcbi8vIFRyYW5zaXRpb24gZHVyYXJ0aW9ucyB0byBhY3RpdmUgc3RhdGVcbiRpY29uLWFjdGl2ZS1mYWRlLW91dC1kdXJhdGlvbjogMC4zMyAqICRkcm9wZG93bi10cmFuc2l0aW9uLWR1cmF0aW9uICFkZWZhdWx0O1xuJGljb24tYWN0aXZlLWZhZGUtaW4tZHVyYXRpb246IDAuNjcgKiAkZHJvcGRvd24tdHJhbnNpdGlvbi1kdXJhdGlvbiAhZGVmYXVsdDtcbi8vIFRyYW5zaXRpb24gZHVyYXJ0aW9ucyB0byBpbmFjdGl2ZSBzdGF0ZVxuJGljb24taW5hY3RpdmUtZmFkZS1vdXQtZHVyYXRpb246IDAuNSAqICRkcm9wZG93bi10cmFuc2l0aW9uLWR1cmF0aW9uICFkZWZhdWx0O1xuJGljb24taW5hY3RpdmUtZmFkZS1pbi1kdXJhdGlvbjogMC41ICogJGRyb3Bkb3duLXRyYW5zaXRpb24tZHVyYXRpb24gIWRlZmF1bHQ7XG5cbi8vIEVycm9yIGNvbG9yc1xuJGVycm9yLWNvbG9yOiBlcnJvciAhZGVmYXVsdDtcblxuJF9saWdodC10aGVtZTogKFxuICAvLyBJbXBsZW1lbnQgYG1lbnUtY2FzY2FkaW5nLW1lbnUtaW5kaWNhdG9yLWljb24tY29sb3JgIHdoZW4gc2VsZWN0IHN1cHBvcnRzLlxuICAvLyBJbXBsZW1lbnQgYG1lbnUtY2FzY2FkaW5nLW1lbnUtaW5kaWNhdG9yLWljb24tc2l6ZWAgd2hlbiBzZWxlY3Qgc3VwcG9ydHMuXG4gIC8vIEltcGxlbWVudCBgbWVudS1jb250YWluZXItc3VyZmFjZS10aW50LWxheWVyLWNvbG9yYCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGB0ZXh0LWZpZWxkLWRpc2FibGVkLXRyYWlsaW5nLWljb24tY29sb3JgIHdoZW4gc2VsZWN0IHN1cHBvcnRzLlxuICAvLyBJbXBsZW1lbnQgYHRleHQtZmllbGQtaG92ZXItdHJhaWxpbmctaWNvbi1jb2xvcmAgd2hlbiBzZWxlY3Qgc3VwcG9ydHMuXG4gIC8vIEltcGxlbWVudCBgdGV4dC1maWVsZC1mb2N1cy10cmFpbGluZy1pY29uLWNvbG9yYCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGB0ZXh0LWZpZWxkLWVycm9yLXRyYWlsaW5nLWljb24tY29sb3JgIHdoZW4gc2VsZWN0IHN1cHBvcnRzLlxuICAvLyBJbXBsZW1lbnQgYHRleHQtZmllbGQtZXJyb3ItaG92ZXItdHJhaWxpbmctaWNvbi1jb2xvcmAgd2hlbiBzZWxlY3Qgc3VwcG9ydHMuXG4gIC8vIEltcGxlbWVudCBgdGV4dC1maWVsZC1lcnJvci1mb2N1cy10cmFpbGluZy1pY29uLWNvbG9yYCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGB0ZXh0LWZpZWxkLXRyYWlsaW5nLWljb24tY29sb3JgIHdoZW4gc2VsZWN0IHN1cHBvcnRzLlxuICAvLyBJbXBsZW1lbnQgYHRleHQtZmllbGQtdHJhaWxpbmctaWNvbi1zaXplYCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLXN0YXRlLWxheWVyLWNvbG9yYCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHlgIHdoZW4gc2VsZWN0IHN1cHBvcnRzLlxuICAvLyBJbXBsZW1lbnQgYHRleHQtZmllbGQtaG92ZXItc3RhdGUtbGF5ZXItY29sb3JgIHdoZW4gc2VsZWN0IHN1cHBvcnRzLlxuICAvLyBJbXBsZW1lbnQgYHRleHQtZmllbGQtaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eWAgd2hlbiBzZWxlY3Qgc3VwcG9ydHMuXG4gIG1lbnUtY29udGFpbmVyLWNvbG9yOiBudWxsLFxuICBtZW51LWNvbnRhaW5lci1lbGV2YXRpb246IG51bGwsXG4gIG1lbnUtY29udGFpbmVyLXNoYWRvdy1jb2xvcjogbnVsbCxcbiAgbWVudS1jb250YWluZXItc2hhcGU6IG51bGwsXG4gIG1lbnUtZGl2aWRlci1jb2xvcjogbnVsbCxcbiAgbWVudS1kaXZpZGVyLWhlaWdodDogbnVsbCxcbiAgbWVudS1saXN0LWl0ZW0tY29udGFpbmVyLWhlaWdodDogbnVsbCxcbiAgbWVudS1saXN0LWl0ZW0tbGFiZWwtdGV4dC1jb2xvcjogbnVsbCxcbiAgbWVudS1saXN0LWl0ZW0tbGFiZWwtdGV4dC1mb250OiBudWxsLFxuICBtZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LWxpbmUtaGVpZ2h0OiBudWxsLFxuICBtZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LXNpemU6IG51bGwsXG4gIG1lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtdHJhY2tpbmc6IG51bGwsXG4gIG1lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtd2VpZ2h0OiBudWxsLFxuICBtZW51LWxpc3QtaXRlbS1zZWxlY3RlZC1jb250YWluZXItY29sb3I6IG51bGwsXG4gIG1lbnUtbGlzdC1pdGVtLXdpdGgtbGVhZGluZy1pY29uLWxlYWRpbmctaWNvbi1jb2xvcjogbnVsbCxcbiAgbWVudS1saXN0LWl0ZW0td2l0aC1sZWFkaW5nLWljb24tbGVhZGluZy1pY29uLXNpemU6IG51bGwsXG4gIG1lbnUtbGlzdC1pdGVtLXdpdGgtdHJhaWxpbmctaWNvbi10cmFpbGluZy1pY29uLWNvbG9yOiBudWxsLFxuICBtZW51LWxpc3QtaXRlbS13aXRoLXRyYWlsaW5nLWljb24tdHJhaWxpbmctaWNvbi1zaXplOiBudWxsLFxuICB0ZXh0LWZpZWxkLWFjdGl2ZS1pbmRpY2F0b3ItY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtYWN0aXZlLWluZGljYXRvci1oZWlnaHQ6IG51bGwsXG4gIHRleHQtZmllbGQtY2FyZXQtY29sb3I6IG51bGwsXG4gIC8vIFRva2VuIGtleSBgdGV4dC1maWVsZC1ob3Zlci1jYXJldC1jb2xvcmAgbm90IGF2YWlsYWJsZSBvbiBEU0RCLlxuICB0ZXh0LWZpZWxkLWhvdmVyLWNhcmV0LWNvbG9yOiBudWxsLFxuICAvLyBUb2tlbiBrZXkgYHRleHQtZmllbGQtZm9jdXMtY2FyZXQtY29sb3JgIG5vdCBhdmFpbGFibGUgb24gRFNEQi5cbiAgdGV4dC1maWVsZC1mb2N1cy1jYXJldC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1jb250YWluZXItY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtY29udGFpbmVyLWhlaWdodDogbnVsbCxcbiAgdGV4dC1maWVsZC1jb250YWluZXItc2hhcGU6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtYWN0aXZlLWluZGljYXRvci1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1hY3RpdmUtaW5kaWNhdG9yLWhlaWdodDogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1hY3RpdmUtaW5kaWNhdG9yLW9wYWNpdHk6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtY29udGFpbmVyLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWRpc2FibGVkLWNvbnRhaW5lci1vcGFjaXR5OiBudWxsLFxuICB0ZXh0LWZpZWxkLWRpc2FibGVkLWlucHV0LXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtaW5wdXQtdGV4dC1vcGFjaXR5OiBudWxsLFxuICB0ZXh0LWZpZWxkLWRpc2FibGVkLWxhYmVsLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtbGFiZWwtdGV4dC1vcGFjaXR5OiBudWxsLFxuICB0ZXh0LWZpZWxkLWRpc2FibGVkLWxlYWRpbmctaWNvbi1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1sZWFkaW5nLWljb24tb3BhY2l0eTogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1vdXRsaW5lLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWRpc2FibGVkLW91dGxpbmUtb3BhY2l0eTogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1vdXRsaW5lLXdpZHRoOiBudWxsLFxuICB0ZXh0LWZpZWxkLWRpc2FibGVkLXN1cHBvcnRpbmctdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1zdXBwb3J0aW5nLXRleHQtb3BhY2l0eTogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC10cmFpbGluZy1pY29uLW9wYWNpdHk6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItYWN0aXZlLWluZGljYXRvci1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1mb2N1cy1hY3RpdmUtaW5kaWNhdG9yLWNvbG9yOiBudWxsLFxuICAvLyBUb2tlbiBrZXkgYHRleHQtZmllbGQtZXJyb3ItY2FyZXQtY29sb3JgIG5vdCBhdmFpbGFibGUgb24gRFNEQi5cbiAgdGV4dC1maWVsZC1lcnJvci1jYXJldC1jb2xvcjogbnVsbCxcbiAgLy8gVG9rZW4ga2V5IGB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLWNhcmV0LWNvbG9yYCBub3QgYXZhaWxhYmxlIG9uIERTREIuXG4gIHRleHQtZmllbGQtZXJyb3ItaG92ZXItY2FyZXQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItZm9jdXMtY2FyZXQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItZm9jdXMtaW5wdXQtdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1mb2N1cy1sYWJlbC10ZXh0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLWZvY3VzLWxlYWRpbmctaWNvbi1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1mb2N1cy1vdXRsaW5lLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLWZvY3VzLXN1cHBvcnRpbmctdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1ob3Zlci1hY3RpdmUtaW5kaWNhdG9yLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLWlucHV0LXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItaG92ZXItbGFiZWwtdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1ob3Zlci1sZWFkaW5nLWljb24tY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItaG92ZXItb3V0bGluZS1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1ob3Zlci1zdXBwb3J0aW5nLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItaW5wdXQtdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1sYWJlbC10ZXh0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLWxlYWRpbmctaWNvbi1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1vdXRsaW5lLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLXN1cHBvcnRpbmctdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1mb2N1cy1hY3RpdmUtaW5kaWNhdG9yLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWZvY3VzLWFjdGl2ZS1pbmRpY2F0b3ItaGVpZ2h0OiBudWxsLFxuICB0ZXh0LWZpZWxkLWZvY3VzLWlucHV0LXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZm9jdXMtbGFiZWwtdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1mb2N1cy1sZWFkaW5nLWljb24tY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZm9jdXMtb3V0bGluZS1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1mb2N1cy1vdXRsaW5lLXdpZHRoOiBudWxsLFxuICB0ZXh0LWZpZWxkLWZvY3VzLXN1cHBvcnRpbmctdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1ob3Zlci1hY3RpdmUtaW5kaWNhdG9yLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWhvdmVyLWFjdGl2ZS1pbmRpY2F0b3ItaGVpZ2h0OiBudWxsLFxuICB0ZXh0LWZpZWxkLWhvdmVyLWlucHV0LXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtaG92ZXItbGFiZWwtdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1ob3Zlci1sZWFkaW5nLWljb24tY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtaG92ZXItb3V0bGluZS1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1ob3Zlci1vdXRsaW5lLXdpZHRoOiBudWxsLFxuICB0ZXh0LWZpZWxkLWhvdmVyLXN1cHBvcnRpbmctdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1pbnB1dC10ZXh0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWlucHV0LXRleHQtZm9udDogbnVsbCxcbiAgdGV4dC1maWVsZC1pbnB1dC10ZXh0LWxpbmUtaGVpZ2h0OiBudWxsLFxuICB0ZXh0LWZpZWxkLWlucHV0LXRleHQtc2l6ZTogbnVsbCxcbiAgdGV4dC1maWVsZC1pbnB1dC10ZXh0LXRyYWNraW5nOiBudWxsLFxuICB0ZXh0LWZpZWxkLWlucHV0LXRleHQtd2VpZ2h0OiBudWxsLFxuICB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtbGFiZWwtdGV4dC1mb250OiBudWxsLFxuICB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtbGluZS1oZWlnaHQ6IG51bGwsXG4gIHRleHQtZmllbGQtbGFiZWwtdGV4dC1wb3B1bGF0ZWQtbGluZS1oZWlnaHQ6IG51bGwsXG4gIHRleHQtZmllbGQtbGFiZWwtdGV4dC1wb3B1bGF0ZWQtc2l6ZTogbnVsbCxcbiAgdGV4dC1maWVsZC1sYWJlbC10ZXh0LXNpemU6IG51bGwsXG4gIHRleHQtZmllbGQtbGFiZWwtdGV4dC10cmFja2luZzogbnVsbCxcbiAgdGV4dC1maWVsZC1sYWJlbC10ZXh0LXdlaWdodDogbnVsbCxcbiAgdGV4dC1maWVsZC1sZWFkaW5nLWljb24tY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtbGVhZGluZy1pY29uLXNpemU6IG51bGwsXG4gIHRleHQtZmllbGQtb3V0bGluZS1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1vdXRsaW5lLXdpZHRoOiBudWxsLFxuICB0ZXh0LWZpZWxkLXN1cHBvcnRpbmctdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1zdXBwb3J0aW5nLXRleHQtZm9udDogbnVsbCxcbiAgdGV4dC1maWVsZC1zdXBwb3J0aW5nLXRleHQtbGluZS1oZWlnaHQ6IG51bGwsXG4gIHRleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LXNpemU6IG51bGwsXG4gIHRleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LXRyYWNraW5nOiBudWxsLFxuICB0ZXh0LWZpZWxkLXN1cHBvcnRpbmctdGV4dC13ZWlnaHQ6IG51bGxcbik7XG5cbkBtaXhpbiB0aGVtZS1zdHlsZXMoJHRoZW1lLCAkcmVzb2x2ZXJzOiByZXNvbHZlcnMuJG1hdGVyaWFsKSB7XG4gIEBpbmNsdWRlIHRoZW1lLnZhbGlkYXRlLXRoZW1lLWtleXMoJF9saWdodC10aGVtZSwgJHRoZW1lKTtcblxuICBAaW5jbHVkZSBjb250YWluZXItZmlsbC1jb2xvcihcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1jb250YWluZXItY29sb3IpLFxuICAgICAgZGlzYWJsZWQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWRpc2FibGVkLWNvbnRhaW5lci1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBvdXRsaW5lLWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLW91dGxpbmUtY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWhvdmVyLW91dGxpbmUtY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWZvY3VzLW91dGxpbmUtY29sb3IpLFxuICAgICAgZGlzYWJsZWQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWRpc2FibGVkLW91dGxpbmUtY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgX2Vycm9yLW91dGxpbmUtY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3Itb3V0bGluZS1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3ItaG92ZXItb3V0bGluZS1jb2xvciksXG4gICAgICBmb2N1czogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3ItZm9jdXMtb3V0bGluZS1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBvdXRsaW5lLXdpZHRoKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLW91dGxpbmUtd2lkdGgpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWhvdmVyLW91dGxpbmUtd2lkdGgpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWZvY3VzLW91dGxpbmUtd2lkdGgpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgX21lbnUtY29udGFpbmVyLWNvbG9yKG1hcC5nZXQoJHRoZW1lLCBtZW51LWNvbnRhaW5lci1jb2xvcikpO1xuICBAaW5jbHVkZSBfbWVudS1jb250YWluZXItZWxldmF0aW9uKFxuICAgIG1hcC5nZXQoJHJlc29sdmVycywgZWxldmF0aW9uKSxcbiAgICAkc2hhZG93LWNvbG9yOiBtYXAuZ2V0KCR0aGVtZSwgbWVudS1jb250YWluZXItc2hhZG93LWNvbG9yKSxcbiAgICAkZWxldmF0aW9uOiBtYXAuZ2V0KCR0aGVtZSwgbWVudS1jb250YWluZXItZWxldmF0aW9uKVxuICApO1xuICBAaW5jbHVkZSBfbWVudS1jb250YWluZXItc2hhcGUobWFwLmdldCgkdGhlbWUsIG1lbnUtY29udGFpbmVyLXNoYXBlKSk7XG4gIEBpbmNsdWRlIF9tZW51LWRpdmlkZXItY29sb3IobWFwLmdldCgkdGhlbWUsIG1lbnUtZGl2aWRlci1jb2xvcikpO1xuICBAaW5jbHVkZSBfbWVudS1kaXZpZGVyLWhlaWdodChtYXAuZ2V0KCR0aGVtZSwgbWVudS1kaXZpZGVyLWhlaWdodCkpO1xuICBAaW5jbHVkZSBfbWVudS1saXN0LWl0ZW0tY29udGFpbmVyLWhlaWdodChcbiAgICBtYXAuZ2V0KCR0aGVtZSwgbWVudS1saXN0LWl0ZW0tY29udGFpbmVyLWhlaWdodClcbiAgKTtcbiAgQGluY2x1ZGUgX21lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtY29sb3IoXG4gICAgbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtY29sb3IpXG4gICk7XG4gIEBpbmNsdWRlIF9tZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LXR5cG9ncmFwaHkoXG4gICAgKFxuICAgICAgZm9udDogbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtZm9udCksXG4gICAgICBsaW5lLWhlaWdodDogbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtbGluZS1oZWlnaHQpLFxuICAgICAgc2l6ZTogbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtc2l6ZSksXG4gICAgICB0cmFja2luZzogbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtdHJhY2tpbmcpLFxuICAgICAgd2VpZ2h0OiBtYXAuZ2V0KCR0aGVtZSwgbWVudS1saXN0LWl0ZW0tbGFiZWwtdGV4dC13ZWlnaHQpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgX21lbnUtbGlzdC1pdGVtLXNlbGVjdGVkLWNvbnRhaW5lci1jb2xvcihcbiAgICBtYXAuZ2V0KCR0aGVtZSwgbWVudS1saXN0LWl0ZW0tc2VsZWN0ZWQtY29udGFpbmVyLWNvbG9yKVxuICApO1xuICBAaW5jbHVkZSBfbWVudS1saXN0LWl0ZW0td2l0aC1sZWFkaW5nLWljb24tbGVhZGluZy1pY29uLWNvbG9yKFxuICAgIG1hcC5nZXQoJHRoZW1lLCBtZW51LWxpc3QtaXRlbS13aXRoLWxlYWRpbmctaWNvbi1sZWFkaW5nLWljb24tY29sb3IpXG4gICk7XG4gIEBpbmNsdWRlIF9tZW51LWxpc3QtaXRlbS13aXRoLWxlYWRpbmctaWNvbi1sZWFkaW5nLWljb24tc2l6ZShcbiAgICBtYXAuZ2V0KCR0aGVtZSwgbWVudS1saXN0LWl0ZW0td2l0aC1sZWFkaW5nLWljb24tbGVhZGluZy1pY29uLXNpemUpXG4gICk7XG4gIC8vIFRPRE86IENyZWF0ZSBuZXcgbWl4aW4gZm9yIHRyYWlsaW5nIGljb24gdGhlbWluZyB3aGVuIHNlbGVjdCBzdXBwb3J0cyBpdC5cbiAgQGluY2x1ZGUgX21lbnUtbGlzdC1pdGVtLXdpdGgtbGVhZGluZy1pY29uLWxlYWRpbmctaWNvbi1jb2xvcihcbiAgICBtYXAuZ2V0KCR0aGVtZSwgbWVudS1saXN0LWl0ZW0td2l0aC10cmFpbGluZy1pY29uLXRyYWlsaW5nLWljb24tY29sb3IpXG4gICk7XG4gIEBpbmNsdWRlIF9tZW51LWxpc3QtaXRlbS13aXRoLWxlYWRpbmctaWNvbi1sZWFkaW5nLWljb24tc2l6ZShcbiAgICBtYXAuZ2V0KCR0aGVtZSwgbWVudS1saXN0LWl0ZW0td2l0aC10cmFpbGluZy1pY29uLXRyYWlsaW5nLWljb24tc2l6ZSlcbiAgKTtcbiAgQGluY2x1ZGUgYm90dG9tLWxpbmUtY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtYWN0aXZlLWluZGljYXRvci1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtaG92ZXItYWN0aXZlLWluZGljYXRvci1jb2xvciksXG4gICAgICBmb2N1czogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZm9jdXMtYWN0aXZlLWluZGljYXRvci1jb2xvciksXG4gICAgICBkaXNhYmxlZDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZGlzYWJsZWQtaW5kaWNhdG9yLWNvbG9yKSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIF90ZXh0LWZpZWxkLWVycm9yLWFjdGl2ZS1pbmRpY2F0b3ItY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3ItYWN0aXZlLWluZGljYXRvci1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3ItaG92ZXItYWN0aXZlLWluZGljYXRvci1jb2xvciksXG4gICAgICBmb2N1czogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3ItZm9jdXMtYWN0aXZlLWluZGljYXRvci1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBfdGV4dC1maWVsZC1hY3RpdmUtaW5kaWNhdG9yLWhlaWdodChcbiAgICBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1hY3RpdmUtaW5kaWNhdG9yLWhlaWdodClcbiAgKTtcbiAgQGluY2x1ZGUgX3RleHQtZmllbGQtY2FyZXQtY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtY2FyZXQtY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWhvdmVyLWNhcmV0LWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1mb2N1cy1jYXJldC1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBfdGV4dC1maWVsZC1lcnJvci1jYXJldC1jb2xvcihcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1lcnJvci1jYXJldC1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3ItaG92ZXItY2FyZXQtY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWZvY3VzLWNhcmV0LWNvbG9yKSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIGluay1jb2xvcihcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1pbnB1dC10ZXh0LWNvbG9yKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1ob3Zlci1pbnB1dC10ZXh0LWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1mb2N1cy1pbnB1dC10ZXh0LWNvbG9yKSxcbiAgICAgIGRpc2FibGVkOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1kaXNhYmxlZC1pbnB1dC10ZXh0LWNvbG9yKSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIF9lcnJvci1pbnB1dC10ZXh0LWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWlucHV0LXRleHQtY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLWlucHV0LXRleHQtY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWZvY3VzLWlucHV0LXRleHQtY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgbGFiZWwtY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtbGFiZWwtdGV4dC1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtaG92ZXItbGFiZWwtdGV4dC1jb2xvciksXG4gICAgICBmb2N1czogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZm9jdXMtbGFiZWwtdGV4dC1jb2xvciksXG4gICAgICBkaXNhYmxlZDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZGlzYWJsZWQtbGFiZWwtdGV4dC1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBsYWJlbC1mbG9hdGluZy1jb2xvcihcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1sYWJlbC10ZXh0LWNvbG9yKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1ob3Zlci1sYWJlbC10ZXh0LWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1mb2N1cy1sYWJlbC10ZXh0LWNvbG9yKSxcbiAgICAgIGRpc2FibGVkOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1kaXNhYmxlZC1sYWJlbC10ZXh0LWNvbG9yKSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIF9lcnJvci1sYWJlbC10ZXh0LWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWxhYmVsLXRleHQtY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLWxhYmVsLXRleHQtY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWZvY3VzLWxhYmVsLXRleHQtY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgX3RleHQtZmllbGQtbGVhZGluZy1pY29uLWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWxlYWRpbmctaWNvbi1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtaG92ZXItbGVhZGluZy1pY29uLWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1mb2N1cy1sZWFkaW5nLWljb24tY29sb3IpLFxuICAgICAgZGlzYWJsZWQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWRpc2FibGVkLWxlYWRpbmctaWNvbi1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBfZXJyb3ItdGV4dC1maWVsZC1sZWFkaW5nLWljb24tY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3ItbGVhZGluZy1pY29uLWNvbG9yKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1lcnJvci1ob3Zlci1sZWFkaW5nLWljb24tY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWZvY3VzLWxlYWRpbmctaWNvbi1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBzZWxlY3QtaGVscGVyLXRleHQtdGhlbWUuaGVscGVyLXRleHQtY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LWNvbG9yKSxcbiAgICAgIGRpc2FibGVkOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1kaXNhYmxlZC1zdXBwb3J0aW5nLXRleHQtY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgc2VsZWN0LWhlbHBlci10ZXh0LXRoZW1lLmhlbHBlci10ZXh0LXZhbGlkYXRpb24tY29sb3IoXG4gICAgbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3Itc3VwcG9ydGluZy10ZXh0LWNvbG9yKVxuICApO1xuICBAaW5jbHVkZSBfdGV4dC1maWVsZC1pbnB1dC10ZXh0LXR5cG9ncmFwaHkoXG4gICAgKFxuICAgICAgZm9udDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtaW5wdXQtdGV4dC1mb250KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1pbnB1dC10ZXh0LWxpbmUtaGVpZ2h0KSxcbiAgICAgIHNpemU6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWlucHV0LXRleHQtc2l6ZSksXG4gICAgICB0cmFja2luZzogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtaW5wdXQtdGV4dC10cmFja2luZyksXG4gICAgICB3ZWlnaHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWlucHV0LXRleHQtd2VpZ2h0KSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIF90ZXh0LWZpZWxkLWxhYmVsLXRleHQtdHlwb2dyYXBoeShcbiAgICAoXG4gICAgICBmb250OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1sYWJlbC10ZXh0LWZvbnQpLFxuICAgICAgbGluZS1oZWlnaHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtbGluZS1oZWlnaHQpLFxuICAgICAgc2l6ZTogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtbGFiZWwtdGV4dC1zaXplKSxcbiAgICAgIHRyYWNraW5nOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1sYWJlbC10ZXh0LXRyYWNraW5nKSxcbiAgICAgIHdlaWdodDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtbGFiZWwtdGV4dC13ZWlnaHQpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgX3RleHQtZmllbGQtbGFiZWwtdGV4dC1wb3B1bGF0ZWQtdHlwb2dyYXBoeShcbiAgICAoXG4gICAgICBsaW5lLWhlaWdodDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtbGFiZWwtdGV4dC1wb3B1bGF0ZWQtbGluZS1oZWlnaHQpLFxuICAgICAgc2l6ZTogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtbGFiZWwtdGV4dC1wb3B1bGF0ZWQtc2l6ZSksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBfdGV4dC1maWVsZC1zdXBwb3J0aW5nLXRleHQtdHlwb2dyYXBoeShcbiAgICAoXG4gICAgICBmb250OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1zdXBwb3J0aW5nLXRleHQtZm9udCksXG4gICAgICBsaW5lLWhlaWdodDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LWxpbmUtaGVpZ2h0KSxcbiAgICAgIHNpemU6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLXN1cHBvcnRpbmctdGV4dC1zaXplKSxcbiAgICAgIHRyYWNraW5nOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1zdXBwb3J0aW5nLXRleHQtdHJhY2tpbmcpLFxuICAgICAgd2VpZ2h0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1zdXBwb3J0aW5nLXRleHQtd2VpZ2h0KSxcbiAgICApXG4gICk7XG59XG5cbkBtaXhpbiBfdGV4dC1maWVsZC1zdXBwb3J0aW5nLXRleHQtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeS10aGVtZSkge1xuICAmICsgLm1kYy1zZWxlY3QtaGVscGVyLXRleHQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudGhlbWUtc3R5bGVzKCR0eXBvZ3JhcGh5LXRoZW1lKTtcbiAgfVxufVxuXG5AbWl4aW4gX3RleHQtZmllbGQtaW5wdXQtdGV4dC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5LXRoZW1lKSB7XG4gIC5tZGMtc2VsZWN0X19zZWxlY3RlZC10ZXh0IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRoZW1lLXN0eWxlcygkdHlwb2dyYXBoeS10aGVtZSk7XG4gIH1cbn1cblxuQG1peGluIF90ZXh0LWZpZWxkLWxhYmVsLXRleHQtcG9wdWxhdGVkLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHktdGhlbWUpIHtcbiAgLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUsXG4gIC8vIFVzZWQgZm9yIENTUyBzcGVjaWZpY2l0eSB0byBtYXRjaCB3aXRoIHNlbGVjdG9yIHVzZWQgaW4gYG91dGxpbmVkLWhlaWdodCgpYC5cbiAgJi5tZGMtc2VsZWN0LS13aXRoLWxlYWRpbmctaWNvbiAubWRjLXNlbGVjdF9fYW5jaG9yIC5tZGMtbm90Y2hlZC1vdXRsaW5lIC5tZGMtZmxvYXRpbmctbGFiZWwubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50aGVtZS1zdHlsZXMoJHR5cG9ncmFwaHktdGhlbWUpO1xuICB9XG59XG5cbkBtaXhpbiBfdGV4dC1maWVsZC1sYWJlbC10ZXh0LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHktdGhlbWUpIHtcbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50aGVtZS1zdHlsZXMoJHR5cG9ncmFwaHktdGhlbWUpO1xuICB9XG59XG5cbkBtaXhpbiBfZXJyb3Itb3V0bGluZS1jb2xvcigkY29sb3IpIHtcbiAgJi5tZGMtc2VsZWN0LS1pbnZhbGlkIHtcbiAgICBAaW5jbHVkZSBvdXRsaW5lLWNvbG9yKCRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIF9lcnJvci10ZXh0LWZpZWxkLWxlYWRpbmctaWNvbi1jb2xvcigkY29sb3IpIHtcbiAgJi5tZGMtc2VsZWN0LS1pbnZhbGlkIHtcbiAgICBAaW5jbHVkZSBfdGV4dC1maWVsZC1sZWFkaW5nLWljb24tY29sb3IoJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gX3RleHQtZmllbGQtbGVhZGluZy1pY29uLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSBfaWYtZW5hYmxlZCB7XG4gICAgQGluY2x1ZGUgX3NldC10ZXh0LWZpZWxkLWxlYWRpbmctaWNvbi1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kZWZhdWx0LXN0YXRlKCRjb2xvcilcbiAgICApO1xuXG4gICAgJjpub3QoLm1kYy1zZWxlY3QtLWZvY3VzZWQpOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIF9zZXQtdGV4dC1maWVsZC1sZWFkaW5nLWljb24tY29sb3IoXG4gICAgICAgIHN0YXRlLmdldC1ob3Zlci1zdGF0ZSgkY29sb3IpXG4gICAgICApO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIF9pZi1mb2N1c2VkIHtcbiAgICAgIEBpbmNsdWRlIF9zZXQtdGV4dC1maWVsZC1sZWFkaW5nLWljb24tY29sb3IoXG4gICAgICAgIHN0YXRlLmdldC1mb2N1cy1zdGF0ZSgkY29sb3IpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIF9pZi1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX3NldC10ZXh0LWZpZWxkLWxlYWRpbmctaWNvbi1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kaXNhYmxlZC1zdGF0ZSgkY29sb3IpXG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gX3NldC10ZXh0LWZpZWxkLWxlYWRpbmctaWNvbi1jb2xvcigkY29sb3IpIHtcbiAgLm1kYy1zZWxlY3RfX2FuY2hvciAubWRjLXNlbGVjdF9faWNvbiB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIF9lcnJvci1sYWJlbC10ZXh0LWNvbG9yKCRjb2xvcikge1xuICAmLm1kYy1zZWxlY3QtLWludmFsaWQge1xuICAgIEBpbmNsdWRlIGxhYmVsLWZsb2F0aW5nLWNvbG9yKCRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIF9lcnJvci1pbnB1dC10ZXh0LWNvbG9yKCRjb2xvcikge1xuICAmLm1kYy1zZWxlY3QtLWludmFsaWQge1xuICAgIEBpbmNsdWRlIGluay1jb2xvcigkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfdGV4dC1maWVsZC1jYXJldC1jb2xvcigkY29sb3IpIHtcbiAgQGluY2x1ZGUgZHJvcGRvd24taWNvbi1jb2xvcigkY29sb3IpO1xufVxuXG5AbWl4aW4gX3RleHQtZmllbGQtZXJyb3ItY2FyZXQtY29sb3IoJGNvbG9yKSB7XG4gICYubWRjLXNlbGVjdC0taW52YWxpZCB7XG4gICAgQGluY2x1ZGUgZHJvcGRvd24taWNvbi1jb2xvcigkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfdGV4dC1maWVsZC1lcnJvci1hY3RpdmUtaW5kaWNhdG9yLWNvbG9yKCRjb2xvcikge1xuICAmLm1kYy1zZWxlY3QtLWludmFsaWQge1xuICAgIEBpbmNsdWRlIGJvdHRvbS1saW5lLWNvbG9yKCRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIF90ZXh0LWZpZWxkLWFjdGl2ZS1pbmRpY2F0b3ItaGVpZ2h0KCRoZWlnaHQpIHtcbiAgLm1kYy1saW5lLXJpcHBsZSB7XG4gICAgQGluY2x1ZGUgbGluZS1yaXBwbGUtbWl4aW5zLmhlaWdodCgkaGVpZ2h0KTtcbiAgfVxufVxuXG5AbWl4aW4gX21lbnUtbGlzdC1pdGVtLXdpdGgtbGVhZGluZy1pY29uLWxlYWRpbmctaWNvbi1jb2xvcigkY29sb3IpIHtcbiAgJjpub3QoLm1kYy1zZWxlY3QtLWRpc2FibGVkKSAubWRjLXNlbGVjdF9fb3B0aW9uIC5tZGMtc2VsZWN0X19pY29uIHtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gX21lbnUtbGlzdC1pdGVtLXdpdGgtbGVhZGluZy1pY29uLWxlYWRpbmctaWNvbi1zaXplKCRzaXplKSB7XG4gICY6bm90KC5tZGMtc2VsZWN0LS1kaXNhYmxlZCkgLm1kYy1zZWxlY3RfX29wdGlvbiAubWRjLXNlbGVjdF9faWNvbiB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoZm9udC1zaXplLCAkc2l6ZSk7XG4gIH1cbn1cblxuQG1peGluIF9tZW51LWxpc3QtaXRlbS1zZWxlY3RlZC1jb250YWluZXItY29sb3IoJGNvbG9yKSB7XG4gIC5tZGMtc2VsZWN0X19vcHRpb24ge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5saXN0LWl0ZW0tc2VsZWN0ZWQtY29udGFpbmVyLWNvbG9yKCRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIF9tZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHktdGhlbWUpIHtcbiAgLm1kYy1zZWxlY3RfX29wdGlvbiB7XG4gICAgQGluY2x1ZGUgbGlzdC1ldm9sdXRpb24tbWl4aW5zLmxpc3QtcHJpbWFyeS10ZXh0LXR5cG9ncmFwaHkoXG4gICAgICAkdHlwb2dyYXBoeS10aGVtZVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIF9tZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LWNvbG9yKCRjb2xvcikge1xuICAubWRjLXNlbGVjdF9fb3B0aW9uIHtcbiAgICBAaW5jbHVkZSBsaXN0LWV2b2x1dGlvbi1taXhpbnMubGlzdC1wcmltYXJ5LXRleHQtaW5rLWNvbG9yKCRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIF9tZW51LWxpc3QtaXRlbS1jb250YWluZXItaGVpZ2h0KCRoZWlnaHQpIHtcbiAgLm1kYy1zZWxlY3RfX29wdGlvbiB7XG4gICAgQGluY2x1ZGUgbGlzdC1ldm9sdXRpb24tbWl4aW5zLmxpc3QtaXRlbS1oZWlnaHQoJGhlaWdodCk7XG4gIH1cbn1cblxuQG1peGluIF9tZW51LWRpdmlkZXItY29sb3IoJGNvbG9yKSB7XG4gIC5tZGMtc2VsZWN0X19saXN0IHtcbiAgICBAaW5jbHVkZSBsaXN0LWV2b2x1dGlvbi1taXhpbnMuZGl2aWRlci1jb2xvcigkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfbWVudS1kaXZpZGVyLWhlaWdodCgkaGVpZ2h0KSB7XG4gIC5tZGMtc2VsZWN0X19saXN0IHtcbiAgICBAaW5jbHVkZSBsaXN0LWV2b2x1dGlvbi1taXhpbnMuZGl2aWRlci1oZWlnaHQoJGhlaWdodCk7XG4gIH1cbn1cblxuQG1peGluIF9tZW51LWNvbnRhaW5lci1jb2xvcigkY29sb3IpIHtcbiAgLm1kYy1zZWxlY3RfX21lbnUge1xuICAgIEBpbmNsdWRlIG1lbnUtc3VyZmFjZS1taXhpbnMuZmlsbC1jb2xvcigkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfbWVudS1jb250YWluZXItZWxldmF0aW9uKCRyZXNvbHZlciwgJHNoYWRvdy1jb2xvciwgJGVsZXZhdGlvbikge1xuICAubWRjLXNlbGVjdF9fbWVudSB7XG4gICAgQGluY2x1ZGUgZWxldmF0aW9uLXRoZW1lLndpdGgtcmVzb2x2ZXIoXG4gICAgICAkcmVzb2x2ZXIsXG4gICAgICAkZWxldmF0aW9uOiAkZWxldmF0aW9uLFxuICAgICAgJHNoYWRvdy1jb2xvcjogJHNoYWRvdy1jb2xvclxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIF9tZW51LWNvbnRhaW5lci1zaGFwZSgkc2hhcGUpIHtcbiAgLm1kYy1zZWxlY3RfX21lbnUge1xuICAgIEBpbmNsdWRlIG1lbnUtc3VyZmFjZS1taXhpbnMuc2hhcGUtcmFkaXVzKCRzaGFwZSk7XG4gIH1cbn1cblxuQG1peGluIG1lbnUtbGlzdC1pdGVtLXNlY29uZGFyeS1sYWJlbC10ZXh0LWNvbG9yKCRjb2xvcikge1xuICAubWRjLXNlbGVjdF9fbGlzdCB7XG4gICAgQGluY2x1ZGUgbGlzdC1ldm9sdXRpb24tbWl4aW5zLmxpc3Qtc2Vjb25kYXJ5LXRleHQtaW5rLWNvbG9yKCRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIG1lbnUtbGlzdC1pdGVtLXNlY29uZGFyeS1sYWJlbC10ZXh0LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHktdGhlbWUpIHtcbiAgLm1kYy1zZWxlY3RfX2xpc3Qge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5saXN0LXNlY29uZGFyeS10ZXh0LXR5cG9ncmFwaHkoXG4gICAgICAkdHlwb2dyYXBoeS10aGVtZVxuICAgICk7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIG1pbi13aWR0aCBvZiB0aGUgc2VsZWN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWluLXdpZHRoIC0gVGhlIGRlc2lyZWQgbWluLXdpZHRoLlxuLy8vIEBkZXByZWNhdGVkIHVzaW5nIHRoaXMgbWl4aW4gaXMgbm8gbG9uZ2VyIHJlcXVpcmVkLCBhbmQgY2xpZW50cyBtYXkgc2V0XG4vLy8gICAgICAgICAgICAgdGhlIGF0dHJpYnV0ZSBkaXJlY3RseVxuQG1peGluIG1pbi13aWR0aCgkbWluLXdpZHRoLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBtaW4td2lkdGg6ICRtaW4td2lkdGg7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHNlbGVjdCBiZWhhdmlvciB0byBjaGFuZ2Ugd2lkdGggZHluYW1pY2FsbHkgYmFzZWQgb24gY29udGVudC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbi13aWR0aCAtIFRoZSBtaW4td2lkdGggb2YgdGhlIHNlbGVjdCwgd2hpY2ggc2hvdWxkIGJlXG4vLy8gICAgIGxhcmdlIGVub3VnaCB0byBhbGxvdyB0aGUgbGFiZWwgKGlmIGV4aXN0cykgdG8gZGlzcGxheSBpbiBmdWxsLlxuQG1peGluIHZhcmlhYmxlLXdpZHRoKCRtaW4td2lkdGgsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtaW4td2lkdGg6ICRtaW4td2lkdGg7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpbmstY29sb3IoJGNvbG9yLW9yLW1hcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBfaWYtZW5hYmxlZCB7XG4gICAgQGluY2x1ZGUgX2luay1jb2xvcihzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkY29sb3Itb3ItbWFwKSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgQGluY2x1ZGUgX2lmLWRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBfaW5rLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRpc2FibGVkLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBjb250YWluZXItZmlsbC1jb2xvcigkY29sb3Itb3ItbWFwLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIF9pZi1lbmFibGVkIHtcbiAgICBAaW5jbHVkZSBfY29udGFpbmVyLWZpbGwtY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIEBpbmNsdWRlIF9pZi1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX2NvbnRhaW5lci1maWxsLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRpc2FibGVkLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBkcm9wZG93bi1pY29uLWNvbG9yKCRjb2xvci1vci1tYXAsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgX2lmLWVuYWJsZWQge1xuICAgIEBpbmNsdWRlIF9kcm9wZG93bi1pY29uLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmOm5vdCgubWRjLXNlbGVjdC0tZm9jdXNlZCk6aG92ZXIge1xuICAgICAgQGluY2x1ZGUgX2Ryb3Bkb3duLWljb24tY29sb3IoXG4gICAgICAgIHN0YXRlLmdldC1ob3Zlci1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgX2lmLWZvY3VzZWQge1xuICAgICAgQGluY2x1ZGUgX2Ryb3Bkb3duLWljb24tY29sb3IoXG4gICAgICAgIHN0YXRlLmdldC1mb2N1cy1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgX2lmLWRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBfZHJvcGRvd24taWNvbi1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kaXNhYmxlZC1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gbGFiZWwtZmxvYXRpbmctY29sb3IoJGNvbG9yLW9yLW1hcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBfaWYtZW5hYmxlZCB7XG4gICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmOm5vdCgubWRjLXNlbGVjdC0tZm9jdXNlZCk6aG92ZXIge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtaG92ZXItc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYm90dG9tLWxpbmUtY29sb3IoJGNvbG9yLW9yLW1hcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBfaWYtZW5hYmxlZCB7XG4gICAgQGluY2x1ZGUgX2JvdHRvbS1saW5lLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAvLyBib3R0b20gbGluZSBpbmFjdGl2ZS9hY3RpdmUgYXJlIG9uIGRpZmZlcmVudCBlbGVtZW50cywgZG9lcyBub3QgbmVlZFxuICAgIC8vIHRvIGNoZWNrIGZvciA6bm90KCkgZm9jdXNlZFxuICAgICY6aG92ZXIge1xuICAgICAgQGluY2x1ZGUgX2JvdHRvbS1saW5lLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtaG92ZXItc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIF9mb2N1c2VkLWxpbmUtcmlwcGxlLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWZvY3VzLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgQGluY2x1ZGUgX2lmLWRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBfYm90dG9tLWxpbmUtY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIGxhYmVsLWNvbG9yKCRjb2xvci1vci1tYXAsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgX2lmLWVuYWJsZWQge1xuICAgIEBpbmNsdWRlIF9sYWJlbC1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kZWZhdWx0LXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgX2lmLWZvY3VzZWQge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtZm9jdXMtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgICY6bm90KC5tZGMtc2VsZWN0LS1mb2N1c2VkKTpob3ZlciB7XG4gICAgICBAaW5jbHVkZSBfbGFiZWwtY29sb3IoXG4gICAgICAgIHN0YXRlLmdldC1ob3Zlci1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgX2lmLWRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBfbGFiZWwtY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIG91dGxpbmUtY29sb3IoJGNvbG9yLW9yLW1hcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBfaWYtZW5hYmxlZCB7XG4gICAgQGluY2x1ZGUgX291dGxpbmUtY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgICY6bm90KC5tZGMtc2VsZWN0LS1mb2N1c2VkKSAubWRjLXNlbGVjdF9fYW5jaG9yOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIF9ob3Zlci1vdXRsaW5lLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtaG92ZXItc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIF9pZi1mb2N1c2VkIHtcbiAgICAgIEBpbmNsdWRlIF9mb2N1c2VkLW91dGxpbmUtY29sb3IoXG4gICAgICAgIHN0YXRlLmdldC1mb2N1cy1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgX2lmLWRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBfb3V0bGluZS1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kaXNhYmxlZC1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gb3V0bGluZS13aWR0aCgkd2lkdGgpIHtcbiAgQGluY2x1ZGUgX2lmLWVuYWJsZWQge1xuICAgIEBpbmNsdWRlIF9vdXRsaW5lLXdpZHRoKHN0YXRlLmdldC1kZWZhdWx0LXN0YXRlKCR3aWR0aCkpO1xuXG4gICAgJjpub3QoLm1kYy1zZWxlY3QtLWZvY3VzZWQpIC5tZGMtc2VsZWN0X19hbmNob3I6aG92ZXIge1xuICAgICAgQGluY2x1ZGUgX291dGxpbmUtd2lkdGgoc3RhdGUuZ2V0LWhvdmVyLXN0YXRlKCR3aWR0aCkpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIF9pZi1mb2N1c2VkIHtcbiAgICAgIC5tZGMtbm90Y2hlZC1vdXRsaW5lIHtcbiAgICAgICAgQGluY2x1ZGUgX291dGxpbmUtd2lkdGgoc3RhdGUuZ2V0LWZvY3VzLXN0YXRlKCR3aWR0aCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX291dGxpbmUtd2lkdGgoJHdpZHRoKSB7XG4gIEBpZiAkd2lkdGgge1xuICAgIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuc3Ryb2tlLXdpZHRoKCR3aWR0aCk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgZHJvcGRvd24gaWNvbiB0byB0aGUgc3BlY2lmaWVkIHNpemUuXG4vLy9cbkBtaXhpbiBkcm9wZG93bi1pY29uLXNpemUoJHNpemUsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLXNlbGVjdF9fZHJvcGRvd24taWNvbiB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICAgIGhlaWdodDogJHNpemU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmaWxsZWQtc2hhcGUtcmFkaXVzKFxuICAkcmFkaXVzLFxuICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICRydGwtcmVmbGV4aXZlOiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIEBpZiBtZXRhLnR5cGUtb2YoJHJhZGl1cykgPT0gJ2xpc3QnIGFuZCBsaXN0Lmxlbmd0aCgkcmFkaXVzKSA+IDIge1xuICAgIEBlcnJvciBcIm1kYy1zZWxlY3Q6IEludmFsaWQgcmFkaXVzICN7JHJhZGl1c30uIE9ubHkgdG9wLWxlZnQgYW5kIHRvcC1yaWdodCBjb3JuZXJzIG1heSBiZSBjdXN0b21pemVkLlwiO1xuICB9XG5cbiAgJGhlaWdodDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAkZGVuc2l0eS1jb25maWc6ICRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICAkbWFza2VkLXJhZGl1czogc2hhcGUtZnVuY3Rpb25zLm1hc2stcmFkaXVzKCRyYWRpdXMsIDEgMSAwIDApO1xuXG4gIC5tZGMtc2VsZWN0X19hbmNob3Ige1xuICAgIEBpbmNsdWRlIHNoYXBlLW1peGlucy5yYWRpdXMoXG4gICAgICAkbWFza2VkLXJhZGl1cyxcbiAgICAgICRydGwtcmVmbGV4aXZlLFxuICAgICAgJGNvbXBvbmVudC1oZWlnaHQ6ICRoZWlnaHQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIG91dGxpbmUtc2hhcGUtcmFkaXVzKFxuICAkcmFkaXVzLFxuICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICRydGwtcmVmbGV4aXZlOiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJGhlaWdodDogbnVsbFxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGlmIG5vdCAkaGVpZ2h0IHtcbiAgICAkaGVpZ2h0OiBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgJGRlbnNpdHktY29uZmlnOiAkZGVuc2l0eS1jb25maWcsXG4gICAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0LFxuICAgICk7XG4gIH1cblxuICAubWRjLW5vdGNoZWQtb3V0bGluZSB7XG4gICAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5zaGFwZS1yYWRpdXMoXG4gICAgICAkcmFkaXVzLFxuICAgICAgJHJ0bC1yZWZsZXhpdmUsXG4gICAgICAkY29tcG9uZW50LWhlaWdodDogJGhlaWdodCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gICRyZXNvbHZlZC1yYWRpdXM6IHNoYXBlLWZ1bmN0aW9ucy5yZXNvbHZlLXJhZGl1cyhcbiAgICAkcmFkaXVzLFxuICAgICRjb21wb25lbnQtaGVpZ2h0OiAkaGVpZ2h0XG4gICk7XG4gICR1bnBhY2tlZC1yYWRpdXM6IHNoYXBlLWZ1bmN0aW9ucy51bnBhY2stcmFkaXVzKCRyZXNvbHZlZC1yYWRpdXMpO1xuICAkdG9wLWxlZnQtcmFkaXVzOiBsaXN0Lm50aCgkdW5wYWNrZWQtcmFkaXVzLCAxKTtcbiAgJHRvcC1sZWZ0LWlzLWN1c3RvbS1wcm9wOiBjdXN0b20tcHJvcGVydGllcy5pcy1jdXN0b20tcHJvcCgkdG9wLWxlZnQtcmFkaXVzKTtcbiAgJHRvcC1sZWZ0LXJhZGl1cy1weDogJHRvcC1sZWZ0LXJhZGl1cztcbiAgQGlmICgkdG9wLWxlZnQtaXMtY3VzdG9tLXByb3ApIHtcbiAgICAkdG9wLWxlZnQtcmFkaXVzLXB4OiBjdXN0b20tcHJvcGVydGllcy5nZXQtZmFsbGJhY2soJHRvcC1sZWZ0LXJhZGl1cyk7XG4gIH1cblxuICBAaWYgKFxuICAgICR0b3AtbGVmdC1pcy1jdXN0b20tcHJvcCBvclxuICAgICAgJHRvcC1sZWZ0LXJhZGl1cy1weCA+XG4gICAgICBub3RjaGVkLW91dGxpbmUtdmFyaWFibGVzLiRsZWFkaW5nLXdpZHRoXG4gICkge1xuICAgIC5tZGMtc2VsZWN0X19hbmNob3Ige1xuICAgICAgQGluY2x1ZGUgX2FwcGx5LW91dGxpbmUtc2hhcGUtcGFkZGluZyhcbiAgICAgICAgcGFkZGluZy1sZWZ0LFxuICAgICAgICAkdG9wLWxlZnQtcmFkaXVzLFxuICAgICAgICAkYWRkLWxhYmVsLXBhZGRpbmc6IHRydWUsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuXG4gICAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBfYXBwbHktb3V0bGluZS1zaGFwZS1wYWRkaW5nKFxuICAgICAgICAgIHBhZGRpbmctcmlnaHQsXG4gICAgICAgICAgJHRvcC1sZWZ0LXJhZGl1cyxcbiAgICAgICAgICAkYWRkLWxhYmVsLXBhZGRpbmc6IHRydWUsXG4gICAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICArIC5tZGMtc2VsZWN0LWhlbHBlci10ZXh0IHtcbiAgICAgIEBpbmNsdWRlIF9hcHBseS1vdXRsaW5lLXNoYXBlLXBhZGRpbmcoXG4gICAgICAgIG1hcmdpbi1sZWZ0LFxuICAgICAgICAkdG9wLWxlZnQtcmFkaXVzLFxuICAgICAgICAkYWRkLWxhYmVsLXBhZGRpbmc6IHRydWUsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuXG4gICAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIF9hcHBseS1vdXRsaW5lLXNoYXBlLXBhZGRpbmcoXG4gICAgICAgICAgbWFyZ2luLXJpZ2h0LFxuICAgICAgICAgICR0b3AtbGVmdC1yYWRpdXMsXG4gICAgICAgICAgJGFkZC1sYWJlbC1wYWRkaW5nOiB0cnVlLFxuICAgICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW5saWtlIHRleHRmaWVsZCwgc2VsZWN0IGRvZXMgbm90IG5lZWQgdG8gcmUtYXBwbHkgbGVhZGluZyBpY29uIHBhZGRpbmcuXG4gICAgLy8gVGhpcyBpcyBiZWNhdXNlIHNlbGVjdCBvbmx5IGhhcyBvbmUgcG90ZW50aWFsIGxlYWRpbmcgY2xhc3MsIG5vdCB0d29cbiAgICAvLyBleHRyYSBjbGFzc2VzIGxpa2UgdGV4dGZpZWxkIChsZWFkaW5nICsgdHJhaWxpbmcpLiBUZXh0ZmllbGQncyB0d28gZXh0cmFcbiAgICAvLyBjbGFzc2VzIGNhbiBjYXVzZSBzcGVjaWZpY2l0eSBjb25mbGljdHMsIHJlcXVpcmluZyBldmVyeXRoaW5nIHRvIGJlXG4gICAgLy8gcmUtYXBwbGllZC5cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIGRlbnNpdHkgc2NhbGUgZm9yIGZpbGxlZCBzZWxlY3QgdmFyaWFudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIHwgU3RyaW5nfSAkZGVuc2l0eS1zY2FsZSAtIERlbnNpdHkgc2NhbGUgdmFsdWUgZm9yIGNvbXBvbmVudC4gU3VwcG9ydGVkIGRlbnNpdHkgc2NhbGUgdmFsdWVzIGAtNGAsXG4vLy8gICAgIGAtM2AsIGAtMmAsIGAtMWAsIGAwYC4gRGVmYXVsdCBpcyBgMGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsIFNldHMgdGhlIG1pbmltdW0gaGVpZ2h0IGZvclxuLy8vICAgICBmaWxsZWQgc2VsZWN0cyBhdCB3aGljaCB0byBhbGxvdyBmbG9hdGluZyBsYWJlbHMuXG4vLy9cbkBtaXhpbiBmaWxsZWQtZGVuc2l0eShcbiAgJGRlbnNpdHktc2NhbGUsXG4gICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsOiAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiAkZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgQGluY2x1ZGUgZmlsbGVkLWhlaWdodChcbiAgICAkaGVpZ2h0LFxuICAgICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsOiAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBfbGlzdC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbi8vL1xuLy8vIFNldHMgZGVuc2l0eSBzY2FsZSBmb3IgZmlsbGVkIHNlbGVjdCB2YXJpYW50IHdpdGggbGVhZGluZyBpY29uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgfCBTdHJpbmd9ICRkZW5zaXR5LXNjYWxlIC0gRGVuc2l0eSBzY2FsZSB2YWx1ZSBmb3IgY29tcG9uZW50LiBTdXBwb3J0ZWQgZGVuc2l0eSBzY2FsZSB2YWx1ZXMgYC00YCxcbi8vLyAgICAgYC0zYCwgYC0yYCwgYC0xYCwgYDBgLiBEZWZhdWx0IGlzIGAwYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwgU2V0cyB0aGUgbWluaW11bSBoZWlnaHQgZm9yXG4vLy8gICAgIGZpbGxlZCBzZWxlY3RzIGF0IHdoaWNoIHRvIGFsbG93IGZsb2F0aW5nIGxhYmVscy5cbi8vL1xuQG1peGluIGZpbGxlZC13aXRoLWxlYWRpbmctaWNvbi1kZW5zaXR5KFxuICAkZGVuc2l0eS1zY2FsZSxcbiAgJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWw6ICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGhlaWdodDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAkZGVuc2l0eS1jb25maWc6ICRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBmaWxsZWQtd2l0aC1sZWFkaW5nLWljb24taGVpZ2h0KFxuICAgICRoZWlnaHQsXG4gICAgJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWw6ICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIF9saXN0LWRlbnNpdHkoJGRlbnNpdHktc2NhbGUsICRxdWVyeTogJHF1ZXJ5KTtcbn1cblxuLy8vXG4vLy8gU2V0cyBkZW5zaXR5IHNjYWxlIGZvciBvdXRsaW5lZCBzZWxlY3QgKEV4Y2x1ZGluZyBvdXRsaW5lZCBzZWxlY3Qgd2l0aCBsZWFkaW5nIGljb24pLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgfCBTdHJpbmd9ICRkZW5zaXR5LXNjYWxlIC0gRGVuc2l0eSBzY2FsZSB2YWx1ZSBmb3IgY29tcG9uZW50LiBTdXBwb3J0ZWQgZGVuc2l0eSBzY2FsZSB2YWx1ZXMgYC00YCxcbi8vLyAgICAgYC0zYCwgYC0yYCwgYC0xYCwgYDBgLiBEZWZhdWx0IGlzIGAwYC5cbi8vL1xuQG1peGluIG91dGxpbmVkLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGhlaWdodDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAkZGVuc2l0eS1jb25maWc6ICRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRsaW5lZC1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBfbGlzdC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbi8vL1xuLy8vIFNldHMgZGVuc2l0eSBzY2FsZSBmb3Igb3V0bGluZWQgc2VsZWN0IHdpdGggbGVhZGluZyBpY29uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgfCBTdHJpbmd9ICRkZW5zaXR5LXNjYWxlIC0gRGVuc2l0eSBzY2FsZSB2YWx1ZSBmb3IgY29tcG9uZW50LiBTdXBwb3J0ZWQgZGVuc2l0eSBzY2FsZSB2YWx1ZXMgYC00YCxcbi8vLyAgICAgYC0zYCwgYC0yYCwgYC0xYCwgYDBgLiBEZWZhdWx0IGlzIGAwYC5cbi8vL1xuQG1peGluIG91dGxpbmVkLXdpdGgtbGVhZGluZy1pY29uLWRlbnNpdHkoXG4gICRkZW5zaXR5LXNjYWxlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGhlaWdodDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAkZGVuc2l0eS1jb25maWc6ICRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBfbGlzdC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfbGlzdC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnkpIHtcbiAgQGluY2x1ZGUgbGlzdC1taXhpbnMuZGVwcmVjYXRlZC1zaW5nbGUtbGluZS1kZW5zaXR5KFxuICAgICRkZW5zaXR5LXNjYWxlLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIC5tZGMtc2VsZWN0X19vbmUtbGluZS1vcHRpb24ge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5vbmUtbGluZS1pdGVtLWRlbnNpdHkoXG4gICAgICAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICRleGNsdWRlLXZhcmlhbnRzOiB0cnVlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG4gIC5tZGMtc2VsZWN0X190d28tbGluZS1vcHRpb24ge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy50d28tbGluZS1pdGVtLWRlbnNpdHkoXG4gICAgICAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIGhlaWdodCBvZiBkZWZhdWx0IHNlbGVjdCB2YXJpYW50LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuZXctaGVpZ2h0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsIFNldHMgdGhlIG1pbmltdW0gaGVpZ2h0IGZvclxuLy8vICAgICBmaWxsZWQgc2VsZWN0cyBhdCB3aGljaCB0byBhbGxvdyBmbG9hdGluZyBsYWJlbHMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaWxsZWQtYmFzZWxpbmUtdG9wIFRoZSBiYXNlbGluZSBmcm9tIHRoZSB0b3Agb2YgdGhlIGFuY2hvclxuLy8vICAgICB0aGF0IHRoZSBpbnB1dCBzaG91bGQgYmUgYWxpZ25lZCB0byBmb3IgYSBmaWxsZWQgdmFyaWFudCB3aXRoIGEgbGFiZWxcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG5AbWl4aW4gZmlsbGVkLWhlaWdodChcbiAgJG5ldy1oZWlnaHQsXG4gICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsOiAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCxcbiAgJGZpbGxlZC1iYXNlbGluZS10b3A6ICRmaWxsZWQtYmFzZWxpbmUtdG9wLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgaGVpZ2h0OiAkbmV3LWhlaWdodDtcbiAgICB9XG5cbiAgICAvLyBGaWxsZWQgdmFyaWFudCBpcyBhbGlnbmVkIHRvIGJhc2VsaW5lLi4uXG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS1taXhpbnMuYmFzZWxpbmUoXG4gICAgICAkdG9wOiAkZmlsbGVkLWJhc2VsaW5lLXRvcCxcbiAgICAgICRkaXNwbGF5OiBmbGV4LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIC8vIC4uLnVubGVzcyBpdCBpcyB0b28gc21hbGwgdG8gZGlzcGxheSBhIGxhYmVsXG4gICAgQGlmICRuZXctaGVpZ2h0IDwgJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgY2VudGVyLWFsaWduZWQoJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICAubWRjLWZsb2F0aW5nLWxhYmVsIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTm8tbGFiZWwgdmFyaWFudHMgYXJlIGFsd2F5cyBjZW50ZXJlZFxuICAmLm1kYy1zZWxlY3QtLW5vLWxhYmVsIC5tZGMtc2VsZWN0X19hbmNob3Ige1xuICAgIEBpbmNsdWRlIGNlbnRlci1hbGlnbmVkKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIEBpZiAkbmV3LWhlaWdodCA8ICRoZWlnaHQge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLWljb24tc2l6ZShcbiAgICAgIHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmLm1kYy1zZWxlY3QtLWZpbGxlZCB7XG4gICAgICBAaW5jbHVkZSB0cnVuY2F0ZS1mbG9hdGluZy1sYWJlbC1tYXgtd2lkdGgoXG4gICAgICAgICRsZWFkaW5nLWljb24tc2l6ZTogMCxcbiAgICAgICAgJGRyb3Bkb3duLWljb24tc2l6ZTogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgaGVpZ2h0IG9mIGZpbGxlZCBzZWxlY3QgdmFyaWFudCB3aXRoIGxlYWRpbmcgaWNvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsIFNldHMgdGhlIG1pbmltdW0gaGVpZ2h0IGZvclxuLy8vICAgICBmaWxsZWQgc2VsZWN0cyBhdCB3aGljaCB0byBhbGxvdyBmbG9hdGluZyBsYWJlbHMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaWxsZWQtYmFzZWxpbmUtdG9wIFRoZSBiYXNlbGluZSBmcm9tIHRoZSB0b3Agb2YgdGhlIGFuY2hvclxuLy8vICAgICB0aGF0IHRoZSBpbnB1dCBzaG91bGQgYmUgYWxpZ25lZCB0byBmb3IgYSBmaWxsZWQgdmFyaWFudCB3aXRoIGEgbGFiZWxcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG5AbWl4aW4gZmlsbGVkLXdpdGgtbGVhZGluZy1pY29uLWhlaWdodChcbiAgJG5ldy1oZWlnaHQsXG4gICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsOiAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCxcbiAgJGZpbGxlZC1iYXNlbGluZS10b3A6ICRmaWxsZWQtYmFzZWxpbmUtdG9wLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmaWxsZWQtaGVpZ2h0KFxuICAgICRuZXctaGVpZ2h0LFxuICAgICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsOiAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCxcbiAgICAkZmlsbGVkLWJhc2VsaW5lLXRvcDogJGZpbGxlZC1iYXNlbGluZS10b3AsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICBAaWYgJG5ldy1oZWlnaHQgPCAkaGVpZ2h0IHtcbiAgICBAaW5jbHVkZSBzZWxlY3QtaWNvbi10aGVtZS5zaXplKFxuICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgICYubWRjLXNlbGVjdC0tZmlsbGVkIHtcbiAgICAgIEBpbmNsdWRlIHRydW5jYXRlLWZsb2F0aW5nLWxhYmVsLW1heC13aWR0aChcbiAgICAgICAgJGxlYWRpbmctaWNvbi1zaXplOiBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplLFxuICAgICAgICAkZHJvcGRvd24taWNvbi1zaXplOiBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtX19ncmFwaGljIHtcbiAgICAgIHdpZHRoOiBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplO1xuICAgICAgaGVpZ2h0OiBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5pdGVtLXN0YXJ0LXNpemUoXG4gICAgICAkd2lkdGg6IHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUgKyAxMnB4LFxuICAgICAgJGhlaWdodDogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIC5tZGMtc2VsZWN0X19hbmNob3Ige1xuICAgICAgQGluY2x1ZGUgbGVhZGluZy1pY29uLWZsb2F0aW5nLWxhYmVsLXBvc2l0aW9uKFxuICAgICAgICBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBoZWlnaHQgb2Ygb3V0bGluZWQgc2VsZWN0IHZhcmlhbnQgKEV4Y2x1ZGluZyBvdXRsaW5lZCBzZWxlY3Qgd2l0aCBsZWFkaW5nIGljb24pLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuZXctaGVpZ2h0XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXlmcmFtZS1zdWZmaXggLSBPcHRpb25hbCBzdWZmaXggdG8gdXNlIGZvciBnZW5lcmF0ZWRcbi8vLyAgICAgZmxvYXRpbmcgbGFiZWwga2V5ZnJhbWVzXG4vLy9cbkBtaXhpbiBvdXRsaW5lZC1oZWlnaHQoXG4gICRuZXctaGVpZ2h0LFxuICAka2V5ZnJhbWUtc3VmZml4OiBzZWxlY3Qtb3V0bGluZWQtI3skbmV3LWhlaWdodH0sXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkcG9zaXRpb25ZOiBnZXQtb3V0bGluZWQtbGFiZWwtcG9zaXRpb24teSgkbmV3LWhlaWdodCk7XG5cbiAgLm1kYy1zZWxlY3RfX2FuY2hvciB7XG4gICAgLy8gRmxvYXRpbmcgbGFiZWwgcG9zaXRpb25cbiAgICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLmZsb2F0aW5nLWxhYmVsLWZsb2F0LXBvc2l0aW9uLWFic29sdXRlKFxuICAgICAgJHBvc2l0aW9uWSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIC8vIEZsb2F0aW5nIGxhYmVsIGFuaW1hdGlvblxuICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5zaGFrZS1hbmltYXRpb24oXG4gICAgICAka2V5ZnJhbWUtc3VmZml4LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBhdC1yb290IHtcbiAgICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5zaGFrZS1rZXlmcmFtZXMoXG4gICAgICAgICRrZXlmcmFtZS1zdWZmaXgsXG4gICAgICAgICRwb3NpdGlvblksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBoZWlnaHQ6ICRuZXctaGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkbmV3LWhlaWdodCA8ICRoZWlnaHQge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLWljb24tc2l6ZShcbiAgICAgIHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmLm1kYy1zZWxlY3QtLW91dGxpbmVkIHtcbiAgICAgIEBpbmNsdWRlIHRydW5jYXRlLW5vdGNoZWQtb3V0bGluZS1tYXgtd2lkdGgoXG4gICAgICAgICRsZWFkaW5nLWljb24tc2l6ZTogMCxcbiAgICAgICAgJGRyb3Bkb3duLWljb24tc2l6ZTogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgaGVpZ2h0IG9mIG91dGxpbmVkIHNlbGVjdCB3aXRoIGxlYWRpbmcgaWNvbiB2YXJpYW50LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuZXctaGVpZ2h0XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXlmcmFtZS1zdWZmaXggLSBPcHRpb25hbCBzdWZmaXggdG8gdXNlIGZvciBnZW5lcmF0ZWRcbi8vLyAgICAgZmxvYXRpbmcgbGFiZWwga2V5ZnJhbWVzXG4vLy9cbkBtaXhpbiBvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1oZWlnaHQoXG4gICRuZXctaGVpZ2h0LFxuICAka2V5ZnJhbWUtc3VmZml4OiBudWxsLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICBAaWYgJG5ldy1oZWlnaHQgPCAkaGVpZ2h0IHtcbiAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLWljb24tc2l6ZShcbiAgICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1mbG9hdGluZy1sYWJlbC1wb3NpdGlvbi1hbmltYXRpb24oXG4gICAgICAgICRuZXctaGVpZ2h0LFxuICAgICAgICBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplLFxuICAgICAgICAka2V5ZnJhbWUtc3VmZml4LFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIG91dGxpbmVkLXdpdGgtbGVhZGluZy1pY29uLWZsb2F0aW5nLWxhYmVsLXBvc2l0aW9uLWFuaW1hdGlvbihcbiAgICAgICAgJG5ldy1oZWlnaHQsXG4gICAgICAgIHNlbGVjdC1pY29uLXRoZW1lLiRpY29uLXNpemUsXG4gICAgICAgICRrZXlmcmFtZS1zdWZmaXgsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBoZWlnaHQ6ICRuZXctaGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkbmV3LWhlaWdodCA8ICRoZWlnaHQge1xuICAgIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX2dyYXBoaWMge1xuICAgICAgd2lkdGg6IHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemU7XG4gICAgICBoZWlnaHQ6IHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbGlzdC1ldm9sdXRpb24tbWl4aW5zLml0ZW0tc3RhcnQtc2l6ZShcbiAgICAgICR3aWR0aDogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSArIDEycHgsXG4gICAgICAkaGVpZ2h0OiBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgc2VsZWN0LWljb24tdGhlbWUuc2l6ZShcbiAgICAgIHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmLm1kYy1zZWxlY3QtLW91dGxpbmVkIHtcbiAgICAgIEBpbmNsdWRlIHRydW5jYXRlLW5vdGNoZWQtb3V0bGluZS1tYXgtd2lkdGgoXG4gICAgICAgICRsZWFkaW5nLWljb24tc2l6ZTogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICAgJGRyb3Bkb3duLWljb24tc2l6ZTogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8vICRhZGQtbGFiZWwtcGFkZGluZyBpcyBjb3BpZWQgZnJvbSB0ZXh0ZmllbGQncyBtaXhpbiwgZXZlbiB0aG91Z2ggc2VsZWN0XG4vLyBhbHdheXMgc2V0cyBpdCB0byB0cnVlLiBUaGlzIGlzIHRvIHRyeSBhbmQga2VlcCB0aGluZ3MgYWxpZ25lZCBiZXR3ZWVuIHNlbGVjdFxuLy8gYW5kIHRleHRmaWVsZCBmb3Igd2hlbiB0aGVzZSBzdHlsZXMgYXJlIHJlZmFjdG9yZWQgaW50byBzaGFyZWQgc3R5bGVzLlxuQG1peGluIF9hcHBseS1vdXRsaW5lLXNoYXBlLXBhZGRpbmcoXG4gICRwcm9wZXJ0eSxcbiAgJHBhZGRpbmcsXG4gICRhZGQtbGFiZWwtcGFkZGluZzogZmFsc2UsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkcGFkZGluZy1pcy1jdXN0b20tcHJvcDogY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoJHBhZGRpbmcpO1xuICAkcGFkZGluZy1weDogJHBhZGRpbmc7XG4gIEBpZiAoJHBhZGRpbmctaXMtY3VzdG9tLXByb3ApIHtcbiAgICAkcGFkZGluZy1weDogY3VzdG9tLXByb3BlcnRpZXMuZ2V0LWZhbGxiYWNrKCRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgLy8gVGhlIHNoYXBlIHNob3VsZCBvbmx5IGNoYW5nZSB0aGUgcGFkZGluZyBpZiB0aGUgcmFkaXVzIGJlY29tZXMgZ3JlYXRlclxuICAgIC8vIHRoYW4gdGhlIGRlZmF1bHQgcGFkZGluZy4gVGhhdCBtZWFucyB3ZSBuZWVkIHRvIGFkZCBtb3JlIHBhZGRpbmcuXG4gICAgQGlmICgkcGFkZGluZy1weCA+IG5vdGNoZWQtb3V0bGluZS12YXJpYWJsZXMuJGxlYWRpbmctd2lkdGgpIHtcbiAgICAgIC8vIFNldCBhIHB4IHZhbHVlIGlmIGl0J3MgZ3JlYXRlci4gVGhpcyBpcyBlaXRoZXIgdGhlIG9ubHkgdmFsdWUgKGlmXG4gICAgICAvLyB3ZSdyZSBnaXZlbiBhbiBleGFjdCB2YWx1ZSksIG9yIGFuIElFMTEgZmFsbGJhY2sgaWYgd2UncmUgZ2l2ZW4gYVxuICAgICAgLy8gY3VzdG9tIHByb3BlcnR5IGFuZCB0aGUgZmFsbGJhY2sgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBwYWRkaW5nLlxuICAgICAgJHZhbHVlOiAkcGFkZGluZy1weDtcbiAgICAgIEBpZiAoJGFkZC1sYWJlbC1wYWRkaW5nKSB7XG4gICAgICAgIC8vIElmIHRoaXMgaXMgZm9yIHRoZSB0b3AtbGVmdCBsZWFkaW5nLCBhZGQgdGhlIG5vdGNoZWQgb3V0bGluZSBwYWRkaW5nXG4gICAgICAgIC8vIHRvIGtlZXAgaXQgYWxpZ25lZCB3aXRoIHRoZSBsYWJlbFxuICAgICAgICAkdmFsdWU6ICRwYWRkaW5nLXB4ICsgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kcGFkZGluZztcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgQGluY2x1ZGUgZ3NzLmFubm90YXRlKFxuICAgICAgICAoXG4gICAgICAgICAgYWx0ZXJuYXRlOiAkcGFkZGluZy1pcy1jdXN0b20tcHJvcCxcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gICAgQGlmICgkcGFkZGluZy1pcy1jdXN0b20tcHJvcCkge1xuICAgICAgLy8gSWYgaXQncyBhIGN1c3RvbSBwcm9wZXJ0eSwgYWx3YXlzIGFkZCBpdCBzaW5jZSB0aGUgdmFsdWUgbWF5IGNoYW5nZVxuICAgICAgLy8gdG8gYmUgZ3JlYXRlciB0aGFuIHRoZSBwYWRkaW5nIGF0IHJ1bnRpbWUsIGV2ZW4gaWYgdGhlIGZhbGxiYWNrIGlzXG4gICAgICAvLyBub3QgY3VycmVudGx5IGdyZWF0ZXIgdGhhbiB0aGUgZGVmYXVsdCBwYWRkaW5nLlxuICAgICAgJHZhbHVlOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUtdmFyKCRwYWRkaW5nKTtcbiAgICAgIEBpZiAoJGFkZC1sYWJlbC1wYWRkaW5nKSB7XG4gICAgICAgICR2YWx1ZTogY2FsYygjeyR2YWx1ZX0gKyAje25vdGNoZWQtb3V0bGluZS12YXJpYWJsZXMuJHBhZGRpbmd9KTtcbiAgICAgIH1cblxuICAgICAgLy8gSW50ZXJwb2xhdGlvbiBpcyBhIHdvcmthcm91bmQgZm9yIHNhc3Mvc2FzcyMzMjU5LlxuICAgICAgQHN1cHBvcnRzICh0b3A6IG1heCgjezAlfSkpIHtcbiAgICAgICAgLy8gQSBtYXgoKSBmdW5jdGlvbiBtYWtlcyB0aGlzIHJ1bnRpbWUgZHluYW1pYy4gVGhlIHBhZGRpbmcgd2lsbCBiZVxuICAgICAgICAvLyB3aGljaGV2ZXIgaXMgZ3JlYXRlcjogdGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBwYWRkaW5nLCBvciB0aGVcbiAgICAgICAgLy8gY2FsY3VsYXRlZCBjdXN0b20gcHJvcGVydHkgcGx1cyBleHRyYSBwYWRkaW5nLlxuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICAjeyRwcm9wZXJ0eX06IG1heCgjeyRhbmNob3ItcGFkZGluZy1sZWZ0fSwgI3skdmFsdWV9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gUmVtb3ZlcyBmaWxsZWQgYmFzZWxpbmUgYWxpZ25tZW50XG5AbWl4aW4gY2VudGVyLWFsaWduZWQoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtc2VsZWN0X19zZWxlY3RlZC10ZXh0IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LW1peGlucy56ZXJvLXdpZHRoLXByZWZpeCgkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIC8vIEluIG9yZGVyIGZvciBhIGZsZXhib3ggY29udGFpbmVyIHRvIHBhcnRpY2lwYXRlIGluIGJhc2VsaW5lIGFsaWdubWVudCxcbiAgICAvLyBpdCBmb2xsb3dzIHRoZXNlIHJ1bGVzIHRvIGRldGVybWluZSB3aGVyZSBpdHMgYmFzZWxpbmUgaXM6XG4gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1mbGV4Ym94LTEvI2ZsZXgtYmFzZWxpbmVzXG4gICAgLy9cbiAgICAvLyBJbiBvcmRlciB0byBhdm9pZCBsZWFkaW5nIGljb25zIFwiY29udHJvbGxpbmdcIiB0aGUgYmFzZWxpbmUgKHNpbmNlIHRoZXlcbiAgICAvLyBhcmUgdGhlIGZpcnN0IGNoaWxkKSwgZmxleGJveCB3aWxsIGdlbmVyYXRlIGEgYmFzZWxpbmUgZnJvbSBhbnkgY2hpbGRcbiAgICAvLyBmbGV4IGl0ZW1zIHRoYXQgcGFydGljaXBhdGUgaW4gYmFzZWxpbmUgYWxpZ25tZW50LlxuICAgIC8vXG4gICAgLy8gSWNvbnMgYXJlIHNldCB0byBcImFsaWduLXNlbGY6IGNlbnRlclwiLCB3aGlsZSBhbGwgb3RoZXIgY2hpbGRyZW4gYXJlXG4gICAgLy8gYWxpZ25lZCB0byBiYXNlbGluZS4gVGhlIG5leHQgcHJvYmxlbSBpcyBkZWNpZGluZyB3aGljaCBjaGlsZCBpc1xuICAgIC8vIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBiYXNlbGluZS5cbiAgICAvL1xuICAgIC8vIEFjY29yZGluZyB0byBzcGVjLCB0aGUgaXRlbSB3aXRoIHRoZSBsYXJnZXN0IGRpc3RhbmNlIGJldHdlZW4gaXRzXG4gICAgLy8gYmFzZWxpbmUgYW5kIHRoZSBlZGdlIG9mIHRoZSBjcm9zcyBheGlzIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoYXQgZWRnZSxcbiAgICAvLyBtYWtpbmcgaXQgdGhlIGJhc2VsaW5lIG9mIHRoZSBjb250YWluZXIuXG4gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1mbGV4Ym94LTEvI2Jhc2VsaW5lLXBhcnRpY2lwYXRpb25cbiAgICAvL1xuICAgIC8vIEZvciB0aGUgZmlsbGVkIHZhcmlhbnQsIHRoZSBwc2V1ZG8gOjpiZWZvcmUgc3RydXQgaXMgdGhlIFwibGFyZ2VzdFwiXG4gICAgLy8gY2hpbGQgc2luY2UgdGhlIGlucHV0IGhhcyBhIGhlaWdodCBvZiAyOHB4IGFuZCB0aGUgc3RydXQgaXMgNDBweC4gV2VcbiAgICAvLyBjYW4gZW11bGF0ZSBjZW50ZXIgYWxpZ25tZW50IGFuZCBmb3JjZSB0aGUgYmFzZWxpbmUgdG8gdXNlIHRoZSBpbnB1dFxuICAgIC8vIHRleHQgYnkgbWFraW5nIHRoZSBpbnB1dCB0aGUgZnVsbCBoZWlnaHQgb2YgdGhlIGNvbnRhaW5lciBhbmQgcmVtb3ZpbmdcbiAgICAvLyB0aGUgYmFzZWxpbmUgc3RydXQuXG4gICAgLy9cbiAgICAvLyBJRTExIGRvZXMgbm90IHJlc3BlY3QgdGhpcywgYW5kIG1ha2VzIHRoZSBsZWFkaW5nIGljb24gKGlmIHByZXNlbnQpXG4gICAgLy8gdGhlIGJhc2VsaW5lLlxuICAgIC5tZGMtc2VsZWN0X19zZWxlY3RlZC10ZXh0LWNvbnRhaW5lciB7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmbG9hdGluZyBsYWJlbCBmb3IgYSBzZWxlY3Qgd2l0aCBsZWFkaW5nIGljb24uXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRpY29uLXNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgbGVhZGluZyBpY29uLlxuLy8vXG5AbWl4aW4gbGVhZGluZy1pY29uLWZsb2F0aW5nLWxhYmVsLXBvc2l0aW9uKFxuICAkaWNvbi1zaXplOiBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1zaXplLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGljb24tdG90YWwtd2lkdGg6ICRpY29uLXNpemUgKyAyICogc2VsZWN0LWljb24tdGhlbWUuJGljb24taG9yaXpvbnRhbC1tYXJnaW47XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcG9zaXRpb24obGVmdCwgJGljb24tdG90YWwtd2lkdGgpO1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBmbG9hdGluZyBsYWJlbCBwb3NpdGlvbiBhbmQgYW5pbWF0aW9ucyBmb3IgYSBnaXZlbiBoZWlnaHQgZm9yIGFuXG4vLy8gb3V0bGluZWQgc2VsZWN0IHdpdGggbGVhaW5nIGljb24uXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRpY29uLXNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgbGVhZGluZyBpY29uLlxuLy8vIEBwYXJhbSB7c3RyaW5nfSAka2V5ZnJhbWUtc3VmZml4IC0gVGhlIHN1ZmZpeCBmb3IgdGhlIG5ld2x5IGdlbmVyYXRlZCBrZXlmcmFtZXMuXG4vLy9cbkBtaXhpbiBvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1mbG9hdGluZy1sYWJlbC1wb3NpdGlvbi1hbmltYXRpb24oXG4gICRoZWlnaHQsXG4gICRpY29uLXNpemUsXG4gICRrZXlmcmFtZS1zdWZmaXg6IHNlbGVjdC1vdXRsaW5lZC1sZWFkaW5nLWljb24tI3skaGVpZ2h0fSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgJGljb24tdG90YWwtd2lkdGg6ICRpY29uLXNpemUgKyAyICogc2VsZWN0LWljb24tdGhlbWUuJGljb24taG9yaXpvbnRhbC1tYXJnaW47XG4gICRyZXN0aW5nLXBvc2l0aW9uLXg6ICRpY29uLXRvdGFsLXdpZHRoIC1cbiAgICBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1ob3Jpem9udGFsLW1hcmdpbjtcbiAgJGZsb2F0LXBvc2l0aW9uLXk6IGdldC1vdXRsaW5lZC1sYWJlbC1wb3NpdGlvbi15KCRoZWlnaHQpO1xuICAkZmxvYXQtcG9zaXRpb24teDogJGljb24tc2l6ZSArIHNlbGVjdC1pY29uLXRoZW1lLiRpY29uLWhvcml6b250YWwtbWFyZ2luIC1cbiAgICBub3RjaGVkLW91dGxpbmUtdmFyaWFibGVzLiRub3RjaC1ndXR0ZXItc2l6ZTtcblxuICAvLyBSZXN0aW5nIGxhYmVsIHBvc2l0aW9uXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXBvc2l0aW9uKGxlZnQsICRyZXN0aW5nLXBvc2l0aW9uLXgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZsb2F0aW5nIGxhYmVsIHBvc2l0aW9uXG4gIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuZmxvYXRpbmctbGFiZWwtZmxvYXQtcG9zaXRpb24tYWJzb2x1dGUoXG4gICAgJGZsb2F0LXBvc2l0aW9uLXksXG4gICAgJGZsb2F0LXBvc2l0aW9uLXgsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICAvLyBGbG9hdGluZyBsYWJlbCBhbmltYXRpb25cbiAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLnNoYWtlLWFuaW1hdGlvbihcbiAgICAka2V5ZnJhbWUtc3VmZml4LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBhdC1yb290IHtcbiAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuc2hha2Uta2V5ZnJhbWVzKFxuICAgICAgJGtleWZyYW1lLXN1ZmZpeCxcbiAgICAgICRmbG9hdC1wb3NpdGlvbi15LFxuICAgICAgJGZsb2F0LXBvc2l0aW9uLXgsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAka2V5ZnJhbWUtc3VmZml4LXJ0bDogI3ska2V5ZnJhbWUtc3VmZml4fS1ydGw7XG4gIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5zaGFrZS1hbmltYXRpb24oXG4gICAgICAka2V5ZnJhbWUtc3VmZml4LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG4gIEBhdC1yb290IHtcbiAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuc2hha2Uta2V5ZnJhbWVzKFxuICAgICAgJGtleWZyYW1lLXN1ZmZpeC1ydGwsXG4gICAgICAkZmxvYXQtcG9zaXRpb24teSxcbiAgICAgIC0oJGZsb2F0LXBvc2l0aW9uLXgpLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbi8vL1xuLy8vIFRydW5jYXRlcyB0aGUgbWF4LXdpZHRoIG9mIHRoZSBmbG9hdGluZyBsYWJlbCBhY2NvcmRpbmcgdG8gc2l6ZXMgb2YgdGhlXG4vLy8gbGVhZGluZyBpY29uIGFuZCBkcm9wZG93biBpY29uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWFkaW5nLWljb24tc2l6ZSAtIFNpemUgb2YgbGVhZGluZyBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZHJvcGRvd24taWNvbi1zaXplIC0gU2l6ZSBvZiBkcm9wZG93biBpY29uLlxuLy8vXG5AbWl4aW4gdHJ1bmNhdGUtZmxvYXRpbmctbGFiZWwtbWF4LXdpZHRoKFxuICAkbGVhZGluZy1pY29uLXNpemUsXG4gICRkcm9wZG93bi1pY29uLXNpemUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkdHJ1bmNhdGlvbjogc2VsZWN0LWljb24tdGhlbWUuJGljb24taG9yaXpvbnRhbC1tYXJnaW4gKiAyICtcbiAgICAkZHJvcGRvd24taWNvbi1zaXplO1xuXG4gIEBpZiAkbGVhZGluZy1pY29uLXNpemUgPiAwIHtcbiAgICAkdHJ1bmNhdGlvbjogJHRydW5jYXRpb24gK1xuICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGljb24taG9yaXpvbnRhbC1tYXJnaW4gKlxuICAgICAgMiArXG4gICAgICAkbGVhZGluZy1pY29uLXNpemU7XG4gIH0gQGVsc2Uge1xuICAgICR0cnVuY2F0aW9uOiAkdHJ1bmNhdGlvbiArICRvdXRsaW5lLWxhYmVsLW9mZnNldDtcbiAgfVxuXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5tYXgtd2lkdGgoXG4gICAgICBjYWxjKDEwMCUgLSAjeyR0cnVuY2F0aW9ufSksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgJHNjYWxlOiBmbG9hdGluZy1sYWJlbC12YXJpYWJsZXMuJGZsb2F0LXNjYWxlO1xuICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5tYXgtd2lkdGgoXG4gICAgICBjYWxjKDEwMCUgLyAjeyRzY2FsZX0gLSAjeyR0cnVuY2F0aW9ufSAvICN7JHNjYWxlfSksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuLy8vXG4vLy8gVHJ1bmNhdGVzIHRoZSBtYXgtd2lkdGggb2YgdGhlIG5vdGNoZWQgb3V0bGluZSBhY2NvcmRpbmcgdG8gdGhlIHNpemVzIG9mXG4vLy8gdGhlIGxlYWRpbmcgaWNvbiBhbmQgZHJvcGRvd24gaWNvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVhZGluZy1pY29uLXNpemUgLSBTaXplIG9mIGxlYWRpbmcgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGRyb3Bkb3duLWljb24tc2l6ZSAtIFNpemUgb2YgZHJvcGRvd24gaWNvbi5cbi8vL1xuQG1peGluIHRydW5jYXRlLW5vdGNoZWQtb3V0bGluZS1tYXgtd2lkdGgoXG4gICRsZWFkaW5nLWljb24tc2l6ZSxcbiAgJGRyb3Bkb3duLWljb24tc2l6ZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICR0cnVuY2F0aW9uOiBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1ob3Jpem9udGFsLW1hcmdpbiAqIDIgK1xuICAgICRkcm9wZG93bi1pY29uLXNpemUgKyBub3RjaGVkLW91dGxpbmUtdmFyaWFibGVzLiRsZWFkaW5nLXdpZHRoO1xuXG4gIEBpZiAkbGVhZGluZy1pY29uLXNpemUgPiAwIHtcbiAgICAkdHJ1bmNhdGlvbjogJHRydW5jYXRpb24gK1xuICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGljb24taG9yaXpvbnRhbC1tYXJnaW4gK1xuICAgICAgJGxlYWRpbmctaWNvbi1zaXplO1xuICB9XG4gIC5tZGMtc2VsZWN0X19hbmNob3Ige1xuICAgIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMubm90Y2gtbWF4LXdpZHRoKFxuICAgICAgY2FsYygxMDAlIC0gI3skdHJ1bmNhdGlvbn0pLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbi8vLyBTZWxlY3RvciBmb3IgZm9jdXNlZCBzdGF0ZVxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIF9pZi1mb2N1c2VkIHtcbiAgJi5tZGMtc2VsZWN0LS1mb2N1c2VkIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0b3IgZm9yIGVuYWJsZWQgc3RhdGVcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfaWYtZW5hYmxlZCB7XG4gICY6bm90KC5tZGMtc2VsZWN0LS1kaXNhYmxlZCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3RvciBmb3IgZGlzYWJsZWQgc3RhdGVcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfaWYtZGlzYWJsZWQge1xuICAmLm1kYy1zZWxlY3QtLWRpc2FibGVkIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gX2luay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGlmICRjb2xvciB7XG4gICAgLm1kYy1zZWxlY3RfX3NlbGVjdGVkLXRleHQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS1taXhpbnMucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfY29udGFpbmVyLWZpbGwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpZiAkY29sb3Ige1xuICAgIC5tZGMtc2VsZWN0X19hbmNob3Ige1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS1taXhpbnMucHJvcGVydHkoYmFja2dyb3VuZC1jb2xvciwgJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9ib3R0b20tbGluZS1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGlmICRjb2xvciB7XG4gICAgLm1kYy1saW5lLXJpcHBsZSB7XG4gICAgICBAaW5jbHVkZSBsaW5lLXJpcHBsZS1taXhpbnMuaW5hY3RpdmUtY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZm9jdXNlZC1saW5lLXJpcHBsZS1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGlmICRjb2xvciB7XG4gICAgLm1kYy1saW5lLXJpcHBsZSB7XG4gICAgICBAaW5jbHVkZSBsaW5lLXJpcHBsZS1taXhpbnMuYWN0aXZlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX291dGxpbmUtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpZiAkY29sb3Ige1xuICAgIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuQG1peGluIF9ob3Zlci1vdXRsaW5lLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaWYgJGNvbG9yIHtcbiAgICAubWRjLW5vdGNoZWQtb3V0bGluZSB7XG4gICAgICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLmNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2ZvY3VzZWQtb3V0bGluZS1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGlmICRjb2xvciB7XG4gICAgLm1kYy1ub3RjaGVkLW91dGxpbmUge1xuICAgICAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5zdHJva2Utd2lkdGgoXG4gICAgICAgICRvdXRsaW5lZC1zdHJva2Utd2lkdGgsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9sYWJlbC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGlmICRjb2xvciB7XG4gICAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaWYgJGNvbG9yIHtcbiAgICAubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBkcm9wZG93biBpY29uIHRvIHRoZSBzcGVjaWZpZWQgY29sb3IuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBfZHJvcGRvd24taWNvbi1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGlmICRjb2xvciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgLm1kYy1zZWxlY3RfX2Ryb3Bkb3duLWljb24ge1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS1taXhpbnMucHJvcGVydHkoZmlsbCwgJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAyMCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL21peGlucycgYXMgdGhlbWUtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3N0YXRlJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS92YXJpYWJsZXMnIGFzIHRoZW1lLXZhcmlhYmxlcztcblxuJGljb24tc2l6ZTogMjRweCAhZGVmYXVsdDtcbiRkZW5zZS1pY29uLXNpemU6IDIwcHggIWRlZmF1bHQ7XG4kaWNvbi1ob3Jpem9udGFsLW1hcmdpbjogMTJweCAhZGVmYXVsdDtcblxuJGljb24tY29sb3I6IHJnYmEodGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNTQpICFkZWZhdWx0O1xuJGRpc2FibGVkLWljb24tY29sb3I6IHJnYmEoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjM4XG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBzaXplIChib3RoIHdpZHRoIGFuZCBoZWlnaHQpIG9mIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSAtIHRoZSBpbnRlbmRlZCBpY29uIHNpemUuXG4vLy9cbkBtaXhpbiBzaXplKCRzaXplLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAubWRjLXNlbGVjdF9faWNvbiB7XG4gICAgICB3aWR0aDogJHNpemU7XG4gICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgZm9udC1zaXplOiAkc2l6ZTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGljb24tY29sb3IoJGNvbG9yLW9yLW1hcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAmOm5vdCgubWRjLXNlbGVjdC0tZGlzYWJsZWQpIHtcbiAgICBAaW5jbHVkZSBfaWNvbi1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kZWZhdWx0LXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgJi5tZGMtc2VsZWN0LS1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX2ljb24tY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIGljb24taG9yaXpvbnRhbC1tYXJnaW5zKCRsZWZ0LCAkcmlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgLm1kYy1zZWxlY3RfX2ljb24ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KG1hcmdpbiwgJGxlZnQsICRyaWdodCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfaWNvbi1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGlmICRjb2xvciB7XG4gICAgLm1kYy1zZWxlY3RfX2ljb24ge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS1taXhpbnMucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIE5PVEU6IHRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhZm9yZW1lbnRpb25lZCBjbGFzc2VzLlxuXG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczpsaXN0JztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvcmlwcGxlL3JpcHBsZSc7XG5AdXNlICdAbWF0ZXJpYWwvcmlwcGxlL3JpcHBsZS10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICdAbWF0ZXJpYWwvZGVuc2l0eS9mdW5jdGlvbnMnIGFzIGRlbnNpdHktZnVuY3Rpb25zO1xuQHVzZSAnQG1hdGVyaWFsL2RvbS9taXhpbnMnIGFzIGRvbS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvc2hhcGUvbWl4aW5zJyBhcyBzaGFwZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUtY29sb3InO1xuQHVzZSAnLi9ldm9sdXRpb24tdmFyaWFibGVzJyBhcyB2YXJpYWJsZXM7XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHdpdGhvdXQtcmlwcGxlKCRxdWVyeSk7XG4gIEBpbmNsdWRlIHdpdGgtcmlwcGxlKCRxdWVyeSk7XG59XG5cbkBtaXhpbiB3aXRob3V0LXJpcHBsZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC10eXBvZ3JhcGh5OiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgdHlwb2dyYXBoeSk7XG5cbiAgLy9cbiAgLy8gSXRlbXNcbiAgLy9cblxuICBAaW5jbHVkZSBsaXN0LXByaW1hcnktdGV4dC1pbmstY29sb3IodGV4dC1wcmltYXJ5LW9uLWJhY2tncm91bmQsICRxdWVyeSk7XG4gIEBpbmNsdWRlIGxpc3Qtc2Vjb25kYXJ5LXRleHQtaW5rLWNvbG9yKHRleHQtc2Vjb25kYXJ5LW9uLWJhY2tncm91bmQsICRxdWVyeSk7XG4gIEBpbmNsdWRlIGxpc3Qtb3ZlcmxpbmUtdGV4dC1pbmstY29sb3IodGV4dC1oaW50LW9uLWJhY2tncm91bmQsICRxdWVyeSk7XG4gIEBpbmNsdWRlIGxpc3QtaWNvbi1maWxsLWNvbG9yKHRyYW5zcGFyZW50LCAkcXVlcnkpO1xuICBAaW5jbHVkZSBsaXN0LWljb24taW5rLWNvbG9yKHRleHQtaWNvbi1vbi1iYWNrZ3JvdW5kLCAkcXVlcnkpO1xuICBAaW5jbHVkZSBsaXN0LW1ldGEtdGV4dC1pbmstY29sb3IodGV4dC1oaW50LW9uLWJhY2tncm91bmQsICRxdWVyeSk7XG4gIEBpbmNsdWRlIGxpc3QtZGlzYWJsZWQtb3BhY2l0eSh2YXJpYWJsZXMuJGNvbnRlbnQtZGlzYWJsZWQtb3BhY2l0eSwgJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgbGlzdC1kaXNhYmxlZC1pbmstY29sb3IodmFyaWFibGVzLiRjb250ZW50LWRpc2FibGVkLWNvbG9yLCAkcXVlcnkpO1xuICBAaW5jbHVkZSBsaXN0LXNlbGVjdGVkLWluay1jb2xvcih2YXJpYWJsZXMuJGNvbnRlbnQtc2VsZWN0ZWQtY29sb3IsICRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgZ3JvdXAtc3ViaGVhZGVyLWluay1jb2xvcih0ZXh0LXByaW1hcnktb24tYmFja2dyb3VuZCwgJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBfaGlnaC1jb250cmFzdC1tb2RlKCRxdWVyeSk7XG5cbiAgLm1kYy1saXN0IHtcbiAgICBAaW5jbHVkZSBsaXN0LWJhc2UoJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW1fX3dyYXBwZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbSB7XG4gICAgQGluY2x1ZGUgaXRlbS1iYXNlKCRxdWVyeTogJHF1ZXJ5KTtcblxuICAgIEBpbmNsdWRlIF9vbmUtbGluZS1pdGVtLWRlbnNpdHkoXG4gICAgICB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiR0d28tbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3RocmVlLWxpbmUtaXRlbS1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiR0aHJlZS1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIG9uZS1saW5lLWl0ZW0tc3RhcnQtYWxpZ25tZW50KGNlbnRlciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR3by1saW5lLWl0ZW0tc3RhcnQtYWxpZ25tZW50KFxuICAgICAgJGFsaWdubWVudDogZmxleC1zdGFydCxcbiAgICAgICRvZmZzZXQ6IDE2cHgsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgdGhyZWUtbGluZS1pdGVtLXN0YXJ0LWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiAxNnB4LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgb25lLWxpbmUtaXRlbS1lbmQtYWxpZ25tZW50KGNlbnRlciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR3by1saW5lLWl0ZW0tZW5kLWFsaWdubWVudChjZW50ZXIsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0aHJlZS1saW5lLWl0ZW0tZW5kLWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiAxNnB4LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IG1vdXNlIGN1cnNvciBmb3IgZGlzYWJsZWQgYW5kIG5vbi1pbnRlcmFjdGl2ZSBpdGVtcy5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLWRpc2FibGVkLFxuICAgICYubWRjLWxpc3QtaXRlbS0tbm9uLWludGVyYWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGN1cnNvcjogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3IgY29tcG9uZW50cyB1c2luZyBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQsIHRoZSBmb2N1cyBwc2V1ZG9jbGFzcyBpc1xuICAgIC8vIG5ldmVyIGFwcGxpZWQgYW5kIHVzZSBgLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtZm9jdXNlZGAgaW5zdGVhZC5cbiAgICAmOm5vdCgubWRjLWxpc3QtaXRlbS0tc2VsZWN0ZWQpOmZvY3VzOjpiZWZvcmUsIC8vIGxpbnQtZGlzYWJsZS1mb2N1cy1wc3VlZG8tc2VsZWN0b3JcbiAgICAmLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtZm9jdXNlZDo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGRvbS1taXhpbnMudHJhbnNwYXJlbnQtYm9yZGVyKCRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLXNlbGVjdGVkOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZG9tLW1peGlucy50cmFuc3BhcmVudC1ib3JkZXIoXG4gICAgICAgICRib3JkZXItd2lkdGg6IDNweCxcbiAgICAgICAgJGJvcmRlci1zdHlsZTogZG91YmxlLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBsaW50LWRpc2FibGUtZm9jdXMtcHN1ZWRvLXNlbGVjdG9yXG4gICAgJi5tZGMtbGlzdC1pdGVtLS1zZWxlY3RlZDpmb2N1czo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGRvbS1taXhpbnMudHJhbnNwYXJlbnQtYm9yZGVyKFxuICAgICAgICAkYm9yZGVyLXdpZHRoOiAzcHgsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIE92ZXJyaWRlIGFuY2hvciB0YWcgc3R5bGVzIGZvciB0aGUgdXNlLWNhc2Ugb2YgYSBsaXN0IGJlaW5nIHVzZWQgZm9yIG5hdmlnYXRpb25cbiAgLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItbWF4LXR5cGUsc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG4gIGEubWRjLWxpc3QtaXRlbSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbiAgfVxuICAvLyBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW1heC10eXBlLHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXG4gIC5tZGMtbGlzdC1pdGVtX19zdGFydCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW1fX2NvbnRlbnQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkub3ZlcmZsb3ctZWxsaXBzaXMoJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgZmxleDogMTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyAmLFxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzICYge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEaXNhYmxlIGludGVyYWN0aW9uIG9uIGxhYmVsIGVsZW1lbnRzIHRoYXQgbWF5IGF1dG9tYXRpY2FsbHlcbiAgICAvLyB0b2dnbGUgY29ycmVzcG9uZGluZyBjaGVja2JveCAvIHJhZGlvIGlucHV0LlxuICAgICZbZm9yXSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbV9fcHJpbWFyeS10ZXh0IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoc3VidGl0bGUxLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkub3ZlcmZsb3ctZWxsaXBzaXMoJHF1ZXJ5KTtcblxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyAmLFxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzICYge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgICAkdG9wOiAyOHB4LFxuICAgICAgICAkYm90dG9tOiAyMHB4LFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbV9fc2Vjb25kYXJ5LXRleHQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShib2R5MiwgJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5Lm92ZXJmbG93LWVsbGlwc2lzKCRxdWVyeSk7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgJHRvcDogMjBweCxcbiAgICAgICRkaXNwbGF5OiBibG9jayxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzICYge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtb3ZlcmxpbmUgJiB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBsaW5lLWhlaWdodDogYXV0bztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbV9fb3ZlcmxpbmUtdGV4dCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50eXBvZ3JhcGh5KG92ZXJsaW5lLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkub3ZlcmZsb3ctZWxsaXBzaXMoJHF1ZXJ5KTtcblxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyAmIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudGV4dC1iYXNlbGluZShcbiAgICAgICAgJHRvcDogMjRweCxcbiAgICAgICAgJGJvdHRvbTogMjBweCxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtdGhyZWUtbGluZXMgJiB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoXG4gICAgICAgICR0b3A6IDI4cHgsXG4gICAgICAgICRib3R0b206IDIwcHgsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctYXZhdGFyIHtcbiAgICBAaW5jbHVkZSBpdGVtLXN0YXJ0LXNwYWNpbmcoMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc2l6ZSg0MHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZSgzMnB4LCAyMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tb3ZlcmxpbmUtYmFzZWxpbmUoMjhweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW1ldGEtYmFzZWxpbmUoJHRvcDogMzJweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF9vbmUtbGluZS1pdGVtLXRhbGwtZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kb25lLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXRhbGwtZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kdHdvLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0IHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWljb24ge1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc2l6ZSgyNHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgaXRlbS1zdGFydC1zcGFjaW5nKFxuICAgICAgJGxlYWRpbmc6IDE2cHgsXG4gICAgICAkdHJhaWxpbmc6IDMycHgsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZSgzMnB4LCAyMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tb3ZlcmxpbmUtYmFzZWxpbmUoMjhweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW1ldGEtYmFzZWxpbmUoJHRvcDogMzJweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF9vbmUtbGluZS1pdGVtLXRhbGwtZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kb25lLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXRhbGwtZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kdHdvLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy10aHVtYm5haWwge1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc3BhY2luZygxNnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgaXRlbS1zdGFydC1zaXplKDQwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1wcmltYXJ5LWJhc2VsaW5lKDMycHgsIDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1vdmVybGluZS1iYXNlbGluZSgyOHB4LCAyMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tbWV0YS1iYXNlbGluZSgkdG9wOiAzMnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX29uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiR0d28tbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWltYWdlIHtcbiAgICBAaW5jbHVkZSBpdGVtLXN0YXJ0LXNwYWNpbmcoMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc2l6ZSg1NnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZSgzMnB4LCAyMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tb3ZlcmxpbmUtYmFzZWxpbmUoMjhweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW1ldGEtYmFzZWxpbmUoJHRvcDogMzJweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF9vbmUtbGluZS1pdGVtLXRhbGxlci1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiR0d28tbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLXZpZGVvIHtcbiAgICBAaW5jbHVkZSB0d28tbGluZS1pdGVtLXN0YXJ0LWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiA4cHgsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgaXRlbS1zdGFydC1zcGFjaW5nKCRsZWFkaW5nOiAwLCAkdHJhaWxpbmc6IDE2cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBpdGVtLXN0YXJ0LXNpemUoJHdpZHRoOiAxMDBweCwgJGhlaWdodDogNTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXByaW1hcnktYmFzZWxpbmUoMzJweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW92ZXJsaW5lLWJhc2VsaW5lKDI4cHgsIDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1tZXRhLWJhc2VsaW5lKCR0b3A6IDMycHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfb25lLWxpbmUtaXRlbS10YWxsZXItZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kb25lLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXRhbGwtZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kdHdvLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1jaGVja2JveCB7XG4gICAgJGxlYWRpbmc6IGFic29yYi1vdmVyZmxvdygxNnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcbiAgICAkdHJhaWxpbmc6IGFic29yYi1vdmVyZmxvdygzMnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcbiAgICAkdG9wOiBhYnNvcmItb3ZlcmZsb3coMTZweCwgJGFjdHVhbDogNDBweCwgJGF2YWlsYWJsZTogMjRweCk7XG5cbiAgICBAaW5jbHVkZSBpdGVtLXN0YXJ0LXNwYWNpbmcoJGxlYWRpbmcsICR0cmFpbGluZywgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc2l6ZSg0MHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgdHdvLWxpbmUtaXRlbS1zdGFydC1hbGlnbm1lbnQoXG4gICAgICAkYWxpZ25tZW50OiBmbGV4LXN0YXJ0LFxuICAgICAgJG9mZnNldDogJHRvcCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1wcmltYXJ5LWJhc2VsaW5lKDMycHgsIDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1vdmVybGluZS1iYXNlbGluZSgyOHB4LCAyMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tbWV0YS1iYXNlbGluZSgkdG9wOiAzMnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX29uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiR0d28tbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLXJhZGlvIHtcbiAgICAkbGVhZGluZzogYWJzb3JiLW92ZXJmbG93KDE2cHgsICRhY3R1YWw6IDQwcHgsICRhdmFpbGFibGU6IDI0cHgpO1xuICAgICR0cmFpbGluZzogYWJzb3JiLW92ZXJmbG93KDMycHgsICRhY3R1YWw6IDQwcHgsICRhdmFpbGFibGU6IDI0cHgpO1xuICAgICR0b3A6IGFic29yYi1vdmVyZmxvdygxNnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcblxuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc3BhY2luZygkbGVhZGluZywgJHRyYWlsaW5nLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgaXRlbS1zdGFydC1zaXplKDQwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0d28tbGluZS1pdGVtLXN0YXJ0LWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiAkdG9wLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXByaW1hcnktYmFzZWxpbmUoMzJweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW92ZXJsaW5lLWJhc2VsaW5lKDI4cHgsIDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1tZXRhLWJhc2VsaW5lKCR0b3A6IDMycHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfb25lLWxpbmUtaXRlbS10YWxsLWRlbnNpdHkoXG4gICAgICB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS10YWxsLWRlbnNpdHkoXG4gICAgICB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctc3dpdGNoIHtcbiAgICBAaW5jbHVkZSBpdGVtLXN0YXJ0LXNwYWNpbmcoMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc2l6ZSgkd2lkdGg6IDM2cHgsICRoZWlnaHQ6IDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0d28tbGluZS1pdGVtLXN0YXJ0LWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiAxNnB4LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXByaW1hcnktYmFzZWxpbmUoMzJweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW92ZXJsaW5lLWJhc2VsaW5lKDI4cHgsIDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1tZXRhLWJhc2VsaW5lKCR0b3A6IDMycHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfb25lLWxpbmUtaXRlbS10YWxsLWRlbnNpdHkoXG4gICAgICB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS10YWxsLWRlbnNpdHkoXG4gICAgICB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRyYWlsaW5nLWljb24ge1xuICAgIEBpbmNsdWRlIGl0ZW0tZW5kLXNwYWNpbmcoMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tZW5kLXNpemUoMjRweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHJhaWxpbmctbWV0YSB7XG4gICAgQGluY2x1ZGUgdHdvLWxpbmUtaXRlbS1lbmQtYWxpZ25tZW50KGZsZXgtc3RhcnQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0aHJlZS1saW5lLWl0ZW0tZW5kLWFsaWdubWVudChmbGV4LXN0YXJ0LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgaXRlbS1lbmQtc3BhY2luZygkbGVhZGluZzogMjhweCwgJHRyYWlsaW5nOiAxNnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tZW5kLWJhc2VsaW5lKCR0b3A6IDI4cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdGhyZWUtbGluZS1pdGVtLWVuZC1iYXNlbGluZSgkdG9wOiAyOHB4LCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgICAubWRjLWxpc3QtaXRlbV9fZW5kIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShjYXB0aW9uLCAkcXVlcnkpO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRyYWlsaW5nLWNoZWNrYm94IHtcbiAgICAkbGVhZGluZzogYWJzb3JiLW92ZXJmbG93KDMycHgsICRhY3R1YWw6IDQwcHgsICRhdmFpbGFibGU6IDI0cHgpO1xuICAgICR0cmFpbGluZzogYWJzb3JiLW92ZXJmbG93KDE2cHgsICRhY3R1YWw6IDQwcHgsICRhdmFpbGFibGU6IDI0cHgpO1xuICAgICR0b3A6IGFic29yYi1vdmVyZmxvdygxNnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcblxuICAgIEBpbmNsdWRlIGl0ZW0tZW5kLXNwYWNpbmcoJGxlYWRpbmcsICR0cmFpbGluZywgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tZW5kLXNpemUoNDBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHRocmVlLWxpbmUtaXRlbS1lbmQtYWxpZ25tZW50KFxuICAgICAgJGFsaWdubWVudDogZmxleC1zdGFydCxcbiAgICAgICRvZmZzZXQ6ICR0b3AsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC10cmFpbGluZy1yYWRpbyB7XG4gICAgJGxlYWRpbmc6IGFic29yYi1vdmVyZmxvdygzMnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcbiAgICAkdHJhaWxpbmc6IGFic29yYi1vdmVyZmxvdygxNnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcbiAgICAkdG9wOiBhYnNvcmItb3ZlcmZsb3coMTZweCwgJGFjdHVhbDogNDBweCwgJGF2YWlsYWJsZTogMjRweCk7XG5cbiAgICBAaW5jbHVkZSBpdGVtLWVuZC1zcGFjaW5nKCRsZWFkaW5nLCAkdHJhaWxpbmcsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBpdGVtLWVuZC1zaXplKDQwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0aHJlZS1saW5lLWl0ZW0tZW5kLWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiAkdG9wLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHJhaWxpbmctc3dpdGNoIHtcbiAgICBAaW5jbHVkZSBpdGVtLWVuZC1zcGFjaW5nKDE2cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBpdGVtLWVuZC1zaXplKCR3aWR0aDogMzZweCwgJGhlaWdodDogMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHRocmVlLWxpbmUtaXRlbS1lbmQtYWxpZ25tZW50KFxuICAgICAgJGFsaWdubWVudDogZmxleC1zdGFydCxcbiAgICAgICRvZmZzZXQ6IDE2cHgsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC1vdmVybGluZSB7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZSgyMHB4LCAwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdGhyZWUtbGluZS1pdGVtLXByaW1hcnktYmFzZWxpbmUoMjBweCwgMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICAvLyBUaGlzIG11c3QgYmUgc3BlY2lmaWVkIGxhc3QgdG8gZW5zdXJlIHRoYXQgUlRMIHBhZGRpbmcgdGFrZXMgcHJpb3JpdHkgb3ZlclxuICAvLyBMVFIgcGFkZGluZyBpbiB0aGUgY2FzY2FkZS5cbiAgLm1kYy1saXN0LWl0ZW0ge1xuICAgIEBpbmNsdWRlIGl0ZW0tc3BhY2luZygxNnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICAvL1xuICAvLyBHcm91cGluZ1xuICAvL1xuXG4gIC5tZGMtbGlzdC1ncm91cCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIENhbmNlbCB0b3AvYm90dG9tIHBhZGRpbmcgb24gaW5kaXZpZHVhbCBsaXN0cyB3aXRoaW4gZ3JvdXBcbiAgICAgIC5tZGMtZGVwcmVjYXRlZC1saXN0IHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtZ3JvdXBfX3N1YmhlYWRlciB7XG4gICAgJG1kYy1saXN0LXN1YmhlYWRlci12aXJ0dWFsLWhlaWdodDogM3JlbTtcbiAgICAkbWRjLWxpc3Qtc3ViaGVhZGVyLWxlYWRpbmc6IG1hcC5nZXQoXG4gICAgICBtYXAuZ2V0KHR5cG9ncmFwaHkuJHN0eWxlcywgYm9keTEpLFxuICAgICAgbGluZS1oZWlnaHRcbiAgICApO1xuICAgICRtZGMtbGlzdC1zdWJoZWFkZXItbWFyZ2luOiBjYWxjKFxuICAgICAgKCN7JG1kYy1saXN0LXN1YmhlYWRlci12aXJ0dWFsLWhlaWdodH0gLSAjeyRtZGMtbGlzdC1zdWJoZWFkZXItbGVhZGluZ30pIC9cbiAgICAgICAgMlxuICAgICk7XG5cbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoc3VidGl0bGUxLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBtYXJnaW46ICRtZGMtbGlzdC1zdWJoZWFkZXItbWFyZ2luIHZhcmlhYmxlcy4kc2lkZS1wYWRkaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIERpdmlkZXJzXG4gIC8vXG5cbiAgJGRpdmlkZXItY29sb3I6IGlmKFxuICAgIHRoZW1lLWNvbG9yLnRvbmUodGhlbWUtY29sb3IuJGJhY2tncm91bmQpID09ICdkYXJrJyxcbiAgICB2YXJpYWJsZXMuJGRpdmlkZXItY29sb3Itb24tZGFyay1iZyxcbiAgICB2YXJpYWJsZXMuJGRpdmlkZXItY29sb3Itb24tbGlnaHQtYmdcbiAgKTtcblxuICBAaW5jbHVkZSBkaXZpZGVyLWNvbG9yKCRkaXZpZGVyLWNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGRpdmlkZXItaGVpZ2h0KDFweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC5tZGMtbGlzdC1kaXZpZGVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgcGFkZGluZzogMDtcblxuICAgICAgLy8gQWxsb3dzIHRoZSB1c2Ugb2YgcGFkZGluZyB0byBzcGVjaWZ5IGxlYWRpbmcgYW5kIHRyYWlsaW5nIGluc2V0c1xuICAgICAgLy8gaW5kZXBlbmRlbnRseS5cbiAgICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhlIGJhc2UgaW5zZXQgdmFyaWFudCBjb3JyZXNwb25kcyB0byB0aGUgaXRlbSdzIHBhZGRpbmcuXG4gIC5tZGMtbGlzdC1kaXZpZGVyLFxuICAubWRjLWxpc3QtZGl2aWRlci0td2l0aC1sZWFkaW5nLXRleHQsXG4gIC5tZGMtbGlzdC1kaXZpZGVyLS13aXRoLWxlYWRpbmctaWNvbixcbiAgLm1kYy1saXN0LWRpdmlkZXItLXdpdGgtbGVhZGluZy1pbWFnZSxcbiAgLm1kYy1saXN0LWRpdmlkZXItLXdpdGgtbGVhZGluZy10aHVtYm5haWwsXG4gIC5tZGMtbGlzdC1kaXZpZGVyLS13aXRoLWxlYWRpbmctYXZhdGFyLFxuICAubWRjLWxpc3QtZGl2aWRlci0td2l0aC1sZWFkaW5nLWNoZWNrYm94LFxuICAubWRjLWxpc3QtZGl2aWRlci0td2l0aC1sZWFkaW5nLXN3aXRjaCxcbiAgLm1kYy1saXN0LWRpdmlkZXItLXdpdGgtbGVhZGluZy1yYWRpbyB7XG4gICAgQGluY2x1ZGUgZGl2aWRlci1sZWFkaW5nLWluc2V0KDE2cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBkaXZpZGVyLXRyYWlsaW5nLWluc2V0KDE2cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtbGlzdC1kaXZpZGVyLS13aXRoLWxlYWRpbmctdmlkZW8ge1xuICAgIEBpbmNsdWRlIGRpdmlkZXItbGVhZGluZy1pbnNldCgwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC8vIFRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGF0IGRlZmF1bHQgcGFkZGluZyBpc24ndCBhcHBsaWVkIGluIFJUTCBsb2NhbGVzLlxuICAubWRjLWxpc3QtZGl2aWRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gd2l0aC1yaXBwbGUoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSByaXBwbGUuY29tbW9uKCRxdWVyeSk7IC8vIENPUFlCQVJBX0NPTU1FTlRfVEhJU19MSU5FXG5cbiAgOm5vdCgubWRjLWxpc3QtaXRlbS0tZGlzYWJsZWQpLm1kYy1saXN0LWl0ZW0ge1xuICAgIEBpbmNsdWRlIF9pdGVtLWludGVyYWN0aXZlLXJpcHBsZSgkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW0tLWRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSByaXBwbGUuc3VyZmFjZShcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJHJpcHBsZS10YXJnZXQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnJhZGl1cy1ib3VuZGVkKFxuICAgICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWJhc2UtY29sb3IoXG4gICAgICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAgICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWZvY3VzLW9wYWNpdHkoXG4gICAgICByaXBwbGUtdGhlbWUuc3RhdGVzLW9wYWNpdHkocHJpbWFyeSwgZm9jdXMpLFxuICAgICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgICN7dmFyaWFibGVzLiRyaXBwbGUtdGFyZ2V0fSB7XG4gICAgICBAaW5jbHVkZSByaXBwbGUudGFyZ2V0LWNvbW1vbigkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIEFkanVzdHMgYW4gb2Zmc2V0IChpLmUuLCBtYXJnaW4pIHRvIGFjY29tb2RhdGUgY29udGVudHMgdGhhdCBhcmUgbGFyZ2VyIHRoYW5cbi8vLyB0aGUgc3BhY2UgYWxsb2NhdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuLy8vXG4vLy8gRm9yIGluc3RhbmNlLCB0aGUgc3BlY2lmaWNhdGlvbiBwcm92aWRlcyAyNHgyNGRwIGZvciBhIGNoZWNrYm94IHdpdGggYSAxNmRwXG4vLy8gbWFyZ2luLiBIb3dldmVyLCBjaGVja2JveGVzIGFyZSBhY3R1YWxseSA0MHg0MGRwLiBUbyBlbnN1cmUgdGhhdCB0aGVcbi8vLyBjaGVja2JveCBpcyBwb3NpdGlvbmVkIGNvcnJlY3RseSwgdGhlIG1hcmdpbiBpcyByZWR1Y2VkIGJ5IDhkcCB0byByZWZsZWN0XG4vLy8gdGhhdCB0aGUgbWFyZ2luIGlzIGFscmVhZHkgXCJiYWtlZCBpbnRvXCIgdGhlIGNoZWNrYm94LlxuLy8vXG4vLy8gQ29uY3JldGVseSwgNDBkcCAtIDI0ZHAgPSAxNmRwLiBBc3N1bWluZyB0aGF0IHRoZSBjb250cm9sIGlzIHN5bW1ldHJpY2FsLFxuLy8vIGhhbGYgb2YgdGhlIG92ZXJmbG93ICg4ZHApIGlzIG9uIHRoZSBsZWFkaW5nIHNpZGUgYW5kIGhhbGYgb24gdGhlIHRyYWlsaW5nXG4vLy8gc2lkZS4gVGhlcmVmb3JlLCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgbWFyZ2lucyBhcmUgcmVkdWNlZCBieSA4ZHAuXG4vLy9cbi8vLyBOb3RlOiB0aGlzIG1pZ2h0IGJlIG1vcmUgdXNlZnVsIGlmIGl0J3MgYWRkZWQgaW50byB0aGUgbGVhZGluZy90cmFpbGluZ1xuLy8vIG1hcmdpbiBtaXhpbnMgYXMgYSBwYXJhbWV0ZXIuXG4vLy9cbkBmdW5jdGlvbiBhYnNvcmItb3ZlcmZsb3coJG9mZnNldCwgJGFjdHVhbCwgJGF2YWlsYWJsZSwgJHN5bW1ldHJpYzogdHJ1ZSkge1xuICBAaWYgJGFjdHVhbCA8PSAkYXZhaWxhYmxlIHtcbiAgICBAcmV0dXJuICRvZmZzZXQ7XG4gIH1cbiAgJG92ZXJmbG93OiAkYWN0dWFsIC0gJGF2YWlsYWJsZTtcbiAgQHJldHVybiAkb2Zmc2V0IC0gbWF0aC5kaXYoJG92ZXJmbG93LCBpZigkc3ltbWV0cmljLCAyLCAxKSk7XG59XG5cbkBtaXhpbiBvbmUtbGluZS1pdGVtLWhlaWdodCgkaGVpZ2h0LCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC1vbmUtbGluZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR3by1saW5lLWl0ZW0taGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cbkBtaXhpbiB0aHJlZS1saW5lLWl0ZW0taGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1pdGVtLWhlaWdodCgkaGVpZ2h0KSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC1vbmUtbGluZSxcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyxcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cbn1cblxuQG1peGluIGl0ZW0tc3BhY2luZyhcbiAgJGxlYWRpbmcsXG4gICR0cmFpbGluZzogJGxlYWRpbmcsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkocGFkZGluZywgJGxlYWRpbmcsICR0cmFpbGluZyk7XG4gIH1cbn1cblxuQG1peGluIG9uZS1saW5lLWl0ZW0tc3RhcnQtYWxpZ25tZW50KFxuICAkYWxpZ25tZW50LFxuICAkb2Zmc2V0OiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLW9uZS1saW5lIHtcbiAgICAubWRjLWxpc3QtaXRlbV9fc3RhcnQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYWxpZ24tc2VsZjogJGFsaWdubWVudDtcbiAgICAgICAgbWFyZ2luLXRvcDogJG9mZnNldDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR3by1saW5lLWl0ZW0tc3RhcnQtYWxpZ25tZW50KFxuICAkYWxpZ25tZW50LFxuICAkb2Zmc2V0OiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0IHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGFsaWduLXNlbGY6ICRhbGlnbm1lbnQ7XG4gICAgICAgIG1hcmdpbi10b3A6ICRvZmZzZXQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aHJlZS1saW5lLWl0ZW0tc3RhcnQtYWxpZ25tZW50KFxuICAkYWxpZ25tZW50LFxuICAkb2Zmc2V0OiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzIHtcbiAgICAubWRjLWxpc3QtaXRlbV9fc3RhcnQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYWxpZ24tc2VsZjogJGFsaWdubWVudDtcbiAgICAgICAgbWFyZ2luLXRvcDogJG9mZnNldDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG9uZS1saW5lLWl0ZW0tZW5kLWFsaWdubWVudChcbiAgJGFsaWdubWVudCxcbiAgJG9mZnNldDogMCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC1vbmUtbGluZSB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBhbGlnbi1zZWxmOiAkYWxpZ25tZW50O1xuICAgICAgICBtYXJnaW4tdG9wOiAkb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHdvLWxpbmUtaXRlbS1lbmQtYWxpZ25tZW50KFxuICAkYWxpZ25tZW50LFxuICAkb2Zmc2V0OiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBhbGlnbi1zZWxmOiAkYWxpZ25tZW50O1xuICAgICAgICBtYXJnaW4tdG9wOiAkb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdGhyZWUtbGluZS1pdGVtLWVuZC1hbGlnbm1lbnQoXG4gICRhbGlnbm1lbnQsXG4gICRvZmZzZXQ6IDAsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtdGhyZWUtbGluZXMge1xuICAgIC5tZGMtbGlzdC1pdGVtX19lbmQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYWxpZ24tc2VsZjogJGFsaWdubWVudDtcbiAgICAgICAgbWFyZ2luLXRvcDogJG9mZnNldDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGl0ZW0tc3RhcnQtc3BhY2luZyhcbiAgJGxlYWRpbmcsXG4gICR0cmFpbGluZzogJGxlYWRpbmcsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIC8vIEV4dHJhIHNwZWNpZmljaXR5IG5lZWRlZCB0byBvdmVycmlkZSBkZWZhdWx0IGN1c3RvbWl6YXRpb25zLlxuICAgICYubWRjLWxpc3QtaXRlbSB7XG4gICAgICAvLyBXZSByZWx5IG9uIGF1dG8gdG8gYXZvaWQgY2xvYmJlcmluZyB0aGUgb3Bwb3NpdGUgcGFkZGluZy5cbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkocGFkZGluZywgMCwgYXV0byk7XG4gICAgfVxuXG4gICAgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0IHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkobWFyZ2luLCAkbGVhZGluZywgJHRyYWlsaW5nKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGl0ZW0tZW5kLXNwYWNpbmcoXG4gICRsZWFkaW5nLFxuICAkdHJhaWxpbmc6ICRsZWFkaW5nLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAvLyBFeHRyYSBzcGVjaWZpY2l0eSBuZWVkZWQgdG8gb3ZlcnJpZGUgZGVmYXVsdCBjdXN0b21pemF0aW9ucy5cbiAgICAmLm1kYy1saXN0LWl0ZW0ge1xuICAgICAgLy8gV2UgcmVseSBvbiBhdXRvIHRvIGF2b2lkIGNsb2JiZXJpbmcgdGhlIG9wcG9zaXRlIHBhZGRpbmcuXG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KHBhZGRpbmcsIGF1dG8sIDApO1xuICAgIH1cblxuICAgIC5tZGMtbGlzdC1pdGVtX19lbmQge1xuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wcm9wZXJ0eShtYXJnaW4sICRsZWFkaW5nLCAkdHJhaWxpbmcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXRlbS1zdGFydC1zaXplKFxuICAkd2lkdGgsXG4gICRoZWlnaHQ6ICR3aWR0aCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0IHtcbiAgICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpdGVtLWVuZC1zaXplKCR3aWR0aCwgJGhlaWdodDogJHdpZHRoLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgICB3aWR0aDogJHdpZHRoO1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1pdGVtLXNlbGVjdGVkLWNvbnRhaW5lci1jb2xvcigkY29sb3IpIHtcbiAgJi5tZGMtbGlzdC1pdGVtLS1zZWxlY3RlZCB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYmFja2dyb3VuZC1jb2xvciwgJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1wcmltYXJ5LXRleHQtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeS10aGVtZSkge1xuICAubWRjLWxpc3QtaXRlbV9fcHJpbWFyeS10ZXh0IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRoZW1lLXN0eWxlcygkdHlwb2dyYXBoeS10aGVtZSk7XG4gIH1cbn1cblxuQG1peGluIGxpc3QtcHJpbWFyeS10ZXh0LWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWl0ZW1fX3ByaW1hcnktdGV4dCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBsaXN0LXNlY29uZGFyeS10ZXh0LWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWl0ZW1fX3NlY29uZGFyeS10ZXh0IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGxpc3Qtc2Vjb25kYXJ5LXRleHQtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeS10aGVtZSkge1xuICAubWRjLWxpc3QtaXRlbV9fc2Vjb25kYXJ5LXRleHQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudGhlbWUtc3R5bGVzKCR0eXBvZ3JhcGh5LXRoZW1lKTtcbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1vdmVybGluZS10ZXh0LWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWl0ZW1fX292ZXJsaW5lLXRleHQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1tZXRhLXRleHQtaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWxpc3QtaXRlbV9fZW5kIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGxpc3QtaWNvbi1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctaWNvbiAubWRjLWxpc3QtaXRlbV9fc3RhcnQsXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRyYWlsaW5nLWljb24gLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBsaXN0LWljb24tZmlsbC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1pY29uIC5tZGMtbGlzdC1pdGVtX19zdGFydCxcbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHJhaWxpbmctaWNvbiAubWRjLWxpc3QtaXRlbV9fZW5kIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShiYWNrZ3JvdW5kLWNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1zZWxlY3RlZC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtbGlzdC1pdGVtLS1zZWxlY3RlZCxcbiAgLm1kYy1saXN0LWl0ZW0tLWFjdGl2YXRlZCB7XG4gICAgQGluY2x1ZGUgbGlzdC1wcmltYXJ5LXRleHQtaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfaXRlbS1pY29uLWluay1jb2xvcigkY29sb3IsICRsZWFkaW5nLW9ubHk6IHRydWUsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1zZWxlY3RlZC1tZXRhLXRleHQtaW5rLWNvbG9yKFxuICAkY29sb3IsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWxpc3QtaXRlbS0tc2VsZWN0ZWQsXG4gIC5tZGMtbGlzdC1pdGVtLS1hY3RpdmF0ZWQge1xuICAgIEBpbmNsdWRlIGxpc3QtbWV0YS10ZXh0LWluay1jb2xvcigkY29sb3IsICRxdWVyeSk7XG4gIH1cbn1cblxuQG1peGluIGxpc3QtZGlzYWJsZWQtaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWxpc3QtaXRlbS0tZGlzYWJsZWQge1xuICAgIEBpbmNsdWRlIGxpc3QtcHJpbWFyeS10ZXh0LWluay1jb2xvcigkY29sb3IsICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgbGlzdC1zZWNvbmRhcnktdGV4dC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGxpc3Qtb3ZlcmxpbmUtdGV4dC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF9pdGVtLWljb24taW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF9pdGVtLW1ldGEtdGV4dC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBsaXN0LWRpc2FibGVkLW9wYWNpdHkoJG9wYWNpdHksICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWl0ZW0tLWRpc2FibGVkIHtcbiAgICAubWRjLWxpc3QtaXRlbV9fc3RhcnQsXG4gICAgLm1kYy1saXN0LWl0ZW1fX2NvbnRlbnQsXG4gICAgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZ3JvdXAtc3ViaGVhZGVyLWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtZ3JvdXBfX3N1YmhlYWRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgc2hhcGUgcmFkaXVzIChyb3VuZGVkKSB0byBzaW5nbGUgbGluZSBsaXN0IHZhcmlhbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IExpc3Q8TnVtYmVyPn0gJHJhZGl1cyBSYWRpdXMgc2l6ZSBpbiBgcHhgIG9yIHBlcmNlbnRhZ2UuIEl0IGNhbiBiZSA0IHZhbHVlIGNvcm5lciBvciBzaW5nbGUgcmFkaXVzLlxuLy8vICAgICBTZXQgdG8gYDUwJWAgZm9yIHJvdW5kZWQgc2hhcGUuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkcnRsLXJlZmxleGl2ZSBTZXQgdG8gdHJ1ZSB0byBmbGlwIGJvcmRlciByYWRpdXMgaW4gUlRMIGNvbnRleHQuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZW5zaXR5LXNjYWxlIERlbnNpdHkgc2NhbGUgb2Ygc2luZ2xlIGxpbmUgbGlzdC4gU2V0IHRoaXMgb25seSB3aGVuIGN1c3RvbSBkZW5zaXR5IGlzIGFwcGxpZWQuXG4vLy8gICAgIERlZmF1bHRzIHRvIGAkbWRjLWRlcHJlY2F0ZWQtbGlzdC1zaW5nbGUtbGluZS1kZW5zaXR5LXNjYWxlYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy9cbkBtaXhpbiBvbmUtbGluZS1saXN0LXJhZGl1cyhcbiAgJHJhZGl1cyxcbiAgJHJ0bC1yZWZsZXhpdmU6IGZhbHNlLFxuICAkZGVuc2l0eS1zY2FsZTogdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAubWRjLWxpc3QtaXRlbS0td2l0aC1vbmUtbGluZSB7XG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cyhcbiAgICAgICRyYWRpdXMsXG4gICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OlxuICAgICAgICBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLWRlbnNpdHktY29uZmlnLFxuICAgICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0XG4gICAgICAgICksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1hdmF0YXIsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctaWNvbixcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy10aHVtYm5haWwsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctY2hlY2tib3gsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctcmFkaW8sXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctc3dpdGNoIHtcbiAgICAgIEBpbmNsdWRlIHNoYXBlLW1peGlucy5yYWRpdXMoXG4gICAgICAgICRyYWRpdXMsXG4gICAgICAgICRydGwtcmVmbGV4aXZlLFxuICAgICAgICAkY29tcG9uZW50LWhlaWdodDpcbiAgICAgICAgICBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgICAgICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5LWNvbmZpZyxcbiAgICAgICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHRcbiAgICAgICAgICApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1pbWFnZSxcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy12aWRlbyB7XG4gICAgICBAaW5jbHVkZSBzaGFwZS1taXhpbnMucmFkaXVzKFxuICAgICAgICAkcmFkaXVzLFxuICAgICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICAgJGNvbXBvbmVudC1oZWlnaHQ6XG4gICAgICAgICAgZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAgICAgICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLXRhbGxlci1kZW5zaXR5LWNvbmZpZyxcbiAgICAgICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHRcbiAgICAgICAgICApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR3by1saW5lLWxpc3QtcmFkaXVzKFxuICAkcmFkaXVzLFxuICAkcnRsLXJlZmxleGl2ZTogZmFsc2UsXG4gICRkZW5zaXR5LXNjYWxlOiB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyB7XG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cyhcbiAgICAgICRyYWRpdXMsXG4gICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OlxuICAgICAgICBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiR0d28tbGluZS1pdGVtLWRlbnNpdHktY29uZmlnLFxuICAgICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0XG4gICAgICAgICksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1hdmF0YXIsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctaWNvbixcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy10aHVtYm5haWwsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctY2hlY2tib3gsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctcmFkaW8sXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctc3dpdGNoLFxuICAgICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWltYWdlLFxuICAgICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLXZpZGVvIHtcbiAgICAgIEBpbmNsdWRlIHNoYXBlLW1peGlucy5yYWRpdXMoXG4gICAgICAgICRyYWRpdXMsXG4gICAgICAgICRydGwtcmVmbGV4aXZlLFxuICAgICAgICAkY29tcG9uZW50LWhlaWdodDpcbiAgICAgICAgICBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgICAgICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5LWNvbmZpZyxcbiAgICAgICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHRcbiAgICAgICAgICApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRocmVlLWxpbmUtbGlzdC1yYWRpdXMoXG4gICRyYWRpdXMsXG4gICRydGwtcmVmbGV4aXZlOiBmYWxzZSxcbiAgJGRlbnNpdHktc2NhbGU6IHZhcmlhYmxlcy4kdGhyZWUtbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAubWRjLWxpc3QtaXRlbS0td2l0aC10aHJlZS1saW5lcyB7XG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cyhcbiAgICAgICRyYWRpdXMsXG4gICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OlxuICAgICAgICBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiR0aHJlZS1saW5lLWl0ZW0tZGVuc2l0eS1jb25maWcsXG4gICAgICAgICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICAgICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHRcbiAgICAgICAgKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gZGl2aWRlci1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWRpdmlkZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJhY2tncm91bmQtY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXZpZGVyLWhlaWdodCgkaGVpZ2h0LCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1saXN0LWRpdmlkZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShoZWlnaHQsICRoZWlnaHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGl2aWRlci1sZWFkaW5nLWluc2V0KCRpbnNldCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAmLm1kYy1saXN0LWRpdmlkZXItLXdpdGgtbGVhZGluZy1pbnNldCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIFdlIHJlbHkgb24gYXV0byB0byBhdm9pZCBjbG9iYmVyaW5nIHRoZSBvcHBvc2l0ZSBwYWRkaW5nLlxuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wcm9wZXJ0eShwYWRkaW5nLCAkaW5zZXQsIGF1dG8pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGl2aWRlci10cmFpbGluZy1pbnNldCgkaW5zZXQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1kaXZpZGVyLS13aXRoLXRyYWlsaW5nLWluc2V0IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgLy8gV2UgcmVseSBvbiBhdXRvIHRvIGF2b2lkIGNsb2JiZXJpbmcgdGhlIG9wcG9zaXRlIHBhZGRpbmcuXG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KHBhZGRpbmcsIGF1dG8sICRpbnNldCk7XG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBwdWJsaWMgZGVuc2l0eSBtaXhpbnMgYXBwbHkgdGhlIGFwcHJvcHJpYXRlIGRlbnNpdHkgc3R5bGVzIHJlZ2FyZGxlc3Mgb2Zcbi8vIHRoZSBpdGVtJ3Mgc3RhcnQgY29udGVudHMuXG5AbWl4aW4gb25lLWxpbmUtaXRlbS1kZW5zaXR5KFxuICAkZGVuc2l0eS1zY2FsZSxcbiAgJGV4Y2x1ZGUtdmFyaWFudHM6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgQGluY2x1ZGUgX29uZS1saW5lLWl0ZW0tZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIEBpZiBub3QgJGV4Y2x1ZGUtdmFyaWFudHMge1xuICAgICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWF2YXRhcixcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1pY29uLFxuICAgICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLXRodW1ibmFpbCxcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1jaGVja2JveCxcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1yYWRpbyxcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1zd2l0Y2gge1xuICAgICAgQGluY2x1ZGUgX29uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctaW1hZ2UsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctdmlkZW8ge1xuICAgICAgQGluY2x1ZGUgX29uZS1saW5lLWl0ZW0tdGFsbGVyLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR3by1saW5lLWl0ZW0tZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctYXZhdGFyLFxuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1pY29uLFxuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy10aHVtYm5haWwsXG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWNoZWNrYm94LFxuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1yYWRpbyxcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctc3dpdGNoLFxuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1pbWFnZSxcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctdmlkZW8ge1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXRhbGwtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiB0aHJlZS1saW5lLWl0ZW0tZGVuc2l0eShcbiAgJGRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICBAaW5jbHVkZSBfdGhyZWUtbGluZS1pdGVtLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUsICRxdWVyeTogJHF1ZXJ5KTtcbn1cblxuLy9cbi8vIFByaXZhdGVcbi8vXG5cbi8vIFRoZSBwcml2YXRlIGRlbnNpdHkgbWl4aW5zIGFsbG93IGRlbnNpdHkgcHJvcGVydGllcyB0byBiZSBvdmVycmlkZGVuXG4vLyBpbmRpdmlkdWFsbHkgdG8gYXZvaWQgaW5jcmVhc2luZyBzcGVjaWZpY2l0eS5cbkBtaXhpbiBfb25lLWxpbmUtaXRlbS1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgQGluY2x1ZGUgb25lLWxpbmUtaXRlbS1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gX29uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAkZGVuc2l0eS1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBvbmUtbGluZS1pdGVtLWhlaWdodCgkaGVpZ2h0LCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfb25lLWxpbmUtaXRlbS10YWxsZXItZGVuc2l0eShcbiAgJGRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkaGVpZ2h0OiBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLXRhbGxlci1kZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBvbmUtbGluZS1pdGVtLWhlaWdodCgkaGVpZ2h0LCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfdHdvLWxpbmUtaXRlbS1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgQGluY2x1ZGUgdHdvLWxpbmUtaXRlbS1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gX3R3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAkZGVuc2l0eS1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSB0d28tbGluZS1pdGVtLWhlaWdodCgkaGVpZ2h0LCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfdGhyZWUtbGluZS1pdGVtLWRlbnNpdHkoXG4gICRkZW5zaXR5LXNjYWxlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGhlaWdodDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAkZGVuc2l0eS1jb25maWc6IHZhcmlhYmxlcy4kdGhyZWUtbGluZS1pdGVtLWRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0LFxuICApO1xuXG4gIEBpbmNsdWRlIHRocmVlLWxpbmUtaXRlbS1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gbGlzdC1iYXNlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRmZWF0LXR5cG9ncmFwaHk6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCB0eXBvZ3JhcGh5KTtcblxuICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoc3VidGl0bGUxLCAkcXVlcnkpO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXR5cG9ncmFwaHkpIHtcbiAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIG1vY2tzIGFuZCBzdGlja2Vyc2hlZXQsIHRoZSBsaW5lLWhlaWdodCBpc1xuICAgIC8vIGFkanVzdGVkIHRvIDI0cHggZm9yIHRleHQgY29udGVudCwgc2FtZSBhcyBmb3IgYm9keTEuXG4gICAgLyogQGFsdGVybmF0ZSAqL1xuICAgIGxpbmUtaGVpZ2h0OiBtYXAuZ2V0KG1hcC5nZXQodHlwb2dyYXBoeS4kc3R5bGVzLCBib2R5MSksIGxpbmUtaGVpZ2h0KTtcbiAgfVxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiA4cHggMDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgICAmOmZvY3VzIC8vIGxpbnQtZGlzYWJsZS1mb2N1cy1wc3VlZG8tc2VsZWN0b3JcbiAgICB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXRlbS1iYXNlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAmOmZvY3VzIC8vIGxpbnQtZGlzYWJsZS1mb2N1cy1wc3VlZG8tc2VsZWN0b3JcbiAgICB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2l0ZW0taW50ZXJhY3RpdmUtcmlwcGxlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgcmlwcGxlLnN1cmZhY2UoXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSByaXBwbGUucmFkaXVzLWJvdW5kZWQoXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzKFxuICAgIHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gICAgZmFsc2UsXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWFjdGl2YXRlZChcbiAgICBwcmltYXJ5LFxuICAgIGZhbHNlLFxuICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJHJpcHBsZS10YXJnZXQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1zZWxlY3RlZChcbiAgICBwcmltYXJ5LFxuICAgIGZhbHNlLFxuICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJHJpcHBsZS10YXJnZXQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICAje3ZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldH0ge1xuICAgIEBpbmNsdWRlIHJpcHBsZS50YXJnZXQtY29tbW9uKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gX3R3by1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZShcbiAgJHRvcCxcbiAgJGJvdHRvbSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10d28tbGluZXMge1xuICAgIC5tZGMtbGlzdC1pdGVtX19wcmltYXJ5LXRleHQge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgICAkdG9wOiAkdG9wLFxuICAgICAgICAkYm90dG9tOiAkYm90dG9tLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF90aHJlZS1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZShcbiAgJHRvcCxcbiAgJGJvdHRvbSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10aHJlZS1saW5lcyB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX3ByaW1hcnktdGV4dCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoXG4gICAgICAgICR0b3A6ICR0b3AsXG4gICAgICAgICRib3R0b206ICRib3R0b20sXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX3R3by1saW5lLWl0ZW0tb3ZlcmxpbmUtYmFzZWxpbmUoXG4gICR0b3AsXG4gICRib3R0b20sXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHdvLWxpbmVzIHtcbiAgICAubWRjLWxpc3QtaXRlbV9fb3ZlcmxpbmUtdGV4dCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoXG4gICAgICAgICR0b3A6ICR0b3AsXG4gICAgICAgICRib3R0b206ICRib3R0b20sXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX3RocmVlLWxpbmUtaXRlbS1vdmVybGluZS1iYXNlbGluZShcbiAgJHRvcCxcbiAgJGJvdHRvbSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10aHJlZS1saW5lcyB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX292ZXJsaW5lLXRleHQge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgICAkdG9wOiAkdG9wLFxuICAgICAgICAkYm90dG9tOiAkYm90dG9tLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF90d28tbGluZS1pdGVtLWVuZC1iYXNlbGluZSgkdG9wLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10d28tbGluZXMge1xuICAgIC5tZGMtbGlzdC1pdGVtX19lbmQge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgICAkZGlzcGxheTogYmxvY2ssXG4gICAgICAgICR0b3A6ICR0b3AsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX3RocmVlLWxpbmUtaXRlbS1lbmQtYmFzZWxpbmUoJHRvcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtdGhyZWUtbGluZXMge1xuICAgIC5tZGMtbGlzdC1pdGVtX19lbmQge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgICAkZGlzcGxheTogYmxvY2ssXG4gICAgICAgICR0b3A6ICR0b3AsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX3R3by1saW5lLWl0ZW0tbWV0YS1iYXNlbGluZSgkdG9wLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10d28tbGluZXMge1xuICAgICYubWRjLWxpc3QtaXRlbS0td2l0aC10cmFpbGluZy1tZXRhIHtcbiAgICAgIC5tZGMtbGlzdC1pdGVtX19lbmQge1xuICAgICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoXG4gICAgICAgICAgJGRpc3BsYXk6IGJsb2NrLFxuICAgICAgICAgICR0b3A6ICR0b3AsXG4gICAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9pdGVtLW1ldGEtdGV4dC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10cmFpbGluZy1tZXRhIHtcbiAgICAubWRjLWxpc3QtaXRlbV9fZW5kIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfaXRlbS1pY29uLWluay1jb2xvcihcbiAgJGNvbG9yLFxuICAkbGVhZGluZy1vbmx5OiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWljb24ge1xuICAgIC5tZGMtbGlzdC1pdGVtX19zdGFydCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAobm90ICRsZWFkaW5nLW9ubHkpIHtcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHJhaWxpbmctaWNvbiB7XG4gICAgICAubWRjLWxpc3QtaXRlbV9fZW5kIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfaGlnaC1jb250cmFzdC1tb2RlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZG9tLW1peGlucy5mb3JjZWQtY29sb3JzLW1vZGUge1xuICAgIC5tZGMtbGlzdC1kaXZpZGVyOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgLy8gQ29sb3IgZW5zdXJlcyBib3JkZXIgaXMgc2hvd24sIGJ1dCB3aWxsIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGJyb3dzZXIuXG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci1ib3R0b20tY29sb3IsIHdoaXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vZnVuY3Rpb25zJyBhcyBmdW5jdGlvbnMyO1xuQHVzZSAnQG1hdGVyaWFsL2RlbnNpdHkvZnVuY3Rpb25zJyBhcyBkZW5zaXR5LWZ1bmN0aW9ucztcbkB1c2UgJ0BtYXRlcmlhbC9kZW5zaXR5L3ZhcmlhYmxlcycgYXMgZGVuc2l0eS12YXJpYWJsZXM7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3JpcHBsZS9yaXBwbGUnO1xuQHVzZSAnQG1hdGVyaWFsL3JpcHBsZS9yaXBwbGUtdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2NvbG9yLWN1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jdXN0b20tcHJvcGVydGllcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUva2V5cyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9zaGFkb3ctZG9tJztcbkB1c2UgJ0BtYXRlcmlhbC90b3VjaC10YXJnZXQvdG91Y2gtdGFyZ2V0JztcbkB1c2UgJy4vY2hlY2tib3gtY3VzdG9tLXByb3BlcnRpZXMnO1xuXG4kYmFzZWxpbmUtdGhlbWUtY29sb3I6IHNlY29uZGFyeSAhZGVmYXVsdDtcbiRtYXJrLWNvbG9yOiB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXNlY29uZGFyeSkgIWRlZmF1bHQ7XG4kYm9yZGVyLWNvbG9yOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNTQpICFkZWZhdWx0O1xuJGRpc2FibGVkLWNvbG9yOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuMzgpICFkZWZhdWx0O1xuXG4kcmlwcGxlLXNpemU6IDQwcHggIWRlZmF1bHQ7XG4kaWNvbi1zaXplOiAxOHB4ICFkZWZhdWx0O1xuJG1hcmstc3Ryb2tlLXNpemU6IG1hdGguZGl2KDIsIDE1KSAqICRpY29uLXNpemUgIWRlZmF1bHQ7XG4kYm9yZGVyLXdpZHRoOiAycHggIWRlZmF1bHQ7XG4kdHJhbnNpdGlvbi1kdXJhdGlvbjogOTBtcyAhZGVmYXVsdDtcbiRpdGVtLXNwYWNpbmc6IDRweCAhZGVmYXVsdDtcbiRmb2N1cy1pbmRpY2F0b3Itb3BhY2l0eTogbWFwLmdldChcbiAgcmlwcGxlLXRoZW1lLiRkYXJrLWluay1vcGFjaXRpZXMsXG4gIGZvY3VzXG4pICFkZWZhdWx0O1xuXG4kbWluaW11bS1zaXplOiAyOHB4ICFkZWZhdWx0O1xuJG1heGltdW0tc2l6ZTogJHJpcHBsZS1zaXplICFkZWZhdWx0O1xuJGRlbnNpdHktc2NhbGU6IGRlbnNpdHktdmFyaWFibGVzLiRkZWZhdWx0LXNjYWxlICFkZWZhdWx0O1xuJGRlbnNpdHktY29uZmlnOiAoXG4gIHNpemU6IChcbiAgICBtaW5pbXVtOiAkbWluaW11bS1zaXplLFxuICAgIGRlZmF1bHQ6ICRyaXBwbGUtc2l6ZSxcbiAgICBtYXhpbXVtOiAkbWF4aW11bS1zaXplLFxuICApLFxuKSAhZGVmYXVsdDtcblxuJHJpcHBsZS10YXJnZXQ6ICcubWRjLWNoZWNrYm94X19yaXBwbGUnO1xuJGN1c3RvbS1wcm9wZXJ0eS1wcmVmaXg6ICdjaGVja2JveCc7XG5cbi8vIFRPRE8oYi8xODg0MTc3NTYpOiBTdGF0ZSBsYXllciAocmlwcGxlKSBzaXplIHRva2VuIGlzIG1pc3NpbmcgaW5jbHVkaW5nXG4vLyAgICAgYHN0YXRlLWxheWVyLXNpemVgLlxuLy8gVE9ETyhiLzE4ODUyOTg0MSk6IGBzZWxlY3RlZC1jaGVja21hcmstY29sb3JgIGFuZCBgZGlzYWJsZWQtc2VsZWN0ZWQtY2hlY2ttYXJrLWNvbG9yYCBkb2VzIG5vdCBleGlzdCBpbiB0b2tlbnMuXG4kbGlnaHQtdGhlbWU6IChcbiAgZGlzYWJsZWQtc2VsZWN0ZWQtY2hlY2ttYXJrLWNvbG9yOiAkbWFyay1jb2xvcixcbiAgZGlzYWJsZWQtc2VsZWN0ZWQtaWNvbi1jb2xvcjogJGRpc2FibGVkLWNvbG9yLFxuICBkaXNhYmxlZC1zZWxlY3RlZC1pY29uLW9wYWNpdHk6IG51bGwsXG4gIGRpc2FibGVkLXVuc2VsZWN0ZWQtaWNvbi1jb2xvcjogJGRpc2FibGVkLWNvbG9yLFxuICBkaXNhYmxlZC11bnNlbGVjdGVkLWljb24tb3BhY2l0eTogbnVsbCxcbiAgc2VsZWN0ZWQtY2hlY2ttYXJrLWNvbG9yOiAkbWFyay1jb2xvcixcbiAgc2VsZWN0ZWQtZm9jdXMtaWNvbi1jb2xvcjogJGJhc2VsaW5lLXRoZW1lLWNvbG9yLFxuICBzZWxlY3RlZC1mb2N1cy1zdGF0ZS1sYXllci1jb2xvcjogdGhlbWUtY29sb3IuJG9uLXN1cmZhY2UsXG4gIHNlbGVjdGVkLWZvY3VzLXN0YXRlLWxheWVyLW9wYWNpdHk6IDAuMTIsXG4gIHNlbGVjdGVkLWhvdmVyLWljb24tY29sb3I6ICRiYXNlbGluZS10aGVtZS1jb2xvcixcbiAgc2VsZWN0ZWQtaG92ZXItc3RhdGUtbGF5ZXItY29sb3I6ICRiYXNlbGluZS10aGVtZS1jb2xvcixcbiAgc2VsZWN0ZWQtaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eTpcbiAgICBtYXAuZ2V0KHJpcHBsZS10aGVtZS4kZGFyay1pbmstb3BhY2l0aWVzLCBob3ZlciksXG4gIHNlbGVjdGVkLWljb24tY29sb3I6ICRiYXNlbGluZS10aGVtZS1jb2xvcixcbiAgc2VsZWN0ZWQtcHJlc3NlZC1pY29uLWNvbG9yOiAkYmFzZWxpbmUtdGhlbWUtY29sb3IsXG4gIHNlbGVjdGVkLXByZXNzZWQtc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRvbi1zdXJmYWNlLFxuICBzZWxlY3RlZC1wcmVzc2VkLXN0YXRlLWxheWVyLW9wYWNpdHk6XG4gICAgbWFwLmdldChyaXBwbGUtdGhlbWUuJGRhcmstaW5rLW9wYWNpdGllcywgcHJlc3NlZCksXG4gIHN0YXRlLWxheWVyLXNpemU6ICRyaXBwbGUtc2l6ZSxcbiAgdW5zZWxlY3RlZC1mb2N1cy1pY29uLWNvbG9yOiAkYmFzZWxpbmUtdGhlbWUtY29sb3IsXG4gIHVuc2VsZWN0ZWQtZm9jdXMtc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRvbi1zdXJmYWNlLFxuICB1bnNlbGVjdGVkLWZvY3VzLXN0YXRlLWxheWVyLW9wYWNpdHk6XG4gICAgbWFwLmdldChyaXBwbGUtdGhlbWUuJGRhcmstaW5rLW9wYWNpdGllcywgZm9jdXMpLFxuICB1bnNlbGVjdGVkLWhvdmVyLWljb24tY29sb3I6ICRiYXNlbGluZS10aGVtZS1jb2xvcixcbiAgdW5zZWxlY3RlZC1ob3Zlci1zdGF0ZS1sYXllci1jb2xvcjogdGhlbWUtY29sb3IuJG9uLXN1cmZhY2UsXG4gIHVuc2VsZWN0ZWQtaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eTpcbiAgICBtYXAuZ2V0KHJpcHBsZS10aGVtZS4kZGFyay1pbmstb3BhY2l0aWVzLCBob3ZlciksXG4gIHVuc2VsZWN0ZWQtaWNvbi1jb2xvcjogJGJvcmRlci1jb2xvcixcbiAgdW5zZWxlY3RlZC1wcmVzc2VkLWljb24tY29sb3I6ICRib3JkZXItY29sb3IsXG4gIHVuc2VsZWN0ZWQtcHJlc3NlZC1zdGF0ZS1sYXllci1jb2xvcjogdGhlbWUtY29sb3IuJG9uLXN1cmZhY2UsXG4gIHVuc2VsZWN0ZWQtcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5OlxuICAgIG1hcC5nZXQocmlwcGxlLXRoZW1lLiRkYXJrLWluay1vcGFjaXRpZXMsIHByZXNzZWQpLFxuKTtcblxuJGZvcmNlZC1jb2xvcnMtdGhlbWU6IChcbiAgZGlzYWJsZWQtc2VsZWN0ZWQtY2hlY2ttYXJrLWNvbG9yOiBCdXR0b25GYWNlLFxuICBkaXNhYmxlZC1zZWxlY3RlZC1pY29uLWNvbG9yOiBHcmF5VGV4dCxcbiAgZGlzYWJsZWQtc2VsZWN0ZWQtaWNvbi1vcGFjaXR5OiAxLFxuICBkaXNhYmxlZC11bnNlbGVjdGVkLWljb24tY29sb3I6IEdyYXlUZXh0LFxuICBkaXNhYmxlZC11bnNlbGVjdGVkLWljb24tb3BhY2l0eTogMSxcbiAgc2VsZWN0ZWQtY2hlY2ttYXJrLWNvbG9yOiBCdXR0b25UZXh0LFxuKTtcblxuQG1peGluIHRoZW1lKCR0aGVtZSkge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZS1rZXlzKCRsaWdodC10aGVtZSwgJHRoZW1lKTtcbiAgQGluY2x1ZGUga2V5cy5kZWNsYXJlLWN1c3RvbS1wcm9wZXJ0aWVzKFxuICAgICR0aGVtZSxcbiAgICAkcHJlZml4OiAkY3VzdG9tLXByb3BlcnR5LXByZWZpeFxuICApO1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGVzKCR0aGVtZSkge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZS1rZXlzKCRsaWdodC10aGVtZSwgJHRoZW1lKTtcbiAgJHRoZW1lOiBrZXlzLmNyZWF0ZS10aGVtZS1wcm9wZXJ0aWVzKFxuICAgICR0aGVtZSxcbiAgICAkcHJlZml4OiAkY3VzdG9tLXByb3BlcnR5LXByZWZpeFxuICApO1xuXG4gIEBpbmNsdWRlIGRpc2FibGVkLWNvbnRhaW5lci1jb2xvcnMoXG4gICAgJHVubWFya2VkLXN0cm9rZS1jb2xvcjogbWFwLmdldCgkdGhlbWUsIGRpc2FibGVkLXVuc2VsZWN0ZWQtaWNvbi1jb2xvciksXG4gICAgJG1hcmtlZC1maWxsLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZSwgZGlzYWJsZWQtc2VsZWN0ZWQtaWNvbi1jb2xvcilcbiAgKTtcblxuICBAaW5jbHVkZSBpbmstY29sb3IobWFwLmdldCgkdGhlbWUsIHNlbGVjdGVkLWNoZWNrbWFyay1jb2xvcikpO1xuICBAaW5jbHVkZSBkaXNhYmxlZC1pbmstY29sb3IoXG4gICAgbWFwLmdldCgkdGhlbWUsIGRpc2FibGVkLXNlbGVjdGVkLWNoZWNrbWFyay1jb2xvcilcbiAgKTtcblxuICBAaW5jbHVkZSBfaWNvbi1jb2xvcihcbiAgICBtYXAuZ2V0KCR0aGVtZSwgdW5zZWxlY3RlZC1pY29uLWNvbG9yKSxcbiAgICBtYXAuZ2V0KCR0aGVtZSwgc2VsZWN0ZWQtaWNvbi1jb2xvcilcbiAgKTtcblxuICAmOmhvdmVyIHtcbiAgICBAaW5jbHVkZSBfaWNvbi1jb2xvcihcbiAgICAgIG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWhvdmVyLWljb24tY29sb3IpLFxuICAgICAgbWFwLmdldCgkdGhlbWUsIHNlbGVjdGVkLWhvdmVyLWljb24tY29sb3IpXG4gICAgKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5mb2N1cygpIHtcbiAgICBAaW5jbHVkZSBfaWNvbi1jb2xvcihcbiAgICAgIG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWZvY3VzLWljb24tY29sb3IpLFxuICAgICAgbWFwLmdldCgkdGhlbWUsIHNlbGVjdGVkLWZvY3VzLWljb24tY29sb3IpXG4gICAgKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5hY3RpdmUoKSB7XG4gICAgQGluY2x1ZGUgX2ljb24tY29sb3IoXG4gICAgICBtYXAuZ2V0KCR0aGVtZSwgdW5zZWxlY3RlZC1wcmVzc2VkLWljb24tY29sb3IpLFxuICAgICAgbWFwLmdldCgkdGhlbWUsIHNlbGVjdGVkLXByZXNzZWQtaWNvbi1jb2xvcilcbiAgICApO1xuICB9XG5cbiAgQGluY2x1ZGUgcmlwcGxlLWNvbG9yKFxuICAgICRjb2xvcjogbWFwLmdldCgkdGhlbWUsIHVuc2VsZWN0ZWQtaG92ZXItc3RhdGUtbGF5ZXItY29sb3IpLFxuICAgICRvcGFjaXR5LW1hcDogKFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHkpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLWZvY3VzLXN0YXRlLWxheWVyLW9wYWNpdHkpLFxuICAgICAgcHJlc3M6IG1hcC5nZXQoJHRoZW1lLCB1bnNlbGVjdGVkLXByZXNzZWQtc3RhdGUtbGF5ZXItb3BhY2l0eSksXG4gICAgKVxuICApO1xuXG4gIEBpbmNsdWRlIGZvY3VzLWluZGljYXRvci1jb2xvcihcbiAgICAkY29sb3I6IG1hcC5nZXQoJHRoZW1lLCBzZWxlY3RlZC1ob3Zlci1zdGF0ZS1sYXllci1jb2xvciksXG4gICAgJG9wYWNpdHktbWFwOiAoXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIHNlbGVjdGVkLWhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHkpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCBzZWxlY3RlZC1mb2N1cy1zdGF0ZS1sYXllci1vcGFjaXR5KSxcbiAgICAgIHByZXNzOiBtYXAuZ2V0KCR0aGVtZSwgc2VsZWN0ZWQtcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5KSxcbiAgICApXG4gICk7XG5cbiAgQGluY2x1ZGUgcmlwcGxlLXNpemUobWFwLmdldCgkdGhlbWUsIHN0YXRlLWxheWVyLXNpemUpKTtcbiAgLy8gU2V0IHRvdWNoIHRhcmdldCB0byByaXBwbGUgc2l6ZS5cbiAgQGluY2x1ZGUgdG91Y2gtdGFyZ2V0KFxuICAgIG1hcC5nZXQoJHRoZW1lLCBzdGF0ZS1sYXllci1zaXplKSxcbiAgICBtYXAuZ2V0KCR0aGVtZSwgc3RhdGUtbGF5ZXItc2l6ZSlcbiAgKTtcbn1cblxuJGxpZ2h0LXRoZW1lLWRlcHJlY2F0ZWQ6IChcbiAgZGVuc2l0eS1zY2FsZTogMCxcbiAgY2hlY2ttYXJrLWNvbG9yOiAkbWFyay1jb2xvcixcbiAgY29udGFpbmVyLWNoZWNrZWQtY29sb3I6ICRiYXNlbGluZS10aGVtZS1jb2xvcixcbiAgY29udGFpbmVyLWNoZWNrZWQtaG92ZXItY29sb3I6IG51bGwsXG4gIGNvbnRhaW5lci1kaXNhYmxlZC1jb2xvcjogJGRpc2FibGVkLWNvbG9yLFxuICBvdXRsaW5lLWNvbG9yOiAkYm9yZGVyLWNvbG9yLFxuICBvdXRsaW5lLWhvdmVyLWNvbG9yOiBudWxsLFxuICByaXBwbGUtY29sb3I6IHRoZW1lLWNvbG9yLiRvbi1zdXJmYWNlLFxuICByaXBwbGUtb3BhY2l0eTogcmlwcGxlLXRoZW1lLiRkYXJrLWluay1vcGFjaXRpZXMsXG4gIHJpcHBsZS1jaGVja2VkLWNvbG9yOiAkYmFzZWxpbmUtdGhlbWUtY29sb3IsXG4gIHJpcHBsZS1jaGVja2VkLW9wYWNpdHk6IHJpcHBsZS10aGVtZS4kZGFyay1pbmstb3BhY2l0aWVzLFxuKTtcblxuLy8vIFNldHMgdGhlbWUgdG8gY2hlY2tib3ggYmFzZWQgb24gcHJvdmlkZWQgdGhlbWUgY29uZmlndXJhdGlvbi5cbi8vLyBPbmx5IGVtaXRzIHRoZW1lIHJlbGF0ZWQgc3R5bGVzLlxuLy8vIEBwYXJhbSB7TWFwfSAkdGhlbWUgLSBUaGVtZSBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgdGhlbWluZyBjaGVja2JveC5cbkBtaXhpbiB0aGVtZS1kZXByZWNhdGVkKCR0aGVtZSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZSgkbGlnaHQtdGhlbWUtZGVwcmVjYXRlZCwgJHRoZW1lKTtcblxuICAkcmlwcGxlLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZSwgcmlwcGxlLWNvbG9yKTtcbiAgJHJpcHBsZS1vcGFjaXR5OiBtYXAuZ2V0KCR0aGVtZSwgcmlwcGxlLW9wYWNpdHkpO1xuICBAaWYgJHJpcHBsZS1vcGFjaXR5ID09IG51bGwge1xuICAgICRyaXBwbGUtb3BhY2l0eTogKCk7XG4gIH1cbiAgQGlmICRyaXBwbGUtY29sb3Ige1xuICAgIEBpbmNsdWRlIHJpcHBsZS1jb2xvcihcbiAgICAgICRjb2xvcjogJHJpcHBsZS1jb2xvcixcbiAgICAgICRvcGFjaXR5LW1hcDogJHJpcHBsZS1vcGFjaXR5LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgJHJpcHBsZS1jaGVja2VkLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZSwgcmlwcGxlLWNoZWNrZWQtY29sb3IpO1xuICAkcmlwcGxlLWNoZWNrZWQtb3BhY2l0eTogbWFwLmdldCgkdGhlbWUsIHJpcHBsZS1jaGVja2VkLW9wYWNpdHkpO1xuICBAaWYgJHJpcHBsZS1jaGVja2VkLW9wYWNpdHkgPT0gbnVsbCB7XG4gICAgJHJpcHBsZS1jaGVja2VkLW9wYWNpdHk6ICgpO1xuICB9XG4gIEBpZiAkcmlwcGxlLWNoZWNrZWQtY29sb3Ige1xuICAgIEBpbmNsdWRlIGZvY3VzLWluZGljYXRvci1jb2xvcihcbiAgICAgICRjb2xvcjogJHJpcHBsZS1jaGVja2VkLWNvbG9yLFxuICAgICAgJG9wYWNpdHktbWFwOiAkcmlwcGxlLWNoZWNrZWQtb3BhY2l0eSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gICRkZW5zaXR5LXNjYWxlOiBtYXAuZ2V0KCR0aGVtZSwgZGVuc2l0eS1zY2FsZSk7XG4gIEBpZiAkZGVuc2l0eS1zY2FsZSAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgJG91dGxpbmUtY29sb3I6IG1hcC5nZXQoJHRoZW1lLCBvdXRsaW5lLWNvbG9yKTtcbiAgJGNvbnRhaW5lci1jaGVja2VkLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZSwgY29udGFpbmVyLWNoZWNrZWQtY29sb3IpO1xuICBAaWYgKFxuICAgICgkb3V0bGluZS1jb2xvciBhbmQgbm90ICRjb250YWluZXItY2hlY2tlZC1jb2xvcikgb3JcbiAgICAgIChub3QgJG91dGxpbmUtY29sb3IgYW5kICRjb250YWluZXItY2hlY2tlZC1jb2xvcilcbiAgKSB7XG4gICAgQGVycm9yICdCb3RoIGBvdXRsaW5lLWNvbG9yYCBhbmQgYGNvbnRhaW5lci1jaGVja2VkLWNvbG9yYCBrZXlzIHNob3VsZCBiZSBwcm92aWRlZC4nO1xuICB9XG4gIEBpZiAoJG91dGxpbmUtY29sb3IgYW5kICRjb250YWluZXItY2hlY2tlZC1jb2xvcikge1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lci1jb2xvcnMoXG4gICAgICAkdW5tYXJrZWQtc3Ryb2tlLWNvbG9yOiAkb3V0bGluZS1jb2xvcixcbiAgICAgICRtYXJrZWQtc3Ryb2tlLWNvbG9yOiAkY29udGFpbmVyLWNoZWNrZWQtY29sb3IsXG4gICAgICAkbWFya2VkLWZpbGwtY29sb3I6ICRjb250YWluZXItY2hlY2tlZC1jb2xvcixcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gICRvdXRsaW5lLWhvdmVyLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZSwgb3V0bGluZS1ob3Zlci1jb2xvcik7XG4gICRjb250YWluZXItY2hlY2tlZC1ob3Zlci1jb2xvcjogbWFwLmdldChcbiAgICAkdGhlbWUsXG4gICAgY29udGFpbmVyLWNoZWNrZWQtaG92ZXItY29sb3JcbiAgKTtcbiAgQGlmIChcbiAgICAoJG91dGxpbmUtaG92ZXItY29sb3IgYW5kIG5vdCAkY29udGFpbmVyLWNoZWNrZWQtaG92ZXItY29sb3IpIG9yXG4gICAgICAobm90ICRvdXRsaW5lLWhvdmVyLWNvbG9yIGFuZCAkY29udGFpbmVyLWNoZWNrZWQtaG92ZXItY29sb3IpXG4gICkge1xuICAgIEBlcnJvciAnQm90aCBgb3V0bGluZS1ob3Zlci1jb2xvcmAgYW5kIGBjb250YWluZXItY2hlY2tlZC1ob3Zlci1jb2xvcmAga2V5cyBzaG91bGQgYmUgcHJvdmlkZWQuJztcbiAgfVxuICBAaWYgKCRvdXRsaW5lLWhvdmVyLWNvbG9yIGFuZCAkY29udGFpbmVyLWNoZWNrZWQtaG92ZXItY29sb3IpIHtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLXNlbGVjdG9yKCkge1xuICAgICAgQGluY2x1ZGUgY29udGFpbmVyLWNvbG9ycyhcbiAgICAgICAgJHVubWFya2VkLXN0cm9rZS1jb2xvcjogJG91dGxpbmUtaG92ZXItY29sb3IsXG4gICAgICAgICRtYXJrZWQtc3Ryb2tlLWNvbG9yOiAkY29udGFpbmVyLWNoZWNrZWQtaG92ZXItY29sb3IsXG4gICAgICAgICRtYXJrZWQtZmlsbC1jb2xvcjogJGNvbnRhaW5lci1jaGVja2VkLWhvdmVyLWNvbG9yLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAkY29udGFpbmVyLWRpc2FibGVkLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZSwgY29udGFpbmVyLWRpc2FibGVkLWNvbG9yKTtcbiAgQGlmICRjb250YWluZXItZGlzYWJsZWQtY29sb3Ige1xuICAgIEBpbmNsdWRlIGRpc2FibGVkLWNvbnRhaW5lci1jb2xvcnMoXG4gICAgICAkdW5tYXJrZWQtc3Ryb2tlLWNvbG9yOiAkY29udGFpbmVyLWRpc2FibGVkLWNvbG9yLFxuICAgICAgJG1hcmtlZC1maWxsLWNvbG9yOiAkY29udGFpbmVyLWRpc2FibGVkLWNvbG9yLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgJGNoZWNrbWFyay1jb2xvcjogbWFwLmdldCgkdGhlbWUsIGNoZWNrbWFyay1jb2xvcik7XG4gIEBpZiAkY2hlY2ttYXJrLWNvbG9yIHtcbiAgICBAaW5jbHVkZSBpbmstY29sb3IoJGNoZWNrbWFyay1jb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGRpc2FibGVkLWluay1jb2xvcigkY2hlY2ttYXJrLWNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgfCBTdHJpbmd9ICRkZW5zaXR5LXNjYWxlIC0gRGVuc2l0eSBzY2FsZSB2YWx1ZSBmb3IgY29tcG9uZW50LlxuLy8vICAgICBTdXBwb3J0ZWQgZGVuc2l0eSBzY2FsZSB2YWx1ZXMgYC0zYCwgYC0yYCwgYC0xYCwgYDBgLlxuLy8vIEByZXR1cm4gUmV0dXJucyByaXBwbGUgc2l6ZSBvZiBjaGVja2JveCBmb3IgZ2l2ZW4gZGVuc2l0eSBzY2FsZS5cbi8vL1xuQGZ1bmN0aW9uIGdldC1yaXBwbGUtc2l6ZSgkZGVuc2l0eS1zY2FsZSkge1xuICBAcmV0dXJuIGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiAkZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBzaXplXG4gICk7XG59XG5cbi8vL1xuLy8vIFNldHMgZGVuc2l0eSBzY2FsZSBmb3IgY2hlY2tib3guXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IFN0cmluZ30gJGRlbnNpdHktc2NhbGUgLSBEZW5zaXR5IHNjYWxlIHZhbHVlIGZvciBjb21wb25lbnQuIFN1cHBvcnRlZCBkZW5zaXR5IHNjYWxlIHZhbHVlc1xuLy8vICAgICBgLTNgLCBgLTJgLCBgLTFgLCBgMGAuXG4vLy9cbkBtaXhpbiBkZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRzaXplOiBnZXQtcmlwcGxlLXNpemUoJGRlbnNpdHktc2NhbGUpO1xuXG4gIEBpbmNsdWRlIHJpcHBsZS1zaXplKCRzaXplLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIHRvdWNoLXRhcmdldCgkc2l6ZSwgJHJpcHBsZS1zaXplOiAkc2l6ZSwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLy8gU2V0cyByaXBwbGUgc2l6ZSBvZiBjaGVja2JveCBhbmQgb3B0aW9uYWxseSBzZXQgdG91Y2ggdGFyZ2V0IHNpemUgd2hpY2ggY2FuXG4vLy8gYmUgbW9yZSB0aGFuIHRoZSBzaXplIG9mIHJpcHBsZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHJpcHBsZS1zaXplIC0gVmlzdWFsIHJpcHBsZSBzaXplIG9mIGNoZWNrYm94LlxuQG1peGluIHJpcHBsZS1zaXplKCRyaXBwbGUtc2l6ZSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpZiAkcmlwcGxlLXNpemUgYW5kIG5vdCBjdXN0b20tcHJvcGVydGllcy5pcy1jdXN0b20tcHJvcCgkcmlwcGxlLXNpemUpIHtcbiAgICAkcmlwcGxlLXNpemU6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgIGNoZWNrYm94LWN1c3RvbS1wcm9wZXJ0aWVzLiRyaXBwbGUtc2l6ZSxcbiAgICAgICRyaXBwbGUtc2l6ZVxuICAgICk7XG4gIH1cbiAgJGNoZWNrYm94LXBhZGRpbmc6ICdjYWxjKChfcmlwcGxlLXNpemUgLSBfaWNvbi1zaXplKSAvIDIpJztcbiAgJHJlcGxhY2U6IChcbiAgICBfcmlwcGxlLXNpemU6ICRyaXBwbGUtc2l6ZSxcbiAgICBfaWNvbi1zaXplOiAkaWNvbi1zaXplLFxuICApO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkocGFkZGluZywgJGNoZWNrYm94LXBhZGRpbmcsICRyZXBsYWNlOiAkcmVwbGFjZSk7XG4gIH1cblxuICAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkodG9wLCAkY2hlY2tib3gtcGFkZGluZywgJHJlcGxhY2U6ICRyZXBsYWNlKTtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGxlZnQsICRjaGVja2JveC1wYWRkaW5nLCAkcmVwbGFjZTogJHJlcGxhY2UpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgdG91Y2ggdGFyZ2V0IHNpemUgYW5kIGFwcHJvcHJpYXRlIG1hcmdpbiB0byBhY2NvbW1vZGF0ZSB0aGVcbi8vLyB0b3VjaCB0YXJnZXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3VjaC10YXJnZXQtc2l6ZSBTaXplIG9mIHRvdWNoIHRhcmdldCAoTmF0aXZlIGlucHV0KSBpbiBgcHhgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlwcGxlLXNpemUgU2l6ZSBvZiByaXBwbGUgaW4gYHB4YC5cbkBtaXhpbiB0b3VjaC10YXJnZXQoXG4gICR0b3VjaC10YXJnZXQtc2l6ZSxcbiAgJHJpcHBsZS1zaXplLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaWYgJHRvdWNoLXRhcmdldC1zaXplIHtcbiAgICBAaWYgbm90IGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCR0b3VjaC10YXJnZXQtc2l6ZSkge1xuICAgICAgJHRvdWNoLXRhcmdldC1zaXplOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIGNoZWNrYm94LWN1c3RvbS1wcm9wZXJ0aWVzLiR0b3VjaC10YXJnZXQtc2l6ZSxcbiAgICAgICAgJHRvdWNoLXRhcmdldC1zaXplXG4gICAgICApO1xuICAgIH1cblxuICAgICRtYXJnaW46ICdjYWxjKChfdG91Y2gtdGFyZ2V0LXNpemUgLSBfcmlwcGxlLXNpemUpIC8gMiknO1xuICAgICRyZXBsYWNlOiAoXG4gICAgICBfdG91Y2gtdGFyZ2V0LXNpemU6ICR0b3VjaC10YXJnZXQtc2l6ZSxcbiAgICAgIF9yaXBwbGUtc2l6ZTogJHJpcHBsZS1zaXplLFxuICAgICk7XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkobWFyZ2luLCAkbWFyZ2luLCAkcmVwbGFjZTogJHJlcGxhY2UpO1xuICAgIH1cblxuICAgICRvZmZzZXQ6ICdjYWxjKChfcmlwcGxlLXNpemUgLSBfdG91Y2gtdGFyZ2V0LXNpemUpIC8gMiknO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkodG9wLCAkb2Zmc2V0LCAkcmVwbGFjZTogJHJlcGxhY2UpO1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShyaWdodCwgJG9mZnNldCwgJHJlcGxhY2U6ICRyZXBsYWNlKTtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkobGVmdCwgJG9mZnNldCwgJHJlcGxhY2U6ICRyZXBsYWNlKTtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkod2lkdGgsICR0b3VjaC10YXJnZXQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGhlaWdodCwgJHRvdWNoLXRhcmdldC1zaXplKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9pY29uLWNvbG9yKCR1bnNlbGVjdGVkLWNvbG9yLCAkc2VsZWN0ZWQtY29sb3IpIHtcbiAgQGlmICR1bnNlbGVjdGVkLWNvbG9yIGFuZCAkc2VsZWN0ZWQtY29sb3Ige1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lci1jb2xvcnMoXG4gICAgICAkdW5tYXJrZWQtc3Ryb2tlLWNvbG9yOiAkdW5zZWxlY3RlZC1jb2xvcixcbiAgICAgICRtYXJrZWQtc3Ryb2tlLWNvbG9yOiAkc2VsZWN0ZWQtY29sb3IsXG4gICAgICAkbWFya2VkLWZpbGwtY29sb3I6ICRzZWxlY3RlZC1jb2xvclxuICAgICk7XG4gIH0gQGVsc2UgaWYgJHVuc2VsZWN0ZWQtY29sb3Igb3IgJHNlbGVjdGVkLWNvbG9yIHtcbiAgICBAZXJyb3IgJ0JvdGggdW5zZWxlY3RlZCBhbmQgc2VsZWN0ZWQgaWNvbiBjb2xvcnMgc2hvdWxkIGJlIHByb3ZpZGVkLic7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBzdHJva2UgJiBmaWxsIGNvbG9ycyBmb3IgYm90aCBtYXJrZWQgYW5kIHVubWFya2VkIHN0YXRlIG9mIGVuYWJsZWQgY2hlY2tib3guXG4vLy8gU2V0ICRnZW5lcmF0ZS1rZXlmcmFtZXMgdG8gZmFsc2UgdG8gcHJldmVudCB0aGUgbWl4aW4gZnJvbSBnZW5lcmF0aW5nIEBrZXlmcmFtZXNcbi8vLyBAcGFyYW0ge0NvbG9yfSAkdW5tYXJrZWQtc3Ryb2tlLWNvbG9yIC0gVGhlIGRlc2lyZWQgc3Ryb2tlIGNvbG9yIGZvciB0aGUgdW5tYXJrZWQgc3RhdGVcbi8vLyBAcGFyYW0ge0NvbG9yfSAkdW5tYXJrZWQtZmlsbC1jb2xvciAtIFRoZSBkZXNpcmVkIGZpbGwgY29sb3IgZm9yIHRoZSB1bm1hcmtlZCBzdGF0ZVxuLy8vIEBwYXJhbSB7Q29sb3J9ICRtYXJrZWQtc3Ryb2tlLWNvbG9yIC0gVGhlIGRlc2lyZWQgc3Ryb2tlIGNvbG9yIGZvciB0aGUgbWFya2VkIHN0YXRlXG4vLy8gQHBhcmFtIHtDb2xvcn0gJG1hcmtlZC1maWxsLWNvbG9yIC0gVGhlIGRlc2lyZWQgZmlsbCBjb2xvciBmb3IgdGhlIG1hcmtlZCBzdGF0ZVxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGdlbmVyYXRlLWtleWZyYW1lcyBbdHJ1ZV0gLSBXaGV0aGVyIGFuaW1hdGlvbiBrZXlmcmFtZXMgc2hvdWxkIGJlIGdlbmVyYXRlZFxuLy8vXG5AbWl4aW4gY29udGFpbmVyLWNvbG9ycyhcbiAgJHVubWFya2VkLXN0cm9rZS1jb2xvcjogJGJvcmRlci1jb2xvcixcbiAgJHVubWFya2VkLWZpbGwtY29sb3I6IHRyYW5zcGFyZW50LFxuICAkbWFya2VkLXN0cm9rZS1jb2xvcjogJGJhc2VsaW5lLXRoZW1lLWNvbG9yLFxuICAkbWFya2VkLWZpbGwtY29sb3I6ICRiYXNlbGluZS10aGVtZS1jb2xvcixcbiAgJGdlbmVyYXRlLWtleWZyYW1lczogdHJ1ZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC8vIFVuY2hlY2tlZCBjb2xvcnNcbiAgQGlmIChcbiAgICAkdW5tYXJrZWQtc3Ryb2tlLWNvbG9yIGFuZCBub3RcbiAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCR1bm1hcmtlZC1zdHJva2UtY29sb3IpXG4gICkge1xuICAgICR1bm1hcmtlZC1zdHJva2UtY29sb3I6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgIGNoZWNrYm94LWN1c3RvbS1wcm9wZXJ0aWVzLiR1bmNoZWNrZWQtY29sb3IsXG4gICAgICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKCR1bm1hcmtlZC1zdHJva2UtY29sb3IpXG4gICAgKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGlmLXVubWFya2VkLWVuYWJsZWRfIHtcbiAgICBAaW5jbHVkZSBjb250YWluZXItY29sb3JzXyhcbiAgICAgICR1bm1hcmtlZC1zdHJva2UtY29sb3IsXG4gICAgICAkdW5tYXJrZWQtZmlsbC1jb2xvcixcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC8vIENoZWNrZWQgY29sb3JzXG4gIEBpZiAoXG4gICAgJG1hcmtlZC1zdHJva2UtY29sb3IgYW5kIG5vdFxuICAgICAgY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoJG1hcmtlZC1zdHJva2UtY29sb3IpXG4gICkge1xuICAgICRtYXJrZWQtc3Ryb2tlLWNvbG9yOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICBjaGVja2JveC1jdXN0b20tcHJvcGVydGllcy4kY2hlY2tlZC1jb2xvcixcbiAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgY29sb3ItY3VzdG9tLXByb3BlcnRpZXMuJHNlY29uZGFyeSxcbiAgICAgICAgdGhlbWUtY29sb3IucHJvcC12YWx1ZSgkbWFya2VkLXN0cm9rZS1jb2xvcilcbiAgICAgIClcbiAgICApO1xuICB9XG4gIEBpZiAoXG4gICAgJG1hcmtlZC1maWxsLWNvbG9yIGFuZCBub3RcbiAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRtYXJrZWQtZmlsbC1jb2xvcilcbiAgKSB7XG4gICAgJG1hcmtlZC1maWxsLWNvbG9yOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICBjaGVja2JveC1jdXN0b20tcHJvcGVydGllcy4kY2hlY2tlZC1jb2xvcixcbiAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgY29sb3ItY3VzdG9tLXByb3BlcnRpZXMuJHNlY29uZGFyeSxcbiAgICAgICAgdGhlbWUtY29sb3IucHJvcC12YWx1ZSgkbWFya2VkLWZpbGwtY29sb3IpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGlmLW1hcmtlZC1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgY29udGFpbmVyLWNvbG9yc18oXG4gICAgICAkbWFya2VkLXN0cm9rZS1jb2xvcixcbiAgICAgICRtYXJrZWQtZmlsbC1jb2xvcixcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIEBpZiAkZ2VuZXJhdGUta2V5ZnJhbWVzIGFuZFxuICAgICR1bm1hcmtlZC1zdHJva2UtY29sb3IgYW5kXG4gICAgJG1hcmtlZC1zdHJva2UtY29sb3IgYW5kXG4gICAgJHVubWFya2VkLWZpbGwtY29sb3IgYW5kXG4gICAgJG1hcmtlZC1maWxsLWNvbG9yXG4gIHtcbiAgICAkdWlkOiB0aGVtZS1jb2xvci5jb2xvci1oYXNoKCR1bm1hcmtlZC1zdHJva2UtY29sb3IpICtcbiAgICAgIHRoZW1lLWNvbG9yLmNvbG9yLWhhc2goJG1hcmtlZC1zdHJva2UtY29sb3IpICtcbiAgICAgIHRoZW1lLWNvbG9yLmNvbG9yLWhhc2goJHVubWFya2VkLWZpbGwtY29sb3IpICtcbiAgICAgIHRoZW1lLWNvbG9yLmNvbG9yLWhhc2goJG1hcmtlZC1maWxsLWNvbG9yKTtcblxuICAgICRhbmltLXNlbGVjdG9yOiBpZigmLCAnJi5tZGMtY2hlY2tib3gtLWFuaW0nLCAnLm1kYy1jaGVja2JveC0tYW5pbScpO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24sICRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSBjb250YWluZXIta2V5ZnJhbWVzXyhcbiAgICAgICAgJGZyb20tc3Ryb2tlLWNvbG9yOiAkdW5tYXJrZWQtc3Ryb2tlLWNvbG9yLFxuICAgICAgICAkdG8tc3Ryb2tlLWNvbG9yOiAkbWFya2VkLXN0cm9rZS1jb2xvcixcbiAgICAgICAgJGZyb20tZmlsbC1jb2xvcjogJHVubWFya2VkLWZpbGwtY29sb3IsXG4gICAgICAgICR0by1maWxsLWNvbG9yOiAkbWFya2VkLWZpbGwtY29sb3IsXG4gICAgICAgICR1aWQ6ICN7JHVpZH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgI3skYW5pbS1zZWxlY3Rvcn0ge1xuICAgICAgJi11bmNoZWNrZWQtY2hlY2tlZCxcbiAgICAgICYtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUge1xuICAgICAgICAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDplbmFibGVkIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBtZGMtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kLSN7JHVpZH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYtY2hlY2tlZC11bmNoZWNrZWQsXG4gICAgICAmLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIHtcbiAgICAgICAgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6ZW5hYmxlZCB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQge1xuICAgICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBhbmltYXRpb24tbmFtZTogbWRjLWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmQtI3skdWlkfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBzdHJva2UgJiBmaWxsIGNvbG9ycyBmb3IgYm90aCBtYXJrZWQgYW5kIHVubWFya2VkIHN0YXRlIG9mIGRpc2FibGVkIGNoZWNrYm94LlxuLy8vIEBwYXJhbSB7Q29sb3J9ICR1bm1hcmtlZC1zdHJva2UtY29sb3IgLSBUaGUgZGVzaXJlZCBzdHJva2UgY29sb3IgZm9yIHRoZSB1bm1hcmtlZCBzdGF0ZVxuLy8vIEBwYXJhbSB7Q29sb3J9ICR1bm1hcmtlZC1maWxsLWNvbG9yIC0gVGhlIGRlc2lyZWQgZmlsbCBjb2xvciBmb3IgdGhlIHVubWFya2VkIHN0YXRlXG4vLy8gQHBhcmFtIHtDb2xvcn0gJG1hcmtlZC1zdHJva2UtY29sb3IgLSBUaGUgZGVzaXJlZCBzdHJva2UgY29sb3IgZm9yIHRoZSBtYXJrZWQgc3RhdGVcbi8vLyBAcGFyYW0ge0NvbG9yfSAkbWFya2VkLWZpbGwtY29sb3IgLSBUaGUgZGVzaXJlZCBmaWxsIGNvbG9yIGZvciB0aGUgbWFya2VkIHN0YXRlXG4vLy9cbkBtaXhpbiBkaXNhYmxlZC1jb250YWluZXItY29sb3JzKFxuICAkdW5tYXJrZWQtc3Ryb2tlLWNvbG9yOiAkZGlzYWJsZWQtY29sb3IsXG4gICR1bm1hcmtlZC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudCxcbiAgJG1hcmtlZC1zdHJva2UtY29sb3I6IHRyYW5zcGFyZW50LFxuICAkbWFya2VkLWZpbGwtY29sb3I6ICRkaXNhYmxlZC1jb2xvcixcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIEBpZiAoXG4gICAgJHVubWFya2VkLXN0cm9rZS1jb2xvciBhbmQgbm90XG4gICAgICBjdXN0b20tcHJvcGVydGllcy5pcy1jdXN0b20tcHJvcCgkdW5tYXJrZWQtc3Ryb2tlLWNvbG9yKVxuICApIHtcbiAgICAkdW5tYXJrZWQtc3Ryb2tlLWNvbG9yOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICBjaGVja2JveC1jdXN0b20tcHJvcGVydGllcy4kZGlzYWJsZWQtY29sb3IsXG4gICAgICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKCR1bm1hcmtlZC1zdHJva2UtY29sb3IpXG4gICAgKTtcbiAgfVxuXG4gIEBpZiAkdW5tYXJrZWQtc3Ryb2tlLWNvbG9yID09IG51bGwge1xuICAgICR1bm1hcmtlZC1maWxsLWNvbG9yOiBudWxsO1xuICB9XG5cbiAgQGluY2x1ZGUgaWYtdW5tYXJrZWQtZGlzYWJsZWRfIHtcbiAgICBAaW5jbHVkZSBjb250YWluZXItY29sb3JzXyhcbiAgICAgICR1bm1hcmtlZC1zdHJva2UtY29sb3IsXG4gICAgICAkdW5tYXJrZWQtZmlsbC1jb2xvcixcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIEBpZiAoXG4gICAgJG1hcmtlZC1maWxsLWNvbG9yIGFuZCBub3RcbiAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRtYXJrZWQtZmlsbC1jb2xvcilcbiAgKSB7XG4gICAgJG1hcmtlZC1maWxsLWNvbG9yOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICBjaGVja2JveC1jdXN0b20tcHJvcGVydGllcy4kZGlzYWJsZWQtY29sb3IsXG4gICAgICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKCRtYXJrZWQtZmlsbC1jb2xvcilcbiAgICApO1xuICB9XG5cbiAgQGlmICRtYXJrZWQtZmlsbC1jb2xvciBhbmRcbiAgICBjdXN0b20tcHJvcGVydGllcy5nZXQtZmFsbGJhY2soJG1hcmtlZC1maWxsLWNvbG9yKSA9PVxuICAgIEdyYXlUZXh0XG4gIHtcbiAgICAvLyBUcmFuc3BhcmVudCBhcHBlYXJzIHdoaXRlIGluIEhDTVxuICAgICRtYXJrZWQtc3Ryb2tlLWNvbG9yOiBHcmF5VGV4dDtcbiAgfVxuXG4gIEBpZiAkbWFya2VkLWZpbGwtY29sb3IgPT0gbnVsbCB7XG4gICAgJG1hcmtlZC1zdHJva2UtY29sb3I6IG51bGw7XG4gIH1cblxuICBAaW5jbHVkZSBpZi1tYXJrZWQtZGlzYWJsZWRfIHtcbiAgICBAaW5jbHVkZSBjb250YWluZXItY29sb3JzXyhcbiAgICAgICRtYXJrZWQtc3Ryb2tlLWNvbG9yLFxuICAgICAgJG1hcmtlZC1maWxsLWNvbG9yLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGluayBjb2xvciBvZiB0aGUgY2hlY2tlZCBhbmQgaW5kZXRlcm1pbmF0ZSBpY29ucyBmb3IgYW4gZW5hYmxlZCBjaGVja2JveFxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIGluayBjb2xvciBpbiBlbmFibGVkIHN0YXRlXG4vLy9cbkBtaXhpbiBpbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpZiAoJGNvbG9yIGFuZCBub3QgY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoJGNvbG9yKSkge1xuICAgICRjb2xvcjogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgY2hlY2tib3gtY3VzdG9tLXByb3BlcnRpZXMuJGluay1jb2xvcixcbiAgICAgICRjb2xvclxuICAgICk7XG4gIH1cblxuICBAaW5jbHVkZSBpZi1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgaW5rLWNvbG9yXygkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBpbmsgY29sb3Igb2YgdGhlIGNoZWNrZWQgYW5kIGluZGV0ZXJtaW5hdGUgaWNvbnMgZm9yIGEgZGlzYWJsZWQgY2hlY2tib3hcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBpbmsgY29sb3IgaW4gZGlzYWJsZWQgc3RhdGVcbi8vL1xuQG1peGluIGRpc2FibGVkLWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGlmICgkY29sb3IgYW5kIG5vdCBjdXN0b20tcHJvcGVydGllcy5pcy1jdXN0b20tcHJvcCgkY29sb3IpKSB7XG4gICAgJGNvbG9yOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICBjaGVja2JveC1jdXN0b20tcHJvcGVydGllcy4kaW5rLWNvbG9yLFxuICAgICAgJGNvbG9yXG4gICAgKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGlmLWRpc2FibGVkXyB7XG4gICAgQGluY2x1ZGUgaW5rLWNvbG9yXygkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy8gU2V0cyByaXBwbGUgY29sb3Igd2hlbiBjaGVja2JveCBpcyBub3QgaW4gY2hlY2tlZCBzdGF0ZS5cbkBtaXhpbiByaXBwbGUtY29sb3IoXG4gICRjb2xvcixcbiAgJG9wYWNpdHktbWFwOiBudWxsLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcyhcbiAgICAkY29sb3I6ICRjb2xvcixcbiAgICAkb3BhY2l0eS1tYXA6ICRvcGFjaXR5LW1hcCxcbiAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgKTtcbn1cblxuLy8vIFNldHMgZm9jdXMgaW5kaWNhdG9yIGNvbG9yIHdoZW4gY2hlY2tib3ggaXMgaW4gY2hlY2tlZCBzdGF0ZS5cbkBtaXhpbiBmb2N1cy1pbmRpY2F0b3ItY29sb3IoXG4gICRjb2xvcixcbiAgJG9wYWNpdHktbWFwOiBudWxsLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgJi5tZGMtY2hlY2tib3gtLXNlbGVjdGVkIHtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzKFxuICAgICAgJGNvbG9yOiAkY29sb3IsXG4gICAgICAkb3BhY2l0eS1tYXA6ICRvcGFjaXR5LW1hcCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0XG4gICAgKTtcbiAgfVxuXG4gICYubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1mb2N1c2VkLm1kYy1jaGVja2JveC0tc2VsZWN0ZWQge1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMtYmFzZS1jb2xvcihcbiAgICAgICRjb2xvcjogJGNvbG9yLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnksXG4gICAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgICApO1xuICB9XG59XG5cbi8vXG4vLyBQcml2YXRlXG4vL1xuXG4vLy9cbi8vLyBIZWxwcyBzZWxlY3QgdGhlIGNoZWNrYm94IGJhY2tncm91bmQgb25seSB3aGVuIGl0cyBuYXRpdmUgY29udHJvbCBpcyBpblxuLy8vIGVuYWJsZWQgc3RhdGUuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBpZi1lbmFibGVkXyB7XG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmVuYWJsZWQgfiB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vXG4vLy8gSGVscHMgc2VsZWN0IHRoZSBjaGVja2JveCBiYWNrZ3JvdW5kIG9ubHkgd2hlbiBpdHMgbmF0aXZlIGNvbnRyb2wgaXMgaW5cbi8vLyBkaXNhYmxlZCBzdGF0ZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIGlmLWRpc2FibGVkXyB7XG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmRpc2FibGVkIH4ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vL1xuLy8vIEhlbHBzIHNlbGVjdCB0aGUgY2hlY2tib3ggYmFja2dyb3VuZCBvbmx5IHdoZW4gaXRzIG5hdGl2ZSBjb250cm9sIGlzIGluXG4vLy8gdW5tYXJrZWQgJiBlbmFibGVkIHN0YXRlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG5AbWl4aW4gaWYtdW5tYXJrZWQtZW5hYmxlZF8ge1xuICAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDplbmFibGVkOm5vdCg6Y2hlY2tlZCk6bm90KDppbmRldGVybWluYXRlKTpub3QoW2RhdGEtaW5kZXRlcm1pbmF0ZT0ndHJ1ZSddKVxuICAgIH4ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vL1xuLy8vIEhlbHBzIHNlbGVjdCB0aGUgY2hlY2tib3ggYmFja2dyb3VuZCBvbmx5IHdoZW4gaXRzIG5hdGl2ZSBjb250cm9sIGlzIGluXG4vLy8gdW5tYXJrZWQgJiBkaXNhYmxlZCBzdGF0ZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIGlmLXVubWFya2VkLWRpc2FibGVkXyB7XG4gIC8vIE5vdGU6IHdlIG11c3QgdXNlIGBbZGlzYWJsZWRdYCBpbnN0ZWFkIG9mIGA6ZGlzYWJsZWRgIGJlbG93IGJlY2F1c2UgRWRnZSBkb2VzIG5vdCBhbHdheXMgcmVjYWxjdWxhdGUgdGhlIHN0eWxlXG4gIC8vIHByb3BlcnR5IHdoZW4gdGhlIGA6ZGlzYWJsZWRgIHBzZXVkby1jbGFzcyBpcyBmb2xsb3dlZCBieSBhIHNpYmxpbmcgY29tYmluYXRvci4gU2VlOlxuICAvLyBodHRwczovL2RldmVsb3Blci5taWNyb3NvZnQuY29tL2VuLXVzL21pY3Jvc29mdC1lZGdlL3BsYXRmb3JtL2lzc3Vlcy8xMTI5NTIzMS9cbiAgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2xbZGlzYWJsZWRdOm5vdCg6Y2hlY2tlZCk6bm90KDppbmRldGVybWluYXRlKTpub3QoW2RhdGEtaW5kZXRlcm1pbmF0ZT0ndHJ1ZSddKVxuICAgIH4ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vL1xuLy8vIEhlbHBzIHNlbGVjdCB0aGUgY2hlY2tib3ggYmFja2dyb3VuZCBvbmx5IHdoZW4gaXRzIG5hdGl2ZSBjb250cm9sIGlzIGluXG4vLy8gbWFya2VkICYgZW5hYmxlZCBzdGF0ZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIGlmLW1hcmtlZC1lbmFibGVkXyB7XG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmVuYWJsZWQ6Y2hlY2tlZCxcbiAgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6ZW5hYmxlZDppbmRldGVybWluYXRlLFxuICAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbFtkYXRhLWluZGV0ZXJtaW5hdGU9J3RydWUnXTplbmFibGVkIHtcbiAgICB+IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBIZWxwcyBzZWxlY3QgdGhlIGNoZWNrYm94IGJhY2tncm91bmQgb25seSB3aGVuIGl0cyBuYXRpdmUgY29udHJvbCBpcyBpblxuLy8vIG1hcmtlZCAmIGRpc2FibGVkIHN0YXRlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG5AbWl4aW4gaWYtbWFya2VkLWRpc2FibGVkXyB7XG4gIC8vIE5vdGU6IHdlIG11c3QgdXNlIGBbZGlzYWJsZWRdYCBpbnN0ZWFkIG9mIGA6ZGlzYWJsZWRgIGJlbG93IGJlY2F1c2UgRWRnZSBkb2VzIG5vdCBhbHdheXMgcmVjYWxjdWxhdGUgdGhlIHN0eWxlXG4gIC8vIHByb3BlcnR5IHdoZW4gdGhlIGA6ZGlzYWJsZWRgIHBzZXVkby1jbGFzcyBpcyBmb2xsb3dlZCBieSBhIHNpYmxpbmcgY29tYmluYXRvci4gU2VlOlxuICAvLyBodHRwczovL2RldmVsb3Blci5taWNyb3NvZnQuY29tL2VuLXVzL21pY3Jvc29mdC1lZGdlL3BsYXRmb3JtL2lzc3Vlcy8xMTI5NTIzMS9cbiAgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2xbZGlzYWJsZWRdOmNoZWNrZWQsXG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sW2Rpc2FibGVkXTppbmRldGVybWluYXRlLFxuICAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbFtkYXRhLWluZGV0ZXJtaW5hdGU9J3RydWUnXVtkaXNhYmxlZF0ge1xuICAgIH4ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIHN0cm9rZSAmIGZpbGwgY29sb3JzIGZvciB0aGUgY2hlY2tib3guXG4vLy8gVGhpcyBtaXhpbiBzaG91bGQgYmUgd3JhcHBlZCBpbiBhIG1peGluIHRoYXQgcXVhbGlmaWVzIHN0YXRlIHN1Y2ggYXNcbi8vLyBgbWRjLWNoZWNrYm94LWlmLXVubWFya2VkLWVuYWJsZWRfYC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIGNvbnRhaW5lci1jb2xvcnNfKFxuICAkc3Ryb2tlLWNvbG9yLFxuICAkZmlsbC1jb2xvcixcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci1jb2xvciwgJHN0cm9rZS1jb2xvcik7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShiYWNrZ3JvdW5kLWNvbG9yLCAkZmlsbC1jb2xvcik7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGluayBjb2xvciBvZiB0aGUgY2hlY2tlZCBhbmQgaW5kZXRlcm1pbmF0ZSBpY29ucyBmb3IgYSBjaGVja2JveC5cbi8vLyBUaGlzIG1peGluIHNob3VsZCBiZSB3cmFwcGVkIGluIGEgbWl4aW4gdGhhdCBxdWFsaWZpZXMgc3RhdGUgc3VjaCBhc1xuLy8vIGBtZGMtY2hlY2tib3gtaWYtdW5tYXJrZWRfYC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIGluay1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQge1xuICAgIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFyayB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtY2hlY2tib3hfX21peGVkbWFyayB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci1jb2xvciwgJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGNvbnRhaW5lci1rZXlmcmFtZXNfKFxuICAkZnJvbS1zdHJva2UtY29sb3IsXG4gICR0by1zdHJva2UtY29sb3IsXG4gICRmcm9tLWZpbGwtY29sb3IsXG4gICR0by1maWxsLWNvbG9yLFxuICAkdWlkXG4pIHtcbiAgQGtleWZyYW1lcyBtZGMtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kLSN7JHVpZH0ge1xuICAgIDAlIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci1jb2xvciwgJGZyb20tc3Ryb2tlLWNvbG9yKTtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJhY2tncm91bmQtY29sb3IsICRmcm9tLWZpbGwtY29sb3IpO1xuICAgIH1cblxuICAgIDUwJSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShib3JkZXItY29sb3IsICR0by1zdHJva2UtY29sb3IpO1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYmFja2dyb3VuZC1jb2xvciwgJHRvLWZpbGwtY29sb3IpO1xuICAgIH1cbiAgfVxuXG4gIEBrZXlmcmFtZXMgbWRjLWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmQtI3skdWlkfSB7XG4gICAgMCUsXG4gICAgODAlIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci1jb2xvciwgJHRvLXN0cm9rZS1jb2xvcik7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShiYWNrZ3JvdW5kLWNvbG9yLCAkdG8tZmlsbC1jb2xvcik7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShib3JkZXItY29sb3IsICRmcm9tLXN0cm9rZS1jb2xvcik7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShiYWNrZ3JvdW5kLWNvbG9yLCAkZnJvbS1maWxsLWNvbG9yKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFRPRE86IGRvY3VtZW50IHdoeSB0aGlzIGRpc2FibGUgaXMgbmVjY2Vzc2FyeVxuXG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczpsaXN0JztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5AdXNlICdAbWF0ZXJpYWwvYW5pbWF0aW9uL2FuaW1hdGlvbic7XG5AdXNlICdAbWF0ZXJpYWwvZGVuc2l0eS9mdW5jdGlvbnMnIGFzIGRlbnNpdHktZnVuY3Rpb25zO1xuQHVzZSAnQG1hdGVyaWFsL2RvbS9kb20nO1xuQHVzZSAnQG1hdGVyaWFsL2Zsb2F0aW5nLWxhYmVsL21peGlucycgYXMgZmxvYXRpbmctbGFiZWwtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL2Zsb2F0aW5nLWxhYmVsL3ZhcmlhYmxlcycgYXMgZmxvYXRpbmctbGFiZWwtdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL2xpbmUtcmlwcGxlL21peGlucycgYXMgbGluZS1yaXBwbGUtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL25vdGNoZWQtb3V0bGluZS9taXhpbnMnIGFzIG5vdGNoZWQtb3V0bGluZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvbm90Y2hlZC1vdXRsaW5lL3ZhcmlhYmxlcycgYXMgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlJztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jdXN0b20tcHJvcGVydGllcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3NoYXBlL21peGlucycgYXMgc2hhcGUtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3NoYXBlL2Z1bmN0aW9ucycgYXMgc2hhcGUtZnVuY3Rpb25zO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnaGVscGVyLXRleHQvbWl4aW5zJyBhcyBoZWxwZXItdGV4dC1taXhpbnM7XG5AdXNlICdjaGFyYWN0ZXItY291bnRlci9taXhpbnMnIGFzIGNoYXJhY3Rlci1jb3VudGVyLW1peGlucztcbkB1c2UgJ2ljb24vbWl4aW5zJyBhcyBpY29uLW1peGlucztcbkB1c2UgJ2ljb24vdmFyaWFibGVzJyBhcyBpY29uLXZhcmlhYmxlcztcbkB1c2UgJy4vdmFyaWFibGVzJztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcblxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgcmlwcGxlKCRxdWVyeSk7XG4gIEBpbmNsdWRlIHdpdGhvdXQtcmlwcGxlKCRxdWVyeSk7XG4gIEBpbmNsdWRlIGhlbHBlci10ZXh0LW1peGlucy5oZWxwZXItdGV4dC1jb3JlLXN0eWxlcygkcXVlcnkpO1xuICBAaW5jbHVkZSBjaGFyYWN0ZXItY291bnRlci1taXhpbnMuY2hhcmFjdGVyLWNvdW50ZXItY29yZS1zdHlsZXMoJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgaWNvbi1taXhpbnMuaWNvbi1jb3JlLXN0eWxlcygkcXVlcnkpO1xufVxuXG5AbWl4aW4gd2l0aG91dC1yaXBwbGUoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC8vIEJhc2VsaW5lXG4gIC8vIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIHRleHQtZmllbGRcbiAgLm1kYy10ZXh0LWZpZWxkIHtcbiAgICBAaW5jbHVkZSBfYmFzZSgkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy10ZXh0LWZpZWxkX19pbnB1dCB7XG4gICAgQGluY2x1ZGUgX2lucHV0KCRxdWVyeSk7XG5cbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlci1zZWxlY3Rvcl8ge1xuICAgICAgQGluY2x1ZGUgX2lucHV0LXBsYWNlaG9sZGVyKCRxdWVyeSk7XG4gICAgfVxuXG4gICAgLy8gQWx3YXlzIHNob3cgcGxhY2Vob2xkZXIgZm9yIHRleHQgZmllbGRzIHRoYXQgaGFzIG5vXG4gICAgLy8gbGFiZWwgYW5kIHNob3cgb25seSBvbiBmb2N1c2VkIHN0YXRlIHdoZW4gbGFiZWwgaXMgcHJlc2VudC5cbiAgICAubWRjLXRleHQtZmllbGQtLW5vLWxhYmVsICYsXG4gICAgLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkICYge1xuICAgICAgQGluY2x1ZGUgcGxhY2Vob2xkZXItc2VsZWN0b3JfIHtcbiAgICAgICAgQGluY2x1ZGUgX2lucHV0LXBsYWNlaG9sZGVyLXZpc2libGUoJHF1ZXJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLXRleHQtZmllbGRfX2FmZml4IHtcbiAgICBAaW5jbHVkZSBfYWZmaXgoJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgLm1kYy10ZXh0LWZpZWxkLS1sYWJlbC1mbG9hdGluZyAmLFxuICAgIC5tZGMtdGV4dC1maWVsZC0tbm8tbGFiZWwgJiB7XG4gICAgICBAaW5jbHVkZSBfYWZmaXgtdmlzaWJsZSgkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuXG4gICAgLy8gU2FmYXJpIG9ubHlcbiAgICBAc3VwcG9ydHMgKC13ZWJraXQtaHlwaGVuczogbm9uZSkge1xuICAgICAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAmIHtcbiAgICAgICAgQGluY2x1ZGUgX2NlbnRlcmVkLWFmZml4LXNhZmFyaS1zdXBwb3J0KCRxdWVyeTogJHF1ZXJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLXRleHQtZmllbGRfX2FmZml4LS1wcmVmaXgge1xuICAgIEBpbmNsdWRlIF9wcmVmaXgoJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgLm1kYy10ZXh0LWZpZWxkLS1lbmQtYWxpZ25lZCAmIHtcbiAgICAgIEBpbmNsdWRlIF9wcmVmaXgtZW5kLWFsaWduZWQoJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtdGV4dC1maWVsZF9fYWZmaXgtLXN1ZmZpeCB7XG4gICAgQGluY2x1ZGUgX3N1ZmZpeCgkcXVlcnk6ICRxdWVyeSk7XG5cbiAgICAubWRjLXRleHQtZmllbGQtLWVuZC1hbGlnbmVkICYge1xuICAgICAgQGluY2x1ZGUgX3N1ZmZpeC1lbmQtYWxpZ25lZCgkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVmFyaWFudHNcblxuICAubWRjLXRleHQtZmllbGQtLWZpbGxlZCB7XG4gICAgQGluY2x1ZGUgX2ZpbGxlZCgkcXVlcnkpO1xuXG4gICAgJi5tZGMtdGV4dC1maWVsZC0tbm8tbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX2ZpbGxlZC1uby1sYWJlbCgkcXVlcnkpO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQge1xuICAgIEBpbmNsdWRlIG91dGxpbmVkXygkcXVlcnkpO1xuXG4gICAgLm1kYy1ub3RjaGVkLW91dGxpbmUge1xuICAgICAgQGluY2x1ZGUgX291dGxpbmVkLW5vdGNoZWQtb3V0bGluZSgkcXVlcnkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIE90aGVyIFZhcmlhdGlvbnNcblxuICAubWRjLXRleHQtZmllbGQtLXRleHRhcmVhIHtcbiAgICBAaW5jbHVkZSB0ZXh0YXJlYV8oJHF1ZXJ5KTtcblxuICAgIC5tZGMtdGV4dC1maWVsZF9faW5wdXQge1xuICAgICAgQGluY2x1ZGUgX3RleHRhcmVhLWlucHV0KCRxdWVyeSk7XG4gICAgfVxuXG4gICAgJi5tZGMtdGV4dC1maWVsZC0tZmlsbGVkIHtcbiAgICAgIEBpbmNsdWRlIF90ZXh0YXJlYS1maWxsZWQoJHF1ZXJ5KTtcblxuICAgICAgLm1kYy10ZXh0LWZpZWxkX19pbnB1dCB7XG4gICAgICAgIEBpbmNsdWRlIF90ZXh0YXJlYS1maWxsZWQtaW5wdXQoJHF1ZXJ5KTtcbiAgICAgIH1cblxuICAgICAgJi5tZGMtdGV4dC1maWVsZC0tbm8tbGFiZWwge1xuICAgICAgICAubWRjLXRleHQtZmllbGRfX2lucHV0IHtcbiAgICAgICAgICBAaW5jbHVkZSBfdGV4dGFyZWEtZmlsbGVkLW5vLWxhYmVsLWlucHV0KCRxdWVyeSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCB7XG4gICAgICBAaW5jbHVkZSBfdGV4dGFyZWEtb3V0bGluZWQoJHF1ZXJ5KTtcblxuICAgICAgLm1kYy10ZXh0LWZpZWxkX19pbnB1dCB7XG4gICAgICAgIEBpbmNsdWRlIF90ZXh0YXJlYS1vdXRsaW5lZC1pbnB1dCgkcXVlcnkpO1xuICAgICAgfVxuXG4gICAgICAubWRjLWZsb2F0aW5nLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX3RleHRhcmVhLW91dGxpbmVkLWZsb2F0aW5nLWxhYmVsKCRxdWVyeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tZGMtdGV4dC1maWVsZC0td2l0aC1pbnRlcm5hbC1jb3VudGVyIHtcbiAgICAgIC5tZGMtdGV4dC1maWVsZF9faW5wdXQge1xuICAgICAgICBAaW5jbHVkZSBfdGV4dGFyZWEtaW5wdXQtd2l0aC1pbnRlcm5hbC1jb3VudGVyKCRxdWVyeSk7XG4gICAgICB9XG5cbiAgICAgIC5tZGMtdGV4dC1maWVsZC1jaGFyYWN0ZXItY291bnRlciB7XG4gICAgICAgIEBpbmNsdWRlIF90ZXh0YXJlYS1pbnRlcm5hbC1jb3VudGVyKCRxdWVyeSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzaXplciBlbGVtZW50IGRvZXMgbm90IG5lZWQgdG8gYmUgdW5kZXIgbWRjLXRleHQtZmllbGQtLXRleHRhcmVhLCB0aGF0XG4gIC8vIGp1c3QgYWRkcyBzcGVjaWZpY2l0eVxuICAubWRjLXRleHQtZmllbGRfX3Jlc2l6ZXIge1xuICAgIEBpbmNsdWRlIF90ZXh0YXJlYS1yZXNpemVyKCRxdWVyeSk7XG5cbiAgICAubWRjLXRleHQtZmllbGQtLWZpbGxlZCAmIHtcbiAgICAgIEBpbmNsdWRlIF90ZXh0YXJlYS1maWxsZWQtcmVzaXplcigkcXVlcnkpO1xuXG4gICAgICAubWRjLXRleHQtZmllbGRfX2lucHV0LFxuICAgICAgLm1kYy10ZXh0LWZpZWxkLWNoYXJhY3Rlci1jb3VudGVyIHtcbiAgICAgICAgQGluY2x1ZGUgX3RleHRhcmVhLWZpbGxlZC1yZXNpemVyLWNoaWxkcmVuKCRxdWVyeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAmIHtcbiAgICAgIEBpbmNsdWRlIF90ZXh0YXJlYS1vdXRsaW5lZC1yZXNpemVyKCRxdWVyeSk7XG5cbiAgICAgIC5tZGMtdGV4dC1maWVsZF9faW5wdXQsXG4gICAgICAubWRjLXRleHQtZmllbGQtY2hhcmFjdGVyLWNvdW50ZXIge1xuICAgICAgICBAaW5jbHVkZSBfdGV4dGFyZWEtb3V0bGluZWQtcmVzaXplci1jaGlsZHJlbigkcXVlcnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtdGV4dC1maWVsZC0td2l0aC1sZWFkaW5nLWljb24ge1xuICAgIEBpbmNsdWRlIF9wYWRkaW5nLWhvcml6b250YWwtd2l0aC1sZWFkaW5nLWljb24oJHF1ZXJ5KTtcblxuICAgICYubWRjLXRleHQtZmllbGQtLWZpbGxlZCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxlYWRpbmctaWNvbl8oJHF1ZXJ5KTtcbiAgICB9XG5cbiAgICAmLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCB7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbl8oJHF1ZXJ5KTtcbiAgICB9XG4gIH1cblxuICAubWRjLXRleHQtZmllbGQtLXdpdGgtdHJhaWxpbmctaWNvbiB7XG4gICAgQGluY2x1ZGUgX3BhZGRpbmctaG9yaXpvbnRhbC13aXRoLXRyYWlsaW5nLWljb24oJHF1ZXJ5KTtcblxuICAgICYubWRjLXRleHQtZmllbGQtLWZpbGxlZCB7XG4gICAgICBAaW5jbHVkZSBfd2l0aC10cmFpbGluZy1pY29uKCRxdWVyeSk7XG4gICAgfVxuXG4gICAgJi5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQge1xuICAgICAgQGluY2x1ZGUgX291dGxpbmVkLXdpdGgtdHJhaWxpbmctaWNvbigkcXVlcnkpO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtdGV4dC1maWVsZC0td2l0aC1sZWFkaW5nLWljb24ubWRjLXRleHQtZmllbGQtLXdpdGgtdHJhaWxpbmctaWNvbiB7XG4gICAgQGluY2x1ZGUgX3BhZGRpbmctaG9yaXpvbnRhbC13aXRoLWJvdGgtaWNvbnMoJHF1ZXJ5KTtcblxuICAgICYubWRjLXRleHQtZmllbGQtLWZpbGxlZCB7XG4gICAgICBAaW5jbHVkZSBfd2l0aC1sZWFkaW5nLWFuZC10cmFpbGluZy1pY29uKCRxdWVyeSk7XG4gICAgfVxuICB9XG5cbiAgLy8gcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgdGV4dC1maWVsZC1oZWxwZXItdGV4dFxuICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm4gLS1cbiAgLy8gVE9ETzogZG9jdW1lbnQgd2h5IHRoaXMgZGlzYWJsZSBpcyBuZWNjZXNzYXJ5XG4gIC5tZGMtdGV4dC1maWVsZC1oZWxwZXItbGluZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cblxuICAgIC5tZGMtdGV4dC1maWVsZCArICYge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyaWFibGVzLiRoZWxwZXItbGluZS1wYWRkaW5nO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcmlhYmxlcy4kaGVscGVyLWxpbmUtcGFkZGluZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gc3R5bGVsaW50LWVuYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm5cbiAgLy8gcG9zdGNzcy1iZW0tbGludGVyOiBlbmRcblxuICAvLyBtZGMtZm9ybS1maWVsZCB0d2Vha3MgdG8gYWxpZ24gdGV4dCBmaWVsZCBsYWJlbCBjb3JyZWN0bHlcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItbWF4LXR5cGUgLS1cbiAgLy8gVE9ETzogZG9jdW1lbnQgd2h5IHRoaXMgZGlzYWJsZSBpcyBuZWNjZXNzYXJ5XG4gIC5tZGMtZm9ybS1maWVsZCA+IC5tZGMtdGV4dC1maWVsZCArIGxhYmVsIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICB9XG4gIH1cbiAgLy8gc3R5bGVsaW50LWVuYWJsZSBzZWxlY3Rvci1tYXgtdHlwZVxuXG4gIC8vIFN0YXRlc1xuICAubWRjLXRleHQtZmllbGQtLWZvY3VzZWQge1xuICAgIEBpbmNsdWRlIGZvY3VzZWRfKCRxdWVyeSk7XG5cbiAgICAmLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCB7XG4gICAgICBAaW5jbHVkZSBfZm9jdXNlZC1vdXRsaW5lZCgkcXVlcnkpO1xuXG4gICAgICAmLm1kYy10ZXh0LWZpZWxkLS10ZXh0YXJlYSB7XG4gICAgICAgIEBpbmNsdWRlIF9mb2N1c2VkLW91dGxpbmVkLXRleHRhcmVhKCRxdWVyeSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy10ZXh0LWZpZWxkLS1pbnZhbGlkIHtcbiAgICBAaW5jbHVkZSBpbnZhbGlkXygkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZWRfKCRxdWVyeSk7XG5cbiAgICAmLm1kYy10ZXh0LWZpZWxkLS1maWxsZWQge1xuICAgICAgQGluY2x1ZGUgX2Rpc2FibGVkLWZpbGxlZCgkcXVlcnkpO1xuICAgIH1cblxuICAgIC5tZGMtdGV4dC1maWVsZF9faW5wdXQge1xuICAgICAgQGluY2x1ZGUgX2Rpc2FibGVkLWlucHV0KCRxdWVyeSk7XG4gICAgfVxuICB9XG5cbiAgLm1kYy10ZXh0LWZpZWxkLS1lbmQtYWxpZ25lZCB7XG4gICAgQGluY2x1ZGUgZW5kLWFsaWduZWRfKCRxdWVyeSk7XG4gIH1cblxuICAubWRjLXRleHQtZmllbGQtLWx0ci10ZXh0IHtcbiAgICBAaW5jbHVkZSBfbHRyLXRleHQoJHF1ZXJ5KTtcblxuICAgICYubWRjLXRleHQtZmllbGQtLWVuZC1hbGlnbmVkIHtcbiAgICAgIEBpbmNsdWRlIF9sdHItdGV4dC1lbmQtYWxpZ25lZCgkcXVlcnkpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIEFQSSBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IGZyYW1ld29ya3MgdGhhdCBtYXkgd2FudCB0byBzZXBhcmF0ZSB0aGUgcmlwcGxlLXJlbGF0ZWQgc3R5bGVzXG4vLyBmcm9tIHRoZSBvdGhlciB0ZXh0IGZpZWxkIHN0eWxlcy4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBtb3N0IHVzZXJzIHVzZSBgbWRjLXRleHQtZmllbGQtY29yZS1zdHlsZXNgIGluc3RlYWQuXG5AbWl4aW4gcmlwcGxlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgcmlwcGxlLmNvbW1vbigkcXVlcnkpOyAvLyBDT1BZQkFSQV9DT01NRU5UX1RISVNfTElORVxuXG4gIC5tZGMtdGV4dC1maWVsZC0tZmlsbGVkIHtcbiAgICBAaW5jbHVkZSByaXBwbGUuc3VyZmFjZShcbiAgICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldFxuICAgICk7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnJhZGl1cy1ib3VuZGVkKFxuICAgICAgJHF1ZXJ5OiAkcXVlcnksXG4gICAgICAkcmlwcGxlLXRhcmdldDogdmFyaWFibGVzLiRyaXBwbGUtdGFyZ2V0XG4gICAgKTtcbiAgfVxuXG4gICN7dmFyaWFibGVzLiRyaXBwbGUtdGFyZ2V0fSB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnRhcmdldC1jb21tb24oJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgZGVuc2l0eSBzY2FsZSBmb3IgZGVmYXVsdCB0ZXh0IGZpZWxkIHZhcmlhbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IFN0cmluZ30gJGRlbnNpdHktc2NhbGUgLSBEZW5zaXR5IHNjYWxlIHZhbHVlIGZvciBjb21wb25lbnQuIFN1cHBvcnRlZCBkZW5zaXR5IHNjYWxlIHZhbHVlcyBgLTRgLFxuLy8vICAgICBgLTNgLCBgLTJgLCBgLTFgLCBgMGAuIERlZmF1bHQgaXMgYDBgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCBTZXRzIHRoZSBtaW5pbXVtIGhlaWdodCBmb3Jcbi8vLyAgICAgZmlsbGVkIHRleHRmaWVsZHMgYXQgd2hpY2ggdG8gYWxsb3cgZmxvYXRpbmcgbGFiZWxzLlxuLy8vXG5AbWl4aW4gZGVuc2l0eShcbiAgJGRlbnNpdHktc2NhbGUsXG4gICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsOiB2YXJpYWJsZXMuJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkaGVpZ2h0OiBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBoZWlnaHQoXG4gICAgJGhlaWdodCxcbiAgICAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbDogJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgLy8gVE9ETyhiLzE1MTgzOTIxOSk6IHJlc2l6ZSBpY29ucyBhbmQgYWRqdXN0IGxhYmVsIHBvc2l0aW9uXG4gIC8vIEBpZiAkZGVuc2l0eS1zY2FsZSA8IDAge1xuICAvLyAgIEBpbmNsdWRlIGljb24tbWl4aW5zLnNpemUoaWNvbi12YXJpYWJsZXMuJGRlbnNlLWljb24tc2l6ZSk7XG4gIC8vIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBkZW5zaXR5IHNjYWxlIGZvciBvdXRsaW5lZCB0ZXh0IGZpZWxkIChFeGNsdWRpbmcgb3V0bGluZWQgdGV4dCBmaWVsZCB3aXRoIGxlYWRpbmcgaWNvbikuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IFN0cmluZ30gJGRlbnNpdHktc2NhbGUgLSBEZW5zaXR5IHNjYWxlIHZhbHVlIGZvciBjb21wb25lbnQuIFN1cHBvcnRlZCBkZW5zaXR5IHNjYWxlIHZhbHVlcyBgLTRgLFxuLy8vICAgICBgLTNgLCBgLTJgLCBgLTFgLCBgMGAuIERlZmF1bHQgaXMgYDBgLlxuLy8vXG5AbWl4aW4gb3V0bGluZWQtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkaGVpZ2h0OiBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRsaW5lZC1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAvLyBUT0RPKGIvMTUxODM5MjE5KTogcmVzaXplIGljb25zIGFuZCBhZGp1c3QgbGFiZWwgcG9zaXRpb25cbiAgLy8gQGlmICRkZW5zaXR5LXNjYWxlIDwgMCB7XG4gIC8vICAgQGluY2x1ZGUgaWNvbi1taXhpbnMuc2l6ZShpY29uLXZhcmlhYmxlcy4kZGVuc2UtaWNvbi1zaXplKTtcbiAgLy8gfVxufVxuXG4vLy9cbi8vLyBTZXRzIGRlbnNpdHkgc2NhbGUgZm9yIG91dGxpbmVkIHRleHQgZmllbGQgd2l0aCBsZWFkaW5nIGljb24uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IFN0cmluZ30gJGRlbnNpdHktc2NhbGUgLSBEZW5zaXR5IHNjYWxlIHZhbHVlIGZvciBjb21wb25lbnQuIFN1cHBvcnRlZCBkZW5zaXR5IHNjYWxlIHZhbHVlcyBgLTRgLFxuLy8vICAgICBgLTNgLCBgLTJgLCBgLTFgLCBgMGAuIERlZmF1bHQgaXMgYDBgLlxuLy8vXG5AbWl4aW4gb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24tZGVuc2l0eShcbiAgJGRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkaGVpZ2h0OiBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAvLyBUT0RPKGIvMTUxODM5MjE5KTogcmVzaXplIGljb25zIGFuZCBhZGp1c3QgbGFiZWwgcG9zaXRpb25cbiAgLy8gQGlmICRkZW5zaXR5LXNjYWxlIDwgMCB7XG4gIC8vICAgQGluY2x1ZGUgaWNvbi1taXhpbnMuc2l6ZShpY29uLXZhcmlhYmxlcy4kZGVuc2UtaWNvbi1zaXplKTtcbiAgLy8gfVxufVxuXG4vLy9cbi8vLyBTZXRzIGRlbnNpdHkgc2NhbGUgZm9yIGZpbGxlZCB0ZXh0YXJlYS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIHwgU3RyaW5nfSAkZGVuc2l0eS1zY2FsZSAtIERlbnNpdHkgc2NhbGUgdmFsdWUgZm9yIGNvbXBvbmVudC4gU3VwcG9ydGVkIGRlbnNpdHkgc2NhbGUgdmFsdWVzIGAtNGAsXG4vLy8gICAgIGAtM2AsIGAtMmAsIGAtMWAsIGAwYC4gRGVmYXVsdCBpcyBgMGAuXG4vLy9cbkBtaXhpbiBmaWxsZWQtdGV4dGFyZWEtZGVuc2l0eShcbiAgJGRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkdGV4dGZpZWxkLWhlaWdodDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAkZGVuc2l0eS1jb25maWc6IHZhcmlhYmxlcy4kZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG4gICRuby1sYWJlbC1tYXJnaW4tdG9wOiBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiR0ZXh0YXJlYS1maWxsZWQtbm8tbGFiZWwtZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6IG1hdGguZGl2KCRkZW5zaXR5LXNjYWxlLCAyKSxcbiAgICAkcHJvcGVydHktbmFtZTogbWFyZ2luLXRvcCxcbiAgKTtcbiAgJG5vLWxhYmVsLW1hcmdpbi1ib3R0b206IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJHRleHRhcmVhLWZpbGxlZC1uby1sYWJlbC1kZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogbWF0aC5kaXYoJGRlbnNpdHktc2NhbGUsIDIpLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBtYXJnaW4tYm90dG9tLFxuICApO1xuXG4gIC8vIFRleHRhcmVhIG1peGlucyByZXF1aXJlIHR3byBtb2RpZmllciBjbGFzc2VzIHNpbmNlIHR3byBhcmUgdXNlZCBpbnRlcm5hbGx5XG4gIC8vIGZvciBzdHlsZXMgKHRleHRhcmVhIGFuZCBmaWxsZWQpLiBBbiBleHRyYSBjbGFzcyBpcyBhZGRlZCBmb3IgdGhlIHB1YmxpY1xuICAvLyBtaXhpbiBzbyB0aGF0IG9ubHkgYSBzaW5nbGUgcHVibGljIGNsYXNzIGlzIG5lZWRlZCBmb3Igc3BlY2lmaWNpdHkuXG4gICYubWRjLXRleHQtZmllbGQtLWZpbGxlZCB7XG4gICAgLm1kYy10ZXh0LWZpZWxkX19yZXNpemVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6ICR0ZXh0ZmllbGQtaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkZGVuc2l0eS1zY2FsZSA+PSAtMSB7XG4gICAgICAka2V5ZnJhbWUtc3VmZml4OiB0ZXh0LWZpZWxkLWZpbGxlZC0jeyRkZW5zaXR5LXNjYWxlfTtcbiAgICAgICRsYWJlbC10b3A6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiR0ZXh0YXJlYS1maWxsZWQtbGFiZWwtZGVuc2l0eS1jb25maWcsXG4gICAgICAgICRkZW5zaXR5LXNjYWxlOiBtYXRoLmRpdigkZGVuc2l0eS1zY2FsZSwgMiksXG4gICAgICAgICRwcm9wZXJ0eS1uYW1lOiB0b3AsXG4gICAgICApO1xuXG4gICAgICAvLyBBZGp1c3QgdGhlIGZsb2F0aW5nIHBvc2l0aW9uIGFuZCBhbmltYXRpb24va2V5ZnJhbWVzIG9mIHRoZSBmbG9hdGluZ1xuICAgICAgLy8gbGFiZWwgYnkgdGhlIG5ldyBwb3NpdGlvbiBvZiB0aGUgcmVzdGluZyBsYWJlbFxuICAgICAgJGxhYmVsLXRvcC1kaWZmZXJlbmNlOiB2YXJpYWJsZXMuJHRleHRhcmVhLW91dGxpbmVkLWxhYmVsLXRvcCAtXG4gICAgICAgICRsYWJlbC10b3A7XG5cbiAgICAgIC8vIEZsb2F0aW5nIGxhYmVsIHBvc2l0aW9uXG4gICAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuZmxvYXQtcG9zaXRpb24oXG4gICAgICAgIHZhcmlhYmxlcy4kdGV4dGFyZWEtZmlsbGVkLWxhYmVsLXBvc2l0aW9uLXkgLSAkbGFiZWwtdG9wLWRpZmZlcmVuY2UsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuXG4gICAgICAvLyBGbG9hdGluZyBsYWJlbCBhbmltYXRpb25cbiAgICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5zaGFrZS1hbmltYXRpb24oXG4gICAgICAgICRrZXlmcmFtZS1zdWZmaXgsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgICAgQGF0LXJvb3Qge1xuICAgICAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuc2hha2Uta2V5ZnJhbWVzKFxuICAgICAgICAgICRrZXlmcmFtZS1zdWZmaXgsXG4gICAgICAgICAgdmFyaWFibGVzLiR0ZXh0YXJlYS1maWxsZWQtbGFiZWwtcG9zaXRpb24teSAtICRsYWJlbC10b3AtZGlmZmVyZW5jZSxcbiAgICAgICAgICAwJSxcbiAgICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXN0aW5nIGxhYmVsIHBvc2l0aW9uXG4gICAgICAubWRjLWZsb2F0aW5nLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgICB0b3A6ICRsYWJlbC10b3A7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJG1hcmdpbi1ib3R0b206IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiR0ZXh0YXJlYS1maWxsZWQtZGVuc2l0eS1jb25maWcsXG4gICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgJHByb3BlcnR5LW5hbWU6IG1hcmdpbi1ib3R0b20sXG4gICAgICApO1xuXG4gICAgICAubWRjLXRleHQtZmllbGRfX2lucHV0IHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgLy8gVGhlIHRleHRhcmVhIGlzIHRvbyBkZW5zZSB0byBzaG93IGEgZmxvYXRpbmcgbGFiZWxcbiAgICAgIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLm1kYy10ZXh0LWZpZWxkX19pbnB1dCB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogJG5vLWxhYmVsLW1hcmdpbi10b3A7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogJG5vLWxhYmVsLW1hcmdpbi1ib3R0b207XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1kYy10ZXh0LWZpZWxkLS1uby1sYWJlbCB7XG4gICAgICAubWRjLXRleHQtZmllbGRfX2lucHV0IHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAkbm8tbGFiZWwtbWFyZ2luLXRvcDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkbm8tbGFiZWwtbWFyZ2luLWJvdHRvbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubWRjLXRleHQtZmllbGQtLXdpdGgtaW50ZXJuYWwtY291bnRlciB7XG4gICAgICAubWRjLXRleHQtZmllbGRfX2lucHV0IHtcbiAgICAgICAgLy8gU3BhY2UgYmV0d2VlbiB0ZXh0YXJlYSBhbmQgaW50ZXJuYWwgY291bnRlciBzaG91bGQgbm90IGJlIGFmZmVjdGVkXG4gICAgICAgIEBpbmNsdWRlIF90ZXh0YXJlYS1pbnB1dC13aXRoLWludGVybmFsLWNvdW50ZXIoJHF1ZXJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBkZW5zaXR5IHNjYWxlIGZvciBvdXRsaW5lZCB0ZXh0YXJlYS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIHwgU3RyaW5nfSAkZGVuc2l0eS1zY2FsZSAtIERlbnNpdHkgc2NhbGUgdmFsdWUgZm9yIGNvbXBvbmVudC4gU3VwcG9ydGVkIGRlbnNpdHkgc2NhbGUgdmFsdWVzIGAtNGAsXG4vLy8gICAgIGAtM2AsIGAtMmAsIGAtMWAsIGAwYC4gRGVmYXVsdCBpcyBgMGAuXG4vLy9cbkBtaXhpbiBvdXRsaW5lZC10ZXh0YXJlYS1kZW5zaXR5KFxuICAkZGVuc2l0eS1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRrZXlmcmFtZS1zdWZmaXg6IHRleHQtZmllbGQtb3V0bGluZWQtI3skZGVuc2l0eS1zY2FsZX07XG4gICRsYWJlbC10b3A6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJHRleHRhcmVhLW91dGxpbmVkLWxhYmVsLWRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlOiBtYXRoLmRpdigkZGVuc2l0eS1zY2FsZSwgMiksXG4gICAgJHByb3BlcnR5LW5hbWU6IHRvcCxcbiAgKTtcbiAgJHRleHRmaWVsZC1oZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0LFxuICApO1xuICAkbWFyZ2luLXRvcDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAkZGVuc2l0eS1jb25maWc6IHZhcmlhYmxlcy4kdGV4dGFyZWEtb3V0bGluZWQtZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6IG1hdGguZGl2KCRkZW5zaXR5LXNjYWxlLCAyKSxcbiAgICAkcHJvcGVydHktbmFtZTogbWFyZ2luLXRvcCxcbiAgKTtcbiAgJG1hcmdpbi1ib3R0b206IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJHRleHRhcmVhLW91dGxpbmVkLWRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlOiBtYXRoLmRpdigkZGVuc2l0eS1zY2FsZSwgMiksXG4gICAgJHByb3BlcnR5LW5hbWU6IG1hcmdpbi1ib3R0b20sXG4gICk7XG5cbiAgLy8gVGV4dGFyZWEgbWl4aW5zIHJlcXVpcmUgdHdvIG1vZGlmaWVyIGNsYXNzZXMgc2luY2UgdHdvIGFyZSB1c2VkIGludGVybmFsbHlcbiAgLy8gZm9yIHN0eWxlcyAodGV4dGFyZWEgYW5kIG91dGxpbmVkKS4gQW4gZXh0cmEgY2xhc3MgaXMgYWRkZWQgZm9yIHRoZSBwdWJsaWNcbiAgLy8gbWl4aW4gc28gdGhhdCBvbmx5IGEgc2luZ2xlIHB1YmxpYyBjbGFzcyBpcyBuZWVkZWQgZm9yIHNwZWNpZmljaXR5LlxuICAmLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCB7XG4gICAgLy8gQWRqdXN0IHRoZSBmbG9hdGluZyBwb3NpdGlvbiBhbmQgYW5pbWF0aW9uL2tleWZyYW1lcyBvZiB0aGUgZmxvYXRpbmdcbiAgICAvLyBsYWJlbCBieSB0aGUgbmV3IHBvc2l0aW9uIG9mIHRoZSByZXN0aW5nIGxhYmVsXG4gICAgJGxhYmVsLXRvcC1kaWZmZXJlbmNlOiB2YXJpYWJsZXMuJHRleHRhcmVhLW91dGxpbmVkLWxhYmVsLXRvcCAtICRsYWJlbC10b3A7XG5cbiAgICAvLyBGbG9hdGluZyBsYWJlbCBwb3NpdGlvblxuICAgIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuZmxvYXRpbmctbGFiZWwtZmxvYXQtcG9zaXRpb24tYWJzb2x1dGUoXG4gICAgICB2YXJpYWJsZXMuJHRleHRhcmVhLW91dGxpbmVkLWxhYmVsLXBvc2l0aW9uLXkgLSAkbGFiZWwtdG9wLWRpZmZlcmVuY2UsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAvLyBGbG9hdGluZyBsYWJlbCBhbmltYXRpb25cbiAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuc2hha2UtYW5pbWF0aW9uKFxuICAgICAgJGtleWZyYW1lLXN1ZmZpeCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuc2hha2Uta2V5ZnJhbWVzKFxuICAgICAgICAka2V5ZnJhbWUtc3VmZml4LFxuICAgICAgICB2YXJpYWJsZXMuJHRleHRhcmVhLW91dGxpbmVkLWxhYmVsLXBvc2l0aW9uLXkgLSAkbGFiZWwtdG9wLWRpZmZlcmVuY2UsXG4gICAgICAgIDAlLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSZXN0aW5nIGxhYmVsIHBvc2l0aW9uXG4gICAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICB0b3A6ICRsYWJlbC10b3A7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy10ZXh0LWZpZWxkX19yZXNpemVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6ICR0ZXh0ZmllbGQtaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtdGV4dC1maWVsZF9faW5wdXQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWRjLXRleHQtZmllbGQtLXdpdGgtaW50ZXJuYWwtY291bnRlciB7XG4gICAgICAubWRjLXRleHQtZmllbGRfX2lucHV0IHtcbiAgICAgICAgLy8gU3BhY2UgYmV0d2VlbiB0ZXh0YXJlYSBhbmQgaW50ZXJuYWwgY291bnRlciBzaG91bGQgbm90IGJlIGFmZmVjdGVkXG4gICAgICAgIEBpbmNsdWRlIF90ZXh0YXJlYS1pbnB1dC13aXRoLWludGVybmFsLWNvdW50ZXIoJHF1ZXJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgbWluaW11bSBudW1iZXIgb2Ygcm93cyBmb3IgYSB0ZXh0YXJlYSBhIHRleHRhcmVhIG1heSBiZSByZXNpemVkIHRvLlxuLy8vXG4vLy8gRm9yIElFMTEgdGhpcyBtaXhpbiBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSByb3dzIGF0dHJpYnV0ZS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcm93cyAtIFRoZSBtaW5pbXVtIG51bWJlciBvZiByb3dzIGZvciBhIHRleHRhcmVhLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGluZS1oZWlnaHQgLSBUaGUgbGluZS1oZWlnaHQgb2YgdGhlIHRleHRhcmVhLlxuLy8vXG5AbWl4aW4gdGV4dGFyZWEtbWluLXJvd3MoXG4gICRyb3dzLFxuICAkbGluZS1oZWlnaHQ6IHZhcmlhYmxlcy4kdGV4dGFyZWEtbGluZS1oZWlnaHQsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtdGV4dC1maWVsZF9faW5wdXQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBtaW4taGVpZ2h0OiAkcm93cyAqICRsaW5lLWhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBoZWlnaHQgb2YgZGVmYXVsdCB0ZXh0IGZpZWxkIHZhcmlhbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCBTZXRzIHRoZSBtaW5pbXVtIGhlaWdodCBmb3Jcbi8vLyAgICAgZmlsbGVkIHRleHRmaWVsZHMgYXQgd2hpY2ggdG8gYWxsb3cgZmxvYXRpbmcgbGFiZWxzLlxuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy9cbkBtaXhpbiBoZWlnaHQoXG4gICRoZWlnaHQsXG4gICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsOiB2YXJpYWJsZXMuJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxuXG4gIEBpZiAkaGVpZ2h0IDwgJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwge1xuICAgIEBpbmNsdWRlIF9maWxsZWQtbm8tbGFiZWwoJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgaGVpZ2h0IG9mIG91dGxpbmVkIHRleHQgZmllbGQgdmFyaWFudCAoRXhjbHVkaW5nIG91dGxpbmVkIHRleHQgZmllbGQgd2l0aCBsZWFkaW5nIGljb24pLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHRcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleWZyYW1lLXN1ZmZpeCAtIE9wdGlvbmFsIHN1ZmZpeCB0byB1c2UgZm9yIGdlbmVyYXRlZFxuLy8vICAgICBmbG9hdGluZyBsYWJlbCBrZXlmcmFtZXNcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG5AbWl4aW4gb3V0bGluZWQtaGVpZ2h0KFxuICAkaGVpZ2h0LFxuICAka2V5ZnJhbWUtc3VmZml4OiB0ZXh0LWZpZWxkLW91dGxpbmVkLSN7JGhlaWdodH0sXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkcG9zaXRpb25ZOiB2YXJpYWJsZXMuZ2V0LW91dGxpbmVkLWxhYmVsLXBvc2l0aW9uLXkoJGhlaWdodCk7XG5cbiAgLy8gRmxvYXRpbmcgbGFiZWwgcG9zaXRpb25cbiAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5mbG9hdGluZy1sYWJlbC1mbG9hdC1wb3NpdGlvbi1hYnNvbHV0ZShcbiAgICAkcG9zaXRpb25ZLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgLy8gRmxvYXRpbmcgbGFiZWwgYW5pbWF0aW9uXG4gIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5zaGFrZS1hbmltYXRpb24oXG4gICAgJGtleWZyYW1lLXN1ZmZpeCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAYXQtcm9vdCB7XG4gICAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLnNoYWtlLWtleWZyYW1lcyhcbiAgICAgICRrZXlmcmFtZS1zdWZmaXgsXG4gICAgICAkcG9zaXRpb25ZLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBoZWlnaHQgb2Ygb3V0bGluZWQgdGV4dCBmaWVsZCB3aXRoIGxlYWRpbmcgaWNvbiB2YXJpYW50LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHRcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleWZyYW1lLXN1ZmZpeCAtIE9wdGlvbmFsIHN1ZmZpeCB0byB1c2UgZm9yIGdlbmVyYXRlZFxuLy8vICAgICBmbG9hdGluZyBsYWJlbCBrZXlmcmFtZXNcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG5AbWl4aW4gb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24taGVpZ2h0KFxuICAkaGVpZ2h0LFxuICAka2V5ZnJhbWUtc3VmZml4OiBudWxsLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAvLyBUaGlzIGV4dHJhIHNwZWNpZmljaXR5IGlzIG5lZWRlZCBiZWNhdXNlIHRleHRmaWVsZCBhcHBsaWVzIHRoZSBiZWxvdyBtaXhpblxuICAvLyBhbHJlYWR5IHRvIHR3byBzZWxlY3RvcnMgKG91dGxpbmVkICsgd2l0aC1sZWFkaW5nLWljb24pLiBUbyBvdmVycmlkZVxuICAvLyB0aGVtIHdpdGggYSBuZXcgbGFiZWwgcG9zaXRpb24gYW5kIGFuaW1hdGlvbiwgYW5vdGhlciBzZWxlY3RvciBpcyBuZWVkZWQuXG4gICYubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIHtcbiAgICBAaW5jbHVkZSBfb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24tZmxvYXRpbmctbGFiZWwtcG9zaXRpb24tYW5pbWF0aW9uKFxuICAgICAgJGhlaWdodCxcbiAgICAgICRrZXlmcmFtZS1zdWZmaXgsXG4gICAgICAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cbn1cblxuLy8gTWl4aW4gdGhhdCBzZXRzIHRoZSBmbG9hdGluZyBsYWJlbCBwb3NpdGlvbiBhbmQgYW5pbWF0aW9ucyBmb3IgYSBnaXZlbiBoZWlnaHQuXG4vLyBUaGlzIG1peGluIGlzIHNlcGFyYXRlIHRvIGFsbG93IG91dGxpbmVkLXdpdGgtbGVhZGluZy1pY29uLWhlaWdodCgpIHRvXG4vLyBwcm92aWRlIGdyZWF0ZXIgc3BlY2lmaWNpdHkgb3ZlciB0aGUgZGVmYXVsdCBtaXhpbiB0aGF0IGFkZHMgc3R5bGVzIGZvclxuLy8gb3V0bGluZWQgd2l0aCBsZWFkaW5nIGljb25zLlxuQG1peGluIF9vdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1mbG9hdGluZy1sYWJlbC1wb3NpdGlvbi1hbmltYXRpb24oXG4gICRoZWlnaHQsXG4gICRrZXlmcmFtZS1zdWZmaXg6IHRleHQtZmllbGQtb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24tI3skaGVpZ2h0fSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRwb3NpdGlvblk6IHZhcmlhYmxlcy5nZXQtb3V0bGluZWQtbGFiZWwtcG9zaXRpb24teSgkaGVpZ2h0KTtcblxuICAvLyBGbG9hdGluZyBsYWJlbCBwb3NpdGlvblxuICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLmZsb2F0aW5nLWxhYmVsLWZsb2F0LXBvc2l0aW9uLWFic29sdXRlKFxuICAgICRwb3NpdGlvblksXG4gICAgdmFyaWFibGVzLiRvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1sYWJlbC1wb3NpdGlvbi14LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgLy8gRmxvYXRpbmcgbGFiZWwgYW5pbWF0aW9uXG4gIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5zaGFrZS1hbmltYXRpb24oXG4gICAgJGtleWZyYW1lLXN1ZmZpeCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAYXQtcm9vdCB7XG4gICAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLnNoYWtlLWtleWZyYW1lcyhcbiAgICAgICRrZXlmcmFtZS1zdWZmaXgsXG4gICAgICAkcG9zaXRpb25ZLFxuICAgICAgdmFyaWFibGVzLiRvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1sYWJlbC1wb3NpdGlvbi14LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgJGtleWZyYW1lLXN1ZmZpeC1ydGw6ICN7JGtleWZyYW1lLXN1ZmZpeH0tcnRsO1xuICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuc2hha2UtYW5pbWF0aW9uKFxuICAgICAgJGtleWZyYW1lLXN1ZmZpeCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuICBAYXQtcm9vdCB7XG4gICAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLnNoYWtlLWtleWZyYW1lcyhcbiAgICAgICRrZXlmcmFtZS1zdWZmaXgtcnRsLFxuICAgICAgJHBvc2l0aW9uWSxcbiAgICAgIC0odmFyaWFibGVzLiRvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1sYWJlbC1wb3NpdGlvbi14KSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHNoYXBlIHJhZGl1cyBvZiBkZWZhdWx0IHRleHQgZmllbGQgdmFyaWFudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmFkaXVzIFNoYXBlIHJhZGl1cyB2YWx1ZSBpbiBgcHhgIG9yIGluIHBlcmNlbnRhZ2UuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0ZXh0LWZpZWxkLWhlaWdodCBIZWlnaHQgb2YgZGVmYXVsdCB0ZXh0IGZpZWxkIHZhcmlhbnQuIFJlcXVpcmVkIG9ubHkgd2hlbiBgJHJhZGl1c2AgaXMgaW5cbi8vLyAgICAgcGVyY2VudGFnZSB1bml0IGFuZCBpZiB0ZXh0IGZpZWxkIGhhcyBjdXN0b20gaGVpZ2h0LiBEZWZhdWx0cyB0byBgdmFyaWFibGVzLiRoZWlnaHRgLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHJ0bC1yZWZsZXhpdmUgU2V0IHRvIHRydWUgdG8gZmxpcCBzaGFwZSByYWRpdXMgaW4gUlRMIGNvbnRleHQuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4vLy9cbkBtaXhpbiBzaGFwZS1yYWRpdXMoXG4gICRyYWRpdXMsXG4gICRkZW5zaXR5LXNjYWxlOiB2YXJpYWJsZXMuJGRlbnNpdHktc2NhbGUsXG4gICRydGwtcmVmbGV4aXZlOiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIEBpZiBtZXRhLnR5cGUtb2YoJHJhZGl1cykgPT0gJ2xpc3QnIGFuZCBsaXN0Lmxlbmd0aCgkcmFkaXVzKSA+IDIge1xuICAgIEBlcnJvciBcIm1kYy10ZXh0ZmllbGQ6IEludmFsaWQgcmFkaXVzICN7JHJhZGl1c30uIE9ubHkgdG9wLWxlZnQgYW5kIHRvcC1yaWdodCBjb3JuZXJzIG1heSBiZSBjdXN0b21pemVkLlwiO1xuICB9XG5cbiAgJGhlaWdodDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAkZGVuc2l0eS1jb25maWc6IHZhcmlhYmxlcy4kZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgJG1hc2tlZC1yYWRpdXM6IHNoYXBlLWZ1bmN0aW9ucy5tYXNrLXJhZGl1cygkcmFkaXVzLCAxIDEgMCAwKTtcblxuICBAaW5jbHVkZSBzaGFwZS1taXhpbnMucmFkaXVzKFxuICAgICRtYXNrZWQtcmFkaXVzLFxuICAgICRydGwtcmVmbGV4aXZlLFxuICAgICRjb21wb25lbnQtaGVpZ2h0OiAkaGVpZ2h0LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbkBtaXhpbiB0ZXh0YXJlYS1zaGFwZS1yYWRpdXMoXG4gICRyYWRpdXMsXG4gICRydGwtcmVmbGV4aXZlOiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuc2hhcGUtcmFkaXVzKFxuICAgICRyYWRpdXMsXG4gICAgJHJ0bC1yZWZsZXhpdmUsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbn1cblxuLy8vXG4vLy8gQ3VzdG9taXplcyB0aGUgY29sb3Igb2YgdGhlIHRleHQgZW50ZXJlZCBpbnRvIGFuIGVuYWJsZWQgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBpbnB1dCB0ZXh0IGNvbG9yLlxuLy8vXG5AbWl4aW4gaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgaW5rLWNvbG9yXygkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBjb2xvciBvZiB0aGUgZW50ZXJlZCB0ZXh0IGluIGEgZGlzYWJsZWQgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBpbnB1dCB0ZXh0IGNvbG9yLlxuLy8vXG5AbWl4aW4gZGlzYWJsZWQtaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1kaXNhYmxlZF8ge1xuICAgIEBpbmNsdWRlIGluay1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gQ3VzdG9taXplcyB0aGUgY29sb3Igb2YgdGhlIHBsYWNlaG9sZGVyIGluIGFuIGVuYWJsZWQgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBwbGFjZWhvbGRlciB0ZXh0IGNvbG9yLlxuLy8vXG5AbWl4aW4gcGxhY2Vob2xkZXItY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIGlmLWVuYWJsZWRfIHtcbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlci1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gQ3VzdG9taXplcyB0aGUgY29sb3Igb2YgdGhlIHBsYWNlaG9sZGVyIGluIGEgZGlzYWJsZWQgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBwbGFjZWhvbGRlciB0ZXh0IGNvbG9yLlxuLy8vXG5AbWl4aW4gZGlzYWJsZWQtcGxhY2Vob2xkZXItY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIGlmLWRpc2FibGVkXyB7XG4gICAgQGluY2x1ZGUgcGxhY2Vob2xkZXItY29sb3JfKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIEN1c3RvbWl6ZXMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRleHQgZmllbGQgb3IgdGV4dGFyZWEgd2hlbiBlbmFibGVkLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIGJhY2tncm91bmQgY29sb3IuXG4vLy9cbkBtaXhpbiBmaWxsLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgZmlsbC1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gQ3VzdG9taXplcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGV4dCBmaWVsZCBvciB0ZXh0YXJlYSB3aGVuIGRpc2FibGVkLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIGJhY2tncm91bmQgY29sb3IuXG4vLy9cbkBtaXhpbiBkaXNhYmxlZC1maWxsLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1kaXNhYmxlZF8ge1xuICAgIEBpbmNsdWRlIGZpbGwtY29sb3JfKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIEN1c3RvbWl6ZXMgdGhlIHRleHQgZmllbGQgYm90dG9tIGxpbmUgY29sb3IgZm9yIHRoZSBmaWxsZWQgdmFyaWFudC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBib3R0b20gbGluZSBjb2xvci5cbi8vL1xuQG1peGluIGJvdHRvbS1saW5lLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgYm90dG9tLWxpbmUtY29sb3JfKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIEN1c3RvbWl6ZXMgdGhlIGRpc2FibGVkIHRleHQgZmllbGQgYm90dG9tIGxpbmUgY29sb3IgZm9yIHRoZSBmaWxsZWQgdmFyaWFudC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBib3R0b20gbGluZSBjb2xvci5cbi8vL1xuQG1peGluIGRpc2FibGVkLWJvdHRvbS1saW5lLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1kaXNhYmxlZF8ge1xuICAgIEBpbmNsdWRlIGJvdHRvbS1saW5lLWNvbG9yXygkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBob3ZlciB0ZXh0IGZpZWxkIGJvdHRvbSBsaW5lIGNvbG9yIGZvciB0aGUgZmlsbGVkIHZhcmlhbnQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGRlc2lyZWQgYm90dG9tIGxpbmUgY29sb3IuXG4vLy9cbkBtaXhpbiBob3Zlci1ib3R0b20tbGluZS1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgaWYtZW5hYmxlZF8ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWJvdHRvbS1saW5lLWNvbG9yXygkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBjb2xvciBvZiB0aGUgZGVmYXVsdCBsaW5lIHJpcHBsZSBvZiB0aGUgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBsaW5lIHJpcHBsZSBjb2xvci5cbi8vL1xuQG1peGluIGxpbmUtcmlwcGxlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgbGluZS1yaXBwbGUtY29sb3JfKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIEN1c3RvbWl6ZXMgdGhlIHRleHQgY29sb3Igb2YgdGhlIGxhYmVsIGluIGFuIGVuYWJsZWQgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBsYWJlbCB0ZXh0IGNvbG9yLlxuLy8vXG5AbWl4aW4gbGFiZWwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIGlmLWVuYWJsZWRfIHtcbiAgICBAaW5jbHVkZSBsYWJlbC1pbmstY29sb3JfKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIEN1c3RvbWl6ZXMgdGhlIHRleHQgY29sb3Igb2YgdGhlIGxhYmVsIGluIGEgZGlzYWJsZWQgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBsYWJlbCB0ZXh0IGNvbG9yLlxuLy8vXG5AbWl4aW4gZGlzYWJsZWQtbGFiZWwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIGlmLWRpc2FibGVkXyB7XG4gICAgQGluY2x1ZGUgbGFiZWwtaW5rLWNvbG9yXygkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBib3JkZXIgY29sb3Igb2YgdGhlIG91dGxpbmVkIHRleHQgZmllbGQgb3IgdGV4dGFyZWEuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGRlc2lyZWQgb3V0bGluZSBib3JkZXIgY29sb3IuXG4vLy9cbkBtaXhpbiBvdXRsaW5lLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBvdXRsaW5lIGJvcmRlciBjb2xvciB3aGVuIHRoZSB0ZXh0IGZpZWxkIG9yIHRleHRhcmVhIGlzIGhvdmVyZWQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGRlc2lyZWQgb3V0bGluZSBib3JkZXIgY29sb3IuXG4vLy9cbkBtaXhpbiBob3Zlci1vdXRsaW5lLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgaG92ZXItb3V0bGluZS1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gQ3VzdG9taXplcyB0aGUgb3V0bGluZSBib3JkZXIgY29sb3Igd2hlbiB0aGUgdGV4dCBmaWVsZCBvciB0ZXh0YXJlYSBpcyBmb2N1c2VkLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIG91dGxpbmUgYm9yZGVyIGNvbG9yLlxuLy8vXG5AbWl4aW4gZm9jdXNlZC1vdXRsaW5lLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgZm9jdXNlZC1vdXRsaW5lLWNvbG9yXygkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBvdXRsaW5lIGJvcmRlciBjb2xvciB3aGVuIHRoZSB0ZXh0IGZpZWxkIG9yIHRleHRhcmVhIGlzIGRpc2FibGVkLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIG91dGxpbmUgYm9yZGVyIGNvbG9yLlxuLy8vXG5AbWl4aW4gZGlzYWJsZWQtb3V0bGluZS1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgaWYtZGlzYWJsZWRfIHtcbiAgICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLmNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIEN1c3RvbWl6ZXMgdGhlIGNhcmV0IGNvbG9yIG9mIHRoZSB0ZXh0IGZpZWxkIG9yIHRleHRhcmVhLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIGNhcmV0IGNvbG9yLlxuLy8vXG5AbWl4aW4gY2FyZXQtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtdGV4dC1maWVsZF9faW5wdXQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3AoY2FyZXQtY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIEN1c3RvbWl6ZXMgdGhlIGNvbG9yIG9mIHRoZSBwcmVmaXggdGV4dCBmb3IgYW4gZW5hYmxlZCB0ZXh0IGZpZWxkLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIHByZWZpeCB0ZXh0IGNvbG9yLlxuLy8vXG5AbWl4aW4gcHJlZml4LWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgX3ByZWZpeC1jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBjb2xvciBvZiB0aGUgcHJlZml4IHRleHQgZm9yIGEgZGlzYWJsZWQgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBwcmVmaXggdGV4dCBjb2xvci5cbi8vL1xuQG1peGluIGRpc2FibGVkLXByZWZpeC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgaWYtZGlzYWJsZWRfIHtcbiAgICBAaW5jbHVkZSBfcHJlZml4LWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIEN1c3RvbWl6ZXMgdGhlIGNvbG9yIG9mIHRoZSBzdWZmaXggdGV4dCBmb3IgYW4gZW5hYmxlZCB0ZXh0IGZpZWxkLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIHN1ZmZpeCB0ZXh0IGNvbG9yLlxuLy8vXG5AbWl4aW4gc3VmZml4LWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBpZi1lbmFibGVkXyB7XG4gICAgQGluY2x1ZGUgX3N1ZmZpeC1jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBjb2xvciBvZiB0aGUgc3VmZml4IHRleHQgZm9yIGEgZGlzYWJsZWQgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBzdWZmaXggdGV4dCBjb2xvci5cbi8vL1xuQG1peGluIGRpc2FibGVkLXN1ZmZpeC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgaWYtZGlzYWJsZWRfIHtcbiAgICBAaW5jbHVkZSBfc3VmZml4LWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgc2hhcGUgcmFkaXVzIG9mIG91dGxpbmVkIHRleHQgZmllbGQgdmFyaWFudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmFkaXVzIFNoYXBlIHJhZGl1cyB2YWx1ZSBpbiBgcHhgIG9yIGluIHBlcmNlbnRhZ2UuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0ZXh0LWZpZWxkLWhlaWdodCBIZWlnaHQgb2Ygb3V0bGluZWQgdGV4dCBmaWVsZCB2YXJpYW50LiBSZXF1aXJlZCBvbmx5IHdoZW4gYCRyYWRpdXNgIGlzIGluXG4vLy8gICAgIHBlcmNlbnRhZ2UgdW5pdCBhbmQgaWYgdGV4dCBmaWVsZCBoYXMgY3VzdG9tIGhlaWdodC4gRGVmYXVsdHMgdG8gYHZhcmlhYmxlcy4kaGVpZ2h0YC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRydGwtcmVmbGV4aXZlIFNldCB0byB0cnVlIHRvIGZsaXAgc2hhcGUgcmFkaXVzIGluIFJUTCBjb250ZXh0LiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuLy8vXG5AbWl4aW4gb3V0bGluZS1zaGFwZS1yYWRpdXMoXG4gICRyYWRpdXMsXG4gICRkZW5zaXR5LXNjYWxlOiB2YXJpYWJsZXMuJGRlbnNpdHktc2NhbGUsXG4gICRydGwtcmVmbGV4aXZlOiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0LFxuICApO1xuXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lIHtcbiAgICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLnNoYXBlLXJhZGl1cyhcbiAgICAgICRyYWRpdXMsXG4gICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OiAkaGVpZ2h0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgJHJlc29sdmVkLXJhZGl1czogc2hhcGUtZnVuY3Rpb25zLnJlc29sdmUtcmFkaXVzKFxuICAgICRyYWRpdXMsXG4gICAgJGNvbXBvbmVudC1oZWlnaHQ6ICRoZWlnaHRcbiAgKTtcbiAgJHVucGFja2VkLXJhZGl1czogc2hhcGUtZnVuY3Rpb25zLnVucGFjay1yYWRpdXMoJHJlc29sdmVkLXJhZGl1cyk7XG4gICR0b3AtbGVmdC1yYWRpdXM6IGxpc3QubnRoKCR1bnBhY2tlZC1yYWRpdXMsIDEpO1xuICAkdG9wLWxlZnQtaXMtY3VzdG9tLXByb3A6IGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCR0b3AtbGVmdC1yYWRpdXMpO1xuICAkdG9wLWxlZnQtcmFkaXVzLXB4OiAkdG9wLWxlZnQtcmFkaXVzO1xuICBAaWYgKCR0b3AtbGVmdC1pcy1jdXN0b20tcHJvcCkge1xuICAgICR0b3AtbGVmdC1yYWRpdXMtcHg6IGN1c3RvbS1wcm9wZXJ0aWVzLmdldC1mYWxsYmFjaygkdG9wLWxlZnQtcmFkaXVzKTtcbiAgfVxuICAkdG9wLXJpZ2h0LXJhZGl1czogbGlzdC5udGgoJHVucGFja2VkLXJhZGl1cywgMik7XG4gICR0b3AtcmlnaHQtaXMtY3VzdG9tLXByb3A6IGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKFxuICAgICR0b3AtcmlnaHQtcmFkaXVzXG4gICk7XG5cbiAgQGlmIChcbiAgICAkdG9wLWxlZnQtaXMtY3VzdG9tLXByb3Agb3JcbiAgICAgICR0b3AtcmlnaHQtaXMtY3VzdG9tLXByb3Agb3JcbiAgICAgICR0b3AtbGVmdC1yYWRpdXMtcHggPlxuICAgICAgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kbGVhZGluZy13aWR0aFxuICApIHtcbiAgICAvLyBUaGUgaG9yaXpvbnRhbCBwYWRkaW5nIG9ubHkgbmVlZHMgdG8gYmUgb3ZlcnJpZGVuIGZyb20gdGhlIGJhc2UgcGFkZGluZ1xuICAgIC8vIGlmIHRoZSByYWRpdXMgaXMgYSBjdXN0b20gcHJvcGVydHksIG9yIGlmIHRoZSB0b3AtbGVmdCByYWRpdXMgaXMgYSB2YWx1ZVxuICAgIC8vIHRoYXQgaXMgbGFyZ2UgdGhhbiB0aGF0IGRlZmF1bHQgbm90Y2hlZCBvdXRsaW5lJ3MgbGVhZGluZyB3aWR0aC5cbiAgICBAaW5jbHVkZSBfb3V0bGluZS1zaGFwZS1yYWRpdXMtaG9yaXpvbnRhbC1wYWRkaW5nKFxuICAgICAgJHRvcC1sZWZ0LXJhZGl1cyxcbiAgICAgICR0b3AtcmlnaHQtcmFkaXVzLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgKyAubWRjLXRleHQtZmllbGQtaGVscGVyLWxpbmUge1xuICAgICAgQGluY2x1ZGUgX291dGxpbmUtc2hhcGUtcmFkaXVzLWhvcml6b250YWwtcGFkZGluZyhcbiAgICAgICAgJHRvcC1sZWZ0LXJhZGl1cyxcbiAgICAgICAgJHRvcC1yaWdodC1yYWRpdXMsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGF0IGxlYWRpbmcvdHJhaWxpbmcgaWNvbiBwYWRkaW5nIGlzIG92ZXJyaWRlbi4gRXZlbiBpZiB0aGVcbiAgICAvLyB0b3AgbGVmdC9yaWdodCBpc24ndCBhIGN1c3RvbSBwcm9wZXJ0eSBvciB0aGUgbGVhZGluZyBpc24ndCBsYXJnZXIsIHdlXG4gICAgLy8gc3RpbGwgbmVlZCB0byBvdmVycmlkZS4gVGhlIGFib3ZlIGxlZnQvcmlnaHQgcGFkZGluZyBydWxlcyBoYXZlIG1vcmVcbiAgICAvLyBzcGVjaWZpY3R5IHRoYW4gdGhlIG9yaWdpbmFsIGxlYWRpbmcvdHJhaWxpbmcgaWNvbiBydWxlcywgc28gd2UgbmVlZCB0b1xuICAgIC8vIHJlLWFwcGx5IHRoZW0uXG4gICAgLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgdG9wIGxlZnQvcmlnaHQgcmFkaWkgX2FyZV8gY3VzdG9tIHByb3BlcnRpZXMsIHdlXG4gICAgLy8gc2hvdWxkIHVzZSB0aG9zZSBpbnN0ZWFkLlxuXG4gICAgJi5tZGMtdGV4dC1maWVsZC0td2l0aC1sZWFkaW5nLWljb24ge1xuICAgICAgQGlmICgkdG9wLXJpZ2h0LWlzLWN1c3RvbS1wcm9wKSB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgX2FwcGx5LW91dGxpbmUtc2hhcGUtcGFkZGluZyhcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0LFxuICAgICAgICAgICR0b3AtcmlnaHQtcmFkaXVzLFxuICAgICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICAgICk7XG5cbiAgICAgICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICAgICAgQGluY2x1ZGUgX2FwcGx5LW91dGxpbmUtc2hhcGUtcGFkZGluZyhcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdCxcbiAgICAgICAgICAgICR0b3AtcmlnaHQtcmFkaXVzLFxuICAgICAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICAgICApO1xuICAgICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBfcGFkZGluZy1ob3Jpem9udGFsLXdpdGgtbGVhZGluZy1pY29uKCRxdWVyeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tZGMtdGV4dC1maWVsZC0td2l0aC10cmFpbGluZy1pY29uIHtcbiAgICAgIEBpZiAoXG4gICAgICAgICR0b3AtbGVmdC1pcy1jdXN0b20tcHJvcCBvclxuICAgICAgICAgICR0b3AtbGVmdC1yYWRpdXMtcHggPlxuICAgICAgICAgIG5vdGNoZWQtb3V0bGluZS12YXJpYWJsZXMuJGxlYWRpbmctd2lkdGhcbiAgICAgICkge1xuICAgICAgICBAaW5jbHVkZSBfYXBwbHktb3V0bGluZS1zaGFwZS1wYWRkaW5nKFxuICAgICAgICAgIHBhZGRpbmctbGVmdCxcbiAgICAgICAgICAkdG9wLWxlZnQtcmFkaXVzLFxuICAgICAgICAgICRhZGQtbGFiZWwtcGFkZGluZzogdHJ1ZSxcbiAgICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgICApO1xuICAgICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaW5jbHVkZSBfYXBwbHktb3V0bGluZS1zaGFwZS1wYWRkaW5nKFxuICAgICAgICAgICAgcGFkZGluZy1yaWdodCxcbiAgICAgICAgICAgICR0b3AtbGVmdC1yYWRpdXMsXG4gICAgICAgICAgICAkYWRkLWxhYmVsLXBhZGRpbmc6IHRydWUsXG4gICAgICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBfcGFkZGluZy1ob3Jpem9udGFsLXdpdGgtdHJhaWxpbmctaWNvbigkcXVlcnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWRjLXRleHQtZmllbGQtLXdpdGgtbGVhZGluZy1pY29uLm1kYy10ZXh0LWZpZWxkLS13aXRoLXRyYWlsaW5nLWljb24ge1xuICAgICAgQGluY2x1ZGUgX3BhZGRpbmctaG9yaXpvbnRhbC13aXRoLWJvdGgtaWNvbnMoJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9vdXRsaW5lLXNoYXBlLXJhZGl1cy1ob3Jpem9udGFsLXBhZGRpbmcoXG4gICR0b3AtbGVmdC1yYWRpdXMsXG4gICR0b3AtcmlnaHQtcmFkaXVzLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgQGluY2x1ZGUgX2FwcGx5LW91dGxpbmUtc2hhcGUtcGFkZGluZyhcbiAgICBwYWRkaW5nLWxlZnQsXG4gICAgJHRvcC1sZWZ0LXJhZGl1cyxcbiAgICAkYWRkLWxhYmVsLXBhZGRpbmc6IHRydWUsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgX2FwcGx5LW91dGxpbmUtc2hhcGUtcGFkZGluZyhcbiAgICBwYWRkaW5nLXJpZ2h0LFxuICAgICR0b3AtcmlnaHQtcmFkaXVzLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgJHRvcC1sZWZ0LWlzLWN1c3RvbS1wcm9wOiBjdXN0b20tcHJvcGVydGllcy5pcy1jdXN0b20tcHJvcCgkdG9wLWxlZnQtcmFkaXVzKTtcbiAgJHRvcC1sZWZ0LXJhZGl1cy1weDogJHRvcC1sZWZ0LXJhZGl1cztcbiAgQGlmICgkdG9wLWxlZnQtaXMtY3VzdG9tLXByb3ApIHtcbiAgICAkdG9wLWxlZnQtcmFkaXVzLXB4OiBjdXN0b20tcHJvcGVydGllcy5nZXQtZmFsbGJhY2soJHRvcC1sZWZ0LXJhZGl1cyk7XG4gIH1cbiAgJHRvcC1yaWdodC1pcy1jdXN0b20tcHJvcDogY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoXG4gICAgJHRvcC1yaWdodC1yYWRpdXNcbiAgKTtcbiAgJHRvcC1yaWdodC1yYWRpdXMtcHg6ICR0b3AtcmlnaHQtcmFkaXVzO1xuICBAaWYgKCR0b3AtcmlnaHQtaXMtY3VzdG9tLXByb3ApIHtcbiAgICAkdG9wLXJpZ2h0LXJhZGl1cy1weDogY3VzdG9tLXByb3BlcnRpZXMuZ2V0LWZhbGxiYWNrKCR0b3AtcmlnaHQtcmFkaXVzKTtcbiAgfVxuXG4gIEBpZiAoXG4gICAgKFxuICAgICAgICAkdG9wLWxlZnQtaXMtY3VzdG9tLXByb3AgYW5kXG4gICAgICAgICAgJHRvcC1yaWdodC1pcy1jdXN0b20tcHJvcCBhbmQgbm90XG4gICAgICAgICAgY3VzdG9tLXByb3BlcnRpZXMuYXJlLWVxdWFsKCR0b3AtbGVmdC1yYWRpdXMsICR0b3AtcmlnaHQtcmFkaXVzKVxuICAgICAgKSBvclxuICAgICAgJHRvcC1sZWZ0LXJhZGl1cy1weCAhPVxuICAgICAgJHRvcC1yaWdodC1yYWRpdXMtcHhcbiAgKSB7XG4gICAgLy8gTm9ybWFsbHkgYmFzZSBob3Jpem9udGFsIHBhZGRpbmcgZG9lc24ndCBuZWVkIFJUTCwgYnV0IGlmIHRoZSB2YWx1ZXNcbiAgICAvLyBhcmUgZGlmZmVyZW50IG9yIHRoZXkgYXJlIHR3byBkaWZmZXJlbnQgY3VzdG9tIHByb3BlcnRpZXMsIHRoZXkgbmVlZCB0b1xuICAgIC8vIGJlIHJldmVyc2VkLlxuICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgQGluY2x1ZGUgX2FwcGx5LW91dGxpbmUtc2hhcGUtcGFkZGluZyhcbiAgICAgICAgcGFkZGluZy1yaWdodCxcbiAgICAgICAgJHRvcC1sZWZ0LXJhZGl1cyxcbiAgICAgICAgJGFkZC1sYWJlbC1wYWRkaW5nOiB0cnVlLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIF9hcHBseS1vdXRsaW5lLXNoYXBlLXBhZGRpbmcoXG4gICAgICAgIHBhZGRpbmctbGVmdCxcbiAgICAgICAgJHRvcC1yaWdodC1yYWRpdXMsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2FwcGx5LW91dGxpbmUtc2hhcGUtcGFkZGluZyhcbiAgJHByb3BlcnR5LFxuICAkcGFkZGluZyxcbiAgJGFkZC1sYWJlbC1wYWRkaW5nOiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRwYWRkaW5nLWlzLWN1c3RvbS1wcm9wOiBjdXN0b20tcHJvcGVydGllcy5pcy1jdXN0b20tcHJvcCgkcGFkZGluZyk7XG4gICRwYWRkaW5nLXB4OiAkcGFkZGluZztcbiAgQGlmICgkcGFkZGluZy1pcy1jdXN0b20tcHJvcCkge1xuICAgICRwYWRkaW5nLXB4OiBjdXN0b20tcHJvcGVydGllcy5nZXQtZmFsbGJhY2soJHBhZGRpbmcpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAvLyBUaGUgc2hhcGUgc2hvdWxkIG9ubHkgY2hhbmdlIHRoZSBwYWRkaW5nIGlmIHRoZSByYWRpdXMgYmVjb21lcyBncmVhdGVyXG4gICAgLy8gdGhhbiB0aGUgZGVmYXVsdCBwYWRkaW5nLiBUaGF0IG1lYW5zIHdlIG5lZWQgdG8gYWRkIG1vcmUgcGFkZGluZy5cbiAgICBAaWYgKCRwYWRkaW5nLXB4ID4gdmFyaWFibGVzLiRwYWRkaW5nLWhvcml6b250YWwpIHtcbiAgICAgIC8vIFNldCBhIHB4IHZhbHVlIGlmIGl0J3MgZ3JlYXRlci4gVGhpcyBpcyBlaXRoZXIgdGhlIG9ubHkgdmFsdWUgKGlmXG4gICAgICAvLyB3ZSdyZSBnaXZlbiBhbiBleGFjdCB2YWx1ZSksIG9yIGFuIElFMTEgZmFsbGJhY2sgaWYgd2UncmUgZ2l2ZW4gYVxuICAgICAgLy8gY3VzdG9tIHByb3BlcnR5IGFuZCB0aGUgZmFsbGJhY2sgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBwYWRkaW5nLlxuICAgICAgJHZhbHVlOiAkcGFkZGluZy1weDtcbiAgICAgIEBpZiAoJGFkZC1sYWJlbC1wYWRkaW5nKSB7XG4gICAgICAgIC8vIElmIHRoaXMgaXMgZm9yIHRoZSB0b3AtbGVmdCBsZWFkaW5nLCBhZGQgdGhlIG5vdGNoZWQgb3V0bGluZSBwYWRkaW5nXG4gICAgICAgIC8vIHRvIGtlZXAgaXQgYWxpZ25lZCB3aXRoIHRoZSBsYWJlbFxuICAgICAgICAkdmFsdWU6ICRwYWRkaW5nLXB4ICsgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kcGFkZGluZztcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgQGlmICgkcGFkZGluZy1pcy1jdXN0b20tcHJvcCkge1xuICAgICAgICAvLyBBZGQgYW4gYWx0ZXJuYXRlIEdTUyB0YWcgYi9jIHRoaXMgd2FzIGFuIElFMTEgZmFsbGJhY2sgYW5kIHdlJ3JlXG4gICAgICAgIC8vIGdvaW5nIHRvIGFkZCBhbm90aGVyIHByb3BlcnR5IHdpdGggdGhlIHZhcigpIHZhbHVlXG4gICAgICAgIC8qIEBhbHRlcm5hdGUgKi9cbiAgICAgIH1cbiAgICB9XG4gICAgQGlmICgkcGFkZGluZy1pcy1jdXN0b20tcHJvcCkge1xuICAgICAgLy8gSWYgaXQncyBhIGN1c3RvbSBwcm9wZXJ0eSwgYWx3YXlzIGFkZCBpdCBzaW5jZSB0aGUgdmFsdWUgbWF5IGNoYW5nZVxuICAgICAgLy8gdG8gYmUgZ3JlYXRlciB0aGFuIHRoZSBwYWRkaW5nIGF0IHJ1bnRpbWUsIGV2ZW4gaWYgdGhlIGZhbGxiYWNrIGlzXG4gICAgICAvLyBub3QgY3VycmVudGx5IGdyZWF0ZXIgdGhhbiB0aGUgZGVmYXVsdCBwYWRkaW5nLlxuICAgICAgJHZhbHVlOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUtdmFyKCRwYWRkaW5nKTtcbiAgICAgIEBpZiAoJGFkZC1sYWJlbC1wYWRkaW5nKSB7XG4gICAgICAgICR2YWx1ZTogY2FsYygjeyR2YWx1ZX0gKyAje25vdGNoZWQtb3V0bGluZS12YXJpYWJsZXMuJHBhZGRpbmd9KTtcbiAgICAgIH1cblxuICAgICAgLy8gSW50ZXJwb2xhdGlvbiBpcyBhIHdvcmthcm91bmQgZm9yIHNhc3Mvc2FzcyMzMjU5LlxuICAgICAgQHN1cHBvcnRzICh0b3A6IG1heCgjezAlfSkpIHtcbiAgICAgICAgLy8gQSBtYXgoKSBmdW5jdGlvbiBtYWtlcyB0aGlzIHJ1bnRpbWUgZHluYW1pYy4gVGhlIHBhZGRpbmcgd2lsbCBiZVxuICAgICAgICAvLyB3aGljaGV2ZXIgaXMgZ3JlYXRlcjogdGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBwYWRkaW5nLCBvciB0aGUgY2FsY3VsYXRlZFxuICAgICAgICAvLyBjdXN0b20gcHJvcGVydHkgcGx1cyBleHRyYSBwYWRkaW5nLlxuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICAjeyRwcm9wZXJ0eX06IG1heCgje3ZhcmlhYmxlcy4kcGFkZGluZy1ob3Jpem9udGFsfSwgI3skdmFsdWV9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgQ1NTIHRyYW5zaXRpb24gZm9yIHRoZSBmbG9hdGluZyBsYWJlbCdzICdmbG9hdCcgYW5pbWF0aW9uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkdXJhdGlvbi1tcyAtIER1cmF0aW9uIChpbiBtcykgb2YgdGhlIGFuaW1hdGlvbi5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHRpbWluZy1mdW5jdGlvbiAtIE9wdGlvbmFsbHkgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGFuaW1hdGlvbiB0aW1pbmcgZnVuY3Rpb24uXG4vLy9cbkBtaXhpbiBmbG9hdGluZy1sYWJlbC1mbG9hdC10cmFuc2l0aW9uKFxuICAkZHVyYXRpb24tbXMsXG4gICR0aW1pbmctZnVuY3Rpb246IG51bGwsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAubWRjLWZsb2F0aW5nLWxhYmVsIHtcbiAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuZmxvYXQtdHJhbnNpdGlvbihcbiAgICAgICRkdXJhdGlvbi1tcyxcbiAgICAgICR0aW1pbmctZnVuY3Rpb24sXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBjdXN0b20gZm9udCBzaXplIG9mIHRoZSBpbnB1dC5cbi8vL1xuLy8vIEBwYXJhbSB7bnVtYmVyfSAkZm9udC1zaXplIC0gT3ZlcnJpZGVzIHRoZSBmb250IHNpemUuXG4vLy9cbkBtaXhpbiBpbnB1dC1mb250LXNpemUoJGZvbnQtc2l6ZSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC10eXBvZ3JhcGh5OiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgdHlwb2dyYXBoeSk7XG5cbiAgLm1kYy10ZXh0LWZpZWxkX19pbnB1dCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC10eXBvZ3JhcGh5KSB7XG4gICAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgY3VzdG9tIGZvbnQgZmFtaWx5IG9mIHRoZSBpbnB1dC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udC1mYW1pbHkgLSBTZWxlY3RlZCBmb250IGZhbWlseS5cbi8vL1xuQG1peGluIGlucHV0LWZvbnQtZmFtaWx5KCRmb250LWZhbWlseSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC10eXBvZ3JhcGh5OiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgdHlwb2dyYXBoeSk7XG5cbiAgLm1kYy10ZXh0LWZpZWxkX19pbnB1dCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC10eXBvZ3JhcGh5KSB7XG4gICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIH1cbiAgfVxufVxuXG4vLyBQcml2YXRlIG1peGluc1xuXG4vLyBCYXNlIHNoYXJlZCBzdHlsZXNcbkBtaXhpbiBfYmFzZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLy8gU2hhcGVcbiAgQGluY2x1ZGUgc2hhcGUtcmFkaXVzKHZhcmlhYmxlcy4kc2hhcGUtcmFkaXVzLCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgLy8gQ29sb3JzXG4gIEBpbmNsdWRlIGxhYmVsLWNvbG9yKHZhcmlhYmxlcy4kbGFiZWwsICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgaW5rLWNvbG9yKHZhcmlhYmxlcy4kaW5rLWNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIHBsYWNlaG9sZGVyLWNvbG9yKHZhcmlhYmxlcy4kcGxhY2Vob2xkZXItaW5rLWNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGNhcmV0LWNvbG9yKHByaW1hcnksICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgaGVscGVyLXRleHQtbWl4aW5zLmhlbHBlci10ZXh0LWNvbG9yKFxuICAgIHZhcmlhYmxlcy4kaGVscGVyLXRleHQtY29sb3IsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgY2hhcmFjdGVyLWNvdW50ZXItbWl4aW5zLmNoYXJhY3Rlci1jb3VudGVyLWNvbG9yKFxuICAgIHZhcmlhYmxlcy4kaGVscGVyLXRleHQtY29sb3IsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgaWNvbi1taXhpbnMubGVhZGluZy1pY29uLWNvbG9yKFxuICAgIHZhcmlhYmxlcy4kaWNvbi1jb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBpY29uLW1peGlucy50cmFpbGluZy1pY29uLWNvbG9yKFxuICAgIHZhcmlhYmxlcy4kaWNvbi1jb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBwcmVmaXgtY29sb3IodmFyaWFibGVzLiRhZmZpeC1jb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBzdWZmaXgtY29sb3IodmFyaWFibGVzLiRhZmZpeC1jb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC8vIEZsb2F0aW5nIExhYmVsXG4gIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsXygkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgLy8gZGlzcGxheSBhbmQgYWxpZ24taXRlbXMgYXJlIG5lY2Vzc2FyeSB0byBtYWtlIHRoZSB0ZXh0IGZpZWxkIHBhcnRpY2lwYXRlXG4gICAgLy8gaW4gYmFzZWxpbmUgYWxpZ25tZW50LCBldmVuIHRob3VnaCBzb21lIHZhcmlhbnRzIGFyZSAnY2VudGVyZWQnLiBUaG9zZVxuICAgIC8vIHZhcmlhbnRzIHNob3VsZCB1c2UgdGhlIF9iYXNlbGluZS1jZW50ZXItYWxpZ25lZCgpIG1peGluXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIHBhZGRpbmc6IDAgdmFyaWFibGVzLiRwYWRkaW5nLWhvcml6b250YWw7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAvKiBAYWx0ZXJuYXRlICovXG4gICAgd2lsbC1jaGFuZ2U6IG9wYWNpdHksIHRyYW5zZm9ybSwgY29sb3I7XG4gIH1cbn1cblxuLy8gVGhpcyBtaXhpbiBhZGRzIHN0eWxlcyB0byB2aXN1YWxseSBjZW50ZXIgdGhlIHRleHQgd2l0aGluIHRoZSB0ZXh0IGZpZWxkLlxuLy8gU2libGluZyB0ZXh0IHdpbGwgYWxpZ24gdG8gdGhlIGJhc2VsaW5lIGFuZCBhcHBlYXIgY2VudGVyZWQgbmV4dCB0byB0aGVcbi8vIHRleHQgZmllbGQuXG5AbWl4aW4gX2Jhc2VsaW5lLWNlbnRlci1hbGlnbmVkKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIC8vIEluIG9yZGVyIGZvciBhIGZsZXhib3ggY29udGFpbmVyIHRvIHBhcnRpY2lwYXRlIGluIGJhc2VsaW5lIGFsaWdubWVudCxcbiAgICAvLyBpdCBmb2xsb3dzIHRoZXNlIHJ1bGVzIHRvIGRldGVybWluZSB3aGVyZSBpdHMgYmFzZWxpbmUgaXM6XG4gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1mbGV4Ym94LTEvI2ZsZXgtYmFzZWxpbmVzXG4gICAgLy9cbiAgICAvLyBJbiBvcmRlciB0byBhdm9pZCBsZWFkaW5nIGljb25zICdjb250cm9sbGluZycgdGhlIGJhc2VsaW5lIChzaW5jZSB0aGV5XG4gICAgLy8gYXJlIHRoZSBmaXJzdCBjaGlsZCksIGZsZXhib3ggd2lsbCBnZW5lcmF0ZSBhIGJhc2VsaW5lIGZyb20gYW55IGNoaWxkXG4gICAgLy8gZmxleCBpdGVtcyB0aGF0IHBhcnRpY2lwYXRlIGluIGJhc2VsaW5lIGFsaWdubWVudC5cbiAgICAvL1xuICAgIC8vIEljb25zIGFyZSBzZXQgdG8gXCJhbGlnbi1zZWxmOiBjZW50ZXJcIiwgd2hpbGUgYWxsIG90aGVyIGNoaWxkcmVuIGFyZVxuICAgIC8vIGFsaWduZWQgdG8gYmFzZWxpbmUuIFRoZSBuZXh0IHByb2JsZW0gaXMgZGVjaWRpbmcgd2hpY2ggY2hpbGQgaXNcbiAgICAvLyB1c2VkIHRvIGRldGVybWluZSB0aGUgYmFzZWxpbmUuXG4gICAgLy9cbiAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYywgdGhlIGl0ZW0gd2l0aCB0aGUgbGFyZ2VzdCBkaXN0YW5jZSBiZXR3ZWVuIGl0c1xuICAgIC8vIGJhc2VsaW5lIGFuZCB0aGUgZWRnZSBvZiB0aGUgY3Jvc3MgYXhpcyBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGF0IGVkZ2UsXG4gICAgLy8gbWFraW5nIGl0IHRoZSBiYXNlbGluZSBvZiB0aGUgY29udGFpbmVyLlxuICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtZmxleGJveC0xLyNiYXNlbGluZS1wYXJ0aWNpcGF0aW9uXG4gICAgLy9cbiAgICAvLyBGb3IgdGhlIGZpbGxlZCB2YXJpYW50LCB0aGUgcHNldWRvIDo6YmVmb3JlIHN0cnV0IGlzIHRoZSAnbGFyZ2VzdCdcbiAgICAvLyBjaGlsZCBzaW5jZSB0aGUgaW5wdXQgaGFzIGEgaGVpZ2h0IG9mIDI4cHggYW5kIHRoZSBzdHJ1dCBpcyA0MHB4LiBXZVxuICAgIC8vIGNhbiBlbXVsYXRlIGNlbnRlciBhbGlnbm1lbnQgYW5kIGZvcmNlIHRoZSBiYXNlbGluZSB0byB1c2UgdGhlIGlucHV0XG4gICAgLy8gdGV4dCBieSBtYWtpbmcgdGhlIGlucHV0IHRoZSBmdWxsIGhlaWdodCBvZiB0aGUgY29udGFpbmVyIGFuZCByZW1vdmluZ1xuICAgIC8vIHRoZSBiYXNlbGluZSBzdHJ1dC5cblxuICAgIC8vIElFMTEgZG9lcyBub3QgcmVzcGVjdCB0aGlzLCBhbmQgbWFrZXMgdGhlIGxlYWRpbmcgaWNvbiAoaWYgcHJlc2VudCkgdGhlXG4gICAgLy8gYmFzZWxpbmUuIFRoaXMgaXMgYSBnYXAgd2l0aCBJRTExIHRoYXQgd2UgaGF2ZSBhY2NlcHRlZC5cbiAgICAubWRjLXRleHQtZmllbGRfX2lucHV0IHtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9wYWRkaW5nLWhvcml6b250YWwtd2l0aC1sZWFkaW5nLWljb24oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wcm9wZXJ0eShwYWRkaW5nLCAwLCB2YXJpYWJsZXMuJHBhZGRpbmctaG9yaXpvbnRhbCk7XG4gIH1cbn1cblxuQG1peGluIF9wYWRkaW5nLWhvcml6b250YWwtd2l0aC10cmFpbGluZy1pY29uKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkocGFkZGluZywgdmFyaWFibGVzLiRwYWRkaW5nLWhvcml6b250YWwsIDApO1xuICB9XG59XG5cbkBtaXhpbiBfcGFkZGluZy1ob3Jpem9udGFsLXdpdGgtYm90aC1pY29ucygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGZsb2F0aW5nLWxhYmVsXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi8vIEZpbGxlZFxuXG5AbWl4aW4gX2ZpbGxlZCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIC8vIFRleHQgRmllbGQgaW50ZW50aW9uYWxseSBvbWl0cyBwcmVzcyByaXBwbGUsIHNvIGVhY2ggc3RhdGUgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIGluZGl2aWR1YWxseS5cbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1iYXNlLWNvbG9yKFxuICAgIHZhcmlhYmxlcy4kaW5rLWNvbG9yLFxuICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJHJpcHBsZS10YXJnZXRcbiAgKTtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1ob3Zlci1vcGFjaXR5KFxuICAgIHJpcHBsZS10aGVtZS5zdGF0ZXMtb3BhY2l0eSh2YXJpYWJsZXMuJGluay1jb2xvciwgaG92ZXIpLFxuICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJHJpcHBsZS10YXJnZXRcbiAgKTtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1mb2N1cy1vcGFjaXR5KFxuICAgIHJpcHBsZS10aGVtZS5zdGF0ZXMtb3BhY2l0eSh2YXJpYWJsZXMuJGluay1jb2xvciwgZm9jdXMpLFxuICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJHJpcHBsZS10YXJnZXRcbiAgKTtcblxuICBAaW5jbHVkZSBoZWlnaHQodmFyaWFibGVzLiRoZWlnaHQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgdHlwb2dyYXBoeS5iYXNlbGluZS10b3AoXG4gICAgdmFyaWFibGVzLiRmaWxsZWQtYmFzZWxpbmUtdG9wLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIGZpbGwtY29sb3IodmFyaWFibGVzLiRiYWNrZ3JvdW5kLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGJvdHRvbS1saW5lLWNvbG9yKHZhcmlhYmxlcy4kYm90dG9tLWxpbmUtaWRsZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBob3Zlci1ib3R0b20tbGluZS1jb2xvcihcbiAgICB2YXJpYWJsZXMuJGJvdHRvbS1saW5lLWhvdmVyLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIGxpbmUtcmlwcGxlLWNvbG9yXyhwcmltYXJ5LCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIF9maWxsZWQtZmxvYXRpbmctbGFiZWwoJHF1ZXJ5KTtcbn1cblxuQG1peGluIF9maWxsZWQtZmxvYXRpbmctbGFiZWwoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXBvc2l0aW9uKGxlZnQsIHZhcmlhYmxlcy4kbGFiZWwtb2Zmc2V0KTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuZmxvYXQtcG9zaXRpb24oXG4gICAgdmFyaWFibGVzLiRsYWJlbC1wb3NpdGlvbi15LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbi8vIEZpbGxlZCB2YXJpYW50IHdpdGggbm8gbGFiZWwuIFRoaXMgdmFyaWFudCBjZW50ZXJzIHRoZSB0ZXh0IGVsZW1lbnRzIGFuZFxuLy8gaGlkZXMgdGhlIGxhYmVsIGFuZCBpcyB1c2VkIHdpdGggdGhlcmUgaXMgZXhwbGljaXRseSBubyBsYWJlbCBwcm92aWRlZCBvclxuLy8gd2hlbiB0aGUgaGVpZ2h0IG9mIHRoZSB0ZXh0IGZpZWxkIGlzIHRvbyBzbWFsbCBmb3IgYSBsYWJlbCB0byBiZSBhbGxvd2VkLlxuQG1peGluIF9maWxsZWQtbm8tbGFiZWwoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIF9iYXNlbGluZS1jZW50ZXItYWxpZ25lZCgkcXVlcnkpO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgLy8gUmVtb3ZlIGJhc2VsaW5lLXRvcCBzdHJ1dFxuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBTYWZhcmkgb25seVxuICBAc3VwcG9ydHMgKC13ZWJraXQtaHlwaGVuczogbm9uZSkge1xuICAgIC5tZGMtdGV4dC1maWVsZF9fYWZmaXgge1xuICAgICAgQGluY2x1ZGUgX2NlbnRlcmVkLWFmZml4LXNhZmFyaS1zdXBwb3J0KCRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gT3V0bGluZWRcblxuQG1peGluIG91dGxpbmVkXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgb3V0bGluZWQtaGVpZ2h0KFxuICAgICRoZWlnaHQ6IHZhcmlhYmxlcy4kaGVpZ2h0LFxuICAgICRrZXlmcmFtZS1zdWZmaXg6IHRleHQtZmllbGQtb3V0bGluZWQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgX2Jhc2VsaW5lLWNlbnRlci1hbGlnbmVkKCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgb3V0bGluZS1jb2xvcih2YXJpYWJsZXMuJG91dGxpbmVkLWlkbGUtYm9yZGVyLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGhvdmVyLW91dGxpbmUtY29sb3IoXG4gICAgdmFyaWFibGVzLiRvdXRsaW5lZC1ob3Zlci1ib3JkZXIsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgZm9jdXNlZC1vdXRsaW5lLWNvbG9yKHByaW1hcnksICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgb3V0bGluZS1zaGFwZS1yYWRpdXModmFyaWFibGVzLiRzaGFwZS1yYWRpdXMsICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5ub3RjaC1vZmZzZXQoXG4gICAgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kYm9yZGVyLXdpZHRoLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMtYmFzZS1jb2xvcihcbiAgICB0cmFuc3BhcmVudCxcbiAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAkcmlwcGxlLXRhcmdldDogdmFyaWFibGVzLiRyaXBwbGUtdGFyZ2V0XG4gICk7XG4gIEBpbmNsdWRlIF9vdXRsaW5lZC1mbG9hdGluZy1sYWJlbCgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cblxuICAubWRjLXRleHQtZmllbGRfX2lucHV0IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgLy8gVE9ETyhiLzE1NDM0OTczNSk6IEludmVzdGlnYXRlIHRoZSBuZWNjZXNzaXR5IG9mIHRoZXNlIHN0eWxlc1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OyAvLyBGRiBhZGRzIHVud2FudGVkIGJvcmRlciBpbiBIQyBtb2RlIG9uIHdpbmRvd3MuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9vdXRsaW5lZC1mbG9hdGluZy1sYWJlbCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcG9zaXRpb24obGVmdCwgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kcGFkZGluZyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfb3V0bGluZWQtbm90Y2hlZC1vdXRsaW5lKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIC8vIEZvcmNlIHRoZSBvdXRsaW5lIHRvIGFwcGVhciBcImFib3ZlXCIgdGhlIHRleHRmaWVsZCBlbGVtZW50cywgZXZlbiB0aG91Z2hcbiAgICAvLyBpdCBpcyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYW5kIGNvbWVzIGJlZm9yZSB0aGUgaW5wdXQgaW4gdGhlIERPTS4gVGhpc1xuICAgIC8vIGlzIHByaW1hcmlseSBmb3IgdGhlIHRleHRhcmVhIHNjcm9sbGJhciBhbmQgcmVzaXplIGVsZW1lbnRzLCB3aGljaCBtYXlcbiAgICAvLyBjbGlwIHdpdGggd2l0aCBvdXRsaW5lIGJvcmRlci5cbiAgICB6LWluZGV4OiAxO1xuICB9XG59XG5cbi8vIFN0YXRlc1xuXG5AbWl4aW4gZGlzYWJsZWRfKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBpbmstY29sb3JfKHZhcmlhYmxlcy4kZGlzYWJsZWQtaW5rLWNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIHBsYWNlaG9sZGVyLWNvbG9yXyhcbiAgICB2YXJpYWJsZXMuJGRpc2FibGVkLXBsYWNlaG9sZGVyLWluay1jb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBsYWJlbC1pbmstY29sb3JfKHZhcmlhYmxlcy4kZGlzYWJsZWQtbGFiZWwtY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgaGVscGVyLXRleHQtbWl4aW5zLmhlbHBlci10ZXh0LWNvbG9yXyhcbiAgICB2YXJpYWJsZXMuJGRpc2FibGVkLWhlbHBlci10ZXh0LWNvbG9yLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIGNoYXJhY3Rlci1jb3VudGVyLW1peGlucy5jaGFyYWN0ZXItY291bnRlci1jb2xvcl8oXG4gICAgdmFyaWFibGVzLiRkaXNhYmxlZC1oZWxwZXItdGV4dC1jb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBpY29uLW1peGlucy5sZWFkaW5nLWljb24tY29sb3JfKFxuICAgIHZhcmlhYmxlcy4kZGlzYWJsZWQtaWNvbixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBpY29uLW1peGlucy50cmFpbGluZy1pY29uLWNvbG9yXyhcbiAgICB2YXJpYWJsZXMuJGRpc2FibGVkLWljb24sXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgX3ByZWZpeC1jb2xvcih2YXJpYWJsZXMuJGRpc2FibGVkLWFmZml4LWNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIF9zdWZmaXgtY29sb3IodmFyaWFibGVzLiRkaXNhYmxlZC1hZmZpeC1jb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC8vIE1peGlucyB0aGF0IGFyZSBvayB0byBpbmNsdWRlIHNpbmNlIHRoZXkgdGFyZ2V0IHZhcmlhbnQtc3BlY2lmaWMgZWxlbWVudHNcbiAgQGluY2x1ZGUgYm90dG9tLWxpbmUtY29sb3JfKHZhcmlhYmxlcy4kZGlzYWJsZWQtYm9yZGVyLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuY29sb3IoXG4gICAgdmFyaWFibGVzLiRvdXRsaW5lZC1kaXNhYmxlZC1ib3JkZXIsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICBAaW5jbHVkZSBkb20uZm9yY2VkLWNvbG9ycy1tb2RlIHtcbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlci1jb2xvcl8oR3JheVRleHQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBsYWJlbC1pbmstY29sb3JfKEdyYXlUZXh0LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgaGVscGVyLXRleHQtbWl4aW5zLmhlbHBlci10ZXh0LWNvbG9yXyhHcmF5VGV4dCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGNoYXJhY3Rlci1jb3VudGVyLW1peGlucy5jaGFyYWN0ZXItY291bnRlci1jb2xvcl8oXG4gICAgICBHcmF5VGV4dCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBpY29uLW1peGlucy5sZWFkaW5nLWljb24tY29sb3JfKEdyYXlUZXh0LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgaWNvbi1taXhpbnMudHJhaWxpbmctaWNvbi1jb2xvcl8oR3JheVRleHQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfcHJlZml4LWNvbG9yKEdyYXlUZXh0LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3N1ZmZpeC1jb2xvcihHcmF5VGV4dCwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgLy8gTWl4aW5zIHRoYXQgYXJlIG9rIHRvIGluY2x1ZGUgc2luY2UgdGhleSB0YXJnZXQgdmFyaWFudC1zcGVjaWZpYyBlbGVtZW50c1xuICAgIEBpbmNsdWRlIGJvdHRvbS1saW5lLWNvbG9yXyhHcmF5VGV4dCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuY29sb3IoR3JheVRleHQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIEBpbmNsdWRlIGRvbS5mb3JjZWQtY29sb3JzLW1vZGUoJGV4Y2x1ZGUtaWUxMTogdHJ1ZSkge1xuICAgIC5tZGMtdGV4dC1maWVsZF9faW5wdXQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogV2luZG93O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kaXNhYmxlZC1pbnB1dCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAvLyBkaXNhYmxlZCBpbnB1dHMgc2hvdWxkIHN0aWxsIGFsbG93IHVzZXJzIHRvIGludGVyYWN0IHdpdGggdGhlbSB0byBzZWxlY3RcbiAgICAvLyB0ZXh0IGFuZCBzY3JvbGwgZm9yIHRleHRhcmVhc1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBfZGlzYWJsZWQtZmlsbGVkKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmaWxsLWNvbG9yXyh2YXJpYWJsZXMuJGRpc2FibGVkLWJhY2tncm91bmQsICRxdWVyeTogJHF1ZXJ5KTtcblxuICAje3ZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldH0ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAvLyBwcmV2ZW50IHJpcHBsZSBmcm9tIGRpc3BsYXlpbmcgb24gaG92ZXIgd2hlbiBzb21lIGludGVyYWN0aWJsZVxuICAgICAgLy8gZWxlbWVudHMgbGlrZSBpbnB1dCBhbmQgcmVzaXplIGhhbmRsZXMgYXJlIGhvdmVyZWRcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpbnZhbGlkXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgaG92ZXItYm90dG9tLWxpbmUtY29sb3IodmFyaWFibGVzLiRlcnJvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBsaW5lLXJpcHBsZS1jb2xvcih2YXJpYWJsZXMuJGVycm9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGxhYmVsLWNvbG9yKHZhcmlhYmxlcy4kZXJyb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgaGVscGVyLXRleHQtbWl4aW5zLmhlbHBlci10ZXh0LXZhbGlkYXRpb24tY29sb3IoXG4gICAgdmFyaWFibGVzLiRlcnJvcixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBjYXJldC1jb2xvcih2YXJpYWJsZXMuJGVycm9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGljb24tbWl4aW5zLnRyYWlsaW5nLWljb24tY29sb3IodmFyaWFibGVzLiRlcnJvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC8vIE1peGlucyB0aGF0IGFyZSBvayB0byBpbmNsdWRlIHNpbmNlIHRoZXkgdGFyZ2V0IHZhcmlhbnQtc3BlY2lmaWMgZWxlbWVudHNcbiAgQGluY2x1ZGUgYm90dG9tLWxpbmUtY29sb3IodmFyaWFibGVzLiRlcnJvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBvdXRsaW5lLWNvbG9yKHZhcmlhYmxlcy4kZXJyb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgaG92ZXItb3V0bGluZS1jb2xvcih2YXJpYWJsZXMuJGVycm9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGZvY3VzZWQtb3V0bGluZS1jb2xvcih2YXJpYWJsZXMuJGVycm9yLCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgKyAubWRjLXRleHQtZmllbGQtaGVscGVyLWxpbmUgLm1kYy10ZXh0LWZpZWxkLWhlbHBlci10ZXh0LS12YWxpZGF0aW9uLW1zZyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb2N1c2VkXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgbGFiZWwtY29sb3IodmFyaWFibGVzLiRmb2N1c2VkLWxhYmVsLWNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgLy8gTWl4aW5zIHRoYXQgYXJlIG9rIHRvIGluY2x1ZGUgc2luY2UgdGhleSB0YXJnZXQgdmFyaWFudC1zcGVjaWZpYyBlbGVtZW50c1xuICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLnN0cm9rZS13aWR0aChcbiAgICB2YXJpYWJsZXMuJG91dGxpbmVkLXN0cm9rZS13aWR0aCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuXG4gICsgLm1kYy10ZXh0LWZpZWxkLWhlbHBlci1saW5lXG4gICAgLm1kYy10ZXh0LWZpZWxkLWhlbHBlci10ZXh0Om5vdCgubWRjLXRleHQtZmllbGQtaGVscGVyLXRleHQtLXZhbGlkYXRpb24tbXNnKSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZm9jdXNlZC1vdXRsaW5lZCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMubm90Y2gtb2Zmc2V0KFxuICAgIHZhcmlhYmxlcy4kb3V0bGluZWQtc3Ryb2tlLXdpZHRoLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbkBtaXhpbiBfZm9jdXNlZC1vdXRsaW5lZC10ZXh0YXJlYSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMubm90Y2gtb2Zmc2V0KDAsICRxdWVyeTogJHF1ZXJ5KTtcbn1cblxuLy8gSWNvbnNcblxuQG1peGluIHdpdGgtbGVhZGluZy1pY29uXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgJGljb24tcGFkZGluZzogaWNvbi12YXJpYWJsZXMuJGxlYWRpbmctaWNvbi1wYWRkaW5nLWxlZnQgK1xuICAgIGljb24tdmFyaWFibGVzLiRpY29uLXNpemUgKyBpY29uLXZhcmlhYmxlcy4kbGVhZGluZy1pY29uLXBhZGRpbmctcmlnaHQ7XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgX3RydW5jYXRlLWZsb2F0aW5nLWxhYmVsLW1heC13aWR0aCgkaWNvbi1wYWRkaW5nLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcG9zaXRpb24obGVmdCwgJGljb24tcGFkZGluZyk7XG4gICAgfVxuICB9XG5cbiAgJHRydW5jYXRpb246ICRpY29uLXBhZGRpbmcgKyB2YXJpYWJsZXMuJHBhZGRpbmctaG9yaXpvbnRhbDtcblxuICAubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgQGluY2x1ZGUgX3RydW5jYXRlLWZsb2F0aW5nLWxhYmVsLWZsb2F0ZWQtbWF4LXdpZHRoKFxuICAgICAgJHRydW5jYXRpb24sXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIF93aXRoLXRyYWlsaW5nLWljb24oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkdHJ1bmNhdGlvbjogaWNvbi12YXJpYWJsZXMuJHRyYWlsaW5nLWljb24tcGFkZGluZy1sZWZ0ICtcbiAgICBpY29uLXZhcmlhYmxlcy4kaWNvbi1zaXplICsgaWNvbi12YXJpYWJsZXMuJHRyYWlsaW5nLWljb24tcGFkZGluZy1yaWdodCArXG4gICAgdmFyaWFibGVzLiRsYWJlbC1vZmZzZXQ7XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgX3RydW5jYXRlLWZsb2F0aW5nLWxhYmVsLW1heC13aWR0aCgkdHJ1bmNhdGlvbiwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUge1xuICAgIEBpbmNsdWRlIF90cnVuY2F0ZS1mbG9hdGluZy1sYWJlbC1mbG9hdGVkLW1heC13aWR0aChcbiAgICAgICR0cnVuY2F0aW9uLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBfd2l0aC1sZWFkaW5nLWFuZC10cmFpbGluZy1pY29uKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGxlYWRpbmctaWNvbjogaWNvbi12YXJpYWJsZXMuJGxlYWRpbmctaWNvbi1wYWRkaW5nLWxlZnQgK1xuICAgIGljb24tdmFyaWFibGVzLiRpY29uLXNpemUgKyBpY29uLXZhcmlhYmxlcy4kbGVhZGluZy1pY29uLXBhZGRpbmctcmlnaHQ7XG4gICR0cmFpbGluZy1pY29uOiBpY29uLXZhcmlhYmxlcy4kdHJhaWxpbmctaWNvbi1wYWRkaW5nLWxlZnQgK1xuICAgIGljb24tdmFyaWFibGVzLiRpY29uLXNpemUgKyBpY29uLXZhcmlhYmxlcy4kdHJhaWxpbmctaWNvbi1wYWRkaW5nLXJpZ2h0O1xuICAkdHJ1bmNhdGlvbjogJGxlYWRpbmctaWNvbiArICR0cmFpbGluZy1pY29uO1xuXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgIEBpbmNsdWRlIF90cnVuY2F0ZS1mbG9hdGluZy1sYWJlbC1tYXgtd2lkdGgoJHRydW5jYXRpb24sICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwtLWZsb2F0LWFib3ZlIHtcbiAgICBAaW5jbHVkZSBfdHJ1bmNhdGUtZmxvYXRpbmctbGFiZWwtZmxvYXRlZC1tYXgtd2lkdGgoXG4gICAgICAkdHJ1bmNhdGlvbixcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb25fKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAvLyBSZXN0aW5nIGxhYmVsIHBvc2l0aW9uXG4gICRpY29uLXBhZGRpbmc6IGljb24tdmFyaWFibGVzLiRsZWFkaW5nLWljb24tcGFkZGluZy1sZWZ0ICtcbiAgICBpY29uLXZhcmlhYmxlcy4kaWNvbi1zaXplICsgaWNvbi12YXJpYWJsZXMuJGxlYWRpbmctaWNvbi1wYWRkaW5nLXJpZ2h0O1xuICAkbGVmdC1zcGFjaW5nOiAkaWNvbi1wYWRkaW5nIC0gbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kbGVhZGluZy13aWR0aDtcblxuICAubWRjLWZsb2F0aW5nLWxhYmVsIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wb3NpdGlvbihsZWZ0LCAkbGVmdC1zcGFjaW5nKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3RjaCB3aWR0aFxuICAkbm90Y2gtdHJ1bmNhdGlvbjogJGljb24tcGFkZGluZyArIG5vdGNoZWQtb3V0bGluZS12YXJpYWJsZXMuJGxlYWRpbmctd2lkdGg7XG4gIEBpbmNsdWRlIF90cnVuY2F0ZS1ub3RjaGVkLW91dGxpbmUtbWF4LXdpZHRoKFxuICAgICRub3RjaC10cnVuY2F0aW9uLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgLy8gRmxvYXRpbmcgbGFiZWwgcG9zaXRpb24gYW5kIGFuaW1hdGlvblxuICBAaW5jbHVkZSBfb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24tZmxvYXRpbmctbGFiZWwtcG9zaXRpb24tYW5pbWF0aW9uKFxuICAgICRoZWlnaHQ6IHZhcmlhYmxlcy4kaGVpZ2h0LFxuICAgICRrZXlmcmFtZS1zdWZmaXg6IHRleHQtZmllbGQtb3V0bGluZWQtbGVhZGluZy1pY29uLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbi8vL1xuLy8vIEFwcGxpZWQgdG8gdGhlIG91dGxpbmVkIHRleHQgZmllbGQgd2l0aCBhIHRyYWlsaW5nIGljb25cbi8vL1xuQG1peGluIF9vdXRsaW5lZC13aXRoLXRyYWlsaW5nLWljb24oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAvLyBSZXN0aW5nIGxhYmVsIHBvc2l0aW9uXG4gICRpY29uLXBhZGRpbmc6IGljb24tdmFyaWFibGVzLiR0cmFpbGluZy1pY29uLXBhZGRpbmctbGVmdCArXG4gICAgaWNvbi12YXJpYWJsZXMuJGljb24tc2l6ZSArIGljb24tdmFyaWFibGVzLiR0cmFpbGluZy1pY29uLXBhZGRpbmctcmlnaHQ7XG4gIC8vIE5vdGNoIHdpZHRoXG4gICRub3RjaC10cnVuY2F0aW9uOiAkaWNvbi1wYWRkaW5nICsgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kbGVhZGluZy13aWR0aDtcblxuICBAaW5jbHVkZSBfdHJ1bmNhdGUtbm90Y2hlZC1vdXRsaW5lLW1heC13aWR0aChcbiAgICAkbm90Y2gtdHJ1bmNhdGlvbixcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xufVxuXG4vLy9cbi8vLyBUcnVuY2F0ZXMgdGhlIG1heC13aWR0aCBvZiB0aGUgbm90Y2hlZCBvdXRsaW5lIGJ5IHRoZSBnaXZlbiBhbW91bnRcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdHJ1bmNhdGlvbiAtIEFtb3VudCB0byB0cnVuY2F0ZSB0aGUgbm90Y2hlZCBvdXRsaW5lIG1heC13aWR0aFxuLy8vXG5AbWl4aW4gX3RydW5jYXRlLW5vdGNoZWQtb3V0bGluZS1tYXgtd2lkdGgoXG4gICR0cnVuY2F0aW9uLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5ub3RjaC1tYXgtd2lkdGgoXG4gICAgY2FsYygxMDAlIC0gI3skdHJ1bmNhdGlvbn0pLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbi8vL1xuLy8vIFRydW5jYXRlcyB0aGUgbWF4LXdpZHRoIG9mIHRoZSBmbG9hdGluZyBsYWJlbCBieSB0aGUgZ2l2ZW4gYW1vdW50XG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRydW5jYXRpb24gLSBBbW91bnQgdG8gdHJ1bmNhdGUgdGhlIGZsb2F0aW5nIGxhYmVsIG1heC13aWR0aFxuLy8vXG5AbWl4aW4gX3RydW5jYXRlLWZsb2F0aW5nLWxhYmVsLW1heC13aWR0aChcbiAgJHRydW5jYXRpb24sXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMubWF4LXdpZHRoKFxuICAgIGNhbGMoMTAwJSAtICN7JHRydW5jYXRpb259KSxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xufVxuXG4vLy9cbi8vLyBUcnVuY2F0ZXMgdGhlIG1heC13aWR0aCBvZiB0aGUgZmxvYXRpbmcgbGFiZWwgYnkgdGhlIGdpdmVuIGFtb3VudCB3aGlsZSBzY2FsaW5nIGJ5IHRoZSBnaXZlbiBzY2FsZSB2YWx1ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0cnVuY2F0aW9uIC0gQW1vdW50IHRvIHRydW5jYXRlIHRoZSBmbG9hdGluZyBsYWJlbCBtYXgtd2lkdGhcbi8vL1xuQG1peGluIF90cnVuY2F0ZS1mbG9hdGluZy1sYWJlbC1mbG9hdGVkLW1heC13aWR0aChcbiAgJHRydW5jYXRpb24sXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkc2NhbGU6IGZsb2F0aW5nLWxhYmVsLXZhcmlhYmxlcy4kZmxvYXQtc2NhbGU7XG4gIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5tYXgtd2lkdGgoXG4gICAgY2FsYygxMDAlIC8gI3skc2NhbGV9IC0gI3skdHJ1bmNhdGlvbn0gLyAjeyRzY2FsZX0pLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbi8vIFRleHRhcmVhXG5cbkBtaXhpbiB0ZXh0YXJlYV8oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gIEBpbmNsdWRlIF90ZXh0YXJlYS1mbG9hdGluZy1sYWJlbCgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAwOyAvLyBzZWUgYmVsb3cgZm9yIGV4cGxhbmF0aW9uXG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIF90ZXh0YXJlYS1yZXNpemVyKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWluLWhlaWdodDogdmFyaWFibGVzLiRoZWlnaHQ7XG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tYmxvY2stbm8tZHVwbGljYXRlLXByb3BlcnRpZXMgLS1cbiAgICAvLyBUT0RPOiBkb2N1bWVudCB3aHkgdGhpcyBkaXNhYmxlIGlzIG5lY2Nlc3NhcnlcblxuICAgIC8vICdzdHJldGNoJyBpcyB0aGUgcHJlZmVycmVkIHJ1bGUgaGVyZS4gSXQgd2lsbCBhbGxvdyB0aGUgdGV4dGFyZWEgdG8gZ3Jvd1xuICAgIC8vIHRvIHRoZSBtaW4vbWF4IHdpZHRoIG9mIHRoZSBjb250YWluZXIsIGJ1dCBpZiBhbiBleHBsaWNpdCB3aWR0aCBpcyBzZXQsXG4gICAgLy8gaXQgY2Fubm90IGJlIHJlc2l6ZWQgaG9yaXpvbnRhbGx5LlxuICAgIC8vIFN0cmV0Y2ggaXMgc3RpbGwgYSB3b3JraW5nIGRyYWZ0LiBDaHJvbWUgYW5kIEZpcmVmb3ggaGF2ZSBpdCBpbXBsZW1lbnRlZFxuICAgIC8vIHdpdGggJ2F2YWlsYWJsZScgcHJlZml4ZXMuIGZpdC1jb250ZW50IGlzIGFub3RoZXIgZ29vZCB0YXJnZXQgZm9yXG4gICAgLy8gU2FmYXJpIHNpbmNlIGl0IHdvcmtzIGluIGFsbW9zdCBhbGwgdXNlIGNhc2VzIGV4Y2VwdCB3aGVuIGFuIGV4cGxpY2l0XG4gICAgLy8gd2lkdGggaXMgc2V0ICh0aGUgdXNlciBjYW4gbWFrZSB0aGUgdGV4dGFyZWEgc21hbGxlciB0aGFuIHRoZSBjb250YWluZXIpLlxuICAgIC8vIE5vbmUgb2YgdGhpcyBtYXR0ZXJzIGZvciBJRTExLCB3aGljaCBkb2Vzbid0IHN1cHBvcnQgcmVzaXplLlxuICAgIG1pbi13aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgLyogQGFsdGVybmF0ZSAqL1xuICAgIG1pbi13aWR0aDogLW1vei1hdmFpbGFibGU7XG4gICAgLyogQGFsdGVybmF0ZSAqL1xuICAgIG1pbi13aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcbiAgICAvLyBzdHlsZWxpbnQtZW5hYmxlIGRlY2xhcmF0aW9uLWJsb2NrLW5vLWR1cGxpY2F0ZS1wcm9wZXJ0aWVzXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICByZXNpemU6IGJvdGg7XG4gIH1cbn1cblxuQG1peGluIF90ZXh0YXJlYS1maWxsZWQtcmVzaXplcigkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gIC8vIFNoaWZ0IHRoZSByZXNpemVyIGVsZW1lbnQgdXAgYnkgYSBtYXJnaW4gYW1vdW50IHRvIG1ha2Ugc3BhY2UgZm9yIHRoZVxuICAvLyByZXNpemUgaGFuZGxlLiBGb3IgZmlsbGVkIGVsZW1lbnRzLCB0aGUgcmVzaXplIGhhbmRsZSBkaXJlY3RseSB0b3VjaGVzXG4gIC8vIHRoZSBib3R0b20gbGluZSBhbmQgaXMgaGFyZCB0byBzZWUuXG4gIC8vIFVzaW5nIGEgbWFyZ2luIGFmZmVjdHMgdGhlIHdpZHRoIGFuZCBwb3NpdGlvbmluZyBvZiB0aGUgb3ZlcmFsbCBjb21wb25lbnRcbiAgLy8gYW5kIHVuZGVybHlpbmcgdGV4dGFyZWEsIHdoaWNoIGlzIHdoeSBhIHRyYW5zZm9ybSBpcyB1c2VkIGluc3RlYWQuXG4gICR5OiAtMSAqIHZhcmlhYmxlcy4kdGV4dGFyZWEtaW5wdXQtaGFuZGxlLW1hcmdpbjtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkeSk7XG4gIH1cbn1cblxuQG1peGluIF90ZXh0YXJlYS1maWxsZWQtcmVzaXplci1jaGlsZHJlbigkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gIC8vIFNlZSBhYm92ZS4gQWZ0ZXIgc2hpZnRpbmcgdGhlIHJlc2l6ZSB3cmFwcGVyIGVsZW1lbnQsIGFsbCBvZiBpdHMgY2hpbGRyZW5cbiAgLy8gc2hvdWxkIGJlIHNoaWZ0ZWQgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiAoZG93bikgdG8gY29tcGVuc2F0ZS5cbiAgJHk6IHZhcmlhYmxlcy4kdGV4dGFyZWEtaW5wdXQtaGFuZGxlLW1hcmdpbjtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkeSk7XG4gIH1cbn1cblxuQG1peGluIF90ZXh0YXJlYS1vdXRsaW5lZC1yZXNpemVyKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgLy8gU2hpZnQgdGhlIHJlc2l6ZXIgZWxlbWVudCBsZWZ0L3VwIGJ5IGEgbWFyZ2luIGFtb3VudCB0byBtYWtlIHNwYWNlIGZvciB0aGVcbiAgLy8gcmVzaXplIGhhbmRsZS4gRm9yIG91dGxpbmVkIGVsZW1lbnRzLCB0aGUgcmVzaXplIGhhbmRsZSBkaXJlY3RseSB0b3VjaGVzXG4gIC8vIHRoZSBvdXRsaW5lIGFuZCBpcyBoYXJkIHRvIHNlZS5cbiAgLy8gVXNpbmcgYSBtYXJnaW4gYWZmZWN0cyB0aGUgd2lkdGggYW5kIHBvc2l0aW9uaW5nIG9mIHRoZSBvdmVyYWxsIGNvbXBvbmVudFxuICAvLyBhbmQgdW5kZXJseWluZyB0ZXh0YXJlYSwgd2hpY2ggaXMgd2h5IGEgdHJhbnNmb3JtIGlzIHVzZWQgaW5zdGVhZC5cbiAgJHg6IC0xICogdmFyaWFibGVzLiR0ZXh0YXJlYS1pbnB1dC1oYW5kbGUtbWFyZ2luO1xuICAkeTogLTEgKiB2YXJpYWJsZXMuJHRleHRhcmVhLWlucHV0LWhhbmRsZS1tYXJnaW47XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgkeCkgdHJhbnNsYXRlWSgkeSk7XG5cbiAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgIC8vIEZsaXAgdGhlIGhvcml6b250YWwgc2hpZnRpbmcgZGlyZWN0aW9uIGZvciBSVExcbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEgKiAkeCkgdHJhbnNsYXRlWSgkeSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfdGV4dGFyZWEtb3V0bGluZWQtcmVzaXplci1jaGlsZHJlbigkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gIC8vIFNlZSBhYm92ZS4gQWZ0ZXIgc2hpZnRpbmcgdGhlIHJlc2l6ZSB3cmFwcGVyIGVsZW1lbnQsIGFsbCBvZiBpdHMgY2hpbGRyZW5cbiAgLy8gc2hvdWxkIGJlIHNoaWZ0ZWQgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiAocmlnaHQgYW5kIGRvd24pIHRvIGNvbXBlbnNhdGUuXG4gICR4OiB2YXJpYWJsZXMuJHRleHRhcmVhLWlucHV0LWhhbmRsZS1tYXJnaW47XG4gICR5OiB2YXJpYWJsZXMuJHRleHRhcmVhLWlucHV0LWhhbmRsZS1tYXJnaW47XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgkeCkgdHJhbnNsYXRlWSgkeSk7XG5cbiAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgIC8vIEZsaXAgdGhlIGhvcml6b250YWwgc2hpZnRpbmcgZGlyZWN0aW9uIGZvciBSVExcbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEgKiAkeCkgdHJhbnNsYXRlWSgkeSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfdGV4dGFyZWEtZmxvYXRpbmctbGFiZWwoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC8vIFJlc3RpbmcgbGFiZWwgcG9zaXRpb25cbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHRvcDogdmFyaWFibGVzLiR0ZXh0YXJlYS1sYWJlbC10b3A7XG4gICAgfVxuXG4gICAgLy8gUmVzZXRzIGNlbnRlciBhbGlnbmluZyB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICAgJjpub3QoLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUpIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF90ZXh0YXJlYS1pbnB1dCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRmZWF0LXR5cG9ncmFwaHk6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCB0eXBvZ3JhcGh5KTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWluLWhlaWdodDogdmFyaWFibGVzLiR0ZXh0YXJlYS1saW5lLWhlaWdodDtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47IC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMzNjU0XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHJlc2l6ZTogbm9uZTtcbiAgICAvLyBUZXh0YXJlYSBoYXMgaG9yaXpvbnRhbCBwYWRkaW5nIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5lci4gVGhpcyBhbGxvd3MgdGhlXG4gICAgLy8gcmVzaXplIGhhbmRsZSB0byBleHRlbmQgdG8gdGhlIGVkZ2Ugb2YgdGhlIGNvbnRhaW5lci5cbiAgICBwYWRkaW5nOiAwIHZhcmlhYmxlcy4kcGFkZGluZy1ob3Jpem9udGFsO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC10eXBvZ3JhcGh5KSB7XG4gICAgbGluZS1oZWlnaHQ6IHZhcmlhYmxlcy4kdGV4dGFyZWEtbGluZS1oZWlnaHQ7XG4gIH1cbn1cblxuQG1peGluIF90ZXh0YXJlYS1pbnRlcm5hbC1jb3VudGVyKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSB0eXBvZ3JhcGh5LmJhc2VsaW5lLWJvdHRvbShcbiAgICB2YXJpYWJsZXMuJHRleHRhcmVhLWludGVybmFsLWNvdW50ZXItYmFzZWxpbmUtYm90dG9tLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG4gICAgLy8gTmVlZGVkIHNpbmNlIHBhZGRpbmcgaXMgb24gdGhlIHRleHRhcmVhIGFuZCBub3QgdGhlIGNvbnRhaW5lclxuICAgIHBhZGRpbmc6IDAgdmFyaWFibGVzLiRwYWRkaW5nLWhvcml6b250YWw7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgLy8gUmVtb3ZlIGJhc2VsaW5lLXRvcFxuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF90ZXh0YXJlYS1pbnB1dC13aXRoLWludGVybmFsLWNvdW50ZXIoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyaWFibGVzLiR0ZXh0YXJlYS1pbnRlcm5hbC1jb3VudGVyLWlucHV0LW1hcmdpbi1ib3R0b207XG4gIH1cbn1cblxuQG1peGluIF90ZXh0YXJlYS1maWxsZWQoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIC8vIDx0ZXh0YXJlYT4gZG9lcyBub3QgYWxpZ24gdG8gYmFzZWxpbmUgd2hlbiBpdCBkb2VzIG5vdCBoYXZlIGEgdmFsdWUsXG4gICAgICAvLyB1bmxpa2UgPGlucHV0Piwgc28gd2UgaGF2ZSB0byB1c2UgcGFkZGluZyB0byBmYWtlIGl0IGluc3RlYWRcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gRmxvYXRpbmcgbGFiZWwgcG9zaXRpb25cbiAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLmZsb2F0LXBvc2l0aW9uKFxuICAgIHZhcmlhYmxlcy4kdGV4dGFyZWEtZmlsbGVkLWxhYmVsLXBvc2l0aW9uLXksXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICAvLyBGbG9hdGluZyBsYWJlbCBhbmltYXRpb25cbiAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLnNoYWtlLWFuaW1hdGlvbihcbiAgICB0ZXh0YXJlYS1maWxsZWQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGF0LXJvb3Qge1xuICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5zaGFrZS1rZXlmcmFtZXMoXG4gICAgICB0ZXh0YXJlYS1maWxsZWQsXG4gICAgICB2YXJpYWJsZXMuJHRleHRhcmVhLWZpbGxlZC1sYWJlbC1wb3NpdGlvbi15LFxuICAgICAgMCUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIF90ZXh0YXJlYS1maWxsZWQtaW5wdXQoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgbWFyZ2luLXRvcDogdmFyaWFibGVzLiR0ZXh0YXJlYS1maWxsZWQtaW5wdXQtbWFyZ2luLXRvcDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXJpYWJsZXMuJHRleHRhcmVhLWZpbGxlZC1pbnB1dC1tYXJnaW4tYm90dG9tO1xuICB9XG59XG5cbkBtaXhpbiBfdGV4dGFyZWEtZmlsbGVkLW5vLWxhYmVsLWlucHV0KCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIG1hcmdpbi10b3A6IHZhcmlhYmxlcy4kdGV4dGFyZWEtZmlsbGVkLW5vLWxhYmVsLWlucHV0LW1hcmdpbi10b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyaWFibGVzLiR0ZXh0YXJlYS1maWxsZWQtbm8tbGFiZWwtaW5wdXQtbWFyZ2luLWJvdHRvbTtcbiAgfVxufVxuXG5AbWl4aW4gX3RleHRhcmVhLW91dGxpbmVkKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5ub3RjaC1vZmZzZXQoMCwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC8vIEZsb2F0aW5nIGxhYmVsIHBvc2l0aW9uXG4gIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuZmxvYXRpbmctbGFiZWwtZmxvYXQtcG9zaXRpb24tYWJzb2x1dGUoXG4gICAgdmFyaWFibGVzLiR0ZXh0YXJlYS1vdXRsaW5lZC1sYWJlbC1wb3NpdGlvbi15LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgLy8gRmxvYXRpbmcgbGFiZWwgYW5pbWF0aW9uXG4gIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5zaGFrZS1hbmltYXRpb24oXG4gICAgdGV4dGFyZWEtb3V0bGluZWQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGF0LXJvb3Qge1xuICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5zaGFrZS1rZXlmcmFtZXMoXG4gICAgICB0ZXh0YXJlYS1vdXRsaW5lZCxcbiAgICAgIHZhcmlhYmxlcy4kdGV4dGFyZWEtb3V0bGluZWQtbGFiZWwtcG9zaXRpb24teSxcbiAgICAgIDAlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBfdGV4dGFyZWEtb3V0bGluZWQtZmxvYXRpbmctbGFiZWwoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgdG9wOiB2YXJpYWJsZXMuJHRleHRhcmVhLW91dGxpbmVkLWxhYmVsLXRvcDtcbiAgfVxufVxuXG5AbWl4aW4gX3RleHRhcmVhLW91dGxpbmVkLWlucHV0KCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIG1hcmdpbi10b3A6IHZhcmlhYmxlcy4kdGV4dGFyZWEtb3V0bGluZWQtaW5wdXQtbWFyZ2luLXRvcDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXJpYWJsZXMuJHRleHRhcmVhLW91dGxpbmVkLWlucHV0LW1hcmdpbi1ib3R0b207XG4gIH1cbn1cblxuLy8gVGV4dCwgUHJlZml4IGFuZCBTdWZmaXhcblxuLy8gQ29tbW9uIHN0eWxlcyBmb3IgdGhlIHRleHQgb2YgdGhlIHRleHQgZmllbGQsIGluY2x1ZGluZyB0aGUgcHJlZml4LCBzdWZmaXgsXG4vLyBhbmQgaW5wdXQuXG5AbWl4aW4gX3RleHQoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC8vIEV4Y2x1ZGUgc2V0dGluZyBsaW5lLWhlaWdodCB0byBrZWVwIGNhcmV0ICh0ZXh0IGN1cnNvcikgc2FtZSBoZWlnaHQgYXMgdGhlIGlucHV0IHRleHQgaW4gaU9TIGJyb3dzZXIuXG4gIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShcbiAgICBzdWJ0aXRsZTEsXG4gICAgJGV4Y2x1ZGUtcHJvcHM6IChsaW5lLWhlaWdodCksXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBoZWlnaHQ6IHZhcmlhYmxlcy4kaW5wdXQtaGVpZ2h0O1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiBhbmltYXRpb24uc3RhbmRhcmQob3BhY2l0eSwgMTUwbXMpO1xuICB9XG59XG5cbkBtaXhpbiBfaW5wdXQoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIF90ZXh0KCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4td2lkdGg6IDA7IC8vIEZpeGVzIGZsZXggaXNzdWVzIG9uIEZpcmVmb3hcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcblxuICAgIC8vIFJlbW92ZSBidWlsdC1pbiB0cmFpbGluZyBjbGVhciBpY29uIG9uIElFMTEuIElFIHZlbmRvciBwcmVmaXhlcyBjYW5ub3RcbiAgICAvLyBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHZlbmRvciBwcmVmaXhlcyBsaWtlIHRoZSB3ZWJraXQgb25lIGJlbG93LlxuICAgICY6Oi1tcy1jbGVhciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSBidWlsdC1pbiBkYXRlcGlja2VyIGljb24gb24gQ2hyb21lXG4gICAgJjo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSByZWQgb3V0bGluZSBvbiBmaXJlZm94XG4gICAgJjppbnZhbGlkIHtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfaW5wdXQtcGxhY2Vob2xkZXIoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgdHJhbnNpdGlvbjogYW5pbWF0aW9uLnN0YW5kYXJkKG9wYWNpdHksIDY3bXMpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbkBtaXhpbiBfaW5wdXQtcGxhY2Vob2xkZXItdmlzaWJsZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiA0MG1zO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDExMG1zO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbkBtaXhpbiBfYWZmaXgoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIF90ZXh0KCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cbn1cblxuLy8gVE9ETyhiLzE1NTQ2NzYxMCk6IFJlbW92ZSB3aGVuIFNhZmFyaSBzdXBwb3J0cyBiYXNlbGluZSBhbGlnbm1lbnRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRlcmlhbC1jb21wb25lbnRzL21hdGVyaWFsLWNvbXBvbmVudHMtd2ViL2lzc3Vlcy81ODc5XG5AbWl4aW4gX2NlbnRlcmVkLWFmZml4LXNhZmFyaS1zdXBwb3J0KCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxufVxuXG5AbWl4aW4gX2FmZml4LXZpc2libGUoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5AbWl4aW4gX3ByZWZpeCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChwYWRkaW5nLCByaWdodCwgdmFyaWFibGVzLiRwcmVmaXgtcGFkZGluZyk7XG4gIH1cbn1cblxuQG1peGluIF9wcmVmaXgtZW5kLWFsaWduZWQoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1ib3goXG4gICAgICBwYWRkaW5nLFxuICAgICAgcmlnaHQsXG4gICAgICB2YXJpYWJsZXMuJHByZWZpeC1lbmQtYWxpZ25lZC1wYWRkaW5nXG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gX3N1ZmZpeCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChwYWRkaW5nLCBsZWZ0LCB2YXJpYWJsZXMuJHN1ZmZpeC1wYWRkaW5nKTtcbiAgfVxufVxuXG5AbWl4aW4gX3N1ZmZpeC1lbmQtYWxpZ25lZCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChcbiAgICAgIHBhZGRpbmcsXG4gICAgICBsZWZ0LFxuICAgICAgdmFyaWFibGVzLiRzdWZmaXgtZW5kLWFsaWduZWQtcGFkZGluZ1xuICAgICk7XG4gIH1cbn1cblxuLy8gRW5kIGFsaWduZWRcbkBtaXhpbiBlbmQtYWxpZ25lZF8oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtdGV4dC1maWVsZF9faW5wdXQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAvLyBJRTExIGRvZXMgbm90IHN1cHBvcnQgdGV4dC1hbGlnbjogZW5kXG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBGb3JjZXMgaW5wdXQsIHByZWZpeCwgYW5kIHN1ZmZpeCB0byBiZSBMVFIgd2hlbiBpbiBhbiBSVEwgZW52aXJvbm1lbnQuIE90aGVyXG4vLyBlbGVtZW50cyBzdWNoIGFzIGxhYmVscyBhbmQgaWNvbnMgd2lsbCByZW1haW4gUlRMLlxuQG1peGluIF9sdHItdGV4dCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgIC5tZGMtdGV4dC1maWVsZF9faW5wdXQsXG4gICAgICAubWRjLXRleHQtZmllbGRfX2FmZml4IHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICB9XG5cbiAgICAgIC5tZGMtdGV4dC1maWVsZF9fYWZmaXgtLXByZWZpeCB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyaWFibGVzLiRwcmVmaXgtcGFkZGluZztcbiAgICAgIH1cblxuICAgICAgLm1kYy10ZXh0LWZpZWxkX19hZmZpeC0tc3VmZml4IHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXJpYWJsZXMuJHN1ZmZpeC1wYWRkaW5nO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgfVxuXG4gICAgICAvLyBOZWVkIHRvIHNwZWNpZnkgYW4gb3JkZXIgZm9yIGFsbCBlbGVtZW50cyBzaW5jZSBpY29ucyBtYWludGFpbiB0aGVpclxuICAgICAgLy8gb3JpZ2luYWwgcG9zaXRpb25zLiBXZSBjYW4ndCBqdXN0IHJldmVyc2UgdGhlIGNvbnRhaW5lci5cbiAgICAgIC5tZGMtdGV4dC1maWVsZF9faWNvbi0tbGVhZGluZyB7XG4gICAgICAgIG9yZGVyOiAxO1xuICAgICAgfVxuXG4gICAgICAubWRjLXRleHQtZmllbGRfX2FmZml4LS1zdWZmaXgge1xuICAgICAgICBvcmRlcjogMjtcbiAgICAgIH1cblxuICAgICAgLm1kYy10ZXh0LWZpZWxkX19pbnB1dCB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgfVxuXG4gICAgICAubWRjLXRleHQtZmllbGRfX2FmZml4LS1wcmVmaXgge1xuICAgICAgICBvcmRlcjogNDtcbiAgICAgIH1cblxuICAgICAgLm1kYy10ZXh0LWZpZWxkX19pY29uLS10cmFpbGluZyB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBGb3JjZXMgaW5wdXQsIHByZWZpeCwgYW5kIHN1ZmZpeCB0aGF0IGFyZSBhbHJlYWR5IGZvcmNlZCB0byBMVFIgdG8gYWxzbyBiZVxuLy8gZW5kLWFsaWduZWQuIFRoaXMgbWl4aW4gc2hvdWxkIGJlIHVzZWQgYWxvbmdzaWRlIHRoZSBzdHlsZXMgcHJvdmlkZWQgaW5cbi8vIF9sdHItdGV4dCgpLlxuQG1peGluIF9sdHItdGV4dC1lbmQtYWxpZ25lZCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgIC5tZGMtdGV4dC1maWVsZF9faW5wdXQge1xuICAgICAgICAvLyBJRTExIGRvZXMgbm90IHN1cHBvcnQgdGV4dC1hbGlnbjogZW5kLCBzbyB3ZSBuZWVkIHRvIGR1cGxpY2F0ZVxuICAgICAgICAvLyB0aGUgTFRSIGVuZC1hbGlnbmVkIHN0eWxlIGhlcmUuXG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgfVxuXG4gICAgICAubWRjLXRleHQtZmllbGRfX2FmZml4LS1wcmVmaXgge1xuICAgICAgICAvLyBwYWRkaW5nLWxlZnQ6IDAgcHJvdmlkZWQgYnkgX2x0ci10ZXh0IG1peGluXG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcmlhYmxlcy4kcHJlZml4LWVuZC1hbGlnbmVkLXBhZGRpbmc7XG4gICAgICB9XG5cbiAgICAgIC5tZGMtdGV4dC1maWVsZF9fYWZmaXgtLXN1ZmZpeCB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogdmFyaWFibGVzLiRzdWZmaXgtZW5kLWFsaWduZWQtcGFkZGluZztcbiAgICAgICAgLy8gcGFkZGluZy1yaWdodDogMCBwcm92aWRlZCBieSBfbHRyLXRleHQgbWl4aW5cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQ3VzdG9taXphdGlvblxuXG5AbWl4aW4gaW5rLWNvbG9yXygkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy10ZXh0LWZpZWxkX19pbnB1dCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcChjb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBsYWNlaG9sZGVyLWNvbG9yXygkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgIC5tZGMtdGV4dC1maWVsZF9faW5wdXQge1xuICAgICAgQGluY2x1ZGUgcGxhY2Vob2xkZXItc2VsZWN0b3JfIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcChjb2xvciwgJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZpbGwtY29sb3JfKFxuICAkY29sb3IsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksXG4gICRhZGRBbHRlcm5hdGU6IGZhbHNlXG4pIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgIEBpZiAoJGFkZEFsdGVybmF0ZSkge1xuICAgICAgLyogQGFsdGVybmF0ZSAqL1xuICAgIH1cbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wKGJhY2tncm91bmQtY29sb3IsICRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIGJvdHRvbS1saW5lLWNvbG9yXygkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLm1kYy1saW5lLXJpcHBsZSB7XG4gICAgQGluY2x1ZGUgbGluZS1yaXBwbGUtbWl4aW5zLmluYWN0aXZlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBob3Zlci1ib3R0b20tbGluZS1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gICY6aG92ZXIgLm1kYy1saW5lLXJpcHBsZSB7XG4gICAgQGluY2x1ZGUgbGluZS1yaXBwbGUtbWl4aW5zLmluYWN0aXZlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBsaW5lLXJpcHBsZS1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIC5tZGMtbGluZS1yaXBwbGUge1xuICAgIEBpbmNsdWRlIGxpbmUtcmlwcGxlLW1peGlucy5hY3RpdmUtY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuQG1peGluIGhvdmVyLW91dGxpbmUtY29sb3JfKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAmOm5vdCgubWRjLXRleHQtZmllbGQtLWZvY3VzZWQpOmhvdmVyIHtcbiAgICAubWRjLW5vdGNoZWQtb3V0bGluZSB7XG4gICAgICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLmNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm9jdXNlZC1vdXRsaW5lLWNvbG9yXygkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJi5tZGMtdGV4dC1maWVsZC0tZm9jdXNlZCB7XG4gICAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gbGFiZWwtaW5rLWNvbG9yXygkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLmluay1jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gX3ByZWZpeC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgIC5tZGMtdGV4dC1maWVsZF9fYWZmaXgtLXByZWZpeCB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wKGNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX3N1ZmZpeC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgIC5tZGMtdGV4dC1maWVsZF9fYWZmaXgtLXN1ZmZpeCB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wKGNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBTZWxlY3RvcnNcblxuQG1peGluIHBsYWNlaG9sZGVyLXNlbGVjdG9yXyB7XG4gIC8vIEdTUyB3aWxsIGNvbWJpbmUgc2VsZWN0b3JzIHdpdGggdGhlIHNhbWUgY29udGVudCwgYW5kIHNvbWUgYnJvd3NlcnMgaGF2ZSBhXG4gIC8vIENTUyBxdWlyayB3aGVyZSBpdCBkcm9wcyBhIHJ1bGUgaWYgaXQgZG9lcyBub3QgcmVjb2duaXplIG9uZSBvZiB0aGVcbiAgLy8gc2VsZWN0b3JzLlxuICAvLyBUbyBhdm9pZCBHU1MgY29tYmluaW5nIHRoZSA6OnBsYWNlaG9sZGVyIGFuZCA6LW1zLWlucHV0LXBsYWNlaG9sZGVyXG4gIC8vIHNlbGVjdG9ycywgd2Ugd3JhcCB0aGVtIGluIGBAbWVkaWEgYWxsYC5cbiAgLy8gVE9ETyhiLzE0MjMyOTA1MSlcbiAgQG1lZGlhIGFsbCB7XG4gICAgLy8gOjpwbGFjZWhvbGRlciBuZWVkcyB0byBiZSB3cmFwcGVkIGJlY2F1c2UgSUUxMSB3aWxsIGRyb3Agb3RoZXIgc2VsZWN0b3JzXG4gICAgLy8gd2l0aCB0aGUgc2FtZSBjb250ZW50XG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIGFsbCB7XG4gICAgLy8gOi1tcy1pbnB1dC1wbGFjZWhvbGRlciBuZWVkcyB0byBiZSB3cmFwcGVkIGJlY2F1c2UgRmlyZWZveCB3aWxsIGRyb3BcbiAgICAvLyBvdGhlciBzZWxlY3RvcnMgd2l0aCB0aGUgc2FtZSBjb250ZW50XG4gICAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIFN0YXRlIHF1YWxpZmllcnNcblxuLy8vXG4vLy8gSGVscHMgc3R5bGUgdGhlIHRleHQtZmllbGQgb25seSB3aGVuIGl0J3MgZW5hYmxlZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIGlmLWVuYWJsZWRfIHtcbiAgJjpub3QoLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vL1xuLy8vIEhlbHBzIHN0eWxlIHRoZSB0ZXh0LWZpZWxkIG9ubHkgd2hlbiBpdCdzIGRpc2FibGVkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG5AbWl4aW4gaWYtZGlzYWJsZWRfIHtcbiAgJi5tZGMtdGV4dC1maWVsZC0tZGlzYWJsZWQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTggR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vYW5pbWF0aW9uJztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vdmFyaWFibGVzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5cbi8vIFB1YmxpYyBtaXhpbnNcblxuQG1peGluIGhlbHBlci10ZXh0LWNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcblxuICAvLyBwb3N0Y3NzLWJlbS1saW50ZXI6IGRlZmluZSB0ZXh0LWZpZWxkLWhlbHBlci10ZXh0XG5cbiAgLm1kYy10ZXh0LWZpZWxkLWhlbHBlci10ZXh0IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoY2FwdGlvbiwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudGV4dC1iYXNlbGluZSgkdG9wOiAxNnB4LCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHdpbGwtY2hhbmdlOiBvcGFjaXR5O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiBhbmltYXRpb24uc3RhbmRhcmQob3BhY2l0eSwgMTUwbXMpO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtdGV4dC1maWVsZC1oZWxwZXItdGV4dC0tcGVyc2lzdGVudCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB3aWxsLWNoYW5nZTogaW5pdGlhbDtcbiAgICB9XG4gIH1cblxuICAvLyBwb3N0Y3NzLWJlbS1saW50ZXI6IGVuZFxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBjb2xvciBvZiB0aGUgaGVscGVyIHRleHQgZm9sbG93aW5nIGFuIGVuYWJsZWQgdGV4dC1maWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBoZWxwZXIgdGV4dCBjb2xvci5cbi8vL1xuQG1peGluIGhlbHBlci10ZXh0LWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAmOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSB7XG4gICAgQGluY2x1ZGUgaGVscGVyLXRleHQtY29sb3JfKCRjb2xvciwgJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBjb2xvciBvZiB0aGUgaGVscGVyIHRleHQgZm9sbG93aW5nIGEgZGlzYWJsZWQgdGV4dC1maWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBoZWxwZXIgdGV4dCBjb2xvci5cbi8vL1xuQG1peGluIGRpc2FibGVkLWhlbHBlci10ZXh0LWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAmLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgaGVscGVyLXRleHQtY29sb3JfKCRjb2xvciwgJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gaGVscGVyLXRleHQtdmFsaWRhdGlvbi1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJjpub3QoLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCkge1xuICAgIEBpbmNsdWRlIGhlbHBlci10ZXh0LXZhbGlkYXRpb24tY29sb3JfKCRjb2xvciwgJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLyBQcml2YXRlIG1peGluc1xuXG5AbWl4aW4gaGVscGVyLXRleHQtY29sb3JfKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICArIC5tZGMtdGV4dC1maWVsZC1oZWxwZXItbGluZSAubWRjLXRleHQtZmllbGQtaGVscGVyLXRleHQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGVscGVyLXRleHQtdmFsaWRhdGlvbi1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gICYubWRjLXRleHQtZmllbGQtLWludmFsaWRcbiAgICArIC5tZGMtdGV4dC1maWVsZC1oZWxwZXItbGluZVxuICAgIC5tZGMtdGV4dC1maWVsZC1oZWxwZXItdGV4dC0tdmFsaWRhdGlvbi1tc2cge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE5IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuXG4vLyBQdWJsaWMgbWl4aW5zXG5cbkBtaXhpbiBjaGFyYWN0ZXItY291bnRlci1jb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLy8gcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgdGV4dC1maWVsZC1jaGFyYWN0ZXItY291bnRlclxuXG4gIC5tZGMtdGV4dC1maWVsZC1jaGFyYWN0ZXItY291bnRlciB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50eXBvZ3JhcGh5KGNhcHRpb24sICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoJHRvcDogMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIEtlZXAgZmxleCBpdGVtIGFsaWduIHRvIHRyYWlsaW5nIHNpZGUgb24gYWJzZW5jZSBvZiBoZWxwZXIgdGV4dC5cbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtYm94KG1hcmdpbiwgbGVmdCwgYXV0byk7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChwYWRkaW5nLCBsZWZ0LCAxNnB4KTtcblxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG4gIH1cblxuICAvLyBwb3N0Y3NzLWJlbS1saW50ZXI6IGVuZFxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBjb2xvciBvZiB0aGUgY2hhcmFjdGVyIGNvdW50ZXIgYXNzb2NpYXRlZCB3aXRoIGFuIGVuYWJsZWQgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBjaGFyYWN0ZXIgY291bnRlciBjb2xvci5cbi8vL1xuQG1peGluIGNoYXJhY3Rlci1jb3VudGVyLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAmOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSB7XG4gICAgQGluY2x1ZGUgY2hhcmFjdGVyLWNvdW50ZXItY29sb3JfKCRjb2xvciwgJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBjb2xvciBvZiB0aGUgY2hhcmFjdGVyIGNvdW50ZXIgYXNzb2NpYXRlZCB3aXRoIGEgZGlzYWJsZWQgdGV4dCBmaWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBjaGFyYWN0ZXIgY291bnRlciBjb2xvci5cbi8vL1xuQG1peGluIGRpc2FibGVkLWNoYXJhY3Rlci1jb3VudGVyLWNvbG9yKFxuICAkY29sb3IsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAmLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgY2hhcmFjdGVyLWNvdW50ZXItY29sb3JfKCRjb2xvciwgJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gY2hhcmFjdGVyLWNvdW50ZXItcG9zaXRpb24oXG4gICR4T2Zmc2V0LFxuICAkeU9mZnNldCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy10ZXh0LWZpZWxkLWNoYXJhY3Rlci1jb3VudGVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wb3NpdGlvbihyaWdodCwgJHhPZmZzZXQpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAkeU9mZnNldDtcbiAgICB9XG4gIH1cbn1cblxuLy8gUHJpdmF0ZSBtaXhpbnNcblxuQG1peGluIGNoYXJhY3Rlci1jb3VudGVyLWNvbG9yXygkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLy8gQ2hhcmFjdGVyIGNvdW50ZXIgaXMgcGxhY2VkIGluc2lkZSBtZGMtdGV4dGZpZWxkIGVsZW1lbnQgKGZvciB0ZXh0YXJlYSB2YXJpYW50KSBvclxuICAvLyBpbnNpZGUgaGVscGVyIGxpbmUgd2hpY2ggaXMgc2libGluZyB0byBtZGMtdGV4dGZpZWxkLlxuICAubWRjLXRleHQtZmllbGQtY2hhcmFjdGVyLWNvdW50ZXIsXG4gICsgLm1kYy10ZXh0LWZpZWxkLWhlbHBlci1saW5lIC5tZGMtdGV4dC1maWVsZC1jaGFyYWN0ZXItY291bnRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTggR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJy4vdmFyaWFibGVzJztcblxuLy8gUHVibGljIG1peGluc1xuXG5AbWl4aW4gaWNvbi1jb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIC5tZGMtdGV4dC1maWVsZF9faWNvbiB7XG4gICAgQGluY2x1ZGUgaWNvbl8oJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgIEBpbmNsdWRlIF9pY29uLXN2ZygkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG5cbiAgLm1kYy10ZXh0LWZpZWxkX19pY29uLS1sZWFkaW5nIHtcbiAgICBAaW5jbHVkZSBsZWFkaW5nLWljb25fKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtdGV4dC1maWVsZF9faWNvbi0tdHJhaWxpbmcge1xuICAgIEBpbmNsdWRlIHRyYWlsaW5nLWljb25fKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBjb2xvciBmb3IgdGhlIGxlYWRpbmcgaWNvbiBpbiBhbiBlbmFibGVkIHRleHQtZmllbGQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGRlc2lyZWQgaWNvbiBjb2xvci5cbi8vL1xuQG1peGluIGxlYWRpbmctaWNvbi1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJjpub3QoLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCkge1xuICAgIEBpbmNsdWRlIGxlYWRpbmctaWNvbi1jb2xvcl8oJGNvbG9yLCAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIEN1c3RvbWl6ZXMgdGhlIGNvbG9yIGZvciB0aGUgdHJhaWxpbmcgaWNvbiBpbiBhbiBlbmFibGVkIHRleHQtZmllbGQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGRlc2lyZWQgaWNvbiBjb2xvci5cbi8vL1xuQG1peGluIHRyYWlsaW5nLWljb24tY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICY6bm90KC5tZGMtdGV4dC1maWVsZC0tZGlzYWJsZWQpIHtcbiAgICBAaW5jbHVkZSB0cmFpbGluZy1pY29uLWNvbG9yXygkY29sb3IsICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gQ3VzdG9taXplcyB0aGUgY29sb3IgZm9yIHRoZSBsZWFkaW5nL3RyYWlsaW5nIGljb25zIGluIGEgZGlzYWJsZWQgdGV4dC1maWVsZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgZGVzaXJlZCBpY29uIGNvbG9yLlxuLy8vXG5AbWl4aW4gZGlzYWJsZWQtaWNvbi1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJi5tZGMtdGV4dC1maWVsZC0tZGlzYWJsZWQge1xuICAgIEBpbmNsdWRlIGxlYWRpbmctaWNvbi1jb2xvcl8oJGNvbG9yLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHRyYWlsaW5nLWljb24tY29sb3JfKCRjb2xvciwgJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgc2l6ZSBvZiB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgaWNvbnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNpemUgLSB0aGUgc2l6ZSBvZiB0aGUgaWNvbiBpbiBweFxuQG1peGluIHNpemUoJHNpemUsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIC5tZGMtdGV4dC1maWVsZF9faWNvbiB7XG4gICAgICBmb250LXNpemU6ICRzaXplO1xuICAgIH1cbiAgfVxufVxuXG4vLyBQcml2YXRlIG1peGluc1xuXG5AbWl4aW4gaWNvbl8oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOm5vdChbdGFiaW5kZXhdKSxcbiAgJlt0YWJpbmRleD0nLTEnXSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfaWNvbi1zdmcoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgLy8gU1ZHIGNoaWxkcmVuIGNhbiBjYXVzZSBtaXNhbGlnbm1lbnQgd2hlbiBkaXNwbGF5ZWQgYXMgaW5saW5lIHNpbmNlXG4gICAgLy8gbGluZS1oZWlnaHQgd2lsbCBiZSBpbmhlcml0ZWQgYW5kIGNhdXNlIGFkZGl0aW9uYWwgdmVydGljYWwgc3BhY2UuXG4gICAgLy8gU2V0dGluZyB0aGUgZGlzcGxheSB0byBibG9jayBwcmV2ZW50cyB0aGlzLlxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbkBtaXhpbiBsZWFkaW5nLWljb25fKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkoXG4gICAgICBtYXJnaW4sXG4gICAgICB2YXJpYWJsZXMuJGxlYWRpbmctaWNvbi1wYWRkaW5nLWxlZnQsXG4gICAgICB2YXJpYWJsZXMuJGxlYWRpbmctaWNvbi1wYWRkaW5nLXJpZ2h0XG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gdHJhaWxpbmctaWNvbl8oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgJHBhZGRpbmc6IG1hdGguZGl2KHZhcmlhYmxlcy4kdG91Y2gtdGFyZ2V0LXNpemUgLSB2YXJpYWJsZXMuJGljb24tc2l6ZSwgMik7XG4gICAgJGxlZnQtbWFyZ2luOiB2YXJpYWJsZXMuJHRyYWlsaW5nLWljb24tcGFkZGluZy1sZWZ0IC0gJHBhZGRpbmc7XG4gICAgJHJpZ2h0LW1hcmdpbjogdmFyaWFibGVzLiR0cmFpbGluZy1pY29uLXBhZGRpbmctcmlnaHQgLSAkcGFkZGluZztcblxuICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xuICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkobWFyZ2luLCAkbGVmdC1tYXJnaW4sICRyaWdodC1tYXJnaW4pO1xuICB9XG59XG5cbkBtaXhpbiBsZWFkaW5nLWljb24tY29sb3JfKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLXRleHQtZmllbGRfX2ljb24tLWxlYWRpbmcge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhaWxpbmctaWNvbi1jb2xvcl8oJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtdGV4dC1maWVsZF9faWNvbi0tdHJhaWxpbmcge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ0BtYXRlcmlhbC9kZW5zaXR5L3ZhcmlhYmxlcycgYXMgZGVuc2l0eS12YXJpYWJsZXM7XG5AdXNlICdAbWF0ZXJpYWwvZmxvYXRpbmctbGFiZWwvdmFyaWFibGVzJyBhcyBmbG9hdGluZy1sYWJlbC12YXJpYWJsZXM7XG5AdXNlICdAbWF0ZXJpYWwvbm90Y2hlZC1vdXRsaW5lL3ZhcmlhYmxlcycgYXMgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5cbi8vL1xuLy8vIFJldHVybnMgb3V0bGluZWQgdGV4dCBmaWVsZCBmbG9hdGluZyBsYWJlbCBwb3NpdGlvbiBmb3IgZ2l2ZW4gaGVpZ2h0LlxuLy8vXG4vLy8gQHRvZG8gSW5zdGVhZCBvZiBhZGp1c3RpbmcgYCRwb3NpdGlvbllgIHdpdGggbGFiZWwgYm94IGhlaWdodCB0aGF0IG1pZ2h0IGNoYW5nZSBiYXNlZCBvbiBmbG9hdGluZyBsYWJlbCBmb250IHNpemVcbi8vLyAgICAgd3JhcCBsYWJlbCBpbiBhIGNoaWxkIGVsZW1lbnQgdG8gYXBwbHkgYHRyYW5zaXRpb25ZKC01MCUpYCB0byBhdXRvbWF0aWNhbGx5IG9mZnNldCBiYXNlZCBvbiBib3ggaGVpZ2h0LlxuLy8vXG5AZnVuY3Rpb24gZ2V0LW91dGxpbmVkLWxhYmVsLXBvc2l0aW9uLXkoJHRleHQtZmllbGQtaGVpZ2h0KSB7XG4gIEByZXR1cm4gbWF0aC5kaXYoJHRleHQtZmllbGQtaGVpZ2h0LCAyKSArXG4gICAgbWF0aC5kaXYobm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kbGFiZWwtYm94LWhlaWdodCwgMik7XG59XG5cbiRlcnJvcjogZXJyb3IgIWRlZmF1bHQ7XG4kZGlzYWJsZWQtYm9yZGVyOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuMDYpICFkZWZhdWx0O1xuJGRpc2FibGVkLWljb246IHJnYmEodGhlbWUtY29sb3IucHJvcC12YWx1ZShvbi1zdXJmYWNlKSwgMC4zKSAhZGVmYXVsdDtcbiRib3R0b20tbGluZS1ob3ZlcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjg3KSAhZGVmYXVsdDtcbiRib3R0b20tbGluZS1pZGxlOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNDIpICFkZWZhdWx0O1xuJGxhYmVsOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNikgIWRlZmF1bHQ7XG5cbiRpbmstY29sb3I6IHJnYmEodGhlbWUtY29sb3IucHJvcC12YWx1ZShvbi1zdXJmYWNlKSwgMC44NykgIWRlZmF1bHQ7XG4kaGVscGVyLXRleHQtY29sb3I6IHJnYmEodGhlbWUtY29sb3IucHJvcC12YWx1ZShvbi1zdXJmYWNlKSwgMC42KSAhZGVmYXVsdDtcbiRpY29uLWNvbG9yOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNTQpICFkZWZhdWx0O1xuJGZvY3VzZWQtbGFiZWwtY29sb3I6IHJnYmEodGhlbWUtY29sb3IucHJvcC12YWx1ZShwcmltYXJ5KSwgMC44NykgIWRlZmF1bHQ7XG4kcGxhY2Vob2xkZXItaW5rLWNvbG9yOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNTQpICFkZWZhdWx0O1xuJGFmZml4LWNvbG9yOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNikgIWRlZmF1bHQ7XG5cbiRkaXNhYmxlZC1sYWJlbC1jb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjM4KSAhZGVmYXVsdDtcbiRkaXNhYmxlZC1pbmstY29sb3I6IHJnYmEodGhlbWUtY29sb3IucHJvcC12YWx1ZShvbi1zdXJmYWNlKSwgMC4zOCkgIWRlZmF1bHQ7XG4kZGlzYWJsZWQtcGxhY2Vob2xkZXItaW5rLWNvbG9yOiByZ2JhKFxuICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjM4XG4pICFkZWZhdWx0O1xuJGRpc2FibGVkLWhlbHBlci10ZXh0LWNvbG9yOiByZ2JhKFxuICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjM4XG4pICFkZWZhdWx0O1xuJGRpc2FibGVkLWFmZml4LWNvbG9yOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuMzgpICFkZWZhdWx0O1xuXG4kYmFja2dyb3VuZDogY29sb3IubWl4KFxuICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKHN1cmZhY2UpLFxuICA0JVxuKSAhZGVmYXVsdDtcbiRkaXNhYmxlZC1iYWNrZ3JvdW5kOiBjb2xvci5taXgoXG4gIHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIHRoZW1lLWNvbG9yLnByb3AtdmFsdWUoc3VyZmFjZSksXG4gIDIlXG4pICFkZWZhdWx0O1xuJHNlY29uZGFyeS10ZXh0OiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNikgIWRlZmF1bHQ7XG5cbiRvdXRsaW5lZC1pZGxlLWJvcmRlcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLCAwLjM4KSAhZGVmYXVsdDtcbiRvdXRsaW5lZC1kaXNhYmxlZC1ib3JkZXI6IHJnYmEoXG4gIHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIDAuMDZcbikgIWRlZmF1bHQ7XG4kb3V0bGluZWQtaG92ZXItYm9yZGVyOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuODcpICFkZWZhdWx0O1xuXG4kdGV4dGFyZWEtYm9yZGVyOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNzMpICFkZWZhdWx0O1xuJHRleHRhcmVhLWJhY2tncm91bmQ6IHJnYmEodGhlbWUtY29sb3IucHJvcC12YWx1ZShzdXJmYWNlKSwgMSkgIWRlZmF1bHQ7XG4kdGV4dGFyZWEtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiByZ2JhKFxuICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjI2XG4pICFkZWZhdWx0O1xuLy8gY2Fubm90IGJlIHRyYW5zcGFyZW50IGJlY2F1c2UgbXVsdGlsaW5lIHRleHRhcmVhIGlucHV0XG4vLyB3aWxsIG1ha2UgdGV4dCB1bnJlYWRhYmxlXG4kdGV4dGFyZWEtZGlzYWJsZWQtYmFja2dyb3VuZDogcmdiYSgyNDksIDI0OSwgMjQ5LCAxKSAhZGVmYXVsdDtcblxuJHJpcHBsZS10YXJnZXQ6ICcubWRjLXRleHQtZmllbGRfX3JpcHBsZSc7XG4kb3V0bGluZWQtc3Ryb2tlLXdpZHRoOiAycHggIWRlZmF1bHQ7XG4kaGVpZ2h0OiA1NnB4ICFkZWZhdWx0O1xuJG1pbmltdW0taGVpZ2h0OiA0MHB4ICFkZWZhdWx0O1xuJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWw6IDUycHggIWRlZmF1bHQ7XG4kbWF4aW11bS1oZWlnaHQ6ICRoZWlnaHQgIWRlZmF1bHQ7XG4kcGFkZGluZy1ob3Jpem9udGFsOiAxNnB4ICFkZWZhdWx0O1xuJGRlbnNpdHktc2NhbGU6IGRlbnNpdHktdmFyaWFibGVzLiRkZWZhdWx0LXNjYWxlICFkZWZhdWx0O1xuJGRlbnNpdHktY29uZmlnOiAoXG4gIGhlaWdodDogKFxuICAgIGRlZmF1bHQ6ICRoZWlnaHQsXG4gICAgbWF4aW11bTogJG1heGltdW0taGVpZ2h0LFxuICAgIG1pbmltdW06ICRtaW5pbXVtLWhlaWdodCxcbiAgKSxcbikgIWRlZmF1bHQ7XG4kc2hhcGUtcmFkaXVzOiBzbWFsbCAhZGVmYXVsdDtcbiRsYWJlbC1wb3NpdGlvbi15OiBmbG9hdGluZy1sYWJlbC12YXJpYWJsZXMuJHBvc2l0aW9uLXkgIWRlZmF1bHQ7XG4kbGFiZWwtb2Zmc2V0OiAxNnB4ICFkZWZhdWx0O1xuLy8gVE9ETyhiLzE1NDM1MDc4OCk6IFJlbW92ZSB0aGlzIHZhcmlhYmxlLCBpdCdzIG5vdCB1c2VkIGludGVybmFsbHkgYnV0IGl0IGlzXG4vLyBleHRlcm5hbGx5IGluIEFuZ3VsYXJcbi8vLyBAZGVwcmVjYXRlZCB0aGlzIHZhcmlhYmxlIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLlxuLy8vIFVzZSBnZXQtb3V0bGluZWQtbGFiZWwtcG9zaXRpb24teSgkaGVpZ2h0KSBpbnN0ZWFkXG4kb3V0bGluZWQtbGFiZWwtcG9zaXRpb24teTogZ2V0LW91dGxpbmVkLWxhYmVsLXBvc2l0aW9uLXkoJGhlaWdodCkgIWRlZmF1bHQ7XG4kb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24tbGFiZWwtcG9zaXRpb24teDogMzJweCAhZGVmYXVsdDtcbiR0ZXh0YXJlYS1vdXRsaW5lZC1sYWJlbC1wb3NpdGlvbi15OiAyNC43NXB4ICFkZWZhdWx0OyAvLyB2aXN1YWxseSB+NGRwIGZyb20gdG9wIHRvIGJhc2VsaW5lXG4kdGV4dGFyZWEtZmlsbGVkLWxhYmVsLXBvc2l0aW9uLXk6IDEwLjI1cHggIWRlZmF1bHQ7IC8vIHZpc3VhbGx5IH4yMGRwIGZyb20gdG9wIHRvIGxhYmVsIGJhc2VsaW5lXG4kaGVscGVyLWxpbmUtcGFkZGluZzogMTZweCAhZGVmYXVsdDtcbiRmaWxsZWQtYmFzZWxpbmUtdG9wOiA0MHB4ICFkZWZhdWx0O1xuJGlucHV0LWhlaWdodDogMjhweCAhZGVmYXVsdDtcbiR0ZXh0YXJlYS1sYWJlbC10b3A6IDE5cHggIWRlZmF1bHQ7IC8vIHZpc3VhbGx5IH4zMmRwIGZyb20gdG9wIHRvIGxhYmVsIGJhc2VsaW5lXG4kdGV4dGFyZWEtb3V0bGluZWQtbGFiZWwtdG9wOiAkdGV4dGFyZWEtbGFiZWwtdG9wIC1cbiAgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHRleHRhcmVhLWxpbmUtaGVpZ2h0OiAxLjVyZW0gIWRlZmF1bHQ7IC8vIDI0ZHAgZnJvbSBiYXNlbGluZSB0byBiYXNlbGluZVxuJHRleHRhcmVhLWlucHV0LWhhbmRsZS1tYXJnaW46IDFweCAhZGVmYXVsdDtcbi8vIE91dGxpbmVkIHRleHRhcmVhJ3MgZmlyc3QgbGluZSBzaG91bGQgYmUgcGxhY2VkIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGFzXG4vLyBvdXRsaW5lZCB0ZXh0ZmllbGQsIGFuZCBzaG91bGQgbG9vayBpZGVudGljYWwgaWYgaXQgaXMgMSByb3cuIFNpbmNlIHRleHRmaWVsZFxuLy8gaXMgY2VudGVyZWQgYW5kIGZvbnQgbWV0cmljcyB2YXJ5IGZvciB3aGVyZSB0aGUgYmFzZWxpbmUgaXMsIHRoZSBiZXN0IHdheSB0b1xuLy8gZW5zdXJlIHRleHRhcmVhIGFuZCB0ZXh0ZmllbGQgYWxpZ24gaXMgd2l0aCBwYWRkaW5nLiBBdCA1NnB4IGhlaWdodCB3aXRoIGFcbi8vIDI0cHggbGluZS1oZWlnaHQsIGEgY2VudGVyZWQgdGV4dGZpZWxkIGhhcyAxNnB4IG9mIHRvcCBhbmQgYm90dG9tIHBhZGRpbmcuXG4vLyBUZXh0YXJlYSBzaG91bGQgdXNlIHRoaXMgdG8gcG9zaXRpb24gaXRzZWxmLlxuJHRleHRhcmVhLW91dGxpbmVkLWlucHV0LW1hcmdpbi10b3A6IDE2cHggIWRlZmF1bHQ7XG4kdGV4dGFyZWEtb3V0bGluZWQtaW5wdXQtbWFyZ2luLWJvdHRvbTogMTZweCAhZGVmYXVsdDtcbiR0ZXh0YXJlYS1vdXRsaW5lZC1kZW5zaXR5LWNvbmZpZzogKFxuICBtYXJnaW4tdG9wOiAoXG4gICAgZGVmYXVsdDogJHRleHRhcmVhLW91dGxpbmVkLWlucHV0LW1hcmdpbi10b3AsXG4gICAgbWF4aW11bTogJHRleHRhcmVhLW91dGxpbmVkLWlucHV0LW1hcmdpbi10b3AsXG4gICAgbWluaW11bTogJHRleHRhcmVhLW91dGxpbmVkLWlucHV0LW1hcmdpbi10b3AgLSA4LFxuICApLFxuICBtYXJnaW4tYm90dG9tOiAoXG4gICAgZGVmYXVsdDogJHRleHRhcmVhLW91dGxpbmVkLWlucHV0LW1hcmdpbi1ib3R0b20sXG4gICAgbWF4aW11bTogJHRleHRhcmVhLW91dGxpbmVkLWlucHV0LW1hcmdpbi1ib3R0b20sXG4gICAgbWluaW11bTogJHRleHRhcmVhLW91dGxpbmVkLWlucHV0LW1hcmdpbi1ib3R0b20gLSA4LFxuICApLFxuKSAhZGVmYXVsdDsgLy8gcmVtb3ZlIDEvMiBvZiBzY2FsZSB0byAtNCBmb3IgbWluaW11bVxuJHRleHRhcmVhLW91dGxpbmVkLWxhYmVsLWRlbnNpdHktY29uZmlnOiAoXG4gIHRvcDogKFxuICAgIGRlZmF1bHQ6ICR0ZXh0YXJlYS1vdXRsaW5lZC1sYWJlbC10b3AsXG4gICAgbWF4aW11bTogJHRleHRhcmVhLW91dGxpbmVkLWxhYmVsLXRvcCxcbiAgICBtaW5pbXVtOiAkdGV4dGFyZWEtb3V0bGluZWQtbGFiZWwtdG9wIC0gOCxcbiAgKSxcbikgIWRlZmF1bHQ7IC8vIHJlbW92ZSAxLzIgb2Ygc2NhbGUgdG8gLTQgZm9yIG1pbmltdW1cbiR0ZXh0YXJlYS1maWxsZWQtaW5wdXQtbWFyZ2luLXRvcDogMjNweCAhZGVmYXVsdDsgLy8gdmlzdWFsbHkgfjQwZHAgZnJvbSB0b3AgdG8gYmFzZWxpbmVcbiR0ZXh0YXJlYS1maWxsZWQtaW5wdXQtbWFyZ2luLWJvdHRvbTogOXB4ICFkZWZhdWx0OyAvLyB2aXN1YWxseSB+MTZkcCBmcm9tIGJhc2VsaW5lIHRvIGJvdHRvbVxuJHRleHRhcmVhLWZpbGxlZC1kZW5zaXR5LWNvbmZpZzogKFxuICBtYXJnaW4tYm90dG9tOiAoXG4gICAgZGVmYXVsdDogJHRleHRhcmVhLWZpbGxlZC1pbnB1dC1tYXJnaW4tYm90dG9tLFxuICAgIG1heGltdW06ICR0ZXh0YXJlYS1maWxsZWQtaW5wdXQtbWFyZ2luLWJvdHRvbSxcbiAgICBtaW5pbXVtOiAkdGV4dGFyZWEtZmlsbGVkLWlucHV0LW1hcmdpbi1ib3R0b20gLSA0LFxuICApLFxuKSAhZGVmYXVsdDsgLy8gc2NhbGUgdG8gLTEgZm9yIG1pbmltdW1cbiR0ZXh0YXJlYS1maWxsZWQtbGFiZWwtZGVuc2l0eS1jb25maWc6IChcbiAgdG9wOiAoXG4gICAgZGVmYXVsdDogJHRleHRhcmVhLWxhYmVsLXRvcCxcbiAgICBtYXhpbXVtOiAkdGV4dGFyZWEtbGFiZWwtdG9wLFxuICAgIG1pbmltdW06ICR0ZXh0YXJlYS1sYWJlbC10b3AgLSAyLFxuICApLFxuKSAhZGVmYXVsdDsgLy8gcmVtb3ZlIDEvMiBvZiBzY2FsZSB0byAtMSBmb3IgbWluaW1tXG4kdGV4dGFyZWEtZmlsbGVkLW5vLWxhYmVsLWlucHV0LW1hcmdpbi10b3A6IDE2cHggIWRlZmF1bHQ7IC8vIHNlZSBhYm92ZSBleHBsYW5hdGlvbiBmb3Igb3V0bGluZWQgdGV4dGFyZWEgbWFyZ2luXG4kdGV4dGFyZWEtZmlsbGVkLW5vLWxhYmVsLWlucHV0LW1hcmdpbi1ib3R0b206IDE2cHggIWRlZmF1bHQ7IC8vIHNlZSBhYm92ZSBleHBsYW5hdGlvbiBmb3Igb3V0bGluZWQgdGV4dGFyZWEgbWFyZ2luXG4kdGV4dGFyZWEtZmlsbGVkLW5vLWxhYmVsLWRlbnNpdHktY29uZmlnOiAoXG4gIG1hcmdpbi10b3A6IChcbiAgICBkZWZhdWx0OiAkdGV4dGFyZWEtZmlsbGVkLW5vLWxhYmVsLWlucHV0LW1hcmdpbi10b3AsXG4gICAgbWF4aW11bTogJHRleHRhcmVhLWZpbGxlZC1uby1sYWJlbC1pbnB1dC1tYXJnaW4tdG9wLFxuICAgIG1pbmltdW06ICR0ZXh0YXJlYS1maWxsZWQtbm8tbGFiZWwtaW5wdXQtbWFyZ2luLXRvcCAtIDgsXG4gICksXG4gIG1hcmdpbi1ib3R0b206IChcbiAgICBkZWZhdWx0OiAkdGV4dGFyZWEtZmlsbGVkLW5vLWxhYmVsLWlucHV0LW1hcmdpbi1ib3R0b20sXG4gICAgbWF4aW11bTogJHRleHRhcmVhLWZpbGxlZC1uby1sYWJlbC1pbnB1dC1tYXJnaW4tYm90dG9tLFxuICAgIG1pbmltdW06ICR0ZXh0YXJlYS1maWxsZWQtbm8tbGFiZWwtaW5wdXQtbWFyZ2luLWJvdHRvbSAtIDgsXG4gICksXG4pICFkZWZhdWx0OyAvLyByZW1vdmUgMS8yIG9mIHNjYWxlIHRvIC00IGZvciBtaW5pbXVtXG4kdGV4dGFyZWEtaW50ZXJuYWwtY291bnRlci1pbnB1dC1tYXJnaW4tYm90dG9tOiAycHggIWRlZmF1bHQ7IC8vIHZpc3VhbGx5IH4yMGRwIGZyb20gYmFzZWxpbmUgdG8gY291bnRlciBiYXNlbGluZVxuJHRleHRhcmVhLWludGVybmFsLWNvdW50ZXItYmFzZWxpbmUtYm90dG9tOiAxNnB4ICFkZWZhdWx0O1xuLy8gTm90ZSB0aGF0IHRoZSBzY2FsZSBmYWN0b3IgaXMgYW4gZXllYmFsbGVkIGFwcHJveGltYXRpb24gb2Ygd2hhdCdzIHNob3duIGluIHRoZSBtb2Nrcy5cblxuJHByZWZpeC1wYWRkaW5nOiAycHggIWRlZmF1bHQ7XG4kcHJlZml4LWVuZC1hbGlnbmVkLXBhZGRpbmc6IDEycHggIWRlZmF1bHQ7XG4kc3VmZml4LXBhZGRpbmc6IDEycHggIWRlZmF1bHQ7XG4kc3VmZml4LWVuZC1hbGlnbmVkLXBhZGRpbmc6IDJweCAhZGVmYXVsdDtcbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5AdXNlICcuL2Z1bmN0aW9ucyc7XG5cbi8vIFB1YmxpY1xuXG5AbWl4aW4gY29yZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gIC8vIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIGxpbmUtcmlwcGxlXG4gIC5tZGMtbGluZS1yaXBwbGUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAmOjpiZWZvcmUsXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBoZWlnaHQoMXB4KTtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4O1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIHRyYW5zaXRpb246IGZ1bmN0aW9ucy50cmFuc2l0aW9uLXZhbHVlKHRyYW5zZm9ybSksXG4gICAgICAgICAgZnVuY3Rpb25zLnRyYW5zaXRpb24tdmFsdWUob3BhY2l0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1saW5lLXJpcHBsZS0tYWN0aXZlOjphZnRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAubWRjLWxpbmUtcmlwcGxlLS1kZWFjdGl2YXRpbmc6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhlaWdodCgkaGVpZ2h0KSB7XG4gICY6OmJlZm9yZSB7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgfVxufVxuXG5AbWl4aW4gYWN0aXZlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYm9yZGVyLWJvdHRvbS1jb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGluYWN0aXZlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci1ib3R0b20tY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTkgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuL3ZhcmlhYmxlcyc7XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZm9ybS1maWVsZCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50eXBvZ3JhcGh5KGJvZHkyLCAkcXVlcnkpO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsIHRleHQtcHJpbWFyeS1vbi1iYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICA+IGxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkobWFyZ2luLCAwLCBhdXRvKTtcbiAgICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wcm9wZXJ0eShwYWRkaW5nLCB2YXJpYWJsZXMuJGl0ZW0tc3BhY2luZywgMCk7XG5cbiAgICAgICAgb3JkZXI6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1mb3JtLWZpZWxkLS1ub3dyYXAge1xuICAgID4gbGFiZWwge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1mb3JtLWZpZWxkLS1hbGlnbi1lbmQge1xuICAgID4gbGFiZWwge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wcm9wZXJ0eShtYXJnaW4sIGF1dG8sIDApO1xuICAgICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KHBhZGRpbmcsIDAsIHZhcmlhYmxlcy4kaXRlbS1zcGFjaW5nKTtcblxuICAgICAgICBvcmRlcjogLTE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1mb3JtLWZpZWxkLS1zcGFjZS1iZXR3ZWVuIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cblxuICAgID4gbGFiZWwge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgICAgIC8vIFJUTCBuZWVkZWQgZm9yIHNwZWNpZmljaXR5XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdAbWF0ZXJpYWwvYW5pbWF0aW9uL2Z1bmN0aW9ucycgYXMgZnVuY3Rpb25zMjtcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vdmFyaWFibGVzJyBhcyBhbmltYXRpb24tdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL2RlbnNpdHkvZnVuY3Rpb25zJyBhcyBkZW5zaXR5LWZ1bmN0aW9ucztcbkB1c2UgJ0BtYXRlcmlhbC9kb20vZG9tJztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvZm9jdXMtcmluZy9mb2N1cy1yaW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlJztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90b3VjaC10YXJnZXQvbWl4aW5zJyBhcyB0b3VjaC10YXJnZXQtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcbkB1c2UgJy4vY2hlY2tib3gtY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jb2xvci1jdXN0b20tcHJvcGVydGllcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RvdWNoLXRhcmdldC92YXJpYWJsZXMnIGFzIHRvdWNoLXRhcmdldC12YXJpYWJsZXM7XG5AdXNlICcuL2NoZWNrYm94LXRoZW1lJztcblxuLy8vXG4vLy8gQ2hlY2tib3ggYW5kIHJpcHBsZSBzdHlsZXMuXG4vLy9cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHdpdGhvdXQtcmlwcGxlKCRxdWVyeSk7XG4gIEBpbmNsdWRlIHJpcHBsZS1zdHlsZXMoJHF1ZXJ5KTtcbn1cblxuLy8vIENoZWNrYm94IHN0eWxlcyAoRXhjbHVkaW5nIHJpcHBsZSBzdHlsZXMpLlxuLy8vXG4vLy8gTk9URTogVGhpcyBBUEkgaXMgaW50ZW5kZWQgZm9yIHVzZSBieSBmcmFtZXdvcmtzIHRoYXQgbWF5IHdhbnQgdG8gc2VwYXJhdGUgdGhlIHJpcHBsZS1yZWxhdGVkIHN0eWxlcyBmcm9tIHRoZSBvdGhlclxuLy8vIGNoZWNrYm94IHN0eWxlcy4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBtb3N0IHVzZXJzIHVzZSBgbWRjLWNoZWNrYm94LWNvcmUtc3R5bGVzYCBpbnN0ZWFkLlxuLy8gVE9ETyhiLzE2Mjg4NzU2MCk6IFJlbmFtZSB0byBgY2hlY2tib3gtd2l0aG91dC1yaXBwbGUtc3R5bGVzKClgXG5AbWl4aW4gd2l0aG91dC1yaXBwbGUoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAvLyBUT0RPKGIvMTY1MDA1MzQ1KTogSW5jbHVkZSB0aGVtZS1zdHlsZXMoKSBhZnRlciBzdGF0aWMtc3R5bGVzKCkuXG4gIEBpbmNsdWRlIHRoZW1lLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIHN0YXRpYy1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLy8gQ2hlY2tib3ggc3RhdGljIHN0eWxlcy5cbi8vLyBDaGVja2JveCBzdHlsZXMgdGhhdCBhcmUgbm90IGN1c3RvbWl6YWJsZSBzaG91bGQgZ28gaGVyZS5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSB0b3VjaC10YXJnZXQtbWl4aW5zLndyYXBwZXIoJHF1ZXJ5KTsgLy8gQ09QWUJBUkFfQ09NTUVOVF9USElTX0xJTkVcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgIEBpbmNsdWRlIG1hcmsta2V5ZnJhbWVzXztcbiAgfVxuXG4gIC5tZGMtY2hlY2tib3gge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBiYXNlXztcbiAgICB9XG5cbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuZm9jdXMge1xuICAgICAgLm1kYy1jaGVja2JveF9fZm9jdXMtcmluZyB7XG4gICAgICAgIEBpbmNsdWRlIGZvY3VzLXJpbmcuZm9jdXMtcmluZyhcbiAgICAgICAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAgICAgICAkY29udGFpbmVyLW91dGVyLXBhZGRpbmctdmVydGljYWw6IDAsXG4gICAgICAgICAgJGNvbnRhaW5lci1vdXRlci1wYWRkaW5nLWhvcml6b250YWw6IDBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUdXJuIG9mZiBmb2N1cyByaW5nIGZvciBJRSB3aGVuIEhDTSBpcyB0dXJuIG9mZi4gRm9yIHNvbWUgcmVhc29uIHRoaXNcbiAgICAvLyBhZGRzIHNwYWNlIHRvIHRoZSBib3R0b20gb24gdGhlIGZvY3VzZWQgY2hlY2tib3ggaW5zaWRlIGEgZGlhbG9nLlxuICAgIEBtZWRpYSBhbGwgYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSkge1xuICAgICAgLm1kYy1jaGVja2JveF9fZm9jdXMtcmluZyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgZG9tLmZvcmNlZC1jb2xvcnMtbW9kZSB7XG4gICAgLm1kYy1jaGVja2JveF9fbWl4ZWRtYXJrIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIG1hcmdpbjogMCAxcHg7IC8vIEV4dHJhIGhvcml6b250YWwgc3BhY2UgYXJvdW5kIG1peGVkbWFyayBzeW1ib2wuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTmVlZGVkIHRvIGRpc2FibGUgaG92ZXIgZWZmZWN0cyBvbiBDU1Mtb25seSAobm9uLUpTKSBjaGVja2JveGVzXG4gIC5tZGMtY2hlY2tib3gtLWRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgZGlzYWJsZWRfO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmRfKCRxdWVyeSk7XG4gIH1cblxuICAubWRjLWNoZWNrYm94X19jaGVja21hcmsge1xuICAgIEBpbmNsdWRlIGNoZWNrbWFya18oJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFyay1wYXRoIHtcbiAgICBAaW5jbHVkZSBjaGVja21hcmstcGF0aF8oJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtY2hlY2tib3hfX21peGVkbWFyayB7XG4gICAgQGluY2x1ZGUgbWl4ZWRtYXJrXygkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1jaGVja2JveC0tYW5pbSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgIEBpbmNsdWRlIGFuaW1fO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmNoZWNrZWQgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLFxuICAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDppbmRldGVybWluYXRlIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2xbZGF0YS1pbmRldGVybWluYXRlPSd0cnVlJ11cbiAgICB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLS1tYXJrZWRfO1xuICAgIH1cblxuICAgIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFyay1wYXRoIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIGNoZWNrbWFyay1wYXRoLS1tYXJrZWRfO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgbmF0aXZlLWNvbnRyb2xfO1xuICAgIH1cblxuICAgICY6ZGlzYWJsZWQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgQGluY2x1ZGUgZGlzYWJsZWRfO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtY2hlY2tib3gtLXRvdWNoIHtcbiAgICBAaW5jbHVkZSBjaGVja2JveC10aGVtZS50b3VjaC10YXJnZXQoXG4gICAgICBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIGNoZWNrYm94LXN0YXRlLWxheWVyLXNpemUsXG4gICAgICAgIHRvdWNoLXRhcmdldC12YXJpYWJsZXMuJGhlaWdodFxuICAgICAgKSxcbiAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgY2hlY2tib3gtc3RhdGUtbGF5ZXItc2l6ZSxcbiAgICAgICAgY2hlY2tib3gtdGhlbWUuJHJpcHBsZS1zaXplXG4gICAgICApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6Y2hlY2tlZCB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQge1xuICAgIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFyayB7XG4gICAgICBAaW5jbHVkZSBjaGVja21hcmstLWNoZWNrZWRfKCRxdWVyeSk7XG4gICAgfVxuXG4gICAgLm1kYy1jaGVja2JveF9fbWl4ZWRtYXJrIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIG1peGVkbWFyay0tY2hlY2tlZF87XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmluZGV0ZXJtaW5hdGUgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLFxuICAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbFtkYXRhLWluZGV0ZXJtaW5hdGU9J3RydWUnXVxuICAgIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgLm1kYy1jaGVja2JveF9fY2hlY2ttYXJrIHtcbiAgICAgIEBpbmNsdWRlIGNoZWNrbWFyay0taW5kZXRlcm1pbmF0ZV8oJHF1ZXJ5KTtcbiAgICB9XG5cbiAgICAubWRjLWNoZWNrYm94X19taXhlZG1hcmsge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgQGluY2x1ZGUgbWl4ZWRtYXJrLS1pbmRldGVybWluYXRlXztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBKUyBjaGVja2JveFxuICAubWRjLWNoZWNrYm94Lm1kYy1jaGVja2JveC0tdXBncmFkZWQge1xuICAgIC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQsXG4gICAgLm1kYy1jaGVja2JveF9fY2hlY2ttYXJrLFxuICAgIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFyay1wYXRoLFxuICAgIC5tZGMtY2hlY2tib3hfX21peGVkbWFyayB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICBAaW5jbHVkZSBjaGlsZC0tdXBncmFkZWRfO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQ2hlY2tib3ggdGhlbWUgc3R5bGVzLlxuLy8vIENoZWNrYm94IHN0eWxlcyB0aGF0IGFyZSBjdXN0b21pemFibGUgc2hvdWxkIGdvIGhlcmUuXG5AbWl4aW4gdGhlbWUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLm1kYy1jaGVja2JveCB7XG4gICAgQGluY2x1ZGUgY2hlY2tib3gtdGhlbWUudGhlbWUtZGVwcmVjYXRlZChcbiAgICAgIGNoZWNrYm94LXRoZW1lLiRsaWdodC10aGVtZS1kZXByZWNhdGVkLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbi8vLyBDaGVja2JveCdzIHJpcHBsZSBzdHlsZXMuXG4vLy9cbi8vLyBOT1RFOiBUaGlzIEFQSSBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IGZyYW1ld29ya3MgdGhhdCBtYXkgd2FudCB0byBzZXBhcmF0ZSB0aGUgcmlwcGxlLXJlbGF0ZWQgc3R5bGVzIGZyb20gdGhlIG90aGVyXG4vLy8gY2hlY2tib3ggc3R5bGVzLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IG1vc3QgdXNlcnMgdXNlIGBtZGMtY2hlY2tib3gtY29yZS1zdHlsZXNgIGluc3RlYWQuXG5AbWl4aW4gcmlwcGxlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgcmlwcGxlLmNvbW1vbigkcXVlcnkpOyAvLyBDT1BZQkFSQV9DT01NRU5UX1RISVNfTElORVxuXG4gIC5tZGMtY2hlY2tib3gge1xuICAgIEBpbmNsdWRlIHJpcHBsZS5zdXJmYWNlKFxuICAgICAgJHF1ZXJ5OiAkcXVlcnksXG4gICAgICAkcmlwcGxlLXRhcmdldDogY2hlY2tib3gtdGhlbWUuJHJpcHBsZS10YXJnZXRcbiAgICApO1xuICAgIEBpbmNsdWRlIHJpcHBsZS5yYWRpdXMtdW5ib3VuZGVkKFxuICAgICAgJHF1ZXJ5OiAkcXVlcnksXG4gICAgICAkcmlwcGxlLXRhcmdldDogY2hlY2tib3gtdGhlbWUuJHJpcHBsZS10YXJnZXRcbiAgICApO1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5iZWhpbmQtY29udGVudChcbiAgICAgIGNoZWNrYm94LXRoZW1lLiRyaXBwbGUtdGFyZ2V0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgI3tjaGVja2JveC10aGVtZS4kcmlwcGxlLXRhcmdldH0ge1xuICAgIEBpbmNsdWRlIHJpcHBsZS50YXJnZXQtY29tbW9uKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gYmFzZV8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleDogMCAwIGNoZWNrYm94LXRoZW1lLiRpY29uLXNpemU7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICB3aWR0aDogY2hlY2tib3gtdGhlbWUuJGljb24tc2l6ZTtcbiAgaGVpZ2h0OiBjaGVja2JveC10aGVtZS4kaWNvbi1zaXplO1xuICBsaW5lLWhlaWdodDogMDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xufVxuXG5AbWl4aW4gZGlzYWJsZWRfIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuQG1peGluIGNoaWxkLS11cGdyYWRlZF8ge1xuICB0cmFuc2l0aW9uOiBub25lO1xufVxuXG4vLyBBbmltYXRpb25cblxuQG1peGluIGFuaW1fIHtcbiAgJG1kYy1jaGVja2JveC1pbmRldGVybWluYXRlLWNoYW5nZS1kdXJhdGlvbl86IDUwMG1zO1xuXG4gIC8vIHN0eWxlbGludC1kaXNhYmxlIG5vLXVua25vd24tYW5pbWF0aW9ucyAtLSBhbGxvdyB1bmtub3duIGFuaW1hdGlvbnNcblxuICAmLXVuY2hlY2tlZC1jaGVja2VkLFxuICAmLXVuY2hlY2tlZC1pbmRldGVybWluYXRlLFxuICAmLWNoZWNrZWQtdW5jaGVja2VkLFxuICAmLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIHtcbiAgICAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIHtcbiAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogY2hlY2tib3gtdGhlbWUuJHRyYW5zaXRpb24tZHVyYXRpb24gKiAyO1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAgIH1cbiAgfVxuXG4gICYtdW5jaGVja2VkLWNoZWNrZWQge1xuICAgIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFyay1wYXRoIHtcbiAgICAgIC8vIEluc3RlYWQgb2YgZGVsYXlpbmcgdGhlIGFuaW1hdGlvbiwgd2Ugc2ltcGx5IG11bHRpcGx5IGl0cyBsZW5ndGggYnkgMiBhbmQgYmVnaW4gdGhlXG4gICAgICAvLyBhbmltYXRpb24gYXQgNTAlIGluIG9yZGVyIHRvIHByZXZlbnQgYSBmbGFzaCBvZiBzdHlsZXMgYXBwbGllZCB0byBhIGNoZWNrZWQgY2hlY2ttYXJrXG4gICAgICAvLyBhcyB0aGUgYmFja2dyb3VuZCBpcyBmYWRpbmcgaW4gYmVmb3JlIHRoZSBhbmltYXRpb24gYmVnaW5zLlxuICAgICAgYW5pbWF0aW9uOiBtZGMtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGhcbiAgICAgICAgY2hlY2tib3gtdGhlbWUuJHRyYW5zaXRpb24tZHVyYXRpb24gKiAyIGxpbmVhciAwcztcbiAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJi11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSB7XG4gICAgLm1kYy1jaGVja2JveF9fbWl4ZWRtYXJrIHtcbiAgICAgIGFuaW1hdGlvbjogbWRjLWNoZWNrYm94LXVuY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya1xuICAgICAgICBjaGVja2JveC10aGVtZS4kdHJhbnNpdGlvbi1kdXJhdGlvbiBsaW5lYXIgMHM7XG4gICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICYtY2hlY2tlZC11bmNoZWNrZWQge1xuICAgIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFyay1wYXRoIHtcbiAgICAgIGFuaW1hdGlvbjogbWRjLWNoZWNrYm94LWNoZWNrZWQtdW5jaGVja2VkLWNoZWNrbWFyay1wYXRoXG4gICAgICAgIGNoZWNrYm94LXRoZW1lLiR0cmFuc2l0aW9uLWR1cmF0aW9uIGxpbmVhciAwcztcbiAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJi1jaGVja2VkLWluZGV0ZXJtaW5hdGUge1xuICAgIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFyayB7XG4gICAgICBhbmltYXRpb246IG1kYy1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJrXG4gICAgICAgIGNoZWNrYm94LXRoZW1lLiR0cmFuc2l0aW9uLWR1cmF0aW9uIGxpbmVhciAwcztcbiAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgLm1kYy1jaGVja2JveF9fbWl4ZWRtYXJrIHtcbiAgICAgIGFuaW1hdGlvbjogbWRjLWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmtcbiAgICAgICAgY2hlY2tib3gtdGhlbWUuJHRyYW5zaXRpb24tZHVyYXRpb24gbGluZWFyIDBzO1xuICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmLWluZGV0ZXJtaW5hdGUtY2hlY2tlZCB7XG4gICAgLm1kYy1jaGVja2JveF9fY2hlY2ttYXJrIHtcbiAgICAgIGFuaW1hdGlvbjogbWRjLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1jaGVja21hcmtcbiAgICAgICAgJG1kYy1jaGVja2JveC1pbmRldGVybWluYXRlLWNoYW5nZS1kdXJhdGlvbl8gbGluZWFyIDBzO1xuICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAubWRjLWNoZWNrYm94X19taXhlZG1hcmsge1xuICAgICAgYW5pbWF0aW9uOiBtZGMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLW1peGVkbWFya1xuICAgICAgICAkbWRjLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hhbmdlLWR1cmF0aW9uXyBsaW5lYXIgMHM7XG4gICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICYtaW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQge1xuICAgIC5tZGMtY2hlY2tib3hfX21peGVkbWFyayB7XG4gICAgICBhbmltYXRpb246IG1kYy1jaGVja2JveC1pbmRldGVybWluYXRlLXVuY2hlY2tlZC1taXhlZG1hcmtcbiAgICAgICAgJG1kYy1jaGVja2JveC1pbmRldGVybWluYXRlLWNoYW5nZS1kdXJhdGlvbl8gKiAwLjYgbGluZWFyIDBzO1xuICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBzdHlsZWxpbnQtZW5hYmxlIG5vLXVua25vd24tYW5pbWF0aW9uc1xufVxuXG5AbWl4aW4gYmFja2dyb3VuZF8oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgd2lkdGg6IGNoZWNrYm94LXRoZW1lLiRpY29uLXNpemU7XG4gICAgaGVpZ2h0OiBjaGVja2JveC10aGVtZS4kaWNvbi1zaXplO1xuICAgIC8vIGJvcmRlci1jb2xvciBpcyBvdmVycmlkZGVuIGJ5IHRoZSBtZGMtY2hlY2tib3gtdW5tYXJrZWQtc3Ryb2tlLWNvbG9yKCkgbWl4aW5cbiAgICBib3JkZXI6IGNoZWNrYm94LXRoZW1lLiRib3JkZXItd2lkdGggc29saWQgY3VycmVudENvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB3aWxsLWNoYW5nZTogYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLWV4aXQoYmFja2dyb3VuZC1jb2xvciksIHRyYW5zaXRpb24tZXhpdChib3JkZXItY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLS1tYXJrZWRfIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbi1lbnRlcihib3JkZXItY29sb3IpLCB0cmFuc2l0aW9uLWVudGVyKGJhY2tncm91bmQtY29sb3IpO1xufVxuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBibG9jay1uby1lbXB0eSAtLSBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbkBtaXhpbiBmb2N1cy1pbmRpY2F0b3JfKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbn1cbkBtaXhpbiBmb2N1cy1pbmRpY2F0b3ItLWZvY3VzZWRfKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbn1cbi8vIHN0eWxlbGludC1lbmFibGUgYmxvY2stbm8tZW1wdHlcblxuLy8gTmF0aXZlIGlucHV0XG5cbkBtaXhpbiBuYXRpdmUtY29udHJvbF8ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgb3BhY2l0eTogMDtcbiAgY3Vyc29yOiBpbmhlcml0O1xufVxuXG4vLyBDaGVjayBtYXJrXG5cbkBtaXhpbiBjaGVja21hcmtfKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbi1leGl0KFxuICAgICAgb3BhY2l0eSxcbiAgICAgIDBtcyxcbiAgICAgIGNoZWNrYm94LXRoZW1lLiR0cmFuc2l0aW9uLWR1cmF0aW9uICogMlxuICAgICk7XG4gIH1cblxuICAubWRjLWNoZWNrYm94LS11cGdyYWRlZCAmIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGNoZWNrbWFyay0tY2hlY2tlZF8oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbi1lbnRlcihcbiAgICAgICAgb3BhY2l0eSxcbiAgICAgICAgMG1zLFxuICAgICAgICBjaGVja2JveC10aGVtZS4kdHJhbnNpdGlvbi1kdXJhdGlvbiAqIDJcbiAgICAgICksXG4gICAgICB0cmFuc2l0aW9uLWVudGVyKHRyYW5zZm9ybSwgMG1zLCBjaGVja2JveC10aGVtZS4kdHJhbnNpdGlvbi1kdXJhdGlvbiAqIDIpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbkBtaXhpbiBjaGVja21hcmstLWluZGV0ZXJtaW5hdGVfKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLWV4aXQoXG4gICAgICAgIG9wYWNpdHksXG4gICAgICAgIDBtcyxcbiAgICAgICAgY2hlY2tib3gtdGhlbWUuJHRyYW5zaXRpb24tZHVyYXRpb25cbiAgICAgICksXG4gICAgICB0cmFuc2l0aW9uLWV4aXQodHJhbnNmb3JtLCAwbXMsIGNoZWNrYm94LXRoZW1lLiR0cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgfVxufVxuXG4vLyBDaGVjayBtYXJrIHBhdGhcblxuQG1peGluIGNoZWNrbWFyay1wYXRoXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLWV4aXQoXG4gICAgICBzdHJva2UtZGFzaG9mZnNldCxcbiAgICAgIDBtcyxcbiAgICAgIGNoZWNrYm94LXRoZW1lLiR0cmFuc2l0aW9uLWR1cmF0aW9uICogMlxuICAgICk7XG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHN0cm9rZTogY3VycmVudENvbG9yO1xuICAgIHN0cm9rZS13aWR0aDogY2hlY2tib3gtdGhlbWUuJG1hcmstc3Ryb2tlLXNpemUgKiAxLjM7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6ICRtYXJrLXBhdGgtbGVuZ3RoXztcbiAgICBzdHJva2UtZGFzaGFycmF5OiAkbWFyay1wYXRoLWxlbmd0aF87XG4gIH1cbn1cblxuQG1peGluIGNoZWNrbWFyay1wYXRoLS1tYXJrZWRfIHtcbiAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XG59XG5cbi8vIE1peGVkIG1hcmtcblxuQG1peGluIG1peGVkbWFya18oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApIHJvdGF0ZSgwZGVnKTtcbiAgICBib3JkZXItd2lkdGg6IG1hdGguZGl2KG1hdGguZmxvb3IoY2hlY2tib3gtdGhlbWUuJG1hcmstc3Ryb2tlLXNpemUpLCAyKTtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgIHRyYW5zaXRpb246IHRyYW5zaXRpb24tZXhpdChvcGFjaXR5KSwgdHJhbnNpdGlvbi1leGl0KHRyYW5zZm9ybSk7XG4gIH1cbn1cblxuQG1peGluIG1peGVkbWFyay0tY2hlY2tlZF8ge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgxKSByb3RhdGUoLTQ1ZGVnKTtcbn1cblxuQG1peGluIG1peGVkbWFyay0taW5kZXRlcm1pbmF0ZV8ge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgxKSByb3RhdGUoMGRlZyk7XG4gIG9wYWNpdHk6IDE7XG59XG5cbkBmdW5jdGlvbiB0cmFuc2l0aW9uLWVudGVyKFxuICAkcHJvcGVydHksXG4gICRkZWxheTogMG1zLFxuICAkZHVyYXRpb246IGNoZWNrYm94LXRoZW1lLiR0cmFuc2l0aW9uLWR1cmF0aW9uXG4pIHtcbiAgQHJldHVybiBmdW5jdGlvbnMyLmVudGVyKCRwcm9wZXJ0eSwgJGR1cmF0aW9uLCAkZGVsYXkpO1xufVxuXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1leGl0KFxuICAkcHJvcGVydHksXG4gICRkZWxheTogMG1zLFxuICAkZHVyYXRpb246IGNoZWNrYm94LXRoZW1lLiR0cmFuc2l0aW9uLWR1cmF0aW9uXG4pIHtcbiAgQHJldHVybiBmdW5jdGlvbnMyLmV4aXQtdGVtcG9yYXJ5KCRwcm9wZXJ0eSwgJGR1cmF0aW9uLCAkZGVsYXkpO1xufVxuXG4vLyBNYW51YWwgY2FsY3VsYXRpb24gZG9uZSBvbiBTVkdcbiRtYXJrLXBhdGgtbGVuZ3RoXzogMjkuNzgzMzM4NSAhZGVmYXVsdDtcbiRpbmRldGVybWluYXRlLWNoZWNrZWQtZWFzaW5nLWZ1bmN0aW9uXzogY3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpICFkZWZhdWx0O1xuXG5AbWl4aW4gbWFyay1rZXlmcmFtZXNfIHtcbiAgQGtleWZyYW1lcyBtZGMtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGgge1xuICAgIDAlLFxuICAgIDUwJSB7XG4gICAgICBzdHJva2UtZGFzaG9mZnNldDogJG1hcmstcGF0aC1sZW5ndGhfO1xuICAgIH1cblxuICAgIDUwJSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBhbmltYXRpb24tdmFyaWFibGVzLiRkZWNlbGVyYXRpb24tY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XG4gICAgfVxuICB9XG5cbiAgQGtleWZyYW1lcyBtZGMtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrIHtcbiAgICAwJSxcbiAgICA2OC4yJSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICB9XG5cbiAgICA2OC4yJSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMCwgMSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICB9XG4gIH1cblxuICBAa2V5ZnJhbWVzIG1kYy1jaGVja2JveC1jaGVja2VkLXVuY2hlY2tlZC1jaGVja21hcmstcGF0aCB7XG4gICAgZnJvbSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBhbmltYXRpb24tdmFyaWFibGVzLiRhY2NlbGVyYXRpb24tY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBzdHJva2UtZGFzaG9mZnNldDogJG1hcmstcGF0aC1sZW5ndGhfICogLTE7XG4gICAgfVxuICB9XG5cbiAgQGtleWZyYW1lcyBtZGMtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLWNoZWNrbWFyayB7XG4gICAgZnJvbSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBhbmltYXRpb24tdmFyaWFibGVzLiRkZWNlbGVyYXRpb24tY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG5cbiAgQGtleWZyYW1lcyBtZGMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFyayB7XG4gICAgZnJvbSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWVhc2luZy1mdW5jdGlvbl87XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIEBrZXlmcmFtZXMgbWRjLWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmsge1xuICAgIGZyb20ge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbWRjLWFuaW1hdGlvbi1kZWNlbGVyYXRpb24tY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIEBrZXlmcmFtZXMgbWRjLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmsge1xuICAgIGZyb20ge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJGluZGV0ZXJtaW5hdGUtY2hlY2tlZC1lYXNpbmctZnVuY3Rpb25fO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDMxNWRlZyk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxuXG4gIEBrZXlmcmFtZXMgbWRjLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFyayB7XG4gICAgMCUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDMyLjglLFxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2N1c3RvbS1wcm9wZXJ0aWVzJztcblxuQG1peGluIHByaW1hcnktaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUta2V5ZnJhbWVzXyB7XG4gIEBrZXlmcmFtZXMgbWRjLWxpbmVhci1wcm9ncmVzcy1wcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlIHtcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuXG4gICAgMjAlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjUsIDAsIDAuNzAxNzMyLCAwLjQ5NTgxOSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuXG4gICAgNTkuMTUlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcihcbiAgICAgICAgMC4zMDI0MzUsXG4gICAgICAgIDAuMzgxMzUyLFxuICAgICAgICAwLjU1LFxuICAgICAgICAwLjk1NjM1MlxuICAgICAgKTtcblxuICAgICAgJHByaW1hcnktaGFsZjogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAtLW1kYy1saW5lYXItcHJvZ3Jlc3MtcHJpbWFyeS1oYWxmLFxuICAgICAgICA4My42NzE0MiVcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBhcHBseS10cmFuc2xhdGVfKCRwcmltYXJ5LWhhbGYpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgJHByaW1hcnktZnVsbDogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAtLW1kYy1saW5lYXItcHJvZ3Jlc3MtcHJpbWFyeS1mdWxsLFxuICAgICAgICAyMDAuNjExMDU3JVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGFwcGx5LXRyYW5zbGF0ZV8oJHByaW1hcnktZnVsbCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwcmltYXJ5LWluZGV0ZXJtaW5hdGUtc2NhbGUta2V5ZnJhbWVzXyB7XG4gIEBrZXlmcmFtZXMgbWRjLWxpbmVhci1wcm9ncmVzcy1wcmltYXJ5LWluZGV0ZXJtaW5hdGUtc2NhbGUge1xuICAgIDAlIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuMDgpO1xuICAgIH1cblxuICAgIDM2LjY1JSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMzQ3MzEsIDAuMTI0ODIsIDAuNzg1ODQ0LCAxKTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuMDgpO1xuICAgIH1cblxuICAgIDY5LjE1JSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4wNiwgMC4xMSwgMC42LCAxKTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuNjYxNDc5KTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuMDgpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2Vjb25kYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLWtleWZyYW1lc18ge1xuICBAa2V5ZnJhbWVzIG1kYy1saW5lYXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlIHtcbiAgICAwJSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNSwgMCwgMC41MTUwNTgsIDAuNDA5Njg1KTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB9XG5cbiAgICAyNSUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzEwMzMsIDAuMjg0MDU4LCAwLjgsIDAuNzMzNzEyKTtcbiAgICAgICRzZWNvbmRhcnktcXVhcnRlcjogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAtLW1kYy1saW5lYXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LXF1YXJ0ZXIsXG4gICAgICAgIDM3LjY1MTkxMyVcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBhcHBseS10cmFuc2xhdGVfKCRzZWNvbmRhcnktcXVhcnRlcik7XG4gICAgfVxuXG4gICAgNDguMzUlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAuNjI3MDM1LCAwLjYsIDAuOTAyMDI2KTtcbiAgICAgICRzZWNvbmRhcnktaGFsZjogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAtLW1kYy1saW5lYXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LWhhbGYsXG4gICAgICAgIDg0LjM4NjE2NSVcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBhcHBseS10cmFuc2xhdGVfKCRzZWNvbmRhcnktaGFsZik7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAkc2Vjb25kYXJ5LWZ1bGw6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgLS1tZGMtbGluZWFyLXByb2dyZXNzLXNlY29uZGFyeS1mdWxsLFxuICAgICAgICAxNjAuMjc3NzgyJVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGFwcGx5LXRyYW5zbGF0ZV8oJHNlY29uZGFyeS1mdWxsKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNlY29uZGFyeS1pbmRldGVybWluYXRlLXNjYWxlLWtleWZyYW1lc18ge1xuICBAa2V5ZnJhbWVzIG1kYy1saW5lYXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LWluZGV0ZXJtaW5hdGUtc2NhbGUge1xuICAgIDAlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcihcbiAgICAgICAgMC4yMDUwMjgsXG4gICAgICAgIDAuMDU3MDUxLFxuICAgICAgICAwLjU3NjYxLFxuICAgICAgICAwLjQ1Mzk3MVxuICAgICAgKTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuMDgpO1xuICAgIH1cblxuICAgIDE5LjE1JSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoXG4gICAgICAgIDAuMTUyMzEzLFxuICAgICAgICAwLjE5NjQzMixcbiAgICAgICAgMC42NDgzNzQsXG4gICAgICAgIDEuMDA0MzE1XG4gICAgICApO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMC40NTcxMDQpO1xuICAgIH1cblxuICAgIDQ0LjE1JSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoXG4gICAgICAgIDAuMjU3NzU5LFxuICAgICAgICAtMC4wMDMxNjMsXG4gICAgICAgIDAuMjExNzYyLFxuICAgICAgICAxLjM4MTc5XG4gICAgICApO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMC43Mjc5Nik7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjA4KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJ1ZmZlcmluZy1rZXlmcmFtZXNfIHtcbiAgQGtleWZyYW1lcyBtZGMtbGluZWFyLXByb2dyZXNzLWJ1ZmZlcmluZyB7XG4gICAgZnJvbSB7XG4gICAgICAvLyBOb3JtYWxseSB0aGUgYnVmZmVyIGRvdHMgc3RhcnQgZnJvbSB0aGUgbGVmdCBhbmQgb3ZlcmZsb3cgdG8gdGhlIHJpZ2h0LlxuICAgICAgLy8gV2Ugcm90YXRlIGJ5IDE4MGRlZyBzbyB0aGF0IHRoZSBidWZmZXIgZG90cyBzdGFydCBvbiB0aGUgcmlnaHQgd2hlblxuICAgICAgLy8gaW4gbm9uLXJldmVyc2VkIG1vZGUgYW5kIG92ZXJmbG93IHRvIHRoZSBsZWZ0LlxuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKSB0cmFuc2xhdGVYKC0xMHB4KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHByaW1hcnktaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUtcmV2ZXJzZS1rZXlmcmFtZXNfIHtcbiAgQGtleWZyYW1lcyBtZGMtbGluZWFyLXByb2dyZXNzLXByaW1hcnktaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUtcmV2ZXJzZSB7XG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIH1cblxuICAgIDIwJSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41LCAwLCAwLjcwMTczMiwgMC40OTU4MTkpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIH1cblxuICAgIDU5LjE1JSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoXG4gICAgICAgIDAuMzAyNDM1LFxuICAgICAgICAwLjM4MTM1MixcbiAgICAgICAgMC41NSxcbiAgICAgICAgMC45NTYzNTJcbiAgICAgICk7XG4gICAgICAkcHJpbWFyeS1oYWxmOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIC0tbWRjLWxpbmVhci1wcm9ncmVzcy1wcmltYXJ5LWhhbGYtbmVnLFxuICAgICAgICAtODMuNjcxNDIlXG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgYXBwbHktdHJhbnNsYXRlXygkcHJpbWFyeS1oYWxmKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICRwcmltYXJ5LWZ1bGw6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgLS1tZGMtbGluZWFyLXByb2dyZXNzLXByaW1hcnktZnVsbC1uZWcsXG4gICAgICAgIC0yMDAuNjExMDU3JVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGFwcGx5LXRyYW5zbGF0ZV8oJHByaW1hcnktZnVsbCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzZWNvbmRhcnktaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUtcmV2ZXJzZS1rZXlmcmFtZXNfIHtcbiAgQGtleWZyYW1lcyBtZGMtbGluZWFyLXByb2dyZXNzLXNlY29uZGFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1yZXZlcnNlIHtcbiAgICAwJSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNSwgMCwgMC41MTUwNTgsIDAuNDA5Njg1KTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB9XG5cbiAgICAyNSUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzEwMzMsIDAuMjg0MDU4LCAwLjgsIDAuNzMzNzEyKTtcbiAgICAgICRzZWNvbmRhcnktcXVhcnRlcjogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAtLW1kYy1saW5lYXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LXF1YXJ0ZXItbmVnLFxuICAgICAgICAtMzcuNjUxOTEzJVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGFwcGx5LXRyYW5zbGF0ZV8oJHNlY29uZGFyeS1xdWFydGVyKTtcbiAgICB9XG5cbiAgICA0OC4zNSUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC42MjcwMzUsIDAuNiwgMC45MDIwMjYpO1xuICAgICAgJHNlY29uZGFyeS1oYWxmOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIC0tbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktaGFsZi1uZWcsXG4gICAgICAgIC04NC4zODYxNjUlXG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgYXBwbHktdHJhbnNsYXRlXygkc2Vjb25kYXJ5LWhhbGYpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgJHNlY29uZGFyeS1mdWxsOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIC0tbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktZnVsbC1uZWcsXG4gICAgICAgIC0xNjAuMjc3NzgyJVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGFwcGx5LXRyYW5zbGF0ZV8oJHNlY29uZGFyeS1mdWxsKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJ1ZmZlcmluZy1yZXZlcnNlLWtleWZyYW1lc18ge1xuICBAa2V5ZnJhbWVzIG1kYy1saW5lYXItcHJvZ3Jlc3MtYnVmZmVyaW5nLXJldmVyc2Uge1xuICAgIGZyb20ge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFwcGx5LXRyYW5zbGF0ZV8oJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KFxuICAgIHRyYW5zZm9ybSxcbiAgICB0cmFuc2xhdGVYKHZhbHVlKSxcbiAgICAkcmVwbGFjZTogKHZhbHVlOiAkdmFsdWUpXG4gICk7XG59XG4iLCIvLyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIG5vLXVua25vd24tYW5pbWF0aW9ucyAtLVxuLy8gQW5pbWF0aW9ucyBrZXlmcmFtZXMgYXJlIGluY2x1ZGVkIGluIGBrZXlmcmFtZXMuc2Nzc2AuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL2FuaW1hdGlvbi9mdW5jdGlvbnMnIGFzIGFuaW1hdGlvbi1mdW5jdGlvbnM7XG5AdXNlICdAbWF0ZXJpYWwvZG9tL2RvbSc7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5AdXNlICcuL3ZhcmlhYmxlcyc7XG5AdXNlICcuL2tleWZyYW1lcyc7XG5cbi8vXG4vLyBQdWJsaWNcbi8vXG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICBAaW5jbHVkZSBrZXlmcmFtZXMucHJpbWFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1rZXlmcmFtZXNfO1xuICAgIEBpbmNsdWRlIGtleWZyYW1lcy5wcmltYXJ5LWluZGV0ZXJtaW5hdGUtc2NhbGUta2V5ZnJhbWVzXztcbiAgICBAaW5jbHVkZSBrZXlmcmFtZXMuc2Vjb25kYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLWtleWZyYW1lc187XG4gICAgQGluY2x1ZGUga2V5ZnJhbWVzLnNlY29uZGFyeS1pbmRldGVybWluYXRlLXNjYWxlLWtleWZyYW1lc187XG4gICAgQGluY2x1ZGUga2V5ZnJhbWVzLmJ1ZmZlcmluZy1rZXlmcmFtZXNfO1xuICAgIEBpbmNsdWRlIGtleWZyYW1lcy5wcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2Uta2V5ZnJhbWVzXztcbiAgICBAaW5jbHVkZSBrZXlmcmFtZXMuc2Vjb25kYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2Uta2V5ZnJhbWVzXztcbiAgICBAaW5jbHVkZSBrZXlmcmFtZXMuYnVmZmVyaW5nLXJldmVyc2Uta2V5ZnJhbWVzXztcbiAgfVxuXG4gIC5tZGMtbGluZWFyLXByb2dyZXNzIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gICAgICAvLyBDcmVhdGUgYSBib3JkZXIgYXJvdW5kIHRoZSBiYXIgaW4gV2luZG93cyBIaWdoIENvbnRyYXN0IE1vZGUuXG4gICAgICBvdXRsaW5lOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICBAaW5jbHVkZSBkb20uZm9yY2VkLWNvbG9ycy1tb2RlKCRleGNsdWRlLWllMTE6IHRydWUpIHtcbiAgICAgICAgb3V0bGluZS1jb2xvcjogQ2FudmFzVGV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogYW5pbWF0aW9uLWZ1bmN0aW9ucy5leGl0LXRlbXBvcmFyeShvcGFjaXR5LCAyNTBtcyk7XG4gICAgfVxuXG4gICAgJl9fYmFyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgdHJhbnNpdGlvbjogYW5pbWF0aW9uLWZ1bmN0aW9ucy5leGl0LXRlbXBvcmFyeSh0cmFuc2Zvcm0sIDI1MG1zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19iYXItaW5uZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgICAgIC8vIGJvcmRlci10b3AgaXMgdXNlZCByYXRoZXIgdGhhbiBiYWNrZ3JvdW5kLWNvbG9yIHRvIGVuc3VyZSB0aGF0IHRoZVxuICAgICAgICAvLyBiYXIgaXMgdmlzaWJsZSBpbiBXaW5kb3dzIEhpZ2ggQ29udHJhc3QgTW9kZS5cbiAgICAgICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnVmZmVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19idWZmZXItZG90cyB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gICAgICAgIC8vIGJhY2tncm91bmQtc2l6ZTogMTBweCB2YXJpYWJsZXMuJGhlaWdodDtcbiAgICAgICAgZmxleDogYXV0bztcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgYW5pbWF0aW9uOiBtZGMtbGluZWFyLXByb2dyZXNzLWJ1ZmZlcmluZyAyNTBtcyBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnVmZmVyLWJhciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBmbGV4OiAwIDEgMTAwJTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgdHJhbnNpdGlvbjogYW5pbWF0aW9uLWZ1bmN0aW9ucy5leGl0LXRlbXBvcmFyeShmbGV4LWJhc2lzLCAyNTBtcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fcHJpbWFyeS1iYXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fc2Vjb25kYXJ5LWJhciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGluZGV0ZXJtaW5hdGVfKCRxdWVyeTogJHF1ZXJ5KTtcblxuICAgIEBpbmNsdWRlIHJ0bC5ydGwoKSB7XG4gICAgICAvLyBUaGUgcnRsKCkgbWl4aW4gZG9lcyBub3QgYWNjb3VudCBmb3IgbmVzdGVkIGBkaXJgIGF0dHJpYnV0ZXMuIFNldFxuICAgICAgLy8gYGRpcmAgYXR0cmlidXRlIG9uIHJvb3QgdG8gdGFrZSBoaWdoZXN0IHByaW9yaXR5LlxuICAgICAgJjpub3QoW2Rpcj0nbHRyJ10pIHtcbiAgICAgICAgQGluY2x1ZGUgX3J0bC1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYtLWNsb3NlZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICYtLWNsb3NlZC1hbmltYXRpb24tb2ZmIHtcbiAgICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19idWZmZXItZG90cyB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYubWRjLWxpbmVhci1wcm9ncmVzcy0taW5kZXRlcm1pbmF0ZSB7XG4gICAgICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19iYXIsXG4gICAgICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19iYXIgLm1kYy1saW5lYXItcHJvZ3Jlc3NfX2Jhci1pbm5lciB7XG4gICAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAYXQtcm9vdCB7XG4gICAgQGluY2x1ZGUgYmFyLWNvbG9yKHByaW1hcnksICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBidWZmZXItY29sb3IodmFyaWFibGVzLiRiYXNlbGluZS1idWZmZXItY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0cmFjay1oZWlnaHQodmFyaWFibGVzLiRoZWlnaHQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gYmFyLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWxpbmVhci1wcm9ncmVzc19fYmFyLWlubmVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAvLyBCb3JkZXIgaXMgdXNlZCByYXRoZXIgdGhhbiBiYWNrZ3JvdW5kLWNvbG9yIHRvIGVuc3VyZSB0aGF0IHRoZVxuICAgICAgLy8gYmFyIGlzIHZpc2libGUgaW4gV2luZG93cyBIaWdoIENvbnRyYXN0IE1vZGUuXG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShib3JkZXItY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBidWZmZXItY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIC8vIFdlIG5lZWQgdG8gZXNjYXBlIHRoZSAnIycgY2hhcmFjdGVyIGFzIFwiJTIzXCIgZm9yIFNWRyBiZWNhdXNlICcjJyBpcyBhIHJlc2VydmVkIGNoYXJhY3RlciBpbiBVUklzLlxuICAkY29sb3ItdmFsdWUtZm9yLWNzczogdGhlbWUtY29sb3IucHJvcC12YWx1ZSgkY29sb3IpO1xuICAkY29sb3ItdmFsdWUtZm9yLXN2Zzogc3RyLXJlcGxhY2VfKFxuICAgIHN0cmluZy51bnF1b3RlKCcjeyRjb2xvci12YWx1ZS1mb3ItY3NzfScpLFxuICAgICcjJyxcbiAgICAnJTIzJ1xuICApO1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWxpbmVhci1wcm9ncmVzc19fYnVmZmVyLWRvdHMge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIC8vIFNWRyBpcyBvcHRpbWl6ZWQgZm9yIGRhdGEgVVJJIChodHRwczovL2NvZGVwZW4uaW8vdGlndC9wb3N0L29wdGltaXppbmctc3Zncy1pbi1kYXRhLXVyaXMpXG4gICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuY3Rpb24tdXJsLXF1b3Rlc1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHg9JzBweCcgeT0nMHB4JyBlbmFibGUtYmFja2dyb3VuZD0nbmV3IDAgMCA1IDInIHhtbDpzcGFjZT0ncHJlc2VydmUnIHZpZXdCb3g9JzAgMCA1IDInIHByZXNlcnZlQXNwZWN0UmF0aW89J25vbmUgc2xpY2UnJTNFJTNDY2lyY2xlIGN4PScxJyBjeT0nMScgcj0nMScgZmlsbD0nI3skY29sb3ItdmFsdWUtZm9yLXN2Z30nLyUzRSUzQy9zdmclM0VcIik7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1saW5lYXItcHJvZ3Jlc3NfX2J1ZmZlci1iYXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci12YWx1ZS1mb3ItY3NzO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhY2staGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgLm1kYy1saW5lYXItcHJvZ3Jlc3Mge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuXG4gICAgJl9fYmFyLWlubmVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnVmZmVyLWRvdHMge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMHB4ICRoZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vXG4vLyBQcml2YXRlXG4vL1xuXG5AbWl4aW4gaW5kZXRlcm1pbmF0ZV8oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gICYtLWluZGV0ZXJtaW5hdGUge1xuICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19iYXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWRjLWxpbmVhci1wcm9ncmVzc19fcHJpbWFyeS1iYXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgbGVmdDogLTE0NS4xNjY2MTElO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19zZWNvbmRhcnktYmFyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGxlZnQ6IC01NC44ODg4OTElO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1kYy1saW5lYXItcHJvZ3Jlc3MtLWFuaW1hdGlvbi1yZWFkeSB7XG4gICAgICAubWRjLWxpbmVhci1wcm9ncmVzc19fcHJpbWFyeS1iYXIge1xuICAgICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICAgIGFuaW1hdGlvbjogbWRjLWxpbmVhci1wcm9ncmVzcy1wcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlIDJzXG4gICAgICAgICAgICBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5tZGMtbGluZWFyLXByb2dyZXNzX19iYXItaW5uZXIge1xuICAgICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBhbmltYXRpb246IG1kYy1saW5lYXItcHJvZ3Jlc3MtcHJpbWFyeS1pbmRldGVybWluYXRlLXNjYWxlIDJzXG4gICAgICAgICAgICAgIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLm1kYy1saW5lYXItcHJvZ3Jlc3NfX3NlY29uZGFyeS1iYXIge1xuICAgICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICAgIGFuaW1hdGlvbjogbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUgMnNcbiAgICAgICAgICAgIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLm1kYy1saW5lYXItcHJvZ3Jlc3NfX2Jhci1pbm5lciB7XG4gICAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktaW5kZXRlcm1pbmF0ZS1zY2FsZSAyc1xuICAgICAgICAgICAgICBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfcnRsLXN0eWxlcygkcXVlcnk6ICRxdWVyeSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gIC5tZGMtbGluZWFyLXByb2dyZXNzX19iYXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgcmlnaHQ7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gICYubWRjLWxpbmVhci1wcm9ncmVzcy0tYW5pbWF0aW9uLXJlYWR5IHtcbiAgICAubWRjLWxpbmVhci1wcm9ncmVzc19fcHJpbWFyeS1iYXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IG1kYy1saW5lYXItcHJvZ3Jlc3MtcHJpbWFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1yZXZlcnNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19zZWNvbmRhcnktYmFyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBtZGMtbGluZWFyLXByb2dyZXNzLXNlY29uZGFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1yZXZlcnNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtbGluZWFyLXByb2dyZXNzX19idWZmZXItZG90cyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgIGFuaW1hdGlvbjogbWRjLWxpbmVhci1wcm9ncmVzcy1idWZmZXJpbmctcmV2ZXJzZSAyNTBtcyBpbmZpbml0ZSBsaW5lYXI7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDApO1xuICAgIH1cbiAgfVxuXG4gICYubWRjLWxpbmVhci1wcm9ncmVzcy0taW5kZXRlcm1pbmF0ZSB7XG4gICAgLm1kYy1saW5lYXItcHJvZ3Jlc3NfX3ByaW1hcnktYmFyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHJpZ2h0OiAtMTQ1LjE2NjYxMSU7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1saW5lYXItcHJvZ3Jlc3NfX3NlY29uZGFyeS1iYXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgcmlnaHQ6IC01NC44ODg4OTElO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBCYXNlZCBvbiBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3Mvc3RyLXJlcGxhY2UtZnVuY3Rpb24vXG5AZnVuY3Rpb24gc3RyLXJlcGxhY2VfKCRzdHJpbmcsICRzZWFyY2gsICRyZXBsYWNlKSB7XG4gICRpbmRleDogc3RyaW5nLmluZGV4KCRzdHJpbmcsICRzZWFyY2gpO1xuXG4gIEBpZiAkaW5kZXgge1xuICAgICRoZWFkOiBzdHJpbmcuc2xpY2UoJHN0cmluZywgMSwgJGluZGV4IC0gMSk7XG4gICAgJHRhaWw6IHN0ci1yZXBsYWNlXyhcbiAgICAgIHN0cmluZy5zbGljZSgkc3RyaW5nLCAkaW5kZXggKyBzdHJpbmcubGVuZ3RoKCRzZWFyY2gpKSxcbiAgICAgICRzZWFyY2gsXG4gICAgICAkcmVwbGFjZVxuICAgICk7XG5cbiAgICBAcmV0dXJuICRoZWFkICsgJHJlcGxhY2UgKyAkdGFpbDtcbiAgfVxuXG4gIEByZXR1cm4gJHN0cmluZztcbn1cbiIsIi8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuJGJhc2VsaW5lLWJ1ZmZlci1jb2xvcjogI2U2ZTZlNiAhZGVmYXVsdDtcbiRoZWlnaHQ6IDRweDtcbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIEludGVybmFsIHN0eWxpbmcgZm9yIERpYWxvZyBNREMgY29tcG9uZW50LlxuXG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnQG1hdGVyaWFsL2FuaW1hdGlvbi9mdW5jdGlvbnMnIGFzIGFuaW1hdGlvbi1mdW5jdGlvbnM7XG5AdXNlICdAbWF0ZXJpYWwvYnV0dG9uL2J1dHRvbi10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvZG9tL2RvbSc7XG5AdXNlICdAbWF0ZXJpYWwvZWxldmF0aW9uL21peGlucycgYXMgZWxldmF0aW9uLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICdAbWF0ZXJpYWwvc2hhcGUvbWl4aW5zJyBhcyBzaGFwZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5AdXNlICdAbWF0ZXJpYWwvdG91Y2gtdGFyZ2V0L3ZhcmlhYmxlcycgYXMgdG91Y2gtdGFyZ2V0LXZhcmlhYmxlcztcbkB1c2UgJ0BtYXRlcmlhbC90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi9kaWFsb2ctY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLXRoZW1lJztcbkB1c2UgJy4vdmFyaWFibGVzJztcblxuQG1peGluIHN0YXRpYy1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC8vIHByZXR0aWVyLWlnbm9yZVxuICBAaW5jbHVkZSBlbGV2YXRpb24tbWl4aW5zLm92ZXJsYXktY29tbW9uKCRxdWVyeSk7IC8vIENPUFlCQVJBX0NPTU1FTlRfVEhJU19MSU5FXG5cbiAgLy8gcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgZGlhbG9nXG5cbiAgLm1kYy1kaWFsb2csXG4gIC5tZGMtZGlhbG9nX19zY3JpbSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kaWFsb2cge1xuICAgIC8vIE5vdGU6IHRoZSB0b3AgcGFkZGluZyBpcyBvbmx5IDIwcHggZm9yIGRpYWxvZ3Mgd2l0aG91dCB0aXRsZXM7IHNlZSBiZWxvdyBmb3Igb3ZlcnJpZGUuXG4gICAgQGluY2x1ZGUgY29udGVudC1wYWRkaW5nKDIwcHgsIDI0cHgsIDIwcHgsIDI0cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBtaW4td2lkdGgodmFyaWFibGVzLiRtaW4td2lkdGgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBtYXgtd2lkdGgodmFyaWFibGVzLiRtYXgtd2lkdGgsIHZhcmlhYmxlcy4kbWFyZ2luLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgbWF4LWhlaWdodChudWxsLCB2YXJpYWJsZXMuJG1hcmdpbiwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIFVzZSBgZGlzcGxheTogbm9uZWAgaW5zdGVhZCBvZiBgdmlzaWJpbGl0eTogaGlkZGVuYCB0byBhdm9pZCByZWNhbGN1bGF0aW5nIGxheW91dCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkLlxuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICR6LWluZGV4OiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIGRpYWxvZy1jdXN0b20tcHJvcGVydGllcy4kei1pbmRleCxcbiAgICAgICAgdmFyaWFibGVzLiR6LWluZGV4XG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoei1pbmRleCwgJHotaW5kZXgpO1xuICAgIH1cblxuICAgICYubWRjLWRpYWxvZy0tZnVsbHNjcmVlbiB7XG4gICAgICBAaW5jbHVkZSBfZnVsbHNjcmVlbi1kaWFsb2ctc2l6ZSgkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuXG4gICAgJi5tZGMtZGlhbG9nX19zY3JpbS0taGlkZGVuIHtcbiAgICAgIC5tZGMtZGlhbG9nX19zY3JpbSB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nX19zY3JpbSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB6LWluZGV4OiAtMTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIHdyYXBwZXIgZWxlbWVudCBpcyBuZWVkZWQgdG8gbWFrZSBtYXgtaGVpZ2h0IHdvcmsgaW4gSUUgMTEuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcGhpbGlwd2FsdG9uL2ZsZXhidWdzL2lzc3Vlcy8yMTZcbiAgLm1kYy1kaWFsb2dfX2NvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93OyAvLyBJRSAxMVxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOyAvLyBFbnN1cmUgU2FmYXJpIGNlbnRlcnMgdGhlIGRpYWxvZyAoYmVjYXVzZSBpdCB0cmVhdHMgdGhlIGNvbnRhaW5lcidzIHdpZHRoIG9kZGx5KVxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAvLyBUaGlzIGVsZW1lbnQgaXMgbmVjZXNzYXJ5IGZvciBJRSAxMSBhbmQgbmVlZHMgdG8gaGF2ZSBgaGVpZ2h0OiAxMDAlYC5cbiAgICAgIC8vIExldCBjbGlja3Mgb24gZWxlbWVudCBmYWxsIHRocm91Z2ggdG8gc2NyaW0gZWxlbWVudCB1bmRlcm5lYXRoLlxuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kaWFsb2dfX3N1cmZhY2Uge1xuICAgIEBpbmNsdWRlIGVsZXZhdGlvbi1taXhpbnMub3ZlcmxheS1zdXJmYWNlLXBvc2l0aW9uKCRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBlbGV2YXRpb24tbWl4aW5zLm92ZXJsYXktZGltZW5zaW9ucygxMDAlLCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBmbGV4LWdyb3c6IDA7IC8vIElFIDExXG4gICAgICBmbGV4LXNocmluazogMDsgLy8gSUUgMTFcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7IC8vIElFIDExXG4gICAgICBtYXgtaGVpZ2h0OiAxMDAlOyAvLyBJRSAxMVxuICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87IC8vIE92ZXJyaWRlIGZyb20gYC5tZGMtZGlhbG9nX19jb250YWluZXJgLlxuICAgICAgLy8gSUUgMTE6IE90aGVyd2lzZSwgc2Nyb2xsaW5nIGNvbnRlbnQgaW4gYG1kYy1kaWFsb2dfX2NvbnRlbnRgIG92ZXJmbG93cy5cbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZG9tLmZvcmNlZC1jb2xvcnMtbW9kZSB7XG4gICAgICAgIC8vIENvbG9yZWQgb3V0bGluZSBpcyB1c2VkIGZvciBIQ00gaW5zdGVhZCBvZiB0cmFuc3BhcmVudCBib3JkZXJcbiAgICAgICAgLy8gYmVsb3cgdG8gcHJldmVudCBzY3JvbGxpbmcgY29udGVudCBvdmVyZmxvdy5cbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHdpbmRvd1RleHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGRvbS50cmFuc3BhcmVudC1ib3JkZXIoJGJvcmRlci13aWR0aDogMnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICAvLyBQcmV2ZW50IElFMTEgZnJvbSByZW5kZXJpbmcgdGhpcyBlbGVtZW50LCBiZWNhdXNlIGl0IGNhdXNlcyBzY3JvbGxpbmdcbiAgICAgICAgLy8gY29udGVudCB0byBvdmVyZmxvdy5cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpLFxuICAgICAgICAgIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSB7XG4gICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nX190aXRsZSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgJHRvcDogNDBweCxcbiAgICAgICRkaXNwbGF5OiBibG9jayxcbiAgICAgICRsaW5lSGVpZ2h0OiBudWxsLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBtYXJnaW46IDAgMCAxcHg7XG4gICAgICBwYWRkaW5nOiAwIDI0cHggdmFyaWFibGVzLiR0aXRsZS1ib3R0b20tcGFkZGluZztcblxuICAgICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nLS1zY3JvbGxhYmxlIC5tZGMtZGlhbG9nX190aXRsZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDFweDtcbiAgICAgIC8vIEFkanVzdCBib3R0b20gcGFkZGluZyB0byBtYWtlIHRpdGxlIGhlaWdodCBhbGlnbiB0byBzcGVjIHdoZW4gZGl2aWRlciBpcyBwcmVzZW50LlxuICAgICAgLy8gKFRpdGxlcyBmb3IgYWxlcnQgZGlhbG9ncyB3L28gZGl2aWRlcnMgYWxpZ24gYmFzZWQgb24gdGV4dCBiYXNlbGluZS4gQWxsIHNwZWMgdmFsdWVzIGFyZSBkaXZpc2libGUgYnkgNC4pXG4gICAgICBwYWRkaW5nLWJvdHRvbTogdmFyaWFibGVzLiR0aXRsZS1ib3R0b20tcGFkZGluZyArIDZweDtcbiAgICB9XG4gIH1cblxuICAubWRjLWRpYWxvZy0tZnVsbHNjcmVlbiB7XG4gICAgLm1kYy1kaWFsb2dfX2hlYWRlciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgcGFkZGluZzogMCB2YXJpYWJsZXMuJGhlYWRlci1zaWRlLXBhZGRpbmdcbiAgICAgICAgICB2YXJpYWJsZXMuJHRpdGxlLWJvdHRvbS1wYWRkaW5nO1xuICAgICAgICB6LWluZGV4OiAxO1xuXG4gICAgICAgIEBpbmNsdWRlIGRvbS5mb3JjZWQtY29sb3JzLW1vZGUoJGV4Y2x1ZGUtaWUxMTogdHJ1ZSkge1xuICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IENhbnZhc1RleHQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBfbW9kYWwtaGVhZGVyKFxuICAgICAgICAgICRjbG9zZS1pY29uLXBhZGRpbmc6IHZhcmlhYmxlcy4kY2xvc2UtaWNvbi1wYWRkaW5nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1kaWFsb2dfX3RpdGxlIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tZGMtZGlhbG9nLS1zY3JvbGxhYmxlIC5tZGMtZGlhbG9nX190aXRsZSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtZGlhbG9nX19jbG9zZSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICB0b3A6IDVweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1kYy1kaWFsb2ctLXNjcm9sbGFibGUgLm1kYy1kaWFsb2dfX2FjdGlvbnMge1xuICAgICAgLy8gSWYgZnVsbC1zY3JlZW4gZGlhbG9nIGlzIHNjcm9sbGFibGUsIHRoZSBzY3JvbGwgZGl2aWRlciBvdmVyIHRoZSBhY3Rpb25cbiAgICAgIC8vIGJ1dHRvbnMgKGkuZS4gdGhlIFwiZm9vdGVyXCIpIHNob3VsZCBvbmx5IGJlIHZpc2libGUgd2hlbiB0aGUgY29udGVudCBpc1xuICAgICAgLy8gXCJjdXQgb2ZmXCIgYnkgdGhlIGZvb3Rlci4gVG8gdG9nZ2xlIHRoaXMgZGl2aWRlciwgd2Ugb3ZlcnJpZGUgdGhlXG4gICAgICAvLyBzdHlsaW5nIHNldCBieSB0aGUgbWRjLWRpYWxvZy0tc2Nyb2xsYWJsZSBjbGFzcywgYW5kIGluc3RlYWQgcmVseSBvblxuICAgICAgLy8gdGhlIG1kYy1kaWFsb2ctc2Nyb2xsLWRpdmlkZXItZm9vdGVyIGNsYXNzIHRvIGRldGVybWluZSB3aGVuIHRoZVxuICAgICAgLy8gYm9yZGVyLXRvcCBzaG91bGQgYmUgdmlzaWJsZS5cbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgQGluY2x1ZGUgZG9tLmZvcmNlZC1jb2xvcnMtbW9kZSgkZXhjbHVkZS1pZTExOiB0cnVlKSB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogQ2FudmFzVGV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nX19jb250ZW50IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIH1cblxuICAgIC8vIFRoZSBjb250ZW50IGVsZW1lbnQgYWxyZWFkeSBoYXMgdG9wL2JvdHRvbSBwYWRkaW5nLCBzbyB3ZSBuZWVkIHRvIHN1cHByZXNzIG1hcmdpbnMgb24gaXRzIGZpcnN0L2xhc3QgY2hpbGRyZW4uXG4gICAgPiA6Zmlyc3QtY2hpbGQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGUgY29udGVudCBlbGVtZW50IGFscmVhZHkgaGFzIHRvcC9ib3R0b20gcGFkZGluZywgc28gd2UgbmVlZCB0byBzdXBwcmVzcyBtYXJnaW5zIG9uIGl0cyBmaXJzdC9sYXN0IGNoaWxkcmVuLlxuICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWRpYWxvZ19fdGl0bGUgKyAubWRjLWRpYWxvZ19fY29udGVudCxcbiAgLm1kYy1kaWFsb2dfX2hlYWRlciArIC5tZGMtZGlhbG9nX19jb250ZW50IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgLy8gRWxpbWluYXRlIHBhZGRpbmcgdG8gYnJpbmcgYXMgY2xvc2UgdG8gc3BlYyBhcyBwb3NzaWJsZSwgcmVseWluZyBvbiB0aXRsZSBwYWRkaW5nLlxuICAgICAgLy8gKFNwZWMgc2VlbXMgaW5jb25zaXN0ZW50IFJFIHRpdGxlL2JvZHkgc3BhY2luZyBvbiBhbGVydCB2cy4gc2ltcGxlIHZhcmlhbnRzLilcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nLS1zY3JvbGxhYmxlIC5tZGMtZGlhbG9nX190aXRsZSArIC5tZGMtZGlhbG9nX19jb250ZW50IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgLy8gUmVkdWNlIGFuZCBlcXVhbGl6ZSB2ZXJ0aWNhbCBwYWRkaW5ncyB3aGVuIHNjcm9sbGFibGUgZGl2aWRlcnMgYXJlIHByZXNlbnRcbiAgICAgIC8vIChOb3RlOiB0aGlzIGlzIGludGVudGlvbmFsbHkgYWZ0ZXIgdGl0bGUgKyBjb250ZW50IHRvIHRha2UgcHJlY2VkZW5jZSlcbiAgICAgIHBhZGRpbmctdG9wOiA4cHg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogOHB4O1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nX19jb250ZW50IC5tZGMtZGVwcmVjYXRlZC1saXN0OmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAvLyBPdmVycmlkZSBkZWZhdWx0IC5tZGMtZGVwcmVjYXRlZC1saXN0IHBhZGRpbmcgZm9yIGNvbnRlbnQgY29uc2lzdGluZyBleGNsdXNpdmVseSBvZiBhIE1EQyBMaXN0XG4gICAgICBwYWRkaW5nOiA2cHggMCAwOyAvLyBUb3AgcGFkZGluZyBiYWxhbmNlcyB3aXRoIHRpdGxlIGhlaWdodFxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nLS1zY3JvbGxhYmxlXG4gICAgLm1kYy1kaWFsb2dfX2NvbnRlbnRcbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdDpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgLy8gT3ZlcnJpZGUgZGVmYXVsdCAubWRjLWRlcHJlY2F0ZWQtbGlzdCBwYWRkaW5nIGZvciBjb250ZW50IGNvbnNpc3RpbmcgZXhjbHVzaXZlbHkgb2YgYSBNREMgTGlzdFxuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG4gIH1cblxuICAubWRjLWRpYWxvZ19fYWN0aW9ucyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIG1pbi1oZWlnaHQ6IDUycHg7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBwYWRkaW5nOiB2YXJpYWJsZXMuJGFjdGlvbnMtcGFkZGluZztcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIEBpbmNsdWRlIGRvbS5mb3JjZWQtY29sb3JzLW1vZGUoJGV4Y2x1ZGUtaWUxMTogdHJ1ZSkge1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiBDYW52YXNUZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtZGlhbG9nLS1zdGFja2VkICYge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nX19idXR0b24ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChtYXJnaW4sIGxlZnQsIDhweCk7XG4gICAgfVxuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChtYXJnaW4sIGxlZnQsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7IC8vIFByZXZlbnQgbG9uZyB0ZXh0IGZyb20gb3ZlcmZsb3dpbmcgcGFyZW50IGVsZW1lbnQgaW4gSUUgMTFcbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1kaWFsb2ctLXN0YWNrZWQgJjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nLS1vcGVuLFxuICAubWRjLWRpYWxvZy0tb3BlbmluZyxcbiAgLm1kYy1kaWFsb2ctLWNsb3Npbmcge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nLS1vcGVuaW5nIHtcbiAgICAubWRjLWRpYWxvZ19fc2NyaW0ge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxNTBtcyBsaW5lYXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1kaWFsb2dfX2NvbnRhaW5lciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDc1bXMgbGluZWFyLFxuICAgICAgICAgIGFuaW1hdGlvbi1mdW5jdGlvbnMuZW50ZXIodHJhbnNmb3JtLCAxNTBtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kaWFsb2ctLWNsb3Npbmcge1xuICAgIC5tZGMtZGlhbG9nX19zY3JpbSxcbiAgICAubWRjLWRpYWxvZ19fY29udGFpbmVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgNzVtcyBsaW5lYXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1kaWFsb2dfX2NvbnRhaW5lciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICAvLyBEaWFsb2cgY29udGFpbmVyIHNjYWxlcyB1cCB3aGlsZSBvcGVuaW5nLCBidXQgc2hvdWxkIHJlbWFpbiBzY2FsZWQgdXAgd2hpbGUgY2xvc2luZ1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kaWFsb2ctLW9wZW4ge1xuICAgIC5tZGMtZGlhbG9nX19zY3JpbSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtZGlhbG9nX19jb250YWluZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWRjLWRpYWxvZ19fc3VyZmFjZS1zY3JpbS0tc2hvd24ge1xuICAgICAgLm1kYy1kaWFsb2dfX3N1cmZhY2Utc2NyaW0ge1xuICAgICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubWRjLWRpYWxvZ19fc3VyZmFjZS1zY3JpbS0taGlkaW5nIHtcbiAgICAgIC5tZGMtZGlhbG9nX19zdXJmYWNlLXNjcmltIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDc1bXMgbGluZWFyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tZGMtZGlhbG9nX19zdXJmYWNlLXNjcmltLS1zaG93aW5nIHtcbiAgICAgIC5tZGMtZGlhbG9nX19zdXJmYWNlLXNjcmltIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDE1MG1zIGxpbmVhcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nX19zdXJmYWNlLXNjcmltIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAubWRjLWRpYWxvZ19fc3VyZmFjZS1zY3JpbS0tc2hvd24gJixcbiAgICAubWRjLWRpYWxvZ19fc3VyZmFjZS1zY3JpbS0tc2hvd2luZyAmLFxuICAgIC5tZGMtZGlhbG9nX19zdXJmYWNlLXNjcmltLS1oaWRpbmcgJiB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBwb3N0Y3NzLWJlbS1saW50ZXI6IGVuZFxuXG4gIC8vIENsYXNzIGFwcGxpZWQgdG8gYm9keSB3aGlsZSBkaWFsb2cgaXMgb3BlbiwgdG8gcHJldmVudCBzY3JvbGxpbmcgYmVoaW5kIHRoZSBkaWFsb2dcbiAgLm1kYy1kaWFsb2ctc2Nyb2xsLWxvY2sge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGlhbG9nLS1uby1jb250ZW50LXBhZGRpbmcge1xuICAgIC5tZGMtZGlhbG9nX19jb250ZW50IHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kaWFsb2ctLXNoZWV0IHtcbiAgICAubWRjLWRpYWxvZ19fY2xvc2Uge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgcmlnaHQ6IHZhcmlhYmxlcy4kc2hlZXQtY2xvc2UtaWNvbi1yaWdodDtcbiAgICAgICAgdG9wOiB2YXJpYWJsZXMuJHNoZWV0LWNsb3NlLWljb24tdG9wO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIC8vIEN1c3RvbWVycyBjYW4gY3JlYXRlIHRoZWlyIHN0YWNraW5nIGNvbnRleHQgaW4gZGlhbG9nIGNvbnRlbnQgdXNpbmdcbiAgICAgICAgLy8gYW55IHdheSBvZiBjcmVhdGVpbmcgc3RhY2tpbmcgY29udGV4dC4gRm9yIGV4YW1wbGUgd2l0aFxuICAgICAgICAvLyAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgLy8gICB6LWluZGV4OiAwO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY29yZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZGlhbG9nIHtcbiAgICBAaW5jbHVkZSBjb250YWluZXItZmlsbC1jb2xvcihzdXJmYWNlLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgc2NyaW0tY29sb3IodmFyaWFibGVzLiRzY3JpbS1jb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHRpdGxlLWluay1jb2xvcih2YXJpYWJsZXMuJHRpdGxlLWluay1jb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGNvbnRlbnQtaW5rLWNvbG9yKHZhcmlhYmxlcy4kY29udGVudC1pbmstY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBzY3JvbGwtZGl2aWRlci1jb2xvcihcbiAgICAgIHZhcmlhYmxlcy4kc2Nyb2xsLWRpdmlkZXItY29sb3IsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgc2hhcGUtcmFkaXVzKHZhcmlhYmxlcy4kc2hhcGUtcmFkaXVzLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICAubWRjLWRpYWxvZ19fc3VyZmFjZSB7XG4gICAgQGluY2x1ZGUgZWxldmF0aW9uLW1peGlucy5lbGV2YXRpb24oMjQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtZGlhbG9nX190aXRsZSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50eXBvZ3JhcGh5KGhlYWRsaW5lNiwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1kaWFsb2dfX2NvbnRlbnQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShib2R5MSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLy8gRm9yIGdvL3NveS1jaGVja3MvcmV3cml0ZS1jc3NcbiAgLm1kYy1kaWFsb2dfX3RpdGxlLWljb24ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAvKiogSG9vayBmb3IgdGhlbWluZyBBUEkuICovXG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3RhdGljLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBjb250YWluZXItZmlsbC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1kaWFsb2dfX3N1cmZhY2Uge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3AoYmFja2dyb3VuZC1jb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjcmltLWNvbG9yKFxuICAkY29sb3IsXG4gICRvcGFjaXR5OiB2YXJpYWJsZXMuJHNjcmltLW9wYWNpdHksXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWRpYWxvZ19fc2NyaW0ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodGhlbWUtY29sb3IucHJvcC12YWx1ZSgkY29sb3IpLCAkb3BhY2l0eSk7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kaWFsb2dfX3N1cmZhY2Utc2NyaW0ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodGhlbWUtY29sb3IucHJvcC12YWx1ZSgkY29sb3IpLCAkb3BhY2l0eSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aXRsZS1pbmstY29sb3IoXG4gICRjb2xvcixcbiAgJG9wYWNpdHk6IHZhcmlhYmxlcy4kdGl0bGUtaW5rLW9wYWNpdHksXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWRpYWxvZ19fdGl0bGUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIGNvbG9yOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUoJGNvbG9yKSwgJG9wYWNpdHkpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY29udGVudC1pbmstY29sb3IoXG4gICRjb2xvcixcbiAgJG9wYWNpdHk6IHZhcmlhYmxlcy4kY29udGVudC1pbmstb3BhY2l0eSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtZGlhbG9nX19jb250ZW50IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBjb2xvcjogcmdiYSh0aGVtZS1jb2xvci5wcm9wLXZhbHVlKCRjb2xvciksICRvcGFjaXR5KTtcbiAgICB9XG4gIH1cblxuICAubWRjLWRpYWxvZ19fY2xvc2Uge1xuICAgIEBpbmNsdWRlIGljb24tYnV0dG9uLXRoZW1lLmlua19jb2xvcigkY29sb3I6ICRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBjb250ZW50LXBhZGRpbmcoXG4gICRwYWRkaW5nLXRvcCxcbiAgJHBhZGRpbmctcmlnaHQsXG4gICRwYWRkaW5nLWJvdHRvbSxcbiAgJHBhZGRpbmctbGVmdCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1kaWFsb2dfX2NvbnRlbnQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBwYWRkaW5nOiAkcGFkZGluZy10b3AgJHBhZGRpbmctcmlnaHQgJHBhZGRpbmctYm90dG9tICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3JvbGwtZGl2aWRlci1jb2xvcihcbiAgJGNvbG9yLFxuICAkb3BhY2l0eTogdmFyaWFibGVzLiRzY3JvbGwtZGl2aWRlci1vcGFjaXR5LFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgJi5tZGMtZGlhbG9nLS1zY3JvbGxhYmxlIC5tZGMtZGlhbG9nX190aXRsZSxcbiAgJi5tZGMtZGlhbG9nLS1zY3JvbGxhYmxlIC5tZGMtZGlhbG9nX19hY3Rpb25zLFxuICAmLm1kYy1kaWFsb2ctLXNjcm9sbGFibGUubWRjLWRpYWxvZy1zY3JvbGwtZGl2aWRlci1mb290ZXJcbiAgICAubWRjLWRpYWxvZ19fYWN0aW9ucyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUoJGNvbG9yKSwgJG9wYWNpdHkpO1xuICAgIH1cbiAgfVxuXG4gICYubWRjLWRpYWxvZy0tc2Nyb2xsYWJsZSAubWRjLWRpYWxvZ19fdGl0bGUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKHRoZW1lLWNvbG9yLnByb3AtdmFsdWUoJGNvbG9yKSwgJG9wYWNpdHkpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICAmLm1kYy1kaWFsb2ctc2Nyb2xsLWRpdmlkZXItaGVhZGVyLm1kYy1kaWFsb2ctLWZ1bGxzY3JlZW5cbiAgICAubWRjLWRpYWxvZ19faGVhZGVyIHtcbiAgICBAaW5jbHVkZSBlbGV2YXRpb24tbWl4aW5zLmVsZXZhdGlvbigyLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuQG1peGluIHNoYXBlLXJhZGl1cyhcbiAgJHJhZGl1cyxcbiAgJHJ0bC1yZWZsZXhpdmU6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLWRpYWxvZ19fc3VyZmFjZSB7XG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cygkcmFkaXVzLCAkcnRsLXJlZmxleGl2ZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBtaW4td2lkdGgoJG1pbi13aWR0aCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZGlhbG9nX19zdXJmYWNlIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgbWluLXdpZHRoOiAkbWluLXdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF4LXdpZHRoKCRtYXgtd2lkdGgsICRtYXJnaW4sICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJG1heC1zaXplLWNhbGMtZXhwcjogY2FsYygxMDB2dyAtICN7JG1hcmdpbiAqIDJ9KTtcblxuICAubWRjLWRpYWxvZ19fc3VyZmFjZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpZiAkbWF4LXdpZHRoIHtcbiAgICAgICAgJG1heC13aWR0aC1icmVha3BvaW50OiAkbWF4LXdpZHRoICsgKCRtYXJnaW4gKiAyKTtcblxuICAgICAgICAvLyBGaXQgc251Z2x5IHdpdGhpbiB0aGUgdmlld3BvcnQgYXQgc21hbGxlciBzY3JlZW4gc2l6ZXMuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4LXdpZHRoLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICBtYXgtd2lkdGg6ICRtYXgtc2l6ZS1jYWxjLWV4cHI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmNlIHRoZSBzY3JlZW4gZ2V0cyBiaWcgZW5vdWdoLCBhcHBseSBhIGZpeGVkIG1heGltdW0gd2lkdGguXG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWF4LXdpZHRoLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBtYXgtd2lkdGg6ICRtYXgtc2l6ZS1jYWxjLWV4cHI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXgtaGVpZ2h0KCRtYXgtaGVpZ2h0LCAkbWFyZ2luLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRtYXgtc2l6ZS1jYWxjLWV4cHI6IGNhbGMoMTAwJSAtICN7JG1hcmdpbiAqIDJ9KTtcblxuICAubWRjLWRpYWxvZ19fc3VyZmFjZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpZiAkbWF4LWhlaWdodCB7XG4gICAgICAgICRtYXgtaGVpZ2h0LWJyZWFrcG9pbnQ6ICRtYXgtaGVpZ2h0ICsgKCRtYXJnaW4gKiAyKTtcblxuICAgICAgICAvLyBGaXQgc251Z2x5IHdpdGhpbiB0aGUgdmlld3BvcnQgYXQgc21hbGxlciBzY3JlZW4gc2l6ZXMuXG4gICAgICAgIEBtZWRpYSAobWF4LWhlaWdodDogJG1heC1oZWlnaHQtYnJlYWtwb2ludCkge1xuICAgICAgICAgIG1heC1oZWlnaHQ6ICRtYXgtc2l6ZS1jYWxjLWV4cHI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmNlIHRoZSBzY3JlZW4gZ2V0cyBiaWcgZW5vdWdoLCBhcHBseSBhIGZpeGVkIG1heGltdW0gaGVpZ2h0LlxuICAgICAgICBAbWVkaWEgKG1pbi1oZWlnaHQ6ICRtYXgtaGVpZ2h0LWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiAkbWF4LWhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIG1heC1oZWlnaHQ6ICRtYXgtc2l6ZS1jYWxjLWV4cHI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVGFyZ2V0IElFIDExLlxuICBAbWVkaWEgYWxsIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuICAgIC8vIE9uIElFIDExLCBpZiBzdXJmYWNlIGhlaWdodCBpcyBmaXhlZCBhbmQgY29udGFpbmVyIGhlaWdodCBpcyAxMDAlLFxuICAgIC8vIHNjcm9sbGluZyBjb250ZW50IG92ZXJmbG93cy4gU28sIHJlc2V0IGhlaWdodCBpZiBzdXJmYWNlIGhlaWdodFxuICAgIC8vIGlzIGZpeGVkLlxuICAgIC5tZGMtZGlhbG9nX19jb250YWluZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgKi9cbiAgICAgICAgLy8gRGlzYWJsZSBzdHlsZWxpbnQgaGVyZSwgYXMgbmVzdGluZyBkZXB0aCA+IDMgaXMgcmVxdWlyZWQgdG9cbiAgICAgICAgLy8gd29yayBhcm91bmQgSUUgMTEuXG4gICAgICAgIEBpZiAkbWF4LWhlaWdodCB7XG4gICAgICAgICAgJG1heC1oZWlnaHQtYnJlYWtwb2ludDogJG1heC1oZWlnaHQgKyAoJG1hcmdpbiAqIDIpO1xuXG4gICAgICAgICAgQG1lZGlhIChtaW4taGVpZ2h0OiAkbWF4LWhlaWdodC1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSovXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEFwcGxpZWQgdG8gZGlhbG9ncyB0aGF0IGhhdmUgYnV0dG9ucyB3aXRoIGFuIGluY3JlYXNlZCB0b3VjaCB0YXJnZXQuXG5AbWl4aW4gd2l0aC10b3VjaC10YXJnZXQoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkdG91Y2gtdGFyZ2V0LW1hcmdpbjogbWF0aC5kaXYoXG4gICAgdG91Y2gtdGFyZ2V0LXZhcmlhYmxlcy4kaGVpZ2h0IC0gYnV0dG9uLXRoZW1lLiRoZWlnaHQsXG4gICAgMlxuICApO1xuICAkdmVydGljYWwtcGFkZGluZzogbWF0aC5tYXgoXG4gICAgMCxcbiAgICB2YXJpYWJsZXMuJGFjdGlvbnMtcGFkZGluZyAtICR0b3VjaC10YXJnZXQtbWFyZ2luXG4gICk7XG5cbiAgLy8gQnV0dG9ucyB3aXRoIGFuIGluY3JlYXNlZCB0b3VjaCB0YXJnZXQgaGF2ZSBhZGRlZCB2ZXJ0aWNhbCBtYXJnaW4sIHNvXG4gIC8vIGRlY3JlYXNlIHRoZSBhY3Rpb25zIGVsZW1lbnQgcGFkZGluZyB0byBjb21wZW5zYXRlLlxuICAubWRjLWRpYWxvZ19fYWN0aW9ucyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkdmVydGljYWwtcGFkZGluZztcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkdmVydGljYWwtcGFkZGluZztcblxuICAgICAgLy8gVGhlIGJlbG93IHN0eWxlcyBvdmVycmlkZSB0aGUgZGVmYXVsdCBidXR0b24gdG91Y2ggdGFyZ2V0IHZhbHVlcyxcbiAgICAgIC8vIHdoaWNoIG90aGVyd2lzZSBjYXVzZSBgbWRjLWRpYWxvZ19fc3VyZmFjZWAgdG8gc2Nyb2xsIHVubm5lY2Vzc2FyaWx5XG4gICAgICAvLyBpbiBJRSAxMS5cbiAgICAgIC5tZGMtYnV0dG9uX190b3VjaCB7XG4gICAgICAgIHRvcDogLSR0b3VjaC10YXJnZXQtbWFyZ2luOyAvLyBJRSAxMVxuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7IC8vIElFIDExXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBEZWZpbmVzIGRpYWxvZyBwb3NpdGlvbiBvbiB0aGUgc2NyZWVuLlxuLy8vIERpYWxvZyBwb3NpdGlvbiBjYW4gYmUgY3VzdG9taXNlZCBhY3Jvc3MgYm90aCB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBheGlzLlxuLy8vIElmIG9ubHkgb25lIGF4aXMgaXMgc3BlY2lmaWVkIGRpYWxvZyBpcyBjZW50ZXJlZCBhY3Jvc3MgdGhlIHNlY29uZCBvbmUuXG4vLy8gT25seSBvbmUgdmFsdWUgY2FuIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBheGlzIGF0IHRoZSB0aW1lLiBGb3IgZXhhbXBsZVxuLy8vIGRpYWxvZyBjYW4gbm90IGhhdmUgYm90aCAkdG9wIGFuZCAkYm90dG9tIHNwZWNpZmllZCBiZWNhdXNlIGl0IHdpbGwgY29uZmxpY3Rcbi8vLyB3aXRoIHNpemUgcmVsYXRlZCBtaXhpbnMuIFVzZSBgbWluLXdpZHRoYCwgYG1heC13aWR0aGAgYW5kIGBtYXgtaGVpZ2h0YFxuLy8vIHRvIGNvbnRyb2wgdGhlIGRpYWxvZyBzaXplLlxuLy8vIEBwYXJhbSB7TWFwfSAkcG9zaXRpb24tbWFwIC0gRGlhbG9nIHBvc2l0aW9uIHNwZWNpZmllZCBhcyBtYXAgd2l0aCBrZXlzXG4vLy8gICAgIHt0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHR9XG5AbWl4aW4gcG9zaXRpb24oJHBvc2l0aW9uLW1hcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkdG9wOiBtYXAuZ2V0KCRwb3NpdGlvbi1tYXAsIHRvcCk7XG4gICRyaWdodDogbWFwLmdldCgkcG9zaXRpb24tbWFwLCByaWdodCk7XG4gICRib3R0b206IG1hcC5nZXQoJHBvc2l0aW9uLW1hcCwgYm90dG9tKTtcbiAgJGxlZnQ6IG1hcC5nZXQoJHBvc2l0aW9uLW1hcCwgbGVmdCk7XG5cbiAgQGlmICgkdG9wICE9IG51bGwgYW5kICRib3R0b20gIT0gbnVsbCkge1xuICAgIEBlcnJvciBcIlRvcCBhbmQgQm90dG9uIHByb3BlcnRpZXMgY2FuIG5vdCBiZSB1c2VkIHNpbXVsdGFuZW91c2x5LiBVc2UgXCIgK1xuICAgICAgICAgICBcImBtaW4td2lkdGhgLCBgbWF4LXdpZHRoYCBhbmQgYG1heC1oZWlnaHRgIHRvIGNvbnRyb2wgZGlhbG9nIHNpemUuXCI7XG4gIH1cbiAgQGlmICgkcmlnaHQgIT0gbnVsbCBhbmQgJGxlZnQgIT0gbnVsbCkge1xuICAgIEBlcnJvciBcIlJpZ2h0IGFuZCBMZWZ0IHByb3BlcnRpZXMgY2FuIG5vdCBiZSB1c2VkIHNpbXVsdGFuZW91c2x5LiBVc2UgXCIgK1xuICAgICAgICAgICBcImBtaW4td2lkdGhgLCBgbWF4LXdpZHRoYCBhbmQgYG1heC1oZWlnaHRgIHRvIGNvbnRyb2wgZGlhbG9nIHNpemUuXCI7XG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpZiAoJHRvcCAhPSBudWxsKSB7XG4gICAgICAubWRjLWRpYWxvZ19fY29udGFpbmVyIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiAkdG9wO1xuICAgICAgfVxuICAgIH1cbiAgICBAaWYgKCRib3R0b20gIT0gbnVsbCkge1xuICAgICAgLm1kYy1kaWFsb2dfX2NvbnRhaW5lciB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRib3R0b207XG4gICAgICB9XG4gICAgfVxuICAgIEBpZiAoJHJpZ2h0ICE9IG51bGwpIHtcbiAgICAgICYubWRjLWRpYWxvZyB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRyaWdodDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGlmICgkbGVmdCAhPSBudWxsKSB7XG4gICAgICAmLm1kYy1kaWFsb2cge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJGxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBEZWZpbmVzIGRpYWxvZyBiYXNlIHotaW5kZXguXG4vLy8gVGhpcyBtaXhpbiBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGRpYWxvZyBiYXNlIHotaW5kZXggdG8gbWFrZSBpdCBjb21wYXRpYmxlXG4vLy8gd2l0aCBvdGhlciBmcmFtZXdvcmtzIHVzZWQgb24gdGhlIHNhbWUgcGFnZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggLSBEaWFsb2cgei1pbmRleCB2YWx1ZS5cbkBtaXhpbiB6LWluZGV4KCR6LWluZGV4LCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAmLm1kYy1kaWFsb2cge1xuICAgICAgei1pbmRleDogJHotaW5kZXg7XG4gICAgfVxuICB9XG59XG5cbi8vLyBUaGlzIG1peGluIGNhbiBiZSB1c2VkIHRvIGhpZGUgdGhlIGZ1bGxzY3JlZW4gZGlhbG9nIGhlYWRlciB3aGVuIHRoZSBkaWFsb2dcbi8vLyBpcyBhIHN0YW5kYXJkIG1vZGFsIGFuZCBub3QgeWV0IGZ1bGxzY3JlZW4gaW4gWC1zbWFsbCBzaXplcy5cbkBtaXhpbiBmdWxsc2NyZWVuLWRpYWxvZy1oaWRlLW1vZGFsLWhlYWRlcigkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLy8gTm9uLWZ1bGxzY3JlZW4tZGlhbG9nIHNpemVzXG4gIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkge1xuICAgICYubWRjLWRpYWxvZy0tZnVsbHNjcmVlbiB7XG4gICAgICAubWRjLWRpYWxvZ19faGVhZGVyIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5tZGMtZGlhbG9nX19jb250ZW50IHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMjRweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2Z1bGxzY3JlZW4tZGlhbG9nLXNpemUoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAubWRjLWRpYWxvZ19fc3VyZmFjZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIFJlc2V0IHRoZSBtYXgtd2lkdGggc28gdGhlIGRlZmF1bHQgZGlhbG9nIHNpemluZyBkb2Vzbid0IGludGVyZmVyZSB3aXRoXG4gICAgICAvLyB0aGUgZnVsbC1zY3JlZW4gZGlhbG9nIHNpemluZy5cbiAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBNZWRpdW0gc2NyZWVuc1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5NjBweCkge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgbWF4LWhlaWdodDogNTYwcHg7XG4gICAgICAgIHdpZHRoOiA1NjBweDtcbiAgICAgICAgQGluY2x1ZGUgX21vZGFsLWhlYWRlcihcbiAgICAgICAgICAkY2xvc2UtaWNvbi1wYWRkaW5nOiB2YXJpYWJsZXMuJGNsb3NlLWljb24tcGFkZGluZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNtYWxsIHNjcmVlbnNcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzIwcHgpIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICRtYXgtc21hbGwtaGVpZ2h0OiA1NjBweDtcbiAgICAgICAgJG1heC1zbWFsbC13aWR0aDogNTYwcHg7XG4gICAgICAgICRtaW4taG9yaXpvbnRhbC1zbWFsbC1tYXJnaW46IDU2cHg7XG4gICAgICAgICRtaW4tdmVydGljYWwtc21hbGwtbWFyZ2luOiA4MHB4O1xuICAgICAgICBAaW5jbHVkZSBfZmx1aWQtc2l6ZS1jYWxjKFxuICAgICAgICAgICR2ZXJ0aWNhbC1tYXJnaW46ICRtaW4tdmVydGljYWwtc21hbGwtbWFyZ2luLFxuICAgICAgICAgICRtYXgtaGVpZ2h0OiAkbWF4LXNtYWxsLWhlaWdodCxcbiAgICAgICAgICAkaG9yaXpvbnRhbC1tYXJnaW46ICRtaW4taG9yaXpvbnRhbC1zbWFsbC1tYXJnaW4sXG4gICAgICAgICAgJG1heC13aWR0aDogJG1heC1zbWFsbC13aWR0aFxuICAgICAgICApO1xuICAgICAgICBAaW5jbHVkZSBfbW9kYWwtaGVhZGVyKFxuICAgICAgICAgICRjbG9zZS1pY29uLXBhZGRpbmc6IHZhcmlhYmxlcy4kY2xvc2UtaWNvbi1wYWRkaW5nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gWC1TbWFsbCBTY3JlZW5zIChob3Jpem9udGFsKVxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3MjBweCkgYW5kIChtYXgtaGVpZ2h0OiA0MDBweCkge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgLy8gVXNlIDEwMCUgaW5zdGVhZCBvZiB2dy92aCBzbyB0aGUgdXJsIGJhciBpcyB0YWtlbiBpbnRvIGFjY291bnQgb25cbiAgICAgICAgLy8gbW9iaWxlLlxuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMHZoO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3O1xuICAgICAgICB3aWR0aDogMTAwdnc7XG4gICAgICAgIEBpbmNsdWRlIF9mdWxsc2NyZWVuLWhlYWRlcihcbiAgICAgICAgICAkY2xvc2UtaWNvbi1wYWRkaW5nOiB2YXJpYWJsZXMuJGNsb3NlLWljb24tcGFkZGluZyxcbiAgICAgICAgICAkdGl0bGUtc2lkZS1wYWRkaW5nOiB2YXJpYWJsZXMuJHRpdGxlLXNpZGUtcGFkZGluZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cygwLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuXG4gICAgLy8gWC1TbWFsbCBTY3JlZW5zXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICAvLyBVc2UgMTAwJSBpbnN0ZWFkIG9mIHZ3L3ZoIHNvIHRoZSB1cmwgYmFyIGlzIHRha2VuIGludG8gYWNjb3VudCBvblxuICAgICAgICAvLyBtb2JpbGUuXG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwdmg7XG4gICAgICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgICAgIHdpZHRoOiAxMDB2dztcbiAgICAgICAgQGluY2x1ZGUgX2Z1bGxzY3JlZW4taGVhZGVyKFxuICAgICAgICAgICRjbG9zZS1pY29uLXBhZGRpbmc6IHZhcmlhYmxlcy4kY2xvc2UtaWNvbi1wYWRkaW5nLFxuICAgICAgICAgICR0aXRsZS1zaWRlLXBhZGRpbmc6IHZhcmlhYmxlcy4kdGl0bGUtc2lkZS1wYWRkaW5nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzaGFwZS1taXhpbnMucmFkaXVzKDAsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG5cbiAgICAvLyBMYXJnZSB0byBYLUxhcmdlIHNjcmVlbnNcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICRtaW4taG9yaXpvbnRhbC1tYXJnaW46IDIwMHB4O1xuICAgICAgICB3aWR0aDogY2FsYygxMDB2dyAtICN7JG1pbi1ob3Jpem9udGFsLW1hcmdpbiAqIDJ9KTtcbiAgICAgICAgQGluY2x1ZGUgX21vZGFsLWhlYWRlcihcbiAgICAgICAgICAkY2xvc2UtaWNvbi1wYWRkaW5nOiB2YXJpYWJsZXMuJGNsb3NlLWljb24tcGFkZGluZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gRGVmaW5lcyBzdHlsaW5nIHRvIHNwZWNpZnkgYSBmbHVpZCBkaWFsb2cgc2l6ZSB3aGlsZSBtYWludGFpbmluZyBhIHNwZWNpZmljXG4vLy8gdmVydGljYWwgYW5kIGhvcml6b250YWwgbWFyZ2luLlxuLy8vIEBwYXJhbSAge051bWJlcn0gJHZlcnRpY2FsLW1hcmdpblxuLy8vIEBwYXJhbSAge051bWJlcn0gJG1heC1oZWlnaHRcbi8vLyBAcGFyYW0gIHtOdW1iZXJ9ICRob3Jpem9udGFsLW1hcmdpblxuLy8vIEBwYXJhbSAge051bWJlcn0gJG1heC13aWR0aFxuQG1peGluIF9mbHVpZC1zaXplLWNhbGMoXG4gICR2ZXJ0aWNhbC1tYXJnaW4sXG4gICRtYXgtaGVpZ2h0LFxuICAkaG9yaXpvbnRhbC1tYXJnaW4sXG4gICRtYXgtd2lkdGhcbikge1xuICAkbWF4LXdpZHRoLWNhbGMtZXhwcjogY2FsYygxMDB2dyAtICN7JGhvcml6b250YWwtbWFyZ2luICogMn0pO1xuICAkbWF4LXdpZHRoLWJyZWFrcG9pbnQ6ICRtYXgtd2lkdGggKyAoJGhvcml6b250YWwtbWFyZ2luICogMik7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgtd2lkdGgtYnJlYWtwb2ludCkge1xuICAgIHdpZHRoOiAkbWF4LXdpZHRoLWNhbGMtZXhwcjtcbiAgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogJG1heC13aWR0aC1icmVha3BvaW50KSB7XG4gICAgd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxuICAkbWF4LWhlaWdodC1jYWxjLWV4cHI6IGNhbGMoMTAwdmggLSAjeyR2ZXJ0aWNhbC1tYXJnaW4gKiAyfSk7XG4gICRtYXgtaGVpZ2h0LWJyZWFrcG9pbnQ6ICRtYXgtaGVpZ2h0ICsgKCR2ZXJ0aWNhbC1tYXJnaW4gKiAyKTtcblxuICBAbWVkaWEgKG1heC1oZWlnaHQ6ICRtYXgtaGVpZ2h0LWJyZWFrcG9pbnQpIHtcbiAgICBtYXgtaGVpZ2h0OiAkbWF4LWhlaWdodC1jYWxjLWV4cHI7XG4gIH1cbiAgQG1lZGlhIChtaW4taGVpZ2h0OiAkbWF4LWhlaWdodC1icmVha3BvaW50KSB7XG4gICAgbWF4LWhlaWdodDogJG1heC1oZWlnaHQ7XG4gIH1cbn1cblxuLy8vIERlZmluZXMgc3R5bGVzIGZvciB0aGUgaGVhZGVyIGJhciB3aGVuIGEgZGlhbG9nIHRha2VzIHVwIHRoZSBmdWxsIHNjcmVlbi5cbi8vLyBAcGFyYW0gIHtOdW1iZXJ9ICRjbG9zZS1pY29uLXBhZGRpbmcgLSBQYWRkaW5nIG9uIGNsb3NlIGljb24gYnV0dG9uLlxuLy8vIEBwYXJhbSAge051bWJlcn0gJHRpdGxlLXNpZGUtcGFkZGluZyAtIFNwYWNlIGJldHdlZW4gdGhlIGVkZ2Ugb2YgdGhlIGNsb3NlXG4vLy8gICBpY29uIGJ1dHRvbiBhbmQgZWRnZSBvZiB0aGUgdGl0bGUuXG5AbWl4aW4gX2Z1bGxzY3JlZW4taGVhZGVyKCRjbG9zZS1pY29uLXBhZGRpbmcsICR0aXRsZS1zaWRlLXBhZGRpbmcpIHtcbiAgLm1kYy1kaWFsb2dfX2Nsb3NlIHtcbiAgICBvcmRlcjogLTE7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkobGVmdCwgLSN7JGNsb3NlLWljb24tcGFkZGluZ30pO1xuICB9XG4gIC5tZGMtZGlhbG9nX19oZWFkZXIge1xuICAgIHBhZGRpbmc6IDAgdmFyaWFibGVzLiRmdWxsc2NyZWVuLWhlYWRlci1zaWRlLXBhZGRpbmdcbiAgICAgIHZhcmlhYmxlcy4kdGl0bGUtYm90dG9tLXBhZGRpbmc7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICB9XG4gIC5tZGMtZGlhbG9nX190aXRsZSB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoXG4gICAgICBtYXJnaW4tbGVmdCxcbiAgICAgICdjYWxjKHRpdGxlIC0gMiAqIGNsb3NlKScsXG4gICAgICAkcmVwbGFjZTogKHRpdGxlOiAkdGl0bGUtc2lkZS1wYWRkaW5nLCBjbG9zZTogJGNsb3NlLWljb24tcGFkZGluZylcbiAgICApO1xuICB9XG59XG5cbi8vLyBEZWZpbmVzIHN0eWxlcyBmb3IgdGhlIGhlYWRlciBiYXIgd2hlbiBhIGRpYWxvZyBpcyBtb2RhbC5cbi8vLyBAcGFyYW0gIHtOdW1iZXJ9ICRjbG9zZS1pY29uLXBhZGRpbmcgLSBQYWRkaW5nIG9uIGNsb3NlIGljb24gYnV0dG9uLlxuQG1peGluIF9tb2RhbC1oZWFkZXIoJGNsb3NlLWljb24tcGFkZGluZykge1xuICAubWRjLWRpYWxvZ19fY2xvc2Uge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KHJpZ2h0LCAtI3skY2xvc2UtaWNvbi1wYWRkaW5nfSk7XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4kc2NyaW0tY29sb3I6IG9uLXN1cmZhY2UgIWRlZmF1bHQ7XG4kdGl0bGUtaW5rLWNvbG9yOiBvbi1zdXJmYWNlICFkZWZhdWx0O1xuJGNvbnRlbnQtaW5rLWNvbG9yOiBvbi1zdXJmYWNlICFkZWZhdWx0O1xuJHNjcm9sbC1kaXZpZGVyLWNvbG9yOiBvbi1zdXJmYWNlICFkZWZhdWx0O1xuXG4kc2NyaW0tb3BhY2l0eTogMC4zMiAhZGVmYXVsdDtcbiR0aXRsZS1pbmstb3BhY2l0eTogMC44NyAhZGVmYXVsdDtcbiRjb250ZW50LWluay1vcGFjaXR5OiAwLjYgIWRlZmF1bHQ7XG4kc2Nyb2xsLWRpdmlkZXItb3BhY2l0eTogMC4xMiAhZGVmYXVsdDtcblxuJG1pbi13aWR0aDogMjgwcHggIWRlZmF1bHQ7XG4kbWF4LXdpZHRoOiA1NjBweCAhZGVmYXVsdDtcbiRtYXJnaW46IDE2cHggIWRlZmF1bHQ7XG4kc2hhcGUtcmFkaXVzOiBtZWRpdW0gIWRlZmF1bHQ7XG4kdGl0bGUtYm90dG9tLXBhZGRpbmc6IDlweCAhZGVmYXVsdDtcbiRhY3Rpb25zLXBhZGRpbmc6IDhweCAhZGVmYXVsdDtcbiRoZWFkZXItc2lkZS1wYWRkaW5nOiAyNHB4ICFkZWZhdWx0O1xuXG4kY2xvc2UtaWNvbi1wYWRkaW5nOiAxMnB4ICFkZWZhdWx0O1xuJHRpdGxlLXNpZGUtcGFkZGluZzogMTZweCAhZGVmYXVsdDtcbiRmdWxsc2NyZWVuLWhlYWRlci1zaWRlLXBhZGRpbmc6IDE2cHggIWRlZmF1bHQ7XG5cbiRzaGVldC1jbG9zZS1pY29uLXJpZ2h0OiAxMnB4ICFkZWZhdWx0O1xuJHNoZWV0LWNsb3NlLWljb24tdG9wOiA5cHggIWRlZmF1bHQ7XG5cbiR6LWluZGV4OiA3ICFkZWZhdWx0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/