/******************************************************
* Optional Google map showing walk locations
******************************************************/
/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

#map-container {
  display: none;
  /*Hide by default (unhidden by show_map script if JS enabled)*/
  margin-bottom: 16px;
  clear: left;
}

#google-map {
  width: 100%;
  height: 400px;
}

/******************************************************
* Optional main image
******************************************************/
/**
* Display a full-width photo with a white border
*/
#main-photo {
  display: inline-block;
  position: relative;
  margin-bottom: 8px;
  width: 100%;
}

#main-photo img {
  position: relative;
  display: block;
  width: 100%;
  height: auto;
}

#main-photo .image-border {
  display: block;
  position: absolute;
  left: 10px;
  top: 10px;
  right: 10px;
  bottom: 10px;
  border: 1px solid white;
}

#main-photo + div p:first-child {
  margin-top: 0;
}

/*****************************************************************
 App intro shown for new users
*****************************************************************/
.app-formats {
  display: table;
  margin: 0 auto;
  width: 100%;
}

@media screen and (min-width: 60em) {
  .app-formats .app-button {
    display: none !important;
  }
}

@media screen and (max-width: 59.99em) {
  .app-formats .text {
    display: none !important;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 59.99em) {
  .app-formats .icon {
    visibility: hidden;
  }
}

@media screen and (max-width: 37.49em) {
  .app-formats {
    display: block;
    width: 100%;
  }
  .app-formats .icon {
    display: none !important;
  }
}

.app-formats > div.store-link {
  display: table-cell;
}

.app-formats > div.store-link .inner {
  left: 50%;
  transform: translateX(-50%);
  position: relative;
  width: 98%;
  width: calc(100% - 12px);
  border-radius: 10px;
  display: table;
  table-layout: fixed;
}

@media screen and (min-width: 37.5em) {
  .app-formats > div.store-link .inner {
    margin: 8px 0 0 0;
    padding: 8px 0 4px 0;
    border: 1px solid #aaaaaa;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 59.99em) {
  .app-formats > div.store-link .inner {
    position: relative;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 46.24em) {
  .app-formats > div.store-link .inner {
    padding: 4px 0 8px 0;
  }
}

@media screen and (min-width: 60em) {
  .app-formats > div.store-link:hover {
    cursor: pointer;
  }
  .app-formats > div.store-link:hover a {
    text-decoration: underline;
  }
}

.app-formats > div.store-link.ios .icon {
  padding-left: 42px;
}

@media screen and (min-width: 46.25em) {
  .app-formats > div.store-link.android .icon img {
    margin-left: 12px;
  }
}

.app-formats > div.store-link.android .icon {
  padding-left: 24px !important;
}

.app-formats > div.store-link .inner > div {
  display: table-cell;
  vertical-align: middle;
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div {
    display: block;
  }
}

.app-formats > div.store-link .inner > div.icon {
  text-align: left;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-right: 16px;
}

@media screen and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.icon {
    display: none;
  }
}

.app-formats > div.store-link .inner > div.text {
  text-align: center;
  font-size: 17px;
  font-variant: small-caps;
  color: white;
}

.app-formats > div.store-link .inner > div.text a {
  color: white;
  text-decoration: none;
}

.app-formats > div.store-link .inner > div.qr {
  text-align: right;
  padding-left: 18px;
  padding-right: 8px;
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div.qr {
    text-align: center;
  }
}

@media screen and (max-width: 37.49em) {
  .app-formats > div.store-link .inner > div.qr {
    display: none !important;
  }
}

.app-formats > div.store-link .inner > div.qr img {
  max-width: 100px;
}

@media screen and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.qr img {
    width: 100%;
  }
}

@media screen and (min-width: 46.25em) and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.app-button {
    top: 50%;
    transform: translateY(-50%);
    position: absolute;
    left: 8px;
    text-align: left;
  }
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div.app-button {
    text-align: center;
  }
}

.app-formats > div.store-link .inner > div.app-button a {
  padding-left: 42px;
}

@media screen and (max-width: 37.49em) {
  .app-formats > div.store-link .inner > div.app-button a {
    margin: 12px 0 0 0;
  }
}

#app-intro {
  background-color: #131;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  /*
 * Responsive slideshow widget using Slick carousel
 */
  /******************************************************
* Slick Carousel default theme overrides
******************************************************/
  padding: 4px 0 0 0;
  margin-bottom: 16px;
  display: none;
}

#app-intro, #app-intro a {
  color: white;
}

#app-intro:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#2e802e, #174517);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

#app-intro:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#184719, #113311);
  z-index: -1;
}

#app-intro > * {
  z-index: 2;
}

body:not(.fullscreen) #app-intro > * {
  position: relative;
}

#app-intro .slick-prev,
#app-intro .slick-next {
  z-index: 1;
  width: auto !important;
  height: auto !important;
}

#app-intro .slick-prev:before,
#app-intro .slick-next:before {
  background-color: black;
  border-radius: 20px;
}

#app-intro .slick-prev {
  left: 16px;
}

#app-intro .slick-prev:before {
  content: "\f104";
  font: 40px/1 'FontAwesome';
  padding: 0 16px 2px 12px;
}

#app-intro .slick-next {
  right: 16px;
  text-align: right;
}

#app-intro .slick-next:before {
  content: "\f105";
  font: 40px/1 'FontAwesome';
  padding: 0 12px 2px 16px;
}

#app-intro .slick-prev:hover:before,
#app-intro .slick-next:hover:before {
  color: #7e7e7e;
}

@media (pointer: coarse) and (hover: none) {
  #app-intro .slick-prev:hover:before,
  #app-intro .slick-next:hover:before {
    color: white;
    opacity: 0.75;
  }
}

@media screen and (max-width: 48.615em) {
  #app-intro .slick-prev:hover:before,
  #app-intro .slick-next:hover:before {
    color: white;
    opacity: 0.75;
  }
}

#app-intro .slideshow {
  --slideshow-aspect-ratio: 928/350;
  margin: 0 auto 0 auto;
  width: 100%;
}

#app-intro .slideshow:not(.initialised) .slide {
  display: none !important;
}

#app-intro .slideshow:not(.initialised) .slide:first-child {
  display: block !important;
}

#app-intro .slideshow.loading {
  width: 100%;
}

body:not(.fullscreen) #app-intro .slideshow.loading {
  position: relative;
}

#app-intro .slideshow.loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -30px;
  margin-left: -30px;
  width: 50px;
  height: 50px;
  border-radius: 50px;
  border: 5px solid rgba(255, 255, 255, 0.25);
  border-top-color: white;
  animation: loading 1s ease infinite;
}

@keyframes loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

#app-intro .slideshow.loading .caption {
  display: none !important;
}

#app-intro .slideshow.loading .slide {
  visibility: hidden;
}

#app-intro .slideshow.loading .slide:first-child .caption {
  display: block !important;
}

#app-intro .slideshow.loading .slide img {
  visibility: hidden;
}

#app-intro .slideshow.initialised:not(.loading) .wrapper:not(.evaluating) {
  position: relative;
}

#app-intro .slideshow.initialised:not(.loading) .wrapper:not(.evaluating) .caption {
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
}

#app-intro .slideshow .slide img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  aspect-ratio: var(--slideshow-aspect-ratio);
}

#app-intro .slideshow .slide .caption {
  font-family: "Coming Soon";
  color: #ddd;
  padding: 8px 16px;
  display: block;
  vertical-align: middle;
  font-size: 16pt;
}

@media screen and (max-width: 37.49em) {
  #app-intro .slideshow .slide .caption {
    font-size: 12pt;
    line-height: 14pt;
  }
}

#app-intro h2 {
  border-bottom: none;
  padding: 0 8px 8px 8px;
  margin: 0;
}

#app-intro .slideshow {
  background-color: #131;
}

#app-download-links {
  padding-bottom: 8px;
}

/*****************************************************************
 Links box
*****************************************************************/
.box {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  box-shadow: 4px 4px 4px #bbb;
  color: #eee;
  padding: 8px;
}

.box, .box a {
  color: white;
}

.box:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#717171, #424141);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

