@charset "UTF-8";
/**
 * Abstract
 * == Contain SCSS and CSS variables and webfonts declarations.
 */
/**
 * Constants
 */
/**
 * Variables
 */
/**
 * Tools
 * == Contains functions and mixins.
 */
/**
 * Abstract folder entry file
 */
/**
 * Assign inputs
 */
/**
 * Column
 *
 * exemples :
 *      column(6) 			-> return 6 column + 5 gutter of desktop preset
 * 		column('m', 6) 		-> return 6 column + 5 gutter of mobile preset
 * 		column(6, 5, 8)		-> return 6 column + 5 gutter of 8 grid size of desktop
 *
 */
/**
 * Align
 *
 * exemples :
 *
 *      context-align("wide") .blockcontext-align() {
 *          ... your css
 *      }
 *
  *      return for style.scss :
 *          .block.alignwide {
 *              ... your css
 *          }
 *
 *      return for editor.scss :
 *          [data-align="wide"] > .block {
 *              ... your css
 *          }
 *
 */
/**
 * Context selector
 *
 * exemples :
 *
 *      context-selector("#main__content", "#editor", ".block") {
 *          ... your css
 *      }
 *
 *      return for style.scss :
 *          #main__content .block {
 *              ... your css
 *          }
 *
 *      return for editor.scss :
 *          #editor .block {
 *              ... your css
 *          }
 *
 *      $selectors: ".blocks-gallery-image,", ".blocks-gallery-item";
 *      context-selector(".wp-block-gallery", ".blocks-gallery-grid", selectors) {
 *          ... your css
 *      }
 *
 *      return for style.scss :
 *          .wp-block-gallery .blocks-gallery-image,
 *          .wp-block-gallery .blocks-gallery-item {
 *              ... your css
 *          }
 *
 *      return for editor.scss :
 *          .blocks-gallery-grid .blocks-gallery-image,
 *          .blocks-gallery-grid .blocks-gallery-item {
 *              ... your css
 *          }
 *
 *      It can be used to define a variable :
 *
 *      $parent: context-selector('#main__content', '#editor')
 *
 *      dollar parent > .block {
 *          ... your css
 *      }
 *
 *      the variable $entry-file-name is defined in style.scss and editor.scss
 */
/**
 * Em
 *
 * convert value from px to em
 */
/**
 * get-svg-url
 *
 * exemples :
 *      get-svg-url("arrow")
 *      get-svg-url("arrow", $color-primary)
 *
 */
/**
 * Strip units
 */
/**
 * Align
 *
 * default: float left
 */
/**
 * Autofill
 *
 * webkit autofill
 */
/**
 * Breakpoints
 *
 * exemples :
 *
 *      @include breakpoints(sm, md) { ... }
 *          return @media screen and (min-width: 768px) and (max-width: 1024px) { ... }
 *
 *      @include breakpoints(sm, max) { ... }
 *          return @media screen and (max-width: 767px) { ... }
 *
 *      @include breakpoints(sm) or @include breakpoints(sm, min) { ... }
 *          return @media screen and (min-width: 768px) { ... }
 *
 */
/**
 * Button
 */
/**
 * Checkbox custom
 */
/**
 * Clearflex : clear:left for flexbox
 */
/**
 * Container
 */
/**
 * Declare font face
 *
 * used in base/_fonts.scss
 */
/**
 * Editor style only
 *
 *      Style inside the mixin while be writed only for editor.scss
 *
 *      @include editor-only {
 *          ... css only for the gutenberg editor
 *      }
 *
 *      the variable $entry-file-name is defined in style.scss and editor.scss
 */
/**
 * Heading mixins
 */
/**
 * Hover
 *
 *          Hover Active Focus pseudo selector mixin
 */
/**
 * 2. Images
 */
/**
 * Placeholder
 */
/**
 * Placeholder media
 */
/**
 * Radio custom, must be used with checkbox custom
 */
/**
 * Row fullwidth
 */
/**
 * Scrollbar invisible
 *
 *      /!\ ALERT : Don't use this mixin neither on the html element, nor on the body element to avoid deteriorating accessibility
 */
/**
 * Scrollbar color
 */
/**
 * Select custom
 */
/*
	Improved screen reader only CSS class
    @see https://gist.github.com/ffoodd/000b59f431e3e64e4ce1a24d5bb36034
	@author Gaël Poupard
		@note Based on Yahoo!'s technique
		@author Thierry Koblentz
		@see https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html
	* 1.
		@note `clip` is deprecated but works everywhere
		@see https://developer.mozilla.org/en-US/docs/Web/CSS/clip
	* 2.
		@note `clip-path` is the future-proof version, but not very well supported yet
		@see https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path
		@see http://caniuse.com/#search=clip-path
		@author Yvain Liechti
		@see https://twitter.com/ryuran78/status/778943389819604992
	* 3.
		@note preventing text to be condensed
		author J. Renée Beach
		@see https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
		@note Drupal 8 goes with word-wrap: normal instead
		@see https://www.drupal.org/node/2045151
		@see http://cgit.drupalcode.org/drupal/commit/?id=5b847ea
	* 4.
		@note !important is important
		@note Obviously you wanna hide something
		@author Harry Roberts
		@see https://csswizardry.com/2016/05/the-importance-of-important/
*/
/**
 * Style only
 *
 *      Style inside the mixin while be writed only for style.scss
 *
 *      @include style-only {
 *          ... css only for the front office
 *      }
 *
 *      the variable $entry-file-name is defined in style.scss and editor.scss
 */
/**
 * Base
 * == Contain generic styles such as normalize or reset.
 */
/**
 * Base folder entry file
 */
/**
 * This is a variable font
 * You can controll variable axes as shown below:
 * font-variation-settings: 'wght' 900.0;
 *
 * available axes:

 * 'wght' (range from 100.0 to 900.0)

 */
@font-face {
  font-family: "Zodiak-Variable";
  font-style: normal;
  font-weight: 100 900;
  font-stretch: normal;
  src: url(assets/67186e4a886631b8e07d.woff2) format("woff2");
  font-display: swap;
  unicode-range: U+0-10FFFF; /* cutting of the font file for better loading */
}
@font-face {
  font-family: "Zodiak-VariableItalic";
  font-style: italic;
  font-weight: 100 900;
  font-stretch: normal;
  src: url(assets/0c344aee6ad292a6e6f3.woff2) format("woff2");
  font-display: swap;
  unicode-range: U+0-10FFFF; /* cutting of the font file for better loading */
}
/**
* This is a variable font
* You can controll variable axes as shown below:
* font-variation-settings: 'wght' 700.0;
*
* available axes:

* 'wght' (range from 200.0 to 700.0)

*/
@font-face {
  font-family: "GeneralSans-Variable";
  font-style: normal;
  font-weight: 200 700;
  font-stretch: normal;
  src: url(assets/65a7e76e15a342e2ed8f.woff2) format("woff2");
  font-display: swap;
  unicode-range: U+0-10FFFF; /* cutting of the font file for better loading */
}
:root {
  /*
   * Heading
   */
  --heading--font-size-h1: 2.25rem;
  --heading--font-size-h2: 1.5rem;
  --heading--font-size-h3: 1.25rem;
  --heading--font-size-h4: 1.25rem;
  --heading--font-size-h5: 1.25rem;
  --heading--font-size-h6: 1.25rem;
  --heading--line-height-h1: 1.3;
  --heading--line-height-h2: 1.3;
  --heading--line-height-h3: 1.3;
  --heading--line-height-h4: 1.3;
  --heading--line-height-h5: 1.3;
  --heading--line-height-h6: 1.3;
  /*
  * Text
  */
  --font-size-small: 0.875rem;
  --font-size-normal: 1rem;
  --font-size-medium: 1.125rem;
  --font-size-large: 1.25rem;
  --font-size-big: 1.5rem;
  /*
   * Spacing
   */
  --spacing--block-1: 0.625rem;
  --spacing--block-2: 0.9375rem;
  --spacing--block-3: 0.9375rem;
  --spacing--block-4: 1.875rem;
  --spacing--block-5: 3.75rem;
  --spacing--block-6: 7.5rem;
  /*
   * Alignments
   */
  --responsive--aligndefault-width: calc(100% - 3.125rem);
  --responsive--alignwide-width: calc(100% - 3.125rem);
  --responsive--alignfull-width: 100%;
  /*
   * Alignments breakpoints
   */
  /*
   * Global breakpoints
   */
}
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
   ========================================================================== */
/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */
html {
  line-height: 1.15; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
   ========================================================================== */
/**
 * Remove the margin in all browsers.
 */
body {
  margin: 0;
}
/**
 * Render the `main` element consistently in IE.
 */
main {
  display: block;
}
/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */
h1 {
  margin: 0.67em 0;
  font-size: 2em;
}
/* Grouping content
   ========================================================================== */
/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */
hr {
  -webkit-box-sizing: content-box;
          box-sizing: content-box; /* 1 */
  height: 0; /* 1 */
  overflow: visible; /* 2 */
}
/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
pre {
  font-family: monospace; /* 1 */
  font-size: 1em; /* 2 */
}
/* Text-level semantics
   ========================================================================== */
/**
 * Remove the gray background on active links in IE 10.
 */
a {
  text-decoration-thickness: 0.0625rem;
  background-color: transparent;
}
/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */
abbr[title] {
  text-decoration: underline; /* 2 */
  -webkit-text-decoration-style: dotted;
          text-decoration-style: dotted; /* 2 */
  border-bottom: none; /* 1 */
}
/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */
b,
strong {
  font-weight: bolder;
}
/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
code,
kbd,
samp {
  font-family: monospace; /* 1 */
  font-size: 1em; /* 2 */
}
/**
 * Add the correct font size in all browsers.
 */
small {
  font-size: 80%;
}
/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */
sub,
sup {
  position: relative;
  font-size: 75%;
  line-height: 0;
  vertical-align: baseline;
}
sub {
  bottom: -0.25em;
}
sup {
  top: -0.5em;
}
/* Embedded content
   ========================================================================== */
/**
 * Remove the border on images inside links in IE 10.
 */
img {
  border-style: none;
}
/* Forms
   ========================================================================== */
/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
optgroup,
select,
textarea {
  margin: 0; /* 2 */
  font-family: inherit; /* 1 */
  font-size: 100%; /* 1 */
  line-height: 1.15; /* 1 */
}
/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
button,
input { /* 1 */
  overflow: visible;
}
/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */
button,
select { /* 1 */
  text-transform: none;
}
/**
 * Correct the inability to style clickable types in iOS and Safari.
 */
button,
[type=button],
[type=reset],
[type=submit] {
  -webkit-appearance: button;
}
/**
 * Remove the inner border and padding in Firefox.
 */
button::-moz-focus-inner,
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner {
  padding: 0;
  border-style: none;
}
/**
 * Restore the focus styles unset by the previous rule.
 */
button:-moz-focusring,
[type=button]:-moz-focusring,
[type=reset]:-moz-focusring,
[type=submit]:-moz-focusring {
  outline: 0.0625rem dotted ButtonText;
}
/**
 * Correct the padding in Firefox.
 */
fieldset {
  padding: 0.35em 0.75em 0.625em;
}
/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */
legend {
  -webkit-box-sizing: border-box;
          box-sizing: border-box; /* 1 */
  display: table; /* 1 */
  max-width: 100%; /* 1 */
  padding: 0; /* 3 */
  color: inherit; /* 2 */
  white-space: normal; /* 1 */
}
/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  vertical-align: baseline;
}
/**
 * Remove the default vertical scrollbar in IE 10+.
 */
textarea {
  overflow: auto;
}
/**
 * 1. Add the correct box sizing in IE 10.
 * 2. Remove the padding in IE 10.
 */
[type=checkbox],
[type=radio] {
  -webkit-box-sizing: border-box;
          box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}
/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */
[type=number]::-webkit-inner-spin-button,
[type=number]::-webkit-outer-spin-button {
  height: auto;
}
/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */
[type=search] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -0.125rem; /* 2 */
}
/**
 * Remove the inner padding in Chrome and Safari on macOS.
 */
[type=search]::-webkit-search-decoration {
  -webkit-appearance: none;
}
/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */
::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}
/* Interactive
   ========================================================================== */
/*
 * Add the correct display in Edge, IE 10+, and Firefox.
 */
details {
  display: block;
}
/*
 * Add the correct display in all browsers.
 */
summary {
  display: list-item;
}
/* Misc
   ========================================================================== */
/**
 * Add the correct display in IE 10+.
 */
template {
  display: none;
}
/**
 * Add the correct display in IE 10.
 */
[hidden] {
  display: none;
}
.icon {
  display: inline-block;
  width: 1rem;
  height: 1rem;
  vertical-align: middle;
  fill: currentColor;
}
/**
 * Reset specific elements to make them easier to style in other contexts.
 */
html,
body,
p,
ol,
ul,
li,
dl,
dt,
dd,
blockquote,
figure,
fieldset,
form,
legend,
textarea,
pre,
iframe,
hr,
h1,
h2,
h3,
h4,
h5,
h6 {
  padding: 0;
  margin: 0;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
}
/**
  * Apply generic border-box to all elements.
  * See:
  * https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/
  */
html {
  /* Apply border-box across the entire page. */
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  font-family: Zodiak-Variable, serif;
  line-height: 1.3;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: auto;
}
/**
  * Relax the definition a bit, to allow components to override it manually.
  */
*, *::before, *::after {
  -webkit-box-sizing: inherit;
          box-sizing: inherit;
}
body {
  font-family: Zodiak-Variable, serif;
  font-size: 1.125rem;
  font-weight: normal;
  color: #333;
  text-align: left;
  background-color: #fff;
}
button {
  cursor: pointer;
}
button[disabled] {
  cursor: not-allowed;
}
textarea {
  resize: vertical;
}
input[type=color], input[type=date], input[type=datetime], input[type=datetime-local], input[type=email], input[type=month], input[type=number], input[type=password], input[type=search], input[type=tel], input[type=text], input[type=time], input[type=url], input[type=week], input:not([type]), textarea,
textarea {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  width: 100%;
  padding: 0.9375rem 1.5625rem;
  font-family: Zodiak-Variable, serif;
  line-height: 1;
  color: #333;
  background: #f2f2f2;
  border: 0.0625rem solid #888;
  border-radius: 0.625rem;
  -webkit-transition: border-color 0.5s ease;
  transition: border-color 0.5s ease;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}
input[type=color]::-webkit-input-placeholder, input[type=date]::-webkit-input-placeholder, input[type=datetime]::-webkit-input-placeholder, input[type=datetime-local]::-webkit-input-placeholder, input[type=email]::-webkit-input-placeholder, input[type=month]::-webkit-input-placeholder, input[type=number]::-webkit-input-placeholder, input[type=password]::-webkit-input-placeholder, input[type=search]::-webkit-input-placeholder, input[type=tel]::-webkit-input-placeholder, input[type=text]::-webkit-input-placeholder, input[type=time]::-webkit-input-placeholder, input[type=url]::-webkit-input-placeholder, input[type=week]::-webkit-input-placeholder, input:not([type])::-webkit-input-placeholder, textarea::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
  color: #b3b3b3;
}
input[type=color]::-moz-placeholder, input[type=date]::-moz-placeholder, input[type=datetime]::-moz-placeholder, input[type=datetime-local]::-moz-placeholder, input[type=email]::-moz-placeholder, input[type=month]::-moz-placeholder, input[type=number]::-moz-placeholder, input[type=password]::-moz-placeholder, input[type=search]::-moz-placeholder, input[type=tel]::-moz-placeholder, input[type=text]::-moz-placeholder, input[type=time]::-moz-placeholder, input[type=url]::-moz-placeholder, input[type=week]::-moz-placeholder, input:not([type])::-moz-placeholder, textarea::-moz-placeholder, textarea::-moz-placeholder {
  color: #b3b3b3;
}
input[type=color]:-ms-input-placeholder, input[type=date]:-ms-input-placeholder, input[type=datetime]:-ms-input-placeholder, input[type=datetime-local]:-ms-input-placeholder, input[type=email]:-ms-input-placeholder, input[type=month]:-ms-input-placeholder, input[type=number]:-ms-input-placeholder, input[type=password]:-ms-input-placeholder, input[type=search]:-ms-input-placeholder, input[type=tel]:-ms-input-placeholder, input[type=text]:-ms-input-placeholder, input[type=time]:-ms-input-placeholder, input[type=url]:-ms-input-placeholder, input[type=week]:-ms-input-placeholder, input:not([type]):-ms-input-placeholder, textarea:-ms-input-placeholder, textarea:-ms-input-placeholder {
  color: #b3b3b3;
}
input[type=color]::-ms-input-placeholder, input[type=date]::-ms-input-placeholder, input[type=datetime]::-ms-input-placeholder, input[type=datetime-local]::-ms-input-placeholder, input[type=email]::-ms-input-placeholder, input[type=month]::-ms-input-placeholder, input[type=number]::-ms-input-placeholder, input[type=password]::-ms-input-placeholder, input[type=search]::-ms-input-placeholder, input[type=tel]::-ms-input-placeholder, input[type=text]::-ms-input-placeholder, input[type=time]::-ms-input-placeholder, input[type=url]::-ms-input-placeholder, input[type=week]::-ms-input-placeholder, input:not([type])::-ms-input-placeholder, textarea::-ms-input-placeholder, textarea::-ms-input-placeholder {
  color: #b3b3b3;
}
input[type=color]::placeholder, input[type=date]::placeholder, input[type=datetime]::placeholder, input[type=datetime-local]::placeholder, input[type=email]::placeholder, input[type=month]::placeholder, input[type=number]::placeholder, input[type=password]::placeholder, input[type=search]::placeholder, input[type=tel]::placeholder, input[type=text]::placeholder, input[type=time]::placeholder, input[type=url]::placeholder, input[type=week]::placeholder, input:not([type])::placeholder, textarea::placeholder,
textarea::placeholder {
  color: #b3b3b3;
}
input[type=color]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=date]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=datetime]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=datetime-local]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=email]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=month]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=number]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=password]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=search]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=tel]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=text]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=time]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=url]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input[type=week]::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, input:not([type])::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder, textarea::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder,
textarea::-webkit-input-placeholder :-moz-placeholder -moz-placeholder -ms-input-placeholder {
  color: #b3b3b3;
}
input[type=color]:hover, input[type=date]:hover, input[type=datetime]:hover, input[type=datetime-local]:hover, input[type=email]:hover, input[type=month]:hover, input[type=number]:hover, input[type=password]:hover, input[type=search]:hover, input[type=tel]:hover, input[type=text]:hover, input[type=time]:hover, input[type=url]:hover, input[type=week]:hover, input:not([type]):hover, textarea:hover,
textarea:hover {
  border-color: #6f6f6f;
}
input[type=color]:focus, input[type=date]:focus, input[type=datetime]:focus, input[type=datetime-local]:focus, input[type=email]:focus, input[type=month]:focus, input[type=number]:focus, input[type=password]:focus, input[type=search]:focus, input[type=tel]:focus, input[type=text]:focus, input[type=time]:focus, input[type=url]:focus, input[type=week]:focus, input:not([type]):focus, textarea:focus,
textarea:focus {
  color: #1a1a1a;
  border-color: #555555;
}
label {
  display: inline-block;
  font-weight: 700;
}
select {
  display: block;
  width: 100%;
  max-width: 100%; /* useful when width is set to anything other than 100% */
  padding: 0.9375rem 1.5625rem;
  margin: 0;
  font-size: 1rem;
  line-height: 1.15;
  color: #333;
  background-color: #fff;
  background-image: url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' fill='rgba(51, 51, 51, 1)' viewBox='0 0 11.2 6.7'%3E%3Cpath d='M0 .5C0 .4.1.2.2.1c.2-.2.5-.1.7.1l4.6 5.3.1.1s.1 0 .1-.1L10.3.1c.2-.1.5-.2.7 0 .2.2.2.5.1.7L6.5 6.2c-.2.3-.5.5-.9.5s-.7-.2-.9-.6L.1.8C0 .7 0 .6 0 .5z'/%3E%3C/svg%3E"), -webkit-gradient(linear, left top, left bottom, from(#fff), to(#fff));
  background-image: url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' fill='rgba(51, 51, 51, 1)' viewBox='0 0 11.2 6.7'%3E%3Cpath d='M0 .5C0 .4.1.2.2.1c.2-.2.5-.1.7.1l4.6 5.3.1.1s.1 0 .1-.1L10.3.1c.2-.1.5-.2.7 0 .2.2.2.5.1.7L6.5 6.2c-.2.3-.5.5-.9.5s-.7-.2-.9-.6L.1.8C0 .7 0 .6 0 .5z'/%3E%3C/svg%3E"), linear-gradient(to bottom, #fff 0%, #fff 100%);
  background-repeat: no-repeat, repeat;
  background-position: right 0.625rem top 50%, 0 0;
  background-size: 0.625rem auto, 100%;
  border: 0.0625rem solid #888;
  border-radius: 0.625rem;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}
