@charset "UTF-8";
* {
  box-sizing: border-box; }

html {
  -webkit-font-smoothing: antialiased;
  height: 100%; }

body {
  margin: 0;
  font-family: "averta", "Arial", sans-serif;
  font-size: 14px; }

h3 {
  font-family: "averta-bold", "Arial", sans-serif;
  color: #212945;
  font-size: 35px;
  font-weight: normal; }

.h1 {
  font-size: 30px !important;
  line-height: 38px !important; }

.h2 {
  font-size: 24px !important;
  line-height: 30px !important; }

.h6 {
  font-family: "averta", "Arial", sans-serif;
  font-size: 18px;
  line-height: 22px; }

.mw-90 {
  max-width: 90%;
  margin-left: auto;
  margin-right: auto; }

@media (min-width: 768px) {
  .h1 {
    font-size: 95px !important;
    line-height: 120px !important; }
  .h2 {
    font-size: 56px !important;
    line-height: 70px !important; }
  .h4 {
    font-size: 42px !important;
    line-height: 52.5px !important;
    font-family: "averta-extrabold", "averta-bold", Arial, sans-serif; }
  .h5 {
    font-size: 20px !important;
    line-height: 25px !important;
    font-family: "averta", "Arial", sans-serif; }
  .h6 {
    font-size: 36px;
    line-height: 45px; } }

.btn {
  display: block;
  font-family: "bebas", "Helvetica", sans-serif;
  font-size: 16px;
  color: #FF4B81;
  letter-spacing: 1px;
  padding: 12px 0;
  width: 209px;
  text-align: center;
  text-transform: uppercase;
  border: 3px solid #C9CBD2;
  margin: 0 auto;
  text-decoration: none;
  -webkit-transition: all 0.3s;
  -moz-transition: all 0.3s;
  -ms-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s; }
  .btn:hover {
    background-color: #FF4B81;
    border-color: #FF4B81;
    color: white; }
  @media (min-width: 768px) {
    .btn {
      font-size: 20px;
      width: 307px;
      padding: 23px 0;
      letter-spacing: 2px;
      max-width: 100%; } }

header.over-hero:not(.menu-active) .link-join {
  border-color: #FF4B81; }
  header.over-hero:not(.menu-active) .link-join:hover {
    border-color: white;
    background-color: white;
    color: #FF4B81; }

.is-sticky header.over-hero .link-join {
  border-color: white; }

.btn-white {
  width: 216px;
  padding: 8px 0;
  color: white;
  border-color: white;
  text-transform: none;
  font-size: 18px;
  font-family: "averta-bold", "Arial", sans-serif;
  letter-spacing: 0; }
  .btn-white:hover {
    background-color: white;
    border-color: white;
    color: #212945; }

.btn-product {
  color: white;
  border: none;
  background: rgba(0, 0, 0, 0.15);
  -webkit-transition: all 0.3s;
  -moz-transition: all 0.3s;
  -ms-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s; }
  .btn-product:hover {
    background: white; }
    .btn-product:hover.btn-product-skinny {
      color: #7d4f9d; }
    .btn-product:hover.btn-product-body {
      color: #061968; }
    .btn-product:hover.btn-product-ce {
      color: #50b277; }
    .btn-product:hover.btn-product-sand {
      color: #ff3b65; }

.background-pink {
  background-color: #FCE0E3; }

.background-lightpink {
  background-color: #FCE0E3; }

.background-darkpink {
  background-color: #FF4B81; }

.background-green {
  background-color: #00E5E3; }

.background-lightgreen {
  background-color: #A5F3F3; }

.background-grey {
  background-color: #DADADA; }

.background-lightgrey {
  background-color: #F7FAFC; }

.background-blue {
  background-color: #143695; }

.background-purple {
  background-color: #A27CBD; }

.background-deepblue {
  background-color: #0A2AB0; }

.background-blue-popsmile {
  background-color: #0047bb; }

.background-ss-apc {
  background-color: #FF6F8D !important; }

.background-ss-apc-light {
  background-color: #FFEFF2 !important; }

.background-ss-aea {
  background-color: #CC3195 !important; }

.background-ss-aea-light {
  background-color: #F5E7F3 !important; }

.background-ss-tsw {
  background-color: #42A1CA !important; }

.background-ss-tsw-light {
  background-color: #DFF4F9 !important; }

.background-ce-primary {
  background-color: #F3436C !important; }

.background-ce-primary-light {
  background-color: #F5DADF !important; }

.background-ce-primary-dark {
  background-color: #B22D4B !important; }

.background-ce-secondary {
  background-color: #00635B !important; }

.background-ce-secondary-light {
  background-color: #E0F0E9 !important; }

.background-ce-bali-bod {
  background-color: #213E7B !important; }

.background-white {
  background-color: #fff !important; }

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

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

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

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

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

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

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

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

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

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

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

.text-ss-apc {
  color: #FF6F8D !important; }

.text-ss-apc-light {
  color: #FFEFF2 !important; }

.text-ss-aea {
  color: #CC3195 !important; }

.text-ss-aea-light {
  color: #F5E7F3 !important; }

.text-ss-tsw {
  color: #42A1CA !important; }

.text-ss-tsw-light {
  color: #DFF4F9 !important; }

.text-white {
  color: #fff !important; }

.text-ce-primary {
  color: #F3436C !important; }

.text-ce-primary-light {
  color: #F5DADF !important; }

.text-ce-primary-dark {
  color: #B22D4B !important; }

.text-ce-secondary {
  color: #00635B !important; }

.text-ce-secondary-light {
  color: #E0F0E9 !important; }

.text-dark-blue {
  color: #282C44 !important; }

.text-grey {
  color: #9894A4 !important; }

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

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

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

.text-spacing-normal {
  letter-spacing: normal !important; }

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

.px-1 {
  padding-left: 5px;
  padding-right: 5px;
  font-size: 1.8em !important; }

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

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

@media (max-width: 768px) {
  .h-sm-auto {
    height: auto !important; }
    .h-sm-auto .text-spacing-normal {
      padding-bottom: 35px !important; } }

@media (min-width: 1024px) {
  .d-lg-none {
    display: none !important; }
  .d-lg-block {
    display: block !important; }
  .d-lg-flex {
    display: flex !important; } }

.mw-none {
  max-width: none !important; }

.background-green-ce {
  background-color: #50b277; }
  .background-green-ce.item-grid .item-grid-text {
    color: #fff; }

.section-image-grid
div.background-green-ce.item-grid .item-grid-text {
  color: #fff; }

.section-image-grid
div.background-green-ce.item-grid .item-grid-text-small {
  color: #fff; }

.background-pink-sandsky {
  background-color: #ff7b90; }

.background-bb-navy {
  background-color: #213F93; }

.background-sm-purple {
  background-color: #9966CC; }

div.text-pink .section-text-large {
  color: #FF4B81; }

div.text-green .section-text-large {
  color: #A5F3F3; }

.section-image-grid
div.text-purple.item-grid .item-grid-text {
  color: #A27CBD; }

.section-image-grid
div.text-purple.item-grid .item-grid-text-small {
  color: #A27CBD; }

.section-image-grid
div.text-deepblue.item-grid .item-grid-text {
  color: #0A2AB0; }

.section-image-grid
div.text-deepblue.item-grid .item-grid-text-small {
  color: #0A2AB0; }

.section-image-grid
div.text-green-ce.item-grid .item-grid-text {
  color: #50b277; }

.section-image-grid
div.text-green-ce.item-grid .item-grid-text-small {
  color: #50b277; }

.section-image-grid
div.text-pink-sandsky.item-grid .item-grid-text {
  color: #FF87A1; }

.section-image-grid
div.text-pink-sandsky.item-grid .item-grid-text-small {
  color: #FF87A1; }

.text-transparent {
  opacity: 0.36; }

.text-shadow {
  text-shadow: 0 2px 75px rgba(0, 0, 0, 0.4); }

.section-text-large, .section-text-small {
  max-width: 1400px; }

.grid-max-width {
  max-width: 850px;
  margin-top: 4.5%;
  margin-left: auto;
  margin-right: auto; }
  @media (max-width: 400px) {
    .grid-max-width {
      max-width: 350px;
      margin-top: 4.5%;
      margin-left: auto;
      margin-right: auto; } }

.vimeo-video {
  height: 100%;
  width: auto;
  display: none; }

.plyr {
  height: 100%; }

.plyr__video-embed > div {
  transform: translateY(-24.95%); }

.play-btn {
  display: none !important; }

.fadeInUp, .fadeInDown, .fadeIn {
  visibility: hidden;
  -moz-transition: opacity 150ms ease-out;
  -webkit-transition: opacity 150ms ease-out;
  -o-transition: opacity 150ms ease-out;
  transition: opacity 150ms ease-out; }

.product-sandsky {
  margin-top: 100px; }

header {
  width: 100%;
  overflow: hidden;
  position: relative;
  left: auto;
  right: auto;
  padding: 11px 11px 11px 14px;
  z-index: 20;
  -webkit-transition: all 0.4s;
  -moz-transition: all 0.4s;
  -ms-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s; }
  header.menu-active {
    position: absolute;
    left: 0;
    right: 0;
    height: 100vh;
    z-index: 10; }
    header.menu-active nav {
      display: block; }
    header.menu-active .logo {
      display: none; }
  header.menu-active.over-hero {
    background-color: #FF4B81; }
  header.over-hero {
    position: absolute;
    top: 0;
    left: 0;
    right: 0; }
  @media (min-width: 1024px) {
    header {
      padding: 43px 42px 36px 45px; } }
  header .logo {
    float: left;
    margin-top: 9px; }
    @media (min-width: 1024px) {
      header .logo {
        margin-top: 11px; } }
    header .logo img {
      width: 196px;
      height: auto; }
      @media (min-width: 1024px) {
        header .logo img {
          width: 211px; } }
  header nav {
    display: none;
    margin: 10px ​auto 25px; }
    @media (min-width: 768px) {
      header nav {
        margin: 10px ​auto 25px; } }
    @media (min-width: 1024px) {
      header nav {
        width: auto;
        margin: 0;
        background: none;
        position: relative;
        float: right;
        display: block; } }
    header nav a {
      color: white;
      font-family: "averta-bold", "Arial", sans-serif;
      font-size: 18px;
      text-decoration: none;
      line-height: 40px;
      border-top: 3px solid transparent;
      letter-spacing: 0.5px;
      display: block;
      width: 100%;
      text-align: center;
      -webkit-transition: all 0.2s;
      -moz-transition: all 0.2s;
      -ms-transition: all 0.2s;
      -o-transition: all 0.2s;
      transition: all 0.2s; }
      header nav a.active, header nav a:hover {
        text-decoration: none; }
      @media (min-width: 1024px) {
        header nav a:hover {
          background-color: #212945; } }
      @media (min-width: 1024px) {
        header nav a.active {
          background-color: rgba(33, 41, 69, 0.1); } }
      @media (min-width: 1024px) {
        header nav a {
          display: block;
          width: auto;
          float: left;
          padding: 0 18px;
          margin-left: 2px;
          border: 3px solid transparent; }
          header nav a:nth-child(5) {
            padding-right: 27px; } }
      header nav a.link-join {
        padding: 0 18px;
        border: 3px solid white;
        margin: 15px auto;
        width: 70%; }
        header nav a.link-join:hover {
          opacity: 1;
          background-color: white; }
        @media (min-width: 1024px) {
          header nav a.link-join {
            margin: 0 0 0 2px;
            width: auto; } }
    header nav.nav-over a {
      opacity: 0.5; }
      header nav.nav-over a.nav-item-over {
        opacity: 1; }
  @media (min-width: 1024px) {
    header.background-darkpink .link-join:hover {
      color: #FF4B81; }
    header.background-green .link-join:hover {
      color: #00E5E3; }
    header.background-blue .link-join:hover {
      color: #143695; }
    header.background-ss-tsw .link-join:hover {
      color: #42A1CA; } }
  header .social-links {
    display: none;
    width: 55%;
    margin: 0 auto;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between; }
    header .social-links img {
      height: 27px; }
    @media (min-width: 1024px) {
      header .social-links {
        display: none; } }

.home .sticky-wrapper {
  position: absolute;
  width: 100%; }

.sticky-wrapper {
  height: auto !important; }

.is-sticky header {
  position: fixed;
  height: 60px;
  padding: 11px 11px 11px 14px;
  z-index: 100; }
  @media (min-width: 1024px) {
    .is-sticky header {
      padding: 14px 42px 0 45px;
      height: 70px; } }
  .is-sticky header.over-hero {
    background-color: #FF4B81; }
  .is-sticky header.menu-active {
    height: auto !important; }
    @media (max-width: 991px) {
      .is-sticky header.menu-active {
        overflow-y: auto;
        padding-bottom: 40px; } }

.menu-active .social-links {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }

#nav-toggle {
  float: right;
  display: block;
  width: 38px;
  height: 36px;
  z-index: 10;
  cursor: pointer;
  padding: 15px 7px 17px;
  border: 3px solid white; }
  @media (min-width: 1024px) {
    #nav-toggle {
      display: none; } }

@media (max-width: 991px) {
  .menu-active #nav-toggle {
    position: absolute;
    right: 11px; } }

.over-hero #nav-toggle {
  border: 3px solid #FF4B81; }

#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
  cursor: pointer;
  border-radius: 1px;
  height: 3px;
  width: 18px;
  background: #fff;
  position: absolute;
  display: block;
  content: ''; }

#nav-toggle.active span, #nav-toggle.active span:before, #nav-toggle.active span:after {
  background: white; }

#nav-toggle span:before {
  top: -7px; }

#nav-toggle span:after {
  bottom: -7px; }

#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
  transition: all 400ms ease-in-out; }

#nav-toggle.active span {
  background-color: transparent; }

#nav-toggle.active span:before, #nav-toggle.active span:after {
  top: 0; }

#nav-toggle.active span:before {
  transform: rotate(45deg); }

#nav-toggle.active span:after {
  transform: rotate(-45deg); }

footer {
  background-color: #212945;
  width: 100%; }

.footer-top {
  position: relative;
  padding: 49px 0;
  text-align: center;
  border-bottom: 2px solid #555B70; }
  @media (min-width: 768px) {
    .footer-top {
      padding: 74px 37px 44px 47px;
      overflow: hidden; } }
  .footer-top .logo {
    margin-bottom: 19px;
    width: 209px;
    height: auto; }
    @media (min-width: 768px) {
      .footer-top .logo {
        float: left;
        margin-right: 20px; } }
  .footer-top .location-list {
    display: table;
    margin: 0 auto 22px; }
    @media (min-width: 768px) {
      .footer-top .location-list {
        display: none; } }
    @media (min-width: 1024px) {
      .footer-top .location-list {
        display: table;
        width: 60%;
        position: absolute;
        top: 71px;
        left: 50%;
        margin-left: -30%; } }
    .footer-top .location-list span {
      color: white;
      padding-right: 19px;
      background: url(../img/dot_grey_trans.png) right 8px center no-repeat;
      background-size: 4px auto; }
      @media (min-width: 768px) {
        .footer-top .location-list span {
          font-size: 18px;
          font-family: 'averta-extrabold', arial, sans-serif; } }
      .footer-top .location-list span:last-child {
        padding-right: 0;
        background: none; }
  @media (min-width: 768px) {
    .footer-top .btn {
      float: right;
      margin-top: -15px; } }

.footer-bottom {
  width: 100%;
  padding: 42px 0 48px; }
  @media (min-width: 768px) {
    .footer-bottom {
      padding: 50px 25px 50px 45px;
      overflow: hidden; } }
  .footer-bottom .social-icons {
    width: 253px;
    margin: 0 auto 41px; }
    @media (min-width: 768px) {
      .footer-bottom .social-icons {
        float: right;
        width: auto;
        margin: 7px auto 0; } }
    .footer-bottom .social-icons > a {
      display: inline-block;
      padding: 0 28px;
      width: 83px;
      height: 32px;
      -webkit-transition: all 0.5s;
      -moz-transition: all 0.5s;
      -ms-transition: all 0.5s;
      -o-transition: all 0.5s;
      transition: all 0.5s; }
      .footer-bottom .social-icons > a.facebook {
        background: url(../img/facebook.png) center center no-repeat;
        background-size: auto 27px;
        width: 78px; }
        @media (min-width: 768px) {
          .footer-bottom .social-icons > a.facebook {
            background-size: auto 18px;
            width: 48px; } }
        .footer-bottom .social-icons > a.facebook:hover {
          background: url(../img/facebook_white.png) center center no-repeat;
          background-size: auto 27px; }
          @media (min-width: 768px) {
            .footer-bottom .social-icons > a.facebook:hover {
              background-size: auto 18px; } }
      .footer-bottom .social-icons > a.instagram {
        background: url(../img/instagram.png) center center no-repeat;
        background-size: auto 27px; }
        @media (min-width: 768px) {
          .footer-bottom .social-icons > a.instagram {
            background-size: auto 18px; } }
        .footer-bottom .social-icons > a.instagram:hover {
          background: url(../img/instagram_white.png) center center no-repeat;
          background-size: auto 27px; }
          @media (min-width: 768px) {
            .footer-bottom .social-icons > a.instagram:hover {
              background-size: auto 18px; } }
      .footer-bottom .social-icons > a.linkedin {
        background: url(../img/linkedin.png) center center no-repeat;
        background-size: auto 27px; }
        @media (min-width: 768px) {
          .footer-bottom .social-icons > a.linkedin {
            background-size: auto 18px; } }
        .footer-bottom .social-icons > a.linkedin:hover {
          background: url(../img/linkedin_white.png) center center no-repeat;
          background-size: auto 27px; }
          @media (min-width: 768px) {
            .footer-bottom .social-icons > a.linkedin:hover {
              background-size: auto 18px; } }
      @media (min-width: 768px) {
        .footer-bottom .social-icons > a {
          padding: 0 15px;
          width: 48px;
          height: 23px; } }
  .footer-bottom .fineprint {
    color: #555B70;
    font-size: 13px;
    text-align: center; }
    @media (min-width: 768px) {
      .footer-bottom .fineprint {
        float: left;
        margin-top: 5px; } }
    .footer-bottom .fineprint p {
      margin: 4px 0; }
      @media (min-width: 768px) {
        .footer-bottom .fineprint p {
          float: left;
          padding-right: 20px; } }
    .footer-bottom .fineprint a {
      display: block;
      margin: 4px 0;
      color: #555B70;
      text-decoration: none; }
      .footer-bottom .fineprint a:hover {
        color: white; }
      @media (min-width: 768px) {
        .footer-bottom .fineprint a {
          float: left;
          padding-right: 20px; } }
      @media (min-width: 768px) {
        .footer-bottom .fineprint a.logo-flint {
          padding-right: 27px;
          background: url(../img/flint.png) right -7px no-repeat;
          background-size: 31px auto;
          padding-top: 4px;
          height: 29px;
          margin-top: -1px; } }

.fineprint a {
  display: none !important; }

.section-hero {
  width: 100%;
  overflow: hidden;
  height: 90vh;
  position: relative; }
  .section-hero .item-hero {
    width: 100%;
    background-position: center center;
    background-size: cover;
    background-repeat: no-repeat;
    height: 90vh;
    display: table;
    table-layout: fixed; }
    .section-hero .item-hero .item-hero-text {
      display: table-cell;
      vertical-align: middle;
      color: white;
      font-family: "averta-bold", "Arial", sans-serif;
      font-size: 30px;
      max-width: 95%;
      margin: 0 auto;
      letter-spacing: 0.5px;
      line-height: 31px;
      text-align: center; }
      @media (min-width: 768px) {
        .section-hero .item-hero .item-hero-text {
          font-size: 75px;
          line-height: 75px; }
          .section-hero .item-hero .item-hero-text span {
            width: 95%;
            max-width: 958px;
            display: block;
            margin: 0 auto; } }
      @media (min-width: 1024px) {
        .section-hero .item-hero .item-hero-text {
          font-size: 88px;
          line-height: 84px; } }

.home .section-hero {
  height: 350px; }
  @media (min-width: 768px) {
    .home .section-hero {
      height: 100vh; } }
  .home .section-hero .item-hero {
    height: 350px; }
    @media (min-width: 768px) {
      .home .section-hero .item-hero {
        height: 100vh; } }

.section-text {
  padding: 59px 20px 57px; }
  .section-text.section-heading-new {
    padding: 140px 15px 57px; }
    .section-text.section-heading-new.homepage-centered {
      padding-top: 60px;
      padding-bottom: 60px; }
  @media (min-width: 768px) {
    .section-text {
      padding: 155px 0 140px; }
      .section-text.section-heading-new {
        padding: 125px 0; } }
  .section-text.with-button {
    padding: 41px 20px 68px; }
    @media (min-width: 768px) {
      .section-text.with-button {
        padding: 52px 20px; } }
  .section-text.after-arrow {
    padding: 18px 0 34px; }
    @media (min-width: 768px) {
      .section-text.after-arrow {
        padding: 125px 0 141px; } }
    .section-text.after-arrow.with-button {
      padding: 11px 0 23px; }
      @media (min-width: 768px) {
        .section-text.after-arrow.with-button {
          padding: 63px 0 100px; } }
  .section-text.background-pink {
    padding: 60px 0 43px; }
  .section-text.margin-small {
    clear: both;
    padding: 33px 0 36px; }
    @media (min-width: 768px) {
      .section-text.margin-small {
        padding: 75px 0 85px; } }
  .section-text .section-text-large {
    width: 95%;
    color: #212945;
    font-family: "averta-bold", "Arial", sans-serif;
    font-size: 20px;
    text-align: center;
    margin: 0 auto 25px;
    line-height: 22px; }
    @media (min-width: 768px) {
      .section-text .section-text-large {
        width: 64%;
        font-size: 50px;
        line-height: 54px;
        letter-spacing: -1px;
        margin-bottom: 40px; } }
  .section-text .section-text-small {
    width: 95%;
    margin: 0 auto;
    color: #9094A2;
    font-family: "averta", "Arial", sans-serif;
    font-size: 18px;
    letter-spacing: 0.5px;
    text-align: center; }
    @media (min-width: 510px) {
      .section-text .section-text-small {
        width: 70%; } }
    @media (min-width: 768px) {
      .section-text .section-text-small {
        font-size: 28px;
        width: 60%; } }
  .section-text .section-text-small + .btn {
    margin-top: 39px; }
    @media (min-width: 768px) {
      .section-text .section-text-small + .btn {
        margin-top: 35px; } }

.section-image-grid {
  width: 100%;
  display: flex;
  flex-wrap: wrap; }
  .section-image-grid .item-grid {
    background-position: center center;
    background-size: cover;
    background-repeat: no-repeat;
    position: relative;
    width: 100%;
    height: 252px;
    cursor: pointer; }
    .section-image-grid .item-grid.item-split {
      height: 50vh;
      float: left; }
    @media (min-width: 768px) {
      .section-image-grid .item-grid {
        width: 50%;
        height: 33.2vw;
        background-position: center; }
        .section-image-grid .item-grid.item-split {
          width: 100%;
          height: 100vh; } }
    .section-image-grid .item-grid:before {
      content: "";
      display: block;
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      transition: all .3s linear; }
    .section-image-grid .item-grid:hover:before {
      background: rgba(0, 0, 0, 0.25); }
    .section-image-grid .item-grid .item-grid-text {
      position: absolute;
      left: 20px;
      bottom: 42px;
      color: white;
      font-family: "averta-bold", "Arial", sans-serif;
      font-size: 37px;
      letter-spacing: -1px; }
      @media (min-width: 768px) {
        .section-image-grid .item-grid .item-grid-text {
          font-size: 60px;
          left: 60px;
          bottom: 58px;
          transition: all 0.2s linear; } }
    .section-image-grid .item-grid .item-grid-text-small {
      position: absolute;
      left: 20px;
      bottom: 22px;
      color: white;
      font-family: "averta-bold", "Arial", sans-serif;
      font-size: 16px;
      letter-spacing: -0.5px; }
      @media (min-width: 768px) {
        .section-image-grid .item-grid .item-grid-text-small {
          font-size: 20px;
          left: 60px;
          bottom: 29px;
          letter-spacing: -1px;
          transition: all 0.2s linear; } }
    @media (min-width: 768px) {
      .section-image-grid .item-grid:hover .item-grid-text {
        bottom: 75px; } }
    @media (min-width: 768px) {
      .section-image-grid .item-grid:hover .item-grid-text-small {
        bottom: 46px; } }
  .section-image-grid.stats {
    overflow: hidden; }
    .section-image-grid.stats.grid-brands:not(.grid-brands-popsmile) {
      margin-bottom: 0; }
      @media (min-width: 768px) {
        .section-image-grid.stats.grid-brands:not(.grid-brands-popsmile) {
          margin-bottom: 0; } }
    .section-image-grid.stats .item-grid {
      float: left;
      width: 50%;
      height: 50vw;
      cursor: default; }
      @media (min-width: 768px) {
        .section-image-grid.stats .item-grid {
          width: 33.3333333%;
          height: 33.333333vw; } }
      .section-image-grid.stats .item-grid:hover:before {
        display: none; }
      .section-image-grid.stats .item-grid p {
        margin: 10px 0; }
      .section-image-grid.stats .item-grid .item-grid-text {
        font-size: 40px;
        font-family: "averta-extrabold", "averta-bold", Arial, sans-serif;
        text-align: center;
        margin-top: 32%;
        color: #00E5E3;
        position: relative;
        top: auto;
        left: auto;
        bottom: auto; }
        .section-image-grid.stats .item-grid .item-grid-text.grid-text-medium {
          font-size: 20px;
          padding: 0 3%; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid .item-grid-text.grid-text-medium {
              font-size: 33px; } }
          @media (min-width: 1024px) {
            .section-image-grid.stats .item-grid .item-grid-text.grid-text-medium {
              font-size: 45px; } }
        .section-image-grid.stats .item-grid .item-grid-text.grid-text-bebas {
          margin-top: 10%;
          font-family: "bebas", "Helvetica", sans-serif;
          letter-spacing: 1px;
          font-size: 19px; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid .item-grid-text.grid-text-bebas {
              font-size: 28px; } }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid .item-grid-text.grid-text-bebas {
              font-size: 32px;
              margin-top: 13%; } }
        .section-image-grid.stats .item-grid .item-grid-text.grid-text-bebas + .grid-text-medium {
          margin-top: 4.5%;
          font-size: 17px; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid .item-grid-text.grid-text-bebas + .grid-text-medium {
              font-size: 23px; } }
          @media (min-width: 1024px) {
            .section-image-grid.stats .item-grid .item-grid-text.grid-text-bebas + .grid-text-medium {
              font-size: 32px; } }
        .section-image-grid.stats .item-grid .item-grid-text.grid-text-normal {
          margin-top: 4.5%;
          font-size: 20px;
          font-family: "averta", "Arial", sans-serif; }
          .section-image-grid.stats .item-grid .item-grid-text.grid-text-normal span {
            font-family: "averta-bold", "Arial", sans-serif; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid .item-grid-text.grid-text-normal {
              font-size: 32px; } }
        @media (min-width: 768px) {
          .section-image-grid.stats .item-grid .item-grid-text.text-smaller {
            font-size: 60px; } }
        @media (min-width: 1024px) {
          .section-image-grid.stats .item-grid .item-grid-text.text-smaller {
            font-size: 65px; } }
        @media (min-width: 1440px) {
          .section-image-grid.stats .item-grid .item-grid-text.text-smaller {
            font-size: 78px; } }
        @media (min-width: 510px) {
          .section-image-grid.stats .item-grid .item-grid-text {
            margin-top: 40%; } }
        @media (min-width: 768px) {
          .section-image-grid.stats .item-grid .item-grid-text {
            margin-top: 35%;
            font-size: 60px;
            margin-bottom: 4.6%; } }
        @media (min-width: 1024px) {
          .section-image-grid.stats .item-grid .item-grid-text {
            margin-top: 35%;
            font-size: 70px;
            margin-bottom: 4.6%; } }
        @media (min-width: 1440px) {
          .section-image-grid.stats .item-grid .item-grid-text {
            font-size: 110px; } }
      .section-image-grid.stats .item-grid.grid-vietnam .item-grid-text.grid-text-bebas {
        color: white;
        margin-top: 11%; }
      .section-image-grid.stats .item-grid.grid-vietnam .item-grid-text {
        color: white;
        margin-top: 10%; }
      .section-image-grid.stats .item-grid .item-grid-text-small {
        font-size: 14px;
        text-align: center;
        color: #00E5E3;
        position: relative;
        top: auto;
        left: auto;
        bottom: auto;
        letter-spacing: 0;
        padding: 0 3%; }
        @media (min-width: 768px) {
          .section-image-grid.stats .item-grid .item-grid-text-small {
            font-size: 20px; } }
        .section-image-grid.stats .item-grid .item-grid-text-small.beauty-editor-text {
          font-size: 17px; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid .item-grid-text-small.beauty-editor-text {
              font-size: 38px; } }
      .section-image-grid.stats .item-grid.two-thirds {
        width: 100%; }
        @media (min-width: 768px) {
          .section-image-grid.stats .item-grid.two-thirds {
            width: 66.6666666%;
            height: 33.333333vw; } }
        .section-image-grid.stats .item-grid.two-thirds.re-grid-5 {
          width: 50%; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid.two-thirds.re-grid-5 {
              width: 66.6666%; } }
        .section-image-grid.stats .item-grid.two-thirds .item-grid-text {
          font-size: 50px;
          font-family: "averta-extrabold", "averta-bold", Arial, sans-serif;
          margin-top: 17%;
          margin-bottom: -5px; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid.two-thirds .item-grid-text {
              margin-top: 15.6%;
              font-size: 90px;
              margin-bottom: 0; } }
          @media (min-width: 1024px) {
            .section-image-grid.stats .item-grid.two-thirds .item-grid-text {
              margin-top: 14.6%;
              font-size: 110px; } }
          @media (min-width: 1920px) {
            .section-image-grid.stats .item-grid.two-thirds .item-grid-text {
              margin-top: 20.6%; } }
          .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-medium {
            font-size: 20px; }
            @media (min-width: 768px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-medium {
                font-size: 33px;
                margin-top: 12%; } }
            @media (min-width: 1024px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-medium {
                font-size: 44px;
                margin-top: 17%; } }
            @media (min-width: 1440px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-medium {
                font-size: 48px;
                margin-top: 21%; } }
          .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-small-med {
            font-size: 18px; }
            @media (min-width: 768px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-small-med {
                font-size: 35px; } }
          .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-bebas {
            margin-top: 10%;
            font-family: "bebas", "Helvetica", sans-serif;
            letter-spacing: 1px;
            font-size: 19px; }
            @media (min-width: 510px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-bebas {
                font-size: 23px;
                margin-top: 14%; } }
            @media (min-width: 768px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-bebas {
                font-size: 28px;
                margin-top: 10%; } }
            @media (min-width: 1024px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-bebas {
                font-size: 35px;
                margin-top: 13%; } }
          .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-bebas + .grid-text-medium {
            margin-top: 4.5%;
            font-size: 17px; }
            @media (min-width: 510px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-bebas + .grid-text-medium {
                font-size: 21px; } }
            @media (min-width: 768px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-bebas + .grid-text-medium {
                font-size: 23px; } }
            @media (min-width: 1024px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-bebas + .grid-text-medium {
                font-size: 35px; } }
          .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-normal {
            margin-top: 4.5%;
            font-size: 20px;
            font-family: "averta", "Arial", sans-serif; }
            .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-normal span {
              font-family: "averta-bold", "Arial", sans-serif; }
            @media (min-width: 768px) {
              .section-image-grid.stats .item-grid.two-thirds .item-grid-text.grid-text-normal {
                font-size: 32px; } }
        .section-image-grid.stats .item-grid.two-thirds .item-grid-text-small {
          font-size: 14px;
          margin-top: 3%; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid.two-thirds .item-grid-text-small {
              font-size: 20px; } }
      .section-image-grid.stats .item-grid.grid-pink .item-grid-text {
        color: #FF4B81; }
      .section-image-grid.stats .item-grid.grid-pink .item-grid-text-small {
        color: #FF4B81; }
      @media (min-width: 768px) {
        .section-image-grid.stats .item-grid.bi-website-visits {
          width: 66.6666666%;
          height: 33.333333vw; } }
      .section-image-grid.stats .item-grid.background-darkpink .item-grid-text {
        color: white; }
      .section-image-grid.stats .item-grid.background-darkpink .item-grid-text-small {
        color: white; }
      .section-image-grid.stats .item-grid.background-pink .item-grid-text {
        color: #FF4B81; }
      .section-image-grid.stats .item-grid.background-pink .item-grid-text-small {
        color: #FF4B81; }
      .section-image-grid.stats .item-grid.background-green .item-grid-text {
        color: white; }
      .section-image-grid.stats .item-grid.background-green .item-grid-text-small {
        color: white; }
      .section-image-grid.stats .item-grid.background-lightgreen .item-grid-text {
        color: #00E5E3; }
      .section-image-grid.stats .item-grid.background-lightgreen .item-grid-text-small {
        color: #00E5E3; }
      .section-image-grid.stats .item-grid.background-purple .item-grid-text {
        color: white; }
      .section-image-grid.stats .item-grid.background-purple .item-grid-text-small {
        color: white; }
      .section-image-grid.stats .item-grid.background-deepblue .item-grid-text {
        color: white; }
      .section-image-grid.stats .item-grid.background-deepblue .item-grid-text-small {
        color: white; }
      .section-image-grid.stats .item-grid.background-blue-popsmile .item-grid-text {
        color: white; }
      .section-image-grid.stats .item-grid.background-blue-popsmile .item-grid-text-small {
        color: white; }
      .section-image-grid.stats .item-grid.background-pink-sandsky .item-grid-text {
        color: white; }
      .section-image-grid.stats .item-grid.background-pink-sandsky .item-grid-text-small {
        color: white; }
      .section-image-grid.stats .item-grid.background-blue .item-grid-text {
        color: white; }
      .section-image-grid.stats .item-grid.background-blue .item-grid-text-small {
        color: white; }
      .section-image-grid.stats .item-grid.background-bb-navy .item-grid-text {
        color: white; }
      .section-image-grid.stats .item-grid.background-bb-navy .item-grid-text-small {
        color: white; }
      .section-image-grid.stats .item-grid.background-sm-purple .item-grid-text {
        color: white; }
      .section-image-grid.stats .item-grid.background-sm-purple .item-grid-text-small {
        color: white; }
      .section-image-grid.stats .item-grid .video-poster {
        position: relative;
        width: 100%;
        height: 100%;
        background-size: cover; }
        .section-image-grid.stats .item-grid .video-poster .play-btn {
          display: block;
          width: 73px;
          height: 73px;
          position: absolute;
          top: 50%;
          left: 50%;
          margin-top: -36px;
          margin-left: -36px; }
        .section-image-grid.stats .item-grid .video-poster .play-pink {
          background: #FF4B81 url(../img/triangle.png) center center no-repeat;
          background-size: 30px auto; }
        .section-image-grid.stats .item-grid .video-poster .play-green {
          background: #00E5E3 url(../img/triangle.png) center center no-repeat;
          background-size: 30px auto; }
        .section-image-grid.stats .item-grid .video-poster .play-purple {
          background: #A27CBD url(../img/triangle.png) center center no-repeat;
          background-size: 30px auto; }
      .section-image-grid.stats .item-grid.grid-icon {
        padding: 30px 0;
        position: relative;
        width: 100%;
        height: auto;
        border-bottom: 1px solid rgba(20, 54, 149, 0.2); }
        @media (min-width: 768px) {
          .section-image-grid.stats .item-grid.grid-icon {
            width: 33.3333333%;
            height: 33.3333333vw;
            padding: 0;
            border-bottom: 1px solid rgba(20, 54, 149, 0.2);
            border-right: 1px solid rgba(20, 54, 149, 0.2); }
            .section-image-grid.stats .item-grid.grid-icon:nth-child(-n+3) {
              border-top: 1px solid rgba(20, 54, 149, 0.2); } }
        .section-image-grid.stats .item-grid.grid-icon:nth-child(1), .section-image-grid.stats .item-grid.grid-icon:nth-child(4) {
          border-left: 1px solid rgba(20, 54, 149, 0.2); }
        .section-image-grid.stats .item-grid.grid-icon:first-child {
          border-top: 1px solid rgba(20, 54, 149, 0.2); }
        .section-image-grid.stats .item-grid.grid-icon > img {
          position: relative;
          left: 50%;
          top: 14%;
          display: block;
          width: 20%;
          height: auto;
          margin-left: -10%;
          margin-bottom: 20px; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid.grid-icon > img {
              top: 22%;
              position: absolute;
              margin-bottom: 0; } }
          @media (min-width: 1024px) {
            .section-image-grid.stats .item-grid.grid-icon > img {
              top: 28%; } }
        .section-image-grid.stats .item-grid.grid-icon .section-text-small {
          width: 100%;
          position: relative;
          bottom: 35%;
          text-align: center;
          font-family: "averta-bold", "Arial", sans-serif;
          font-size: 18px;
          color: #1838A7; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid.grid-icon .section-text-small {
              font-size: 20px;
              position: absolute; } }
        .section-image-grid.stats .item-grid.grid-icon.icon-ecommerce img {
          width: 27%;
          margin-left: -13.5%; }
        .section-image-grid.stats .item-grid.grid-icon.icon-shipping img {
          width: 34%;
          margin-left: -17%; }
        .section-image-grid.stats .item-grid.grid-icon.icon-customer img {
          width: 18%;
          margin-left: -9%; }
        .section-image-grid.stats .item-grid.grid-icon .product-count {
          display: none;
          position: absolute;
          bottom: 15%;
          left: 50%;
          margin-left: -44px;
          width: 88px; }
          @media (min-width: 768px) {
            .section-image-grid.stats .item-grid.grid-icon .product-count {
              display: block; } }
          .section-image-grid.stats .item-grid.grid-icon .product-count img {
            width: 88px; }
      .section-image-grid.stats .item-grid.beauty-editor {
        width: 100%; }
        @media (min-width: 768px) {
          .section-image-grid.stats .item-grid.beauty-editor {
            width: 33.3333%; } }

@media (min-width: 768px) {
  .result-section-image-grid div:first-child {
    order: 1; }
  .result-section-image-grid div:nth-child(2) {
    order: 3; }
  .result-section-image-grid div:nth-child(3) {
    order: 2; }
  .result-section-image-grid div:nth-child(4) {
    order: 4; }
  .result-section-image-grid div:nth-child(5) {
    order: 5; }
  .result-section-image-grid div:nth-child(6) {
    order: 6; }
  .result-section-image-grid div:nth-child(7) {
    order: 7; }
  .result-section-image-grid div:nth-child(8) {
    order: 8; }
  .result-section-image-grid div:nth-child(9) {
    order: 9; }
  .result-section-image-grid div:nth-child(10) {
    order: 10; }
  .result-section-image-grid div:nth-child(11) {
    order: 11; }
  .result-section-image-grid div:nth-child(12) {
    order: 12; }
  .people-section-image-grid .item-grid:nth-child(3) {
    order: 9; }
  .people-section-image-grid .item-grid:nth-child(4) {
    order: 3; }
  .people-section-image-grid .item-grid:nth-child(5) {
    order: 5; }
  .people-section-image-grid .item-grid:nth-child(6) {
    order: 8; }
  .people-section-image-grid .item-grid:nth-child(7) {
    order: 7; }
  .people-section-image-grid .item-grid:nth-child(8) {
    order: 8; }
  .people-section-image-grid .item-grid:nth-child(1) {
    order: 1; }
  .people-section-image-grid .item-grid:nth-child(2) {
    order: 2; }
  .people-section-image-grid .item-grid:nth-child(9) {
    order: 4; }
  .people-section-image-grid .item-grid:nth-child(10) {
    order: 6; }
  .people-section-image-grid .item-grid:nth-child(11) {
    order: 10;
    width: 33.3333% !important; }
  .people-section-image-grid .item-grid:nth-child(12) {
    order: 12; } }

@media (max-width: 768px) {
  .location-section-image-grid {
    display: flex; }
    .location-section-image-grid .item-grid:first-child {
      order: 2; }
    .location-section-image-grid .item-grid:nth-child(1) {
      order: 3; }
    .location-section-image-grid .item-grid:nth-child(3) {
      order: 3; }
    .location-section-image-grid .item-grid:nth-child(4) {
      order: 4; }
    .location-section-image-grid .item-grid:nth-child(5) {
      order: 5;
      width: 100% !important; }
      .location-section-image-grid .item-grid:nth-child(5) .item-grid-text {
        margin-top: 20%; }
    .location-section-image-grid .item-grid:nth-child(6) {
      order: 8; }
    .location-section-image-grid .item-grid:nth-child(7) {
      order: 7; }
    .location-section-image-grid .item-grid:nth-child(8) {
      order: 10; }
    .location-section-image-grid .item-grid:nth-child(9) {
      order: 11; }
  .brand-section-image-grid.grid-brands-ce {
    display: flex;
    flex-wrap: wrap; }
    .brand-section-image-grid.grid-brands-ce .item-grid:first-child {
      order: 1; }
    .brand-section-image-grid.grid-brands-ce .item-grid:nth-child(2) {
      order: 2; }
    .brand-section-image-grid.grid-brands-ce .item-grid:nth-child(3) {
      order: 4; }
    .brand-section-image-grid.grid-brands-ce .item-grid:nth-child(4) {
      order: 3; }
    .brand-section-image-grid.grid-brands-ce .item-grid:nth-child(5) {
      order: 5; }
    .brand-section-image-grid.grid-brands-ce .item-grid:nth-child(6) {
      order: 6; }
  .brand-section-image-grid.grid-brands-ss {
    display: flex;
    flex-wrap: wrap; }
    .brand-section-image-grid.grid-brands-ss .item-grid:first-child {
      order: 1; }
    .brand-section-image-grid.grid-brands-ss .item-grid:nth-child(2) {
      order: 2; }
    .brand-section-image-grid.grid-brands-ss .item-grid:nth-child(3) {
      order: 4; }
    .brand-section-image-grid.grid-brands-ss .item-grid:nth-child(4) {
      order: 3; }
    .brand-section-image-grid.grid-brands-ss .item-grid:nth-child(5) {
      order: 5; }
    .brand-section-image-grid.grid-brands-ss .item-grid:nth-child(6) {
      order: 6; }
  .home-section-image-grid .item-grid:first-child {
    order: 1; }
  .home-section-image-grid .item-grid:nth-child(4) {
    order: 3; }
  .home-section-image-grid .item-grid:nth-child(5) {
    order: 2; }
  .home-section-image-grid .item-grid:nth-child(6) {
    order: 5; }
  .home-section-image-grid .item-grid:nth-child(7) {
    order: 4; }
  .home-section-image-grid .item-grid:nth-child(8) {
    order: 7; }
  .home-section-image-grid .item-grid:nth-child(9) {
    order: 6; }
  .home-section-image-grid .item-grid:nth-child(10) {
    order: 8; }
  .home-section-image-grid .item-grid:nth-child(11) {
    order: 9; }
  .home-section-image-grid .item-grid:nth-child(12) {
    order: 10; }
  .home-section-image-grid .item-grid:nth-child(13) {
    order: 11; }
  .home-section-image-grid .item-grid:nth-child(14) {
    order: 12; } }

.vertical-text-container {
  display: table;
  width: 100%;
  height: 100%; }
  .vertical-text-container .vertical-text-item {
    display: table-cell;
    vertical-align: middle; }
    .vertical-text-container .vertical-text-item .item-grid-text {
      margin-top: 0 !important; }

.with-button {
  clear: both; }
  .with-button .section-text-small {
    width: 65%;
    margin: 0 auto; }
    @media (min-width: 768px) {
      .with-button .section-text-small {
        width: 60%; } }
  .with-button .btn {
    margin-top: 39px; }
    @media (min-width: 768px) {
      .with-button .btn {
        margin-top: 35px; } }

.section-image-arrow {
  display: table;
  width: 100%;
  background-size: cover;
  background-position: center bottom;
  background-repeat: no-repeat;
  height: 53vw; }
  @media (min-width: 768px) {
    .section-image-arrow {
      height: 36vw; } }
  @media (min-width: 768px) {
    .section-image-arrow.lo-singapore {
      height: 55vw; } }
  .section-image-arrow .section-text-large {
    display: table-cell;
    vertical-align: middle;
    color: white;
    font-family: "averta-bold", "Arial", sans-serif;
    font-size: 33px;
    text-align: center;
    width: 95%;
    margin: 0 auto;
    padding-bottom: 3%;
    line-height: 34px; }
    @media (min-width: 768px) {
      .section-image-arrow .section-text-large {
        width: 74%;
        font-size: 80px;
        line-height: 93px;
        letter-spacing: -1px; } }
    @media (min-width: 1440px) {
      .section-image-arrow .section-text-large {
        font-size: 90px; } }
    .section-image-arrow .section-text-large > .max-width {
      max-width: 700px;
      margin: 0 auto; }
    .section-image-arrow .section-text-large > .max-width-large {
      max-width: 1000px;
      margin: 0 auto; }
      .section-image-arrow .section-text-large > .max-width-large.text-ce-primary {
        font-size: 20px;
        line-height: 22px; }
        @media (min-width: 768px) {
          .section-image-arrow .section-text-large > .max-width-large.text-ce-primary {
            font-size: 33px;
            line-height: 34px; } }
  @media (min-width: 768px) {
    .section-image-arrow.bi-join-movement {
      height: 51vw; } }

.after-arrow .section-text-large {
  line-height: 22px;
  margin-bottom: 17px; }
  @media (min-width: 768px) {
    .after-arrow .section-text-large {
      line-height: 55px;
      margin-bottom: 32px;
      width: 77%; } }

@media (min-width: 768px) {
  .after-arrow.with-button {
    background-color: white;
    padding: 60px 0 99px; } }

.after-arrow.with-button .section-text-large {
  margin-bottom: 8px; }
  @media (min-width: 768px) {
    .after-arrow.with-button .section-text-large {
      margin-bottom: 26px; } }

.after-arrow.with-button .section-text-small {
  width: 70%; }
  @media (min-width: 768px) {
    .after-arrow.with-button .section-text-small {
      width: 60%; } }

.after-arrow.with-button .btn {
  margin-top: 17px;
  margin-bottom: 10px; }
  @media (min-width: 768px) {
    .after-arrow.with-button .btn {
      margin-top: 40px;
      margin-bottom: 40px; } }

.benefits {
  display: none;
  width: 90%;
  color: #FF4B81;
  font-size: 20px;
  font-family: "averta-bold", "Arial", sans-serif;
  margin: 0 auto; }
  @media (min-width: 768px) {
    .benefits {
      font-size: 17px;
      display: block;
      width: 738px; } }
  @media (min-width: 1024px) {
    .benefits {
      font-size: 20px;
      width: 838px; } }
  .benefits li {
    float: left;
    margin: 0 20px 0 12px;
    white-space: nowrap; }
  .benefits li:first-child {
    list-style-type: none; }

.section-social-media {
  position: relative;
  background-position: center center;
  background-size: cover;
  background-repeat: no-repeat;
  background-image: url(../img/social-media-m.jpg);
  width: 100%;
  height: 280px;
  padding-top: 106px; }
  @media (min-width: 768px) {
    .section-social-media {
      background-image: url(../img/social-media.jpg);
      height: 50.1vw;
      padding-top: 8%; } }
  @media (min-width: 1024px) {
    .section-social-media {
      padding-top: 10%; } }
  .section-social-media .love-social {
    height: 63px;
    width: 325px;
    margin: 0 auto 44px;
    background: url(../img/heart.png) 38px center no-repeat;
    background-size: 68px auto;
    font-family: "averta-bold", "Arial", sans-serif;
    font-size: 37px;
    text-align: center;
    color: white;
    letter-spacing: -0.5px; }
    @media (min-width: 768px) {
      .section-social-media .love-social {
        width: 768px;
        height: 177px;
        font-size: 60px;
        background: url(../img/heart.png) 193px center no-repeat;
        background-size: 155px auto;
        margin-bottom: 0;
        padding-top: 40px; } }
    @media (min-width: 1024px) {
      .section-social-media .love-social {
        font-size: 80px;
        background: url(../img/heart.png) 145px center no-repeat;
        background-size: 181px auto; } }
    @media (min-width: 1440px) {
      .section-social-media .love-social {
        width: 950px;
        height: 191px;
        font-size: 90px;
        background: url(../img/heart.png) 196px center no-repeat;
        background-size: 200px auto; } }
    @media (min-width: 1920px) {
      .section-social-media .love-social {
        width: 1250px;
        height: 280px;
        font-size: 130px;
        background: url(../img/heart.png) 157px center no-repeat;
        background-size: 299px auto; } }
    .section-social-media .love-social span {
      padding-right: 42px; }
      @media (min-width: 768px) {
        .section-social-media .love-social span {
          padding-right: 104px;
          padding-left: 25px; } }
      @media (min-width: 1920px) {
        .section-social-media .love-social span {
          padding-right: 216px;
          padding-left: 0; } }
  .section-social-media .social-icons {
    width: 141px;
    margin: 0 auto 29px; }
    @media (min-width: 768px) {
      .section-social-media .social-icons {
        width: 261px;
        position: absolute;
        left: 50%;
        margin-left: -130px;
        bottom: 25px; } }
    @media (min-width: 1024px) {
      .section-social-media .social-icons {
        bottom: 85px; } }
    .section-social-media .social-icons > a {
      float: left;
      display: table-cell;
      vertical-align: middle;
      text-align: center;
      margin: 0 3.5px;
      width: 40px;
      height: 40px;
      padding-top: 11px;
      -webkit-transition: all 0.6s;
      -moz-transition: all 0.6s;
      -ms-transition: all 0.6s;
      -o-transition: all 0.6s;
      transition: all 0.6s; }
      .section-social-media .social-icons > a.facebook {
        background: #FF4B81 url(../img/facebook_white.png) center center no-repeat;
        background-size: auto 15px; }
        @media (min-width: 768px) {
          .section-social-media .social-icons > a.facebook {
            background-size: auto 26px; } }
        .section-social-media .social-icons > a.facebook:hover {
          background: white url(../img/facebook_pink.png) center center no-repeat;
          background-size: auto 15px; }
          @media (min-width: 768px) {
            .section-social-media .social-icons > a.facebook:hover {
              background-size: auto 26px; } }
      .section-social-media .social-icons > a.instagram {
        background: #FF4B81 url(../img/instagram_white.png) center center no-repeat;
        background-size: auto 15px; }
        @media (min-width: 768px) {
          .section-social-media .social-icons > a.instagram {
            background-size: auto 26px; } }
        .section-social-media .social-icons > a.instagram:hover {
          background: white url(../img/instagram_pink.png) center center no-repeat;
          background-size: auto 15px; }
          @media (min-width: 768px) {
            .section-social-media .social-icons > a.instagram:hover {
              background-size: auto 26px; } }
      .section-social-media .social-icons > a.linkedin {
        background: #FF4B81 url(../img/linkedin_white.png) center center no-repeat;
        background-size: auto 15px; }
        @media (min-width: 768px) {
          .section-social-media .social-icons > a.linkedin {
            background-size: auto 26px; } }
        .section-social-media .social-icons > a.linkedin:hover {
          background: white url(../img/linkedin_pink.png) center center no-repeat;
          background-size: auto 15px; }
          @media (min-width: 768px) {
            .section-social-media .social-icons > a.linkedin:hover {
              background-size: auto 26px; } }
      @media (min-width: 768px) {
        .section-social-media .social-icons > a {
          width: 70px;
          height: 70px;
          padding-top: 23px; } }
      @media (min-width: 1024px) {
        .section-social-media .social-icons > a {
          width: 80px;
          height: 80px;
          padding-top: 26px; } }

.bi-skinny {
  background-image: url(../img/hp-banner-ce.jpg); }

.bi-body-boss {
  background-image: url(../img/hp-banner-ss.jpg); }

.bi-sand-sky {
  background-image: url(../img/split-2-1.jpg); }

.bi-coco-eve {
  background-image: url(../img/split-2-2.jpg); }

.bi-results-driven {
  background-image: url(../img/results-driven-m.jpg); }
  @media (min-width: 768px) {
    .bi-results-driven {
      background-image: url(../img/results-driven.png); } }

.bi-bright-impacts {
  background-image: url(../img/HP_Banner_Supernova-website_M_.jpg); }
  @media (min-width: 768px) {
    .bi-bright-impacts {
      background-image: url(../img/ss-x-ce.jpg); } }

.bi-brand-impressions {
  background-image: url(../img/brand-impressions2.jpg); }

.bi-influencers {
  background-image: url(../img/influencers.jpg); }

.bi-website-visits {
  background-image: url(../img/website-visits-rotated.jpg); }

.bi-join-movement {
  background-image: url(../img/join-movement2.png); }
  @media (min-width: 768px) {
    .bi-join-movement {
      background-image: url(../img/join-movement2.png); } }

.bi-people-wide {
  background-image: url(../img/grid-people-3.jpg); }

@media (max-width: 768px) {
  .beauty-editor-logo {
    height: 100% !important;
    margin-top: 20px;
    margin-bottom: 20px; } }

@media (min-width: 768px) {
  .beauty-editor-logo .beauty-editor-logo-list {
    margin-right: 40px; } }

.beauty-editor-logo .logo-item {
  width: 50%;
  margin: auto;
  text-align: center;
  padding-left: 15px;
  padding-right: 15px; }
  .beauty-editor-logo .logo-item img {
    width: 100%; }
  @media (min-width: 768px) {
    .beauty-editor-logo .logo-item {
      width: 33.33%;
      padding: 0;
      height: 50%; }
      .beauty-editor-logo .logo-item img {
        width: auto; } }

.split-banner {
  flex-flow: wrap; }
  .split-banner .banner-with-logo {
    flex: 0 0 100%;
    margin-bottom: 15px;
    position: relative; }
    .split-banner .banner-with-logo img {
      width: 100%;
      display: block; }
      .split-banner .banner-with-logo img.hp-logo {
        width: 50%;
        margin-left: auto;
        margin-right: auto; }
    @media (min-width: 768px) {
      .split-banner .banner-with-logo {
        flex: 0 0 calc(50% - 7.5px); }
        .split-banner .banner-with-logo:first-child {
          margin-left: 7.5px;
          order: 2; } }
    @media (min-width: 768px) and (min-width: 768px) {
      .split-banner .banner-with-logo:first-child .logo-wrapper {
        justify-content: space-between;
        display: flex;
        flex-flow: column; }
        .split-banner .banner-with-logo:first-child .logo-wrapper img.hp-logo {
          margin-top: 50px; } }
    @media (min-width: 768px) {
        .split-banner .banner-with-logo:last-child {
          margin-right: 7.5px;
          order: 1; }
          .split-banner .banner-with-logo:last-child img.hp-logo {
            width: 35%; } }
    .split-banner .banner-with-logo .logo-wrapper {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      text-align: center;
      left: 0;
      right: 0; }
      @media (min-width: 768px) {
        .split-banner .banner-with-logo .logo-wrapper {
          min-height: 325px; } }
      .split-banner .banner-with-logo .logo-wrapper .btn-outline {
        margin-top: 35px;
        background-color: #fff;
        color: #FF4B81; }

.banner-hp-2 img {
  width: 100%;
  display: block; }

.banner-hp-2 .h3 {
  position: absolute;
  top: 30px;
  left: 0;
  right: 0; }
  @media (min-width: 768px) {
    .banner-hp-2 .h3 {
      top: 50%;
      transform: translateY(-50%); } }

.product-sandsky {
  margin-top: 100px; }

.section-bios {
  position: relative;
  background-size: contain;
  background-repeat: no-repeat;
  background-color: #FF4B81;
  background-position: top center;
  width: 100%;
  overflow: hidden;
  padding-top: 200px; }
  @media (min-width: 510px) {
    .section-bios {
      padding-top: 350px; } }
  @media (min-width: 1024px) {
    .section-bios {
      background-position: center center;
      background-size: cover;
      background-repeat: no-repeat;
      height: 50.1vw;
      padding-top: 0; } }
  .section-bios .bio {
    position: relative;
    width: 96%;
    height: 100%;
    text-align: center;
    border-bottom: 2px solid #fff;
    padding-top: 5%;
    margin: 0 auto; }
    @media (min-width: 1024px) {
      .section-bios .bio {
        width: 50%;
        border-bottom: none;
        padding-top: 0; }
        .section-bios .bio.bio-3by1 {
          width: 33.3333%; } }
    .section-bios .bio .bio-name {
      width: 100%; }
      @media (min-width: 1024px) {
        .section-bios .bio .bio-name {
          position: absolute;
          bottom: 10%;
          z-index: 10;
          -webkit-transition: all 0.5s;
          -moz-transition: all 0.5s;
          -ms-transition: all 0.5s;
          -o-transition: all 0.5s;
          transition: all 0.5s; } }
    .section-bios .bio .section-text-large {
      font-size: 20px;
      font-family: "averta-extrabold", "averta-bold", Arial, sans-serif;
      color: white; }
      @media (min-width: 1024px) {
        .section-bios .bio .section-text-large {
          font-size: 50px; } }
    .section-bios .bio .section-text-small {
      font-size: 14px;
      color: white; }
      @media (min-width: 1024px) {
        .section-bios .bio .section-text-small {
          font-size: 20px; } }
    @media (min-width: 1024px) {
      .section-bios .bio .bio-details {
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        background-color: #FF4B81;
        opacity: 0;
        -webkit-transition: all 0.5s;
        -moz-transition: all 0.5s;
        -ms-transition: all 0.5s;
        -o-transition: all 0.5s;
        transition: all 0.5s; } }
    .section-bios .bio .bio-details p {
      color: white;
      font-family: "averta-bold", "Arial", sans-serif;
      font-size: 16px;
      padding: 0 15%;
      margin-bottom: 10%;
      -webkit-transition: all 0.5s;
      -moz-transition: all 0.5s;
      -ms-transition: all 0.5s;
      -o-transition: all 0.5s;
      transition: all 0.5s; }
      @media (min-width: 1024px) {
        .section-bios .bio .bio-details p {
          opacity: 0;
          margin-top: 100%;
          margin-bottom: 0;
          font-size: 14px;
          padding: 0 7%; } }
      @media (min-width: 1024px) {
        .section-bios .bio .bio-details p {
          font-size: 18px;
          padding: 0 9%; } }
      @media (min-width: 1440px) {
        .section-bios .bio .bio-details p {
          font-size: 20px;
          padding: 0 15%; } }
    .section-bios .bio .bio-details .social-icons {
      display: none;
      position: absolute;
      bottom: 20%;
      width: 141px;
      margin-left: -75px;
      left: 50%;
      opacity: 0;
      -webkit-transition: all 0.5s;
      -moz-transition: all 0.5s;
      -ms-transition: all 0.5s;
      -o-transition: all 0.5s;
      transition: all 0.5s; }
      @media (min-width: 1024px) {
        .section-bios .bio .bio-details .social-icons {
          bottom: 0;
          display: block; } }
      .section-bios .bio .bio-details .social-icons a img {
        height: 17px;
        margin: 0 15px; }
    @media (min-width: 1024px) {
      .section-bios .bio:hover .bio-details {
        opacity: 1; }
        .section-bios .bio:hover .bio-details p {
          margin-top: 48%;
          opacity: 1; }
        .section-bios .bio:hover .bio-details .social-icons {
          bottom: 6%;
          opacity: 1; }
      .section-bios .bio:hover .bio-name {
        bottom: 70%; } }
    @media (min-width: 1024px) {
      .section-bios .bio:hover .bio-details p {
        margin-top: 54%; } }
    @media (min-width: 1440px) {
      .section-bios .bio:hover .bio-details p {
        margin-top: 60%; }
      .section-bios .bio:hover .bio-details .social-icons {
        bottom: 15%; } }

.section-bios-founder {
  background-image: url(../img/the-founders.jpg); }

.section-bios-small {
  height: auto;
  padding-top: 145px; }
  @media (min-width: 1024px) {
    .section-bios-small {
      height: 454px;
      padding-top: 0;
      margin-bottom: 5px; }
      .section-bios-small .bio:hover .bio-name {
        bottom: 77.5%; }
      .section-bios-small .bio:hover .bio-details p {
        padding-bottom: 20px;
        margin-top: 135px; }
      .section-bios-small .bio .bio-details p {
        font-size: 15px;
        padding-left: 15px;
        padding-right: 15px; } }

.section-bios-people-1 {
  background-image: url(../img/people-bg-1.jpg); }

.section-bios-people-2 {
  background-image: url(../img/people-bg-2.jpg); }

.section-bios-people-3 {
  background-image: url(../img/people-bg-3.jpg); }

.section-bios-people-4 {
  background-image: url(../img/people-bg-4.jpg); }

.section-bios-people-5 {
  background-image: url(../img/people-bg-5.jpg); }

.section-bios-people-6 {
  background-image: url(../img/people-bg-6.jpg);
  flex-flow: column; }
  @media (min-width: 768px) {
    .section-bios-people-6 {
      flex-flow: wrap; } }

.section-bios-2 {
  background: #FF4B81 url(../img/the-founders.jpg) top center no-repeat; }

.pe-grid-1 {
  background-image: url(../img/page-people-stats-1.jpg); }

.pe-grid-2 {
  background-image: url(../img/page-people-stats-2.jpg); }

.pe-grid-3 {
  background-image: url(../img/page-people-stats-3.jpg); }

.pe-grid-4 {
  background-image: url(../img/zoom-2_1.jpg); }

.text-heading span {
  position: absolute;
  left: 15px;
  right: 15px;
  bottom: -30px;
  background-color: #143695;
  min-height: 150px; }

.people-page .section-hero {
  height: 73vh; }
  @media (min-width: 510px) {
    .people-page .section-hero {
      height: 90vh; } }
  .people-page .section-hero .item-hero {
    height: 450px; }
    @media (min-width: 510px) {
      .people-page .section-hero .item-hero {
        height: 75vh;
        width: 830px; } }

.section-heading-new .h3 {
  font-size: 24px;
  line-height: 30px;
  margin-left: 0;
  margin-right: 0;
  font-family: "averta-extrabold", "averta-bold", Arial, sans-serif; }
  @media (min-width: 768px) {
    .section-heading-new .h3 {
      font-size: 56px;
      line-height: 70px;
      max-width: 75%;
      margin-left: auto;
      margin-right: auto; } }

.section-heading-new .section-text-small {
  line-height: 22px; }
  @media (min-width: 768px) {
    .section-heading-new .section-text-small {
      font-size: 36px;
      line-height: 45px;
      width: 90%; } }

.people-banner img {
  display: block;
  width: 100%; }

.people-banner .h1 {
  flex: 1; }

.people-banner span {
  font-size: 70px;
  line-height: 87.5px;
  max-width: 85%;
  text-align: center;
  color: #fff;
  font-family: "averta-bold", "Arial", sans-serif; }
  .people-banner span.w-95 {
    max-width: 95%; }
  @media (max-width: 768px) {
    .people-banner span {
      display: none; } }
  @media (max-width: 1340px) {
    .people-banner span {
      font-size: 40px !important;
      line-height: 65px; } }
  @media (min-width: 1024px) {
    .people-banner span {
      font-size: 40px !important;
      line-height: 65px; } }

.people-banner picture {
  display: block;
  width: 100%;
  flex: 0 0 57.63%; }
  @media (max-width: 768px) {
    .people-banner picture {
      flex: 0 0 100%; } }
  .people-banner picture .position-absolute {
    bottom: -30px;
    margin-left: 0px;
    margin-right: 0px;
    text-align: center;
    color: #fff;
    font-size: 24px;
    font-family: "averta-extrabold", "averta-bold", Arial, sans-serif;
    min-height: 120px;
    position: absolute;
    left: 0;
    right: 0;
    display: flex;
    padding-left: 30px;
    padding-right: 30px; }
    @media (min-width: 768px) {
      .people-banner picture .position-absolute {
        display: none; } }
    @media (max-width: 768px) {
      .people-banner picture .position-absolute {
        bottom: -119px; } }

@media (min-width: 768px) {
  .hiring-banner picture {
    overflow: hidden; } }

@media (min-width: 768px) {
  .hiring-banner img {
    width: 105%; } }

.hiring-banner span {
  font-size: 60px; }

.people-banner-pink .h1 {
  background-color: #FF4B81; }

.people-banner-pink picture .position-absolute {
  background-color: #FF4B81; }

.people-banner-blue .h1 {
  background-color: #143695; }

.people-banner-blue picture .position-absolute {
  background-color: #143695; }

.people-banner-lightblue .h1 {
  background-color: #42A1CA; }

.people-banner-lightblue picture .position-absolute {
  background-color: #42A1CA; }

.full-banner {
  width: 100%;
  display: block; }
  .full-banner img {
    width: 100%;
    display: block; }

.people-grid-desktop {
  display: flex;
  flex-wrap: wrap;
  margin-left: 7.5px;
  margin-right: 7.5px; }
  @media (max-width: 1023px) {
    .people-grid-desktop {
      display: none; } }
  .people-grid-desktop .people-item {
    flex-basis: calc(33.33% - 15px);
    margin: 7.5px;
    display: flex;
    justify-content: center;
    min-height: 499px;
    background-color: #fff;
    overflow: hidden; }
  .people-grid-desktop img {
    width: 100%;
    display: block; }
  .people-grid-desktop figcaption {
    background-color: #FF4B81;
    color: #fff;
    text-align: center;
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    min-height: 152px;
    cursor: pointer;
    height: 100%;
    transform: translateY(70%);
    transition: all .2s; }
    @media (min-width: 1760px) {
      .people-grid-desktop figcaption {
        transform: translateY(73%); } }
    .people-grid-desktop figcaption img {
      margin-bottom: 15px;
      width: 16px;
      height: 10px; }
      .people-grid-desktop figcaption img.linkedin {
        width: 22px;
        height: 22px; }
    .people-grid-desktop figcaption.show {
      transform: translateY(0); }
      .people-grid-desktop figcaption.show .text-heading {
        display: none !important; }
    .people-grid-desktop figcaption .h4 {
      margin-bottom: 20px !important; }
    .people-grid-desktop figcaption .h5 {
      margin-bottom: 15px !important; }
    .people-grid-desktop figcaption .text-heading {
      padding-top: 15px; }
    .people-grid-desktop figcaption .text-caption {
      font-size: 16px;
      line-height: 20px;
      height: 499px;
      padding-left: 15px;
      padding-right: 15px; }
      .people-grid-desktop figcaption .text-caption img:not(.linkedin) {
        position: absolute;
        left: 50%;
        right: 0;
        top: 15px;
        transform: translateX(-50%); }

.founder-grid {
  margin-left: 138px;
  margin-right: 138px; }
  .founder-grid .people-item {
    flex-basis: calc(50% - 30px);
    margin: 15px;
    min-height: 630px; }
    @media (min-width: 991px) and (max-width: 1280px) {
      .founder-grid .people-item {
        min-height: auto; } }
  .founder-grid figcaption {
    transform: translateY(76%); }
    @media (min-width: 991px) and (max-width: 1280px) {
      .founder-grid figcaption {
        transform: translateY(65%); } }
    @media (min-width: 1760px) {
      .founder-grid figcaption {
        transform: translateY(80%); } }
    .founder-grid figcaption .text-caption {
      height: 630px;
      padding-top: 50px;
      padding-left: 20px;
      padding-right: 20px; }
      @media (min-width: 991px) and (max-width: 1280px) {
        .founder-grid figcaption .text-caption {
          height: 460px; } }
    .founder-grid figcaption a {
      position: absolute;
      bottom: 30px; }

.section-large-video {
  width: 100%;
  height: 60vw;
  background-position: center center;
  background-size: cover;
  background-repeat: no-repeat;
  background-image: url(../img/results-video-2-1.jpg);
  padding-top: 22%;
  margin-bottom: 5px;
  margin-top: 5px; }
  .section-large-video .section-text-large {
    font-family: "averta-extrabold", "averta-bold", Arial, sans-serif;
    font-size: 80px;
    color: white;
    text-align: center;
    margin: 0 auto; }
    @media (min-width: 768px) {
      .section-large-video .section-text-large {
        font-size: 130px; } }
  .section-large-video .section-text-small {
    font-size: 14px;
    text-align: center;
    color: white;
    margin: 0 auto; }
    @media (min-width: 768px) {
      .section-large-video .section-text-small {
        font-size: 20px; } }

.re-grid-1 {
  background-image: url(../img/page-results-stats-2-2.jpg); }

.re-grid-1-2 {
  background-image: url(../img/page-results-stats-2-3.jpg); }

.re-grid-2 {
  background-image: url(../img/page-results-stats-6.jpg); }

.re-grid-3 {
  background-image: url(../img/brand-impressions.jpg?v2); }

.re-grid-4 {
  background-image: url(../img/page-results-stats-4.jpg?v2); }

.re-grid-5 {
  background-image: url(../img/page-results-stats-5-m.jpg); }
  @media (min-width: 768px) {
    .re-grid-5 {
      background-image: url(../img/page-results-stats-5.jpg); } }
  .re-grid-5.two-thirds {
    width: 50%; }
    @media (min-width: 768px) {
      .re-grid-5.two-thirds {
        width: 66.6666%; } }

.section-hero .item-hero.item-hero-result {
  background-position: left -215px center; }
  @media (min-width: 510px) {
    .section-hero .item-hero.item-hero-result {
      background-position: center center; } }

.logo-list {
  margin-top: 40px;
  margin-bottom: 40px; }
  @media (min-width: 768px) {
    .logo-list {
      margin-top: 80px;
      margin-bottom: 80px; } }
  .logo-list h3 {
    margin-bottom: 30px;
    margin-top: 0;
    font-family: "averta-extrabold", "averta-bold", Arial, sans-serif;
    font-size: 24px;
    line-height: 30px;
    text-align: center; }
    @media (min-width: 768px) {
      .logo-list h3 {
        font-size: 56px;
        line-height: 70px; } }
  .logo-list .d-flex {
    flex-flow: wrap;
    margin-bottom: 30px; }
  .logo-list .logoitem {
    display: flex;
    flex: 0 0 50%;
    justify-content: center;
    align-items: center;
    margin-top: 10px;
    margin-bottom: 10px;
    position: relative; }
    .logo-list .logoitem.order-1 {
      order: 1; }
    .logo-list .logoitem.order-2 {
      order: 2; }
    .logo-list .logoitem.order-3 {
      order: 3; }
    .logo-list .logoitem.order-4 {
      order: 4; }
    .logo-list .logoitem.order-5 {
      order: 5; }
    .logo-list .logoitem.order-6 {
      order: 6; }
    .logo-list .logoitem a {
      position: absolute;
      bottom: 32px; }
    @media (min-width: 768px) {
      .logo-list .logoitem {
        flex: 0 0 33%;
        margin-top: 30px;
        margin-bottom: 30px; }
        .logo-list .logoitem a {
          position: absolute;
          bottom: 100px; }
        .logo-list .logoitem.order-lg-1 {
          order: 1; }
        .logo-list .logoitem.order-lg-2 {
          order: 2; }
        .logo-list .logoitem.order-lg-3 {
          order: 3; }
        .logo-list .logoitem.order-lg-4 {
          order: 4; }
        .logo-list .logoitem.order-lg-5 {
          order: 5; }
        .logo-list .logoitem.order-lg-6 {
          order: 6; } }

.btn-primary {
  padding: 10px 20px;
  border: none;
  background-color: #FF4B81;
  color: #fff;
  font-family: "averta-bold", "Arial", sans-serif;
  font-size: 16px;
  line-height: 20px;
  max-width: none;
  width: auto;
  height: 40px;
  letter-spacing: normal;
  display: inline-block; }
  @media (min-width: 768px) {
    .btn-primary {
      padding: 15px 30px;
      height: 50px; } }

.mb-3 {
  margin-bottom: 30px !important; }

.logo-list-square {
  margin: 0 7.5px; }
  .logo-list-square .logoitem {
    background-color: #F1F1F1;
    flex: 45%;
    margin: 7.5px;
    min-height: 182px; }
    @media (min-width: 768px) {
      .logo-list-square .logoitem {
        flex: 30%;
        min-height: 450px; } }
  .logo-list-square picture {
    margin-bottom: 20px; }
    @media (min-width: 768px) {
      .logo-list-square picture {
        margin-bottom: 60px; } }
  .logo-list-square .btn-outline {
    align-content: space-between;
    color: #FF4B81;
    background-color: #fff; }

.grid-icon {
  position: relative; }

.grid-icon .hover-panel {
  width: 100%;
  padding: 20px 0; }
  @media (min-width: 768px) {
    .grid-icon .hover-panel {
      display: table;
      height: 100%;
      padding: 0;
      opacity: 0;
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      background-color: #212945;
      background-position: center center;
      background-size: cover;
      background-repeat: no-repeat;
      -webkit-transition: opacity 0.4s;
      -moz-transition: opacity 0.4s;
      -ms-transition: opacity 0.4s;
      -o-transition: opacity 0.4s;
      transition: opacity 0.4s; } }
  .grid-icon .hover-panel .panel-text {
    text-align: center;
    font-size: 16px;
    width: 80%;
    margin: 0 auto; }
    @media (min-width: 768px) {
      .grid-icon .hover-panel .panel-text {
        display: table-cell;
        vertical-align: middle;
        color: white;
        font-size: 17px;
        padding: 0 5%; } }
    @media (min-width: 1024px) {
      .grid-icon .hover-panel .panel-text {
        font-size: 20px; } }
    @media (min-width: 1440px) {
      .grid-icon .hover-panel .panel-text {
        font-size: 24px; } }

.grid-icon:hover .hover-panel {
  opacity: 1; }

/*
.icon-ideation {
  .hover-panel {
    @include breakpoint($tablet-plus) {
      background-image: url(../img/IMG_6971.jpg);
    }
  }
}

.icon-branding {
  .hover-panel {
    @include breakpoint($tablet-plus) {
      background-image: url(../img/Product_BrandingPkging.jpg);
    }
  }
}

.icon-social {
  .hover-panel {
    @include breakpoint($tablet-plus) {
      background-image: url(../img/sunny-mockup-iphone5s-11a.jpg);
    }
  }
}

.icon-ecommerce {
  .hover-panel {
    @include breakpoint($tablet-plus) {
      background-image: url(../img/Products_SocialMMrkt.jpg);
    }
  }
}

.icon-shipping {
  .hover-panel {
    @include breakpoint($tablet-plus) {
      background-image: url(../img/DSC00667.jpg);
    }
  }
}

.icon-customer {
  .hover-panel {
    @include breakpoint($tablet-plus) {
      background-image: url(../img/JoinUsSide.jpg);
    }
  }
}
*/
.section-love-science {
  position: relative;
  width: 100%;
  overflow: hidden;
  height: auto;
  background-position: center center;
  background-size: cover;
  background-repeat: no-repeat;
  background-image: url(../img/mp-love-science-mobile.png);
  padding: 5%; }
  @media (min-width: 768px) {
    .section-love-science {
      background-image: url(../img/mp-love-science.jpg);
      height: 60vw;
      padding: 0; } }
  .section-love-science .section-text-large-1 {
    font-family: "averta-bold", "Arial", sans-serif;
    font-size: 70px;
    color: #1838A7; }
    @media (min-width: 768px) {
      .section-love-science .section-text-large-1 {
        font-size: 80px;
        position: absolute;
        top: 17%;
        left: 8%; } }
    @media (min-width: 1024px) {
      .section-love-science .section-text-large-1 {
        font-size: 140px;
        top: 15%; } }
  .section-love-science .section-text-small-1 {
    font-family: "averta-bold", "Arial", sans-serif;
    font-size: 30px;
    color: #1838A7; }
    @media (min-width: 768px) {
      .section-love-science .section-text-small-1 {
        position: absolute;
        top: 15%;
        right: 8%;
        text-align: right; } }
    .section-love-science .section-text-small-1 p {
      margin: 6px 0; }
  .section-love-science .plus-symbol {
    font-family: "averta-bold", "Arial", sans-serif;
    font-size: 60px;
    color: #1838A7;
    margin: 0 auto;
    width: 50px; }
    @media (min-width: 768px) {
      .section-love-science .plus-symbol {
        width: auto;
        position: absolute;
        top: 42%;
        left: 46%;
        margin: 0;
        font-size: 90px; } }
    @media (min-width: 1024px) {
      .section-love-science .plus-symbol {
        font-size: 150px;
        top: 36%; } }
  .section-love-science .section-text-large-2 {
    font-family: "averta-bold", "Arial", sans-serif;
    font-size: 70px;
    color: #1838A7;
    text-align: right; }
    @media (min-width: 768px) {
      .section-love-science .section-text-large-2 {
        font-size: 80px;
        position: absolute;
        top: 66%;
        right: 8%;
        text-align: left; } }
    @media (min-width: 1024px) {
      .section-love-science .section-text-large-2 {
        font-size: 140px;
        top: 59%; } }
  .section-love-science .section-text-small-2 {
    font-family: "averta-bold", "Arial", sans-serif;
    font-size: 30px;
    color: #1838A7;
    text-align: right; }
    @media (min-width: 768px) {
      .section-love-science .section-text-small-2 {
        position: absolute;
        top: 60%;
        left: 8%;
        text-align: right; } }
    .section-love-science .section-text-small-2 p {
      margin: 6px 0; }

.page-join .two-thirds.background-darkpink .grid-text-medium {
  width: 77%;
  margin-left: auto;
  margin-right: auto; }

.page-join .grid-pink .grid-text-medium {
  margin-top: 25%; }

.page-join .item-grid.background-green .grid-text-medium {
  margin-top: 42%; }

.section-jobs {
  margin-top: -70px; }
  .section-jobs h3 {
    text-align: center;
    margin-bottom: 26px; }
  .section-jobs ul {
    width: 100%;
    margin: 0 auto;
    padding: 0; }
    @media (min-width: 768px) {
      .section-jobs ul {
        width: 70%; } }
    .section-jobs ul li {
      list-style-type: none;
      margin: 0 0 1px 0;
      width: 100%; }
      .section-jobs ul li a {
        display: block;
        background: #212945 url(../img/arrow-white.png) right 20px center no-repeat;
        background-size: 44px auto;
        padding: 50px 70px 50px 20px;
        color: white;
        font-family: "averta-bold", "Arial", sans-serif;
        font-size: 30px;
        text-decoration: none;
        transition: all 0.4s linear; }
        @media (min-width: 768px) {
          .section-jobs ul li a {
            padding: 50px 110px 50px 50px;
            background-position: right 50px center; } }
        .section-jobs ul li a:hover {
          background: #FF4B81 url(../img/arrow-white.png) right 20px center no-repeat;
          background-size: 44px auto;
          color: white; }
          @media (min-width: 768px) {
            .section-jobs ul li a:hover {
              background-position: right 50px center; } }

.job-office {
  margin-bottom: 50px; }
  .job-office:last-child {
    margin-bottom: 0; }

.section-image-grid.stats
.item-grid.background-darkpink.work-hard .item-grid-text.grid-text-medium {
  margin-top: 32%; }
  @media (min-width: 768px) {
    .section-image-grid.stats
.item-grid.background-darkpink.work-hard .item-grid-text.grid-text-medium {
      font-size: 28px; } }
  @media (min-width: 1024px) {
    .section-image-grid.stats
.item-grid.background-darkpink.work-hard .item-grid-text.grid-text-medium {
      font-size: 45px; } }
  @media (min-width: 1440px) {
    .section-image-grid.stats
.item-grid.background-darkpink.work-hard .item-grid-text.grid-text-medium {
      margin-top: 38%; } }

a.back {
  width: 95%;
  top: 267px;
  margin-left: 10px;
  left: 0;
  display: block;
  color: #FF4B81;
  font-family: "averta-bold", "Arial", sans-serif;
  font-size: 18px;
  padding-left: 30px;
  background: url(../img/arrow_left_pink.png) left center no-repeat;
  background-size: 20px auto;
  position: static;
  max-width: 800px;
  z-index: 10;
  margin-top: 50px; }
  @media (min-width: 768px) {
    a.back {
      top: 459px;
      width: 70%;
      left: 50%;
      margin-left: auto;
      margin-right: auto; } }

.is-sticky + a.back {
  top: 322px; }

.jn-grid-1 {
  background-image: url(../img/grid-people-wider.jpg); }

.jn-grid-2 {
  background-image: url(../img/join-stats-2.jpg?v2); }

.jn-grid-3 {
  background-image: url(../img/join-stats-3.jpg); }

.jn-grid-4 {
  background-image: url(../img/join-stats-4.jpg); }

.jn-h4 {
  font-family: "averta-bold", "Arial", sans-serif !important;
  font-size: 20px !important;
  line-height: 25px !important;
  letter-spacing: normal !important; }
  .jn-h4.jn-h4-mb {
    margin-bottom: 15px !important; }

.jn-h5 {
  font-family: "averta-bold", "Arial", sans-serif !important;
  font-size: 18px !important;
  line-height: 26px !important;
  letter-spacing: normal !important; }

@media (min-width: 768px) {
  .jn-h4 {
    font-size: 42px !important;
    line-height: 52.5px !important; }
    .jn-h4.jn-h4-mb {
      margin-bottom: 30px !important; }
  .jn-h5 {
    font-size: 36px !important;
    line-height: 45px !important; } }

@media (max-width: 768px) {
  .section-image-grid.stats .item-grid.jn-full-grid {
    float: none;
    width: 100%; }
  .section-image-grid.stats .item-grid.grid-2-mb {
    width: 100%; }
  .bg-list {
    padding-top: 30px;
    padding-bottom: 30px; }
    .bg-list span {
      display: block; } }

.section-locations {
  overflow: hidden; }
  @media (min-width: 768px) {
    .section-locations {
      display: flex;
      flex-flow: wrap;
      justify-content: center; } }
  .section-locations .location {
    width: 100%; }
    @media (min-width: 768px) {
      .section-locations .location {
        width: 33.33%;
        flex: 0 0 33.33%;
        float: none;
        border-left: 1px solid rgba(20, 54, 149, 0.2); } }
    @media (min-width: 1024px) {
      .section-locations .location {
        width: 20%;
        flex: 0 0 20%; } }
    @media (min-width: 768px) {
      .section-locations .location:first-child {
        border-left: none; } }
    @media (min-width: 768px) {
      .section-locations .location:last-child {
        border-right: 1px solid rgba(20, 54, 149, 0.2); } }
    .section-locations .location .lo-name {
      position: relative;
      width: 100.3%;
      height: 50vw;
      padding-top: 15%;
      background-size: cover;
      background-position: center bottom;
      background-repeat: no-repeat;
      color: white;
      font-family: "averta-bold", "Arial", sans-serif;
      font-size: 55px;
      text-align: center; }
      @media (min-width: 768px) {
        .section-locations .location .lo-name {
          height: 33.333333vw;
          padding-top: 36%;
          font-size: 42px; } }
      @media (min-width: 1024px) {
        .section-locations .location .lo-name {
          font-size: 45px; } }
      @media (min-width: 768px) {
        .section-locations .location .lo-name.lo-name-4 {
          height: 34.3vw; } }
      @media (min-width: 1024px) {
        .section-locations .location .lo-name.lo-name-4 {
          height: 33.333333vw; } }
    .section-locations .location .lo-details {
      padding: 40px 0 60px 0; }
      @media (min-width: 768px) {
        .section-locations .location .lo-details {
          padding: 60px 0 150px 0; }
          .section-locations .location .lo-details.lo-details-4 {
            padding-top: 54px; } }
      @media (min-width: 1024px) {
        .section-locations .location .lo-details.lo-details-4 {
          padding-top: 60px; } }
      .section-locations .location .lo-details .section-text-small {
        margin: 0 auto;
        color: #b3b5be;
        font-family: "averta", "Arial", sans-serif;
        font-size: 20px;
        letter-spacing: 0.5px;
        text-align: center;
        margin-bottom: 50px; }
    .section-locations .location .lo-map {
      display: none;
      background-position: center center;
      background-size: cover;
      background-repeat: no-repeat;
      width: 100%;
      height: 38vw; }
      @media (min-width: 768px) {
        .section-locations .location .lo-map {
          height: 18vw; } }
    .section-locations .location .btn {
      max-width: 85%; }

.location-benefits {
  width: 90%;
  margin-top: 30px; }
  @media (min-width: 768px) {
    .location-benefits {
      width: 511px;
      margin-top: 50px; } }
  @media (min-width: 1024px) {
    .location-benefits {
      width: 735px; } }

.section-text .section-text-small.retail-hours {
  margin-top: 42px;
  width: 90%;
  font-size: 20px;
  font-family: "averta-bold", "Arial", sans-serif;
  color: #FF4B81;
  opacity: 1; }
  @media (min-width: 768px) {
    .section-text .section-text-small.retail-hours {
      width: 70%; } }

.section-image-grid.stats .item-grid.lo-grid-6 .grid-text-medium {
  color: white; }

.benefits.location-emails {
  margin: 20px auto 30px;
  overflow: hidden; }
  .benefits.location-emails a {
    color: #FF4B81;
    text-decoration: none; }
    .benefits.location-emails a:hover {
      text-decoration: underline; }

.lo-singapore {
  background-image: url(../img/locations-arrow-down.jpg); }

.lo-grid-1 {
  background-image: url(../img/page-location1.jpg); }

.lo-grid-2 {
  background-image: url(../img/locations-grid-4.jpg); }

.lo-grid-3 {
  background-image: url(../img/locations-grid-3.jpg); }

.lo-grid-4 {
  background-image: url(../img/locations-grid-2.jpg); }

.lo-grid-5 {
  background-image: url(../img/locations-grid-5.png); }

.lo-grid-6 {
  background-image: url(../img/locations-grid-6.jpg); }

.lo-grid-map-1 {
  background-image: url(../img/locations-grid-map-1.jpg); }

.lo-name-0 {
  background-image: url(../img/NYC.png); }

.lo-name-1 {
  background-image: url(../img/PalmTree.png); }

.lo-name-2 {
  background-image: url(../img/locations-nsw.jpg); }

.lo-name-3 {
  background-image: url(../img/locations-london.png); }

.lo-name-4 {
  background-image: url(../img/location-berlin.jpg); }
  @media (min-width: 768px) {
    .lo-name-4 {
      background-image: url(../img/location-9.png); } }

.lo-map-1 {
  background-image: url(../img/locations-map-new-delhi.jpg); }

.lo-map-2 {
  background-image: url(../img/locations-map-melbourne.jpg); }

.lo-map-3 {
  background-image: url(../img/locations-map-london.jpg); }

.section-product .product-image {
  width: 100%;
  text-align: center; }
  @media (min-width: 768px) {
    .section-product .product-image {
      float: left;
      width: 66.6666666%;
      height: 50vw;
      background-position: center center;
      background-size: cover;
      background-repeat: no-repeat; } }

.section-product .product-details {
  width: 100%;
  text-align: center;
  padding: 10% 2%; }
  @media (min-width: 768px) {
    .section-product .product-details {
      float: left;
      width: 33.333333%;
      height: 50vw;
      padding: 7% 4%; } }
  @media (min-width: 1024px) {
    .section-product .product-details {
      padding: 13% 4%; } }
  .section-product .product-details img {
    width: 275px;
    margin: 0 auto 50px;
    max-width: 100%; }
    @media (min-width: 1024px) {
      .section-product .product-details img {
        margin: 0 auto 0px; } }
  .section-product .product-details .product-desc {
    font-family: "averta-bold", "Arial", sans-serif;
    font-size: 20px;
    color: white;
    margin-bottom: 60px; }

.section-product.product-skinny .product-details {
  background: #9966CC; }

.section-product.product-bodyboss .product-details {
  background: #213F93; }

.section-product.product-ce .product-details {
  background: #50b277;
  display: flex;
  flex-wrap: wrap;
  align-items: center; }

.section-product.product-sandsky .product-details {
  background: #ff7b90; }
  @media (min-width: 768px) {
    .section-product.product-sandsky .product-details {
      padding: 4% 4%; } }
  @media (min-width: 1024px) {
    .section-product.product-sandsky .product-details {
      padding: 13% 4%; } }
  .section-product.product-sandsky .product-details img {
    width: 169px;
    margin-bottom: 0px; }
  .section-product.product-sandsky .product-details .product-desc {
    margin-bottom: 30px; }

.section-image-grid + .section-product {
  margin-top: 50px; }
  @media (min-width: 768px) {
    .section-image-grid + .section-product {
      margin-top: 80px; } }

.br-grid-1 {
  background-image: url(../img/brands-grid-1.jpg); }

.br-grid-2 {
  background-image: url(../img/brands-grid-2.jpg); }

.br-grid-3 {
  background-image: url(../img/brands-grid-3.jpg); }

.br-grid-4 {
  background-image: url(../img/brands-grid-4.jpg); }

.br-grid-5 {
  background-image: url(../img/brands-grid-5.jpg); }

.br-grid-6 {
  background-image: url(../img/brands-grid-6.jpg); }

.br-grid-6 {
  background-image: url(../img/brands-grid-6.jpg); }

.br-grid-7 {
  background-image: url(../img/brands-grid-7.jpg); }

.br-grid-8 {
  background-image: url(../img/sweepstakes_visual_1.jpg); }

.br-grid-9 {
  background-image: url(../img/brands-grid-9-2.jpg); }

.br-grid-10 {
  background-image: url(../img/brands-grid-10-2.jpg); }

.br-grid-11 {
  background-image: url(../img/brands-grid-11-2.jpg); }

.br-grid-12 {
  background-image: url(../img/brands-grid-12-2.jpg); }

.br-grid-13 {
  background-image: url(../img/brands-grid-13-2.jpg); }

.br-grid-14 {
  background-image: url(../img/brands-grid-14-2.jpg); }

.br-grid-15 {
  background-image: url(../img/brands-grid-15-2.jpg); }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvX3N1LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L3N1L192YWxpZGF0aW9uLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zaGFyZWQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19wcmVmaXguc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19vdXRwdXQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fY29udGFpbmVyLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2NvbnRhaW5lci5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19pc29sYXRlLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3JpZHMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JhY2tncm91bmQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcm93cy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmxlZWQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL19icmVha3BvaW50LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19zZXR0aW5ncy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9faGVscGVycy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcGFyc2Vycy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19zaW5nbGUuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9zaW5nbGUvX2RlZmF1bHQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LXBhaXIuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RvdWJsZS1zdHJpbmcuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fdHJpcGxlLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvdHJpcGxlL19kZWZhdWx0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9yZXNvbHV0aW9uL19yZXNvbHV0aW9uLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19uby1xdWVyeS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbGVnYWN5LXNldHRpbmdzLnNjc3MiLCJ2YXJpYWJsZXMuc2NzcyIsImdlbmVyYWwuc2NzcyIsImhlYWRlci5zY3NzIiwiZm9vdGVyLnNjc3MiLCJob21lLnNjc3MiLCJwZW9wbGUuc2NzcyIsInJlc3VsdHMuc2NzcyIsInByb2R1Y3RzLnNjc3MiLCJqb2luLnNjc3MiLCJsb2NhdGlvbnMuc2NzcyIsImJyYW5kcy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5XCI7XG5AaW1wb3J0IFwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludFwiO1xuXG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiZ2VuZXJhbFwiO1xuQGltcG9ydCBcImhlYWRlclwiO1xuQGltcG9ydCBcImZvb3RlclwiO1xuQGltcG9ydCBcImhvbWVcIjtcbkBpbXBvcnQgXCJwZW9wbGVcIjtcbkBpbXBvcnQgXCJyZXN1bHRzXCI7XG5AaW1wb3J0IFwicHJvZHVjdHNcIjtcbkBpbXBvcnQgXCJqb2luXCI7XG5AaW1wb3J0IFwibG9jYXRpb25zXCI7XG5AaW1wb3J0IFwiYnJhbmRzXCI7XG4iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCJcbi8vIEZvbnRzXG4kZm9udC1oZWFkaW5nczogJ2F2ZXJ0YS1ib2xkJywgJ0FyaWFsJywgc2Fucy1zZXJpZjtcbiRmb250LWJvZHk6ICdhdmVydGEnLCAnQXJpYWwnLCBzYW5zLXNlcmlmO1xuJGZvbnQtYnV0dG9uOiAnYmViYXMnLCAnSGVsdmV0aWNhJywgc2Fucy1zZXJpZjtcbiRmb250LWV4dHJhbGFyZ2U6ICdhdmVydGEtZXh0cmFib2xkJywgJ2F2ZXJ0YS1ib2xkJywgQXJpYWwsIHNhbnMtc2VyaWY7XG5cbi8vIENvbG91cnNcbiRwaW5rOiAjRkY0QjgxO1xuJGxpZ2h0LXBpbms6ICNGQ0UwRTM7XG4kYmx1ZTogIzE0MzY5NTtcbiRkZWVwLWJsdWU6ICMwQTJBQjA7XG4kZGVlcC1ibHVlLWJ0bjogZGFya2VuKCRkZWVwLWJsdWUsIDE1JSk7XG4kZGFyay1ibHVlOiAjMjEyOTQ1O1xuJGRhcmtlci1ibHVlOiAjMTgzOEE3O1xuJGJsdWUtcG9wc21pbGU6ICMwMDNFQzI7XG4kYmx1ZS1wb3BzbWlsZS1idG46IGRhcmtlbigkYmx1ZS1wb3BzbWlsZSwgMTUlKTtcbiRsaWdodC1ncmV5OiAjQzlDQkQyO1xuJGxpZ2h0LWdyZXktdGV4dDogIzkwOTRBMjtcbiRncmVlbjogIzAwRTVFMztcbiRsaWdodC1ncmVlbjogI0E1RjNGMztcbiRtaWQtZ3JleTogI0RBREFEQTtcbiRncmV5OiAjNTU1QjcwO1xuJGV4dHJhLWxpZ2h0LWdyZXk6ICNGN0ZBRkM7XG4kYm9yZGVyLWdyZXk6ICNDN0Y1RjY7XG4kcHVycGxlOiAjQTI3Q0JEO1xuJHB1cnBsZS1idG46IGRhcmtlbigkcHVycGxlLCAxNSUpO1xuJHBpbmstc2FuZHNreTogI0ZGODdBMTtcbiRwaW5rLXNhbmRza3ktYnRuOiBkYXJrZW4oJHBpbmstc2FuZHNreSwgMTUlKTtcbiRkYXJrLXBpbms6IGRhcmtlbigkcGluaywgMTUlKTtcblxuJGJiLWhpZ2hsaWdodDogIzcyRkZDQztcbiRiYi1uYXZ5OiAjMjEzRjkzO1xuJGJiLXBpbms6ICNGRjY4OTY7XG4kYmItdHVycXVvaXNlOiAjMDBEMUQ0O1xuJGJiLWJsdWU6ICM0RjdBREQ7XG4kYmItcHVycGxlOiAjQURBMEZGO1xuJGJiLWRhcmtwdXJwbGU6ICM2RDMzQUE7XG4kYmItbGlnaHRwaW5rOiAjMDBEMUQ0O1xuXG4kc20tc2t5LWJsdWU6ICMwMDlEQzI7XG4kc20taG90LXBpbms6ICNGRjFBOTQ7XG4kc20tbWludDogIzMzQ0M5OTtcbiRzbS1wYXN0ZWwtcGluazogI0ZGNjY5OTtcbiRzbS1wdXJwbGU6ICM5OTY2Q0M7XG5cbiRzay1oZXJvLXBpbms6ICNmZjdiOTA7XG4kc2stbGlnaHQtcGluazogI2ZmZThlYztcbiRzay1oZXJvLWJsdWU6ICMzZWM3ZjM7XG4kc2stZ3JlZW46ICM0YmNkOGI7XG5cbiRwcy1oZXJvLW5hdnk6ICMwMDQ3YmI7XG4kcHMtaGVyby1waW5rOiAjZmYwMTU5O1xuJHBzLWxpZ2h0LWJsdWU6ICNjZWYwZjk7XG4kcHMtbGlnaHQtcGluazogI2ZmZTFlNztcblxuJGNlLWxpZ2h0LXBpbms6I2ZmZWJlYjtcbiRjZS1saWdodC1ncmVlbjogIzUwYjI3NztcblxuJHNzLWFwYzogI0ZGNkY4RDtcbiRzcy1hcGMtbGlnaHQ6ICNGRkVGRjI7XG4kc3MtYWVhOiAjQ0MzMTk1O1xuJHNzLWFlYS1saWdodDogI0Y1RTdGMztcbiRzcy10c3c6ICM0MkExQ0E7XG4kc3MtdHN3LWxpZ2h0OiAjREZGNEY5O1xuXG4kY2UtcHJpbWFyeTogI0YzNDM2QztcbiRjZS1wcmltYXJ5LWxpZ2h0OiAjRjVEQURGO1xuJGNlLXByaW1hcnktZGFyazogI0IyMkQ0QjtcbiRjZS1zZWNvbmRhcnk6ICMwMDYzNUI7XG4kY2Utc2Vjb25kYXJ5LWxpZ2h0OiAjRTBGMEU5O1xuJGNlLWdyZWVuLWxpZ2h0OiAjMDBCNjdBO1xuJGNlLWJhbGktYm9kLWJsdWU6ICMyMTNFN0I7XG5cbi8vIEJyZWFrcG9pbnRzXG4kbGFyZ2UtbW9iaWxlOiA1MTBweDtcbiR0YWJsZXQtcGx1czogNzY4cHg7XG4kc21hbGwtZGVza3RvcDogMTAyNHB4O1xuJGxhcmdlLWRlc2t0b3A6IDE0NDBweDtcbiR4bGFyZ2UtZGVza3RvcDogMTkyMHB4O1xuIiwiKiB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuaHRtbCB7IC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyBoZWlnaHQ6IDEwMCU7IH1cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1mYW1pbHk6ICRmb250LWJvZHk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuaDMge1xuICBmb250LWZhbWlseTogJGZvbnQtaGVhZGluZ3M7XG4gIGNvbG9yOiAkZGFyay1ibHVlO1xuICBmb250LXNpemU6IDM1cHg7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5oMSB7XG4gIGZvbnQtc2l6ZTogMzBweCAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogMzhweCAhaW1wb3J0YW50O1xufVxuXG4uaDIge1xuICBmb250LXNpemU6IDI0cHggIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDMwcHggIWltcG9ydGFudDtcbn1cblxuLmg2IHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWJvZHk7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDIycHg7XG59XG5cbi5tdy05MCB7XG4gIG1heC13aWR0aDogOTAlO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gIC5oMSB7XG4gICAgZm9udC1zaXplOiA5NXB4ICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDEyMHB4ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaDIge1xuICAgIGZvbnQtc2l6ZTogNTZweCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiA3MHB4ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaDQge1xuICAgIGZvbnQtc2l6ZTogNDJweCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiA1Mi41cHggIWltcG9ydGFudDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZXh0cmFsYXJnZTtcbiAgfVxuXG4gIC5oNSB7XG4gICAgZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDI1cHggIWltcG9ydGFudDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtYm9keTtcbiAgfVxuXG4gIC5oNiB7XG4gICAgZm9udC1zaXplOiAzNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiA0NXB4O1xuICB9XG59XG5cblxuLmJ0biB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LWZhbWlseTogJGZvbnQtYnV0dG9uO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAkcGluaztcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgcGFkZGluZzogMTJweCAwO1xuICB3aWR0aDogMjA5cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgYm9yZGVyOiAzcHggc29saWQgJGxpZ2h0LWdyZXk7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzO1xuICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHBpbms7XG4gICAgYm9yZGVyLWNvbG9yOiAkcGluaztcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB3aWR0aDogMzA3cHg7XG4gICAgcGFkZGluZzogMjNweCAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAycHg7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG59XG5cbmhlYWRlci5vdmVyLWhlcm86bm90KC5tZW51LWFjdGl2ZSkge1xuICAubGluay1qb2luIHtcbiAgICBib3JkZXItY29sb3I6ICRwaW5rO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBib3JkZXItY29sb3I6IHdoaXRlO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICBjb2xvcjogJHBpbms7XG4gICAgfVxuICB9XG59XG5cbi5pcy1zdGlja3kgaGVhZGVyLm92ZXItaGVybyB7XG4gIC5saW5rLWpvaW4ge1xuICAgIGJvcmRlci1jb2xvcjogd2hpdGU7XG4gIH1cbn1cblxuLmJ0bi13aGl0ZSB7XG4gIHdpZHRoOiAyMTZweDtcbiAgcGFkZGluZzogOHB4IDA7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuICBsZXR0ZXItc3BhY2luZzogMDtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItY29sb3I6IHdoaXRlO1xuICAgIGNvbG9yOiAkZGFyay1ibHVlO1xuICB9XG59XG5cbi5idG4tcHJvZHVjdCB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMTUpO1xuXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3M7XG4gIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3M7XG4gIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3M7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuXG4gICAgJi5idG4tcHJvZHVjdC1za2lubnkge1xuICAgICAgY29sb3I6ICRwdXJwbGUtYnRuO1xuICAgIH1cbiAgICAmLmJ0bi1wcm9kdWN0LWJvZHkge1xuICAgICAgIGNvbG9yOiAkZGVlcC1ibHVlLWJ0bjtcbiAgICB9XG4gICAgJi5idG4tcHJvZHVjdC1jZSB7XG4gICAgICBjb2xvcjogJGNlLWxpZ2h0LWdyZWVuO1xuICAgIH1cbiAgICAmLmJ0bi1wcm9kdWN0LXNhbmQge1xuICAgICAgY29sb3I6ICRwaW5rLXNhbmRza3ktYnRuO1xuICAgIH1cbiAgfVxufVxuXG4uYmFja2dyb3VuZC1waW5rIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LXBpbms7XG59XG5cbi5iYWNrZ3JvdW5kLWxpZ2h0cGlua3tcbiAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LXBpbms7XG59XG5cbi5iYWNrZ3JvdW5kLWRhcmtwaW5rIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHBpbms7XG59XG5cbi5iYWNrZ3JvdW5kLWdyZWVuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGdyZWVuO1xufVxuXG4uYmFja2dyb3VuZC1saWdodGdyZWVuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyZWVuO1xufVxuXG4uYmFja2dyb3VuZC1ncmV5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJG1pZC1ncmV5O1xufVxuXG4uYmFja2dyb3VuZC1saWdodGdyZXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXh0cmEtbGlnaHQtZ3JleTtcbn1cblxuLmJhY2tncm91bmQtYmx1ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRibHVlO1xufVxuXG4uYmFja2dyb3VuZC1wdXJwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHVycGxlO1xufVxuXG4uYmFja2dyb3VuZC1kZWVwYmx1ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRkZWVwLWJsdWU7XG59XG5cbi5iYWNrZ3JvdW5kLWJsdWUtcG9wc21pbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHMtaGVyby1uYXZ5O1xufVxuXG4uYmFja2dyb3VuZC1zcy1hcGMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3MtYXBjICFpbXBvcnRhbnQ7XG59XG5cbi5iYWNrZ3JvdW5kLXNzLWFwYy1saWdodCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzcy1hcGMtbGlnaHQgIWltcG9ydGFudDtcbn1cblxuLmJhY2tncm91bmQtc3MtYWVhIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNzLWFlYSAhaW1wb3J0YW50O1xufVxuXG4uYmFja2dyb3VuZC1zcy1hZWEtbGlnaHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3MtYWVhLWxpZ2h0ICFpbXBvcnRhbnQ7XG59XG5cbi5iYWNrZ3JvdW5kLXNzLXRzdyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzcy10c3cgIWltcG9ydGFudDtcbn1cblxuLmJhY2tncm91bmQtc3MtdHN3LWxpZ2h0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNzLXRzdy1saWdodCAhaW1wb3J0YW50O1xufVxuXG4uYmFja2dyb3VuZC1jZS1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNlLXByaW1hcnkgIWltcG9ydGFudDtcbn1cblxuLmJhY2tncm91bmQtY2UtcHJpbWFyeS1saWdodCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjZS1wcmltYXJ5LWxpZ2h0ICFpbXBvcnRhbnQ7XG59XG5cbi5iYWNrZ3JvdW5kLWNlLXByaW1hcnktZGFyayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjZS1wcmltYXJ5LWRhcmsgIWltcG9ydGFudDtcbn1cblxuLmJhY2tncm91bmQtY2Utc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNlLXNlY29uZGFyeSAhaW1wb3J0YW50O1xufVxuXG4uYmFja2dyb3VuZC1jZS1zZWNvbmRhcnktbGlnaHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2Utc2Vjb25kYXJ5LWxpZ2h0ICFpbXBvcnRhbnQ7XG59XG5cbi5iYWNrZ3JvdW5kLWNlLWJhbGktYm9kIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNlLWJhbGktYm9kLWJsdWUgIWltcG9ydGFudDtcbn1cblxuLmJhY2tncm91bmQtd2hpdGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5oLTEwMCB7XG4gIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG4uZC1mbGV4IHtcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xufVxuXG4uZmxleC1jb2x1bW4ge1xuICBmbGV4LWZsb3c6IGNvbHVtbiAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24taXRlbXMtY2VudGVyIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24taXRlbXMtZW5kIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1pdGVtcy1zdGFydCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG59XG5cbi5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLmZsZXgtd3JhcCB7XG4gIGZsZXgtZmxvdzogd3JhcCAhaW1wb3J0YW50O1xufVxuXG4ubS0wIHtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5tYi0wIHtcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuXG4ucC0wIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1zcy1hcGMge1xuICBjb2xvcjogJHNzLWFwYyAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1zcy1hcGMtbGlnaHQge1xuICBjb2xvcjogJHNzLWFwYy1saWdodCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1zcy1hZWEge1xuICBjb2xvcjogJHNzLWFlYSAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1zcy1hZWEtbGlnaHQge1xuICBjb2xvcjogJHNzLWFlYS1saWdodCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1zcy10c3cge1xuICBjb2xvcjogJHNzLXRzdyAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1zcy10c3ctbGlnaHQge1xuICBjb2xvcjogJHNzLXRzdy1saWdodCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC13aGl0ZSB7XG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG59XG5cblxuLnRleHQtY2UtcHJpbWFyeSB7XG4gIGNvbG9yOiAkY2UtcHJpbWFyeSAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1jZS1wcmltYXJ5LWxpZ2h0IHtcbiAgY29sb3I6ICRjZS1wcmltYXJ5LWxpZ2h0ICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWNlLXByaW1hcnktZGFyayB7XG4gIGNvbG9yOiAkY2UtcHJpbWFyeS1kYXJrICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWNlLXNlY29uZGFyeSB7XG4gIGNvbG9yOiAkY2Utc2Vjb25kYXJ5ICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWNlLXNlY29uZGFyeS1saWdodCB7XG4gIGNvbG9yOiAkY2Utc2Vjb25kYXJ5LWxpZ2h0ICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWRhcmstYmx1ZSB7XG4gIGNvbG9yOiAjMjgyQzQ0ICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWdyZXkge1xuICBjb2xvcjogIzk4OTRBNCAhaW1wb3J0YW50O1xufVxuXG4uZC1ub25lIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uZC1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWRlY29yYXRpb24tbm9uZSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1zcGFjaW5nLW5vcm1hbCB7XG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWwgIWltcG9ydGFudDtcbn1cblxuLnRleHQtY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG59XG5cbi5weC0xIHtcbiAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgZm9udC1zaXplOiAxLjhlbSAhaW1wb3J0YW50O1xufVxuXG4ucG9zaXRpb24tcmVsYXRpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbn1cblxuLnctYXV0byB7XG4gIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuaC1zbS1hdXRvIHtcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblxuICAgIC50ZXh0LXNwYWNpbmctbm9ybWFsIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAzNXB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cblxuQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAuZC1sZy1ub25lIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbGctYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbGctZmxleCB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5tdy1ub25lIHtcbiAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5iYWNrZ3JvdW5kLWdyZWVuLWNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNlLWxpZ2h0LWdyZWVuO1xuICAmLml0ZW0tZ3JpZCAuaXRlbS1ncmlkLXRleHR7XG4gICAgY29sb3I6I2ZmZjtcbiAgfVxufVxuXG4uc2VjdGlvbi1pbWFnZS1ncmlkXG5kaXYuYmFja2dyb3VuZC1ncmVlbi1jZS5pdGVtLWdyaWQge1xuICAuaXRlbS1ncmlkLXRleHQge1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG4gIC5pdGVtLWdyaWQtdGV4dC1zbWFsbCB7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbn1cblxuLmJhY2tncm91bmQtcGluay1zYW5kc2t5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNrLWhlcm8tcGluaztcbn1cblxuLmJhY2tncm91bmQtYmItbmF2eSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYi1uYXZ5O1xufVxuXG4uYmFja2dyb3VuZC1zbS1wdXJwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc20tcHVycGxlO1xufVxuXG5AbWl4aW4gYmFja2dyb3VuZC1jb3ZlcigpIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cblxuZGl2LnRleHQtcGluayB7XG4gIC5zZWN0aW9uLXRleHQtbGFyZ2Uge1xuICAgIGNvbG9yOiAkcGluaztcbiAgfVxufVxuXG5kaXYudGV4dC1ncmVlbiB7XG4gIC5zZWN0aW9uLXRleHQtbGFyZ2Uge1xuICAgIGNvbG9yOiAkbGlnaHQtZ3JlZW47XG4gIH1cbn1cblxuLnNlY3Rpb24taW1hZ2UtZ3JpZFxuZGl2LnRleHQtcHVycGxlLml0ZW0tZ3JpZCB7XG4gIC5pdGVtLWdyaWQtdGV4dCB7XG4gICAgY29sb3I6ICRwdXJwbGU7XG4gIH1cbiAgLml0ZW0tZ3JpZC10ZXh0LXNtYWxsIHtcbiAgICBjb2xvcjogJHB1cnBsZTtcbiAgfVxufVxuXG4uc2VjdGlvbi1pbWFnZS1ncmlkXG5kaXYudGV4dC1kZWVwYmx1ZS5pdGVtLWdyaWQge1xuICAuaXRlbS1ncmlkLXRleHQge1xuICAgIGNvbG9yOiAkZGVlcC1ibHVlO1xuICB9XG4gIC5pdGVtLWdyaWQtdGV4dC1zbWFsbCB7XG4gICAgY29sb3I6ICRkZWVwLWJsdWU7XG4gIH1cbn1cblxuLnNlY3Rpb24taW1hZ2UtZ3JpZFxuZGl2LnRleHQtZ3JlZW4tY2UuaXRlbS1ncmlkIHtcbiAgLml0ZW0tZ3JpZC10ZXh0IHtcbiAgICBjb2xvcjogJGNlLWxpZ2h0LWdyZWVuO1xuICB9XG4gIC5pdGVtLWdyaWQtdGV4dC1zbWFsbCB7XG4gICAgY29sb3I6ICRjZS1saWdodC1ncmVlbjtcbiAgfVxufVxuXG4uc2VjdGlvbi1pbWFnZS1ncmlkXG5kaXYudGV4dC1waW5rLXNhbmRza3kuaXRlbS1ncmlkIHtcbiAgLml0ZW0tZ3JpZC10ZXh0IHtcbiAgICBjb2xvcjogJHBpbmstc2FuZHNreTtcbiAgfVxuICAuaXRlbS1ncmlkLXRleHQtc21hbGwge1xuICAgIGNvbG9yOiAkcGluay1zYW5kc2t5O1xuICB9XG59XG5cblxuXG4udGV4dC10cmFuc3BhcmVudCB7XG4gIG9wYWNpdHk6IDAuMzY7XG59XG5cbi50ZXh0LXNoYWRvdyB7XG4gIHRleHQtc2hhZG93OiAwIDJweCA3NXB4IHJnYmEoMCwwLDAsMC40KTtcbn1cblxuLnNlY3Rpb24tdGV4dC1sYXJnZSwgLnNlY3Rpb24tdGV4dC1zbWFsbCB7XG4gIG1heC13aWR0aDogMTQwMHB4O1xufVxuXG4uZ3JpZC1tYXgtd2lkdGgge1xuICBtYXgtd2lkdGg6IDg1MHB4O1xuICBtYXJnaW4tdG9wOiA0LjUlO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA0MDBweClcbiAge1xuICAgIG1heC13aWR0aDogMzUwcHg7XG4gICAgbWFyZ2luLXRvcDogNC41JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cbn1cblxuLnZpbWVvLXZpZGVvIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogYXV0bztcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4ucGx5ciB7XG4gIGhlaWdodDogMTAwJTsgfVxuXG4ucGx5cl9fdmlkZW8tZW1iZWQgPiBkaXYge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTI0Ljk1JSk7IH1cblxuLnBsYXktYnRuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyAvLyBUZW1wIHJlbW92ZSBwbGF5IGJ1dHRvbnNcbn1cblxuLmZhZGVJblVwLCAuZmFkZUluRG93biwgLmZhZGVJbiB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDE1MG1zIGVhc2Utb3V0O1xuICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMTUwbXMgZWFzZS1vdXQ7XG4gIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMTUwbXMgZWFzZS1vdXQ7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTUwbXMgZWFzZS1vdXQ7XG59XG5cbi5wcm9kdWN0LXNhbmRza3kge1xuICBtYXJnaW4tdG9wOiAxMDBweDtcbn1cbiIsImhlYWRlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiBhdXRvO1xuICBwYWRkaW5nOiAxMXB4IDExcHggMTFweCAxNHB4O1xuICB6LWluZGV4OiAyMDtcblxuICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzO1xuICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzO1xuICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHM7XG4gIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cztcblxuICAmLm1lbnUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHotaW5kZXg6IDEwO1xuXG4gICAgbmF2IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5sb2dvIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJi5tZW51LWFjdGl2ZS5vdmVyLWhlcm8ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwaW5rO1xuICB9XG5cbiAgJi5vdmVyLWhlcm8ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICBwYWRkaW5nOiA0M3B4IDQycHggMzZweCA0NXB4O1xuICB9XG5cbiAgLmxvZ28ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi10b3A6IDlweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgIG1hcmdpbi10b3A6IDExcHg7XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIHdpZHRoOiAxOTZweDtcbiAgICAgIGhlaWdodDogYXV0bztcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICB3aWR0aDogMjExcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmF2IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIG1hcmdpbjogMTBweCDigIthdXRvIDI1cHg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgbWFyZ2luOiAxMHB4IOKAi2F1dG8gMjVweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgICAgYm9yZGVyLXRvcDogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuXG4gICAgICAmLmFjdGl2ZSwgJjpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGFyay1ibHVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzMsNDEsNjksIDAuMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBwYWRkaW5nOiAwIDE4cHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gICAgICAgIGJvcmRlcjogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICAgICY6bnRoLWNoaWxkKDUpIHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyN3B4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYubGluay1qb2luIHtcbiAgICAgICAgcGFkZGluZzogMCAxOHB4O1xuICAgICAgICBib3JkZXI6IDNweCBzb2xpZCB3aGl0ZTtcbiAgICAgICAgbWFyZ2luOiAxNXB4IGF1dG87XG4gICAgICAgIHdpZHRoOiA3MCU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgICAgICBtYXJnaW46IDAgMCAwIDJweDtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubmF2LW92ZXIge1xuICAgICAgYSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcblxuICAgICAgICAmLm5hdi1pdGVtLW92ZXIge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgJi5iYWNrZ3JvdW5kLWRhcmtwaW5rIHtcbiAgICAgIC5saW5rLWpvaW46aG92ZXIge1xuICAgICAgICBjb2xvcjogJHBpbms7XG4gICAgICB9XG4gICAgfVxuICAgICYuYmFja2dyb3VuZC1ncmVlbiB7XG4gICAgICAubGluay1qb2luOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRncmVlbjtcbiAgICAgIH1cbiAgICB9XG4gICAgJi5iYWNrZ3JvdW5kLWJsdWUge1xuICAgICAgLmxpbmstam9pbjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkYmx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJi5iYWNrZ3JvdW5kLXNzLXRzdyB7XG4gICAgICAubGluay1qb2luOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRzcy10c3c7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNvY2lhbC1saW5rcyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB3aWR0aDogNTUlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XG4gICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICBpbWcge1xuICAgICAgaGVpZ2h0OiAyN3B4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi5ob21lIC5zdGlja3ktd3JhcHBlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5zdGlja3ktd3JhcHBlciB7XG4gIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuXG4uaXMtc3RpY2t5IGhlYWRlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaGVpZ2h0OiA2MHB4O1xuICBwYWRkaW5nOiAxMXB4IDExcHggMTFweCAxNHB4O1xuICB6LWluZGV4OiAxMDA7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgIHBhZGRpbmc6IDE0cHggNDJweCAwIDQ1cHg7XG4gICAgaGVpZ2h0OiA3MHB4O1xuICB9XG5cbiAgJi5vdmVyLWhlcm8ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwaW5rO1xuICB9XG5cbiAgJi5tZW51LWFjdGl2ZSB7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICBwYWRkaW5nLWJvdHRvbTogNDBweDtcbiAgICB9XG4gIH1cbn1cblxuLm1lbnUtYWN0aXZlIC5zb2NpYWwtbGlua3Mge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cblxuLy8gTmF2IHRvZ2dsZSAoaGFtYnVyZ2VyKVxuI25hdi10b2dnbGUge1xuICBmbG9hdDogcmlnaHQ7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMzhweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICB6LWluZGV4OiAxMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiAxNXB4IDdweCAxN3B4O1xuICBib3JkZXI6IDNweCBzb2xpZCB3aGl0ZTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ubWVudS1hY3RpdmUgI25hdi10b2dnbGUge1xuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMTFweDtcbiAgfVxufVxuXG4ub3Zlci1oZXJvICNuYXYtdG9nZ2xlIHtcbiAgYm9yZGVyOiAzcHggc29saWQgJHBpbms7XG59XG5cbiNuYXYtdG9nZ2xlIHNwYW4sICNuYXYtdG9nZ2xlIHNwYW46YmVmb3JlLCAjbmF2LXRvZ2dsZSBzcGFuOmFmdGVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItcmFkaXVzOiAxcHg7XG4gIGhlaWdodDogM3B4O1xuICB3aWR0aDogMThweDtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29udGVudDogJyc7XG59XG4jbmF2LXRvZ2dsZS5hY3RpdmUgc3BhbiwgI25hdi10b2dnbGUuYWN0aXZlIHNwYW46YmVmb3JlLCAjbmF2LXRvZ2dsZS5hY3RpdmUgc3BhbjphZnRlciB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xufVxuI25hdi10b2dnbGUgc3BhbjpiZWZvcmUge1xuICB0b3A6IC03cHg7XG59XG4jbmF2LXRvZ2dsZSBzcGFuOmFmdGVyIHtcbiAgYm90dG9tOiAtN3B4O1xufVxuXG4jbmF2LXRvZ2dsZSBzcGFuLCAjbmF2LXRvZ2dsZSBzcGFuOmJlZm9yZSwgI25hdi10b2dnbGUgc3BhbjphZnRlciB7XG4gIHRyYW5zaXRpb246IGFsbCA0MDBtcyBlYXNlLWluLW91dDtcbn1cbiNuYXYtdG9nZ2xlLmFjdGl2ZSBzcGFuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4jbmF2LXRvZ2dsZS5hY3RpdmUgc3BhbjpiZWZvcmUsICNuYXYtdG9nZ2xlLmFjdGl2ZSBzcGFuOmFmdGVyIHtcbiAgdG9wOiAwO1xufVxuI25hdi10b2dnbGUuYWN0aXZlIHNwYW46YmVmb3JlIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xufVxuI25hdi10b2dnbGUuYWN0aXZlIHNwYW46YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xufVxuIiwiZm9vdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGRhcmstYmx1ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5mb290ZXItdG9wIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiA0OXB4IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRncmV5O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgcGFkZGluZzogNzRweCAzN3B4IDQ0cHggNDdweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgLmxvZ28ge1xuICAgIG1hcmdpbi1ib3R0b206IDE5cHg7XG4gICAgd2lkdGg6IDIwOXB4O1xuICAgIGhlaWdodDogYXV0bztcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcbiAgICB9XG4gIH1cblxuICAubG9jYXRpb24tbGlzdCB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgbWFyZ2luOiAwIGF1dG8gMjJweDtcbiAgICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIHdpZHRoOiA2MCU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDcxcHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBtYXJnaW4tbGVmdDogLTMwJTtcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDE5cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2RvdF9ncmV5X3RyYW5zLnBuZykgcmlnaHQgOHB4IGNlbnRlciBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDRweCBhdXRvO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnYXZlcnRhLWV4dHJhYm9sZCcsIGFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5idG4ge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBtYXJnaW4tdG9wOiAtMTVweDtcbiAgICB9XG4gIH1cbn1cblxuLmZvb3Rlci1ib3R0b20ge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogNDJweCAwIDQ4cHg7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICBwYWRkaW5nOiA1MHB4IDI1cHggNTBweCA0NXB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICAuc29jaWFsLWljb25zIHtcbiAgICB3aWR0aDogMjUzcHg7XG4gICAgbWFyZ2luOiAwIGF1dG8gNDFweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIG1hcmdpbjogN3B4IGF1dG8gMDtcbiAgICB9XG4gICAgXG4gICAgPiBhIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHBhZGRpbmc6IDAgMjhweDtcbiAgICAgIHdpZHRoOiA4M3B4O1xuICAgICAgaGVpZ2h0OiAzMnB4O1xuXG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC41cztcbiAgICAgIC1tcy10cmFuc2l0aW9uOiBhbGwgMC41cztcbiAgICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXM7XG5cbiAgICAgICYuZmFjZWJvb2sge1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2ZhY2Vib29rLnBuZykgY2VudGVyIGNlbnRlciBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAyN3B4O1xuICAgICAgICB3aWR0aDogNzhweDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxOHB4O1xuICAgICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9mYWNlYm9va193aGl0ZS5wbmcpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAyN3B4O1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxOHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmluc3RhZ3JhbSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvaW5zdGFncmFtLnBuZykgY2VudGVyIGNlbnRlciBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAyN3B4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBhdXRvIDE4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2luc3RhZ3JhbV93aGl0ZS5wbmcpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAyN3B4O1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxOHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmxpbmtlZGluIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9saW5rZWRpbi5wbmcpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMjdweDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9saW5rZWRpbl93aGl0ZS5wbmcpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAyN3B4O1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxOHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBwYWRkaW5nOiAwIDE1cHg7XG4gICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IDIzcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZpbmVwcmludCB7XG4gICAgY29sb3I6ICRncmV5O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDRweCAwO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbjogNHB4IDA7XG4gICAgICBjb2xvcjogJGdyZXk7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgICAgfVxuXG4gICAgICAmLmxvZ28tZmxpbnQge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDI3cHg7XG4gICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9mbGludC5wbmcpIHJpZ2h0IC03cHggbm8tcmVwZWF0O1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMzFweCBhdXRvO1xuICAgICAgICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgICAgICAgaGVpZ2h0OiAyOXB4O1xuICAgICAgICAgIG1hcmdpbi10b3A6IC0xcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmZpbmVwcmludCBhIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyAvLyBUZW1wIGhpZGUgbGlua3Ncbn1cbiIsIi5zZWN0aW9uLWhlcm8ge1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiA5MHZoO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLml0ZW0taGVybyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jb3ZlcigpO1xuICAgIGhlaWdodDogOTB2aDtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuXG4gICAgLml0ZW0taGVyby10ZXh0IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgbWF4LXdpZHRoOiA5NSU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzMXB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBmb250LXNpemU6IDc1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA3NXB4O1xuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIHdpZHRoOiA5NSU7XG4gICAgICAgICAgbWF4LXdpZHRoOiA5NThweDtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogODhweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDg0cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5ob21lIC5zZWN0aW9uLWhlcm8ge1xuICBoZWlnaHQ6IDM1MHB4O1xuICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgIGhlaWdodDogMTAwdmg7XG4gIH1cblxuICAuaXRlbS1oZXJvIHtcbiAgICBoZWlnaHQ6IDM1MHB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgfVxuICB9XG59XG5cbi5zZWN0aW9uLXRleHQge1xuICBwYWRkaW5nOiA1OXB4IDIwcHggNTdweDtcblxuICAmLnNlY3Rpb24taGVhZGluZy1uZXcge1xuICAgIHBhZGRpbmc6IDE0MHB4IDE1cHggNTdweDtcblxuICAgICYuaG9tZXBhZ2UtY2VudGVyZWQge1xuICAgICAgcGFkZGluZy10b3A6IDYwcHg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogNjBweDtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgIHBhZGRpbmc6IDE1NXB4IDAgMTQwcHg7XG5cbiAgICAmLnNlY3Rpb24taGVhZGluZy1uZXcge1xuICAgICAgcGFkZGluZzogMTI1cHggMDtcbiAgICB9XG4gIH1cblxuICAmLndpdGgtYnV0dG9uIHtcbiAgICBwYWRkaW5nOiA0MXB4IDIwcHggNjhweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBwYWRkaW5nOiA1MnB4IDIwcHg7XG4gICAgfVxuICB9XG5cbiAgJi5hZnRlci1hcnJvdyB7XG4gICAgcGFkZGluZzogMThweCAwIDM0cHg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgcGFkZGluZzogMTI1cHggMCAxNDFweDtcbiAgICB9XG5cbiAgICAmLndpdGgtYnV0dG9uIHsgLy8gZ3JleSBiYWNrZ3JvdW5kIChob21lIGRlc2lnbilcbiAgICAgIHBhZGRpbmc6IDExcHggMCAyM3B4O1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBwYWRkaW5nOiA2M3B4IDAgMTAwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5iYWNrZ3JvdW5kLXBpbmsge1xuICAgIHBhZGRpbmc6IDYwcHggMCA0M3B4O1xuICB9XG5cbiAgJi5tYXJnaW4tc21hbGwge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIHBhZGRpbmc6IDMzcHggMCAzNnB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIHBhZGRpbmc6IDc1cHggMCA4NXB4O1xuICAgIH1cbiAgfVxuXG4gIC5zZWN0aW9uLXRleHQtbGFyZ2Uge1xuICAgIHdpZHRoOiA5NSU7XG4gICAgY29sb3I6ICRkYXJrLWJsdWU7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAwIGF1dG8gMjVweDtcbiAgICBsaW5lLWhlaWdodDogMjJweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICB3aWR0aDogNjQlO1xuICAgICAgZm9udC1zaXplOiA1MHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDU0cHg7XG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgfVxuICB9XG5cbiAgLnNlY3Rpb24tdGV4dC1zbWFsbCB7XG4gICAgd2lkdGg6IDk1JTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBjb2xvcjogJGxpZ2h0LWdyZXktdGV4dDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtYm9keTtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlLW1vYmlsZSkge1xuICAgICAgd2lkdGg6IDcwJTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgICAgd2lkdGg6IDYwJTtcbiAgICB9XG4gIH1cblxuICAuc2VjdGlvbi10ZXh0LXNtYWxsICsgLmJ0biB7XG4gICAgbWFyZ2luLXRvcDogMzlweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBtYXJnaW4tdG9wOiAzNXB4O1xuICAgIH1cbiAgfVxufVxuXG4uc2VjdGlvbi1pbWFnZS1ncmlkIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcblxuICAuaXRlbS1ncmlkIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNvdmVyKCk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMjUycHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJi5pdGVtLXNwbGl0IHtcbiAgICAgIGhlaWdodDogNTB2aDtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgaGVpZ2h0OiAzMy4ydnc7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG5cbiAgICAgICYuaXRlbS1zcGxpdCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgfVxuXG5cbiAgICB9XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgLjNzIGxpbmVhcjtcbiAgICB9XG5cbiAgICAmOmhvdmVyOmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLCAwLjI1KTtcbiAgICB9XG5cbiAgICAuaXRlbS1ncmlkLXRleHQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogMjBweDtcbiAgICAgIGJvdHRvbTogNDJweDtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgICAgIGZvbnQtc2l6ZTogMzdweDtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4O1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBmb250LXNpemU6IDYwcHg7XG4gICAgICAgIGxlZnQ6IDYwcHg7XG4gICAgICAgIGJvdHRvbTogNThweDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgbGluZWFyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pdGVtLWdyaWQtdGV4dC1zbWFsbCB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAyMHB4O1xuICAgICAgYm90dG9tOiAyMnB4O1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjVweDtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsZWZ0OiA2MHB4O1xuICAgICAgICBib3R0b206IDI5cHg7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4O1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBsaW5lYXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAuaXRlbS1ncmlkLXRleHQge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIGJvdHRvbTogNzVweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLml0ZW0tZ3JpZC10ZXh0LXNtYWxsIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICBib3R0b206IDQ2cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLnN0YXRzIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJi5ncmlkLWJyYW5kczpub3QoLmdyaWQtYnJhbmRzLXBvcHNtaWxlKSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pdGVtLWdyaWQge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgaGVpZ2h0OiA1MHZ3O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICB3aWR0aDogMzMuMzMzMzMzMyU7XG4gICAgICAgIGhlaWdodDogMzMuMzMzMzMzdnc7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXI6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgcCB7XG4gICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgfVxuXG4gICAgICAuaXRlbS1ncmlkLXRleHQge1xuICAgICAgICBmb250LXNpemU6IDQwcHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1leHRyYWxhcmdlO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi10b3A6IDMyJTtcbiAgICAgICAgY29sb3I6ICRncmVlbjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IGF1dG87XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIGJvdHRvbTogYXV0bztcblxuICAgICAgICAmLmdyaWQtdGV4dC1tZWRpdW0ge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICBwYWRkaW5nOiAwIDMlO1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMzNweDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDQ1cHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5ncmlkLXRleHQtYmViYXMge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDEwJTtcbiAgICAgICAgICBmb250LWZhbWlseTogJGZvbnQtYnV0dG9uO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gICAgICAgICAgZm9udC1zaXplOiAxOXB4O1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzMnB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTMlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuZ3JpZC10ZXh0LWJlYmFzICsgLmdyaWQtdGV4dC1tZWRpdW0ge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDQuNSU7XG4gICAgICAgICAgZm9udC1zaXplOiAxN3B4O1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjNweDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDMycHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5ncmlkLXRleHQtbm9ybWFsIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiA0LjUlO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICBmb250LWZhbWlseTogJGZvbnQtYm9keTtcblxuICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDMycHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi50ZXh0LXNtYWxsZXIge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDYwcHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogNjVweDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZS1kZXNrdG9wKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDc4cHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UtbW9iaWxlKSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogNDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAzNSU7XG4gICAgICAgICAgZm9udC1zaXplOiA2MHB4O1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNiU7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMzUlO1xuICAgICAgICAgIGZvbnQtc2l6ZTogNzBweDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjYlO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UtZGVza3RvcCkge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTEwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5ncmlkLXZpZXRuYW0ge1xuICAgICAgICAuaXRlbS1ncmlkLXRleHQuZ3JpZC10ZXh0LWJlYmFzIHtcbiAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMTElO1xuICAgICAgICB9XG5cbiAgICAgICAgLml0ZW0tZ3JpZC10ZXh0IHtcbiAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMTAlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5pdGVtLWdyaWQtdGV4dC1zbWFsbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogJGdyZWVuO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgcGFkZGluZzogMCAzJTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYmVhdXR5LWVkaXRvci10ZXh0IHtcbiAgICAgICAgICBmb250LXNpemU6IDE3cHg7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMzhweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi50d28tdGhpcmRzIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICB3aWR0aDogNjYuNjY2NjY2NiU7XG4gICAgICAgICAgaGVpZ2h0OiAzMy4zMzMzMzN2dztcbiAgICAgICAgfVxuXG4gICAgICAgICYucmUtZ3JpZC01IHtcbiAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgICAgICB3aWR0aDogNjYuNjY2NiU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLml0ZW0tZ3JpZC10ZXh0IHtcbiAgICAgICAgICBmb250LXNpemU6IDUwcHg7XG4gICAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWV4dHJhbGFyZ2U7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMTclO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IC01cHg7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTUuNiU7XG4gICAgICAgICAgICBmb250LXNpemU6IDkwcHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE0LjYlO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMTBweDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR4bGFyZ2UtZGVza3RvcCkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjAuNiU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi5ncmlkLXRleHQtbWVkaXVtIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAzM3B4O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxMiU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiA0NHB4O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxNyU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlLWRlc2t0b3ApIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiA0OHB4O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAyMSU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi5ncmlkLXRleHQtc21hbGwtbWVkIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAzNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgICYuZ3JpZC10ZXh0LWJlYmFzIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwJTtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1idXR0b247XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOXB4O1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZS1tb2JpbGUpIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyM3B4O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxNCU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzVweDtcbiAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTMlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgICYuZ3JpZC10ZXh0LWJlYmFzICsgLmdyaWQtdGV4dC1tZWRpdW0ge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41JTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTdweDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UtbW9iaWxlKSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjFweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyM3B4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLmdyaWQtdGV4dC1ub3JtYWwge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41JTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1ib2R5O1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgICAgICBmb250LXNpemU6IDMycHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLml0ZW0tZ3JpZC10ZXh0LXNtYWxsIHtcbiAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMyU7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmdyaWQtcGluayB7XG4gICAgICAgIC5pdGVtLWdyaWQtdGV4dCB7XG4gICAgICAgICAgY29sb3I6ICRwaW5rO1xuICAgICAgICB9XG5cbiAgICAgICAgLml0ZW0tZ3JpZC10ZXh0LXNtYWxsIHtcbiAgICAgICAgICBjb2xvcjogJHBpbms7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5iaS13ZWJzaXRlLXZpc2l0cyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgICAgd2lkdGg6IDY2LjY2NjY2NjYlO1xuICAgICAgICAgIGhlaWdodDogMzMuMzMzMzMzdnc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5iYWNrZ3JvdW5kLWRhcmtwaW5rIC5pdGVtLWdyaWQtdGV4dCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIH1cbiAgICAgICYuYmFja2dyb3VuZC1kYXJrcGluayAuaXRlbS1ncmlkLXRleHQtc21hbGwge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICB9XG4gICAgICAmLmJhY2tncm91bmQtcGluayAuaXRlbS1ncmlkLXRleHQge1xuICAgICAgICBjb2xvcjogJHBpbms7XG4gICAgICB9XG4gICAgICAmLmJhY2tncm91bmQtcGluayAuaXRlbS1ncmlkLXRleHQtc21hbGwge1xuICAgICAgICBjb2xvcjogJHBpbms7XG4gICAgICB9XG4gICAgICAmLmJhY2tncm91bmQtZ3JlZW4gLml0ZW0tZ3JpZC10ZXh0IHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgfVxuICAgICAgJi5iYWNrZ3JvdW5kLWdyZWVuIC5pdGVtLWdyaWQtdGV4dC1zbWFsbCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIH1cbiAgICAgICYuYmFja2dyb3VuZC1saWdodGdyZWVuIC5pdGVtLWdyaWQtdGV4dCB7XG4gICAgICAgIGNvbG9yOiAkZ3JlZW47XG4gICAgICB9XG4gICAgICAmLmJhY2tncm91bmQtbGlnaHRncmVlbiAuaXRlbS1ncmlkLXRleHQtc21hbGwge1xuICAgICAgICBjb2xvcjogJGdyZWVuO1xuICAgICAgfVxuICAgICAgJi5iYWNrZ3JvdW5kLXB1cnBsZSAuaXRlbS1ncmlkLXRleHQge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICB9XG4gICAgICAmLmJhY2tncm91bmQtcHVycGxlIC5pdGVtLWdyaWQtdGV4dC1zbWFsbCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIH1cbiAgICAgICYuYmFja2dyb3VuZC1kZWVwYmx1ZSAuaXRlbS1ncmlkLXRleHQge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICB9XG4gICAgICAmLmJhY2tncm91bmQtZGVlcGJsdWUgLml0ZW0tZ3JpZC10ZXh0LXNtYWxsIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgfVxuICAgICAgJi5iYWNrZ3JvdW5kLWJsdWUtcG9wc21pbGUgLml0ZW0tZ3JpZC10ZXh0IHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgfVxuICAgICAgJi5iYWNrZ3JvdW5kLWJsdWUtcG9wc21pbGUgLml0ZW0tZ3JpZC10ZXh0LXNtYWxsIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgfVxuICAgICAgJi5iYWNrZ3JvdW5kLXBpbmstc2FuZHNreSAuaXRlbS1ncmlkLXRleHQge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICB9XG4gICAgICAmLmJhY2tncm91bmQtcGluay1zYW5kc2t5IC5pdGVtLWdyaWQtdGV4dC1zbWFsbCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIH1cbiAgICAgICYuYmFja2dyb3VuZC1ibHVlIC5pdGVtLWdyaWQtdGV4dCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIH1cbiAgICAgICYuYmFja2dyb3VuZC1ibHVlIC5pdGVtLWdyaWQtdGV4dC1zbWFsbCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIH1cbiAgICAgICYuYmFja2dyb3VuZC1iYi1uYXZ5IC5pdGVtLWdyaWQtdGV4dCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIH1cbiAgICAgICYuYmFja2dyb3VuZC1iYi1uYXZ5IC5pdGVtLWdyaWQtdGV4dC1zbWFsbCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIH1cbiAgICAgICYuYmFja2dyb3VuZC1zbS1wdXJwbGUgLml0ZW0tZ3JpZC10ZXh0IHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgfVxuICAgICAgJi5iYWNrZ3JvdW5kLXNtLXB1cnBsZSAuaXRlbS1ncmlkLXRleHQtc21hbGwge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICB9XG5cbiAgICAgIC52aWRlby1wb3N0ZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cbiAgICAgICAgLnBsYXktYnRuIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB3aWR0aDogNzNweDtcbiAgICAgICAgICBoZWlnaHQ6IDczcHg7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAtMzZweDtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLTM2cHg7XG4gICAgICAgIH1cbiAgICAgICAgLnBsYXktcGluayB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJHBpbmsgdXJsKC4uL2ltZy90cmlhbmdsZS5wbmcpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMzBweCBhdXRvO1xuICAgICAgICB9XG4gICAgICAgIC5wbGF5LWdyZWVuIHtcbiAgICAgICAgICAgYmFja2dyb3VuZDogJGdyZWVuIHVybCguLi9pbWcvdHJpYW5nbGUucG5nKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDtcbiAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAzMHB4IGF1dG87XG4gICAgICAgIH1cbiAgICAgICAgLnBsYXktcHVycGxlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkcHVycGxlIHVybCguLi9pbWcvdHJpYW5nbGUucG5nKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDMwcHggYXV0bztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmdyaWQtaWNvbiB7XG4gICAgICAgIHBhZGRpbmc6IDMwcHggMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyMCw1NCwxNDksIDAuMik7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICB3aWR0aDogMzMuMzMzMzMzMyU7XG4gICAgICAgICAgaGVpZ2h0OiAzMy4zMzMzMzMzdnc7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyMCw1NCwxNDksIDAuMik7XG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgcmdiYSgyMCw1NCwxNDksIDAuMik7XG5cbiAgICAgICAgICAmOm50aC1jaGlsZCgtbiszKSB7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMCw1NCwxNDksIDAuMik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpudGgtY2hpbGQoMSksICY6bnRoLWNoaWxkKDQpIHtcbiAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEoMjAsNTQsMTQ5LCAwLjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjAsNTQsMTQ5LCAwLjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgPiBpbWcge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgdG9wOiAxNCU7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgd2lkdGg6IDIwJTtcbiAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xMCU7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcblxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgICAgICB0b3A6IDIyJTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICAgICAgdG9wOiAyOCU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnNlY3Rpb24tdGV4dC1zbWFsbCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGJvdHRvbTogMzUlO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBmb250LWZhbWlseTogJGZvbnQtaGVhZGluZ3M7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIGNvbG9yOiAkZGFya2VyLWJsdWU7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuaWNvbi1lY29tbWVyY2Uge1xuICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMjclO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xMy41JTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmljb24tc2hpcHBpbmcge1xuICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMzQlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xNyU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5pY29uLWN1c3RvbWVyIHtcbiAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgd2lkdGg6IDE4JTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtOSU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtY291bnQge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJvdHRvbTogMTUlO1xuICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLTQ0cHg7XG4gICAgICAgICAgd2lkdGg6IDg4cHg7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiA4OHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmJlYXV0eS1lZGl0b3Ige1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIHdpZHRoOiAzMy4zMzMzJTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG5cbiAgLnJlc3VsdC1zZWN0aW9uLWltYWdlLWdyaWQge1xuICAgIGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gICAgZGl2Om50aC1jaGlsZCgyKSB7XG4gICAgICBvcmRlcjogMztcbiAgICB9XG4gICAgZGl2Om50aC1jaGlsZCgzKSB7XG4gICAgICBvcmRlcjogMjtcbiAgICB9XG4gICAgZGl2Om50aC1jaGlsZCg0KSB7XG4gICAgICBvcmRlcjogNDtcbiAgICB9XG4gICAgZGl2Om50aC1jaGlsZCg1KSB7XG4gICAgICBvcmRlcjogNTtcbiAgICB9XG4gICAgZGl2Om50aC1jaGlsZCg2KSB7XG4gICAgICBvcmRlcjogNjtcbiAgICB9XG4gICAgZGl2Om50aC1jaGlsZCg3KSB7XG4gICAgICBvcmRlcjogNztcbiAgICB9XG4gICAgZGl2Om50aC1jaGlsZCg4KSB7XG4gICAgICBvcmRlcjogODtcbiAgICB9XG4gICAgZGl2Om50aC1jaGlsZCg5KSB7XG4gICAgICBvcmRlcjogOTtcblxuICAgIH1cbiAgICBkaXY6bnRoLWNoaWxkKDEwKSB7XG4gICAgICBvcmRlcjogMTA7XG4gICAgfVxuICAgIGRpdjpudGgtY2hpbGQoMTEpIHtcbiAgICAgIG9yZGVyOiAxMTtcbiAgICB9XG4gICAgZGl2Om50aC1jaGlsZCgxMikge1xuICAgICAgb3JkZXI6IDEyO1xuXG4gICAgfVxuICB9XG5cbiAgLnBlb3BsZS1zZWN0aW9uLWltYWdlLWdyaWQge1xuICAgIC5pdGVtLWdyaWQge1xuICAgICAgJjpudGgtY2hpbGQoMykge1xuICAgICAgICBvcmRlcjogOTtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDQpIHtcbiAgICAgICAgb3JkZXI6IDM7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg1KSB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoNikge1xuICAgICAgICBvcmRlcjogODtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDcpIHtcbiAgICAgICAgb3JkZXI6IDc7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg4KSB7XG4gICAgICAgIG9yZGVyOiA4O1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoMSkge1xuICAgICAgICBvcmRlcjogMTtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg5KSB7XG4gICAgICAgIG9yZGVyOiA0O1xuXG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCgxMCkge1xuICAgICAgICBvcmRlcjogNjtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDExKSB7XG4gICAgICAgIG9yZGVyOiAxMDtcbiAgICAgICAgd2lkdGg6IDMzLjMzMzMlICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCgxMikge1xuICAgICAgICBvcmRlcjogMTI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAubG9jYXRpb24tc2VjdGlvbi1pbWFnZS1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIC5pdGVtLWdyaWQge1xuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoMSkge1xuICAgICAgICBvcmRlcjogMztcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgb3JkZXI6IDM7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg0KSB7XG4gICAgICAgIG9yZGVyOiA0O1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoNSkge1xuICAgICAgICBvcmRlcjogNTtcbiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcblxuICAgICAgICAuaXRlbS1ncmlkLXRleHQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjAlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg2KSB7XG4gICAgICAgIG9yZGVyOiA4O1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoNykge1xuICAgICAgICBvcmRlcjogNztcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDgpIHtcbiAgICAgICAgb3JkZXI6IDEwO1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoOSkge1xuICAgICAgICBvcmRlcjogMTE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmJyYW5kLXNlY3Rpb24taW1hZ2UtZ3JpZC5ncmlkLWJyYW5kcy1jZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgLml0ZW0tZ3JpZCB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCgyKSB7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoMykge1xuICAgICAgICBvcmRlcjogNDtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDQpIHtcbiAgICAgICAgb3JkZXI6IDM7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg1KSB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoNikge1xuICAgICAgICBvcmRlcjogNjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuYnJhbmQtc2VjdGlvbi1pbWFnZS1ncmlkLmdyaWQtYnJhbmRzLXNzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAuaXRlbS1ncmlkIHtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBvcmRlcjogMTtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCgzKSB7XG4gICAgICAgIG9yZGVyOiA0O1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoNCkge1xuICAgICAgICBvcmRlcjogMztcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDUpIHtcbiAgICAgICAgb3JkZXI6IDU7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg2KSB7XG4gICAgICAgIG9yZGVyOiA2O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5ob21lLXNlY3Rpb24taW1hZ2UtZ3JpZCB7XG4gICAgLml0ZW0tZ3JpZCB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg0KSB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoNSkge1xuICAgICAgICBvcmRlcjogMjtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDYpIHtcbiAgICAgICAgb3JkZXI6IDU7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg3KSB7XG4gICAgICAgIG9yZGVyOiA0O1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoOCkge1xuICAgICAgICBvcmRlcjogNztcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDkpIHtcbiAgICAgICAgb3JkZXI6IDY7XG5cbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDEwKSB7XG4gICAgICAgIG9yZGVyOiA4O1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoMTEpIHtcbiAgICAgICAgb3JkZXI6IDk7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCgxMikge1xuICAgICAgICBvcmRlcjogMTA7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCgxMykge1xuICAgICAgICBvcmRlcjogMTE7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCgxNCkge1xuICAgICAgICBvcmRlcjogMTI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi52ZXJ0aWNhbC10ZXh0LWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuXG4gIC52ZXJ0aWNhbC10ZXh0LWl0ZW0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgIC5pdGVtLWdyaWQtdGV4dCB7XG4gICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbi53aXRoLWJ1dHRvbiB7XG4gIGNsZWFyOiBib3RoO1xuXG4gIC5zZWN0aW9uLXRleHQtc21hbGwge1xuICAgIHdpZHRoOiA2NSU7XG4gICAgbWFyZ2luOiAwIGF1dG87XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgd2lkdGg6IDYwJTtcbiAgICB9XG4gIH1cblxuICAuYnRuIHtcbiAgICBtYXJnaW4tdG9wOiAzOXB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIG1hcmdpbi10b3A6IDM1cHg7XG4gICAgfVxuICB9XG59XG5cbi5zZWN0aW9uLWltYWdlLWFycm93IHtcbiAgZGlzcGxheTogdGFibGU7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgYm90dG9tO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBoZWlnaHQ6IDUzdnc7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICBoZWlnaHQ6IDM2dnc7XG4gIH1cblxuICAmLmxvLXNpbmdhcG9yZSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIGhlaWdodDogNTV2dztcbiAgICB9XG4gIH1cblxuICAuc2VjdGlvbi10ZXh0LWxhcmdlIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgICBmb250LXNpemU6IDMzcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdpZHRoOiA5NSU7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IDMlO1xuICAgIGxpbmUtaGVpZ2h0OiAzNHB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIHdpZHRoOiA3NCU7XG4gICAgICBmb250LXNpemU6IDgwcHg7XG4gICAgICBsaW5lLWhlaWdodDogOTNweDtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlLWRlc2t0b3ApIHtcbiAgICAgIGZvbnQtc2l6ZTogOTBweDtcbiAgICB9XG5cbiAgICA+IC5tYXgtd2lkdGgge1xuICAgICAgbWF4LXdpZHRoOiA3MDBweDtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cblxuICAgID4gLm1heC13aWR0aC1sYXJnZSB7XG4gICAgICBtYXgtd2lkdGg6IDEwMDBweDtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgICAmLnRleHQtY2UtcHJpbWFyeSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgICAgZm9udC1zaXplOiAzM3B4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzNHB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5iaS1qb2luLW1vdmVtZW50IHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgaGVpZ2h0OiA1MXZ3O1xuICAgIH1cbiAgfVxufVxuXG4uYWZ0ZXItYXJyb3cge1xuICAuc2VjdGlvbi10ZXh0LWxhcmdlIHtcbiAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxN3B4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiA1NXB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMzJweDtcbiAgICAgIHdpZHRoOiA3NyU7XG4gICAgfVxuICB9XG5cbiAgJi53aXRoLWJ1dHRvbiB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICBwYWRkaW5nOiA2MHB4IDAgOTlweDtcbiAgICB9XG5cbiAgICAuc2VjdGlvbi10ZXh0LWxhcmdlIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjZweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VjdGlvbi10ZXh0LXNtYWxsIHtcbiAgICAgIHdpZHRoOiA3MCU7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICBtYXJnaW4tdG9wOiAxN3B4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogNDBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmJlbmVmaXRzIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDkwJTtcbiAgY29sb3I6ICRwaW5rO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgbWFyZ2luOiAwIGF1dG87XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICBmb250LXNpemU6IDE3cHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDczOHB4O1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB3aWR0aDogODM4cHg7XG4gIH1cblxuICBsaSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luOiAwIDIwcHggMCAxMnB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cblxuICBsaTpmaXJzdC1jaGlsZCB7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICB9XG59XG5cbi5zZWN0aW9uLXNvY2lhbC1tZWRpYSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgYmFja2dyb3VuZC1jb3ZlcigpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL3NvY2lhbC1tZWRpYS1tLmpwZyk7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDI4MHB4O1xuICBwYWRkaW5nLXRvcDogMTA2cHg7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL3NvY2lhbC1tZWRpYS5qcGcpO1xuICAgIGhlaWdodDogNTAuMXZ3O1xuICAgIHBhZGRpbmctdG9wOiA4JTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICBwYWRkaW5nLXRvcDogMTAlO1xuICB9XG5cbiAgLmxvdmUtc29jaWFsIHtcbiAgICBoZWlnaHQ6IDYzcHg7XG4gICAgd2lkdGg6IDMyNXB4O1xuICAgIG1hcmdpbjogMCBhdXRvIDQ0cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9oZWFydC5wbmcpIDM4cHggY2VudGVyIG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDY4cHggYXV0bztcbiAgICBmb250LWZhbWlseTogJGZvbnQtaGVhZGluZ3M7XG4gICAgZm9udC1zaXplOiAzN3B4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjVweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICB3aWR0aDogNzY4cHg7XG4gICAgICBoZWlnaHQ6IDE3N3B4O1xuICAgICAgZm9udC1zaXplOiA2MHB4O1xuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9oZWFydC5wbmcpIDE5M3B4IGNlbnRlciBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDE1NXB4IGF1dG87XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgcGFkZGluZy10b3A6IDQwcHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgZm9udC1zaXplOiA4MHB4O1xuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9oZWFydC5wbmcpIDE0NXB4IGNlbnRlciBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDE4MXB4IGF1dG87XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UtZGVza3RvcCkge1xuICAgICAgd2lkdGg6IDk1MHB4O1xuICAgICAgaGVpZ2h0OiAxOTFweDtcbiAgICAgIGZvbnQtc2l6ZTogOTBweDtcbiAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvaGVhcnQucG5nKSAxOTZweCBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDBweCBhdXRvO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHhsYXJnZS1kZXNrdG9wKSB7XG4gICAgICB3aWR0aDogMTI1MHB4O1xuICAgICAgaGVpZ2h0OiAyODBweDtcbiAgICAgIGZvbnQtc2l6ZTogMTMwcHg7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2hlYXJ0LnBuZykgMTU3cHggY2VudGVyIG5vLXJlcGVhdDtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMjk5cHggYXV0bztcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDQycHg7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwNHB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHhsYXJnZS1kZXNrdG9wKSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDIxNnB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNvY2lhbC1pY29ucyB7XG4gICAgd2lkdGg6IDE0MXB4O1xuICAgIG1hcmdpbjogMCBhdXRvIDI5cHg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgd2lkdGg6IDI2MXB4O1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0xMzBweDtcbiAgICAgIGJvdHRvbTogMjVweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICBib3R0b206IDg1cHg7XG4gICAgfVxuXG4gICAgPiBhIHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBtYXJnaW46IDAgMy41cHg7XG4gICAgICB3aWR0aDogNDBweDtcbiAgICAgIGhlaWdodDogNDBweDtcbiAgICAgIHBhZGRpbmctdG9wOiAxMXB4O1xuXG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjZzO1xuICAgICAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC42cztcbiAgICAgIC1tcy10cmFuc2l0aW9uOiBhbGwgMC42cztcbiAgICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjZzO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNnM7XG5cbiAgICAgICYuZmFjZWJvb2sge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkcGluayB1cmwoLi4vaW1nL2ZhY2Vib29rX3doaXRlLnBuZykgY2VudGVyIGNlbnRlciBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxNXB4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBhdXRvIDI2cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZSB1cmwoLi4vaW1nL2ZhY2Vib29rX3BpbmsucG5nKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTVweDtcblxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMjZweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5pbnN0YWdyYW0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkcGluayB1cmwoLi4vaW1nL2luc3RhZ3JhbV93aGl0ZS5wbmcpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTVweDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAyNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogd2hpdGUgdXJsKC4uL2ltZy9pbnN0YWdyYW1fcGluay5wbmcpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxNXB4O1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAyNnB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmxpbmtlZGluIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHBpbmsgdXJsKC4uL2ltZy9saW5rZWRpbl93aGl0ZS5wbmcpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTVweDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAyNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogd2hpdGUgdXJsKC4uL2ltZy9saW5rZWRpbl9waW5rLnBuZykgY2VudGVyIGNlbnRlciBuby1yZXBlYXQ7XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBhdXRvIDE1cHg7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBhdXRvIDI2cHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgIHdpZHRoOiA3MHB4O1xuICAgICAgICBoZWlnaHQ6IDcwcHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAyM3B4O1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICAgIHdpZHRoOiA4MHB4O1xuICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAyNnB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIGltYWdlc1xuLmJpLXNraW5ueSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9ocC1iYW5uZXItY2UuanBnKTtcbn1cblxuLmJpLWJvZHktYm9zcyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9ocC1iYW5uZXItc3MuanBnKTtcbn1cblxuLmJpLXNhbmQtc2t5IHtcbiAgYmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL3NwbGl0LTItMS5qcGcpO1xufVxuXG4uYmktY29jby1ldmUge1xuICBiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvc3BsaXQtMi0yLmpwZyk7XG59XG5cbi5iaS1yZXN1bHRzLWRyaXZlbiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9yZXN1bHRzLWRyaXZlbi1tLmpwZyk7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvcmVzdWx0cy1kcml2ZW4ucG5nKTtcbiAgfVxufVxuXG4uYmktYnJpZ2h0LWltcGFjdHMge1xuICBiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvSFBfQmFubmVyX1N1cGVybm92YS13ZWJzaXRlX01fLmpwZyk7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvc3MteC1jZS5qcGcpO1xuICB9XG59XG5cbi5iaS1icmFuZC1pbXByZXNzaW9ucyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9icmFuZC1pbXByZXNzaW9uczIuanBnKTtcbn1cblxuLmJpLWluZmx1ZW5jZXJzIHtcbiAgYmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2luZmx1ZW5jZXJzLmpwZyk7XG59XG5cbi5iaS13ZWJzaXRlLXZpc2l0cyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy93ZWJzaXRlLXZpc2l0cy1yb3RhdGVkLmpwZyk7XG59XG5cbi5iaS1qb2luLW1vdmVtZW50IHtcbiAgYmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2pvaW4tbW92ZW1lbnQyLnBuZyk7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvam9pbi1tb3ZlbWVudDIucG5nKTtcbiAgfVxufVxuXG4uYmktcGVvcGxlLXdpZGUge1xuICBiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvZ3JpZC1wZW9wbGUtMy5qcGcpO1xufVxuXG4uYmVhdXR5LWVkaXRvci1sb2dvIHtcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB9XG5cbiAgLmJlYXV0eS1lZGl0b3ItbG9nby1saXN0IHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgbWFyZ2luLXJpZ2h0OiA0MHB4O1xuICAgIH1cbiAgfVxufVxuXG4uYmVhdXR5LWVkaXRvci1sb2dvIC5sb2dvLWl0ZW0ge1xuICB3aWR0aDogNTAlO1xuICBtYXJnaW46IGF1dG87XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuXG4gIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgIHdpZHRoOiAzMy4zMyU7XG4gICAgcGFkZGluZzogMDtcbiAgICBoZWlnaHQ6IDUwJTtcbiAgICBpbWcge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICB9XG59XG5cblxuLnNwbGl0LWJhbm5lciB7XG4gIGZsZXgtZmxvdzogd3JhcDtcbiAgLmJhbm5lci13aXRoLWxvZ28ge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgaW1nIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICYuaHAtbG9nbyB7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIGZsZXg6IDAgMCBjYWxjKDUwJSAtIDcuNXB4KTtcblxuICAgICAgJjpmaXJzdC1jaGlsZHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDcuNXB4O1xuICAgICAgICBvcmRlcjogMjtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIC5sb2dvLXdyYXBwZXIge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuXG4gICAgICAgICAgICBpbWcuaHAtbG9nbyB7XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICY6bGFzdC1jaGlsZHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA3LjVweDtcbiAgICAgICAgb3JkZXI6IDE7XG5cbiAgICAgICAgaW1nLmhwLWxvZ28ge1xuICAgICAgICAgIHdpZHRoOiAzNSU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAubG9nby13cmFwcGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBtaW4taGVpZ2h0OiAzMjVweDtcbiAgICAgIH1cblxuICAgICAgLmJ0bi1vdXRsaW5lIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMzVweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgICAgY29sb3I6ICNGRjRCODE7XG4gICAgICB9XG4gICAgfVxuXG5cbiAgfVxufVxuXG5cbi5iYW5uZXItaHAtMiB7XG4gIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAuaDMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDMwcHg7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cbn1cblxuLnByb2R1Y3Qtc2FuZHNreSB7XG4gIG1hcmdpbi10b3A6IDEwMHB4O1xufVxuIiwiLnNlY3Rpb24tYmlvcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGluaztcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmctdG9wOiAyMDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZS1tb2JpbGUpIHtcbiAgICBwYWRkaW5nLXRvcDogMzUwcHg7XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jb3ZlcigpO1xuICAgIGhlaWdodDogNTAuMXZ3O1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICB9XG5cbiAgLmJpbyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA5NiU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2ZmZjtcbiAgICBwYWRkaW5nLXRvcDogNSU7XG4gICAgbWFyZ2luOiAwIGF1dG87XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xuXG4gICAgICAmLmJpby0zYnkxIHtcbiAgICAgICAgd2lkdGg6IDMzLjMzMzMlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5iaW8tbmFtZSB7XG4gICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMTAlO1xuICAgICAgICB6LWluZGV4OiAxMDtcblxuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNXM7XG4gICAgICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC41cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VjdGlvbi10ZXh0LWxhcmdlIHtcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1leHRyYWxhcmdlO1xuICAgICAgY29sb3I6IHdoaXRlO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogNTBweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VjdGlvbi10ZXh0LXNtYWxsIHtcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmJpby1kZXRhaWxzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwaW5rO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNXM7XG4gICAgICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC41cztcbiAgICAgIH1cblxuICAgICAgcCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMTUlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMCU7XG5cbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC41cztcbiAgICAgICAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC41cztcbiAgICAgICAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICAtby10cmFuc2l0aW9uOiBhbGwgMC41cztcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXM7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMTAwJTtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICBwYWRkaW5nOiAwIDclO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICBwYWRkaW5nOiAwIDklO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UtZGVza3RvcCkge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICBwYWRkaW5nOiAwIDE1JTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuc29jaWFsLWljb25zIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDIwJTtcbiAgICAgICAgd2lkdGg6IDE0MXB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogLTc1cHg7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgb3BhY2l0eTogMDtcblxuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNXM7XG4gICAgICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC41cztcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgYSBpbWcge1xuICAgICAgICAgIGhlaWdodDogMTdweDtcbiAgICAgICAgICBtYXJnaW46IDAgMTVweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICAuYmlvLWRldGFpbHMge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG5cbiAgICAgICAgICBwIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDQ4JTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLnNvY2lhbC1pY29ucyB7XG4gICAgICAgICAgICBib3R0b206IDYlO1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYmlvLW5hbWUge1xuICAgICAgICAgIGJvdHRvbTogNzAlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIC5iaW8tZGV0YWlscyB7XG4gICAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1NCU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UtZGVza3RvcCkge1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIC5iaW8tZGV0YWlscyB7XG4gICAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA2MCU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5zb2NpYWwtaWNvbnMge1xuICAgICAgICAgICAgYm90dG9tOiAxNSU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5zZWN0aW9uLWJpb3MtZm91bmRlciB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvdGhlLWZvdW5kZXJzLmpwZyk7XG59XG5cbi5zZWN0aW9uLWJpb3Mtc21hbGwge1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmctdG9wOiAxNDVweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgaGVpZ2h0OiA0NTRweDtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgLmJpbzpob3ZlciB7XG4gICAgICAuYmlvLW5hbWUge1xuICAgICAgICBib3R0b206IDc3LjUlO1xuICAgICAgfVxuICAgICAgLmJpby1kZXRhaWxzIHAge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTM1cHg7XG4gICAgICB9XG4gICAgfVxuICAgIC5iaW8gLmJpby1kZXRhaWxzIHAge1xuICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgICB9XG4gIH1cbn1cblxuLnNlY3Rpb24tYmlvcy1wZW9wbGUtMSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvcGVvcGxlLWJnLTEuanBnKTtcbn1cblxuLnNlY3Rpb24tYmlvcy1wZW9wbGUtMiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvcGVvcGxlLWJnLTIuanBnKTtcbn1cblxuLnNlY3Rpb24tYmlvcy1wZW9wbGUtMyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvcGVvcGxlLWJnLTMuanBnKTtcbn1cblxuLnNlY3Rpb24tYmlvcy1wZW9wbGUtNCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvcGVvcGxlLWJnLTQuanBnKTtcbn1cblxuLnNlY3Rpb24tYmlvcy1wZW9wbGUtNSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvcGVvcGxlLWJnLTUuanBnKTtcbn1cblxuLnNlY3Rpb24tYmlvcy1wZW9wbGUtNiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvcGVvcGxlLWJnLTYuanBnKTtcbiAgZmxleC1mbG93OiBjb2x1bW47XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgZmxleC1mbG93OiB3cmFwO1xuICB9XG59XG5cbi5zZWN0aW9uLWJpb3MtMiB7XG4gIGJhY2tncm91bmQ6ICRwaW5rIHVybCguLi9pbWcvdGhlLWZvdW5kZXJzLmpwZykgdG9wIGNlbnRlciBuby1yZXBlYXQ7XG59XG5cbi8vIEltYWdlc1xuLnBlLWdyaWQtMSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvcGFnZS1wZW9wbGUtc3RhdHMtMS5qcGcpO1xufVxuXG4ucGUtZ3JpZC0yIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9wYWdlLXBlb3BsZS1zdGF0cy0yLmpwZyk7XG59XG5cbi5wZS1ncmlkLTMge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL3BhZ2UtcGVvcGxlLXN0YXRzLTMuanBnKTtcbn1cblxuLnBlLWdyaWQtNCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvem9vbS0yXzEuanBnKTtcbn1cblxuXG4udGV4dC1oZWFkaW5nIHNwYW4ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDE1cHg7XG4gIHJpZ2h0OiAxNXB4O1xuICBib3R0b206IC0zMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZTtcbiAgbWluLWhlaWdodDogMTUwcHg7XG59XG5cbi5wZW9wbGUtcGFnZSAuc2VjdGlvbi1oZXJvIHtcbiAgaGVpZ2h0OiA3M3ZoO1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZS1tb2JpbGUpIHtcbiAgICBoZWlnaHQ6IDkwdmg7XG4gIH1cbiAgLml0ZW0taGVybyB7XG4gICAgaGVpZ2h0OiA0NTBweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlLW1vYmlsZSkge1xuICAgICAgaGVpZ2h0OiA3NXZoO1xuICAgICAgd2lkdGg6IDgzMHB4O1xuICAgIH1cbiAgfVxufVxuXG4uc2VjdGlvbi1oZWFkaW5nLW5ldyB7XG4gIC5oMyB7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZXh0cmFsYXJnZTtcblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgZm9udC1zaXplOiA1NnB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDcwcHg7XG4gICAgICBtYXgtd2lkdGg6IDc1JTtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIC5zZWN0aW9uLXRleHQtc21hbGwge1xuICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xuXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgICBsaW5lLWhlaWdodDogNDVweDtcbiAgICAgIHdpZHRoOiA5MCU7XG4gICAgfVxuICB9XG59XG5cblxuLnBlb3BsZS1iYW5uZXIge1xuXG4gIGltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAuaDEge1xuICAgIGZsZXg6IDE7XG4gIH1cblxuICBzcGFuIHtcbiAgICBmb250LXNpemU6IDcwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDg3LjVweDtcbiAgICBtYXgtd2lkdGg6IDg1JTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuXG4gICAgJi53LTk1IHtcbiAgICAgIG1heC13aWR0aDogOTUlO1xuICAgIH1cbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEzNDBweCkge1xuICAgICAgZm9udC1zaXplOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICBsaW5lLWhlaWdodDogNjVweDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICAgICBmb250LXNpemU6IDQwcHggIWltcG9ydGFudDtcbiAgICAgIGxpbmUtaGVpZ2h0OiA2NXB4O1xuICAgIH1cbiAgfVxuXG4gIHBpY3R1cmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsZXg6IDAgMCA1Ny42MyU7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICB9XG5cbiAgICAucG9zaXRpb24tYWJzb2x1dGUge1xuXG4gICAgICBib3R0b206IC0zMHB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICAgIG1hcmdpbi1yaWdodDogMHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICBmb250LWZhbWlseTogJGZvbnQtZXh0cmFsYXJnZTtcbiAgICAgIG1pbi1oZWlnaHQ6IDEyMHB4O1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBhZGRpbmctbGVmdDogMzBweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgYm90dG9tOiAtMTE5cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5oaXJpbmctYmFubmVyIHtcbiAgcGljdHVyZSB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuICBpbWcge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgd2lkdGg6IDEwNSU7XG4gICAgfVxuICB9XG4gIHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogNjBweDtcbiAgfVxufVxuXG4ucGVvcGxlLWJhbm5lci1waW5rIHtcbiAgLmgxIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkY0QjgxO1xuICB9XG5cbiAgcGljdHVyZSB7XG4gICAgLnBvc2l0aW9uLWFic29sdXRlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRjRCODE7XG5cbiAgICB9XG4gIH1cbn1cblxuLnBlb3BsZS1iYW5uZXItYmx1ZSB7XG4gIC5oMSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzE0MzY5NTtcbiAgfVxuXG4gIHBpY3R1cmUge1xuICAgIC5wb3NpdGlvbi1hYnNvbHV0ZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTQzNjk1O1xuICAgIH1cbiAgfVxufVxuXG4ucGVvcGxlLWJhbm5lci1saWdodGJsdWUge1xuICAuaDEge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0MkExQ0E7XG4gIH1cblxuICBwaWN0dXJlIHtcbiAgICAucG9zaXRpb24tYWJzb2x1dGUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQyQTFDQTtcblxuICAgIH1cbiAgfVxufVxuXG4uZnVsbC1iYW5uZXIge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogYmxvY2s7XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5cbi5wZW9wbGUtZ3JpZC1kZXNrdG9wIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXJnaW4tbGVmdDogNy41cHg7XG4gIG1hcmdpbi1yaWdodDogNy41cHg7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAucGVvcGxlLWl0ZW0ge1xuICAgIGZsZXgtYmFzaXM6IGNhbGMoMzMuMzMlIC0gMTVweCk7XG4gICAgbWFyZ2luOiA3LjVweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1pbi1oZWlnaHQ6IDQ5OXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuXG4gIGZpZ2NhcHRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRjRCODE7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBtaW4taGVpZ2h0OiAxNTJweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg3MCUpO1xuICAgIHRyYW5zaXRpb246IGFsbCAuMnM7XG5cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMTc2MHB4KSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNzMlKTtcbiAgICB9XG5cbiAgICBpbWcge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgaGVpZ2h0OiAxMHB4O1xuXG4gICAgICAmLmxpbmtlZGluIHtcbiAgICAgICAgd2lkdGg6IDIycHg7XG4gICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnNob3cge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXG4gICAgICAudGV4dC1oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuXG4gICAgLmg0IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDIwcHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuaDUge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTVweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC50ZXh0LWhlYWRpbmcge1xuICAgICAgcGFkZGluZy10b3A6IDE1cHg7XG4gICAgfVxuXG4gICAgLnRleHQtY2FwdGlvbiB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAgIGhlaWdodDogNDk5cHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuXG4gICAgICBpbWc6bm90KC5saW5rZWRpbikge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogMTVweDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbn1cblxuXG4uZm91bmRlci1ncmlkIHtcbiAgbWFyZ2luLWxlZnQ6IDEzOHB4O1xuICBtYXJnaW4tcmlnaHQ6IDEzOHB4O1xuICAucGVvcGxlLWl0ZW0ge1xuICAgIGZsZXgtYmFzaXM6IGNhbGMoNTAlIC0gMzBweCk7XG4gICAgbWFyZ2luOiAxNXB4O1xuICAgIG1pbi1oZWlnaHQ6IDYzMHB4O1xuXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDk5MXB4KSBhbmQgKG1heC13aWR0aDogMTI4MHB4KSB7XG4gICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIGZpZ2NhcHRpb24ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg3NiUpO1xuXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDk5MXB4KSBhbmQgKG1heC13aWR0aDogMTI4MHB4KSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNjUlKTtcbiAgICB9XG5cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMTc2MHB4KSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoODAlKTtcbiAgICB9XG5cbiAgICAudGV4dC1jYXB0aW9ue1xuICAgICAgaGVpZ2h0OiA2MzBweDtcbiAgICAgIHBhZGRpbmctdG9wOiA1MHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDk5MXB4KSBhbmQgKG1heC13aWR0aDogMTI4MHB4KSB7XG4gICAgICAgIGhlaWdodDogNDYwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IDMwcHg7XG4gICAgfVxuICB9XG59XG4iLCIuc2VjdGlvbi1sYXJnZS12aWRlbyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDYwdnc7XG4gIEBpbmNsdWRlIGJhY2tncm91bmQtY292ZXIoKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9yZXN1bHRzLXZpZGVvLTItMS5qcGcpO1xuICBwYWRkaW5nLXRvcDogMjIlO1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gIG1hcmdpbi10b3A6IDVweDtcblxuICAuc2VjdGlvbi10ZXh0LWxhcmdlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZXh0cmFsYXJnZTtcbiAgICBmb250LXNpemU6IDgwcHg7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW46IDAgYXV0bztcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBmb250LXNpemU6IDEzMHB4O1xuICAgIH1cbiAgfVxuXG4gIC5zZWN0aW9uLXRleHQtc21hbGwge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB9XG4gIH1cbn1cblxuLy8gSW1hZ2VzXG4ucmUtZ3JpZC0xIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9wYWdlLXJlc3VsdHMtc3RhdHMtMi0yLmpwZyk7XG59XG5cbi5yZS1ncmlkLTEtMiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvcGFnZS1yZXN1bHRzLXN0YXRzLTItMy5qcGcpO1xufVxuXG4ucmUtZ3JpZC0yIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9wYWdlLXJlc3VsdHMtc3RhdHMtNi5qcGcpO1xufVxuXG4ucmUtZ3JpZC0zIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9icmFuZC1pbXByZXNzaW9ucy5qcGc/djIpO1xufVxuXG4ucmUtZ3JpZC00IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9wYWdlLXJlc3VsdHMtc3RhdHMtNC5qcGc/djIpO1xufVxuXG5cbi5yZS1ncmlkLTUge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL3BhZ2UtcmVzdWx0cy1zdGF0cy01LW0uanBnKTtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL3BhZ2UtcmVzdWx0cy1zdGF0cy01LmpwZyk7XG4gIH1cblxuICAmLnR3by10aGlyZHMge1xuICAgIHdpZHRoOiA1MCU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgd2lkdGg6IDY2LjY2NjYlO1xuICAgIH1cbiAgfVxufVxuXG4uc2VjdGlvbi1oZXJvIC5pdGVtLWhlcm8uaXRlbS1oZXJvLXJlc3VsdCB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgLTIxNXB4IGNlbnRlcjtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UtbW9iaWxlKSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgfVxuXG59XG5cbi5sb2dvLWxpc3Qge1xuICBtYXJnaW4tdG9wOiA0MHB4O1xuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIG1hcmdpbi10b3A6IDgwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogODBweDtcbiAgfVxuXG4gIGgzIHtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWV4dHJhbGFyZ2U7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgZm9udC1zaXplOiA1NnB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDcwcHg7XG4gICAgfVxuICB9XG5cbiAgLmQtZmxleCB7XG4gICAgZmxleC1mbG93OiB3cmFwO1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gIH1cblxuICAubG9nb2l0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmLm9yZGVyLTEge1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuXG4gICAgJi5vcmRlci0yIHtcbiAgICAgIG9yZGVyOiAyO1xuICAgIH1cblxuICAgICYub3JkZXItMyB7XG4gICAgICBvcmRlcjogMztcbiAgICB9XG5cbiAgICAmLm9yZGVyLTQge1xuICAgICAgb3JkZXI6IDQ7XG4gICAgfVxuXG4gICAgJi5vcmRlci01IHtcbiAgICAgIG9yZGVyOiA1O1xuICAgIH1cblxuICAgICYub3JkZXItNiB7XG4gICAgICBvcmRlcjogNjtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogMzJweDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAgIGZsZXg6IDAgMCAzMyU7XG4gICAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcblxuICAgICAgYSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAxMDBweDtcbiAgICAgIH1cblxuICAgICAgJi5vcmRlci1sZy0xIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICB9XG5cbiAgICAgICYub3JkZXItbGctMiB7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgICAgfVxuXG4gICAgICAmLm9yZGVyLWxnLTMge1xuICAgICAgICBvcmRlcjogMztcbiAgICAgIH1cblxuICAgICAgJi5vcmRlci1sZy00IHtcbiAgICAgICAgb3JkZXI6IDQ7XG4gICAgICB9XG5cbiAgICAgICYub3JkZXItbGctNSB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgfVxuXG4gICAgICAmLm9yZGVyLWxnLTYge1xuICAgICAgICBvcmRlcjogNjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4uYnRuLXByaW1hcnkge1xuICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGNEI4MTtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbWF4LXdpZHRoOiBub25lO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiA0MHB4O1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgcGFkZGluZzogMTVweCAzMHB4O1xuICAgIGhlaWdodDogNTBweDtcbiAgfVxufVxuXG5cbi5tYi0zIHtcbiAgbWFyZ2luLWJvdHRvbTogMzBweCAhaW1wb3J0YW50O1xufVxuXG5cbi5sb2dvLWxpc3Qtc3F1YXJlIHtcbiAgbWFyZ2luOiAwIDcuNXB4O1xuXG4gIC5sb2dvaXRlbSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YxRjFGMTtcbiAgICBmbGV4OiA0NSU7XG4gICAgbWFyZ2luOiA3LjVweDtcbiAgICBtaW4taGVpZ2h0OiAxODJweDtcblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgZmxleDogMzAlO1xuICAgICAgbWluLWhlaWdodDogNDUwcHg7XG4gICAgfVxuICB9XG5cbiAgcGljdHVyZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgICB9XG4gIH1cblxuICAuYnRuLW91dGxpbmUge1xuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgY29sb3I6ICNGRjRCODE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgfVxufVxuIiwiXG4uZ3JpZC1pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZ3JpZC1pY29uIC5ob3Zlci1wYW5lbCB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAyMHB4IDA7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcGFkZGluZzogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRhcmstYmx1ZTtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNvdmVyKCk7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHM7XG4gICAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHM7XG4gICAgLW1zLXRyYW5zaXRpb246IG9wYWNpdHkgMC40cztcbiAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHM7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzO1xuICB9XG5cbiAgLnBhbmVsLXRleHQge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgd2lkdGg6IDgwJTtcbiAgICBtYXJnaW46IDAgYXV0bztcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICAgIHBhZGRpbmc6IDAgNSU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlLWRlc2t0b3ApIHtcbiAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICB9XG4gIH1cbn1cblxuLmdyaWQtaWNvbjpob3ZlciAuaG92ZXItcGFuZWwge1xuICBvcGFjaXR5OiAxO1xufVxuXG4vKlxuLmljb24taWRlYXRpb24ge1xuICAuaG92ZXItcGFuZWwge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL0lNR182OTcxLmpwZyk7XG4gICAgfVxuICB9XG59XG5cbi5pY29uLWJyYW5kaW5nIHtcbiAgLmhvdmVyLXBhbmVsIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9Qcm9kdWN0X0JyYW5kaW5nUGtnaW5nLmpwZyk7XG4gICAgfVxuICB9XG59XG5cbi5pY29uLXNvY2lhbCB7XG4gIC5ob3Zlci1wYW5lbCB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvc3VubnktbW9ja3VwLWlwaG9uZTVzLTExYS5qcGcpO1xuICAgIH1cbiAgfVxufVxuXG4uaWNvbi1lY29tbWVyY2Uge1xuICAuaG92ZXItcGFuZWwge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL1Byb2R1Y3RzX1NvY2lhbE1Ncmt0LmpwZyk7XG4gICAgfVxuICB9XG59XG5cbi5pY29uLXNoaXBwaW5nIHtcbiAgLmhvdmVyLXBhbmVsIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9EU0MwMDY2Ny5qcGcpO1xuICAgIH1cbiAgfVxufVxuXG4uaWNvbi1jdXN0b21lciB7XG4gIC5ob3Zlci1wYW5lbCB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvSm9pblVzU2lkZS5qcGcpO1xuICAgIH1cbiAgfVxufVxuKi9cblxuLnNlY3Rpb24tbG92ZS1zY2llbmNlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiBhdXRvO1xuICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNvdmVyKCk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbXAtbG92ZS1zY2llbmNlLW1vYmlsZS5wbmcpO1xuICBwYWRkaW5nOiA1JTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbXAtbG92ZS1zY2llbmNlLmpwZyk7XG4gICAgaGVpZ2h0OiA2MHZ3O1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAuc2VjdGlvbi10ZXh0LWxhcmdlLTEge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgICBmb250LXNpemU6IDcwcHg7XG4gICAgY29sb3I6ICRkYXJrZXItYmx1ZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBmb250LXNpemU6IDgwcHg7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDE3JTtcbiAgICAgIGxlZnQ6IDglO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgIGZvbnQtc2l6ZTogMTQwcHg7XG4gICAgICB0b3A6IDE1JTtcbiAgICB9XG4gIH1cblxuICAuc2VjdGlvbi10ZXh0LXNtYWxsLTEge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgICBmb250LXNpemU6IDMwcHg7XG4gICAgY29sb3I6ICRkYXJrZXItYmx1ZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDE1JTtcbiAgICAgIHJpZ2h0OiA4JTtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cblxuICAgIHAge1xuICAgICAgbWFyZ2luOiA2cHggMDtcbiAgICB9XG4gIH1cblxuICAucGx1cy1zeW1ib2wge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgICBmb250LXNpemU6IDYwcHg7XG4gICAgY29sb3I6ICRkYXJrZXItYmx1ZTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICB3aWR0aDogNTBweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNDIlO1xuICAgICAgbGVmdDogNDYlO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgZm9udC1zaXplOiA5MHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgIGZvbnQtc2l6ZTogMTUwcHg7XG4gICAgICB0b3A6IDM2JTtcbiAgICB9XG4gIH1cblxuICAuc2VjdGlvbi10ZXh0LWxhcmdlLTIge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgICBmb250LXNpemU6IDcwcHg7XG4gICAgY29sb3I6ICRkYXJrZXItYmx1ZTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgZm9udC1zaXplOiA4MHB4O1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA2NiU7XG4gICAgICByaWdodDogOCU7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgIGZvbnQtc2l6ZTogMTQwcHg7XG4gICAgICB0b3A6IDU5JTtcbiAgICB9XG4gIH1cblxuICAuc2VjdGlvbi10ZXh0LXNtYWxsLTIge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgICBmb250LXNpemU6IDMwcHg7XG4gICAgY29sb3I6ICRkYXJrZXItYmx1ZTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA2MCU7XG4gICAgICBsZWZ0OiA4JTtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cblxuICAgIHAge1xuICAgICAgbWFyZ2luOiA2cHggMDtcbiAgICB9XG4gIH1cbn1cbiIsIi5wYWdlLWpvaW4ge1xuICAudHdvLXRoaXJkcy5iYWNrZ3JvdW5kLWRhcmtwaW5rIC5ncmlkLXRleHQtbWVkaXVtIHtcbiAgICB3aWR0aDogNzclO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuICAuZ3JpZC1waW5rIC5ncmlkLXRleHQtbWVkaXVtIHtcbiAgICBtYXJnaW4tdG9wOiAyNSU7XG4gIH1cbiAgLml0ZW0tZ3JpZC5iYWNrZ3JvdW5kLWdyZWVuIC5ncmlkLXRleHQtbWVkaXVtIHtcbiAgICBtYXJnaW4tdG9wOiA0MiU7XG4gIH1cbn1cblxuLnNlY3Rpb24tam9icyB7XG4gIG1hcmdpbi10b3A6IC03MHB4O1xuXG4gIGgzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMjZweDtcbiAgfVxuXG4gIHVsIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIHdpZHRoOiA3MCU7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgbWFyZ2luOiAwIDAgMXB4IDA7XG4gICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgYSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZGFyay1ibHVlIHVybCguLi9pbWcvYXJyb3ctd2hpdGUucG5nKSByaWdodCAyMHB4IGNlbnRlciBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogNDRweCBhdXRvO1xuICAgICAgICBwYWRkaW5nOiA1MHB4IDcwcHggNTBweCAyMHB4O1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGxpbmVhcjtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIHBhZGRpbmc6IDUwcHggMTEwcHggNTBweCA1MHB4O1xuICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDUwcHggY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJHBpbmsgdXJsKC4uL2ltZy9hcnJvdy13aGl0ZS5wbmcpIHJpZ2h0IDIwcHggY2VudGVyIG5vLXJlcGVhdDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDQ0cHggYXV0bztcbiAgICAgICAgICBjb2xvcjogd2hpdGU7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgNTBweCBjZW50ZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5qb2Itb2ZmaWNlIHtcbiAgbWFyZ2luLWJvdHRvbTogNTBweDtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLnNlY3Rpb24taW1hZ2UtZ3JpZC5zdGF0c1xuLml0ZW0tZ3JpZC5iYWNrZ3JvdW5kLWRhcmtwaW5rLndvcmstaGFyZCB7XG4gIC5pdGVtLWdyaWQtdGV4dC5ncmlkLXRleHQtbWVkaXVtIHtcbiAgICBtYXJnaW4tdG9wOiAzMiU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgIGZvbnQtc2l6ZTogNDVweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZS1kZXNrdG9wKSB7XG4gICAgICBtYXJnaW4tdG9wOiAzOCU7XG4gICAgfVxuICB9XG59XG5cbmEuYmFjayB7XG4gIHdpZHRoOiA5NSU7XG4gIHRvcDogMjY3cHg7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBsZWZ0OiAwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29sb3I6ICRwaW5rO1xuICBmb250LWZhbWlseTogJGZvbnQtaGVhZGluZ3M7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgcGFkZGluZy1sZWZ0OiAzMHB4O1xuICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2Fycm93X2xlZnRfcGluay5wbmcpIGxlZnQgY2VudGVyIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiAyMHB4IGF1dG87XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIG1heC13aWR0aDogODAwcHg7XG4gIHotaW5kZXg6IDEwO1xuICBtYXJnaW4tdG9wOiA1MHB4O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgdG9wOiA0NTlweDtcbiAgICB3aWR0aDogNzAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cbn1cblxuLmlzLXN0aWNreSArIGEuYmFjayB7XG4gIHRvcDogMzIycHg7XG59XG5cbi8vIEltYWdlc1xuLmpuLWdyaWQtMSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvZ3JpZC1wZW9wbGUtd2lkZXIuanBnKTtcbn1cblxuLmpuLWdyaWQtMiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvam9pbi1zdGF0cy0yLmpwZz92Mik7XG59XG5cbi5qbi1ncmlkLTMge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2pvaW4tc3RhdHMtMy5qcGcpO1xufVxuXG4uam4tZ3JpZC00IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9qb2luLXN0YXRzLTQuanBnKTtcbn1cblxuLmpuLWg0IHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMjBweCAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogMjVweCAhaW1wb3J0YW50O1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsICFpbXBvcnRhbnQ7XG5cbiAgJi5qbi1oNC1tYiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5qbi1oNSB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncyAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDI2cHggIWltcG9ydGFudDtcbiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbCAhaW1wb3J0YW50O1xufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAuam4taDQge1xuICAgIGZvbnQtc2l6ZTogNDJweCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiA1Mi41cHggIWltcG9ydGFudDtcbiAgICAmLmpuLWg0LW1iIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDMwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAuam4taDUge1xuICAgIGZvbnQtc2l6ZTogMzZweCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiA0NXB4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6ICR0YWJsZXQtcGx1cykge1xuICAuc2VjdGlvbi1pbWFnZS1ncmlkLnN0YXRzIC5pdGVtLWdyaWQuam4tZnVsbC1ncmlkIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC5zZWN0aW9uLWltYWdlLWdyaWQuc3RhdHMgLml0ZW0tZ3JpZC5ncmlkLTItbWIge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cblxuICAuYmctbGlzdHtcbiAgICBwYWRkaW5nLXRvcDogMzBweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMzBweDtcbiAgICBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuIiwiLnNlY3Rpb24tbG9jYXRpb25zIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG5cbiAgLmxvY2F0aW9uIHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICB3aWR0aDogMzMuMzMlO1xuICAgICAgZmxleDogMCAwIDMzLjMzJTtcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2JhKDIwLDU0LDE0OSwgMC4yKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICB3aWR0aDogMjAlO1xuICAgICAgZmxleDogMCAwIDIwJTtcbiAgICB9XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDIwLDU0LDE0OSwgMC4yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubG8tbmFtZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogMTAwLjMlO1xuICAgICAgaGVpZ2h0OiA1MHZ3O1xuICAgICAgcGFkZGluZy10b3A6IDE1JTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgYm90dG9tO1xuICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1oZWFkaW5ncztcbiAgICAgIGZvbnQtc2l6ZTogNTVweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgICAgaGVpZ2h0OiAzMy4zMzMzMzN2dztcbiAgICAgICAgcGFkZGluZy10b3A6IDM2JTtcbiAgICAgICAgZm9udC1zaXplOiA0MnB4O1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogNDVweDtcbiAgICAgIH1cblxuICAgICAgJi5sby1uYW1lLTQge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICAgIGhlaWdodDogMzQuM3Z3O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICAgIGhlaWdodDogMzMuMzMzMzMzdnc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAubG8tZGV0YWlscyB7XG4gICAgICBwYWRkaW5nOiA0MHB4IDAgNjBweCAwO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBwYWRkaW5nOiA2MHB4IDAgMTUwcHggMDtcblxuICAgICAgICAmLmxvLWRldGFpbHMtNCB7XG4gICAgICAgICAgcGFkZGluZy10b3A6IDU0cHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICAmLmxvLWRldGFpbHMtNCB7XG4gICAgICAgICAgcGFkZGluZy10b3A6IDYwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnNlY3Rpb24tdGV4dC1zbWFsbCB7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBjb2xvcjogI2IzYjViZTtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiYXZlcnRhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubG8tbWFwIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIHRlbXBcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY292ZXIoKTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAzOHZ3O1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBoZWlnaHQ6IDE4dnc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICBtYXgtd2lkdGg6IDg1JTtcbiAgICB9XG4gIH1cbn1cblxuLmxvY2F0aW9uLWJlbmVmaXRzIHtcbiAgd2lkdGg6IDkwJTtcbiAgbWFyZ2luLXRvcDogMzBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgIHdpZHRoOiA1MTFweDtcbiAgICBtYXJnaW4tdG9wOiA1MHB4O1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgIHdpZHRoOiA3MzVweDtcbiAgfVxufVxuXG4uc2VjdGlvbi10ZXh0IC5zZWN0aW9uLXRleHQtc21hbGwucmV0YWlsLWhvdXJzIHtcbiAgbWFyZ2luLXRvcDogNDJweDtcbiAgd2lkdGg6IDkwJTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LWZhbWlseTogJGZvbnQtaGVhZGluZ3M7XG4gIGNvbG9yOiAkcGluaztcbiAgb3BhY2l0eTogMTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgIHdpZHRoOiA3MCU7XG4gIH1cbn1cblxuLnNlY3Rpb24taW1hZ2UtZ3JpZC5zdGF0cyAuaXRlbS1ncmlkLmxvLWdyaWQtNiB7XG4gIC5ncmlkLXRleHQtbWVkaXVtIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cbn1cblxuLmJlbmVmaXRzLmxvY2F0aW9uLWVtYWlscyB7XG4gIG1hcmdpbjogMjBweCBhdXRvIDMwcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgYSB7XG4gICAgY29sb3I6ICRwaW5rO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICB9XG59XG5cbi8vIEltYWdlc1xuLmxvLXNpbmdhcG9yZSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbG9jYXRpb25zLWFycm93LWRvd24uanBnKTtcbn1cblxuLmxvLWdyaWQtMSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvcGFnZS1sb2NhdGlvbjEuanBnKTtcbn1cblxuLmxvLWdyaWQtMiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbG9jYXRpb25zLWdyaWQtNC5qcGcpO1xufVxuXG4ubG8tZ3JpZC0zIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9sb2NhdGlvbnMtZ3JpZC0zLmpwZyk7XG59XG5cbi5sby1ncmlkLTQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2xvY2F0aW9ucy1ncmlkLTIuanBnKTtcbn1cblxuLmxvLWdyaWQtNSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbG9jYXRpb25zLWdyaWQtNS5wbmcpO1xufVxuXG4ubG8tZ3JpZC02IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9sb2NhdGlvbnMtZ3JpZC02LmpwZyk7XG59XG5cbi5sby1ncmlkLW1hcC0xIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9sb2NhdGlvbnMtZ3JpZC1tYXAtMS5qcGcpO1xufVxuXG4ubG8tbmFtZS0wIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9OWUMucG5nKTtcbn1cblxuLmxvLW5hbWUtMSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvUGFsbVRyZWUucG5nKTtcbn1cblxuLmxvLW5hbWUtMiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbG9jYXRpb25zLW1lbGJvdXJuZS5wbmcpO1xufVxuXG4ubG8tbmFtZS0zIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9sb2NhdGlvbnMtbG9uZG9uLnBuZyk7XG59XG5cbi5sby1uYW1lLTQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2xvY2F0aW9uLWJlcmxpbi5qcGcpO1xuICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbG9jYXRpb24tOS5wbmcpO1xuICB9XG59XG5cbi5sby1tYXAtMSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbG9jYXRpb25zLW1hcC1uZXctZGVsaGkuanBnKTtcbn1cblxuLmxvLW1hcC0yIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9sb2NhdGlvbnMtbWFwLW1lbGJvdXJuZS5qcGcpO1xufVxuXG4ubG8tbWFwLTMge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2xvY2F0aW9ucy1tYXAtbG9uZG9uLmpwZyk7XG59XG4iLCIuc2VjdGlvbi1wcm9kdWN0IHtcbiAgLnByb2R1Y3QtaW1hZ2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIHdpZHRoOiA2Ni42NjY2NjY2JTtcbiAgICAgIGhlaWdodDogNTB2dztcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY292ZXIoKTtcbiAgICB9XG4gIH1cblxuICAucHJvZHVjdC1kZXRhaWxzIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMTAlIDIlO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGV0LXBsdXMpIHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgd2lkdGg6IDMzLjMzMzMzMyU7XG4gICAgICBoZWlnaHQ6IDUwdnc7XG4gICAgICBwYWRkaW5nOiA3JSA0JTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbC1kZXNrdG9wKSB7XG4gICAgICBwYWRkaW5nOiAxMyUgNCU7XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIHdpZHRoOiAyNzVweDtcbiAgICAgIG1hcmdpbjogMCBhdXRvIDUwcHg7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLWRlc2t0b3ApIHtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gMHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5wcm9kdWN0LWRlc2Mge1xuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWhlYWRpbmdzO1xuICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgICB9XG4gIH1cblxuICAmLnByb2R1Y3Qtc2tpbm55IHtcbiAgICAucHJvZHVjdC1kZXRhaWxzIHtcbiAgICAgIGJhY2tncm91bmQ6ICRzbS1wdXJwbGU7XG4gICAgfVxuICB9XG5cbiAgJi5wcm9kdWN0LWJvZHlib3NzIHtcbiAgICAucHJvZHVjdC1kZXRhaWxzIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYi1uYXZ5O1xuICAgIH1cbiAgfVxuXG4gICYucHJvZHVjdC1jZSB7XG4gICAgLnByb2R1Y3QtZGV0YWlscyB7XG4gICAgICBiYWNrZ3JvdW5kOiAkY2UtbGlnaHQtZ3JlZW47XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICAmLnByb2R1Y3Qtc2FuZHNreSB7XG4gICAgLnByb2R1Y3QtZGV0YWlscyB7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2staGVyby1waW5rO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQtcGx1cykge1xuICAgICAgICBwYWRkaW5nOiA0JSA0JTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwtZGVza3RvcCkge1xuICAgICAgICBwYWRkaW5nOiAxMyUgNCU7XG4gICAgICB9XG5cbiAgICAgIGltZyB7XG4gICAgICAgIHdpZHRoOiAxNjlweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgICAgfVxuXG4gICAgICAucHJvZHVjdC1kZXNjIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLnNlY3Rpb24taW1hZ2UtZ3JpZCArIC5zZWN0aW9uLXByb2R1Y3Qge1xuICBtYXJnaW4tdG9wOiA1MHB4O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxldC1wbHVzKSB7XG4gICAgbWFyZ2luLXRvcDogODBweDtcbiAgfVxufVxuXG5cbi8vIEltYWdlc1xuXG4uYnItZ3JpZC0xIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9icmFuZHMtZ3JpZC0xLmpwZyk7XG59XG5cbi5ici1ncmlkLTIge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2JyYW5kcy1ncmlkLTIuanBnKTtcbn1cblxuLmJyLWdyaWQtMyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvYnJhbmRzLWdyaWQtMy5qcGcpO1xufVxuXG4uYnItZ3JpZC00IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9icmFuZHMtZ3JpZC00LmpwZyk7XG59XG5cbi5ici1ncmlkLTUge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2JyYW5kcy1ncmlkLTUuanBnKTtcbn1cblxuLmJyLWdyaWQtNiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvYnJhbmRzLWdyaWQtNi5qcGcpO1xufVxuXG4uYnItZ3JpZC02IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9icmFuZHMtZ3JpZC02LmpwZyk7XG59XG5cbi5ici1ncmlkLTcge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2JyYW5kcy1ncmlkLTcuanBnKTtcbn1cblxuLmJyLWdyaWQtOCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvc3dlZXBzdGFrZXNfdmlzdWFsXzEuanBnKTtcbn1cblxuXG4uYnItZ3JpZC05IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9icmFuZHMtZ3JpZC05LTIuanBnKTtcbn1cblxuLmJyLWdyaWQtMTAge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2JyYW5kcy1ncmlkLTEwLTIuanBnKTtcbn1cblxuLmJyLWdyaWQtMTEge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2JyYW5kcy1ncmlkLTExLTIuanBnKTtcbn1cblxuLmJyLWdyaWQtMTIge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2JyYW5kcy1ncmlkLTEyLTIuanBnKTtcbn1cblxuLmJyLWdyaWQtMTMge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2JyYW5kcy1ncmlkLTEzLTIuanBnKTtcbn1cblxuLmJyLWdyaWQtMTQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2JyYW5kcy1ncmlkLTE0LTIuanBnKTtcbn1cblxuLmJyLWdyaWQtMTUge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2JyYW5kcy1ncmlkLTE1LTIuanBnKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FnRUFBLEFBQUEsQ0FBQyxDQUFDO0VBQUUsVUFBVSxFQUFFLFVBQVUsR0FBSTs7QUFFOUIsQUFBQSxJQUFJLENBQUM7RUFBRSxzQkFBc0IsRUFBRSxXQUFXO0VBQUUsTUFBTSxFQUFFLElBQUksR0FBSTs7QUFFNUQsQUFBQSxJQUFJLENBQUM7RUFDSCxNQUFNLEVBQUUsQ0FBQztFQUNULFdBQVcsRURIRCxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVU7RUNJdkMsU0FBUyxFQUFFLElBQUksR0FDaEI7O0FBRUQsQUFBQSxFQUFFLENBQUM7RUFD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 */
