@charset "UTF-8";
/*
* 	Main Icon mixin
*
* 	Based on http://jaydenseric.com/blog/fun-with-sass-and-font-icons 
*
*	e.g. 
*	@include icon('phone', 'before', true, $large, $top:-3px, $margin:5px);
* 	@include icon('phone', 'before', true, $large, $top:-3px, $margin:5px) {
*		color: black;
* 	}
*/
@font-face {
  font-family: "entypo";
  src: url("../fonts/entypo/entypo-plus.eot");
  src: url("../fonts/entypo/entypo-plus.eot?#iefix") format("embedded-opentype"), url("../fonts/entypo/entypo-plus.woff") format("woff"), url("../fonts/entypo/entypo-plus.ttf") format("truetype"), url("../fonts/entypo/entypo-plus.svg#entypo") format("svg");
  font-weight: normal;
  font-style: normal;
  speak: none; }

.site-inner .wrap {
  max-width: 76.046em;
  margin-left: auto;
  margin-right: auto;
  padding: 0 !important; }
  .site-inner .wrap:after {
    content: " ";
    display: block;
    clear: both; }
  @media (min-width: 768px) and (max-width: 1023px) {
    .site-inner .wrap {
      max-width: 960px; } }

/*
 * Modular Scale Settings
 *
 * http://www.modularscale.com by Tim Brown
 * https://github.com/Team-Sass/modular-scale
 * version 2 syntax
 */
/*
	 * Sizing
	 */
/*
 * Social Network Colours
 *
 * http://designpieces.com/2012/12/social-media-colours-hex-and-rgb/
 */
/*
 * Brand Colours
 */
