/*!******************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./node_modules/sass-loader/dist/cjs/index.js!./src/sass/style.scss ***!
  \******************************************************************************************************************************************************************************************/
@charset "UTF-8";
/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
/* SASS globals. */
/**
 * Sets the maximum content width.
 */
/* Unitless due to usage in different contexts. */
/**
 * Breakpoints.
 */
/**
 * Accessible palette.
 https://toolness.github.io/accessible-color-matrix/?n=white&n=dark%20cream&n=plum&n=blue&n=metallic&n=dark&v=FFFFFF&v=DDD7C6&v=B04377&v=0095C3&v=88650B&v=383426
 */
/* Useful. */
/* Box sizing rules */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* Remove default padding */
ul[class],
ol[class] {
  padding: 0;
}

/* Remove default margin */
body,
h1,
h2,
h3,
h4,
p,
ul,
li,
figure,
figcaption,
blockquote,
dl,
dd {
  margin: 0;
}

ul[class],
ol[class] {
  margin-left: 0;
  margin-right: 0;
}

/* Set core body defaults */
body {
  min-height: 100vh;
  scroll-behavior: smooth;
  text-rendering: optimizeSpeed;
  line-height: 1.5;
}

/* Remove list styles on ul, ol elements with a class attribute */
ul[class],
ol[class] {
  list-style: none;
}

/* A elements that don't have a class get default styles */
a:not([class]) {
  text-decoration-skip-ink: auto;
}

/* Make images easier to work with */
img {
  display: block;
  height: auto;
  max-width: 100%;
}

/* Inherit fonts for inputs and buttons */
input,
button,
textarea,
select {
  font: inherit;
}

/* Remove all animations and transitions for people that prefer not to see them */
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.constrain,
h1,
h2,
h3,
h4,
p:not([class]),
ul,
ol,
header,
blockquote,
[class^=wp-block],
ul.grid,
div.grid,
.woocommerce-breadcrumb,
.woocommerce-pagination,
.woocommerce-cart-form,
.woocommerce-notices-wrapper,
.cart-empty,
.cart-collaterals,
.woocommerce-checkout-review-order,
form.woocommerce-checkout,
.woocommerce-order {
  margin-left: auto;
  margin-right: auto;
  max-width: calc(100 * 1rem + 2 * 1.5rem);
  padding-left: 2rem;
  padding-right: 2rem;
}
@media (min-width: 43.75em) {
  .constrain,
  h1,
  h2,
  h3,
  h4,
  p:not([class]),
  ul,
  ol,
  header,
  blockquote,
  [class^=wp-block],
  ul.grid,
  div.grid,
  .woocommerce-breadcrumb,
  .woocommerce-pagination,
  .woocommerce-cart-form,
  .woocommerce-notices-wrapper,
  .cart-empty,
  .cart-collaterals,
  .woocommerce-checkout-review-order,
  form.woocommerce-checkout,
  .woocommerce-order {
    padding-left: calc(2 * 1.5rem);
    padding-right: calc(2 * 1.5rem);
  }
}

/* Affect top-level blocks, only. */
[class^=wp-block] *,
header > *,
.footer > *,
.card-title,
.woocommerce-checkout-review-order p,
.term-description p,
form.woocommerce-checkout *,
.woocommerce-order * {
  padding: 0;
}

.has-background:not(.wp-block-button__link) {
  max-width: calc(100% - 2 * 1.5rem); /* Accounts for the padding already applied to [class^="wp-block-"] in _constraint.scss. */
}
@media (min-width: 100em) {
  .has-background:not(.wp-block-button__link) {
    max-width: calc(100 * 1rem - 2 * 1.5rem);
  }
}

.wp-block-columns .has-background,
.wp-block-image-banner {
  max-width: 100%;
}

[class^=wp-block].alignwide {
  max-width: calc(100 * 1rem);
}

[class^=wp-block].alignfull {
  max-width: 100% !important;
}

/**
 * Modular scales with CSS variables.
 * 
 * Inspiration: https://utopia.fyi/.
 * For quick visual testing: https://www.modularscale.com/
 */
:root {
  --fluid-min-width: 600;
  --fluid-max-width: 1000;
  --fluid-min-size: 16;
  --fluid-max-size: 18;
  --fluid-min-ratio: 1.333;
  --fluid-max-ratio: 1.333;
  --fluid-screen: 100vw;
  --fluid-bp: calc(
    (var(--fluid-screen) - ((var(--fluid-min-width) / 16) * 1rem)) /
  	((var(--fluid-max-width) / 16) - (var(--fluid-min-width) / 16))
  );
}

