/* ------------------------------------------------------------------------ *\
 * Helpers
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Mixins
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Functions
\* ------------------------------------------------------------------------ */
/*
 * Retrieve a color variable
 *
 * @param  {string}  $color - The name of the color as defined in _variables
 * @param  {string}  $tone  - The variant of the color (shade|base|tint)
 */
/*
 * Remove the unit of a length
 *
 * @param  {Number}  $number
 */
/*
 * Convert PX units in to EM or REM, relative to a specified base sizes
 *
 * @param  {Number}  $size - Array of up to four sizes in PX units
 * @param  {Number}  $base - Font size to base calculations off of
 * @param  {String}  $unit - Either "em" or "rem"
 */
/*
 * Convert Photoshop leading to CSS line-height
 *
 * @param  {Number}  $size - Value of Leading in Photoshop's Character Panel
 * @param  {Number}  $base - Value of Font Size in Photosohp's Character Panel
 */
/*
 * Convert Photoshop tracking to CSS letter-spacing
 *
 * @param  {Number}  $size - Value of Tracking in Photoshop's Character Panel
 * @param  {Number}  $base - Value of Font Size in Photosohp's Character Panel
 */
/* ------------------------------------------------------------------------ *\
 * Colors
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Fonts
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Widths
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Break Points
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Layers
\* ------------------------------------------------------------------------ */
.__dark {
  color: #000000 !important;
}

.__light {
  color: #FFFFFF !important;
}

.__big {
  font-size: 1.25em !important;
}

.__small {
  font-size: 0.75em !important;
}

.__bold {
  font-weight: 700 !important;
}

.__regular {
  font-weight: 400 !important;
}

.__italic {
  font-style: italic !important;
}

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

.__textleft {
  text-align: left !important;
}

.__textright {
  text-align: right !important;
}

.__nowrap {
  white-space: nowrap !important;
}

.__center {
  margin-left: auto !important;
  margin-right: auto !important;
}

.__left {
  float: left !important;
}

.__right {
  float: right !important;
}

.__nomargin {
  margin: 0 !important;
}

.__nopadding {
  padding: 0 !important;
}

.__notransform {
  transform: none !important;
}

.__notransition {
  transition: none !important;
}

.__block {
  display: block !important;
}

.__flex {
  display: flex !important;
}

.__visuallyhidden {
  left: -999em !important;
  position: absolute !important;
  top: -999em !important;
}

.__primary {
  color: #114C97 !important;
}

.__accent {
  color: #E93438 !important;
}

.__error {
  color: #E93438 !important;
}

/* visibility classes */
@media (pointer: fine) {
  .__touch {
    display: none !important;
  }
}
@supports not (pointer: fine) {
  .__touch {
    display: none !important;
  }
}
@media (pointer: coarse) {
  .__mouse {
    display: none !important;
  }
}
@media print {
  .__noprint {
    display: none !important;
  }
}
/* "visible" classes */
@media (max-width: 47.9375em) {
  .__visible-xs {
    display: none !important;
  }
}

@media (max-width: 53.25em) {
  .__visible-s {
    display: none !important;
  }
}

@media (max-width: 59.9375em) {
  .__visible-m {
    display: none !important;
  }
}

@media (max-width: 63.9375em) {
  .__visible-l {
    display: none !important;
  }
}

@media (max-width: 79.9375em) {
  .__visible-xl {
    display: none !important;
  }
}

/* "hidden" classes -- NOTE: It is important that _hidden classes come after _visible for override purposes */
@media (min-width: 48em) {
  .__hidden-xs {
    display: none !important;
  }
}

@media (min-width: 53.3125em) {
  .__hidden-s {
    display: none !important;
  }
}

@media (min-width: 60em) {
  .__hidden-m {
    display: none !important;
  }
}

@media (min-width: 64em) {
  .__hidden-l {
    display: none !important;
  }
}

@media (min-width: 80em) {
  .__hidden-xl {
    display: none !important;
  }
}

/* ------------------------------------------------------------------------ *\
 * Print
\* ------------------------------------------------------------------------ */
/* stylelint-disable selector-max-id */
.page__container,
.page__container #content {
  display: block;
}

.text--unordered .text__list-item {
  color-adjust: exact !important;
  -webkit-print-color-adjust: exact !important;
}

.text--columns[data-columns] {
  column-count: 2;
}

.article--vehicle .article__row {
  display: block;
}

.swiper-wrapper {
  display: block;
  transform: none !important;
  width: 100% !important;
}

.swiper-slide {
  display: block;
  width: 100% !important;
}
.swiper-slide.swiper-slide-duplicate {
  display: none;
}

.tabby__content[hidden] {
  display: block;
}

.header-block--fullbleed,
.header__inner,
.footer-block--fullbleed,
.footer__inner {
  background: #FFFFFF;
  border-bottom: 0;
  margin-bottom: 0;
}

.header__text,
.footer__text {
  color: #000000;
}