select option {
  font-weight: 400;
}
select::-ms-expand {
  display: none;
}
select:hover {
  border-color: #6f6f6f;
}
select:focus {
  color: #1a1a1a;
  border-color: #555555;
  outline: none;
  -webkit-box-shadow: 0 0 0.0625rem 0.1875rem rgba(59, 153, 252, 0.7);
          box-shadow: 0 0 0.0625rem 0.1875rem rgba(59, 153, 252, 0.7);
  box-shadow: 0 0 0 0.1875rem -moz-mac-focusring;
}
select:focus option {
  outline: none;
}
*[dir=rtl] select, :root:lang(ar) select, :root:lang(iw) select {
  background-position: left 0.625rem top 50%, 0 0;
}
input[type=checkbox],
input[type=radio] {
  width: 0.0625rem !important;
  height: 0.0625rem !important;
  padding: 0 !important;
  margin: -0.0625rem !important;
  overflow: hidden !important;
  clip: rect(0.0625rem, 0.0625rem, 0.0625rem, 0.0625rem) !important;
  -webkit-clip-path: inset(50%) !important;
          clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
input[type=checkbox],
input[type=radio] {
  position: absolute; /* 1 */ /* 2 */ /* 3 */
}
input[type=checkbox] + label,
input[type=radio] + label {
  position: relative;
  display: block;
  padding-left: 2.375rem;
  cursor: pointer;
}
input[type=checkbox] + label::before,
input[type=radio] + label::before {
  position: absolute;
  top: 0.0625rem;
  left: 0;
  width: 1.125rem;
  height: 1.125rem;
  margin: 0;
  content: "";
  background-color: #fff;
  border: 0.0625rem solid #c6472b;
}
input[type=checkbox] + label::after,
input[type=radio] + label::after {
  position: absolute;
  top: 0.4375rem;
  left: 0.5625rem;
  width: 0.75rem;
  height: 0.4375rem;
  content: "";
  border-color: #c6472b;
  border-style: solid;
  border-width: 0 0 0.125rem 0.125rem;
  opacity: 0;
  -webkit-transition: opacity 0.2s;
  transition: opacity 0.2s;
  -webkit-transform: translate(-50%, -50%) rotate(-45deg);
          transform: translate(-50%, -50%) rotate(-45deg);
}
input[type=checkbox]:checked + label::after,
input[type=radio]:checked + label::after {
  opacity: 1;
}
input[type=radio] + label::before {
  border-radius: 50%;
}
input[type=radio] + label::after {
  top: 0.625rem;
  width: 0.5625rem;
  height: 0.5625rem;
  background: #c6472b;
  border: none;
  border-radius: 50%;
}
a {
  color: currentColor;
  text-decoration: underline;
  cursor: pointer;
}
a:hover {
  text-decoration: none;
}
a:focus {
  background-color: #ccc;
}
.m-img-wrap {
  display: block;
  width: 100%;
  height: 0;
  padding-bottom: 100%;
}
.m-img-wrap img {
  width: 100%;
  height: auto;
}
.m-img-wrap--ofit img {
  width: 100%;
}
embed,
iframe,
object,
video {
  max-width: 100%;
}
b,
strong {
  font-weight: 600;
}
dfn,
cite,
em,
i {
  font-style: italic;
}
pre {
  overflow-x: auto;
  white-space: pre;
}
/**
 * Utilities
 * == Utility classes that are not assigned to a specific component.
 */
html a:focus,
html button:focus,
html input:focus,
html select:focus,
html textarea:focus,
html [tabindex]:focus {
  outline: 0.125rem solid currentColor;
  outline-offset: 0.5rem;
}
html [data-seo-container][focus-within] {
  outline: 0.0625rem solid currentColor;
  outline-offset: 0.5rem;
}
html [data-seo-container][focus-within] {
  outline: 0.0625rem solid currentColor;
  outline-offset: 0.5rem;
}
html [data-seo-container]:focus-within {
  outline: 0.0625rem solid currentColor;
  outline-offset: 0.5rem;
}
html [data-seo-container] *:focus {
  outline: none;
}
html:not([data-whatintent=keyboard]) a:focus,
html:not([data-whatintent=keyboard]) button:focus,
html:not([data-whatintent=keyboard]) input:focus,
html:not([data-whatintent=keyboard]) select:focus,
html:not([data-whatintent=keyboard]) textarea:focus,
html:not([data-whatintent=keyboard]) [tabindex]:focus {
  outline: none;
}
html:not([data-whatintent=keyboard]) [data-seo-container][focus-within],
html:not([data-whatintent=keyboard]) [data-seo-container] *:focus {
  outline: none;
}
html:not([data-whatintent=keyboard]) [data-seo-container]:focus-within,
html:not([data-whatintent=keyboard]) [data-seo-container] *:focus {
  outline: none;
}
.lazyload,
.lazyloading {
  background: #c6472b;
  opacity: 0;
}
.lazyloaded {
  opacity: 1;
  -webkit-transition: opacity 0.5s;
  transition: opacity 0.5s;
}
[data-bgset] {
  position: relative;
  background-repeat: no-repeat;
  background-position: 50% 50%;
  background-size: cover;
  opacity: 1;
}
[data-bgset]::before {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 2;
  content: "";
  background: #c6472b;
  -webkit-transition: opacity 0.5s, z-index 0.5s ease 0.5s;
  transition: opacity 0.5s, z-index 0.5s ease 0.5s;
}
[data-bgset]::after {
  position: absolute;
  top: calc(50% - 1.5625rem);
  left: calc(50% - 1.5625rem);
  z-index: 3;
  width: 3.125rem;
  height: 3.125rem;
  content: "";
  border: 0.3125rem solid #fff;
  border-top-color: transparent;
  border-radius: 3.125rem;
  opacity: 1;
  -webkit-transition: opacity 0.5s, z-index 0.5s ease 0.5s;
  transition: opacity 0.5s, z-index 0.5s ease 0.5s;
  -webkit-transform: translateX(-50%) translateY(-50%);
          transform: translateX(-50%) translateY(-50%);
  -webkit-animation: loading 0.5s linear infinite;
          animation: loading 0.5s linear infinite;
}
[data-bgset].lazyload {
  opacity: 1;
  -webkit-transition: opacity 0.5s;
  transition: opacity 0.5s;
}
[data-bgset].lazyloaded::after, [data-bgset].lazyloaded::before {
  z-index: -1;
  opacity: 0;
}
@-webkit-keyframes loading {
  0% {
    -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
  }
}
@keyframes loading {
  0% {
    -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
  }
}
[data-seo-container] {
  position: relative;
  z-index: 1;
  cursor: pointer;
}
[data-seo-container] [data-seo-target]::before {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 100;
  content: "";
}
.video-wrapper {
  position: relative;
  height: 0;
  padding-top: 1.5625rem;
  padding-bottom: 56.25%; /* 16:9 */
  line-height: 0;
}
.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
.has-primary-color {
  color: #c6472b;
}
.has-primary-background-color {
  background-color: #c6472b;
}
.has-secondary-color {
  color: #e1a397;
}
.has-secondary-background-color {
  background-color: #e1a397;
}
.has-dark-color {
  color: #333;
}
.has-dark-background-color {
  background-color: #333;
}
.has-light-color {
  color: #fff;
}
.has-light-background-color {
  background-color: #fff;
}
.has-light-grey-color {
  color: #ebebeb;
}
.has-light-grey-background-color {
  background-color: #ebebeb;
}
.has-medium-grey-color {
  color: #999;
}
.has-medium-grey-background-color {
  background-color: #999;
}
/* Main Layout */
.container, .blocks-container > .has-background > *, .blocks-container > *:not(.has-background) {
  width: 90rem;
  max-width: calc(100% - 3.125rem);
  padding: 0;
  margin-right: auto;
  margin-left: auto;
}
.sr-only {
  width: 0.0625rem !important;
  height: 0.0625rem !important;
  padding: 0 !important;
  margin: -0.0625rem !important;
  overflow: hidden !important;
  clip: rect(0.0625rem, 0.0625rem, 0.0625rem, 0.0625rem) !important;
  -webkit-clip-path: inset(50%) !important;
          clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.sr-only {
  position: absolute; /* 1 */ /* 2 */ /* 3 */
}
.sr-only-focusable {
  width: 0.0625rem !important;
  height: 0.0625rem !important;
  padding: 0 !important;
  margin: -0.0625rem !important;
  overflow: hidden !important;
  clip: rect(0.0625rem, 0.0625rem, 0.0625rem, 0.0625rem) !important;
  -webkit-clip-path: inset(50%) !important;
          clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.sr-only-focusable {
  position: absolute; /* 1 */ /* 2 */ /* 3 */
}
.sr-only-focusable:focus, .sr-only-focusable:active {
  width: auto !important;
  height: auto !important;
  margin: auto !important;
  overflow: visible !important;
  clip: auto !important;
  -webkit-clip-path: none !important;
          clip-path: none !important;
  white-space: normal !important;
}
div#cmplz-manage-consent {
  display: none;
}
/**
 * Components
 * == Contain any default component. Just give the components some basic styles.
 */
/**
 * Elements folder entry file
 */
.wp-block-button.is-style-fill .wp-block-button__link, .button, .header__menu-toggle, .wp-block-button.is-style-text .wp-block-button__link, .button-text, .wp-block-button.is-style-text-colored .wp-block-button__link, .button-text-colored, .wp-block-search__button, .wp-block-file .wp-block-file__button, .wp-block-button:not(.is-style-text-arrow) .wp-block-button__link, .button-block, .button-reverse-outline, .wp-block-button.is-style-reverse .wp-block-button__link, .wp-block-button.is-style-outline .wp-block-button__link, .button-outline, input[type=reset], .button-block-arrow, input[type=submit] {
  display: inline;
  padding: 0;
  font-family: GeneralSans-Variable, sans-serif;
  color: inherit;
  text-decoration: none;
  vertical-align: middle;
  cursor: pointer;
  background-color: transparent;
  border: none;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}
.wp-block-search__button, .wp-block-file .wp-block-file__button, .wp-block-button:not(.is-style-text-arrow) .wp-block-button__link, .button-block, .button-reverse-outline, .wp-block-button.is-style-reverse .wp-block-button__link, .wp-block-button.is-style-outline .wp-block-button__link, .button-outline, input[type=reset], .button-block-arrow, input[type=submit] {
  --color-text: #333;
  --color-text-hover: #fff;
  --color-background: #fff;
  --color-background-hover: #333;
  --color-border: #333;
  position: relative;
  z-index: 1;
  display: inline-block;
  padding: 0.5rem 1.5rem;
  overflow: hidden;
  font-size: 1.125rem;
  font-weight: 500;
  line-height: 1.5625rem;
  color: var(--color-text);
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: -webkit-gradient(linear, left top, left bottom, from(var(--color-background-hover)), color-stop(50%, var(--color-background-hover)), color-stop(50%, var(--color-background)), to(var(--color-background)));
  background: linear-gradient(180deg, var(--color-background-hover) 0%, var(--color-background-hover) 50%, var(--color-background) 50%, var(--color-background) 100%);
  background-repeat: no-repeat;
  background-position: 0 -200%;
  background-size: 100% 200%;
  border: 0.0625rem solid;
  border-color: var(--color-border);
  border-bottom: 0.25rem solid;
  border-bottom-color: var(--color-border);
  border-radius: 0;
  -webkit-transition: background-position 0.4s cubic-bezier(0.19, 1, 0.22, 1), color 0.4s;
  transition: background-position 0.4s cubic-bezier(0.19, 1, 0.22, 1), color 0.4s;
}
.wp-block-search__button:hover, .wp-block-file .wp-block-file__button:hover, .wp-block-button:not(.is-style-text-arrow) .wp-block-button__link:hover, .button-block:hover, .button-reverse-outline:hover, .wp-block-button.is-style-reverse .wp-block-button__link:hover, .wp-block-button.is-style-outline .wp-block-button__link:hover, .button-outline:hover, input[type=reset]:hover, .button-block-arrow:hover, input[type=submit]:hover, .wp-block-search__button:active, .wp-block-file .wp-block-file__button:active, .wp-block-button:not(.is-style-text-arrow) .wp-block-button__link:active, .button-block:active, .button-reverse-outline:active, .wp-block-button.is-style-reverse .wp-block-button__link:active, .wp-block-button.is-style-outline .wp-block-button__link:active, .button-outline:active, input[type=reset]:active, .button-block-arrow:active, input[type=submit]:active, .wp-block-search__button:focus, .wp-block-file .wp-block-file__button:focus, .wp-block-button:not(.is-style-text-arrow) .wp-block-button__link:focus, .button-block:focus, .button-reverse-outline:focus, .wp-block-button.is-style-reverse .wp-block-button__link:focus, .wp-block-button.is-style-outline .wp-block-button__link:focus, .button-outline:focus, input[type=reset]:focus, .button-block-arrow:focus, input[type=submit]:focus {
  color: var(--color-text-hover);
  background-position: 0 0%;
  opacity: 1;
}
.button-block-arrow::after {
  display: inline-block;
  width: 1rem;
  height: 1.125rem;
  margin-left: 0.625rem;
  content: "";
  background: transparent url(assets/74113577f21eba76f1ca.svg) right center no-repeat;
  background-size: auto 100%;
  -webkit-transform: translate3d(0, 0.25rem, 0);
          transform: translate3d(0, 0.25rem, 0);
}
.button-block-arrow:hover::before, .button-block-arrow:active::before, .button-block-arrow:focus::before {
  background: transparent url(assets/74113577f21eba76f1ca.svg) right center no-repeat;
}
.wp-block-button.is-style-outline .wp-block-button__link, .button-outline, input[type=reset] {
  --color-background: transparent;
}
.wp-block-button.is-style-reverse .wp-block-button__link {
  --color-text: #c6472b;
  --color-text-hover: #fff;
  --color-background: #fff;
  --color-background-hover: #c6472b;
  --color-border: #c6472b;
}
.button-reverse-outline {
  --color-text: #c6472b;
  --color-text-hover: #fff;
  --color-background: transparent;
  --color-background-hover: #c6472b;
  --color-border: #c6472b;
}
.header__menu-toggle, .wp-block-button.is-style-text .wp-block-button__link, .button-text, .wp-block-button.is-style-text-colored .wp-block-button__link, .button-text-colored {
  --color-text: #333;
  z-index: 1;
  display: inline-block;
  font-size: 1.125rem;
  font-weight: 500;
  line-height: 1.5625rem;
  color: var(--color-text);
  text-align: left;
  text-decoration: underline;
  text-decoration-thickness: 0.25rem;
  text-underline-offset: 0.5rem;
  background-color: transparent;
  border: none;
  -webkit-transition: font-weight 0.3s;
  transition: font-weight 0.3s;
}
.header__menu-toggle:hover, .wp-block-button.is-style-text .wp-block-button__link:hover, .button-text:hover, .wp-block-button.is-style-text-colored .wp-block-button__link:hover, .button-text-colored:hover, .header__menu-toggle:active, .wp-block-button.is-style-text .wp-block-button__link:active, .button-text:active, .wp-block-button.is-style-text-colored .wp-block-button__link:active, .button-text-colored:active, .header__menu-toggle:focus, .wp-block-button.is-style-text .wp-block-button__link:focus, .button-text:focus, .wp-block-button.is-style-text-colored .wp-block-button__link:focus, .button-text-colored:focus {
  font-weight: 700;
  text-decoration: underline;
  text-decoration-thickness: 0.25rem;
  text-underline-offset: 0.5rem;
}
.wp-block-button.is-style-text-colored .wp-block-button__link, .button-text-colored {
  --color-text: #c6472b;
}
.buttons-container {
  container-type: inline-size;
  container-name: buttons-wrap;
}
@container buttons-wrap (max-width: 479px) {
  .buttons-wrap .button {
    width: 100%;
    margin-bottom: 0.9375rem;
    margin-bottom: var(--spacing--block-2);
    text-align: center;
  }
  .buttons-wrap .button-text {
    margin-bottom: calc(0.9375rem * 2);
    margin-bottom: calc(var(--spacing--block-2) * 2);
  }
}
@container buttons-wrap (min-width: 480px) and (max-width: 767px) {
  .buttons-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: baseline;
        -ms-flex-align: baseline;
            align-items: baseline;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 2em;
  }
  .buttons-wrap .button {
    margin-bottom: 0.9375rem;
    margin-bottom: var(--spacing--block-2);
    -ms-flex-preferred-size: calc(50% - 1em);
        flex-basis: calc(50% - 1em);
  }
  .buttons-wrap .button-text {
    margin-bottom: calc(0.9375rem * 2);
    margin-bottom: calc(var(--spacing--block-2) * 2);
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
  }
}
@container buttons-wrap (min-width: 768px) {
  .buttons-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: baseline;
        -ms-flex-align: baseline;
            align-items: baseline;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: end;
    margin-right: -0.78125rem;
    margin-left: -0.78125rem;
  }
  .buttons-wrap .button {
    margin-right: 0.78125rem;
    margin-left: 0.78125rem;
  }
  body:not(.single) .buttons-wrap .button:first-child {
    margin-right: auto;
  }
}
.info-table {
  font-family: GeneralSans-Variable, sans-serif;
}
.info-table__row {
  padding-top: 0.625rem;
  padding-top: var(--spacing--block-1);
  padding-bottom: 0.625rem;
  padding-bottom: var(--spacing--block-1);
  border-bottom: 0.0625rem solid #999;
}
.info-table__label {
  margin-bottom: 0.5em;
  font-weight: 500;
}
.codebooks h2 {
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-2);
}
.codebooks__row {
  padding-top: 0.9375rem;
  padding-top: var(--spacing--block-2);
  border-top: 0.0625rem solid #333;
}
.codebooks__row:first-of-type {
  margin-top: 0.9375rem;
  margin-top: var(--spacing--block-3);
}
.codebooks__label {
  margin-bottom: 0.5em;
  font-family: GeneralSans-Variable, sans-serif;
  font-size: var();
  font-weight: 500;
}
/**
 * Blocks
 * == Gutenberg core blocks styles, style for front-end layout and editor.
 */
.has-drop-cap:not(:focus)::first-letter {
  float: left;
  margin: 0.1em 0.1em 0 0;
  font-family: var(Zodiak-Variable, serif);
  font-size: calc(1.2 * 2.25rem);
  font-size: calc(1.2 * var(--heading--font-size-h1));
  font-style: normal;
  font-weight: var(--heading--font-weight);
  line-height: 0.66;
  text-transform: uppercase;
}
.blocks-container > :where(*) {
  margin-right: auto;
  margin-left: auto;
}
.blocks-container .alignfull {
  max-width: 100%;
  max-width: var(--responsive--alignfull-width);
}
.blocks-container .alignleft {
  float: left;
  margin-right: 0.625rem;
  margin-right: var(--spacing--block-1);
}
.blocks-container .alignright {
  float: right;
  margin-left: 0.625rem;
  margin-left: var(--spacing--block-1);
}
.blocks-container .aligncenter {
  display: block;
  margin-right: auto;
  margin-left: auto;
  clear: both;
}
.blocks-container .alignleft,
.blocks-container .alignright,
.blocks-container .aligncenter {
  margin-bottom: 0.625rem;
  margin-bottom: var(--spacing--block-1);
}
.blocks-container > *,
.blocks-container [class*=inner-container] > * {
  /* Reset alignleft and alignright margins after alignfull */
}
.blocks-container > *:first-child,
.blocks-container [class*=inner-container] > *:first-child {
  margin-top: 0;
}
.blocks-container > *.alignleft, .blocks-container > *.alignright, .blocks-container > *.alignleft:first-child + *, .blocks-container > *.alignright:first-child + *, .blocks-container > *.alignfull.has-background,
.blocks-container [class*=inner-container] > *.alignleft,
.blocks-container [class*=inner-container] > *.alignright,
.blocks-container [class*=inner-container] > *.alignleft:first-child + *,
.blocks-container [class*=inner-container] > *.alignright:first-child + *,
.blocks-container [class*=inner-container] > *.alignfull.has-background {
  margin-top: 0;
}
.blocks-container > *.alignfull.has-background,
.blocks-container [class*=inner-container] > *.alignfull.has-background {
  padding-top: 0.9375rem;
  padding-top: var(--spacing--block-3);
  padding-right: 0;
  padding-bottom: 0.9375rem;
  padding-bottom: var(--spacing--block-3);
  padding-left: 0;
}
.blocks-container > *.alignfull + .alignleft, .blocks-container > *.alignfull + .alignright,
.blocks-container [class*=inner-container] > *.alignfull + .alignleft,
.blocks-container [class*=inner-container] > *.alignfull + .alignright {
  margin-top: 0.625rem;
  margin-top: var(--spacing--block-1);
}
.blocks-container > *:not(p) {
  margin-bottom: 3.75rem;
  margin-bottom: var(--spacing--block-5);
}
.blocks-container > *:not(p).wp-block-heading {
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-3);
}
.blocks-container p {
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-3);
}
.blocks-container [class*=inner-container] > *:not(.no-margin-bottom) {
  margin-bottom: 0.625rem;
  margin-bottom: var(--spacing--block-1);
}
.blocks-container :where(.wp-block-group.has-background) {
  padding: 0;
}
.has-background .wp-block-image figure {
  margin-bottom: 0;
}
.wp-block-columns {
  margin-bottom: 0 !important;
}
.wp-block-column > * {
  margin-bottom: 0.625rem;
  margin-bottom: var(--spacing--block-1);
}
.wp-block-audio audio::-webkit-media-controls-panel {
  background-color: #c6472b;
}
.wp-block-audio audio:focus {
  outline: 0.125rem solid #c6472b;
  outline-offset: 0.3125rem;
}
.wp-block-button.has-custom-font-size .wp-block-button__link {
  font-size: inherit;
}
.wp-block-cover:not(.alignwide):not(.alignfull),
.wp-block-cover-image:not(.alignwide):not(.alignfull) {
  clear: both;
}
.wp-block-cover.alignfull,
.wp-block-cover-image.alignfull {
  margin-top: 0;
  margin-bottom: 0;
}
.wp-block-group {
  display: flow-root;
}
h1,
.is-style-h1 {
  font-family: GeneralSans-Variable, sans-serif;
  font-weight: 400;
  font-size: 2.25rem;
  font-size: var(--heading--font-size-h1);
  line-height: 1.3;
  line-height: var(--heading--line-height-h1);
  color: #c6472b;
}
.has-h-1-font-size {
  font-size: var(--font-size-hi);
}
h2,
.is-style-h2 {
  font-family: GeneralSans-Variable, sans-serif;
  font-weight: 400;
  font-size: 1.5rem;
  font-size: var(--heading--font-size-h2);
  line-height: 1.3;
  line-height: var(--heading--line-height-h2);
}
.has-h-2-font-size {
  font-size: var(--font-size-hi);
}
h3,
.is-style-h3 {
  font-family: GeneralSans-Variable, sans-serif;
  font-weight: 400;
  font-size: 1.25rem;
  font-size: var(--heading--font-size-h3);
  line-height: 1.3;
  line-height: var(--heading--line-height-h3);
}
.has-h-3-font-size {
  font-size: var(--font-size-hi);
}
h4,
.is-style-h4 {
  font-family: GeneralSans-Variable, sans-serif;
  font-weight: 400;
  font-size: 1.25rem;
  font-size: var(--heading--font-size-h4);
  line-height: 1.3;
  line-height: var(--heading--line-height-h4);
}
.has-h-4-font-size {
  font-size: var(--font-size-hi);
}
h5,
.is-style-h5 {
  font-family: GeneralSans-Variable, sans-serif;
  font-weight: 400;
  font-size: 1.25rem;
  font-size: var(--heading--font-size-h5);
  line-height: 1.3;
  line-height: var(--heading--line-height-h5);
}
.has-h-5-font-size {
  font-size: var(--font-size-hi);
}
h6,
.is-style-h6 {
  font-family: GeneralSans-Variable, sans-serif;
  font-weight: 400;
  font-size: 1.25rem;
  font-size: var(--heading--font-size-h6);
  line-height: 1.3;
  line-height: var(--heading--line-height-h6);
}
.has-h-6-font-size {
  font-size: var(--font-size-hi);
}
.wp-block-image > img {
  max-width: 100%;
  height: auto;
}
figcaption {
  font-size: 0.875rem !important;
  color: #777 !important;
  display: block !important;
  text-align: left !important;
  font-family: GeneralSans-Variable, sans-serif !important;
}
.blocks-container ul.aligncenter,
.blocks-container ol.aligncenter {
  padding: 0;
  list-style-position: inside;
}
.blocks-container ul.alignright,
.blocks-container ol.alignright {
  padding: 0;
  text-align: right;
  list-style-position: inside;
}
.blocks-container ul:not([class*=is-style-]):not(.no-list-style) {
  list-style-type: disc;
}
.blocks-container ul:not([class*=is-style-]):not(.no-list-style) li::marker {
  color: #c6472b;
}
.blocks-container ol:not([class*=is-style-]) {
  list-style-type: decimal;
}
.blocks-container ol:not([class*=is-style-])::marker {
  color: #c6472b;
}
.blocks-container dd {
  margin: 0;
}
.wp-block-media-text.alignfull {
  margin-top: 0;
  margin-bottom: 0;
}
.blocks-container p {
  font-size: 1rem;
  font-size: var(--font-size-normal);
  line-height: 1.3;
}
.blocks-container p.has-background {
  padding: 1.25rem;
}
.blocks-container p.is-style-big {
  font-family: GeneralSans-Variable, sans-serif;
  font-size: 1.5rem;
  font-size: var(--font-size-big);
}
.wp-block-preformatted {
  overflow-x: auto;
  white-space: pre;
}
hr {
  margin-right: auto;
  margin-left: auto;
  clear: both;
  border-style: none;
}
.wp-block-search .wp-block-search__input {
  width: auto;
}
table,
.wp-block-table {
  width: 100%;
  min-width: 15rem;
  border-collapse: collapse;
}
.wp-block-video figcaption {
  text-align: center;
}
* > figure > video {
  width: 100%;
  max-width: none;
  max-width: initial;
  vertical-align: middle;
}
.mosne-card__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-column-gap: 1.5625rem;
  grid-column-gap: 1.5625rem;
  -webkit-column-gap: 1.5625rem;
     -moz-column-gap: 1.5625rem;
          column-gap: 1.5625rem;
}
.mosne-card__grid[data-grid="1"] {
  grid-template-columns: 100%;
}
.mosne-card__grid[data-grid="2"] {
  grid-template-columns: 100%;
}
.mosne-card__grid[data-grid="3"] {
  grid-template-columns: 100%;
}
.mosne-card__grid[data-grid="4"] {
  grid-template-columns: 1fr 1fr;
}
.mosne-card__grid[data-grid="5"] {
  grid-template-columns: 1fr 1fr;
}
.mosne-card__grid[data-grid="6"] {
  grid-template-columns: 1fr 1fr;
}
.mosne-card__footer {
  margin-top: 1.875rem;
  margin-top: var(--spacing--block-4);
}
.loop--post {
  padding: 0.9375rem 0;
  padding: var(--spacing--block-3) 0;
  border-top: 0.0625rem solid;
}
.loop--post .loop__date {
  margin-bottom: 1em;
  font-family: GeneralSans-Variable, sans-serif;
}
.loop--post a {
  text-decoration: none;
  -webkit-transition: font-weight 0.3s;
  transition: font-weight 0.3s;
}
.loop--post a:hover {
  font-weight: 600;
}
.loop--dataset {
  margin-top: 1.875rem;
  margin-top: var(--spacing--block-4);
}
.loop--dataset__title {
  padding-bottom: 0.9375rem;
  padding-bottom: var(--spacing--block-2);
  font-size: 2.25rem;
  font-size: var(--heading--font-size-h1);
  color: #c6472b;
  border-bottom: 0.0625rem solid;
}
.loop--dataset__info {
  margin-top: 0.9375rem;
  margin-top: var(--spacing--block-2);
}
.loop--dataset__buttons {
  margin-top: 0.9375rem;
  margin-top: var(--spacing--block-3);
}
.loop--publication {
  padding-top: 0.9375rem;
  padding-top: var(--spacing--block-2);
  margin-top: 1.875rem;
  margin-top: var(--spacing--block-4);
  border-top: 0.0625rem solid;
}
.loop--publication__date {
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-2);
  font-family: GeneralSans-Variable, sans-serif;
  font-size: 0.875rem;
  font-size: var(--font-size-small);
  font-weight: 600;
}
.loop--publication__author {
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-2);
  font-family: GeneralSans-Variable, sans-serif;
  font-size: 0.875rem;
  font-size: var(--font-size-small);
}
.loop--publication__title {
  margin-bottom: 0.625rem;
  margin-bottom: var(--spacing--block-1);
  font-size: 2.25rem;
  font-size: var(--heading--font-size-h1);
  color: #c6472b;
}
.loop--publication__subtitle {
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-3);
  font-family: GeneralSans-Variable, sans-serif;
  font-size: 1.25rem;
  font-size: var(--font-size-large);
}
.loop--publication__description {
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-3);
}
.loop--publication__buttons {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: end;
      -ms-flex-align: end;
          align-items: flex-end;
}
.loop--publication__buttons .button {
  margin-right: 1.5625rem;
}
.loop--publication__buttons .button-text-colored {
  margin-bottom: 0.33333em;
}
.team__cat {
  grid-column: span 2;
  margin-top: 0.9375rem;
  margin-top: var(--spacing--block-3);
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-3);
}
.team__member {
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-3);
}
.team__img {
  position: relative;
  display: block;
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-2);
}
.team__img::before {
  display: block;
  width: 100%;
  height: 0;
  padding-bottom: 100%;
  content: "";
}
.team__img img {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
  -o-object-fit: cover;
     object-fit: cover;
  font-family: "object-fit: cover";
}
.team__title {
  font-family: Zodiak-Variable, serif;
  font-weight: 600;
}
.team__title a {
  text-decoration: none;
}
.team__charge {
  font-family: GeneralSans-Variable, sans-serif;
}
/**
 * Patterns
 * == Contains styles for site patterns such as header, footer or menu.
 */
/**
 * Header
 */
.header {
  height: 4.75rem;
}
.header__inner {
  position: fixed;
  top: 0;
  z-index: 10000;
  width: 100%;
  padding-top: 1.625rem;
  padding-bottom: 1.75rem;
  background: transparent;
}
.header__logo-link {
  position: relative;
  z-index: 20;
  display: block;
  width: 7.75rem;
  margin-left: 1.5625rem;
}
.header__logo-link svg {
  max-width: 100%;
  height: auto;
  fill: #c6472b;
  -webkit-transition: fill 0.3s;
  transition: fill 0.3s;
}
.header__logo-link:hover svg {
  fill: #e1a397;
}
.header__menu-toggle {
  position: absolute;
  top: 0.875rem;
  right: 1.5625rem;
  z-index: 20;
  padding: 0;
  cursor: pointer;
}
.header__menu-toggle:hover {
  font-weight: 500;
}
.header__menu-list {
  margin: 0;
  font-family: GeneralSans-Variable, sans-serif;
  font-size: 1.25rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  list-style: none;
}
.header__menu-list li + li {
  margin-top: 1.375rem;
}
.header__menu-list a {
  color: inherit;
  text-decoration: none;
  word-break: break-word;
  -webkit-transition: font-weight 0.3s;
  transition: font-weight 0.3s;
}
.header__menu-list a:hover {
  font-weight: 700;
}
.header__menu-list .current-menu-item {
  color: #e1a397;
}
.header__menu-list .menu-item-has-children {
  position: relative;
}
.header__menu-list .menu-item-has-children > a {
  display: inline-block;
  max-width: calc(100% - 3.125rem);
}
.header__menu-list .has-sub-menu-open > .header__sub-menu-toggle .icon {
  -webkit-transform: rotate(180deg);
          transform: rotate(180deg);
}
.header__sub-menu-toggle {
  position: absolute;
  top: 0.4375rem;
  right: -1.125rem;
  z-index: 1;
  width: 3.125rem;
  height: 3.125rem;
  padding: 0;
  color: #333;
  vertical-align: middle;
  cursor: pointer;
  background: none;
  border: none;
}
.header__sub-menu-toggle .icon {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0.625rem;
  height: 0.375rem;
  margin: -0.1875rem 0 0 -0.3125rem;
  fill: currentColor;
  -webkit-transition: fill 0.25s, -webkit-transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);
  transition: fill 0.25s, -webkit-transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);
  transition: fill 0.25s, transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);
  transition: fill 0.25s, transform 0.5s cubic-bezier(0.19, 1, 0.22, 1), -webkit-transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);
}
.header__sub-menu-level-0, .header__sub-menu-level-1, .header__sub-menu-level-2 {
  display: none;
  overflow: hidden;
}
.header__sub-menu .header__sub-menu-toggle {
  top: -0.9375rem;
}
.header--menu-is-open .header__menu-toggle > span {
  background: rgba(255, 255, 255, 0);
}
.header--menu-is-open .header__menu-toggle > span::before {
  -webkit-transform: rotate(135deg);
          transform: rotate(135deg);
}
.header--menu-is-open .header__menu-toggle > span::after {
  -webkit-transform: rotate(-135deg);
          transform: rotate(-135deg);
}
.admin-bar .header__inner {
  top: 2.875rem;
}
.scroll-up .header__inner, .scroll-down .header__inner, .scroll-bottom .header__inner {
  top: 0;
}
/**
 * Footer
 */
.footer {
  font-family: GeneralSans-Variable, sans-serif;
  font-size: 0.875rem;
  font-size: var(--font-size-small);
  position: relative;
  z-index: 10001;
}
.footer__logo svg {
  fill: #333;
}
.footer h3 {
  margin-bottom: 1em;
  font-size: 1.125rem;
  font-size: var(--font-size-medium);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.1em;
}
.footer a {
  text-decoration: none;
}
.footer a:hover {
  text-decoration: underline;
}
.footer__text {
  font-size: 0.875rem;
}
.footer .legal__menu {
  margin-bottom: 1em;
}
.footer .legal__menu-list {
  font-size: 0.875rem;
  list-style: none;
}
.footer .credits {
  font-size: 0.875rem;
}
.footer__section {
  padding: 1.5625rem;
}
.footer__section:nth-child(1) {
  background-color: #ebebeb;
}
.footer__section:nth-child(3) {
  background-color: #c6472b;
}
.footer__content a {
  color: #c6472b;
}
.footer__text {
  max-width: 30ch;
}
.footer .contact-email {
  display: block;
  margin-top: 1em;
}
.footer__funders {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  gap: 1.5625rem;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  width: 100%;
}
.footer__funder {
  max-width: 6.25rem;
}
/**
 * Hero
 */
.hero {
  position: relative;
  left: 50%;
  z-index: 1;
  width: 100vw;
  margin-left: -50vw;
  padding: 0.625rem 0;
  padding: var(--spacing--block-1) 0;
  margin-bottom: 0.625rem;
  margin-bottom: var(--spacing--block-1);
}
.hero .container, .hero .blocks-container > *:not(.has-background), .hero .blocks-container > .has-background > * {
  position: relative;
  z-index: 4;
  padding: 1.25rem;
  background: rgba(255, 255, 255, 0.5);
}
.hero__img {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
}
/**
 * Searchform
 */
.searchform {
  position: relative;
}
.searchform__field[type=search] {
  padding-right: 0.625rem;
  padding-right: var(--spacing--block-1);
}
.searchform__submit {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
}
.searchform__submit .icon {
  vertical-align: -15%;
}
.skip-links {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 10;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  padding: 0.5rem 1rem;
  color: #333;
  background-color: #c6472b;
  -webkit-transition: -webkit-transform 0.3s ease-in-out;
  transition: -webkit-transform 0.3s ease-in-out;
  transition: transform 0.3s ease-in-out;
  transition: transform 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;
  -webkit-transform: translate3d(0, -100%, 0);
          transform: translate3d(0, -100%, 0);
}
.skip-links[focus-within] {
  -webkit-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0);
}
.skip-links:focus-within {
  -webkit-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0);
}
.skip-links li:not(:last-of-type) {
  margin-right: 1rem;
}
/**
 * Vendor
 * == Plugins or libraries custom styles.
 */
/**
 * Pages
 * == If you want to add custom styles for specifics page templates.
 */