@media screen and (min-width: 1000px) {
  :root {
    --fluid-screen: calc(var(--fluid-max-width) * 1px);
  }
}
:root {
  --fluid-max-negative: (1 / var(--fluid-max-ratio) / var(--fluid-max-ratio));
  --fluid-min-negative: (1 / var(--fluid-min-ratio) / var(--fluid-min-ratio));
  --fluid-min-scale--1: var(--fluid-min-ratio) * var(--fluid-min-negative);
  --fluid-max-scale--1: var(--fluid-max-ratio) * var(--fluid-max-negative);
  --fluid-min-size--1: (var(--fluid-min-size) * var(--fluid-min-scale--1)) / 16;
  --fluid-max-size--1: (var(--fluid-max-size) * var(--fluid-max-scale--1)) / 16;
  --step--1: calc(((var(--fluid-min-size--1) * 1rem) + (var(--fluid-max-size--1) - var(--fluid-min-size--1)) * var(--fluid-bp)));
  --fluid-min-scale-0: var(--fluid-min-ratio);
  --fluid-max-scale-0: var(--fluid-max-ratio);
  --fluid-min-size-0: (var(--fluid-min-size)) / 16;
  --fluid-max-size-0: (var(--fluid-max-size)) / 16;
  --step-0: calc(((var(--fluid-min-size-0) * 1rem) + (var(--fluid-max-size-0) - var(--fluid-min-size-0)) * var(--fluid-bp)));
  --fluid-min-scale-1: var(--fluid-min-scale-0) * var(--fluid-min-ratio);
  --fluid-max-scale-1: var(--fluid-max-scale-0) * var(--fluid-max-ratio);
  --fluid-min-size-1: (var(--fluid-min-size) * var(--fluid-min-scale-0)) / 16;
  --fluid-max-size-1: (var(--fluid-max-size) * var(--fluid-max-scale-0)) / 16;
  --step-1: calc(((var(--fluid-min-size-1) * 1rem) + (var(--fluid-max-size-1) - var(--fluid-min-size-1)) * var(--fluid-bp)));
  --fluid-min-scale-2: var(--fluid-min-scale-1) * var(--fluid-min-ratio);
  --fluid-max-scale-2: var(--fluid-max-scale-1) * var(--fluid-max-ratio);
  --fluid-min-size-2: (var(--fluid-min-size) * var(--fluid-min-scale-1)) / 16;
  --fluid-max-size-2: (var(--fluid-max-size) * var(--fluid-max-scale-1)) / 16;
  --step-2: calc(((var(--fluid-min-size-2) * 1rem) + (var(--fluid-max-size-2) - var(--fluid-min-size-2)) * var(--fluid-bp)));
  --fluid-min-scale-3: var(--fluid-min-scale-2) * var(--fluid-min-ratio);
  --fluid-max-scale-3: var(--fluid-max-scale-2) * var(--fluid-max-ratio);
  --fluid-min-size-3: (var(--fluid-min-size) * var(--fluid-min-scale-2)) / 16;
  --fluid-max-size-3: (var(--fluid-max-size) * var(--fluid-max-scale-2)) / 16;
  --step-3: calc(((var(--fluid-min-size-3) * 1rem) + (var(--fluid-max-size-3) - var(--fluid-min-size-3)) * var(--fluid-bp)));
  --fluid-min-scale-4: var(--fluid-min-scale-3) * var(--fluid-min-ratio);
  --fluid-max-scale-4: var(--fluid-max-scale-3) * var(--fluid-max-ratio);
  --fluid-min-size-4: (var(--fluid-min-size) * var(--fluid-min-scale-3)) / 16;
  --fluid-max-size-4: (var(--fluid-max-size) * var(--fluid-max-scale-3)) / 16;
  --step-4: calc(((var(--fluid-min-size-4) * 1rem) + (var(--fluid-max-size-4) - var(--fluid-min-size-4)) * var(--fluid-bp)));
  --fluid-min-scale-5: var(--fluid-min-scale-4) * var(--fluid-min-ratio);
  --fluid-max-scale-5: var(--fluid-max-scale-4) * var(--fluid-max-ratio);
  --fluid-min-size-5: (var(--fluid-min-size) * var(--fluid-min-scale-4)) / 16;
  --fluid-max-size-5: (var(--fluid-max-size) * var(--fluid-max-scale-4)) / 16;
  --step-5: calc(((var(--fluid-min-size-5) * 1rem) + (var(--fluid-max-size-5) - var(--fluid-min-size-5)) * var(--fluid-bp)));
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
@media (max-width: 81.24375em) {
  .header__links-drawer {
    background-color: #fff;
    height: 0;
    opacity: 0;
    visibility: hidden;
    width: 100%;
  }
  .header__links-drawer.is-active {
    height: auto;
    opacity: 1;
    padding: 1.5rem 0 0;
    transition: opacity 350ms ease-in;
    visibility: visible;
  }
}
/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.menu {
  display: flex;
  list-style-type: none;
  margin: 0;
  padding: 0;
}
.menu a {
  line-height: 1;
  text-decoration: none;
}

.menu-item:not(:last-child) {
  margin-right: 1.25rem;
}

@media (max-width: 81.24375em) {
  .menu--primary .menu-item:not(:last-child) {
    margin-right: 0;
  }
}
/* Drawer links. */
.menu--primary a {
  color: #383426;
}
.menu--primary .current-menu-item a,
.menu--primary .current-product-parent a {
  color: #88650b;
}

@media (max-width: 81.24375em) {
  .menu--primary {
    flex-wrap: wrap;
  }
  .menu--primary .menu-item {
    padding: calc(0.5 * 1.5rem) 1.5rem calc(0.5 * 1.5rem) 0;
  }
}
/* Non-drawer header links. */
.menu--actions a {
  color: #88650b;
  text-transform: uppercase;
}
.menu--actions a:hover, .menu--actions a:focus {
  color: #383426;
}

/* Footer. */
.menu--pages {
  flex-direction: column;
}
.menu--pages a {
  text-decoration: underline;
  text-underline-position: under;
}

.menu--meta {
  margin-top: calc(2 * 1.5rem);
}
.menu--meta .menu-item a {
  color: #383426;
}
.menu--meta .menu-item a:hover, .menu--meta .menu-item a:focus {
  text-decoration: underline;
}

/* Interaction states. */
.menu--primary .menu-item a {
  position: relative;
}
.menu--primary .menu-item a::after {
  content: "";
  position: absolute;
  width: 100%;
  height: 2px;
  bottom: -0.25em;
  left: 0;
  background-color: #88650b;
  transform: scaleX(0);
  transform-origin: bottom right;
  transition: transform 250ms;
}
.menu--primary .menu-item a .current-menu-item a, .menu--primary .menu-item a:hover, .menu--primary .menu-item a:focus {
  color: #88650b;
}
.menu--primary .menu-item a:hover::after {
  transform-origin: bottom left;
  transform: scaleX(1);
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
@media (min-width: 81.25em) {
  .menu-buttons {
    display: none;
  }
}
@media (max-width: 81.24375em) {
  .menu-buttons,
  .menu--actions {
    position: absolute;
    right: calc(2 * 1.5rem);
  }
  .menu-buttons {
    top: 1.8125rem;
  }
  .menu-buttons *:not(:first-child) {
    margin-left: 1.5rem;
  }
  .menu-buttons a,
  .menu-buttons button {
    color: #383426;
  }
  /* Link to cart. */
  .menu--actions {
    top: 5.9375rem;
  }
}
@media (max-width: 43.6875em) {
  .menu-buttons,
  .menu--actions {
    right: 2rem;
  }
}
.menu-toggle,
.menu-phone {
  color: #383426;
  letter-spacing: 0.0625em;
  line-height: 1;
  padding: 1.5rem 0;
}

.menu-toggle {
  appearance: none;
  background-color: transparent;
  border: 0;
  cursor: pointer;
  z-index: 1;
}

.menu-phone {
  text-decoration: none;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.alert {
  align-items: center;
  background-color: #007eaa;
  color: #fff;
  display: flex;
  justify-content: center;
  padding: 1.5rem 2rem;
}
@media (max-width: 49.9375em) {
  .alert {
    flex-direction: column;
    align-items: flex-start;
  }
}

/**
 * Simplified approach to manage embedded media.
 *
 * Defaults to fill parent container.
 * Depends on chtheme_add_wrapper_to_oembed() in setup.php.
 */
.embed-wrapper {
  height: 0;
  max-width: 100%;
  overflow: hidden;
  padding-bottom: 56.25%;
  position: relative;
}

.embed-wrapper iframe {
  height: 100%;
  left: 0;
  max-width: 100%;
  position: absolute;
  top: 0;
  width: 100%;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.filter--label {
  appearance: none;
  background-color: #383426;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 version=%271.1%27 width=%2714%27 height=%2722%27 viewBox=%270 0 14 22%27%3E%3Cpath fill=%27%23fff%27 d=%27M13.2 9q0 0.2-0.1 0.3l-5.7 5.7q-0.1 0.1-0.3 0.1t-0.3-0.1l-5.7-5.7q-0.1-0.1-0.1-0.3t0.1-0.3l0.6-0.6q0.1-0.1 0.3-0.1t0.3 0.1l4.8 4.8 4.8-4.8q0.1-0.1 0.3-0.1t0.3 0.1l0.6 0.6q0.1 0.1 0.1 0.3z%27/%3E%3C/svg%3E");
  background-position: right 0.5rem center;
  background-repeat: no-repeat;
  border: 2px solid #383426;
  border-radius: 0;
  color: #fff;
  cursor: pointer;
  height: 2rem;
  padding: 0 0.75rem;
  text-align: left;
  width: 11.25rem;
}
.filter--label:hover, .filter--label:focus {
  background-color: #88650b;
  border-color: #88650b;
  color: #fff;
}
@media (max-width: 81.24375em) {
  .filter--label {
    width: 100%;
  }
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.filter--size {
  display: flex;
  flex-wrap: wrap;
}
@media (max-width: 75em) {
  .filter--size {
    max-width: calc(16 * 1.5rem);
  }
}
.filter--size li {
  margin-right: 0.75rem;
  margin-top: 0 !important;
  width: auto;
}
@media (min-width: 84.375em) {
  .filter--size li {
    margin-right: 1.5rem;
  }
}
.filter--size li {
  /* This is a magic number to ensure the last row children have no bottom margin.
  Not terrific, though the only case where this will fail is an impossible situation
  with one child per row. */
}
@media (max-width: 75em) {
  .filter--size li:nth-child(-n+3) {
    margin-bottom: calc(0.5 * 1.5rem);
  }
}
.filter--size a {
  align-items: center;
  background-color: transparent;
  border: 2px solid #b04377;
  border-radius: 50%;
  box-shadow: 0.0625rem 0.0625rem 0 0, 0.125rem 0.125rem 0 0, 0.1875rem 0.1875rem 0 0, 0.25rem 0.25rem 0 0;
  color: #b04377;
  display: flex;
  height: calc(3 * var(--step-1));
  justify-content: center;
  text-decoration: none;
  transition: 150ms;
  transition: transform 100ms cubic-bezier(0.22, 1, 0.36, 1);
  width: calc(3 * var(--step-1));
}
.filter--size a:hover, .filter--size a:focus {
  box-shadow: none;
  color: #b04377;
  transform: translate3d(0.25rem, 0.25rem, 0);
}
.filter--size a:focus {
  background-color: #b04377;
  color: #fff;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.footer {
  padding-bottom: calc(2 * 1.5rem);
  padding-top: calc(1 * 1.5rem);
  position: relative;
}
.footer::before {
  content: "";
  background-image: url("data:image/svg+xml,%3Csvg version=%271.1%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:xlink=%27http://www.w3.org/1999/xlink%27 x=%270px%27 y=%270px%27 viewBox=%270 0 22.9 22.9%27 style=%27enable-background:new 0 0 22.9 22.9;%27 xml:space=%27preserve%27%3E%3Ccircle fill=%27%23383426%27 class=%27st0%27 cx=%275.7%27 cy=%275.9%27 r=%273%27/%3E%3Ccircle fill=%27%23383426%27 class=%27st0%27 cx=%2717.2%27 cy=%2717.2%27 r=%273%27/%3E%3C/svg%3E%0A");
  background-size: 12px;
  height: calc(2 * 1.5rem);
  left: 0;
  margin: auto;
  position: absolute;
  right: 0;
  top: -1.5rem;
  width: calc(100% - 2 * 1.5rem);
}
@media (min-width: 43.75em) {
  .footer::before {
    width: calc(100% - 4 * 1.5rem);
  }
}
.footer a {
  color: #88650b;
  text-decoration: none;
}
.footer a:hover, .footer a:focus {
  text-decoration: underline;
}
.footer dt:not(:first-child) {
  margin-top: 1.5rem;
}
.footer dd {
  margin-top: 0;
}
.footer .wordmark {
  margin-top: 0.1875rem;
}

address {
  margin-top: calc(0.5 * 1.5rem) !important;
}

.social-links {
  display: flex;
  flex-wrap: wrap;
  margin-top: 1.5rem !important;
}
.social-links dt {
  width: 100%;
}
.social-links dd {
  margin-right: 0.75rem;
  margin-top: 0.5rem;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
/**
 * Manages header layout for all views.
 */
.header {
  align-items: flex-end;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  padding-top: calc(2 * 1.5rem);
  position: relative;
}

@media (min-width: 43.75em) {
  .header__links-drawer {
    padding-bottom: 3px;
  }
}
.header__links {
  align-items: flex-end;
  display: flex;
  flex-direction: column;
}
.header__links select {
  margin-top: 0.875rem;
}
@media (max-width: 81.24375em) {
  .header__links {
    width: 100%;
  }
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.woocommerce-pagination .page-numbers {
  display: flex;
  justify-content: center;
}
.woocommerce-pagination li {
  margin-top: 0 !important;
}
.woocommerce-pagination li .page-numbers {
  align-items: center;
  display: flex;
  height: calc(2 * 1.5rem);
  justify-content: center;
  margin: 0 0.375rem;
  width: calc(2 * 1.5rem);
}
.woocommerce-pagination li .next,
.woocommerce-pagination li .prev {
  display: none;
}
.woocommerce-pagination .current {
  background: #88650b;
  border-radius: 50%;
  color: #fff;
  display: inline-block;
  text-align: center;
  text-decoration: none;
  width: 100%;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.wordmark {
  display: block;
  height: auto;
  transition: 250ms;
}
.wordmark svg {
  fill: #383426;
  width: 6.875rem;
}

.go-home .wordmark:hover svg, .go-home .wordmark:focus svg {
  fill: #88650b;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.wp-block-buttons .wp-block-button {
  display: inline-block;
}

.wp-block-buttons .wp-block-button:not(:last-child) {
  margin-right: 1.5rem;
}

.wp-block-button__link {
  display: inline-block;
  text-decoration: none;
  overflow-wrap: break-word;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.wp-block-columns {
  display: flex;
  flex-wrap: wrap;
}

.wp-block-columns.has-background {
  padding: 0 1.5rem 1.5rem;
}

.wp-block-column {
  flex-grow: 1;
  min-width: 0;
  word-break: break-word;
  overflow-wrap: break-word;
}

@media (max-width: 40.5625em) {
  .wp-block-column {
    flex-basis: 100%;
  }
}
@media (min-width: 40.625em) and (max-width: 62.4375em) {
  /* Push last column left if row has uneven number of columns. */
  .wp-block-columns::after {
    content: "";
    flex: auto;
  }
  .wp-block-column {
    flex-basis: calc(50% - 1.5rem);
    flex-grow: 0;
  }
  .wp-block-column:nth-child(2n) {
    margin-left: calc(2 * 1.5rem);
  }
}
@media (min-width: 62.5em) {
  .wp-block-columns {
    flex-wrap: nowrap;
  }
  .wp-block-column {
    flex-basis: 0;
    flex-grow: 1;
  }
  .wp-block-column[style] {
    flex-grow: 0;
  }
  .wp-block-column:not(:first-child) {
    margin-left: calc(2 * 1.5rem);
  }
}
.wp-block-column.is-vertically-aligned-top {
  align-self: flex-start;
}

.wp-block-column.is-vertically-aligned-center {
  -ms-grid-row-align: center;
  align-self: center;
}

.wp-block-column.is-vertically-aligned-bottom {
  align-self: flex-end;
}

.wp-block-column.is-vertically-aligned-bottom,
.wp-block-column.is-vertically-aligned-center,
.wp-block-column.is-vertically-aligned-top {
  width: 100%;
}

/* Alignment. */
.aligncenter,
.has-text-align-center {
  text-align: center;
}

.alignright,
.has-text-align-right {
  text-align: right;
}

.alignfull *,
.alignwide * {
  width: 100%;
}

.alignwide {
  margin-left: auto;
  margin-right: auto;
}

.alignfull {
  padding: 0;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.wp-block-group.alignfull {
  padding: 0 1.5rem;
}
@media (min-width: 100em) {
  .wp-block-group.alignfull .wp-block-group__inner-container {
    max-width: calc(100 * 1rem - 2 * 1.5rem);
  }
}

.wp-block-group.has-background {
  padding: calc(2 * 1.5rem) 2rem;
}
.wp-block-group.has-background .wp-block-columns,
.wp-block-group.has-background .wp-block-column:first-child {
  margin-top: 0 !important;
}
@media (min-width: 43.75em) {
  .wp-block-group.has-background {
    padding: calc(4 * 1.5rem) calc(2 * 1.5rem) calc(2 * 1.5rem);
  }
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.wp-block-image img {
  max-width: 100%;
}

.wp-block-image figure {
  display: table;
}

.wp-block-image figcaption {
  display: table-caption; /* Constrain width of element to parent. */
  caption-side: bottom; /* Value required due to display: table-caption usage. */
  margin-bottom: 1.5rem;
  margin-top: calc(1.5rem / 2);
  text-align: left;
}

@media (max-width: 43.75em) {
  .wp-block-image .alignleft,
  .wp-block-image .alignright {
    max-width: 33.3333333333%;
  }
}
/* Alignment. */
.wp-block-image .aligncenter {
  margin-left: auto;
  margin-right: auto;
}

.wp-block-image .alignleft {
  float: left;
  margin-right: 1.5rem;
}

.wp-block-image .alignright {
  float: right;
  margin-left: 1.5rem;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.wp-block-pullquote blockquote {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}
.wp-block-pullquote blockquote p {
  margin: 0;
  max-width: 43.75rem;
}

.wp-block-pullquote.has-background {
  max-width: calc(100% - 2 * 1.5rem); /* Accounts for the padding already applied to [class^="wp-block-"] in _constraint.scss. */
  padding: 1.5rem;
}
@media (min-width: 100em) {
  .wp-block-pullquote.has-background {
    max-width: calc(100 * 1rem - 2 * 1.5rem);
  }
}

.wp-block-pullquote.alignfull blockquote {
  max-width: calc(100 * 1rem - 2 * 1.5rem);
}

.wp-block-pullquote.alignleft {
  margin-left: 1.5rem;
}

.wp-block-pullquote.alignright {
  margin-right: 1.5rem;
}

.wp-block-pullquote.alignleft,
.wp-block-pullquote.alignright {
  width: 100%;
}
@media (min-width: 31.25em) {
  .wp-block-pullquote.alignleft,
  .wp-block-pullquote.alignright {
    max-width: 50%;
  }
}
@media (min-width: 50em) {
  .wp-block-pullquote.alignleft,
  .wp-block-pullquote.alignright {
    max-width: calc(100 * 1rem / 3);
  }
}

/* Alignment. */
@media (min-width: 31.25em) {
  .wp-block-pullquote.alignleft {
    float: left;
    margin-right: 1.5rem;
  }
  .wp-block-pullquote.alignright {
    float: right;
    margin-left: 1.5rem;
  }
  .wp-block-pullquote.alignleft,
  .wp-block-pullquote.alignright {
    margin-bottom: calc(1.5rem / 2);
  }
}
/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.skip-to-content {
  background-color: #fff;
  left: calc(2 * 1.5rem);
  padding: 0.555em calc(2 * 1.5rem);
  position: absolute;
  transform: translateY(-100%);
  z-index: 10;
}
.skip-to-content:focus {
  transform: translateY(0.555em);
  transition: transform 250ms;
}

main {
  outline: none;
}

/* Hide element except for screenreaders. */
.screen-reader-text,
.not-visible {
  position: absolute;
  top: auto;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
  width: 1px;
  height: 1px;
  white-space: nowrap;
}

/* No JS fallback. */
.no-js .menu--primary {
  align-items: flex-start;
  justify-content: flex-start;
  min-height: 0;
}
.no-js .header__links-drawer {
  height: auto;
  opacity: 1;
  visibility: visible;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
body {
  background-color: #fff;
  color: #383426;
}

/* Block-generated colour classes. */
.has-white-color {
  color: #fff;
}

.has-white-background-color {
  background-color: #fff;
}

/**
 * Button state.
 * @link https://www.billerickson.net/wordpress-color-palette-button-styling-gutenberg/
 */
.wp-block-button__link.has-white-background-color {
  border-color: #fff;
}
.wp-block-button__link.has-white-background-color:hover, .wp-block-button__link.has-white-background-color:focus {
  background-color: transparent;
  color: #fff;
}

/*
white text, black background
*/
.is-style-outline .wp-block-button__link {
  background-color: transparent;
  border-color: #fff;
}
.is-style-outline .wp-block-button__link.has-white-background-color:hover, .is-style-outline .wp-block-button__link.has-white-background-color:focus {
  color: #fff;
}
.is-style-outline .wp-block-button__link.has-white-color {
  color: #fff;
}
.is-style-outline .wp-block-button__link.has-white-color:hover, .is-style-outline .wp-block-button__link.has-white-color:focus {
  background-color: #fff;
}

.has-cream-dark-color {
  color: #ddd7c6;
}

.has-cream-dark-background-color {
  background-color: #ddd7c6;
}

/**
 * Button state.
 * @link https://www.billerickson.net/wordpress-color-palette-button-styling-gutenberg/
 */
.wp-block-button__link.has-cream-dark-background-color {
  border-color: #ddd7c6;
}
.wp-block-button__link.has-cream-dark-background-color:hover, .wp-block-button__link.has-cream-dark-background-color:focus {
  background-color: transparent;
  color: #ddd7c6;
}

/*
white text, black background
*/
.is-style-outline .wp-block-button__link {
  background-color: transparent;
  border-color: #ddd7c6;
}
.is-style-outline .wp-block-button__link.has-cream-dark-background-color:hover, .is-style-outline .wp-block-button__link.has-cream-dark-background-color:focus {
  color: #ddd7c6;
}
.is-style-outline .wp-block-button__link.has-cream-dark-color {
  color: #ddd7c6;
}
.is-style-outline .wp-block-button__link.has-cream-dark-color:hover, .is-style-outline .wp-block-button__link.has-cream-dark-color:focus {
  background-color: #ddd7c6;
}

.has-metallic-color {
  color: #88650b;
}

.has-metallic-background-color {
  background-color: #88650b;
}

/**
 * Button state.
 * @link https://www.billerickson.net/wordpress-color-palette-button-styling-gutenberg/
 */
.wp-block-button__link.has-metallic-background-color {
  border-color: #88650b;
}
.wp-block-button__link.has-metallic-background-color:hover, .wp-block-button__link.has-metallic-background-color:focus {
  background-color: transparent;
  color: #88650b;
}

/*
white text, black background
*/
.is-style-outline .wp-block-button__link {
  background-color: transparent;
  border-color: #88650b;
}
.is-style-outline .wp-block-button__link.has-metallic-background-color:hover, .is-style-outline .wp-block-button__link.has-metallic-background-color:focus {
  color: #88650b;
}
.is-style-outline .wp-block-button__link.has-metallic-color {
  color: #88650b;
}
.is-style-outline .wp-block-button__link.has-metallic-color:hover, .is-style-outline .wp-block-button__link.has-metallic-color:focus {
  background-color: #88650b;
}

.has-blue-color {
  color: #007eaa;
}

.has-blue-background-color {
  background-color: #007eaa;
}

/**
 * Button state.
 * @link https://www.billerickson.net/wordpress-color-palette-button-styling-gutenberg/
 */
.wp-block-button__link.has-blue-background-color {
  border-color: #007eaa;
}
.wp-block-button__link.has-blue-background-color:hover, .wp-block-button__link.has-blue-background-color:focus {
  background-color: transparent;
  color: #007eaa;
}

/*
white text, black background
*/
.is-style-outline .wp-block-button__link {
  background-color: transparent;
  border-color: #007eaa;
}
.is-style-outline .wp-block-button__link.has-blue-background-color:hover, .is-style-outline .wp-block-button__link.has-blue-background-color:focus {
  color: #007eaa;
}
.is-style-outline .wp-block-button__link.has-blue-color {
  color: #007eaa;
}
.is-style-outline .wp-block-button__link.has-blue-color:hover, .is-style-outline .wp-block-button__link.has-blue-color:focus {
  background-color: #007eaa;
}

.has-plum-color {
  color: #b04377;
}

.has-plum-background-color {
  background-color: #b04377;
}

/**
 * Button state.
 * @link https://www.billerickson.net/wordpress-color-palette-button-styling-gutenberg/
 */
.wp-block-button__link.has-plum-background-color {
  border-color: #b04377;
}
.wp-block-button__link.has-plum-background-color:hover, .wp-block-button__link.has-plum-background-color:focus {
  background-color: transparent;
  color: #b04377;
}

/*
white text, black background
*/
.is-style-outline .wp-block-button__link {
  background-color: transparent;
  border-color: #b04377;
}
.is-style-outline .wp-block-button__link.has-plum-background-color:hover, .is-style-outline .wp-block-button__link.has-plum-background-color:focus {
  color: #b04377;
}
.is-style-outline .wp-block-button__link.has-plum-color {
  color: #b04377;
}
.is-style-outline .wp-block-button__link.has-plum-color:hover, .is-style-outline .wp-block-button__link.has-plum-color:focus {
  background-color: #b04377;
}

.has-dark-color {
  color: #383426;
}

.has-dark-background-color {
  background-color: #383426;
}

/**
 * Button state.
 * @link https://www.billerickson.net/wordpress-color-palette-button-styling-gutenberg/
 */
.wp-block-button__link.has-dark-background-color {
  border-color: #383426;
}
.wp-block-button__link.has-dark-background-color:hover, .wp-block-button__link.has-dark-background-color:focus {
  background-color: transparent;
  color: #383426;
}

/*
white text, black background
*/
.is-style-outline .wp-block-button__link {
  background-color: transparent;
  border-color: #383426;
}
.is-style-outline .wp-block-button__link.has-dark-background-color:hover, .is-style-outline .wp-block-button__link.has-dark-background-color:focus {
  color: #383426;
}
.is-style-outline .wp-block-button__link.has-dark-color {
  color: #383426;
}
.is-style-outline .wp-block-button__link.has-dark-color:hover, .is-style-outline .wp-block-button__link.has-dark-color:focus {
  background-color: #383426;
}

body {
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
main {
  margin-top: calc(4 * 1.5rem);
  padding-bottom: calc(4 * 1.5rem);
}

@media (min-width: 75em) {
  .single-product main {
    margin-top: calc(0.5rem + 4 * 1.5rem);
  }
}
@media (max-width: 74.9375em) {
  main {
    margin-top: calc(2 * 1.5rem);
  }
}
.home main {
  margin-top: calc(2 * 1.5rem);
}

.rhythm * + *,
.rhythm > *,
.grid--products {
  margin-top: calc(2 * 1.5rem);
}

.rhythm {
  /* Tighter margin for grouped elements. */
}
.rhythm p + p,
.rhythm p + *:not([class^=wp-block]):not(.product-attributes),
.rhythm li:not(:first-child) {
  margin-top: 0.75rem;
}
.rhythm h1 + *,
.rhythm h2 + *,
.rhythm h3 + *,
.rhythm h2 + h3,
.rhythm .wp-block-chthonic-table-condition {
  margin-top: 1.5rem;
}
.rhythm * + h2,
.rhythm * + h3,
.rhythm .products-related,
.rhythm .woocommerce-pagination {
  margin-top: calc(3 * 1.5rem);
}
.rhythm {
  /* Prevent top margin for specified elements. */
}
.rhythm br,
.rhythm main,
.rhythm td,
.rhythm article,
.rhythm .no-top-margin,
.rhythm .wp-block-image-banner,
.rhythm .wp-block-image-banner + *,
.rhythm .wp-block-image-banner__media,
.rhythm .woocommerce-products-header,
.rhythm .menu--meta li {
  margin-top: 0;
}
.rhythm {
  /* Blocks. */
}
.rhythm .wp-block-columns,
.rhythm .wp-block-column > *:first-child {
  margin-top: 0;
}
.rhythm .wp-block-columns.has-background,
.rhythm .wp-block-column {
  margin-top: calc(2 * 1.5rem);
}
@media (min-width: 40.625em) {
  .rhythm .wp-block-columns,
  .rhythm .wp-block-columns.has-background .wp-block-column {
    margin-top: calc(3 * 1.5rem);
  }
  .rhythm .wp-block-column:nth-child(-n+2) {
    margin-top: 0;
  }
}
@media (min-width: 62.5em) {
  .rhythm .wp-block-column {
    margin-top: 0;
  }
}
@media (max-width: 37.4375em) {
  .rhythm .grid > * {
    margin-top: calc(2 * 1.5rem) !important;
  }
  .rhythm .grid--product-single > *,
  .rhythm .products-related .grid--products > *:first-child,
  .rhythm .grid--featured > *:first-child {
    margin-top: 0 !important;
  }
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.wp-block-image-banner__cta h1 {
  font-size: var(--step-4);
}
@media (min-width: 31.25em) {
  .wp-block-image-banner__cta h1 {
    font-size: var(--step-5);
  }
}

h2 {
  font-size: var(--step-3);
}

h2:not(.all-caps):not(.wp-block-chthonic-heading-fancy):not(.card-title),
.product-text .product-title {
  font-size: var(--step-2);
}

h3,
.is-style-text-larger,
.card-title,
.filter--size a,
.products-related .card-title,
.mc-status {
  font-size: var(--step-1);
}

h1,
h4,
p,
table,
address,
.all-caps,
.menu--primary,
.menu--actions,
.menu--pages,
.filter--label,
.rhythm li,
.alert,
.product-text button,
.products-related h2,
.footer .wp-block-columns {
  font-size: var(--step-0);
}

cite,
.is-style-text-smaller,
.card-description,
.attribute-type,
.badge,
.menu--meta a {
  font-size: var(--step--1);
}

@media (max-width: 81.24375em) {
  .menu--primary {
    font-size: var(--step-1);
  }
}
/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
body {
  font-family: sofia-pro, sans-serif;
  font-weight: 300;
}

/* Headings. */
h1,
h2,
h3,
h4 {
  font-weight: 300; /* @todo Review usage. */
}

h1,
.all-caps {
  letter-spacing: 0.03125em;
  text-transform: uppercase;
}

/* Content. */
p,
li {
  margin-left: 0;
  max-width: 32em;
}

/* Family assignments. */
.serif,
.alert,
.wp-block-image-banner__cta h1,
.card--product .card-description,
.menu-buttons,
.filter--label,
.attribute-type {
  font-family: p22-mackinac-pro, serif;
  font-weight: 400;
}

h1,
.all-caps,
.woocommerce-checkout h1,
.menu--actions a,
.product-title,
.product-text button,
.shop_table th {
  font-family: nimbus-sans, sans-serif;
  font-weight: 900;
}

/* HTML elements. */
strong {
  font-weight: 600;
}

address {
  font-style: normal;
}

p {
  line-height: 1.6;
}

.is-style-text-larger {
  max-width: 26em;
}

a {
  color: #383426;
  text-decoration: underline;
  text-underline-position: under;
}
a:hover, a:focus {
  color: #88650b;
  text-decoration: none;
}

ul:not([class]) {
  list-style-type: none;
}
ul:not([class]) li {
  position: relative;
}
ul:not([class]) li::before {
  content: "·";
  font-size: var(--step-1);
  left: -0.75rem;
  position: absolute;
  top: -0.375rem;
}

dd {
  width: auto;
}

.ui-shadow {
  position: relative;
}
.ui-shadow::before {
  box-shadow: 0 1px 2px #c8c8c8, 0 1px 3px #fafafa;
  content: "";
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
  z-index: -1;
}

/*
.has-cream-dark-background-color figure {
	background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 22.9 22.9' xml:space='preserve'%3E%3Ccircle fill='%2388650b' class='st0' cx='5.7' cy='5.9' r='3'/%3E%3Ccircle fill='%2388650b' class='st0' cx='17.2' cy='17.2' r='3'/%3E%3C/svg%3E%0A");
	background-position: center bottom;
	background-repeat: repeat;
	background-size: 12px;
	padding: $default-whitespace;
}*/
/* Components. */
/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.button {
  appearance: none;
  background-color: transparent;
  border: 2px solid currentColor;
  border-radius: 0.1875rem;
  box-shadow: 0.0625rem 0.0625rem 0 0, 0.125rem 0.125rem 0 0, 0.1875rem 0.1875rem 0 0, 0.25rem 0.25rem 0 0;
  color: #b04377;
  cursor: pointer;
  display: table;
  letter-spacing: 0.03125em;
  line-height: 3;
  margin-top: calc(2 * 1.5rem);
  padding: 0 1.5rem !important;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  transform: translateX(-0.25rem);
  width: auto;
}
.button:hover, .button:focus {
  box-shadow: none;
  transform: translate3d(0, 0.25rem, 0);
}
.button:hover {
  border-color: currentColor;
  color: #b04377;
}
.button:focus {
  background-color: #b04377;
  border-color: #b04377;
  color: #fff;
}

.form--mailchimp .button,
.woocommerce-notices-wrapper .button {
  color: #fff;
}
.form--mailchimp .button:focus,
.woocommerce-notices-wrapper .button:focus {
  background-color: #fff;
  color: #b04377;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.card {
  display: flex;
  flex-direction: column;
  position: relative;
}

.card__text,
.card__media {
  margin-top: 0;
}

.card__text {
  margin-top: 0;
  order: 1;
}

.card-title {
  line-height: 1;
}

.card-target {
  color: inherit;
  text-decoration: none;
}

.card-target:focus {
  outline: none;
}

.card-target::after {
  bottom: -0.75rem;
  border-radius: 0.1875rem;
  content: "";
  left: -0.75rem;
  position: absolute;
  right: -0.75rem;
  top: -0.75rem;
  z-index: 1;
}

.card-target:hover::after,
.card-target:focus::after {
  border: 2px solid #383426;
}

/* Card: Product. */
.card--product .card-title {
  margin-top: 1rem;
}
.card--product .card-description {
  display: flex;
  justify-content: space-between;
  margin-top: 0.375rem;
}
.card--product ins {
  color: #b04377;
  margin-right: 0.375em;
  text-decoration: none;
}

/* Avoid layout reflow after lazy-load by faking aspect-ratio. */
.card__media figure {
  height: 0;
  padding-top: 100%;
  position: relative;
}
.card__media figure img {
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}

.card-description .price {
  display: flex;
  flex-direction: row-reverse;
}

.card-description,
.card-description .size,
.price ins {
  margin-top: 0;
}

.badge {
  align-items: center;
  background-color: #b04377;
  border-radius: 50%;
  color: #fff;
  display: flex;
  height: calc(2 * 1.5rem);
  justify-content: center;
  letter-spacing: 0.0625em;
  right: 1.5rem;
  margin: 0;
  pointer-events: none;
  position: absolute;
  text-transform: uppercase;
  top: 1.5rem;
  width: calc(2 * 1.5rem);
  z-index: 1;
}

.card--cta .card-title {
  margin-top: 0;
}
.card--cta .card-target:hover::after,
.card--cta .card-targer:focus::after {
  border: 4px solid #88650b;
}
.card--cta .card-description {
  margin-top: calc(0.5 * 1.5rem);
}
.card--cta p {
  padding: 0 !important;
}

/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.icon {
  fill: #88650b;
  height: var(--step-1);
  width: var(--step-1);
}

.link {
  display: flex;
  transition: 250ms;
}

/* Social icon link. */
.link--social:hover .icon--facebook, .link--social:focus .icon--facebook {
  fill: #3b5998;
}
.link--social:hover .icon--instagram, .link--social:focus .icon--instagram {
  fill: #e1306c;
}

/* Blocks. */
/**
 * The master SASS file for the theme.
 *
 * When considering how to structure SASS partials a good rule to follow is
 * this: always write CSS to be as easy to remove as possible.
 */
.wp-block-button__link {
  border-radius: 0.1875rem;
  border-style: solid;
  border-width: 2px;
  line-height: 3;
  padding: 0 1.5rem;
  text-align: center;
}

.wp-block-pullquote blockquote p {
  max-width: 43.75rem;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL3N0eWxlLmFhYTgzMjIyZDI4NmRmNzFlY2IzLm1pbi5jc3MiLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0JBQWdCO0FBQWhCOzs7OztFQUFBO0FDQUE7QUFFQTs7RUFBQTtBQUdzQjtBQUV0Qjs7RUFBQTtBQU1BOzs7RUFBQTtBQVdBO0FDeEJBO0FBQ0E7OztFQUdFO0FGcUJGOztBRWxCQTtBQUNBOztFQUVFO0FGcUJGOztBRWxCQTtBQUNBOzs7Ozs7Ozs7Ozs7O0VBYUU7QUZxQkY7O0FFbEJBOztFQUVFO0VBQ0E7QUZxQkY7O0FFbEJBO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBRnFCRjs7QUVsQkE7QUFDQTs7RUFFRTtBRnFCRjs7QUVsQkE7QUFDQTtFQUNFO0FGcUJGOztBRWxCQTtBQUNBO0VBQ0U7RUFDQTtFQUNBO0FGcUJGOztBRWxCQTtBQUNBOzs7O0VBSUU7QUZxQkY7O0FFbEJBO0FBQ0E7RUFDRTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0VGcUJGO0FBQ0Y7QUFsR0E7Ozs7O0VBQUE7QUdFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXNCQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0FId0dEO0FHdEdDO0VBNUJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBNkJFO0lBQ0E7RUg4SEE7QUFDRjs7QUczSEE7QUFDQTs7Ozs7Ozs7RUFRQztBSDhIRDs7QUczSEE7RUFDQztBSDhIRDtBRzNIQztFQUpEO0lBS0U7RUg4SEE7QUFDRjs7QUczSEE7O0VBRUM7QUg4SEQ7O0FHM0hBO0VBQ0M7QUg4SEQ7O0FHM0hBO0VBQ0M7QUg4SEQ7O0FJak1BOzs7OztFQUFBO0FBTUM7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBOzs7R0FBQTtBSnNNRDs7QUloTUU7RUFDRDtJQUNFO0VKbU1EO0FBQ0Y7QUloTUU7RUFDRDtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtF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O0VBQ0M7SUFDQztFekJ1dkNEO0V5QnB2Q0E7OztJQUdDO0V6QnN2Q0Q7QUFDRjs7QUE3MUNBOzs7OztFQUFBO0EwQkVBO0VBQ0M7QTFCbzJDRDtBMEJsMkNDO0VBSEQ7SUFJRTtFMUJxMkNBO0FBQ0Y7O0EwQmwyQ0E7RUFDQztBMUJxMkNEOztBMEJsMkNBOztFQUVDO0ExQnEyQ0Q7O0EwQmwyQ0E7Ozs7OztFQU1DO0ExQnEyQ0Q7O0EwQmwyQ0E7Ozs7Ozs7Ozs7Ozs7OztFQWVDO0ExQnEyQ0Q7O0EwQmwyQ0E7Ozs7OztFQU1DO0ExQnEyQ0Q7O0EwQmwyQ0E7RUFDQztJQUNDO0UxQnEyQ0E7QUFDRjtBQS81Q0E7Ozs7O0VBQUE7QTJCRUE7RUFDQztFQUNBO0EzQnE2Q0Q7O0EyQmw2Q0E7QUFDQTs7OztFQUlDO0EzQnE2Q0Q7O0EyQmw2Q0E7O0VBRUM7RUFDQTtBM0JxNkNEOztBMkJsNkNBO0FBQ0E7O0VBRUM7RUFDQTtBM0JxNkNEOztBMkJsNkNBO0FBQ0E7Ozs7Ozs7RUFPQztFQUNBO0EzQnE2Q0Q7O0EyQmw2Q0E7Ozs7Ozs7RUFRQztFQUNBO0EzQm82Q0Q7O0EyQmo2Q0E7QUFDQTtFQUNDO0EzQm82Q0Q7O0EyQmo2Q0E7RUFDQztBM0JvNkNEOztBMkJqNkNBO0VBQ0M7QTNCbzZDRDs7QTJCajZDQTtFQUNDO0EzQm82Q0Q7O0EyQmo2Q0E7RUFDQyxjMUJsRGE7RTBCbURiO0VBQ0E7QTNCbzZDRDtBMkJsNkNDO0VBRUMsYzFCdkRnQjtFMEJ3RGhCO0EzQm02Q0Y7O0EyQi81Q0E7RUFDQztBM0JrNkNEO0EyQmg2Q0M7RUFDQztBM0JrNkNGO0EyQmg2Q0U7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQms2Q0g7O0EyQjc1Q0E7RUFDQztBM0JnNkNEOztBNEJsZ0RBO0VBQ0M7QTVCcWdERDtBNEJuZ0RDO0VBQ0M7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBNUJvZ0RGOztBNEJqZ0RBOzs7Ozs7O0VBQUE7QUNQQTtBN0JSQTs7Ozs7RUFBQTtBOEJFQTtFQUNDO0VBQ0E7RUFDQTtFQUNBLHdCN0JvQmU7RTZCbkJmO0VBQ0EsYzdCU2E7RTZCUmI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJnaUREO0E4QjloREM7RUFFQztFQUNBO0E5QitoREY7QThCNWhEQztFQUNDO0VBQ0EsYzdCWlk7QUQwaURkO0E4QjNoREM7RUFDQyx5QjdCaEJZO0U2QmlCWixxQjdCakJZO0U2QmtCWixXN0JiYTtBRDBpRGY7O0E4QnZoREM7O0VBQ0MsVzdCcEJhO0FEK2lEZjtBOEJ6aERFOztFQUNDLHNCN0J2Qlk7RTZCd0JaLGM3QjdCVztBRHlqRGQ7O0FBMWtEQTs7Ozs7RUFBQTtBK0JFQTtFQUNDO0VBQ0E7RUFDQTtBL0JpbEREOztBK0I5a0RBOztFQUVDO0EvQmlsREQ7O0ErQjlrREE7RUFDQztFQUNBO0EvQmlsREQ7O0ErQjlrREE7RUFDQztBL0JpbEREOztBK0I5a0RBO0VBQ0M7RUFDQTtBL0JpbEREOztBK0I5a0RBO0VBQ0M7QS9CaWxERDs7QStCOWtEQTtFQUNDO0VBQ0Esd0I5QlBlO0U4QlFmO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0JpbEREOztBK0I5a0RBOztFQUVDO0EvQmlsREQ7O0ErQjlrREE7QUFFQztFQUNDO0EvQmdsREY7QStCN2tEQztFQUNDO0VBQ0E7RUFDQTtBL0Ira0RGO0ErQjVrREM7RUFDQyxjOUIzQ1k7RThCNENaO0VBQ0E7QS9COGtERjs7QStCMWtEQTtBQUNBO0VBQ0M7RUFDQTtFQUNBO0EvQjZrREQ7QStCM2tEQztFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CNmtERjs7QStCemtEQTtFQUNDO0VBQ0E7QS9CNGtERDs7QStCemtEQTs7O0VBR0M7QS9CNGtERDs7QStCemtEQTtFQUNDO0VBQ0EseUI5QjdFYTtFOEI4RWI7RUFDQSxXOUIxRWM7RThCMkVkO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsYTlCNUVvQjtFOEI2RXBCO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsVzlCakZvQjtFOEJrRnBCO0VBQ0E7QS9CNGtERDs7QStCeGtEQztFQUNDO0EvQjJrREY7QStCeGtEQzs7RUFFQztBL0Iwa0RGO0ErQnZrREM7RUFDQztBL0J5a0RGO0ErQnRrREM7RUFDQztBL0J3a0RGOztBQXRzREE7Ozs7O0VBQUE7QWdDRUE7RUFDQyxhL0JrQmlCO0UrQmpCakI7RUFDQTtBaEM2c0REOztBZ0N6c0RBO0VBQ0M7RUFDQTtBaEM0c0REOztBZ0N6c0RBO0FBSUU7RUFDQztBaEN5c0RIO0FnQ3RzREU7RUFDQztBaEN3c0RIOztBNkJwdERBO0E3QlhBOzs7OztFQUFBO0FpQ0VBO0VBQ0Msd0JoQ3VCZTtFZ0N0QmY7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakN1dUREOztBa0M3dURFO0VBQ0M7QWxDZ3ZESCxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL3N0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL19jb25maWcuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvX25vcm1hbGlzZS5zY3NzIiwid2VicGFjazovL3NvdXAtdGhlbWUvLi9zcmMvc2Fzcy9sYXlvdXQvX2NvbnN0cmFpbnQuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvbGF5b3V0L19zY2FsZS5zY3NzIiwid2VicGFjazovL3NvdXAtdGhlbWUvLi9zcmMvc2Fzcy9uYXZpZ2F0aW9uL19kcmF3ZXIuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvbmF2aWdhdGlvbi9fbGlua3Muc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvbmF2aWdhdGlvbi9fdG9nZ2xlLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL2NvbXBvbmVudC9fYWxlcnQuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvY29tcG9uZW50L19lbWJlZC5zY3NzIiwid2VicGFjazovL3NvdXAtdGhlbWUvLi9zcmMvc2Fzcy9jb21wb25lbnQvX2ZpbHRlci1sYWJlbC5zY3NzIiwid2VicGFjazovL3NvdXAtdGhlbWUvLi9zcmMvc2Fzcy9jb21wb25lbnQvX2ZpbHRlci1zaXplLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL2NvbXBvbmVudC9fZm9vdGVyLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL2NvbXBvbmVudC9faGVhZGVyLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL2NvbXBvbmVudC9fcGFnaW5nLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL2NvbXBvbmVudC9fd29yZG1hcmsuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvY29tcG9uZW50L3dwLWJsb2Nrcy9fYnV0dG9uLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL2NvbXBvbmVudC93cC1ibG9ja3MvX2NvbHVtbi5zY3NzIiwid2VicGFjazovL3NvdXAtdGhlbWUvLi9zcmMvc2Fzcy9jb21wb25lbnQvd3AtYmxvY2tzL19jb21tb24uc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvY29tcG9uZW50L3dwLWJsb2Nrcy9fZ3JvdXAuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvY29tcG9uZW50L3dwLWJsb2Nrcy9faW1hZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvY29tcG9uZW50L3dwLWJsb2Nrcy9fcHVsbHF1b3RlLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL3RoZW1lL19hMTF5LnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL3RoZW1lL19jb2xvdXIuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvdGhlbWUvX2ZvbnQuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvdGhlbWUvX3JoeXRobS5zY3NzIiwid2VicGFjazovL3NvdXAtdGhlbWUvLi9zcmMvc2Fzcy90aGVtZS9fc2NhbGUuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvdGhlbWUvX3R5cG9ncmFwaHkuc2NzcyIsIndlYnBhY2s6Ly9zb3VwLXRoZW1lLy4vc3JjL3Nhc3MvdGhlbWUvX3VpLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL3RoZW1lL3RoZW1lLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL3RoZW1lL2NvbXBvbmVudC9fYnV0dG9uLnNjc3MiLCJ3ZWJwYWNrOi8vc291cC10aGVtZS8uL3NyYy9zYXNzL3RoZW1lL2NvbXBvbmVudC9fY2FyZC5zY3NzIiwid2VicGFjazovL3NvdXAtdGhlbWUvLi9zcmMvc2Fzcy90aGVtZS9jb21wb25lbnQvX3NvY2lhbC5zY3NzIiwid2VicGFjazovL3NvdXAtdGhlbWUvLi9zcmMvc2Fzcy90aGVtZS93cC1ibG9ja3MvX2J1dHRvbi5zY3NzIiwid2VicGFjazovL3NvdXAtdGhlbWUvLi9zcmMvc2Fzcy90aGVtZS93cC1ibG9ja3MvX3B1bGxxdW90ZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIG1hc3RlciBTQVNTIGZpbGUgZm9yIHRoZSB0aGVtZS5cbiAqXG4gKiBXaGVuIGNvbnNpZGVyaW5nIGhvdyB0byBzdHJ1Y3R1cmUgU0FTUyBwYXJ0aWFscyBhIGdvb2QgcnVsZSB0byBmb2xsb3cgaXNcbiAqIHRoaXM6IGFsd2F5cyB3cml0ZSBDU1MgdG8gYmUgYXMgZWFzeSB0byByZW1vdmUgYXMgcG9zc2libGUuXG4gKi9cblxuLy9AdXNlICdfZGV2L2dyaWQnO1xuXG5AdXNlICdjb25maWcnO1xuQHVzZSAnbm9ybWFsaXNlJztcbkB1c2UgJ2xheW91dC9sYXlvdXQnO1xuQHVzZSAnbmF2aWdhdGlvbi9uYXZpZ2F0aW9uJztcbkB1c2UgJ2NvbXBvbmVudC9jb21wb25lbnQnO1xuQHVzZSAndGhlbWUvdGhlbWUnOyIsIi8qIFNBU1MgZ2xvYmFscy4gKi9cblxuLyoqXG4gKiBTZXRzIHRoZSBtYXhpbXVtIGNvbnRlbnQgd2lkdGguXG4gKi9cbiRjb25zdHJhaW50LW1heDogMTAwOyAvKiBVbml0bGVzcyBkdWUgdG8gdXNhZ2UgaW4gZGlmZmVyZW50IGNvbnRleHRzLiAqL1xuXG4vKipcbiAqIEJyZWFrcG9pbnRzLlxuICovXG4kbmF2aWdhdGlvbi1pcy1leHBvc2VkOiA4MS4yNWVtO1xuJG5hdmlnYXRpb24taXMtdG9nZ2xlZDogODEuMjQzNzVlbTtcblxuLyoqXG4gKiBBY2Nlc3NpYmxlIHBhbGV0dGUuXG4gaHR0cHM6Ly90b29sbmVzcy5naXRodWIuaW8vYWNjZXNzaWJsZS1jb2xvci1tYXRyaXgvP249d2hpdGUmbj1kYXJrJTIwY3JlYW0mbj1wbHVtJm49Ymx1ZSZuPW1ldGFsbGljJm49ZGFyayZ2PUZGRkZGRiZ2PURERDdDNiZ2PUIwNDM3NyZ2PTAwOTVDMyZ2PTg4NjUwQiZ2PTM4MzQyNlxuICovXG4kY29sb3VyLXBsdW06ICNiMDQzNzc7XG4kY29sb3VyLWNyZWFtLWRhcms6ICNkZGQ3YzY7XG4kY29sb3VyLWJsdWU6ICMwMDdlYWE7XG4kY29sb3VyLWRhcms6ICMzODM0MjY7XG4kY29sb3VyLW1ldGFsbGljOiAjODg2NTBiO1xuJGNvbG91ci13aGl0ZTogI2ZmZjtcblxuLyogVXNlZnVsLiAqL1xuJGRlZmF1bHQtd2hpdGVzcGFjZTogMS41cmVtO1xuJGJvcmRlci1yYWRpdXM6IC4xODc1cmVtO1xuIiwiLyogQm94IHNpemluZyBydWxlcyAqL1xuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLyogUmVtb3ZlIGRlZmF1bHQgcGFkZGluZyAqL1xudWxbY2xhc3NdLFxub2xbY2xhc3NdIHtcbiAgcGFkZGluZzogMDtcbn1cblxuLyogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luICovXG5ib2R5LFxuaDEsXG5oMixcbmgzLFxuaDQsXG5wLFxudWwsXG5saSxcbmZpZ3VyZSxcbmZpZ2NhcHRpb24sXG5ibG9ja3F1b3RlLFxuZGwsXG5kZCB7XG4gIG1hcmdpbjogMDtcbn1cblxudWxbY2xhc3NdLFxub2xbY2xhc3NdIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLyogU2V0IGNvcmUgYm9keSBkZWZhdWx0cyAqL1xuYm9keSB7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplU3BlZWQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi8qIFJlbW92ZSBsaXN0IHN0eWxlcyBvbiB1bCwgb2wgZWxlbWVudHMgd2l0aCBhIGNsYXNzIGF0dHJpYnV0ZSAqL1xudWxbY2xhc3NdLFxub2xbY2xhc3NdIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLyogQSBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgYSBjbGFzcyBnZXQgZGVmYXVsdCBzdHlsZXMgKi9cbmE6bm90KFtjbGFzc10pIHtcbiAgdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rOiBhdXRvO1xufVxuXG4vKiBNYWtlIGltYWdlcyBlYXNpZXIgdG8gd29yayB3aXRoICovXG5pbWcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi8qIEluaGVyaXQgZm9udHMgZm9yIGlucHV0cyBhbmQgYnV0dG9ucyAqL1xuaW5wdXQsXG5idXR0b24sXG50ZXh0YXJlYSxcbnNlbGVjdCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG59XG5cbi8qIFJlbW92ZSBhbGwgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgZm9yIHBlb3BsZSB0aGF0IHByZWZlciBub3QgdG8gc2VlIHRoZW0gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICoge1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMC4wMW1zICFpbXBvcnRhbnQ7XG4gICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMSAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMDFtcyAhaW1wb3J0YW50O1xuICAgIHNjcm9sbC1iZWhhdmlvcjogYXV0byAhaW1wb3J0YW50O1xuICB9XG59IiwiQHVzZSAnLi4vY29uZmlnJyBhcyAqO1xuXG4uY29uc3RyYWluLFxuaDEsXG5oMixcbmgzLFxuaDQsXG5wOm5vdChbY2xhc3NdKSxcbnVsLFxub2wsXG5oZWFkZXIsXG5ibG9ja3F1b3RlLFxuW2NsYXNzXj1cIndwLWJsb2NrXCJdLFxudWwuZ3JpZCwgLyogQHRvZG8gRml4IHNwZWNpZmljaXR5LiAqL1xuZGl2LmdyaWQsIC8qIEB0b2RvIEZpeCBzcGVjaWZpY2l0eS4gKi9cbi53b29jb21tZXJjZS1icmVhZGNydW1iLFxuLndvb2NvbW1lcmNlLXBhZ2luYXRpb24sXG4ud29vY29tbWVyY2UtY2FydC1mb3JtLFxuLndvb2NvbW1lcmNlLW5vdGljZXMtd3JhcHBlcixcbi5jYXJ0LWVtcHR5LFxuLmNhcnQtY29sbGF0ZXJhbHMsXG4ud29vY29tbWVyY2UtY2hlY2tvdXQtcmV2aWV3LW9yZGVyLFxuZm9ybS53b29jb21tZXJjZS1jaGVja291dCxcbi53b29jb21tZXJjZS1vcmRlciB7XG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdG1heC13aWR0aDogY2FsYygoI3skY29uc3RyYWludC1tYXh9ICogMXJlbSkgKyAoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pKTtcblx0cGFkZGluZy1sZWZ0OiAycmVtO1xuXHRwYWRkaW5nLXJpZ2h0OiAycmVtO1xuXG5cdEBtZWRpYSAobWluLXdpZHRoOiA0My43NWVtKSB7XG5cdFx0cGFkZGluZy1sZWZ0OiBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcblx0XHRwYWRkaW5nLXJpZ2h0OiBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcblx0fVxufVxuXG4vKiBBZmZlY3QgdG9wLWxldmVsIGJsb2Nrcywgb25seS4gKi9cbltjbGFzc149XCJ3cC1ibG9ja1wiXSAqLFxuaGVhZGVyID4gKixcbi5mb290ZXIgPiAqLFxuLmNhcmQtdGl0bGUsXG4ud29vY29tbWVyY2UtY2hlY2tvdXQtcmV2aWV3LW9yZGVyIHAsXG4udGVybS1kZXNjcmlwdGlvbiBwLFxuZm9ybS53b29jb21tZXJjZS1jaGVja291dCAqLFxuLndvb2NvbW1lcmNlLW9yZGVyICoge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4uaGFzLWJhY2tncm91bmQ6bm90KC53cC1ibG9jay1idXR0b25fX2xpbmspIHtcblx0bWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pKTsgLyogQWNjb3VudHMgZm9yIHRoZSBwYWRkaW5nIGFscmVhZHkgYXBwbGllZCB0byBbY2xhc3NePVwid3AtYmxvY2stXCJdIGluIF9jb25zdHJhaW50LnNjc3MuICovXG5cdC8vcGFkZGluZzogJGRlZmF1bHQtd2hpdGVzcGFjZTtcblxuXHRAbWVkaWEgKG1pbi13aWR0aDogMTAwZW0pIHtcblx0XHRtYXgtd2lkdGg6IGNhbGMoKCN7JGNvbnN0cmFpbnQtbWF4fSAqIDFyZW0pIC0gKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KSk7XG5cdH1cbn1cblxuLndwLWJsb2NrLWNvbHVtbnMgLmhhcy1iYWNrZ3JvdW5kLFxuLndwLWJsb2NrLWltYWdlLWJhbm5lciB7XG5cdG1heC13aWR0aDogMTAwJTtcbn1cblxuW2NsYXNzXj1cIndwLWJsb2NrXCJdLmFsaWdud2lkZSB7XG5cdG1heC13aWR0aDogY2FsYygjeyRjb25zdHJhaW50LW1heH0gKiAxcmVtKTtcbn1cblxuW2NsYXNzXj1cIndwLWJsb2NrXCJdLmFsaWduZnVsbCB7XG5cdG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuIiwiLyoqXG4gKiBNb2R1bGFyIHNjYWxlcyB3aXRoIENTUyB2YXJpYWJsZXMuXG4gKiBcbiAqIEluc3BpcmF0aW9uOiBodHRwczovL3V0b3BpYS5meWkvLlxuICogRm9yIHF1aWNrIHZpc3VhbCB0ZXN0aW5nOiBodHRwczovL3d3dy5tb2R1bGFyc2NhbGUuY29tL1xuICovXG4gOnJvb3Qge1xuXHQtLWZsdWlkLW1pbi13aWR0aDogNjAwO1xuXHQtLWZsdWlkLW1heC13aWR0aDogMTAwMDtcblx0LS1mbHVpZC1taW4tc2l6ZTogMTY7XG5cdC0tZmx1aWQtbWF4LXNpemU6IDE4O1xuXHQtLWZsdWlkLW1pbi1yYXRpbzogMS4zMzM7XG5cdC0tZmx1aWQtbWF4LXJhdGlvOiAxLjMzMztcbiAgXG5cdC0tZmx1aWQtc2NyZWVuOiAxMDB2dztcblx0LS1mbHVpZC1icDogY2FsYyhcblx0ICAodmFyKC0tZmx1aWQtc2NyZWVuKSAtICgodmFyKC0tZmx1aWQtbWluLXdpZHRoKSAvIDE2KSAqIDFyZW0pKSAvXG5cdFx0KCh2YXIoLS1mbHVpZC1tYXgtd2lkdGgpIC8gMTYpIC0gKHZhcigtLWZsdWlkLW1pbi13aWR0aCkgLyAxNikpXG5cdCk7XG4gIH1cbiAgXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDBweCkge1xuXHQ6cm9vdCB7XG5cdCAgLS1mbHVpZC1zY3JlZW46IGNhbGModmFyKC0tZmx1aWQtbWF4LXdpZHRoKSAqIDFweCk7XG5cdH1cbiAgfVxuICBcbiAgOnJvb3Qge1xuXHQtLWZsdWlkLW1heC1uZWdhdGl2ZTogKDEgLyB2YXIoLS1mbHVpZC1tYXgtcmF0aW8pIC8gdmFyKC0tZmx1aWQtbWF4LXJhdGlvKSk7XG5cdC0tZmx1aWQtbWluLW5lZ2F0aXZlOiAoMSAvIHZhcigtLWZsdWlkLW1pbi1yYXRpbykgLyB2YXIoLS1mbHVpZC1taW4tcmF0aW8pKTtcblx0XG5cdC0tZmx1aWQtbWluLXNjYWxlLS0xOiB2YXIoLS1mbHVpZC1taW4tcmF0aW8pICogdmFyKC0tZmx1aWQtbWluLW5lZ2F0aXZlKTtcblx0LS1mbHVpZC1tYXgtc2NhbGUtLTE6IHZhcigtLWZsdWlkLW1heC1yYXRpbykgKiB2YXIoLS1mbHVpZC1tYXgtbmVnYXRpdmUpO1xuXHQtLWZsdWlkLW1pbi1zaXplLS0xOiAodmFyKC0tZmx1aWQtbWluLXNpemUpICogdmFyKC0tZmx1aWQtbWluLXNjYWxlLS0xKSkgLyAxNjtcblx0LS1mbHVpZC1tYXgtc2l6ZS0tMTogKHZhcigtLWZsdWlkLW1heC1zaXplKSAqIHZhcigtLWZsdWlkLW1heC1zY2FsZS0tMSkpIC8gMTY7XG5cdC0tc3RlcC0tMTogY2FsYygoKHZhcigtLWZsdWlkLW1pbi1zaXplLS0xKSAqIDFyZW0pICsgKHZhcigtLWZsdWlkLW1heC1zaXplLS0xKSAtIHZhcigtLWZsdWlkLW1pbi1zaXplLS0xKSkgKiB2YXIoLS1mbHVpZC1icCkpKTtcblx0XG5cdC0tZmx1aWQtbWluLXNjYWxlLTA6IHZhcigtLWZsdWlkLW1pbi1yYXRpbyk7XG5cdC0tZmx1aWQtbWF4LXNjYWxlLTA6IHZhcigtLWZsdWlkLW1heC1yYXRpbyk7XG5cdC0tZmx1aWQtbWluLXNpemUtMDogKHZhcigtLWZsdWlkLW1pbi1zaXplKSkgLyAxNjtcblx0LS1mbHVpZC1tYXgtc2l6ZS0wOiAodmFyKC0tZmx1aWQtbWF4LXNpemUpKSAvIDE2O1xuXHQtLXN0ZXAtMDogY2FsYygoKHZhcigtLWZsdWlkLW1pbi1zaXplLTApICogMXJlbSkgKyAodmFyKC0tZmx1aWQtbWF4LXNpemUtMCkgLSB2YXIoLS1mbHVpZC1taW4tc2l6ZS0wKSkgKiB2YXIoLS1mbHVpZC1icCkpKTtcblx0XG5cdC0tZmx1aWQtbWluLXNjYWxlLTE6IHZhcigtLWZsdWlkLW1pbi1zY2FsZS0wKSAqIHZhcigtLWZsdWlkLW1pbi1yYXRpbyk7XG5cdC0tZmx1aWQtbWF4LXNjYWxlLTE6IHZhcigtLWZsdWlkLW1heC1zY2FsZS0wKSAqIHZhcigtLWZsdWlkLW1heC1yYXRpbyk7XG5cdC0tZmx1aWQtbWluLXNpemUtMTogKHZhcigtLWZsdWlkLW1pbi1zaXplKSAqIHZhcigtLWZsdWlkLW1pbi1zY2FsZS0wKSkgLyAxNjtcblx0LS1mbHVpZC1tYXgtc2l6ZS0xOiAodmFyKC0tZmx1aWQtbWF4LXNpemUpICogdmFyKC0tZmx1aWQtbWF4LXNjYWxlLTApKSAvIDE2O1xuXHQtLXN0ZXAtMTogY2FsYygoKHZhcigtLWZsdWlkLW1pbi1zaXplLTEpICogMXJlbSkgKyAodmFyKC0tZmx1aWQtbWF4LXNpemUtMSkgLSB2YXIoLS1mbHVpZC1taW4tc2l6ZS0xKSkgKiB2YXIoLS1mbHVpZC1icCkpKTtcbiAgXG5cdC0tZmx1aWQtbWluLXNjYWxlLTI6IHZhcigtLWZsdWlkLW1pbi1zY2FsZS0xKSAqIHZhcigtLWZsdWlkLW1pbi1yYXRpbyk7XG5cdC0tZmx1aWQtbWF4LXNjYWxlLTI6IHZhcigtLWZsdWlkLW1heC1zY2FsZS0xKSAqIHZhcigtLWZsdWlkLW1heC1yYXRpbyk7XG5cdC0tZmx1aWQtbWluLXNpemUtMjogKHZhcigtLWZsdWlkLW1pbi1zaXplKSAqIHZhcigtLWZsdWlkLW1pbi1zY2FsZS0xKSkgLyAxNjtcblx0LS1mbHVpZC1tYXgtc2l6ZS0yOiAodmFyKC0tZmx1aWQtbWF4LXNpemUpICogdmFyKC0tZmx1aWQtbWF4LXNjYWxlLTEpKSAvIDE2O1xuXHQtLXN0ZXAtMjogY2FsYygoKHZhcigtLWZsdWlkLW1pbi1zaXplLTIpICogMXJlbSkgKyAodmFyKC0tZmx1aWQtbWF4LXNpemUtMikgLSB2YXIoLS1mbHVpZC1taW4tc2l6ZS0yKSkgKiB2YXIoLS1mbHVpZC1icCkpKTtcbiAgXG5cdC0tZmx1aWQtbWluLXNjYWxlLTM6IHZhcigtLWZsdWlkLW1pbi1zY2FsZS0yKSAqIHZhcigtLWZsdWlkLW1pbi1yYXRpbyk7XG5cdC0tZmx1aWQtbWF4LXNjYWxlLTM6IHZhcigtLWZsdWlkLW1heC1zY2FsZS0yKSAqIHZhcigtLWZsdWlkLW1heC1yYXRpbyk7XG5cdC0tZmx1aWQtbWluLXNpemUtMzogKHZhcigtLWZsdWlkLW1pbi1zaXplKSAqIHZhcigtLWZsdWlkLW1pbi1zY2FsZS0yKSkgLyAxNjtcblx0LS1mbHVpZC1tYXgtc2l6ZS0zOiAodmFyKC0tZmx1aWQtbWF4LXNpemUpICogdmFyKC0tZmx1aWQtbWF4LXNjYWxlLTIpKSAvIDE2O1xuXHQtLXN0ZXAtMzogY2FsYygoKHZhcigtLWZsdWlkLW1pbi1zaXplLTMpICogMXJlbSkgKyAodmFyKC0tZmx1aWQtbWF4LXNpemUtMykgLSB2YXIoLS1mbHVpZC1taW4tc2l6ZS0zKSkgKiB2YXIoLS1mbHVpZC1icCkpKTtcbiAgXG5cdC0tZmx1aWQtbWluLXNjYWxlLTQ6IHZhcigtLWZsdWlkLW1pbi1zY2FsZS0zKSAqIHZhcigtLWZsdWlkLW1pbi1yYXRpbyk7XG5cdC0tZmx1aWQtbWF4LXNjYWxlLTQ6IHZhcigtLWZsdWlkLW1heC1zY2FsZS0zKSAqIHZhcigtLWZsdWlkLW1heC1yYXRpbyk7XG5cdC0tZmx1aWQtbWluLXNpemUtNDogKHZhcigtLWZsdWlkLW1pbi1zaXplKSAqIHZhcigtLWZsdWlkLW1pbi1zY2FsZS0zKSkgLyAxNjtcblx0LS1mbHVpZC1tYXgtc2l6ZS00OiAodmFyKC0tZmx1aWQtbWF4LXNpemUpICogdmFyKC0tZmx1aWQtbWF4LXNjYWxlLTMpKSAvIDE2O1xuXHQtLXN0ZXAtNDogY2FsYygoKHZhcigtLWZsdWlkLW1pbi1zaXplLTQpICogMXJlbSkgKyAodmFyKC0tZmx1aWQtbWF4LXNpemUtNCkgLSB2YXIoLS1mbHVpZC1taW4tc2l6ZS00KSkgKiB2YXIoLS1mbHVpZC1icCkpKTtcblxuXHQtLWZsdWlkLW1pbi1zY2FsZS01OiB2YXIoLS1mbHVpZC1taW4tc2NhbGUtNCkgKiB2YXIoLS1mbHVpZC1taW4tcmF0aW8pO1xuXHQtLWZsdWlkLW1heC1zY2FsZS01OiB2YXIoLS1mbHVpZC1tYXgtc2NhbGUtNCkgKiB2YXIoLS1mbHVpZC1tYXgtcmF0aW8pO1xuXHQtLWZsdWlkLW1pbi1zaXplLTU6ICh2YXIoLS1mbHVpZC1taW4tc2l6ZSkgKiB2YXIoLS1mbHVpZC1taW4tc2NhbGUtNCkpIC8gMTY7XG5cdC0tZmx1aWQtbWF4LXNpemUtNTogKHZhcigtLWZsdWlkLW1heC1zaXplKSAqIHZhcigtLWZsdWlkLW1heC1zY2FsZS00KSkgLyAxNjtcblx0LS1zdGVwLTU6IGNhbGMoKCh2YXIoLS1mbHVpZC1taW4tc2l6ZS01KSAqIDFyZW0pICsgKHZhcigtLWZsdWlkLW1heC1zaXplLTUpIC0gdmFyKC0tZmx1aWQtbWluLXNpemUtNSkpICogdmFyKC0tZmx1aWQtYnApKSk7XG59IiwiQHVzZSAnLi4vY29uZmlnJyBhcyAqO1xuXG5AbWVkaWEgKG1heC13aWR0aDogJG5hdmlnYXRpb24taXMtdG9nZ2xlZCkge1xuXHQuaGVhZGVyX19saW5rcy1kcmF3ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXItd2hpdGU7XG5cdFx0aGVpZ2h0OiAwO1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0dmlzaWJpbGl0eTogaGlkZGVuO1xuXHRcdHdpZHRoOiAxMDAlO1xuXG5cdFx0Ji5pcy1hY3RpdmUge1xuXHRcdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdHBhZGRpbmc6ICRkZWZhdWx0LXdoaXRlc3BhY2UgMCAwO1xuXHRcdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAzNTBtcyBlYXNlLWluO1xuXHRcdFx0dmlzaWJpbGl0eTogdmlzaWJsZTtcblx0XHR9XG5cdH1cbn0iLCJAdXNlICcuLi9jb25maWcnIGFzICo7XG5cbi5tZW51IHtcblx0ZGlzcGxheTogZmxleDtcblx0bGlzdC1zdHlsZS10eXBlOiBub25lO1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7XG5cdFxuXHRhIHtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdH1cbn1cblxuLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHtcblx0bWFyZ2luLXJpZ2h0OiAxLjI1cmVtO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogJG5hdmlnYXRpb24taXMtdG9nZ2xlZCkge1xuXHQubWVudS0tcHJpbWFyeSAubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkge1xuXHRcdG1hcmdpbi1yaWdodDogMDtcblx0fVxufVxuXG4vKiBEcmF3ZXIgbGlua3MuICovXG4ubWVudS0tcHJpbWFyeSB7XG5cdGEge1xuXHRjb2xvcjogJGNvbG91ci1kYXJrO1xuXHR9XG5cblx0LmN1cnJlbnQtbWVudS1pdGVtIGEsXG5cdC5jdXJyZW50LXByb2R1Y3QtcGFyZW50IGEge1xuXHRcdGNvbG9yOiAkY29sb3VyLW1ldGFsbGljO1xuXHR9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAkbmF2aWdhdGlvbi1pcy10b2dnbGVkKSB7XG5cdC5tZW51LS1wcmltYXJ5IHtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cblx0XHQubWVudS1pdGVtIHtcblx0XHRcdHBhZGRpbmc6IGNhbGMoLjUgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KSAkZGVmYXVsdC13aGl0ZXNwYWNlIGNhbGMoLjUgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KSAwO1xuXHRcdH1cblx0fVxufVxuXG4vKiBOb24tZHJhd2VyIGhlYWRlciBsaW5rcy4gKi9cbi5tZW51LS1hY3Rpb25zIHtcblx0YSB7XG5cdFx0Y29sb3I6ICRjb2xvdXItbWV0YWxsaWM7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRjb2xvcjogJGNvbG91ci1kYXJrO1xuXHRcdH1cblx0fVxufVxuXG4vKiBGb290ZXIuICovXG4ubWVudS0tcGFnZXMge1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG5cdGEge1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdHRleHQtdW5kZXJsaW5lLXBvc2l0aW9uOiB1bmRlcjtcblx0fVxufVxuXG4ubWVudS0tbWV0YSB7XG5cdG1hcmdpbi10b3A6IGNhbGMoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pO1xuXG5cdC5tZW51LWl0ZW0gYSB7XG5cdFx0Y29sb3I6ICRjb2xvdXItZGFyaztcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cdH1cbn1cblxuLyogSW50ZXJhY3Rpb24gc3RhdGVzLiAqL1xuLm1lbnUtLXByaW1hcnkgLm1lbnUtaXRlbSBhIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdCY6OmFmdGVyIHtcblx0XHRjb250ZW50OiAnJztcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAycHg7XG5cdFx0Ym90dG9tOiAtLjI1ZW07XG5cdFx0bGVmdDogMDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3VyLW1ldGFsbGljO1xuXHRcdHRyYW5zZm9ybTogc2NhbGVYKDApO1xuXHRcdHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDtcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXM7XG5cdH1cblxuXHQuY3VycmVudC1tZW51LWl0ZW0gYSxcblx0Jjpob3Zlcixcblx0Jjpmb2N1cyB7XG5cdFx0Y29sb3I6ICRjb2xvdXItbWV0YWxsaWM7XG5cdH1cblxuXHQmOmhvdmVyOjphZnRlciB7XG5cdFx0dHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQ7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZVgoMSk7XG5cdH1cbn0iLCJAdXNlICcuLi9jb25maWcnIGFzICo7XG5cbkBtZWRpYSAobWluLXdpZHRoOiAkbmF2aWdhdGlvbi1pcy1leHBvc2VkKSB7XG5cdC5tZW51LWJ1dHRvbnMge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6ICRuYXZpZ2F0aW9uLWlzLXRvZ2dsZWQpIHtcblx0Lm1lbnUtYnV0dG9ucyxcblx0Lm1lbnUtLWFjdGlvbnMge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRyaWdodDogY2FsYygyICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG5cdH1cblxuXHQubWVudS1idXR0b25zIHtcblx0XHR0b3A6IDEuODEyNXJlbTtcblxuXHRcdCo6bm90KDpmaXJzdC1jaGlsZCkge1xuXHRcdFx0bWFyZ2luLWxlZnQ6ICRkZWZhdWx0LXdoaXRlc3BhY2U7XG5cdFx0fVxuXG5cdFx0YSxcblx0XHRidXR0b24ge1xuXHRcdFx0Y29sb3I6ICRjb2xvdXItZGFyaztcblx0XHR9XG5cdH1cblxuXHQvKiBMaW5rIHRvIGNhcnQuICovXG5cdC5tZW51LS1hY3Rpb25zIHtcblx0XHR0b3A6IDUuOTM3NXJlbTtcblx0fVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDMuNjg3NWVtKSB7XG5cdC5tZW51LWJ1dHRvbnMsXG5cdC5tZW51LS1hY3Rpb25zIHtcblx0XHRyaWdodDogMnJlbTtcblx0fVxuXG59XG5cbi5tZW51LXRvZ2dsZSxcbi5tZW51LXBob25lIHtcblx0Y29sb3I6ICRjb2xvdXItZGFyaztcblx0bGV0dGVyLXNwYWNpbmc6IC4wNjI1ZW07XG5cdGxpbmUtaGVpZ2h0OiAxO1xuXHRwYWRkaW5nOiAkZGVmYXVsdC13aGl0ZXNwYWNlIDA7XG59XG5cbi5tZW51LXRvZ2dsZSB7XG5cdGFwcGVhcmFuY2U6IG5vbmU7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRib3JkZXI6IDA7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0ei1pbmRleDogMTtcbn1cblxuLm1lbnUtcGhvbmUge1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59IiwiQHVzZSAnLi4vY29uZmlnJyBhcyAqO1xuXG4uYWxlcnQge1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiRjb2xvdXItYmx1ZTtcblx0Y29sb3I6ICRjb2xvdXItd2hpdGU7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRwYWRkaW5nOiAkZGVmYXVsdC13aGl0ZXNwYWNlIDJyZW07XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDQ5LjkzNzVlbSkge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdH1cbn1cbiIsIi8qKlxuICogU2ltcGxpZmllZCBhcHByb2FjaCB0byBtYW5hZ2UgZW1iZWRkZWQgbWVkaWEuXG4gKlxuICogRGVmYXVsdHMgdG8gZmlsbCBwYXJlbnQgY29udGFpbmVyLlxuICogRGVwZW5kcyBvbiBjaHRoZW1lX2FkZF93cmFwcGVyX3RvX29lbWJlZCgpIGluIHNldHVwLnBocC5cbiAqL1xuLmVtYmVkLXdyYXBwZXIge1xuXHRoZWlnaHQ6IDA7XG5cdG1heC13aWR0aDogMTAwJTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0cGFkZGluZy1ib3R0b206IDU2LjI1JTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZW1iZWQtd3JhcHBlciB7XG5cdGlmcmFtZSB7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGxlZnQ6IDA7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn0iLCJAdXNlICcuLi9jb25maWcnIGFzICo7XG5cbi5maWx0ZXItLWxhYmVsIHtcblx0YXBwZWFyYW5jZTogbm9uZTtcblx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG91ci1kYXJrO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIHdpZHRoPScxNCcgaGVpZ2h0PScyMicgdmlld0JveD0nMCAwIDE0IDIyJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmZmJyBkPSdNMTMuMiA5cTAgMC4yLTAuMSAwLjNsLTUuNyA1LjdxLTAuMSAwLjEtMC4zIDAuMXQtMC4zLTAuMWwtNS43LTUuN3EtMC4xLTAuMS0wLjEtMC4zdDAuMS0wLjNsMC42LTAuNnEwLjEtMC4xIDAuMy0wLjF0MC4zIDAuMWw0LjggNC44IDQuOC00LjhxMC4xLTAuMSAwLjMtMC4xdDAuMyAwLjFsMC42IDAuNnEwLjEgMC4xIDAuMSAwLjN6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAuNXJlbSBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdGJvcmRlcjogMnB4IHNvbGlkICRjb2xvdXItZGFyaztcblx0Ym9yZGVyLXJhZGl1czogMDtcblx0Y29sb3I6ICRjb2xvdXItd2hpdGU7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0aGVpZ2h0OiAycmVtO1xuXHRwYWRkaW5nOiAwIC43NXJlbTtcblx0dGV4dC1hbGlnbjogbGVmdDtcblx0d2lkdGg6IDExLjI1cmVtO1xuXG5cdCY6aG92ZXIsXG5cdCY6Zm9jdXMge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXItbWV0YWxsaWM7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkY29sb3VyLW1ldGFsbGljO1xuXHRcdGNvbG9yOiAkY29sb3VyLXdoaXRlO1xuXHR9XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6ICRuYXZpZ2F0aW9uLWlzLXRvZ2dsZWQpIHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufSIsIkB1c2UgJy4uL2NvbmZpZycgYXMgKjtcblxuLmZpbHRlci0tc2l6ZSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtd3JhcDogd3JhcDtcblx0XG5cdEBtZWRpYSAobWF4LXdpZHRoOiA3NWVtKSB7XG5cdFx0bWF4LXdpZHRoOiBjYWxjKDE2ICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG5cdH1cblxuXHRsaSB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAuNzVyZW07XG5cdFx0bWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuXHRcdHdpZHRoOiBhdXRvO1xuXG5cdFx0QG1lZGlhIChtaW4td2lkdGg6IDg0LjM3NWVtKSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcblx0XHR9XG5cblx0XHQvKiBUaGlzIGlzIGEgbWFnaWMgbnVtYmVyIHRvIGVuc3VyZSB0aGUgbGFzdCByb3cgY2hpbGRyZW4gaGF2ZSBubyBib3R0b20gbWFyZ2luLlxuXHRcdE5vdCB0ZXJyaWZpYywgdGhvdWdoIHRoZSBvbmx5IGNhc2Ugd2hlcmUgdGhpcyB3aWxsIGZhaWwgaXMgYW4gaW1wb3NzaWJsZSBzaXR1YXRpb25cblx0XHR3aXRoIG9uZSBjaGlsZCBwZXIgcm93LiAqL1xuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA3NWVtKSB7XG5cdFx0XHQmOm50aC1jaGlsZCgtbiszKSB7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IGNhbGMoLjUgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhIHtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkICRjb2xvdXItcGx1bTtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0Ym94LXNoYWRvdzogLjA2MjVyZW0gLjA2MjVyZW0gMCAwLCAuMTI1cmVtIC4xMjVyZW0gMCAwLCAuMTg3NXJlbSAuMTg3NXJlbSAwIDAsIC4yNXJlbSAuMjVyZW0gMCAwO1xuXHRcdGNvbG9yOiAkY29sb3VyLXBsdW07XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRoZWlnaHQ6IGNhbGMoMyAqIHZhcigtLXN0ZXAtMSkpO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHR0cmFuc2l0aW9uOiAxNTBtcztcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjIsIDEsIDAuMzYsIDEpO1xuXHRcdHdpZHRoOiBjYWxjKDMgKiB2YXIoLS1zdGVwLTEpKTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdFx0Y29sb3I6ICRjb2xvdXItcGx1bTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLjI1cmVtLCAuMjVyZW0sIDApO1xuXHRcdH1cblxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG91ci1wbHVtO1xuXHRcdFx0Y29sb3I6ICRjb2xvdXItd2hpdGU7XG5cdFx0fVxuXHR9XG5cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6NjIuNWVtKSB7XG5cbn0iLCJAdXNlICcuLi9jb25maWcnIGFzICo7XG5cbi5mb290ZXIge1xuXHRwYWRkaW5nLWJvdHRvbTogY2FsYygyICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG5cdHBhZGRpbmctdG9wOiBjYWxjKDEgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcblxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0Jjo6YmVmb3JlIHtcblx0XHRjb250ZW50OiAnJztcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB4bWxuczp4bGluaz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycgeD0nMHB4JyB5PScwcHgnIHZpZXdCb3g9JzAgMCAyMi45IDIyLjknIHN0eWxlPSdlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyLjkgMjIuOTsnIHhtbDpzcGFjZT0ncHJlc2VydmUnJTNFJTNDY2lyY2xlIGZpbGw9JyUyMzM4MzQyNicgY2xhc3M9J3N0MCcgY3g9JzUuNycgY3k9JzUuOScgcj0nMycvJTNFJTNDY2lyY2xlIGZpbGw9JyUyMzM4MzQyNicgY2xhc3M9J3N0MCcgY3g9JzE3LjInIGN5PScxNy4yJyByPSczJy8lM0UlM0Mvc3ZnJTNFJTBBXCIpO1xuXHRcdGJhY2tncm91bmQtc2l6ZTogMTJweDtcblx0XHRoZWlnaHQ6IGNhbGMoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pO1xuXHRcdGxlZnQ6IDA7XG5cdFx0bWFyZ2luOiBhdXRvO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRyaWdodDogMDtcblx0XHR0b3A6IC0jeyRkZWZhdWx0LXdoaXRlc3BhY2V9O1xuXHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pKTtcblxuXHRcdEBtZWRpYSAobWluLXdpZHRoOiA0My43NWVtKSB7XG5cdFx0XHR3aWR0aDogY2FsYygxMDAlIC0gKDQgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KSk7XG5cdFx0fVxuXHR9XG5cblx0YSB7XG5cdFx0Y29sb3I6JGNvbG91ci1tZXRhbGxpYztcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0fVxuXHR9XG5cblx0ZHQ6bm90KDpmaXJzdC1jaGlsZCkge1xuXHRcdG1hcmdpbi10b3A6ICRkZWZhdWx0LXdoaXRlc3BhY2U7XG5cdH1cblxuXHRkZCB7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxuXG5cdC53b3JkbWFyayB7XG5cdFx0bWFyZ2luLXRvcDogLjE4NzVyZW07XG5cdH1cbn1cblxuYWRkcmVzcyB7XG5cdG1hcmdpbi10b3A6IGNhbGMoLjUgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KSAhaW1wb3J0YW50O1xufVxuXG4uc29jaWFsLWxpbmtzIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcblxuXHRkdCB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cblxuXHRkZCB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAuNzVyZW07XG5cdFx0bWFyZ2luLXRvcDogLjVyZW07XG5cdH1cbn0iLCJAdXNlICcuLi9jb25maWcnIGFzICo7XG5cbi8qKlxuICogTWFuYWdlcyBoZWFkZXIgbGF5b3V0IGZvciBhbGwgdmlld3MuXG4gKi9cbi5oZWFkZXIge1xuXHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtd3JhcDogd3JhcDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRwYWRkaW5nLXRvcDogY2FsYygyICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQvL0BtZWRpYSAobWluLXdpZHRoOiA0My43NWVtKSB7XG5cdFx0Ly9wYWRkaW5nLWJvdHRvbTogY2FsYyg0ICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG5cdC8vfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNDMuNzVlbSkge1xuXHQuaGVhZGVyX19saW5rcy1kcmF3ZXIge1xuXHRcdHBhZGRpbmctYm90dG9tOiAzcHg7XG5cdH1cbn1cblxuLmhlYWRlcl9fbGlua3Mge1xuXHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0c2VsZWN0IHtcblx0XHRtYXJnaW4tdG9wOiAuODc1cmVtO1xuXHR9XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6ICRuYXZpZ2F0aW9uLWlzLXRvZ2dsZWQpIHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufVxuIiwiQHVzZSAnLi4vY29uZmlnJyBhcyAqO1xuXG4ud29vY29tbWVyY2UtcGFnaW5hdGlvbiB7XG5cdC5wYWdlLW51bWJlcnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdH1cblxuXHRsaSB7XG5cdFxuXHRcdG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblx0XHRcblxuXHRcdC5wYWdlLW51bWJlcnMge1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRoZWlnaHQ6IGNhbGMoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRtYXJnaW46IDAgLjM3NXJlbTtcblx0XHRcdHdpZHRoOiBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcblx0XHR9XG5cblx0XHQubmV4dCxcblx0XHQucHJldiB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5jdXJyZW50IHtcblx0XHRiYWNrZ3JvdW5kOiAkY29sb3VyLW1ldGFsbGljO1xuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRjb2xvcjogJGNvbG91ci13aGl0ZTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufSIsIkB1c2UgJy4uL2NvbmZpZycgYXMgKjtcblxuLndvcmRtYXJrIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGhlaWdodDogYXV0bztcblx0dHJhbnNpdGlvbjogMjUwbXM7XG5cblx0c3ZnIHtcblx0XHRmaWxsOiAkY29sb3VyLWRhcms7XG5cdFx0d2lkdGg6IDYuODc1cmVtO1xuXHR9XG59XG5cbi5nby1ob21lIC53b3JkbWFyayB7XG5cdCY6aG92ZXIsXG5cdCY6Zm9jdXMge1xuXHRcdHN2ZyB7XG5cdFx0XHRmaWxsOiAkY29sb3VyLW1ldGFsbGljO1xuXHRcdH1cblx0fVxufVxuIiwiQHVzZSAnLi4vLi4vY29uZmlnJyBhcyAqO1xuXG4ud3AtYmxvY2stYnV0dG9ucyAud3AtYmxvY2stYnV0dG9uIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ud3AtYmxvY2stYnV0dG9ucyAud3AtYmxvY2stYnV0dG9uOm5vdCg6bGFzdC1jaGlsZCkge1xuXHRtYXJnaW4tcmlnaHQ6ICRkZWZhdWx0LXdoaXRlc3BhY2U7XG59XG5cbi53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbn1cbiIsIkB1c2UgJy4uLy4uL2NvbmZpZycgYXMgKjtcblxuLndwLWJsb2NrLWNvbHVtbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4ud3AtYmxvY2stY29sdW1ucy5oYXMtYmFja2dyb3VuZCB7XG5cdHBhZGRpbmc6IDAgJGRlZmF1bHQtd2hpdGVzcGFjZSAkZGVmYXVsdC13aGl0ZXNwYWNlO1xufVxuXG4ud3AtYmxvY2stY29sdW1uIHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG5cdG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0MC41NjI1ZW0pIHtcbiAgICAud3AtYmxvY2stY29sdW1uIHtcbiAgICAgICAgZmxleC1iYXNpczogMTAwJTtcbiAgICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA0MC42MjVlbSkgYW5kIChtYXgtd2lkdGg6IDYyLjQzNzVlbSkge1xuICAgIC8qIFB1c2ggbGFzdCBjb2x1bW4gbGVmdCBpZiByb3cgaGFzIHVuZXZlbiBudW1iZXIgb2YgY29sdW1ucy4gKi9cbiAgICAud3AtYmxvY2stY29sdW1ucyB7ICAgIFxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIGZsZXg6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAud3AtYmxvY2stY29sdW1uIHtcbiAgICAgICAgZmxleC1iYXNpczogY2FsYyg1MCUgLSAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcbiAgICAgICAgZmxleC1ncm93OiAwXG4gICAgfVxuICAgIC53cC1ibG9jay1jb2x1bW46bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcbiAgICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOjYyLjVlbSkge1xuICAgIC53cC1ibG9jay1jb2x1bW5zIHtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXBcbiAgICB9XG5cblx0LndwLWJsb2NrLWNvbHVtbiB7XG4gICAgICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgICAgIGZsZXgtZ3JvdzogMVxuICAgIH1cbiAgICAud3AtYmxvY2stY29sdW1uW3N0eWxlXSB7XG4gICAgICAgIGZsZXgtZ3JvdzogMFxuICAgIH1cbiAgICAud3AtYmxvY2stY29sdW1uOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pO1xuICAgIH1cbn1cblxuLndwLWJsb2NrLWNvbHVtbi5pcy12ZXJ0aWNhbGx5LWFsaWduZWQtdG9wIHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0XG59XG5cbi53cC1ibG9jay1jb2x1bW4uaXMtdmVydGljYWxseS1hbGlnbmVkLWNlbnRlciB7XG4gICAgLW1zLWdyaWQtcm93LWFsaWduOiBjZW50ZXI7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyXG59XG5cbi53cC1ibG9jay1jb2x1bW4uaXMtdmVydGljYWxseS1hbGlnbmVkLWJvdHRvbSB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmRcbn1cblxuLndwLWJsb2NrLWNvbHVtbi5pcy12ZXJ0aWNhbGx5LWFsaWduZWQtYm90dG9tLFxuLndwLWJsb2NrLWNvbHVtbi5pcy12ZXJ0aWNhbGx5LWFsaWduZWQtY2VudGVyLFxuLndwLWJsb2NrLWNvbHVtbi5pcy12ZXJ0aWNhbGx5LWFsaWduZWQtdG9wIHtcbiAgICB3aWR0aDogMTAwJVxufVxuIiwiLyogQWxpZ25tZW50LiAqL1xuLmFsaWduY2VudGVyLFxuLmhhcy10ZXh0LWFsaWduLWNlbnRlciB7XG5cdHRleHQtYWxpZ246IGNlbnRlclxufVxuXG4uYWxpZ25yaWdodCxcbi5oYXMtdGV4dC1hbGlnbi1yaWdodCB7XG5cdHRleHQtYWxpZ246IHJpZ2h0XG59XG5cbi5hbGlnbmZ1bGwsXG4uYWxpZ253aWRlIHtcblx0KiB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn1cblxuLmFsaWdud2lkZSB7XG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi5hbGlnbmZ1bGwge1xuXHRwYWRkaW5nOiAwO1xufVxuIiwiQHVzZSAnLi4vLi4vY29uZmlnJyBhcyAqO1xuXG4ud3AtYmxvY2stZ3JvdXAuYWxpZ25mdWxsIHtcblx0cGFkZGluZzogMCAkZGVmYXVsdC13aGl0ZXNwYWNlO1xuXG5cdC53cC1ibG9jay1ncm91cF9faW5uZXItY29udGFpbmVyIHtcblx0XHRAbWVkaWEgKG1pbi13aWR0aDogMTAwZW0pIHtcblx0XHRcdG1heC13aWR0aDogY2FsYygoI3skY29uc3RyYWludC1tYXh9ICogMXJlbSkgLSAoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pKTtcblx0XHR9XG5cdH1cbn1cblxuLndwLWJsb2NrLWdyb3VwLmhhcy1iYWNrZ3JvdW5kIHtcblx0cGFkZGluZzogY2FsYygyICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSkgMnJlbTtcblx0XHQud3AtYmxvY2stY29sdW1ucyxcblx0XHQud3AtYmxvY2stY29sdW1uOmZpcnN0LWNoaWxkIHtcblx0XHRcdG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblx0XHR9XG5cblx0QG1lZGlhIChtaW4td2lkdGg6IDQzLjc1ZW0pIHtcblx0XHRwYWRkaW5nOiBjYWxjKDQgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KSBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KSBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcblx0fVxufSIsIkB1c2UgJy4uLy4uL2NvbmZpZycgYXMgKjtcblxuLndwLWJsb2NrLWltYWdlIGltZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4ud3AtYmxvY2staW1hZ2UgZmlndXJlIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbn1cblxuLndwLWJsb2NrLWltYWdlIGZpZ2NhcHRpb24ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNhcHRpb247IC8qIENvbnN0cmFpbiB3aWR0aCBvZiBlbGVtZW50IHRvIHBhcmVudC4gKi9cbiAgICBjYXB0aW9uLXNpZGU6IGJvdHRvbTsgICAvKiBWYWx1ZSByZXF1aXJlZCBkdWUgdG8gZGlzcGxheTogdGFibGUtY2FwdGlvbiB1c2FnZS4gKi9cbiAgICBtYXJnaW4tYm90dG9tOiAkZGVmYXVsdC13aGl0ZXNwYWNlO1xuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skZGVmYXVsdC13aGl0ZXNwYWNlfSAvIDIpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0My43NWVtKSB7XG4gICAgLndwLWJsb2NrLWltYWdlIC5hbGlnbmxlZnQsXG4gICAgLndwLWJsb2NrLWltYWdlIC5hbGlnbnJpZ2h0IHtcbiAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLyAzKTtcbiAgICB9XG59XG5cbi8qIEFsaWdubWVudC4gKi9cbi53cC1ibG9jay1pbWFnZSAuYWxpZ25jZW50ZXIge1xuXHRtYXJnaW4tbGVmdDogYXV0bztcblx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ud3AtYmxvY2staW1hZ2UgLmFsaWdubGVmdCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHRtYXJnaW4tcmlnaHQ6ICRkZWZhdWx0LXdoaXRlc3BhY2U7XG59XG5cbi53cC1ibG9jay1pbWFnZSAuYWxpZ25yaWdodCB7XG5cdGZsb2F0OiByaWdodDtcblx0bWFyZ2luLWxlZnQ6ICRkZWZhdWx0LXdoaXRlc3BhY2U7XG59XG4iLCJAdXNlICcuLi8uLi9jb25maWcnIGFzICo7XG5cbi53cC1ibG9jay1wdWxscXVvdGUge1xuXHRibG9ja3F1b3RlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRtYXgtd2lkdGg6IDQzLjc1cmVtO1xuXHRcdH1cblx0fVxufVxuXG4ud3AtYmxvY2stcHVsbHF1b3RlLmhhcy1iYWNrZ3JvdW5kIHtcblx0bWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pKTsgLyogQWNjb3VudHMgZm9yIHRoZSBwYWRkaW5nIGFscmVhZHkgYXBwbGllZCB0byBbY2xhc3NePVwid3AtYmxvY2stXCJdIGluIF9jb25zdHJhaW50LnNjc3MuICovXG5cdHBhZGRpbmc6ICRkZWZhdWx0LXdoaXRlc3BhY2U7XG5cblx0QG1lZGlhIChtaW4td2lkdGg6MTAwZW0pIHtcblx0XHRtYXgtd2lkdGg6IGNhbGMoKCN7JGNvbnN0cmFpbnQtbWF4fSAqIDFyZW0pIC0gKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KSk7XG5cdH1cbn1cblxuLndwLWJsb2NrLXB1bGxxdW90ZS5hbGlnbmZ1bGwge1xuXHRibG9ja3F1b3RlIHtcblx0XHRtYXgtd2lkdGg6IGNhbGMoKCN7JGNvbnN0cmFpbnQtbWF4fSAqIDFyZW0pIC0gKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KSk7XG5cdH1cbn1cblxuLndwLWJsb2NrLXB1bGxxdW90ZS5hbGlnbmxlZnQge1xuXHRtYXJnaW4tbGVmdDogJGRlZmF1bHQtd2hpdGVzcGFjZTtcbn1cblxuLndwLWJsb2NrLXB1bGxxdW90ZS5hbGlnbnJpZ2h0IHtcblx0bWFyZ2luLXJpZ2h0OiAkZGVmYXVsdC13aGl0ZXNwYWNlO1xufVxuXG4ud3AtYmxvY2stcHVsbHF1b3RlLmFsaWdubGVmdCxcbi53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25yaWdodCB7XG5cdHdpZHRoOiAxMDAlO1xuXHRcblx0QG1lZGlhIChtaW4td2lkdGg6IDMxLjI1ZW0pIHtcblx0XHRtYXgtd2lkdGg6IDUwJTtcblx0fVxuXG5cdEBtZWRpYSAobWluLXdpZHRoOiA1MGVtKSB7XG5cdFx0bWF4LXdpZHRoOiBjYWxjKCgjeyRjb25zdHJhaW50LW1heH0gKiAxcmVtKSAvIDMpO1xuXHR9XG59XG5cbi8qIEFsaWdubWVudC4gKi9cbkBtZWRpYSAobWluLXdpZHRoOiAzMS4yNWVtKSB7XG5cdC53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25sZWZ0IHtcblx0XHRmbG9hdDogbGVmdDtcblx0XHRtYXJnaW4tcmlnaHQ6ICRkZWZhdWx0LXdoaXRlc3BhY2U7XG5cdH1cblxuXHQud3AtYmxvY2stcHVsbHF1b3RlLmFsaWducmlnaHQge1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHRtYXJnaW4tbGVmdDogJGRlZmF1bHQtd2hpdGVzcGFjZTtcblx0fVxuXG5cdC53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25sZWZ0LFxuXHQud3AtYmxvY2stcHVsbHF1b3RlLmFsaWducmlnaHQge1xuXHRcdG1hcmdpbi1ib3R0b206IGNhbGMoI3skZGVmYXVsdC13aGl0ZXNwYWNlfSAvIDIpO1xuXHR9XG59IiwiQHVzZSAnLi4vY29uZmlnJyBhcyAqO1xuXG4uc2tpcC10by1jb250ZW50IHtcblx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG91ci13aGl0ZTs7XG5cdGxlZnQ6IGNhbGMoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pO1xuXHRwYWRkaW5nOiAuNTU1ZW0gY2FsYygyICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcblx0ei1pbmRleDogMTA7XG5cblx0Jjpmb2N1cyB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC41NTVlbSk7XG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zO1xuXHR9XG59XG5cbm1haW4ge1xuXHRvdXRsaW5lOiBub25lO1xufVxuXG4vKiBIaWRlIGVsZW1lbnQgZXhjZXB0IGZvciBzY3JlZW5yZWFkZXJzLiAqL1xuLnNjcmVlbi1yZWFkZXItdGV4dCwgLyogV29vQ29tbWVyY2UuICovXG4ubm90LXZpc2libGUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogYXV0bztcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0Y2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO1xuXHR3aWR0aDogMXB4O1xuXHRoZWlnaHQ6IDFweDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogTm8gSlMgZmFsbGJhY2suICovXG4ubm8tanMge1xuXHQubWVudS0tcHJpbWFyeSB7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdH1cblxuXHQuaGVhZGVyX19saW5rcy1kcmF3ZXIge1xuXHRcdGhlaWdodDogYXV0bztcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdH1cbn1cbiIsIkB1c2UgJy4uL2NvbmZpZycgYXMgKjtcblxuYm9keSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXItd2hpdGU7XG5cdGNvbG9yOiAkY29sb3VyLWRhcms7XG59XG5cbi8qIEJsb2NrLWdlbmVyYXRlZCBjb2xvdXIgY2xhc3Nlcy4gKi9cbiRjb2xvdXJzOiAoXG5cdCd3aGl0ZSc6ICRjb2xvdXItd2hpdGUsXG5cdCdjcmVhbS1kYXJrJzogJGNvbG91ci1jcmVhbS1kYXJrLFxuXHQnbWV0YWxsaWMnOiAkY29sb3VyLW1ldGFsbGljLFxuXHQnYmx1ZSc6ICRjb2xvdXItYmx1ZSxcblx0J3BsdW0nOiRjb2xvdXItcGx1bSxcblx0J2RhcmsnOiAkY29sb3VyLWRhcmtcbik7XG5cbkBlYWNoICRuYW1lLCAkY29sb3VyIGluICRjb2xvdXJzIHtcblx0Lmhhcy0jeyRuYW1lfS1jb2xvciB7XG5cdFx0Y29sb3I6ICRjb2xvdXI7XG5cdH1cblxuXHQuaGFzLSN7JG5hbWV9LWJhY2tncm91bmQtY29sb3Ige1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXI7XG5cdH1cblxuXHQvKipcblx0ICogQnV0dG9uIHN0YXRlLlxuXHQgKiBAbGluayBodHRwczovL3d3dy5iaWxsZXJpY2tzb24ubmV0L3dvcmRwcmVzcy1jb2xvci1wYWxldHRlLWJ1dHRvbi1zdHlsaW5nLWd1dGVuYmVyZy9cblx0ICovXG5cdC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLSN7JG5hbWV9LWJhY2tncm91bmQtY29sb3Ige1xuXHRcdGJvcmRlci1jb2xvcjogJGNvbG91cjtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRcdGNvbG9yOiAkY29sb3VyO1xuXHRcdH1cblx0fVxuXG5cdC8qXG5cdHdoaXRlIHRleHQsIGJsYWNrIGJhY2tncm91bmRcblx0Ki9cblx0LmlzLXN0eWxlLW91dGxpbmUge1xuXHRcdC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0XHRib3JkZXItY29sb3I6ICRjb2xvdXI7XG5cdFx0XHRcblx0XHRcdCYuaGFzLSN7JG5hbWV9LWJhY2tncm91bmQtY29sb3Ige1xuXHRcdFx0XHQmOmhvdmVyLFxuXHRcdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0XHRjb2xvcjogJGNvbG91cjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQmLmhhcy0jeyRuYW1lfS1jb2xvciB7XG5cdFx0XHRcdGNvbG9yOiAkY29sb3VyO1xuXG5cdFx0XHRcdCY6aG92ZXIsXG5cdFx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsImJvZHkge1xuICAgIGZvbnQtZmFtaWx5OlxuICAgIHN5c3RlbS11aSxcbiAgICAtYXBwbGUtc3lzdGVtLFxuICAgIEJsaW5rTWFjU3lzdGVtRm9udCxcbiAgICBcIlNlZ29lIFVJXCIsXG4gICAgUm9ib3RvLFxuICAgIFwiSGVsdmV0aWNhIE5ldWVcIixcbiAgICBBcmlhbCxcbiAgICBzYW5zLXNlcmlmO1xufVxuIiwiQHVzZSAnLi4vY29uZmlnJyBhcyAqO1xuXG5tYWluIHtcblx0bWFyZ2luLXRvcDogY2FsYyg0ICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG5cdHBhZGRpbmctYm90dG9tOiBjYWxjKDQgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc1ZW0pIHtcblx0LnNpbmdsZS1wcm9kdWN0IG1haW4ge1xuXHRcdG1hcmdpbi10b3A6IGNhbGMoLjVyZW0gKyAoNCAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pKTtcblx0fVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzQuOTM3NWVtKSB7XG5cdG1haW4ge1xuXHRcdG1hcmdpbi10b3A6IGNhbGMoMiAqICN7JGRlZmF1bHQtd2hpdGVzcGFjZX0pO1xuXHR9XG59XG5cbi5ob21lIG1haW4ge1xuXHRtYXJnaW4tdG9wOiBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcbn1cblxuLnJoeXRobSAqICsgKixcbi5yaHl0aG0gPiAqLFxuLmdyaWQtLXByb2R1Y3RzIHtcblx0bWFyZ2luLXRvcDogY2FsYygyICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG59XG5cbi5yaHl0aG0ge1xuXHQvKiBUaWdodGVyIG1hcmdpbiBmb3IgZ3JvdXBlZCBlbGVtZW50cy4gKi9cblx0cCArIHAsXG5cdHAgKyAqOm5vdChbY2xhc3NePVwid3AtYmxvY2tcIl0pOm5vdCgucHJvZHVjdC1hdHRyaWJ1dGVzKSxcblx0bGk6bm90KDpmaXJzdC1jaGlsZCl7XG5cdFx0bWFyZ2luLXRvcDogLjc1cmVtXG5cdH1cblxuXHRoMSArICosXG5cdGgyICsgKixcblx0aDMgKyAqLFxuXHRoMiArIGgzLFxuXHQud3AtYmxvY2stY2h0aG9uaWMtdGFibGUtY29uZGl0aW9uIHtcblx0XHRtYXJnaW4tdG9wOiAkZGVmYXVsdC13aGl0ZXNwYWNlO1xuXHR9XG5cblx0KiArIGgyLFxuXHQqICsgaDMsXG5cdC5wcm9kdWN0cy1yZWxhdGVkLFxuXHQud29vY29tbWVyY2UtcGFnaW5hdGlvbiB7XG5cdFx0bWFyZ2luLXRvcDogY2FsYygzICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG5cdH1cblxuXHQvKiBQcmV2ZW50IHRvcCBtYXJnaW4gZm9yIHNwZWNpZmllZCBlbGVtZW50cy4gKi9cblx0YnIsIC8qRml4IGZvciBGaXJlZm94LiAqL1xuXHRtYWluLFxuXHR0ZCxcblx0YXJ0aWNsZSxcblx0Lm5vLXRvcC1tYXJnaW4sXG5cdC53cC1ibG9jay1pbWFnZS1iYW5uZXIsXG5cdC53cC1ibG9jay1pbWFnZS1iYW5uZXIgKyAqLFxuXHQud3AtYmxvY2staW1hZ2UtYmFubmVyX19tZWRpYSxcblx0Lndvb2NvbW1lcmNlLXByb2R1Y3RzLWhlYWRlcixcblx0Lm1lbnUtLW1ldGEgbGkge1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdH1cblxuXHQvKiBCbG9ja3MuICovXG5cdC53cC1ibG9jay1jb2x1bW5zLFxuXHQud3AtYmxvY2stY29sdW1uID4gKjpmaXJzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxuXG5cdC53cC1ibG9jay1jb2x1bW5zLmhhcy1iYWNrZ3JvdW5kLFxuXHQud3AtYmxvY2stY29sdW1uIHtcblx0XHRtYXJnaW4tdG9wOiBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcblx0fVxuXG5cdEBtZWRpYSAobWluLXdpZHRoOiA0MC42MjVlbSkge1xuXHRcdC53cC1ibG9jay1jb2x1bW5zLFxuXHRcdC53cC1ibG9jay1jb2x1bW5zLmhhcy1iYWNrZ3JvdW5kIC53cC1ibG9jay1jb2x1bW4ge1xuXHRcdFx0bWFyZ2luLXRvcDogY2FsYygzICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG5cdFx0fVxuXG5cdFx0LndwLWJsb2NrLWNvbHVtbjpudGgtY2hpbGQoLW4rMikge1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHR9XG5cdH1cblxuXHRAbWVkaWEgKG1pbi13aWR0aDogNjIuNWVtKSB7XG5cdFx0LndwLWJsb2NrLWNvbHVtbiB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblx0fVxuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiAzNy40Mzc1ZW0pIHtcblx0XHQuZ3JpZCA+ICoge1xuXHRcdFx0bWFyZ2luLXRvcDogY2FsYygyICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSkgIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHQuZ3JpZC0tcHJvZHVjdC1zaW5nbGUgPiAqLFxuXHRcdC5wcm9kdWN0cy1yZWxhdGVkIC5ncmlkLS1wcm9kdWN0cyA+ICo6Zmlyc3QtY2hpbGQsXG5cdFx0LmdyaWQtLWZlYXR1cmVkID4gKjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cbn1cbiIsIkB1c2UgJy4uL2NvbmZpZycgYXMgKjtcblxuLndwLWJsb2NrLWltYWdlLWJhbm5lcl9fY3RhIGgxIHtcblx0Zm9udC1zaXplOiB2YXIoLS1zdGVwLTQpO1xuXG5cdEBtZWRpYSAobWluLXdpZHRoOiAzMS4yNWVtKSB7XG5cdFx0Zm9udC1zaXplOiB2YXIoLS1zdGVwLTUpO1xuXHR9XG59XG5cbmgyIHtcblx0Zm9udC1zaXplOiB2YXIoLS1zdGVwLTMpO1xufVxuXG5oMjpub3QoLmFsbC1jYXBzKTpub3QoLndwLWJsb2NrLWNodGhvbmljLWhlYWRpbmctZmFuY3kpOm5vdCguY2FyZC10aXRsZSksXG4ucHJvZHVjdC10ZXh0IC5wcm9kdWN0LXRpdGxlIHtcblx0Zm9udC1zaXplOiB2YXIoLS1zdGVwLTIpO1xufVxuXG5oMyxcbi5pcy1zdHlsZS10ZXh0LWxhcmdlcixcbi5jYXJkLXRpdGxlLFxuLmZpbHRlci0tc2l6ZSBhLFxuLnByb2R1Y3RzLXJlbGF0ZWQgLmNhcmQtdGl0bGUsXG4ubWMtc3RhdHVzIHtcblx0Zm9udC1zaXplOiB2YXIoLS1zdGVwLTEpO1xufVxuXG5oMSxcbmg0LFxucCxcbnRhYmxlLFxuYWRkcmVzcyxcbi5hbGwtY2Fwcyxcbi5tZW51LS1wcmltYXJ5LFxuLm1lbnUtLWFjdGlvbnMsXG4ubWVudS0tcGFnZXMsXG4uZmlsdGVyLS1sYWJlbCxcbi5yaHl0aG0gbGksXG4uYWxlcnQsXG4ucHJvZHVjdC10ZXh0IGJ1dHRvbixcbi5wcm9kdWN0cy1yZWxhdGVkIGgyLFxuLmZvb3RlciAud3AtYmxvY2stY29sdW1ucyB7XG5cdGZvbnQtc2l6ZTogdmFyKC0tc3RlcC0wKTtcbn1cblxuY2l0ZSxcbi5pcy1zdHlsZS10ZXh0LXNtYWxsZXIsXG4uY2FyZC1kZXNjcmlwdGlvbixcbi5hdHRyaWJ1dGUtdHlwZSxcbi5iYWRnZSxcbi5tZW51LS1tZXRhIGEge1xuXHRmb250LXNpemU6IHZhcigtLXN0ZXAtLTEpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogJG5hdmlnYXRpb24taXMtdG9nZ2xlZCkge1xuXHQubWVudS0tcHJpbWFyeSB7XG5cdFx0Zm9udC1zaXplOiB2YXIoLS1zdGVwLTEpO1xuXHR9XG59IiwiQHVzZSAnLi4vY29uZmlnJyBhcyAqO1xuXG5ib2R5IHtcblx0Zm9udC1mYW1pbHk6IHNvZmlhLXBybywgc2Fucy1zZXJpZjtcblx0Zm9udC13ZWlnaHQ6IDMwMDtcbn1cblxuLyogSGVhZGluZ3MuICovXG5oMSxcbmgyLFxuaDMsXG5oNCB7XG5cdGZvbnQtd2VpZ2h0OiAzMDA7IC8qIEB0b2RvIFJldmlldyB1c2FnZS4gKi9cbn1cblxuaDEsXG4uYWxsLWNhcHMge1xuXHRsZXR0ZXItc3BhY2luZzogLjAzMTI1ZW07XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8qIENvbnRlbnQuICovXG5wLFxubGkge1xuXHRtYXJnaW4tbGVmdDogMDtcblx0bWF4LXdpZHRoOiAzMmVtO1xufVxuXG4vKiBGYW1pbHkgYXNzaWdubWVudHMuICovXG4uc2VyaWYsXG4uYWxlcnQsXG4ud3AtYmxvY2staW1hZ2UtYmFubmVyX19jdGEgaDEsXG4uY2FyZC0tcHJvZHVjdCAuY2FyZC1kZXNjcmlwdGlvbixcbi5tZW51LWJ1dHRvbnMsXG4uZmlsdGVyLS1sYWJlbCxcbi5hdHRyaWJ1dGUtdHlwZSB7XG5cdGZvbnQtZmFtaWx5OiBwMjItbWFja2luYWMtcHJvLCBzZXJpZjtcblx0Zm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuaDEsXG4uYWxsLWNhcHMsXG4ud29vY29tbWVyY2UtY2hlY2tvdXQgaDEsXG4vLy5tZW51LS1wcmltYXJ5IC5tZW51LWl0ZW0gYSxcbi5tZW51LS1hY3Rpb25zIGEsXG4ucHJvZHVjdC10aXRsZSxcbi5wcm9kdWN0LXRleHQgYnV0dG9uLFxuLnNob3BfdGFibGUgdGgge1xuXHRmb250LWZhbWlseTogbmltYnVzLXNhbnMsIHNhbnMtc2VyaWY7IFxuXHRmb250LXdlaWdodDogOTAwO1xufVxuXG4vKiBIVE1MIGVsZW1lbnRzLiAqL1xuc3Ryb25nIHtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuYWRkcmVzcyB7XG5cdGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxucCB7XG5cdGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi5pcy1zdHlsZS10ZXh0LWxhcmdlciB7XG5cdG1heC13aWR0aDogMjZlbTtcbn1cblxuYSB7XG5cdGNvbG9yOiAkY29sb3VyLWRhcms7XG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHR0ZXh0LXVuZGVybGluZS1wb3NpdGlvbjogdW5kZXI7XG5cblx0Jjpob3Zlcixcblx0Jjpmb2N1cyB7XG5cdFx0Y29sb3I6ICRjb2xvdXItbWV0YWxsaWM7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR9XG59XG5cbnVsOm5vdChbY2xhc3NdKSB7XG5cdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuXHRsaSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0Jjo6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICdcXDAwQjcnO1xuXHRcdFx0Zm9udC1zaXplOiB2YXIoLS1zdGVwLTEpO1xuXHRcdFx0bGVmdDogLS43NXJlbTtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogLS4zNzVyZW07XG5cdFx0fVxuXHR9XG59XG5cbmRkIHtcblx0d2lkdGg6IGF1dG87XG59IiwiLnVpLXNoYWRvdyB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQmOjpiZWZvcmUge1xuXHRcdGJveC1zaGFkb3c6IDAgMXB4IDJweCAjYzhjOGM4LDAgMXB4IDNweFxuXHRcdCNmYWZhZmE7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0bGVmdDogMDtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHotaW5kZXg6IC0xO1xuXHR9XG59XG4vKlxuLmhhcy1jcmVhbS1kYXJrLWJhY2tncm91bmQtY29sb3IgZmlndXJlIHtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHg9JzBweCcgeT0nMHB4JyB2aWV3Qm94PScwIDAgMjIuOSAyMi45JyB4bWw6c3BhY2U9J3ByZXNlcnZlJyUzRSUzQ2NpcmNsZSBmaWxsPSclMjM4ODY1MGInIGNsYXNzPSdzdDAnIGN4PSc1LjcnIGN5PSc1LjknIHI9JzMnLyUzRSUzQ2NpcmNsZSBmaWxsPSclMjM4ODY1MGInIGNsYXNzPSdzdDAnIGN4PScxNy4yJyBjeT0nMTcuMicgcj0nMycvJTNFJTNDL3N2ZyUzRSUwQVwiKTtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGJvdHRvbTtcblx0YmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDtcblx0YmFja2dyb3VuZC1zaXplOiAxMnB4O1xuXHRwYWRkaW5nOiAkZGVmYXVsdC13aGl0ZXNwYWNlO1xufSovIiwiQHVzZSAnYTExeSc7XG5AdXNlICdjb2xvdXInO1xuQHVzZSAnZm9udCc7XG5AdXNlICdyaHl0aG0nO1xuQHVzZSAnc2NhbGUnO1xuQHVzZSAndHlwb2dyYXBoeSc7XG5AdXNlICd1aSc7XG5cbi8qIENvbXBvbmVudHMuICovXG5AdXNlICdjb21wb25lbnQvY29tcG9uZW50JztcblxuLyogQmxvY2tzLiAqL1xuQHVzZSAnd3AtYmxvY2tzL3N0eWxlcyc7XG4iLCJAdXNlICcuLi8uLi9jb25maWcnIGFzICo7XG5cbi5idXR0b24ge1xuXHRhcHBlYXJhbmNlOiBub25lO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0Ym9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcblx0Ym94LXNoYWRvdzogLjA2MjVyZW0gLjA2MjVyZW0gMCAwLCAuMTI1cmVtIC4xMjVyZW0gMCAwLCAuMTg3NXJlbSAuMTg3NXJlbSAwIDAsIC4yNXJlbSAuMjVyZW0gMCAwO1xuXHRjb2xvcjogJGNvbG91ci1wbHVtO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdGRpc3BsYXk6IHRhYmxlO1xuXHRsZXR0ZXItc3BhY2luZzogLjAzMTI1ZW07XG5cdGxpbmUtaGVpZ2h0OiAzO1xuXHRtYXJnaW4tdG9wOiBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcblx0cGFkZGluZzogMCAkZGVmYXVsdC13aGl0ZXNwYWNlICFpbXBvcnRhbnQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLS4yNXJlbSk7XG5cdHdpZHRoOiBhdXRvO1xuXG5cdCY6aG92ZXIsXG5cdCY6Zm9jdXMge1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAuMjVyZW0sIDApO1xuXHR9XG5cblx0Jjpob3ZlciB7XG5cdFx0Ym9yZGVyLWNvbG9yOiBjdXJyZW50Q29sb3I7XG5cdFx0Y29sb3I6ICRjb2xvdXItcGx1bTtcblx0fVxuXG5cdCY6Zm9jdXMge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXItcGx1bTtcblx0XHRib3JkZXItY29sb3I6ICRjb2xvdXItcGx1bTtcblx0XHRjb2xvcjogJGNvbG91ci13aGl0ZTtcblx0fVxufVxuXG4uZm9ybS0tbWFpbGNoaW1wLFxuLndvb2NvbW1lcmNlLW5vdGljZXMtd3JhcHBlciB7XG5cdC5idXR0b24ge1xuXHRcdGNvbG9yOiAkY29sb3VyLXdoaXRlO1xuXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3VyLXdoaXRlO1xuXHRcdFx0Y29sb3I6ICRjb2xvdXItcGx1bTtcblx0XHR9XG5cdFxuXHR9XG59IiwiQHVzZSAnLi4vLi4vY29uZmlnJyBhcyAqO1xuXG4uY2FyZCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNhcmRfX3RleHQsXG4uY2FyZF9fbWVkaWEge1xuXHRtYXJnaW4tdG9wOiAwO1xufVxuXG4uY2FyZF9fdGV4dCB7XG5cdG1hcmdpbi10b3A6IDA7XG5cdG9yZGVyOiAxO1xufVxuXG4uY2FyZC10aXRsZSB7XG5cdGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4uY2FyZC10YXJnZXQge1xuXHRjb2xvcjogaW5oZXJpdDtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY2FyZC10YXJnZXQ6Zm9jdXMge1xuXHRvdXRsaW5lOiBub25lO1xufVxuXG4uY2FyZC10YXJnZXQ6OmFmdGVyIHtcblx0Ym90dG9tOiAtLjc1cmVtO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcblx0Y29udGVudDogJyc7XG5cdGxlZnQ6IC0uNzVyZW07XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0cmlnaHQ6IC0uNzVyZW07XG5cdHRvcDogLS43NXJlbTtcblx0ei1pbmRleDogMTtcbn1cblxuLmNhcmQtdGFyZ2V0OmhvdmVyOjphZnRlcixcbi5jYXJkLXRhcmdldDpmb2N1czo6YWZ0ZXIge1xuXHRib3JkZXI6IDJweCBzb2xpZCAkY29sb3VyLWRhcms7XG59XG5cbi8qIENhcmQ6IFByb2R1Y3QuICovXG4uY2FyZC0tcHJvZHVjdCB7XG5cdC5jYXJkLXRpdGxlIHtcblx0XHRtYXJnaW4tdG9wOiAxcmVtO1xuXHR9XG5cblx0LmNhcmQtZGVzY3JpcHRpb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdG1hcmdpbi10b3A6IC4zNzVyZW07XG5cdH1cblxuXHRpbnMge1xuXHRcdGNvbG9yOiRjb2xvdXItcGx1bTtcblx0XHRtYXJnaW4tcmlnaHQ6IC4zNzVlbTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdH1cbn1cblxuLyogQXZvaWQgbGF5b3V0IHJlZmxvdyBhZnRlciBsYXp5LWxvYWQgYnkgZmFraW5nIGFzcGVjdC1yYXRpby4gKi9cbi5jYXJkX19tZWRpYSBmaWd1cmUge1xuXHRoZWlnaHQ6IDA7XG5cdHBhZGRpbmctdG9wOiAxMDAlO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0aW1nIHtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0bGVmdDogMDtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbi5jYXJkLWRlc2NyaXB0aW9uIC5wcmljZSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbn1cblxuLmNhcmQtZGVzY3JpcHRpb24sXG4uY2FyZC1kZXNjcmlwdGlvbiAuc2l6ZSxcbi5wcmljZSBpbnMge1xuXHRtYXJnaW4tdG9wOiAwO1xufVxuXG4uYmFkZ2Uge1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiRjb2xvdXItcGx1bTtcblx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRjb2xvcjogJGNvbG91ci13aGl0ZTtcblx0ZGlzcGxheTogZmxleDtcblx0aGVpZ2h0OiBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGxldHRlci1zcGFjaW5nOiAuMDYyNWVtO1xuXHRyaWdodDogJGRlZmF1bHQtd2hpdGVzcGFjZTtcblx0bWFyZ2luOiAwO1xuXHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHR0b3A6ICRkZWZhdWx0LXdoaXRlc3BhY2U7XG5cdHdpZHRoOiBjYWxjKDIgKiAjeyRkZWZhdWx0LXdoaXRlc3BhY2V9KTtcblx0ei1pbmRleDogMTtcbn1cblxuLmNhcmQtLWN0YSB7XG5cdC5jYXJkLXRpdGxlIHtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG5cblx0LmNhcmQtdGFyZ2V0OmhvdmVyOjphZnRlcixcblx0LmNhcmQtdGFyZ2VyOmZvY3VzOjphZnRlciB7XG5cdFx0Ym9yZGVyOiA0cHggc29saWQgJGNvbG91ci1tZXRhbGxpYztcblx0fVxuXG5cdC5jYXJkLWRlc2NyaXB0aW9uIHtcblx0XHRtYXJnaW4tdG9wOiBjYWxjKC41ICogI3skZGVmYXVsdC13aGl0ZXNwYWNlfSk7XG5cdH1cblxuXHRwIHtcblx0XHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cdH1cbn0iLCJAdXNlICcuLi8uLi9jb25maWcnIGFzICo7XG5cbi5pY29uIHtcblx0ZmlsbDogJGNvbG91ci1tZXRhbGxpYztcblx0aGVpZ2h0OiB2YXIoLS1zdGVwLTEpO1xuXHR3aWR0aDogdmFyKC0tc3RlcC0xKTtcblxufVxuXG4ubGluayB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdHRyYW5zaXRpb246IDI1MG1zO1xufVxuXG4vKiBTb2NpYWwgaWNvbiBsaW5rLiAqL1xuLmxpbmstLXNvY2lhbCB7XG5cdCY6aG92ZXIsXG5cdCY6Zm9jdXMge1xuXHRcdC5pY29uLS1mYWNlYm9vayB7XG5cdFx0XHRmaWxsOiAjM2I1OTk4O1xuXHRcdH1cblxuXHRcdC5pY29uLS1pbnN0YWdyYW0ge1xuXHRcdFx0ZmlsbDogI2UxMzA2Yztcblx0XHR9XG5cdH1cbn0iLCJAdXNlICcuLi8uLi9jb25maWcnIGFzICo7XG5cbi53cC1ibG9jay1idXR0b25fX2xpbmsge1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLXdpZHRoOiAycHg7XG5cdGxpbmUtaGVpZ2h0OiAzO1xuXHRwYWRkaW5nOiAwICRkZWZhdWx0LXdoaXRlc3BhY2U7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiIsIi53cC1ibG9jay1wdWxscXVvdGUge1xuXHRibG9ja3F1b3RlIHtcblx0XHRwIHtcblx0XHRcdG1heC13aWR0aDogNDMuNzVyZW07XG5cdFx0fVxuXHR9XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/