.content__location-info::before, .content__location-info::after {
  display: none;
}
.content__location-info .location-info__content {
  padding-left: 0;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlbHBlcnMvX2hlbHBlcnMuc2NzcyIsImhlbHBlcnMvX21peGlucy5zY3NzIiwiaGVscGVycy9fZnVuY3Rpb25zLnNjc3MiLCJoZWxwZXJzL192YXJpYWJsZXMuc2NzcyIsInByaW50LmNzcyIsImJhc2UvcHJpbnQvX3ByaW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OzZFQUFBO0FDQUE7OzZFQUFBO0FDQUE7OzZFQUFBO0FBSUE7Ozs7O0VBQUE7QUFVQTs7OztFQUFBO0FBU0E7Ozs7OztFQUFBO0FBK0JBOzs7OztFQUFBO0FBYUE7Ozs7O0VBQUE7QUNuRUE7OzZFQUFBO0FBc0RBOzs2RUFBQTtBQU9BOzs2RUFBQTtBQVFBOzs2RUFBQTtBQTBCQTs7NkVBQUE7QUhuRkE7RUFDSSx5QkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSx5QkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSw0QkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSw0QkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSwyQkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSwyQkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSw2QkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSw2QkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSwyQkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSw0QkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSw4QkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSw0QkFBQTtFQUNBLDZCQUFBO0FJeUNKOztBSnRDQTtFQUNJLHNCQUFBO0FJeUNKOztBSnRDQTtFQUNJLHVCQUFBO0FJeUNKOztBSnRDQTtFQUNJLG9CQUFBO0FJeUNKOztBSnRDQTtFQUNJLHFCQUFBO0FJeUNKOztBSnRDQTtFQUNJLDBCQUFBO0FJeUNKOztBSnRDQTtFQUNJLDJCQUFBO0FJeUNKOztBSnRDQTtFQUNJLHlCQUFBO0FJeUNKOztBSnRDQTtFQUNJLHdCQUFBO0FJeUNKOztBSnRDQTtFQUNJLHVCQUFBO0VBQ0EsNkJBQUE7RUFDQSxzQkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSx5QkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSx5QkFBQTtBSXlDSjs7QUp0Q0E7RUFDSSx5QkFBQTtBSXlDSjs7QUp0Q0EsdUJBQUE7QUFHQTtFQUNJO0lBQ0ksd0JBQUE7RUl1Q047QUFDRjtBSm5DQTtFQUNJO0lBQ0ksd0JBQUE7RUlxQ047QUFDRjtBSmpDQTtFQUNJO0lBQ0ksd0JBQUE7RUltQ047QUFDRjtBSi9CQTtFQUNJO0lBQ0ksd0JBQUE7RUlpQ047QUFDRjtBSjlCQSxzQkFBQTtBQ25DSTtFRHVDSjtJQUVRLHdCQUFBO0VJNkJOO0FBQ0Y7O0FIdkVJO0VEK0NKO0lBRVEsd0JBQUE7RUkyQk47QUFDRjs7QUg3RUk7RUR1REo7SUFFUSx3QkFBQTtFSXlCTjtBQUNGOztBSG5GSTtFRCtESjtJQUVRLHdCQUFBO0VJdUJOO0FBQ0Y7O0FIekZJO0VEdUVKO0lBRVEsd0JBQUE7RUlxQk47QUFDRjs7QUpsQkEsNkdBQUE7QUMvREk7RURtRUo7SUFFUSx3QkFBQTtFSWtCTjtBQUNGOztBSHhGSTtFRDJFSjtJQUVRLHdCQUFBO0VJZ0JOO0FBQ0Y7O0FIOUZJO0VEbUZKO0lBRVEsd0JBQUE7RUljTjtBQUNGOztBSHBHSTtFRDJGSjtJQUVRLHdCQUFBO0VJWU47QUFDRjs7QUgxR0k7RURtR0o7SUFFUSx3QkFBQTtFSVVOO0FBQ0Y7O0FDeE9BOzs2RUFBQTtBQUlBLHNDQUFBO0FBR0k7O0VBRUksY0FBQTtBRHdPUjs7QUNuT0k7RUFDSSw4QkFBQTtFQUNBLDRDQUFBO0FEc09SOztBQ2pPSTtFQUNJLGVBQUE7QURvT1I7O0FDL05JO0VBQ0ksY0FBQTtBRGtPUjs7QUM3Tkk7RUFDSSxjQUFBO0VBQ0EsMEJBQUE7RUFDQSxzQkFBQTtBRGdPUjs7QUMzTkk7RUFDSSxjQUFBO0VBQ0Esc0JBQUE7QUQ4TlI7QUMzTkk7RUFDSSxhQUFBO0FENk5SOztBQ3hOSTtFQUNJLGNBQUE7QUQyTlI7O0FDbk5JOzs7O0VBQ0ksbUJBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0FEeU5SOztBQ25OSTs7RUFDSSxjQUFBO0FEdU5SOztBQ2xOSTtFQUVJLGFBQUE7QURvTlI7QUNqTkk7RUFDSSxlQUFBO0FEbU5SIiwiZmlsZSI6InByaW50LmEyZTAwM2U0LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogSGVscGVyc1xuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vLyBpbXBvcnRzXG5cbkBpbXBvcnQgXCJfbWl4aW5zXCI7XG5AaW1wb3J0IFwiX2Z1bmN0aW9uc1wiO1xuQGltcG9ydCBcIl92YXJpYWJsZXNcIjtcblxuLy8gZ2VuZXJpYyBoZWxwZXJzXG5cbi5fX2Rhcmsge1xuICAgIGNvbG9yOiBjb2xvcihcImRhcmtcIikgIWltcG9ydGFudDtcbn1cblxuLl9fbGlnaHQge1xuICAgIGNvbG9yOiBjb2xvcihcImxpZ2h0XCIpICFpbXBvcnRhbnQ7XG59XG5cbi5fX2JpZyB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW0gIWltcG9ydGFudDtcbn1cblxuLl9fc21hbGwge1xuICAgIGZvbnQtc2l6ZTogMC43NWVtICFpbXBvcnRhbnQ7XG59XG5cbi5fX2JvbGQge1xuICAgIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDtcbn1cblxuLl9fcmVndWxhciB7XG4gICAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xufVxuXG4uX19pdGFsaWMge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50O1xufVxuXG4uX190ZXh0Y2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLl9fdGV4dGxlZnQge1xuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcbn1cblxuLl9fdGV4dHJpZ2h0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50O1xufVxuXG4uX19ub3dyYXAge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbn1cblxuLl9fY2VudGVyIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuXG4uX19sZWZ0IHtcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xufVxuXG4uX19yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG59XG5cbi5fX25vbWFyZ2luIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbn1cblxuLl9fbm9wYWRkaW5nIHtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5fX25vdHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLl9fbm90cmFuc2l0aW9uIHtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5fX2Jsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xufVxuXG4uX19mbGV4IHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG59XG5cbi5fX3Zpc3VhbGx5aGlkZGVuIHtcbiAgICBsZWZ0OiAtOTk5ZW0gIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICB0b3A6IC05OTllbSAhaW1wb3J0YW50O1xufVxuXG4uX19wcmltYXJ5IHtcbiAgICBjb2xvcjogY29sb3IoXCJwcmltYXJ5XCIpICFpbXBvcnRhbnQ7XG59XG5cbi5fX2FjY2VudCB7XG4gICAgY29sb3I6IGNvbG9yKFwiYWNjZW50XCIpICFpbXBvcnRhbnQ7XG59XG5cbi5fX2Vycm9yIHtcbiAgICBjb2xvcjogY29sb3IoXCJlcnJvclwiKSAhaW1wb3J0YW50O1xufVxuXG4vKiB2aXNpYmlsaXR5IGNsYXNzZXMgKi9cblxuLy8gd2hlbiBwb2ludGVyIGlzIHByZWNpc2UgKG1vdXNlKVxuQG1lZGlhIChwb2ludGVyOiBmaW5lKSB7XG4gICAgLl9fdG91Y2gge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyB3aGVuIHBvaW50ZXI6IGZpbmUgaXMgbm90IHN1cHBvcnRlZFxuQHN1cHBvcnRzIG5vdCAocG9pbnRlcjogZmluZSkge1xuICAgIC5fX3RvdWNoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gd2hlbiBwb2ludGVyIGlzIGlucHJlY2lzZSAodG91Y2gpXG5AbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSkge1xuICAgIC5fX21vdXNlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gd2hlbiBwcmludGluZ1xuQG1lZGlhIHByaW50IHtcbiAgICAuX19ub3ByaW50IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLyogXCJ2aXNpYmxlXCIgY2xhc3NlcyAqL1xuXG4vLyAkeHMtYnJlYWtcblxuLl9fdmlzaWJsZS14cyB7XG4gICAgQGluY2x1ZGUgc21hbGxlci10aGFuKHhzKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vICRzLWJyZWFrXG5cbi5fX3Zpc2libGUtcyB7XG4gICAgQGluY2x1ZGUgc21hbGxlci10aGFuKHMpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gJG0tYnJlYWtcblxuLl9fdmlzaWJsZS1tIHtcbiAgICBAaW5jbHVkZSBzbWFsbGVyLXRoYW4obSkge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyAkbC1icmVha1xuXG4uX192aXNpYmxlLWwge1xuICAgIEBpbmNsdWRlIHNtYWxsZXItdGhhbihsKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vICR4bC1icmVha1xuXG4uX192aXNpYmxlLXhsIHtcbiAgICBAaW5jbHVkZSBzbWFsbGVyLXRoYW4oeGwpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLyogXCJoaWRkZW5cIiBjbGFzc2VzIC0tIE5PVEU6IEl0IGlzIGltcG9ydGFudCB0aGF0IF9oaWRkZW4gY2xhc3NlcyBjb21lIGFmdGVyIF92aXNpYmxlIGZvciBvdmVycmlkZSBwdXJwb3NlcyAqL1xuXG4vLyAkeHMtYnJlYWtcblxuLl9faGlkZGVuLXhzIHtcbiAgICBAaW5jbHVkZSBsYXJnZXItdGhhbih4cykge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyAkcy1icmVha1xuXG4uX19oaWRkZW4tcyB7XG4gICAgQGluY2x1ZGUgbGFyZ2VyLXRoYW4ocykge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyAkbS1icmVha1xuXG4uX19oaWRkZW4tbSB7XG4gICAgQGluY2x1ZGUgbGFyZ2VyLXRoYW4obSkge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyAkbC1icmVha1xuXG4uX19oaWRkZW4tbCB7XG4gICAgQGluY2x1ZGUgbGFyZ2VyLXRoYW4obCkge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyAkeGwtYnJlYWtcblxuLl9faGlkZGVuLXhsIHtcbiAgICBAaW5jbHVkZSBsYXJnZXItdGhhbih4bCkge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLy8gU3R5bGVzIHdyaXR0ZW4gYnkgSmFjb2IgQmVhcmNlIEAgV2VibGlueCwgSW5jLlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBNaXhpbnNcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLy8gbnRoLWNoaWxkOiBodHRwczovL3BhdWx1bmQuY28udWsvbnRoLWNoaWxkLXNhc3MtbWl4aW5zXG5cbkBtaXhpbiBmaXJzdC1jaGlsZCgpIHtcbiAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBsYXN0LWNoaWxkKCkge1xuICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZXZlbigpIHtcbiAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIG9kZCgpIHtcbiAgICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZmlyc3QoJG51bSkge1xuICAgIEBpZiAkbnVtID09IDEge1xuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgICAmOm50aC1jaGlsZCgtbiArICN7JG51bX0pIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gbGFzdCgkbnVtKSB7XG4gICAgJjpudGgtbGFzdC1jaGlsZCgtbiArICN7JG51bX0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gYWZ0ZXIoJG51bSkge1xuICAgICY6bnRoLWNoaWxkKG4rI3skbnVtICsgMX0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZnJvbS1lbmQoJG51bSkge1xuICAgICY6bnRoLWxhc3QtY2hpbGQoI3skbnVtfSkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBiZXR3ZWVuKCRmaXJzdCwkbGFzdCkge1xuICAgICY6bnRoLWNoaWxkKG4rI3skZmlyc3R9KTpudGgtY2hpbGQoLW4rI3skbGFzdH0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gYWxsLWJ1dCgkbnVtKSB7XG4gICAgJjpub3QoOm50aC1jaGlsZCgjeyRudW19KSkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBlYWNoKCRudW0pIHtcbiAgICAmOm50aC1jaGlsZCgjeyRudW19bikge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8vIGxheWVyc1xuXG5AbWl4aW4gbGF5ZXIoJGxheWVyLW5hbWUpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogbWFwLWdldCgkbGF5ZXJzLCAkbGF5ZXItbmFtZSk7XG59XG5cbi8vIFNjYWxlIGR5bmFpbWNhbGx5IHVudGlsIGEgZ2l2ZW4gdmlld3BvcnRcblxuQG1peGluIHZpZXdwb3J0LXNjYWxlKCRzaXplOiAxNiwgJGJhc2U6IDEwMjQsICRtaW4td2lkdGg6IDAsICRtYXgtd2lkdGg6IG51bGwpIHtcbiAgICAkbWF4LXdpZHRoOiBpZigkbWF4LXdpZHRoID09IG51bGwsICRiYXNlLCAkbWF4LXdpZHRoKTtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IHJlbWlmeSgkbWluLXdpZHRoLCAxNikpIGFuZCAobWF4LXdpZHRoOiByZW1pZnkoJG1heC13aWR0aCwgMTYpKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogKCRzaXplIC8gJGJhc2UpICogMTAwdnc7XG4gICAgfVxufVxuXG4vLyBDcmVhdGUgYSBtZWRpYSBxdWVyeSByZWxhdGllIHRvIGEgYnJlYWsgcG9pbnQgdmFyaWFibGVcblxuQG1peGluIHNtYWxsZXItdGhhbigkcG9pbnQtbmFtZSwgJGluY2x1c2l2ZTogZmFsc2UpIHtcbiAgICAkd2lkdGg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkcG9pbnQtbmFtZSk7XG5cbiAgICBAaWYgJGluY2x1c2l2ZSA9PSBmYWxzZSB7XG4gICAgICAgICR3aWR0aDogJHdpZHRoIC0gKDEgLyAxNik7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICR3aWR0aCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8vIENyZWF0ZSBhIG1lZGlhIHF1ZXJ5IHJlbGF0aWUgdG8gYSBicmVhayBwb2ludCB2YXJpYWJsZVxuXG5AbWl4aW4gbGFyZ2VyLXRoYW4oJHBvaW50LW5hbWUsICRpbmNsdXNpdmU6IHRydWUpIHtcbiAgICAkd2lkdGg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkcG9pbnQtbmFtZSk7XG5cbiAgICBAaWYgJGluY2x1c2l2ZSA9PSBmYWxzZSB7XG4gICAgICAgICR3aWR0aDogJHdpZHRoICsgKDEgLyAxNik7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICR3aWR0aCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG4iLCIvLyBTdHlsZXMgd3JpdHRlbiBieSBKYWNvYiBCZWFyY2UgQCBXZWJsaW54LCBJbmMuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIEZ1bmN0aW9uc1xuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKlxuICogUmV0cmlldmUgYSBjb2xvciB2YXJpYWJsZVxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICRjb2xvciAtIFRoZSBuYW1lIG9mIHRoZSBjb2xvciBhcyBkZWZpbmVkIGluIF92YXJpYWJsZXNcbiAqIEBwYXJhbSAge3N0cmluZ30gICR0b25lICAtIFRoZSB2YXJpYW50IG9mIHRoZSBjb2xvciAoc2hhZGV8YmFzZXx0aW50KVxuICovXG5AZnVuY3Rpb24gY29sb3IoJGNvbG9yLCAkdG9uZTogYmFzZSkge1xuICAgIEByZXR1cm4gbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICRjb2xvciksICR0b25lKTtcbn1cblxuLypcbiAqIFJlbW92ZSB0aGUgdW5pdCBvZiBhIGxlbmd0aFxuICpcbiAqIEBwYXJhbSAge051bWJlcn0gICRudW1iZXJcbiAqL1xuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bWJlcikge1xuICAgIEByZXR1cm4gaWYodHlwZS1vZigkbnVtYmVyKSA9PSBcIm51bWJlclwiIGFuZCBub3QgdW5pdGxlc3MoJG51bWJlciksICRudW1iZXIgLyAoJG51bWJlciAqIDAgKzEpLCAkbnVtYmVyKTtcbn1cblxuLypcbiAqIENvbnZlcnQgUFggdW5pdHMgaW4gdG8gRU0gb3IgUkVNLCByZWxhdGl2ZSB0byBhIHNwZWNpZmllZCBiYXNlIHNpemVzXG4gKlxuICogQHBhcmFtICB7TnVtYmVyfSAgJHNpemUgLSBBcnJheSBvZiB1cCB0byBmb3VyIHNpemVzIGluIFBYIHVuaXRzXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAkYmFzZSAtIEZvbnQgc2l6ZSB0byBiYXNlIGNhbGN1bGF0aW9ucyBvZmYgb2ZcbiAqIEBwYXJhbSAge1N0cmluZ30gICR1bml0IC0gRWl0aGVyIFwiZW1cIiBvciBcInJlbVwiXG4gKi9cbkBmdW5jdGlvbiByZW1pZnkoJHNpemVzOiAoJHNpemUxLCAkc2l6ZTIsICRzaXplMywgJHNpemU0KSwgJGJhc2U6IG51bGwsICR1bml0OiBudWxsKSB7XG4gICAgJHVuaXQ6IGlmKCR1bml0ID09IG51bGwsIGlmKCRiYXNlID09IG51bGwsIHJlbSwgZW0pLCAkdW5pdCk7XG4gICAgJGJhc2U6IGlmKCRiYXNlID09IG51bGwsIDE2LCBzdHJpcC11bml0KCRiYXNlKSk7XG4gICAgJG91dHB1dDogXCJcIjtcblxuICAgIEBlYWNoICRzaXplIGluICRzaXplcyB7XG4gICAgICAgICRzaXplOiBzdHJpcC11bml0KCRzaXplKTtcblxuICAgICAgICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gXCJudW1iZXJcIiB7XG4gICAgICAgICAgICAvLyBhZGQgYXMgc3BhY2UgaWYgJG91dHB1dCBhbHJlYWR5IGhhcyBhIHZhbHVlXG4gICAgICAgICAgICAkb3V0cHV0OiBpZigkb3V0cHV0ID09IFwiXCIsIFwiXCIsICRvdXRwdXQgKyBcIiBcIik7XG4gICAgICAgICAgICAvLyBjYWxjdWxhdGUsIGFwcGVuZCB2YWx1ZSB0byAkb3V0cHV0XG4gICAgICAgICAgICAkb3V0cHV0OiAkb3V0cHV0ICsgKChzdHJpcC11bml0KCRzaXplKSAvIHN0cmlwLXVuaXQoJGJhc2UpKSArICR1bml0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgIC8vIHBhc3MgdGhlIHZhbHVlIHRocm91Z2ggdW5jaGFnbmVkIGlmICRzaXplIGlzIG5vdCBhIG51bWJlclxuICAgICAgICAgICAgJG91dHB1dDogJG91dHB1dCArIFwiIFwiICsgJHNpemU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIGlmKHR5cGUtb2YoJG91dHB1dCkgPT0gXCJzdHJpbmdcIiwgdW5xdW90ZSgkb3V0cHV0KSwgJG91dHB1dCk7XG59XG5cbi8qXG4gKiBDb252ZXJ0IFBob3Rvc2hvcCBsZWFkaW5nIHRvIENTUyBsaW5lLWhlaWdodFxuICpcbiAqIEBwYXJhbSAge051bWJlcn0gICRzaXplIC0gVmFsdWUgb2YgTGVhZGluZyBpbiBQaG90b3Nob3AncyBDaGFyYWN0ZXIgUGFuZWxcbiAqIEBwYXJhbSAge051bWJlcn0gICRiYXNlIC0gVmFsdWUgb2YgRm9udCBTaXplIGluIFBob3Rvc29ocCdzIENoYXJhY3RlciBQYW5lbFxuICovXG5AZnVuY3Rpb24gbGVhZGluZygkc2l6ZSwgJGJhc2U6IG51bGwpIHtcbiAgICAkYmFzZTogaWYoJGJhc2UgPT0gbnVsbCwgMTYsIHN0cmlwLXVuaXQoJGJhc2UpKTtcbiAgICAkb3V0cHV0OiAkYmFzZSArIChzdHJpcC11bml0KCRzaXplKSAvIDIpO1xuXG4gICAgQHJldHVybiAkb3V0cHV0O1xufVxuXG4vKlxuICogQ29udmVydCBQaG90b3Nob3AgdHJhY2tpbmcgdG8gQ1NTIGxldHRlci1zcGFjaW5nXG4gKlxuICogQHBhcmFtICB7TnVtYmVyfSAgJHNpemUgLSBWYWx1ZSBvZiBUcmFja2luZyBpbiBQaG90b3Nob3AncyBDaGFyYWN0ZXIgUGFuZWxcbiAqIEBwYXJhbSAge051bWJlcn0gICRiYXNlIC0gVmFsdWUgb2YgRm9udCBTaXplIGluIFBob3Rvc29ocCdzIENoYXJhY3RlciBQYW5lbFxuICovXG5AZnVuY3Rpb24gdHJhY2tpbmcoJHNpemUsICRiYXNlOiBudWxsKSB7XG4gICAgJGJhc2U6IGlmKCRiYXNlID09IG51bGwsIDE2LCBzdHJpcC11bml0KCRiYXNlKSk7XG4gICAgJG91dHB1dDogKCRzaXplIC8gMTAwMCkgKiBzdHJpcC11bml0KCRiYXNlKTtcblxuICAgIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogQ29sb3JzXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbkB1c2UgXCJzYXNzOm1hdGhcIjtcblxuJGNvbG9yczogKFxuICAgIFwicHJpbWFyeVwiOiAoXG4gICAgICAgIHRpbnQ6ICAjNkVBM0U1LFxuICAgICAgICBiYXNlOiAgIzExNEM5NyxcbiAgICAgICAgc2hhZGU6ICMwQzJGNTgsXG4gICAgKSxcbiAgICBcImFjY2VudFwiOiAoXG4gICAgICAgIHRpbnQ6ICAjRjdEMUQyLFxuICAgICAgICBiYXNlOiAgI0U5MzQzOCxcbiAgICAgICAgc2hhZGU6ICNCRjM0MzQsXG4gICAgKSxcbiAgICBcImVycm9yXCI6IChcbiAgICAgICAgdGludDogICNGN0QxRDIsXG4gICAgICAgIGJhc2U6ICAjRTkzNDM4LFxuICAgICAgICBzaGFkZTogI0JGMzQzNCxcbiAgICApLFxuICAgIFwic3VjY2Vzc1wiOiAoXG4gICAgICAgIHRpbnQ6ICAjRDFGN0Q2LFxuICAgICAgICBiYXNlOiAgIzM0RTk0RSxcbiAgICAgICAgc2hhZGU6ICMzNEJGNEIsXG4gICAgKSxcbiAgICBcImZvcmVncm91bmRcIjogKFxuICAgICAgICB0aW50OiAgIzkzOTM5MyxcbiAgICAgICAgYmFzZTogICMwMDAwMDAsXG4gICAgICAgIHNoYWRlOiAjMDAwMDAwLFxuICAgICksXG4gICAgXCJiYWNrZ3JvdW5kXCI6IChcbiAgICAgICAgdGludDogICNGRkZGRkYsXG4gICAgICAgIGJhc2U6ICAjRkZGRkZGLFxuICAgICAgICBzaGFkZTogI0Q4RDhEOCxcbiAgICApLFxuICAgIFwicGFnZS1iYWNrZ3JvdW5kXCI6IChcbiAgICAgICAgdGludDogICM0QTQ2NDEsXG4gICAgICAgIGJhc2U6ICAjMkYyQzI5LFxuICAgICAgICBzaGFkZTogIzE0MTMxMSxcbiAgICApLFxuICAgIFwibGlnaHRcIjogKFxuICAgICAgICB0aW50OiAgI0ZGRkZGRixcbiAgICAgICAgYmFzZTogICNGRkZGRkYsXG4gICAgICAgIHNoYWRlOiAjRDhEOEQ4LFxuICAgICksXG4gICAgXCJkYXJrXCI6IChcbiAgICAgICAgdGludDogICM5MzkzOTMsXG4gICAgICAgIGJhc2U6ICAjMDAwMDAwLFxuICAgICAgICBzaGFkZTogIzAwMDAwMCxcbiAgICApLFxuKTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogRm9udHNcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuJGhlYWRpbmctZm9udDogXCJuaW1idXMtc2Fuc1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4kYm9keS1mb250OiBcIm5pbWJ1cy1zYW5zXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogV2lkdGhzXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiRzaXRlLXdpZHRoOiAxMzAwO1xuJGNvbHVtbi1nYXA6IDMwO1xuJGNvbnRlbnQtcGFkZGluZzogMjU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIEJyZWFrIFBvaW50c1xuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4keHh4bC1icmVhazogbWF0aC5kaXYoMTQ0MGVtLCAxNik7XG4keHhsLWJyZWFrOiAgbWF0aC5kaXYoMTM2NmVtLCAxNik7XG4keGwtYnJlYWs6ICAgbWF0aC5kaXYoMTI4MGVtLCAxNik7XG4kbC1icmVhazogICAgbWF0aC5kaXYoMTAyNGVtLCAxNik7XG4kbS1icmVhazogICAgbWF0aC5kaXYoOTYwZW0sIDE2KTtcbiRzLWJyZWFrOiAgICBtYXRoLmRpdig4NTNlbSwgMTYpO1xuJHhzLWJyZWFrOiAgIG1hdGguZGl2KDc2OGVtLCAxNik7XG4keHhzLWJyZWFrOiAgbWF0aC5kaXYoNjQwZW0sIDE2KTtcbiR4eHhzLWJyZWFrOiBtYXRoLmRpdig0ODBlbSwgMTYpO1xuXG4kYnJlYWtwb2ludHM6IChcbiAgICB4eHhsOiAkeHh4bC1icmVhayxcbiAgICB4eGw6ICAkeHhsLWJyZWFrLFxuICAgIHhsOiAgICR4bC1icmVhayxcbiAgICBsOiAgICAkbC1icmVhayxcbiAgICBtOiAgICAkbS1icmVhayxcbiAgICBzOiAgICAkcy1icmVhayxcbiAgICB4czogICAkeHMtYnJlYWssXG4gICAgeHhzOiAgJHh4cy1icmVhayxcbiAgICB4eHhzOiAkeHh4cy1icmVhayxcbik7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIExheWVyc1xuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4kbGF5ZXJzOiAoXG4gICAgaGVhZGVyOiA1LFxuICAgIG5hdmlnYXRpb246IDQsXG4gICAgaGVybzogMyxcbiAgICBjb250ZW50OiAyLFxuICAgIGZvb3RlcjogMSxcbik7XG4iLCIvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBIZWxwZXJzXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBNaXhpbnNcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIEZ1bmN0aW9uc1xuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLypcbiAqIFJldHJpZXZlIGEgY29sb3IgdmFyaWFibGVcbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAkY29sb3IgLSBUaGUgbmFtZSBvZiB0aGUgY29sb3IgYXMgZGVmaW5lZCBpbiBfdmFyaWFibGVzXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAkdG9uZSAgLSBUaGUgdmFyaWFudCBvZiB0aGUgY29sb3IgKHNoYWRlfGJhc2V8dGludClcbiAqL1xuLypcbiAqIFJlbW92ZSB0aGUgdW5pdCBvZiBhIGxlbmd0aFxuICpcbiAqIEBwYXJhbSAge051bWJlcn0gICRudW1iZXJcbiAqL1xuLypcbiAqIENvbnZlcnQgUFggdW5pdHMgaW4gdG8gRU0gb3IgUkVNLCByZWxhdGl2ZSB0byBhIHNwZWNpZmllZCBiYXNlIHNpemVzXG4gKlxuICogQHBhcmFtICB7TnVtYmVyfSAgJHNpemUgLSBBcnJheSBvZiB1cCB0byBmb3VyIHNpemVzIGluIFBYIHVuaXRzXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAkYmFzZSAtIEZvbnQgc2l6ZSB0byBiYXNlIGNhbGN1bGF0aW9ucyBvZmYgb2ZcbiAqIEBwYXJhbSAge1N0cmluZ30gICR1bml0IC0gRWl0aGVyIFwiZW1cIiBvciBcInJlbVwiXG4gKi9cbi8qXG4gKiBDb252ZXJ0IFBob3Rvc2hvcCBsZWFkaW5nIHRvIENTUyBsaW5lLWhlaWdodFxuICpcbiAqIEBwYXJhbSAge051bWJlcn0gICRzaXplIC0gVmFsdWUgb2YgTGVhZGluZyBpbiBQaG90b3Nob3AncyBDaGFyYWN0ZXIgUGFuZWxcbiAqIEBwYXJhbSAge051bWJlcn0gICRiYXNlIC0gVmFsdWUgb2YgRm9udCBTaXplIGluIFBob3Rvc29ocCdzIENoYXJhY3RlciBQYW5lbFxuICovXG4vKlxuICogQ29udmVydCBQaG90b3Nob3AgdHJhY2tpbmcgdG8gQ1NTIGxldHRlci1zcGFjaW5nXG4gKlxuICogQHBhcmFtICB7TnVtYmVyfSAgJHNpemUgLSBWYWx1ZSBvZiBUcmFja2luZyBpbiBQaG90b3Nob3AncyBDaGFyYWN0ZXIgUGFuZWxcbiAqIEBwYXJhbSAge051bWJlcn0gICRiYXNlIC0gVmFsdWUgb2YgRm9udCBTaXplIGluIFBob3Rvc29ocCdzIENoYXJhY3RlciBQYW5lbFxuICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBDb2xvcnNcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIEZvbnRzXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBXaWR0aHNcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIEJyZWFrIFBvaW50c1xuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTGF5ZXJzXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uX19kYXJrIHtcbiAgY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDtcbn1cblxuLl9fbGlnaHQge1xuICBjb2xvcjogI0ZGRkZGRiAhaW1wb3J0YW50O1xufVxuXG4uX19iaWcge1xuICBmb250LXNpemU6IDEuMjVlbSAhaW1wb3J0YW50O1xufVxuXG4uX19zbWFsbCB7XG4gIGZvbnQtc2l6ZTogMC43NWVtICFpbXBvcnRhbnQ7XG59XG5cbi5fX2JvbGQge1xuICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7XG59XG5cbi5fX3JlZ3VsYXIge1xuICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7XG59XG5cbi5fX2l0YWxpYyB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50O1xufVxuXG4uX190ZXh0Y2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG59XG5cbi5fX3RleHRsZWZ0IHtcbiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xufVxuXG4uX190ZXh0cmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50O1xufVxuXG4uX19ub3dyYXAge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG59XG5cbi5fX2NlbnRlciB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuXG4uX19sZWZ0IHtcbiAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbn1cblxuLl9fcmlnaHQge1xuICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcbn1cblxuLl9fbm9tYXJnaW4ge1xuICBtYXJnaW46IDAgIWltcG9ydGFudDtcbn1cblxuLl9fbm9wYWRkaW5nIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uX19ub3RyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uX19ub3RyYW5zaXRpb24ge1xuICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5fX2Jsb2NrIHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbn1cblxuLl9fZmxleCB7XG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbn1cblxuLl9fdmlzdWFsbHloaWRkZW4ge1xuICBsZWZ0OiAtOTk5ZW0gIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OWVtICFpbXBvcnRhbnQ7XG59XG5cbi5fX3ByaW1hcnkge1xuICBjb2xvcjogIzExNEM5NyAhaW1wb3J0YW50O1xufVxuXG4uX19hY2NlbnQge1xuICBjb2xvcjogI0U5MzQzOCAhaW1wb3J0YW50O1xufVxuXG4uX19lcnJvciB7XG4gIGNvbG9yOiAjRTkzNDM4ICFpbXBvcnRhbnQ7XG59XG5cbi8qIHZpc2liaWxpdHkgY2xhc3NlcyAqL1xuQG1lZGlhIChwb2ludGVyOiBmaW5lKSB7XG4gIC5fX3RvdWNoIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbkBzdXBwb3J0cyBub3QgKHBvaW50ZXI6IGZpbmUpIHtcbiAgLl9fdG91Y2gge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpIHtcbiAgLl9fbW91c2Uge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuQG1lZGlhIHByaW50IHtcbiAgLl9fbm9wcmludCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG4vKiBcInZpc2libGVcIiBjbGFzc2VzICovXG5AbWVkaWEgKG1heC13aWR0aDogNDcuOTM3NWVtKSB7XG4gIC5fX3Zpc2libGUteHMge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTMuMjVlbSkge1xuICAuX192aXNpYmxlLXMge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTkuOTM3NWVtKSB7XG4gIC5fX3Zpc2libGUtbSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgLl9fdmlzaWJsZS1sIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc5LjkzNzVlbSkge1xuICAuX192aXNpYmxlLXhsIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogXCJoaWRkZW5cIiBjbGFzc2VzIC0tIE5PVEU6IEl0IGlzIGltcG9ydGFudCB0aGF0IF9oaWRkZW4gY2xhc3NlcyBjb21lIGFmdGVyIF92aXNpYmxlIGZvciBvdmVycmlkZSBwdXJwb3NlcyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLl9faGlkZGVuLXhzIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDUzLjMxMjVlbSkge1xuICAuX19oaWRkZW4tcyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5fX2hpZGRlbi1tIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLl9faGlkZGVuLWwge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogODBlbSkge1xuICAuX19oaWRkZW4teGwge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBQcmludFxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItbWF4LWlkICovXG4ucGFnZV9fY29udGFpbmVyLFxuLnBhZ2VfX2NvbnRhaW5lciAjY29udGVudCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4udGV4dC0tdW5vcmRlcmVkIC50ZXh0X19saXN0LWl0ZW0ge1xuICBjb2xvci1hZGp1c3Q6IGV4YWN0ICFpbXBvcnRhbnQ7XG4gIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC0tY29sdW1uc1tkYXRhLWNvbHVtbnNdIHtcbiAgY29sdW1uLWNvdW50OiAyO1xufVxuXG4uYXJ0aWNsZS0tdmVoaWNsZSAuYXJ0aWNsZV9fcm93IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5zd2lwZXItd3JhcHBlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuLnN3aXBlci1zbGlkZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuLnN3aXBlci1zbGlkZS5zd2lwZXItc2xpZGUtZHVwbGljYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnRhYmJ5X19jb250ZW50W2hpZGRlbl0ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmhlYWRlci1ibG9jay0tZnVsbGJsZWVkLFxuLmhlYWRlcl9faW5uZXIsXG4uZm9vdGVyLWJsb2NrLS1mdWxsYmxlZWQsXG4uZm9vdGVyX19pbm5lciB7XG4gIGJhY2tncm91bmQ6ICNGRkZGRkY7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5oZWFkZXJfX3RleHQsXG4uZm9vdGVyX190ZXh0IHtcbiAgY29sb3I6ICMwMDAwMDA7XG59XG5cbi5jb250ZW50X19sb2NhdGlvbi1pbmZvOjpiZWZvcmUsIC5jb250ZW50X19sb2NhdGlvbi1pbmZvOjphZnRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY29udGVudF9fbG9jYXRpb24taW5mbyAubG9jYXRpb24taW5mb19fY29udGVudCB7XG4gIHBhZGRpbmctbGVmdDogMDtcbn0iLCIvLyBTdHlsZXMgd3JpdHRlbiBieSBKYWNvYiBCZWFyY2UgQCBXZWJsaW54LCBJbmMuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIFByaW50XG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW1heC1pZCAqL1xuXG4ucGFnZV9fY29udGFpbmVyIHtcbiAgICAmLFxuICAgICNjb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4udGV4dC0tdW5vcmRlcmVkIHtcbiAgICAudGV4dF9fbGlzdC1pdGVtIHtcbiAgICAgICAgY29sb3ItYWRqdXN0OiBleGFjdCAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3QgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZVxuICAgIH1cbn1cblxuLnRleHQtLWNvbHVtbnNbZGF0YS1jb2x1bW5zXSB7XG4gICAgJiB7XG4gICAgICAgIGNvbHVtbi1jb3VudDogMjtcbiAgICB9XG59XG5cbi5hcnRpY2xlLS12ZWhpY2xlIHtcbiAgICAuYXJ0aWNsZV9fcm93IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4uc3dpcGVyLXdyYXBwZXIge1xuICAgICYge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4uc3dpcGVyLXNsaWRlIHtcbiAgICAmIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJi5zd2lwZXItc2xpZGUtZHVwbGljYXRlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi50YWJieV9fY29udGVudFtoaWRkZW5dIHtcbiAgICAmIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4uaGVhZGVyLWJsb2NrLS1mdWxsYmxlZWQsXG4uaGVhZGVyX19pbm5lcixcbi5mb290ZXItYmxvY2stLWZ1bGxibGVlZCxcbi5mb290ZXJfX2lubmVyIHtcbiAgICAmIHtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3IoXCJiYWNrZ3JvdW5kXCIpO1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLmhlYWRlcl9fdGV4dCxcbi5mb290ZXJfX3RleHQge1xuICAgICYge1xuICAgICAgICBjb2xvcjogY29sb3IoXCJmb3JlZ3JvdW5kXCIpO1xuICAgIH1cbn1cblxuLmNvbnRlbnRfX2xvY2F0aW9uLWluZm8ge1xuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmxvY2F0aW9uLWluZm9fX2NvbnRlbnQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxufVxuIl19 */
