/* Web
------------------------- */
/* stylelint-disable declaration-no-important */
/* stylelint-disable selector-max-compound-selectors, selector-max-universal */
/* stylelint-enable selector-max-compound-selectors, selector-max-universal */
/* Components
------------------------- */
.cmp-formbuilder {
  max-width: 45rem;
  margin: 5rem auto; }
  .cmp-formbuilder .grecaptcha-badge {
    visibility: hidden; }
  .cmp-formbuilder .cmp-form-text__label,
  .cmp-formbuilder .cmp-form-options__legend,
  .cmp-formbuilder .cmp-form-options__legend--required,
  .cmp-formbuilder .cmp-form-options__label {
    font-size: 0.75rem;
    color: #727272;
    margin-bottom: 0; }
  .cmp-formbuilder .cmp-form-options__legend,
  .cmp-formbuilder .cmp-form-options__legend--required {
    margin-bottom: 0.9375rem; }
  .cmp-formbuilder .cmp-form-text__text {
    font-size: 1rem;
    padding: 0.5rem 0.625rem;
    color: #000000; }
  .cmp-formbuilder .cmp-form-text,
  .cmp-formbuilder .cmp-form-options {
    margin-bottom: 1.5625rem; }
  .cmp-formbuilder .cmp-form-options--checkbox .cmp-form-option,
  .cmp-formbuilder .cmp-form-options--radio .cmp-form-option {
    margin-left: 1.25rem; }
  .cmp-formbuilder .cmp-form-text__label {
    margin-bottom: 0.625rem; }
  .cmp-formbuilder .cmp-form-options__field--drop-down {
    color: #000000; }
  .cmp-formbuilder .cmp-form-text__textarea {
    min-height: 11.875rem; }
  .cmp-formbuilder .cmp-form-text__help-block,
  .cmp-formbuilder .cmp-form-options__help-block,
  .cmp-formbuilder .cmp-form-text__error-block,
  .cmp-formbuilder .cmp-form-options__error-block,
  .cmp-formbuilder .cmp-form-text__error-invalid {
    font-size: 0.875rem;
    padding-left: 0.6875rem;
    display: none; }
  .cmp-formbuilder .form-builder__divider {
    background-color: #F2F2F2;
    border-color: #D6D6D6;
    border: 1px solid;
    margin: 0.625rem 0;
    padding: 0.625rem;
    display: block; }
  .cmp-formbuilder .wider-par {
    width: 102%; }
  .cmp-formbuilder .cmp-marketing-permission .cmp-form-option {
    margin-left: 0; }
  .cmp-formbuilder .cmp-marketing-permission .icon-info {
    text-decoration: none;
    background: #0068B4;
    color: #FFFFFF;
    border-radius: 0.625rem;
    padding: 0 0 0 0.5rem;
    width: 1.25rem;
    height: 1.25rem;
    font-family: "Book Antiqua", serif;
    font-size: 0.875rem; }
  .cmp-formbuilder .cmp-form-text__error-invalid {
    color: #DD0028; }

/* eslint-disable */
.cmp-form-text__validation-error .cmp-form-text__error-block,
.cmp-form-text__validation-error .cmp-form-options__error-block {
  display: block; }

.cmp-form-text__validation-error .cmp-form-option label::before {
  border: 1px solid #DD0028; }

.cmp-form-text__validation-error .cmp-form-text__textarea {
  border-color: #DD0028; }

.cmp-form-text__validation-error .cmp-form-options__field {
  background-image: url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' width='128px' height='79px' viewBox='0 0 128 78.9' fill='%23DD0028' stroke='none'%3E %3Cpolygon points='128,14.9 64,78.9 0,14.9 14.9,0 64,49.1 113.1,0 '/%3E %3C/svg%3E");
  border-bottom-color: #DD0028; }

.cmp-form-text__format-error .cmp-form-text__error-invalid {
  display: block; }

.cmp-form-text__format-error.cmp-form-text--underline .cmp-form-text__text,
.cmp-form-text__format-error.cmp-form-text--underline .cmp-form-options__field,
.cmp-form-text__validation-error.cmp-form-text--underline .cmp-form-text__text,
.cmp-form-text__validation-error.cmp-form-text--underline .cmp-form-options__field {
  border-bottom-color: #DD0028; }

/* eslint-enable */
.cmp-marketing-permission--overlay {
  padding: 1.875rem;
  height: 90vh;
  width: calc(100vw - 30px); }

.cmp-marketing-permission--overlay-iframe {
  overflow: hidden;
  height: 80vh;
  width: 100vh; }
  .cmp-marketing-permission--overlay-iframe iframe {
    border: 0;
    height: 90vh;
    width: calc(100vw - 40px); }

/* Component - Overlay HTML
------------------------- */
.cmp-overlay-html {
  padding: 0.625rem 1.25rem; }

/* stylelint-disable declaration-no-important, max-nesting-depth, selector-no-qualifying-type, selector-max-compound-selectors, selector-max-class */
.cmp-marketo-form {
  max-width: 45rem;
  margin: 5rem auto; }
  .cmp-marketo-form.is-loading {
    min-height: 6rem;
    position: relative; }
    .cmp-marketo-form.is-loading::after {
      z-index: 10;
      background: url("data:image/svg+xml;charset=utf-8,%3Csvg width='200px' height='200px' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='xMidYMid' class='lds-liquid' style='background: none;'%3E %3Ccircle cx='50' cy='50' fill='%23FFFFFF' r='40' stroke='%23DEDEDE' stroke-width='5'/%3E %3Cpath d='M 15 50 Q 32.5 54.2049 50 50 Q 67.5 45.7951 85 50 A 35 35 0 0 1 15 50' fill='%23C9C9C9'%3E %3Canimate attributeName='d' calcMode='spline' values='M15 50 Q32.5 40 50 50 Q67.5 60 85 50 A35 35 0 0 1 15 50;M15 50 Q32.5 60 50 50 Q67.5 40 85 50 A35 35 0 0 1 15 50;M15 50 Q32.5 40 50 50 Q67.5 60 85 50 A35 35 0 0 1 15 50' keyTimes='0;0.5;1' dur='1.9' keySplines='0.5 0 0.5 1;0.5 0 0.5 1' begin='0s' repeatCount='indefinite'/%3E %3C/path%3E %3C/svg%3E") center center/4rem no-repeat;
      background-color: rgba(255, 255, 255, 0.7);
      -webkit-box-sizing: border-box;
              box-sizing: border-box;
      content: "";
      display: block;
      height: 100%;
      left: 0;
      position: absolute;
      top: 0;
      width: 100%; }
  .cmp-marketo-form .mktoForm {
    width: 100% !important;
    padding: 0.9375rem; }
    .cmp-marketo-form .mktoForm .mktoField {
      width: 100% !important;
      float: none;
      font-size: 1rem;
      line-height: 1.5;
      /* stylelint-disable selector-max-specificity */ }
      .cmp-marketo-form .mktoForm .mktoField.mktoTextField, .cmp-marketo-form .mktoForm .mktoField.mktoEmailField, .cmp-marketo-form .mktoForm .mktoField.mktoNumberField {
        border: 1px solid #C9C9C9;
        background-color: transparent;
        border-left-color: transparent;
        border-right-color: transparent;
        border-top-color: transparent;
        padding: 0.5rem 0.625rem; }
        .cmp-marketo-form .mktoForm .mktoField.mktoTextField:focus, .cmp-marketo-form .mktoForm .mktoField.mktoEmailField:focus, .cmp-marketo-form .mktoForm .mktoField.mktoNumberField:focus {
          z-index: 1;
          border-bottom-color: #0068B4;
          outline: none; }
    .cmp-marketo-form .mktoForm .mktoAsterix {
      color: #727272; }
    .cmp-marketo-form .mktoForm textarea.mktoField {
      border: 1px solid #C9C9C9;
      min-height: 11.875rem;
      padding: 0.5rem 0.625rem; }
      .cmp-marketo-form .mktoForm textarea.mktoField:focus {
        z-index: 1;
        border-color: #0068B4;
        outline: none; }
    .cmp-marketo-form .mktoForm select.mktoField {
      padding: 0.625rem 0.1875rem;
      border: 1px solid #C9C9C9;
      border-left-color: transparent;
      border-right-color: transparent;
      border-top-color: transparent; }
      .cmp-marketo-form .mktoForm select.mktoField:focus {
        z-index: 1;
        border-bottom-color: #0068B4;
        outline: none; }
    .cmp-marketo-form .mktoForm .mktoFormCol {
      margin-bottom: 1.5625rem !important; }
    .cmp-marketo-form .mktoForm .mktoLabel {
      width: auto !important;
      font-weight: normal !important;
      font-size: 0.75rem;
      color: #727272;
      margin: 0 0 0.625rem;
      padding: 0 1rem 0 0;
      font-family: "Grundfos", Lucida Grande, Tahoma, Geneva, Verdana, sans-serif; }
    .cmp-marketo-form .mktoForm .mktoFieldWrap,
    .cmp-marketo-form .mktoForm .mktoGutter,
    .cmp-marketo-form .mktoForm .mktoFormCol {
      float: none; }
    .cmp-marketo-form .mktoForm .mktoButtonWrap {
      margin-left: 0 !important; }
      .cmp-marketo-form .mktoForm .mktoButtonWrap .mktoButton {
        font-size: 1rem;
        line-height: 1.375;
        margin-bottom: 1.25rem;
        -webkit-appearance: none;
           -moz-appearance: none;
                appearance: none;
        background-color: #0068B4;
        border: 1px solid transparent;
        border-radius: 0;
        color: #FFFFFF;
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex;
        font-weight: bold;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        letter-spacing: 0.025em;
        min-width: 11.25rem;
        padding: 0.9375rem;
        position: relative;
        text-transform: uppercase;
        text-decoration: none;
        -webkit-transition: background-color 0.3s ease;
        transition: background-color 0.3s ease;
        -webkit-font-smoothing: antialiased;
        background-image: none; }
        .cmp-marketo-form .mktoForm .mktoButtonWrap .mktoButton::after {
          background-color: rgba(255, 255, 255, 0.1);
          content: "";
          height: 100%;
          left: 0;
          position: absolute;
          top: 0;
          width: 100%;
          -webkit-transform: scaleX(0);
                  transform: scaleX(0);
          -webkit-transform-origin: left center;
                  transform-origin: left center;
          -webkit-transition: -webkit-transform 0.2s ease-out;
          transition: -webkit-transform 0.2s ease-out;
          transition: transform 0.2s ease-out;
          transition: transform 0.2s ease-out, -webkit-transform 0.2s ease-out;
          will-change: transform; }
        .cmp-marketo-form .mktoForm .mktoButtonWrap .mktoButton:active {
          background-color: #0068B4;
          background-image: none; }
  .cmp-marketo-form.cmp-overlay__body {
    margin: 0.9375rem 0; }

/* styleline-enable */

@media only screen and (min-width: 360px) {
    .cmp-marketing-permission--overlay {
      height: 80vh; }
    .cmp-marketing-permission--overlay-iframe {
      height: 80vh; }
      .cmp-marketing-permission--overlay-iframe iframe {
        height: 80vh;
        width: 100%; } }

@media only screen and (min-width: 480px) {
    .cmp-marketing-permission--overlay {
      height: 80vh; }
      .cmp-marketo-form.cmp-overlay__body .mktoForm {
        width: 28.125rem !important; } }

@media only screen and (min-width: 768px) {
    .cmp-marketing-permission--overlay {
      height: 80vh;
      width: 640px; }
          .cmp-marketo-form .mktoForm .mktoButtonWrap .mktoButton {
            font-size: 1rem;
            line-height: 1.375; }
      .cmp-marketo-form.cmp-overlay__body .mktoForm {
        width: 34.375rem !important; } }

@media only screen and (min-width: 1024px) {
    .cmp-marketing-permission--overlay {
      height: 80vh;
      width: 768px; }
          .cmp-marketo-form .mktoForm .mktoButtonWrap .mktoButton {
            font-size: 1rem;
            line-height: 1.5; } }

@media only screen and (min-width: 1200px) {
    .cmp-marketing-permission--overlay {
      height: 80vh;
      width: 1024px; } }


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL21hcmtldGluZ2F1dG9tYXRpb24uc2NzcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVRlc3Qvbm9kZV9tb2R1bGVzL2dydW5kZm9zLWFlbS1iYXNlL2FlbS1iYXNlLXVpL2NsaWVudC9zdHlsZXMvdG9vbHMvX3QtaGVscGVycy5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvY29tcG9uZW50cy9fY21wLWZvcm1idWlsZGVyLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1UZXN0L25vZGVfbW9kdWxlcy9ncnVuZGZvcy1hZW0tYmFzZS9hZW0tYmFzZS11aS9jbGllbnQvc3R5bGVzL3NldHRpbmdzL19zLWNvbG9ycy5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvY29tcG9uZW50cy9fY21wLW92ZXJsYXktaHRtbC5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvY29tcG9uZW50cy9fY21wLW1hcmtldG8tZm9ybS5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9ub2RlX21vZHVsZXMvZ3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy90b29scy9fdC1kZWNvcmF0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1UZXN0L25vZGVfbW9kdWxlcy9ncnVuZGZvcy1hZW0tYmFzZS9hZW0tYmFzZS11aS9jbGllbnQvc3R5bGVzL3Rvb2xzL190LWxheW91dC5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9ub2RlX21vZHVsZXMvZ3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy9zZXR0aW5ncy9fcy1sYXlvdXQuc2NzcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVRlc3Qvbm9kZV9tb2R1bGVzL2dydW5kZm9zLWFlbS1iYXNlL2FlbS1iYXNlLXVpL2NsaWVudC9zdHlsZXMvdG9vbHMvX3QtdHlwb2dyYXBoeS5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tVGVzdC9ub2RlX21vZHVsZXMvZ3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy9zZXR0aW5ncy9fcy10eXBvZ3JhcGh5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1UZXN0L25vZGVfbW9kdWxlcy9ncnVuZGZvcy1hZW0tYmFzZS9hZW0tYmFzZS11aS9jbGllbnQvc3R5bGVzL3NldHRpbmdzL19zLXRyYW5zaXRpb25zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1UZXN0L25vZGVfbW9kdWxlcy9ncnVuZGZvcy1hZW0tYmFzZS9hZW0tYmFzZS11aS9jbGllbnQvc3R5bGVzL3Rvb2xzL190LW1lZGlhLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7NEJBQzRCO0FDTDVCLGdEQUFnRDtBQXNNaEQsK0VBQStFO0FBbUIvRSw4RUFBOEU7QUN6TjlFOzRCQUM0QjtBQ0Q1QjtFQUNDLGlCRmdDOEM7RUUvQjlDLGtCQUF1QixFQTRGdkI7RUE5RkQ7SUFLRSxtQkFBa0IsRUFDbEI7RUFORjs7OztJQVlFLG1CRnFCNkM7SUVwQjdDLGVDc0JrQjtJRHJCbEIsaUJBQWdCLEVBQ2hCO0VBZkY7O0lBbUJFLHlCRmM2QyxFRWI3QztFQXBCRjtJQXVCRSxnQkZVNkM7SUVUN0MseUJGUzZDO0lFUjdDLGVDbUJnQixFRGxCaEI7RUExQkY7O0lBOEJFLHlCRkc2QyxFRUY3QztFQS9CRjs7SUFtQ0UscUJGRjZDLEVFRzdDO0VBcENGO0lBdUNFLHdCRk42QyxFRU83QztFQXhDRjtJQTJDRSxlQ0NnQixFREFoQjtFQTVDRjtJQStDRSxzQkZkNkMsRUVlN0M7RUFoREY7Ozs7O0lBdURFLG9CRnRCNkM7SUV1QjdDLHdCRnZCNkM7SUV3QjdDLGNBQWEsRUFDYjtFQTFERjtJQTZERSwwQkNyQmtCO0lEc0JsQixzQkN4QmdCO0lEeUJoQixrQkFBaUI7SUFDakIsbUJBQW9CO0lBQ3BCLGtCRmhDNkM7SUVpQzdDLGVBQWMsRUFDZDtFQW5FRjtJQXNFRSxZQUFXLEVBQ1g7RUF2RUY7SUEyRUcsZUFBYyxFQUNkO0VBNUVIO0lBK0VHLHNCQUFxQjtJQUNyQixvQkMvRGU7SURnRWYsZUNsQ2U7SURtQ2Ysd0JGakQ0QztJRWtENUMsc0JGbEQ0QztJRW1ENUMsZUZuRDRDO0lFb0Q1QyxnQkZwRDRDO0lFcUQ1QyxtQ0FBa0M7SUFDbEMsb0JGdEQ0QyxFRXVENUM7RUF4Rkg7SUE0RkUsZUNoRWdCLEVEaUVoQjs7QUFHRixvQkFBb0I7QUFFcEI7O0VBR0UsZUFBYyxFQUNkOztBQUpGO0VBUUcsMEJDOUVlLEVEK0VmOztBQVRIO0VBYUUsc0JDbkZnQixFRG9GaEI7O0FBZEY7RUFpQkUscVZBQW9WO0VBQ3BWLDZCQ3hGZ0IsRUR5RmhCOztBQUdGO0VBRUUsZUFBYyxFQUNkOztBQUdGOzs7O0VBSUUsNkJDdEdnQixFRHVHaEI7O0FBR0YsbUJBQW1CO0FBRW5CO0VBQ0Msa0JGeEc4QztFRXlHOUMsYUFBWTtFQUNaLDBCQUF5QixFQXdCekI7O0FBRUQ7RUFDQyxpQkFBZ0I7RUFDaEIsYUFBWTtFQUNaLGFBQVksRUFnQlo7RUFuQkQ7SUFVRSxVQUFTO0lBQ1QsYUFBWTtJQUNaLDBCQUF5QixFQU16Qjs7QUV2TEY7NEJBQzRCO0FBRTVCO0VBQ0MsMEJKNkI4QyxFSTVCOUM7O0FDSkQscUpBQXFKO0FBRXJKO0VBTUMsaUJMd0I4QztFS3ZCOUMsa0JBQXVCLEVBNEl2QjtFQW5KRDtJQ2tIQyxpQk5wRjhDO0lNcUY5QyxtQkFBa0IsRUQvR2pCO0lDaUhEO01DZ0JBLFlDZEs7TUZBSiw4eEJBQTRHO01BRzNHLDJDSDlFZTtNR2lGaEIsK0JBQXNCO2NBQXRCLHVCQUFzQjtNQUN0QixZQUFXO01BQ1gsZUFBYztNQUNkLGFBQVk7TUFDWixRQUFPO01BQ1AsbUJBQWtCO01BQ2xCLE9BQU07TUFDTixZQUFXLEVBQ1g7RURySUY7SUFVRSx1QkFBcUI7SUFDckIsbUJMbUI2QyxFS3VHN0M7SUFySUY7TUFjRyx1QkFBcUI7TUFDckIsWUFBVztNQUNYLGdCTGM0QztNS2I1QyxpQkFBZ0I7TUFFaEIsZ0RBQWdELEVBa0JoRDtNQXJDSDtRQXdCSSwwQkZVaUI7UUVUakIsOEJBQTZCO1FBQzdCLCtCQUE4QjtRQUM5QixnQ0FBK0I7UUFDL0IsOEJBQTZCO1FBQzdCLHlCTEMyQyxFS00zQztRQXBDSjtVRXFJQyxXQ2ZJO1VIckZBLDZCRm5CYTtVRW9CYixjQUFhLEVBQ2I7SUFuQ0w7TUF3Q0csZUZSaUIsRUVTakI7SUF6Q0g7TUE0Q0csMEJGVmtCO01FV2xCLHNCTGY0QztNS2dCNUMseUJMaEI0QyxFS3VCNUM7TUFyREg7UUVxSUMsV0NmSTtRSHBFRCxzQkZwQ2M7UUVxQ2QsY0FBYSxFQUNiO0lBcERKO01Bd0RHLDRCTDFCNEM7TUsyQjVDLDBCRnZCa0I7TUV3QmxCLCtCQUE4QjtNQUM5QixnQ0FBK0I7TUFDL0IsOEJBQTZCLEVBTzdCO01BbkVIO1FFcUlDLFdDZkk7UUh0REQsNkJGbERjO1FFbURkLGNBQWEsRUFDYjtJQWxFSjtNQXNFRyxvQ0FBb0MsRUFDcEM7SUF2RUg7TUEwRUcsdUJBQXFCO01BQ3JCLCtCQUE2QjtNQUM3QixtQkw5QzRDO01LK0M1QyxlRjdDaUI7TUU4Q2pCLHFCTGhENEM7TUtpRDVDLG9CQUF5QjtNSXpCMUIsNEVBQWtDLEVKMkJqQztJQWpGSDs7O01Bc0ZHLFlBQVcsRUFDWDtJQXZGSDtNQTBGRywwQkFBd0IsRUEwQ3hCO01BcElIO1FJeUVDLGdCVDNDOEM7UVM0QzlDLG1CQ3NDaUI7UUh0RmQsdUJQSTJDO1FLaUUzQyx5QkFBZ0I7V0FBaEIsc0JBQWdCO2dCQUFoQixpQkFBZ0I7UUFDaEIsMEJGbEZjO1FFbUZkLDhCQUE2QjtRQUM3QixpQkFBZ0I7UUFDaEIsZUZ2RGM7UUV3RGQsNEJBQW9CO1FBQXBCLDRCQUFvQjtRQUFwQixxQkFBb0I7UUFDcEIsa0JBQWlCO1FBQ2pCLHlCQUF1QjtZQUF2QixzQkFBdUI7Z0JBQXZCLHdCQUF1QjtRQUN2Qix3QkFBdUI7UUFDdkIsb0JMMUUyQztRSzJFM0MsbUJMM0UyQztRSzRFM0MsbUJBQWtCO1FBQ2xCLDBCQUF5QjtRQUN6QixzQkFBcUI7UUFDckIsK0NNckdjO1FOcUdkLHVDTXJHYztRTnNHZCxvQ0FBbUM7UUFDbkMsdUJBQXNCLEVBb0J0QjtRQW5JSjtVQWtISywyQ0Z0RWE7VUV1RWIsWUFBVztVQUNYLGFBQVk7VUFDWixRQUFPO1VBQ1AsbUJBQWtCO1VBQ2xCLE9BQU07VUFDTixZQUFXO1VBQ1gsNkJBQW9CO2tCQUFwQixxQkFBb0I7VUFDcEIsc0NBQTZCO2tCQUE3Qiw4QkFBNkI7VUFDN0Isb0RNakhnQjtVTmlIaEIsNENNakhnQjtVTmlIaEIsb0NNakhnQjtVTmlIaEIscUVNakhnQjtVTmtIaEIsdUJBQXNCLEVBQ3RCO1FBN0hMO1VBZ0lLLDBCRmxIYTtVRW1IYix1QkFBc0IsRUFDdEI7RUFsSUw7SUF3SUUsb0JBQW9CLEVBVXBCOztBQUdGLHNCQUFzQjs7QU8vR3JCO0lWK0ZEO01BTUUsYUFBWSxFQXFCYjtJQUVEO01BTUUsYUFBWSxFQWFiO01BbkJEO1FBZUcsYUFBWTtRQUNaLFlBQVcsRUFFWixFQXBCRDs7QVUxSEE7SVYrRkQ7TUFVRSxhQUFZLEVBaUJiO01HaEtEO1FBK0lJLDRCQUE2QixFQUU5QixFSGVGOztBVTFIQTtJVitGRDtNQWNFLGFBQVk7TUFDWixhQUFZLEVBWWI7VUdoS0Q7WUl5RUMsZ0JUM0M4QztZUzRDOUMsbUJDMENpQixFTGVkO01BbklKO1FBNElJLDRCQUE2QixFQUs5QixFSGVGOztBVTFIQTtJVitGRDtNQW1CRSxhQUFZO01BQ1osYUFBWSxFQU9iO1VHaEtEO1lJeUVDLGdCVDNDOEM7WVM0QzlDLGlCQzhDaUIsRUxXZCxFSDZCSDs7QVUxSEE7SVYrRkQ7TUF3QkUsYUFBWTtNQUNaLGNBQWEsRUFFZCIsImZpbGUiOiJ0YXJnZXRcXHZhdWx0LXdvcmtcXGpjcl9yb290XFxhcHBzXFxzZXR0aW5nc1xcd2NtXFxkZXNpZ25cXG1hcmtldGluZ2F1dG9tYXRpb25cXGFzc2V0c1xcbWFya2V0aW5nYXV0b21hdGlvbi11aS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcblx0XHRcdFx0XHRcdFx0XHQkcy1iYXNlLXJlc291cmNlLXBhdGg6IFwiZXRjLmNsaWVudGxpYnMvc2V0dGluZ3Mvd2NtL2Rlc2lnbi9hZW1iYXNlL2hlYWQvcmVzb3VyY2VzXCI7XG5cdFx0XHRcdFx0XHRcdFx0JHMtbWFya2V0aW5nYXV0b21hdGlvbi11aS1yZXNvdXJjZS1wYXRoOiBcImV0Yy5jbGllbnRsaWJzL3NldHRpbmdzL3djbS9kZXNpZ24vbWFya2V0aW5nYXV0b21hdGlvbi9oZWFkL3Jlc291cmNlc1wiO1xuXHRcdFx0XHRcdFx0XHRcclxuLyogV2ViXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbkBpbXBvcnQgXCJ+Z3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy9leHRlbnNpb25zXCI7XG5AaW1wb3J0IFwifmdydW5kZm9zLWFlbS1iYXNlL2FlbS1iYXNlLXVpL2NsaWVudC9zdHlsZXMvc2V0dGluZ3Mvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ+Z3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy90b29scy90b29sc1wiO1xuXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2V0dGluZ3NcIjtcbi8vQGltcG9ydCBcImVsZW1lbnRzL2VsZW1lbnRzXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9jb21wb25lbnRzXCI7XG4vL0BpbXBvcnQgXCJtb2R1bGVzL21vZHVsZXNcIjtcbiIsIi8qIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCAqL1xuLy8gVG9vbHMgLSBIZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy8gQGZ1bmN0aW9uIHQtcmVtXG4vLy8gR2V0cyBhIHNpbmdsZSBvciBzZXJpZXMgb2YgdmFsdWVzIHJlcHJlc2VudGVkIGFzIHJlbSB1bml0KHMpLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlc1x0LSBBIHNpbmdsZSwgb3Igc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgTnVtYmVycyBzcGVjaWZpZWQgdXNpbmcgYW55IHZhbGlkIHVuaXQgdHlwZS5cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVGhlIG9yaWdpbmFsIHZhbHVlKHMpIGNvbnZlcnRlZCBpbnRvIHJlbSB1bml0KHMpLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyB0LXJlbSgyZW0gMjBweCAycmVtIDIwcHgpO1xuQGZ1bmN0aW9uIHQtcmVtKCR2YWx1ZXMpIHtcblxuXHRAaWYgdHlwZS1vZigkdmFsdWVzKSA9PSBcImxpc3RcIiB7XG5cdFx0JHJlbXM6ICgpO1xuXG5cdFx0QGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuXHRcdFx0JHJlbXM6IGFwcGVuZCgkcmVtcywgdC1yZW0oJHZhbHVlKSk7XG5cdFx0fVxuXG5cdFx0QHJldHVybiAkcmVtcztcblx0fVxuXG5cdEBpZiB0eXBlLW9mKCR2YWx1ZXMpID09IFwibnVtYmVyXCIge1xuXHRcdEBpZiAkdmFsdWVzID09IDAge1xuXHRcdFx0QHJldHVybiAkdmFsdWVzO1xuXHRcdH1cblx0XHRAZWxzZSBpZiB1bml0KCR2YWx1ZXMpID09IHB4IHtcblx0XHRcdEByZXR1cm4gKCR2YWx1ZXMgLyAkcy1iYXNlLWZvbnQtc2l6ZSkgKiAxcmVtO1xuXHRcdH1cblx0fVxuXG5cdEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gTWl4aW5zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vLyBAbWl4aW4gdC1tYWludGFpbi1hc3BlY3QtcmF0aW9cbi8vLyBDcmVhdGVzIGEgbG9ja2VkIHJhdGlvIGNvbnRhaW5lciBpbiB3aGljaCB0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSBwb3NpdGlvbmVkIGFjY29yZGluZyB0byB0aGUgJGFsaWduLXggYW5kICRhbGlnbi15IGFyZ3VtZW50cyBpZiBwcm92aWRlZC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFRoZSByZWxhdGl2ZSB3aWR0aCBvZiB0aGUgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IC0gVGhlIHJlbGF0aXZlIGhlaWdodCBvZiB0aGUgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYWxpZ24teCAtIChPcHRpb25hbCkgVGhlIHJlbGF0aXZlIHggcG9zaXRpb24gd2l0aGluIHRoZSBjb250YWluZXIgb2YgdGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQsIHNob3VsZCBiZSBiZXR3ZWVuIDAgYW5kIDEuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRhbGlnbi15IC0gKE9wdGlvbmFsKSBUaGUgcmVsYXRpdmUgeSBwb3NpdGlvbiB3aXRoaW4gdGhlIGNvbnRhaW5lciBvZiB0aGUgZmlyc3QgY2hpbGQgZWxlbWVudCwgc2hvdWxkIGJlIGJldHdlZW4gMCBhbmQgMS5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gQGluY2x1ZGUgdC1tYWludGFpbi1hc3BlY3QtcmF0aW8oMTYsIDkpO1xuQG1peGluIHQtbWFpbnRhaW4tYXNwZWN0LXJhdGlvKCR3aWR0aCwgJGhlaWdodCwgJGFsaWduLXg6IG51bGwsICRhbGlnbi15OiBudWxsKSB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQmOjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0cGFkZGluZy10b3A6ICgkaGVpZ2h0IC8gJHdpZHRoKSAqIDEwMCU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cblxuXHRAaWYgKCRhbGlnbi14ICE9IG51bGwgYW5kICRhbGlnbi15ICE9IG51bGwpIHtcblxuXHRcdD4gOmZpcnN0LWNoaWxkIHtcblx0XHRcdCR4OiAkYWxpZ24teCAqIDEwMDtcblx0XHRcdCR5OiAkYWxpZ24teSAqIDEwMDtcblxuXHRcdFx0bGVmdDogJHggKiAxJTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogJHkgKiAxJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKCR4ICogLTElLCAkeSAqIC0xJSk7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdH1cbn1cblxuLy8vIEBtaXhpbiB0LWFjdGl2ZVxuLy8vIFNldHMgc3RhbmRhcmRpc2VkIHBzZXVkbyBzdGF0ZXMgZm9yIGFjY2Vzc2liaWxpdHkuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1hY3RpdmU7XG5AbWl4aW4gdC1hY3RpdmUge1xuXG5cdCY6aG92ZXIsXG5cdCY6Zm9jdXMsXG5cdCY6YWN0aXZlIHtcblx0XHRAY29udGVudDtcblx0fVxufVxuXG4vLy8gQG1peGluIHQtZmxleC1pbWFnZVxuLy8vIFNldHMgYmFzaWMgcmVzcG9uc2l2ZSBpbWFnZSBzdHlsaW5nLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy9cdEBpbmNsdWRlIHQtZmxleC1pbWFnZTtcbkBtaXhpbiB0LWZsZXgtaW1hZ2Uge1xuXHRkaXNwbGF5OiBibG9jaztcblx0bWF4LXdpZHRoOiAxMDAlO1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLy8vIEBtaXhpbiB0LWhpZGRlblxuLy8vIFNldHMgaGlkZGVuIHN0eWxlcyB3aXRob3V0IHJlbW92aW5nIHRoZSB0YXJnZXQgZWxlbWVudCBmcm9tIHRoZSByZW5kZXIgdHJlZS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vXHRAaW5jbHVkZSB0LWhpZGRlbjtcbkBtaXhpbiB0LWhpZGRlbiB7XG5cdGJvcmRlcjogMDtcblx0Y2xpcDogcmVjdCgwIDAgMCAwKTtcblx0aGVpZ2h0OiAxcHg7XG5cdG1hcmdpbjogLTFweDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR3aWR0aDogMXB4O1xufVxuXG4vLy8gQG1peGluIHQtaGlkZGVuLW1vYmlsZVxuLy8vIFNldHMgaGlkZGVuIHN0eWxlcyB3aXRob3V0IHJlbW92aW5nIHRoZSB0YXJnZXQgZWxlbWVudCBmcm9tIHRoZSByZW5kZXIgdHJlZSBmb3IgbW9iaWxlIG9ubHkuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1oaWRkZW47XG5AbWl4aW4gdC1oaWRkZW4tbW9iaWxlIHtcblxuXHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tbWF4KGxhcmdlKSB7XG5cdFx0QGluY2x1ZGUgdC1oaWRkZW47XG5cdH1cbn1cblxuLy8vIEBtaXhpbiB0LWhpZGRlbi10ZXh0XG4vLy8gU2V0cyBoaWRkZW4gdGV4dCBzdHlsZXMgd2l0aG91dCByZW1vdmluZyB0aGUgdGFyZ2V0IGVsZW1lbnQgZnJvbSB0aGUgcmVuZGVyIHRyZWUuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1oaWRkZW4tdGV4dDtcbkBtaXhpbiB0LWhpZGRlbi10ZXh0IHtcblx0Zm9udC1zaXplOiAwIWltcG9ydGFudDsgLy9OT1NPTkFSXG5cdGxpbmUtaGVpZ2h0OiAwIWltcG9ydGFudDsgLy9OT1NPTkFSXG59XG5cbkBtaXhpbiB0LWFic29sdXRlLWNlbnRlcigkdXNlM2Q6IGZhbHNlKSB7XG5cdGxlZnQ6IDUwJTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDUwJTtcblxuXHRAaWYgKCR1c2UzZCA9PSB0cnVlKSB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcblx0fVxuXHRAZWxzZSB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cdH1cbn1cblxuQG1peGluIHQtZmlsbCB7XG5cdGhlaWdodDogMTAwJTtcblx0bGVmdDogMDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdHdpZHRoOiAxMDAlO1xufVxuXG5AbWl4aW4gdC1jZW50ZXItZmlsbCB7XG5cdEBpbmNsdWRlIHQtZWRpdC1tb2RlLXBvc2l0aW9uLXJlc2V0O1xuXHRAaW5jbHVkZSB0LWZpbGw7XG5cdEBpbmNsdWRlIHQtbGF5ZXIoMSwgMSk7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG5AbWl4aW4gdC1oaWRlLW5vLWpzIHtcblxuXHQubm8tanMgJiB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufVxuXG5AbWl4aW4gdC13cmFwLXRleHQge1xuXHRoeXBoZW5zOiBhdXRvO1xuXHR3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXHR3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IC8vTk9TT05BUlxufVxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1tYXgtY29tcG91bmQtc2VsZWN0b3JzLCBzZWxlY3Rvci1tYXgtdW5pdmVyc2FsICovXG5AbWl4aW4gdC1mbGF0dGVuLWNoaWxkcmVuIHtcblxuXHQ+ICo6Zmlyc3QtY2hpbGQgeyAvL05PU09OQVJcblx0XHRtYXJnaW4tdG9wOiAwIWltcG9ydGFudDsgLy9OT1NPTkFSXG5cblx0XHQ+IFtkYXRhLWNvbXBvbmVudC1yb290XSA+ICogeyAvL05PU09OQVJcblx0XHRcdG1hcmdpbi10b3A6IDAhaW1wb3J0YW50OyAvL05PU09OQVJcblx0XHR9XG5cdH1cblxuXHQ+ICo6bGFzdC1jaGlsZCB7IC8vTk9TT05BUlxuXHRcdG1hcmdpbi1ib3R0b206IDAhaW1wb3J0YW50OyAvL05PU09OQVJcblxuXHRcdD4gW2RhdGEtY29tcG9uZW50LXJvb3RdID4gKiB7IC8vTk9TT05BUlxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMCFpbXBvcnRhbnQ7IC8vTk9TT05BUlxuXHRcdH1cblx0fVxufVxuLyogc3R5bGVsaW50LWVuYWJsZSBzZWxlY3Rvci1tYXgtY29tcG91bmQtc2VsZWN0b3JzLCBzZWxlY3Rvci1tYXgtdW5pdmVyc2FsICovXG5cbi8vIEJyb3dzZXIgU3BlY2lmaWNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiB0LWllIHtcblxuXHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSksICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSkge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbi8vIEFFTSBFZGl0IE1vZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiB0LWVkaXQtbW9kZSB7XG5cblx0LmItZWRpdC1tb2RlICYge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbkBtaXhpbiB0LWVkaXQtbW9kZS1wb3NpdGlvbi1yZXNldCB7XG5cblx0QGluY2x1ZGUgdC1lZGl0LW1vZGUge1xuXHRcdGJvdHRvbTogYXV0bztcblx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0bGVmdDogYXV0bztcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHJpZ2h0OiBhdXRvO1xuXHRcdHRvcDogYXV0bztcblx0XHR0cmFuc2Zvcm06IG5vbmU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn1cblxuLy8gUXVhbnRpdHkgUXVlcmllc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHQtbGFzdC1zaW1wbGUtc2VsZWN0b3IoJHNlbGVjdG9yKSB7XG5cdCRwYXJzZWQ6IHNlbGVjdG9yLXBhcnNlKCRzZWxlY3Rvcik7XG5cblx0QGlmIGxlbmd0aCgkcGFyc2VkKSA+IDEge1xuXHRcdEBlcnJvciBcImAjeyRzZWxlY3Rvcn1gIGNvbnRhaW5zICN7bGVuZ3RoKCRwYXJzZWQpfSBzZWxlY3RvcnMgYW5kIHRoZSBgdC1sYXN0LXNpbXBsZS1zZWxlY3RvcigpYGZ1bmN0aW9uIGFjY2VwdHMgb25seSAxLlwiO1xuXHR9XG5cdCRsYXN0LXNpbXBsZS1zZWxlY3RvcjogbnRoKG50aCgkcGFyc2VkLCAxKSwgLTEpO1xuXG5cdEByZXR1cm4gJGxhc3Qtc2ltcGxlLXNlbGVjdG9yO1xufVxuXG5AZnVuY3Rpb24gdC1idWlsZC1xdWFudGl0eS1zZWxlY3Rvcigkc2VsZWN0b3ItYXBwZW5kLCAkbGFzdC1zZWxlY3Rvcikge1xuXHQkcXVhbnRpdHktc2VsZWN0b3I6ICgpO1xuXG5cdEBlYWNoICRzIGluICYgeyAvL05PU09OQVJcblx0XHQkbGFzdC1zaW1wbGUtc2VsZWN0b3I6IFwiflwiICsgaWYoJGxhc3Qtc2VsZWN0b3IsICRsYXN0LXNlbGVjdG9yLCB0LWxhc3Qtc2ltcGxlLXNlbGVjdG9yKCRzKSk7XG5cdFx0JHNlbDogc2VsZWN0b3ItYXBwZW5kKCRzLCAkc2VsZWN0b3ItYXBwZW5kKTtcblx0XHQkc2VsMjogc2VsZWN0b3ItbmVzdCgkc2VsLCAkbGFzdC1zaW1wbGUtc2VsZWN0b3IpO1xuXHRcdCRxdWFudGl0eS1zZWxlY3RvcjogYXBwZW5kKCRxdWFudGl0eS1zZWxlY3RvciwgJHNlbCwgXCJjb21tYVwiKTtcblx0XHQkcXVhbnRpdHktc2VsZWN0b3I6IGFwcGVuZCgkcXVhbnRpdHktc2VsZWN0b3IsICRzZWwyLCBcImNvbW1hXCIpO1xuXHR9XG5cblx0QHJldHVybiAkcXVhbnRpdHktc2VsZWN0b3I7XG59XG5cbkBtaXhpbiB0LWF0LWxlYXN0KCRjb3VudCwgJHNlbGVjdG9yOiBudWxsKSB7XG5cdCRzZWxlY3Rvci1hcHBlbmQ6IFwiOm50aC1sYXN0LWNoaWxkKG4rI3skY291bnR9KVwiO1xuXG5cdEBpZiB0eXBlLW9mKCRjb3VudCkgIT0gXCJudW1iZXJcIiBvciBub3QgdW5pdGxlc3MoJGNvdW50KSBvciAkY291bnQgPCAxIHtcblx0XHRAZXJyb3IgXCJgI3skY291bnR9YCBpcyBub3QgYSB2YWxpZCBudW1iZXIgZm9yIGBhdC1sZWFzdGBcIjtcblx0fVxuXG5cdEBpZiAkc2VsZWN0b3IgIT0gbnVsbCBhbmQgKHR5cGUtb2YoJHNlbGVjdG9yKSAhPSBcInN0cmluZ1wiIG9yIGxlbmd0aCgkc2VsZWN0b3IpID4gMSkge1xuXHRcdEBlcnJvciBcImAjeyRzZWxlY3Rvcn1gIGlzIG5vdCBhIHZhbGlkIHNlbGVjdG9yIGZvciBgYXQtbGVhc3RgXCI7XG5cdH1cblxuXHQkYXQtbGVhc3Qtc2VsZWN0b3I6IHQtYnVpbGQtcXVhbnRpdHktc2VsZWN0b3IoJHNlbGVjdG9yLWFwcGVuZCwgJHNlbGVjdG9yKTtcblxuXHRAYXQtcm9vdCAjeyRhdC1sZWFzdC1zZWxlY3Rvcn0ge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbkBtaXhpbiB0LWF0LW1vc3QoJGNvdW50LCAkc2VsZWN0b3I6IG51bGwpIHtcblx0JHNlbGVjdG9yLWFwcGVuZDogXCI6bnRoLWxhc3QtY2hpbGQoLW4rI3skY291bnR9KTpmaXJzdC1jaGlsZFwiO1xuXG5cdEBpZiB0eXBlLW9mKCRjb3VudCkgIT0gXCJudW1iZXJcIiBvciBub3QgdW5pdGxlc3MoJGNvdW50KSBvciAkY291bnQgPCAxIHtcblx0XHRAZXJyb3IgXCJgI3skY291bnR9YCBpcyBub3QgYSB2YWxpZCBudW1iZXIgZm9yIGBhdC1tb3N0YC5cIjtcblx0fVxuXG5cdEBpZiAkc2VsZWN0b3IgIT0gbnVsbCBhbmQgKHR5cGUtb2YoJHNlbGVjdG9yKSAhPSBcInN0cmluZ1wiIG9yIGxlbmd0aCgkc2VsZWN0b3IpID4gMSkge1xuXHRcdEBlcnJvciBcImAjeyRzZWxlY3Rvcn1gIGlzIG5vdCBhIHZhbGlkIHNlbGVjdG9yIGZvciBgYXQtbW9zdGBcIjtcblx0fVxuXG5cdCRhdC1tb3N0LXNlbGVjdG9yOiB0LWJ1aWxkLXF1YW50aXR5LXNlbGVjdG9yKCRzZWxlY3Rvci1hcHBlbmQsICRzZWxlY3Rvcik7XG5cblx0QGF0LXJvb3QgI3skYXQtbW9zdC1zZWxlY3Rvcn0ge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbkBtaXhpbiB0LWJldHdlZW4oJGZpcnN0LCAkbGFzdCwgJHNlbGVjdG9yOiBudWxsKSB7XG5cdCRzZWxlY3Rvci1hcHBlbmQ6IFwiOm50aC1sYXN0LWNoaWxkKG4rI3skZmlyc3R9KTpudGgtbGFzdC1jaGlsZCgtbisjeyRsYXN0fSk6Zmlyc3QtY2hpbGRcIjtcblxuXHRAaWYgdHlwZS1vZigkZmlyc3QpICE9IFwibnVtYmVyXCIgb3Igbm90IHVuaXRsZXNzKCRmaXJzdCkgb3IgJGZpcnN0IDwgMSB7XG5cdFx0QGVycm9yIFwiYCN7JGZpcnN0fWAgaXMgbm90IGEgdmFsaWQgbnVtYmVyIGZvciBgYmV0d2VlbmBcIjtcblx0fVxuXG5cdEBpZiB0eXBlLW9mKCRsYXN0KSAhPSBcIm51bWJlclwiIG9yIG5vdCB1bml0bGVzcygkbGFzdCkgb3IgJGxhc3QgPCAxIHtcblx0XHRAZXJyb3IgXCJgI3skbGFzdH1gIGlzIG5vdCBhIHZhbGlkIG51bWJlciBmb3IgYGJldHdlZW5gXCI7XG5cdH1cblxuXHRAaWYgJGZpcnN0ID4gJGxhc3Qge1xuXHRcdEBlcnJvciBcIiN7JGZpcnN0fSBjYW7CtHQgYmUgbGFyZ2VyIHRoYXQgI3skbGFzdH0gZm9yIGBiZXR3ZWVuYFwiO1xuXHR9XG5cblx0QGlmICRzZWxlY3RvciAhPSBudWxsIGFuZCAodHlwZS1vZigkc2VsZWN0b3IpICE9IFwic3RyaW5nXCIgb3IgbGVuZ3RoKCRzZWxlY3RvcikgPiAxKSB7XG5cdFx0QGVycm9yIFwiYCN7JHNlbGVjdG9yfWAgaXMgbm90IGEgdmFsaWQgc2VsZWN0b3IgZm9yIGBiZXR3ZWVuYFwiO1xuXHR9XG5cblx0JGJldHdlZW4tc2VsZWN0b3I6IHQtYnVpbGQtcXVhbnRpdHktc2VsZWN0b3IoJHNlbGVjdG9yLWFwcGVuZCwgJHNlbGVjdG9yKTtcblxuXHRAYXQtcm9vdCAjeyRiZXR3ZWVuLXNlbGVjdG9yfSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuQG1peGluIHQtZXhhY3RseSgkY291bnQsICRzZWxlY3RvcjogbnVsbCkge1xuXHQkc2VsZWN0b3ItYXBwZW5kOiBcIjpudGgtbGFzdC1jaGlsZCgjeyRjb3VudH0pOmZpcnN0LWNoaWxkXCI7XG5cblx0QGlmIHR5cGUtb2YoJGNvdW50KSAhPSBcIm51bWJlclwiIG9yIG5vdCB1bml0bGVzcygkY291bnQpIG9yICRjb3VudCA8IDEge1xuXHRcdEBlcnJvciBcImAjeyRjb3VudH1gIGlzIG5vdCBhIHZhbGlkIG51bWJlciBmb3IgYGV4YWN0bHlgXCI7XG5cdH1cblxuXHRAaWYgJHNlbGVjdG9yICE9IG51bGwgYW5kICh0eXBlLW9mKCRzZWxlY3RvcikgIT0gXCJzdHJpbmdcIiBvciBsZW5ndGgoJHNlbGVjdG9yKSA+IDEpIHtcblx0XHRAZXJyb3IgXCJgI3skc2VsZWN0b3J9YCBpcyBub3QgYSB2YWxpZCBzZWxlY3RvciBmb3IgYGV4YWN0bHlgXCI7XG5cdH1cblxuXHQkZXhhY3RseS1zZWxlY3RvcjogdC1idWlsZC1xdWFudGl0eS1zZWxlY3Rvcigkc2VsZWN0b3ItYXBwZW5kLCAkc2VsZWN0b3IpO1xuXG5cdEBhdC1yb290ICN7JGV4YWN0bHktc2VsZWN0b3J9IHtcblx0XHRAY29udGVudDtcblx0fVxufVxuIiwiLyogQ29tcG9uZW50c1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5AaW1wb3J0IFwiY21wLWZvcm1idWlsZGVyXCI7XG5AaW1wb3J0IFwiY21wLW92ZXJsYXktaHRtbFwiO1xuQGltcG9ydCBcImNtcC1tYXJrZXRvLWZvcm1cIjtcblxuIiwiLmNtcC1mb3JtYnVpbGRlciB7XG5cdG1heC13aWR0aDogdC1yZW0oNzIwcHgpO1xuXHRtYXJnaW46IHQtcmVtKDgwcHggYXV0byk7XG5cblx0LmdyZWNhcHRjaGEtYmFkZ2Uge1xuXHRcdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0fVxuXG5cdC5jbXAtZm9ybS10ZXh0X19sYWJlbCxcblx0LmNtcC1mb3JtLW9wdGlvbnNfX2xlZ2VuZCxcblx0LmNtcC1mb3JtLW9wdGlvbnNfX2xlZ2VuZC0tcmVxdWlyZWQsXG5cdC5jbXAtZm9ybS1vcHRpb25zX19sYWJlbCB7XG5cdFx0Zm9udC1zaXplOiB0LXJlbSgxMnB4KTtcblx0XHRjb2xvcjogdC1jb2xvcihncmV5LCBzZWNvbmRhcnkpO1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblxuXHQuY21wLWZvcm0tb3B0aW9uc19fbGVnZW5kLFxuXHQuY21wLWZvcm0tb3B0aW9uc19fbGVnZW5kLS1yZXF1aXJlZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogdC1yZW0oMTVweCk7XG5cdH1cblxuXHQuY21wLWZvcm0tdGV4dF9fdGV4dCB7XG5cdFx0Zm9udC1zaXplOiB0LXJlbSgxNnB4KTtcblx0XHRwYWRkaW5nOiB0LXJlbSg4cHggMTBweCk7XG5cdFx0Y29sb3I6IHQtY29sb3IoYmxhY2spO1xuXHR9XG5cblx0LmNtcC1mb3JtLXRleHQsXG5cdC5jbXAtZm9ybS1vcHRpb25zIHtcblx0XHRtYXJnaW4tYm90dG9tOiB0LXJlbSgyNXB4KTtcblx0fVxuXG5cdC5jbXAtZm9ybS1vcHRpb25zLS1jaGVja2JveCAuY21wLWZvcm0tb3B0aW9uLFxuXHQuY21wLWZvcm0tb3B0aW9ucy0tcmFkaW8gLmNtcC1mb3JtLW9wdGlvbntcblx0XHRtYXJnaW4tbGVmdDogdC1yZW0oMjBweCk7XG5cdH1cblxuXHQuY21wLWZvcm0tdGV4dF9fbGFiZWwge1xuXHRcdG1hcmdpbi1ib3R0b206IHQtcmVtKDEwcHgpO1xuXHR9XG5cblx0LmNtcC1mb3JtLW9wdGlvbnNfX2ZpZWxkLS1kcm9wLWRvd24ge1xuXHRcdGNvbG9yOiB0LWNvbG9yKGJsYWNrKTtcblx0fVxuXG5cdC5jbXAtZm9ybS10ZXh0X190ZXh0YXJlYSB7XG5cdFx0bWluLWhlaWdodDogdC1yZW0oMTkwcHgpO1xuXHR9XG5cblx0LmNtcC1mb3JtLXRleHRfX2hlbHAtYmxvY2ssXG5cdC5jbXAtZm9ybS1vcHRpb25zX19oZWxwLWJsb2NrLFxuXHQuY21wLWZvcm0tdGV4dF9fZXJyb3ItYmxvY2ssXG5cdC5jbXAtZm9ybS1vcHRpb25zX19lcnJvci1ibG9jayxcblx0LmNtcC1mb3JtLXRleHRfX2Vycm9yLWludmFsaWQge1xuXHRcdGZvbnQtc2l6ZTogdC1yZW0oMTRweCk7XG5cdFx0cGFkZGluZy1sZWZ0OiB0LXJlbSgxMXB4KTtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0LmZvcm0tYnVpbGRlcl9fZGl2aWRlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdC1jb2xvcihncmV5LCBzZXB0ZW5hcnkpO1xuXHRcdGJvcmRlci1jb2xvcjogdC1jb2xvcihncmV5LCBxdWluYXJ5KTtcblx0XHRib3JkZXI6IDFweCBzb2xpZDtcblx0XHRtYXJnaW46IHQtcmVtKDEwcHggMCk7XG5cdFx0cGFkZGluZzogdC1yZW0oMTBweCk7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQud2lkZXItcGFyIHtcblx0XHR3aWR0aDogMTAyJTtcblx0fVxuXG5cdC5jbXAtbWFya2V0aW5nLXBlcm1pc3Npb24ge1xuXHRcdC5jbXAtZm9ybS1vcHRpb24ge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0fVxuXG5cdFx0Lmljb24taW5mbyB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kOiB0LWNvbG9yKGJsdWUpO1xuXHRcdFx0Y29sb3I6IHQtY29sb3Iod2hpdGUpO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogdC1yZW0oMTBweCk7XG5cdFx0XHRwYWRkaW5nOiB0LXJlbSgwIDAgMCA4cHgpO1xuXHRcdFx0d2lkdGg6IHQtcmVtKDIwcHgpO1xuXHRcdFx0aGVpZ2h0OiB0LXJlbSgyMHB4KTtcblx0XHRcdGZvbnQtZmFtaWx5OiBcIkJvb2sgQW50aXF1YVwiLCBzZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogdC1yZW0oMTRweCk7XG5cdFx0fVxuXHR9XG5cblx0LmNtcC1mb3JtLXRleHRfX2Vycm9yLWludmFsaWQge1xuXHRcdGNvbG9yOiB0LWNvbG9yKHJlZCk7XG5cdH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cblxuLmNtcC1mb3JtLXRleHRfX3ZhbGlkYXRpb24tZXJyb3Ige1xuXHQuY21wLWZvcm0tdGV4dF9fZXJyb3ItYmxvY2ssXG5cdC5jbXAtZm9ybS1vcHRpb25zX19lcnJvci1ibG9jayB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQuY21wLWZvcm0tb3B0aW9uIHtcblx0XHRsYWJlbDo6YmVmb3JlIHtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICB0LWNvbG9yKHJlZCk7XG5cdFx0fVxuXHR9XG5cblx0LmNtcC1mb3JtLXRleHRfX3RleHRhcmVhIHtcblx0XHRib3JkZXItY29sb3I6IHQtY29sb3IocmVkKTtcblx0fVxuXG5cdC5jbXAtZm9ybS1vcHRpb25zX19maWVsZCB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDP3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCc/JTNFICUzQ3N2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeD0nMHB4JyB5PScwcHgnIHdpZHRoPScxMjhweCcgaGVpZ2h0PSc3OXB4JyB2aWV3Qm94PScwIDAgMTI4IDc4LjknIGZpbGw9JyUyM0REMDAyOCcgc3Ryb2tlPSdub25lJyUzRSAlM0Nwb2x5Z29uIHBvaW50cz0nMTI4LDE0LjkgNjQsNzguOSAwLDE0LjkgMTQuOSwwIDY0LDQ5LjEgMTEzLjEsMCAnLyUzRSAlM0Mvc3ZnJTNFXCIpO1xuXHRcdGJvcmRlci1ib3R0b20tY29sb3I6IHQtY29sb3IocmVkKTtcblx0fVxufVxuXG4uY21wLWZvcm0tdGV4dF9fZm9ybWF0LWVycm9yIHtcblx0LmNtcC1mb3JtLXRleHRfX2Vycm9yLWludmFsaWQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG59XG5cbi5jbXAtZm9ybS10ZXh0X19mb3JtYXQtZXJyb3IuY21wLWZvcm0tdGV4dC0tdW5kZXJsaW5lLFxuLmNtcC1mb3JtLXRleHRfX3ZhbGlkYXRpb24tZXJyb3IuY21wLWZvcm0tdGV4dC0tdW5kZXJsaW5lIHtcblx0LmNtcC1mb3JtLXRleHRfX3RleHQsXG5cdC5jbXAtZm9ybS1vcHRpb25zX19maWVsZCB7XG5cdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdC1jb2xvcihyZWQpO1xuXHR9XG59XG5cbi8qIGVzbGludC1lbmFibGUgKi9cblxuLmNtcC1tYXJrZXRpbmctcGVybWlzc2lvbi0tb3ZlcmxheSB7XG5cdHBhZGRpbmc6IHQtcmVtKDMwcHgpO1xuXHRoZWlnaHQ6IDkwdmg7XG5cdHdpZHRoOiBjYWxjKDEwMHZ3IC0gMzBweCk7XG5cblx0QGluY2x1ZGUgdC1yZXNwb25kLXRvLW1pbihzbWFsbCkge1xuXHRcdGhlaWdodDogODB2aDtcblx0fVxuXG5cdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4obWVkaXVtKSB7XG5cdFx0aGVpZ2h0OiA4MHZoO1xuXHR9XG5cblx0QGluY2x1ZGUgdC1yZXNwb25kLXRvLW1pbihsYXJnZSkge1xuXHRcdGhlaWdodDogODB2aDtcblx0XHR3aWR0aDogNjQwcHg7XG5cdH1cblxuXHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tbWluKHhsYXJnZSkge1xuXHRcdGhlaWdodDogODB2aDtcblx0XHR3aWR0aDogNzY4cHg7XG5cdH1cblxuXHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tbWluKHh4bGFyZ2UpIHtcblx0XHRoZWlnaHQ6IDgwdmg7XG5cdFx0d2lkdGg6IDEwMjRweDtcblx0fVxufVxuXG4uY21wLW1hcmtldGluZy1wZXJtaXNzaW9uLS1vdmVybGF5LWlmcmFtZSB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGhlaWdodDogODB2aDtcblx0d2lkdGg6IDEwMHZoO1xuXG5cdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4oc21hbGwpIHtcblx0XHRoZWlnaHQ6IDgwdmg7XG5cdH1cblxuXHRpZnJhbWUge1xuXHRcdGJvcmRlcjogMDtcblx0XHRoZWlnaHQ6IDkwdmg7XG5cdFx0d2lkdGg6IGNhbGMoMTAwdncgLSA0MHB4KTtcblxuXHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4oc21hbGwpIHtcblx0XHRcdGhlaWdodDogODB2aDtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdH1cblx0fVxufVxuIiwiLy8gU2V0dGluZ3MgLSBDb2xvcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vICRzLWNvbG9yc1xuLy8vIEVzdGFibGlzaGVzIGEgbWFwIGNvbnRhaW5pbmcgY29sb3IgdmFsdWVzIGFuZCBhbnkgY29ycmVzcG9uZGluZyB0b25lcy5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gJHMtY29sb3JzOiAoXG4vLy8gICAgIGJsYWNrOiAoXG4vLy8gXHRcdHByaW1hcnk6ICMwMDAwMDBcbi8vLyAgICAgKSxcbi8vLyAgICAgd2hpdGU6IChcbi8vLyBcdFx0cHJpbWFyeTogI0ZGRkZGRlxuLy8vICAgICApXG4vLy8gKTtcbiRzLWNvbG9yczogKFxuXHRibHVlOiAoXG5cdFx0cHJpbWFyeTogIzAwNjhCNCxcblx0XHRzZWNvbmRhcnk6ICMwQTJDNEEsXG5cdFx0dGVydGlhcnk6ICMxMTQ5N0IsXG5cdFx0cXVhdGVybmFyeTogIzM0NjQ4Rixcblx0XHRxdWluYXJ5OiAjMDA5RUUzLFxuXHRcdHNlbmFyeTogIzZCOUJDMlxuXHQpLFxuXHRncmVlbjogKFxuXHRcdHByaW1hcnk6ICM0QUEyMkNcblx0KSxcblx0cmVkOiAoXG5cdFx0cHJpbWFyeTogI0REMDAyOFxuXHQpLFxuXHRvcmFuZ2U6IChcblx0XHRwcmltYXJ5OiAjRjQ5NTAwXG5cdCksXG5cdGdyZXk6IChcblx0XHRwcmltYXJ5OiAjMzMzMzMzLFxuXHRcdHNlY29uZGFyeTogIzcyNzI3Mixcblx0XHR0ZXJ0aWFyeTogIzk5OTk5OSxcblx0XHRxdWF0ZXJuYXJ5OiAjQzlDOUM5LFxuXHRcdHF1aW5hcnk6ICNENkQ2RDYsXG5cdFx0c2VuYXJ5OiAjREVERURFLFxuXHRcdHNlcHRlbmFyeTogI0YyRjJGMixcblx0XHRvY3RvbmFyeTogI0Y5RjlGOVxuXHQpLFxuXHRibGFjazogKFxuXHRcdHByaW1hcnk6ICMwMDAwMDBcblx0KSxcblx0d2hpdGU6IChcblx0XHRwcmltYXJ5OiAjRkZGRkZGXG5cdClcbik7XG5cbi8vIFJvbGUgQ29sb3JzXG4kcy1jb2xvcnMtYmFja2dyb3VuZDogKFxuXHRkZWZhdWx0OiBtYXAtdmFsdWUoJHMtY29sb3JzLCAod2hpdGUsIHByaW1hcnkpKSxcblx0ZGFyazogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHByaW1hcnkpKSxcblx0c3VidGxlOiAoXG5cdFx0cHJpbWFyeTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHNlcHRlbmFyeSkpLFxuXHRcdGxpZ2h0OiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoZ3JleSwgb2N0b25hcnkpKSxcblx0XHRkYXJrOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoZ3JleSwgc2VuYXJ5KSlcblx0KVxuKTtcblxuJHMtY29sb3JzLWJvcmRlcjogKFxuXHRkZWZhdWx0OiAoXG5cdFx0cHJpbWFyeTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGJsdWUsIHByaW1hcnkpKSxcblx0XHRkYXJrOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoYmx1ZSwgdGVydGlhcnkpKVxuXHQpLFxuXHRuZWdhdGl2ZTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKHJlZCwgcHJpbWFyeSkpLFxuXHRwb3NpdGl2ZTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZWVuLCBwcmltYXJ5KSksXG5cdHN1YnRsZTogKFxuXHRcdHByaW1hcnk6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBxdWluYXJ5KSksXG5cdFx0ZGFyazogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHRlcnRpYXJ5KSksXG5cdFx0bGlnaHQ6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBzZW5hcnkpKVxuXHQpLFxuXHRkYXJrOiAoXG5cdFx0cHJpbWFyeTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHByaW1hcnkpKVxuXHQpLFxuXHRsaWdodDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKHdoaXRlLCBwcmltYXJ5KSksXG5cdGZvcm06IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBxdWF0ZXJuYXJ5KSlcbik7XG5cbiRzLWNvbG9ycy1idXR0b246IChcblx0ZGVmYXVsdDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGJsdWUsIHByaW1hcnkpKSxcblx0bmVnYXRpdmU6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChyZWQsIHByaW1hcnkpKSxcblx0cG9zaXRpdmU6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmVlbiwgcHJpbWFyeSkpLFxuXHRsaWdodDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKHdoaXRlLCBwcmltYXJ5KSksXG5cdGRpc2FibGVkOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoZ3JleSwgdGVydGlhcnkpKVxuKTtcblxuJHMtY29sb3JzLWxpbms6IChcblx0ZGVmYXVsdDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGJsdWUsIHByaW1hcnkpKSxcblx0YWN0aXZlOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoYmxhY2ssIHByaW1hcnkpKSxcblx0bGlnaHQ6IG1hcC12YWx1ZSgkcy1jb2xvcnMsICh3aGl0ZSwgcHJpbWFyeSkpLFxuXHRzdWJ0bGU6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBzZWNvbmRhcnkpKSxcblx0ZGlzYWJsZWQ6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBxdWF0ZXJuYXJ5KSlcbik7XG5cbiRzLWNvbG9ycy10ZXh0OiAoXG5cdGRlZmF1bHQ6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBwcmltYXJ5KSksXG5cdG5lZ2F0aXZlOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAocmVkLCBwcmltYXJ5KSksXG5cdHBvc2l0aXZlOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoZ3JlZW4sIHByaW1hcnkpKSxcblx0c3VidGxlOiAoXG5cdFx0cHJpbWFyeTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHNlY29uZGFyeSkpLFxuXHRcdGxpZ2h0OiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoZ3JleSwgdGVydGlhcnkpKVxuXHQpLFxuXHRsaWdodDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKHdoaXRlLCBwcmltYXJ5KSksXG5cdGRhcms6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChibGFjaywgcHJpbWFyeSkpLFxuXHRkaXNhYmxlZDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHF1YXRlcm5hcnkpKVxuKTtcbiIsIi8qIENvbXBvbmVudCAtIE92ZXJsYXkgSFRNTFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uY21wLW92ZXJsYXktaHRtbCB7XG5cdHBhZGRpbmc6IHQtcmVtKDEwcHggMjBweCk7XG59XG4iLCJcbi8qIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCwgbWF4LW5lc3RpbmctZGVwdGgsIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZSwgc2VsZWN0b3ItbWF4LWNvbXBvdW5kLXNlbGVjdG9ycywgc2VsZWN0b3ItbWF4LWNsYXNzICovXG5cbi5jbXAtbWFya2V0by1mb3JtIHtcblxuXHQmI3sgJHMtbG9hZGluZy1zZWxlY3RvciB9IHtcblx0XHRAaW5jbHVkZSB0LWxvYWRlcih0cnVlKTtcblx0fVxuXG5cdG1heC13aWR0aDogdC1yZW0oNzIwcHgpO1xuXHRtYXJnaW46IHQtcmVtKDgwcHggYXV0byk7XG5cblx0Lm1rdG9Gb3JtIHtcblx0XHR3aWR0aDogMTAwJSFpbXBvcnRhbnQ7XG5cdFx0cGFkZGluZzogdC1yZW0oMTVweCk7XG5cblx0XHQubWt0b0ZpZWxkIHtcblx0XHRcdHdpZHRoOiAxMDAlIWltcG9ydGFudDtcblx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0Zm9udC1zaXplOiB0LXJlbSgxNnB4KTtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cblx0XHRcdC8qIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW1heC1zcGVjaWZpY2l0eSAqL1xuXG5cdFx0XHQmLm1rdG9UZXh0RmllbGQsXG5cdFx0XHQmLm1rdG9FbWFpbEZpZWxkLFxuXHRcdFx0Ji5ta3RvTnVtYmVyRmllbGQge1xuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCB0LWNvbG9yLWJvcmRlcihmb3JtKTtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRcdFx0Ym9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRcdFx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0XHRcdHBhZGRpbmc6IHQtcmVtKDhweCAxMHB4KTtcblxuXHRcdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0XHRAaW5jbHVkZSB0LWxheWVyKDEpO1xuXHRcdFx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6IHQtY29sb3ItYm9yZGVyKGRlZmF1bHQsIHByaW1hcnkpO1xuXHRcdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQubWt0b0FzdGVyaXgge1xuXHRcdFx0Y29sb3I6IHQtY29sb3IoZ3JleSwgc2Vjb25kYXJ5KTtcblx0XHR9XG5cblx0XHR0ZXh0YXJlYS5ta3RvRmllbGQge1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgdC1jb2xvci1ib3JkZXIoZm9ybSk7XG5cdFx0XHRtaW4taGVpZ2h0OiB0LXJlbSgxOTBweCk7XG5cdFx0XHRwYWRkaW5nOiB0LXJlbSg4cHggMTBweCk7XG5cblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRAaW5jbHVkZSB0LWxheWVyKDEpO1xuXHRcdFx0XHRib3JkZXItY29sb3I6IHQtY29sb3ItYm9yZGVyKGRlZmF1bHQsIHByaW1hcnkpO1xuXHRcdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHNlbGVjdC5ta3RvRmllbGQge1xuXHRcdFx0cGFkZGluZzogdC1yZW0oMTBweCAzcHgpO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgdC1jb2xvci1ib3JkZXIoZm9ybSk7XG5cdFx0XHRib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0XHRib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdFx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRAaW5jbHVkZSB0LWxheWVyKDEpO1xuXHRcdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiB0LWNvbG9yLWJvcmRlcihkZWZhdWx0LCBwcmltYXJ5KTtcblx0XHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubWt0b0Zvcm1Db2wge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogdC1yZW0oMjVweCkhaW1wb3J0YW50O1xuXHRcdH1cblxuXHRcdC5ta3RvTGFiZWwge1xuXHRcdFx0d2lkdGg6IGF1dG8haW1wb3J0YW50O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbCFpbXBvcnRhbnQ7XG5cdFx0XHRmb250LXNpemU6IHQtcmVtKDEycHgpO1xuXHRcdFx0Y29sb3I6IHQtY29sb3IoZ3JleSwgc2Vjb25kYXJ5KTtcblx0XHRcdG1hcmdpbjogdC1yZW0oMCAwIDEwcHgpO1xuXHRcdFx0cGFkZGluZzogdC1yZW0oMCAxNnB4IDAgMCk7XG5cdFx0XHRAaW5jbHVkZSB0LWZvbnQoZ3J1bmRmb3MpO1xuXHRcdH1cblxuXHRcdC5ta3RvRmllbGRXcmFwLFxuXHRcdC5ta3RvR3V0dGVyLFxuXHRcdC5ta3RvRm9ybUNvbCB7XG5cdFx0XHRmbG9hdDogbm9uZTtcblx0XHR9XG5cblx0XHQubWt0b0J1dHRvbldyYXAge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDAhaW1wb3J0YW50O1xuXG5cdFx0XHQubWt0b0J1dHRvbiB7XG5cdFx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uc2l2ZS10eXBlLXNpemUobWVkaXVtKTtcblx0XHRcdFx0QGluY2x1ZGUgdC1yZXNwb25zaXZlLXZlcnRpY2FsLXNwYWNpbmcobGFyZ2UsIG1hcmdpbi1ib3R0b20pO1xuXHRcdFx0XHRhcHBlYXJhbmNlOiBub25lOyAvL05PU09OQVJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdC1jb2xvci1idXR0b24oZGVmYXVsdCk7XG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAwO1xuXHRcdFx0XHRjb2xvcjogdC1jb2xvcih3aGl0ZSk7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuXHRcdFx0XHRtaW4td2lkdGg6IHQtcmVtKDE4MHB4KTtcblx0XHRcdFx0cGFkZGluZzogdC1yZW0oMTVweCk7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIG1hcC1nZXQoJHMtdHJhbnNpdGlvbnMsIGFjdGl2ZSk7XG5cdFx0XHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuXG5cdFx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHQtY29sb3Iod2hpdGUpLCAwLjEpO1xuXHRcdFx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdHRvcDogMDtcblx0XHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlWCgwKTtcblx0XHRcdFx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjtcblx0XHRcdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gbWFwLWdldCgkcy10cmFuc2l0aW9ucywgaG92ZXIpO1xuXHRcdFx0XHRcdHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOmFjdGl2ZXtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0LWNvbG9yLWJ1dHRvbihkZWZhdWx0KTtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ji5jbXAtb3ZlcmxheV9fYm9keSB7XG5cdFx0bWFyZ2luOiB0LXJlbSgxNXB4IDApO1xuXG5cdFx0Lm1rdG9Gb3JtIHtcblx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4obGFyZ2UpIHtcblx0XHRcdFx0d2lkdGg6IHQtcmVtKDU1MHB4KSFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cdFx0XHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tbWluKG1lZGl1bSkge1xuXHRcdFx0XHR3aWR0aDogdC1yZW0oNDUwcHgpIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyogc3R5bGVsaW5lLWVuYWJsZSAqL1xuIiwiLy8gVG9vbHMgLSBEZWNvcmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AZnVuY3Rpb24gdC1pY29uKCRuYW1lLCAkZmlsbDogIzAwMCwgJHN0cm9rZTogbm9uZSkge1xuXHRAcmV0dXJuIHN2Zy1sb2FkKFwiaWNvbnMvXCIgKyAkbmFtZSArIFwiLnN2Z1wiLCBmaWxsPSRmaWxsLCBzdHJva2U9JHN0cm9rZSk7XG59XG5cbi8vIE1peGluc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AbWl4aW4gdC1pY29uICgkbmFtZSwgJGZpbGw6ICMwMDAsICRzdHJva2U6IG5vbmUsICRzaXplOiBzbWFsbCwgJHBvczogYWZ0ZXIpIHtcblx0JHJlc29sdmVkLXNpemU6IGlmKG1hcC1oYXMta2V5KCRzLXNpemVzLWljb25zLCAkc2l6ZSksIHQtcmVtKG1hcC1nZXQoJHMtc2l6ZXMtaWNvbnMsICRzaXplKSksIHQtcmVtKCRzaXplKSk7XG5cblx0Lyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItcHNldWRvLWVsZW1lbnQtbm8tdW5rbm93biAqL1xuXHQmOjojeyAkcG9zIH0ge1xuXHRcdGJhY2tncm91bmQ6IHQtaWNvbigkbmFtZSwgJGZpbGwsICRzdHJva2UpIGNlbnRlciBjZW50ZXIgLyBjb250YWluIG5vLXJlcGVhdDtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRoZWlnaHQ6ICRyZXNvbHZlZC1zaXplO1xuXHRcdHdpZHRoOiAkcmVzb2x2ZWQtc2l6ZTtcblxuXHRcdEBjb250ZW50O1xuXHR9XG5cdC8qIHN0eWxlbGludC1lbmFibGUgc2VsZWN0b3ItcHNldWRvLWVsZW1lbnQtbm8tdW5rbm93biAqL1xufVxuXG5AbWl4aW4gdC1wb2ludGVyICgkZGlyLCAkc2l6ZSwgJGNvbG9yLCAkYm9yZGVyLWNvbG9yOiAkY29sb3IpIHtcblx0JGJvcmRlci1zdHlsZTogdC1yZW0oJHNpemUpIHNvbGlkICRib3JkZXItY29sb3I7XG5cdCR0cmFucy1zdHlsZTogdC1yZW0oJHNpemUpIHNvbGlkIHRyYW5zcGFyZW50O1xuXHQkZmlsbC1zdHlsZTogdC1yZW0oJHNpemUpIHNvbGlkICRjb2xvcjtcblxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0Jjo6YmVmb3JlLFxuXHQmOjphZnRlciB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRoZWlnaHQ6IDA7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHdpZHRoOiAwO1xuXG5cdFx0QGlmICRkaXIgPT0gdXAge1xuXHRcdFx0Ym9yZGVyLWxlZnQ6ICR0cmFucy1zdHlsZTtcblx0XHRcdGJvcmRlci1yaWdodDogJHRyYW5zLXN0eWxlO1xuXHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTEwMCUpO1xuXHRcdH1cblxuXHRcdEBpZiAkZGlyID09IHJpZ2h0IHtcblx0XHRcdGJvcmRlci1ib3R0b206ICR0cmFucy1zdHlsZTtcblx0XHRcdGJvcmRlci10b3A6ICR0cmFucy1zdHlsZTtcblx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlLCAtNTAlKTtcblx0XHR9XG5cblx0XHRAaWYgJGRpciA9PSBkb3duIHtcblx0XHRcdGJvcmRlci1sZWZ0OiAkdHJhbnMtc3R5bGU7XG5cdFx0XHRib3JkZXItcmlnaHQ6ICR0cmFucy1zdHlsZTtcblx0XHRcdGJvdHRvbTogMDtcblx0XHRcdGxlZnQ6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDEwMCUpO1xuXHRcdH1cblxuXHRcdEBpZiAkZGlyID09IGxlZnQge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogJHRyYW5zLXN0eWxlO1xuXHRcdFx0Ym9yZGVyLXRvcDogJHRyYW5zLXN0eWxlO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCUsIC01MCUpO1xuXHRcdH1cblx0fVxuXG5cdCY6OmFmdGVyIHtcblxuXHRcdEBpZiAkZGlyID09IHVwIHtcblx0XHRcdGJvcmRlci1ib3R0b206ICRmaWxsLXN0eWxlO1xuXHRcdH1cblxuXHRcdEBpZiAkZGlyID09IHJpZ2h0IHtcblx0XHRcdGJvcmRlci1sZWZ0OiAkZmlsbC1zdHlsZTtcblx0XHR9XG5cblx0XHRAaWYgJGRpciA9PSBkb3duIHtcblx0XHRcdGJvcmRlci10b3A6ICRmaWxsLXN0eWxlO1xuXHRcdH1cblxuXHRcdEBpZiAkZGlyID09IGxlZnQge1xuXHRcdFx0Ym9yZGVyLXJpZ2h0OiAkZmlsbC1zdHlsZTtcblx0XHR9XG5cdH1cblxuXHQmOjpiZWZvcmUge1xuXG5cdFx0QGlmICRkaXIgPT0gdXAge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogJGJvcmRlci1zdHlsZTtcblx0XHR9XG5cblx0XHRAaWYgJGRpciA9PSByaWdodCB7XG5cdFx0XHRib3JkZXItbGVmdDogJGJvcmRlci1zdHlsZTtcblx0XHR9XG5cblx0XHRAaWYgJGRpciA9PSBkb3duIHtcblx0XHRcdGJvcmRlci10b3A6ICRib3JkZXItc3R5bGU7XG5cdFx0fVxuXG5cdFx0QGlmICRkaXIgPT0gbGVmdCB7XG5cdFx0XHRib3JkZXItcmlnaHQ6ICRib3JkZXItc3R5bGU7XG5cdFx0fVxuXHR9XG59XG5cbkBtaXhpbiB0LWxvYWRlcigkZmlsbDogZmFsc2UpIHtcblx0bWluLWhlaWdodDogdC1yZW0obWFwLWdldCgkcy1zaXplcy1pY29ucywgeGxhcmdlKSArICgkcy1iYXNlLWd1dHRlciAqIDIpKTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdCY6OmFmdGVyIHtcblx0XHRAaW5jbHVkZSB0LWxheWVyKDIpO1xuXHRcdGJhY2tncm91bmQ6IHN2Zy1sb2FkKFwiZ3J1bmRmb3MvbG9hZGVyLnN2Z1wiKSBjZW50ZXIgY2VudGVyIC8gdC1yZW0obWFwLWdldCgkcy1zaXplcy1pY29ucywgeGxhcmdlKSkgbm8tcmVwZWF0O1xuXG5cdFx0QGlmICgkZmlsbCkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSh0LWNvbG9yKHdoaXRlKSwgMC43KTtcblx0XHR9XG5cblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGxlZnQ6IDA7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufVxuXG5AbWl4aW4gdC1zaGFkb3coJHN1YnRsZTogZmFsc2UsICRhcHBseS1ob3ZlcjogZmFsc2UpIHtcblx0JHNoYWRvdy1zdWJ0bGU6IHQtcmVtKDAgMCAycHggMCkgcmdiYSgwLDAsMCwwLjA2KSwgdC1yZW0oMCAycHggMnB4IDApIHJnYmEoMCwwLDAsMC4wOSk7XG5cdCRzaGFkb3ctc3VidGxlLWhvdmVyOiB0LXJlbSgwIDAgMnB4IDApIHJnYmEoMCwwLDAsMC4wOSksIHQtcmVtKDAgMnB4IDZweCAxcHgpIHJnYmEoMCwwLDAsMC4yNCk7XG5cblx0JHNoYWRvdy1ub3JtYWw6IHQtcmVtKDAgMCAycHggMCkgcmdiYSgwLDAsMCwwLjA5KSwgdC1yZW0oMCAycHggNHB4IDApIHJnYmEoMCwwLDAsMC4xMik7XG5cdCRzaGFkb3ctbm9ybWFsLWhvdmVyOiB0LXJlbSgwIDAgMnB4IDApIHJnYmEoMCwwLDAsMC4xMiksIHQtcmVtKDAgMnB4IDhweCAxcHgpIHJnYmEoMCwwLDAsMC4yNCk7XG5cblx0JHNoYWRvdy1yZXN1bHQ6IGlmKCRzdWJ0bGUsICRzaGFkb3ctc3VidGxlLCAkc2hhZG93LW5vcm1hbCk7XG5cdCRzaGFkb3ctcmVzdWx0LWhvdmVyOiBpZigkc3VidGxlLCAkc2hhZG93LXN1YnRsZS1ob3ZlciwgJHNoYWRvdy1ub3JtYWwtaG92ZXIpO1xuXG5cdGJveC1zaGFkb3c6ICRzaGFkb3ctcmVzdWx0O1xuXG5cdEBpZiAoJGFwcGx5LWhvdmVyKSB7XG5cdFx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyBtYXAtZ2V0KCRzLXRyYW5zaXRpb25zLCBob3Zlcik7XG5cdFx0d2lsbC1jaGFuZ2U6IGJveC1zaGFkb3c7XG5cblx0XHRAaW5jbHVkZSB0LWFjdGl2ZSB7XG5cdFx0XHRib3gtc2hhZG93OiAkc2hhZG93LXJlc3VsdC1ob3Zlcjtcblx0XHR9XG5cdH1cbn1cblxuQG1peGluIHQtcHN1ZWRvLXNoYWRvdygkZGlyZWN0aW9uOiB0b3AsICRzdWJ0bGU6IGZhbHNlKSB7XG5cdCRzaXplOiA1cHg7XG5cblx0Jjo6YWZ0ZXIge1xuXHRcdEBpbmNsdWRlIHQtbGF5ZXIoMSk7XG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvICRkaXJlY3Rpb24sIHJnYmEoMCwwLDAsMCkgMCxyZ2JhKDAsMCwwLDAuMikgMTAwJSk7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0I3sgJGRpcmVjdGlvbiB9OiAwO1xuXG5cdFx0QGlmICgkZGlyZWN0aW9uID09IGxlZnQgb3IgJGRpcmVjdGlvbiA9PSByaWdodCkge1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0d2lkdGg6IHQtcmVtKCRzaXplKTtcblx0XHR9XG5cdFx0QGVsc2Uge1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdGhlaWdodDogdC1yZW0oJHNpemUpO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuQG1peGluIHQtYWN0aXZlLXVuZGVybGluZSgkYXBwbHktaG92ZXI6IGZhbHNlKSB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQmOm5vdChbZGlzYWJsZWRdKTo6YWZ0ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHQtY29sb3IoYmx1ZSk7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0aGVpZ2h0OiB0LXJlbSgzcHgpO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgwKTtcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gbWFwLWdldCgkcy10cmFuc2l0aW9ucywgaG92ZXIpO1xuXHRcdHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgY2VudGVyO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG5cdH1cblxuXHRAaWYgKCRhcHBseS1ob3Zlcikge1xuXG5cdFx0QGluY2x1ZGUgdC1hY3RpdmUge1xuXG5cdFx0XHQmOm5vdChbZGlzYWJsZWRdKTo6YWZ0ZXIge1xuXHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlWCgxKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQmOm5vdChbZGlzYWJsZWRdKVthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSxcblx0Jjpub3QoW2Rpc2FibGVkXSkjeyAkcy1hY3RpdmUtc2VsZWN0b3IgfSB7XG5cblx0XHQmOjphZnRlciB7XG5cdFx0XHR0cmFuc2Zvcm06IHNjYWxlWCgxKTtcblx0XHR9XG5cdH1cbn1cbiIsIi8vIFRvb2xzIC0gTGF5b3V0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIE1peGluc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy8gQG1peGluIHQtdmVydGljYWwtc3BhY2luZ1xuLy8vIFNldHMgdGhlIHZhbHVlcyBvZiBhIGdpdmVuIHNldCBvZiBwcm9wZXJ0aWVzIGZvciBhIGdpdmVuICRzcGFjaW5nLWtleSBmb3Igb25lIHNwZWNpZmljICRicmVha3BvaW50LWtleS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzcGFjaW5nLWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBzcGFjaW5nIGxhYmVsIGluIHRoZSAkcy12ZXJ0aWNhbC1zcGFjaW5nIG1hcC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRwcm9wcyAtIEEgTGlzdCBvZiBDU1MgcHJvcGVydGllcyBpbiB3aGljaCB0byBhcHBseSB0aGUgcmVzdWx0aW5nIHVuaXRzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludC1rZXkgLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgYnJlYWtwb2ludCBsYWJlbCBpbiB0aGUgJHMtYnJlYWtwb2ludHMgbWFwIGluIHdoaWNoIHRvIHJlZmVyZW5jZSB0aGUgY29ycmVjdCByZXN1bHQuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHQtdmVydGljYWwtc3BhY2luZyhzbWFsbCwgKG1hcmdpbi10b3AsIG1hcmdpbi1ib3R0b20pLCBtZWRpdW0pO1xuQG1peGluIHQtdmVydGljYWwtc3BhY2luZygkc3BhY2luZy1rZXksICRwcm9wcywgJGJyZWFrcG9pbnQta2V5OiAkcy1taW4tYnJlYWtwb2ludC1rZXkpIHtcblxuXHRAaWYgKHR5cGUtb2YoJHMtYnJlYWtwb2ludHMpICE9IG1hcCBvciB0eXBlLW9mKCRzLXZlcnRpY2FsLXNwYWNpbmcpICE9IG1hcCkge1xuXHRcdEBlcnJvciBcIiRzLWJyZWFrcG9pbnRzIGFuZCAkcy12ZXJ0aWNhbC1zcGFjaW5nIG11c3QgYmUgdmFsaWQgbWFwcy5cIjtcblx0fVxuXG5cdEBpZiAobWFwLWhhcy1rZXkoJHMtYnJlYWtwb2ludHMsICRicmVha3BvaW50LWtleSkpIHtcblx0XHQkc3BhY2luZy1tYXA6IG1hcC1nZXQoJHMtdmVydGljYWwtc3BhY2luZywgJHNwYWNpbmcta2V5KTtcblx0XHQkc3BhY2luZzogbWFwLWdldCgkc3BhY2luZy1tYXAsICRicmVha3BvaW50LWtleSk7XG5cblx0XHRAaWYgKCRzcGFjaW5nICE9IG51bGwpIHtcblxuXHRcdFx0QGVhY2ggJHByb3AgaW4gJHByb3BzIHtcblx0XHRcdFx0I3sgJHByb3AgfTogdC1yZW0oJHNwYWNpbmcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQG1peGluIHQtaG9yaXpvbnRhbC1zcGFjaW5nXG4vLy8gU2V0cyB0aGUgdmFsdWVzIG9mIGEgZ2l2ZW4gc2V0IG9mIHByb3BlcnRpZXMgZm9yIGEgZ2l2ZW4gJHNwYWNpbmcta2V5IGZvciBvbmUgc3BlY2lmaWMgJGJyZWFrcG9pbnQta2V5LlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNwYWNpbmcta2V5IC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIHNwYWNpbmcgbGFiZWwgaW4gdGhlICRzLWhvcml6b250YWwtc3BhY2luZyBtYXAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkcHJvcHMgLSBBIExpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgaW4gd2hpY2ggdG8gYXBwbHkgdGhlIHJlc3VsdGluZyB1bml0cy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQta2V5IC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGJyZWFrcG9pbnQgbGFiZWwgaW4gdGhlICRzLWJyZWFrcG9pbnRzIG1hcCBpbiB3aGljaCB0byByZWZlcmVuY2UgdGhlIGNvcnJlY3QgcmVzdWx0LlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyB0LWhvcml6b250YWwtc3BhY2luZyhzbWFsbCwgKG1hcmdpbi1sZWZ0LCBtYXJnaW4tcmlnaHQpLCBtZWRpdW0pO1xuQG1peGluIHQtaG9yaXpvbnRhbC1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkYnJlYWtwb2ludC1rZXk6ICRzLW1pbi1icmVha3BvaW50LWtleSkge1xuXG5cdEBpZiAodHlwZS1vZigkcy1icmVha3BvaW50cykgIT0gbWFwIG9yIHR5cGUtb2YoJHMtaG9yaXpvbnRhbC1zcGFjaW5nKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy1icmVha3BvaW50cyBhbmQgJHMtaG9yaXpvbnRhbC1zcGFjaW5nIG11c3QgYmUgdmFsaWQgbWFwcy5cIjtcblx0fVxuXG5cdEBpZiAobWFwLWhhcy1rZXkoJHMtYnJlYWtwb2ludHMsICRicmVha3BvaW50LWtleSkpIHtcblx0XHQkc3BhY2luZy1tYXA6IG1hcC1nZXQoJHMtaG9yaXpvbnRhbC1zcGFjaW5nLCAkc3BhY2luZy1rZXkpO1xuXHRcdCRzcGFjaW5nOiBtYXAtZ2V0KCRzcGFjaW5nLW1hcCwgJGJyZWFrcG9pbnQta2V5KTtcblxuXHRcdEBpZiAoJHNwYWNpbmcgIT0gbnVsbCkge1xuXG5cdFx0XHRAZWFjaCAkcHJvcCBpbiAkcHJvcHMge1xuXHRcdFx0XHQjeyAkcHJvcCB9OiB0LXJlbSgkc3BhY2luZyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBAbWl4aW4gdC1yZXNwb25zaXZlLXZlcnRpY2FsLXNwYWNpbmdcbi8vLyBTZXRzIHRoZSB2YWx1ZXMgb2YgYSBnaXZlbiBzZXQgb2YgcHJvcGVydGllcyBmb3IgYSBnaXZlbiAkc3BhY2luZy1rZXkgZm9yIGFsbCBicmVha3BvaW50cyB3aXRoIGFuIG9wdGlvbmFsICR0eXBlLXNpemUgc3BlY2lmaWNhdGlvbiB0byBzdWJ0cmFjdCB0aGVcbi8vLyBhcHByb3hpbWF0ZSBzcGFjZSBiZXR3ZWVuIHRoZSB0ZXh0IC8gbGluZSBoZWlnaHQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3BhY2luZy1rZXkgLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgc3BhY2luZyBsYWJlbCBpbiB0aGUgJHMtdmVydGljYWwtc3BhY2luZyBtYXAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkcHJvcHMgLSBBIExpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgaW4gd2hpY2ggdG8gYXBwbHkgdGhlIHJlc3VsdGluZyB1bml0cy5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy9cdEBpbmNsdWRlIHQtcmVzcG9uc2l2ZS12ZXJ0aWNhbC1zcGFjaW5nKHNtYWxsLCAobWFyZ2luLXRvcCwgbWFyZ2luLWJvdHRvbSkpO1xuQG1peGluIHQtcmVzcG9uc2l2ZS12ZXJ0aWNhbC1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzKSB7XG5cblx0QGlmICh0eXBlLW9mKCRzLXZlcnRpY2FsLXNwYWNpbmcpICE9IG1hcCkge1xuXHRcdEBlcnJvciBcIiRzLXZlcnRpY2FsLXNwYWNpbmcgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdEBpbmNsdWRlIHQtdmVydGljYWwtc3BhY2luZygkc3BhY2luZy1rZXksICRwcm9wcywgJHMtbWluLWJyZWFrcG9pbnQta2V5KTtcblxuXHRAZWFjaCAkYnJlYWtwb2ludC1rZXkgaW4gbWFwLWtleXMobWFwLWdldCgkcy12ZXJ0aWNhbC1zcGFjaW5nLCAkc3BhY2luZy1rZXkpKSB7XG5cblx0XHRAaWYgKCRicmVha3BvaW50LWtleSAhPSAkcy1taW4tYnJlYWtwb2ludC1rZXkpIHtcblxuXHRcdFx0QGluY2x1ZGUgdC1yZXNwb25kLXRvLW1pbigkYnJlYWtwb2ludC1rZXkpIHtcblx0XHRcdFx0QGluY2x1ZGUgdC12ZXJ0aWNhbC1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkYnJlYWtwb2ludC1rZXkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQG1peGluIHQtcmVzcG9uc2l2ZS1ob3Jpem9udGFsLXNwYWNpbmdcbi8vLyBTZXRzIHRoZSB2YWx1ZXMgb2YgYSBnaXZlbiBzZXQgb2YgcHJvcGVydGllcyBmb3IgYSBnaXZlbiAkc3BhY2luZy1rZXkgZm9yIGFsbCBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzcGFjaW5nLWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBzcGFjaW5nIGxhYmVsIGluIHRoZSAkcy1ob3Jpem9udGFsLXNwYWNpbmcgbWFwLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHByb3BzIC0gQSBMaXN0IG9mIENTUyBwcm9wZXJ0aWVzIGluIHdoaWNoIHRvIGFwcGx5IHRoZSByZXN1bHRpbmcgdW5pdHMuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vXHRAaW5jbHVkZSB0LXJlc3BvbnNpdmUtaG9yaXpvbnRhbC1zcGFjaW5nKHNtYWxsLCAobWFyZ2luLWxlZnQsIG1hcmdpbi1yaWdodCkpO1xuQG1peGluIHQtcmVzcG9uc2l2ZS1ob3Jpem9udGFsLXNwYWNpbmcoJHNwYWNpbmcta2V5LCAkcHJvcHMpIHtcblxuXHRAaWYgKHR5cGUtb2YoJHMtaG9yaXpvbnRhbC1zcGFjaW5nKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy1ob3Jpem9udGFsLXNwYWNpbmcgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdEBpbmNsdWRlIHQtaG9yaXpvbnRhbC1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkcy1taW4tYnJlYWtwb2ludC1rZXkpO1xuXG5cdEBlYWNoICRicmVha3BvaW50LWtleSBpbiBtYXAta2V5cyhtYXAtZ2V0KCRzLWhvcml6b250YWwtc3BhY2luZywgJHNwYWNpbmcta2V5KSkge1xuXG5cdFx0QGlmICgkYnJlYWtwb2ludC1rZXkgIT0gJHMtbWluLWJyZWFrcG9pbnQta2V5KSB7XG5cblx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4oJGJyZWFrcG9pbnQta2V5KSB7XG5cdFx0XHRcdEBpbmNsdWRlIHQtaG9yaXpvbnRhbC1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkYnJlYWtwb2ludC1rZXkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQG1peGluIHQtbGF5ZXJcbi8vLyBTZXRzIHRoZSBjb3JyZWN0IGdsb2JhbCB6LWluZGV4IGdpdmVuIGEgbGV2ZWwgcGFyYW1ldGVyIGFuZCBvcHRpb25hbCBtb2RpZmllci5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZXZlbCAtIEEga2V5IHdoaWNoIGlkZW50aWZpZXMgdGhlIGJhc2Ugei1pbmRleC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1vZGlmaWVyIC0gQW4gb3B0aW9uYWwgbW9kaWZpZXIgdG8gaW5jcmVhc2UgdGhlIGJhc2Ugei1pbmRleCBsZXZlbCBieSB0aGUgZ2l2ZW4gbnVtYmVyLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBAaW5jbHVkZSB0LWxheWVyKDIsIDEpO1xuQG1peGluIHQtbGF5ZXIoJGxldmVsOiAwLCAkbW9kaWZpZXI6IDApIHtcblxuXHRAaWYgKHR5cGUtb2YoJHMtbGF5ZXJzKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy1sYXllcnMgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdHotaW5kZXg6IG1hcC1nZXQoJHMtbGF5ZXJzLCAkbGV2ZWwpICsgJG1vZGlmaWVyO1xufVxuXG5AbWl4aW4gdC1jb250YWluZXIge1xuXHQkZGVmYXVsdC1ndXR0ZXI6IG1hcC1nZXQoJHMtbGF5b3V0LWdyaWQtZ3V0dGVycywgJHMtbWluLWJyZWFrcG9pbnQta2V5KTtcblxuXHRtYXJnaW46IDAgYXV0bztcblx0bWF4LXdpZHRoOiB0LXJlbSgkcy1zaXRlLXdpZHRoIC0gKCRkZWZhdWx0LWd1dHRlciAqIDIpKTtcblx0cGFkZGluZy1sZWZ0OiB0LXJlbSgkZGVmYXVsdC1ndXR0ZXIpO1xuXHRwYWRkaW5nLXJpZ2h0OiB0LXJlbSgkZGVmYXVsdC1ndXR0ZXIpO1xuXHR3aWR0aDogMTAwJTtcblxuXHRAZWFjaCAkYnJlYWtwb2ludC1rZXkgaW4gbWFwLWtleXMoJHMtbGF5b3V0LWdyaWQtZ3V0dGVycykge1xuXG5cdFx0QGlmICgkYnJlYWtwb2ludC1rZXkgIT0gJHMtbWluLWJyZWFrcG9pbnQta2V5KSB7XG5cblx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4oJGJyZWFrcG9pbnQta2V5KSB7XG5cdFx0XHRcdCRndXR0ZXI6IG1hcC1nZXQoJHMtbGF5b3V0LWdyaWQtZ3V0dGVycywgJGJyZWFrcG9pbnQta2V5KTtcblxuXHRcdFx0XHRtYXgtd2lkdGg6IHQtcmVtKCRzLXNpdGUtd2lkdGggLSAoJGd1dHRlciAqIDIpKTtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiB0LXJlbSgkZ3V0dGVyKTtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogdC1yZW0oJGd1dHRlcik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbkBtaXhpbiB0LWZ1bGwtd2lkdGgge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGxlZnQ6IDUwJTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG5cdHdpZHRoOiB2YXIoLS1iLXZpZXdwb3J0LXdpZHRoKTtcblxuXHRAbWVkaWEgcHJpbnQge1xuXHRcdGxlZnQ6IGF1dG87XG5cdFx0dHJhbnNmb3JtOiBub25lO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbkBtaXhpbiB0LWRlY2stcGFkZGluZyB7XG5cdEBpbmNsdWRlIHQtdmVydGljYWwtc3BhY2luZyh4eHhsYXJnZSwgcGFkZGluZy1ib3R0b20pO1xuXHRAaW5jbHVkZSB0LXZlcnRpY2FsLXNwYWNpbmcoeHhsYXJnZSwgcGFkZGluZy10b3ApO1xuXG5cdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4obGFyZ2UpIHtcblx0XHRAaW5jbHVkZSB0LXZlcnRpY2FsLXNwYWNpbmcoeHh4eGxhcmdlLCBwYWRkaW5nLWJvdHRvbSk7XG5cdFx0QGluY2x1ZGUgdC12ZXJ0aWNhbC1zcGFjaW5nKHh4eGxhcmdlLCBwYWRkaW5nLXRvcCk7XG5cdH1cbn1cbiIsIi8vIFNldHRpbmdzIC0gTGF5b3V0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRzLWJhc2UtZ3V0dGVyOiAxNnB4O1xuJHMtYmFzZS1taW4taGVpZ2h0czogKFxuXHRzbWFsbDogMjgwcHgsXG5cdG1lZGl1bTogMzYwcHgsXG5cdGxhcmdlOiA0NDBweFxuKTtcblxuJHMtd2lkZS1ndXR0ZXI6IDcwcHg7XG5cbiRzLWhlYWRlci1tb2JpbGUtcGVlazogNTBweDtcbiRzLWhlYWRlci1tb2JpbGUtbWF4LXdpZHRoOiA0MjVweDtcblxuJHMtbGF5b3V0LWdyaWQtZGl2aXNpb25zOiAxMjtcbiRzLWxheW91dC1ncmlkLWd1dHRlcnM6IChcblx0c21hbGw6IDE2cHhcbik7XG5cbiRzLXNpdGUtd2lkdGg6IDEyMDBweDtcblxuLy8vICRzLXZlcnRpY2FsLXNwYWNpbmdcbi8vLyBFc3RhYmxpc2hlcyBhIG1hcCBjb250YWluaW5nIHZlcnRpY2FsIGxheW91dCBzcGFjaW5nIHZhbHVlcyBhdCBlYWNoIGRlZmluZWQgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gJHMtdmVydGljYWwtc3BhY2luZzogKFxuLy8vIFx0c21hbGw6IChcbi8vLyBcdFx0c21hbGw6IDEwcHgsXG4vLy8gXHRcdG1lZGl1bTogMjBweFxuLy8vIFx0KSxcbi8vLyBcdG1lZGl1bTogKFxuLy8vIFx0XHRzbWFsbDogMjBweCxcbi8vLyBcdFx0bWVkaXVtOiA0MHB4XG4vLy8gXHQpLFxuLy8vIFx0bGFyZ2U6IChcbi8vLyBcdFx0c21hbGw6IDMwcHgsXG4vLy8gXHRcdG1lZGl1bTogNjBweFxuLy8vIFx0KVxuLy8vICk7XG4kcy12ZXJ0aWNhbC1zcGFjaW5nOiAoXG5cdHhzbWFsbDogKFxuXHRcdHNtYWxsOiA4cHhcblx0KSxcblx0c21hbGw6IChcblx0XHRzbWFsbDogMTBweFxuXHQpLFxuXHRtZWRpdW06IChcblx0XHRzbWFsbDogMTZweFxuXHQpLFxuXHRsYXJnZTogKFxuXHRcdHNtYWxsOiAyMHB4XG5cdCksXG5cdHhsYXJnZTogKFxuXHRcdHNtYWxsOiAzMHB4XG5cdCksXG5cdHh4bGFyZ2U6IChcblx0XHRzbWFsbDogNDBweFxuXHQpLFxuXHR4eHhsYXJnZTogKFxuXHRcdHNtYWxsOiA2MHB4XG5cdCksXG5cdHh4eHhsYXJnZTogKFxuXHRcdHNtYWxsOiA4MHB4XG5cdClcbik7XG5cbi8vLyAkcy1ob3Jpem9udGFsLXNwYWNpbmdcbi8vLyBFc3RhYmxpc2hlcyBhIG1hcCBjb250YWluaW5nIGhvcml6b250YWwgbGF5b3V0IHNwYWNpbmcgdmFsdWVzIGF0IGVhY2ggZGVmaW5lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAkcy1ob3Jpem9udGFsLXNwYWNpbmc6IChcbi8vLyBcdHNtYWxsOiAoXG4vLy8gXHRcdHNtYWxsOiAxMHB4LFxuLy8vIFx0XHRtZWRpdW06IDIwcHhcbi8vLyBcdCksXG4vLy8gXHRtZWRpdW06IChcbi8vLyBcdFx0c21hbGw6IDIwcHgsXG4vLy8gXHRcdG1lZGl1bTogNDBweFxuLy8vIFx0KSxcbi8vLyBcdGxhcmdlOiAoXG4vLy8gXHRcdHNtYWxsOiAzMHB4LFxuLy8vIFx0XHRtZWRpdW06IDYwcHhcbi8vLyBcdClcbi8vLyApO1xuJHMtaG9yaXpvbnRhbC1zcGFjaW5nOiAoXG5cdHhzbWFsbDogKFxuXHRcdHNtYWxsOiA4cHgsXG5cdFx0bWVkaXVtOiAxNnB4LFxuXHRcdGxhcmdlOiAyMHB4XG5cdCksXG5cdHNtYWxsOiAoXG5cdFx0c21hbGw6IDE2cHgsXG5cdFx0bWVkaXVtOiAyMHB4LFxuXHRcdGxhcmdlOiAzMHB4XG5cdCksXG5cdG1lZGl1bTogKFxuXHRcdHNtYWxsOiAyMHB4LFxuXHRcdG1lZGl1bTogMzBweCxcblx0XHRsYXJnZTogNDBweFxuXHQpLFxuXHRsYXJnZTogKFxuXHRcdHNtYWxsOiAzMHB4LFxuXHRcdG1lZGl1bTogNDBweCxcblx0XHRsYXJnZTogNjBweFxuXHQpXG4pO1xuXG4vLy8gJHMtbGF5ZXJzXG4vLy8gRXN0YWJsaXNoZXMgYSBtYXAgY29udGFpbmluZyB6LWluZGV4IGxheWVycy5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gJHMtbGF5ZXJzOiAoXG4vLy8gXHQwOiAwLFxuLy8vIFx0MTogMSxcbi8vLyBcdDI6IDEwLFxuLy8vIFx0MzogMTAwLFxuLy8vIFx0NDogMTAwMFxuLy8vICk7XG4kcy1sYXllcnM6IChcblx0MDogMCxcblx0MTogMSxcblx0MjogMTAsXG5cdDM6IDEwMCxcblx0NDogMTAwMFxuKTtcbiIsIi8vIFRvb2xzIC0gVHlwb2dyYXBoeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vIEBmdW5jdGlvbiB0LWdldC10eXBlLXNwYWNpbmctdHlwZS1hZGp1c3Rcbi8vLyBHZXRzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGZvbnQtc2l6ZSBhbmQgbGluZS1oZWlnaHQgZm9yIGEgZ2l2ZW4gYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlLXNpemUgLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgdHlwZSBzaXplIGxhYmVsIGluIHRoZSAkcy10eXBlLXNpemluZyBtYXAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50LWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBicmVha3BvaW50IGxhYmVsIG9mIHRoZSBnaXZlICR0eXBlLXNpemUgd2l0aGluIHRoZSAkcy10eXBlLXNpemluZyBtYXAuXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBleHByZXNzZWQgaW4gdGhlIGFwcHJvcHJpYXRlIHVuaXQuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHQtZ2V0LXR5cGUtc3BhY2luZy10eXBlLWFkanVzdChzbWFsbCwgbWVkaXVtKTtcbkBmdW5jdGlvbiB0LWdldC10eXBlLXNwYWNpbmctdHlwZS1hZGp1c3QoJHR5cGUtc2l6ZSwgJGJyZWFrcG9pbnQta2V5KSB7XG5cblx0QGlmICh0eXBlLW9mKCRzLXR5cGUtc2l6aW5nKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy10eXBlLXNpemluZyBtdXN0IGJlIGEgdmFsaWQgbWFwLlwiO1xuXHR9XG5cblx0JHR5cGUtc2l6ZS1tYXA6IG1hcC1nZXQoJHMtdHlwZS1zaXppbmcsICR0eXBlLXNpemUpO1xuXG5cdEBpZiAobWFwLWhhcy1rZXkoJHR5cGUtc2l6ZS1tYXAsICRicmVha3BvaW50LWtleSkpIHtcblx0XHQkdHlwZS1icmVha3BvaW50LW1hcDogbWFwLWdldCgkdHlwZS1zaXplLW1hcCwgJGJyZWFrcG9pbnQta2V5KTtcblx0XHQkZm9udC1zaXplOiBtYXAtZ2V0KCR0eXBlLWJyZWFrcG9pbnQtbWFwLCBmb250LXNpemUpO1xuXHRcdCRsaW5lLWhlaWdodDogbWFwLWdldCgkdHlwZS1icmVha3BvaW50LW1hcCwgbGluZS1oZWlnaHQpO1xuXG5cdFx0QGlmICgkZm9udC1zaXplICE9IG51bGwgYW5kICRsaW5lLWhlaWdodCAhPSBudWxsKSB7XG5cblx0XHRcdEBpZiAodW5pdGxlc3MoJGxpbmUtaGVpZ2h0KSkge1xuXHRcdFx0XHQkbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodCAqICRmb250LXNpemU7XG5cdFx0XHR9XG5cblx0XHRcdEByZXR1cm4gKCRsaW5lLWhlaWdodCAtICRmb250LXNpemUpIC8gMjtcblx0XHR9XG5cdH1cblxuXHRAcmV0dXJuIDA7XG59XG5cbi8vIE1peGluc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy8gQG1peGluIHQtZm9udFxuLy8vIFNldHMgdGhlIHVucXVvdGVkIGZvbnQtZmFtaWx5IHN0YWNrIGZyb20gdGhlICRzLWZvbnQtZmFtaWxpZXMgbWFwLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtbmFtZSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBrZXkgaW4gdGhlICRzLWZvbnQtZmFtaWxpZXMgbWFwLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1mb250KCdGb250TmFtZScpO1xuQG1peGluIHQtZm9udCgkZm9udC1uYW1lKSB7XG5cdCRmb250LWZhbWlseTogbWFwLWdldCgkcy1mb250LWZhbWlsaWVzLCAkZm9udC1uYW1lKTtcblxuXHRAaWYgKCRmb250LWZhbWlseSE9IG51bGwpIHtcblx0XHRmb250LWZhbWlseTogdW5xdW90ZSgkZm9udC1mYW1pbHkpO1xuXHR9XG59XG5cbi8vLyBAbWl4aW4gdC10eXBlLXNpemVcbi8vLyBTZXRzIHRoZSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0cyBmb3IgYSBnaXZlbiAkdHlwZS1zaXplIGZvciBvbmUgc3BlY2lmaWMgJGJyZWFrcG9pbnQta2V5LlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUtc2l6ZSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSB0eXBlLXNpemUga2V5IGluIHRoZSAkcy10eXBlLXNpemluZyBtYXAgc3BlY2lmeWluZyB0aGUgcmVxdWlyZWQgdHlwZSBzaXplLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludC1rZXkgLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgYnJlYWtwb2ludCBrZXkgaW4gdGhlICRzLWJyZWFrcG9pbnRzIG1hcCBzcGVjaWZ5aW5nIHRoZSByZXF1aXJlZCBicmVha3BvaW50IHNpemUuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vXHRAaW5jbHVkZSB0LXR5cGUtc2l6ZShzbWFsbCwgbWVkaXVtKTtcbkBtaXhpbiB0LXR5cGUtc2l6ZSgkdHlwZS1zaXplLCAkYnJlYWtwb2ludC1rZXk6ICRzLW1pbi1icmVha3BvaW50LWtleSkge1xuXG5cdEBpZiAodHlwZS1vZigkcy10eXBlLXNpemluZykgIT0gbWFwKSB7XG5cdFx0QGVycm9yIFwiJHMtdHlwZS1zaXppbmcgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdGZvbnQtc2l6ZTogdC1yZW0obWFwLXZhbHVlKCRzLXR5cGUtc2l6aW5nLCAoJHR5cGUtc2l6ZSwgJGJyZWFrcG9pbnQta2V5LCBmb250LXNpemUpKSk7XG5cdGxpbmUtaGVpZ2h0OiB0LXJlbShtYXAtdmFsdWUoJHMtdHlwZS1zaXppbmcsICgkdHlwZS1zaXplLCAkYnJlYWtwb2ludC1rZXksIGxpbmUtaGVpZ2h0KSkpO1xufVxuXG4vLy8gQG1peGluIHQtcmVzcG9uc2l2ZS10eXBlLXNpemVcbi8vLyBTZXRzIHRoZSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0cyBmb3IgYSBnaXZlbiAkdHlwZS1zaXplIGZvciBhbGwgYnJlYWtwb2ludHMuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHlwZS1zaXplIC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIHR5cGUtc2l6ZSBrZXkgaW4gdGhlICRzLXR5cGUtc2l6aW5nIG1hcCBzcGVjaWZ5aW5nIHRoZSByZXF1aXJlZCB0eXBlIHNpemUuXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1yZXNwb25zaXZlLXR5cGUtc2l6ZShtZWRpdW0pO1xuQG1peGluIHQtcmVzcG9uc2l2ZS10eXBlLXNpemUoJHR5cGUtc2l6ZSkge1xuXG5cdEBpZiAodHlwZS1vZigkcy10eXBlLXNpemluZykgIT0gbWFwKSB7XG5cdFx0QGVycm9yIFwiJHMtdHlwZS1zaXppbmcgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdEBpbmNsdWRlIHQtdHlwZS1zaXplKCR0eXBlLXNpemUpO1xuXG5cdEBlYWNoICRicmVha3BvaW50LWtleSBpbiBtYXAta2V5cyhtYXAtZ2V0KCRzLXR5cGUtc2l6aW5nLCAkdHlwZS1zaXplKSkge1xuXG5cdFx0QGlmICgkYnJlYWtwb2ludC1rZXkgIT0gJHMtbWluLWJyZWFrcG9pbnQta2V5KSB7XG5cblx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4obWFwLWdldCgkcy1icmVha3BvaW50cywgJGJyZWFrcG9pbnQta2V5KSkge1xuXHRcdFx0XHRAaW5jbHVkZSB0LXR5cGUtc2l6ZSgkdHlwZS1zaXplLCAkYnJlYWtwb2ludC1rZXkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQG1peGluIHQtdHlwZS1zcGFjaW5nXG4vLy8gU2V0cyB0aGUgdmFsdWVzIG9mIGEgZ2l2ZW4gc2V0IG9mIHByb3BlcnRpZXMgZm9yIGEgZ2l2ZW4gJHNwYWNpbmcta2V5IGZvciBvbmUgc3BlY2lmaWMgJGJyZWFrcG9pbnQta2V5IHdpdGggYW4gb3B0aW9uYWwgJHR5cGUtc2l6ZSBzcGVjaWZpY2F0aW9uIHRvXG4vLy8gc3VidHJhY3QgdGhlIGFwcHJveGltYXRlIHNwYWNlIGJldHdlZW4gdGhlIHRleHQgLyBsaW5lIGhlaWdodC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzcGFjaW5nLWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBzcGFjaW5nIGxhYmVsIGluIHRoZSAkcy10eXBlLXNwYWNpbmcgbWFwLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHByb3BzIC0gQSBMaXN0IG9mIENTUyBwcm9wZXJ0aWVzIGluIHdoaWNoIHRvIGFwcGx5IHRoZSByZXN1bHRpbmcgdW5pdHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50LWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBicmVha3BvaW50IGxhYmVsIGluIHRoZSAkcy1icmVha3BvaW50cyBtYXAgaW4gd2hpY2ggdG8gcmVmZXJlbmNlIHRoZSBjb3JyZWN0IHJlc3VsdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUtc2l6ZSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSB0eXBlIHNpemUgbGFiZWwgaW4gdGhlICRzLXR5cGUtc2l6aW5nIG1hcC4gKE9wdGlvbmFsKVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyB0LXR5cGUtc3BhY2luZyhzbWFsbCwgKG1hcmdpbi10b3AsIG1hcmdpbi1ib3R0b20pLCBtZWRpdW0pO1xuQG1peGluIHQtdHlwZS1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkYnJlYWtwb2ludC1rZXk6ICRzLW1pbi1icmVha3BvaW50LWtleSwgJHR5cGUtc2l6ZTogbnVsbCkge1xuXG5cdEBpZiAodHlwZS1vZigkcy1icmVha3BvaW50cykgIT0gbWFwIG9yIHR5cGUtb2YoJHMtdHlwZS1zcGFjaW5nKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy1icmVha3BvaW50cyBhbmQgJHMtdHlwZS1zcGFjaW5nIG11c3QgYmUgdmFsaWQgbWFwcy5cIjtcblx0fVxuXG5cdEBpZiAobWFwLWhhcy1rZXkoJHMtYnJlYWtwb2ludHMsICRicmVha3BvaW50LWtleSkpIHtcblx0XHQkc3BhY2luZy1tYXA6IG1hcC1nZXQoJHMtdHlwZS1zcGFjaW5nLCAkc3BhY2luZy1rZXkpO1xuXHRcdCRzcGFjaW5nOiBtYXAtZ2V0KCRzcGFjaW5nLW1hcCwgJGJyZWFrcG9pbnQta2V5KTtcblx0XHQkYWRqdXN0OiAwO1xuXG5cdFx0QGlmICgkc3BhY2luZyAhPSBudWxsKSB7XG5cblx0XHRcdEBpZiAoJHR5cGUtc2l6ZSAhPSBudWxsKSB7XG5cdFx0XHRcdCRhZGp1c3Q6IHQtZ2V0LXR5cGUtc3BhY2luZy10eXBlLWFkanVzdCgkdHlwZS1zaXplLCAkYnJlYWtwb2ludC1rZXkpO1xuXHRcdFx0fVxuXG5cdFx0XHRAZWFjaCAkcHJvcCBpbiAkcHJvcHMge1xuXHRcdFx0XHQjeyAkcHJvcCB9OiB0LXJlbSgkc3BhY2luZyAtICRhZGp1c3QpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQG1peGluIHQtcmVzcG9uc2l2ZS10eXBlLXNwYWNpbmdcbi8vLyBTZXRzIHRoZSB2YWx1ZXMgb2YgYSBnaXZlbiBzZXQgb2YgcHJvcGVydGllcyBmb3IgYSBnaXZlbiAkc3BhY2luZy1rZXkgZm9yIGFsbCBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzcGFjaW5nLWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBzcGFjaW5nIGxhYmVsIGluIHRoZSAkcy10eXBlLXNwYWNpbmcgbWFwLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHByb3BzIC0gQSBMaXN0IG9mIENTUyBwcm9wZXJ0aWVzIGluIHdoaWNoIHRvIGFwcGx5IHRoZSByZXN1bHRpbmcgdW5pdHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlLXNpemUgLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgdHlwZSBzaXplIGxhYmVsIGluIHRoZSAkcy10eXBlLXNpemluZyBtYXAuIChPcHRpb25hbClcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy9cdEBpbmNsdWRlIHQtcmVzcG9uc2l2ZS10eXBlLXNwYWNpbmcoc21hbGwsIChtYXJnaW4tYm90dG9tLCBwYWRkaW5nLWJvdHRvbSkpO1xuQG1peGluIHQtcmVzcG9uc2l2ZS10eXBlLXNwYWNpbmcoJHNwYWNpbmcta2V5LCAkcHJvcHMsICR0eXBlLXNpemU6IG51bGwpIHtcblxuXHRAaWYgKHR5cGUtb2YoJHMtdHlwZS1zcGFjaW5nKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy10eXBlLXNwYWNpbmcgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdEBpbmNsdWRlIHQtdHlwZS1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkcy1taW4tYnJlYWtwb2ludC1rZXksICR0eXBlLXNpemUpO1xuXG5cdEBlYWNoICRicmVha3BvaW50LWtleSBpbiBtYXAta2V5cyhtYXAtZ2V0KCRzLXR5cGUtc3BhY2luZywgJHNwYWNpbmcta2V5KSkge1xuXG5cdFx0QGlmICgkYnJlYWtwb2ludC1rZXkgIT0gJHMtbWluLWJyZWFrcG9pbnQta2V5KSB7XG5cblx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4oJGJyZWFrcG9pbnQta2V5KSB7XG5cdFx0XHRcdEBpbmNsdWRlIHQtdHlwZS1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkYnJlYWtwb2ludC1rZXksICR0eXBlLXNpemUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5AbWl4aW4gdC1saW5rIHtcblx0QGluY2x1ZGUgdC13cmFwLXRleHQ7XG5cdGFwcGVhcmFuY2U6IG5vbmU7IC8vIE5PU09OQVJcblx0YmFja2dyb3VuZDogbm9uZTtcblx0Ym9yZGVyOiAwO1xuXHRjb2xvcjogdC1jb2xvci1saW5rKGRlZmF1bHQpO1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuXHRwYWRkaW5nOiAwO1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0dHJhbnNpdGlvbjogbWFwLWdldCgkcy10cmFuc2l0aW9ucywgYWN0aXZlKSBjb2xvcjtcblxuXHQvLyBUT0RPOiBBY3RpdmUgc3RhdGVzLi4uXG5cdEBpbmNsdWRlIHQtYWN0aXZlIHtcblx0XHRjb2xvcjogdC1jb2xvcihibHVlLCBxdWluYXJ5KTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdH1cblxuXHQvLyBUT0RPOiBWaXNpdGVkIHN0YXRlLi4uXG5cdC8vICY6dmlzaXRlZCB7fVxufVxuXG5AbWl4aW4gdC10cnVuY2F0ZSB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuIiwiLy8gU2V0dGluZ3MgLSBUeXBvZ3JhcGh5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vLyAkcy1mb250c1xuLy8vIEVzdGFibGlzaGVzIGEgbWFwIGNvbnRhaW5pbmcgYSBzZXJpZXMgb2YgZm9udCBmaWxlcyBsb2NhdGVkIGluIHRoZSBzcGVjaWZpZWQgZm9udHMgZGlyZWN0b3J5LlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAkcy1mb250czogKFxuLy8vIFx0XCJGb250TmFtZVwiOiAoXG4vLy9cdFx0XHRkaXNwbGF5OiBzd2FwLFxuLy8vIFx0XHRmaWxlOiBcImZvbnQtZmlsZS1uYW1lXCIsXG4vLy9cdFx0XHRuYW1lOiBcIkZvbnQgTmFtZVwiLFxuLy8vXHRcdFx0c3R5bGU6IG5vcm1hbCxcbi8vLyBcdFx0d2VpZ2h0OiA0MDBcbi8vLyBcdClcbi8vLyApO1xuJHMtZm9udHM6IChcblx0XCJHcnVuZGZvc1RoZVNhbnM1UlwiOiAoXG5cdFx0ZGlzcGxheTogc3dhcCxcblx0XHRmaWxlOiBcIkdydW5kZm9zVGhlU2Fuc1YyXzVfXCIsXG5cdFx0bmFtZTogXCJHcnVuZGZvc1wiLFxuXHRcdHN0eWxlOiBub3JtYWwsXG5cdFx0d2VpZ2h0OiA0MDBcblx0KSxcblx0XCJHcnVuZGZvc1RoZVNhbnM1SVwiOiAoXG5cdFx0ZGlzcGxheTogc3dhcCxcblx0XHRmaWxlOiBcIkdydW5kZm9zVGhlU2Fuc1YyXzVpX1wiLFxuXHRcdG5hbWU6IFwiR3J1bmRmb3NcIixcblx0XHRzdHlsZTogaXRhbGljLFxuXHRcdHdlaWdodDogNDAwXG5cdCksXG5cdFwiR3J1bmRmb3NUaGVTYW5zN0JcIjogKFxuXHRcdGRpc3BsYXk6IHN3YXAsXG5cdFx0ZmlsZTogXCJHcnVuZGZvc1RoZVNhbnNWMl83X1wiLFxuXHRcdG5hbWU6IFwiR3J1bmRmb3NcIixcblx0XHRzdHlsZTogbm9ybWFsLFxuXHRcdHdlaWdodDogNzAwXG5cdCksXG5cdFwiR3J1bmRmb3NUaGVTYW5zN0JJXCI6IChcblx0XHRkaXNwbGF5OiBzd2FwLFxuXHRcdGZpbGU6IFwiR3J1bmRmb3NUaGVTYW5zVjJfN2lfXCIsXG5cdFx0bmFtZTogXCJHcnVuZGZvc1wiLFxuXHRcdHN0eWxlOiBpdGFsaWMsXG5cdFx0d2VpZ2h0OiA3MDBcblx0KVxuKTtcblxuJHMtZm9udC1mYW1pbGllczogKFxuXHRcImdydW5kZm9zXCI6ICdcIkdydW5kZm9zXCIsIEx1Y2lkYSBHcmFuZGUsIFRhaG9tYSwgR2VuZXZhLCBWZXJkYW5hLCBzYW5zLXNlcmlmJyxcblx0XCJub3RvXCI6ICdcIk5vdG8gU2Fuc1wiLCBMdWNpZGEgR3JhbmRlLCBUYWhvbWEsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZicsXG5cdFwic3lzdGVtXCI6IFwiTHVjaWRhIEdyYW5kZSwgVGFob21hLCBHZW5ldmEsIFZlcmRhbmEsIHNhbnMtc2VyaWZcIlxuKTtcblxuLy8vICRzLXR5cGUtc2l6aW5nXG4vLy8gRXN0YWJsaXNoZXMgYSBtYXAgY29udGFpbmluZyBhYnN0cmFjdCB0eXBlIHNpemluZyBkZWZpbml0aW9ucyB3aXRoIG1hdGNoaW5nIGJyZWFrcG9pbnQgc3BlY2lmaWNhdGlvbnMuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vICRzLXR5cGUtc2l6aW5nOiAoXG4vLy8gXHRzbWFsbDogKFxuLy8vIFx0XHRzbWFsbDogKFxuLy8vIFx0XHRcdGZvbnQtc2l6ZTogMTBweCxcbi8vLyBcdFx0XHRsaW5lLWhlaWdodDogMS41XG4vLy8gXHRcdCksXG4vLy8gXHRcdG1lZGl1bTogKFxuLy8vIFx0XHRcdGZvbnQtc2l6ZTogMjBweCxcbi8vLyBcdFx0XHRsaW5lLWhlaWdodDogMlxuLy8vIFx0XHQpXG4vLy8gXHQpXG4vLy8gKTtcbiRzLXR5cGUtc2l6aW5nOiAoXG5cdHh4c21hbGw6IChcblx0XHRzbWFsbDogKFxuXHRcdFx0Zm9udC1zaXplOiA4cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMTAvOFxuXHRcdCksXG5cdFx0bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogOHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDEwLzhcblx0XHQpLFxuXHRcdHhsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiA4cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMTAvOFxuXHRcdClcblx0KSxcblx0eHNtYWxsOiAoXG5cdFx0c21hbGw6IChcblx0XHRcdGZvbnQtc2l6ZTogMTJweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiAxOC8xMlxuXHRcdCksXG5cdFx0bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogMTJweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiAxOC8xMlxuXHRcdCksXG5cdFx0eGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDEycHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMTgvMTJcblx0XHQpXG5cdCksXG5cdHNtYWxsOiAoXG5cdFx0c21hbGw6IChcblx0XHRcdGZvbnQtc2l6ZTogMTRweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiAyMC8xNFxuXHRcdCksXG5cdFx0bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogMTRweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiAyMS8xNFxuXHRcdCksXG5cdFx0eGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDE0cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjEvMTRcblx0XHQpXG5cdCksXG5cdG1lZGl1bTogKFxuXHRcdHNtYWxsOiAoXG5cdFx0XHRmb250LXNpemU6IDE2cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjIvMTZcblx0XHQpLFxuXHRcdGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDE2cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjIvMTZcblx0XHQpLFxuXHRcdHhsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAxNnB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDI0LzE2XG5cdFx0KVxuXHQpLFxuXHRsYXJnZTogKFxuXHRcdHNtYWxsOiAoXG5cdFx0XHRmb250LXNpemU6IDE4cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjQvMThcblx0XHQpLFxuXHRcdGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDE4cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjcvMThcblx0XHQpLFxuXHRcdHhsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAxOHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDI3LzE4XG5cdFx0KVxuXHQpLFxuXHR4bGFyZ2U6IChcblx0XHRzbWFsbDogKFxuXHRcdFx0Zm9udC1zaXplOiAxOHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDI0LzE4XG5cdFx0KSxcblx0XHRsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAyMHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDI3LzIwXG5cdFx0KSxcblx0XHR4bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogMjBweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiAyOC8yMFxuXHRcdClcblx0KSxcblx0eHhsYXJnZTogKFxuXHRcdHNtYWxsOiAoXG5cdFx0XHRmb250LXNpemU6IDIxcHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjYvMjFcblx0XHQpLFxuXHRcdGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDIycHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjgvMjJcblx0XHQpLFxuXHRcdHhsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAyM3B4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDMwLzIzXG5cdFx0KVxuXHQpLFxuXHR4eHhsYXJnZTogKFxuXHRcdHNtYWxsOiAoXG5cdFx0XHRmb250LXNpemU6IDI0cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjkvMjRcblx0XHQpLFxuXHRcdGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDI3cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMzQvMjdcblx0XHQpLFxuXHRcdHhsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAzMHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDM5LzMwXG5cdFx0KVxuXHQpLFxuXHR4eHh4bGFyZ2U6IChcblx0XHRzbWFsbDogKFxuXHRcdFx0Zm9udC1zaXplOiAzMHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDM2LzMwXG5cdFx0KSxcblx0XHRsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAzNXB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDQyLzM1XG5cdFx0KSxcblx0XHR4bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogNDBweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiA0OC80MFxuXHRcdCksXG5cdCksXG5cdHh4eHh4bGFyZ2U6IChcblx0XHRzbWFsbDogKFxuXHRcdFx0Zm9udC1zaXplOiA0MHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDQ2LzQwXG5cdFx0KSxcblx0XHRsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiA1MHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDU4LzUwXG5cdFx0KSxcblx0XHR4bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogNjBweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiA3MC82MFxuXHRcdClcblx0KVxuKTtcblxuLy8vICRzLXR5cGUtc3BhY2luZ1xuLy8vIEVzdGFibGlzaGVzIGEgbWFwIGNvbnRhaW5pbmcgdmVydGljYWwgdHlwZSBzcGFjaW5nIHZhbHVlcyBhdCBlYWNoIGRlZmluZWQgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gJHMtdHlwZS1zcGFjaW5nOiAoXG4vLy8gXHRzbWFsbDogKFxuLy8vIFx0XHRzbWFsbDogMTBweCxcbi8vLyBcdFx0bWVkaXVtOiAyMHB4XG4vLy8gXHQpLFxuLy8vIFx0bWVkaXVtOiAoXG4vLy8gXHRcdHNtYWxsOiAyMHB4LFxuLy8vIFx0XHRtZWRpdW06IDQwcHhcbi8vLyBcdCksXG4vLy8gXHRsYXJnZTogKFxuLy8vIFx0XHRzbWFsbDogMzBweCxcbi8vLyBcdFx0bWVkaXVtOiA2MHB4XG4vLy8gXHQpXG4vLy8gKTtcbiRzLXR5cGUtc3BhY2luZzogKFxuXHR4c21hbGw6IChcblx0XHRzbWFsbDogOHB4LFxuXHRcdGxhcmdlOiA4cHhcblx0KSxcblx0c21hbGw6IChcblx0XHRzbWFsbDogMTZweCxcblx0XHRsYXJnZTogMTZweFxuXHQpLFxuXHRtZWRpdW06IChcblx0XHRzbWFsbDogMjBweCxcblx0XHRsYXJnZTogMjFweFxuXHQpLFxuXHRsYXJnZTogKFxuXHRcdHNtYWxsOiAyMnB4LFxuXHRcdGxhcmdlOiAyNHB4XG5cdCksXG5cdHhsYXJnZTogKFxuXHRcdHNtYWxsOiAyNHB4LFxuXHRcdGxhcmdlOiAyN3B4XG5cdCksXG5cdHh4bGFyZ2U6IChcblx0XHRzbWFsbDogMzJweCxcblx0XHRsYXJnZTogMzJweFxuXHQpXG4pO1xuXG4kcy1iYXNlLWZvbnQtc2l6ZTogMTZweDtcbiRzLWJhc2UtbGluZS1oZWlnaHQ6IDE7XG4iLCIvLyBTZXR0aW5ncyAtIFRyYW5zaXRpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vLyAkcy1zdHJhbnNpdGlvbnNcbi8vLyBFc3RhYmxpc2hlcyBhIG1hcCBjb250YWluaW5nIGdsb2JhbCB0cmFuc2l0aW9uIHNldHRpbmdzLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAkcy1icmVha3BvaW50czogKFxuLy8vXHRcdHNsaWRlOiAwLjVzIGVhc2UtaW5cbi8vLyApO1xuJHMtdHJhbnNpdGlvbnM6IChcblx0YWN0aXZlOiAwLjNzIGVhc2UsXG5cdGZhZGU6IDAuM3MgZWFzZSxcblx0aG92ZXI6IDAuMnMgZWFzZS1vdXQsXG5cdG92ZXJsYXk6IDAuMnMgZWFzZS1vdXQsXG5cdHNsaWRlOiAwLjNzIGVhc2Vcbik7XG4iLCIvLyBUb29scyAtIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy8gQGZ1bmN0aW9uIHQtZ2V0LWJyZWFrcG9pbnQtd2lkdGhcbi8vLyBHZXRzIGEgYnJlYWtwb2ludCB3aWR0aCBtYXRjaGluZyBhIGJyZWFrcG9pbnQga2V5LlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHdpZHRoXHQtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBicmVha3BvaW50IGtleSBpbiB0aGUgJHMtYnJlYWtwb2ludHMgbWFwIG9yIGEgTnVtYmVyICh3aXRoIG9yIHdpdGhvdXQgYSB1bml0KS5cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gQSBOdW1iZXIgcmVwcmVzZW50aW5nIHRoZSBtYXAgdmFsdWUgb3IgdGhlIG9yaWdpbmFsIHZhbHVlLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyB0LWdldC1icmVha3BvaW50LXdpZHRoKCdzbWFsbCcpO1xuQGZ1bmN0aW9uIHQtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHdpZHRoKSB7XG5cblx0QGlmIHR5cGUtb2YoJHdpZHRoKSAhPSBcIm51bWJlclwiIHtcblx0XHRAcmV0dXJuIG1hcC1nZXQoJHMtYnJlYWtwb2ludHMsICR3aWR0aCk7XG5cdH1cblxuXHRAcmV0dXJuICR3aWR0aDtcbn1cblxuXG4vLyBNaXhpbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vIEBtaXhpbiB0LXJlc3BvbmQtdG8tbWluXG4vLy8gTWVkaWEgcXVlcnkgaW5qZWN0aW9uIHJlc3BvbmRpbmcgdG8gYSBtaW5pbXVtIHdpZHRoIHdpdGggQGNvbnRlbnQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkd2lkdGggLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgYnJlYWtwb2ludCBrZXkgaW4gdGhlICRzLWJyZWFrcG9pbnRzIG1hcCBvciBhIE51bWJlciAod2l0aCBvciB3aXRob3V0IGEgdW5pdCkuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vXHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tbWluKHNtYWxsKSB7XG4vLy8gXHQvLyBAY29udGVudC4uLlxuLy8vIH1cbkBtaXhpbiB0LXJlc3BvbmQtdG8tbWluKCR3aWR0aCkge1xuXHQkd2lkdGg6IHQtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHdpZHRoKTtcblxuXHRAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR3aWR0aCkge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbi8vLyBAbWl4aW4gdC1yZXNwb25kLXRvLW1heFxuLy8vIE1lZGlhIHF1ZXJ5IGluamVjdGlvbiByZXNwb25kaW5nIHRvIGEgbWF4aW11bSB3aWR0aCB3aXRoIEBjb250ZW50LlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHdpZHRoIC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGJyZWFrcG9pbnQga2V5IGluIHRoZSAkcy1icmVha3BvaW50cyBtYXAgb3IgYSBOdW1iZXIgKHdpdGggb3Igd2l0aG91dCBhIHVuaXQpLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1yZXNwb25kLXRvLW1heChzbWFsbCkge1xuLy8vIFx0Ly8gQGNvbnRlbnQuLi5cbi8vLyB9XG5AbWl4aW4gdC1yZXNwb25kLXRvLW1heCgkd2lkdGgpIHtcblx0JHdpZHRoOiB0LWdldC1icmVha3BvaW50LXdpZHRoKCR3aWR0aCk7XG5cblx0Lyogc3R5bGVsaW50LWRpc2FibGUgbWVkaWEtZmVhdHVyZS1uby1taXNzaW5nLXB1bmN0dWF0aW9uICovXG5cdEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHdpZHRoIC0gMXB4KSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cblxuXHQvKiBzdHlsZWxpbnQtZW5hYmxlIG1lZGlhLWZlYXR1cmUtbm8tbWlzc2luZy1wdW5jdHVhdGlvbiAqL1xufVxuXG4vLy8gQG1peGluIHQtcmVzcG9uZC10by1taW4tbWF4XG4vLy8gTWVkaWEgcXVlcnkgaW5qZWN0aW9uIHJlc3BvbmRpbmcgdG8gYSB3aWR0aCByYW5nZSBzcGVjaWZpZWQgYnkgYSBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRoIHdpdGggQGNvbnRlbnQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkbWluLXdpZHRoIC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGJyZWFrcG9pbnQga2V5IGluIHRoZSAkcy1icmVha3BvaW50cyBtYXAgb3IgYSBOdW1iZXIgKHdpdGggb3Igd2l0aG91dCBhIHVuaXQpLlxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkbWF4LXdpZHRoIC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGJyZWFrcG9pbnQga2V5IGluIHRoZSAkcy1icmVha3BvaW50cyBtYXAgb3IgYSBOdW1iZXIgKHdpdGggb3Igd2l0aG91dCBhIHVuaXQpLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1yZXNwb25kLXRvLW1heChzbWFsbCwgbGFyZ2UpIHtcbi8vLyBcdC8vIEBjb250ZW50Li4uXG4vLy8gfVxuQG1peGluIHQtcmVzcG9uZC10by1taW4tbWF4KCRtaW4td2lkdGgsICRtYXgtd2lkdGgpIHtcblx0JG1pbi13aWR0aDogdC1nZXQtYnJlYWtwb2ludC13aWR0aCgkbWluLXdpZHRoKTtcblx0JG1heC13aWR0aDogdC1nZXQtYnJlYWtwb2ludC13aWR0aCgkbWF4LXdpZHRoKTtcblxuXHRAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4td2lkdGgpIGFuZCAobWF4LXdpZHRoOiAkbWF4LXdpZHRoIC0gMXB4KSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuLy8vIEBtaXhpbiB0LXJlc3BvbmQtdG8tcmVzXG4vLy8gTWVkaWEgcXVlcnkgaW5qZWN0aW9uIHJlc3BvbmRpbmcgdG8gYSBzcGVjaWZpZWQgZGlzcGxheSByZXNvbHV0aW9uIHdpdGggQGNvbnRlbnQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZHAgLSBBIE51bWJlciB3aGljaCByZXByZXNlbnRzIHRoZSB0YXJnZXQgZGV2aWNlIHBpeGVsIHJhdGlvIG11bHRpcGxpZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyZXMgLSBBIE51bWJlciB3aGljaCByZXByZXNlbnRzIHRoZSB0YXJnZXQgcmVzb2x1dGlvbiBkZW5zaXR5LlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1yZXNwb25kLXRvLXJlcygyLCAxOTJkcHB4KSB7XG4vLy8gXHQvLyBAY29udGVudC4uLlxuLy8vIH1cbkBtaXhpbiB0LXJlc3BvbmQtdG8tcmVzKCRyZXM6IDJkcHB4KSB7XG5cblx0Lyogc3R5bGVsaW50LWRpc2FibGUgbWVkaWEtZmVhdHVyZS1uYW1lLW5vLXZlbmRvci1wcmVmaXggKi9cblx0QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICRyZXMpIHtcblx0XHRAY29udGVudDtcblx0fVxuXG5cdC8qIHN0eWxlbGludC1lbmFibGUgbWVkaWEtZmVhdHVyZS1uYW1lLW5vLXZlbmRvci1wcmVmaXggKi9cbn1cblxuLy8vIEBtaXhpbiB0LXJlc3BvbmQtdG8tb3JpZW50YXRpb25cbi8vLyBNZWRpYSBxdWVyeSBpbmplY3Rpb24gcmVzcG9uZGluZyB0byBhIHNwZWNpZmllZCBkZXZpY2Ugb3JpZW50YXRpb24gd2l0aCBAY29udGVudC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcmllbnRhdGlvbiAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgdGhlIHRhcmdldCBkZXZpY2Ugb3JpZW50YXRpb24uXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vXHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tb3JpZW50YXRpb24ocG9ydHJhaXQpIHtcbi8vLyBcdC8vIEBjb250ZW50Li4uXG4vLy8gfVxuQG1peGluIHQtcmVzcG9uZC10by1vcmllbnRhdGlvbigkb3JpZW50YXRpb24pIHtcblxuXHRAbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogJG9yaWVudGF0aW9uKSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuLy8vIEBtaXhpbiB0LXByaW50XG4vLy8gTWVkaWEgcXVlcnkgaW5qZWN0aW9uIGZvciBwcmludCBzcGVjaWZpYyBzdHlsZXMuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1wcmludCB7XG4vLy8gXHQvLyBAY29udGVudC4uLlxuLy8vIH1cbkBtaXhpbiB0LXByaW50IHtcblxuXHRAbWVkaWEgcHJpbnQge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9*/