body.agency-pro-orange {
  background-color: #41413f; }
  body.agency-pro-orange a {
    color: #01899C; }
  body.agency-pro-orange .button, body.agency-pro-orange .fl-button {
    border: 2px solid #01899C;
    color: #01899C;
    background-color: transparent; }
    body.agency-pro-orange .button:hover, body.agency-pro-orange .fl-button:hover {
      border-color: #015c69;
      color: #015c69;
      background-color: transparent; }
    body.agency-pro-orange .button.blue, body.agency-pro-orange .blue.fl-button {
      border-color: #01899C; }
      body.agency-pro-orange .button.blue:hover, body.agency-pro-orange .blue.fl-button:hover {
        background-color: #015c69; }
  body.agency-pro-orange .fl-button {
    color: #01899C !important;
    border-color: #01899C !important; }
    body.agency-pro-orange .fl-button .fl-button-text {
      color: #01899C !important; }
  body.agency-pro-orange .bg-medium .button, body.agency-pro-orange .bg-medium .fl-button {
    border-color: #FDC135;
    color: #FDC135; }
  body.agency-pro-orange .bg-medium .fl-button {
    color: #FDC135 !important;
    border-color: #FDC135 !important; }
    body.agency-pro-orange .bg-medium .fl-button .fl-button-text {
      color: #FDC135 !important; }
  body.agency-pro-orange .bg-yellow .button, body.agency-pro-orange .bg-yellow .fl-button,
  body.agency-pro-orange .bg-yellow-horizontal .button, body.agency-pro-orange .bg-yellow-horizontal .fl-button {
    border-color: #377734;
    color: #fff;
    background: #377734 !important; }
    body.agency-pro-orange .bg-yellow .button:hover, body.agency-pro-orange .bg-yellow .fl-button:hover,
    body.agency-pro-orange .bg-yellow-horizontal .button:hover, body.agency-pro-orange .bg-yellow-horizontal .fl-button:hover {
      background: #275424 !important;
      border-color: #275424; }
  body.agency-pro-orange .bg-yellow .fl-button,
  body.agency-pro-orange .bg-yellow-horizontal .fl-button {
    color: #377734 !important;
    border-color: #377734 !important;
    background: #377734 !important; }
    body.agency-pro-orange .bg-yellow .fl-button .fl-button-text,
    body.agency-pro-orange .bg-yellow-horizontal .fl-button .fl-button-text {
      color: #fff !important; }

/*
* Backgrounds
*/
.bg-light {
  background: #e6e6e3; }

.bg-medium {
  background: -webkit-linear-gradient(#868477, #6b695f);
  background: linear-gradient(#868477, #6b695f);
  color: #fff; }
  .bg-medium h1, .bg-medium h2, .bg-medium h3, .bg-medium h4 {
    color: #FDC135; }

body.agency-pro-orange .bg-medium a {
  color: #FDC135;
  font-weight: bold; }

.bg-dark {
  background: #333431; }

.bg-yellow {
  background: #FDC135;
  background-image: -webkit-linear-gradient(#FACB20, #EB9B2E);
  background-image: linear-gradient(#FACB20, #EB9B2E);
  color: #333431;
  box-shadow: rgba(0, 0, 0, 0.35) 6px 6px 0px;
  text-align: center; }
  .bg-yellow h1, .bg-yellow h2, .bg-yellow h3, .bg-yellow h4, .bg-yellow .fl-heading-text {
    color: #333431;
    text-align: center; }
  .bg-yellow .bg-yellow {
    box-shadow: none; }

.bg-yellow-horizontal {
  background: #FDC135;
  background-image: -webkit-linear-gradient(left, #FACB20, #EB9B2E);
  background-image: linear-gradient(left, #FACB20, #EB9B2E);
  color: #333431;
  text-align: center; }
  .bg-yellow-horizontal h1, .bg-yellow-horizontal h2, .bg-yellow-horizontal h3, .bg-yellow-horizontal h4, .bg-yellow-horizontal .fl-heading-text {
    color: #333431;
    text-align: center; }

.sidebar .bg-medium {
  box-shadow: rgba(0, 0, 0, 0.35) 6px 6px 0px; }
  .sidebar .bg-medium .bg-medium {
    box-shadow: none; }

/*
 * Buttons
 */
.button.primary, body.agency-pro-orange .primary.fl-button {
  background: #333431;
  color: #fff; }

.button.secondary, body.agency-pro-orange .secondary.fl-button {
  background: #F9F9F9;
  color: #333431; }

.button.outline, body.agency-pro-orange .outline.fl-button {
  border: 1px solid #333431;
  color: #333431; }

body {
  font-family: "garamond-premier-pro",serif;
  font-size: 18px;
  line-height: 29.124px; }

p,
ol,
li,
.entry-content ol,
.entry-content p,
.entry-content ul,
.quote-caption {
  font-size: 18px;
  line-height: 29.124px;
  font-family: "garamond-premier-pro",serif; }

h1, h2, h3, h4, h5, h6 {
  font-family: "din-condensed-web",sans-serif;
  font-weight: 700; }
  h1a, h2a, h3a, h4a, h5a, h6a {
    font-family: "din-condensed-web",sans-serif;
    font-weight: 700; }

h1,
h1.entry-title {
  font-size: 63px;
  line-height: 58.248px;
  margin: 0 0 29.124px; }

h2 {
  font-size: 47px;
  line-height: 58.248px;
  margin: 0 0 29.124px; }

h3 {
  font-size: 29px;
  line-height: 29.124px;
  margin: 0 0 29.124px; }

h4 {
  font-size: 24px;
  line-height: 29.124px;
  margin: 0; }

p {
  margin: 0 0 29.124px; }

.button, body.agency-pro-orange .fl-button,
body.agency-pro-orange .button, body.agency-pro-orange .fl-button {
  font-family: "din-condensed-web",sans-serif;
  font-weight: 700;
  font-size: 18px;
  line-height: 29.124px;
  padding: 7.281px 21.843px;
  margin: 21.843px 0; }

/* Responsive Menu
--------------------------------------------- */
.responsive-menu-icon {
  cursor: pointer;
  display: none;
  margin-bottom: -1px;
  text-align: center; }
  .responsive-menu-icon:before {
    content: "";
    position: relative;
    display: inline-block;
    width: auto;
    text-decoration: none;
    text-rendering: optimizeLegibility !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    speak: none;
    text-transform: none;
    line-height: normal;
    font-style: normal;
    font-variant: normal;
    font-weight: normal;
    font-family: "entypo";
    font-size: 16px;
    font-size: 29px;
    margin-right: 5px;
    position: relative;
    top: 5px; }

.nav-primary .responsive-menu-icon::before {
  color: #fff; }

@media only screen and (max-width: 768px) {
  .genesis-nav-menu.responsive-menu > .menu-item > .sub-menu,
  .genesis-nav-menu.responsive-menu {
    display: none; }
  .genesis-nav-menu.responsive-menu .menu-item,
  .responsive-menu-icon {
    display: block; }
  .genesis-nav-menu.responsive-menu .menu-item {
    margin: 0; }
  .genesis-nav-menu.responsive-menu .menu-item:hover {
    position: static; }
  .genesis-nav-menu.responsive-menu .current-menu-item > a,
  .genesis-nav-menu.responsive-menu .sub-menu .current-menu-item > a:hover,
  .genesis-nav-menu.responsive-menu a,
  .genesis-nav-menu.responsive-menu a:hover {
    background: none;
    line-height: 1;
    padding: 16px 20px; }
  .nav-primary .genesis-nav-menu.responsive-menu .current-menu-item > a,
  .nav-primary .genesis-nav-menu.responsive-menu .sub-menu .current-menu-item > a:hover,
  .nav-primary .genesis-nav-menu.responsive-menu a,
  .nav-primary .genesis-nav-menu.responsive-menu a:hover {
    color: #fff; }
  .genesis-nav-menu.responsive-menu .menu-item-has-children {
    cursor: pointer; }
  .genesis-nav-menu.responsive-menu .menu-item-has-children > a {
    margin-right: 60px; }
  .genesis-nav-menu.responsive-menu > .menu-item-has-children:before {
    content: "";
    position: relative;
    display: inline-block;
    width: auto;
    text-decoration: none;
    text-rendering: optimizeLegibility !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    speak: none;
    text-transform: none;
    line-height: normal;
    font-style: normal;
    font-variant: normal;
    font-weight: normal;
    font-family: "entypo";
    font-size: 16px;
    font-size: 29px;
    margin-right: 5px;
    position: relative;
    top: -3px;
    float: right;
    padding: 10px 20px;
    right: 0;
    text-align: right;
    z-index: 9999;
    color: black; }
  .genesis-nav-menu.responsive-menu .menu-open.menu-item-has-children:before {
    content: "";
    position: relative;
    display: inline-block;
    width: auto;
    text-decoration: none;
    text-rendering: optimizeLegibility !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    speak: none;
    text-transform: none;
    line-height: normal;
    font-style: normal;
    font-variant: normal;
    font-weight: normal;
    font-family: "entypo";
    font-size: 16px;
    font-size: 29px;
    margin-right: 5px;
    position: relative;
    top: -3px; }
  .genesis-nav-menu.responsive-menu .sub-menu {
    border: none;
    left: auto;
    opacity: 1;
    padding-left: 25px;
    position: relative;
    -webkit-transition: opacity .4s ease-in-out;
    transition: opacity .4s ease-in-out;
    width: 100%;
    z-index: 99; }
  .genesis-nav-menu.responsive-menu .sub-menu .sub-menu {
    margin: 0; }
  .genesis-nav-menu.responsive-menu .sub-menu .current-menu-item > a:hover,
  .genesis-nav-menu.responsive-menu .sub-menu li a,
  .genesis-nav-menu.responsive-menu .sub-menu li a:hover {
    background: none;
    border: none;
    padding: 12px 20px;
    position: relative;
    width: 100%; } }

.site-header {
  background-color: #373735; }

.genesis-nav-menu a {
  font-size: 18px;
  line-height: 29.124px;
  padding: 14.562px 14.562px; }

.genesis-nav-menu .sub-menu a {
  font-size: 18px;
  line-height: 29.124px; }

.site-footer {
  background: #868477;
  padding: 14.562px; }
  .site-footer p {
    font-size: 15px;
    line-height: 29.124px;
    color: #504f47;
    text-transform: none;
    letter-spacing: 1px; }
    .site-footer p a {
      font-weight: bold;
      color: #35342f !important; }

.footer-widgets {
  background: rgba(255, 255, 255, 0.8);
  border-top: none;
  padding: 30px 0 0; }
  .footer-widgets .footer-widgets-1 {
    width: 100%;
    margin-right: 0; }

.site-container {
  padding-top: 87.372px; }

.site-inner {
  padding: 116.496px 0; }

.content {
  box-shadow: rgba(0, 0, 0, 0.35) 6px 6px 0px; }

.bg-medium .festival-name {
  font-family: "din-condensed-web",sans-serif;
  font-weight: 700;
  font-size: 39px;
  line-height: 58.248px;
  line-height: 43.686px; }

.bg-medium .weekend-name {
  font-family: "din-condensed-web",sans-serif;
  font-weight: 700;
  font-size: 24px;
  line-height: 29.124px;
  margin: 14.562px 0; }

.bg-medium .festival-dates {
  font-family: "din-condensed-web",sans-serif;
  font-weight: 700;
  font-size: 24px;
  line-height: 29.124px;
  margin: 14.562px 0; }

/*
 * Page Builder
 * (Beaver builder) - default styling
 */
.fl-builder .entry {
  padding: 0; }
  .fl-builder .entry .entry-header,
  .fl-builder .entry .entry-footer {
    padding: 29.124px 58.248px 0; }

@media (min-width: 768px) and (max-width: 1023px) {
  .fl-builder .site-inner {
    padding: 0; } }

@media (max-width: 767px) {
  .fl-builder .site-inner {
    padding: 0; } }

.fl-row-content {
  padding: 29.124px 58.248px; }

.fl-col-content {
  margin: 0 29.124px;
  padding-top: 14.562px;
  padding-bottom: 14.562px; }

.fl-col-group {
  margin-left: -29.124px;
  margin-right: -29.124px; }
  @media (max-width: 767px) {
    .fl-col-group {
      margin-left: 0;
      margin-right: 0; } }

.no-row-margin .fl-row-content {
  padding: 0 58.248px; }

@media (max-width: 767px) {
  .fl-col-small {
    max-width: 100% !important; } }

.content-sidebar .fl-row-content,
.content-sidebar .fl-col-content,
.sidebar-content .fl-row-content,
.sidebar-content .fl-col-content,
.content-sidebar-sidebar .fl-row-content,
.content-sidebar-sidebar .fl-col-content,
.sidebar-content-sidebar .fl-row-content,
.sidebar-content-sidebar .fl-col-content,
.sidebar-sidebar-content .fl-row-content,
.sidebar-sidebar-content .fl-col-content {
  padding-top: 0;
  padding-bottom: 0; }

.content-sidebar .fl-row.padding .fl-row-content,
.sidebar-content .fl-row.padding .fl-row-content,
.content-sidebar-sidebar .fl-row.padding .fl-row-content,
.sidebar-content-sidebar .fl-row.padding .fl-row-content,
.sidebar-sidebar-content .fl-row.padding .fl-row-content {
  padding: 58.248px; }

.fl-col.padding .fl-col-content {
  padding: 29.124px; }

.bg-yellow .fl-col-content {
  margin: 0 29.124px; }

.edge-to-edge .fl-row-content,
.edge-to-edge .fl-col-content {
  padding: 0; }

.page-template-page_builder .site-inner .entry,
.page-template-page_landing .site-inner .entry {
  margin-bottom: 0; }

/**
 * For modern browsers
 * 1. The space content is one way to avoid an Opera bug when the
 *    contenteditable attribute is included anywhere else in the document.
 *    Otherwise it causes space to appear at the top and bottom of elements
 *    that are clearfixed.
 * 2. The use of `table` rather than `block` is only necessary if using
 *    `:before` to contain the top-margins of child elements.
 */
.cf:before,
.cf:after {
  content: " ";
  /* 1 */
  display: table;
  /* 2 */ }

.cf:after {
  clear: both; }

/**
 * For IE 6/7 only
 * Include this rule to trigger hasLayout and contain floats.
 */
.cf {
  *zoom: 1; }

/**
 * Icon Fonts
 */
.phone-number {
  margin-bottom: 15px; }
  .phone-number:before {
    content: "";
    position: relative;
    display: inline-block;
    width: auto;
    text-decoration: none;
    text-rendering: optimizeLegibility !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    speak: none;
    text-transform: none;
    line-height: normal;
    font-style: normal;
    font-variant: normal;
    font-weight: normal;
    font-family: "entypo";
    font-size: 16px;
    font-size: 1.3em;
    margin-right: 6px;
    position: relative;
    top: 1px;
    margin-left: 2px; }

.mobile-number {
  margin-bottom: 15px; }
  .mobile-number:before {
    content: "";
    position: relative;
    display: inline-block;
    width: auto;
    text-decoration: none;
    text-rendering: optimizeLegibility !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    speak: none;
    text-transform: none;
    line-height: normal;
    font-style: normal;
    font-variant: normal;
    font-weight: normal;
    font-family: "entypo";
    font-size: 16px;
    font-size: 1.3em;
    margin-right: 10px;
    position: relative;
    top: 1px;
    margin-left: 3px; }

.address-full {
  margin-bottom: 15px; }
  .address-full:before {
    content: "";
    position: relative;
    display: inline-block;
    width: auto;
    text-decoration: none;
    text-rendering: optimizeLegibility !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    speak: none;
    text-transform: none;
    line-height: normal;
    font-style: normal;
    font-variant: normal;
    font-weight: normal;
    font-family: "entypo";
    font-size: 16px;
    font-size: 1.3em;
    margin-right: 5px;
    position: relative;
    top: 0;
    float: left;
    display: block; }
  .address-full .street-address-wrap,
  .address-full .city-postcode {
    padding-left: 25px; }

.social-network-link {
  margin-bottom: 15px; }
  .social-network-link.facebook:before {
    content: "";
    position: relative;
    display: inline-block;
    width: auto;
    text-decoration: none;
    text-rendering: optimizeLegibility !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    speak: none;
    text-transform: none;
    line-height: normal;
    font-style: normal;
    font-variant: normal;
    font-weight: normal;
    font-family: "entypo";
    font-size: 16px;
    font-size: 1.3em;
    margin-right: 7px;
    position: relative;
    top: 1px;
    color: #3b5998; }

.contact-us-page-content {
  margin-top: 18px; }

.musician {
  margin-bottom: 29.124px; }
  .musician h3 {
    margin-bottom: 0; }
  .musician .details {
    font-size: 24px;
    line-height: 29.124px;
    padding: 7.281px;
    background: #dad9d5; }
  .musician .musician-image {
    position: relative;
    overflow: hidden; }
    .musician .musician-image img {
      margin: 0;
      margin-bottom: -10px;
      padding: 0; }
  .musician.featured .musician-image:after {
    content: 'Featured';
    position: absolute;
    color: #333431;
    top: 15px;
    right: -35px;
    z-index: 9;
    background: #FDC135;
    padding: 0px 40px !important;
    font-size: 15px;
    line-height: 29.124px;
    -webkit-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
            transform: rotate(45deg); }
  .musician h3, .musician .details {
    text-align: center; }

@media (min-width: 768px) {
  .musicians-list .musician {
    width: 23.40426%;
    float: left; }
    .musicians-list .musician:nth-child(4n + 1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .musicians-list .musician:nth-child(4n + 2) {
      margin-left: 25.53191%;
      margin-right: -100%;
      clear: none; }
    .musicians-list .musician:nth-child(4n + 3) {
      margin-left: 51.06383%;
      margin-right: -100%;
      clear: none; }
    .musicians-list .musician:nth-child(4n + 4) {
      margin-left: 76.59574%;
      margin-right: -100%;
      clear: none; } }

@media (min-width: 768px) {
  .musicians-page .image-plus-details {
    width: 40.42553%;
    float: left;
    margin-right: 2.12766%; }
  .musicians-page .bio {
    width: 57.44681%;
    float: right;
    margin-right: 0;
    padding-left: 14.562px; } }

.musicians-page .musician-wrap {
  *zoom: 1;
  padding-bottom: 29.124px; }
  .musicians-page .musician-wrap:before, .musicians-page .musician-wrap:after {
    content: " ";
    /* 1 */
    display: table;
    /* 2 */ }
  .musicians-page .musician-wrap:after {
    clear: both; }

.instrument-tutors-link {
  border-right: 1px solid #01899C;
  padding: 0 7.281px; }
  .instrument-tutors-link:first-child {
    padding-left: 0; }
  .instrument-tutors-link:last-child {
    padding-right: 0;
    border-right: 0px; }

/*
 * Site Custom SASS starts here...
 */

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImN1c3RvbS5jc3MiLCJzYXNzLWljb24tZm9udHMvX2VudHlwby5zY3NzIiwiX3N1c3ktc2V0dGluZ3Muc2NzcyIsIi4uLy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiLi4vLi4vLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250YWluZXIuc2NzcyIsIi4uLy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIuLi8uLi8uLi9ib3dlcl9jb21wb25lbnRzL2NvbXBhc3MtYnJlYWtwb2ludC9zdHlsZXNoZWV0cy9fYnJlYWtwb2ludC5zY3NzIiwiX3ZlcnRpY2FsLXJoeXRobS5zY3NzIiwiX2NvbG91cnMuc2NzcyIsIl90eXBvZ3JhcGh5LnNjc3MiLCIuLi8uLi8uLi9ib3dlcl9jb21wb25lbnRzL21vZHVsYXItc2NhbGUvc3R5bGVzaGVldHMvbW9kdWxhci1zY2FsZS9fcm91bmQtcHguc2NzcyIsIl9yZXNwb25zaXZlLW1lbnUuc2NzcyIsIl9oZWFkZXIuc2NzcyIsIl9mb290ZXIuc2NzcyIsIl9jb250ZW50LnNjc3MiLCJfcGFnZS1idWlsZGVyLnNjc3MiLCJfY2xlYXJmaXguc2NzcyIsIl9pY29uLWZvbnRzLnNjc3MiLCJfbXVzaWNpYW5zLnNjc3MiLCIuLi8uLi8uLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi4uLy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIuLi8uLi8uLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2lzb2xhdGUuc2NzcyIsIi4uLy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiLi4vLi4vLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIuLi8uLi8uLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIuLi8uLi8uLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi4uLy4uLy4uL3N0ZGluIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjtBQ3FWakI7Ozs7Ozs7Ozs7RUFVRTtBQWpWQTtFQUNFLHNCQUFzQjtFQUN0Qiw0Q0FBUTtFQUNSLCtQQUF1TDtFQUN2TCxvQkFBb0I7RUFDcEIsbUJBQW1CO0VBQ25CLFlBQVksRUFBQTs7QUNYaEI7RUNVSSxvQkNxQ3dCO0VEckN4QixrQkNxRG9DO0VEckRwQyxtQkNxRG1FO0VGN0R0RSxzQkFBc0IsRUFNdEI7RUFSRDtJR0dNLGFBQWE7SUFDYixlQUFlO0lBQ2YsWUFBWSxFQUNiO0VDaUREO0lKdkRKO01BTUUsaUJBQWlCLEVBRWxCLEVBQUE7O0FLakJEOzs7Ozs7R0FNRztBQVNGOztJQUVHO0FDakJKOzs7O0dBSUc7QUFhSDs7R0FFRztBQW1DSDtFQUNDLDBCQUFxQixFQTRFckI7RUE3RUQ7SUFJSSxlQS9CVSxFQWdDWjtFQUxGO0lBUUUsMEJBbkNZO0lBb0NaLGVBcENZO0lBcUNaLDhCQUE4QixFQWU5QjtJQXpCRjtNQWFHLHNCQUFvQjtNQUNwQixlQUFhO01BQ2IsOEJBQThCLEVBQzlCO0lBaEJIO01BbUJHLHNCQTlDVyxFQW1EWDtNQXhCSDtRQXNCSSwwQkFBd0IsRUFDeEI7RUF2Qko7SUE2QkUsMEJBQXVCO0lBQ3ZCLGlDQUE4QixFQUs5QjtJQW5DRjtNQWlDRywwQkFBdUIsRUFDdkI7RUFsQ0g7SUF3Q0csc0JBckVhO0lBc0ViLGVBdEVhLEVB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O0VBTEo7SVh3RUUsZ0JHdEVlO0lIdUVmLHNCQTlEZ0M7SVdENUIsaUJBQTBCO0lBQzFCLG9CQUFtQixFQUNyQjtFQVpKO0lBZU0sbUJBQW1CO0lBQ25CLGlCQUFpQixFQU9uQjtJQXZCSjtNQW1CUyxVQUFVO01BQ1YscUJBQXFCO01BQ3JCLFdBQVcsRUFDYjtFQXRCUDtJQTJCUyxvQkFBb0I7SUFDcEIsbUJBQW1CO0lBQ25CLGVWR1k7SVVGWixVQUFVO0lBQ1YsYUFBYTtJQUNiLFdBQVc7SUFDWCxvQlZSTztJVVNQLDZCQUE2QjtJWHNDcEMsZ0JHdEVlO0lIdUVmLHNCQTlEZ0M7SVd5QnpCLGlDQUFpQjtRQUFqQiw2QkFBaUI7WUFBakIseUJBQWlCLEVBQ25CO0VBckNQO0lBNkNNLG1CQUFtQixFQUNyQjs7QVprQkE7RVlmSjtJZjlCSSxpQmdCd0lvQjtJaEJ4SXBCLFlpQkE0RCxFRm1DNUQ7SUFMSjtNZjlCSSxla0J3RGlCO01sQnhEakIsb0JtQm9ENkI7TW5CcEQ3QixZb0JaMEI7TXBCWTFCLGVxQmdCK0IsRUZ3RDlCO0lKMUNMO01mOUJJLHVCZ0J3SW9CO01oQnhJcEIsb0JtQm9ENkI7TW5CcEQ3QixZb0JKMEIsRUQ0RXpCO0lKMUNMO01mOUJJLHVCZ0J3SW9CO01oQnhJcEIsb0JtQm9ENkI7TW5CcEQ3QixZb0JKMEIsRUQ0RXpCO0lKMUNMO01mOUJJLHVCZ0J3SW9CO01oQnhJcEIsb0JtQm9ENkI7TW5CcEQ3QixZb0JKMEIsRUQ0RXpCLEVBQUE7O0FoQjNCRDtFWVBKO0lmdENJLGlCZ0J3SW9CO0loQnhJcEIsWWlCQTREO0lqQkE1RCx1QnNCNER3QixFUGZyQjtFQVBQO0lmdENJLGlCZ0J3SW9CO0loQnhJcEIsYWlCQXVFO0lqQkF2RSxnQmdCa0ZvQjtJRGpDZix1QkFBK0IsRUFDakMsRUFBQTs7QUFaUDtHRmxCQyxRQUFTO0VFb0NKLHlCWGhFNEIsRVdpRTlCO0VBbkJKO0lGM0JFLGFBQWE7SUFBRSxPQUFPO0lBQ3RCLGVBQWU7SUFBRSxPQUFPLEVBQ3hCO0VFeUJGO0lGdEJFLFlBQVksRUFDWjs7QUU0Q0Y7RUFDRyxnQ1Z0RFc7RVV1RFgsbUJBQTRCLEVBVTlCO0VBWkQ7SUFLTSxnQkFBZ0IsRUFDbEI7RUFOSjtJQVNNLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFDcEI7O0FRNURKOztHQUVHIiwiZmlsZSI6ImN1c3RvbS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAY2hhcnNldCBcIlVURi04XCI7XG4vKlxuKiBcdE1haW4gSWNvbiBtaXhpblxuKlxuKiBcdEJhc2VkIG9uIGh0dHA6Ly9qYXlkZW5zZXJpYy5jb20vYmxvZy9mdW4td2l0aC1zYXNzLWFuZC1mb250LWljb25zIFxuKlxuKlx0ZS5nLiBcbipcdEBpbmNsdWRlIGljb24oJ3Bob25lJywgJ2JlZm9yZScsIHRydWUsICRsYXJnZSwgJHRvcDotM3B4LCAkbWFyZ2luOjVweCk7XG4qIFx0QGluY2x1ZGUgaWNvbigncGhvbmUnLCAnYmVmb3JlJywgdHJ1ZSwgJGxhcmdlLCAkdG9wOi0zcHgsICRtYXJnaW46NXB4KSB7XG4qXHRcdGNvbG9yOiBibGFjaztcbiogXHR9XG4qL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcImVudHlwb1wiO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2VudHlwby9lbnR5cG8tcGx1cy5lb3RcIik7XG4gIHNyYzogdXJsKFwiLi4vZm9udHMvZW50eXBvL2VudHlwby1wbHVzLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi4uL2ZvbnRzL2VudHlwby9lbnR5cG8tcGx1cy53b2ZmXCIpIGZvcm1hdChcIndvZmZcIiksIHVybChcIi4uL2ZvbnRzL2VudHlwby9lbnR5cG8tcGx1cy50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksIHVybChcIi4uL2ZvbnRzL2VudHlwby9lbnR5cG8tcGx1cy5zdmcjZW50eXBvXCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBzcGVhazogbm9uZTsgfVxuXG4uc2l0ZS1pbm5lciAud3JhcCB7XG4gIG1heC13aWR0aDogNzYuMDQ2ZW07XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxuICAuc2l0ZS1pbm5lciAud3JhcDphZnRlciB7XG4gICAgY29udGVudDogXCIgXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY2xlYXI6IGJvdGg7IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gICAgLnNpdGUtaW5uZXIgLndyYXAge1xuICAgICAgbWF4LXdpZHRoOiA5NjBweDsgfSB9XG5cbi8qXG4gKiBNb2R1bGFyIFNjYWxlIFNldHRpbmdzXG4gKlxuICogaHR0cDovL3d3dy5tb2R1bGFyc2NhbGUuY29tIGJ5IFRpbSBCcm93blxuICogaHR0cHM6Ly9naXRodWIuY29tL1RlYW0tU2Fzcy9tb2R1bGFyLXNjYWxlXG4gKiB2ZXJzaW9uIDIgc3ludGF4XG4gKi9cbi8qXG5cdCAqIFNpemluZ1xuXHQgKi9cbi8qXG4gKiBTb2NpYWwgTmV0d29yayBDb2xvdXJzXG4gKlxuICogaHR0cDovL2Rlc2lnbnBpZWNlcy5jb20vMjAxMi8xMi9zb2NpYWwtbWVkaWEtY29sb3Vycy1oZXgtYW5kLXJnYi9cbiAqL1xuLypcbiAqIEJyYW5kIENvbG91cnNcbiAqL1xuYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MTQxM2Y7IH1cbiAgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSBhIHtcbiAgICBjb2xvcjogIzAxODk5QzsgfVxuICBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5idXR0b24sIGJvZHkuYWdlbmN5LXByby1vcmFuZ2UgLmZsLWJ1dHRvbiB7XG4gICAgYm9yZGVyOiAycHggc29saWQgIzAxODk5QztcbiAgICBjb2xvcjogIzAxODk5QztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAgIGJvZHkuYWdlbmN5LXByby1vcmFuZ2UgLmJ1dHRvbjpob3ZlciwgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuZmwtYnV0dG9uOmhvdmVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogIzAxNWM2OTtcbiAgICAgIGNvbG9yOiAjMDE1YzY5O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgICBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5idXR0b24uYmx1ZSwgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuYmx1ZS5mbC1idXR0b24ge1xuICAgICAgYm9yZGVyLWNvbG9yOiAjMDE4OTlDOyB9XG4gICAgICBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5idXR0b24uYmx1ZTpob3ZlciwgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuYmx1ZS5mbC1idXR0b246aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDE1YzY5OyB9XG4gIGJvZHkuYWdlbmN5LXByby1vcmFuZ2UgLmZsLWJ1dHRvbiB7XG4gICAgY29sb3I6ICMwMTg5OUMgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6ICMwMTg5OUMgIWltcG9ydGFudDsgfVxuICAgIGJvZHkuYWdlbmN5LXByby1vcmFuZ2UgLmZsLWJ1dHRvbiAuZmwtYnV0dG9uLXRleHQge1xuICAgICAgY29sb3I6ICMwMTg5OUMgIWltcG9ydGFudDsgfVxuICBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5iZy1tZWRpdW0gLmJ1dHRvbiwgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuYmctbWVkaXVtIC5mbC1idXR0b24ge1xuICAgIGJvcmRlci1jb2xvcjogI0ZEQzEzNTtcbiAgICBjb2xvcjogI0ZEQzEzNTsgfVxuICBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5iZy1tZWRpdW0gLmZsLWJ1dHRvbiB7XG4gICAgY29sb3I6ICNGREMxMzUgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6ICNGREMxMzUgIWltcG9ydGFudDsgfVxuICAgIGJvZHkuYWdlbmN5LXByby1vcmFuZ2UgLmJnLW1lZGl1bSAuZmwtYnV0dG9uIC5mbC1idXR0b24tdGV4dCB7XG4gICAgICBjb2xvcjogI0ZEQzEzNSAhaW1wb3J0YW50OyB9XG4gIGJvZHkuYWdlbmN5LXByby1vcmFuZ2UgLmJnLXllbGxvdyAuYnV0dG9uLCBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5iZy15ZWxsb3cgLmZsLWJ1dHRvbixcbiAgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuYmcteWVsbG93LWhvcml6b250YWwgLmJ1dHRvbiwgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuYmcteWVsbG93LWhvcml6b250YWwgLmZsLWJ1dHRvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiAjMzc3NzM0O1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQ6ICMzNzc3MzQgIWltcG9ydGFudDsgfVxuICAgIGJvZHkuYWdlbmN5LXByby1vcmFuZ2UgLmJnLXllbGxvdyAuYnV0dG9uOmhvdmVyLCBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5iZy15ZWxsb3cgLmZsLWJ1dHRvbjpob3ZlcixcbiAgICBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5iZy15ZWxsb3ctaG9yaXpvbnRhbCAuYnV0dG9uOmhvdmVyLCBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5iZy15ZWxsb3ctaG9yaXpvbnRhbCAuZmwtYnV0dG9uOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICMyNzU0MjQgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci1jb2xvcjogIzI3NTQyNDsgfVxuICBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5iZy15ZWxsb3cgLmZsLWJ1dHRvbixcbiAgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuYmcteWVsbG93LWhvcml6b250YWwgLmZsLWJ1dHRvbiB7XG4gICAgY29sb3I6ICMzNzc3MzQgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6ICMzNzc3MzQgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiAjMzc3NzM0ICFpbXBvcnRhbnQ7IH1cbiAgICBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5iZy15ZWxsb3cgLmZsLWJ1dHRvbiAuZmwtYnV0dG9uLXRleHQsXG4gICAgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuYmcteWVsbG93LWhvcml6b250YWwgLmZsLWJ1dHRvbiAuZmwtYnV0dG9uLXRleHQge1xuICAgICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfVxuXG4vKlxuKiBCYWNrZ3JvdW5kc1xuKi9cbi5iZy1saWdodCB7XG4gIGJhY2tncm91bmQ6ICNlNmU2ZTM7IH1cblxuLmJnLW1lZGl1bSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgjODY4NDc3LCAjNmI2OTVmKTtcbiAgY29sb3I6ICNmZmY7IH1cbiAgLmJnLW1lZGl1bSBoMSwgLmJnLW1lZGl1bSBoMiwgLmJnLW1lZGl1bSBoMywgLmJnLW1lZGl1bSBoNCB7XG4gICAgY29sb3I6ICNGREMxMzU7IH1cblxuYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuYmctbWVkaXVtIGEge1xuICBjb2xvcjogI0ZEQzEzNTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLmJnLWRhcmsge1xuICBiYWNrZ3JvdW5kOiAjMzMzNDMxOyB9XG5cbi5iZy15ZWxsb3cge1xuICBiYWNrZ3JvdW5kOiAjRkRDMTM1O1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI0ZBQ0IyMCwgI0VCOUIyRSk7XG4gIGNvbG9yOiAjMzMzNDMxO1xuICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMzUpIDZweCA2cHggMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLmJnLXllbGxvdyBoMSwgLmJnLXllbGxvdyBoMiwgLmJnLXllbGxvdyBoMywgLmJnLXllbGxvdyBoNCwgLmJnLXllbGxvdyAuZmwtaGVhZGluZy10ZXh0IHtcbiAgICBjb2xvcjogIzMzMzQzMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLmJnLXllbGxvdyAuYmcteWVsbG93IHtcbiAgICBib3gtc2hhZG93OiBub25lOyB9XG5cbi5iZy15ZWxsb3ctaG9yaXpvbnRhbCB7XG4gIGJhY2tncm91bmQ6ICNGREMxMzU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChsZWZ0LCAjRkFDQjIwLCAjRUI5QjJFKTtcbiAgY29sb3I6ICMzMzM0MzE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAuYmcteWVsbG93LWhvcml6b250YWwgaDEsIC5iZy15ZWxsb3ctaG9yaXpvbnRhbCBoMiwgLmJnLXllbGxvdy1ob3Jpem9udGFsIGgzLCAuYmcteWVsbG93LWhvcml6b250YWwgaDQsIC5iZy15ZWxsb3ctaG9yaXpvbnRhbCAuZmwtaGVhZGluZy10ZXh0IHtcbiAgICBjb2xvcjogIzMzMzQzMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLnNpZGViYXIgLmJnLW1lZGl1bSB7XG4gIGJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNSkgNnB4IDZweCAwcHg7IH1cbiAgLnNpZGViYXIgLmJnLW1lZGl1bSAuYmctbWVkaXVtIHtcbiAgICBib3gtc2hhZG93OiBub25lOyB9XG5cbi8qXG4gKiBCdXR0b25zXG4gKi9cbi5idXR0b24ucHJpbWFyeSwgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAucHJpbWFyeS5mbC1idXR0b24ge1xuICBiYWNrZ3JvdW5kOiAjMzMzNDMxO1xuICBjb2xvcjogI2ZmZjsgfVxuXG4uYnV0dG9uLnNlY29uZGFyeSwgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuc2Vjb25kYXJ5LmZsLWJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6ICNGOUY5Rjk7XG4gIGNvbG9yOiAjMzMzNDMxOyB9XG5cbi5idXR0b24ub3V0bGluZSwgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAub3V0bGluZS5mbC1idXR0b24ge1xuICBib3JkZXI6IDFweCBzb2xpZCAjMzMzNDMxO1xuICBjb2xvcjogIzMzMzQzMTsgfVxuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IFwiZ2FyYW1vbmQtcHJlbWllci1wcm9cIixzZXJpZjtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjkuMTI0cHg7IH1cblxucCxcbm9sLFxubGksXG4uZW50cnktY29udGVudCBvbCxcbi5lbnRyeS1jb250ZW50IHAsXG4uZW50cnktY29udGVudCB1bCxcbi5xdW90ZS1jYXB0aW9uIHtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjkuMTI0cHg7XG4gIGZvbnQtZmFtaWx5OiBcImdhcmFtb25kLXByZW1pZXItcHJvXCIsc2VyaWY7IH1cblxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gIGZvbnQtZmFtaWx5OiBcImRpbi1jb25kZW5zZWQtd2ViXCIsc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuICBoMWEsIGgyYSwgaDNhLCBoNGEsIGg1YSwgaDZhIHtcbiAgICBmb250LWZhbWlseTogXCJkaW4tY29uZGVuc2VkLXdlYlwiLHNhbnMtc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG5oMSxcbmgxLmVudHJ5LXRpdGxlIHtcbiAgZm9udC1zaXplOiA2M3B4O1xuICBsaW5lLWhlaWdodDogNTguMjQ4cHg7XG4gIG1hcmdpbjogMCAwIDI5LjEyNHB4OyB9XG5cbmgyIHtcbiAgZm9udC1zaXplOiA0N3B4O1xuICBsaW5lLWhlaWdodDogNTguMjQ4cHg7XG4gIG1hcmdpbjogMCAwIDI5LjEyNHB4OyB9XG5cbmgzIHtcbiAgZm9udC1zaXplOiAyOXB4O1xuICBsaW5lLWhlaWdodDogMjkuMTI0cHg7XG4gIG1hcmdpbjogMCAwIDI5LjEyNHB4OyB9XG5cbmg0IHtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBsaW5lLWhlaWdodDogMjkuMTI0cHg7XG4gIG1hcmdpbjogMDsgfVxuXG5wIHtcbiAgbWFyZ2luOiAwIDAgMjkuMTI0cHg7IH1cblxuLmJ1dHRvbiwgYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuZmwtYnV0dG9uLFxuYm9keS5hZ2VuY3ktcHJvLW9yYW5nZSAuYnV0dG9uLCBib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5mbC1idXR0b24ge1xuICBmb250LWZhbWlseTogXCJkaW4tY29uZGVuc2VkLXdlYlwiLHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI5LjEyNHB4O1xuICBwYWRkaW5nOiA3LjI4MXB4IDIxLjg0M3B4O1xuICBtYXJnaW46IDIxLjg0M3B4IDA7IH1cblxuLyogUmVzcG9uc2l2ZSBNZW51XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi5yZXNwb25zaXZlLW1lbnUtaWNvbiB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogbm9uZTtcbiAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIC5yZXNwb25zaXZlLW1lbnUtaWNvbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwi7qCRXCI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkICFpbXBvcnRhbnQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZSAhaW1wb3J0YW50O1xuICAgIHNwZWFrOiBub25lO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1mYW1pbHk6IFwiZW50eXBvXCI7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMjlweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiA1cHg7IH1cblxuLm5hdi1wcmltYXJ5IC5yZXNwb25zaXZlLW1lbnUtaWNvbjo6YmVmb3JlIHtcbiAgY29sb3I6ICNmZmY7IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgPiAubWVudS1pdGVtID4gLnN1Yi1tZW51LFxuICAuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUge1xuICAgIGRpc3BsYXk6IG5vbmU7IH1cbiAgLmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IC5tZW51LWl0ZW0sXG4gIC5yZXNwb25zaXZlLW1lbnUtaWNvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7IH1cbiAgLmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IC5tZW51LWl0ZW0ge1xuICAgIG1hcmdpbjogMDsgfVxuICAuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgLm1lbnUtaXRlbTpob3ZlciB7XG4gICAgcG9zaXRpb246IHN0YXRpYzsgfVxuICAuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgLmN1cnJlbnQtbWVudS1pdGVtID4gYSxcbiAgLmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IC5zdWItbWVudSAuY3VycmVudC1tZW51LWl0ZW0gPiBhOmhvdmVyLFxuICAuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgYSxcbiAgLmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IGE6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgcGFkZGluZzogMTZweCAyMHB4OyB9XG4gIC5uYXYtcHJpbWFyeSAuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgLmN1cnJlbnQtbWVudS1pdGVtID4gYSxcbiAgLm5hdi1wcmltYXJ5IC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAuc3ViLW1lbnUgLmN1cnJlbnQtbWVudS1pdGVtID4gYTpob3ZlcixcbiAgLm5hdi1wcmltYXJ5IC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSBhLFxuICAubmF2LXByaW1hcnkgLmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IGE6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmOyB9XG4gIC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyOyB9XG4gIC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiA+IGEge1xuICAgIG1hcmdpbi1yaWdodDogNjBweDsgfVxuICAuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgPiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwi7qGzXCI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkICFpbXBvcnRhbnQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZSAhaW1wb3J0YW50O1xuICAgIHNwZWFrOiBub25lO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1mYW1pbHk6IFwiZW50eXBvXCI7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMjlweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtM3B4O1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgcmlnaHQ6IDA7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgei1pbmRleDogOTk5OTtcbiAgICBjb2xvcjogYmxhY2s7IH1cbiAgLmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IC5tZW51LW9wZW4ubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwi7qG2XCI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkICFpbXBvcnRhbnQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZSAhaW1wb3J0YW50O1xuICAgIHNwZWFrOiBub25lO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1mYW1pbHk6IFwiZW50eXBvXCI7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMjlweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtM3B4OyB9XG4gIC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAuc3ViLW1lbnUge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgcGFkZGluZy1sZWZ0OiAyNXB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgLjRzIGVhc2UtaW4tb3V0O1xuICAgIC1tcy10cmFuc2l0aW9uOiBvcGFjaXR5IC40cyBlYXNlLWluLW91dDtcbiAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IC40cyBlYXNlLWluLW91dDtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgLjRzIGVhc2UtaW4tb3V0O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjRzIGVhc2UtaW4tb3V0O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDk5OyB9XG4gIC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAuc3ViLW1lbnUgLnN1Yi1tZW51IHtcbiAgICBtYXJnaW46IDA7IH1cbiAgLmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IC5zdWItbWVudSAuY3VycmVudC1tZW51LWl0ZW0gPiBhOmhvdmVyLFxuICAuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgLnN1Yi1tZW51IGxpIGEsXG4gIC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAuc3ViLW1lbnUgbGkgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMTJweCAyMHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTsgfSB9XG5cbi5zaXRlLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNzM3MzU7IH1cblxuLmdlbmVzaXMtbmF2LW1lbnUgYSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI5LjEyNHB4O1xuICBwYWRkaW5nOiAxNC41NjJweCAxNC41NjJweDsgfVxuXG4uZ2VuZXNpcy1uYXYtbWVudSAuc3ViLW1lbnUgYSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI5LjEyNHB4OyB9XG5cbi5zaXRlLWZvb3RlciB7XG4gIGJhY2tncm91bmQ6ICM4Njg0Nzc7XG4gIHBhZGRpbmc6IDE0LjU2MnB4OyB9XG4gIC5zaXRlLWZvb3RlciBwIHtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDI5LjEyNHB4O1xuICAgIGNvbG9yOiAjNTA0ZjQ3O1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxldHRlci1zcGFjaW5nOiAxcHg7IH1cbiAgICAuc2l0ZS1mb290ZXIgcCBhIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgY29sb3I6ICMzNTM0MmYgIWltcG9ydGFudDsgfVxuXG4uZm9vdGVyLXdpZGdldHMge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gIGJvcmRlci10b3A6IG5vbmU7XG4gIHBhZGRpbmc6IDMwcHggMCAwOyB9XG4gIC5mb290ZXItd2lkZ2V0cyAuZm9vdGVyLXdpZGdldHMtMSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiAwOyB9XG5cbi5zaXRlLWNvbnRhaW5lciB7XG4gIHBhZGRpbmctdG9wOiA4Ny4zNzJweDsgfVxuXG4uc2l0ZS1pbm5lciB7XG4gIHBhZGRpbmc6IDExNi40OTZweCAwOyB9XG5cbi5jb250ZW50IHtcbiAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM1KSA2cHggNnB4IDBweDsgfVxuXG4uYmctbWVkaXVtIC5mZXN0aXZhbC1uYW1lIHtcbiAgZm9udC1mYW1pbHk6IFwiZGluLWNvbmRlbnNlZC13ZWJcIixzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LXNpemU6IDM5cHg7XG4gIGxpbmUtaGVpZ2h0OiA1OC4yNDhweDtcbiAgbGluZS1oZWlnaHQ6IDQzLjY4NnB4OyB9XG5cbi5iZy1tZWRpdW0gLndlZWtlbmQtbmFtZSB7XG4gIGZvbnQtZmFtaWx5OiBcImRpbi1jb25kZW5zZWQtd2ViXCIsc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBsaW5lLWhlaWdodDogMjkuMTI0cHg7XG4gIG1hcmdpbjogMTQuNTYycHggMDsgfVxuXG4uYmctbWVkaXVtIC5mZXN0aXZhbC1kYXRlcyB7XG4gIGZvbnQtZmFtaWx5OiBcImRpbi1jb25kZW5zZWQtd2ViXCIsc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBsaW5lLWhlaWdodDogMjkuMTI0cHg7XG4gIG1hcmdpbjogMTQuNTYycHggMDsgfVxuXG4vKlxuICogUGFnZSBCdWlsZGVyXG4gKiAoQmVhdmVyIGJ1aWxkZXIpIC0gZGVmYXVsdCBzdHlsaW5nXG4gKi9cbi5mbC1idWlsZGVyIC5lbnRyeSB7XG4gIHBhZGRpbmc6IDA7IH1cbiAgLmZsLWJ1aWxkZXIgLmVudHJ5IC5lbnRyeS1oZWFkZXIsXG4gIC5mbC1idWlsZGVyIC5lbnRyeSAuZW50cnktZm9vdGVyIHtcbiAgICBwYWRkaW5nOiAyOS4xMjRweCA1OC4yNDhweCAwOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuZmwtYnVpbGRlciAuc2l0ZS1pbm5lciB7XG4gICAgcGFkZGluZzogMDsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuZmwtYnVpbGRlciAuc2l0ZS1pbm5lciB7XG4gICAgcGFkZGluZzogMDsgfSB9XG5cbi5mbC1yb3ctY29udGVudCB7XG4gIHBhZGRpbmc6IDI5LjEyNHB4IDU4LjI0OHB4OyB9XG5cbi5mbC1jb2wtY29udGVudCB7XG4gIG1hcmdpbjogMCAyOS4xMjRweDtcbiAgcGFkZGluZy10b3A6IDE0LjU2MnB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTQuNTYycHg7IH1cblxuLmZsLWNvbC1ncm91cCB7XG4gIG1hcmdpbi1sZWZ0OiAtMjkuMTI0cHg7XG4gIG1hcmdpbi1yaWdodDogLTI5LjEyNHB4OyB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC5mbC1jb2wtZ3JvdXAge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7IH0gfVxuXG4ubm8tcm93LW1hcmdpbiAuZmwtcm93LWNvbnRlbnQge1xuICBwYWRkaW5nOiAwIDU4LjI0OHB4OyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuZmwtY29sLXNtYWxsIHtcbiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfSB9XG5cbi5jb250ZW50LXNpZGViYXIgLmZsLXJvdy1jb250ZW50LFxuLmNvbnRlbnQtc2lkZWJhciAuZmwtY29sLWNvbnRlbnQsXG4uc2lkZWJhci1jb250ZW50IC5mbC1yb3ctY29udGVudCxcbi5zaWRlYmFyLWNvbnRlbnQgLmZsLWNvbC1jb250ZW50LFxuLmNvbnRlbnQtc2lkZWJhci1zaWRlYmFyIC5mbC1yb3ctY29udGVudCxcbi5jb250ZW50LXNpZGViYXItc2lkZWJhciAuZmwtY29sLWNvbnRlbnQsXG4uc2lkZWJhci1jb250ZW50LXNpZGViYXIgLmZsLXJvdy1jb250ZW50LFxuLnNpZGViYXItY29udGVudC1zaWRlYmFyIC5mbC1jb2wtY29udGVudCxcbi5zaWRlYmFyLXNpZGViYXItY29udGVudCAuZmwtcm93LWNvbnRlbnQsXG4uc2lkZWJhci1zaWRlYmFyLWNvbnRlbnQgLmZsLWNvbC1jb250ZW50IHtcbiAgcGFkZGluZy10b3A6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAwOyB9XG5cbi5jb250ZW50LXNpZGViYXIgLmZsLXJvdy5wYWRkaW5nIC5mbC1yb3ctY29udGVudCxcbi5zaWRlYmFyLWNvbnRlbnQgLmZsLXJvdy5wYWRkaW5nIC5mbC1yb3ctY29udGVudCxcbi5jb250ZW50LXNpZGViYXItc2lkZWJhciAuZmwtcm93LnBhZGRpbmcgLmZsLXJvdy1jb250ZW50LFxuLnNpZGViYXItY29udGVudC1zaWRlYmFyIC5mbC1yb3cucGFkZGluZyAuZmwtcm93LWNvbnRlbnQsXG4uc2lkZWJhci1zaWRlYmFyLWNvbnRlbnQgLmZsLXJvdy5wYWRkaW5nIC5mbC1yb3ctY29udGVudCB7XG4gIHBhZGRpbmc6IDU4LjI0OHB4OyB9XG5cbi5mbC1jb2wucGFkZGluZyAuZmwtY29sLWNvbnRlbnQge1xuICBwYWRkaW5nOiAyOS4xMjRweDsgfVxuXG4uYmcteWVsbG93IC5mbC1jb2wtY29udGVudCB7XG4gIG1hcmdpbjogMCAyOS4xMjRweDsgfVxuXG4uZWRnZS10by1lZGdlIC5mbC1yb3ctY29udGVudCxcbi5lZGdlLXRvLWVkZ2UgLmZsLWNvbC1jb250ZW50IHtcbiAgcGFkZGluZzogMDsgfVxuXG4ucGFnZS10ZW1wbGF0ZS1wYWdlX2J1aWxkZXIgLnNpdGUtaW5uZXIgLmVudHJ5LFxuLnBhZ2UtdGVtcGxhdGUtcGFnZV9sYW5kaW5nIC5zaXRlLWlubmVyIC5lbnRyeSB7XG4gIG1hcmdpbi1ib3R0b206IDA7IH1cblxuLyoqXG4gKiBGb3IgbW9kZXJuIGJyb3dzZXJzXG4gKiAxLiBUaGUgc3BhY2UgY29udGVudCBpcyBvbmUgd2F5IHRvIGF2b2lkIGFuIE9wZXJhIGJ1ZyB3aGVuIHRoZVxuICogICAgY29udGVudGVkaXRhYmxlIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBhbnl3aGVyZSBlbHNlIGluIHRoZSBkb2N1bWVudC5cbiAqICAgIE90aGVyd2lzZSBpdCBjYXVzZXMgc3BhY2UgdG8gYXBwZWFyIGF0IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiBlbGVtZW50c1xuICogICAgdGhhdCBhcmUgY2xlYXJmaXhlZC5cbiAqIDIuIFRoZSB1c2Ugb2YgYHRhYmxlYCByYXRoZXIgdGhhbiBgYmxvY2tgIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHVzaW5nXG4gKiAgICBgOmJlZm9yZWAgdG8gY29udGFpbiB0aGUgdG9wLW1hcmdpbnMgb2YgY2hpbGQgZWxlbWVudHMuXG4gKi9cbi5jZjpiZWZvcmUsXG4uY2Y6YWZ0ZXIge1xuICBjb250ZW50OiBcIiBcIjtcbiAgLyogMSAqL1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgLyogMiAqLyB9XG5cbi5jZjphZnRlciB7XG4gIGNsZWFyOiBib3RoOyB9XG5cbi8qKlxuICogRm9yIElFIDYvNyBvbmx5XG4gKiBJbmNsdWRlIHRoaXMgcnVsZSB0byB0cmlnZ2VyIGhhc0xheW91dCBhbmQgY29udGFpbiBmbG9hdHMuXG4gKi9cbi5jZiB7XG4gICp6b29tOiAxOyB9XG5cbi8qKlxuICogSWNvbiBGb250c1xuICovXG4ucGhvbmUtbnVtYmVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDsgfVxuICAucGhvbmUtbnVtYmVyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCLuoZRcIjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5ICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQgIWltcG9ydGFudDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlICFpbXBvcnRhbnQ7XG4gICAgc3BlYWs6IG5vbmU7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LWZhbWlseTogXCJlbnR5cG9cIjtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAxcHg7XG4gICAgbWFyZ2luLWxlZnQ6IDJweDsgfVxuXG4ubW9iaWxlLW51bWJlciB7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7IH1cbiAgLm1vYmlsZS1udW1iZXI6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIu6irFwiO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZCAhaW1wb3J0YW50O1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGUgIWltcG9ydGFudDtcbiAgICBzcGVhazogbm9uZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtZmFtaWx5OiBcImVudHlwb1wiO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAxcHg7XG4gICAgbWFyZ2luLWxlZnQ6IDNweDsgfVxuXG4uYWRkcmVzcy1mdWxsIHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDsgfVxuICAuYWRkcmVzcy1mdWxsOmJlZm9yZSB7XG4gICAgY29udGVudDogXCLuoYFcIjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5ICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQgIWltcG9ydGFudDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlICFpbXBvcnRhbnQ7XG4gICAgc3BlYWs6IG5vbmU7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LWZhbWlseTogXCJlbnR5cG9cIjtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAwO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5hZGRyZXNzLWZ1bGwgLnN0cmVldC1hZGRyZXNzLXdyYXAsXG4gIC5hZGRyZXNzLWZ1bGwgLmNpdHktcG9zdGNvZGUge1xuICAgIHBhZGRpbmctbGVmdDogMjVweDsgfVxuXG4uc29jaWFsLW5ldHdvcmstbGluayB7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7IH1cbiAgLnNvY2lhbC1uZXR3b3JrLWxpbmsuZmFjZWJvb2s6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIu6jtVwiO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZCAhaW1wb3J0YW50O1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGUgIWltcG9ydGFudDtcbiAgICBzcGVhazogbm9uZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtZmFtaWx5OiBcImVudHlwb1wiO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIG1hcmdpbi1yaWdodDogN3B4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDFweDtcbiAgICBjb2xvcjogIzNiNTk5ODsgfVxuXG4uY29udGFjdC11cy1wYWdlLWNvbnRlbnQge1xuICBtYXJnaW4tdG9wOiAxOHB4OyB9XG5cbi5tdXNpY2lhbiB7XG4gIG1hcmdpbi1ib3R0b206IDI5LjEyNHB4OyB9XG4gIC5tdXNpY2lhbiBoMyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuICAubXVzaWNpYW4gLmRldGFpbHMge1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBsaW5lLWhlaWdodDogMjkuMTI0cHg7XG4gICAgcGFkZGluZzogNy4yODFweDtcbiAgICBiYWNrZ3JvdW5kOiAjZGFkOWQ1OyB9XG4gIC5tdXNpY2lhbiAubXVzaWNpYW4taW1hZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gICAgLm11c2ljaWFuIC5tdXNpY2lhbi1pbWFnZSBpbWcge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgbWFyZ2luLWJvdHRvbTogLTEwcHg7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gIC5tdXNpY2lhbi5mZWF0dXJlZCAubXVzaWNpYW4taW1hZ2U6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICdGZWF0dXJlZCc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGNvbG9yOiAjMzMzNDMxO1xuICAgIHRvcDogMTVweDtcbiAgICByaWdodDogLTM1cHg7XG4gICAgei1pbmRleDogOTtcbiAgICBiYWNrZ3JvdW5kOiAjRkRDMTM1O1xuICAgIHBhZGRpbmc6IDBweCA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyOS4xMjRweDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7IH1cbiAgLm11c2ljaWFuIGgzLCAubXVzaWNpYW4gLmRldGFpbHMge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLm11c2ljaWFucy1saXN0IC5tdXNpY2lhbiB7XG4gICAgd2lkdGg6IDIzLjQwNDI2JTtcbiAgICBmbG9hdDogbGVmdDsgfVxuICAgIC5tdXNpY2lhbnMtbGlzdCAubXVzaWNpYW46bnRoLWNoaWxkKDRuICsgMSkge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICBtYXJnaW4tbGVmdDogMDsgfVxuICAgIC5tdXNpY2lhbnMtbGlzdCAubXVzaWNpYW46bnRoLWNoaWxkKDRuICsgMikge1xuICAgICAgbWFyZ2luLWxlZnQ6IDI1LjUzMTkxJTtcbiAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICBjbGVhcjogbm9uZTsgfVxuICAgIC5tdXNpY2lhbnMtbGlzdCAubXVzaWNpYW46bnRoLWNoaWxkKDRuICsgMykge1xuICAgICAgbWFyZ2luLWxlZnQ6IDUxLjA2MzgzJTtcbiAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICBjbGVhcjogbm9uZTsgfVxuICAgIC5tdXNpY2lhbnMtbGlzdCAubXVzaWNpYW46bnRoLWNoaWxkKDRuICsgNCkge1xuICAgICAgbWFyZ2luLWxlZnQ6IDc2LjU5NTc0JTtcbiAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICBjbGVhcjogbm9uZTsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubXVzaWNpYW5zLXBhZ2UgLmltYWdlLXBsdXMtZGV0YWlscyB7XG4gICAgd2lkdGg6IDQwLjQyNTUzJTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIuMTI3NjYlOyB9XG4gIC5tdXNpY2lhbnMtcGFnZSAuYmlvIHtcbiAgICB3aWR0aDogNTcuNDQ2ODElO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAxNC41NjJweDsgfSB9XG5cbi5tdXNpY2lhbnMtcGFnZSAubXVzaWNpYW4td3JhcCB7XG4gICp6b29tOiAxO1xuICBwYWRkaW5nLWJvdHRvbTogMjkuMTI0cHg7IH1cbiAgLm11c2ljaWFucy1wYWdlIC5tdXNpY2lhbi13cmFwOmJlZm9yZSwgLm11c2ljaWFucy1wYWdlIC5tdXNpY2lhbi13cmFwOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiBcIjtcbiAgICAvKiAxICovXG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgLyogMiAqLyB9XG4gIC5tdXNpY2lhbnMtcGFnZSAubXVzaWNpYW4td3JhcDphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7IH1cblxuLmluc3RydW1lbnQtdHV0b3JzLWxpbmsge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjMDE4OTlDO1xuICBwYWRkaW5nOiAwIDcuMjgxcHg7IH1cbiAgLmluc3RydW1lbnQtdHV0b3JzLWxpbms6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctbGVmdDogMDsgfVxuICAuaW5zdHJ1bWVudC10dXRvcnMtbGluazpsYXN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIGJvcmRlci1yaWdodDogMHB4OyB9XG5cbi8qXG4gKiBTaXRlIEN1c3RvbSBTQVNTIHN0YXJ0cyBoZXJlLi4uXG4gKi9cbiIsIi8vIFNhc3MgaW50ZWdyYXRpb24gZm9yIEVudHlwbyB2Mi4wXG4vLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3RhY3J1ei9zYXNzX2ljb25fZm9udHNcbi8vXG4vLyBXZWJzaXRlOiBodHRwOi8vd3d3LmVudHlwby5jb20vXG4vL1xuLy8gRm9udCBmaWxlczpcbi8vICAgaHR0cDovL3d3dy5lbnR5cG8uY29tL2Nzcy9lbnR5cG8uZW90XG4vLyAgIGh0dHA6Ly93d3cuZW50eXBvLmNvbS9jc3MvZW50eXBvLnN2Z1xuLy8gICBodHRwOi8vd3d3LmVudHlwby5jb20vY3NzL2VudHlwby53b2ZmXG4vLyAgIGh0dHA6Ly93d3cuZW50eXBvLmNvbS9jc3MvZW50eXBvLnR0ZlxuXG4kZW4tcGF0aDogXCJlbnR5cG8tcGx1c1wiICFkZWZhdWx0O1xuXG5AbWl4aW4gZW4tZm9udCB7XG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiBcImVudHlwb1wiO1xuICAgIHNyYzogdXJsKFwiI3skZW4tcGF0aH0uZW90XCIpO1xuICAgIHNyYzogdXJsKFwiI3skZW4tcGF0aH0uZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSwgdXJsKFwiI3skZW4tcGF0aH0ud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIjeyRlbi1wYXRofS50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksIHVybChcIiN7JGVuLXBhdGh9LnN2ZyNlbnR5cG9cIikgZm9ybWF0KFwic3ZnXCIpO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIHNwZWFrOiBub25lO1xuICB9XG59XG4gXG4vLyBMaXN0IG9mIHVuaWNvZGUgY2hhcmFjdGVycyBmb3IgZW50eXBvIGljb25zXG4kaWNvbnM6IChcbiAgIFx0J3BsdXMnXHRcdFx0XHQnXFxlODE2Jyxcblx0J21pbnVzJ1x0XHRcdFx0J1xcZTgxOScsXG5cdCdpbmZvJ1x0XHRcdFx0J1xcZTgxZScsXG5cdCdsZWZ0LXRoaW4nXHRcdFx0J1xcZTg4YycsXG5cdCd1cC10aGluJ1x0XHRcdCdcXGU4OGUnLFxuXHQncmlnaHQtdGhpbidcdFx0J1xcZTg4ZCcsXG5cdCdkb3duLXRoaW4nXHRcdFx0J1xcZTg4YicsXG5cdCdsZXZlbC11cCdcdFx0XHQnXFxlODkzJyxcblx0J2xldmVsLWRvd24nXHRcdCdcXGU4OTInLFxuXHQnc3dpdGNoJ1x0XHRcdCdcXGU4OTYnLFxuXHQnaW5maW5pdHknXHRcdFx0J1xcZThjMicsXG5cdCdwbHVzLXNxdWFyZWQnXHRcdCdcXGU4MTgnLFxuXHQnbWludXMtc3F1YXJlZCdcdFx0J1xcZTgxYicsXG5cdCdob21lJ1x0XHRcdFx0J1xcZTgyMScsXG5cdCdrZXlib2FyZCdcdFx0XHQnXFxlODNhJyxcblx0J2VyYXNlJ1x0XHRcdFx0J1xcZThjMycsXG5cdCdwYXVzZSdcdFx0XHRcdCdcXGU4OTknLFxuXHQnZmFzdC1mb3J3YXJkJ1x0XHQnXFxlODlkJyxcblx0J2Zhc3QtYmFja3dhcmQnXHRcdCdcXGU4OWUnLFxuXHQndG8tZW5kJ1x0XHRcdCdcXGU4OWInLFxuXHQndG8tc3RhcnQnXHRcdFx0J1xcZTg5YycsXG5cdCdob3VyZ2xhc3MnXHRcdFx0J1xcZTg2MycsXG5cdCdzdG9wJ1x0XHRcdFx0J1xcZTg5OCcsXG5cdCd1cC1kaXInXHRcdFx0J1xcZTg4NicsXG5cdCdwbGF5J1x0XHRcdFx0J1xcZTg5NycsXG5cdCdyaWdodC1kaXInXHRcdFx0J1xcZTg4NScsXG5cdCdkb3duLWRpcidcdFx0XHQnXFxlODgzJyxcblx0J2xlZnQtZGlyJ1x0XHRcdCdcXGU4ODQnLFxuXHQnYWRqdXN0J1x0XHRcdCdcXGU4NjcnLFxuXHQnY2xvdWQnXHRcdFx0XHQnXFxlOGIyJyxcblx0J3N0YXInXHRcdFx0XHQnXFxlODA4Jyxcblx0J3N0YXItZW1wdHknXHRcdCdcXGU4MDknLFxuXHQnY3VwJ1x0XHRcdFx0J1xcZTg0NicsXG5cdCdtZW51J1x0XHRcdFx0J1xcZTgxMScsXG5cdCdtb29uJ1x0XHRcdFx0J1xcZThiNScsXG5cdCdoZWFydC1lbXB0eSdcdFx0J1xcZTgwNycsXG5cdCdoZWFydCdcdFx0XHRcdCdcXGU4MDYnLFxuXHQnbm90ZSdcdFx0XHRcdCdcXGU4MDAnLFxuXHQnbm90ZS1iZWFtZWQnXHRcdCdcXGU4MDEnLFxuXHQnbGF5b3V0J1x0XHRcdCdcXGU4MTAnLFxuXHQnZmxhZydcdFx0XHRcdCdcXGU4MmEnLFxuXHQndG9vbHMnXHRcdFx0XHQnXFxlODU2Jyxcblx0J2NvZydcdFx0XHRcdCdcXGU4NTUnLFxuXHQnYXR0ZW50aW9uJ1x0XHRcdCdcXGU4M2UnLFxuXHQnZmxhc2gnXHRcdFx0XHQnXFxlOGI0Jyxcblx0J3JlY29yZCdcdFx0XHQnXFxlODlhJyxcblx0J2Nsb3VkLXRodW5kZXInXHRcdCdcXGU4YjMnLFxuXHQndGFwZSdcdFx0XHRcdCdcXGU4YzgnLFxuXHQnZmxpZ2h0J1x0XHRcdCdcXGU4YjYnLFxuXHQnbWFpbCdcdFx0XHRcdCdcXGU4MDUnLFxuXHQncGVuY2lsJ1x0XHRcdCdcXGU4MzYnLFxuXHQnZmVhdGhlcidcdFx0XHQnXFxlODM3Jyxcblx0J2NoZWNrJ1x0XHRcdFx0J1xcZTgxMicsXG5cdCdjYW5jZWwnXHRcdFx0J1xcZTgxMycsXG5cdCdjYW5jZWwtY2lyY2xlZCdcdCdcXGU4MTQnLFxuXHQnY2FuY2VsLXNxdWFyZWQnXHQnXFxlODE1Jyxcblx0J2hlbHAnXHRcdFx0XHQnXFxlODFjJyxcblx0J3F1b3RlJ1x0XHRcdFx0J1xcZTgzMycsXG5cdCdwbHVzLWNpcmNsZWQnXHRcdCdcXGU4MTcnLFxuXHQnbWludXMtY2lyY2xlZCdcdFx0J1xcZTgxYScsXG5cdCdyaWdodCdcdFx0XHRcdCdcXGU4ODEnLFxuXHQnZGlyZWN0aW9uJ1x0XHRcdCdcXGU4NDQnLFxuXHQnZm9yd2FyZCdcdFx0XHQnXFxlODMyJyxcblx0J2NjdydcdFx0XHRcdCdcXGU4OGYnLFxuXHQnY3cnXHRcdFx0XHQnXFxlODkwJyxcblx0J2xlZnQnXHRcdFx0XHQnXFxlODgwJyxcblx0J3VwJ1x0XHRcdFx0J1xcZTg4MicsXG5cdCdkb3duJ1x0XHRcdFx0J1xcZTg3ZicsXG5cdCdsaXN0LWFkZCdcdFx0XHQnXFxlOGE2Jyxcblx0J2xpc3QnXHRcdFx0XHQnXFxlOGE1Jyxcblx0J2xlZnQtYm9sZCdcdFx0XHQnXFxlODg4Jyxcblx0J3JpZ2h0LWJvbGQnXHRcdCdcXGU4ODknLFxuXHQndXAtYm9sZCdcdFx0XHQnXFxlODhhJyxcblx0J2Rvd24tYm9sZCdcdFx0XHQnXFxlODg3Jyxcblx0J3VzZXItYWRkJ1x0XHRcdCdcXGU4MGMnLFxuXHQnaGVscC1jaXJjbGVkJ1x0XHQnXFxlODFkJyxcblx0J2luZm8tY2lyY2xlZCdcdFx0J1xcZTgxZicsXG5cdCdleWUnXHRcdFx0XHQnXFxlODI2Jyxcblx0J3RhZydcdFx0XHRcdCdcXGU4MjcnLFxuXHQndXBsb2FkLWNsb3VkJ1x0XHQnXFxlODJmJyxcblx0J3JlcGx5J1x0XHRcdFx0J1xcZTgzMCcsXG5cdCdyZXBseS1hbGwnXHRcdFx0J1xcZTgzMScsXG5cdCdjb2RlJ1x0XHRcdFx0J1xcZTgzNCcsXG5cdCdleHBvcnQnXHRcdFx0J1xcZTgzNScsXG5cdCdwcmludCdcdFx0XHRcdCdcXGU4MzgnLFxuXHQncmV0d2VldCdcdFx0XHQnXFxlODM5Jyxcblx0J2NvbW1lbnQnXHRcdFx0J1xcZTgzYicsXG5cdCdjaGF0J1x0XHRcdFx0J1xcZTgzYycsXG5cdCd2Y2FyZCdcdFx0XHRcdCdcXGU4NDAnLFxuXHQnYWRkcmVzcydcdFx0XHQnXFxlODQxJyxcblx0J2xvY2F0aW9uJ1x0XHRcdCdcXGU4NDInLFxuXHQnbWFwJ1x0XHRcdFx0J1xcZTg0MycsXG5cdCdjb21wYXNzJ1x0XHRcdCdcXGU4NDUnLFxuXHQndHJhc2gnXHRcdFx0XHQnXFxlODQ3Jyxcblx0J2RvYydcdFx0XHRcdCdcXGU4NDgnLFxuXHQnZG9jLXRleHQtaW52J1x0XHQnXFxlODRjJyxcblx0J2RvY3MnXHRcdFx0XHQnXFxlODQ5Jyxcblx0J2RvYy1sYW5kc2NhcGUnXHRcdCdcXGU4NGEnLFxuXHQnYXJjaGl2ZSdcdFx0XHQnXFxlODUxJyxcblx0J3JzcydcdFx0XHRcdCdcXGU4NTMnLFxuXHQnc2hhcmUnXHRcdFx0XHQnXFxlODU3Jyxcblx0J2Jhc2tldCdcdFx0XHQnXFxlODU5Jyxcblx0J3NoYXJlYWJsZSdcdFx0XHQnXFxlODU4Jyxcblx0J2xvZ2luJ1x0XHRcdFx0J1xcZTg1YycsXG5cdCdsb2dvdXQnXHRcdFx0J1xcZTg1ZCcsXG5cdCd2b2x1bWUnXHRcdFx0J1xcZTg2MScsXG5cdCdyZXNpemUtZnVsbCdcdFx0J1xcZTg2OScsXG5cdCdyZXNpemUtc21hbGwnXHRcdCdcXGU4NmEnLFxuXHQncG9wdXAnXHRcdFx0XHQnXFxlODZiJyxcblx0J3B1Ymxpc2gnXHRcdFx0J1xcZTg2YycsXG5cdCd3aW5kb3c6J1x0XHRcdCdcXGU4NmQnLFxuXHQnYXJyb3ctY29tYm8nXHRcdCdcXGU4NmUnLFxuXHQnY2hhcnQtcGllJ1x0XHRcdCdcXGU4YzQnLFxuXHQnbGFuZ3VhZ2UnXHRcdFx0J1xcZThjYScsXG5cdCdhaXInXHRcdFx0XHQnXFxlOGNlJyxcblx0J2RhdGFiYXNlJ1x0XHRcdCdcXGU4ZDMnLFxuXHQnZHJpdmUnXHRcdFx0XHQnXFxlOGQ0Jyxcblx0J2J1Y2tldCdcdFx0XHQnXFxlOGQ1Jyxcblx0J3RoZXJtb21ldGVyJ1x0XHQnXFxlOGQ2Jyxcblx0J2Rvd24tY2lyY2xlZCdcdFx0J1xcZTg2ZicsXG5cdCdsZWZ0LWNpcmNsZWQnXHRcdCdcXGU4NzAnLFxuXHQncmlnaHQtY2lyY2xlZCdcdFx0J1xcZTg3MScsXG5cdCd1cC1jaXJjbGVkJ1x0XHQnXFxlODcyJyxcblx0J2Rvd24tb3BlbidcdFx0XHQnXFxlODczJyxcblx0J2xlZnQtb3BlbidcdFx0XHQnXFxlODc1Jyxcblx0J3JpZ2h0LW9wZW4nXHRcdCdcXGU4NzUnLFxuXHQndXAtb3BlbidcdFx0XHQnXFxlODc2Jyxcblx0J2Rvd24tb3Blbi1taW5pJ1x0J1xcZTg3NycsXG5cdCdsZWZ0LW9wZW4tbWluaSdcdCdcXGU4NzgnLFxuXHQncmlnaHQtb3Blbi1taW5pJ1x0J1xcZTg3OScsXG5cdCd1cC1vcGVuLW1pbmknXHRcdCdcXGU4N2EnLFxuXHQnZG93bi1vcGVuLWJpZydcdFx0J1xcZTg3YicsXG5cdCdsZWZ0LW9wZW4tYmlnJ1x0XHQnXFxlODdjJyxcblx0J3JpZ2h0LW9wZW4tYmlnJ1x0J1xcZTg3ZCcsXG5cdCd1cC1vcGVuLWJpZydcdFx0J1xcZTg3ZScsXG5cdCdwcm9ncmVzcy0wJ1x0XHQnXFxlODlmJyxcblx0J3Byb2dyZXNzLTEnXHRcdCdcXGU4YTAnLFxuXHQncHJvZ3Jlc3MtMidcdFx0J1xcZThhMScsXG5cdCdwcm9ncmVzcy0zJ1x0XHQnXFxlOGEyJyxcblx0J2JhY2staW4tdGltZSdcdFx0J1xcZThhYScsXG5cdCduZXR3b3JrJ1x0XHRcdCdcXGU4YWQnLFxuXHQnaW5ib3gnXHRcdFx0XHQnXFxlOGFmJyxcblx0J2luc3RhbGwnXHRcdFx0J1xcZThiMCcsXG5cdCdsaWZlYnVveSdcdFx0XHQnXFxlOGI5Jyxcblx0J21vdXNlJ1x0XHRcdFx0J1xcZThiYScsXG5cdCdkb3QnXHRcdFx0XHQnXFxlOGJkJyxcblx0J2RvdC0yJ1x0XHRcdFx0J1xcZThiZScsXG5cdCdkb3QtMydcdFx0XHRcdCdcXGU4YmYnLFxuXHQnc3VpdGNhc2UnXHRcdFx0J1xcZThiYycsXG5cdCdmbG93LWNhc2NhZGUnXHRcdCdcXGU4ZDgnLFxuXHQnZmxvdy1icmFuY2gnXHRcdCdcXGU4ZDknLFxuXHQnZmxvdy10cmVlJ1x0XHRcdCdcXGU4ZGEnLFxuXHQnZmxvdy1saW5lJ1x0XHRcdCdcXGU4ZGInLFxuXHQnZmxvdy1wYXJhbGxlbCdcdFx0J1xcZThkYycsXG5cdCdicnVzaCdcdFx0XHRcdCdcXGU4YzAnLFxuXHQncGFwZXItcGxhbmUnXHRcdCdcXGU4YjcnLFxuXHQnbWFnbmV0J1x0XHRcdCdcXGU4YzEnLFxuXHQnZ2F1Z2UnXHRcdFx0XHQnXFxlOGRlJyxcblx0J3RyYWZmaWMtY29uZSdcdFx0J1xcZThkZicsXG5cdCdjYydcdFx0XHRcdCdcXGU4ZTAnLFxuXHQnY2MtYnknXHRcdFx0XHQnXFxlOGUxJyxcblx0J2NjLW5jJ1x0XHRcdFx0J1xcZThlMicsXG5cdCdjYy1uYy1ldSdcdFx0XHQnXFxlOGUzJyxcblx0J2NjLW5jLWpwJ1x0XHRcdCdcXGU4ZTQnLFxuXHQnY2Mtc2EnXHRcdFx0XHQnXFxlOGU1Jyxcblx0J2NjLW5kJ1x0XHRcdFx0J1xcZThlNicsXG5cdCdjYy1wZCdcdFx0XHRcdCdcXGU4ZTcnLFxuXHQnY2MtemVybydcdFx0XHQnXFxlOGU4Jyxcblx0J2NjLXNoYXJlJ1x0XHRcdCdcXGU4ZTknLFxuXHQnY2MtcmVtaXgnXHRcdFx0J1xcZThlYScsXG5cdCdncGx1cy1zcXVhcmVkJ1x0XHQnXFxlOTIwJyxcblx0J2dwbHVzJ1x0XHRcdFx0J1xcZTkyMScsXG5cdCdhbmdsZS1kb3VibGUtbGVmdCdcdCdcXGU5MjcnLFxuXHQnYW5nbGUtZG91YmxlLXJpZ2h0JydcXGU5MjgnLFxuXHQnYW5nbGUtZG91YmxlLXVwJ1x0J1xcZTkyOScsXG5cdCdhbmdsZS1kb3VibGUtZG93bidcdCdcXGU5MmEnLFxuXHQnYW5nbGUtY2lyY2xlZC1sZWZ0JydcXGU5MmInLFxuXHQnYW5nbGUtY2lyY2xlZC1yaWdodCcnXFxlOTJjJyxcblx0J2FuZ2xlLWNpcmNsZWQtdXAnXHQnXFxlOTJkJyxcblx0J2FuZ2xlLWNpcmNsZWQtZG93bicnXFxlOTJlJyxcblx0J2h0bWw1J1x0XHRcdFx0J1xcZTkyNCcsXG5cdCdjc3MzJ1x0XHRcdFx0J1xcZTkyMicsXG5cdCd5b3V0dWJlLXNxdWFyZWQnXHQnXFxlOTFkJyxcblx0J3lvdXR1YmUnXHRcdFx0J1xcZTkxYycsXG5cdCdmbGlja3Itc3F1YXJlZCdcdCdcXGU5MjYnLFxuXHQnYml0YnVja2V0LXNxdWFyZWQnXHQnXFxlOTIzJyxcblx0J2dpdGh1YidcdFx0XHQnXFxlOGViJyxcblx0J2dpdGh1Yi1jaXJjbGVkJ1x0J1xcZThlYycsXG5cdCdmbGlja3InXHRcdFx0J1xcZThlZCcsXG5cdCd0d2l0dGVyLXNxdWFyZWQnXHQnXFxlOTFlJyxcblx0J2ZsaWNrci1jaXJjbGVkJ1x0J1xcZThlZScsXG5cdCd2aW1lbydcdFx0XHRcdCdcXGU4ZWYnLFxuXHQndmltZW8tY2lyY2xlZCdcdFx0J1xcZThmMCcsXG5cdCd0d2l0dGVyJ1x0XHRcdCdcXGU4ZjEnLFxuXHQndHdpdHRlci1jaXJjbGVkJ1x0J1xcZThmMicsXG5cdCdmYWNlYm9vaydcdFx0XHQnXFxlOGYzJyxcblx0J2ZhY2Vib29rLWNpcmNsZWQnXHQnXFxlOGY0Jyxcblx0J2ZhY2Vib29rLXNxdWFyZWQnXHQnXFxlOGY1Jyxcblx0J2xpbmtlZGluLXNxdWFyZWQnXHQnXFxlOTFmJyxcblx0J2dwbHVzLWNpcmNsZWQnXHRcdCdcXGU4ZjcnLFxuXHQncGludGVyZXN0J1x0XHRcdCdcXGU4ZjgnLFxuXHQncGludGVyZXN0LWNpcmNsZWQnXHQnXFxlOGY5Jyxcblx0J2ljb24tdHVtYmxyJ1x0XHQnXFxlOGZhJyxcblx0J3R1bWJsci1jaXJjbGVkJ1x0J1xcZThmYicsXG5cdCdsaW5rZWRpbidcdFx0XHQnXFxlOGZjJyxcblx0J2xpbmtlZGluLWNpcmNsZWQnXHQnXFxlOGZkJyxcblx0J2RyaWJiYmxlJ1x0XHRcdCdcXGU4ZmUnLFxuXHQnZHJpYmJibGUtY2lyY2xlZCdcdCdcXGU4ZmYnLFxuXHQnc3R1bWJsZXVwb24nXHRcdCdcXGU5MDAnLFxuXHQnc3R1bWJsZXVwb24tY2lyY2xlZCcnXFxlOTAxJyxcblx0J2xhc3RmbSdcdFx0XHQnXFxlOTAyJyxcblx0J2xhc3RmbS1jaXJjbGVkJ1x0J1xcZTkwMycsXG5cdCdyZGlvJ1x0XHRcdFx0J1xcZTkwNCcsXG5cdCdyZGlvLWNpcmNsZWQnXHRcdCdcXGU5MDUnLFxuXHQnc3BvdGlmeSdcdFx0XHQnXFxlOTA2Jyxcblx0J3Nwb3RpZnktY2lyY2xlZCdcdCdcXGU5MDcnLFxuXHQncXEnXHRcdFx0XHQnXFxlOTA4Jyxcblx0J2luc3RhZ3JhbSdcdFx0XHQnXFxlOTA5Jyxcblx0J2Ryb3Bib3gnXHRcdFx0J1xcZTkwYScsXG5cdCdldmVybm90ZSdcdFx0XHQnXFxlOTBiJyxcblx0J2ZsYXR0cidcdFx0XHQnXFxlOTBjJyxcblx0J3NreXBlJ1x0XHRcdFx0J1xcZTkwZCcsXG5cdCdza3lwZS1jaXJjbGVkJ1x0XHQnXFxlOTBlJyxcblx0J3JlbnJlbidcdFx0XHQnXFxlOTBmJyxcblx0J3NpbmEtd2VpYm8nXHRcdCdcXGU5MTAnLFxuXHQncGF5cGFsJ1x0XHRcdCdcXGU5MTEnLFxuXHQncGljYXNhJ1x0XHRcdCdcXGU5MTInLFxuXHQnc291bmRjbG91ZCdcdFx0J1xcZTkxMycsXG5cdCdtaXhpJ1x0XHRcdFx0J1xcZTkxNCcsXG5cdCdiZWhhbmNlJ1x0XHRcdCdcXGU5MTUnLFxuXHQnZ29vZ2xlLWNpcmNsZXMnXHQnXFxlOTE2Jyxcblx0J3Zrb250YWt0ZSdcdFx0XHQnXFxlOTE3Jyxcblx0J3NtYXNoaW5nJ1x0XHRcdCdcXGU5MTgnLFxuXHQnZGItc2hhcGUnXHRcdFx0J1xcZTkxYScsXG5cdCdzd2VkZW4nXHRcdFx0J1xcZTkxOScsXG5cdCdsb2dvLWRiJ1x0XHRcdCdcXGU5MWInLFxuXHQncGljdHVyZSdcdFx0XHQnXFxlODBlJyxcblx0J2dsb2JlJ1x0XHRcdFx0J1xcZThiMScsXG5cdCdsZWFmJ1x0XHRcdFx0J1xcZThiOCcsXG5cdCdncmFkdWF0aW9uLWNhcCdcdCdcXGU4YzknLFxuXHQnbWljJ1x0XHRcdFx0J1xcZTg1ZScsXG5cdCdwYWxldHRlJ1x0XHRcdCdcXGU4YTQnLFxuXHQndGlja2V0J1x0XHRcdCdcXGU4Y2InLFxuXHQndmlkZW8nXHRcdFx0XHQnXFxlODBkJyxcblx0J3RhcmdldCdcdFx0XHQnXFxlOGEzJyxcblx0J211c2ljJ1x0XHRcdFx0J1xcZTgwMicsXG5cdCd0cm9waHknXHRcdFx0J1xcZThhOCcsXG5cdCd0aHVtYnMtdXAnXHRcdFx0J1xcZTgyYicsXG5cdCd0aHVtYnMtZG93bidcdFx0J1xcZTgyYycsXG5cdCdiYWcnXHRcdFx0XHQnXFxlODVhJyxcblx0J3VzZXInXHRcdFx0XHQnXFxlODBhJyxcblx0J3VzZXJzJ1x0XHRcdFx0J1xcZTgwYicsXG5cdCdsYW1wJ1x0XHRcdFx0J1xcZTg2NCcsXG5cdCdhbGVydCdcdFx0XHRcdCdcXGU4M2YnLFxuXHQnd2F0ZXInXHRcdFx0XHQnXFxlOGNjJyxcblx0J2Ryb3BsZXQnXHRcdFx0J1xcZThjZCcsXG5cdCdjcmVkaXQtY2FyZCdcdFx0J1xcZThjZicsXG5cdCdtb25pdG9yJ1x0XHRcdCdcXGU4YWInLFxuXHQnYnJpZWZjYXNlJ1x0XHRcdCdcXGU4YmInLFxuXHQnZmxvcHB5J1x0XHRcdCdcXGU4ZDAnLFxuXHQnY2QnXHRcdFx0XHQnXFxlOGFlJyxcblx0J2ZvbGRlcidcdFx0XHQnXFxlODUwJyxcblx0J2RvYy10ZXh0J1x0XHRcdCdcXGU4NGInLFxuXHQnY2FsZW5kYXInXHRcdFx0J1xcZTg1YicsXG5cdCdjaGFydC1saW5lJ1x0XHQnXFxlOGM1Jyxcblx0J2NoYXJ0LWJhcidcdFx0XHQnXFxlOGM2Jyxcblx0J2NsaXBib2FyZCdcdFx0XHQnXFxlOGQxJyxcblx0J2F0dGFjaCdcdFx0XHQnXFxlODIzJyxcblx0J2Jvb2ttYXJrcydcdFx0XHQnXFxlODI5Jyxcblx0J2Jvb2snXHRcdFx0XHQnXFxlODRmJyxcblx0J2Jvb2stb3BlbidcdFx0XHQnXFxlODRlJyxcblx0J3Bob25lJ1x0XHRcdFx0J1xcZTg1NCcsXG5cdCdtZWdhcGhvbmUnXHRcdFx0J1xcZThkMicsXG5cdCd1cGxvYWQnXHRcdFx0J1xcZTgyZScsXG5cdCdkb3dubG9hZCdcdFx0XHQnXFxlODJkJyxcblx0J2JveCdcdFx0XHRcdCdcXGU4NTInLFxuXHQnbmV3c3BhcGVyJ1x0XHRcdCdcXGU4NGQnLFxuXHQnbW9iaWxlJ1x0XHRcdCdcXGU4YWMnLFxuXHQnc2lnbmFsJ1x0XHRcdCdcXGU4YTcnLFxuXHQnY2FtZXJhJ1x0XHRcdCdcXGU4MGYnLFxuXHQnc2h1ZmZsZSdcdFx0XHQnXFxlODk0Jyxcblx0J2xvb3AnXHRcdFx0XHQnXFxlODk1Jyxcblx0J2Fycm93cy1jY3cnXHRcdCdcXGU4OTEnLFxuXHQnbGlnaHQtZG93bidcdFx0J1xcZTg2NScsXG5cdCdsaWdodC11cCdcdFx0XHQnXFxlODY2Jyxcblx0J211dGUnXHRcdFx0XHQnXFxlODVmJyxcblx0J3NvdW5kJ1x0XHRcdFx0J1xcZTg2MCcsXG5cdCdiYXR0ZXJ5J1x0XHRcdCdcXGU4YTknLFxuXHQnc2VhcmNoJ1x0XHRcdCdcXGU4MDMnLFxuXHQna2V5J1x0XHRcdFx0J1xcZThkNycsXG5cdCdsb2NrJ1x0XHRcdFx0J1xcZTgyNCcsXG5cdCdsb2NrLW9wZW4nXHRcdFx0J1xcZTgyNScsXG5cdCdiZWxsJ1x0XHRcdFx0J1xcZTgzZCcsXG5cdCdib29rbWFyaydcdFx0XHQnXFxlODI4Jyxcblx0J2xpbmsnXHRcdFx0XHQnXFxlODIyJyxcblx0J2JhY2snXHRcdFx0XHQnXFxlODIwJyxcblx0J2ZsYXNobGlnaHQnXHRcdCdcXGU4MDQnLFxuXHQnY2hhcnQtYXJlYSdcdFx0J1xcZThjNycsXG5cdCdjbG9jaydcdFx0XHRcdCdcXGU4NjInLFxuXHQncm9ja2V0J1x0XHRcdCdcXGU4ZGQnLFxuXHQnYmxvY2snXHRcdFx0XHQnXFxlODY4J1xuKTtcblxuLy8gRnVuY3Rpb24gdG8gbWF0Y2ggbmFtZSB0byB1bmljb2RlIGNoYXJhY3RlclxuQGZ1bmN0aW9uIG1hdGNoKCRoYXlzdGFjaywgJG5lZWRsZSkge1xuICAgIEBlYWNoICRpdGVtIGluICRoYXlzdGFjayB7XG4gICAgICAgICRpbmRleDogaW5kZXgoJGl0ZW0sICRuZWVkbGUpO1xuICAgICAgICBAaWYgJGluZGV4IHsgXG4gICAgICAgICAgICAkcmV0dXJuOiBpZigkaW5kZXggPT0gMSwgMiwgJGluZGV4KTtcbiAgICAgICAgICAgIEByZXR1cm4gbnRoKCRpdGVtLCAkcmV0dXJuKTsgXG4gICAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiBmYWxzZTtcbn1cblxuLypcbiogXHRNYWluIEljb24gbWl4aW5cbipcbiogXHRCYXNlZCBvbiBodHRwOi8vamF5ZGVuc2VyaWMuY29tL2Jsb2cvZnVuLXdpdGgtc2Fzcy1hbmQtZm9udC1pY29ucyBcbipcbipcdGUuZy4gXG4qXHRAaW5jbHVkZSBpY29uKCdwaG9uZScsICdiZWZvcmUnLCB0cnVlLCAkbGFyZ2UsICR0b3A6LTNweCwgJG1hcmdpbjo1cHgpO1xuKiBcdEBpbmNsdWRlIGljb24oJ3Bob25lJywgJ2JlZm9yZScsIHRydWUsICRsYXJnZSwgJHRvcDotM3B4LCAkbWFyZ2luOjVweCkge1xuKlx0XHRjb2xvcjogYmxhY2s7XG4qIFx0fVxuKi9cbkBtaXhpbiBpY29uKCRpY29uOiBmYWxzZSwgJHBvc2l0aW9uOiAnYmVmb3JlJywgJHN0eWxlczogdHJ1ZSwgJHNpemU6IGF1dG8sICRtYXJnaW46IGF1dG8sICRjb2xvcjogYXV0bywgJHRvcDogYXV0bywgJHNoYWRvdzogbm9uZSkge1xuICAgIC8vIEVpdGhlciBhIDpiZWZvcmUgb3IgOmFmdGVyIHBzZXVkby1lbGVtZW50LCBkZWZhdWx0aW5nIHRvIDpiZWZvcmVcbiAgICAmOiN7JHBvc2l0aW9ufSB7XG4gICAgXHRcbiAgICBcdFxuICAgICAgICBAaWYgJGljb24ge1xuICAgICAgICAgICAgIC8vIEljb24gaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAgICAgICAgICBjb250ZW50OiBtYXRjaCgkaWNvbnMsICRpY29uKTtcbiAgICAgICAgfVxuICAgICAgICBcblx0XHRAaWYgJHN0eWxlcyB7XG5cdFx0XHQvLyBTdXBwb3J0aXZlIGljb24gc3R5bGVzIGhhdmUgYmVlbiBzcGVjaWZpZWRcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0Ly92ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0dGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhaW1wb3J0YW50O1xuXHRcdFx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQgIWltcG9ydGFudDtcblx0XHRcdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGUgIWltcG9ydGFudDtcblx0XHRcdHNwZWFrOiBub25lO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICBmb250OiB7XG4gICAgICAgICAgICAgICAgc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICB2YXJpYW50OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZmFtaWx5OiBcImVudHlwb1wiO1xuICAgICAgICAgICAgICAgIHNpemU6IDE2cHg7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgQGlmICRzaXplICE9IGF1dG8ge1xuXHRcdFx0XHRcdHNpemU6ICRzaXplO1xuXHRcdFx0XHR9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgQGlmICRtYXJnaW4gIT0gYXV0byB7XG4gICAgICAgICAgICBcdEBpZiAkcG9zaXRpb24gPT0gJ2JlZm9yZScge1xuXHQgICAgICAgICAgICBcdG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICAgICAgICAgIFx0fSBAZWxzZSBpZiAkcG9zaXRpb24gPT0gJ2FmdGVyJ3tcblx0ICAgICAgICAgICAgXHRtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgICAgICAgICAgIFx0fVxuXHRcdFx0ICAgXG5cdFx0ICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgQGlmICR0b3AgIT0gYXV0byB7XG5cdFx0ICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdCAgICAgIHRvcDogJHRvcDtcblx0XHQgICAgfVxuXHRcdCAgICBcblx0XHQgICAgQGlmICRjb2xvciAhPSBhdXRvIHtcblx0XHQgICAgICBjb2xvcjogJGNvbG9yO1xuXHRcdCAgICB9XG5cdFx0ICAgIFxuXHRcdCAgICBAaWYgJHNoYWRvdyAhPSBub25lIHtcblx0XHQgICAgICB0ZXh0LXNoYWRvdzogJHNoYWRvdztcblx0XHQgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICAvLyBJbmNsdWRlIGFueSBleHRyYSBydWxlcyBzdXBwbGllZCBmb3IgdGhlIHBzZXVkby1lbGVtZW50XG4gICAgICAgIEBjb250ZW50O1xuICAgICBcbiAgICB9XG59IiwiLy8gU2V0dXAgR3JpZCBmb3IgU1VTWVxuJHN1c3k6IChcbiAgLy8gdGhlIGJhc2ljc1xuICBjb2x1bW5zOiAxMixcbiAgZ3V0dGVyczogMS42MThlbSAvIDQuODU0ZW0sXG4gIGNvbHVtbi13aWR0aDogNC44NTRlbSxcbik7XG5cbi8vIFNldHVwIENvbnRhaW5lciBmb3IgU1VTWVxuLnNpdGUtaW5uZXIgLndyYXAge1xuXHRAaW5jbHVkZSBjb250YWluZXI7XG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcblx0Ly9tYXgtd2lkdGg6IDExNDBweDtcblxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRtYW1hLWJlYXIpIHtcblx0XHRtYXgtd2lkdGg6IDk2MHB4O1xuXHR9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8qXG4gKiBNb2R1bGFyIFNjYWxlIFNldHRpbmdzXG4gKlxuICogaHR0cDovL3d3dy5tb2R1bGFyc2NhbGUuY29tIGJ5IFRpbSBCcm93blxuICogaHR0cHM6Ly9naXRodWIuY29tL1RlYW0tU2Fzcy9tb2R1bGFyLXNjYWxlXG4gKiB2ZXJzaW9uIDIgc3ludGF4XG4gKi9cbiRtcy1yYXRpbzogJGdvbGRlbjtcdFx0XHRcdFx0XHQvLyBSYXRpbyBmb3IgTW9kdWxhciBTY2FsZVxuJGJhc2UtZm9udC1zaXplOiAxOHB4O1xuJGltcG9ydGFudE51bTogMjRweDtcbiRtcy1iYXNlOiAkYmFzZS1mb250LXNpemUgJGltcG9ydGFudE51bTtcbiRiYXNlLWxpbmUtaGVpZ2h0OiAkYmFzZS1mb250LXNpemUgKiAxLjYxODtcblxuLy8gVG9ybGVzc2UgRGVmYXVsdCBTY2FsZSBWYWx1ZXM6IDE2LCAxOCwgMjYsIDMwLCA0MiwgNDgsIDY4LCA3OCwgMTEwLCAxMjY7XG5cblx0Lypcblx0ICogU2l6aW5nXG5cdCAqL1xuXHQkeHNtYWxsOiBtcygtMik7XG5cdCRzbWFsbDogbXMoLTEpO1xuXHQkbm9ybTogbXMoMCk7XHRcdFx0XHRcdFx0XHRcdFx0Ly8gJGJhc2UtZm9udC1zaXplICgxNnB4ID09IGRlZmF1bHQpXG5cdCRtZWQ6IG1zKDEpO1xuXHQkbGFyZ2U6IG1zKDIpO1xuXHQkbGFyZ2VyOiBtcygzKTtcblx0JHhsYXJnZTogbXMoNCk7XG5cdCR4eGxhcmdlOiBtcyg1KTtcblx0JHh4eGxhcmdlOiBtcyg2KTtcblx0JHJlYWxseWJpZzogbXMoOCk7XG5cdCR0cmVtZW5kb3VzOiBtcyg5KTtcblx0JGFic3VyZDogbXMoMTApO1xuXG4kdHlwZS1zY2FsZTogKFxuICAgLTI6IG1zKC0yKSxcbiAgIC0xOiBtcygtMSksXG4gICAwOiBtcygwKSxcbiAgIDE6IG1zKDEpLFxuICAgMjogbXMoMiksXG4gICAzOiBtcygzKSxcbiAgIDQ6IG1zKDQpLFxuICAgNTogbXMoNSksXG4gICA2OiBtcyg2KSxcbiAgIDc6IG1zKDcpLFxuICAgODogbXMoOCksXG4gICA5OiBtcyg5KSxcbiAgIDEwOiBtcygxMCksXG4pO1xuXG5AZnVuY3Rpb24gdHlwZS1zY2FsZSgkbGV2ZWwpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR0eXBlLXNjYWxlLCAkbGV2ZWwpO1xufVxuXG4kbGluZS1oZWlnaHRzOiAoXG4gIC0xOiAkYmFzZS1saW5lLWhlaWdodCxcbiAgMDogJGJhc2UtbGluZS1oZWlnaHQsXG4gIDE6ICRiYXNlLWxpbmUtaGVpZ2h0LFxuICAyOiAkYmFzZS1saW5lLWhlaWdodCxcbiAgMzogJGJhc2UtbGluZS1oZWlnaHQgKiAyLFxuICA0OiAkYmFzZS1saW5lLWhlaWdodCAqIDIsXG4gIDU6ICRiYXNlLWxpbmUtaGVpZ2h0ICogMixcbiAgNjogJGJhc2UtbGluZS1oZWlnaHQgKiAyLFxuICA3OiAkYmFzZS1saW5lLWhlaWdodCAqIDIsXG4gIDg6ICRiYXNlLWxpbmUtaGVpZ2h0ICogMixcbiAgOTogJGJhc2UtbGluZS1oZWlnaHQgKiAyLFxuICAxMDogJGJhc2UtbGluZS1oZWlnaHQgKiAyXG4pO1xuXG4vLyBBZ2Fpbiwgd2UgY2FuIG1ha2UgYSBoZWxwZXIgZnVuY3Rpb246XG5AZnVuY3Rpb24gbGluZS1oZWlnaHQoJGxldmVsKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkbGluZS1oZWlnaHRzLCAkbGV2ZWwpO1xufVxuXG5AbWl4aW4gdHlwZS1zZXR0aW5nKCRsZXZlbDogMCkge1xuICBmb250LXNpemU6IHR5cGUtc2NhbGUoJGxldmVsKTtcbiAgbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0KCRsZXZlbCk7XG59XG4iLCIvKlxuICogU29jaWFsIE5ldHdvcmsgQ29sb3Vyc1xuICpcbiAqIGh0dHA6Ly9kZXNpZ25waWVjZXMuY29tLzIwMTIvMTIvc29jaWFsLW1lZGlhLWNvbG91cnMtaGV4LWFuZC1yZ2IvXG4gKi9cbiR0d2l0dGVyOiAgICAjMDBhY2VkO1xuJGZhY2Vib29rOiAgICMzYjU5OTg7XG4kbGlua2VkaW46ICAgIzAwN2JiNjtcbiRnb29nbGU6ICAgICAjZGQ0YjM5O1xuJHlvdXR1YmU6ICAgICNiYjAwMDA7XG4kcGludGVyZXN0OiAgI2NiMjAyNztcbiR0dW1ibHI6ICAgICAjMzI1MDZkO1xuJGZsaWNrcjogICAgICNmZjAwODQ7XG4kaW5zdGFncmFtOiAgIzUxN2ZhNDtcbiR2aW1lbzogICAgICAjYWFkNDUwO1xuJGZvdXJzcXVhcmU6ICMwMDcyYjE7XG5cbi8qXG4gKiBCcmFuZCBDb2xvdXJzXG4gKi9cbiRsaWdodC1ncmV5OiAgI0Y5RjlGOTtcbiRtZWRpdW0tZ3JleTogZGFya2VuKCRsaWdodC1ncmV5LCAyMCUpO1xuJHdoaXRlOiAgICAgICAjZmZmO1xuJGxpZ2h0LXJlZDogICAjRTU1NTRFO1xuXG4keWVsbG93OiAjRkRDMTM1O1xuJGdyZWVuOiAjMzc3NzM0O1xuJGJsdWU6ICMwMTg5OUM7XG5cbiRsb2dvLWdyZXk6ICMzNzM3MzU7XG5cbiR3YXJtLWdyZXk6ICM4Njg0Nzc7XG4kZGFyay1ncmV5OiAgICMzMzM0MzE7XG5cbiRicm93bjogIzQzMkMwNjtcblxuXG4vLyBHZW5lcmFsIGNvbG91cnNcbiRoZWFkZXItYmc6ICAgICAgICAgJHdoaXRlO1xuJGJvZHktYmc6ICAgICAgICAgICAkd2hpdGU7XG4kZm9vdGVyLXdpZGdldHMtYmc6ICRtZWRpdW0tZ3JleTtcbiRmb290ZXItYmc6ICAgICAgICAgJGRhcmstZ3JleTtcbiRsaW5rLWNvbG91cjogICAgICAgJGdyZWVuO1xuJGhlYWRpbmctY29sb3VyOiBcdFx0IzMzMztcblxuLy8gUHJpbWFyeSBOYXZcbiRwcmltYXJ5LW5hdi1iZzogXHRcdFx0JGRhcmstZ3JleTtcbiRwcmltYXJ5LW5hdi10ZXh0OiBcdFx0XHQkd2hpdGU7XG4kcHJpbWFyeS1uYXYtdGV4dC1ob3ZlcjogXHQkbGlnaHQtZ3JleTtcblxuLy8gVGV4dCBjb2xvdXJzXG4kZm9vdGVyLXRleHQ6ICNmZmY7XG4kZm9vdGVyLWxpbms6ICRsaWdodC1yZWQ7XG5cbmJvZHkuYWdlbmN5LXByby1vcmFuZ2Uge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiBtaXgoI2ZmZiwgJGxvZ28tZ3JleSwgNSUpO1xuXG5cdGEge1xuXHQgICBjb2xvcjogJGJsdWU7XG5cdH1cblxuXHQuYnV0dG9uIHtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAkYmx1ZTtcblx0XHRjb2xvcjogJGJsdWU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogZGFya2VuKCRibHVlLCAxMCUpO1xuXHRcdFx0Y29sb3I6IGRhcmtlbigkYmx1ZSwgMTAlKTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdH1cblxuXHRcdCYuYmx1ZSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRibHVlO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRibHVlLCAxMCUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5mbC1idXR0b24ge1xuXHRcdEBleHRlbmQgLmJ1dHRvbjtcblx0XHRjb2xvcjogJGJsdWUgIWltcG9ydGFudDtcblx0XHRib3JkZXItY29sb3I6ICRibHVlICFpbXBvcnRhbnQ7XG5cblx0XHQuZmwtYnV0dG9uLXRleHQge1xuXHRcdFx0Y29sb3I6ICRibHVlICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cblx0LmJnLW1lZGl1bSB7XG5cblx0XHQuYnV0dG9uIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJHllbGxvdztcblx0XHRcdGNvbG9yOiAkeWVsbG93O1xuXHRcdH1cblxuXHRcdC5mbC1idXR0b24ge1xuXHRcdFx0Y29sb3I6ICR5ZWxsb3cgIWltcG9ydGFudDtcblx0XHRcdGJvcmRlci1jb2xvcjogJHllbGxvdyAhaW1wb3J0YW50O1xuXG5cdFx0XHQuZmwtYnV0dG9uLXRleHQge1xuXHRcdFx0XHRjb2xvcjogJHllbGxvdyAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5iZy15ZWxsb3csXG5cdC5iZy15ZWxsb3ctaG9yaXpvbnRhbCB7XG5cdFx0LmJ1dHRvbiB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmVlbjtcblx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0YmFja2dyb3VuZDogJGdyZWVuICFpbXBvcnRhbnQ7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiBkYXJrZW4oJGdyZWVuLCAxMCUpICFpbXBvcnRhbnQ7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogZGFya2VuKCRncmVlbiwgMTAlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZmwtYnV0dG9uIHtcblx0XHRcdGNvbG9yOiAkZ3JlZW4gIWltcG9ydGFudDtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZWVuICFpbXBvcnRhbnQ7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkZ3JlZW4gIWltcG9ydGFudDtcblxuXHRcdFx0LmZsLWJ1dHRvbi10ZXh0IHtcblx0XHRcdFx0Y29sb3I6ICNmZmYgIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuXG5cbi8qXG4qIEJhY2tncm91bmRzXG4qL1xuLmJnLWxpZ2h0IHtcblx0YmFja2dyb3VuZDogbGlnaHRlbigkd2FybS1ncmV5LCA0MCUpO1xufVxuXG4uYmctbWVkaXVtIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCR3YXJtLWdyZXksIGRhcmtlbigkd2FybS1ncmV5LCAxMCUpKTtcblx0Y29sb3I6ICNmZmY7XG5cblx0aDEsaDIsaDMsaDQge1xuXHRcdGNvbG9yOiAkeWVsbG93O1xuXHR9XG59XG5cbmJvZHkuYWdlbmN5LXByby1vcmFuZ2UgLmJnLW1lZGl1bSBhIHtcblx0Y29sb3I6ICR5ZWxsb3c7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uYmctZGFyayB7XG5cdGJhY2tncm91bmQ6ICRkYXJrLWdyZXk7XG59XG5cbi5iZy15ZWxsb3cge1xuXHRiYWNrZ3JvdW5kOiAkeWVsbG93O1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI0ZBQ0IyMCwgI0VCOUIyRSk7XG5cdGNvbG9yOiAkZGFyay1ncmV5O1xuXHRib3gtc2hhZG93OiByZ2JhKDAsMCwwLDAuMzUpIDZweCA2cHggMHB4O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0aDEsaDIsaDMsaDQsLmZsLWhlYWRpbmctdGV4dCB7XG5cdFx0Y29sb3I6ICRkYXJrLWdyZXk7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0LmJnLXllbGxvdyB7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0fVxufVxuXG4uYmcteWVsbG93LWhvcml6b250YWwge1xuXHRiYWNrZ3JvdW5kOiAkeWVsbG93O1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQobGVmdCwgI0ZBQ0IyMCwgI0VCOUIyRSk7XG5cdGNvbG9yOiAkZGFyay1ncmV5O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0aDEsaDIsaDMsaDQsLmZsLWhlYWRpbmctdGV4dCB7XG5cdFx0Y29sb3I6ICRkYXJrLWdyZXk7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG59XG5cbi5zaWRlYmFyIHtcblx0LmJnLW1lZGl1bSB7XG5cdFx0Ym94LXNoYWRvdzogcmdiYSgwLDAsMCwwLjM1KSA2cHggNnB4IDBweDtcblxuXHRcdC5iZy1tZWRpdW0ge1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHR9XG5cdH1cbn1cblxuLypcbiAqIEJ1dHRvbnNcbiAqL1xuLmJ1dHRvbiB7XG5cdCYucHJpbWFyeSB7XG5cdFx0YmFja2dyb3VuZDogJGRhcmstZ3JleTtcblx0XHRjb2xvcjogI2ZmZjtcblx0fVxuXG5cdCYuc2Vjb25kYXJ5IHtcblx0IFx0YmFja2dyb3VuZDogJGxpZ2h0LWdyZXk7XG5cdCBcdGNvbG9yOiAkZGFyay1ncmV5O1xuXHR9XG5cblx0Ji5vdXRsaW5lIHtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZGFyay1ncmV5O1xuXHRcdGNvbG9yOiAkZGFyay1ncmV5O1xuXHR9XG59XG4iLCJAbWl4aW4gaGVhZGluZy1mb250IHtcbiAgIGZvbnQtZmFtaWx5OiBcImRpbi1jb25kZW5zZWQtd2ViXCIsc2Fucy1zZXJpZjtcbiAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbkBtaXhpbiBib2R5LWZvbnQge1xuICAgZm9udC1mYW1pbHk6IFwiZ2FyYW1vbmQtcHJlbWllci1wcm9cIixzZXJpZjtcbn1cblxuYm9keSB7XG4gICBAaW5jbHVkZSBib2R5LWZvbnQ7XG4gICBAaW5jbHVkZSB0eXBlLXNldHRpbmcoMCk7XG59XG5cbnAsXG5vbCxcbmxpLFxuLmVudHJ5LWNvbnRlbnQgb2wsXG4uZW50cnktY29udGVudCBwLFxuLmVudHJ5LWNvbnRlbnQgdWwsXG4ucXVvdGUtY2FwdGlvbiB7XG4gICBAaW5jbHVkZSB0eXBlLXNldHRpbmcoMCk7XG4gICBAaW5jbHVkZSBib2R5LWZvbnQ7XG59XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICAgQGluY2x1ZGUgaGVhZGluZy1mb250O1xuXG4gICAmYSB7XG4gICAgICBAaW5jbHVkZSBoZWFkaW5nLWZvbnQ7XG4gICB9XG59XG5cbmgxLFxuaDEuZW50cnktdGl0bGUsXG4ge1xuXG4gICBAaW5jbHVkZSB0eXBlLXNldHRpbmcoNSk7XG4gICBtYXJnaW46IDAgMCAkYmFzZS1saW5lLWhlaWdodDtcbn1cblxuaDIge1xuICAgQGluY2x1ZGUgdHlwZS1zZXR0aW5nKDQpO1xuICAgbWFyZ2luOiAwIDAgJGJhc2UtbGluZS1oZWlnaHQ7XG59XG5cbmgzIHtcbiAgIEBpbmNsdWRlIHR5cGUtc2V0dGluZygyKTtcbiAgIG1hcmdpbjogMCAwICRiYXNlLWxpbmUtaGVpZ2h0O1xufVxuXG5oNCB7XG4gICBAaW5jbHVkZSB0eXBlLXNldHRpbmcoMSk7XG4gICBtYXJnaW46IDA7XG59XG5cbnAge1xuICAgbWFyZ2luOiAwIDAgJGJhc2UtbGluZS1oZWlnaHQ7XG59XG5cbi5idXR0b24sXG5ib2R5LmFnZW5jeS1wcm8tb3JhbmdlIC5idXR0b24ge1xuICAgQGluY2x1ZGUgaGVhZGluZy1mb250O1xuICAgQGluY2x1ZGUgdHlwZS1zZXR0aW5nKDApO1xuICAgcGFkZGluZzogJGJhc2UtbGluZS1oZWlnaHQqMC4yNSAkYmFzZS1saW5lLWhlaWdodCowLjc1O1xuICAgbWFyZ2luOiAkYmFzZS1saW5lLWhlaWdodCowLjc1IDA7XG59XG4iLCJAZnVuY3Rpb24gbXMtcm91bmQtcHgoJFJlc3VsdCkge1xuICBAaWYgdW5pdCgkUmVzdWx0KSA9PSAncHgnIHtcbiAgICBAcmV0dXJuIHJvdW5kKCRSZXN1bHQpO1xuICB9XG4gIEByZXR1cm4gJFJlc3VsdDtcbn0iLCIvKiBSZXNwb25zaXZlIE1lbnVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuIFxuLnJlc3BvbnNpdmUtbWVudS1pY29uIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHRkaXNwbGF5OiBub25lO1xuXHRtYXJnaW4tYm90dG9tOiAtMXB4O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFxuXHRAaW5jbHVkZSBpY29uKCdtZW51JywgJ2JlZm9yZScsIHRydWUsICRsYXJnZSwgJHRvcDo1cHgsICRtYXJnaW46NXB4KTtcbn1cbiBcbi5uYXYtcHJpbWFyeSAucmVzcG9uc2l2ZS1tZW51LWljb246OmJlZm9yZSB7XG5cdGNvbG9yOiAjZmZmO1xufVxuIFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuIFxuXHQuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgPiAubWVudS1pdGVtID4gLnN1Yi1tZW51LFxuXHQuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cbiBcblx0LmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IC5tZW51LWl0ZW0sXG5cdC5yZXNwb25zaXZlLW1lbnUtaWNvbiB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cbiBcblx0LmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IC5tZW51LWl0ZW0ge1xuXHRcdG1hcmdpbjogMDtcblx0fVxuIFxuXHQuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgLm1lbnUtaXRlbTpob3ZlciB7XG5cdFx0cG9zaXRpb246IHN0YXRpYztcblx0fVxuIFxuXHQuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgLmN1cnJlbnQtbWVudS1pdGVtID4gYSxcblx0LmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IC5zdWItbWVudSAuY3VycmVudC1tZW51LWl0ZW0gPiBhOmhvdmVyLFxuXHQuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgYSxcblx0LmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IGE6aG92ZXIge1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0bGluZS1oZWlnaHQ6IDE7XG5cdFx0cGFkZGluZzogMTZweCAyMHB4O1xuXHR9XG5cdC5uYXYtcHJpbWFyeSAuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgLmN1cnJlbnQtbWVudS1pdGVtID4gYSxcblx0Lm5hdi1wcmltYXJ5IC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAuc3ViLW1lbnUgLmN1cnJlbnQtbWVudS1pdGVtID4gYTpob3Zlcixcblx0Lm5hdi1wcmltYXJ5IC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSBhLFxuXHQubmF2LXByaW1hcnkgLmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IGE6aG92ZXIge1xuXHRcdGNvbG9yOiAjZmZmO1xuXHR9XG4gXG5cdC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHR9XG4gXG5cdC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiA+IGEge1xuXHRcdG1hcmdpbi1yaWdodDogNjBweDtcblx0fVxuIFxuXHQuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgPiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XG5cdFx0XG5cdFx0QGluY2x1ZGUgaWNvbignZG93bi1vcGVuJywgJ2JlZm9yZScsIHRydWUsICRsYXJnZSwgJHRvcDotM3B4LCAkbWFyZ2luOjVweCkge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0cGFkZGluZzogMTBweCAyMHB4O1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdHotaW5kZXg6IDk5OTk7XG5cdFx0XHRjb2xvcjogYmxhY2s7XG5cdFx0fVxuXHRcdFxuXHR9XG4gXG5cdC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAubWVudS1vcGVuLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4ge1xuXHRcdEBpbmNsdWRlIGljb24oJ3VwLW9wZW4nLCAnYmVmb3JlJywgdHJ1ZSwgJGxhcmdlLCAkdG9wOi0zcHgsICRtYXJnaW46NXB4KTtcblx0fVxuIFxuXHQuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgLnN1Yi1tZW51IHtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0bGVmdDogYXV0bztcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHBhZGRpbmctbGVmdDogMjVweDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0LW1vei10cmFuc2l0aW9uOiAgICBvcGFjaXR5IC40cyBlYXNlLWluLW91dDtcblx0XHQtbXMtdHJhbnNpdGlvbjogICAgIG9wYWNpdHkgLjRzIGVhc2UtaW4tb3V0O1xuXHRcdC1vLXRyYW5zaXRpb246ICAgICAgb3BhY2l0eSAuNHMgZWFzZS1pbi1vdXQ7XG5cdFx0LXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC40cyBlYXNlLWluLW91dDtcblx0XHR0cmFuc2l0aW9uOiAgICAgICAgIG9wYWNpdHkgLjRzIGVhc2UtaW4tb3V0O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHotaW5kZXg6IDk5O1xuXHR9XG4gXG5cdC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAuc3ViLW1lbnUgLnN1Yi1tZW51IHtcblx0XHRtYXJnaW46IDA7XG5cdH1cbiBcblx0LmdlbmVzaXMtbmF2LW1lbnUucmVzcG9uc2l2ZS1tZW51IC5zdWItbWVudSAuY3VycmVudC1tZW51LWl0ZW0gPiBhOmhvdmVyLFxuXHQuZ2VuZXNpcy1uYXYtbWVudS5yZXNwb25zaXZlLW1lbnUgLnN1Yi1tZW51IGxpIGEsXG5cdC5nZW5lc2lzLW5hdi1tZW51LnJlc3BvbnNpdmUtbWVudSAuc3ViLW1lbnUgbGkgYTpob3ZlciB7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0cGFkZGluZzogMTJweCAyMHB4O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxuIFxufSIsIi5zaXRlLWhlYWRlciB7XG4gICBiYWNrZ3JvdW5kLWNvbG9yOiAkbG9nby1ncmV5O1xufVxuXG4uZ2VuZXNpcy1uYXYtbWVudSB7XG5cbiAgIGEge1xuICAgICAgQGluY2x1ZGUgdHlwZS1zZXR0aW5nKDApO1xuICAgICAgcGFkZGluZzogJGJhc2UtbGluZS1oZWlnaHQqMC41ICRiYXNlLWxpbmUtaGVpZ2h0KjAuNTtcbiAgIH1cblxuICAgLnN1Yi1tZW51IGEge1xuICAgICAgQGluY2x1ZGUgdHlwZS1zZXR0aW5nKDApO1xuICAgfVxufVxuIiwiLnNpdGUtZm9vdGVyIHtcbiAgIGJhY2tncm91bmQ6IG9wYWNpZnkoJHdhcm0tZ3JleSwgMC41KTtcbiAgIHBhZGRpbmc6ICRiYXNlLWxpbmUtaGVpZ2h0KjAuNTtcblxuICAgcCB7XG4gICAgICBAaW5jbHVkZSB0eXBlLXNldHRpbmcoLTEpO1xuICAgICAgY29sb3I6IGRhcmtlbigkd2FybS1ncmV5LCAyMCUpO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xuXG4gICAgICBhIHtcbiAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgY29sb3I6IGRhcmtlbigkd2FybS1ncmV5LCAzMCUpICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICB9XG59XG5cbi5mb290ZXItd2lkZ2V0cyB7XG4gICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LCAwLjgpO1xuICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgIHBhZGRpbmc6IDMwcHggMCAwO1xuXG4gICAuZm9vdGVyLXdpZGdldHMtMSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgIH1cbn1cbiIsIi5zaXRlLWNvbnRhaW5lciB7XG4gICBwYWRkaW5nLXRvcDogJGJhc2UtbGluZS1oZWlnaHQqMztcbn1cblxuLnNpdGUtaW5uZXIge1xuICAgcGFkZGluZzogJGJhc2UtbGluZS1oZWlnaHQqNCAwO1xufVxuXG4uY29udGVudCB7XG4gICBib3gtc2hhZG93OiByZ2JhKDAsMCwwLDAuMzUpIDZweCA2cHggMHB4O1xufVxuXG4uYmctbWVkaXVtIHtcbiAgIC5mZXN0aXZhbC1uYW1lIHtcbiAgICAgIEBpbmNsdWRlIGhlYWRpbmctZm9udDtcbiAgICAgIEBpbmNsdWRlIHR5cGUtc2V0dGluZygzKTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAkYmFzZS1saW5lLWhlaWdodCAqIDEuNTtcbiAgIH1cbiAgIC53ZWVrZW5kLW5hbWUge1xuICAgICAgQGluY2x1ZGUgaGVhZGluZy1mb250O1xuICAgICAgQGluY2x1ZGUgdHlwZS1zZXR0aW5nKDEpO1xuICAgICAgbWFyZ2luOiAkYmFzZS1saW5lLWhlaWdodC8yIDA7XG4gICB9XG4gICAuZmVzdGl2YWwtZGF0ZXMge1xuICAgICAgQGluY2x1ZGUgaGVhZGluZy1mb250O1xuICAgICAgQGluY2x1ZGUgdHlwZS1zZXR0aW5nKDEpO1xuICAgICAgbWFyZ2luOiAkYmFzZS1saW5lLWhlaWdodC8yIDA7XG4gICB9XG59XG4iLCIvKlxuICogUGFnZSBCdWlsZGVyXG4gKiAoQmVhdmVyIGJ1aWxkZXIpIC0gZGVmYXVsdCBzdHlsaW5nXG4gKi9cblxuIC8vIFBhZ2UgYnVpbGRlciBSb3cgbWFyZ2luc1xuICRyb3ctbWFyZ2luOiAkYmFzZS1saW5lLWhlaWdodCoyO1xuICRjb2x1bW4tbWFyZ2luOiAkYmFzZS1saW5lLWhlaWdodDtcblxuICRlbnRyeS1zaWRlLW1hcmdpbjogJGJhc2UtbGluZS1oZWlnaHQqMjtcbiAkZW50cnktdG9wYm90dG9tLW1hcmdpbjogJGJhc2UtbGluZS1oZWlnaHQ7XG5cbi8vIHBhZ2UgYnVpbGRlciBkZWZhdWx0c1xuLmZsLWJ1aWxkZXIge1xuXG4gIC8vIE1hcmdpbnMgb24gcGFnZSBidWlsZGVyIHBhZ2VzXG4gIC5lbnRyeSB7XG4gICAgcGFkZGluZzogMDtcblxuICAgXHQuZW50cnktaGVhZGVyLFxuICAgXHQuZW50cnktZm9vdGVyIHtcbiAgIFx0XHRwYWRkaW5nOiAkZW50cnktdG9wYm90dG9tLW1hcmdpbiAkZW50cnktc2lkZS1tYXJnaW4gMDtcbiAgIFx0fVxuICB9XG5cblx0LnNpdGUtaW5uZXIge1xuXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWFtYS1iZWFyKSB7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyb3RoZXItYmVhcikge1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHR9XG5cdH1cbn1cblxuLmZsLXJvdy1jb250ZW50IHtcblx0cGFkZGluZzogJHJvdy1tYXJnaW4vMiAkcm93LW1hcmdpbjtcbn1cblxuLmZsLWNvbC1jb250ZW50IHtcbiAgIG1hcmdpbjogMCAkY29sdW1uLW1hcmdpbjtcbiAgIHBhZGRpbmctdG9wOiAkY29sdW1uLW1hcmdpbi8yO1xuICAgcGFkZGluZy1ib3R0b206ICRjb2x1bW4tbWFyZ2luLzI7XG59XG5cbi5mbC1jb2wtZ3JvdXAge1xuICBtYXJnaW4tbGVmdDogLSRjb2x1bW4tbWFyZ2luO1xuICBtYXJnaW4tcmlnaHQ6IC0kY29sdW1uLW1hcmdpbjtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRicm90aGVyLWJlYXIpIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLm5vLXJvdy1tYXJnaW4ge1xuICAgLmZsLXJvdy1jb250ZW50IHtcbiAgIFx0cGFkZGluZzogMCAkcm93LW1hcmdpbjtcbiAgIH1cbn1cblxuLmZsLWNvbC1zbWFsbCB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyb3RoZXItYmVhcikge1xuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5mbC1tb2R1bGUtaGVhZGluZyB7XG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICAgICYuZmwtaGVhZGluZyB7XG4gICAgICBAZXh0ZW5kIC5oZWFkaW5nLXN0eWxlO1xuICAgIH1cbiAgfVxufVxuXG4uY29udGVudC1zaWRlYmFyLFxuLnNpZGViYXItY29udGVudCxcbi5jb250ZW50LXNpZGViYXItc2lkZWJhcixcbi5zaWRlYmFyLWNvbnRlbnQtc2lkZWJhcixcbi5zaWRlYmFyLXNpZGViYXItY29udGVudCB7XG5cbiAgLmZsLXJvdy1jb250ZW50LFxuICAuZmwtY29sLWNvbnRlbnQge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICB9XG5cbiAgLmZsLXJvdy5wYWRkaW5nIHtcbiAgICAuZmwtcm93LWNvbnRlbnQge1xuICAgICAgcGFkZGluZzogJHJvdy1tYXJnaW47XG4gICAgfVxuICB9XG59XG5cbi5mbC1jb2wucGFkZGluZyB7XG4gIC5mbC1jb2wtY29udGVudCB7XG4gICAgcGFkZGluZzogJGNvbHVtbi1tYXJnaW47XG4gIH1cbn1cblxuLmJnLXllbGxvdyB7XG4gICAuZmwtY29sLWNvbnRlbnQge1xuICAgICBtYXJnaW46IDAgJGNvbHVtbi1tYXJnaW47XG4gICB9XG59XG5cbi5lZGdlLXRvLWVkZ2Uge1xuXHQuZmwtcm93LWNvbnRlbnQsXG5cdC5mbC1jb2wtY29udGVudCB7XG5cdFx0cGFkZGluZzogMDtcblx0fVxufVxuXG4vLyAuZnVsbC13aWR0aC5mbC1tb2R1bGUge1xuLy8gICAgbWFyZ2luOiAtJGNvbHVtbi1tYXJnaW4gLSRjb2x1bW4tbWFyZ2luIC0kY29sdW1uLW1hcmdpbiAwO1xuLy8gfVxuXG4vLyBGdWxsIFdpZHRoIFBhZ2UgdGVtcGxhdGVcbi5wYWdlLXRlbXBsYXRlLXBhZ2VfYnVpbGRlcixcbi5wYWdlLXRlbXBsYXRlLXBhZ2VfbGFuZGluZyB7XG4gIC5zaXRlLWlubmVyIHtcbiAgICAvL21heC13aWR0aDogMTAwJTtcbiAgICAvL3BhZGRpbmctdG9wOiAwO1xuXG4gICAud3JhcCB7XG4gICAgICAvL3dpZHRoOiAxMDAlO1xuICAgICAgLy9tYXgtd2lkdGg6IDEwMCU7XG4gIFx0fVxuXG4gICAgLmVudHJ5IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIEZvciBtb2Rlcm4gYnJvd3NlcnNcbiAqIDEuIFRoZSBzcGFjZSBjb250ZW50IGlzIG9uZSB3YXkgdG8gYXZvaWQgYW4gT3BlcmEgYnVnIHdoZW4gdGhlXG4gKiAgICBjb250ZW50ZWRpdGFibGUgYXR0cmlidXRlIGlzIGluY2x1ZGVkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGRvY3VtZW50LlxuICogICAgT3RoZXJ3aXNlIGl0IGNhdXNlcyBzcGFjZSB0byBhcHBlYXIgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVsZW1lbnRzXG4gKiAgICB0aGF0IGFyZSBjbGVhcmZpeGVkLlxuICogMi4gVGhlIHVzZSBvZiBgdGFibGVgIHJhdGhlciB0aGFuIGBibG9ja2AgaXMgb25seSBuZWNlc3NhcnkgaWYgdXNpbmdcbiAqICAgIGA6YmVmb3JlYCB0byBjb250YWluIHRoZSB0b3AtbWFyZ2lucyBvZiBjaGlsZCBlbGVtZW50cy5cbiAqL1xuLmNmOmJlZm9yZSxcbi5jZjphZnRlciB7XG4gICAgY29udGVudDogXCIgXCI7IC8qIDEgKi9cbiAgICBkaXNwbGF5OiB0YWJsZTsgLyogMiAqL1xufVxuXG4uY2Y6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xufVxuXG4vKipcbiAqIEZvciBJRSA2Lzcgb25seVxuICogSW5jbHVkZSB0aGlzIHJ1bGUgdG8gdHJpZ2dlciBoYXNMYXlvdXQgYW5kIGNvbnRhaW4gZmxvYXRzLlxuICovXG4uY2Yge1xuICAgICp6b29tOiAxO1xufVxuXG5AbWl4aW4gY2xlYXJmaXgge1xuXHQmOmJlZm9yZSxcblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogXCIgXCI7IC8qIDEgKi9cblx0XHRkaXNwbGF5OiB0YWJsZTsgLyogMiAqL1xuXHR9XG5cdFxuXHQmOmFmdGVyIHtcblx0XHRjbGVhcjogYm90aDtcblx0fVxuXHRcblx0Ly8gRm9yIElFIDYvNyBvbmx5XG5cdCp6b29tOiAxO1xufVxuIiwiLyoqXG4gKiBJY29uIEZvbnRzXG4gKi9cbiBcbi5waG9uZS1udW1iZXIge1xuXHRtYXJnaW4tYm90dG9tOiAkc21hbGw7XG5cdFxuXHRAaW5jbHVkZSBpY29uKCdwaG9uZScsICdiZWZvcmUnLCB0cnVlLCAxLjNlbSwgJHRvcDoxcHgsICRtYXJnaW46NnB4KSB7XG5cdFx0bWFyZ2luLWxlZnQ6IDJweDtcblx0fVxuIH1cbiBcbiAubW9iaWxlLW51bWJlciB7XG4gXHRtYXJnaW4tYm90dG9tOiAkc21hbGw7XG4gXHRcblx0QGluY2x1ZGUgaWNvbignbW9iaWxlJywgJ2JlZm9yZScsIHRydWUsIDEuM2VtLCAkdG9wOjFweCwgJG1hcmdpbjoxMHB4KSB7XG5cdFx0IG1hcmdpbi1sZWZ0OiAzcHg7XG5cdCB9XG4gfVxuIFxuIC5hZGRyZXNzLWZ1bGwge1xuIFx0bWFyZ2luLWJvdHRvbTogJHNtYWxsO1xuIFx0XG5cdEBpbmNsdWRlIGljb24oJ2FkZHJlc3MnLCAnYmVmb3JlJywgdHJ1ZSwgMS4zZW0sICR0b3A6MCwgJG1hcmdpbjo1cHgpIHtcblx0XHRmbG9hdDogbGVmdDtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXHQgXG5cdC5zdHJlZXQtYWRkcmVzcy13cmFwLFxuXHQuY2l0eS1wb3N0Y29kZSB7XG5cdFx0cGFkZGluZy1sZWZ0OiAyNXB4O1xuXHR9XG4gfVxuIFxuIC5zb2NpYWwtbmV0d29yay1saW5rIHtcblx0IG1hcmdpbi1ib3R0b206ICRzbWFsbDtcblx0IFxuXHQgJi5mYWNlYm9vayB7XG5cdFx0ICBAaW5jbHVkZSBpY29uKCdmYWNlYm9vay1zcXVhcmVkJywgJ2JlZm9yZScsIHRydWUsIDEuM2VtLCAkdG9wOjFweCwgJG1hcmdpbjo3cHgpIHtcblx0XHRcdCAgY29sb3I6ICRmYWNlYm9vaztcblx0XHQgIH1cblx0IH1cbiB9XG4gXG4gLmNvbnRhY3QtdXMtcGFnZS1jb250ZW50IHtcblx0IG1hcmdpbi10b3A6ICRub3JtO1xuIH1cbiBcbiIsIi5tdXNpY2lhbiB7XG4gICBtYXJnaW4tYm90dG9tOiAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgaDMge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgIH1cblxuICAgLmRldGFpbHMge1xuICAgICAgLy9tYXJnaW4tdG9wOiAtJGJhc2UtbGluZS1oZWlnaHQqMC41O1xuICAgICAgQGluY2x1ZGUgdHlwZS1zZXR0aW5nKDEpO1xuICAgICAgcGFkZGluZzogJGJhc2UtbGluZS1oZWlnaHQqMC4yNTtcbiAgICAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oJHdhcm0tZ3JleSwgMzUlKTtcbiAgIH1cblxuICAgLm11c2ljaWFuLWltYWdlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgIGltZyB7XG4gICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICBtYXJnaW4tYm90dG9tOiAtMTBweDtcbiAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG4gICB9XG5cbiAgICYuZmVhdHVyZWQgLm11c2ljaWFuLWltYWdlIHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgY29udGVudDogJ0ZlYXR1cmVkJztcbiAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgIGNvbG9yOiAkZGFyay1ncmV5O1xuICAgICAgICAgdG9wOiAxNXB4O1xuICAgICAgICAgcmlnaHQ6IC0zNXB4O1xuICAgICAgICAgei1pbmRleDogOTtcbiAgICAgICAgIGJhY2tncm91bmQ6ICR5ZWxsb3c7XG4gICAgICAgICBwYWRkaW5nOiAwcHggNDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgQGluY2x1ZGUgdHlwZS1zZXR0aW5nKC0xKTtcbiAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICAgIH1cblxuICAgICAgLmRldGFpbHMge1xuXG4gICAgICB9XG4gICB9XG5cbiAgIGgzLCAuZGV0YWlscyB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICB9XG59XG5cbi5tdXNpY2lhbnMtbGlzdCB7XG4gICAubXVzaWNpYW4ge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWFtYS1iZWFyLWFuZC11cCkge1xuICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgzIG9mIDEyKTtcbiAgICAgIH1cbiAgIH1cbn1cblxuLm11c2ljaWFucy1wYWdlIHtcblxuXG4gICBAaW5jbHVkZSBicmVha3BvaW50KCRtYW1hLWJlYXItYW5kLXVwKSB7XG5cbiAgICAgIC5pbWFnZS1wbHVzLWRldGFpbHMge1xuICAgICAgICAgQGluY2x1ZGUgc3Bhbig1IG9mIDEyKTtcbiAgICAgIH1cblxuICAgICAgLmJpbyB7XG4gICAgICAgICBAaW5jbHVkZSBzcGFuKDcgb2YgMTIgbGFzdCk7XG4gICAgICAgICBwYWRkaW5nLWxlZnQ6ICRiYXNlLWxpbmUtaGVpZ2h0LzI7XG4gICAgICB9XG5cbiAgIH1cblxuICAgLm11c2ljaWFuLXdyYXAge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJGJhc2UtbGluZS1oZWlnaHQ7XG4gICB9XG5cbn1cblxuLmluc3RydW1lbnQtdHV0b3JzLWxpbmsge1xuICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGJsdWU7XG4gICBwYWRkaW5nOiAwICRiYXNlLWxpbmUtaGVpZ2h0LzQ7XG5cbiAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgfVxuXG4gICAmOmxhc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgIGJvcmRlci1yaWdodDogMHB4O1xuICAgfVxufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vSW1wb3J0IEJvd2VyIENvbXBvbmVudHNcbkBpbXBvcnQgXCJzdXN5L3Nhc3Mvc3VzeVwiO1xuQGltcG9ydCBcImNvbXBhc3MtYnJlYWtwb2ludC9zdHlsZXNoZWV0cy9icmVha3BvaW50XCI7XG5AaW1wb3J0IFwibW9kdWxhci1zY2FsZS9zdHlsZXNoZWV0cy9tb2R1bGFyLXNjYWxlXCI7XG5cbi8vIEZvbnQgSWNvbiBtaXhpbnMgLSBodHRwczovL2dpdGh1Yi5jb20vcnN0YWNydXovc2Fzc19pY29uX2ZvbnRzXG4vLyBOZWVkIHRvIHNldCB0aGUgQGZvbnRmYWNlIG1peGluIGUuZy4gQGluY2x1ZGUgZW4tZm9udDsgZm9yIHRoZSBpY29uIGZvbnQgeW91IGFyZSB1c2luZ1xuLy8gY2FsbCB0aGUgQGluY2x1ZGUgaW4gdGhlIHRoZW1lIGZpbGVzXG5cbkBpbXBvcnQgXCJzYXNzLWljb24tZm9udHMvZW50eXBvLnNjc3NcIjtcblxuLy8gSWNvbiBmb250IHBhdGhcbiRlbi1wYXRoOiBcIi4uL2ZvbnRzL2VudHlwby9lbnR5cG8tcGx1c1wiO1xuXG5AaW5jbHVkZSBlbi1mb250O1xuXG4vLyBJbXBvcnQgcGFydGlhbHNcbkBpbXBvcnQgXCJicmVha3BvaW50c1wiO1xuQGltcG9ydCBcInN1c3ktc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ2ZXJ0aWNhbC1yaHl0aG1cIjtcbkBpbXBvcnQgXCJjb2xvdXJzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeVwiO1xuQGltcG9ydCBcInJlc3BvbnNpdmUtbWVudVwiO1xuQGltcG9ydCBcImhlYWRlclwiO1xuQGltcG9ydCBcImZvb3RlclwiO1xuQGltcG9ydCBcImNvbnRlbnRcIjtcbkBpbXBvcnQgXCJwYWdlLWJ1aWxkZXJcIjtcbkBpbXBvcnQgXCJjbGVhcmZpeFwiO1xuQGltcG9ydCBcImljb24tZm9udHNcIjtcbkBpbXBvcnQgXCJtdXNpY2lhbnNcIjtcblxuLypcbiAqIFNpdGUgQ3VzdG9tIFNBU1Mgc3RhcnRzIGhlcmUuLi5cbiAqL1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */
