html {
  margin-top: 0px !important;
}

body {
  font-family: Arial, sans-serif;
  font-size: 15px;
  color: #333333;
}

a {
  text-decoration: none;
  color: #618dbe;
}

a:hover {
  text-decoration: underline;
}

.clear {
  clear: both;
}

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

.container {
  margin: auto;
  margin-top: 20px;
  padding: 0;
}

.container .menu-top {
  background: #618dbe;
  height: 60px;
  padding: 20px 0px 0px 20px;
}

.container .menu-top .hamburger {
  display: none;
}

.container .menu-top .left ul {
  margin: 0;
  padding: 0;
}

.container .menu-top .left ul li {
  display: inline;
  font-size: 16px;
  line-height: 17px;
  margin-left: 10px;
  margin-right: 10px;
  border-radius: 0;
  color: #292929;
  padding-bottom: 5px;
}

.container .menu-top .left ul li:hover {
  border-bottom-color: white;
}

.container .menu-top .left ul li:hover a {
  color: white;
}

.container .menu-top .left ul li a {
  color: white;
  margin-left: 6px;
  margin-right: 6px;
  font-weight: bold;
}

.container .menu-top .left ul li a:hover {
  text-decoration: none;
}

.container .menu-top .left ul li.active {
  border-bottom-color: white;
}

.container .menu-top .left ul li.active a {
  color: white;
}

.container .menu-top .right {
  float: right;
}

.container .menu-top .right span {
  margin-top: -20px;
}

.container .menu-top .right a {
  color: white;
  font-size: 20px;
}

.container .body {
  background: white;
  padding: 20px;
  font-size: 14px;
}

.container .body .left {
  float: left;
}

.container .body .left a {
  color: #618dbe;
}

.container .body .left h1 {
  color: #618dbe;
  font-size: 32px;
  font-weight: normal;
}

.container .body .left h2 {
  color: #618dbe;
  font-size: 26px;
  font-weight: normal;
}

.container .body .left h3 {
  color: #618dbe;
  font-size: 18px;
  font-weight: normal;
}

.container .body .left h4 {
  color: #618dbe;
  font-size: 16px;
  font-weight: normal;
}

.container .body .left .call2action {
  border-radius: 20px;
  border: 4px solid #618dbe;
  padding: 20px;
  text-align: center;
  line-height: 25px;
}

.container .body .left .call2action h2 {
  padding-bottom: 0px;
}

.container .body .left .product {
  margin-top: 25px;
  margin-bottom: 25px;
}

.container .body .left .product .image {
  float: left;
}

.container .body .left .product .text {
  float: left;
}

.container .body .left .products {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}

.container .body .left .products .big_product {
  margin-top: 25px;
  margin-bottom: 25px;
  float: left;
  padding: 10px;
}

.container .body .left .products .big_product .image {
  width: 100%;
  text-align: center;
  float: left;
  margin-bottom: 5px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}

.container .body .left .products .big_product .text {
  float: left;
  background-color: #fafafa;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
  padding: 10px;
}

.container .body .left hr {
  height: 1px;
  background: #ccc;
  border: 0px;
}

.container .body .left .posts {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}

.container .body .left .posts .post {
  float: left;
  margin-bottom: 10px;
  padding-bottom: 15px;
  border-bottom: 1px solid #ccc;
}

.container .body .left .posts .post .image {
  text-align: center;
  float: left;
}

.container .body .left .posts .post .text {
  padding-right: 20px;
  float: left;
}

.container .body .left .small-post {
  float: left;
  margin-bottom: 25px;
}

.container .body .left .small-post .image {
  width: 75px;
  float: left;
}

.container .body .left .small-post .image img {
  width: 50px;
}

.container .body .left .small-post .text {
  width: 280px;
  float: left;
  font-size: 12px;
  line-height: 14px;
}

.container .body .right {
  float: right;
  padding-left: 10px;
}

.container .body .right strong {
  color: #fdab00;
  text-transform: uppercase;
  font-size: 18px;
}

.container .body .right h3 {
  text-transform: uppercase;
  font-size: 15px;
}

.container .body .right .list_products {
  background-color: #ffffff;
  border-style: solid;
  border-color: white;
  border-radius: 3px;
}

.container .body .right .list_products ul {
  list-style: none;
  font-size: 13px;
  padding: 0;
  margin: 0;
}

.container .body .right .list_products ul a {
  font-weight: bold;
}

.container .body .right .list_products ul li {
  border-top: 1px solid #ccc;
  padding: 5px 0px 5px 0px;
}

.container .body .right .box {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3), 0 0 10px rgba(0, 0, 0, 0.1) inset;
  background-color: #ffffff;
  border-style: solid;
  border-color: white;
  border-radius: 3px;
  padding: 20px;
}

.container .body .right .box h2 {
  color: #fdab00;
}

.container .body .right .box ul {
  padding-left: 15px;
}

.container .body .right .banner {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  border: 1px solid rgba(0, 0, 0, 0.2);
}

.container .body .order {
  float: left;
}

.container .body .order h1 {
  color: #618dbe;
  font-size: 30px;
  padding-bottom: 20px;
  font-weight: normal;
}

.container .body .order h2 {
  color: #618dbe;
  font-size: 25px;
  padding-bottom: 20px;
  font-weight: normal;
}

.container .body .order h3 {
  color: #618dbe;
  font-size: 20px;
  padding-bottom: 10px;
  font-weight: normal;
}

.container .body .order .order-product .image {
  float: left;
  width: 25%;
}

.container .body .order .order-product .image img {
  width: 150px;
}

.container .body .order .order-product .text {
  float: left;
  width: 75%;
}

.container .body .order .forma {
  clear: both;
}

.container .body .order .forma input,
.container .body .order .forma textarea,
.container .body .order .forma select {
  border: 1px solid #ccc;
  padding: 5px;
  margin: 5px 0px 5px 0px;
  border-radius: 5px;
  width: 650px;
}

.container .body .order .forma label {
  clear: both;
  font-weight: bold;
}

.container .body .order .forma .failedInput {
  border: 1px solid red;
}

.container .body .order .forma .micro_product {
  float: left;
  clear: both;
}

.container .body .order .forma .micro_product .image {
  float: left;
}

.container .body .order .forma .micro_product .image img {
  width: 100px;
}

.container .body .order .forma .micro_product .order {
  float: left;
}

.container .body .order_right {
  float: right;
  font-size: 14px;
}

.container .body .order_right strong {
  color: #618dbe;
  font-size: 20px;
  padding-bottom: 10px;
  font-weight: normal;
}

.container .body .order_right ul {
  padding: 0;
  margin: 0;
  list-style-position: outside;
}

.container .body .order_right ul li:before {
  content: "\2714";
  color: green;
  padding-right: 5px;
}

.container .body .order_right ul li {
  list-style: none;
  padding: 0;
  margin: 0;
}

.container .footer {
  float: left;
  font-size: 14px;
}

.container .footer h4 {
  color: #EEEEEE;
  font-size: 20px;
}

.container .footer a {
  color: #333;
}

.container .footer ul {
  margin: 0;
  padding: 0;
  padding-left: 15px;
}

.container .footer .floater {
  float: left;
}

.container .footer .middle {
  background: #618dbe;
  padding: 20px;
  clear: both;
}

.container .footer .middle .block {
  float: left;
}

.container .footer .bottom {
  background: white;
  padding: 20px;
  text-align: center;
}

.container .footer .bottom ul {
  margin: 0;
  padding: 0;
}

.container .footer .bottom ul li {
  display: inline;
  font-size: 14px;
  line-height: 17px;
  border-radius: 0;
  color: #292929;
}

.container .footer .bottom ul li:hover a {
  text-decoration: underline;
}

.container .footer .bottom ul li a {
  color: #292929;
  margin-left: 10px;
  margin-right: 10px;
}

.container .footer .bottom ul li.active {
  border-bottom-color: white;
}

.container .footer .bottom ul li.active a {
  color: white;
}

.container .footer p {
  text-align: center;
  font-size: 14px;
}

.container .footer_call {
  position: fixed;
  bottom: 0;
  left: 0;
  height: 40px;
  background: #FDab00;
  color: white;
  text-align: center;
  z-index: 1000;
  font-weight: bold;
  padding-top: 20px;
  font-size: 30px;
  display: none;
}

.container .footer_call a {
  color: white;
}

.btnx {
  background: #3498db;
  background-image: linear-gradient(to bottom, #3498db, #2980b9);
  border-radius: 10px;
  font-family: Arial;
  color: white !important;
  font-size: 16px;
  padding: 10px 20px 10px 20px;
  text-decoration: none;
  cursor: pointer;
}

.btnx:hover {
  background: #3cb0fd;
  background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
  text-decoration: none;
}

.btn2 {
  background: #3498db;
  background-image: linear-gradient(to bottom, #3498db, #2980b9);
  border-radius: 5px;
  font-family: Arial;
  color: white !important;
  font-size: 14px;
  padding: 5px 10px 5px 10px;
  text-decoration: none;
  cursor: pointer;
}

.btn2:hover {
  background: #3cb0fd;
  background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
  text-decoration: none;
}

.clear {
  clear: both;
}

.wpcf7 {
  max-width: 1200px !important;
}

.wpcf7 label {
  font-weight: bold;
}

.wpcf7 input,
.wpcf7 select,
.wpcf7 textarea {
  border: 1px solid #000 !important;
}

.wpcf7 input[type=submit] {
  background-color: #ffc107 !important;
  border: 0px !important;
  color: white !important;
}

.wpcf7 input[type=submit]:hover {
  background-color: #ffc107 !important;
  border: 1px solid #000 !important;
  color: black !important;
}

/* Large devices (laptops/desktops, 992px and up) */

@media only screen and (min-width: 1000px) and (max-width: 1200px) {
  .container .body .left h1 {
    font-size: 28px;
  }

  .container .footer {
    font-size: 12px;
  }
}

.side_products .product {
  border-top: 1px solid lightgray;
  padding: 10px 60px;
  display: table;
  width: 100%;
  position: relative;
}

.side_products .product img {
  width: 30px;
  height: auto;
  position: absolute;
  left: 10px;
  top: 50%;
  transform: translateY(-50%);
}

.side_products .product .text {
  float: left;
  font-family: Arial, sans-serif;
  color: #505358;
  position: relative;
  top: 4px;
}

.side_products .product .text .name {
  font-weight: 700;
  font-size: 15px;
  line-height: 14px;
}

.side_products .product .text .price {
  font-size: 12px;
}

.side_products .product .text:hover .name,
.side_products .product .text:hover .price {
  text-decoration: underline;
}

.side_products .product svg {
  width: 30px;
  height: auto;
  fill: #f8ab0c;
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  cursor: pointer;
  transition: fill .6s ease-in;
}

.side_products .product svg:hover {
  fill: #000000;
}

@media (max-width: 999px) {
  .container .body .right {
    padding-left: 0;
  }

  .side_products .product {
    padding: 10px 45px;
  }

  .side_products .product img {
    left: 5px;
  }

  .side_products .product svg {
    right: 5px;
  }

  .side_products .product .text .name {
    font-size: 12px;
    line-height: 12px;
  }
}

@media (max-width: 767px) {
  .side_products .product {
    padding: 10px 60px;
  }

  .side_products .product img {
    left: 10px;
  }

  .side_products .product svg {
    right: 10px;
  }
}

/* Medium devices (landscape tablets, 768px and up) */

@media only screen and (min-width: 768px) and (max-width: 999px) {
  .container .menu-top .right {
    display: none;
  }

  .container .menu-top .left ul li {
    font-size: 15px;
    margin-left: 5px;
    margin-right: 5px;
  }

  .container .menu-top .left ul li a {
    margin-left: 0px;
    margin-right: 0px;
  }

  .container .body {
    font-size: 13px;
  }

  .container .body .left h1 {
    font-size: 21px;
  }

  .container .body .left h2 {
    font-size: 19px;
  }

  .container .body .left h3 {
    font-size: 16px;
  }

  .container .body .right h2 {
    font-size: 16px;
  }

  .container .body .right h3 {
    font-size: 14px;
  }

  .container .body .right .list_products ul {
    font-size: 11px;
  }

  .container .body .order .forma input,
  .container .body .order .forma textarea,
  .container .body .order .forma select {
    border: 1px solid #ccc;
    padding: 5px;
    margin: 5px 0px 5px 0px;
    border-radius: 5px;
  }

  .container .footer {
    font-size: 12px;
  }

  .container .footer h4 {
    font-size: 16px;
  }

  .container .footer_call {
    display: block;
  }
}

/* Small devices (portrait tablets and large phones, 600px and up) */

@media only screen and (min-width: 601px) and (max-width: 767px) {
  .container .menu-top .left ul li {
    font-size: 13px !important;
    margin-left: 4px;
    margin-right: 4px;
  }

  .container .menu-top .left ul li a {
    margin-left: 0px;
    margin-right: 0px;
  }

  .container .product .right_small {
    display: none;
  }

  .container .body .left h1 {
    font-size: 20px;
  }

  .container .body .left h2 {
    font-size: 19px;
  }

  .container .body .left h3 {
    font-size: 16px;
  }

  .container .body .right_small {
    padding-top: 20px;
  }

  .container .body .right h2 {
    font-size: 16px;
  }

  .container .body .right h3 {
    font-size: 14px;
  }

  .container .body .right .list_products ul {
    font-size: 11px;
  }

  .container .body .order .forma input,
  .container .body .order .forma textarea,
  .container .body .order .forma select {
    border: 1px solid #ccc;
    padding: 5px;
    margin: 5px 0px 5px 0px;
    border-radius: 5px;
  }

  .container .footer_call {
    display: block;
  }
}

/* Extra small devices (phones, 600px and down) */

@media (max-width: 600px) {
  .container {
    margin-top: 0px;
  }

  .container .menu-top .left ul li {
    font-size: 13px;
    margin-left: 4px;
    margin-right: 4px;
  }

  .container .menu-top .left ul li a {
    margin-left: 0px;
    margin-right: 0px;
  }

  .container .body .left h1 {
    font-size: 20px;
  }

  .container .body .left h2 {
    font-size: 19px;
  }

  .container .body .left h3 {
    font-size: 16px;
  }
}

@media (max-width: 450px) {
  .container .menu-top {
    height: 80px;
    padding: 20px 0px 0px 20px;
  }

  .container .menu-top .left ul li {
    display: inline-block;
    font-size: 12px;
    margin-left: 2px;
    margin-right: 2px;
  }

  .container .menu-top .left ul li a {
    margin-left: 0px;
    margin-right: 0px;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL21udC9jL1VzZXJzL0tNL0RvY3VtZW50cy9TaXRlcy9rYW1hZ3JhLXNsby5jb20vd3AtY29udGVudC90aGVtZXMvdW5kZXJzdHJhcC1jaGlsZC9yZXNvdXJjZXMvc2Fzcy9hcHAuc2NzcyIsInNvdXJjZXMiOlsiL21udC9jL1VzZXJzL0tNL0RvY3VtZW50cy9TaXRlcy9rYW1hZ3JhLXNsby5jb20vd3AtY29udGVudC90aGVtZXMvdW5kZXJzdHJhcC1jaGlsZC9yZXNvdXJjZXMvc2Fzcy9hcHAuc2NzcyIsIi9tbnQvYy9Vc2Vycy9LTS9Eb2N1bWVudHMvU2l0ZXMva2FtYWdyYS1zbG8uY29tL3dwLWNvbnRlbnQvdGhlbWVzL3VuZGVyc3RyYXAtY2hpbGQvcmVzb3VyY2VzL3Nhc3Mvbm9ybWFsaXplL192YXJpYWJsZXMuc2NzcyIsIi9tbnQvYy9Vc2Vycy9LTS9Eb2N1bWVudHMvU2l0ZXMva2FtYWdyYS1zbG8uY29tL3dwLWNvbnRlbnQvdGhlbWVzL3VuZGVyc3RyYXAtY2hpbGQvcmVzb3VyY2VzL3Nhc3Mvbm9ybWFsaXplL192ZXJ0aWNhbC1yaHl0aG0uc2NzcyIsIi9tbnQvYy9Vc2Vycy9LTS9Eb2N1bWVudHMvU2l0ZXMva2FtYWdyYS1zbG8uY29tL3dwLWNvbnRlbnQvdGhlbWVzL3VuZGVyc3RyYXAtY2hpbGQvcmVzb3VyY2VzL3Nhc3Mvbm9ybWFsaXplL19ub3JtYWxpemUtbWl4aW4uc2NzcyIsIi9tbnQvYy9Vc2Vycy9LTS9Eb2N1bWVudHMvU2l0ZXMva2FtYWdyYS1zbG8uY29tL3dwLWNvbnRlbnQvdGhlbWVzL3VuZGVyc3RyYXAtY2hpbGQvcmVzb3VyY2VzL3Nhc3Mva2FtYWdyYS5zY3NzIiwiL21udC9jL1VzZXJzL0tNL0RvY3VtZW50cy9TaXRlcy9rYW1hZ3JhLXNsby5jb20vd3AtY29udGVudC90aGVtZXMvdW5kZXJzdHJhcC1jaGlsZC9yZXNvdXJjZXMvc2Fzcy9yZXNwb25zaXZlL19sZy5zY3NzIiwiL21udC9jL1VzZXJzL0tNL0RvY3VtZW50cy9TaXRlcy9rYW1hZ3JhLXNsby5jb20vd3AtY29udGVudC90aGVtZXMvdW5kZXJzdHJhcC1jaGlsZC9yZXNvdXJjZXMvc2Fzcy9yZXNwb25zaXZlL19tZC5zY3NzIiwiL21udC9jL1VzZXJzL0tNL0RvY3VtZW50cy9TaXRlcy9rYW1hZ3JhLXNsby5jb20vd3AtY29udGVudC90aGVtZXMvdW5kZXJzdHJhcC1jaGlsZC9yZXNvdXJjZXMvc2Fzcy9yZXNwb25zaXZlL19zbS5zY3NzIiwiL21udC9jL1VzZXJzL0tNL0RvY3VtZW50cy9TaXRlcy9rYW1hZ3JhLXNsby5jb20vd3AtY29udGVudC90aGVtZXMvdW5kZXJzdHJhcC1jaGlsZC9yZXNvdXJjZXMvc2Fzcy9yZXNwb25zaXZlL194cy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBjaGFyc2V0ICdVVEYtOCc7XG5cblxuJGJsdWVfbGluazogIzYxOGRiZTtcbiRibHVlX3RpdGxlOiAjNjE4ZGJlO1xuJGJsdWVfYm9yZGVyczogIzYxOGRiZTtcbiRibHVlX2JhY2tncm91bmQ6ICM2MThkYmU7XG4kb3JhbmdlX3RpdGxlOiAjZmRhYjAwO1xuXG5AaW1wb3J0ICdub3JtYWxpemUvdmFyaWFibGVzJztcbkBpbXBvcnQgJ25vcm1hbGl6ZS92ZXJ0aWNhbC1yaHl0aG0nO1xuQGltcG9ydCAnbm9ybWFsaXplL25vcm1hbGl6ZS1taXhpbic7XG5cblxuQGltcG9ydCBcImthbWFncmFcIjtcblxuXG5cbkBpbXBvcnQgJ3Jlc3BvbnNpdmUvbGcnO1xuQGltcG9ydCAncmVzcG9uc2l2ZS9tZCc7XG5AaW1wb3J0ICdyZXNwb25zaXZlL3NtJztcbkBpbXBvcnQgJ3Jlc3BvbnNpdmUveHMnO1xuIiwiLy9cbi8vIFZhcmlhYmxlc1xuLy9cbi8vIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdmFsdWVzIGJ5IHNldHRpbmcgdGhlIHZhcmlhYmxlcyBpbiB5b3VyIFNhc3Ncbi8vIGJlZm9yZSBpbXBvcnRpbmcgdGhlIG5vcm1hbGl6ZS1zY3NzIGxpYnJhcnkuXG5cbi8vIFRoZSBmb250IHNpemUgc2V0IG9uIHRoZSByb290IGh0bWwgZWxlbWVudC5cbiRiYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8gVGhlIGJhc2UgbGluZSBoZWlnaHQgZGV0ZXJtaW5lcyB0aGUgYmFzaWMgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0uXG4kYmFzZS1saW5lLWhlaWdodDogMjRweCAhZGVmYXVsdDtcblxuLy8gVGhlIGxlbmd0aCB1bml0IGluIHdoaWNoIHRvIG91dHB1dCB2ZXJ0aWNhbCByaHl0aG0gdmFsdWVzLlxuLy8gU3VwcG9ydGVkIHZhbHVlczogcHgsIGVtLCByZW0uXG4kYmFzZS11bml0OiAnZW0nICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBmb250IGZhbWlseS5cbiRiYXNlLWZvbnQtZmFtaWx5OiBudWxsICFkZWZhdWx0O1xuXG4vLyBUaGUgZm9udCBzaXplcyBmb3IgaDEtaDYuXG4kaDEtZm9udC1zaXplOiAyICAgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGgyLWZvbnQtc2l6ZTogMS41ICAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRoMy1mb250LXNpemU6IDEuMTcgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG4kaDQtZm9udC1zaXplOiAxICAgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGg1LWZvbnQtc2l6ZTogMC44MyAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRoNi1mb250LXNpemU6IDAuNjcgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBhbW91bnQgbGlzdHMgYW5kIGJsb2NrcXVvdGVzIGFyZSBpbmRlbnRlZC5cbiRpbmRlbnQtYW1vdW50OiA0MHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZm9sbG93aW5nIHZhcmlhYmxlIGNvbnRyb2xzIHdoZXRoZXIgbm9ybWFsaXplLXNjc3Mgd2lsbCBvdXRwdXRcbi8vIGZvbnQtc2l6ZXMsIGxpbmUtaGVpZ2h0cyBhbmQgYmxvY2stbGV2ZWwgdG9wL2JvdHRvbSBtYXJnaW5zIHRoYXQgZm9ybSBhIGJhc2ljXG4vLyB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHBhZ2UsIHdoaWNoIGRpZmZlcnMgZnJvbSB0aGUgb3JpZ2luYWwgTm9ybWFsaXplLmNzcy5cbi8vIEhvd2V2ZXIsIGNoYW5naW5nIGFueSBvZiB0aGUgdmFyaWFibGVzIGFib3ZlIHdpbGwgY2F1c2Vcbi8vICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHRvIGJlIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRydWUuXG4kbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobTogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvL1xuLy8gVmVydGljYWwgUmh5dGhtXG4vL1xuLy8gVGhpcyBpcyB0aGUgbWluaW1hbCBhbW91bnQgb2YgY29kZSBuZWVkZWQgdG8gY3JlYXRlIHZlcnRpY2FsIHJoeXRobSBpbiBvdXJcbi8vIENTUy4gSWYgeW91IGFyZSBsb29raW5nIGZvciBhIHJvYnVzdCBzb2x1dGlvbiwgbG9vayBhdCB0aGUgZXhjZWxsZW50IFR5cGV5XG4vLyBsaWJyYXJ5LiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcHRhcmFudG8vdHlwZXlcblxuQGZ1bmN0aW9uIG5vcm1hbGl6ZS1yaHl0aG0oJHZhbHVlLCAkcmVsYXRpdmUtdG86ICRiYXNlLWZvbnQtc2l6ZSwgJHVuaXQ6ICRiYXNlLXVuaXQpIHtcbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSBweCB7XG4gICAgQGVycm9yIFwiVGhlIG5vcm1hbGl6ZSB2ZXJ0aWNhbC1yaHl0aG0gbW9kdWxlIG9ubHkgc3VwcG9ydHMgcHggaW5wdXRzLiBUaGUgdHlwZXkgbGlicmFyeSBpcyBiZXR0ZXIuXCI7XG4gIH1cbiAgQGlmICR1bml0ID09IHJlbSB7XG4gICAgQHJldHVybiAoJHZhbHVlIC8gJGJhc2UtZm9udC1zaXplKSAqIDFyZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gZW0ge1xuICAgIEByZXR1cm4gKCR2YWx1ZSAvICRyZWxhdGl2ZS10bykgKiAxZW07XG4gIH1cbiAgQGVsc2UgeyAvLyAkdW5pdCA9PSBweFxuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG59XG5cbkBtaXhpbiBub3JtYWxpemUtZm9udC1zaXplKCR2YWx1ZSwgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSAncHgnIHtcbiAgICBAZXJyb3IgXCJub3JtYWxpemUtZm9udC1zaXplKCkgb25seSBzdXBwb3J0cyBweCBpbnB1dHMuIFRoZSB0eXBleSBsaWJyYXJ5IGlzIGJldHRlci5cIjtcbiAgfVxuICBmb250LXNpemU6IG5vcm1hbGl6ZS1yaHl0aG0oJHZhbHVlLCAkcmVsYXRpdmUtdG8pO1xufVxuXG5AbWl4aW4gbm9ybWFsaXplLXJoeXRobSgkcHJvcGVydHksICR2YWx1ZXMsICRyZWxhdGl2ZS10bzogJGJhc2UtZm9udC1zaXplKSB7XG4gICR2YWx1ZS1saXN0OiAkdmFsdWVzO1xuICAkc2VwOiBzcGFjZTtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlcykgPT0gJ2xpc3QnIHtcbiAgICAkc2VwOiBsaXN0LXNlcGFyYXRvcigkdmFsdWVzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHZhbHVlLWxpc3Q6IGFwcGVuZCgoKSwgJHZhbHVlcyk7XG4gIH1cblxuICAkbm9ybWFsaXplZC12YWx1ZXM6ICgpO1xuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlLWxpc3Qge1xuICAgIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAkdmFsdWUgIT0gMCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAqIG5vcm1hbGl6ZS1yaHl0aG0oJGJhc2UtbGluZS1oZWlnaHQsICRyZWxhdGl2ZS10byk7XG4gICAgfVxuICAgICRub3JtYWxpemVkLXZhbHVlczogYXBwZW5kKCRub3JtYWxpemVkLXZhbHVlcywgJHZhbHVlLCAkc2VwKTtcbiAgfVxuICAjeyRwcm9wZXJ0eX06ICRub3JtYWxpemVkLXZhbHVlcztcbn1cblxuQG1peGluIG5vcm1hbGl6ZS1tYXJnaW4oJHZhbHVlcywgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGluY2x1ZGUgbm9ybWFsaXplLXJoeXRobShtYXJnaW4sICR2YWx1ZXMsICRyZWxhdGl2ZS10byk7XG59XG5cbkBtaXhpbiBub3JtYWxpemUtbGluZS1oZWlnaHQoJGZvbnQtc2l6ZSwgJG1pbi1saW5lLXBhZGRpbmc6IDJweCkge1xuICAkbGluZXM6IGNlaWwoJGZvbnQtc2l6ZSAvICRiYXNlLWxpbmUtaGVpZ2h0KTtcbiAgLy8gSWYgbGluZXMgYXJlIGNyYW1wZWQgaW5jbHVkZSBzb21lIGV4dHJhIGxlYWRpbmcuXG4gIEBpZiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplKSA8ICgkbWluLWxpbmUtcGFkZGluZyAqIDIpIHtcbiAgICAkbGluZXM6ICRsaW5lcyArIDE7XG4gIH1cbiAgQGluY2x1ZGUgbm9ybWFsaXplLXJoeXRobShsaW5lLWhlaWdodCwgJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cbiIsIi8vIEhlbHBlciBmdW5jdGlvbiBmb3IgdGhlIG5vcm1hbGl6ZSgpIG1peGluLlxuQGZ1bmN0aW9uIF9ub3JtYWxpemUtaW5jbHVkZSgkc2VjdGlvbiwgJGV4Y2x1ZGU6IG51bGwpIHtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBuZWVkZWQgYnkgdGhpcyBmdW5jdGlvbi5cbiAgQGlmIG5vdCBnbG9iYWxfdmFyaWFibGVfZXhpc3RzKF9ub3JtYWxpemUtaW5jbHVkZSkge1xuICAgICRfbm9ybWFsaXplLWluY2x1ZGU6ICgpICFnbG9iYWw7XG4gICAgJF9ub3JtYWxpemUtZXhjbHVkZTogKCkgIWdsb2JhbDtcbiAgfVxuICAvLyBTaW5jZSB3ZSBhcmUgZ2l2ZW4gMiBwYXJhbWV0ZXJzLCBzZXQgdGhlIGdsb2JhbCB2YXJpYWJsZXMuXG4gIEBpZiAkZXhjbHVkZSAhPSBudWxsIHtcbiAgICAkaW5jbHVkZTogJHNlY3Rpb247XG4gICAgLy8gU2FzcyBkb2Vzbid0IGhhdmUgc3RhdGljIHZhcmlhYmxlcywgc28gdGhlIHdvcmstYXJvdW5kIGlzIHRvIHN0dWZmIHRoZXNlXG4gICAgLy8gdmFsdWVzIGludG8gZ2xvYmFsIHZhcmlhYmxlcyBzbyB3ZSBjYW4gYWNjZXNzIHRoZW0gaW4gZnV0dXJlIGNhbGxzLlxuICAgICRfbm9ybWFsaXplLWluY2x1ZGU6IGlmKHR5cGUtb2YoJGluY2x1ZGUpID09ICdsaXN0JywgJGluY2x1ZGUsICgkaW5jbHVkZSkpICFnbG9iYWw7XG4gICAgJF9ub3JtYWxpemUtZXhjbHVkZTogaWYodHlwZS1vZigkZXhjbHVkZSkgPT0gJ2xpc3QnLCAkZXhjbHVkZSwgKCRleGNsdWRlKSkgIWdsb2JhbDtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBDaGVjayBpZiAkc2VjdGlvbiBpcyBpbiB0aGUgJGluY2x1ZGUgbGlzdC5cbiAgQGlmIGluZGV4KCRfbm9ybWFsaXplLWluY2x1ZGUsICRzZWN0aW9uKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIC8vIElmICRpbmNsdWRlIGlzIHNldCB0byAoYWxsKSwgbWFrZSBzdXJlICRzZWN0aW9uIGlzIG5vdCBpbiAkZXhjbHVkZS5cbiAgQGVsc2UgaWYgbm90IGluZGV4KCRfbm9ybWFsaXplLWV4Y2x1ZGUsICRzZWN0aW9uKSBhbmQgaW5kZXgoJF9ub3JtYWxpemUtaW5jbHVkZSwgYWxsKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbkBtaXhpbiBub3JtYWxpemUoJGluY2x1ZGU6IChhbGwpLCAkZXhjbHVkZTogKCkpIHtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgaGVscGVyIGZ1bmN0aW9uIGJ5IHBhc3NpbmcgaXQgdGhpcyBtaXhpbidzIHBhcmFtZXRlcnMuXG4gICRpbml0OiBfbm9ybWFsaXplLWluY2x1ZGUoJGluY2x1ZGUsICRleGNsdWRlKTtcblxuICAvLyBJZiB3ZSd2ZSBjdXN0b21pemVkIGFueSBmb250IHZhcmlhYmxlcywgd2UnbGwgbmVlZCBleHRyYSBwcm9wZXJ0aWVzLlxuICBAaWYgJGJhc2UtbGluZS1oZWlnaHQgIT0gMjRweFxuICAgIG9yICRiYXNlLXVuaXQgIT0gJ2VtJ1xuICAgIG9yICRoMi1mb250LXNpemUgIT0gMS41ICAqICRiYXNlLWZvbnQtc2l6ZVxuICAgIG9yICRoMy1mb250LXNpemUgIT0gMS4xNyAqICRiYXNlLWZvbnQtc2l6ZVxuICAgIG9yICRoNC1mb250LXNpemUgIT0gMSAgICAqICRiYXNlLWZvbnQtc2l6ZVxuICAgIG9yICRoNS1mb250LXNpemUgIT0gMC44MyAqICRiYXNlLWZvbnQtc2l6ZVxuICAgIG9yICRoNi1mb250LXNpemUgIT0gMC42NyAqICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG06IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIC8qISBub3JtYWxpemUtc2NzcyB8IE1JVC9HUEx2MiBMaWNlbnNlIHwgYml0Lmx5L25vcm1hbGl6ZS1zY3NzICovXG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShkb2N1bWVudCkge1xuICAgIC8qIERvY3VtZW50XG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAgICAgKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluXG4gICAgICogICAgSUUgb24gV2luZG93cyBQaG9uZSBhbmQgaW4gaU9TLlxuICAgICAqL1xuXG4gICAgaHRtbCB7XG4gICAgICBAaWYgJGJhc2UtZm9udC1mYW1pbHkge1xuICAgICAgICAvKiBDaGFuZ2UgdGhlIGRlZmF1bHQgZm9udCBmYW1pbHkgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuICovXG4gICAgICAgIGZvbnQtZmFtaWx5OiAkYmFzZS1mb250LWZhbWlseTtcbiAgICAgIH1cbiAgICAgIEBpZiAkYmFzZS1mb250LXNpemUgIT0gMTZweCBvciAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAgIC8vIENvcnJlY3Qgb2xkIGJyb3dzZXIgYnVnIHRoYXQgcHJldmVudGVkIGFjY2Vzc2libGUgcmVzaXppbmcgb2YgdGV4dFxuICAgICAgICAvLyB3aGVuIHJvb3QgZm9udC1zaXplIGlzIHNldCB3aXRoIHB4IG9yIGVtLlxuICAgICAgICBmb250LXNpemU6ICgkYmFzZS1mb250LXNpemUgLyAxNnB4KSAqIDEwMCU7XG4gICAgICB9XG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgICBsaW5lLWhlaWdodDogKCRiYXNlLWxpbmUtaGVpZ2h0IC8gJGJhc2UtZm9udC1zaXplKSAqIDFlbTsgLyogMSAqL1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTsgLyogMSAqL1xuICAgICAgfVxuICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoc2VjdGlvbnMpIHtcbiAgICAvKiBTZWN0aW9uc1xuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAgICAgKi9cblxuICAgIGJvZHkge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICAgICAqL1xuXG4gICAgYXJ0aWNsZSxcbiAgICBhc2lkZSxcbiAgICBmb290ZXIsXG4gICAgaGVhZGVyLFxuICAgIG5hdixcbiAgICBzZWN0aW9uIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAgICAgKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICAgICAqL1xuXG4gICAgaDEge1xuICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWZvbnQtc2l6ZSgkaDEtZm9udC1zaXplKTtcbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDEtZm9udC1zaXplKTtcbiAgICAgIH1cblxuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgLyogU2V0IDEgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMuICovXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDEtZm9udC1zaXplKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgbWFyZ2luOiAwLjY3ZW0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgaDIge1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoMi1mb250LXNpemUpO1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGgyLWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDItZm9udC1zaXplKTtcbiAgICAgIH1cblxuICAgICAgaDMge1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoMy1mb250LXNpemUpO1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGgzLWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDMtZm9udC1zaXplKTtcbiAgICAgIH1cblxuICAgICAgaDQge1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoNC1mb250LXNpemUpO1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGg0LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDQtZm9udC1zaXplKTtcbiAgICAgIH1cblxuICAgICAgaDUge1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoNS1mb250LXNpemUpO1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGg1LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDUtZm9udC1zaXplKTtcbiAgICAgIH1cblxuICAgICAgaDYge1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoNi1mb250LXNpemUpO1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGg2LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDYtZm9udC1zaXplKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGdyb3VwaW5nKSB7XG4gICAgLyogR3JvdXBpbmcgY29udGVudFxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgLyoqXG4gICAgICAgKiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2luLlxuICAgICAgICovXG5cbiAgICAgIGJsb2NrcXVvdGUge1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbWFyZ2luKDEgJGluZGVudC1hbW91bnQpO1xuICAgICAgfVxuXG4gICAgICBkbCxcbiAgICAgIG9sLFxuICAgICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbWFyZ2luKDEgMCk7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogVHVybiBvZmYgbWFyZ2lucyBvbiBuZXN0ZWQgbGlzdHMuXG4gICAgICAgKi9cblxuICAgICAgb2wsXG4gICAgICB1bCB7XG4gICAgICAgIG9sLFxuICAgICAgICB1bCB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGRkIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMCAkaW5kZW50LWFtb3VudDtcbiAgICAgIH1cblxuICAgICAgb2wsXG4gICAgICB1bCB7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAwICRpbmRlbnQtYW1vdW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICAgICAqL1xuXG4gICAgZmlnY2FwdGlvbixcbiAgICBmaWd1cmUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IG1hcmdpbiBpbiBJRSA4LlxuICAgICAqL1xuXG4gICAgZmlndXJlIHtcbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAkaW5kZW50LWFtb3VudCk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIG1hcmdpbjogMWVtICRpbmRlbnQtYW1vdW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gICAgICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG4gICAgICovXG5cbiAgICBociB7XG4gICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMSAqL1xuICAgICAgaGVpZ2h0OiAwOyAvKiAxICovXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICAgICAqL1xuXG4gICAgbWFpbiB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgLyoqXG4gICAgICAgKiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2luLlxuICAgICAgICovXG5cbiAgICAgIHAsXG4gICAgICBwcmUge1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbWFyZ2luKDEgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAgICAgKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBwcmUge1xuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gICAgICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUobGlua3MpIHtcbiAgICAvKiBMaW5rc1xuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKipcbiAgICAgKiAxLiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gICAgICogMi4gUmVtb3ZlIGdhcHMgaW4gbGlua3MgdW5kZXJsaW5lIGluIGlPUyA4KyBhbmQgU2FmYXJpIDgrLlxuICAgICAqL1xuXG4gICAgYSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyogMSAqL1xuICAgICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsgLyogMiAqL1xuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUodGV4dCkge1xuICAgIC8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctIGFuZCBGaXJlZm94IDM5LS5cbiAgICAgKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICAgICAqL1xuXG4gICAgYWJiclt0aXRsZV0ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsgLyogMSAqL1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXZlbnQgdGhlIGR1cGxpY2F0ZSBhcHBsaWNhdGlvbiBvZiBgYm9sZGVyYCBieSB0aGUgbmV4dCBydWxlIGluIFNhZmFyaSA2LlxuICAgICAqL1xuXG4gICAgYixcbiAgICBzdHJvbmcge1xuICAgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAgICAgKi9cblxuICAgIGIsXG4gICAgc3Ryb25nIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAgICAgKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBjb2RlLFxuICAgIGtiZCxcbiAgICBzYW1wIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xuICAgICAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzdHlsZSBpbiBBbmRyb2lkIDQuMy0uXG4gICAgICovXG5cbiAgICBkZm4ge1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBiYWNrZ3JvdW5kIGFuZCBjb2xvciBpbiBJRSA5LS5cbiAgICAgKi9cblxuICAgIG1hcmsge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMDtcbiAgICAgIGNvbG9yOiAjMDAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqL1xuXG4gICAgc21hbGwge1xuICAgICAgZm9udC1zaXplOiA4MCU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gICAgICogYWxsIGJyb3dzZXJzLlxuICAgICAqL1xuXG4gICAgc3ViLFxuICAgIHN1cCB7XG4gICAgICBmb250LXNpemU6IDc1JTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAgIH1cblxuICAgIHN1YiB7XG4gICAgICBib3R0b206IC0wLjI1ZW07XG4gICAgfVxuXG4gICAgc3VwIHtcbiAgICAgIHRvcDogLTAuNWVtO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoZW1iZWRkZWQpIHtcbiAgICAvKiBFbWJlZGRlZCBjb250ZW50XG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICAgICAqL1xuXG4gICAgYXVkaW8sXG4gICAgdmlkZW8ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGlPUyA0LTcuXG4gICAgICovXG5cbiAgICBhdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIGhlaWdodDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLS5cbiAgICAgKi9cblxuICAgIGltZyB7XG4gICAgICBib3JkZXItc3R5bGU6IG5vbmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZSB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gICAgICovXG5cbiAgICBzdmc6bm90KDpyb290KSB7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoZm9ybXMpIHtcbiAgICAvKiBGb3Jtc1xuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKipcbiAgICAgKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICAgICAqIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAgICAgKi9cblxuICAgIGJ1dHRvbixcbiAgICBpbnB1dCxcbiAgICBvcHRncm91cCxcbiAgICBzZWxlY3QsXG4gICAgdGV4dGFyZWEge1xuICAgICAgZm9udC1mYW1pbHk6IGlmKCRiYXNlLWZvbnQtZmFtaWx5LCAkYmFzZS1mb250LWZhbWlseSwgc2Fucy1zZXJpZik7IC8qIDEgKi9cbiAgICAgIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICgkYmFzZS1saW5lLWhlaWdodCAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxZW07IC8qIDEgKi9cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMDsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICAgICAqL1xuXG4gICAgYnV0dG9uIHtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICAgICAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAgICAgKi9cblxuICAgIGJ1dHRvbixcbiAgICBzZWxlY3QgeyAvKiAxICovXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2BcbiAgICAgKiAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4gICAgICogMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAgICAgKi9cblxuICAgIGJ1dHRvbixcbiAgICBodG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG4gICAgW3R5cGU9XCJyZXNldFwiXSxcbiAgICBbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xuICAgIH1cblxuICAgIGJ1dHRvbixcbiAgICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgICBbdHlwZT1cInJlc2V0XCJdLFxuICAgIFt0eXBlPVwic3VibWl0XCJdIHtcblxuICAgICAgLyoqXG4gICAgICAgKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICAgICAgICovXG5cbiAgICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICAgICAgICovXG5cbiAgICAgICY6LW1vei1mb2N1c3Jpbmcge1xuICAgICAgICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAgICAgKi9cblxuICAgIGlucHV0IHtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLS5cbiAgICAgKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtLlxuICAgICAqL1xuXG4gICAgW3R5cGU9XCJjaGVja2JveFwiXSxcbiAgICBbdHlwZT1cInJhZGlvXCJdIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgICAgIHBhZGRpbmc6IDA7IC8qIDIgKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gICAgICovXG5cbiAgICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gICAgICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gICAgICovXG5cbiAgICBbdHlwZT1cInNlYXJjaFwiXSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cblxuICAgICAgLyoqXG4gICAgICAgKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgYW5kIGNhbmNlbCBidXR0b25zIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICAgICAgICovXG5cbiAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG4gICAgICAmOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gICAgICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICAgICAqL1xuXG4gICAgOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICAgICAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAgICAgKi9cblxuICAgIGZpZWxkc2V0IHtcbiAgICAgIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAgICAgKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gICAgICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBsZWdlbmQge1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICAgICAgZGlzcGxheTogdGFibGU7IC8qIDEgKi9cbiAgICAgIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xuICAgICAgcGFkZGluZzogMDsgLyogMyAqL1xuICAgICAgY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cbiAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAgICAgKiAyLiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICAgICAqL1xuXG4gICAgcHJvZ3Jlc3Mge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiAxICovXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDIgKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuICAgICAqL1xuXG4gICAgdGV4dGFyZWEge1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShpbnRlcmFjdGl2ZSkge1xuICAgIC8qIEludGVyYWN0aXZlXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUsIGFuZCBGaXJlZm94LlxuICAgICAqL1xuXG4gICAgZGV0YWlscyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cbiAgICAgKi9cblxuICAgIHN1bW1hcnkge1xuICAgICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBtZW51IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgICAvKlxuICAgICAgICAgKiAxLiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2luLlxuICAgICAgICAgKiAyLiBTZXQgY29uc2lzdGVudCBzcGFjZSBmb3IgdGhlIGxpc3Qgc3R5bGUgaW1hZ2UuXG4gICAgICAgICAqL1xuXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTsgLyogMSAqL1xuICAgICAgICBwYWRkaW5nOiAwIDAgMCAkaW5kZW50LWFtb3VudDsgLyogMiAqL1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUdXJuIG9mZiBtYXJnaW5zIG9uIG5lc3RlZCBsaXN0cy5cbiAgICAgICAgICovXG5cbiAgICAgICAgbWVudSAmLFxuICAgICAgICBvbCAmLFxuICAgICAgICB1bCAmIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKHNjcmlwdGluZykge1xuICAgIC8qIFNjcmlwdGluZ1xuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAgICAgKi9cblxuICAgIGNhbnZhcyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXG4gICAgICovXG5cbiAgICB0ZW1wbGF0ZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoaGlkZGVuKSB7XG4gICAgLyogSGlkZGVuXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLS5cbiAgICAgKi9cblxuICAgIFtoaWRkZW5dIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCJodG1sIHtcclxuXHRtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDtcclxufVxyXG5ib2R5IHtcclxuXHRmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7XHJcblx0Zm9udC1zaXplOiAxNXB4O1xyXG5cdGNvbG9yOiAjMzMzMzMzO1xyXG59XHJcbmEge1xyXG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRjb2xvcjogJGJsdWVfbGluaztcclxuXHQmOmhvdmVyIHtcclxuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG5cdH1cdFxyXG59XHJcbi5jbGVhciB7XHJcblx0Y2xlYXI6IGJvdGg7XHJcbn1cclxuLmJ0biB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2ZkYWIwMCAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiB3aGl0ZTtcclxufVxyXG4uY29udGFpbmVyIHtcclxuXHJcblx0bWFyZ2luOiBhdXRvO1xyXG5cdG1hcmdpbi10b3A6IDIwcHg7XHJcblx0cGFkZGluZzogMDtcclxuXHJcblx0Lm1lbnUtdG9wIHtcclxuXHRcdGJhY2tncm91bmQ6ICM2MThkYmU7XHJcblx0XHRoZWlnaHQ6IDYwcHg7XHJcblx0XHRwYWRkaW5nOiAyMHB4IDBweCAwcHggMjBweDtcclxuXHRcdC5oYW1idXJnZXIge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0fVxyXG5cdFx0LmxlZnQge1xyXG5cclxuXHJcblx0XHRcdHVsIHtcclxuXHRcdFx0XHRtYXJnaW46IDA7XHJcblx0XHRcdFx0cGFkZGluZzogMDtcclxuXHJcblx0XHRcdFx0bGkge1xyXG5cdFx0XHRcdFx0ZGlzcGxheTppbmxpbmU7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogMTdweDtcclxuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5cdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMDtcclxuXHRcdFx0XHRcdGNvbG9yOiAjMjkyOTI5O1xyXG5cclxuXHJcblx0XHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogNXB4O1xyXG5cdFx0XHRcdFx0Jjpob3ZlciB7XHJcblx0XHRcdFx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6IHdoaXRlO1xyXG5cdFx0XHRcdFx0XHRhIHtcclxuXHRcdFx0XHRcdFx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRhIHtcclxuXHRcdFx0XHRcdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0XHRcdFx0XHRtYXJnaW4tbGVmdDogNnB4O1xyXG5cdFx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDZweDtcclxuXHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHRcdFx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRsaS5hY3RpdmUge1xyXG5cdFx0XHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogd2hpdGU7XHJcblx0XHRcdFx0XHRhIHtcclxuXHRcdFx0XHRcdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0LnJpZ2h0IHtcclxuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0XHRzcGFuIHtcclxuXHRcdFx0XHRtYXJnaW4tdG9wOiAtMjBweFxyXG5cdFx0XHR9XHJcblx0XHRcdGEge1xyXG5cdFx0XHRcdGNvbG9yOiB3aGl0ZTtcclxuXHRcdFx0XHRmb250LXNpemU6IDIwcHg7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0LmJvZHkge1xyXG5cdFx0YmFja2dyb3VuZDogd2hpdGU7XHJcblx0XHRwYWRkaW5nOiAyMHB4O1xyXG5cdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cclxuXHRcdC5sZWZ0IHtcclxuXHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcblxyXG5cdFx0XHRhIHtcclxuXHRcdFx0XHRjb2xvcjogJGJsdWVfbGluaztcclxuXHRcdFx0fVxyXG5cdFx0XHRoMSB7XHJcblx0XHRcdFx0Y29sb3I6ICRibHVlX3RpdGxlO1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMzJweDtcclxuXHRcdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xyXG5cdFx0XHR9XHJcblx0XHRcdGgyIHtcclxuXHRcdFx0XHRjb2xvcjogJGJsdWVfdGl0bGU7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAyNnB4O1xyXG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcblx0XHRcdH1cclxuXHRcdFx0aDMge1xyXG5cdFx0XHRcdGNvbG9yOiAkYmx1ZV90aXRsZTtcclxuXHRcdFx0XHRmb250LXNpemU6IDE4cHg7XHJcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuXHRcdFx0fVxyXG5cdFx0XHRoNCB7XHJcblx0XHRcdFx0Y29sb3I6ICRibHVlX3RpdGxlO1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xyXG5cdFx0XHR9XHJcblx0XHRcdC5jYWxsMmFjdGlvbiB7XHJcblx0XHRcdFx0LXdlYmtpdC1ib3JkZXItcmFkaXVzOiAyMHB4O1xyXG5cdFx0XHRcdC1tb3otYm9yZGVyLXJhZGl1czogMjBweDtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xyXG5cdFx0XHRcdGJvcmRlcjogNHB4IHNvbGlkICRibHVlX2JvcmRlcnM7XHJcblx0XHRcdFx0cGFkZGluZzogMjBweDtcclxuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDI1cHg7XHJcblx0XHRcdFx0aDIge1xyXG5cdFx0XHRcdFx0cGFkZGluZy1ib3R0b206IDBweDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC5wcm9kdWN0IHtcclxuXHRcdFx0XHRtYXJnaW4tdG9wOiAyNXB4O1xyXG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDI1cHg7XHJcblx0XHRcdFx0LmltYWdlIHtcclxuXHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQudGV4dCB7XHJcblx0XHRcdFx0XHRmbG9hdDogbGVmdDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0LnByb2R1Y3RzIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHJcblx0XHRcdFx0LmJpZ19wcm9kdWN0IHtcclxuXHRcdFx0XHRcdG1hcmdpbi10b3A6IDI1cHg7XHJcblx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiAyNXB4O1xyXG5cdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRcdFx0XHRwYWRkaW5nOiAxMHB4O1xyXG5cdFx0XHRcdFx0LmltYWdlIHtcclxuXHRcdFx0XHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDVweDtcclxuXHRcdFx0XHRcdFx0Ym94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwwLDAsMC4yKTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQudGV4dCB7XHJcblx0XHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjUwLCAyNTAsIDI1MCk7XHJcblx0XHRcdFx0XHRcdGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLDAuMik7XHJcblx0XHRcdFx0XHRcdHBhZGRpbmc6IDEwcHg7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRociB7XHJcblx0XHRcdFx0aGVpZ2h0OiAxcHg7XHJcblx0XHRcdFx0YmFja2dyb3VuZDogI2NjYztcclxuXHRcdFx0XHRib3JkZXI6IDBweDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LnBvc3RzIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHJcblx0XHRcdFx0LnBvc3Qge1xyXG5cdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cdFx0XHRcdFx0cGFkZGluZy1ib3R0b206IDE1cHg7XHJcblx0XHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYztcclxuXHRcdFx0XHRcdC5pbWFnZSB7XHJcblx0XHRcdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcblxyXG5cclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQudGV4dCB7XHJcblx0XHRcdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDIwcHg7XHJcblx0XHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LnNtYWxsLXBvc3Qge1xyXG5cdFx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDI1cHg7XHJcblx0XHRcdFx0LmltYWdlIHtcclxuXHRcdFx0XHRcdHdpZHRoOiA3NXB4O1xyXG5cdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRcdFx0XHRpbWcge1xyXG5cdFx0XHRcdFx0XHR3aWR0aDogNTBweDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0LnRleHQge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDI4MHB4O1xyXG5cdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDEycHg7XHJcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogMTRweDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC5yaWdodCB7XHJcblx0XHRcdGZsb2F0OiByaWdodDtcclxuXHRcdFx0cGFkZGluZy1sZWZ0OiAxMHB4O1xyXG5cclxuXHRcdFx0c3Ryb25nIHtcclxuXHRcdFx0XHRjb2xvcjogJG9yYW5nZV90aXRsZTtcclxuXHRcdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMThweDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aDMge1xyXG5cdFx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAxNXB4O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQubGlzdF9wcm9kdWN0cyB7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuXHRcdFx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cdFx0XHRcdGJvcmRlci1jb2xvcjogd2hpdGU7XHJcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xyXG5cclxuXHJcblxyXG5cdFx0XHRcdHVsIHtcclxuXHRcdFx0XHRcdGxpc3Qtc3R5bGU6IG5vbmU7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDEzcHg7XHJcblx0XHRcdFx0XHRwYWRkaW5nOiAwO1xyXG5cdFx0XHRcdFx0bWFyZ2luOiAwO1xyXG5cdFx0XHRcdFx0YSB7XHJcblx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bGkge1xyXG5cdFx0XHRcdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcclxuXHRcdFx0XHRcdFx0cGFkZGluZzogNXB4IDBweCA1cHggMHB4O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LmJveCB7XHJcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKSwgMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjEpIGluc2V0O1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcblx0XHRcdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHRcdFx0XHRib3JkZXItY29sb3I6IHdoaXRlO1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDNweDtcclxuXHRcdFx0XHRwYWRkaW5nOiAyMHB4O1xyXG5cclxuXHRcdFx0XHRoMiB7XHJcblx0XHRcdFx0XHRjb2xvcjogJG9yYW5nZV90aXRsZTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHVsIHtcclxuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDogMTVweDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9XHJcblx0XHRcdC5iYW5uZXIge1xyXG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLDAuMSk7XHJcblx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjIpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQub3JkZXIge1xyXG5cdFx0XHRmbG9hdDogbGVmdDtcclxuXHJcblx0XHRcdGgxIHtcclxuXHRcdFx0XHRjb2xvcjogJGJsdWVfdGl0bGU7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAzMHB4O1xyXG5cdFx0XHRcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xyXG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcblx0XHRcdH1cclxuXHRcdFx0aDIge1xyXG5cdFx0XHRcdGNvbG9yOiAkYmx1ZV90aXRsZTtcclxuXHRcdFx0XHRmb250LXNpemU6IDI1cHg7XHJcblx0XHRcdFx0cGFkZGluZy1ib3R0b206IDIwcHg7XHJcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuXHRcdFx0fVxyXG5cdFx0XHRoMyB7XHJcblx0XHRcdFx0Y29sb3I6ICRibHVlX3RpdGxlO1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMjBweDtcclxuXHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogMTBweDtcclxuXHRcdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xyXG5cdFx0XHR9XHJcblxyXG5cclxuXHJcblx0XHRcdC5vcmRlci1wcm9kdWN0IHtcclxuXHRcdFx0XHQuaW1hZ2Uge1xyXG5cdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRcdFx0XHR3aWR0aDogMjUlO1xyXG5cdFx0XHRcdFx0aW1nIHtcclxuXHRcdFx0XHRcdFx0d2lkdGg6IDE1MHB4XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC50ZXh0IHtcclxuXHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0XHRcdFx0d2lkdGg6IDc1JTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC5mb3JtYSB7XHJcblx0XHRcdFx0Y2xlYXI6IGJvdGg7XHJcblx0XHRcdFx0aW5wdXQsdGV4dGFyZWEsc2VsZWN0IHtcclxuXHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgICBcdFx0XHRcdHBhZGRpbmc6IDVweDtcclxuICAgIFx0XHRcdFx0bWFyZ2luOiA1cHggMHB4IDVweCAwcHg7XHJcbiAgICBcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgIFx0XHRcdFx0d2lkdGg6IDY1MHB4O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0bGFiZWwge1xyXG5cdFx0XHRcdFx0Y2xlYXI6IGJvdGg7XHJcblx0XHRcdFx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0LmZhaWxlZElucHV0IHtcclxuXHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC5taWNyb19wcm9kdWN0IHtcclxuXHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0XHRcdFx0Y2xlYXI6IGJvdGg7XHJcblx0XHRcdFx0XHQuaW1hZ2Uge1xyXG5cdFx0XHRcdFx0XHRmbG9hdDogbGVmdDtcclxuXHJcblx0XHRcdFx0XHRcdGltZyB7XHJcblx0XHRcdFx0XHRcdFx0d2lkdGg6IDEwMHB4XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC5vcmRlciB7XHJcblxyXG5cdFx0XHRcdFx0XHRmbG9hdDogbGVmdDtcclxuXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC5vcmRlcl9yaWdodCB7XHJcblxyXG5cdFx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHJcblx0XHRcdHN0cm9uZyB7XHJcblx0XHRcdFx0Y29sb3I6ICRibHVlX3RpdGxlO1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMjBweDtcclxuXHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogMTBweDtcclxuXHRcdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xyXG5cdFx0XHR9XHJcblx0XHRcdHVsIHtcclxuXHRcdFx0XHRwYWRkaW5nOiAwO1xyXG5cdFx0XHRcdG1hcmdpbjogMDtcclxuXHRcdFx0XHRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlO1xyXG5cclxuXHRcdFx0XHRcclxuXHRcdFx0XHRsaTpiZWZvcmUge1xyXG5cdFx0XHRcdCAgY29udGVudDogXCJcXDI3MTRcIjtcclxuXHRcdFx0XHQgIGNvbG9yOiBncmVlbjtcclxuXHRcdFx0XHQgIHBhZGRpbmctcmlnaHQ6IDVweDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGkge1xyXG5cdFx0XHRcdFx0bGlzdC1zdHlsZTogbm9uZTtcclxuXHRcdFx0XHRcdHBhZGRpbmc6IDA7XHJcblx0XHRcdFx0XHRtYXJnaW46IDA7XHJcblxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQuZm9vdGVyIHtcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cclxuXHRcdGg0IHtcclxuXHRcdFx0Y29sb3I6ICNFRUVFRUU7XHJcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcclxuXHRcdH1cclxuXHRcdGEge1xyXG5cdFx0XHRjb2xvcjogIzMzMztcclxuXHRcdH1cclxuXHRcdHVsIHtcclxuXHRcdFx0bWFyZ2luOiAwO1xyXG5cdFx0XHRwYWRkaW5nOiAwO1xyXG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDE1cHg7XHJcblx0XHR9XHJcblx0XHQuZmxvYXRlciB7XHJcblx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0fVxyXG5cdFx0Lm1pZGRsZSB7XHJcblx0XHRcdGJhY2tncm91bmQ6ICRibHVlX2JhY2tncm91bmQ7XHJcblx0XHRcdHBhZGRpbmc6IDIwcHg7XHJcblx0XHRcdGNsZWFyOiBib3RoO1xyXG5cclxuXHRcdFx0LmJsb2NrIHtcclxuXHRcdFx0XHRmbG9hdDogbGVmdDtcclxuXHJcblxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQuYm90dG9tIHtcclxuXHRcdFx0YmFja2dyb3VuZDogd2hpdGU7XHJcblx0XHRcdHBhZGRpbmc6IDIwcHg7XHJcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0dWwge1xyXG5cdFx0XHRcdG1hcmdpbjogMDtcclxuXHRcdFx0XHRwYWRkaW5nOiAwO1xyXG5cclxuXHRcdFx0XHRsaSB7XHJcblx0XHRcdFx0XHRkaXNwbGF5OmlubGluZTtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiAxN3B4O1xyXG5cdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMDtcclxuXHRcdFx0XHRcdGNvbG9yOiAjMjkyOTI5O1xyXG5cdFx0XHRcdFx0Jjpob3ZlciB7XHJcblx0XHRcdFx0XHRcdGEge1xyXG5cdFx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0YSB7XHJcblx0XHRcdFx0XHRcdGNvbG9yOiAjMjkyOTI5O1xyXG5cdFx0XHRcdFx0XHRtYXJnaW4tbGVmdDogMTBweDtcclxuXHRcdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGxpLmFjdGl2ZSB7XHJcblx0XHRcdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiB3aGl0ZTtcclxuXHRcdFx0XHRcdGEge1xyXG5cdFx0XHRcdFx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRwIHtcclxuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHR9XHJcblx0fVxyXG5cdC5mb290ZXJfY2FsbCB7XHJcblx0ICAgIHBvc2l0aW9uOmZpeGVkO1xyXG5cdCAgICBib3R0b206MDtcclxuXHQgICAgbGVmdDowO1xyXG5cclxuXHQgICAgaGVpZ2h0OjQwcHg7XHJcblx0ICAgIGJhY2tncm91bmQ6I0ZEYWIwMDtcclxuXHQgICAgY29sb3I6IHdoaXRlO1xyXG5cdCAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0ICAgIHotaW5kZXg6MTAwMDtcclxuXHQgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0ICAgIHBhZGRpbmctdG9wOiAyMHB4O1xyXG5cdCAgICBmb250LXNpemU6IDMwcHg7XHJcblx0ICAgIGEge1xyXG5cdCAgICBcdGNvbG9yOiB3aGl0ZTtcclxuXHQgICAgfVxyXG5cdCAgICBkaXNwbGF5OiBub25lO1xyXG5cdH1cclxufVxyXG5cclxuLmJ0bngge1xyXG4gIGJhY2tncm91bmQ6ICMzNDk4ZGI7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjMzQ5OGRiLCAjMjk4MGI5KTtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICMzNDk4ZGIsICMyOTgwYjkpO1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjMzQ5OGRiLCAjMjk4MGI5KTtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjMzQ5OGRiLCAjMjk4MGI5KTtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMzQ5OGRiLCAjMjk4MGI5KTtcclxuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwO1xyXG4gIC1tb3otYm9yZGVyLXJhZGl1czogMTA7XHJcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICBmb250LWZhbWlseTogQXJpYWw7XHJcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XHJcbiAgZm9udC1zaXplOiAxNnB4O1xyXG4gIHBhZGRpbmc6IDEwcHggMjBweCAxMHB4IDIwcHg7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmJ0bng6aG92ZXIge1xyXG4gIGJhY2tncm91bmQ6ICMzY2IwZmQ7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjM2NiMGZkLCAjMzQ5OGRiKTtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICMzY2IwZmQsICMzNDk4ZGIpO1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjM2NiMGZkLCAjMzQ5OGRiKTtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjM2NiMGZkLCAjMzQ5OGRiKTtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjM2NiMGZkLCAjMzQ5OGRiKTtcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbn1cclxuXHJcbi5idG4yIHtcclxuICBiYWNrZ3JvdW5kOiAjMzQ5OGRiO1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzM0OThkYiwgIzI5ODBiOSk7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjMzQ5OGRiLCAjMjk4MGI5KTtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzM0OThkYiwgIzI5ODBiOSk7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzM0OThkYiwgIzI5ODBiOSk7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzM0OThkYiwgIzI5ODBiOSk7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1O1xyXG4gIC1tb3otYm9yZGVyLXJhZGl1czogNTtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgZm9udC1mYW1pbHk6IEFyaWFsO1xyXG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBwYWRkaW5nOiA1cHggMTBweCA1cHggMTBweDtcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uYnRuMjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZDogIzNjYjBmZDtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICMzY2IwZmQsICMzNDk4ZGIpO1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzNjYjBmZCwgIzM0OThkYik7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICMzY2IwZmQsICMzNDk4ZGIpO1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICMzY2IwZmQsICMzNDk4ZGIpO1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMzY2IwZmQsICMzNDk4ZGIpO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxufVxyXG4uY2xlYXIge1xyXG5cdGNsZWFyOiBib3RoO1xyXG59XHJcbi53cGNmNyB7XHJcblx0bWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDtcclxuXHRsYWJlbCB7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHR9XHJcblx0aW5wdXQsc2VsZWN0LHRleHRhcmVhIHtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICMwMDAgIWltcG9ydGFudFxyXG5cdH1cclxuXHRpbnB1dFt0eXBlPXN1Ym1pdF0ge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xyXG5cdFx0Ym9yZGVyOiAwcHggIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG5cdFx0Jjpob3ZlciB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDtcclxuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgIzAwMCAhaW1wb3J0YW50O1xyXG5cdFx0XHRjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCIvKiBMYXJnZSBkZXZpY2VzIChsYXB0b3BzL2Rlc2t0b3BzLCA5OTJweCBhbmQgdXApICovXHJcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMHB4KSBhbmQgKG1heC13aWR0aDogMTIwMHB4KXtcclxuXHJcblxyXG5cdC5jb250YWluZXIge1xyXG5cclxuXHRcdC5ib2R5IHtcclxuXHRcdFx0LmxlZnQge1xyXG5cdFx0XHRcdGgxIHtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMjhweDtcclxuXHRcdFx0XHR9XHJcblxyXG5cclxuXHRcdFx0fVxyXG5cclxuXHRcdH1cclxuXHRcdC5mb290ZXIge1xyXG5cdFx0XHRmb250LXNpemU6IDEycHg7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4gIC5zaWRlX3Byb2R1Y3Rze1xyXG4gICAgXHJcbiAgfVxyXG4gIC5zaWRlX3Byb2R1Y3RzIC5wcm9kdWN0e1xyXG4gICAgYm9yZGVyLXRvcDoxcHggc29saWQgbGlnaHRncmF5O1xyXG4gICAgcGFkZGluZzogMTBweCA2MHB4O1xyXG4gICAgZGlzcGxheTp0YWJsZTtcclxuICAgIHdpZHRoOjEwMCU7XHJcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcclxuICB9XHJcbiAgLnNpZGVfcHJvZHVjdHMgLnByb2R1Y3QgaW1ne1xyXG4gICAgd2lkdGg6MzBweDtcclxuICAgIGhlaWdodDphdXRvO1xyXG4gICAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgICBsZWZ0OjEwcHg7XHJcbiAgICB0b3A6NTAlO1xyXG4gICAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgfVxyXG4gIC5zaWRlX3Byb2R1Y3RzIC5wcm9kdWN0IC50ZXh0e1xyXG4gICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICBmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjtcclxuICAgIGNvbG9yOiM1MDUzNTg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIHRvcDogNHB4O1xyXG4gIH1cclxuICAuc2lkZV9wcm9kdWN0cyAucHJvZHVjdCAudGV4dCAubmFtZXtcclxuICAgIGZvbnQtd2VpZ2h0OjcwMDtcclxuICAgIGZvbnQtc2l6ZTogMTVweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7XHJcbiAgfVxyXG4gIC5zaWRlX3Byb2R1Y3RzIC5wcm9kdWN0IC50ZXh0IC5wcmljZXtcclxuICAgIGZvbnQtc2l6ZToxMnB4O1xyXG4gIH1cclxuICAuc2lkZV9wcm9kdWN0cyAucHJvZHVjdCAudGV4dDpob3ZlciAubmFtZSwgLnNpZGVfcHJvZHVjdHMgLnByb2R1Y3QgLnRleHQ6aG92ZXIgLnByaWNle1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtcclxuICB9XHJcbiAgLnNpZGVfcHJvZHVjdHMgLnByb2R1Y3Qgc3Zne1xyXG4gICAgd2lkdGg6MzBweDtcclxuICAgIGhlaWdodDphdXRvO1xyXG4gICAgZmlsbDojZjhhYjBjO1xyXG4gICAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgICByaWdodDoxMHB4O1xyXG4gICAgdG9wOjUwJTtcclxuICAgIHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgY3Vyc29yOnBvaW50ZXI7XHJcbiAgICB0cmFuc2l0aW9uOmZpbGwgLjZzIGVhc2UtaW47XHJcbiAgfVxyXG4gIC5zaWRlX3Byb2R1Y3RzIC5wcm9kdWN0IHN2Zzpob3ZlcntcclxuICAgIGZpbGw6IzAwMDAwMDtcclxuICB9XHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6OTk5cHgpe1xyXG4gICAgLmNvbnRhaW5lciAuYm9keSAucmlnaHR7XHJcbiAgICAgIHBhZGRpbmctbGVmdDowO1xyXG4gICAgfVxyXG4gICAgLnNpZGVfcHJvZHVjdHMgLnByb2R1Y3R7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHggNDVweDtcclxuICAgIH1cclxuICAgIC5zaWRlX3Byb2R1Y3RzIC5wcm9kdWN0IGltZ3tcclxuICAgICAgbGVmdDo1cHg7XHJcbiAgICB9XHJcbiAgICAuc2lkZV9wcm9kdWN0cyAucHJvZHVjdCBzdmd7XHJcbiAgICAgIHJpZ2h0OjVweDtcclxuICAgIH1cclxuXHJcbiAgICAuc2lkZV9wcm9kdWN0cyAucHJvZHVjdCAudGV4dCAubmFtZSB7XHJcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcclxuICAgIFx0bGluZS1oZWlnaHQ6IDEycHg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXtcclxuICAgIC5zaWRlX3Byb2R1Y3RzIC5wcm9kdWN0e1xyXG4gICAgICBwYWRkaW5nOiAxMHB4IDYwcHg7XHJcbiAgICB9XHJcbiAgICAuc2lkZV9wcm9kdWN0cyAucHJvZHVjdCBpbWd7XHJcbiAgICAgIGxlZnQ6MTBweDtcclxuICAgIH1cclxuICAgIC5zaWRlX3Byb2R1Y3RzIC5wcm9kdWN0IHN2Z3tcclxuICAgICAgcmlnaHQ6MTBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4iLCIvKiBNZWRpdW0gZGV2aWNlcyAobGFuZHNjYXBlIHRhYmxldHMsIDc2OHB4IGFuZCB1cCkgKi9cclxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5OXB4KSB7XHJcblxyXG5cdC5jb250YWluZXIge1xyXG5cclxuXHRcdC5tZW51LXRvcCB7XHJcblx0XHRcdC5yaWdodCB7XHJcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0fVxyXG5cdFx0XHQubGVmdCB7XHJcblx0XHRcdFx0dWwge1xyXG5cdFx0XHRcdFx0bGkge1xyXG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDE1cHg7XHJcblx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiA1cHg7XHJcblx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodDogNXB4O1xyXG5cdFx0XHRcdFx0XHRhIHtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW4tbGVmdDogMHB4O1xyXG5cdFx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMHB4O1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0LmJvZHkge1xyXG5cdFx0XHRmb250LXNpemU6IDEzcHg7XHJcblx0XHRcdC5sZWZ0IHtcclxuXHJcblx0XHRcdFx0aDEge1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAyMXB4O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRoMiB7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDE5cHg7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGgzIHtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdFx0XHR9XHJcblxyXG5cclxuXHJcblx0XHRcdH1cclxuXHRcdFx0LnJpZ2h0IHtcclxuXHJcblx0XHRcdFx0aDIge1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRoMyB7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC5saXN0X3Byb2R1Y3RzIHtcclxuXHRcdFx0XHRcdHVsIHtcclxuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxMXB4O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Lm9yZGVyIHtcclxuXHJcblx0XHRcdFx0LmZvcm1hIHtcclxuXHRcdFx0XHRcdGlucHV0LHRleHRhcmVhLHNlbGVjdCB7XHJcblx0XHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcblx0ICAgIFx0XHRcdFx0cGFkZGluZzogNXB4O1xyXG5cdCAgICBcdFx0XHRcdG1hcmdpbjogNXB4IDBweCA1cHggMHB4O1xyXG5cdCAgICBcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDVweDtcclxuXHRcdFx0XHRcdH1cclxuXHJcblxyXG5cdFx0XHRcdH1cdFxyXG5cdFx0XHR9XHJcblxyXG5cclxuXHRcdH1cclxuXHRcdC5mb290ZXIge1xyXG5cdFx0XHRmb250LXNpemU6IDEycHg7XHJcblxyXG5cdFx0XHRoNCB7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQuZm9vdGVyX2NhbGwge1xyXG5cdFx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdH1cclxuXHJcblx0fVxyXG59XHJcblxyXG4iLCIvKiBTbWFsbCBkZXZpY2VzIChwb3J0cmFpdCB0YWJsZXRzIGFuZCBsYXJnZSBwaG9uZXMsIDYwMHB4IGFuZCB1cCkgKi9cclxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDFweCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XHJcblxyXG5cdC5jb250YWluZXIge1xyXG5cdFx0Lm1lbnUtdG9wIHtcclxuXHRcdFx0LmxlZnQge1xyXG5cdFx0XHRcdHVsIHtcclxuXHRcdFx0XHRcdGxpIHtcclxuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiA0cHg7XHJcblx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodDogNHB4O1xyXG5cdFx0XHRcdFx0XHRhIHtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW4tbGVmdDogMHB4O1xyXG5cdFx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMHB4O1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0LnByb2R1Y3QgLnJpZ2h0X3NtYWxsIHtcclxuXHRcdFx0ZGlzcGxheTogbm9uZVxyXG5cdFx0fVxyXG5cdFx0LmJvZHkge1xyXG5cclxuXHRcdFx0LmxlZnQge1xyXG5cdFx0XHRcdGgxIHtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMjBweDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aDIge1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxOXB4O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRoMyB7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LnJpZ2h0X3NtYWxsIHtcclxuXHRcdFx0XHRwYWRkaW5nLXRvcDogMjBweDtcclxuXHRcdFx0fVxyXG5cdFx0XHQucmlnaHQge1xyXG5cclxuXHRcdFx0XHRoMiB7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGgzIHtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Lmxpc3RfcHJvZHVjdHMge1xyXG5cdFx0XHRcdFx0dWwge1xyXG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDExcHg7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cclxuXHRcdFx0Lm9yZGVyIHtcclxuXHJcblx0XHRcdFx0LmZvcm1hIHtcclxuXHRcdFx0XHRcdGlucHV0LHRleHRhcmVhLHNlbGVjdCB7XHJcblx0XHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcblx0ICAgIFx0XHRcdFx0cGFkZGluZzogNXB4O1xyXG5cdCAgICBcdFx0XHRcdG1hcmdpbjogNXB4IDBweCA1cHggMHB4O1xyXG5cdCAgICBcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDVweDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHRcclxuXHRcdFx0fVxyXG5cclxuXHJcblx0XHR9XHJcblxyXG5cdFx0LmZvb3Rlcl9jYWxsIHtcclxuXHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHR9XHJcblxyXG5cdH1cclxufVxyXG5cclxuIiwiIC8qIEV4dHJhIHNtYWxsIGRldmljZXMgKHBob25lcywgNjAwcHggYW5kIGRvd24pICovXHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcclxuIFx0LmNvbnRhaW5lciB7XHJcbiBcdFx0bWFyZ2luLXRvcDogMHB4O1xyXG5cdFx0Lm1lbnUtdG9wIHtcclxuXHRcdFx0LmxlZnQge1xyXG5cdFx0XHRcdHVsIHtcclxuXHRcdFx0XHRcdGxpIHtcclxuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xyXG5cdFx0XHRcdFx0XHRtYXJnaW4tbGVmdDogNHB4O1xyXG5cdFx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDRweDtcclxuXHRcdFx0XHRcdFx0YSB7XHJcblx0XHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDBweDtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDBweDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC5ib2R5IHtcclxuXHRcdFx0LmxlZnQge1xyXG5cdFx0XHRcdGgxIHtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMjBweDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aDIge1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxOXB4O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRoMyB7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcbiBcdH1cclxuIH1cclxuXHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDUwcHgpIHtcclxuXHJcblx0LmNvbnRhaW5lciB7XHJcblxyXG5cdFx0Lm1lbnUtdG9wIHtcclxuXHRcdFx0aGVpZ2h0OiA4MHB4O1xyXG5cdFx0XHRwYWRkaW5nOiAyMHB4IDBweCAwcHggMjBweDtcclxuXHRcdFx0LmxlZnQge1xyXG5cdFx0XHRcdHVsIHtcclxuXHRcdFx0XHRcdGxpIHtcclxuXHRcdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDEycHg7XHJcblx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAycHg7XHJcblx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMnB4O1xyXG5cdFx0XHRcdFx0XHRhIHtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW4tbGVmdDogMHB4O1xyXG5cdFx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMHB4O1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUlBQSxBQUFBLElBQUksQ0FBQztFQUNKLFVBQVUsRUFBRSxjQUFjO0NBQzFCOztBQUNELEFBQUEsSUFBSSxDQUFDO0VBQ0osV0FBVyxFQUFFLGlCQUFpQjtFQUM5QixTQUFTLEVBQUUsSUFBSTtFQUNmLEtBQUssRUFBRSxPQUFPO0NBQ2Q7O0FBQ0QsQUFBQSxDQUFDLENBQUM7RUFDRCxlQUFlLEVBQUUsSUFBSTtFQUNyQixLQUFLLEVKUE0sT0FBTztDSVdsQjs7QUFORCxBQUdDLENBSEEsQUFHQyxNQUFNLENBQUM7RUFDUCxlQUFlLEVBQUUsU0FBUztDQUMxQjs7QUFFRixBQUFBLE1BQU0sQ0FBQztFQUNOLEtBQUssRUFBRSxJQUFJO0NBQ1g7O0FBQ0QsQUFBQSxJQUFJLENBQUM7RUFDSixnQkFBZ0IsRUFBRSxrQkFBa0I7RUFDcEMsS0FBSyxF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 */