.box:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#404040, #2f2f2f);
  z-index: -1;
}

.box > * {
  z-index: 2;
}

body:not(.fullscreen) .box > * {
  position: relative;
}

.box a, .box strong {
  color: white;
}

.box h2 {
  border: none;
  margin: 0;
}

@media screen and (min-width: 60em) {
  #links {
    width: 300px;
    margin-left: 12px;
    margin-bottom: 12px;
    float: right;
  }
}

@media screen and (min-width: 60em) {
  #description {
    float: left;
    width: 600px;
  }
}

#description p {
  margin-top: 0px;
}

/******************************************************
* Sorting dropdown
******************************************************/
#sort-form {
  float: right;
  padding-top: 8px;
  padding-bottom: 8px;
}

/******************************************************
* Walk listing
******************************************************/
ul.walks {
  clear: both;
  margin-top: 16px;
  padding-left: 0 !important;
  margin-left: 0 !important;
}

li.walk {
  box-shadow: 4px 4px 4px #bbb;
  list-style: none;
  margin-bottom: 16px;
  page-break-inside: avoid;
}

li.walk:last-child {
  margin-bottom: 0;
}

li.walk .overview {
  padding-left: 4px;
  padding-right: 4px;
  padding-top: 2px;
  padding-bottom: 2px;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
}

@media screen and (max-width: 46.24em) {
  li.walk .overview {
    display: none;
  }
}

li.walk .overview .distance {
  float: right;
  position: relative;
  top: 4px;
  color: white;
}

li.walk .overview h2 {
  font-size: 16pt;
  border: none;
  margin: 0 0 0 0;
}

li.walk .overview h2 a {
  color: white;
  text-decoration: none;
}

li.walk .detail {
  display: flex;
  background: white;
  border-bottom-right-radius: 4px;
  /*@include mqs($until: tablet) {
      align-items: center;
    }*/
}

li.walk .detail:after {
  content: '';
  display: block;
}

li.walk .detail .qr {
  float: right;
}

@media screen and (max-width: 46.24em) {
  li.walk .detail .qr {
    display: none;
  }
}

li.walk .detail .thumbnail {
  display: block;
  margin-right: 8px;
  margin-bottom: 0;
  min-width: 200px;
  min-height: 115px;
}

@media screen and (max-width: 46.24em) {
  li.walk .detail .thumbnail {
    max-width: 33%;
    min-width: 33%;
    min-height: auto;
  }
}

@media screen and (max-width: 19.99em) {
  li.walk .detail .thumbnail {
    max-width: 25%;
    min-height: auto;
  }
}

li.walk .detail .thumbnail img {
  width: 100%;
  height: 100%;
}

li.walk .detail .description {
  flex: 1;
}

@media screen and (min-width: 46.25em) {
  li.walk .detail .description .summary {
    display: none;
  }
}

li.walk .detail .description .summary h2 {
  border: none;
  margin-top: 0;
}

li.walk .detail .description .summary h2 a {
  text-decoration: none;
}

li.walk .detail .description .synopsis {
  margin-top: 0;
  margin-bottom: 0;
  padding: 4px;
}

@media screen and (max-width: 46.24em) {
  li.walk .detail .description .synopsis {
    display: none;
  }
}

.walk-grade-1 {
  background: #1a731a;
}

.walk-grade-2 {
  background: #53731a;
}

.walk-grade-3 {
  background: #73731a;
}

.walk-grade-4 {
  background: #73531a;
}

.walk-grade-5 {
  background: #731a1a;
}

/********************************************************
* Bottom promo (if active)
********************************************************/
/**
* Display a bottom promo in a light green box
*/
.bottom-promo {
  background-color: rgba(124, 197, 149, 0.65);
  border-radius: 4px;
  box-shadow: 4px 4px 4px #bbb;
  margin-top: 16px;
  padding: 8px;
}

.bottom-promo, .bottom-promo a {
  color: white;
}

.bottom-promo, .bottom-promo a {
  color: black;
}

.bottom-promo p {
  margin: 0;
}

/********************************************************
* Bottom section with mysteries and locality info
********************************************************/
/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

.bottom-section {
  display: block;
}

@media screen and (min-width: 37.5em) {
  .bottom-section {
    display: flex;
    align-items: flex-start;
  }
}

.bottom-section .locality-info {
  flex: 1;
}

.bottom-section .mysteries {
  flex: 0 0 300px;
  margin-top: 20px;
}

@media screen and (min-width: 37.5em) {
  .bottom-section .mysteries {
    margin-left: 12px;
  }
}

.bottom-section .mysteries img {
  width: 100%;
  display: block;
}

/********************************************************
* App instructions
********************************************************/
.app-instructions {
  display: none;
  margin-top: 24px;
}

/********************************************************
* Print simplification
********************************************************/
@media print {
  #main-photo, .overview, .locality-info, #sort, .bottom-promo {
    display: none;
  }
  .walk {
    box-shadow: none;
  }
  .walk-summary {
    border-bottom-right-radius: 0;
  }
  .app-instructions {
    display: block;
  }
}

/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiLi4vd3d3L2Nzcy93YWxrcy5jc3MiLAoJInNvdXJjZXMiOiBbCgkJIi4uL3d3dy9zY3NzL3dhbGtzLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fY29tbW9uLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fdmFyaWFibGVzLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fZ2VuZXJhbF9taXhpbnMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19tZWRpYS5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX21xLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fdG91Y2guc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19tYWluX3Bob3RvLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fYXBwX2FkX2Zvcm1hdHMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL2NvbXBvbmVudC9fc2xpZGVzaG93LnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9jb21wb25lbnQvX3NsaWNrX292ZXJyaWRlcy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvY29tcG9uZW50L19sb2FkZXIuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19ib3R0b21fcHJvbW8uc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19jb21tb24uc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogT3B0aW9uYWwgR29vZ2xlIG1hcCBzaG93aW5nIHdhbGsgbG9jYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbkBpbXBvcnQgXCJAaW5jbHVkZS9jb21tb25cIjtcblxuI21hcC1jb250YWluZXIge1xuICBkaXNwbGF5OiBub25lOyAvKkhpZGUgYnkgZGVmYXVsdCAodW5oaWRkZW4gYnkgc2hvd19tYXAgc2NyaXB0IGlmIEpTIGVuYWJsZWQpKi9cbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgY2xlYXI6IGxlZnQ7XG59XG4jZ29vZ2xlLW1hcCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDQwMHB4O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIE9wdGlvbmFsIG1haW4gaW1hZ2VcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuQGltcG9ydCBcIkBpbmNsdWRlL21haW5fcGhvdG9cIjtcblxuI21haW4tcGhvdG8gKyBkaXYge1xuXHRwOmZpcnN0LWNoaWxkIHtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIEFwcCBpbnRybyBzaG93biBmb3IgbmV3IHVzZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbkBpbXBvcnQgXCIuLi9AaW5jbHVkZS9hcHBfYWRfZm9ybWF0c1wiO1xuXG4jYXBwLWludHJvIHtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnREYXJrR3JlZW47XG4gIEBpbXBvcnQgXCIuL0BpbmNsdWRlL2NvbXBvbmVudC9zbGlkZXNob3dcIjtcbiAgcGFkZGluZzogNHB4IDAgMCAwO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBkaXNwbGF5OiBub25lO1xuICBcbiAgaDJ7XG5cdGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgcGFkZGluZzogMCA4cHggOHB4IDhweDtcblx0bWFyZ2luOiAwO1xuICB9XG4gIC5zbGlkZXNob3d7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRhcmstZ3JlZW47XG4gIH1cbiAgXG59XG5cbiNhcHAtZG93bmxvYWQtbGlua3Mge1xuXHRwYWRkaW5nLWJvdHRvbTogOHB4O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBMaW5rcyBib3hcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4uYm94IHtcbiAgQGluY2x1ZGUgYm94eTtcbiAgcGFkZGluZzogOHB4O1xufVxuXG5cbiNsaW5rcyB7XG4gIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgIHdpZHRoOiAzMDBweDtcblx0bWFyZ2luLWxlZnQ6IDEycHg7XG5cdG1hcmdpbi1ib3R0b206IDEycHg7XG5cdGZsb2F0OnJpZ2h0O1xuICB9XG59XG5cbiNkZXNjcmlwdGlvbiB7XG4gIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuXHRmbG9hdDpsZWZ0O1xuICAgIHdpZHRoOiA2MDBweDtcbiAgfVxuICBcbiAgcCB7XG5cdG1hcmdpbi10b3A6IDBweDtcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIFNvcnRpbmcgZHJvcGRvd25cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI3NvcnQtZm9ybSB7XG4gIGZsb2F0OiByaWdodDtcbiAgcGFkZGluZy10b3A6IDhweDtcbiAgcGFkZGluZy1ib3R0b206IDhweDtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBXYWxrIGxpc3RpbmdcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxudWwud2Fsa3Mge1xuICBjbGVhcjogYm90aDtcbiAgbWFyZ2luLXRvcDoxNnB4O1xuICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbn1cblxubGkud2FsayB7XG4gIEBpbmNsdWRlIGJveFNoYWRvdztcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC8vIG92ZXJ2aWV3IGluIGhlYWRlciBmb3IgdGFibGV0cyBhbmQgZGVza3RvcHNcbiAgLm92ZXJ2aWV3e1xuICAgIHBhZGRpbmctbGVmdDogNHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAgICBwYWRkaW5nLXRvcDogMnB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAycHg7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG5cbiAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmRpc3RhbmNlIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogNHB4O1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cblxuICAgIGgyIHtcbiAgICAgIGZvbnQtc2l6ZTogMTZwdDtcbiAgICAgIGJvcmRlcjpub25lO1xuICAgICAgbWFyZ2luOiAwIDAgMCAwO1xuXG4gICAgICBhIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmRldGFpbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xuXG4gICAgLypAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfSovXG5cbiAgICAmOmFmdGVye1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAucXIge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGh1bWJuYWlsIGltYWdlXG4gICAgLnRodW1ibmFpbCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgICBtaW4taGVpZ2h0OiAxMTVweDtcblxuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICAgIG1heC13aWR0aDogMzMlO1xuICAgICAgICBtaW4td2lkdGg6IDMzJTtcbiAgICAgICAgbWluLWhlaWdodDogYXV0bztcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogbW9iaWxlKSB7XG4gICAgICAgIG1heC13aWR0aDogMjUlO1xuICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgfVxuXG4gICAgICBpbWd7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gIGRlc2NyaXB0aW9uXG4gICAgLmRlc2NyaXB0aW9ue1xuICAgICAgZmxleDogMTtcbiAgICAgIC8vIHN1bW1hcnkgZm9yIHBob25lc1xuICAgICAgLnN1bW1hcnl7XG4gICAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGgye1xuICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIGF7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHN5bm9wc2lzIGZvciB0YWJsZXRzIGFuZCBkZXNrdG9wc1xuICAgICAgLnN5bm9wc2lzIHtcbiAgICAgICAgbWFyZ2luLXRvcDowO1xuICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICAgIHBhZGRpbmc6NHB4O1xuXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG59XG5cblxuXG5cblxuLndhbGstZ3JhZGUtMSB7YmFja2dyb3VuZDogIzFhNzMxYX1cbi53YWxrLWdyYWRlLTIge2JhY2tncm91bmQ6ICM1MzczMWF9XG4ud2Fsay1ncmFkZS0zIHtiYWNrZ3JvdW5kOiAjNzM3MzFhfVxuLndhbGstZ3JhZGUtNCB7YmFja2dyb3VuZDogIzczNTMxYX1cbi53YWxrLWdyYWRlLTUge2JhY2tncm91bmQ6ICM3MzFhMWF9XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIEJvdHRvbSBwcm9tbyAoaWYgYWN0aXZlKVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0IFwiQGluY2x1ZGUvYm90dG9tX3Byb21vXCI7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBCb3R0b20gc2VjdGlvbiB3aXRoIG15c3RlcmllcyBhbmQgbG9jYWxpdHkgaW5mb1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0IFwiLi4vQGluY2x1ZGUvY29tbW9uXCI7XG4uYm90dG9tLXNlY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jaztcblxuICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgfVxuXG4gIC5sb2NhbGl0eS1pbmZvIHtcbiAgICBmbGV4OiAxO1xuICB9XG5cbiAgLm15c3RlcmllcyB7XG4gICAgZmxleDogMCAwIDMwMHB4OyAvLyBhZGp1c3Qgd2lkdGggYXMgbmVlZGVkXG4gICAgbWFyZ2luLXRvcDogMjBweDtcblxuICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIEFwcCBpbnN0cnVjdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4uYXBwLWluc3RydWN0aW9ucyB7XG4gIGRpc3BsYXk6bm9uZTtcbiAgbWFyZ2luLXRvcDoyNHB4O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogUHJpbnQgc2ltcGxpZmljYXRpb25cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5AbWVkaWEgcHJpbnQge1xuICAjbWFpbi1waG90bywgLm92ZXJ2aWV3LCAubG9jYWxpdHktaW5mbywgI3NvcnQsIC5ib3R0b20tcHJvbW8ge2Rpc3BsYXk6bm9uZX1cblxuICAud2FsayB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gIC53YWxrLXN1bW1hcnkge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICB9XG5cbiAgLmFwcC1pbnN0cnVjdGlvbnMge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gIH1cbn1cbiIsCgkJIi8vIENvbW1vbiBzdHlsZXNcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xuQGltcG9ydCBcIm1lZGlhXCI7XG5AaW1wb3J0IFwidG91Y2hcIjtcblxuYm9keXtcbiAgdmlzaWJpbGl0eTogaW5oZXJpdDtcbn1cbiIsCgkJIi8vIFZhcmlhYmxlc1xuXG4kcGFnZS13aWR0aDogOTYwcHg7XG4kcmVzcG9uc2l2ZS1tZW51OiA3NzhweDtcblxuJGdyZXk6ICMyZjJmMmY7XG4kZGFyay1ncmVlbjogIzEzMTtcbiRncmVlbjogIzI4NWQxZTtcbiRibHVlOiAjMTk0MjRhO1xuJGxpZ2h0LWdyZWVuOiByZ2JhKDEyNCwgMTk3LCAxNDksIDAuNjUpO1xuJHJlZDogIzVjMWUxZTtcbiRkYXJrLXJlZDogIzY2MDAwMDtcblxuLy8gQm94IGdyYWRpZW50c1xuJGJveC1HcmFkLUhlaWdodDogMThweDtcblxuJGJveC1CRy1HcmV5OiAkZ3JleTtcbiRib3gtR3JhZC1VcHBlci1Ub3AtR3JleTogIzcxNzE3MTtcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JleTogIzQyNDE0MTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtR3JleTogIzQwNDA0MDtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tR3JleTogIzJmMmYyZjtcblxuJGJveC1CRy1HcmVlbjogJGdyZWVuO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1HcmVlbjogIzQ2OTkzNjtcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JlZW46ICMzMDcwMjU7XG4kYm94LUdyYWQtTG93ZXItVG9wLUdyZWVuOiAjMzA3MjI1O1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmVlbjogIzI4NWQxZTtcblxuJGJveC1CRy1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1CbHVlOiAjMTI2MTY3O1xuJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLUxvd2VyLVRvcC1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1CbHVlOiAjMTk0MjRhO1xuXG5cbiRib3gtQkctRGFyay1HcmVlbjogJGRhcmstZ3JlZW47XG4kYm94LUdyYWQtVXBwZXItVG9wLURhcmstR3JlZW46ICMyZTgwMmU7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLURhcmstR3JlZW46ICMxNzQ1MTc7XG4kYm94LUdyYWQtTG93ZXItVG9wLURhcmstR3JlZW46ICMxODQ3MTk7XG4kYm94LUdyYWQtTG93ZXItQm90dG9tLURhcmstR3JlZW46ICMxMTMzMTE7XG5cbiRib3gtQkctUmVkOiAkcmVkO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1SZWQ6ICNhODNiM2I7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLVJlZDogIzZlMjUyNTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtUmVkOiAjNzAyNTI1O1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1SZWQ6ICM1YzFlMWU7XG5cbiRtcS1icmVha3BvaW50LW1vYmlsZTogMzIwcHg7XG4kbXEtYnJlYWtwb2ludC10YWJsZXQ3aW5jaDogNjAwcHg7XG4kbXEtYnJlYWtwb2ludC10YWJsZXQ6IDc0MHB4O1xuJG1xLWJyZWFrcG9pbnQtZGVza3RvcDogOTgwcHg7XG4kbXEtYnJlYWtwb2ludC13aWRlOiAxMzAwcHg7XG4kbXEtYnJlYWtwb2ludC1kZXNrdG9wQWQ6IDgxMHB4O1xuJG1xLWJyZWFrcG9pbnQtbW9iaWxlTGFuZHNjYXBlOiA0ODBweDtcbiRtcS1icmVha3BvaW50LW1lZGl1bUxvZ286IDQ0MHB4O1xuJG1xLWJyZWFrcG9pbnQtc21hbGxMb2dvOiAzMjBweDtcbiRtcS1icmVha3BvaW50LWhlYWRlclNvY2lhbEljb25zOiA5NTRweDtcbiRtcS1icmVha3BvaW50LXBhZ2U6ICRwYWdlLXdpZHRoO1xuJG1xLWJyZWFrcG9pbnQtcmVzcG9uc2l2ZU1lbnU6ICRyZXNwb25zaXZlLW1lbnU7XG5cblxuLy8gQnJlYWtwb2ludHNcbiRtcS1icmVha3BvaW50czogKFxuICAgICAgICBtb2JpbGU6ICAkbXEtYnJlYWtwb2ludC1tb2JpbGUsXG4gICAgICAgIHRhYmxldDdpbmNoOiAgJG1xLWJyZWFrcG9pbnQtdGFibGV0N2luY2gsXG4gICAgICAgIHRhYmxldDogICRtcS1icmVha3BvaW50LXRhYmxldCxcbiAgICAgICAgZGVza3RvcDogJG1xLWJyZWFrcG9pbnQtZGVza3RvcCxcbiAgICAgICAgd2lkZTogJG1xLWJyZWFrcG9pbnQtd2lkZSxcblxuICAvLyBUd2Vha3BvaW50c1xuICAgICAgICBkZXNrdG9wQWQ6ICRtcS1icmVha3BvaW50LWRlc2t0b3BBZCxcbiAgICAgICAgbW9iaWxlTGFuZHNjYXBlOiAkbXEtYnJlYWtwb2ludC1tb2JpbGVMYW5kc2NhcGUsXG4gICAgICAgIHNtYWxsTG9nbzogJG1xLWJyZWFrcG9pbnQtc21hbGxMb2dvLFxuICAgICAgICBwYWdlOiAkbXEtYnJlYWtwb2ludC1wYWdlLFxuICAgICAgICByZXNwb25zaXZlTWVudTogJG1xLWJyZWFrcG9pbnQtcmVzcG9uc2l2ZU1lbnUsXG4gICAgICAgIGhlYWRlclNvY2lhbEljb25zOiAkbXEtYnJlYWtwb2ludC1oZWFkZXJTb2NpYWxJY29uc1xuKTtcblxuXG4vLyBUbyBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vIChJRSA8PSA4LCBGaXJlZm94IDw9IDMsIE9wZXJhIDw9IDkpIHNldCAkbXEtcmVzcG9uc2l2ZSB0byBmYWxzZVxuLy8gQ3JlYXRlIGEgc2VwYXJhdGUgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gdGhlc2UgYnJvd3NlcnMsXG4vLyBtZWFuaW5nIEBtZWRpYSBxdWVyaWVzIHdpbGwgYmUgcmFzdGVyaXplZCwgcmVseWluZyBvbiB0aGUgY2FzY2FkZSBpdHNlbGZcbiRtcS1yZXNwb25zaXZlOiB0cnVlO1xuXG4vLyBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZSBjdXJyZW50bHkgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcFxuLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vIHRvIHRoaXMgbGlzdCwgb3JkZXJlZCBieSB3aWR0aCwgZS5nLiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApLlxuLy8kbXEtc2hvdy1icmVha3BvaW50czogKG1vYmlsZSwgbW9iaWxlTGFuZHNjYXBlLCB0YWJsZXQsIGRlc2t0b3AsIHdpZGUpO1xuIiwKCQkiQG1peGluIGlXYWxrTW9iaWxlR3JhZGllbnR7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNjOWRjZjQgMCUsIzgyYjVlYyAyMiUsIzI5OGFlMyA0NiUsIzNlYzFmNyA3MCUsIzNlYzFmNyAxMDAlKTtcbn1cblxuQG1peGluIGNlbnRyZVl7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbkBtaXhpbiBjZW50cmVYe1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cblxuQG1peGluIGNlbnRyZVhZe1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgIHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbkBtaXhpbiBncmV5X2dyYWRpZW50e1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDE4MSwgMTg5LCAyMDAsIDEpIDAlLCByZ2JhKDEzMCwgMTQwLCAxNDksIDEpIDM2JSwgcmdiYSg0MCwgNTIsIDU5LCAxKSAxMDAlKTtcbn1cblxuQG1peGluIGdyZWVuX2dyYWRpZW50e1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNGViOTRlIDAlLCAjMTA5MDEwIDM2JSwgIzA5M2UwOSAxMDAlKTtcbn1cblxuQG1peGluIGJveCgkYmcpe1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmc7XG4gIGJvcmRlci1yYWRpdXM6NHB4O1xuICAmLCBhe1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxufVxuXG5AbWl4aW4gYm94R3JhZGllbnQoJGJnLCAkdXBwZXItdG9wLCAkdXBwZXItYm90dG9tLCAkbG93ZXItdG9wLCAkbG93ZXItYm90dG9tLCAkaGVpZ2h0OiAkYm94LUdyYWQtSGVpZ2h0KXtcbiAgQGluY2x1ZGUgYm94KCRiZyk7XG4gIHotaW5kZXg6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOmJlZm9yZXtcbiAgICBjb250ZW50OicnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCR1cHBlci10b3AsICR1cHBlci1ib3R0b20pO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5cbiAgJjphZnRlcntcbiAgICBjb250ZW50OicnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6ICRoZWlnaHQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCRsb3dlci10b3AsICRsb3dlci1ib3R0b20pO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5cbiAgPiAqe1xuICAgIHotaW5kZXg6IDI7XG5cbiAgICBAYXQtcm9vdCB7XG4gICAgICBib2R5Om5vdCguZnVsbHNjcmVlbikgI3smfSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJveEdyYWRpZW50R3JleXtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1HcmV5LCAkYm94LUdyYWQtVXBwZXItVG9wLUdyZXksICRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JleSwgJGJveC1HcmFkLUxvd2VyLVRvcC1HcmV5LCAkYm94LUdyYWQtTG93ZXItQm90dG9tLUdyZXkpO1xufVxuXG5AbWl4aW4gYm94R3JhZGllbnRHcmVlbntcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLVRvcC1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLVRvcC1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmVlbik7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudEJsdWV7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctQmx1ZSwgJGJveC1HcmFkLVVwcGVyLVRvcC1CbHVlLCAkYm94LUdyYWQtVXBwZXItQm90dG9tLUJsdWUsICRib3gtR3JhZC1Mb3dlci1Ub3AtQmx1ZSwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1CbHVlKTtcbn1cblxuQG1peGluIGJveEdyYWRpZW50RGFya0dyZWVue1xuICBAaW5jbHVkZSBib3hHcmFkaWVudCgkYm94LUJHLURhcmstR3JlZW4sICRib3gtR3JhZC1VcHBlci1Ub3AtRGFyay1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1EYXJrLUdyZWVuLCAkYm94LUdyYWQtTG93ZXItVG9wLURhcmstR3JlZW4sICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tRGFyay1HcmVlbik7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudFJlZHtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1SZWQsICRib3gtR3JhZC1VcHBlci1Ub3AtUmVkLCAkYm94LUdyYWQtVXBwZXItQm90dG9tLVJlZCwgJGJveC1HcmFkLUxvd2VyLVRvcC1SZWQsICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tUmVkKTtcbn1cblxuQG1peGluIGJveFNoYWRvd3tcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0cHggI2JiYjtcbn1cblxuQG1peGluIGJveHl7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50R3JleTtcbiAgQGluY2x1ZGUgYm94U2hhZG93O1xuICBjb2xvcjogI2VlZTtcblxuICBhLCBzdHJvbmcge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuXG4gIGgyIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbkBtaXhpbiBsaWdodEdyZWVuQm94e1xuICBAaW5jbHVkZSBib3goJGxpZ2h0LWdyZWVuKTtcbiAgJixhe1xuICAgIGNvbG9yOiBibGFjaztcbiAgfVxufVxuXG4iLAoJCSJcbi8qKlxuICogQnJlYWtwb2ludHNcbiAqL1xuXG5AaW1wb3J0IFwibXFcIjtcblxuXG5AbWl4aW4gbXFzKCRmcm9tOiBmYWxzZSwgJHVudGlsOiBmYWxzZSl7XG4gIEBpbmNsdWRlIG1xKCRmcm9tLCAkdW50aWwsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vKipcbiAqIElucHV0IGNhcGFiaWxpdGllc1xuICovXG5cbi8vIHNtYXJ0cGhvbmVzIGFuZCB0YWJsZXRzXG5AbWl4aW4gdG91Y2gtc2NyZWVuLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpXG4gIGFuZCAoaG92ZXI6IG5vbmUpe1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1vdXNlIG9yIHRvdWNoIHBhZFxuQG1peGluIG1vdXNlLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBmaW5lKVxuICBhbmQgKGhvdmVyOiBob3Zlcil7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU2hvdyBmb3IgdG91Y2ggc2NyZWVuc1xuLy8gYW5kIHVwIHVudGlsIHRhYmxldCBkZXZpY2Ugd2lkdGggZm9yIHRhYmxldHMgbm90IHN1cHBvcnRpbmcgaW5wdXQgbWVkaWEgcXVlcmllcyBpZS4gb2xkIEFuZHJvaWQgNC54XG5AbWl4aW4gdG91Y2gtc2NyZWVuLWRldmljZXN7XG4gIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1pbnB1dCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcmVzcG9uc2l2ZU1lbnUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBOaW50ZW5kbyBXaWkgY29udHJvbGxlciwgS2luZWN0LCBldGMuXG5AbWl4aW4gY29uc29sZS1pbnB1dCB7XG4gIEBtZWRpYSAocG9pbnRlcjogY29hcnNlKVxuICBhbmQgKGhvdmVyOiBob3Zlcil7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gc3R5bHVzLWJhc2VkIHNjcmVlbnMgKENpbnRpcSwgV2Fjb20sIGV0YylcbkBtaXhpbiBjb25zb2xlLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBmaW5lKVxuICBhbmQgKGhvdmVyOiBub25lKXtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBSZXRpbmEgZGlzcGxheXMgKDJ4KVxuQG1peGluIHJldGluYSB7XG4gIEBtZWRpYSAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLCgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAzLzIpLFxuICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLChtaW4tcmVzb2x1dGlvbjogMS41ZHBweCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLAoJCSJAY2hhcnNldCBcIlVURi04XCI7IC8vIEZpeGVzIGFuIGlzc3VlIHdoZXJlIFJ1YnkgbG9jYWxlIGlzIG5vdCBzZXQgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL3B1bGwvMTBcblxuLy8vIEJhc2UgZm9udCBzaXplIG9uIHRoZSBgPGJvZHk+YCBlbGVtZW50XG4vLy8gQHR5cGUgTnVtYmVyICh1bml0KVxuJG1xLWJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLy8gUmVzcG9uc2l2ZSBtb2RlXG4vLy9cbi8vLyBTZXQgdG8gYGZhbHNlYCB0byBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vLyAoSUUgPD0gOCwgRmlyZWZveCA8PSAzLCBPcGVyYSA8PSA5KVxuLy8vXG4vLy8gWW91IGNvdWxkIGNyZWF0ZSBhIHN0eWxlc2hlZXQgc2VydmVkIGV4Y2x1c2l2ZWx5IHRvIG9sZGVyIGJyb3dzZXJzLFxuLy8vIHdoZXJlIEBtZWRpYSBxdWVyaWVzIGFyZSByYXN0ZXJpemVkXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIG9sZC1pZS5zY3NzXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9mZiBEaXNhYmxlZCByZXNwb25zaXZlIG1vZGUgZG9jdW1lbnRhdGlvblxuJG1xLXJlc3BvbnNpdmU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGxpc3Rcbi8vL1xuLy8vIE5hbWUgeW91ciBicmVha3BvaW50cyBpbiBhIHdheSB0aGF0IGNyZWF0ZXMgYSB1YmlxdWl0b3VzIGxhbmd1YWdlXG4vLy8gYWNyb3NzIHRlYW0gbWVtYmVycy4gSXQgd2lsbCBpbXByb3ZlIGNvbW11bmljYXRpb24gYmV0d2VlblxuLy8vIHN0YWtlaG9sZGVycywgZGVzaWduZXJzLCBkZXZlbG9wZXJzLCBhbmQgdGVzdGVycy5cbi8vL1xuLy8vIEB0eXBlIE1hcFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLWJyZWFrcG9pbnRzOiAoXG4gICAgbW9iaWxlOiAgMzIwcHgsXG4gICAgdGFibGV0OiAgNzQwcHgsXG4gICAgZGVza3RvcDogOTgwcHgsXG4gICAgd2lkZTogICAgMTMwMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gU3RhdGljIGJyZWFrcG9pbnQgKGZvciBmaXhlZC13aWR0aCBsYXlvdXRzKVxuLy8vXG4vLy8gRGVmaW5lIHRoZSBicmVha3BvaW50IGZyb20gJG1xLWJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkXG4vLy8gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IHdpZHRoIGZvciB0aGUgZml4ZWQtd2lkdGggbGF5b3V0XG4vLy8gKGkuZS4gd2hlbiAkbXEtcmVzcG9uc2l2ZSBpcyBzZXQgdG8gJ2ZhbHNlJykgaW4gYSBvbGQtaWUuc2Nzc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyB0YWJsZXQtb25seS5zY3NzXG4vLy8gIC8vXG4vLy8gIC8vIElnbm9yZSBhbGwgc3R5bGVzIGFib3ZlIHRhYmxldCBicmVha3BvaW50LFxuLy8vICAvLyBhbmQgZml4IHRoZSBzdHlsZXMgKGUuZy4gbGF5b3V0KSBhdCB0YWJsZXQgd2lkdGhcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICAkbXEtc3RhdGljLWJyZWFrcG9pbnQ6IHRhYmxldDtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gdGFibGV0XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1zdGF0aWMtYnJlYWtwb2ludDogZGVza3RvcCAhZGVmYXVsdDtcblxuLy8vIFNob3cgYnJlYWtwb2ludHMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vL1xuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGgsIGUuZy4gKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKS5cbi8vL1xuLy8vIEB0eXBlIG1hcFxuJG1xLXNob3ctYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuXG4vLy8gQ3VzdG9taXplIHRoZSBtZWRpYSB0eXBlIChlLmcuIGBAbWVkaWEgc2NyZWVuYCBvciBgQG1lZGlhIHByaW50YClcbi8vLyBCeSBkZWZhdWx0IHNhc3MtbXEgdXNlcyBhbiBcImFsbFwiIG1lZGlhIHR5cGUgKGBAbWVkaWEgYWxsIGFuZCDigKZgKVxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNjaGFuZ2luZy1tZWRpYS10eXBlIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1tZWRpYS10eXBlOiBhbGwgIWRlZmF1bHQ7XG5cbi8vLyBDb252ZXJ0IHBpeGVscyB0byBlbXNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHggLSB2YWx1ZSB0byBjb252ZXJ0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlLWZvbnQtc2l6ZSAoJG1xLWJhc2UtZm9udC1zaXplKSAtIGA8Ym9keT5gIGZvbnQgc2l6ZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkZm9udC1zaXplLWluLWVtczogbXEtcHgyZW0oMTZweCk7XG4vLy8gIHAgeyBmb250LXNpemU6IG1xLXB4MmVtKDE2cHgpOyB9XG4vLy9cbi8vLyBAcmVxdWlyZXMgJG1xLWJhc2UtZm9udC1zaXplXG4vLy8gQHJldHVybnMge051bWJlcn1cbkBmdW5jdGlvbiBtcS1weDJlbSgkcHgsICRiYXNlLWZvbnQtc2l6ZTogJG1xLWJhc2UtZm9udC1zaXplKSB7XG4gICAgQGlmIHVuaXRsZXNzKCRweCkge1xuICAgICAgICBAd2FybiBcIkFzc3VtaW5nICN7JHB4fSB0byBiZSBpbiBwaXhlbHMsIGF0dGVtcHRpbmcgdG8gY29udmVydCBpdCBpbnRvIHBpeGVscy5cIjtcbiAgICAgICAgQHJldHVybiBtcS1weDJlbSgkcHggKiAxcHgsICRiYXNlLWZvbnQtc2l6ZSk7XG4gICAgfSBAZWxzZSBpZiB1bml0KCRweCkgPT0gZW0ge1xuICAgICAgICBAcmV0dXJuICRweDtcbiAgICB9XG4gICAgQHJldHVybiAoJHB4IC8gJGJhc2UtZm9udC1zaXplKSAqIDFlbTtcbn1cblxuLy8vIEdldCBhIGJyZWFrcG9pbnQncyB3aWR0aFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludC4gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkdGFibGV0LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCh0YWJsZXQpO1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoZGVza3RvcCkpIHt9XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFZhbHVlIGluIHBpeGVsc1xuQGZ1bmN0aW9uIG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSB7XG4gICAgICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQHdhcm4gXCJCcmVha3BvaW50ICN7JG5hbWV9IHdhc24ndCBmb3VuZCBpbiAkYnJlYWtwb2ludHMuXCI7XG4gICAgfVxufVxuXG4vLy8gTWVkaWEgUXVlcnkgbWl4aW5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGZyb20gKGZhbHNlKSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICR1bnRpbCAoZmFsc2UpIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGFuZCAoZmFsc2UpIC0gQWRkaXRpb25hbCBtZWRpYSBxdWVyeSBwYXJhbWV0ZXJzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZWRpYS10eXBlICgkbXEtbWVkaWEtdHlwZSkgLSBNZWRpYSB0eXBlOiBzY3JlZW4sIHByaW504oCmXG4vLy9cbi8vLyBAaWdub3JlIFVuZG9jdW1lbnRlZCBBUEksIGZvciBhZHZhbmNlZCB1c2Ugb25seTpcbi8vLyBAaWdub3JlIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgKCRtcS1icmVha3BvaW50cylcbi8vLyBAaWdub3JlIEBwYXJhbSB7U3RyaW5nfSAkc3RhdGljLWJyZWFrcG9pbnQgKCRtcS1zdGF0aWMtYnJlYWtwb2ludClcbi8vL1xuLy8vIEBjb250ZW50IHN0eWxpbmcgcnVsZXMsIHdyYXBwZWQgaW50byBhIEBtZWRpYSBxdWVyeSB3aGVuICRyZXNwb25zaXZlIGlzIHRydWVcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1tZWRpYS10eXBlXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtcHgyZW1cbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1nZXQtYnJlYWtwb2ludC13aWR0aFxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb24tZGVmYXVsdCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogbW9iaWxlKSB7XG4vLy8gICAgICBjb2xvcjogcmVkO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkdW50aWw6IHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGJsdWU7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKG1vYmlsZSwgdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogZ3JlZW47XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiB0YWJsZXQsICRhbmQ6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknKSB7XG4vLy8gICAgICBjb2xvcjogdGVhbDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoOTUwcHgpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSh0YWJsZXQsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICAvLyBBZHZhbmNlZCB1c2U6XG4vLy8gICAgJG15LWJyZWFrcG9pbnRzOiAoTDogOTAwcHgsIFhMOiAxMjAwcHgpO1xuLy8vICAgIEBpbmNsdWRlIG1xKEwsICRicmVha3BvaW50czogJG15LWJyZWFrcG9pbnRzLCAkc3RhdGljLWJyZWFrcG9pbnQ6IEwpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgfVxuQG1peGluIG1xKFxuICAgICRmcm9tOiBmYWxzZSxcbiAgICAkdW50aWw6IGZhbHNlLFxuICAgICRhbmQ6IGZhbHNlLFxuICAgICRtZWRpYS10eXBlOiAkbXEtbWVkaWEtdHlwZSxcbiAgICAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cyxcbiAgICAkcmVzcG9uc2l2ZTogJG1xLXJlc3BvbnNpdmUsXG4gICAgJHN0YXRpYy1icmVha3BvaW50OiAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbikge1xuICAgICRtaW4td2lkdGg6IDA7XG4gICAgJG1heC13aWR0aDogMDtcbiAgICAkbWVkaWEtcXVlcnk6ICcnO1xuXG4gICAgLy8gRnJvbTogdGhpcyBicmVha3BvaW50IChpbmNsdXNpdmUpXG4gICAgQGlmICRmcm9tIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGZyb20pID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbSgkZnJvbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJGZyb20sICRicmVha3BvaW50cykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW50aWw6IHRoYXQgYnJlYWtwb2ludCAoZXhjbHVzaXZlKVxuICAgIEBpZiAkdW50aWwge1xuICAgICAgICBAaWYgdHlwZS1vZigkdW50aWwpID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbSgkdW50aWwpO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCR1bnRpbCwgJGJyZWFrcG9pbnRzKSkgLSAuMDFlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBkaXNhYmxlZCwgcmFzdGVyaXplIHRoZSBvdXRwdXQgb3V0c2lkZSBAbWVkaWEgYmxvY2tzXG4gICAgLy8gVGhlIGJyb3dzZXIgd2lsbCByZWx5IG9uIHRoZSBjYXNjYWRlIGl0c2VsZi5cbiAgICBAaWYgJHJlc3BvbnNpdmUgPT0gZmFsc2Uge1xuICAgICAgICAkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzdGF0aWMtYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgJHRhcmdldC13aWR0aDogbXEtcHgyZW0oJHN0YXRpYy1icmVha3BvaW50LXdpZHRoKTtcblxuICAgICAgICAvLyBPdXRwdXQgb25seSBydWxlcyB0aGF0IHN0YXJ0IGF0IG9yIHNwYW4gb3VyIHRhcmdldCB3aWR0aFxuICAgICAgICBAaWYgKFxuICAgICAgICAgICAgJGFuZCA9PSBmYWxzZVxuICAgICAgICAgICAgYW5kICRtaW4td2lkdGggPD0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgYW5kIChcbiAgICAgICAgICAgICAgICAkdW50aWwgPT0gZmFsc2Ugb3IgJG1heC13aWR0aCA+PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHsgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcbiAgICAgICAgQGlmICRtaW4td2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi13aWR0aDogI3skbWluLXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkbWF4LXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtYXgtd2lkdGg6ICN7JG1heC13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJGFuZCAgICAgICAgICAgIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAjeyRhbmR9JzsgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSBtZWRpYSBxdWVyeSBwcmVmaXggJ2FsbCBhbmQgJ1xuICAgICAgICBAaWYgKCRtZWRpYS10eXBlID09ICdhbGwnIGFuZCAkbWVkaWEtcXVlcnkgIT0gJycpIHtcbiAgICAgICAgICAgICRtZWRpYS10eXBlOiAnJztcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogc3RyLXNsaWNlKHVucXVvdGUoJG1lZGlhLXF1ZXJ5KSwgNik7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgI3skbWVkaWEtdHlwZSArICRtZWRpYS1xdWVyeX0ge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vLyBBZGQgYSBicmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBicmVha3BvaW50XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgbXEtYWRkLWJyZWFrcG9pbnQodHZzY3JlZW4sIDE5MjBweCk7XG4vLy8gIEBpbmNsdWRlIG1xKHR2c2NyZWVuKSB7fVxuQG1peGluIG1xLWFkZC1icmVha3BvaW50KCRuYW1lLCAkd2lkdGgpIHtcbiAgICAkbmV3LWJyZWFrcG9pbnQ6ICgkbmFtZTogJHdpZHRoKTtcbiAgICAkbXEtYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkbXEtYnJlYWtwb2ludHMsICRuZXctYnJlYWtwb2ludCkgIWdsb2JhbDtcbn1cblxuLy8vIFNob3cgdGhlIGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyIG9mIHRoZSB2aWV3cG9ydFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3ctYnJlYWtwb2ludHMgKCRtcS1zaG93LWJyZWFrcG9pbnRzKSAtIExpc3Qgb2YgYnJlYWtwb2ludHMgdG8gc2hvdyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgKCRtcS1icmVha3BvaW50cykgLSBCcmVha3BvaW50IG5hbWVzIGFuZCBzaXplc1xuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXNob3ctYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBnbG9iYWwgc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbi8vL1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGN1c3RvbSBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKChMLCBYTCksIChTOiAzMDBweCwgTDogODAwcHgsIFhMOiAxMjAwcHgpKTtcbkBtaXhpbiBtcS1zaG93LWJyZWFrcG9pbnRzKCRzaG93LWJyZWFrcG9pbnRzOiAkbXEtc2hvdy1icmVha3BvaW50cywgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBib2R5OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0Y4RTM7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGNvbG9yOiAjQzA5ODUzO1xuICAgICAgICBmb250OiBzbWFsbC1jYXB0aW9uO1xuICAgICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBicmVha3BvaW50cyB0aGF0IHNob3VsZCBiZSBzaG93blxuICAgICAgICBAZWFjaCAkc2hvdy1icmVha3BvaW50IGluICRzaG93LWJyZWFrcG9pbnRzIHtcbiAgICAgICAgICAgICR3aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50czogJGJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCIjeyRzaG93LWJyZWFrcG9pbnR9IOKJpSAjeyR3aWR0aH0gKCN7bXEtcHgyZW0oJHdpZHRoKX0pXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpZiBsZW5ndGgoJG1xLXNob3ctYnJlYWtwb2ludHMpID4gMCB7XG4gICAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbn1cbiIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBUb3VjaCBkZXZpY2VzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xuXG5AbWl4aW4gYm94LXNoYWRvd3tcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwwLDAsLjE1KTtcbn1cblxuQG1peGluIHRvdWNoLXNjcmVlbi1zdHlsZXMge1xuXG4gIC8vIEJ1dHRvbnNcbiAgW2RhdGEtcm9sZT1cImJ1dHRvblwiXTpub3QoLm5vbi1yZXNwb25zaXZlKXtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93O1xuXG4gICAgY29sb3I6ICMzMzMgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiAjZWVlO1xuXG4gICAgYm9yZGVyLWNvbG9yOiAjZGRkO1xuICAgIGJvcmRlci13aWR0aDogMXB4O1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuXG5cbiAgICBtYXJnaW46IC41ZW0gMDtcbiAgICBwYWRkaW5nOiAuN2VtIDFlbTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcblxuICAgICY6aG92ZXIsICY6YWN0aXZle1xuICAgICAgYmFja2dyb3VuZDogI2U4ZjBmZjtcbiAgICB9XG5cbiAgICAmW2RhdGEtaWNvbl17XG4gICAgICBwYWRkaW5nLWxlZnQ6IDMycHg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gICAgICBpe1xuICAgICAgICBAaW5jbHVkZSBjZW50cmVZO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDhweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmdyZWVuIHtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM4ZGRkYTAgMCUsICMzZGRiOGMgNTAlLCAjOGRkZGEwIDEwMCUpO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjMmI2YjM3O1xuICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC41KTsgLy9oZWF2aWVyIHNoYWRvdyBvbiBkYXJrIGdyZWVuIGJnXG4gICAgICAmOmhvdmVyLCAmOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNkY2Y0ZTEgMCUsICMzZGRiOGMgNTAlLCAjZGNmNGUxIDEwMCUpO1xuICAgICAgfVxuICAgIH1cbiAgICAmLmJsdWV7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM4ZGMwZGQgMCUsIzNkYWNkYiA1MCUsIzhkYzBkZCAxMDAlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMTI2MTY3O1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgICAgICAmOmhvdmVyLCAmOmFjdGl2ZXtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZGNlMWY0IDAlLCM2ZWFjZWIgNTAlLCNkY2UxZjQgMTAwJSk7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBMaXN0dmlld3NcbiAgW2RhdGEtcm9sZT1cImxpc3R2aWV3XCJdOm5vdCgubm9uLXJlc3BvbnNpdmUpe1xuICAgIEBpbmNsdWRlIGJveHk7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG5cblxuICAgID5saXtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBwYWRkaW5nOiA4cHggMTZweCA4cHggOHB4ICFpbXBvcnRhbnQ7XG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBib3JkZXItY29sb3I6ICNkZGQ7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMXB4IDAgMXB4O1xuICAgICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgYXtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cblxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgIGNvbnRlbnQ6ICc+JztcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgcmlnaHQ6IDRweDtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcbiAgICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTGluayBsaXN0c1xuICA6bm90KC5ub24tcmVzcG9uc2l2ZSk6bm90KFtkYXRhLXJvbGVdKTpub3QoW3JvbGVdKSA+IGxpID4gYTpvbmx5LWNoaWxke1xuICAgIHBhZGRpbmc6IDhweCAwO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuXG5cbiIsCgkJIi8qKlxuKiBEaXNwbGF5IGEgZnVsbC13aWR0aCBwaG90byB3aXRoIGEgd2hpdGUgYm9yZGVyXG4qL1xuXG4jbWFpbi1waG90byB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIGltZyB7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLmltYWdlLWJvcmRlciB7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMTBweDtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgYm90dG9tOiAxMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlO1xuICB9XHRcbn1cbiIsCgkJIi5hcHAtZm9ybWF0cyB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG5cbiAgLy9kZXNrdG9wXG4gIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgIC5hcHAtYnV0dG9uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvL3RhYmxldFxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiBwYWdlKSB7XG4gICAgLnRleHQge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gsICR1bnRpbDogcGFnZSkge1xuICAgIC5pY29ue1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgLmljb24ge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gID4gZGl2LnN0b3JlLWxpbmsge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG5cbiAgICAuaW5uZXJ7XG4gICAgICBAaW5jbHVkZSBjZW50cmVYO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgd2lkdGg6IDk4JTtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxMnB4KTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gpe1xuICAgICAgICBtYXJnaW46IDhweCAwIDAgMDtcbiAgICAgICAgcGFkZGluZzogOHB4IDAgNHB4IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWFhYWE7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gsICR1bnRpbDogcGFnZSkge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gsICR1bnRpbDogdGFibGV0KSB7XG4gICAgICAgIHBhZGRpbmc6IDRweCAwIDhweCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgQGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYSB7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmlvc3tcbiAgICAgIC5pY29ue1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQycHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5hbmRyb2lke1xuICAgICAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgLmljb24gaW1ne1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5pY29ue1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHggIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5uZXIgPiBkaXYge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgJi5pY29uIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgcGFkZGluZy10b3A6IDRweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDRweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTZweDtcbiAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi50ZXh0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDE3cHg7XG4gICAgICAgIGZvbnQtdmFyaWFudDogc21hbGwtY2FwcztcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBhe1xuICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5xcntcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMThweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xuXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaW1ne1xuICAgICAgICAgIG1heC13aWR0aDogMTAwcHg7XG4gICAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuYXBwLWJ1dHRvbntcbiAgICAgICAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQsICR1bnRpbDogcGFnZSkge1xuICAgICAgICAgIEBpbmNsdWRlIGNlbnRyZVk7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGxlZnQ6IDhweDtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgYXtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDQycHg7XG4gICAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcbiAgICAgICAgICAgIG1hcmdpbjogMTJweCAwIDAgMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsCgkJIi8qXG4gKiBSZXNwb25zaXZlIHNsaWRlc2hvdyB3aWRnZXQgdXNpbmcgU2xpY2sgY2Fyb3VzZWxcbiAqL1xuXG5AaW1wb3J0IFwic2xpY2tfb3ZlcnJpZGVzXCI7XG5AaW1wb3J0IFwibG9hZGVyXCI7XG5cbi5zbGlkZXNob3cge1xuICAvLyBBc3BlY3QgcmF0aW8gb2YgdGhlIHNsaWRlc2hvdyBiYW5uZXIgaW1hZ2VzIChvcmlnaW5hbCBkaW1lbnNpb25zOiA5Mjh4MzUwKVxuICAvLyBUaGlzIHJlc2VydmVzIHNwYWNlIGJlZm9yZSBpbWFnZXMgbG9hZCwgcHJldmVudGluZyBDTFMgKEN1bXVsYXRpdmUgTGF5b3V0IFNoaWZ0KVxuICAtLXNsaWRlc2hvdy1hc3BlY3QtcmF0aW86ICN7OTI4IC8gMzUwfTtcblxuICBtYXJnaW46IDAgYXV0byAwIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuXG4gICY6bm90KC5pbml0aWFsaXNlZCkge1xuICAgIC5zbGlkZSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYubG9hZGluZyB7XG4gICAgQGluY2x1ZGUgbG9hZGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLmNhcHRpb24ge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5zbGlkZSB7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQgLmNhcHRpb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICBpbWcge1xuICAgICAgICAvLyBVc2UgdmlzaWJpbGl0eTogaGlkZGVuIGluc3RlYWQgb2YgZGlzcGxheTogbm9uZSB0byBwcmVzZXJ2ZVxuICAgICAgICAvLyB0aGUgYXNwZWN0LXJhdGlvIGhlaWdodCByZXNlcnZhdGlvbiBhbmQgcHJldmVudCBDTFNcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuaW5pdGlhbGlzZWQ6bm90KC5sb2FkaW5nKSB7XG4gICAgLndyYXBwZXI6bm90KC5ldmFsdWF0aW5nKSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgIC5jYXB0aW9uIHtcbiAgICAgICAgQGluY2x1ZGUgY2VudHJlWTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zbGlkZSB7XG5cbiAgICBpbWcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIGFzcGVjdC1yYXRpbzogdmFyKC0tc2xpZGVzaG93LWFzcGVjdC1yYXRpbyk7XG4gICAgfVxuXG4gICAgLmNhcHRpb24ge1xuICAgICAgZm9udC1mYW1pbHk6IFwiQ29taW5nIFNvb25cIjtcbiAgICAgIGNvbG9yOiAjZGRkO1xuICAgICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBmb250LXNpemU6IDE2cHQ7XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJwdDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBTbGljayBDYXJvdXNlbCBkZWZhdWx0IHRoZW1lIG92ZXJyaWRlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4uc2xpY2stcHJldixcbi5zbGljay1uZXh0IHtcbiAgei1pbmRleDogMTtcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG5cbiAgJjpiZWZvcmV7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgfVxufVxuXG4uc2xpY2stcHJldiB7XG4gIGxlZnQ6IDE2cHg7XG59XG5cbi5zbGljay1wcmV2OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMTA0XCI7XG4gIGZvbnQ6IDQwcHgvMSAnRm9udEF3ZXNvbWUnO1xuICBwYWRkaW5nOiAwIDE2cHggMnB4IDEycHg7XG59XG5cbi5zbGljay1uZXh0IHtcbiAgcmlnaHQ6IDE2cHg7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4uc2xpY2stbmV4dDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjEwNVwiO1xuICBmb250OiA0MHB4LzEgJ0ZvbnRBd2Vzb21lJztcbiAgcGFkZGluZzogMCAxMnB4IDJweCAxNnB4O1xufVxuXG4uc2xpY2stcHJldjpob3ZlcjpiZWZvcmUsXG4uc2xpY2stbmV4dDpob3ZlcjpiZWZvcmUge1xuICBjb2xvcjogIzdlN2U3ZTtcbiAgQGluY2x1ZGUgdG91Y2gtc2NyZWVuLWRldmljZXN7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDAuNzU7XG4gIH1cbn0iLAoJCSIvLyBMb2FkaW5nIGFuaW1hdGlvblxuXG4kbG9hZGVyLWRlZmF1bHQtc2l6ZTogNTBweDtcbiRsb2FkZXItZGVmYXVsdC10aGlja25lc3M6IDVweDtcbiRsb2FkZXItZGVmYXVsdC1mb3JlZ3JvdW5kOiB3aGl0ZTtcbiRsb2FkZXItZGVmYXVsdC1iYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMjUpO1xuJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQtaW52ZXJ0ZWQ6IGJsYWNrO1xuJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmQtaW52ZXJ0ZWQ6IHJnYmEoMCwwLDAsMC4yNSk7XG5cbkBtaXhpbiBsb2FkZXIoXG4gICRzaXplOiAkbG9hZGVyLWRlZmF1bHQtc2l6ZSxcbiAgJHRoaWNrbmVzczogJGxvYWRlci1kZWZhdWx0LXRoaWNrbmVzcyxcbiAgJGZvcmVncm91bmQ6ICRsb2FkZXItZGVmYXVsdC1mb3JlZ3JvdW5kLFxuICAkYmFja2dyb3VuZDogJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmRcbil7XG5cbiAgQGF0LXJvb3R7XG4gICAgYm9keTpub3QoLmZ1bGxzY3JlZW4pICN7Jn0ge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi10b3A6IC0oJHNpemUgLyAyICsgJHRoaWNrbmVzcyk7XG4gICAgbWFyZ2luLWxlZnQ6IC0oJHNpemUgLyAyICsgJHRoaWNrbmVzcyk7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgYm9yZGVyLXJhZGl1czogJHNpemU7XG4gICAgYm9yZGVyOiAkdGhpY2tuZXNzIHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRmb3JlZ3JvdW5kO1xuICAgIGFuaW1hdGlvbjogbG9hZGluZyAxcyBlYXNlIGluZmluaXRlO1xuICB9XG4gIEBrZXlmcmFtZXMgbG9hZGluZyB7XG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGxvYWRlci1pbnZlcnRlZChcbiAgJHNpemU6ICRsb2FkZXItZGVmYXVsdC1zaXplLFxuICAkdGhpY2tuZXNzOiAkbG9hZGVyLWRlZmF1bHQtdGhpY2tuZXNzLFxuICAkZm9yZWdyb3VuZDogJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQtaW52ZXJ0ZWQsXG4gICRiYWNrZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZC1pbnZlcnRlZFxuKXtcbiAgQGluY2x1ZGUgbG9hZGVyKFxuICAgICRzaXplOiAkc2l6ZSxcbiAgICAkdGhpY2tuZXNzOiAkdGhpY2tuZXNzLFxuICAgICRmb3JlZ3JvdW5kOiAkZm9yZWdyb3VuZCxcbiAgICAkYmFja2dyb3VuZDogJGJhY2tncm91bmRcbiAgKTtcbn1cbiIsCgkJIi8qKlxuKiBEaXNwbGF5IGEgYm90dG9tIHByb21vIGluIGEgbGlnaHQgZ3JlZW4gYm94XG4qL1xuXG5cbi5ib3R0b20tcHJvbW8ge1xuICAgIEBpbmNsdWRlIGxpZ2h0R3JlZW5Cb3g7XG4gICAgQGluY2x1ZGUgYm94U2hhZG93O1xuICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIHB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxufSIsCgkJIi8vIENvbW1vbiBzdHlsZXNcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xuQGltcG9ydCBcIm1lZGlhXCI7XG5AaW1wb3J0IFwidG91Y2hcIjtcblxuYm9keXtcbiAgdmlzaWJpbGl0eTogaW5oZXJpdDtcbn1cbiIKCV0sCgkibmFtZXMiOiBbXSwKCSJtYXBwaW5ncyI6ICJBQUFBOzt1REFFdUQ7QUlEdkQ7O0dBRUc7QUFXSDs7R0FFRztBRWhCSDs7eURB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 */