/* 404 Page
-------------------------------------------------------------- */
/* Home Page
-------------------------------------------------------------- */
/* Single Dataset
-------------------------------------------------------------- */
.single-dataset section {
  margin-top: 3.75rem;
  margin-top: var(--spacing--block-5);
}
.single-dataset [class^=wp-block] h2 {
  margin-bottom: 0.9375rem;
  margin-bottom: var(--spacing--block-2);
}
.single-dataset .data-visualization__graph {
  margin-top: 0.9375rem;
  margin-top: var(--spacing--block-2);
}
/* Default Page
-------------------------------------------------------------- */
/* Default Page
-------------------------------------------------------------- */
#cmplz-document {
  max-width: 100%;
}
#cmplz-document p,
#cmplz-document li,
#cmplz-document td {
  font-size: 1rem;
  font-size: var(--font-size-normal);
}
@media screen and (min-width: 48.875em){
  :root {
    --heading--font-size-h1: 2.625rem;
    --heading--font-size-h2: 2.25rem;
  }
  :root {
    --font-size-small: 1rem;
    --font-size-normal: 1.125rem;
    --font-size-medium: 1.25rem;
    --font-size-large: 1.5rem;
    --font-size-big: 2rem;
  }
  :root {
    --spacing--block-3: 1.875rem;
    --spacing--block-4: 3.75rem;
    --spacing--block-5: 7.5rem;
    --spacing--block-6: 15rem;
  }
  .info-table__row {
    display: grid;
    grid-template-columns: 1fr 3fr;
    grid-column-gap: 1.5625rem;
    grid-column-gap: 1.5625rem;
    -webkit-column-gap: 1.5625rem;
       -moz-column-gap: 1.5625rem;
            column-gap: 1.5625rem;
    padding-top: 0.9375rem;
    padding-top: var(--spacing--block-2);
    padding-bottom: 0.9375rem;
    padding-bottom: var(--spacing--block-2);
  }
  .info-table__label {
    margin: 0;
  }
  .data-visualization .button {
    margin-left: auto;
  }
  .codebooks__row {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    gap: 1.5625rem;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    padding-bottom: 0.9375rem;
    padding-bottom: var(--spacing--block-2);
  }
  .codebooks__label {
    margin: 0;
  }
  .wp-block-column > *:last-child {
    margin-bottom: 0;
  }
  .wp-block-columns {
    --wp--style--block-gap: 1.875rem;
  }
  .mosne-card__grid[data-grid="1"] {
    grid-template-columns: repeat(1, 1fr);
  }
  .mosne-card__grid[data-grid="2"] {
    grid-template-columns: repeat(2, 1fr);
  }
  .mosne-card__grid[data-grid="3"] {
    grid-template-columns: repeat(3, 1fr);
  }
  .mosne-card__grid[data-grid="4"] {
    grid-template-columns: repeat(4, 1fr);
  }
  .mosne-card__grid[data-grid="5"] {
    grid-template-columns: repeat(5, 1fr);
  }
  .mosne-card__grid[data-grid="6"] {
    grid-template-columns: repeat(6, 1fr);
  }
  .loop--post {
    display: grid;
    grid-template-columns: 1fr 3fr;
    grid-column-gap: 1.5625rem;
    grid-column-gap: 1.5625rem;
    -webkit-column-gap: 1.5625rem;
       -moz-column-gap: 1.5625rem;
            column-gap: 1.5625rem;
  }
  .team__cat {
    grid-column: span 4;
  }
  .footer {
    display: grid;
    grid-template-columns: 19.0625rem 1fr;
  }
  .footer__content {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    gap: 1.5625rem;
  }
  .footer__section:nth-child(1) {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
  }
  .footer__section:nth-child(1) .footer__col {
    -ms-flex-preferred-size: 50%;
        flex-basis: 50%;
  }
  .footer__section:nth-child(2) {
    -webkit-box-ordinal-group: 4;
        -ms-flex-order: 3;
            order: 3;
  }
  .footer__section:nth-child(2) .footer__col {
    -ms-flex-preferred-size: 25%;
        flex-basis: 25%;
  }
  .footer__section:nth-child(3) {
    display: grid;
    grid-row: span 2;
    -ms-flex-line-pack: justify;
        align-content: space-between;
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
  }
  .footer__col {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-line-pack: justify;
        align-content: space-between;
  }
  .footer__update-date {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
  }
  .footer__funders {
    -ms-flex-preferred-size: 75%;
        flex-basis: 75%;
    gap: 3.125rem;
  }
}
@media screen and (min-width: 48.875em) and (max-width: 63.9375em){
  .wp-block-columns.is-style-grid-3, .wp-block-columns.is-style-grid-4 {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
  .wp-block-columns.is-style-grid-3 > .wp-block-column, .wp-block-columns.is-style-grid-4 > .wp-block-column {
    -ms-flex-preferred-size: calc(50% - var(--wp--style--block-gap));
        flex-basis: calc(50% - var(--wp--style--block-gap));
    -webkit-box-flex: 0;
        -ms-flex-positive: 0;
            flex-grow: 0;
  }
  .wp-block-columns.is-style-grid-3 > .wp-block-column:nth-child(2n+1), .wp-block-columns.is-style-grid-4 > .wp-block-column:nth-child(2n+1) {
    margin-left: 0;
  }
  .wp-block-columns.is-style-grid-3, .wp-block-columns.is-style-grid-4 {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
  .wp-block-columns.is-style-grid-3 > .wp-block-column, .wp-block-columns.is-style-grid-4 > .wp-block-column {
    -ms-flex-preferred-size: calc(50% - 2em);
        flex-basis: calc(50% - 2em);
    -ms-flex-preferred-size: calc(50% - var(--wp--style--block-gap, 2em));
        flex-basis: calc(50% - var(--wp--style--block-gap, 2em));
    -webkit-box-flex: 0;
        -ms-flex-positive: 0;
            flex-grow: 0;
  }
  .wp-block-columns.is-style-grid-3 > .wp-block-column:nth-child(2n+1), .wp-block-columns.is-style-grid-4 > .wp-block-column:nth-child(2n+1) {
    margin-left: 0;
  }
  .header .header__menu {
    width: 48.275862069%;
    -webkit-transform: translateX(-100%);
            transform: translateX(-100%);
  }
}
@media screen and (min-width: 810px){
  :root {
    --responsive--aligndefault-width: 47.5rem;
  }
}
@media screen and (min-width: 64em){
  .container.blocks-container, .blocks-container > .has-background > .blocks-container, .blocks-container > .blocks-container:not(.has-background), .container.container--content, .blocks-container > .has-background > .container--content, .blocks-container > .container--content:not(.has-background) {
    padding-left: 17.5rem;
  }
  .blocks-container > *:not(.has-background) {
    padding-left: 17.5rem;
  }
  .blocks-container > .has-background > * {
    padding-left: 17.5rem;
  }
  .blocks-container > .has-background {
    margin-top: -4.75rem !important;
  }
  .wp-block-columns.is-style-grid-3 {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
  .wp-block-columns.is-style-grid-3 > .wp-block-column {
    -ms-flex-preferred-size: calc(33.33% - 0.667 * var(--wp--style--block-gap));
        flex-basis: calc(33.33% - 0.667 * var(--wp--style--block-gap));
    -webkit-box-flex: 0;
        -ms-flex-positive: 0;
            flex-grow: 0;
  }
  .wp-block-columns.is-style-grid-3 > .wp-block-column:nth-child(3n+1) {
    margin-left: 0;
  }
  .wp-block-columns.is-style-grid-4 {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
  .wp-block-columns.is-style-grid-4 > .wp-block-column {
    -ms-flex-preferred-size: calc(25% - 0.75 * var(--wp--style--block-gap));
        flex-basis: calc(25% - 0.75 * var(--wp--style--block-gap));
    -webkit-box-flex: 0;
        -ms-flex-positive: 0;
            flex-grow: 0;
  }
  .wp-block-columns.is-style-grid-4 > .wp-block-column:nth-child(4n+1) {
    margin-left: 0;
  }
  .wp-block-columns.is-style-grid-3 {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
  .wp-block-columns.is-style-grid-3 > .wp-block-column {
    -ms-flex-preferred-size: calc(33.33% - 2em);
        flex-basis: calc(33.33% - 2em);
    -ms-flex-preferred-size: calc(33.33% - var(--wp--style--block-gap, 2em));
        flex-basis: calc(33.33% - var(--wp--style--block-gap, 2em));
    -webkit-box-flex: 0;
        -ms-flex-positive: 0;
            flex-grow: 0;
  }
  .wp-block-columns.is-style-grid-3 > .wp-block-column:nth-child(3n+1) {
    margin-left: 0;
  }
  .wp-block-columns.is-style-grid-4 {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
  .wp-block-columns.is-style-grid-4 > .wp-block-column {
    -ms-flex-preferred-size: calc(25% - 2em);
        flex-basis: calc(25% - 2em);
    -ms-flex-preferred-size: calc(25% - var(--wp--style--block-gap, 2em));
        flex-basis: calc(25% - var(--wp--style--block-gap, 2em));
    -webkit-box-flex: 0;
        -ms-flex-positive: 0;
            flex-grow: 0;
  }
  .wp-block-columns.is-style-grid-4 > .wp-block-column:nth-child(4n+1) {
    margin-left: 0;
  }
  .header {
    width: 17.5rem;
  }
  .header__logo-link {
    width: 9.125rem;
    margin-left: 0;
  }
  .header__menu-toggle {
    display: none;
  }
  .header__inner {
    width: 17.5rem;
    margin-left: 1.5625rem;
  }
  .header__menu {
    margin-top: 2.5rem;
  }
  .header__sub-menu-toggle {
    top: 0.5rem;
    right: 0;
    width: 0.4375rem;
    height: 0.25rem;
  }
  .header__sub-menu-toggle .icon {
    width: 100%;
    height: 100%;
    margin: -0.125rem 0 0 -0.1875rem;
  }
  .header__sub-menu > div {
    padding-top: 0.625rem;
    padding-bottom: 0.625rem;
  }
  .header__sub-menu-level-0 {
    position: absolute;
    top: calc(100% - 1.25rem);
    left: 50%;
    z-index: 1;
    width: 19.625rem;
    margin-left: -9.8125rem;
  }
  .header__sub-menu-level-0::before, .header__sub-menu-level-0::after {
    position: absolute;
    content: "";
    background: #c6472b;
  }
  .header__sub-menu-level-0::before {
    top: 1.1875rem;
    left: 0;
    z-index: -1;
    width: 100%;
    height: calc(100% - 1.1875rem);
  }
  .header__sub-menu-level-0::after {
    top: 1.1875rem;
    left: 50%;
    width: 1.25rem;
    height: 1.25rem;
    border-width: 0.0625rem 0.0625rem 0 0;
    -webkit-transform: translate(-50%, -50%) rotate(-45deg);
            transform: translate(-50%, -50%) rotate(-45deg);
  }
  .header__sub-menu-level-0 > div {
    padding: 3.4375rem 1.875rem 2.25rem;
  }
  .header__sub-menu-level-0 > div > ul > li.menu-item-has-children a {
    max-width: calc(100% - 1.5625rem);
  }
  .header__sub-menu a {
    display: block;
  }
  .header__sub-menu .header__sub-menu-toggle {
    top: 0.7em;
    right: 0;
    color: inherit;
  }
  .hero {
    padding: 6.25rem 0;
  }
}
@media screen and (min-width: 1210px){
  :root {
    --responsive--alignwide-width: 72.5rem;
  }
}
@media screen and (min-width: 93.125em){
  .blocks-container p {
    padding-right: 17.5rem !important;
  }
  .container--content p {
    padding-right: 17.5rem !important;
  }
  .footer {
    grid-template-columns: calc(50vw - 45rem + 17.5rem) 1fr;
  }
}
@media screen and (max-width: 63.9375em){
  .header__menu {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 10;
    display: none;
    width: 100%;
    height: 100vh;
    overflow: auto;
    background: #fff;
    -webkit-transform: translateX(-100%);
            transform: translateX(-100%);
  }
  .header__menu > div {
    padding: 6.25rem 1.5625rem 1.5625rem;
  }
  .header__menu-list {
    width: 100%;
    padding-bottom: 1.375rem;
  }
  .header__sub-menu > div {
    padding-top: 2.375rem;
    padding-bottom: 0.625rem;
  }
}
@media screen and (max-width: 48.8125em){
  .data-visualization .button {
    width: 100%;
    margin-bottom: 0.9375rem;
    margin-bottom: var(--spacing--block-3);
  }
  .codebooks .button {
    width: 100%;
    margin-bottom: 0.9375rem;
    margin-bottom: var(--spacing--block-3);
  }
  .wp-block-button, .wp-block-button .wp-block-button__link {
    width: 100%;
  }
  .wp-block-columns.is-style-reverse-order {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
  }
  .footer__text, .footer__update-date, .footer__funders,
.footer .legal__menu {
    margin-top: 2em;
  }
}
@media print{
  * {
    font-family: Arial, Helvetica, sans-serif !important;
    color: #333 !important;
    text-shadow: none !important;
    background: transparent !important;
    -webkit-filter: none !important;
            filter: none !important;
  }
  * {
    text-decoration: none;
  } /* Black prints faster: h5bp.com/s */
  a,
a:visited {
    text-decoration: none;
  }
  a[href]::after {
    content: " (" attr(href) ")";
  }
  abbr[title]::after {
    content: " (" attr(title) ")";
  }
  .ir a::after,
a[href^="javascript:"]::after,
a[href^="#"]::after {
    content: "";
  } /* Don't show links for images, or javascript/internal links */
  pre,
blockquote {
    border: 0;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  } /* h5bp.com/t */
  tr,
img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  @page {
    margin: 0.5cm;
  }
  p,
h2,
h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
h3 {
    page-break-after: avoid;
  }
  .inline-element-with-padding {
    padding: 0;
  }
  /* remove useless content */
  .header,
.footer,
.widget-area,
.breadcrumb,
.wp-pagenavi {
    display: none !important;
  }
  /* reset width */
  .content {
    width: 100% !important;
    padding: 0.625rem 0 !important;
    margin: 0.625rem 0 !important;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzL3N0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMS1hYnN0cmFjdC9fY29uc3RhbnRzLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMS1hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy90b29scy5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDItdG9vbHMvX2YtYXNzaWduLWlucHV0cy5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDItdG9vbHMvX2YtY29sdW1uLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy9fZi1jb250ZXh0LWFsaWduLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy9fZi1jb250ZXh0LXNlbGVjdG9yLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy9fZi1lbS5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDItdG9vbHMvX2YtZ2V0LXN2Zy11cmwuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAyLXRvb2xzL19mLXN0cmlwLXVuaXRzLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy9fbS1hbGlnbi5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDItdG9vbHMvX20tYXV0b2ZpbGwuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAyLXRvb2xzL19tLWJyZWFrcG9pbnQuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAyLXRvb2xzL19tLWJ1dHRvbi5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDItdG9vbHMvX20tY2hlY2tib3gtY3VzdG9tLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy9fbS1jbGVhcmZsZXguc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAyLXRvb2xzL19tLWNvbnRhaW5lci5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDItdG9vbHMvX20tZGVjbGFyZS1mb250LWZhY2Uuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAyLXRvb2xzL19tLWVkaXRvci1vbmx5LnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy9fbS1oZWFkaW5nLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy9fbS1ob3Zlci5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDItdG9vbHMvX20taW1hZ2Uuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAyLXRvb2xzL19tLXBsYWNlaG9sZGVyLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy9fbS1wbGFjZWhvbGRlci1tZWRpYS5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDItdG9vbHMvX20tcmFkaW8tY3VzdG9tLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy9fbS1yb3ctZnVsbHdpZHRoLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMi10b29scy9fbS1zY3JvbGxiYXIuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAyLXRvb2xzL19tLXNlbGVjdC1jdXN0b20uc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAyLXRvb2xzL19tLXNyLW9ubHkuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAyLXRvb2xzL19tLXN0eWxlLW9ubHkuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAzLWJhc2UvYmFzZS5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDMtYmFzZS9fZm9udHMuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAzLWJhc2UvX2N1c3RvbS1wcm9wZXJ0aWVzLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMy1iYXNlL19ub3JtYWxpemUuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAzLWJhc2UvX3N2Zy1pY29ucy5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDMtYmFzZS9fcmVzZXQuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAzLWJhc2UvX2Zvcm1zLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wMy1iYXNlL19saW5rcy5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDMtYmFzZS9fbS1pbWFnZS5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDMtYmFzZS9fbWVkaWEuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzAzLWJhc2UvX3RleHQuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA0LXV0aWxpdGllcy9fZm9jdXMuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA0LXV0aWxpdGllcy9fbGF6eWxvYWQuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA0LXV0aWxpdGllcy9fc2VvLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wNC11dGlsaXRpZXMvX3ZpZGVvLXdyYXBwZXIuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA0LXV0aWxpdGllcy9fcGFsZXR0ZS5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDQtdXRpbGl0aWVzL19jb250YWluZXIuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA0LXV0aWxpdGllcy9fc3Itb25seS5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDQtdXRpbGl0aWVzL19jb21wbGlhbnouc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA1LWNvbXBvbmVudHMvY29tcG9uZW50cy5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDUtY29tcG9uZW50cy9fYnV0dG9uLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wNS1jb21wb25lbnRzL19idXR0b25zLXdyYXAuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA1LWNvbXBvbmVudHMvX2luZm8tdGFibGUuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA1LWNvbXBvbmVudHMvX2NvZGVib29rcy5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDYtYmxvY2tzL19ndXRlbmJlcmcuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA2LWJsb2Nrcy9jb3JlL19hdWRpby5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDYtYmxvY2tzL2NvcmUvX2J1dHRvbnMuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA2LWJsb2Nrcy9jb3JlL19jb3Zlci5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDYtYmxvY2tzL2NvcmUvX2dyb3VwLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wNi1ibG9ja3MvY29yZS9faGVhZGluZy5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDYtYmxvY2tzL2NvcmUvX2ltYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wNi1ibG9ja3MvY29yZS9fbGlzdC5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDYtYmxvY2tzL2NvcmUvX21lZGlhLXRleHQuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA2LWJsb2Nrcy9jb3JlL19wYXJhZ3JhcGguc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA2LWJsb2Nrcy9jb3JlL19wcmVmb3JtYXR0ZWQuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA2LWJsb2Nrcy9jb3JlL19zZXBhcmF0b3Iuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA2LWJsb2Nrcy9jb3JlL19zZWFyY2guc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA2LWJsb2Nrcy9jb3JlL190YWJsZS5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDYtYmxvY2tzL2NvcmUvX3ZpZGVvLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wNi1ibG9ja3MvX21vc25lLWNhcmRzLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wNi1ibG9ja3MvX21vc25lLWNhcmRzLXRlYW0uc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA3LXBhdHRlcm5zL19oZWFkZXIuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA3LXBhdHRlcm5zL19mb290ZXIuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA3LXBhdHRlcm5zL19oZXJvLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wNy1wYXR0ZXJucy9fc2VhcmNoZm9ybS5zY3NzIiwid2VicGFjazovL21vc25lLWZmLy4vc3JjL3Njc3MvMDctcGF0dGVybnMvX3NraXAtbGlua3Muc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA5LXBhZ2VzL180MDQuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA5LXBhZ2VzL19ob21lLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wOS1wYWdlcy9fc2luZ2xlLWRhdGFzZXQuc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA5LXBhZ2VzL19kZWZhdWx0LnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wOS1wYWdlcy9fY29tcGxpYW56LnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wNS1jb21wb25lbnRzL19kYXRhLXZpc3VhbGl6YXRpb24uc2NzcyIsIndlYnBhY2s6Ly9tb3NuZS1mZi8uL3NyYy9zY3NzLzA2LWJsb2Nrcy9jb3JlL19jb2x1bW5zLnNjc3MiLCJ3ZWJwYWNrOi8vbW9zbmUtZmYvLi9zcmMvc2Nzcy8wOS1wYWdlcy9fcHJpbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0I7QUFFaEI7OztFQUFBO0FDRkE7O0VBQUE7QUNFQTs7RUFBQTtBRk9BOzs7RUFBQTtBR1RBOztFQUFBO0FDR0E7O0VBQUE7QUNBQTs7Ozs7Ozs7RUFBQTtBQ0hBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUNBQTs7OztFQUFBO0FDRUE7Ozs7Ozs7RUFBQTtBQ0ZBOztFQUFBO0FDQUE7Ozs7RUFBQTtBQ0FBOzs7O0VBQUE7QUNFQTs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQ0ZBOztFQUFBO0FDRUE7O0VBQUE7QUNGQTs7RUFBQTtBQ0FBOztFQUFBO0FDQUE7Ozs7RUFBQTtBQ0FBOzs7Ozs7Ozs7O0VBQUE7QUNBQTs7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QWoxQ0E7OztFQUFBO0F1RGRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFBQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F2RHUzQ0o7QXVEaDNDSTtFQUVJO0VBQ0E7QXZEazNDUjtBdUQzMkNJO0VBQ0k7RUFBQTtBdkQ2MkNSO0F1RDEyQ0k7RTVDN0NBLFdBRHFCO0VBSWpCO0VBQUE7QVh3NUNSO0F1RHoyQ0k7RTVDbERBLFk0Q29EbUI7RTVDL0NmO0VBQUE7QVgwNUNSO0F1RHgyQ0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBdkQwMkNSO0F1RHYyQ0k7OztFQUdJO0VBQUE7QXZEeTJDUjtBdURuMkNJOztFQWdDSTtBdkR1MENSO0F1RG4yQ1E7O0VBQ0k7QXZEczJDWjtBdUQvMUNROzs7Ozs7RUFLSTtBdkRrMkNaO0F1RDExQ1E7O0VBQ0o7RUFBQTtFQUNRO0VBQ1I7RUFBQTtFQUNRO0F2RDYxQ1o7QXVEejFDUTs7O0VBRUk7RUFBQTtBdkQ0MUNaO0F1RHgxQ0k7RUFDSTtFQUFBO0F2RDAxQ1I7QXVEeDFDSTtFQUNEO0VBQUE7QXZEMDFDSDtBdUR0MUNJO0VBQ0k7RUFBQTtBdkR3MUNSO0F1RG4xQ1E7RUFDSTtFQUFBO0F2RHExQ1o7QXVEbDFDSTtFQUNJO0F2RG8xQ1I7QXVEaHpDVztFQUNOO0F2RGswQ0w7QXVEN3pDSTtFQUNJO0F2RCt6Q1I7QXVEM3pDUTtFQUNJO0VBQUE7QXZENnpDWjtBd0RuL0NRO0VBQ0kseUJ0RG1DSTtBRm0rQ2hCO0F3RG5nRFE7RUFDSTtFQUNBO0F4RHFnRFo7QXlEbitDUTtFQUNJO0F6RHMrQ1o7QTBEL2dESTs7RUFDSTtBMUR1bURSO0EwRG5tRFE7O0VBQ0k7RUFDQTtBMURzbURaO0EyRC9tREE7RUFDSTtBM0RrbkRKO0E0RGxuREk7O0V4Q0lBLDZDbEJrSGdCO0VrQmpIaEI7RUFHSTtFQUFBO0VBQ0E7RUFBQTtFQUNKLGNsQjJCWTtBRnNsRGhCO0E0RHRuREk7RUFDSTtBNUR5bkRSO0E0RC9uREk7O0V4Q0lBLDZDbEJrSGdCO0VrQmpIaEI7RUFTSTtFQUFBO0VBQ0E7RUFBQTtBcEJ3bkRSO0E0RGxvREk7RUFDSTtBNURxb0RSO0E0RDNvREk7O0V4Q0lBLDZDbEJrSGdCO0VrQmpIaEI7RUFjSTtFQUFBO0VBQ0E7RUFBQTtBcEIrbkRSO0E0RDlvREk7RUFDSTtBNURpcERSO0E0RHZwREk7O0V4Q0lBLDZDbEJrSGdCO0VrQmpIaEI7RUFtQkk7RUFBQTtFQUNBO0VBQUE7QXBCc29EUjtBNEQxcERJO0VBQ0k7QTVENnBEUjtBNERucURJOztFeENJQSw2Q2xCa0hnQjtFa0JqSGhCO0VBd0JJO0VBQUE7RUFDQTtFQUFBO0FwQjZvRFI7QTREdHFESTtFQUNJO0E1RHlxRFI7QTREL3FESTs7RXhDSUEsNkNsQmtIZ0I7RWtCakhoQjtFQTZCSTtFQUFBO0VBQ0E7RUFBQTtBcEJvcERSO0E0RGxyREk7RUFDSTtBNURxckRSO0E2RDNyREk7RUFDSTtFQUNBO0E3RDhyRFI7QTZEMXJEQTtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdENnJERDtBOERyc0RROztFQUNJO0VBQ0E7QTlEeXNEWjtBOER0c0RROztFQUNJO0VBQ0E7RUFDQTtBOUR5c0RaO0E4RHBzRFE7RUFDSTtBOURzc0RaO0E4RG5zRGdCO0VBQ0ksYzVEZ0JKO0FGcXJEaEI7QThEOXJEUTtFQUNJO0E5RGdzRFo7QThEOXJEWTtFQUNJLGM1REtBO0FGMnJEaEI7QThEM3JESTtFQUNJO0E5RDZyRFI7QStEbHVEUTtFQUNJO0VBQ0E7QS9EcXVEWjtBZ0V4dURJO0VBQ0k7RUFBQTtFQUNBLGdCOURxSVc7QUZzbURuQjtBZ0V6dURRO0VBQ0k7QWhFMnVEWjtBZ0V4dURRO0VBQ0ksNkM5RDZHUTtFOEQ1R1I7RUFBQTtBaEUwdURaO0FpRXJ2REE7RUFDSTtFQUdJO0FqRXN2RFI7QWtFMXZEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsRTZ2REo7QW1FOXZESTtFQUNJO0FuRWd3RFI7QW9FcHdEQTs7RUFFSTtFQUNBO0VBQ0E7QXBFc3dESjtBcUV6d0RJO0VBQ0k7QXJFNHdEUjtBcUV4d0RBO0VBQ0k7RUFDQTtFQUFBO0VBQ0E7QXJFMndESjtBc0VseERJO0VBQ0k7RUFDQTtFQUNBLDBCcEV5RVU7RW9FekVWLDBCcEV5RVU7RW9FekVWLDZCcEV5RVU7S29FekVWLDBCcEV5RVU7VW9FekVWLHFCcEV5RVU7QUY0c0RsQjtBc0VseERZO0VBQ0k7QXRFb3hEaEI7QXNFcnhEWTtFQUNJO0F0RXV4RGhCO0FzRXh4RFk7RUFDSTtBdEUweERoQjtBc0VyeERZO0VBQ0k7QXRFdXhEaEI7QXNFeHhEWTtFQUNJO0F0RTB4RGhCO0FzRTN4RFk7RUFDSTtBdEU2eERoQjtBc0Uvd0RFO0VBQ0E7RUFBQTtBdEVxeURGO0FzRTl4REk7RUFDSTtFQUFBO0VBQ0E7QXRFaXlEUjtBc0UveERRO0VBQ0k7RUFDQSw2Q3BFNEVRO0FGcXREcEI7QXNFOXhEUTtFQUNJO0VBQ0E7RUFBQTtBdEVneURaO0FzRTl4RFk7RUFDSTtBdEVneURoQjtBc0VyeERJO0VBQ0k7RUFBQTtBdEU4eERSO0FzRTV4RFE7RUFDSTtFQUFBO0VBQ0E7RUFBQTtFQUNBLGNwRTlCSTtFb0UrQko7QXRFOHhEWjtBc0UzeERRO0VBQ0k7RUFBQTtBdEU2eERaO0FzRTF4RFE7RUFDSTtFQUFBO0F0RTR4RFo7QXNFeHhESTtFQUNJO0VBQUE7RUFDQTtFQUFBO0VBQ0E7QXRFMHhEUjtBc0V4eERRO0VBQ0k7RUFBQTtFQUNBLDZDcEUrQlE7RW9FOUJSO0VBQUE7RUFDQTtBdEUweERaO0FzRXZ4RFE7RUFDSTtFQUFBO0VBQ0EsNkNwRXdCUTtFb0V2QlI7RUFBQTtBdEV5eERaO0FzRXR4RFE7RUFDSTtFQUFBO0VBQ0E7RUFBQTtFQUNBLGNwRWhFSTtBRncxRGhCO0FzRXJ4RFE7RUFDSTtFQUFBO0VBQ0EsNkNwRVlRO0VvRVhSO0VBQUE7QXRFdXhEWjtBc0VweERRO0VBQ0k7RUFBQTtBdEVzeERaO0FzRW54REk7RUFDRDtFQUFBO0VBQUE7RUFDQTtNQUFBO1VBQUE7QXRFcXhESDtBc0VueERHO0VBQ0MsdUJwRTFDYztBRit6RGxCO0FzRW54REc7RUFDQztBdEVxeERKO0F1RTc0REk7RUFDSTtFQUNBO0VBQUE7RUFDQTtFQUFBO0F2RWc1RFI7QXVFNzRESTtFQUNJO0VBQUE7QXZFKzREUjtBdUU1NERJO0VqRFlBO0VBQ0E7RWlEWEk7RUFBQTtBdkUrNERSO0FzQjkzREk7RUFFSTtFQUNBO0VBQ0E7RUFDQSxvQmlEdkJrQjtFakR3QmxCO0F0QiszRFI7QXNCdjNESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUF6Q0osb0JBV2dDO0tBWGhDLGlCQVdnQztFQUw1QjtBdEI4NURSO0F1RS81REk7RUFDSSxtQ3JFaUdlO0VxRWhHZjtBdkVpNkRSO0F1RWg2RFE7RUFDSTtBdkVrNkRaO0F1RTk1REk7RUFDSSw2Q3JFNEZZO0FGbzBEcEI7QUE5NERBOzs7RUFBQTtBd0U3Q0E7O0VBQUE7QUFJQTtFQUdJO0F4RW84REo7QXdFbDhESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4RW84RFI7QXdFNTdESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0Esc0J0RWlEVTtBRjY0RGxCO0F3RTU3RFE7RUFDSTtFQUNBO0VBQ0EsYXRFSUk7RXNFSEo7RUFBQTtBeEU4N0RaO0F3RXo3RFk7RUFDSSxhdEVGRTtBRjY3RGxCO0F3RXQ3REk7RUFDSTtFQUNBO0VBQ0EsZ0J0RTZCVTtFc0U1QlY7RUFHQTtFQUNBO0F4RXM3RFI7QXdFajdEUTtFQUNJO0F4RW03RFo7QXdFLzZESTtFQUNJO0VBQ0EsNkN0RXFEWTtFc0VwRFosa0J0RTRETztFc0UzRFA7RUFDQTtFQUNBO0F4RWk3RFI7QXdFLzZEUTtFQUNJO0F4RWk3RFo7QXdFOTZEUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQUE7QXhFZzdEWjtBd0U5NkRZO0VBQ0k7QXhFZzdEaEI7QXdFNTZEUTtFQUNJLGN0RWpETTtBRis5RGxCO0F3RTM2RFE7RUFDSTtBeEU2NkRaO0F3RTM2RFk7RUFDSTtFQUNBO0F4RTY2RGhCO0F3RXg2RFk7RUFDSTtVQUFBO0F4RTA2RGhCO0F3RXI2REk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFd0RXJHSztFc0VzR0w7RUFDQTtFQUNBO0VBQ0E7QXhFdTZEUjtBd0VyNkRRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUFBO0VBQUE7RUFBQTtBeEV1NkRaO0F3RWw2RFE7RUFJSTtFQUNBO0F4RWk2RFo7QXdFOTVEUTtFQUNJO0F4RWc2RFo7QXdFMTVEWTtFQUNJO0F4RTQ1RGhCO0F3RTE1RGdCO0VBQ0k7VUFBQTtBeEU0NURwQjtBd0V6NURnQjtFQUNJO1VBQUE7QXhFMjVEcEI7QXdFcjVESTtFQUNJLGF0RWhFcUI7QUZ1OUQ3QjtBd0VwNURJO0VBR0k7QXhFbzVEUjtBeUU5akVBOztFQUFBO0FBSUE7RUFFSSw2Q3ZFaUhnQjtFdUVoSGhCO0VBQUE7RUFDRjtFQUNBO0F6RTBxRUY7QXlFdHFFUTtFQUNJLFV2RVlLO0FGNHBFakI7QXlFcHFFSTtFQUNJO0VBQ0E7RUFBQTtFQUNBO0VBQ0E7RUFDQTtBekVzcUVSO0F5RW5xRUk7RUFDSTtBekVxcUVSO0F5RW5xRVE7RUFDSTtBekVxcUVaO0F5RWpxRUU7RUFDQSxtQnZFMEZhO0FGeWtFZjtBeUVocUVJO0VBQ0k7QXpFa3FFUjtBeUVocUVRO0VBQ0ksbUJ2RW1GRztFdUVsRkg7QXpFa3FFWjtBeUU5cEVJO0VBQ0ksbUJ2RTZFTztBRm1sRWY7QXlFN3BFSTtFQUNJLGtCdkUwQlU7QUZxb0VsQjtBeUU3cEVRO0VBQ0kseUJ2RWRPO0FGNnFFbkI7QXlFNXBFUTtFQUNJLHlCdkVyQkk7QUZtckVoQjtBeUV4cEVRO0VBQ0ksY3ZFNUJJO0FGc3JFaEI7QXlFdHBFSTtFQUNJO0F6RXdwRVI7QXlFcnBFSTtFQUNJO0VBQ0E7QXpFdXBFUjtBeUVwcEVJO0VBQ0k7RUFBQTtFQUFBO0VBQ0E7TUFBQTtFQUNBLGN2RUpVO0V1RUtWO01BQUE7VUFBQTtFQUVBO0F6RXFwRVI7QXlFbHBFSTtFQUNJO0F6RW9wRVI7QTBFN3VFQTs7RUFBQTtBQUlBO0VoRENJLGtCQUQ0QjtFQUU1QjtFQUNBO0VBQ0E7RUFDQTtFZ0RGQTtFQUFBO0VB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MjRFTjtFb0Z4NEVFO0lBQ0k7RXBGMDRFTjtFb0Z2NEVFOzs7SUFHSTtJQUNBO0VwRnk0RU47RW9GdDRFRTs7SUFFSTtFcEZ3NEVOO0VvRnI0RUU7SUFDSTtFcEZ1NEVOO0VvRnA0RUU7RUFDQTs7Ozs7SUFLSTtFcEZzNEVOO0VvRm40RUU7RUFDQTtJQUNJO0lBQ0E7SUFDQTtFcEZxNEVOO0FBQ0YsQyIsImZpbGUiOiJhcHAuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiJGVudHJ5LWZpbGUtbmFtZTogXCJzdHlsZVwiO1xuXG4vKipcbiAqIEFic3RyYWN0XG4gKiA9PSBDb250YWluIFNDU1MgYW5kIENTUyB2YXJpYWJsZXMgYW5kIHdlYmZvbnRzIGRlY2xhcmF0aW9ucy5cbiAqL1xuXG5AaW1wb3J0IFwiMDEtYWJzdHJhY3QvYWJzdHJhY3RcIjtcblxuLyoqXG4gKiBUb29sc1xuICogPT0gQ29udGFpbnMgZnVuY3Rpb25zIGFuZCBtaXhpbnMuXG4gKi9cblxuQGltcG9ydCBcIjAyLXRvb2xzL3Rvb2xzXCI7XG5cbi8qKlxuICogQmFzZVxuICogPT0gQ29udGFpbiBnZW5lcmljIHN0eWxlcyBzdWNoIGFzIG5vcm1hbGl6ZSBvciByZXNldC5cbiAqL1xuXG5AaW1wb3J0IFwiMDMtYmFzZS9iYXNlXCI7XG5cbi8qKlxuICogVXRpbGl0aWVzXG4gKiA9PSBVdGlsaXR5IGNsYXNzZXMgdGhhdCBhcmUgbm90IGFzc2lnbmVkIHRvIGEgc3BlY2lmaWMgY29tcG9uZW50LlxuICovXG5cbkBpbXBvcnQgXCIwNC11dGlsaXRpZXMvdXRpbGl0aWVzXCI7XG5cbi8qKlxuICogQ29tcG9uZW50c1xuICogPT0gQ29udGFpbiBhbnkgZGVmYXVsdCBjb21wb25lbnQuIEp1c3QgZ2l2ZSB0aGUgY29tcG9uZW50cyBzb21lIGJhc2ljIHN0eWxlcy5cbiAqL1xuXG5AaW1wb3J0IFwiMDUtY29tcG9uZW50cy9jb21wb25lbnRzXCI7XG5cbi8qKlxuICogQmxvY2tzXG4gKiA9PSBHdXRlbmJlcmcgY29yZSBibG9ja3Mgc3R5bGVzLCBzdHlsZSBmb3IgZnJvbnQtZW5kIGxheW91dCBhbmQgZWRpdG9yLlxuICovXG5cbkBpbXBvcnQgXCIwNi1ibG9ja3MvZ3V0ZW5iZXJnXCI7XG5AaW1wb3J0IFwiMDYtYmxvY2tzL2Jsb2Nrc1wiO1xuXG4vKipcbiAqIFBhdHRlcm5zXG4gKiA9PSBDb250YWlucyBzdHlsZXMgZm9yIHNpdGUgcGF0dGVybnMgc3VjaCBhcyBoZWFkZXIsIGZvb3RlciBvciBtZW51LlxuICovXG5cbkBpbXBvcnQgXCIwNy1wYXR0ZXJucy9wYXR0ZXJuc1wiO1xuXG4vKipcbiAqIFZlbmRvclxuICogPT0gUGx1Z2lucyBvciBsaWJyYXJpZXMgY3VzdG9tIHN0eWxlcy5cbiAqL1xuXG5AaW1wb3J0IFwiMDgtdmVuZG9yL3ZlbmRvclwiO1xuXG4vKipcbiAqIFBhZ2VzXG4gKiA9PSBJZiB5b3Ugd2FudCB0byBhZGQgY3VzdG9tIHN0eWxlcyBmb3Igc3BlY2lmaWNzIHBhZ2UgdGVtcGxhdGVzLlxuICovXG5cbkBpbXBvcnQgXCIwOS1wYWdlcy9wYWdlc1wiO1xuIiwiLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG4vLyA9PT09PT09PT09XG4vLyBFYXNpbmdzIC0gQXV0aG9yOiBTY290dHkgVmVybm9uIC0gTGljZW5zZWQgdW5kZXIgYSBNSVQgTGljZW5zZVxuLy8gPT09PT09PT09PVxuJGVhc2UtaW4tc2luZTogY3ViaWMtYmV6aWVyKC40NywgMCwgLjc0NSwgLjcxNSk7XG4kZWFzZS1vdXQtc2luZTogY3ViaWMtYmV6aWVyKC4zOSwgLjU3NSwgLjU2NSwgMSk7XG4kZWFzZS1pbi1vdXQtc2luZTogY3ViaWMtYmV6aWVyKC4zOSwgLjU3NSwgLjU2NSwgMSk7XG5cbiRlYXNlLWluLXF1YWQ6IGN1YmljLWJlemllciguNTUsIC4wODUsIC42OCwgLjUzKTtcbiRlYXNlLW91dC1xdWFkOiBjdWJpYy1iZXppZXIoLjI1LCAuNDYsIC40NSwgLjk0KTtcbiRlYXNlLWluLW91dC1xdWFkOiBjdWJpYy1iZXppZXIoLjI1LCAuNDYsIC40NSwgLjk0KTtcblxuJGVhc2UtaW4tY3ViaWM6IGN1YmljLWJlemllciguNTUsIC4wNTUsIC42NzUsIC4xOSk7XG4kZWFzZS1vdXQtY3ViaWM6IGN1YmljLWJlemllciguMjE1LCAuNjEsIC4zNTUsIDEpO1xuJGVhc2UtaW4tb3V0LWN1YmljOiBjdWJpYy1iZXppZXIoLjIxNSwgLjYxLCAuMzU1LCAxKTtcblxuJGVhc2UtaW4tcXVhcnQ6IGN1YmljLWJlemllciguODk1LCAuMDMsIC42ODUsIC4yMik7XG4kZWFzZS1vdXQtcXVhcnQ6IGN1YmljLWJlemllciguMTY1LCAuODQsIC40NCwgMSk7XG4kZWFzZS1pbi1vdXQtcXVhcnQ6IGN1YmljLWJlemllciguMTY1LCAuODQsIC40NCwgMSk7XG5cbiRlYXNlLWluLXF1aW50OiBjdWJpYy1iZXppZXIoLjc1NSwgLjA1LCAuODU1LCAuMDYpO1xuJGVhc2Utb3V0LXF1aW50OiBjdWJpYy1iZXppZXIoLjIzLCAxLCAuMzIsIDEpO1xuJGVhc2UtaW4tb3V0LXF1aW50OiBjdWJpYy1iZXppZXIoLjIzLCAxLCAuMzIsIDEpO1xuXG4kZWFzZS1pbi1leHBvOiBjdWJpYy1iZXppZXIoLjk1LCAuMDUsIC43OTUsIC4wMzUpO1xuJGVhc2Utb3V0LWV4cG86IGN1YmljLWJlemllciguMTksIDEsIC4yMiwgMSk7XG4kZWFzZS1pbi1vdXQtZXhwbzogY3ViaWMtYmV6aWVyKC4xOSwgMSwgLjIyLCAxKTtcblxuJGVhc2UtaW4tY2lyYzogY3ViaWMtYmV6aWVyKC42LCAuMDQsIC45OCwgLjMzNSk7XG4kZWFzZS1vdXQtY2lyYzogY3ViaWMtYmV6aWVyKC4wNzUsIC44MiwgLjE2NSwgMSk7XG4kZWFzZS1pbi1vdXQtY2lyYzogY3ViaWMtYmV6aWVyKC4wNzUsIC44MiwgLjE2NSwgMSk7XG5cbiRlYXNlLWluLWJhY2s6IGN1YmljLWJlemllciguNiwgLS4yOCwgLjczNSwgLjA0NSk7XG4kZWFzZS1vdXQtYmFjazogY3ViaWMtYmV6aWVyKC4xNzUsIC44ODUsIC4zMiwgMS4yNzUpO1xuJGVhc2UtaW4tb3V0LWJhY2s6IGN1YmljLWJlemllciguNjgsIC0uNTUsIC4yNjUsIDEuNTUpO1xuXG4kZWFzZS1pbi1vdXQtZmFzdDogY3ViaWMtYmV6aWVyKDEsIDAsIDAsIDEpO1xuXG4kYXV0aGVudGljLW1vdGlvbjogY3ViaWMtYmV6aWVyKC40LCAwLCAuMiwgMSk7XG4iLCJAdXNlIFwic2FzczptYXBcIjtcblxuLyoqXG4gKiBWYXJpYWJsZXNcbiAqL1xuXG4vLyA9PT09PT09PT09XG4vLyBDb2xvcnNcbi8vID09PT09PT09PT1cblxuLy8gLS0tLVxuLy8gRGFyay9MaWdodCBjb2xvcnNcbi8vIC0tLS1cbiRjb2xvci1saWdodDogI2ZmZjtcbiRjb2xvci1kYXJrOiAjMzMzO1xuXG4vLyAtLS0tXG4vLyBHcmV5IGNvbG9yc1xuLy8gLS0tLVxuJGNvbG9yLWdyZXktMTAwOiAjZWVlO1xuJGNvbG9yLWdyZXktMjAwOiAjY2NjO1xuJGNvbG9yLWdyZXktMzAwOiAjYWFhO1xuJGNvbG9yLWdyZXktNDAwOiAjOTk5O1xuJGNvbG9yLWdyZXktNTAwOiAjODg4O1xuJGNvbG9yLWdyZXktNjAwOiAjNzc3O1xuJGNvbG9yLWdyZXktNzAwOiAjNTU1O1xuJGNvbG9yLWdyZXktODAwOiAjMzMzO1xuJGNvbG9yLWdyZXktOTAwOiAjMTExO1xuXG4vLyAtLS0tXG4vLyBQYWxldHRlIGNvbG9yc1xuLy8gLS0tLVxuJGNvbG9yLXllbGxvdy01MDA6ICNmZmU2MDA7XG4kY29sb3ItcmVkLTYwMDogI2Q4NGI1NTtcblxuLy8gLS0tLVxuLy8gVGhlbWUgY29sb3JzXG4vLyAtLS0tXG4kY29sb3ItcHJpbWFyeTogI2M2NDcyYjtcbiRjb2xvci1zZWNvbmRhcnk6ICNlMWEzOTc7XG4kY29sb3ItdGV4dDogJGNvbG9yLWdyZXktODAwO1xuJGNvbG9yLWdyZXktbGlnaHQ6ICNlYmViZWI7XG4kY29sb3ItZ3JleS1tZWRpdW06ICRjb2xvci1ncmV5LTQwMDtcblxuLy8gPT09PT09PT09PVxuLy8gU2l6ZXNcbi8vID09PT09PT09PT1cbiRjb2x1bW4tcHJlc2V0OiAoXG4gICAgLyogcHJlc2V0IGZvciBkZXNrdG9wICovXG4gICAgZCA6IChcbiAgICAgICAgY29sdW1uLXdpZHRoOiA2MCxcbiAgICAgICAgZ3V0dGVyLXdpZHRoOiA0MCxcbiAgICAgICAgdG90YWwtY29sdW1uOiAxMlxuICAgICksXG4gICAgLyogcHJlc2V0IGZvciB0YWJsZXQgKi9cbiAgICB0IDogKFxuICAgICAgICBjb2x1bW4td2lkdGg6IDYwLFxuICAgICAgICBndXR0ZXItd2lkdGg6IDM0LFxuICAgICAgICB0b3RhbC1jb2x1bW46IDhcbiAgICApLFxuICAgIC8qIHByZXNldCBmb3IgbW9iaWxlICovXG4gICAgbSA6IChcbiAgICAgICAgY29sdW1uLXdpZHRoOiA1OCxcbiAgICAgICAgZ3V0dGVyLXdpZHRoOiAzMSxcbiAgICAgICAgdG90YWwtY29sdW1uOiA0XG4gICAgKVxuKTtcblxuLy8gLS0tLVxuLy8gQ29udGFpbmVyc1xuLy8gLS0tLVxuJGNvbnRhaW5lci1kZWZhdWx0LWNvbHVtbi1sZW5ndGg6IDg7XG4kY29udGFpbmVyLWRlZmF1bHQ6IChcbiAgICBtYXAuZ2V0KG1hcC5nZXQoJGNvbHVtbi1wcmVzZXQsIGQpLCBjb2x1bW4td2lkdGgpICogJGNvbnRhaW5lci1kZWZhdWx0LWNvbHVtbi1sZW5ndGggKyBtYXAuZ2V0KG1hcC5nZXQoJGNvbHVtbi1wcmVzZXQsIGQpLCBndXR0ZXItd2lkdGgpICogKCRjb250YWluZXItZGVmYXVsdC1jb2x1bW4tbGVuZ3RoIC0gMSlcbikgKiAxcHg7XG4kY29udGFpbmVyLXdpZGU6IChcbiAgICBtYXAuZ2V0KG1hcC5nZXQoJGNvbHVtbi1wcmVzZXQsIGQpLCBjb2x1bW4td2lkdGgpICogbWFwLmdldChtYXAuZ2V0KCRjb2x1bW4tcHJlc2V0LCBkKSwgdG90YWwtY29sdW1uKSArIG1hcC5nZXQobWFwLmdldCgkY29sdW1uLXByZXNldCwgZCksIGd1dHRlci13aWR0aCkgKiAobWFwLmdldChtYXAuZ2V0KCRjb2x1bW4tcHJlc2V0LCBkKSwgdG90YWwtY29sdW1uKSAtIDEpXG4pICogMXB4O1xuJGV4dGVybmFsLWd1dHRlcjogMjVweDtcblxuLy8gLS0tLVxuLy8gQnJlYWtwb2ludHNcbi8vIC0tLS1cbiRicmVha3BvaW50czogKFxuICAgIHhzOiA0ODAsXG4gICAgczogNjAwLFxuICAgIHNtOiA3ODIsXG4gICAgYWRtaW4tYmFyOiA3ODQsXG4gICAgbWQ6IDEwMjQsXG4gICAgbGc6IDE0NDAgKyAkZXh0ZXJuYWwtZ3V0dGVyICogMixcbik7XG5cbi8vIC0tLS1cbi8vIG1lbnVcbi8vIC0tLS1cbiRtZW51LWRlc2t0b3Atd2lkdGg6IDI4MHB4O1xuXG4vLyAtLS0tXG4vLyB3cCBhZG1pbiBiYXJcbi8vIC0tLS1cbiR3cC1hZG1pbi1iYXItbW9iaWxlLWhlaWdodDogNDZweDtcbiR3cC1hZG1pbi1iYXItZGVza3RvcC1oZWlnaHQ6IDMycHg7XG5cbi8vIC0tLS1cbi8vIGJvcmRlclxuLy8gLS0tLVxuJGJhc2UtYm9yZGVyLWNvbG9yOiAkY29sb3ItZ3JleS04MDA7XG4kYmFzZS1ib3JkZXI6IDFweCBzb2xpZCAkYmFzZS1ib3JkZXItY29sb3I7XG4kYmFzZS1ib3JkZXItcmFkaXVzOiAzcHg7XG5cbi8vID09PT09PT09PT1cbi8vIEZvbnRzXG4vLyA9PT09PT09PT09XG4vLyAtLS0tXG4vLyBGb250IEZhbWlseVxuLy8gLS0tLVxuJGZvbnQtZmFtaWx5LXByaW1hcnk6ICBab2RpYWstVmFyaWFibGUsIHNlcmlmO1xuJGZvbnQtZmFtaWx5LXByaW1hcnktaXRhbGljOiAgWm9kaWFrLVZhcmlhYmxlSXRhbGljLCBzZXJpZjtcbiRmb250LXNlcmlmOiAkZm9udC1mYW1pbHktcHJpbWFyeTtcbiRmb250LWZhbWlseS1zYW5zOiAgR2VuZXJhbFNhbnMtVmFyaWFibGUsIHNhbnMtc2VyaWY7XG5cbi8vIC0tLS1cbi8vIEZvbnQgU2l6ZVxuLy8gLS0tLVxuJGZvbnQtc2l6ZS1iYXNlOiAxOHB4O1xuJGZvbnQtc2l6ZS14czogMTRweDtcbiRmb250LXNpemUtc206IDE2cHg7XG4kZm9udC1zaXplLW1kOiAyMHB4O1xuJGZvbnQtc2l6ZS1sZzogMjRweDtcbiRmb250LXNpemUteGw6IDMycHg7XG4kZm9udC1zaXplLXh4bDogMzZweDtcbiRmb250LXNpemUteHh4bDogNDJweDtcblxuLy8gLS0tLVxuLy8gTGluZSBIZWlnaHRcbi8vIC0tLS1cbiRsaW5lLWhlaWdodC1iYXNlOiAxLjM7XG4iLCIvKipcbiAqIEFic3RyYWN0IGZvbGRlciBlbnRyeSBmaWxlXG4gKi9cblxuQGltcG9ydCBcIi4vZi1hc3NpZ24taW5wdXRzXCI7XG5AaW1wb3J0IFwiLi9mLWNvbHVtblwiO1xuQGltcG9ydCBcIi4vZi1jb250ZXh0LWFsaWduXCI7XG5AaW1wb3J0IFwiLi9mLWNvbnRleHQtc2VsZWN0b3JcIjtcbkBpbXBvcnQgXCIuL2YtZW1cIjtcbkBpbXBvcnQgXCIuL2YtZ2V0LXN2Zy11cmxcIjtcbkBpbXBvcnQgXCIuL2Ytc3RyaXAtdW5pdHNcIjtcbkBpbXBvcnQgXCIuL2YtdG8tbnVtYmVyXCI7XG5AaW1wb3J0IFwiLi9tLWFsaWduXCI7XG5AaW1wb3J0IFwiLi9tLWF1dG9maWxsXCI7XG5AaW1wb3J0IFwiLi9tLWJyZWFrcG9pbnRcIjtcbkBpbXBvcnQgXCIuL20tYnV0dG9uXCI7XG5AaW1wb3J0IFwiLi9tLWNoZWNrYm94LWN1c3RvbVwiO1xuQGltcG9ydCBcIi4vbS1jbGVhcmZsZXhcIjtcbkBpbXBvcnQgXCIuL20tY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiLi9tLWRlY2xhcmUtZm9udC1mYWNlXCI7XG5AaW1wb3J0IFwiLi9tLWVkaXRvci1vbmx5XCI7XG5AaW1wb3J0IFwiLi9tLWhlYWRpbmdcIjtcbkBpbXBvcnQgXCIuL20taG92ZXJcIjtcbkBpbXBvcnQgXCIuL20taW1hZ2VcIjtcbkBpbXBvcnQgXCIuL20tcGxhY2Vob2xkZXJcIjtcbkBpbXBvcnQgXCIuL20tcGxhY2Vob2xkZXItbWVkaWFcIjtcbkBpbXBvcnQgXCIuL20tcmFkaW8tY3VzdG9tXCI7XG5AaW1wb3J0IFwiLi9tLXJvdy1mdWxsd2lkdGhcIjtcbkBpbXBvcnQgXCIuL20tc2Nyb2xsYmFyXCI7XG5AaW1wb3J0IFwiLi9tLXNlbGVjdC1jdXN0b21cIjtcbkBpbXBvcnQgXCIuL20tc3Itb25seVwiO1xuQGltcG9ydCBcIi4vbS1zdHlsZS1vbmx5XCI7XG4iLCJAdXNlIFwic2FzczpsaXN0XCI7XG5AdXNlIFwic2FzczpzdHJpbmdcIjtcblxuLyoqXG4gKiBBc3NpZ24gaW5wdXRzXG4gKi9cblxuQGZ1bmN0aW9uIGFzc2lnbi1pbnB1dHMoJGlucHV0cywgJHBzZXVkbzogbnVsbCkge1xuICAgICRsaXN0OiAoKTtcblxuICAgIEBlYWNoICRpbnB1dCBpbiAkaW5wdXRzIHtcbiAgICAgICAgJGlucHV0OiBzdHJpbmcudW5xdW90ZSgkaW5wdXQpO1xuICAgICAgICAkaW5wdXQ6IGlmKCRwc2V1ZG8sICRpbnB1dCArIFwiOlwiICsgJHBzZXVkbywgJGlucHV0KTtcbiAgICAgICAgJGxpc3Q6IGxpc3QuYXBwZW5kKCRsaXN0LCAkaW5wdXQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRsaXN0O1xufVxuIiwiQHVzZSBcInNhc3M6bWFwXCI7XG5AdXNlIFwic2FzczptYXRoXCI7XG5cbi8qKlxuICogQ29sdW1uXG4gKlxuICogZXhlbXBsZXMgOlxuICogICAgICBjb2x1bW4oNikgXHRcdFx0LT4gcmV0dXJuIDYgY29sdW1uICsgNSBndXR0ZXIgb2YgZGVza3RvcCBwcmVzZXRcbiAqIFx0XHRjb2x1bW4oJ20nLCA2KSBcdFx0LT4gcmV0dXJuIDYgY29sdW1uICsgNSBndXR0ZXIgb2YgbW9iaWxlIHByZXNldFxuICogXHRcdGNvbHVtbig2LCA1LCA4KVx0XHQtPiByZXR1cm4gNiBjb2x1bW4gKyA1IGd1dHRlciBvZiA4IGdyaWQgc2l6ZSBvZiBkZXNrdG9wXG4gKlxuICovXG5cbi8vIC0tLS1cbi8vIGNvbHVtbi1zZXQtdmFyXG4vLyAtLS0tXG5cbkBmdW5jdGlvbiBjb2x1bW4tc2V0LXZhcigkdmFyLCAkZGV2aWNlLCAkcHJvcCkge1xuXG4gICAgQGlmIG5vdCAkdmFyIHtcblxuICAgICAgICBAcmV0dXJuIG1hcC5nZXQobWFwLmdldCgkY29sdW1uLXByZXNldCwgJGRldmljZSksICRwcm9wKTtcbiAgICB9IEBlbHNlIHtcblxuICAgICAgICBAcmV0dXJuICR2YXI7XG4gICAgfVxufVxuXG4vLyAtLS0tXG4vLyBjb2x1bW4gLSByZXR1cm4gYSBwZXJjZW50IHZhbHVlXG4vLyAtLS0tXG5cbkBmdW5jdGlvbiBjb2x1bW4oJGRldmljZSwgJG5iLWNvbHVtbjogbnVsbCwgJG5iLWd1dHRlcjogbnVsbCwgJHRvdGFsLWNvbHVtbjogbnVsbCwgJHRvdGFsLWd1dHRlcjogbnVsbCkge1xuICAgIC8vIHNoaWZ0IHZhcnMgaWYgJGRldmljZSBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZigkZGV2aWNlKSA9PSBcIm51bWJlclwiIHtcbiAgICAgICAgJHRvdGFsLWd1dHRlcjogJHRvdGFsLWNvbHVtbjtcbiAgICAgICAgJHRvdGFsLWNvbHVtbjogJG5iLWd1dHRlcjtcbiAgICAgICAgJG5iLWd1dHRlcjogJG5iLWNvbHVtbjtcbiAgICAgICAgJG5iLWNvbHVtbjogJGRldmljZTtcbiAgICAgICAgJGRldmljZTogZDtcbiAgICB9XG5cbiAgICAkcHJlc2V0OiBtYXAuZ2V0KCRjb2x1bW4tcHJlc2V0LCAkZGV2aWNlKTtcbiAgICAkZ3V0dGVyLXdpZHRoOiBtYXAuZ2V0KCRwcmVzZXQsIGd1dHRlci13aWR0aCk7XG4gICAgJGNvbHVtbi13aWR0aDogbWFwLmdldCgkcHJlc2V0LCBjb2x1bW4td2lkdGgpO1xuICAgICR0b3RhbC1jb2x1bW46IGNvbHVtbi1zZXQtdmFyKCR0b3RhbC1jb2x1bW4sICRkZXZpY2UsIHRvdGFsLWNvbHVtbik7XG5cbiAgICBAaWYgbm90ICRuYi1ndXR0ZXIge1xuICAgICAgICAkbmItZ3V0dGVyOiAkbmItY29sdW1uIC0gMTtcbiAgICB9XG5cbiAgICBAaWYgbm90ICR0b3RhbC1ndXR0ZXIge1xuICAgICAgICAkdG90YWwtZ3V0dGVyOiAkdG90YWwtY29sdW1uIC0gMTtcbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hdGguZGl2KCgkbmItY29sdW1uICogJGNvbHVtbi13aWR0aCArICRuYi1ndXR0ZXIgKiAkZ3V0dGVyLXdpZHRoKSAsICgkdG90YWwtY29sdW1uICogJGNvbHVtbi13aWR0aCArICR0b3RhbC1ndXR0ZXIgKiAkZ3V0dGVyLXdpZHRoKSkgKiAxMDAlO1xufVxuXG4vLyAtLS0tXG4vLyBjb2x1bW4gcHgsIHJldHVybiBhIHBpeGVsIHZhbHVlXG4vLyAtLS0tXG5cbkBmdW5jdGlvbiBjb2x1bW4tcHgoJGRldmljZSwgJG5iLWNvbHVtbjogbnVsbCwgJG5iLWd1dHRlcjogbnVsbCwgJHVuaXRsZXNzOiBmYWxzZSkge1xuICAgIC8vIHNoaWZ0IHZhcnMgaWYgJGRldmljZSBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZigkZGV2aWNlKSA9PSBcIm51bWJlclwiIHtcbiAgICAgICAgJG5iLWd1dHRlcjogJG5iLWNvbHVtbjtcbiAgICAgICAgJG5iLWNvbHVtbjogJGRldmljZTtcbiAgICAgICAgJGRldmljZTogZDtcbiAgICB9XG5cbiAgICAkcHJlc2V0OiBtYXAuZ2V0KCRjb2x1bW4tcHJlc2V0LCAkZGV2aWNlKTtcbiAgICAkZ3V0dGVyLXdpZHRoOiBtYXAuZ2V0KCRwcmVzZXQsIGd1dHRlci13aWR0aCk7XG4gICAgJGNvbHVtbi13aWR0aDogbWFwLmdldCgkcHJlc2V0LCBjb2x1bW4td2lkdGgpO1xuXG4gICAgQGlmICRuYi1ndXR0ZXIge1xuICAgICAgICAkbmItZ3V0dGVyOiAkbmItY29sdW1uIC0gMTtcbiAgICB9XG5cbiAgICBAaWYgJHVuaXRsZXNzID09IHRydWUge1xuICAgICAgICBAcmV0dXJuICRuYi1jb2x1bW4gKiAkY29sdW1uLXdpZHRoICsgJG5iLWd1dHRlciAqICRndXR0ZXItd2lkdGg7XG4gICAgfVxuXG4gICAgQHJldHVybiAjeyRuYi1jb2x1bW4gKiAkY29sdW1uLXdpZHRoICsgJG5iLWd1dHRlciAqICRndXR0ZXItd2lkdGh9cHg7XG59XG5cbi8vIC0tLS1cbi8vIGNvbHVtbiBmdWxsIC0gcmV0dXJuIGEgcGVyY2VudCB2YWx1ZSBvZiB0aGUgZnVsbCB3aWR0aCBjb250YWluZXIgKDEwMCUpIG1pbnVzIG1vYmlsZSBleHRlcm5hbCBndXR0ZXIgd2lkdGggKiAyXG4vLyAtLS0tXG5cbkBmdW5jdGlvbiBjb2x1bW4tZnVsbCgkZGV2aWNlLCAkbmItY29sdW1uOiBudWxsLCAkbmItZ3V0dGVyOiBudWxsKSB7XG4gICAgLy8gc2hpZnQgdmFycyBpZiAkZGV2aWNlIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IFwibnVtYmVyXCIge1xuICAgICAgICAkbmItZ3V0dGVyOiAkbmItY29sdW1uO1xuICAgICAgICAkbmItY29sdW1uOiAkZGV2aWNlO1xuICAgICAgICAkZGV2aWNlOiBkO1xuICAgIH1cblxuICAgICRwcmVzZXQ6IG1hcC5nZXQoJGNvbHVtbi1wcmVzZXQsICRkZXZpY2UpO1xuICAgICRndXR0ZXItd2lkdGg6IG1hcC5nZXQoJHByZXNldCwgZ3V0dGVyLXdpZHRoKTtcbiAgICAkY29sdW1uLXdpZHRoOiBtYXAuZ2V0KCRwcmVzZXQsIGNvbHVtbi13aWR0aCk7XG4gICAgJHRvdGFsLWNvbHVtbjogbWFwLmdldCgkcHJlc2V0LCB0b3RhbC1jb2x1bW4pO1xuXG4gICAgJHdpZHRoOiBjb2x1bW4tcHgoJGRldmljZSwgJG5iLWNvbHVtbiwgJG5iLWd1dHRlciwgdHJ1ZSk7XG5cbiAgICBAcmV0dXJuIGNhbGMoKDEwMCUgLSAjeyRleHRlcm5hbC1ndXR0ZXIgKiAyfSkgKiAjeyBtYXRoLmRpdigkd2lkdGggLCAoJGd1dHRlci13aWR0aCAqICgkdG90YWwtY29sdW1uIC0gMSkpICsgJGNvbHVtbi13aWR0aCAqICR0b3RhbC1jb2x1bW4pfSk7XG59XG4iLCIvKipcbiAqIEFsaWduXG4gKlxuICogZXhlbXBsZXMgOlxuICpcbiAqICAgICAgI3sgY29udGV4dC1hbGlnbihcIndpZGVcIikgfSAuYmxvY2sjeyBjb250ZXh0LWFsaWduKCkgfSB7XG4gKiAgICAgICAgICAuLi4geW91ciBjc3NcbiAqICAgICAgfVxuICpcbiAgKiAgICAgIHJldHVybiBmb3Igc3R5bGUuc2NzcyA6XG4gKiAgICAgICAgICAuYmxvY2suYWxpZ253aWRlIHtcbiAqICAgICAgICAgICAgICAuLi4geW91ciBjc3NcbiAqICAgICAgICAgIH1cbiAqXG4gKiAgICAgIHJldHVybiBmb3IgZWRpdG9yLnNjc3MgOlxuICogICAgICAgICAgW2RhdGEtYWxpZ249XCJ3aWRlXCJdID4gLmJsb2NrIHtcbiAqICAgICAgICAgICAgICAuLi4geW91ciBjc3NcbiAqICAgICAgICAgIH1cbiAqXG4gKi9cblxuJGZ1bmN0aW9uLWNvbnRleHQtYWxpZ24tbGFzdC12YWx1ZTogXCJcIjtcblxuQGZ1bmN0aW9uIGNvbnRleHQtYWxpZ24oJHZhbHVlOiBudWxsLCAkc3VmZml4OiBcIiA+IFwiKSB7XG4gICAgQGlmIG5vdCAkdmFsdWUge1xuICAgICAgICBAaWYgKCRlbnRyeS1maWxlLW5hbWUgPT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICBAcmV0dXJuIFwiLmFsaWduXCIgKyAkZnVuY3Rpb24tY29udGV4dC1hbGlnbi1sYXN0LXZhbHVlO1xuICAgICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICAgICRmdW5jdGlvbi1jb250ZXh0LWFsaWduLWxhc3QtdmFsdWU6ICR2YWx1ZSAhZ2xvYmFsO1xuXG4gICAgICAgIEBpZiAoJGVudHJ5LWZpbGUtbmFtZSA9PSBcImVkaXRvclwiKSB7XG4gICAgICAgICAgICBAcmV0dXJuIFwiW2RhdGEtYWxpZ249XFxcIlwiICsgJHZhbHVlICsgXCJcXFwiXVwiICsgJHN1ZmZpeDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gXCJcIjtcbn1cbiIsIi8qKlxuICogQ29udGV4dCBzZWxlY3RvclxuICpcbiAqIGV4ZW1wbGVzIDpcbiAqXG4gKiAgICAgICN7IGNvbnRleHQtc2VsZWN0b3IoJyNtYWluX19jb250ZW50JywgJyNlZGl0b3InLCAnLmJsb2NrJykgfSB7XG4gKiAgICAgICAgICAuLi4geW91ciBjc3NcbiAqICAgICAgfVxuICpcbiAqICAgICAgcmV0dXJuIGZvciBzdHlsZS5zY3NzIDpcbiAqICAgICAgICAgICNtYWluX19jb250ZW50IC5ibG9jayB7XG4gKiAgICAgICAgICAgICAgLi4uIHlvdXIgY3NzXG4gKiAgICAgICAgICB9XG4gKlxuICogICAgICByZXR1cm4gZm9yIGVkaXRvci5zY3NzIDpcbiAqICAgICAgICAgICNlZGl0b3IgLmJsb2NrIHtcbiAqICAgICAgICAgICAgICAuLi4geW91ciBjc3NcbiAqICAgICAgICAgIH1cbiAqXG4gKiAgICAgICRzZWxlY3RvcnM6IFwiLmJsb2Nrcy1nYWxsZXJ5LWltYWdlLFwiLCBcIi5ibG9ja3MtZ2FsbGVyeS1pdGVtXCI7XG4gKiAgICAgICN7IGNvbnRleHQtc2VsZWN0b3IoJy53cC1ibG9jay1nYWxsZXJ5JywgJy5ibG9ja3MtZ2FsbGVyeS1ncmlkJywgc2VsZWN0b3JzKSB9IHtcbiAqICAgICAgICAgIC4uLiB5b3VyIGNzc1xuICogICAgICB9XG4gKlxuICogICAgICByZXR1cm4gZm9yIHN0eWxlLnNjc3MgOlxuICogICAgICAgICAgLndwLWJsb2NrLWdhbGxlcnkgLmJsb2Nrcy1nYWxsZXJ5LWltYWdlLFxuICogICAgICAgICAgLndwLWJsb2NrLWdhbGxlcnkgLmJsb2Nrcy1nYWxsZXJ5LWl0ZW0ge1xuICogICAgICAgICAgICAgIC4uLiB5b3VyIGNzc1xuICogICAgICAgICAgfVxuICpcbiAqICAgICAgcmV0dXJuIGZvciBlZGl0b3Iuc2NzcyA6XG4gKiAgICAgICAgICAuYmxvY2tzLWdhbGxlcnktZ3JpZCAuYmxvY2tzLWdhbGxlcnktaW1hZ2UsXG4gKiAgICAgICAgICAuYmxvY2tzLWdhbGxlcnktZ3JpZCAuYmxvY2tzLWdhbGxlcnktaXRlbSB7XG4gKiAgICAgICAgICAgICAgLi4uIHlvdXIgY3NzXG4gKiAgICAgICAgICB9XG4gKlxuICogICAgICBJdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYSB2YXJpYWJsZSA6XG4gKlxuICogICAgICAkcGFyZW50OiBjb250ZXh0LXNlbGVjdG9yKCcjbWFpbl9fY29udGVudCcsICcjZWRpdG9yJylcbiAqXG4gKiAgICAgICN7KGRvbGxhcilwYXJlbnR9ID4gLmJsb2NrIHtcbiAqICAgICAgICAgIC4uLiB5b3VyIGNzc1xuICogICAgICB9XG4gKlxuICogICAgICB0aGUgdmFyaWFibGUgJGVudHJ5LWZpbGUtbmFtZSBpcyBkZWZpbmVkIGluIHN0eWxlLnNjc3MgYW5kIGVkaXRvci5zY3NzXG4gKi9cblxuQGZ1bmN0aW9uIGNvbnRleHQtc2VsZWN0b3IoJGRlZmF1bHQ6IG51bGwsICRlZGl0b3I6IG51bGwsICRzZWxlY3RvcjogbnVsbCkge1xuICAgICRmdWxsLXNlbGVjdG9yOiBcIlwiO1xuICAgICRwYXJlbnQ6IFwiXCI7XG5cbiAgICBAaWYgKCRlbnRyeS1maWxlLW5hbWUgPT0gXCJlZGl0b3JcIiBhbmQgJGVkaXRvcikge1xuICAgICAgICAkcGFyZW50OiAkZWRpdG9yO1xuICAgIH0gQGVsc2UgaWYgKCRlbnRyeS1maWxlLW5hbWUgPT0gXCJzdHlsZVwiIGFuZCAkZGVmYXVsdCkge1xuICAgICAgICAkcGFyZW50OiAkZGVmYXVsdDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQHJldHVybiAkc2VsZWN0b3I7XG4gICAgfVxuXG4gICAgQGlmICh0eXBlLW9mKCRzZWxlY3RvcikgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAkZnVsbC1zZWxlY3RvcjogJHBhcmVudCArIFwiIFwiICsgJHNlbGVjdG9yO1xuICAgIH0gQGVsc2UgaWYgKHR5cGUtb2YoJHNlbGVjdG9yKSA9PSBcImxpc3RcIikge1xuICAgICAgICBAZWFjaCAkcyBpbiAkc2VsZWN0b3Ige1xuICAgICAgICAgICAgJGZ1bGwtc2VsZWN0b3I6ICRmdWxsLXNlbGVjdG9yICsgJHBhcmVudCArIFwiIFwiICsgJHM7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZ1bGwtc2VsZWN0b3I6ICRwYXJlbnQ7XG4gICAgfVxuXG4gICAgQHJldHVybiAkZnVsbC1zZWxlY3Rvcjtcbn1cbiIsIi8qKlxuICogRW1cbiAqXG4gKiBjb252ZXJ0IHZhbHVlIGZyb20gcHggdG8gZW1cbiAqL1xuQHVzZSBcInNhc3M6bWF0aFwiO1xuQGZ1bmN0aW9uIGVtKCRweHZhbCwgJGJhc2U6ICRmb250LXNpemUtYmFzZSkge1xuXG4gICAgQGlmIG5vdCB1bml0bGVzcygkcHh2YWwpIHtcbiAgICAgICAgJHB4dmFsOiBzdHJpcC11bml0cygkcHh2YWwpO1xuICAgIH1cblxuICAgIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAgICAgJGJhc2U6IHN0cmlwLXVuaXRzKCRiYXNlKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hdGguZGl2KCRweHZhbCAsICRiYXNlKSAqIDFlbTtcbn1cbiIsIkB1c2UgXCJzYXNzOm1hcFwiO1xuXG4vKipcbiAqIGdldC1zdmctdXJsXG4gKlxuICogZXhlbXBsZXMgOlxuICogICAgICBnZXQtc3ZnLXVybChcImFycm93XCIpXG4gKiAgICAgIGdldC1zdmctdXJsKFwiYXJyb3dcIiwgJGNvbG9yLXByaW1hcnkpXG4gKlxuICovXG5cbkBmdW5jdGlvbiBnZXQtc3ZnLXVybCgkbmFtZTogbnVsbCwgJGZpbGw6ICRjb2xvci1kYXJrLCAkb3BhY2l0eTogMSwgJHN0eWxlOiBcIlwiKSB7XG5cbiAgICAkc3ZnczogKFxuICAgICAgICAvLyBuYW1lLW9mLXRoZS1zdmc6ICh2aWV3Qm94LCBjb250ZW50IG9mIHRoZSBzdmcgZWxlbWVudClcbiAgICAgICAgXCJhcnJvd1wiOiAoXCIwIDAgMTggMTRcIiwgXCIlM0NwYXRoIGQ9J00xNy4yNSA3IDEwLjM3LjEybC0uOTYuOTcgNS4yIDUuMjJILjc2VjcuN2gxMy44N0w5LjQgMTIuOWwuOTYuOTZMMTcuMjUgN1onLyUzRVwiKSxcbiAgICAgICAgXCJkb3duXCI6IChcIjAgMCAxMS4yIDYuN1wiLCBcIjNDcGF0aCBkPSdNMCAuNUMwIC40LjEuMi4yLjFjLjItLjIuNS0uMS43LjFsNC42IDUuMy4xLjFzLjEgMCAuMS0uMUwxMC4zLjFjLjItLjEuNS0uMi43IDAgLjIuMi4yLjUuMS43TDYuNSA2LjJjLS4yLjMtLjUuNS0uOS41cy0uNy0uMi0uOS0uNkwuMS44QzAgLjcgMCAuNiAwIC41eicvJTNFXCIpXG4gICAgKTtcblxuICAgIEBpZiBub3QgbWFwLWhhcy1rZXkoJHN2Z3MsICRuYW1lKSB7XG4gICAgICAgIEByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBAaWYgKCRzdHlsZSAhPSBcIlwiKSB7XG4gICAgICAgICRzdHlsZTogXCIgc3R5bGU9J1wiICsgJHN0eWxlICsgXCInXCI7XG4gICAgfVxuXG4gICAgQHJldHVybiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCAlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSdyZ2JhKCN7cmVkKCRmaWxsKSwgZ3JlZW4oJGZpbGwpLCBibHVlKCRmaWxsKSwgJG9wYWNpdHl9KSdcIiArICRzdHlsZSArIFwiIHZpZXdCb3g9J1wiICsgbnRoKG1hcC5nZXQoJHN2Z3MsICRuYW1lKSwgMSkgKyBcIiclM0UlXCIgKyBudGgobWFwLmdldCgkc3ZncywgJG5hbWUpLCAyKSArIFwiJTNDL3N2ZyUzRVwiKTtcbn1cbiIsIi8qKlxuICogU3RyaXAgdW5pdHNcbiAqL1xuQHVzZSBcInNhc3M6bWF0aFwiO1xuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWx1ZSkge1xuXG4gICAgQHJldHVybiBtYXRoLmRpdigkdmFsdWUgLCAoJHZhbHVlICogMCArIDEpKTtcbn1cbiIsIi8qKlxuICogQWxpZ25cbiAqXG4gKiBkZWZhdWx0OiBmbG9hdCBsZWZ0XG4gKi9cblxuQG1peGluIGFsaWduKCRkaXJlY3Rpb246IGxlZnQpIHtcbiAgICBmbG9hdDogJGRpcmVjdGlvbjtcblxuICAgIEBpZiAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy0tYmxvY2stMSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLS1ibG9jay0xKTtcbiAgICB9XG59XG4iLCIvKipcbiAqIEF1dG9maWxsXG4gKlxuICogd2Via2l0IGF1dG9maWxsXG4gKi9cblxuQG1peGluIGF1dG9maWxsIHtcbiAgICAmOi13ZWJraXQtYXV0b2ZpbGwsXG4gICAgJjotd2Via2l0LWF1dG9maWxsOmhvdmVyLFxuICAgICY6LXdlYmtpdC1hdXRvZmlsbDpmb2N1cyB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cbiIsIkB1c2UgXCJzYXNzOm1hcFwiO1xuXG4vKipcbiAqIEJyZWFrcG9pbnRzXG4gKlxuICogZXhlbXBsZXMgOlxuICpcbiAqICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludHMoc20sIG1kKSB7IC4uLiB9XG4gKiAgICAgICAgICByZXR1cm4gQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHsgLi4uIH1cbiAqXG4gKiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzKHNtLCBtYXgpIHsgLi4uIH1cbiAqICAgICAgICAgIHJldHVybiBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgeyAuLi4gfVxuICpcbiAqICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludHMoc20pIG9yIEBpbmNsdWRlIGJyZWFrcG9pbnRzKHNtLCBtaW4pIHsgLi4uIH1cbiAqICAgICAgICAgIHJldHVybiBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgeyAuLi4gfVxuICpcbiAqL1xuXG5AbWl4aW4gYnJlYWtwb2ludHMoJGJyZWFrcG9pbnQsICRtaW4tb3ItbWF4LW9yLWJyZWFrcG9pbnQ6IG1pbikge1xuICAgICRmb250LXNpemU6IDE2cHg7IC8vIGRvbid0IHVzZSBlbSBmdW5jdGlvbiB3aGl0b3V0IHBhcmFtLCAkZm9udC1zaXplLWJhc2UgY2FuIGJlIG1vZGlmaWVkXG5cbiAgICBAaWYgKHR5cGUtb2YobWFwLmdldCgkYnJlYWtwb2ludHMsICRtaW4tb3ItbWF4LW9yLWJyZWFrcG9pbnQpKSA9PSBcIm51bWJlclwiKSB7XG5cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogZW0obWFwLmdldCgkYnJlYWtwb2ludHMsICRicmVha3BvaW50KSwgJGZvbnQtc2l6ZSkpIGFuZCAobWF4LXdpZHRoOiBlbShtYXAuZ2V0KCRicmVha3BvaW50cywgJG1pbi1vci1tYXgtb3ItYnJlYWtwb2ludCkgLSAxLCAkZm9udC1zaXplKSkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmICgkbWluLW9yLW1heC1vci1icmVha3BvaW50ID09IG1heCkge1xuXG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IGVtKG1hcC5nZXQoJGJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludCkgLSAxLCAkZm9udC1zaXplKSkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcblxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiBlbShtYXAuZ2V0KCRicmVha3BvaW50cywgJGJyZWFrcG9pbnQpLCAkZm9udC1zaXplKSkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIEJ1dHRvblxuICovXG5cbkBtaXhpbiBidXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktc2FucztcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8vIC0tLS1cbi8vIGJ1dHRvbiBibG9ja1xuLy8gLS0tLVxuXG5AbWl4aW4gYnV0dG9uLWJsb2NrIHtcbiAgICAtLWNvbG9yLXRleHQ6ICN7JGNvbG9yLXRleHR9O1xuICAgIC0tY29sb3ItdGV4dC1ob3ZlcjogI3skY29sb3ItbGlnaHR9O1xuICAgIC0tY29sb3ItYmFja2dyb3VuZDogI3skY29sb3ItbGlnaHR9O1xuICAgIC0tY29sb3ItYmFja2dyb3VuZC1ob3ZlcjogI3skY29sb3ItdGV4dH07XG4gICAgLS1jb2xvci1ib3JkZXI6ICN7JGNvbG9yLXRleHR9O1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDhweCAyNHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBsaW5lLWhlaWdodDogMjVweDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4wNWVtO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWNvbG9yLWJhY2tncm91bmQtaG92ZXIpIDAlLCB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWhvdmVyKSA1MCUsIHZhcigtLWNvbG9yLWJhY2tncm91bmQpIDUwJSwgdmFyKC0tY29sb3ItYmFja2dyb3VuZCkgMTAwJSk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0yMDAlO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAyMDAlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItYm90dG9tOiA0cHggc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gLjRzICRlYXNlLW91dC1leHBvLCBjb2xvciAuNHM7XG5cbiAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWhvdmVyKTtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwJTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbkBtaXhpbiBidXR0b24tYmxvY2stYXJyb3cge1xuICAgICY6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKC4uL2ltZy9zdGF0aWMvYXJyb3cuc3ZnKSByaWdodCBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCA0cHgsIDApO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGhvdmVyIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWJsb2NrLWFycm93LWhvdmVyO1xuICAgIH1cbn1cblxuQG1peGluIGJ1dHRvbi10ZXh0LWFycm93IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogOHB4IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBsaW5lLWhlaWdodDogMjVweDtcbiAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9pbWcvc3RhdGljL2Fycm93LnN2ZykgcmlnaHQgY2VudGVyIG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgNHB4LCAwKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgIEBpbmNsdWRlIGhvdmVyLXVuZGVybGluZTtcbiAgICB9XG59XG5cbkBtaXhpbiBidXR0b24tdGV4dCB7XG4gICAgLS1jb2xvci10ZXh0OiAjeyRjb2xvci10ZXh0fTtcblxuICAgIHotaW5kZXg6IDE7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgbGluZS1oZWlnaHQ6IDI1cHg7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogNHB4O1xuICAgIHRleHQtdW5kZXJsaW5lLW9mZnNldDogOHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXdlaWdodCAuM3M7XG5cbiAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiA0cHg7XG4gICAgICAgIHRleHQtdW5kZXJsaW5lLW9mZnNldDogOHB4O1xuICAgIH1cbn1cblxuLy8gaG92ZXIgb2YgdGhlIGJ1dHRvbiBibG9ja1xuXG5AbWl4aW4gYnV0dG9uLWJsb2NrLWFycm93LWhvdmVyIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1nL3N0YXRpYy9hcnJvdy5zdmcpIHJpZ2h0IGNlbnRlciBuby1yZXBlYXQ7XG4gICAgfVxufVxuXG4vLyBDb2xvcmluZ1xuXG5AbWl4aW4gYnV0dG9uLWJsb2NrLWNvbG9yZWQoJGJhY2tncm91bmQtY29sb3IsICRjb2xvcikge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG5cbiAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbn1cblxuLy8gQnV0dG9ucyBzdHlsZVxuXG5AbWl4aW4gYnV0dG9uLWJsb2NrLW91dGxpbmUge1xuICAgIC0tY29sb3ItYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbkBtaXhpbiBidXR0b24tYmxvY2stcmV2ZXJzZSB7XG4gICAgLS1jb2xvci10ZXh0OiAjeyRjb2xvci1wcmltYXJ5fTtcbiAgICAtLWNvbG9yLXRleHQtaG92ZXI6ICN7JGNvbG9yLWxpZ2h0fTtcbiAgICAtLWNvbG9yLWJhY2tncm91bmQ6ICN7JGNvbG9yLWxpZ2h0fTtcbiAgICAtLWNvbG9yLWJhY2tncm91bmQtaG92ZXI6ICN7JGNvbG9yLXByaW1hcnl9O1xuICAgIC0tY29sb3ItYm9yZGVyOiAjeyRjb2xvci1wcmltYXJ5fTtcbn1cblxuQG1peGluIGJ1dHRvbi1ibG9jay1yZXZlcnNlLW91dGxpbmUge1xuICAgIC0tY29sb3ItdGV4dDogI3skY29sb3ItcHJpbWFyeX07XG4gICAgLS1jb2xvci10ZXh0LWhvdmVyOiAjeyRjb2xvci1saWdodH07XG4gICAgLS1jb2xvci1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAtLWNvbG9yLWJhY2tncm91bmQtaG92ZXI6ICN7JGNvbG9yLXByaW1hcnl9O1xuICAgIC0tY29sb3ItYm9yZGVyOiAjeyRjb2xvci1wcmltYXJ5fTtcbn1cblxuQG1peGluIGJ1dHRvbi10ZXh0LWNvbG9yZWQge1xuICAgIC0tY29sb3ItdGV4dDogI3skY29sb3ItcHJpbWFyeX07XG59XG5cbiIsIkB1c2UgXCJzYXNzOm1hdGhcIjtcblxuLyoqXG4gKiBDaGVja2JveCBjdXN0b21cbiAqL1xuXG5AbWl4aW4gY2hlY2tib3gtY3VzdG9tKCRjb2xvcjogJGNvbG9yLXByaW1hcnksICRzaXplOiAxOHB4LCAkYm9yZGVyLXdpZHRoOiAxcHgpIHtcbiAgICBAaW5jbHVkZSBzci1vbmx5O1xuXG4gICAgKyBsYWJlbCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJHNpemUgKyAyMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDFweDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogJHNpemU7XG4gICAgICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1saWdodDtcbiAgICAgICAgICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAkY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDdweDtcbiAgICAgICAgICAgIGxlZnQ6IG1hdGgucm91bmQobWF0aC5kaXYoJHNpemUsIDIpKTtcbiAgICAgICAgICAgIHdpZHRoOiBtYXRoLnJvdW5kKG1hdGguZGl2KCRzaXplLCAxLjUpKTtcbiAgICAgICAgICAgIGhlaWdodDogbWF0aC5yb3VuZChtYXRoLmRpdigkc2l6ZSwgMi41KSk7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gICAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAwIDAgMnB4IDJweDtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycztcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSgtNDVkZWcpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gY2hlY2tib3gtY3VzdG9tLWNoZWNrZWQge1xuICAgICsgbGFiZWwge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBDbGVhcmZsZXggOiBjbGVhcjpsZWZ0IGZvciBmbGV4Ym94XG4gKi9cblxuQG1peGluIGNsZWFyZmxleCB7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICB9XG59XG4iLCIvKipcbiAqIENvbnRhaW5lclxuICovXG5cbkBtaXhpbiBjb250YWluZXIge1xuICAgIC8vIHdpZHRoOiAkY29udGFpbmVyLXdpZGU7XG4gICAgd2lkdGg6IDE0NDBweDtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtICN7JGV4dGVybmFsLWd1dHRlciAqIDJ9KTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbn1cbiIsIi8qKlxuICogRGVjbGFyZSBmb250IGZhY2VcbiAqXG4gKiB1c2VkIGluIGJhc2UvX2ZvbnRzLnNjc3NcbiAqL1xuXG5AbWl4aW4gZGVjbGFyZS1mb250LWZhY2UoJGZvbnQtZmFtaWx5LCAkZm9udC1maWxlbmFtZSwgJGZvbnQtd2VpZ2h0IDogbm9ybWFsLCAkZm9udC1zdHlsZSA6bm9ybWFsLCAkZm9udC1zdHJldGNoIDogbm9ybWFsKSB7XG5cbiAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiI3skZm9udC1mYW1pbHl9XCI7XG4gICAgICAgIGZvbnQtc3R5bGU6ICRmb250LXN0eWxlO1xuICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0O1xuICAgICAgICBmb250LXN0cmV0Y2g6ICRmb250LXN0cmV0Y2g7XG4gICAgICAgIHNyYzogdXJsKCN7JGZvbnQtZmlsZW5hbWV9LndvZmYyKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzAtMTBGRkZGOyAvKiBjdXR0aW5nIG9mIHRoZSBmb250IGZpbGUgZm9yIGJldHRlciBsb2FkaW5nICovXG4gICAgfVxufVxuIiwiLyoqXG4gKiBFZGl0b3Igc3R5bGUgb25seVxuICpcbiAqICAgICAgU3R5bGUgaW5zaWRlIHRoZSBtaXhpbiB3aGlsZSBiZSB3cml0ZWQgb25seSBmb3IgZWRpdG9yLnNjc3NcbiAqXG4gKiAgICAgIEBpbmNsdWRlIGVkaXRvci1vbmx5IHtcbiAqICAgICAgICAgIC4uLiBjc3Mgb25seSBmb3IgdGhlIGd1dGVuYmVyZyBlZGl0b3JcbiAqICAgICAgfVxuICpcbiAqICAgICAgdGhlIHZhcmlhYmxlICRlbnRyeS1maWxlLW5hbWUgaXMgZGVmaW5lZCBpbiBzdHlsZS5zY3NzIGFuZCBlZGl0b3Iuc2Nzc1xuICovXG5cbkBtaXhpbiBlZGl0b3Itb25seSB7XG4gICAgQGlmICgkZW50cnktZmlsZS1uYW1lID09IFwiZWRpdG9yXCIpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBIZWFkaW5nIG1peGluc1xuICovXG5cbkBtaXhpbiBoZWFkaW5nKCRuYW1lOiBoMSkge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktc2FucztcbiAgICBmb250LXdlaWdodDogNDAwO1xuXG4gICAgQGlmICRuYW1lID09IGgxIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1oZWFkaW5nLS1mb250LXNpemUtaDEpO1xuICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0taGVhZGluZy0tbGluZS1oZWlnaHQtaDEpO1xuXHRcdCAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIH1cblxuICAgIEBpZiAkbmFtZSA9PSBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0taGVhZGluZy0tZm9udC1zaXplLWgyKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLWhlYWRpbmctLWxpbmUtaGVpZ2h0LWgyKTtcbiAgICB9XG5cbiAgICBAaWYgJG5hbWUgPT0gaDMge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWhlYWRpbmctLWZvbnQtc2l6ZS1oMyk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1oZWFkaW5nLS1saW5lLWhlaWdodC1oMyk7XG4gICAgfVxuXG4gICAgQGlmICRuYW1lID09IGg0IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1oZWFkaW5nLS1mb250LXNpemUtaDQpO1xuICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0taGVhZGluZy0tbGluZS1oZWlnaHQtaDQpO1xuICAgIH1cblxuICAgIEBpZiAkbmFtZSA9PSBoNSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0taGVhZGluZy0tZm9udC1zaXplLWg1KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLWhlYWRpbmctLWxpbmUtaGVpZ2h0LWg1KTtcbiAgICB9XG5cbiAgICBAaWYgJG5hbWUgPT0gaDYge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWhlYWRpbmctLWZvbnQtc2l6ZS1oNik7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1oZWFkaW5nLS1saW5lLWhlaWdodC1oNik7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBIb3ZlclxuICpcbiAqICAgICAgICAgIEhvdmVyIEFjdGl2ZSBGb2N1cyBwc2V1ZG8gc2VsZWN0b3IgbWl4aW5cbiAqL1xuXG5AbWl4aW4gaG92ZXIge1xuICAgICY6aG92ZXIsXG4gICAgJjphY3RpdmUsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGhvdmVyLXVuZGVybGluZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMnB4O1xuICAgIHRleHQtdW5kZXJsaW5lLW9mZnNldDogM3B4O1xufVxuIiwiLyoqXG4gKiAyLiBJbWFnZXNcbiAqL1xuXG4vLyBJbWFnZSByZXNwb25zaXZlXG5AbWl4aW4gaW1nX19yZXNwb25zaXZlKCRtYXgtd2lkdGg6IDEwMCUpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gICAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vLyBPYmplY3QgRml0IHBvbHlmaWxsXG5AbWl4aW4gb2JqZWN0LWZpdCgkZml0OiBjb3ZlciwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICAgb2JqZWN0LWZpdDogJGZpdDtcblxuICAgIEBpZiAkcG9zaXRpb24ge1xuICAgICAgICBvYmplY3QtcG9zaXRpb246ICRwb3NpdGlvbjtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwib2JqZWN0LWZpdDogI3skZml0fTsgb2JqZWN0LXBvc2l0aW9uOiAjeyRwb3NpdGlvbn1cIjtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwib2JqZWN0LWZpdDogI3skZml0fVwiO1xuICAgIH1cbn1cblxuLy8gZXhhbXBsZSBAaW5jbHVkZSBlYXN5LWZpdCgyMCUsY29udGFpbixjZW50ZXIgY2VudGVyKTtcbkBtaXhpbiBlYXN5LWZpdCgkcmF0aW86IDEwMCUsICRmaXQ6IGNvdmVyLCAkcG9zaXRpb246IG51bGwsICRkZWJ1ZzogbnVsbCkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIEBpZiAkZGVidWcge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDBmO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG5cbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcmF0aW87XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG5cbiAgICAgICAgQGlmICRkZWJ1ZyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMGZmO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBpbWcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYm9yZGVyOiAwO1xuXG4gICAgICAgIEBpbmNsdWRlIG9iamVjdC1maXQoJGZpdCwkcG9zaXRpb24pO1xuICAgIH1cblxufVxuIiwiLyoqXG4gKiBQbGFjZWhvbGRlclxuICovXG5cbkBtaXhpbiBwbGFjZWhvbGRlciB7XG4gICAgJHBsYWNlaG9sZGVyczogXCI6cGxhY2Vob2xkZXJcIiwgXCI6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlclwiIFwiOi1tb3otcGxhY2Vob2xkZXJcIiBcIi1tb3otcGxhY2Vob2xkZXJcIiBcIi1tcy1pbnB1dC1wbGFjZWhvbGRlclwiO1xuXG4gICAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xuICAgICAgICAmOiN7JHBsYWNlaG9sZGVyfSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogUGxhY2Vob2xkZXIgbWVkaWFcbiAqL1xuXG5AbWl4aW4gcGxhY2Vob2xkZXItbWVkaWEoJHdpZHRoLCAkaGVpZ2h0LCAkdGFyZ2V0czogXCJpbWdcIiwgJG9iamVjdC1maXQ6IFwiXCIpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBAaW5jbHVkZSBwbGFjZWhvbGRlci1tZWRpYS1zaXplKCR3aWR0aCwgJGhlaWdodCk7XG5cbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfVxuXG4gICAgLmxhenlsb2FkLFxuICAgIC5sYXp5bG9hZGluZyB7XG4gICAgICAgIGhlaWdodDogMDtcbiAgICB9XG5cbiAgICAjeyR0YXJnZXRzfSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIEBpZiAoJG9iamVjdC1maXQgIT0gXCJcIikge1xuICAgICAgICBpbWcge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6ICRvYmplY3QtZml0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gcGxhY2Vob2xkZXItbWVkaWEtc2l6ZSgkd2lkdGgsICRoZWlnaHQpIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogJGhlaWdodCAvICR3aWR0aCAqIDEwMCU7XG59XG4iLCIvKipcbiAqIFJhZGlvIGN1c3RvbSwgbXVzdCBiZSB1c2VkIHdpdGggY2hlY2tib3ggY3VzdG9tXG4gKi9cblxuQG1peGluIHJhZGlvLWN1c3RvbSgkaW5jbHVkZS1jaGVja2JveC1zdHlsZTogZmFsc2UsICRjb2xvcjogJGNvbG9yLXByaW1hcnksICRzaXplOiAxOHB4LCAkYm9yZGVyLXdpZHRoOiAxcHgpIHtcbiAgICBAaWYgKCRpbmNsdWRlLWNoZWNrYm94LXN0eWxlKSB7XG4gICAgICAgIEBpbmNsdWRlIGNoZWNrYm94LWN1c3RvbSgkY29sb3IsICRzaXplLCAkYm9yZGVyLXdpZHRoKTtcbiAgICB9XG5cbiAgICArIGxhYmVsIHtcbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIHRvcDogI3sxcHggKyAkc2l6ZSAqICAuNX07XG4gICAgICAgICAgICB3aWR0aDogJHNpemUgKiAgLjU7XG4gICAgICAgICAgICBoZWlnaHQ6ICRzaXplICogIC41O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gcmFkaW8tY3VzdG9tLWNoZWNrZWQoKSB7XG4gICAgQGluY2x1ZGUgY2hlY2tib3gtY3VzdG9tLWNoZWNrZWQ7XG59XG4iLCIvKipcbiAqIFJvdyBmdWxsd2lkdGhcbiAqL1xuXG5AbWl4aW4gcm93LWZ1bGx3aWR0aCgkcG9zaXRpb246IHJlbGF0aXZlKSB7XG4gICAgcG9zaXRpb246ICRwb3NpdGlvbjtcbiAgICBsZWZ0OiA1MCU7XG4gICAgei1pbmRleDogMTtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgbWFyZ2luLWxlZnQ6IC01MHZ3O1xufVxuIiwiLyoqXG4gKiBTY3JvbGxiYXIgaW52aXNpYmxlXG4gKlxuICogICAgICAvIVxcIEFMRVJUIDogRG9uJ3QgdXNlIHRoaXMgbWl4aW4gbmVpdGhlciBvbiB0aGUgaHRtbCBlbGVtZW50LCBub3Igb24gdGhlIGJvZHkgZWxlbWVudCB0byBhdm9pZCBkZXRlcmlvcmF0aW5nIGFjY2Vzc2liaWxpdHlcbiAqL1xuXG5AbWl4aW4gc2Nyb2xsYmFyLWludmlzaWJsZSB7XG4gICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOyAgLyogSUUgYW5kIEVkZ2UgKi9cbiAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7ICAvKiBGaXJlZm94ICovXG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vKipcbiAqIFNjcm9sbGJhciBjb2xvclxuICovXG5cbkBtaXhpbiBzY3JvbGxiYXItY29sb3IoJHNpemUsICRzY3JvbGxiYXItY29sb3IsICR0cmFjay1jb2xvcikge1xuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHNjcm9sbGJhci1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR0cmFjay1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQHVzZSBcInNhc3M6Y29sb3JcIjtcblxuLyoqXG4gKiBTZWxlY3QgY3VzdG9tXG4gKi9cblxuQG1peGluIHNlbGVjdC1jdXN0b20ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTsgLyogdXNlZnVsIHdoZW4gd2lkdGggaXMgc2V0IHRvIGFueXRoaW5nIG90aGVyIHRoYW4gMTAwJSAqL1xuICAgIHBhZGRpbmc6IDE1cHggMjVweDtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAxNnB4OyAvLyBwcmV2ZW50IGlPUyB6b29tXG4gICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgY29sb3I6ICRjb2xvci10ZXh0O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1saWdodDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBnZXQtc3ZnLXVybChcImRvd25cIiksIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICRjb2xvci1saWdodCAwJSwgJGNvbG9yLWxpZ2h0IDEwMCUpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQsIHJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAxMHB4IHRvcCA1MCUsIDAgMDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwcHggYXV0bywgMTAwJTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItZ3JleS01MDA7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgLy8gU2V0IG9wdGlvbnMgdG8gbm9ybWFsIHdlaWdodFxuICAgIG9wdGlvbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgfVxuXG4gICAgLy8gSGlkZSBhcnJvdyBpY29uIGluIElFIGJyb3dzZXJzXG4gICAgJjo6LW1zLWV4cGFuZCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gSG92ZXIgc3R5bGVcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBjb2xvci5hZGp1c3QoJGNvbG9yLWdyZXktNTAwLCAkbGlnaHRuZXNzOiAtMTAlKTtcbiAgICB9XG5cbiAgICAvLyBGb2N1cyBzdHlsZVxuICAgICY6Zm9jdXMge1xuICAgICAgICBjb2xvcjogY29sb3IuYWRqdXN0KCRjb2xvci10ZXh0LCAkbGlnaHRuZXNzOiAtMTAlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBjb2xvci5hZGp1c3QoJGNvbG9yLWdyZXktNTAwLCAkbGlnaHRuZXNzOiAtMjAlKTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDFweCAzcHggcmdiYSg1OSwgMTUzLCAyNTIsIC43KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IC1tb3otbWFjLWZvY3VzcmluZztcblxuICAgICAgICBvcHRpb24ge1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN1cHBvcnQgZm9yIHJ0bCB0ZXh0LCBleHBsaWNpdCBzdXBwb3J0IGZvciBBcmFiaWMgYW5kIEhlYnJld1xuICAgICpbZGlyPVwicnRsXCJdICYsXG4gICAgOnJvb3Q6bGFuZyhhcikgJixcbiAgICA6cm9vdDpsYW5nKGl3KSAmIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCAxMHB4IHRvcCA1MCUsIDAgMDtcbiAgICB9XG59XG4iLCIvKlxuXHRJbXByb3ZlZCBzY3JlZW4gcmVhZGVyIG9ubHkgQ1NTIGNsYXNzXG4gICAgQHNlZSBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9mZm9vZGQvMDAwYjU5ZjQzMWUzZTY0ZTRjZTFhMjRkNWJiMzYwMzRcblx0QGF1dGhvciBHYcOrbCBQb3VwYXJkXG5cdFx0QG5vdGUgQmFzZWQgb24gWWFob28hJ3MgdGVjaG5pcXVlXG5cdFx0QGF1dGhvciBUaGllcnJ5IEtvYmxlbnR6XG5cdFx0QHNlZSBodHRwczovL2RldmVsb3Blci55YWhvby5jb20vYmxvZ3MveWRuL2NsaXAtaGlkZGVuLWNvbnRlbnQtYmV0dGVyLWFjY2Vzc2liaWxpdHktNTM0NTYuaHRtbFxuXHQqIDEuXG5cdFx0QG5vdGUgYGNsaXBgIGlzIGRlcHJlY2F0ZWQgYnV0IHdvcmtzIGV2ZXJ5d2hlcmVcblx0XHRAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jbGlwXG5cdCogMi5cblx0XHRAbm90ZSBgY2xpcC1wYXRoYCBpcyB0aGUgZnV0dXJlLXByb29mIHZlcnNpb24sIGJ1dCBub3QgdmVyeSB3ZWxsIHN1cHBvcnRlZCB5ZXRcblx0XHRAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jbGlwLXBhdGhcblx0XHRAc2VlIGh0dHA6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPWNsaXAtcGF0aFxuXHRcdEBhdXRob3IgWXZhaW4gTGllY2h0aVxuXHRcdEBzZWUgaHR0cHM6Ly90d2l0dGVyLmNvbS9yeXVyYW43OC9zdGF0dXMvNzc4OTQzMzg5ODE5NjA0OTkyXG5cdCogMy5cblx0XHRAbm90ZSBwcmV2ZW50aW5nIHRleHQgdG8gYmUgY29uZGVuc2VkXG5cdFx0YXV0aG9yIEouIFJlbsOpZSBCZWFjaFxuXHRcdEBzZWUgaHR0cHM6Ly9tZWRpdW0uY29tL0BqZXNzZWJlYWNoL2Jld2FyZS1zbXVzaGVkLW9mZi1zY3JlZW4tYWNjZXNzaWJsZS10ZXh0LTU5NTJhNGMyY2JmZVxuXHRcdEBub3RlIERydXBhbCA4IGdvZXMgd2l0aCB3b3JkLXdyYXA6IG5vcm1hbCBpbnN0ZWFkXG5cdFx0QHNlZSBodHRwczovL3d3dy5kcnVwYWwub3JnL25vZGUvMjA0NTE1MVxuXHRcdEBzZWUgaHR0cDovL2NnaXQuZHJ1cGFsY29kZS5vcmcvZHJ1cGFsL2NvbW1pdC8/aWQ9NWI4NDdlYVxuXHQqIDQuXG5cdFx0QG5vdGUgIWltcG9ydGFudCBpcyBpbXBvcnRhbnRcblx0XHRAbm90ZSBPYnZpb3VzbHkgeW91IHdhbm5hIGhpZGUgc29tZXRoaW5nXG5cdFx0QGF1dGhvciBIYXJyeSBSb2JlcnRzXG5cdFx0QHNlZSBodHRwczovL2Nzc3dpemFyZHJ5LmNvbS8yMDE2LzA1L3RoZS1pbXBvcnRhbmNlLW9mLWltcG9ydGFudC9cbiovXG5cbkBtaXhpbiBzci1vbmx5KCRmb2N1c2FibGU6IGZhbHNlKSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxcHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgY2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpICFpbXBvcnRhbnQ7IC8qIDEgKi9cbiAgICBjbGlwLXBhdGg6IGluc2V0KDUwJSkgIWltcG9ydGFudDsgLyogMiAqL1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsgLyogMyAqL1xuICAgIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuXG4gICAgQGlmICRmb2N1c2FibGUge1xuICAgICAgICAmOmZvY3VzLFxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjbGlwOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjbGlwLXBhdGg6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogU3R5bGUgb25seVxuICpcbiAqICAgICAgU3R5bGUgaW5zaWRlIHRoZSBtaXhpbiB3aGlsZSBiZSB3cml0ZWQgb25seSBmb3Igc3R5bGUuc2Nzc1xuICpcbiAqICAgICAgQGluY2x1ZGUgc3R5bGUtb25seSB7XG4gKiAgICAgICAgICAuLi4gY3NzIG9ubHkgZm9yIHRoZSBmcm9udCBvZmZpY2VcbiAqICAgICAgfVxuICpcbiAqICAgICAgdGhlIHZhcmlhYmxlICRlbnRyeS1maWxlLW5hbWUgaXMgZGVmaW5lZCBpbiBzdHlsZS5zY3NzIGFuZCBlZGl0b3Iuc2Nzc1xuICovXG5cbkBtaXhpbiBzdHlsZS1vbmx5IHtcbiAgICBAaWYgKCRlbnRyeS1maWxlLW5hbWUgPT0gXCJzdHlsZVwiKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogQmFzZSBmb2xkZXIgZW50cnkgZmlsZVxuICovXG5cbkBpbXBvcnQgXCIuL2ZvbnRzXCI7XG5AaW1wb3J0IFwiLi9jdXN0b20tcHJvcGVydGllc1wiO1xuQGltcG9ydCBcIi4vbm9ybWFsaXplXCI7XG5AaW1wb3J0IFwiLi9zdmctaWNvbnNcIjtcbkBpbXBvcnQgXCIuL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi9mb3Jtc1wiO1xuQGltcG9ydCBcIi4vbGlua3NcIjtcbkBpbXBvcnQgXCIuL20taW1hZ2VcIjtcbkBpbXBvcnQgXCIuL21lZGlhXCI7XG5AaW1wb3J0IFwiLi90ZXh0XCI7XG4iLCJcbi8vIFpvZGlha1xuXG4vKipcbiAqIFRoaXMgaXMgYSB2YXJpYWJsZSBmb250XG4gKiBZb3UgY2FuIGNvbnRyb2xsIHZhcmlhYmxlIGF4ZXMgYXMgc2hvd24gYmVsb3c6XG4gKiBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDkwMC4wO1xuICpcbiAqIGF2YWlsYWJsZSBheGVzOlxuXG4gKiAnd2dodCcgKHJhbmdlIGZyb20gMTAwLjAgdG8gOTAwLjApXG5cbiAqL1xuQGluY2x1ZGUgZGVjbGFyZS1mb250LWZhY2UoXCJab2RpYWstVmFyaWFibGVcIiwgXCIuLi9mb250cy9ab2RpYWsvWm9kaWFrLVZhcmlhYmxlXCIsIDEwMCA5MDApO1xuQGluY2x1ZGUgZGVjbGFyZS1mb250LWZhY2UoXCJab2RpYWstVmFyaWFibGVJdGFsaWNcIiwgXCIuLi9mb250cy9ab2RpYWsvWm9kaWFrLVZhcmlhYmxlSXRhbGljXCIsIDEwMCA5MDAsIGl0YWxpYyk7XG5cbi8qKlxuKiBUaGlzIGlzIGEgdmFyaWFibGUgZm9udFxuKiBZb3UgY2FuIGNvbnRyb2xsIHZhcmlhYmxlIGF4ZXMgYXMgc2hvd24gYmVsb3c6XG4qIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgNzAwLjA7XG4qXG4qIGF2YWlsYWJsZSBheGVzOlxuXG4qICd3Z2h0JyAocmFuZ2UgZnJvbSAyMDAuMCB0byA3MDAuMClcblxuKi9cbkBpbmNsdWRlIGRlY2xhcmUtZm9udC1mYWNlKFwiR2VuZXJhbFNhbnMtVmFyaWFibGVcIiwgXCIuLi9mb250cy9HZW5lcmFsU2Fucy9HZW5lcmFsU2Fucy1WYXJpYWJsZVwiLCAyMDAgNzAwKTtcbiIsIjpyb290IHtcbiAgICAvKlxuICAgICAqIEhlYWRpbmdcbiAgICAgKi9cbiAgICAvLyBGb250IHNpemVcbiAgICAtLWhlYWRpbmctLWZvbnQtc2l6ZS1oMTogI3skZm9udC1zaXplLXh4bH07XG4gICAgLS1oZWFkaW5nLS1mb250LXNpemUtaDI6ICN7JGZvbnQtc2l6ZS1sZ307XG4gICAgLS1oZWFkaW5nLS1mb250LXNpemUtaDM6ICN7JGZvbnQtc2l6ZS1tZH07XG4gICAgLS1oZWFkaW5nLS1mb250LXNpemUtaDQ6ICN7JGZvbnQtc2l6ZS1tZH07XG4gICAgLS1oZWFkaW5nLS1mb250LXNpemUtaDU6ICN7JGZvbnQtc2l6ZS1tZH07XG4gICAgLS1oZWFkaW5nLS1mb250LXNpemUtaDY6ICN7JGZvbnQtc2l6ZS1tZH07XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSkge1xuICAgICAgICAtLWhlYWRpbmctLWZvbnQtc2l6ZS1oMTogI3skZm9udC1zaXplLXh4eGx9O1xuICAgICAgICAtLWhlYWRpbmctLWZvbnQtc2l6ZS1oMjogI3skZm9udC1zaXplLXh4bH07XG4gICAgICAvLyAgIC0taGVhZGluZy0tZm9udC1zaXplLWgzOiAjeyRmb250LXNpemUtbWR9O1xuICAgICAgLy8gICAtLWhlYWRpbmctLWZvbnQtc2l6ZS1oNDogI3skZm9udC1zaXplLWxnfTtcbiAgICAgIC8vICAgLS1oZWFkaW5nLS1mb250LXNpemUtaDU6ICN7JGZvbnQtc2l6ZS1sZ307XG4gICAgICAvLyAgIC0taGVhZGluZy0tZm9udC1zaXplLWg2OiAjeyRmb250LXNpemUtbGd9O1xuICAgIH1cblxuICAgIC8vIExpbmUgaGVpZ2h0XG4gICAgLS1oZWFkaW5nLS1saW5lLWhlaWdodC1oMTogMS4zO1xuICAgIC0taGVhZGluZy0tbGluZS1oZWlnaHQtaDI6IDEuMztcbiAgICAtLWhlYWRpbmctLWxpbmUtaGVpZ2h0LWgzOiAxLjM7XG4gICAgLS1oZWFkaW5nLS1saW5lLWhlaWdodC1oNDogMS4zO1xuICAgIC0taGVhZGluZy0tbGluZS1oZWlnaHQtaDU6IDEuMztcbiAgICAtLWhlYWRpbmctLWxpbmUtaGVpZ2h0LWg2OiAxLjM7XG5cbiAgICAvKlxuXHQqIFRleHRcblx0Ki9cbiAgICAvLyBGb250IHNpemVcbiAgICAtLWZvbnQtc2l6ZS1zbWFsbDogI3skZm9udC1zaXplLXhzfTtcbiAgICAtLWZvbnQtc2l6ZS1ub3JtYWw6ICN7JGZvbnQtc2l6ZS1zbX07XG4gICAgLS1mb250LXNpemUtbWVkaXVtOiAjeyRmb250LXNpemUtYmFzZX07XG4gICAgLS1mb250LXNpemUtbGFyZ2U6ICN7JGZvbnQtc2l6ZS1tZH07XG4gICAgLS1mb250LXNpemUtYmlnOiAjeyRmb250LXNpemUtbGd9O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludHMoc20pIHtcbiAgICAgICAgLS1mb250LXNpemUtc21hbGw6ICN7JGZvbnQtc2l6ZS1zbX07XG4gICAgICAgIC0tZm9udC1zaXplLW5vcm1hbDogI3skZm9udC1zaXplLWJhc2V9O1xuICAgICAgICAtLWZvbnQtc2l6ZS1tZWRpdW06ICN7JGZvbnQtc2l6ZS1tZH07XG4gICAgICAgIC0tZm9udC1zaXplLWxhcmdlOiAjeyRmb250LXNpemUtbGd9O1xuICAgICAgICAtLWZvbnQtc2l6ZS1iaWc6ICN7JGZvbnQtc2l6ZS14bH07XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBTcGFjaW5nXG4gICAgICovXG4gICAgLS1zcGFjaW5nLS1ibG9jay0xOiAxMHB4O1xuICAgIC0tc3BhY2luZy0tYmxvY2stMjogMTVweDtcbiAgICAtLXNwYWNpbmctLWJsb2NrLTM6IDE1cHg7XG4gICAgLS1zcGFjaW5nLS1ibG9jay00OiAzMHB4O1xuICAgIC0tc3BhY2luZy0tYmxvY2stNTogNjBweDtcbiAgICAtLXNwYWNpbmctLWJsb2NrLTY6IDEyMHB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludHMoc20pIHtcbiAgICAgICAgLS1zcGFjaW5nLS1ibG9jay0zOiAzMHB4O1xuICAgICAgICAtLXNwYWNpbmctLWJsb2NrLTQ6IDYwcHg7XG4gICAgICAgIC0tc3BhY2luZy0tYmxvY2stNTogMTIwcHg7XG4gICAgICAgIC0tc3BhY2luZy0tYmxvY2stNjogMjQwcHg7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBBbGlnbm1lbnRzXG4gICAgICovXG4gICAgLS1yZXNwb25zaXZlLS1hbGlnbmRlZmF1bHQtd2lkdGg6IGNhbGMoMTAwJSAtICN7JGV4dGVybmFsLWd1dHRlciAqIDJ9KTtcbiAgICAtLXJlc3BvbnNpdmUtLWFsaWdud2lkZS13aWR0aDogY2FsYygxMDAlIC0gI3skZXh0ZXJuYWwtZ3V0dGVyICogMn0pO1xuICAgIC0tcmVzcG9uc2l2ZS0tYWxpZ25mdWxsLXdpZHRoOiAxMDAlO1xuXG4gICAgLypcbiAgICAgKiBBbGlnbm1lbnRzIGJyZWFrcG9pbnRzXG4gICAgICovXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogI3skY29udGFpbmVyLWRlZmF1bHQgKyAkZXh0ZXJuYWwtZ3V0dGVyICogMn0pIHtcbiAgICAgICAgLS1yZXNwb25zaXZlLS1hbGlnbmRlZmF1bHQtd2lkdGg6ICN7JGNvbnRhaW5lci1kZWZhdWx0fTtcbiAgICB9XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAjeyRjb250YWluZXItd2lkZSArICRleHRlcm5hbC1ndXR0ZXIgKiAyfSkge1xuICAgICAgICAtLXJlc3BvbnNpdmUtLWFsaWdud2lkZS13aWR0aDogI3skY29udGFpbmVyLXdpZGV9O1xuICAgIH1cblxuICAgIC8qXG4gICAgICogR2xvYmFsIGJyZWFrcG9pbnRzXG4gICAgICovXG4gICAgLy8gIEBpbmNsdWRlIGJyZWFrcG9pbnRzKG1kKSB7XG4gICAgLy8gICAgICAvKlxuICAgIC8vICAgICAgICogU3BhY2luZ1xuICAgIC8vICAgICAgICovXG4gICAgLy8gICAgICAtLXNwYWNpbmctLWJsb2NrLTE6IDMycHg7XG4gICAgLy8gICAgICAtLXNwYWNpbmctLWJsb2NrLTI6IDY0cHg7XG4gICAgLy8gICAgICAtLXNwYWNpbmctLWJsb2NrLTM6IDk2cHg7XG4gICAgLy8gICAgICAtLXNwYWNpbmctLWJsb2NrLTQ6IDEyOHB4O1xuICAgIC8vICB9XG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbi8qIERvY3VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuICovXG5cbmh0bWwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qIFNlY3Rpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5ib2R5IHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBgbWFpbmAgZWxlbWVudCBjb25zaXN0ZW50bHkgaW4gSUUuXG4gKi9cblxubWFpbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cbiAqL1xuXG5oMSB7XG4gICAgbWFyZ2luOiAuNjdlbSAwO1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAqL1xuXG5ociB7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogMiAqL1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxucHJlIHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOyAvKiAxICovXG4gICAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICovXG5cbmEge1xuICAgIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDFweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgICB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGRvdHRlZDsgLyogMiAqL1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgLyogMSAqL1xuICAgIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICAgIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgICBib3R0b206IC0uMjVlbTtcbn1cblxuc3VwIHtcbiAgICB0b3A6IC0uNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuaW1nIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gICAgbWFyZ2luOiAwOyAvKiAyICovXG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7IC8qIDEgKi9cbiAgICBmb250LXNpemU6IDEwMCU7IC8qIDEgKi9cbiAgICBsaW5lLWhlaWdodDogMS4xNTsgLyogMSAqL1xufVxuXG4vKipcbiAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCB7IC8qIDEgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3QgeyAvKiAxICovXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmZpZWxkc2V0IHtcbiAgICBwYWRkaW5nOiAuMzVlbSAuNzVlbSAuNjI1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmxlZ2VuZCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICAgIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXG4gICAgcGFkZGluZzogMDsgLyogMyAqL1xuICAgIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMSAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxucHJvZ3Jlc3Mge1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDEwKy5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG4gKi9cblxuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuICovXG5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICAgIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbn1cblxuLyogSW50ZXJhY3RpdmVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxuICovXG5cbmRldGFpbHMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbn1cblxuLyogTWlzY1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gKi9cblxudGVtcGxhdGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG4gKi9cblxuW2hpZGRlbl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIuaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cbiIsIi8qKlxuICogUmVzZXQgc3BlY2lmaWMgZWxlbWVudHMgdG8gbWFrZSB0aGVtIGVhc2llciB0byBzdHlsZSBpbiBvdGhlciBjb250ZXh0cy5cbiAqL1xuXG5odG1sLFxuYm9keSxcbnAsXG5vbCxcbnVsLFxubGksXG5kbCxcbmR0LFxuZGQsXG5ibG9ja3F1b3RlLFxuZmlndXJlLFxuZmllbGRzZXQsXG5mb3JtLFxubGVnZW5kLFxudGV4dGFyZWEsXG5wcmUsXG5pZnJhbWUsXG5ocixcbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNiB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbn1cblxuLyoqXG4gICogQXBwbHkgZ2VuZXJpYyBib3JkZXItYm94IHRvIGFsbCBlbGVtZW50cy5cbiAgKiBTZWU6XG4gICogaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9pbmhlcml0aW5nLWJveC1zaXppbmctcHJvYmFibHktc2xpZ2h0bHktYmV0dGVyLWJlc3QtcHJhY3RpY2UvXG4gICovXG5cbmh0bWwge1xuICAgIC8qIEFwcGx5IGJvcmRlci1ib3ggYWNyb3NzIHRoZSBlbnRpcmUgcGFnZS4gKi9cbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgLy8gSFRNTCByZXNldHNcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXByaW1hcnk7XG4gICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXG4gICAgLy8gU2Nyb2xsIHJlc2V0c1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcblxuICAgIC8vIEZvbnRzIHJlc2V0c1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgdGV4dC1yZW5kZXJpbmc6IGF1dG87XG59XG5cbi8qKlxuICAqIFJlbGF4IHRoZSBkZWZpbml0aW9uIGEgYml0LCB0byBhbGxvdyBjb21wb25lbnRzIHRvIG92ZXJyaWRlIGl0IG1hbnVhbGx5LlxuICAqL1xuKiB7XG4gICAgJixcbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAgIH1cbn1cblxuLy8gYm9keSByZXNldHNcbmJvZHkge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktcHJpbWFyeTtcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGNvbG9yOiAkY29sb3ItdGV4dDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1saWdodDtcbn1cblxuYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxufVxuIiwiQHVzZSBcInNhc3M6Y29sb3JcIjtcblxuLy8gQWxsIGlucHV0cyB2YXJpYWJsZXNcbiR0ZXh0LWlucHV0cy1saXN0OiAnaW5wdXRbdHlwZT1cImNvbG9yXCJdJywgJ2lucHV0W3R5cGU9XCJkYXRlXCJdJyxcbiAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdJywgJ2lucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXScsXG4gICAgJ2lucHV0W3R5cGU9XCJlbWFpbFwiXScsICdpbnB1dFt0eXBlPVwibW9udGhcIl0nLCAnaW5wdXRbdHlwZT1cIm51bWJlclwiXScsXG4gICAgJ2lucHV0W3R5cGU9XCJwYXNzd29yZFwiXScsICdpbnB1dFt0eXBlPVwic2VhcmNoXCJdJywgJ2lucHV0W3R5cGU9XCJ0ZWxcIl0nLFxuICAgICdpbnB1dFt0eXBlPVwidGV4dFwiXScsICdpbnB1dFt0eXBlPVwidGltZVwiXScsICdpbnB1dFt0eXBlPVwidXJsXCJdJyxcbiAgICAnaW5wdXRbdHlwZT1cIndlZWtcIl0nLCBcImlucHV0Om5vdChbdHlwZV0pXCIsIFwidGV4dGFyZWFcIjtcblxuJGFsbC10ZXh0LWlucHV0czogYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCk7XG5cbi8vIFRleHRhcmVhXG50ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbn1cblxuI3skYWxsLXRleHQtaW5wdXRzfSxcbnRleHRhcmVhIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDE1cHggMjVweDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXByaW1hcnk7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6ICRjb2xvci10ZXh0O1xuICAgIGJhY2tncm91bmQ6IGNvbG9yLmFkanVzdCgkY29sb3ItbGlnaHQsICRsaWdodG5lc3M6IC01JSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLWdyZXktNTAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7IC8vcmVzZXQgYm9yZGVyIHJhZGl1cyBmb3IgaW9zXG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIC41cyBlYXNlO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiBjb2xvci5hZGp1c3QoJGNvbG9yLXRleHQsICRsaWdodG5lc3M6IDUwJSk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogY29sb3IuYWRqdXN0KCRjb2xvci1ncmV5LTUwMCwgJGxpZ2h0bmVzczogLTEwJSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGNvbG9yOiBjb2xvci5hZGp1c3QoJGNvbG9yLXRleHQsICRsaWdodG5lc3M6IC0xMCUpO1xuICAgICAgICBib3JkZXItY29sb3I6IGNvbG9yLmFkanVzdCgkY29sb3ItZ3JleS01MDAsICRsaWdodG5lc3M6IC0yMCUpO1xuICAgIH1cbn1cblxuLy8gTGFiZWxcbmxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLy8gQ3VzdG9tIHNlbGVjdFxuc2VsZWN0IHtcbiAgICBAaW5jbHVkZSBzZWxlY3QtY3VzdG9tO1xufVxuXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICAgIEBpbmNsdWRlIGNoZWNrYm94LWN1c3RvbTtcblxuICAgICY6Y2hlY2tlZCB7XG4gICAgICAgIEBpbmNsdWRlIGNoZWNrYm94LWN1c3RvbS1jaGVja2VkO1xuICAgIH1cbn1cblxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgICBAaW5jbHVkZSByYWRpby1jdXN0b207XG59XG5cbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgIEBleHRlbmQgJWJ1dHRvbi1ibG9jaztcbn1cblxuaW5wdXRbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBAZXh0ZW5kICVidXR0b24tYmxvY2stb3V0bGluZTtcbn1cbiIsImEge1xuICAgIGNvbG9yOiBjdXJyZW50Q29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZXktMjAwO1xuICAgIH1cbn1cbiIsIi5tLWltZy13cmFwIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDEwMCU7XG5cbiAgICBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgICYtLW9maXQge1xuICAgICAgICBpbWcge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJlbWJlZCxcbmlmcmFtZSxcbm9iamVjdCxcbnZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG59XG4iLCJiLFxuc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG5kZm4sXG5jaXRlLFxuZW0sXG5pIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbnByZSB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xufVxuIiwiaHRtbCB7XG4gICAgYSxcbiAgICBidXR0b24sXG4gICAgaW5wdXQsXG4gICAgc2VsZWN0LFxuICAgIHRleHRhcmVhLFxuICAgIFt0YWJpbmRleF0ge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBbZGF0YS1zZW8tY29udGFpbmVyXSB7XG4gICAgICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAqOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdChbZGF0YS13aGF0aW50ZW50PVwia2V5Ym9hcmRcIl0pIHtcbiAgICAgICAgYSxcbiAgICAgICAgYnV0dG9uLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc2VsZWN0LFxuICAgICAgICB0ZXh0YXJlYSxcbiAgICAgICAgW3RhYmluZGV4XSB7XG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgW2RhdGEtc2VvLWNvbnRhaW5lcl0ge1xuICAgICAgICAgICAgJjpmb2N1cy13aXRoaW4sXG4gICAgICAgICAgICAqOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmxhenlsb2FkLFxuLmxhenlsb2FkaW5nIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcbiAgICBvcGFjaXR5OiAwO1xufVxuXG4ubGF6eWxvYWRlZCB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC41cztcbn1cblxuLy8gY3NzIGxvYWRpbmcgZm9yIGJnc2V0IGl0ZW1zXG4vLyB3aXRoIGJhc2ljc3Bpbm5lclxuJGxvYWRpbmctZGltZW5zaW9uczogNTBweDtcblxuW2RhdGEtYmdzZXRdIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgb3BhY2l0eTogMTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuNXMsIHotaW5kZXggLjVzIGVhc2UgLjVzO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IGNhbGMoNTAlIC0gI3skbG9hZGluZy1kaW1lbnNpb25zICogLjV9KTtcbiAgICAgICAgbGVmdDogY2FsYyg1MCUgLSAjeyRsb2FkaW5nLWRpbWVuc2lvbnMgKiAuNX0pO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICB3aWR0aDogJGxvYWRpbmctZGltZW5zaW9ucztcbiAgICAgICAgaGVpZ2h0OiAkbG9hZGluZy1kaW1lbnNpb25zO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBib3JkZXI6IDVweCBzb2xpZCAkY29sb3ItbGlnaHQ7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbG9hZGluZy1kaW1lbnNpb25zO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC41cywgei1pbmRleCAuNXMgZWFzZSAuNXM7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBhbmltYXRpb246IGxvYWRpbmcgLjVzIGxpbmVhciBpbmZpbml0ZTtcbiAgICB9XG5cbiAgICAmLmxhenlsb2FkIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuNXM7XG4gICAgfVxuXG4gICAgJi5sYXp5bG9hZGVkIHtcbiAgICAgICAgJjo6YWZ0ZXIsXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbG9hZGluZyB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICB9XG59XG4iLCJbZGF0YS1zZW8tY29udGFpbmVyXSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgW2RhdGEtc2VvLXRhcmdldF0ge1xuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgei1pbmRleDogMTAwO1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi52aWRlby13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAyNXB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7IC8qIDE2OjkgKi9cbiAgICBsaW5lLWhlaWdodDogMDtcblxuICAgIGlmcmFtZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbn1cbiIsIkBlYWNoICRuYW1lLCAkY29sb3JcbiAgICBpbiAoXG4gICAgICAgIFwicHJpbWFyeVwiOiAkY29sb3ItcHJpbWFyeSxcbiAgICAgICAgXCJzZWNvbmRhcnlcIjogJGNvbG9yLXNlY29uZGFyeSxcbiAgICAgICAgXCJkYXJrXCIgOiAkY29sb3ItZGFyayxcbiAgICAgICAgXCJsaWdodFwiIDogJGNvbG9yLWxpZ2h0LFxuICAgICAgICBcImxpZ2h0LWdyZXlcIiA6ICRjb2xvci1ncmV5LWxpZ2h0LFxuICAgICAgICBcIm1lZGl1bS1ncmV5XCIgOiAkY29sb3ItZ3JleS1tZWRpdW0sXG4gICAgKSB7XG4gICAgLmhhcy0jeyRuYW1lfS1jb2xvciB7XG4gICAgICAgIGNvbG9yOiAjeyRjb2xvcn07XG4gICAgfVxuXG4gICAgLmhhcy0jeyRuYW1lfS1iYWNrZ3JvdW5kLWNvbG9yIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI3skY29sb3J9O1xuICAgIH1cbn1cbiIsIi8qIE1haW4gTGF5b3V0ICovXG4uY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBjb250YWluZXI7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhtZCkge1xuICAgICAgICAmLmJsb2Nrcy1jb250YWluZXIsXG4gICAgICAgICYuY29udGFpbmVyLS1jb250ZW50IHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJG1lbnUtZGVza3RvcC13aWR0aDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5zci1vbmx5IHtcbiAgICBAaW5jbHVkZSBzci1vbmx5O1xufVxuXG4uc3Itb25seS1mb2N1c2FibGUge1xuICAgIEBpbmNsdWRlIHNyLW9ubHkodHJ1ZSk7XG59XG4iLCJkaXYjY21wbHotbWFuYWdlLWNvbnNlbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIvKipcbiAqIEVsZW1lbnRzIGZvbGRlciBlbnRyeSBmaWxlXG4gKi9cblxuQGltcG9ydCBcIi4vYnV0dG9uXCI7XG5AaW1wb3J0IFwiLi9idXR0b25zLXdyYXBcIjtcbkBpbXBvcnQgXCIuL2luZm8tdGFibGVcIjtcbkBpbXBvcnQgXCIuL2RhdGEtdmlzdWFsaXphdGlvblwiO1xuQGltcG9ydCBcIi4vY29kZWJvb2tzXCI7XG4iLCIlYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBidXR0b247XG59XG5cbiVidXR0b24tYmxvY2sge1xuICAgIEBleHRlbmQgJWJ1dHRvbjtcbiAgICBAaW5jbHVkZSBidXR0b24tYmxvY2s7XG59XG5cbiVidXR0b24tYmxvY2stYXJyb3cge1xuICAgIEBleHRlbmQgJWJ1dHRvbi1ibG9jaztcbiAgICBAaW5jbHVkZSBidXR0b24tYmxvY2stYXJyb3c7XG59XG5cbiVidXR0b24tYmxvY2stb3V0bGluZSB7XG4gICAgQGV4dGVuZCAlYnV0dG9uLWJsb2NrO1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ibG9jay1vdXRsaW5lO1xufVxuXG4lYnV0dG9uLWJsb2NrLXJldmVyc2Uge1xuICAgIEBleHRlbmQgJWJ1dHRvbi1ibG9jaztcbiAgICBAaW5jbHVkZSBidXR0b24tYmxvY2stcmV2ZXJzZTtcbn1cblxuJWJ1dHRvbi1ibG9jay1yZXZlcnNlLW91dGxpbmUge1xuICAgIEBleHRlbmQgJWJ1dHRvbi1ibG9jaztcbiAgICBAaW5jbHVkZSBidXR0b24tYmxvY2stcmV2ZXJzZS1vdXRsaW5lO1xufVxuXG4lYnV0dG9uLXRleHQtYXJyb3cge1xuICAgIEBleHRlbmQgJWJ1dHRvbjtcbiAgICBAaW5jbHVkZSBidXR0b24tdGV4dC1hcnJvdztcbn1cblxuJWJ1dHRvbi10ZXh0IHtcbiAgICBAZXh0ZW5kICVidXR0b247XG4gICAgQGluY2x1ZGUgYnV0dG9uLXRleHQ7XG59XG5cbiVidXR0b24tdGV4dC1jb2xvcmVkIHtcbiAgICBAZXh0ZW5kICVidXR0b24tdGV4dDtcbiAgICBAaW5jbHVkZSBidXR0b24tdGV4dC1jb2xvcmVkO1xufVxuXG4uYnV0dG9uIHtcbiAgICBAZXh0ZW5kICVidXR0b247XG59XG5cbi5idXR0b24tYmxvY2sge1xuICAgIEBleHRlbmQgJWJ1dHRvbi1ibG9jaztcbn1cblxuLmJ1dHRvbi1ibG9jay1hcnJvdyB7XG4gICAgQGV4dGVuZCAlYnV0dG9uLWJsb2NrLWFycm93O1xufVxuXG4uYnV0dG9uLW91dGxpbmUge1xuICAgIEBleHRlbmQgJWJ1dHRvbi1ibG9jay1vdXRsaW5lO1xufVxuXG4uYnV0dG9uLXJldmVyc2Utb3V0bGluZSB7XG4gICAgQGV4dGVuZCAlYnV0dG9uLWJsb2NrLXJldmVyc2Utb3V0bGluZTtcbn1cblxuLmJ1dHRvbi10ZXh0IHtcbiAgICBAZXh0ZW5kICVidXR0b24tdGV4dDtcbn1cblxuLmJ1dHRvbi10ZXh0LWNvbG9yZWQge1xuICAgIEBleHRlbmQgJWJ1dHRvbi10ZXh0LWNvbG9yZWQ7XG59XG4iLCIuYnV0dG9ucy1jb250YWluZXIge1xuXHRjb250YWluZXItdHlwZTogaW5saW5lLXNpemU7XG5cdGNvbnRhaW5lci1uYW1lOiBidXR0b25zLXdyYXA7XG5cbiAgIC8vICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSwgbWF4KSB7XG4gICAvLyAgICAgIC5idXR0b24ge1xuICAgLy8gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAvLyAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0yKTtcbiAgIC8vICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgLy8gICAgICAgICAgJi10ZXh0IHtcbiAgIC8vICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNpbmctLWJsb2NrLTIpICogMik7XG4gICAvLyAgICAgICAgICB9XG4gICAvLyAgICAgIH1cbiAgIC8vICB9XG5cbiAgIC8vICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSkge1xuICAgLy8gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgLy8gICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAvLyAgICAgIGp1c3RpZnktY29udGVudDogZW5kO1xuICAgLy8gICAgICBtYXJnaW4tcmlnaHQ6ICN7JGV4dGVybmFsLWd1dHRlciAvIDIgKiAtMX07XG4gICAvLyAgICAgIG1hcmdpbi1sZWZ0OiAjeyRleHRlcm5hbC1ndXR0ZXIgLyAyICogLTF9O1xuXG4gICAvLyAgICAgIC5idXR0b24ge1xuICAgLy8gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAjeyRleHRlcm5hbC1ndXR0ZXIgLyAyfTtcbiAgIC8vICAgICAgICAgIG1hcmdpbi1sZWZ0OiAjeyRleHRlcm5hbC1ndXR0ZXIgLyAyfTtcblxuICAgLy8gICAgICAgICAgYm9keTpub3QoLnNpbmdsZSkgJjpmaXJzdC1jaGlsZCB7XG4gICAvLyAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgLy8gICAgICAgICAgfVxuICAgLy8gICAgICB9XG4gICAvLyAgfVxufVxuXG5AY29udGFpbmVyIGJ1dHRvbnMtd3JhcCAobWF4LXdpZHRoOiA0NzlweCkge1xuXHQuYnV0dG9ucy13cmFwICB7XG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0yKTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAgICAgJi10ZXh0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNpbmctLWJsb2NrLTIpICogMik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBjb250YWluZXIgYnV0dG9ucy13cmFwIChtaW4td2lkdGg6IDQ4MHB4KSBhbmQgKG1heC13aWR0aDogNzY3cHgpe1xuXHQuYnV0dG9ucy13cmFwICB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMmVtO1xuXG5cdFx0LmJ1dHRvbiB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0yKTtcblx0XHRcdGZsZXgtYmFzaXM6IGNhbGMoNTAlIC0gMWVtKTtcblxuXHRcdFx0Ji10ZXh0IHtcblx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNpbmctLWJsb2NrLTIpICogMik7XG5cdFx0XHRcdFx0ZmxleC1iYXNpczogMTAwJTtcblx0XHRcdH1cblx0XHR9XG4gICAgfVxufVxuXG5AY29udGFpbmVyIGJ1dHRvbnMtd3JhcCAobWluLXdpZHRoOiA3NjhweCkge1xuXG5cdC5idXR0b25zLXdyYXAgIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAjeyRleHRlcm5hbC1ndXR0ZXIgLyAyICogLTF9O1xuICAgICAgICBtYXJnaW4tbGVmdDogI3skZXh0ZXJuYWwtZ3V0dGVyIC8gMiAqIC0xfTtcblxuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogI3skZXh0ZXJuYWwtZ3V0dGVyIC8gMn07XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogI3skZXh0ZXJuYWwtZ3V0dGVyIC8gMn07XG5cbiAgICAgICAgICAgIGJvZHk6bm90KC5zaW5nbGUpICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgfVxufVxuIiwiLmluZm8tdGFibGUge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktc2FucztcblxuICAgICZfX3JvdyB7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0xKTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNpbmctLWJsb2NrLTEpO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yLWdyZXktbWVkaXVtO1xuICAgIH1cblxuICAgICZfX2xhYmVsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLjVlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSkge1xuXG4gICAgICAgICZfX3JvdyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgM2ZyO1xuICAgICAgICAgICAgY29sdW1uLWdhcDogJGV4dGVybmFsLWd1dHRlcjtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0yKTtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2xhYmVsIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5jb2RlYm9va3Mge1xuXG4gICAgaDIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0yKTtcbiAgICB9XG5cbiAgICAmX19yb3cge1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2luZy0tYmxvY2stMik7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkY29sb3ItdGV4dDtcblxuICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0tYmxvY2stMyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19sYWJlbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC41ZW07XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktc2FucztcbiAgICAgICAgZm9udC1zaXplOiB2YXIoKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSwgbWF4KSB7XG5cbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctLWJsb2NrLTMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludHMoc20pIHtcblxuICAgICAgICAmX19yb3cge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGdhcDogJGV4dGVybmFsLWd1dHRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2xhYmVsIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbmNsdWRlIGVkaXRvci1vbmx5IHtcbiAgICAvLyAtLS0tXG4gICAgLy8gUG9zdCB0aXRsZSBzdHlsZVxuICAgIC8vIC0tLS1cbiAgICAuZWRpdG9yLXBvc3QtdGl0bGUge1xuICAgICAgICBAaW5jbHVkZSBoZWFkaW5nKGgxKTtcblxuICAgICAgICBtYXgtd2lkdGg6IHZhcigtLXJlc3BvbnNpdmUtLWFsaWduZGVmYXVsdC13aWR0aCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctLWJsb2NrLTMpO1xuICAgIH1cblxuICAgIC8vIC0tLS1cbiAgICAvLyBFZGl0b3IgVUkgZm9udCBzdHlsZXNcbiAgICAvLyAtLS0tXG4gICAgLndwLWJsb2NrLmJsb2NrLWVkaXRvci1kZWZhdWx0LWJsb2NrLWFwcGVuZGVyID4gdGV4dGFyZWEge1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZ2xvYmFsLS1mb250LXNlY29uZGFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKCRmb250LXNpemUtbWQpO1xuICAgIH1cbn1cblxuLy8gLS0tLVxuLy8gRHJvcCBjYXBcbi8vIC0tLS1cbi5oYXMtZHJvcC1jYXA6bm90KDpmb2N1cyk6OmZpcnN0LWxldHRlciB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luOiAuMWVtIC4xZW0gMCAwO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoJGZvbnQtZmFtaWx5LXByaW1hcnkpO1xuICAgIGZvbnQtc2l6ZTogY2FsYygxLjIgKiB2YXIoLS1oZWFkaW5nLS1mb250LXNpemUtaDEpKTtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWhlYWRpbmctLWZvbnQtd2VpZ2h0KTtcbiAgICBsaW5lLWhlaWdodDogLjY2O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbiN7Y29udGV4dC1zZWxlY3RvcihcIi5ibG9ja3MtY29udGFpbmVyXCIsIFwiLmlzLXJvb3QtY29udGFpbmVyXCIpfSB7XG4gICAgLy8gLS0tLVxuICAgIC8vIEFsaWduZW1lbnRzIGhvcml6b250YXV4XG4gICAgLy8gLS0tLVxuICAgID4gOndoZXJlKCopIHtcbiAgICAgICAgLy8gbWF4LXdpZHRoOiB2YXIoLS1yZXNwb25zaXZlLS1hbGlnbmRlZmF1bHQtd2lkdGgpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIH1cblxuICAgIC8vICAje2NvbnRleHQtc2VsZWN0b3IoXCIuYWxpZ253aWRlXCIsIFwiW2RhdGEtYWxpZ249J3dpZGUnXVwiKX0ge1xuICAgIC8vICAgICAgbWF4LXdpZHRoOiB2YXIoLS1yZXNwb25zaXZlLS1hbGlnbndpZGUtd2lkdGgpO1xuICAgIC8vICB9XG5cbiAgICAje2NvbnRleHQtc2VsZWN0b3IoXCIuYWxpZ25mdWxsXCIsIFwiW2RhdGEtYWxpZ249J2Z1bGwnXVwiKX0ge1xuICAgICAgICBtYXgtd2lkdGg6IHZhcigtLXJlc3BvbnNpdmUtLWFsaWduZnVsbC13aWR0aCk7XG4gICAgfVxuXG4gICAgLmFsaWdubGVmdCB7XG5cbiAgICAgICAgQGluY2x1ZGUgYWxpZ247XG4gICAgfVxuXG4gICAgLmFsaWducmlnaHQge1xuXG4gICAgICAgIEBpbmNsdWRlIGFsaWduKHJpZ2h0KTtcbiAgICB9XG5cbiAgICAuYWxpZ25jZW50ZXIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuXG4gICAgLmFsaWdubGVmdCxcbiAgICAuYWxpZ25yaWdodCxcbiAgICAuYWxpZ25jZW50ZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0xKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tXG4gICAgLy8gQWxpZ25lbWVudHMgdmVydGljYXV4XG4gICAgLy8gLS0tLVxuICAgID4gKixcbiAgICBbY2xhc3MqPVwiaW5uZXItY29udGFpbmVyXCJdID4gKiB7XG4gICAgICAgIC8vIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctLWJsb2NrLTEpO1xuXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgLy8gICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgLy8gICB9XG5cbiAgICAgICAgJi5hbGlnbmxlZnQsXG4gICAgICAgICYuYWxpZ25yaWdodCxcbiAgICAgICAgJi5hbGlnbmxlZnQ6Zmlyc3QtY2hpbGQgKyAqLFxuICAgICAgICAmLmFsaWducmlnaHQ6Zmlyc3QtY2hpbGQgKyAqLFxuICAgICAgICAmLmFsaWduZnVsbC5oYXMtYmFja2dyb3VuZCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gICAmOmxhc3QtY2hpbGQsXG4gICAgICAgIC8vICAgJi5hbGlnbmZ1bGwuaGFzLWJhY2tncm91bmQge1xuICAgICAgICAvLyAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAvLyAgIH1cblxuICAgICAgICAmLmFsaWduZnVsbC5oYXMtYmFja2dyb3VuZCB7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiAgdmFyKC0tc3BhY2luZy0tYmxvY2stMyk7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuXHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogIHZhcigtLXNwYWNpbmctLWJsb2NrLTMpO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogUmVzZXQgYWxpZ25sZWZ0IGFuZCBhbGlnbnJpZ2h0IG1hcmdpbnMgYWZ0ZXIgYWxpZ25mdWxsICovXG4gICAgICAgICYuYWxpZ25mdWxsICsgLmFsaWdubGVmdCxcbiAgICAgICAgJi5hbGlnbmZ1bGwgKyAuYWxpZ25yaWdodCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgID4gKjpub3QocCkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLS1ibG9jay01KTtcblxuXHRcdCAgJi53cC1ibG9jay1oZWFkaW5nIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctLWJsb2NrLTMpO1xuXHRcdCAgfVxuICAgIH1cblxuICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0zKTtcbiAgICB9XG5cbiAgICBbY2xhc3MqPVwiaW5uZXItY29udGFpbmVyXCJdID4gKiB7XG5cbiAgICAgICAgJjpub3QoLm5vLW1hcmdpbi1ib3R0b20pIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctLWJsb2NrLTEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIDp3aGVyZSgud3AtYmxvY2stZ3JvdXAuaGFzLWJhY2tncm91bmQpIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdHlsZS1vbmx5IHtcbiAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICY6bm90KC5oYXMtYmFja2dyb3VuZCkge1xuICAgICAgICAgICAgICAgIEBleHRlbmQgLmNvbnRhaW5lcjtcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzKG1kKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJG1lbnUtZGVza3RvcC13aWR0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPiAuaGFzLWJhY2tncm91bmQge1xuICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICBAZXh0ZW5kIC5jb250YWluZXI7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50cyhtZCkge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRtZW51LWRlc2t0b3Atd2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludHMobGcpIHtcbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRtZW51LWRlc2t0b3Atd2lkdGggIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLndwLWJsb2NrIHtcblxuICAgICYtaW1hZ2Uge1xuXG4gICAgICAgIC5oYXMtYmFja2dyb3VuZCAmIHtcbiAgICAgICAgICAgZmlndXJlIHtcblx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0XHR9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLWNvbHVtbnMge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJi1jb2x1bW4ge1xuICAgICAgICA+ICoge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0tYmxvY2stMSk7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzKHNtKSB7XG4gICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5ibG9ja3MtY29udGFpbmVyIHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzKG1kKSB7XG4gICAgICAgID4gLmhhcy1iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC03NnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQGluY2x1ZGUgc3R5bGUtb25seSB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhsZykge1xuICAgICAgICAuY29udGFpbmVyLS1jb250ZW50IHAge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJG1lbnUtZGVza3RvcC13aWR0aCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLndwLWJsb2NrLWF1ZGlvIHtcbiAgICBhdWRpbyB7XG4gICAgICAgICY6Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiA1cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIud3AtYmxvY2sge1xuICAgIC8vIC0tLS1cbiAgICAvLyBjb250YWluZXJcbiAgICAvLyAtLS0tXG4gICAgLy8gJi1idXR0b25zIHtcbiAgICAvL1xuICAgIC8vIH1cblxuICAgIC8vIC0tLS1cbiAgICAvLyBidXR0b25cbiAgICAvLyAtLS0tXG4gICAgJi1idXR0b24ge1xuICAgICAgICAmOm5vdCguaXMtc3R5bGUtdGV4dC1hcnJvdykge1xuICAgICAgICAgICAgLndwLWJsb2NrLWJ1dHRvbl9fbGluayB7XG4gICAgICAgICAgICAgICAgQGV4dGVuZCAlYnV0dG9uLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICAgICAgICAgICAgQGV4dGVuZCAlYnV0dG9uO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5pcy1zdHlsZS1vdXRsaW5lIC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICAgICAgICAgICAgQGV4dGVuZCAlYnV0dG9uLWJsb2NrLW91dGxpbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmLmlzLXN0eWxlLXJldmVyc2UgLndwLWJsb2NrLWJ1dHRvbl9fbGluayB7XG4gICAgICAgICAgICBAZXh0ZW5kICVidXR0b24tYmxvY2stcmV2ZXJzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICAgJi5pcy1zdHlsZS1yZXZlcnNlLW91dGxpbmUgLndwLWJsb2NrLWJ1dHRvbl9fbGluayB7XG4gICAgICAgIC8vICAgICAgIEBleHRlbmQgJWJ1dHRvbi1ibG9jay1yZXZlcnNlLW91dGxpbmU7XG4gICAgICAgIC8vICAgfVxuXG4gICAgICAgICYuaXMtc3R5bGUtdGV4dCAud3AtYmxvY2stYnV0dG9uX19saW5rIHtcbiAgICAgICAgICAgIEBleHRlbmQgJWJ1dHRvbi10ZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5pcy1zdHlsZS10ZXh0LWNvbG9yZWQgLndwLWJsb2NrLWJ1dHRvbl9fbGluayB7XG4gICAgICAgICAgICBAZXh0ZW5kICVidXR0b24tdGV4dC1jb2xvcmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5oYXMtY3VzdG9tLWZvbnQtc2l6ZSAud3AtYmxvY2stYnV0dG9uX19saW5rIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzIChzbSxtYXgpIHtcbiAgICAgICAgICAgICYsXG4gICAgICAgICAgICAmIC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLndwLWJsb2NrLWNvdmVyLFxuLndwLWJsb2NrLWNvdmVyLWltYWdlIHtcbiAgICAmOm5vdCguYWxpZ253aWRlKTpub3QoLmFsaWduZnVsbCkge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdHlsZS1vbmx5IHtcbiAgICAgICAgJi5hbGlnbmZ1bGwge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBlZGl0b3Itb25seSB7XG4gICAgICAgIFtkYXRhLWFsaWduPVwiZnVsbFwiXSAmIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLndwLWJsb2NrLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbG93LXJvb3Q7XG59XG5cbkBpbmNsdWRlIGVkaXRvci1vbmx5IHtcbiAgICAud3AtYmxvY2stZ3JvdXAge1xuICAgICAgICBkaXNwbGF5OiBmbG93LXJvb3Q7XG5cbiAgICAgICAgLndwLWJsb2NrLWdyb3VwLmhhcy1iYWNrZ3JvdW5kID4gLmJsb2NrLWVkaXRvci1ibG9jay1saXN0X19sYXlvdXQgPiBbZGF0YS1hbGlnbj1cImZ1bGxcIl0ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAZm9yICRpIGZyb20gMSB0aHJvdWdoIDYge1xuICAgIGgjeyRpfSxcbiAgICAuaXMtc3R5bGUtaCN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgaGVhZGluZyhoI3skaX0pO1xuICAgIH1cblxuICAgIC5oYXMtaC0jeyRpfS1mb250LXNpemUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1oI3tpfSk7XG4gICAgfVxufVxuIiwiLndwLWJsb2NrLWltYWdlIHtcbiAgICA+IGltZyB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cbn1cblxuZmlnY2FwdGlvbiB7XG5cdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14cyAhaW1wb3J0YW50O1xuXHRjb2xvcjogJGNvbG9yLWdyZXktNjAwICFpbXBvcnRhbnQ7XG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG5cdHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcblx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1zYW5zICFpbXBvcnRhbnQ7XG59XG4iLCIje2NvbnRleHQtc2VsZWN0b3IoJy5ibG9ja3MtY29udGFpbmVyJywgJy5pcy1yb290LWNvbnRhaW5lcicpfSB7XG4gICAgdWwsXG4gICAgb2wge1xuICAgICAgICAvLyBVdGlsaXR5IGNsYXNzZXNcbiAgICAgICAgJi5hbGlnbmNlbnRlciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hbGlnbnJpZ2h0IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246IGluc2lkZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVsIHtcbiAgICAgICAgJjpub3QoW2NsYXNzKj1cImlzLXN0eWxlLVwiXSwgLm5vLWxpc3Qtc3R5bGUpIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcblxuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICY6Om1hcmtlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbCB7XG4gICAgICAgICY6bm90KFtjbGFzcyo9XCJpcy1zdHlsZS1cIl0pIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGVjaW1hbDtcblxuICAgICAgICAgICAgJjo6bWFya2VyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG4iLCIud3AtYmxvY2stbWVkaWEtdGV4dCB7XG4gICAgQGluY2x1ZGUgc3R5bGUtb25seSB7XG4gICAgICAgICYuYWxpZ25mdWxsIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZWRpdG9yLW9ubHkge1xuICAgICAgICBbZGF0YS1hbGlnbj1cImZ1bGxcIl0gJiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5ibG9ja3MtY29udGFpbmVyIHtcbiAgICBwIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbm9ybWFsKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXG4gICAgICAgICYuaGFzLWJhY2tncm91bmQge1xuICAgICAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYuaXMtc3R5bGUtYmlnIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktc2FucztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJpZyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIud3AtYmxvY2stcHJlZm9ybWF0dGVkIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuXG4gICAgQGluY2x1ZGUgc3R5bGUtb25seSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZWRpdG9yLW9ubHkge1xuICAgICAgICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiaHIge1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBjbGVhcjogYm90aDtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG5cbiAgICAmLndwLWJsb2NrLXNlcGFyYXRvciB7XG4gICAgICAgIC8vIHN0eWxlXG4gICAgfVxufVxuXG5AaW5jbHVkZSBlZGl0b3Itb25seSB7XG4gICAgLndwLWJsb2NrLXNlcGFyYXRvcixcbiAgICBociB7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuXG4gICAgICAgIFtkYXRhLWFsaWduPVwiZnVsbFwiXSA+ICYsXG4gICAgICAgIFtkYXRhLWFsaWduPVwid2lkZVwiXSA+ICYge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiBpbmhlcml0O1xuICAgICAgICB9XG5cbiAgICB9XG59XG4iLCIud3AtYmxvY2stc2VhcmNoIHtcbiAgICAkZWw6ICY7XG5cbiAgICAjeyRlbH1fX2lucHV0IHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uIHtcbiAgICAgICAgQGV4dGVuZCAlYnV0dG9uLWJsb2NrO1xuICAgIH1cbn1cbiIsInRhYmxlLFxuLndwLWJsb2NrLXRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4td2lkdGg6IDI0MHB4O1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG4iLCIud3AtYmxvY2stdmlkZW8ge1xuICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxufVxuXG4qID4gZmlndXJlID4gdmlkZW8ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbiIsIi5tb3NuZS1jYXJkIHtcblxuICAgICZfX2dyaWQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgIGNvbHVtbi1nYXA6ICRleHRlcm5hbC1ndXR0ZXI7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAzIHtcbiAgICAgICAgICAgICZbZGF0YS1ncmlkPVwiI3skaX1cIl0ge1xuICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBmb3IgJGkgZnJvbSA0IHRocm91Z2ggNiB7XG4gICAgICAgICAgICAmW2RhdGEtZ3JpZD1cIiN7JGl9XCJdIHtcbiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSkge1xuICAgICAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA2IHtcbiAgICAgICAgICAgICAgICAmW2RhdGEtZ3JpZD1cIiN7JGl9XCJdIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoJGksIDFmcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG5cblx0ICZfX2Zvb3RlciB7XG5cdFx0bWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0tYmxvY2stNCk7XG5cdCB9XG59XG5cbi5sb29wIHtcbiAgICAkZWw6ICY7XG5cbiAgICAmLS1wb3N0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0tYmxvY2stMykgMDtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkO1xuXG4gICAgICAgICN7JGVsfV9fZGF0ZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNhbnM7XG4gICAgICAgIH1cblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGZvbnQtd2VpZ2h0IC4zcztcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzKHNtKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgM2ZyO1xuICAgICAgICAgICAgY29sdW1uLWdhcDogJGV4dGVybmFsLWd1dHRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLWRhdGFzZXQge1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLS1ibG9jay00KTtcblxuICAgICAgICAmX190aXRsZSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0tYmxvY2stMik7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLWhlYWRpbmctLWZvbnQtc2l6ZS1oMSk7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7XG4gICAgICAgIH1cblxuICAgICAgICAmX19pbmZvIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctLWJsb2NrLTIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fYnV0dG9ucyB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXB1YmxpY2F0aW9uIHtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctLWJsb2NrLTIpO1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLS1ibG9jay00KTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkO1xuXG4gICAgICAgICZfX2RhdGUge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0tYmxvY2stMik7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNhbnM7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbWFsbCk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fYXV0aG9yIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctLWJsb2NrLTIpO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1zYW5zO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc21hbGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fdGl0bGUge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0tYmxvY2stMSk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLWhlYWRpbmctLWZvbnQtc2l6ZS1oMSk7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgIH1cblxuICAgICAgICAmX19zdWJ0aXRsZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0zKTtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktc2FucztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxhcmdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctLWJsb2NrLTMpO1xuICAgICAgICB9XG5cblx0XHQgICZfX2J1dHRvbnMge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblxuXHRcdFx0LmJ1dHRvbiB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogJGV4dGVybmFsLWd1dHRlcjtcblx0XHRcdH1cblx0XHRcdC5idXR0b24tdGV4dC1jb2xvcmVkIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMC4zMzMzM2VtO1xuXHRcdFx0fVxuXHRcdCAgfVxuICAgIH1cbn1cbiIsIi50ZWFtIHtcbiAgICAkZWw6ICY7XG5cbiAgICAmX19jYXQge1xuICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAyO1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLS1ibG9jay0zKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0tYmxvY2stMyk7XG4gICAgfVxuXG4gICAgJl9fbWVtYmVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0tYmxvY2stMyk7XG4gICAgfVxuXG4gICAgJl9faW1nIHtcbiAgICAgICAgQGluY2x1ZGUgZWFzeS1maXQoMTAwJSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctLWJsb2NrLTIpO1xuICAgIH1cblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LXNlcmlmO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBhIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2NoYXJnZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktc2FucztcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSkge1xuXG4gICAgICAgICZfX2NhdCB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbjogc3BhbiA0O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBIZWFkZXJcbiAqL1xuXG4uaGVhZGVyIHtcbiAgICAkZWw6ICY7XG5cbiAgICBoZWlnaHQ6IDc2cHg7XG5cbiAgICAmX19pbm5lciB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmctdG9wOiAyNnB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgLy8gIC5jb250YWluZXIge1xuICAgIC8vICAgICAgcGFkZGluZy10b3A6IDI2cHg7XG4gICAgLy8gICAgICBwYWRkaW5nLWJvdHRvbTogMjhweDtcbiAgICAvLyAgfVxuXG4gICAgJl9fbG9nby1saW5rIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMjRweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRleHRlcm5hbC1ndXR0ZXI7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIGZpbGw6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogZmlsbCAuM3M7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBmaWxsOiAkY29sb3Itc2Vjb25kYXJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbWVudS10b2dnbGUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMTRweDtcbiAgICAgICAgcmlnaHQ6ICRleHRlcm5hbC1ndXR0ZXI7XG4gICAgICAgIHotaW5kZXg6IDIwO1xuICAgICAgICAvLyAgIHdpZHRoOiA0NnB4O1xuICAgICAgICAvLyAgIGhlaWdodDogNDZweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAvLyAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAvLyAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgQGV4dGVuZCAlYnV0dG9uLXRleHQ7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbWVudS1saXN0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNhbnM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1tZDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC4xZW07XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgICAgICAgbGkgKyBsaSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBmb250LXdlaWdodCAuM3M7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY3VycmVudC1tZW51LWl0ZW0ge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XG4gICAgICAgIH1cblxuICAgICAgICAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgID4gYSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gNTBweCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuaGFzLXN1Yi1tZW51LW9wZW4ge1xuICAgICAgICAgICAgPiAjeyRlbH1fX3N1Yi1tZW51LXRvZ2dsZSAuaWNvbiB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3N1Yi1tZW51LXRvZ2dsZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA3cHg7XG4gICAgICAgIHJpZ2h0OiAtMThweDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgd2lkdGg6IDUwcHg7XG4gICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgY29sb3I6ICRjb2xvci1kYXJrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcblxuICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA2cHg7XG4gICAgICAgICAgICBtYXJnaW46IC0zcHggMCAwIC01cHg7XG4gICAgICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBmaWxsIC4yNXMsIHRyYW5zZm9ybSAuNXMgJGVhc2UtaW4tb3V0LWV4cG87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19zdWItbWVudSB7XG4gICAgICAgICYtbGV2ZWwtMCxcbiAgICAgICAgJi1sZXZlbC0xLFxuICAgICAgICAvLyBzdWIgbWVudSBhZnRlciBsZXZlbCAxIHdpbGwgbm90IGJlIGRpc3BsYXllZFxuICAgICAgICAmLWxldmVsLTIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIH1cblxuICAgICAgICAjeyRlbH1fX3N1Yi1tZW51LXRvZ2dsZSB7XG4gICAgICAgICAgICB0b3A6IC0xNXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tbWVudS1pcy1vcGVuIHtcbiAgICAgICAgI3skZWx9X19tZW51LXRvZ2dsZSB7XG4gICAgICAgICAgICA+IHNwYW4ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoJGNvbG9yLWxpZ2h0LCAwKTtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTM1ZGVnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWRtaW4tYmFyICZfX2lubmVyIHtcbiAgICAgICAgdG9wOiAkd3AtYWRtaW4tYmFyLW1vYmlsZS1oZWlnaHQ7XG4gICAgfVxuXG4gICAgLnNjcm9sbC11cCAmX19pbm5lcixcbiAgICAuc2Nyb2xsLWRvd24gJl9faW5uZXIsXG4gICAgLnNjcm9sbC1ib3R0b20gJl9faW5uZXIge1xuICAgICAgICB0b3A6IDA7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludHMobWQsIG1heCkge1xuICAgICAgICAmX19tZW51IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1saWdodDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG5cbiAgICAgICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMDBweCAjeyRleHRlcm5hbC1ndXR0ZXJ9IDI1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmX19tZW51LWxpc3Qge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjJweDtcblxuICAgICAgICAgICAgLy8gPiBsaSB7XG4gICAgICAgICAgICAvLyAgICAgcGFkZGluZy10b3A6IDIycHg7XG5cbiAgICAgICAgICAgIC8vICAgICAvLyAgKyBsaSB7XG4gICAgICAgICAgICAvLyAgICAgLy8gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGNvbG9yLWRhcms7XG4gICAgICAgICAgICAvLyAgICAgLy8gIH1cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfX3N1Yi1tZW51ID4gZGl2IHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzOHB4O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAgQGluY2x1ZGUgYnJlYWtwb2ludHMoc20pIHtcbiAgICAvLyAgICAgICZfX21lbnUge1xuICAgIC8vICAgICAgICAgICN7JGVsfV9fbG9nby1saW5rIHtcbiAgICAvLyAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAvLyAgICAgICAgICB9XG4gICAgLy8gICAgICB9XG4gICAgLy8gIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzKHNtLCBtZCkge1xuICAgICAgICAjeyRlbH1fX21lbnUge1xuICAgICAgICAgICAgLy8gcmlnaHQ6IDA7XG4gICAgICAgICAgICAvLyBsZWZ0OiBhdXRvO1xuICAgICAgICAgICAgd2lkdGg6IGNvbHVtbig2KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG5cbiAgICAgICAgICAgIC8vID4gZGl2IHtcbiAgICAgICAgICAgIC8vICAgICBwYWRkaW5nOiBjb2x1bW4oMiwgMikgY29sdW1uKDEsIDEsIDYpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gIEBpbmNsdWRlIGJyZWFrcG9pbnRzKGFkbWluLWJhcikge1xuICAgIC8vICAgICAgLmFkbWluLWJhciAmX19pbm5lciB7XG4gICAgLy8gICAgICAgICAgdG9wOiAkd3AtYWRtaW4tYmFyLWRlc2t0b3AtaGVpZ2h0O1xuICAgIC8vICAgICAgfVxuICAgIC8vICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhtZCkge1xuICAgICAgICB3aWR0aDogJG1lbnUtZGVza3RvcC13aWR0aDtcbiAgICAgICAgLy8gICAuY29udGFpbmVyIHtcbiAgICAgICAgLy8gICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgLy8gICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIC8vICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgLy8gICB9XG5cbiAgICAgICAgJl9fbG9nby1saW5rIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNDZweDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fbWVudS10b2dnbGUge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2lubmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiAkbWVudS1kZXNrdG9wLXdpZHRoO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRleHRlcm5hbC1ndXR0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAmX19tZW51IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDQwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAgICZfX21lbnUtbGlzdCB7XG4gICAgICAgIC8vICAgICAgIGNvbG9yOiAkY29sb3ItdGV4dDtcblxuICAgICAgICAvLyAgICAgICBsaSArIGxpIHtcbiAgICAgICAgLy8gICAgICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICAgIC8vICAgICAgIH1cblxuICAgICAgICAvLyAgICAgICA+IGxpIHtcbiAgICAgICAgLy8gICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgLy8gICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgLy8gICAgICAgICAgICsgbGkge1xuICAgICAgICAvLyAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyOHB4O1xuICAgICAgICAvLyAgICAgICAgICAgfVxuXG4gICAgICAgIC8vICAgICAgICAgICAmLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4ge1xuICAgICAgICAvLyAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzOHB4O1xuXG4gICAgICAgIC8vICAgICAgICAgICAgICAgPiBhIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE0cHg7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICB9XG5cbiAgICAgICAgLy8gICAgICAgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4ge1xuICAgICAgICAvLyAgICAgICAgICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgICAvLyAgICAgICAgICAgICAgID4gI3skZWx9X19zdWItbWVudSB7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgIC5uby1qcyAmIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgIC8vICAgICAgICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICB9XG4gICAgICAgIC8vICAgfVxuXG4gICAgICAgICZfX3N1Yi1tZW51LXRvZ2dsZSB7XG4gICAgICAgICAgICB0b3A6IDhweDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDdweDtcbiAgICAgICAgICAgIGhlaWdodDogNHB4O1xuXG4gICAgICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogLTJweCAwIDAgLTNweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfX3N1Yi1tZW51IHtcbiAgICAgICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi1sZXZlbC0wIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAyMHB4KTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMzE0cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xNTdweDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSxcbiAgICAgICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAxOXB4O1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMTlweCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDE5cHg7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMXB4IDAgMDtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKC00NWRlZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAoMzZweCArIDE5cHgpIDMwcHggMzZweDtcblxuICAgICAgICAgICAgICAgICAgICA+IHVsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgID4gbGkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyNXB4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICN7JGVsfV9fc3ViLW1lbnUtdG9nZ2xlIHtcbiAgICAgICAgICAgICAgICB0b3A6IC43ZW07XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIEZvb3RlclxuICovXG5cbi5mb290ZXIge1xuICAgICRlbDogJjtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNhbnM7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc21hbGwpO1xuXHQgcG9zaXRpb246IHJlbGF0aXZlO1xuXHQgei1pbmRleDogMTAwMDE7XG5cbiAgICAmX19sb2dvIHtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgZmlsbDogJGNvbG9yLXRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoMyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbWVkaXVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC4xZW07XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxuXG5cdCAmX190ZXh0IHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUteHM7XG5cdCB9XG5cbiAgICAubGVnYWxfX21lbnUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG5cbiAgICAgICAgJi1saXN0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14cztcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY3JlZGl0cyB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14cztcbiAgICB9XG5cbiAgICAmX19zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogJGV4dGVybmFsLWd1dHRlcjtcblxuICAgICAgICAmOm50aC1jaGlsZCgxKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JleS1saWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udGVudCB7XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX190ZXh0IHtcbiAgICAgICAgbWF4LXdpZHRoOiAzMGNoO1xuICAgIH1cblxuICAgIC5jb250YWN0LWVtYWlsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICB9XG5cbiAgICAmX19mdW5kZXJzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6ICRleHRlcm5hbC1ndXR0ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIC8vIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgJl9fZnVuZGVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDBweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSwgbWF4KSB7XG5cbiAgICAgICAgJl9fdGV4dCxcbiAgICAgICAgJl9fdXBkYXRlLWRhdGUsXG4gICAgICAgICZfX2Z1bmRlcnMsXG4gICAgICAgIC5sZWdhbF9fbWVudSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSkge1xuICAgICAgICAkZWw6ICY7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogI3skbWVudS1kZXNrdG9wLXdpZHRoICsgJGV4dGVybmFsLWd1dHRlcn0gMWZyO1xuICAgICAgICAmX19jb250ZW50IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBnYXA6ICRleHRlcm5hbC1ndXR0ZXI7XG4gICAgICAgIH1cbiAgICAgICAgJl9fc2VjdGlvbiB7XG5cbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDEpIHtcbiAgICAgICAgICAgICAgICBvcmRlcjogMjtcblxuICAgICAgICAgICAgICAgICN7JGVsfV9fY29sIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1iYXNpczogNTAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgICAgIG9yZGVyOiAzO1xuXG4gICAgICAgICAgICAgICAgI3skZWx9X19jb2wge1xuICAgICAgICAgICAgICAgICAgICBmbGV4LWJhc2lzOiAyNSU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogc3BhbiAyO1xuICAgICAgICAgICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJl9fY29sIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICB9XG4gICAgICAgICZfX3VwZGF0ZS1kYXRlIHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgJl9fZnVuZGVycyB7XG4gICAgICAgICAgICBmbGV4LWJhc2lzOiA3NSU7XG4gICAgICAgICAgICBnYXA6ICN7JGV4dGVybmFsLWd1dHRlciAqIDJ9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludHMobGcpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBjYWxjKDUwdncgLSA3MjBweCArICN7JG1lbnUtZGVza3RvcC13aWR0aH0pIDFmcjtcbiAgICB9XG59XG4iLCIvKipcbiAqIEhlcm9cbiAqL1xuXG4uaGVybyB7XG4gICAgQGluY2x1ZGUgcm93LWZ1bGx3aWR0aDtcblxuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctLWJsb2NrLTEpIDA7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0tYmxvY2stMSk7XG5cbiAgICAuY29udGFpbmVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRjb2xvci1saWdodCwgLjUpO1xuICAgIH1cblxuICAgICZfX2ltZyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzKG1kKSB7XG4gICAgICAgIHBhZGRpbmc6IDEwMHB4IDA7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTZWFyY2hmb3JtXG4gKi9cblxuLnNlYXJjaGZvcm0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICZfX2ZpZWxkW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLS1ibG9jay0xKTtcbiAgICB9XG5cbiAgICAmX19zdWJtaXQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcblxuICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogLTE1JTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5za2lwLWxpbmtzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogMTA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwYWRkaW5nOiAuNXJlbSAxcmVtO1xuICAgIGNvbG9yOiAkY29sb3ItdGV4dDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2UtaW4tb3V0O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIH1cblxuICAgIGxpOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICB9XG59XG4iLCIvKiA0MDQgUGFnZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIC5lcnJvcjQwNCB7fVxuIiwiLyogSG9tZSBQYWdlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gLmhvbWUge31cbiIsIi8qIFNpbmdsZSBEYXRhc2V0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLnNpbmdsZS1kYXRhc2V0IHtcblxuICAgIHNlY3Rpb24ge1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLS1ibG9jay01KTtcbiAgICB9XG5cbiAgICBbY2xhc3NePVwid3AtYmxvY2tcIl0ge1xuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctLWJsb2NrLTIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cdCAuZGF0YS12aXN1YWxpemF0aW9uIHtcblxuXHRcdCZfX2dyYXBoIHtcblx0XHRcdG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctLWJsb2NrLTIpO1xuXHRcdH1cblx0IH1cbn1cbiIsIi8qIERlZmF1bHQgUGFnZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIC5wYWdlLXRlbXBsYXRlLWRlZmF1bHQge31cbiIsIi8qIERlZmF1bHQgUGFnZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIC5wYWdlLXRlbXBsYXRlLWRlZmF1bHQge31cbiNjbXBsei1kb2N1bWVudCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgcCxcbiAgICBsaSxcbiAgICB0ZCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLW5vcm1hbCk7XG4gICAgfVxufVxuIiwiLmRhdGEtdmlzdWFsaXphdGlvbiB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSwgbWF4KSB7XG5cbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctLWJsb2NrLTMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludHMoc20pIHtcblxuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLndwLWJsb2NrLWNvbHVtbnMge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzIChzbSkge1xuICAgICAgICAtLXdwLS1zdHlsZS0tYmxvY2stZ2FwOiAzMHB4O1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyAoc20sbWF4KSB7XG4gICAgICAgICYuaXMtc3R5bGUtcmV2ZXJzZS1vcmRlciB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhzbSxtZCkge1xuICAgICAgICAmLmlzLXN0eWxlLWdyaWQtMyxcbiAgICAgICAgJi5pcy1zdHlsZS1ncmlkLTQge1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgICAgICA+IC53cC1ibG9jay1jb2x1bW4ge1xuICAgICAgICAgICAgICAgIGZsZXgtYmFzaXM6IGNhbGMoNTAlIC0gdmFyKC0td3AtLXN0eWxlLS1ibG9jay1nYXApKTtcbiAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDA7XG5cbiAgICAgICAgICAgICAgICAmOm50aC1jaGlsZCgybisxKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzKG1kKSB7XG4gICAgICAgICYuaXMtc3R5bGUtZ3JpZC0zIHtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAgICAgPiAud3AtYmxvY2stY29sdW1uIHtcbiAgICAgICAgICAgICAgICBmbGV4LWJhc2lzOiBjYWxjKDMzLjMzJSAtIC42NjcgKiB2YXIoLS13cC0tc3R5bGUtLWJsb2NrLWdhcCkpO1xuICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMDtcblxuICAgICAgICAgICAgICAgICY6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5pcy1zdHlsZS1ncmlkLTQge1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgICAgICA+IC53cC1ibG9jay1jb2x1bW4ge1xuICAgICAgICAgICAgICAgIGZsZXgtYmFzaXM6IGNhbGMoMjUlIC0gLjc1ICogdmFyKC0td3AtLXN0eWxlLS1ibG9jay1nYXApKTtcbiAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDA7XG5cbiAgICAgICAgICAgICAgICAmOm50aC1jaGlsZCg0bisxKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnRzKHNtLG1kKSB7XG4gICAgICAgICYuaXMtc3R5bGUtZ3JpZC0zLFxuICAgICAgICAmLmlzLXN0eWxlLWdyaWQtNCB7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgICAgICAgID4gLndwLWJsb2NrLWNvbHVtbiB7XG4gICAgICAgICAgICAgICAgZmxleC1iYXNpczogY2FsYyg1MCUgLSB2YXIoLS13cC0tc3R5bGUtLWJsb2NrLWdhcCwgMmVtKSk7XG4gICAgICAgICAgICAgICAgZmxleC1ncm93OiAwO1xuXG4gICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoMm4rMSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50cyhtZCkge1xuICAgICAgICAmLmlzLXN0eWxlLWdyaWQtMyB7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgICAgICAgID4gLndwLWJsb2NrLWNvbHVtbiB7XG4gICAgICAgICAgICAgICAgZmxleC1iYXNpczogY2FsYygzMy4zMyUgLSB2YXIoLS13cC0tc3R5bGUtLWJsb2NrLWdhcCwgMmVtKSk7XG4gICAgICAgICAgICAgICAgZmxleC1ncm93OiAwO1xuXG4gICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoM24rMSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmlzLXN0eWxlLWdyaWQtNCB7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgICAgICAgID4gLndwLWJsb2NrLWNvbHVtbiB7XG4gICAgICAgICAgICAgICAgZmxleC1iYXNpczogY2FsYygyNSUgLSB2YXIoLS13cC0tc3R5bGUtLWJsb2NrLWdhcCwgMmVtKSk7XG4gICAgICAgICAgICAgICAgZmxleC1ncm93OiAwO1xuXG4gICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoNG4rMSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAbWVkaWEgcHJpbnQge1xuICAgICoge1xuICAgICAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xuICAgICAgICBjb2xvcjogJGNvbG9yLWRhcmsgIWltcG9ydGFudDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICBmaWx0ZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9LyogQmxhY2sgcHJpbnRzIGZhc3RlcjogaDVicC5jb20vcyAqL1xuICAgIGEsXG4gICAgYTp2aXNpdGVkIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgIGFbaHJlZl06OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCIgKFwiIGF0dHIoaHJlZikgXCIpXCI7XG4gICAgfVxuXG4gICAgYWJiclt0aXRsZV06OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCIgKFwiIGF0dHIodGl0bGUpIFwiKVwiO1xuICAgIH1cblxuICAgIC5pciBhOjphZnRlcixcbiAgICBhW2hyZWZePVwiamF2YXNjcmlwdDpcIl06OmFmdGVyLFxuICAgIGFbaHJlZl49XCIjXCJdOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfS8qIERvbid0IHNob3cgbGlua3MgZm9yIGltYWdlcywgb3IgamF2YXNjcmlwdC9pbnRlcm5hbCBsaW5rcyAqL1xuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgdGhlYWQge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XG4gICAgfS8qIGg1YnAuY29tL3QgKi9cbiAgICB0cixcbiAgICBpbWcge1xuICAgICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQHBhZ2Uge1xuICAgICAgICBtYXJnaW46IC41Y207XG4gICAgfVxuXG4gICAgcCxcbiAgICBoMixcbiAgICBoMyB7XG4gICAgICAgIG9ycGhhbnM6IDM7XG4gICAgICAgIHdpZG93czogMztcbiAgICB9XG5cbiAgICBoMixcbiAgICBoMyB7XG4gICAgICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkO1xuICAgIH1cblxuICAgIC5pbmxpbmUtZWxlbWVudC13aXRoLXBhZGRpbmcge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC8qIHJlbW92ZSB1c2VsZXNzIGNvbnRlbnQgKi9cbiAgICAuaGVhZGVyLFxuICAgIC5mb290ZXIsXG4gICAgLndpZGdldC1hcmVhLFxuICAgIC5icmVhZGNydW1iLFxuICAgIC53cC1wYWdlbmF2aSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAvKiByZXNldCB3aWR0aCAqL1xuICAgIC5jb250ZW50IHtcbiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMTBweCAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMTBweCAwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==*/