@charset "UTF-8";
/*----------------------------------------------------------------------------*\
    Theme
    Theme stylesheet, extends nobearcss framework
\*----------------------------------------------------------------------------*/
/*  Imports
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    Vars
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/* Modules */
/* layout */
/* arrange */
/* grid */
/* units */
/* units / divisions */
/* units / breakpoints */
/* push */
/* pull*/
/* helpers */
/* helpers */
/* arrange and layout */
/* fixed ratio */
/* icons */
/* images */
/* Form elements */
/*----------------------------------------------------------------------------*\
    $TYPOGRAPHY
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    $COLORS
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    $ANIMATIONS
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    CUSTOM VARIABLES
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    Starterkit
    Include nobearcss
\*----------------------------------------------------------------------------*/
/*  Imports
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    Defaults
    font styling, spaces, breakpoints
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    Normalize
    
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
@import url("https://fonts.googleapis.com/css?family=Montserrat:300,500,600,700");
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/**
	* Remove default margin.
	*/
body {
  margin: 0; }

/* HTML5 display definitions
		========================================================================== */
/**
	* Correct `block` display not defined for any HTML5 element in IE 8/9.
	* Correct `block` display not defined for `details` or `summary` in IE 10/11
	* and Firefox.
	* Correct `block` display not defined for `main` in IE 11.
	*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block; }

/**
	* 1. Correct `inline-block` display not defined in IE 8/9.
	* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
	*/
audio,
canvas,
progress,
video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
	* Prevent modern browsers from displaying `audio` without controls.
	* Remove excess height in iOS 5 devices.
	*/
audio:not([controls]) {
  display: none;
  height: 0; }

/**
	* Address `[hidden]` styling not present in IE 8/9/10.
	* Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
	*/
[hidden],
template {
  display: none; }

/* Links
		========================================================================== */
/**
	* Remove the gray background color from active links in IE 10.
	*/
a {
  background-color: transparent; }

/**
	* Improve readability of focused elements when they are also in an
	* active/hover state.
	*/
a:active,
a:hover {
  outline: 0; }

/* Text-level semantics
		========================================================================== */
/**
	* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
	*/
abbr[title] {
  border-bottom: 1px dotted; }

/**
	* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
	*/
b,
strong {
  font-weight: bold; }

/**
	* Address styling not present in Safari and Chrome.
	*/
dfn {
  font-style: italic; }

/**
	* Address variable `h1` font-size and margin within `section` and `article`
	* contexts in Firefox 4+, Safari, and Chrome.
	*/
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/**
	* Address styling not present in IE 8/9.
	*/
mark {
  background: #ff0;
  color: #000; }

/**
	* Address inconsistent and variable font size in all browsers.
	*/
small {
  font-size: 80%; }

/**
	* Prevent `sub` and `sup` affecting `line-height` in all browsers.
	*/
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

/* Embedded content
		========================================================================== */
/**
	* Remove border when inside `a` element in IE 8/9/10.
	*/
img {
  border: 0; }

/**
	* Correct overflow not hidden in IE 9/10/11.
	*/
svg:not(:root) {
  overflow: hidden; }

/* Grouping content
		========================================================================== */
/**
	* Address margin not present in IE 8/9 and Safari.
	*/
figure {
  margin: 1em 40px; }

/**
	* Address differences between Firefox and other browsers.
	*/
hr {
  box-sizing: content-box;
  height: 0; }

/**
	* Contain overflow in all browsers.
	*/
pre {
  overflow: auto; }

/**
	* Address odd `em`-unit font size rendering in all browsers.
	*/
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em; }

/* Forms
		========================================================================== */
/**
	* Known limitation: by default, Chrome and Safari on OS X allow very limited
	* styling of `select`, unless a `border` property is set.
	*/
/**
	* 1. Correct color not being inherited.
	*    Known issue: affects color of disabled elements.
	* 2. Correct font properties not being inherited.
	* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
	*/
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  /* 1 */
  font: inherit;
  /* 2 */
  margin: 0;
  /* 3 */ }

/**
	* Address `overflow` set to `hidden` in IE 8/9/10/11.
	*/
button {
  overflow: visible; }

/**
	* Address inconsistent `text-transform` inheritance for `button` and `select`.
	* All other form control elements do not inherit `text-transform` values.
	* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
	* Correct `select` style inheritance in Firefox.
	*/
button,
select {
  text-transform: none; }

/**
	* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
	*    and `video` controls.
	* 2. Correct inability to style clickable `input` types in iOS.
	* 3. Improve usability and consistency of cursor style between image-type
	*    `input` and others.
	*/
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */ }

/**
	* Re-set default cursor for disabled elements.
	*/
button[disabled],
html input[disabled] {
  cursor: default; }

/**
	* Remove inner padding and border in Firefox 4+.
	*/
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0; }

/**
	* Address Firefox 4+ setting `line-height` on `input` using `!important` in
	* the UA stylesheet.
	*/
input {
  line-height: normal; }

/**
	* It's recommended that you don't attempt to style these elements.
	* Firefox's implementation doesn't respect box-sizing, padding, or width.
	*
	* 1. Address box sizing set to `content-box` in IE 8/9/10.
	* 2. Remove excess padding in IE 8/9/10.
	*/
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
	* Fix the cursor style for Chrome's increment/decrement buttons. For certain
	* `font-size` values of the `input`, it causes the cursor style of the
	* decrement button to change from `default` to `text`.
	*/
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
	* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
	* 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
	*/
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  box-sizing: content-box;
  /* 2 */ }

/**
	* Remove inner padding and search cancel button in Safari and Chrome on OS X.
	* Safari (but not Chrome) clips the cancel button when the search input has
	* padding (and `textfield` appearance).
	*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
	* Define consistent border, margin, and padding.
	*/
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
	* 1. Correct `color` not being inherited in IE 8/9/10/11.
	* 2. Remove padding so people aren't caught out if they zero out fieldsets.
	*/
legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
	* Remove default vertical scrollbar in IE 8/9/10/11.
	*/
textarea {
  overflow: auto; }

/**
	* Don't inherit the `font-weight` (applied by a rule above).
	* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
	*/
optgroup {
  font-weight: bold; }

/* Tables
		========================================================================== */
/**
	* Remove most spacing between table cells.
	*/
table {
  border-collapse: collapse;
  border-spacing: 0; }

td,
th {
  padding: 0; }

/*----------------------------------------------------------------------------*\
    MIXINS
    Default mixins

\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Functions
\*----------------------------------------------------------------------------*/
.bg--base {
  background-color: #4A4A4A !important; }

.color--base {
  color: #4A4A4A !important; }

.fill--base {
  fill: #4A4A4A !important; }

.bg--blank {
  background-color: #FFFFFF !important; }

.color--blank {
  color: #FFFFFF !important; }

.fill--blank {
  fill: #FFFFFF !important; }

.bg--subtle {
  background-color: #EBEBEB !important; }

.color--subtle {
  color: #EBEBEB !important; }

.fill--subtle {
  fill: #EBEBEB !important; }

.bg--brand {
  background-color: #189CD8 !important; }

.color--brand {
  color: #189CD8 !important; }

.fill--brand {
  fill: #189CD8 !important; }

.bg--brand-bright {
  background-color: #0898FF !important; }

.color--brand-bright {
  color: #0898FF !important; }

.fill--brand-bright {
  fill: #0898FF !important; }

.bg--brand-bright-fade {
  background-color: #51B7EC !important; }

.color--brand-bright-fade {
  color: #51B7EC !important; }

.fill--brand-bright-fade {
  fill: #51B7EC !important; }

.bg--brand-dark {
  background-color: #00002F !important; }

.color--brand-dark {
  color: #00002F !important; }

.fill--brand-dark {
  fill: #00002F !important; }

.bg--brand-sec {
  background-color: #B8E986 !important; }

.color--brand-sec {
  color: #B8E986 !important; }

.fill--brand-sec {
  fill: #B8E986 !important; }

/*  Mixins
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    Extends
    Clearfix, Module, Truncate

\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.cf:after, .nav:after,
.layer:after,
.layer-s:after,
.layer-l:after {
  content: "";
  display: table;
  clear: both; }

.module > *:last-child,
.module > *:last-child > *:last-child,
.module > *:last-child > *:last-child > *:last-child,
.module > *:last-child > *:last-child > *:last-child > *:last-child {
  margin-bottom: 0; }

.truncate {
  max-width: 100% ;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis; }

/*----------------------------------------------------------------------------*\
    Reset
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
html {
  box-sizing: border-box; }

*, *:before, *:after {
  box-sizing: inherit; }

/**
    * The usual resetting of margins, paddings, borders etc.
    */
blockquote,
dl,
dd,
ol,
ul,
h1,
h2,
h3,
h4,
h5,
h6,
p,
pre,
fieldset,
hr {
  margin: 0; }

fieldset,
ol,
ul {
  padding: 0; }

iframe,
fieldset {
  border: 0; }

/**
    * Remove extra vertical spacing when nesting lists.
    */
li > ul,
li > ol {
  margin-bottom: 0; }

/**
    * 1. Fix an odd quirk whereby, without this, code blocks are rendered at a
    *    font-size smaller than 1em.
    */
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  /* 1 */ }

/**
    * Suppress the focus outline on links that cannot be accessed via keyboard.
    * This prevents an unwanted focus outline from appearing around elements that
    * might still respond to pointer events.
    */
[tabindex="-1"]:focus {
  outline: none !important; }

/**
    * Image
    *
    * 1. By default all images are fluid
    * 2. Render `alt` visually offset when images don't load
    */
img {
  max-width: 100%;
  /* 1 */
  font-style: italic;
  /* 2 */ }

/*----------------------------------------------------------------------------*\
    Shared
    html, body, .wrapper, .site-width
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
html {
  font-family: "Montserrat", sans-serif;
  font-size: 16px;
  line-height: 24px;
  min-height: 100%;
  -moz-osx-font-smoothing: grayscale;
  /* 3 */
  -webkit-font-smoothing: antialiased;
  /* 3 */ }

html,
body {
  height: 100%; }

body {
  position: relative;
  min-height: 100%;
  -webkit-font-smoothing: antialiased;
  background-color: #FFFFFF; }

.wrapper {
  position: relative;
  min-height: 100%;
  height: auto;
  width: 100%;
  margin: 0 auto; }

.site-width {
  display: block;
  margin: 0 auto;
  max-width: 72.5rem ;
  padding: 0 1.5rem ; }

/**
    * Applies vertical rhythm to designated elements
    * As per: http://csswizardry.com/2012/06/single-direction-margin-declarations
    */
hgroup,
.hgroup,
ul,
ol,
dl,
blockquote,
p,
address,
table,
fieldset,
pre,
hr {
  margin-bottom: 1.5rem ; }

/**
    * Default indentation value for lists
    */
ul,
ol,
dd {
  margin-left: 1.5rem ; }

a[href^="mailto:"], a[href^="tel:"] {
  white-space: nowrap; }

/*----------------------------------------------------------------------------*\
    Arrange
    This component lets you lay out a row of cells in various ways. You can
    specify whether a cell should be wide enough to fit its content, or take up
    the remaining space in the row. It's also possible to give all cells an
    equal width, and to control their vertical alignment.


\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Mixins
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    GRID
    .grid, .grid__cell

\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.grid {
  text-rendering: optimizespeed;
  font-size: 0;
  margin-left: -1.5rem ;
  padding: 0;
  list-style: none;
  text-align: left; }

.grid__cell {
  padding-left: 1.5rem ;
  display: inline-block;
  width: 100%;
  margin: 0;
  vertical-align: top;
  text-align: left;
  font-size: 1rem ; }

.grid__cell--center {
  display: block;
  margin: 0 auto; }

/*----------------------------------------------------------------------------*\
    Layout
    .layout

\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Mixins
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.layout {
  display: flex;
  /* [1] */
  flex-flow: row wrap;
  padding: 0;
  /* [1] */
  margin-left: 0;
  /* [1] */
  list-style: none;
  /* [1] */ }

.layout--center {
  justify-content: center; }

.layout--right {
  justify-content: flex-end; }

.layout--middle {
  align-items: center; }

.layout--bottom {
  align-items: flex-end; }

.layout--fit > .layout__cell {
  flex: 1 1 0%; }

.layout--equalheight > .layout__cell {
  display: flex; }
  .layout--equalheight > .layout__cell > * {
    width: 100%;
    /* [1] */ }

.layout--gutter {
  margin-left: -1.5rem ; }
  .layout--gutter > .layout__cell {
    padding-left: 1.5rem ; }

.layout--gutter-xs {
  margin-left: -0.375rem ; }
  .layout--gutter-xs > .layout__cell {
    padding-left: 0.375rem ; }

.layout--gutter-s {
  margin-left: -0.75rem ; }
  .layout--gutter-s > .layout__cell {
    padding-left: 0.75rem ; }

.layout--gutter-l {
  margin-left: -3rem ; }
  .layout--gutter-l > .layout__cell {
    padding-left: 3rem ; }

.layout--gutter-xl {
  margin-left: -6rem ; }
  .layout--gutter-xl > .layout__cell {
    padding-left: 6rem ; }

.layout__cell {
  flex-basis: 100%;
  /* [1] */
  min-width: 0;
  /* [2] */ }

.layout__cell--center {
  margin-left: auto;
  margin-right: auto; }

.layout__cell--fit {
  flex-basis: auto; }

.layout__cell--fill {
  flex: 1 1 0%;
  /* [1] */
  flex-basis: 0%;
  /* [2] */ }

/*----------------------------------------------------------------------------*\
    DIMENSIONS
    .unit
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Mixins & functions
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/* Avoid creating rules like '.unit-12-12 {}'' */
/* Initialize variables */
/* Find the greatest common factor */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-1-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 8.33333% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-2-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 16.66667% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-3-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 25% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-4-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 33.33333% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-5-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 41.66667% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-6-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 50% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-7-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 58.33333% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-8-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 66.66667% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-9-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 75% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-10-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 83.33333% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.unit-11-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  width: 91.66667% !important; }

.unit-1-1 {
  width: 100% !important; }

.unit-auto {
  width: auto !important; }

[class*="push-"] {
  position: relative; }

/* Avoid creating rules like '.unit-12-12 {}'' */
/* Initialize variables */
/* Find the greatest common factor */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-1-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 8.33333% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-2-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 16.66667% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-3-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 25% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-4-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 33.33333% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-5-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 41.66667% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-6-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 50% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-7-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 58.33333% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-8-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 66.66667% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-9-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 75% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/* Reduced value of $i */
/* Reduced value of $n */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-10-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 83.33333% !important; }

/* Initialize variables */
/* Find the greatest common factor */
/**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
/**
                * Create units based on fractions
                */
.push-11-12 {
  /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
  left: 91.66667% !important; }

.push-0-0 {
  left: 0 !important; }

@media only screen and (max-width: 480px) {
  /* Avoid creating rules like '.unit-12-12 {}'' */
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-1-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 8.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-2-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 16.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-3-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 25% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-4-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 33.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-5-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 41.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-6-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 50% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-7-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 58.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-8-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 66.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-9-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 75% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-10-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 83.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-11-12--palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 91.66667% !important; }
  .unit-1-1--palm {
    width: 100% !important; }
  .unit-auto--palm {
    width: auto !important; } }

@media only screen and (min-width: 481px) {
  /* Avoid creating rules like '.unit-12-12 {}'' */
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-1-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 8.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-2-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 16.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-3-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 25% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-4-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 33.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-5-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 41.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-6-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 50% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-7-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 58.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-8-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 66.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-9-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 75% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-10-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 83.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-11-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 91.66667% !important; }
  .unit-1-1--gt-palm {
    width: 100% !important; }
  .unit-auto--gt-palm {
    width: auto !important; } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  /* Avoid creating rules like '.unit-12-12 {}'' */
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-1-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 8.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-2-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 16.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-3-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 25% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-4-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 33.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-5-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 41.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-6-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 50% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-7-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 58.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-8-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 66.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-9-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 75% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-10-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 83.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-11-12--lap {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 91.66667% !important; }
  .unit-1-1--lap {
    width: 100% !important; }
  .unit-auto--lap {
    width: auto !important; } }

@media only screen and (min-width: 1025px) {
  /* Avoid creating rules like '.unit-12-12 {}'' */
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-1-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 8.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-2-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 16.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-3-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 25% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-4-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 33.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-5-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 41.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-6-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 50% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-7-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 58.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-8-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 66.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-9-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 75% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-10-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 83.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .unit-11-12--desk {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    width: 91.66667% !important; }
  .unit-1-1--desk {
    width: 100% !important; }
  .unit-auto--desk {
    width: auto !important; } }

@media only screen and (min-width: 481px) {
  /* Avoid creating rules like '.unit-12-12 {}'' */
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-1-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 8.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-2-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 16.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-3-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 25% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-4-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 33.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-5-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 41.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-6-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 50% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-7-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 58.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-8-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 66.66667% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-9-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 75% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /* Reduced value of $i */
  /* Reduced value of $n */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-10-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 83.33333% !important; }
  /* Initialize variables */
  /* Find the greatest common factor */
  /**
                * Check if the reduced value of $n was also supplied in the
                * list of units to be built
                */
  /**
                * Create units based on fractions
                */
  .push-11-12--gt-palm {
    /**
                    * If this unit can be reduced then extend the previous rule
                    * 1. Use `flex-basis: auto` with a width to avoid box-sizing bug in IE10/11
                    */
    left: 91.66667% !important; }
  .push-0-0--gt-palm {
    left: 0 !important; } }

/*----------------------------------------------------------------------------*\
    Fixed ratio
    .fixedratio

\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    Island
    .island

\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/*  Media queries
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    Buttons
    .button
    
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.button {
  position: relative;
  display: inline-block;
  margin: 0;
  border: 1px solid #000;
  color: inherit;
  /* 1 */
  cursor: pointer;
  font: inherit;
  /* 2 */
  line-height: 2;
  /* 3 */
  text-align: center;
  text-decoration: none;
  vertical-align: middle;
  white-space: nowrap;
  /* 4 */
  -webkit-appearance: none;
  /* 5 */
  padding: 0.375rem 1.5rem ;
  /**  Remove excess padding and border in Firefox 4+ */ }
  .button:hover, .button:focus, .button:active {
    text-decoration: none; }
  .button::-moz-focus-inner {
    border: 0;
    padding: 0; }

.button--s {
  padding: 0 0.75rem ;
  font-size: 0.8125rem ;
  line-height: 1.84615; }

.button--l {
  padding: 0.75rem 3rem ; }

.button--xl {
  padding: 0.75rem 3rem ;
  font-size: 1.875rem ;
  line-height: 1.6; }

.button--full {
  display: block;
  width: 100%; }

/*----------------------------------------------------------------------------*\
    HELPERS
    Default classes almost always 
    
\*----------------------------------------------------------------------------*/
.sign {
  margin-bottom: 24px !important; }

.sign-s {
  margin-bottom: 12px !important; }

.sign-l {
  margin-bottom: 48px !important; }

.sign-inv {
  margin-bottom: -24px !important; }

.layer,
.layer-s,
.layer-l {
  display: block; }

.layer {
  padding: 3rem 0 ; }

.layer-s {
  padding: 1.5rem 0 ; }

.layer-l {
  padding: 6rem 0 ; }

.text-left {
  text-align: left; }

.text-center {
  text-align: center; }

.text-right {
  text-align: right; }

.nowrap {
  white-space: nowrap; }

.visuallyhidden, body:after, *[data-role=switchee][data-state=passive] {
  border: 0 !important;
  clip: rect(0 0 0 0) !important;
  height: 1px !important;
  margin: -1px !important;
  overflow: hidden !important;
  padding: 0 !important;
  position: absolute !important;
  width: 1px !important; }

@media only screen and (min-width: 481px) {
  .sign--gt-palm {
    margin-bottom: 1.5rem ; }
  .sign-s--gt-palm {
    margin-bottom: 0.75rem ; }
  .sign-l--gt-palm {
    margin-bottom: 3rem ; }
  .sign-inv--gt-palm {
    margin-bottom: -1.5rem ; }
  .layer--gt-palm {
    padding: 3rem 0 ; }
  .layer-s--gt-palm {
    padding: 1.5rem 0 ; }
  .layer-l--gt-palm {
    padding: 6rem 0 ; }
  .text-left--gt-palm {
    text-align: left; }
  .text-center--gt-palm {
    text-align: center; }
  .text-right--gt-palm {
    text-align: right; }
  .visuallyhidden--gt-palm {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important; } }

/*----------------------------------------------------------------------------*\
    Island
    .island

\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/*  Media queries
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    Form
    Form elements
    
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    Navigation
    .nav

\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.nav {
  padding: 0;
  margin: 0;
  list-style: none; }
  .nav > li,
  .nav > li > a {
    display: inline-block; }

.nav--stacked > li {
  display: list-item; }
  .nav--stacked > li > a {
    display: block; }

.nav--center {
  text-align: center; }

.nav--breadcrumb > li + li:before {
  content: "» "; }

.nav--breadcrumb-path > li + li:before {
  content: "/ "; }

.nav--breadcrumb > li + li[data-breadcrumb]:before {
  content: attr(data-breadcrumb) " "; }

.nav--pagination {
  text-align: center; }
  .nav--pagination > li {
    padding: 0.75rem ; }
    .nav--pagination > li > a {
      padding: 0.75rem ;
      margin: -0.75rem ; }

.nav--pagination__first a:before {
  content: "« "; }

.nav--pagination__last a:after {
  content: " »"; }

/*----------------------------------------------------------------------------*\
    ICON
    .icon
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.icon {
  fill: #4A4A4A;
  color: #189CD8; }

.icon:not([width]),
.icon:not([height]) {
  width: 1.5rem ;
  height: 1.5rem ; }

/*----------------------------------------------------------------------------*\
    IMAGE
    .image
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    Toggle
    Based on toggle.js
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
*[data-role=togglee][data-state=passive] {
  display: none; }

/*----------------------------------------------------------------------------*\
    FORM
    extends nobearcss framework form styling
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    LIST
    ul / ol / / li + dl / dt / dd
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/* Unordered list
    \*----------------------------------------------------------------------------*/
/* Ordered list
    \*----------------------------------------------------------------------------*/
/* (un)ordered list items
    \*----------------------------------------------------------------------------*/
/* Definition list
    \*----------------------------------------------------------------------------*/
/*  Branded list
    \*----------------------------------------------------------------------------*/
.list-brand {
  list-style: none;
  margin-left: 0; }
  .list-brand li {
    position: relative;
    margin-bottom: 1.5rem ; }
    .list-brand li:after {
      content: '';
      position: absolute;
      display: block;
      height: 1px;
      background-color: #189CD8;
      left: 0;
      width: 3rem ;
      bottom: -0.75rem ; }
    .list-brand li:last-child:after {
      content: none; }
    .list-brand li img {
      display: inline-block;
      vertical-align: middle; }

/*----------------------------------------------------------------------------*\
    TABLE
    tabular data only, do not use for layout
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
th {
  padding: 0.75rem ; }
  th:first-child {
    padding: 0.75rem 0.75rem 0.75rem 0 ; }
  th:last-child {
    padding: 0.75rem 0 0.75rem 0.75rem ; }

td {
  padding: 0.75rem ; }
  td:first-child {
    padding: 0.75rem 0.75rem 0.75rem 0 ; }
  td:last-child {
    padding: 0.75rem 0 0.75rem 0.75rem ; }

/*----------------------------------------------------------------------------*\
    TOP LEVEL
    HTML, body, wrapper, site-width overrides
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
body {
  font-weight: 300;
  color: #4A4A4A;
  background: #FFFFFF; }
  body:after {
    content: 'palm'; }

.wrapper {
  overflow-x: hidden; }

.site-width {
  padding: 0 0.75rem ; }

.site-width--left {
  padding-left: calc(50vw - 580px); }

.site-width--right {
  padding-right: calc(50vw - 580px); }

/*  Media queries
\*----------------------------------------------------------------------------*/
@media only screen and (min-width: 481px) and (max-width: 1024px) {
  body:after {
    content: 'lap'; } }

@media only screen and (min-width: 1025px) {
  body:after {
    content: 'desk'; } }

/*----------------------------------------------------------------------------*\
    TYPOGRAPHY
    text etc
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
h1, h2, h3, h4, h5, h6 {
  font-family: "Montserrat", sans-serif; }

h1,
.fontsize-xl {
  font-size: 2.8125rem ;
  line-height: 1.06667; }

h2,
.fontsize-l {
  font-size: 1.875rem ;
  line-height: 1.2; }

.fontsize-semi {
  font-size: 1.375rem ;
  line-height: 1.09091; }

h3, h4, h5, h6 {
  font-size: 1rem ;
  line-height: 1.5; }

.text-small {
  font-size: 0.8125rem ;
  line-height: 1.84615; }

.weight-medium {
  font-weight: 500; }

/*----------------------------------------------------------------------------*\
    FOOTER
    Bottom of page
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    HERO
    main intro image and text
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Animation keyframes
\*----------------------------------------------------------------------------*/
@keyframes textAppear {
  0% {
    opacity: 0;
    transform: translateX(-100vw); }
  100% {
    opacity: 1;
    transform: none; } }

@keyframes iconAppear {
  0% {
    opacity: 0;
    transform: scale(2); }
  100% {
    opacity: 1;
    transform: none; } }

@keyframes floating {
  0% {
    transform: translateY(-6px); }
  50% {
    transform: translateY(6px); }
  100% {
    transform: translateY(-6px); } }

/*  Component
\*----------------------------------------------------------------------------*/
.hero {
  position: relative;
  overflow: hidden;
  background-color: #00002F;
  height: 22.5rem ; }
  .hero:before, .hero:after {
    content: '';
    position: absolute;
    bottom: 0;
    width: 100%; }
  .hero:before {
    z-index: 1;
    height: 50%;
    background: linear-gradient(to bottom, transparent 0, #00002F 100%); }
  .hero:after {
    z-index: 2;
    height: 10%;
    background: linear-gradient(to bottom right, transparent 49.5%, #FFFFFF 50.5%);
    border-bottom: 5px solid #FFFFFF;
    transform: translateY(5px); }

.hero__chapeau,
.hero__heading,
.hero__subheading {
  position: absolute;
  z-index: 1;
  display: block;
  width: 100%;
  left: 0;
  text-shadow: 0px 2px 8px #4A4A4A;
  animation: 1s ease-in-out forwards textAppear;
  transform: translateX(-100vw);
  padding: 0 0.75rem ; }

.hero__chapeau,
.hero__heading {
  color: #FFFFFF; }

.hero__chapeau,
.hero__subheading {
  font-size: 1.875rem ;
  line-height: 1.06667; }

.hero__chapeau {
  font-weight: 500;
  animation-delay: .5s;
  top: 1.5rem ; }

.hero__heading {
  animation-delay: 1s;
  font-size: 2.8125rem ;
  line-height: 0.85333;
  top: 4.5rem ; }

.hero__subheading {
  animation-delay: 1.5s;
  color: #189CD8;
  font-weight: 700;
  margin: 0;
  bottom: 3rem ; }

.hero__image {
  position: relative;
  z-index: 0;
  display: block;
  transform: scale(1.2);
  background-size: cover;
  background-position: top right 15%;
  padding: 11.25rem 0 11.25rem 100% ;
  height: 22.5rem ; }

.hero__icons {
  display: none; }

/*  Media queries
\*----------------------------------------------------------------------------*/
@media only screen and (min-width: 1025px) {
  .hero {
    height: auto; }
    .hero:before {
      height: 30%; }
  .hero__chapeau,
  .hero__heading,
  .hero__subheading {
    width: 50%;
    padding-left: calc(50vw - 556px); }
  .hero__chapeau,
  .hero__subheading {
    font-size: 2.8125rem ;
    line-height: 0.8; }
  .hero__chapeau {
    top: 6rem ; }
  .hero__heading {
    font-size: 5.625rem ;
    line-height: 0.85333;
    top: 9rem ; }
  .hero__subheading {
    bottom: 4.5rem ; }
  .hero__image {
    height: auto;
    padding: 0;
    animation: heroimage 3s 1; }
  .hero__icons {
    display: block; }
  .hero__icon {
    position: absolute;
    z-index: 3;
    color: #FFFFFF;
    animation: floating 5s infinite;
    animation-timing-function: ease-in-out;
    text-shadow: 0px -2px 2px rgba(74, 74, 74, 0.5), 0px 2px 2px #4A4A4A;
    text-align: center;
    font-weight: 500;
    font-size: 1.875rem ;
    line-height: 0.8; }
    .hero__icon svg {
      position: relative;
      z-index: 1;
      display: block;
      vertical-align: top;
      margin: 0 auto;
      width: 2.25rem ;
      height: 2.25rem ; }
  .hero__icon__inner {
    opacity: 0;
    animation: 1s ease-in-out forwards iconAppear; }
    .hero__icon__inner .hero__icon__line {
      content: '';
      position: absolute;
      top: 100%;
      left: 50%;
      z-index: 0;
      width: 1px;
      background-color: #FFFFFF;
      transform-origin: top center;
      height: 3rem ; } }

/*----------------------------------------------------------------------------*\
    LAYER
    Page part
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.layer-xs {
  padding-top: 0.75rem ;
  padding-bottom: 0.75rem ; }

.layer--hasvisual {
  background-color: #EBEBEB;
  padding-top: 0; }
  .layer--hasvisual .layer__visual {
    position: relative;
    background-size: cover;
    background-position: right;
    padding: 0 100% 56.25% 0;
    margin-bottom: 1.5rem ; }
  .layer--hasvisual h2 {
    color: #189CD8;
    font-size: 1.875rem ;
    line-height: 1.2; }

/*  Media queries
\*----------------------------------------------------------------------------*/
@media only screen and (min-width: 481px) {
  .layer--hasvisual {
    background-color: transparent;
    position: relative;
    color: #FFFFFF;
    padding-top: 6rem ; }
    .layer--hasvisual .layer__visual {
      position: absolute;
      z-index: -1;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      padding: 0 100% 0 0;
      margin: 0;
      background-position: center; }
    .layer--hasvisual h2 {
      color: #FFFFFF;
      font-size: 2.8125rem ;
      line-height: 1.06667; } }

/*----------------------------------------------------------------------------*\
    MASTHEAD
    Top of page
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Animation Keyframes
\*----------------------------------------------------------------------------*/
@keyframes heroimage {
  0% {
    opacity: 0;
    transform: none; }
  100% {
    opacity: 1;
    transform: scale(1.2); } }

/*  Component
\*----------------------------------------------------------------------------*/
.masthead__header {
  position: fixed;
  z-index: 9999;
  top: 0;
  left: 0;
  width: 100%;
  padding: 0.75rem 0 ; }
  .masthead__header:after {
    content: '';
    position: absolute;
    z-index: -1;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #FFFFFF;
    transform-origin: top;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 0 2px rgba(74, 74, 74, 0.5); }

.masthead__baselink,
.masthead__nav {
  text-decoration: none; }

.masthead__baselink {
  display: block;
  overflow: hidden;
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  transform-origin: top left;
  height: 4.5rem ; }

.masthead__brand {
  display: block;
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  transform-origin: top left;
  height: 4.5rem ; }

.masthead__nav {
  position: absolute;
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  background: #FFFFFF;
  width: 50%;
  right: 0;
  box-shadow: 0 2px 2px rgba(74, 74, 74, 0.5);
  transform: translateX(100%);
  top: 6rem ; }
  .masthead__header[data-state=active] .masthead__nav {
    transform: none; }

.masthead__cta {
  display: none;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  right: 0.75rem ; }

.masthead__paneltoggler {
  position: absolute;
  background: linear-gradient(#189CD8, #189CD8) center right / 2.25rem 2.25rem no-repeat;
  font-size: 0;
  border: 0;
  outline: 0;
  overflow: hidden;
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  transform-origin: right;
  top: 1.875rem ;
  right: 0.75rem ;
  width: 2.25rem ;
  height: 2.25rem ; }
  .masthead__paneltoggler:before, .masthead__paneltoggler:after {
    content: '';
    position: absolute;
    right: 0;
    top: calc(50% - 0.225rem);
    background-color: #FFFFFF;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    width: 2.25rem ;
    height: 0.45rem ; }
  .masthead__paneltoggler:before {
    transform: translateY(-7.2px); }
  .masthead__paneltoggler:after {
    transform: translateY(7.2px); }
  .masthead__paneltoggler[data-state=active]:before {
    transform: rotate(45deg) scale(0.75); }
  .masthead__paneltoggler[data-state=active]:after {
    transform: rotate(-45deg) scale(0.75); }

.masthead__hero {
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), margin-bottom 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  top: 6rem ;
  margin-bottom: 6rem ; }

body[data-state=scrolled] .masthead__header:after {
  transform: scaleY(0.5);
  box-shadow: 0 0 6px rgba(74, 74, 74, 0.5); }

body[data-state=scrolled] .masthead__baselink {
  transform: scale(0.3333); }
  body[data-state=scrolled] .masthead__baselink .masthead__brand {
    transform: scale(1.375); }

body[data-state=scrolled] .masthead__nav {
  transform: translate(100%, -48px); }

body[data-state=scrolled] .masthead__header[data-state=active] .masthead__nav {
  transform: translate(0, -48px); }

body[data-state=scrolled] .masthead__paneltoggler {
  transform: translateY(-24px) scale(0.75); }

body[data-state=scrolled] .masthead__hero {
  transform: translateY(-48px); }

/*  Media queries
\*----------------------------------------------------------------------------*/
@media only screen and (min-width: 1025px) {
  .masthead__baselink,
  .masthead__nav {
    display: inline-block;
    vertical-align: middle; }
  .masthead__baselink {
    width: 6rem ; }
  .masthead__brand {
    transition: transform .3s ease, height    .3s ease; }
  .masthead__nav,
  body[data-state=scrolled] .masthead__nav {
    position: relative;
    width: auto;
    right: auto;
    top: auto;
    transform: none;
    box-shadow: none;
    padding-left: 6rem ; }
    .masthead__nav,
    body[data-state=scrolled] .masthead__nav,
    body[data-state=scrolled] .masthead__nav,
    body[data-state=scrolled]
    body[data-state=scrolled] .masthead__nav {
      top: auto; }
  body[data-state=scrolled] .masthead__nav {
    transform: translateY(-24px); }
  .masthead__cta {
    display: block;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
    .masthead__cta > a.button--cta {
      transition: border-radius 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
    body[data-state=scrolled] .masthead__cta {
      transform: translate(12px, calc(-50% - 24px)); }
      body[data-state=scrolled] .masthead__cta > a.button--cta {
        border-radius: 0; }
  .masthead__paneltoggler {
    display: none; } }

/*  Media queries
\*----------------------------------------------------------------------------*/
/*the container must be positioned relative:*/
.custom-select {
  position: relative;
  font-family: Arial;
  float: 'left'; }

.custom-select select {
  display: none;
  /*hide original SELECT element:*/ }

.select-selected {
  background-color: DodgerBlue; }

/*style the arrow inside the select element:*/
.select-selected:after {
  position: absolute;
  content: "";
  top: 14px;
  right: 10px;
  width: 0;
  height: 0;
  border: 6px solid transparent;
  border-color: #fff transparent transparent transparent; }

/*point the arrow upwards when the select box is open (active):*/
.select-selected.select-arrow-active:after {
  border-color: transparent transparent #fff transparent;
  top: 7px; }

/*style the items (options), including the selected item:*/
.select-items div, .select-selected {
  color: #ffffff;
  padding: 8px 16px;
  border: 1px solid transparent;
  border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
  cursor: pointer;
  user-select: none; }

/*style items (options):*/
.select-items {
  position: absolute;
  background-color: #189CD8;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 99; }

/*hide the items when the select box is closed:*/
.select-hide {
  display: none; }

.select-items div:hover, .same-as-selected {
  background-color: rgba(0, 0, 0, 0.1); }

/*----------------------------------------------------------------------------*\
    ANIMATION
    scroll triggered transitions
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.animation [class^='animation__'], .animation [class*=' animation__'] {
  transition: transform 1s cubic-bezier(0.4, 0, 0.2, 1), opacity 1s cubic-bezier(0.4, 0, 0.2, 1);
  opacity: 0; }
  .animation [class^='animation__'][data-state=in-viewport], .animation [class*=' animation__'][data-state=in-viewport] {
    transform: none;
    opacity: 1; }

.animation__slidefromleft {
  transform: translateX(-100%); }

.animation__slidefromright {
  transform: translateX(100%); }

/*  Media queries
\*----------------------------------------------------------------------------*/
@media only screen and (min-width: 481px) {
  .animation[data-role=onscroll][data-state=in-viewport] [class^='animation__'], .animation[data-role=onscroll][data-state=in-viewport] [class*=' animation__'] {
    transform: none;
    opacity: 1; } }

/*----------------------------------------------------------------------------*\
    BUTTON
    styled link, button, etc
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.button--cta {
  background-color: #B8E986;
  color: #4A4A4A;
  border: 0;
  font-weight: 700;
  font-size: 1rem ;
  line-height: 1.5;
  padding: 0.75rem 3rem ;
  border-radius: 1.5rem ; }
  .button--cta .button__inner {
    display: block;
    position: relative;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
  .button--cta:active {
    transition: none;
    box-shadow: 0 4px 2px -2px rgba(74, 74, 74, 0.5) inset;
    background-color: #abdd79; }
    .button--cta:active .button__inner {
      transform: translateY(2px);
      transition: none; }

/*  Media queries
\*----------------------------------------------------------------------------*/
.button--cta {
  box-shadow: 0 0 2px -2px rgba(74, 74, 74, 0.5);
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
  .button--cta:hover:not(:active) {
    transform: translateY(-2px);
    box-shadow: 0 4px 2px -2px rgba(74, 74, 74, 0.5);
    background-color: #c5f396; }

/*----------------------------------------------------------------------------*\
    CARD
    Block with content, optional image
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.card {
  display: block;
  position: relative;
  background-color: #FFFFFF;
  box-shadow: 0px 2px 8px rgba(74, 74, 74, 0.5);
  padding: 1.5rem ; }

.card--has-round-visual {
  padding-top: 8.25rem ;
  top: 8.25rem ;
  margin-bottom: 8.25rem ; }

.card__visual--round {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: -9.75rem ; }

.card--has-logo {
  padding: 0.75rem 1.5rem ; }

.card__logo {
  margin: 0 auto;
  display: block;
  width: 100%;
  background-repeat: no-repeat;
  background-size: contain;
  background-position: center;
  height: 6rem ;
  padding: 3rem 0 3rem 100% ; }

/*  Media queries
\*----------------------------------------------------------------------------*/
@media only screen and (min-width: 1025px) {
  a.card {
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1), filter 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
    a.card:hover:not(:active) {
      transform: translateY(-2px);
      box-shadow: 0 4px 12px rgba(74, 74, 74, 0.25); } }

/*----------------------------------------------------------------------------*\
    COVER
    fill out an image on the available space
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.cover {
  padding: 0 0 0 100%;
  background-size: cover;
  background-position: center;
  display: block;
  width: 100%;
  height: 100%; }

/*----------------------------------------------------------------------------*\
    DIMENSIONS
    Extends nobearcss dimensions
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Mixins & functions
\*----------------------------------------------------------------------------*/
/* Avoid creating rules like '.unit-12-12 {}'' */
.unit-1-12--expanded {
  width: calc(8.33333% + 3rem); }

.unit-1-12--shortened {
  width: calc(8.33333% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-1-12--palm--expanded {
    width: calc(8.33333% + 3rem); }
  .unit-1-12--palm--shortened {
    width: calc(8.33333% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-1-12--gt-palm--expanded {
    width: calc(8.33333% + 3rem); }
  .unit-1-12--gt-palm--shortened {
    width: calc(8.33333% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-1-12--lap--expanded {
    width: calc(8.33333% + 3rem); }
  .unit-1-12--lap--shortened {
    width: calc(8.33333% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-1-12--desk--expanded {
    width: calc(8.33333% + 3rem); }
  .unit-1-12--desk--shortened {
    width: calc(8.33333% - 3rem); } }

.unit-2-12--expanded {
  width: calc(16.66667% + 3rem); }

.unit-2-12--shortened {
  width: calc(16.66667% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-2-12--palm--expanded {
    width: calc(16.66667% + 3rem); }
  .unit-2-12--palm--shortened {
    width: calc(16.66667% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-2-12--gt-palm--expanded {
    width: calc(16.66667% + 3rem); }
  .unit-2-12--gt-palm--shortened {
    width: calc(16.66667% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-2-12--lap--expanded {
    width: calc(16.66667% + 3rem); }
  .unit-2-12--lap--shortened {
    width: calc(16.66667% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-2-12--desk--expanded {
    width: calc(16.66667% + 3rem); }
  .unit-2-12--desk--shortened {
    width: calc(16.66667% - 3rem); } }

.unit-3-12--expanded {
  width: calc(25% + 3rem); }

.unit-3-12--shortened {
  width: calc(25% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-3-12--palm--expanded {
    width: calc(25% + 3rem); }
  .unit-3-12--palm--shortened {
    width: calc(25% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-3-12--gt-palm--expanded {
    width: calc(25% + 3rem); }
  .unit-3-12--gt-palm--shortened {
    width: calc(25% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-3-12--lap--expanded {
    width: calc(25% + 3rem); }
  .unit-3-12--lap--shortened {
    width: calc(25% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-3-12--desk--expanded {
    width: calc(25% + 3rem); }
  .unit-3-12--desk--shortened {
    width: calc(25% - 3rem); } }

.unit-4-12--expanded {
  width: calc(33.33333% + 3rem); }

.unit-4-12--shortened {
  width: calc(33.33333% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-4-12--palm--expanded {
    width: calc(33.33333% + 3rem); }
  .unit-4-12--palm--shortened {
    width: calc(33.33333% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-4-12--gt-palm--expanded {
    width: calc(33.33333% + 3rem); }
  .unit-4-12--gt-palm--shortened {
    width: calc(33.33333% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-4-12--lap--expanded {
    width: calc(33.33333% + 3rem); }
  .unit-4-12--lap--shortened {
    width: calc(33.33333% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-4-12--desk--expanded {
    width: calc(33.33333% + 3rem); }
  .unit-4-12--desk--shortened {
    width: calc(33.33333% - 3rem); } }

.unit-5-12--expanded {
  width: calc(41.66667% + 3rem); }

.unit-5-12--shortened {
  width: calc(41.66667% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-5-12--palm--expanded {
    width: calc(41.66667% + 3rem); }
  .unit-5-12--palm--shortened {
    width: calc(41.66667% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-5-12--gt-palm--expanded {
    width: calc(41.66667% + 3rem); }
  .unit-5-12--gt-palm--shortened {
    width: calc(41.66667% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-5-12--lap--expanded {
    width: calc(41.66667% + 3rem); }
  .unit-5-12--lap--shortened {
    width: calc(41.66667% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-5-12--desk--expanded {
    width: calc(41.66667% + 3rem); }
  .unit-5-12--desk--shortened {
    width: calc(41.66667% - 3rem); } }

.unit-6-12--expanded {
  width: calc(50% + 3rem); }

.unit-6-12--shortened {
  width: calc(50% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-6-12--palm--expanded {
    width: calc(50% + 3rem); }
  .unit-6-12--palm--shortened {
    width: calc(50% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-6-12--gt-palm--expanded {
    width: calc(50% + 3rem); }
  .unit-6-12--gt-palm--shortened {
    width: calc(50% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-6-12--lap--expanded {
    width: calc(50% + 3rem); }
  .unit-6-12--lap--shortened {
    width: calc(50% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-6-12--desk--expanded {
    width: calc(50% + 3rem); }
  .unit-6-12--desk--shortened {
    width: calc(50% - 3rem); } }

.unit-7-12--expanded {
  width: calc(58.33333% + 3rem); }

.unit-7-12--shortened {
  width: calc(58.33333% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-7-12--palm--expanded {
    width: calc(58.33333% + 3rem); }
  .unit-7-12--palm--shortened {
    width: calc(58.33333% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-7-12--gt-palm--expanded {
    width: calc(58.33333% + 3rem); }
  .unit-7-12--gt-palm--shortened {
    width: calc(58.33333% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-7-12--lap--expanded {
    width: calc(58.33333% + 3rem); }
  .unit-7-12--lap--shortened {
    width: calc(58.33333% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-7-12--desk--expanded {
    width: calc(58.33333% + 3rem); }
  .unit-7-12--desk--shortened {
    width: calc(58.33333% - 3rem); } }

.unit-8-12--expanded {
  width: calc(66.66667% + 3rem); }

.unit-8-12--shortened {
  width: calc(66.66667% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-8-12--palm--expanded {
    width: calc(66.66667% + 3rem); }
  .unit-8-12--palm--shortened {
    width: calc(66.66667% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-8-12--gt-palm--expanded {
    width: calc(66.66667% + 3rem); }
  .unit-8-12--gt-palm--shortened {
    width: calc(66.66667% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-8-12--lap--expanded {
    width: calc(66.66667% + 3rem); }
  .unit-8-12--lap--shortened {
    width: calc(66.66667% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-8-12--desk--expanded {
    width: calc(66.66667% + 3rem); }
  .unit-8-12--desk--shortened {
    width: calc(66.66667% - 3rem); } }

.unit-9-12--expanded {
  width: calc(75% + 3rem); }

.unit-9-12--shortened {
  width: calc(75% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-9-12--palm--expanded {
    width: calc(75% + 3rem); }
  .unit-9-12--palm--shortened {
    width: calc(75% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-9-12--gt-palm--expanded {
    width: calc(75% + 3rem); }
  .unit-9-12--gt-palm--shortened {
    width: calc(75% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-9-12--lap--expanded {
    width: calc(75% + 3rem); }
  .unit-9-12--lap--shortened {
    width: calc(75% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-9-12--desk--expanded {
    width: calc(75% + 3rem); }
  .unit-9-12--desk--shortened {
    width: calc(75% - 3rem); } }

.unit-10-12--expanded {
  width: calc(83.33333% + 3rem); }

.unit-10-12--shortened {
  width: calc(83.33333% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-10-12--palm--expanded {
    width: calc(83.33333% + 3rem); }
  .unit-10-12--palm--shortened {
    width: calc(83.33333% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-10-12--gt-palm--expanded {
    width: calc(83.33333% + 3rem); }
  .unit-10-12--gt-palm--shortened {
    width: calc(83.33333% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-10-12--lap--expanded {
    width: calc(83.33333% + 3rem); }
  .unit-10-12--lap--shortened {
    width: calc(83.33333% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-10-12--desk--expanded {
    width: calc(83.33333% + 3rem); }
  .unit-10-12--desk--shortened {
    width: calc(83.33333% - 3rem); } }

.unit-11-12--expanded {
  width: calc(91.66667% + 3rem); }

.unit-11-12--shortened {
  width: calc(91.66667% - 3rem); }

@media only screen and (max-width: 480px) {
  .unit-11-12--palm--expanded {
    width: calc(91.66667% + 3rem); }
  .unit-11-12--palm--shortened {
    width: calc(91.66667% - 3rem); } }

@media only screen and (min-width: 481px) {
  .unit-11-12--gt-palm--expanded {
    width: calc(91.66667% + 3rem); }
  .unit-11-12--gt-palm--shortened {
    width: calc(91.66667% - 3rem); } }

@media only screen and (min-width: 481px) and (max-width: 1024px) {
  .unit-11-12--lap--expanded {
    width: calc(91.66667% + 3rem); }
  .unit-11-12--lap--shortened {
    width: calc(91.66667% - 3rem); } }

@media only screen and (min-width: 1025px) {
  .unit-11-12--desk--expanded {
    width: calc(91.66667% + 3rem); }
  .unit-11-12--desk--shortened {
    width: calc(91.66667% - 3rem); } }

/*----------------------------------------------------------------------------*\
    HELPERS
    various small helper classes
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.greyscale, a.card {
  filter: gray;
  /* IE6-9 */
  -webkit-filter: grayscale(1);
  /* Google Chrome, Safari 6+ & Opera 15+ */
  filter: grayscale(1);
  /* Microsoft Edge and Firefox 35+ */ }

/*  Media queries
\*----------------------------------------------------------------------------*/
@media only screen and (min-width: 1025px) {
  .greyscale--nohover:hover, a.card:hover {
    -webkit-filter: grayscale(0);
    filter: none; } }

/*----------------------------------------------------------------------------*\
    ICON
    extends nobearcss icon
    small indicative image
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.icon--l:not([width]), .icon--l:not([height]) {
  width: 3rem ;
  height: 3rem ; }

.icon--xl:not([width]), .icon--xl:not([height]) {
  width: 4.5rem ;
  height: 4.5rem ; }

.icon__gradient {
  fill: #189CD8;
  fill: url(#icongradient); }

.icon-gradient__start {
  stop-color: #51B7EC; }

.icon-gradient__stop {
  stop-color: #0898FF; }

/*----------------------------------------------------------------------------*\
    LAYOUT
    Extends nobearcss layout
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.layout--rev {
  flex-direction: row-reverse; }

/*----------------------------------------------------------------------------*\
    MEDIA
    Image with text
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.media {
  overflow: hidden; }

.media__image {
  min-height: 15rem ; }

/*----------------------------------------------------------------------------*\
    OFFSET
    Description
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.offset {
  position: relative; }

.offset--top-xl {
  margin-bottom: -4.5rem ; }

/*  Media queries
\*----------------------------------------------------------------------------*/
@media only screen and (min-width: 481px) {
  .offset--top-xl--gt-palm {
    margin-bottom: -4.5rem ; } }

/*----------------------------------------------------------------------------*\
    PYRAMID
    Layers increasing in size
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.pyramid {
  position: relative;
  z-index: 1;
  color: #FFFFFF; }
  .pyramid:before, .pyramid:after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%; }
  .pyramid:before {
    z-index: -1;
    background: linear-gradient(to bottom right, transparent 50%, #189CD8 50%) top left/50% 100% no-repeat, linear-gradient(to bottom left, transparent 50%, #189CD8 50%) top right/50% 100% no-repeat; }
  .pyramid:after {
    z-index: -2;
    background: linear-gradient(to bottom right, transparent 50%, rgba(0, 0, 0, 0.5) 50%) top left/50% 100% no-repeat, linear-gradient(to bottom left, transparent 50%, rgba(0, 0, 0, 0.5) 50%) top right/50% 100% no-repeat;
    transform-origin: bottom;
    filter: blur(24px);
    transform: skew(-55deg) scaleY(0.5); }

.pyramid__layer {
  position: relative;
  text-align: center;
  font-weight: 600;
  background: linear-gradient(#189CD8, #189CD8) center top/1px 100% no-repeat;
  height: 4.5rem ;
  padding: 1.5rem 0.75rem ; }
  .pyramid__layer span {
    position: relative;
    display: inline-block;
    vertical-align: top;
    top: 50%;
    transform: translateY(-50%); }
  .pyramid__layer:after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: 0;
    height: 1px;
    width: 100%;
    background: #FFFFFF; }
  .pyramid__layer:last-child:after {
    content: none; }

.pyramid__layer--1 {
  height: 9rem ;
  padding-top: 6rem ; }
  .pyramid__layer--1:after {
    width: 28.57143%;
    margin-left: -14.28571%; }

.pyramid__layer--2 {
  padding-left: 35.71429%;
  padding-right: 35.71429%; }
  .pyramid__layer--2:after {
    width: 42.85714%;
    margin-left: -21.42857%; }

.pyramid__layer--3 {
  padding-left: 28.57143%;
  padding-right: 28.57143%; }
  .pyramid__layer--3:after {
    width: 57.14286%;
    margin-left: -28.57143%; }

.pyramid__layer--4 {
  padding-left: 21.42857%;
  padding-right: 21.42857%; }
  .pyramid__layer--4:after {
    width: 71.42857%;
    margin-left: -35.71429%; }

.pyramid__layer--5 {
  padding-left: 14.28571%;
  padding-right: 14.28571%; }
  .pyramid__layer--5:after {
    width: 85.71429%;
    margin-left: -42.85714%; }

.pyramid__layer--6 {
  padding-left: 7.14286%;
  padding-right: 7.14286%; }
  .pyramid__layer--6:after {
    width: 100%;
    margin-left: -50%; }

/*----------------------------------------------------------------------------*\
    SQUEEZE
    side padding
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.squeeze {
  padding-left: 1.5rem ;
  padding-right: 1.5rem ; }

.squeeze-s {
  padding-left: 0.75rem ;
  padding-right: 0.75rem ; }

/*  Media queries
\*----------------------------------------------------------------------------*/
@media only screen and (max-width: 480px) {
  .squeeze--palm {
    padding-left: 1.5rem ;
    padding-right: 1.5rem ; }
  .squeeze-s--palm {
    padding-left: 0.75rem ;
    padding-right: 0.75rem ; } }

/*----------------------------------------------------------------------------*\
    Switch
    Based on switch.js
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*\
    MAIN MENU
    Main navigation, preferably first in the HTML
\*----------------------------------------------------------------------------*/
/*  Variables
\*----------------------------------------------------------------------------*/
/*  Component
\*----------------------------------------------------------------------------*/
.nav--main {
  font-size: 0; }
  .nav--main .nav__link {
    text-decoration: none;
    color: #189CD8;
    font-size: 1rem ;
    line-height: 1.5;
    padding: 0.75rem 1.5rem ; }

/*  Media queries
\*----------------------------------------------------------------------------*/
@media only screen and (min-width: 1025px) {
  .nav--main .nav__link {
    transition: padding 0.3s cubic-bezier(0.4, 0, 0.2, 1), transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), color 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
    .nav--main .nav__link:hover {
      transform: scale(1.125);
      color: #00002F; }
  body[data-state=scrolled] .nav--main .nav__link {
    padding: 0.75rem 1.5rem ; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuY3NzIiwic291cmNlcyI6WyJ0aGVtZS5zY3NzIiwiX3ZhcnMuc2NzcyIsIi4uL2xpYi9ub2JlYXJjc3MvX3N0YXJ0ZXJraXQuc2NzcyIsIi4uL2xpYi9ub2JlYXJjc3MtZGVmYXVsdHMvX2RlZmF1bHRzLnNjc3MiLCIuLi9saWIvbm9iZWFyY3NzLW5vcm1hbGl6ZS9fbm9ybWFsaXplLnNjc3MiLCIuLi9saWIvbm9iZWFyY3NzLW1peGlucy9fbWl4aW5zLnNjc3MiLCIuLi9saWIvbm9iZWFyY3NzLWV4dGVuZHMvX2V4dGVuZHMuc2NzcyIsIi4uL2xpYi9ub2JlYXJjc3MtcmVzZXQvX3Jlc2V0LnNjc3MiLCIuLi9saWIvbm9iZWFyY3NzLXNoYXJlZC9fc2hhcmVkLnNjc3MiLCIuLi9saWIvbm9iZWFyY3NzLWFycmFuZ2UvX2FycmFuZ2Uuc2NzcyIsIi4uL2xpYi9ub2JlYXJjc3MtZ3JpZC9fZ3JpZC5zY3NzIiwiLi4vbGliL25vYmVhcmNzcy1sYXlvdXQvX2xheW91dC5zY3NzIiwiLi4vbGliL25vYmVhcmNzcy1kaW1lbnNpb25zL19kaW1lbnNpb25zLnNjc3MiLCIuLi9saWIvbm9iZWFyY3NzLWZpeGVkcmF0aW8vX2ZpeGVkcmF0aW8uc2NzcyIsIi4uL2xpYi9ub2JlYXJjc3MtaXNsYW5kL19pc2xhbmQuc2NzcyIsIi4uL2xpYi9ub2JlYXJjc3MtYnV0dG9ucy9fYnV0dG9ucy5zY3NzIiwiLi4vbGliL25vYmVhcmNzcy1oZWxwZXJzL19oZWxwZXJzLnNjc3MiLCIuLi9saWIvbm9iZWFyY3NzLWZvcm0vX2Zvcm0uc2NzcyIsIi4uL2xpYi9ub2JlYXJjc3MtbmF2L19uYXYuc2NzcyIsIi4uL2xpYi9ub2JlYXJjc3MtaWNvbnMvX2ljb25zLnNjc3MiLCIuLi9saWIvbm9iZWFyY3NzLWltYWdlL19pbWFnZS5zY3NzIiwiLi4vbGliL25vYmVhcmNzcy10b2dnbGUvX3RvZ2dsZS5zY3NzIiwidGhlbWUvYmFzZS9fZm9ybS5zY3NzIiwidGhlbWUvYmFzZS9fbGlzdC5zY3NzIiwidGhlbWUvYmFzZS9fdGFibGUuc2NzcyIsInRoZW1lL2Jhc2UvX3RvcGxldmVsLnNjc3MiLCJ0aGVtZS9iYXNlL190eXBvZ3JhcGh5LnNjc3MiLCJ0aGVtZS9sYXlvdXQvX2Zvb3Rlci5zY3NzIiwidGhlbWUvbGF5b3V0L19oZXJvLnNjc3MiLCJ0aGVtZS9sYXlvdXQvX2xheWVyLnNjc3MiLCJ0aGVtZS9sYXlvdXQvX21hc3RoZWFkLnNjc3MiLCJ0aGVtZS9tb2R1bGVzL19hbmltYXRpb24uc2NzcyIsInRoZW1lL21vZHVsZXMvX2J1dHRvbi5zY3NzIiwidGhlbWUvbW9kdWxlcy9fY2FyZC5zY3NzIiwidGhlbWUvbW9kdWxlcy9fY292ZXIuc2NzcyIsInRoZW1lL21vZHVsZXMvX2RpbWVuc2lvbnMuc2NzcyIsInRoZW1lL21vZHVsZXMvX2hlbHBlcnMuc2NzcyIsInRoZW1lL21vZHVsZXMvX2ljb24uc2NzcyIsInRoZW1lL21vZHVsZXMvX2xheW91dC5zY3NzIiwidGhlbWUvbW9kdWxlcy9fbWVkaWEuc2NzcyIsInRoZW1lL21vZHVsZXMvX29mZnNldC5zY3NzIiwidGhlbWUvbW9kdWxlcy9fcHlyYW1pZC5zY3NzIiwidGhlbWUvbW9kdWxlcy9fc3F1ZWV6ZS5zY3NzIiwidGhlbWUvbW9kdWxlcy9fc3dpdGNoLnNjc3MiLCJ0aGVtZS9uYXYvX25hdm1haW4uc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBUaGVtZVxuICAgIFRoZW1lIHN0eWxlc2hlZXQsIGV4dGVuZHMgbm9iZWFyY3NzIGZyYW1ld29ya1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBJbXBvcnRzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpbXBvcnQgXCJ2YXJzXCI7XG4gICAgQGltcG9ydCBcIi4uL2xpYi9ub2JlYXJjc3Mvc3RhcnRlcmtpdFwiO1xuXG4gICAgLy8gREVGQVVMVCBGUkFNRVdPUksgTU9EVUxFU1xuICAgIEBpbXBvcnQgXCIuLi9saWIvbm9iZWFyY3NzLWFycmFuZ2UvYXJyYW5nZVwiO1xuICAgIEBpbXBvcnQgXCIuLi9saWIvbm9iZWFyY3NzLWdyaWQvZ3JpZFwiO1xuICAgIEBpbXBvcnQgXCIuLi9saWIvbm9iZWFyY3NzLWxheW91dC9sYXlvdXRcIjtcbiAgICBAaW1wb3J0IFwiLi4vbGliL25vYmVhcmNzcy1kaW1lbnNpb25zL2RpbWVuc2lvbnNcIjtcbiAgICBAaW1wb3J0IFwiLi4vbGliL25vYmVhcmNzcy1maXhlZHJhdGlvL2ZpeGVkcmF0aW9cIjtcbiAgICBAaW1wb3J0IFwiLi4vbGliL25vYmVhcmNzcy1pc2xhbmQvaXNsYW5kXCI7XG4gICAgQGltcG9ydCBcIi4uL2xpYi9ub2JlYXJjc3MtYnV0dG9ucy9idXR0b25zXCI7XG4gICAgQGltcG9ydCBcIi4uL2xpYi9ub2JlYXJjc3MtaGVscGVycy9oZWxwZXJzXCI7XG4gICAgQGltcG9ydCBcIi4uL2xpYi9ub2JlYXJjc3MtaXNsYW5kL2lzbGFuZFwiO1xuICAgIEBpbXBvcnQgXCIuLi9saWIvbm9iZWFyY3NzLWZvcm0vZm9ybVwiO1xuICAgIEBpbXBvcnQgXCIuLi9saWIvbm9iZWFyY3NzLW5hdi9uYXZcIjtcbiAgICBAaW1wb3J0IFwiLi4vbGliL25vYmVhcmNzcy1pY29ucy9pY29uc1wiO1xuICAgIEBpbXBvcnQgXCIuLi9saWIvbm9iZWFyY3NzLWltYWdlL2ltYWdlXCI7XG4gICAgQGltcG9ydCBcIi4uL2xpYi9ub2JlYXJjc3MtdG9nZ2xlL3RvZ2dsZVwiO1xuXG4gICAgLy8gQk9JTEVSUExBVEUgKyBDVVNUT00gTU9EVUxFJ1NcbiAgICBAaW1wb3J0IFwidGhlbWUvYmFzZS9fZm9ybS5zY3NzXCI7XG5AaW1wb3J0IFwidGhlbWUvYmFzZS9fbGlzdC5zY3NzXCI7XG5AaW1wb3J0IFwidGhlbWUvYmFzZS9fdGFibGUuc2Nzc1wiO1xuQGltcG9ydCBcInRoZW1lL2Jhc2UvX3RvcGxldmVsLnNjc3NcIjtcbkBpbXBvcnQgXCJ0aGVtZS9iYXNlL190eXBvZ3JhcGh5LnNjc3NcIjtcbkBpbXBvcnQgXCJ0aGVtZS9sYXlvdXQvX2Zvb3Rlci5zY3NzXCI7XG5AaW1wb3J0IFwidGhlbWUvbGF5b3V0L19oZXJvLnNjc3NcIjtcbkBpbXBvcnQgXCJ0aGVtZS9sYXlvdXQvX2xheWVyLnNjc3NcIjtcbkBpbXBvcnQgXCJ0aGVtZS9sYXlvdXQvX21hc3RoZWFkLnNjc3NcIjtcbkBpbXBvcnQgXCJ0aGVtZS9tb2R1bGVzL19hbmltYXRpb24uc2Nzc1wiO1xuQGltcG9ydCBcInRoZW1lL21vZHVsZXMvX2J1dHRvbi5zY3NzXCI7XG5AaW1wb3J0IFwidGhlbWUvbW9kdWxlcy9fY2FyZC5zY3NzXCI7XG5AaW1wb3J0IFwidGhlbWUvbW9kdWxlcy9fY292ZXIuc2Nzc1wiO1xuQGltcG9ydCBcInRoZW1lL21vZHVsZXMvX2RpbWVuc2lvbnMuc2Nzc1wiO1xuQGltcG9ydCBcInRoZW1lL21vZHVsZXMvX2hlbHBlcnMuc2Nzc1wiO1xuQGltcG9ydCBcInRoZW1lL21vZHVsZXMvX2ljb24uc2Nzc1wiO1xuQGltcG9ydCBcInRoZW1lL21vZHVsZXMvX2xheW91dC5zY3NzXCI7XG5AaW1wb3J0IFwidGhlbWUvbW9kdWxlcy9fbWVkaWEuc2Nzc1wiO1xuQGltcG9ydCBcInRoZW1lL21vZHVsZXMvX29mZnNldC5zY3NzXCI7XG5AaW1wb3J0IFwidGhlbWUvbW9kdWxlcy9fcHlyYW1pZC5zY3NzXCI7XG5AaW1wb3J0IFwidGhlbWUvbW9kdWxlcy9fc3F1ZWV6ZS5zY3NzXCI7XG5AaW1wb3J0IFwidGhlbWUvbW9kdWxlcy9fc3dpdGNoLnNjc3NcIjtcbkBpbXBvcnQgXCJ0aGVtZS9uYXYvX25hdm1haW4uc2Nzc1wiO1xuXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBWYXJzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblxuJHNpdGUtd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgICAxMTYwcHg7XG5cbiRiYXNlLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgMTZweDtcbiRiYXNlLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgICAgICAgMjRweDtcbiRsaW5lLWhlaWdodC1yYXRpbzogICAgICAgICAgICAgICAgJGJhc2UtbGluZS1oZWlnaHQvJGJhc2UtZm9udC1zaXplO1xuXG4kc3BhY2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiYXNlLWxpbmUtaGVpZ2h0O1xuJHNwYWNlLXhzOiAgICAgICAgICAgICAgICAgICAgICAgICAkc3BhY2UvNDtcbiRzcGFjZS1zOiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNwYWNlLzI7XG4kc3BhY2UtbDogICAgICAgICAgICAgICAgICAgICAgICAgICRzcGFjZSoyO1xuJHNwYWNlLXhsOiAgICAgICAgICAgICAgICAgICAgICAgICAkc3BhY2UqNDtcblxuLyogTW9kdWxlcyAqL1xuJHVzZS1idXR0b25zOiAgICAgICAgICAgICAgICAgICAgICB0cnVlO1xuJHVzZS1pc2xhbmQ6ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZTtcbiR1c2UtbmF2aWdhdGlvbjogICAgICAgICAgICAgICAgICAgdHJ1ZTtcblxuLyogbGF5b3V0ICovXG4kdXNlLWxheW91dDogICAgICAgICAgICAgICAgICAgICAgIHRydWU7XG5cbi8qIGFycmFuZ2UgKi9cbiR1c2UtYXJyYW5nZTogICAgICAgICAgICAgICAgICAgICAgZmFsc2U7XG4kYXJyYW5nZS1ndXR0ZXI6ICAgICAgICAgICAgICAgICAgICRzcGFjZTtcbiRicmVha3BvaW50LWhhcy1jb2xsYXBzZWQtYXJyYW5nZTogKCk7XG5cbi8qIGdyaWQgKi9cbiR1c2UtZ3JpZDogICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZTtcbiRlbmFibGUtZ3JpZC1yZXY6ICAgICAgICAgICAgICAgICAgZmFsc2U7XG4kZW5hYmxlLWdyaWQtcmlnaHQ6ICAgICAgICAgICAgICAgIGZhbHNlO1xuJGVuYWJsZS1ncmlkLWNlbnRlcjogICAgICAgICAgICAgICBmYWxzZTtcbiRlbmFibGUtZ3JpZC12ZXJ0aWNhbDogICAgICAgICAgICAgZmFsc2U7XG4kZW5hYmxlLWdyaWQtbmFycm93OiAgICAgICAgICAgICAgIGZhbHNlO1xuJGVuYWJsZS1ncmlkLXdpZGU6ICAgICAgICAgICAgICAgICBmYWxzZTtcbiRlbmFibGUtZ3JpZC1mbHVzaDogICAgICAgICAgICAgICAgZmFsc2U7XG5cbi8qIHVuaXRzICovXG4kZGltZW5zaW9ucy11c2UtdW5pdHM6ICAgICAgICAgICAgIHRydWU7XG5cbi8qIHVuaXRzIC8gZGl2aXNpb25zICovXG4kZGltZW5zaW9ucy1kaXZpc2lvbnM6ICAgICAgICAgICAgIDEyO1xuXG4vKiB1bml0cyAvIGJyZWFrcG9pbnRzICovXG4kYnJlYWtwb2ludHM6IChcbiAgICAgICAgJ3BhbG0nICAgICAgJyhtYXgtd2lkdGg6IDQ4MHB4KScsXG4gICAgICAgICdndC1wYWxtJyAgICcobWluLXdpZHRoOiA0ODFweCknLFxuICAgICAgICAnbGFwJyAgICAgICAnKG1pbi13aWR0aDogNDgxcHgpIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpJyxcbiAgICAgICAgJ2x0LWRlc2snICAgJyhtYXgtd2lkdGg6IDEwMjRweCknLFxuICAgICAgICAnZGVzaycgICAgICAnKG1pbi13aWR0aDogMTAyNXB4KSdcbik7XG4kZGltZW5zaW9ucy1icmVha3BvaW50LWhhcy11bml0czogICgncGFsbScsICdndC1wYWxtJywgJ2xhcCcsICdkZXNrJyk7XG5cbi8qIHB1c2ggKi9cbiRkaW1lbnNpb25zLXVzZS1wdXNoOiAgICAgICAgICAgICAgdHJ1ZTtcbiRkaW1lbnNpb25zLWJyZWFrcG9pbnQtaGFzLXB1c2g6ICAgKCdndC1wYWxtJyk7XG5cbi8qIHB1bGwqL1xuJGRpbWVuc2lvbnMtdXNlLXB1bGw6ICAgICAgICAgICAgICBmYWxzZTtcbiRkaW1lbnNpb25zLWJyZWFrcG9pbnQtaGFzLXB1bGw6ICAgKCk7XG5cbi8qIGhlbHBlcnMgKi9cbiRicmVha3BvaW50LWhhcy1oZWxwZXJzOiAgICAgICAgICAgKCdndC1wYWxtJyk7XG5cbi8qIGhlbHBlcnMgKi9cbiRicmVha3BvaW50LWhhcy1pc2xhbmQ6ICAgICAgICAgICAgKCk7XG5cbi8qIGFycmFuZ2UgYW5kIGxheW91dCAqL1xuJGRpbWVuc2lvbnMtYnJlYWtwb2ludC1oYXMtZml0OiAgICAoKTtcbiRkaW1lbnNpb25zLWJyZWFrcG9pbnQtaGFzLWZpbGw6ICAgKCk7XG5cbi8qIGZpeGVkIHJhdGlvICovXG4kdXNlLWZpeGVkcmF0aW86ICAgICAgICAgICAgICAgICAgIGZhbHNlO1xuXG4vKiBpY29ucyAqL1xuJHVzZS1pY29uczogICAgICAgICAgICAgICAgICAgICAgICB0cnVlO1xuXG4vKiBpbWFnZXMgKi9cbiR1c2UtaW1hZ2U6ICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2U7XG5cbi8qIEZvcm0gZWxlbWVudHMgKi9cbiR1c2UtZm9ybXM6ICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2U7XG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJFRZUE9HUkFQSFlcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4kZm9udHNpemUteHhsOiAgICAgIDkwcHg7XG4kZm9udHNpemUteGw6ICAgICAgIDQ1cHg7XG4kZm9udHNpemUtbDogICAgICAgIDMwcHg7XG4kZm9udHNpemUtc2VtaTogICAgIDIycHg7XG4kZm9udHNpemUtbTogICAgICAgICRiYXNlLWZvbnQtc2l6ZTtcbiRmb250c2l6ZS1zOiAgICAgICAgMTNweDtcblxuJGZvbnQtYmFzZTogICAgICAgICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiRmb250LWJyYW5kOiAgICAgICAkZm9udC1iYXNlO1xuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRDT0xPUlNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cbiRjb2xvcnM6IChcbiAgICBiYXNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICM0QTRBNEEsXG4gICAgYmxhbms6ICAgICAgICAgICAgICAgICAgICAgICAgICAjRkZGRkZGLFxuICAgIHN1YnRsZTogICAgICAgICAgICAgICAgICAgICAgICAgI0VCRUJFQixcbiAgICBcbiAgICBicmFuZDogICAgICAgICAgICAgICAgICAgICAgICAgICMxODlDRDgsXG4gICAgYnJhbmQtYnJpZ2h0OiAgICAgICAgICAgICAgICAgICAjMDg5OEZGLFxuICAgIGJyYW5kLWJyaWdodC1mYWRlOiAgICAgICAgICAgICAgIzUxQjdFQyxcbiAgICBicmFuZC1kYXJrOiAgICAgICAgICAgICAgICAgICAgICMwMDAwMkYsXG4gICAgYnJhbmQtc2VjOiAgICAgICAgICAgICAgICAgICAgICAjQjhFOTg2XG4pO1xuXG4vL1RPRE86IGNvbG9yIHRpbnQgbWl4aW4/IGh0dHBzOi8vbWVkaXVtLmNvbS9AZXJpa2RrZW5uZWR5L2NvbG9yLWluLXVpLWRlc2lnbi1hLXByYWN0aWNhbC1mcmFtZXdvcmstZTE4Y2FjZDk3ZjllXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRBTklNQVRJT05TXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuJGFuaTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEuMCk7XG4kZHVyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuMzAwcztcbiR0cmFuc2l0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICRkdXIgJGFuaTtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgQ1VTVE9NIFZBUklBQkxFU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiRoZWFkZXItaGVpZ2h0OiA0O1xuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgU3RhcnRlcmtpdFxuICAgIEluY2x1ZGUgbm9iZWFyY3NzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIEltcG9ydHNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLy8gREVGQVVMVFNcbiAgICBAaW1wb3J0IFwiLi4vbm9iZWFyY3NzLWRlZmF1bHRzL2RlZmF1bHRzXCI7XG5cbiAgICAvLyBOT1JNQUxJWkVcbiAgICBAaW1wb3J0IFwiLi4vbm9iZWFyY3NzLW5vcm1hbGl6ZS9ub3JtYWxpemVcIjtcblxuICAgIC8vIFRPT0xTXG4gICAgQGltcG9ydCBcIi4uL25vYmVhcmNzcy1taXhpbnMvbWl4aW5zXCI7XG4gICAgQGltcG9ydCBcIi4uL25vYmVhcmNzcy1leHRlbmRzL2V4dGVuZHNcIjtcblxuICAgIC8vIFRPUExFVkVMXG4gICAgQGltcG9ydCBcIi4uL25vYmVhcmNzcy1yZXNldC9yZXNldFwiO1xuICAgIEBpbXBvcnQgXCIuLi9ub2JlYXJjc3Mtc2hhcmVkL3NoYXJlZFwiO1xuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgRGVmYXVsdHNcbiAgICBmb250IHN0eWxpbmcsIHNwYWNlcywgYnJlYWtwb2ludHNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiAgVmFyaWFibGVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgICRiYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcbiAgICAkYmFzZS1saW5lLWhlaWdodDogMjRweCAhZGVmYXVsdDtcbiAgICAkbGluZS1oZWlnaHQtcmF0aW86ICRiYXNlLWxpbmUtaGVpZ2h0LyRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcblxuICAgIC8vIFNQQUNFU1xuICAgICRzcGFjZTogJGJhc2UtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4gICAgJHNwYWNlLXhzOiAkc3BhY2UvNCAhZGVmYXVsdDtcbiAgICAkc3BhY2UtczogICRzcGFjZS8yICFkZWZhdWx0O1xuICAgICRzcGFjZS1sOiAgJHNwYWNlKjIgIWRlZmF1bHQ7XG4gICAgJHNwYWNlLXhsOiAkc3BhY2UqNCAhZGVmYXVsdDtcblxuICAgIC8vIEJSRUFLUE9JTlRTXG4gICAgJGJyZWFrcG9pbnRzOiAoXG4gICAgICAgICdwYWxtJyAgICAgICcobWF4LXdpZHRoOiA0ODBweCknLFxuICAgICAgICAnbGFwJyAgICAgICAnKG1pbi13aWR0aDogNDgxcHgpIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpJyxcbiAgICAgICAgJ2Rlc2snICAgICAgJyhtaW4td2lkdGg6IDEwMjVweCknXG4gICAgKSAhZGVmYXVsdDtcblxuICAgIC8vIEZMRVhCT1hcbiAgICAkdXNlLWZsZXhib3g6IGZhbHNlICFkZWZhdWx0OyIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIE5vcm1hbGl6ZVxuICAgIFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBDb21wb25lbnRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cdGh0bWwge1xuXHRcdGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvKiAxICovXG5cdFx0LW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cblx0XHQtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cblx0fVxuXG5cdC8qKlxuXHQqIFJlbW92ZSBkZWZhdWx0IG1hcmdpbi5cblx0Ki9cblxuXHRib2R5IHtcblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQvKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG5cdFx0PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXHQvKipcblx0KiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYW55IEhUTUw1IGVsZW1lbnQgaW4gSUUgOC85LlxuXHQqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG5cdCogYW5kIEZpcmVmb3guXG5cdCogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBtYWluYCBpbiBJRSAxMS5cblx0Ki9cblxuXHRhcnRpY2xlLFxuXHRhc2lkZSxcblx0ZGV0YWlscyxcblx0ZmlnY2FwdGlvbixcblx0ZmlndXJlLFxuXHRmb290ZXIsXG5cdGhlYWRlcixcblx0aGdyb3VwLFxuXHRtYWluLFxuXHRtZW51LFxuXHRuYXYsXG5cdHNlY3Rpb24sXG5cdHN1bW1hcnkge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0LyoqXG5cdCogMS4gQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cblx0KiAyLiBOb3JtYWxpemUgdmVydGljYWwgYWxpZ25tZW50IG9mIGBwcm9ncmVzc2AgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG5cdCovXG5cblx0YXVkaW8sXG5cdGNhbnZhcyxcblx0cHJvZ3Jlc3MsXG5cdHZpZGVvIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cblx0XHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDIgKi9cblx0fVxuXG5cdC8qKlxuXHQqIFByZXZlbnQgbW9kZXJuIGJyb3dzZXJzIGZyb20gZGlzcGxheWluZyBgYXVkaW9gIHdpdGhvdXQgY29udHJvbHMuXG5cdCogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cblx0Ki9cblxuXHRhdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0aGVpZ2h0OiAwO1xuXHR9XG5cblx0LyoqXG5cdCogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxuXHQqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cblx0Ki9cblxuXHRbaGlkZGVuXSxcblx0dGVtcGxhdGUge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQvKiBMaW5rc1xuXHRcdD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cblx0LyoqXG5cdCogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG5cdCovXG5cblx0YSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdH1cblxuXHQvKipcblx0KiBJbXByb3ZlIHJlYWRhYmlsaXR5IG9mIGZvY3VzZWQgZWxlbWVudHMgd2hlbiB0aGV5IGFyZSBhbHNvIGluIGFuXG5cdCogYWN0aXZlL2hvdmVyIHN0YXRlLlxuXHQqL1xuXG5cdGE6YWN0aXZlLFxuXHRhOmhvdmVyIHtcblx0XHRvdXRsaW5lOiAwO1xuXHR9XG5cblx0LyogVGV4dC1sZXZlbCBzZW1hbnRpY3Ncblx0XHQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5cdC8qKlxuXHQqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cblx0Ki9cblxuXHRhYmJyW3RpdGxlXSB7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcblx0fVxuXG5cdC8qKlxuXHQqIEFkZHJlc3Mgc3R5bGUgc2V0IHRvIGBib2xkZXJgIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cblx0Ki9cblxuXHRiLFxuXHRzdHJvbmcge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHR9XG5cblx0LyoqXG5cdCogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuXHQqL1xuXG5cdGRmbiB7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHR9XG5cblx0LyoqXG5cdCogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuXHQqIGNvbnRleHRzIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cblx0Ki9cblxuXHRoMSB7XG5cdFx0Zm9udC1zaXplOiAyZW07XG5cdFx0bWFyZ2luOiAwLjY3ZW0gMDtcblx0fVxuXG5cdC8qKlxuXHQqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXG5cdCovXG5cblx0bWFyayB7XG5cdFx0YmFja2dyb3VuZDogI2ZmMDtcblx0XHRjb2xvcjogIzAwMDtcblx0fVxuXG5cdC8qKlxuXHQqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuXHQqL1xuXG5cdHNtYWxsIHtcblx0XHRmb250LXNpemU6IDgwJTtcblx0fVxuXG5cdC8qKlxuXHQqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cblx0Ki9cblxuXHRzdWIsXG5cdHN1cCB7XG5cdFx0Zm9udC1zaXplOiA3NSU7XG5cdFx0bGluZS1oZWlnaHQ6IDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcblx0fVxuXG5cdHN1cCB7XG5cdFx0dG9wOiAtMC41ZW07XG5cdH1cblxuXHRzdWIge1xuXHRcdGJvdHRvbTogLTAuMjVlbTtcblx0fVxuXG5cdC8qIEVtYmVkZGVkIGNvbnRlbnRcblx0XHQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5cdC8qKlxuXHQqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuXHQqL1xuXG5cdGltZyB7XG5cdFx0Ym9yZGVyOiAwO1xuXHR9XG5cblx0LyoqXG5cdCogQ29ycmVjdCBvdmVyZmxvdyBub3QgaGlkZGVuIGluIElFIDkvMTAvMTEuXG5cdCovXG5cblx0c3ZnOm5vdCg6cm9vdCkge1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdH1cblxuXHQvKiBHcm91cGluZyBjb250ZW50XG5cdFx0PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXHQvKipcblx0KiBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaS5cblx0Ki9cblxuXHRmaWd1cmUge1xuXHRcdG1hcmdpbjogMWVtIDQwcHg7XG5cdH1cblxuXHQvKipcblx0KiBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuXG5cdCovXG5cblx0aHIge1xuXHRcdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXHRcdGhlaWdodDogMDtcblx0fVxuXG5cdC8qKlxuXHQqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxuXHQqL1xuXG5cdHByZSB7XG5cdFx0b3ZlcmZsb3c6IGF1dG87XG5cdH1cblxuXHQvKipcblx0KiBBZGRyZXNzIG9kZCBgZW1gLXVuaXQgZm9udCBzaXplIHJlbmRlcmluZyBpbiBhbGwgYnJvd3NlcnMuXG5cdCovXG5cblx0Y29kZSxcblx0a2JkLFxuXHRwcmUsXG5cdHNhbXAge1xuXHRcdGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcblx0XHRmb250LXNpemU6IDFlbTtcblx0fVxuXG5cdC8qIEZvcm1zXG5cdFx0PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXHQvKipcblx0KiBLbm93biBsaW1pdGF0aW9uOiBieSBkZWZhdWx0LCBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYIGFsbG93IHZlcnkgbGltaXRlZFxuXHQqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cblx0Ki9cblxuXHQvKipcblx0KiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG5cdCogICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG5cdCogMi4gQ29ycmVjdCBmb250IHByb3BlcnRpZXMgbm90IGJlaW5nIGluaGVyaXRlZC5cblx0KiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cblx0Ki9cblxuXHRidXR0b24sXG5cdGlucHV0LFxuXHRvcHRncm91cCxcblx0c2VsZWN0LFxuXHR0ZXh0YXJlYSB7XG5cdFx0Y29sb3I6IGluaGVyaXQ7IC8qIDEgKi9cblx0XHRmb250OiBpbmhlcml0OyAvKiAyICovXG5cdFx0bWFyZ2luOiAwOyAvKiAzICovXG5cdH1cblxuXHQvKipcblx0KiBBZGRyZXNzIGBvdmVyZmxvd2Agc2V0IHRvIGBoaWRkZW5gIGluIElFIDgvOS8xMC8xMS5cblx0Ki9cblxuXHRidXR0b24ge1xuXHRcdG92ZXJmbG93OiB2aXNpYmxlO1xuXHR9XG5cblx0LyoqXG5cdCogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLlxuXHQqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG5cdCogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS5cblx0KiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXG5cdCovXG5cblx0YnV0dG9uLFxuXHRzZWxlY3Qge1xuXHRcdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHR9XG5cblx0LyoqXG5cdCogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2Bcblx0KiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cblx0KiAyLiBDb3JyZWN0IGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgYGlucHV0YCB0eXBlcyBpbiBpT1MuXG5cdCogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcblx0KiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG5cdCovXG5cblx0YnV0dG9uLFxuXHRodG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cblx0aW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuXHRpbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcblx0XHQtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xuXHRcdGN1cnNvcjogcG9pbnRlcjsgLyogMyAqL1xuXHR9XG5cblx0LyoqXG5cdCogUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy5cblx0Ki9cblxuXHRidXR0b25bZGlzYWJsZWRdLFxuXHRodG1sIGlucHV0W2Rpc2FibGVkXSB7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHR9XG5cblx0LyoqXG5cdCogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLlxuXHQqL1xuXG5cdGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblx0aW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuXHRcdGJvcmRlcjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHR9XG5cblx0LyoqXG5cdCogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuXHQqIHRoZSBVQSBzdHlsZXNoZWV0LlxuXHQqL1xuXG5cdGlucHV0IHtcblx0XHRsaW5lLWhlaWdodDogbm9ybWFsO1xuXHR9XG5cblx0LyoqXG5cdCogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxuXHQqIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguXG5cdCpcblx0KiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxuXHQqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXG5cdCovXG5cblx0aW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuXHRpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cblx0XHRwYWRkaW5nOiAwOyAvKiAyICovXG5cdH1cblxuXHQvKipcblx0KiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuXHQqIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXG5cdCogZGVjcmVtZW50IGJ1dHRvbiB0byBjaGFuZ2UgZnJvbSBgZGVmYXVsdGAgdG8gYHRleHRgLlxuXHQqL1xuXG5cdGlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5cdGlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuXHRcdGhlaWdodDogYXV0bztcblx0fVxuXG5cdC8qKlxuXHQqIDEuIEFkZHJlc3MgYGFwcGVhcmFuY2VgIHNldCB0byBgc2VhcmNoZmllbGRgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuXHQqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG5cdCovXG5cblx0aW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG5cdFx0LXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cblx0XHRib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMiAqL1xuXHR9XG5cblx0LyoqXG5cdCogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSBhbmQgQ2hyb21lIG9uIE9TIFguXG5cdCogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuXHQqIHBhZGRpbmcgKGFuZCBgdGV4dGZpZWxkYCBhcHBlYXJhbmNlKS5cblx0Ki9cblxuXHRpbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuXHRpbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcblx0XHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG5cdH1cblxuXHQvKipcblx0KiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG5cdCovXG5cblx0ZmllbGRzZXQge1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG5cdFx0bWFyZ2luOiAwIDJweDtcblx0XHRwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG5cdH1cblxuXHQvKipcblx0KiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG5cdCogMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLlxuXHQqL1xuXG5cdGxlZ2VuZCB7XG5cdFx0Ym9yZGVyOiAwOyAvKiAxICovXG5cdFx0cGFkZGluZzogMDsgLyogMiAqL1xuXHR9XG5cblx0LyoqXG5cdCogUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS8xMC8xMS5cblx0Ki9cblxuXHR0ZXh0YXJlYSB7XG5cdFx0b3ZlcmZsb3c6IGF1dG87XG5cdH1cblxuXHQvKipcblx0KiBEb24ndCBpbmhlcml0IHRoZSBgZm9udC13ZWlnaHRgIChhcHBsaWVkIGJ5IGEgcnVsZSBhYm92ZSkuXG5cdCogTk9URTogdGhlIGRlZmF1bHQgY2Fubm90IHNhZmVseSBiZSBjaGFuZ2VkIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFguXG5cdCovXG5cblx0b3B0Z3JvdXAge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHR9XG5cblx0LyogVGFibGVzXG5cdFx0PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXHQvKipcblx0KiBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXG5cdCovXG5cblx0dGFibGUge1xuXHRcdGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cdFx0Ym9yZGVyLXNwYWNpbmc6IDA7XG5cdH1cblxuXHR0ZCxcblx0dGgge1xuXHRcdHBhZGRpbmc6IDA7XG5cdH0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBNSVhJTlNcbiAgICBEZWZhdWx0IG1peGluc1xuXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAkYnJvd3Nlci1jb250ZXh0OiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG4gICAgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6IGZhbHNlICFkZWZhdWx0O1xuXG4vKiAgRnVuY3Rpb25zXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIFZBTFVFIFRPIFJFTVxuICAgIEBmdW5jdGlvbiB2YWx1ZVRvUmVtKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09IHN0cmluZyBvciB1bml0bGVzcygkdmFsdWUpID09IHRydWUgb3IgdW5pdCgkdmFsdWUpID09IFwiZW1cIiBvciB1bml0KCR2YWx1ZSkgPT0gXCIlXCIge1xuICAgICAgICAgICAgQHJldHVybiAkdmFsdWU7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQHJldHVybiAoJHZhbHVlLyRicm93c2VyLWNvbnRleHQqMXJlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIFZBTFVFIFRPIEVNXG4gICAgQGZ1bmN0aW9uIHZhbHVlVG9FbSgkdmFsdWUsICRjb250ZXh0OiAkYnJvd3Nlci1jb250ZXh0KSB7XG4gICAgICAgIEByZXR1cm4gKCR2YWx1ZS8kY29udGV4dCoxZW0pO1xuICAgIH1cblxuXG4gICAgLy8gUkVNT1ZFIFVOSVRTXG4gICAgQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCRudW1iZXIpIHtcbiAgICAgICAgQHJldHVybiAkbnVtYmVyIC8gKCRudW1iZXIgKiAwICsgMSk7XG4gICAgfVxuXG4gICAgLy8gQ09MT1JcbiAgICBAZnVuY3Rpb24gY29sb3IoJGtleSkge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGNvbG9ycywgJGtleSkge1xuICAgICAgICAgICAgQHJldHVybiBtYXAtZ2V0KCRjb2xvcnMsICRrZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVycm9yIFwiVW5rbm93biBgI3ska2V5fWAgaW4gJGNvbG9ycy5cIjtcbiAgICAgICAgQHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICRjb2xvcnN7XG4gICAgICAgIFxuICAgICAgICAuYmctLSN7JGNvbG9yfSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmFsdWUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICAuY29sb3ItLSN7JGNvbG9yfSB7XG4gICAgICAgICAgICBjb2xvcjogJHZhbHVlICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLmZpbGwtLSN7JGNvbG9yfSB7XG4gICAgICAgICAgICBmaWxsOiAkdmFsdWUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuLyogIE1peGluc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvLyBSRU0gQ09OVkVSVEVSXG4gICAgQG1peGluIHJlbSAoJHByb3BlcnR5LCAkdmFsdWUsICRhcHBlbmQ6IFwiXCIpIHtcbiAgICAgICAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4ID09IHRydWUge1xuICAgICAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWUgI3skYXBwZW5kfTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbGlzdCB7XG4gICAgICAgICAgICAkYWxsOiAoKTtcbiAgICAgICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR2YWx1ZSkge1xuICAgICAgICAgICAgICAgICRhbGw6IGFwcGVuZCgkYWxsLCB2YWx1ZVRvUmVtKG50aCgkdmFsdWUsICRpKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgI3skcHJvcGVydHl9OiAkYWxsICN7JGFwcGVuZH07XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgI3skcHJvcGVydHl9OiB2YWx1ZVRvUmVtKCR2YWx1ZSkgI3skYXBwZW5kfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZPTlQgU0laRVxuICAgIEBtaXhpbiBmb250LXNpemUoJGZzLCAkbGluZS1oZWlnaHQ6IHRydWUsICRtdWx0aXBsaWVyOiAxKSB7XG4gICAgICAgIEBpbmNsdWRlIHJlbShmb250LXNpemUsICRmcyk7XG5cbiAgICAgICAgJHVzZS1saW5lLWhlaWdodDogZmFsc2U7XG5cbiAgICAgICAgQGlmIHR5cGUtb2YoJGxpbmUtaGVpZ2h0KSA9PSBib29sIHtcbiAgICAgICAgICAgIEBpZiAkbGluZS1oZWlnaHQgPT0gdHJ1ZXtcbiAgICAgICAgICAgICAgICAkdXNlLWxpbmUtaGVpZ2h0OiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGxpbmUtaGVpZ2h0KSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJHVzZS1saW5lLWhlaWdodDogdHJ1ZTtcbiAgICAgICAgICAgICRtdWx0aXBsaWVyOiAkbGluZS1oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJHVzZS1saW5lLWhlaWdodCA9PSB0cnVlIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAoY2VpbCgkZnMgLyAkYmFzZS1saW5lLWhlaWdodCkgKiAoJGJhc2UtbGluZS1oZWlnaHQgLyAkZnMpKSAqICRtdWx0aXBsaWVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVFJVTkNBVEVcbiAgICBAbWl4aW4gdHJ1bmNhdGUoJHRydW5jYXRpb24tYm91bmRhcnk6IDEwMCUpIHtcbiAgICAgICAgQGluY2x1ZGUgcmVtKG1heC13aWR0aCwgJHRydW5jYXRpb24tYm91bmRhcnkpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB9XG5cbiAgICAvLyBNRURJQSBRVUVSSUVTXG4gICAgQG1peGluIG1lZGlhLXF1ZXJ5KCRtZWRpYS1xdWVyeSkge1xuICAgICAgICAkYnJlYWtwb2ludC1mb3VuZDogZmFsc2U7XG5cbiAgICAgICAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICAgICAgICAgIEBpZiB0eXBlLW9mKCRicmVha3BvaW50KSA9PSAnbGlzdCcge1xuICAgICAgICAgICAgICAgICRuYW1lOiBudGgoJGJyZWFrcG9pbnQsIDEpO1xuICAgICAgICAgICAgICAgICRkZWNsYXJhdGlvbjogbnRoKCRicmVha3BvaW50LCAyKTtcblxuICAgICAgICAgICAgICAgIEBpZiAkbWVkaWEtcXVlcnkgPT0gJG5hbWUgYW5kICRkZWNsYXJhdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgICRicmVha3BvaW50LWZvdW5kOiB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgI3skZGVjbGFyYXRpb259IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgQGVycm9yIFwiQnJlYWtwb2ludCBkb2VzbuKAmXQgbWF0Y2ggdGhlIGAna2V5JzogJyh2YWx1ZSknYCBmb3JtYXRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkYnJlYWtwb2ludC1mb3VuZCA9PSBmYWxzZSB7XG4gICAgICAgICAgICBAd2FybiBcIkJyZWFrcG9pbnQg4oCYI3skbWVkaWEtcXVlcnl94oCZIGRvZXMgbm90IGV4aXN0XCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBISURFIEVMRU1FTlRTXG4gICAgQG1peGluIHZpc3VhbGx5aGlkZGVuIHtcbiAgICAgICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIGNsaXA6IHJlY3QoMCAwIDAgMCkgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxcHggIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xuICAgIH0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBFeHRlbmRzXG4gICAgQ2xlYXJmaXgsIE1vZHVsZSwgVHJ1bmNhdGVcblxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgJHVzZS1jbGVhcmZpeDogdHJ1ZSAhZGVmYXVsdDtcbiAgICAkdXNlLW1vZHVsZTogICB0cnVlICFkZWZhdWx0O1xuICAgICR1c2UtdHJ1bmNhdGU6IHRydWUgIWRlZmF1bHQ7XG5cbi8qICBDb21wb25lbnRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLy8gQ0xFQVJGSVhcbiAgICBAaWYgJHVzZS1jbGVhcmZpeCA9PSB0cnVlIHtcbiAgICAgICAgLmNmLFxuICAgICAgICAlY2Yge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgICAgICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PRFVMRVxuICAgIEBpZiAkdXNlLW1vZHVsZSA9PSB0cnVlIHtcbiAgICAgICAgLm1vZHVsZSxcbiAgICAgICAgJW1vZHVsZSB7XG4gICAgICAgICAgICA+ICo6bGFzdC1jaGlsZCxcbiAgICAgICAgICAgID4gKjpsYXN0LWNoaWxkID4gKjpsYXN0LWNoaWxkLFxuICAgICAgICAgICAgPiAqOmxhc3QtY2hpbGQgPiAqOmxhc3QtY2hpbGQgPiAqOmxhc3QtY2hpbGQsXG4gICAgICAgICAgICA+ICo6bGFzdC1jaGlsZCA+ICo6bGFzdC1jaGlsZCA+ICo6bGFzdC1jaGlsZCA+ICo6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRSVU5DQVRFXG4gICAgQGlmICR1c2UtdHJ1bmNhdGUgPT0gdHJ1ZSB7XG4gICAgICAgIC50cnVuY2F0ZSxcbiAgICAgICAgJXRydW5jYXRle1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJ1bmNhdGUoKTsgXG4gICAgICAgIH1cbiAgICB9IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgUmVzZXRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIGh0bWwge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cblxuICAgICoge1xuICAgICAgICAmLFxuICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBUaGUgdXN1YWwgcmVzZXR0aW5nIG9mIG1hcmdpbnMsIHBhZGRpbmdzLCBib3JkZXJzIGV0Yy5cbiAgICAqL1xuICAgIGJsb2NrcXVvdGUsXG4gICAgZGwsXG4gICAgZGQsXG4gICAgb2wsXG4gICAgdWwsXG4gICAgaDEsXG4gICAgaDIsXG4gICAgaDMsXG4gICAgaDQsXG4gICAgaDUsXG4gICAgaDYsXG4gICAgcCxcbiAgICBwcmUsXG4gICAgZmllbGRzZXQsXG4gICAgaHIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgZmllbGRzZXQsXG4gICAgb2wsXG4gICAgdWwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIGlmcmFtZSxcbiAgICBmaWVsZHNldCB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFJlbW92ZSBleHRyYSB2ZXJ0aWNhbCBzcGFjaW5nIHdoZW4gbmVzdGluZyBsaXN0cy5cbiAgICAqL1xuICAgIGxpIHtcbiAgICAgICAgPiB1bCxcbiAgICAgICAgPiBvbCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiAxLiBGaXggYW4gb2RkIHF1aXJrIHdoZXJlYnksIHdpdGhvdXQgdGhpcywgY29kZSBibG9ja3MgYXJlIHJlbmRlcmVkIGF0IGFcbiAgICAqICAgIGZvbnQtc2l6ZSBzbWFsbGVyIHRoYW4gMWVtLlxuICAgICovXG4gICAgY29kZSxcbiAgICBrYmQsXG4gICAgcHJlLFxuICAgIHNhbXAge1xuICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFN1cHByZXNzIHRoZSBmb2N1cyBvdXRsaW5lIG9uIGxpbmtzIHRoYXQgY2Fubm90IGJlIGFjY2Vzc2VkIHZpYSBrZXlib2FyZC5cbiAgICAqIFRoaXMgcHJldmVudHMgYW4gdW53YW50ZWQgZm9jdXMgb3V0bGluZSBmcm9tIGFwcGVhcmluZyBhcm91bmQgZWxlbWVudHMgdGhhdFxuICAgICogbWlnaHQgc3RpbGwgcmVzcG9uZCB0byBwb2ludGVyIGV2ZW50cy5cbiAgICAqL1xuICAgIFt0YWJpbmRleD1cIi0xXCJdOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBJbWFnZVxuICAgICpcbiAgICAqIDEuIEJ5IGRlZmF1bHQgYWxsIGltYWdlcyBhcmUgZmx1aWRcbiAgICAqIDIuIFJlbmRlciBgYWx0YCB2aXN1YWxseSBvZmZzZXQgd2hlbiBpbWFnZXMgZG9uJ3QgbG9hZFxuICAgICovXG4gICAgaW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgLyogMiAqL1xuICAgIH0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBTaGFyZWRcbiAgICBodG1sLCBib2R5LCAud3JhcHBlciwgLnNpdGUtd2lkdGhcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIGh0bWwge1xuICAgICAgICBmb250LWZhbWlseTogJGZvbnQtYmFzZTtcbiAgICAgICAgZm9udC1zaXplOiAkYmFzZS1mb250LXNpemU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkYmFzZS1saW5lLWhlaWdodDtcbiAgICAgICAgbWluLWhlaWdodDogMTAwJTtcbiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgLyogMyAqL1xuICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgLyogMyAqL1xuICAgIH1cblxuICAgIGh0bWwsIFxuICAgIGJvZHkgeyBcbiAgICAgICAgaGVpZ2h0OiAxMDAlOyBcbiAgICB9XG5cbiAgICBib2R5IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoYmxhbmspO1xuICAgIH1cblxuICAgIC53cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG5cbiAgICAuc2l0ZS13aWR0aCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgQGluY2x1ZGUgcmVtKG1heC13aWR0aCwgJHNpdGUtd2lkdGgpO1xuICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZywgMCAkc3BhY2UpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgKiBBcHBsaWVzIHZlcnRpY2FsIHJoeXRobSB0byBkZXNpZ25hdGVkIGVsZW1lbnRzXG4gICAgKiBBcyBwZXI6IGh0dHA6Ly9jc3N3aXphcmRyeS5jb20vMjAxMi8wNi9zaW5nbGUtZGlyZWN0aW9uLW1hcmdpbi1kZWNsYXJhdGlvbnNcbiAgICAqL1xuICAgIGhncm91cCxcbiAgICAuaGdyb3VwLFxuICAgIHVsLFxuICAgIG9sLFxuICAgIGRsLFxuICAgIGJsb2NrcXVvdGUsXG4gICAgcCxcbiAgICBhZGRyZXNzLFxuICAgIHRhYmxlLFxuICAgIGZpZWxkc2V0LFxuICAgIHByZSxcbiAgICBociB7XG4gICAgICAgIEBpbmNsdWRlIHJlbShtYXJnaW4tYm90dG9tLCAkc3BhY2UpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgKiBEZWZhdWx0IGluZGVudGF0aW9uIHZhbHVlIGZvciBsaXN0c1xuICAgICovXG4gICAgdWwsXG4gICAgb2wsXG4gICAgZGQge1xuICAgICAgICBAaW5jbHVkZSByZW0obWFyZ2luLWxlZnQsICRiYXNlLWxpbmUtaGVpZ2h0KTtcbiAgICB9XG5cbiAgICBhW2hyZWZePVwibWFpbHRvOlwiXSwgYVtocmVmXj1cInRlbDpcIl0geyBcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgXG4gICAgfSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIEFycmFuZ2VcbiAgICBUaGlzIGNvbXBvbmVudCBsZXRzIHlvdSBsYXkgb3V0IGEgcm93IG9mIGNlbGxzIGluIHZhcmlvdXMgd2F5cy4gWW91IGNhblxuICAgIHNwZWNpZnkgd2hldGhlciBhIGNlbGwgc2hvdWxkIGJlIHdpZGUgZW5vdWdoIHRvIGZpdCBpdHMgY29udGVudCwgb3IgdGFrZSB1cFxuICAgIHRoZSByZW1haW5pbmcgc3BhY2UgaW4gdGhlIHJvdy4gSXQncyBhbHNvIHBvc3NpYmxlIHRvIGdpdmUgYWxsIGNlbGxzIGFuXG4gICAgZXF1YWwgd2lkdGgsIGFuZCB0byBjb250cm9sIHRoZWlyIHZlcnRpY2FsIGFsaWdubWVudC5cblxuXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAkdXNlLWFycmFuZ2U6IHRydWUgIWRlZmF1bHQ7XG4gICAgJGJyZWFrcG9pbnQtaGFzLWNvbGxhcHNlZC1hcnJhbmdlOiAoKSAhZGVmYXVsdDtcblxuLyogIE1peGluc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICBAbWl4aW4gYXJyYW5nZS1jb2xsYXBzZSAoKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyAvKiAxICovXG5cbiAgICAgICAgPiAuYXJyYW5nZV9fc2l6ZS1maWxsLFxuICAgICAgICA+IC5hcnJhbmdlX19zaXplLWZpdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jazsgLyogMSAqL1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7IC8qIDIgKi9cbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDsgLyogMyAqL1xuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsgLyogNCAqL1xuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bzsgLyogNCAqL1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpZiAkdXNlLWFycmFuZ2UgPT0gdHJ1ZXtcblxuICAgICAgICAuYXJyYW5nZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICB0YWJsZS1sYXlvdXQ6IGF1dG87XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hcnJhbmdlX19zaXplLWZpbGwsXG4gICAgICAgIC5hcnJhbmdlX19zaXplLWZpdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgIH1cblxuICAgICAgICAuYXJyYW5nZV9fc2l6ZS1maWxsIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFycmFuZ2VfX3NpemUtZml0IGltZyB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZFUlRJQ0FMIEFMSUdOTUVOVCBNT0RJRklFUlNcbiAgICAgICAgLmFycmFuZ2UtLXRvcCB7XG5cbiAgICAgICAgICAgID4gLmFycmFuZ2VfX3NpemUtZmlsbCxcbiAgICAgICAgICAgID4gLmFycmFuZ2VfX3NpemUtZml0IHtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmFycmFuZ2UtLW1pZGRsZSB7XG5cbiAgICAgICAgICAgID4gLmFycmFuZ2VfX3NpemUtZmlsbCxcbiAgICAgICAgICAgID4gLmFycmFuZ2VfX3NpemUtZml0IHtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmFycmFuZ2UtLWJvdHRvbSB7XG5cbiAgICAgICAgICAgID4gLmFycmFuZ2VfX3NpemUtZmlsbCxcbiAgICAgICAgICAgID4gLmFycmFuZ2VfX3NpemUtZml0IHtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRVFVQUwtV0lEVEggTU9ESUZJRVJcbiAgICAgICAgLmFycmFuZ2UtLWVxdWFsd2lkdGgge1xuICAgICAgICAgICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcblxuICAgICAgICAgICAgPiAuYXJyYW5nZV9fc2l6ZS1maWxsLFxuICAgICAgICAgICAgPiAuYXJyYW5nZV9fc2l6ZS1maXQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gR1VUVEVSIE1PRElGSUVSXG4gICAgICAgIC5hcnJhbmdlLS1ndXR0ZXIge1xuXG4gICAgICAgICAgICA+IC5hcnJhbmdlX19zaXplLWZpbGwsXG4gICAgICAgICAgICA+IC5hcnJhbmdlX19zaXplLWZpdCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctbGVmdCwgJHNwYWNlKTtcblxuICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUkVTUE9OU0lWRVxuICAgICAgICAuYXJyYW5nZS0tY29sbGFwc2Uge1xuICAgICAgICAgICAgQGluY2x1ZGUgYXJyYW5nZS1jb2xsYXBzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlYWNoICRzdGF0ZSBpbiAkYnJlYWtwb2ludC1oYXMtY29sbGFwc2VkLWFycmFuZ2Uge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoI3skc3RhdGV9KSB7XG4gICAgICAgICAgICAgICAgLmFycmFuZ2UtLWNvbGxhcHNlLS0jeyRzdGF0ZX0ge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBhcnJhbmdlLWNvbGxhcHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBHUklEXG4gICAgLmdyaWQsIC5ncmlkX19jZWxsXG5cblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiAgVmFyaWFibGVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgICR1c2UtZ3JpZDogdHJ1ZSAhZGVmYXVsdDtcblxuICAgIC8vIE1PRElGSUVSU1xuICAgICRlbmFibGUtZ3JpZC1yZXY6ICAgIGZhbHNlICFkZWZhdWx0O1xuICAgICRlbmFibGUtZ3JpZC1yaWdodDogIGZhbHNlICFkZWZhdWx0O1xuICAgICRlbmFibGUtZ3JpZC1jZW50ZXI6IGZhbHNlICFkZWZhdWx0O1xuICAgICRlbmFibGUtZ3JpZC12ZXJ0aWNhbDogZmFsc2UgIWRlZmF1bHQ7XG4gICAgJGVuYWJsZS1ncmlkLW5hcnJvdzogZmFsc2UgIWRlZmF1bHQ7XG4gICAgJGVuYWJsZS1ncmlkLXdpZGU6ICAgZmFsc2UgIWRlZmF1bHQ7XG4gICAgJGVuYWJsZS1ncmlkLWZsdXNoOiAgZmFsc2UgIWRlZmF1bHQ7XG5cbi8qICBDb21wb25lbnRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgQGlmICR1c2UtZ3JpZCA9PSB0cnVlIHtcbiAgICBcbiAgICAgICAgLmdyaWQge1xuICAgICAgICAgICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplc3BlZWQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDA7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0obWFyZ2luLWxlZnQsIC0oJHNwYWNlKSk7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuZ3JpZF9fY2VsbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZy1sZWZ0LCAkc3BhY2UpO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYmFzZS1mb250LXNpemUsIGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ncmlkX19jZWxsLS1jZW50ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBSRVZFUlNFIERJUkVDVElPTlxuICAgICAgICBAaWYgJGVuYWJsZS1ncmlkLXJldiA9PSB0cnVlIHtcbiAgICAgICAgICAgIC5ncmlkLS1yZXYge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogcnRsO1xuXG4gICAgICAgICAgICAgICAgPiAuZ3JpZF9fY2VsbCB7XG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogbHRyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBBTElHTiBSSUdIVFxuICAgICAgICBAaWYgJGVuYWJsZS1ncmlkLXJpZ2h0ID09IHRydWUge1xuICAgICAgICAgICAgLmdyaWQtLXJpZ2h0IHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBBTElHTiBDRU5URVJcbiAgICAgICAgQGlmICRlbmFibGUtZ3JpZC1jZW50ZXIgPT0gdHJ1ZSB7XG4gICAgICAgICAgICAuZ3JpZC0tY2VudGVyIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgICAgICAgICA+IC5ncmlkX19jZWxsIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNT0RJRklFUjogQUxJR04gVkVSVElDQUxMWVxuICAgICAgICBAaWYgJGVuYWJsZS1ncmlkLXZlcnRpY2FsID09IHRydWUge1xuICAgICAgICAgICAgLmdyaWQtLW1pZGRsZSB7XG4gICAgICAgICAgICAgICAgPiAuZ3JpZF9fY2VsbCB7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmdyaWQtLWJvdHRvbSB7XG4gICAgICAgICAgICAgICAgPiAuZ3JpZF9fY2VsbCB7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTU9ESUZJRVI6IE5BUlJPV0VSIEdVVFRFUlNcbiAgICAgICAgQGlmICRlbmFibGUtZ3JpZC1uYXJyb3cgPT0gdHJ1ZSB7XG4gICAgICAgICAgICAuZ3JpZC0tbmFycm93IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSByZW0obWFyZ2luLWxlZnQsIC0oJHNwYWNlIC8gMikpO1xuXG4gICAgICAgICAgICAgICAgPiAuZ3JpZF9fY2VsbCB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLWxlZnQsICgkc3BhY2UgLyAyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTU9ESUZJRVI6IFdJREVSIEdVVFRFUlNcbiAgICAgICAgQGlmICRlbmFibGUtZ3JpZC13aWRlID09IHRydWUge1xuICAgICAgICAgICAgLmdyaWQtLXdpZGUge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbShtYXJnaW4tbGVmdCwgLSgkc3BhY2UgKiAyKSk7XG5cbiAgICAgICAgICAgICAgICA+IC5ncmlkX19jZWxsIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctbGVmdCwgKCRzcGFjZSAqIDIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNT0RJRklFUjogTk8gR1VUVEVSU1xuICAgICAgICBAaWYgJGVuYWJsZS1ncmlkLWZsdXNoID09IHRydWUge1xuICAgICAgICAgICAgLmdyaWQtLWZsdXNoIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcblxuICAgICAgICAgICAgICAgID4gLmdyaWRfX2NlbGwge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBMYXlvdXRcbiAgICAubGF5b3V0XG5cblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiAgVmFyaWFibGVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgICR1c2UtbGF5b3V0OiB0cnVlICFkZWZhdWx0O1xuXG4gICAgJGRpbWVuc2lvbnMtYnJlYWtwb2ludC1oYXMtZml0OiAoKSAhZGVmYXVsdDtcbiAgICAkZGltZW5zaW9ucy1icmVha3BvaW50LWhhcy1maWxsOiAoKSAhZGVmYXVsdDtcblxuLyogIE1peGluc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICBAbWl4aW4gYmxvY3NzLWxheW91dC1maXQgKCkge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgIH1cblxuICAgIEBtaXhpbiBibG9jc3MtbGF5b3V0LWZpbGwgKCkge1xuICAgICAgICBmbGV4OiAxIDEgMCU7IC8qIFsxXSAqL1xuICAgICAgICBmbGV4LWJhc2lzOiAwJTsgLyogWzJdICovXG4gICAgfVxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpZiAkdXNlLWxheW91dCA9PSB0cnVlIHtcblxuICAgICAgICAubGF5b3V0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7IC8qIFsxXSAqL1xuICAgICAgICAgICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7IC8qIFsxXSAqL1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7IC8qIFsxXSAqL1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTsgLyogWzFdICovXG4gICAgICAgIH1cblxuICAgICAgICAvLyBNT0RJRklFUjogQUxJR04gQ0VOVEVSXG4gICAgICAgIC5sYXlvdXQtLWNlbnRlciB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBBTElHTiBSSUdIVFxuICAgICAgICAubGF5b3V0LS1yaWdodCB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTU9ERklFUjogQUxJR04gTUlERExFIFZFUlRJQ0FMTFlcbiAgICAgICAgLmxheW91dC0tbWlkZGxlIHtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNT0RJRklFUjogQUxJR04gQk9UVE9NIFZFUlRJQ0FMTFlcbiAgICAgICAgLmxheW91dC0tYm90dG9tIHtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBFUVVBTCBESVNUUklCVVRFIFdJRFRIXG4gICAgICAgIC5sYXlvdXQtLWZpdCB7XG4gICAgICAgICAgICA+IC5sYXlvdXRfX2NlbGwge1xuICAgICAgICAgICAgICAgIGZsZXg6IDEgMSAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBBTEwgQ0VMTFMgTUFUQ0ggSEVJR0hUIE9GIFRBTExFU1QgSU4gQSBST1dcbiAgICAgICAgLmxheW91dC0tZXF1YWxoZWlnaHQge1xuICAgICAgICAgICAgPiAubGF5b3V0X19jZWxsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7IC8qIFsxXSAqL1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBHVVRURVJcbiAgICAgICAgLmxheW91dC0tZ3V0dGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHJlbShtYXJnaW4tbGVmdCwgLSRzcGFjZSk7XG5cbiAgICAgICAgICAgID4gLmxheW91dF9fY2VsbCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctbGVmdCwgJHNwYWNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBUSU5ZIEdVVFRFUlxuICAgICAgICAubGF5b3V0LS1ndXR0ZXIteHMge1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKG1hcmdpbi1sZWZ0LCAtJHNwYWNlLXhzKTtcblxuICAgICAgICAgICAgPiAubGF5b3V0X19jZWxsIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZy1sZWZ0LCAkc3BhY2UteHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTU9ESUZJRVI6IFNNQUxMIEdVVFRFUlxuICAgICAgICAubGF5b3V0LS1ndXR0ZXItcyB7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0obWFyZ2luLWxlZnQsIC0kc3BhY2Utcyk7XG5cbiAgICAgICAgICAgID4gLmxheW91dF9fY2VsbCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctbGVmdCwgJHNwYWNlLXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTU9ESUZJRVI6IExBUkdFIEdVVFRFUlxuICAgICAgICAubGF5b3V0LS1ndXR0ZXItbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0obWFyZ2luLWxlZnQsIC0kc3BhY2UtbCk7XG5cbiAgICAgICAgICAgID4gLmxheW91dF9fY2VsbCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctbGVmdCwgJHNwYWNlLWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTU9ESUZJRVI6IEhVR0UgR1VUVEVSXG4gICAgICAgIC5sYXlvdXQtLWd1dHRlci14bCB7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0obWFyZ2luLWxlZnQsIC0kc3BhY2UteGwpO1xuXG4gICAgICAgICAgICA+IC5sYXlvdXRfX2NlbGwge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLWxlZnQsICRzcGFjZS14bCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubGF5b3V0X19jZWxsIHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDEwMCU7IC8qIFsxXSAqL1xuICAgICAgICAgICAgbWluLXdpZHRoOiAwOyAvKiBbMl0gKi9cbiAgICAgICAgfVxuXG4gICAgICAgIC5sYXlvdXRfX2NlbGwtLWNlbnRlciB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gTU9ESUZJRVI6IFNIUklOSyBXUkFQIElUUyBDT05URU5UXG4gICAgICAgIC5sYXlvdXRfX2NlbGwtLWZpdCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBibG9jc3MtbGF5b3V0LWZpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBGSUxMIE9QRU4gU1BBQ0VcbiAgICAgICAgLmxheW91dF9fY2VsbC0tZmlsbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBibG9jc3MtbGF5b3V0LWZpbGw7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIFJFU1BPTlNJVkVcbiAgICAgICAgQGVhY2ggJG5hbWUgaW4gJGRpbWVuc2lvbnMtYnJlYWtwb2ludC1oYXMtZml0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KCRuYW1lKSB7XG4gICAgICAgICAgICAgICAgLmxheW91dF9fY2VsbC0tZml0LS0jeyRuYW1lfSB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJsb2Nzcy1sYXlvdXQtZml0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlYWNoICRuYW1lIGluICRkaW1lbnNpb25zLWJyZWFrcG9pbnQtaGFzLWZpbGwge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoJG5hbWUpIHtcbiAgICAgICAgICAgICAgICAubGF5b3V0X19jZWxsLS1maWxsLS0jeyRuYW1lfSB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJsb2Nzcy1sYXlvdXQtZmlsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgRElNRU5TSU9OU1xuICAgIC51bml0XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAkZGltZW5zaW9ucy11c2UtdW5pdHM6IHRydWUgIWRlZmF1bHQ7XG4gICAgJGRpbWVuc2lvbnMtdXNlLXB1c2g6IGZhbHNlICFkZWZhdWx0O1xuICAgICRkaW1lbnNpb25zLXVzZS1wdWxsOiBmYWxzZSAhZGVmYXVsdDtcblxuICAgIC8vIENPTFVNTlNcbiAgICAkZGltZW5zaW9ucy1kaXZpc2lvbnM6IDEyICFkZWZhdWx0O1xuXG4gICAgLy8gQlJFQUtQT0lOVFNcbiAgICAkZGltZW5zaW9ucy1icmVha3BvaW50LWhhcy11bml0czogKCkgIWRlZmF1bHQ7XG4gICAgJGRpbWVuc2lvbnMtYnJlYWtwb2ludC1oYXMtcHVzaDogKCkgIWRlZmF1bHQ7XG4gICAgJGRpbWVuc2lvbnMtYnJlYWtwb2ludC1oYXMtcHVsbDogKCkgIWRlZmF1bHQ7XG5cbi8qICBNaXhpbnMgJiBmdW5jdGlvbnNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgQGZ1bmN0aW9uIGdjZigkYSwgJGIpIHtcbiAgICAgICAgQGlmICRiID09IDAgeyBAcmV0dXJuICRhOyB9XG4gICAgICAgIEBlbHNlIHsgQHJldHVybiBnY2YoJGIsICRhICUgJGIpOyB9XG4gICAgfVxuXG4gICAgQGZ1bmN0aW9uIGNvbnRhaW5zKCRsaXN0LCAkdmFsdWUpIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGxpc3QpID09IGxpc3QgeyBAcmV0dXJuIG5vdCBub3QgaW5kZXgoJGxpc3QsICR2YWx1ZSk7IH1cbiAgICAgICAgQGVsc2UgeyBAcmV0dXJuICRsaXN0ID09ICR2YWx1ZTsgfVxuICAgIH1cblxuICAgIEBtaXhpbiBkaW1lbnNpb25zLWJ1aWxkKCR1bml0cywgJHByZWZpeDogJ3VuaXQnLCAkbW9kaWZpZXI6ICcnKSB7XG5cbiAgICAgICAgQGVhY2ggJG4gaW4gJHVuaXRzIHtcbiAgICAgICAgICAgIC8qIEF2b2lkIGNyZWF0aW5nIHJ1bGVzIGxpa2UgJy51bml0LTEyLTEyIHt9JycgKi9cbiAgICAgICAgICAgICR4OiAkbiAtIDE7XG5cbiAgICAgICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHgge1xuICAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemUgdmFyaWFibGVzICovXG4gICAgICAgICAgICAgICAgJGktcjogKCk7XG4gICAgICAgICAgICAgICAgJG4tcjogKCk7XG5cbiAgICAgICAgICAgICAgICAvKiBGaW5kIHRoZSBncmVhdGVzdCBjb21tb24gZmFjdG9yICovXG4gICAgICAgICAgICAgICAgJGc6IGdjZigkaSwgJG4pO1xuXG4gICAgICAgICAgICAgICAgQGlmICRnID4gMSB7XG4gICAgICAgICAgICAgICAgICAgIC8qIFJlZHVjZWQgdmFsdWUgb2YgJGkgKi9cbiAgICAgICAgICAgICAgICAgICAgJGktcjogJGkvJGc7XG4gICAgICAgICAgICAgICAgICAgIC8qIFJlZHVjZWQgdmFsdWUgb2YgJG4gKi9cbiAgICAgICAgICAgICAgICAgICAgJG4tcjogJG4vJGc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgKiBDaGVjayBpZiB0aGUgcmVkdWNlZCB2YWx1ZSBvZiAkbiB3YXMgYWxzbyBzdXBwbGllZCBpbiB0aGVcbiAgICAgICAgICAgICAgICAqIGxpc3Qgb2YgdW5pdHMgdG8gYmUgYnVpbHRcbiAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICRjYW5yZWR1Y2U6IGNvbnRhaW5zKCR1bml0cywgJG4tcik7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAqIENyZWF0ZSB1bml0cyBiYXNlZCBvbiBmcmFjdGlvbnNcbiAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIC4jeyRwcmVmaXh9LSN7JGl9LSN7JG59I3skbW9kaWZpZXJ9IHtcbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICogSWYgdGhpcyB1bml0IGNhbiBiZSByZWR1Y2VkIHRoZW4gZXh0ZW5kIHRoZSBwcmV2aW91cyBydWxlXG4gICAgICAgICAgICAgICAgICAgICogMS4gVXNlIGBmbGV4LWJhc2lzOiBhdXRvYCB3aXRoIGEgd2lkdGggdG8gYXZvaWQgYm94LXNpemluZyBidWcgaW4gSUUxMC8xMVxuICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBAaWYgJGktciBhbmQgJGNhbnJlZHVjZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAZXh0ZW5kIC4jeyRwcmVmaXh9LSN7JGktcn0tI3skbi1yfSN7JG1vZGlmaWVyfTtcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgJHByZWZpeCA9PSAndW5pdCcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAkdXNlLWZsZXhib3ggPT0gdHJ1ZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtYmFzaXM6IGF1dG8gIWltcG9ydGFudDsgLyogWzFdICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKCRpIC8gJG4pICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gJ3B1c2gnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBwZXJjZW50YWdlKCRpIC8gJG4pICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gJ3B1bGwnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogcGVyY2VudGFnZSgkaSAvICRuKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJHByZWZpeCA9PSAndW5pdCcge1xuICAgICAgICAgICAgLiN7JHByZWZpeH0tMS0xI3skbW9kaWZpZXJ9IHtcbiAgICAgICAgICAgICAgICBAaWYgJHVzZS1mbGV4Ym94ID09IHRydWUge1xuICAgICAgICAgICAgICAgICAgICBmbGV4LWJhc2lzOiBhdXRvICFpbXBvcnRhbnQ7IC8qIFsxXSAqL1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLiN7JHByZWZpeH0tYXV0byN7JG1vZGlmaWVyfSB7XG4gICAgICAgICAgICAgICAgQGlmICR1c2UtZmxleGJveCA9PSB0cnVlIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1iYXNpczogYXV0byAhaW1wb3J0YW50OyAvKiBbMV0gKi9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSBpZiAkcHJlZml4ID09ICdwdXNoJyB7XG4gICAgICAgICAgICAuI3skcHJlZml4fS0wLTAjeyRtb2RpZmllcn0ge1xuICAgICAgICAgICAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSBpZiAkcHJlZml4ID09ICdwdWxsJyB7XG4gICAgICAgICAgICAuI3skcHJlZml4fS0wLTAjeyRtb2RpZmllcn0ge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbi8qICBDb21wb25lbnRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLy8gQ09SRVxuICAgIEBpZiAkZGltZW5zaW9ucy11c2UtdW5pdHMgPT0gdHJ1ZSB7XG4gICAgICAgIEBpbmNsdWRlIGRpbWVuc2lvbnMtYnVpbGQoJGRpbWVuc2lvbnMtZGl2aXNpb25zKTtcbiAgICB9XG5cbiAgICAvLyBQVVNIXG4gICAgQGlmICRkaW1lbnNpb25zLXVzZS1wdXNoID09IHRydWUge1xuICAgICAgICBbY2xhc3MqPVwiI3sncHVzaCd9LVwiXSB7XG4gICAgICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBkaW1lbnNpb25zLWJ1aWxkKCRkaW1lbnNpb25zLWRpdmlzaW9ucywgJ3B1c2gnKTtcbiAgICB9XG5cbiAgICAvLyBQVUxMXG4gICAgQGlmICRkaW1lbnNpb25zLXVzZS1wdWxsID09IHRydWUge1xuICAgICAgICBbY2xhc3MqPVwiI3sncHVsbCd9LVwiXSB7XG4gICAgICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBkaW1lbnNpb25zLWJ1aWxkKCRkaW1lbnNpb25zLWRpdmlzaW9ucywgJ3B1bGwnKTtcbiAgICB9XG5cbiAgICAvLyBSRVNQT05TSVZFXG4gICAgQGlmICRkaW1lbnNpb25zLXVzZS11bml0cyA9PSB0cnVlIHtcbiAgICAgICAgQGVhY2ggJG5hbWUgaW4gJGRpbWVuc2lvbnMtYnJlYWtwb2ludC1oYXMtdW5pdHMge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoJG5hbWUpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRpbWVuc2lvbnMtYnVpbGQoJGRpbWVuc2lvbnMtZGl2aXNpb25zLCAndW5pdCcsICctLSN7JG5hbWV9Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGRpbWVuc2lvbnMtdXNlLXB1c2ggPT0gdHJ1ZSB7XG4gICAgICAgIEBlYWNoICRuYW1lIGluICRkaW1lbnNpb25zLWJyZWFrcG9pbnQtaGFzLXB1c2gge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoJG5hbWUpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRpbWVuc2lvbnMtYnVpbGQoJGRpbWVuc2lvbnMtZGl2aXNpb25zLCAncHVzaCcsICctLSN7JG5hbWV9Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGRpbWVuc2lvbnMtdXNlLXB1bGwgPT0gdHJ1ZSB7XG4gICAgICAgIEBlYWNoICRuYW1lIGluICRkaW1lbnNpb25zLWJyZWFrcG9pbnQtaGFzLXB1bGwge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoJG5hbWUpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRpbWVuc2lvbnMtYnVpbGQoJGRpbWVuc2lvbnMtZGl2aXNpb25zLCAncHVsbCcsICctLSN7JG5hbWV9Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBGaXhlZCByYXRpb1xuICAgIC5maXhlZHJhdGlvXG5cblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiAgVmFyaWFibGVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgICR1c2UtZml4ZWRyYXRpbzogdHJ1ZSAhZGVmYXVsdDtcblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICBAaWYgJHVzZS1maXhlZHJhdGlvID09IHRydWUge1xuXG4gICAgICAgIC5maXhlZHJhdGlvIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC5maXhlZHJhdGlvX19pdGVtLFxuICAgICAgICAuZml4ZWRyYXRpbyBpZnJhbWUsXG4gICAgICAgIC5maXhlZHJhdGlvIGVtYmVkLFxuICAgICAgICAuZml4ZWRyYXRpbyBvYmplY3Qge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyAxNjo5XG4gICAgICAgIC5maXhlZHJhdGlvLS0xNng5IHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA0OjNcbiAgICAgICAgLmZpeGVkcmF0aW8tLTR4MyB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNzUlO1xuICAgICAgICB9XG5cbiAgICB9IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgSXNsYW5kXG4gICAgLmlzbGFuZFxuXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAkdXNlLWlzbGFuZDogdHJ1ZSAhZGVmYXVsdDtcblxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpZiAkdXNlLWlzbGFuZCA9PSB0cnVlIHtcbiAgICAgICAgLmlzbGFuZCxcbiAgICAgICAgLmlzbGFuZC1zLFxuICAgICAgICAuaXNsYW5kLWwge1xuICAgICAgICAgICAgQGV4dGVuZCAlbW9kdWxlO1xuICAgICAgICAgICAgQGV4dGVuZCAlY2Y7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5pc2xhbmQge1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZSk7XG4gICAgICAgIH1cblxuICAgICAgICAuaXNsYW5kLXMge1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZS1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pc2xhbmQtbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZywgJHNwYWNlLWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4vKiAgTWVkaWEgcXVlcmllc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvLyBJU0xBTkQgQkFTRUQgT04gQlJFQUtQT0lOVFxuICAgIEBlYWNoICRzdGF0ZSBpbiAkYnJlYWtwb2ludC1oYXMtaXNsYW5kIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoI3skc3RhdGV9KSB7XG4gICAgICAgICAgIFxuICAgICAgICAgICAgLy8gaXNsYW5kXG4gICAgICAgICAgICAuaXNsYW5kLS0jeyRzdGF0ZX0ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaXNsYW5kLXMtLSN7JHN0YXRlfSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZS1zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmlzbGFuZC1sLS0jeyRzdGF0ZX0ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UtbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBCdXR0b25zXG4gICAgLmJ1dHRvblxuICAgIFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4kdXNlLWJ1dHRvbnM6IHRydWUgIWRlZmF1bHQ7XG5cbi8qICBDb21wb25lbnRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5AaWYgJHVzZS1idXR0b25zID09IHRydWV7XG4gICAgXG4gICAgLmJ1dHRvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0OyAvKiAxICovXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xuICAgICAgICBsaW5lLWhlaWdodDogMjsgLyogMyAqL1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLyogNCAqL1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8qIDUgKi9cbiAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZS14cyAkc3BhY2UpO1xuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMsXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKiAgUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0KyAqL1xuICAgICAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIEJVVFRPTiBTSVpFIE1PRElGSUVSU1xuICAgIC5idXR0b24tLXMge1xuICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZywgMCAkc3BhY2Utcyk7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udHNpemUtcyk7XG4gICAgfVxuICAgIC5idXR0b24tLWwge1xuICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZywgJHNwYWNlLXMgJHNwYWNlLWwpO1xuICAgIH1cbiAgICAuYnV0dG9uLS14bCB7XG4gICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UtcyAkc3BhY2UtbCk7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udHNpemUtbCk7XG4gICAgfVxuXG4gICAgLy8gRlVMTCBXSURUSCBCVVRUT04gTU9ESUZJRVJcbiAgICAuYnV0dG9uLS1mdWxsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBIRUxQRVJTXG4gICAgRGVmYXVsdCBjbGFzc2VzIGFsbW9zdCBhbHdheXMgXG4gICAgXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIFNJR05cbiAgICAuc2lnbntcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnNpZ24tc3tcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNlLzIgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuc2lnbi1se1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2UqMiAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5zaWduLWludntcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLSRzcGFjZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIExBWUVSXG4gICAgLmxheWVyLFxuICAgIC5sYXllci1zLFxuICAgIC5sYXllci1sIHtcbiAgICAgICAgQGV4dGVuZCAlY2YgIW9wdGlvbmFsO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAubGF5ZXJ7XG4gICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UqMiAwKTtcbiAgICB9XG5cbiAgICAubGF5ZXItc3tcbiAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZSAwKTtcbiAgICB9XG5cbiAgICAubGF5ZXItbHtcbiAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZSo0IDApO1xuICAgIH1cblxuICAgIC8vIFRFWFQgQUxJR05NRU5UXG4gICAgLnRleHQtbGVmdHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG5cbiAgICAudGV4dC1jZW50ZXJ7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAudGV4dC1yaWdodHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICAgIFxuICAgIC8vIE5PV1JBUFxuXG4gICAgLm5vd3JhcHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAvLyBWSVNVQUxMWUhJRERFTlxuICAgIC52aXN1YWxseWhpZGRlbiB7XG4gICAgICAgIEBpbmNsdWRlIHZpc3VhbGx5aGlkZGVuO1xuICAgIH1cblxuICAgIC8vIEhFTFBFUlMgQkFTRUQgT04gQlJFQUtQT0lOVFxuICAgIEBlYWNoICRzdGF0ZSBpbiAkYnJlYWtwb2ludC1oYXMtaGVscGVycyB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KCN7JHN0YXRlfSkge1xuICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIHNpZ25cbiAgICAgICAgICAgIC5zaWduLS0jeyRzdGF0ZX17QGluY2x1ZGUgcmVtKG1hcmdpbi1ib3R0b20sICRzcGFjZSk7fVxuICAgICAgICAgICAgLnNpZ24tcy0tI3skc3RhdGV9e0BpbmNsdWRlIHJlbShtYXJnaW4tYm90dG9tLCAkc3BhY2UvMik7fVxuICAgICAgICAgICAgLnNpZ24tbC0tI3skc3RhdGV9e0BpbmNsdWRlIHJlbShtYXJnaW4tYm90dG9tLCAkc3BhY2UqMik7fVxuICAgICAgICAgICAgLnNpZ24taW52LS0jeyRzdGF0ZX17QGluY2x1ZGUgcmVtKG1hcmdpbi1ib3R0b20sIC0kc3BhY2UpO31cblxuICAgICAgICAgICAgLy8gbGF5ZXJcbiAgICAgICAgICAgIC5sYXllci0tI3skc3RhdGV9e0BpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UqMiAwKTt9XG4gICAgICAgICAgICAubGF5ZXItcy0tI3skc3RhdGV9e0BpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UgMCk7fVxuICAgICAgICAgICAgLmxheWVyLWwtLSN7JHN0YXRlfXtAaW5jbHVkZSByZW0ocGFkZGluZywgJHNwYWNlKjQgMCk7fVxuXG4gICAgICAgICAgICAvLyBUZXh0IGFsaWdubWVudFxuICAgICAgICAgICAgLnRleHQtbGVmdC0tI3skc3RhdGV9e3RleHQtYWxpZ246IGxlZnQ7fVxuICAgICAgICAgICAgLnRleHQtY2VudGVyLS0jeyRzdGF0ZX17dGV4dC1hbGlnbjogY2VudGVyO31cbiAgICAgICAgICAgIC50ZXh0LXJpZ2h0LS0jeyRzdGF0ZX17dGV4dC1hbGlnbjogcmlnaHQ7fVxuXG4gICAgICAgICAgICAvLyB2aXN1YWxseWhpZGRlblxuICAgICAgICAgICAgLnZpc3VhbGx5aGlkZGVuLS0jeyRzdGF0ZX0ge0BpbmNsdWRlIHZpc3VhbGx5aGlkZGVuO31cbiAgICAgICAgfVxuICAgIH1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIEZvcm1cbiAgICBGb3JtIGVsZW1lbnRzXG4gICAgXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAkdXNlLWZvcm1zOiB0cnVlICFkZWZhdWx0O1xuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpZiAkdXNlLWZvcm1zID09IHRydWV7XG5cbiAgICAgICAgaW5wdXRbdHlwZT10ZXh0XSxcbiAgICAgICAgaW5wdXRbdHlwZT1lbWFpbF0sXG4gICAgICAgIGlucHV0W3R5cGU9dGVsXSxcbiAgICAgICAgaW5wdXRbdHlwZT1udW1iZXJdLFxuICAgICAgICBpbnB1dFt0eXBlPXBhc3N3b3JkXSxcbiAgICAgICAgaW5wdXRbdHlwZT1zZWFyY2hdLFxuICAgICAgICB0ZXh0YXJlYSxcbiAgICAgICAgc2VsZWN0LFxuICAgICAgICAuaW5wdXR7XG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKGJhc2UpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoYmxhbmspO1xuICAgICAgICAgICAgY29sb3I6IGNvbG9yKGJhc2UpO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZS1zKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHJlbShtYXgtd2lkdGgsICRzcGFjZSoyMCk7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoJGJhc2UtZm9udC1zaXplLCAxKTtcblxuICAgICAgICAgICAgJjpmb2N1c3tcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiAxcHggc29saWQgY29sb3IoYnJhbmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGV4dGFyZWF7XG4gICAgICAgICAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0e1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2dmeC9ub2JlYXJjc3MvaWNvbi1hcnJvdy5zdmcpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTJweCA3cHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAkc3BhY2UqMC43NSBjZW50ZXI7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZywgJHNwYWNlLXMgJHNwYWNlKjEuNSAkc3BhY2UtcyAkc3BhY2Utcyk7XG4gICAgICAgIH1cbiAgICB9IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgTmF2aWdhdGlvblxuICAgIC5uYXZcblxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgJHVzZS1uYXZpZ2F0aW9uOiB0cnVlICFkZWZhdWx0O1xuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpZiAkdXNlLW5hdmlnYXRpb24gPT0gdHJ1ZSB7XG5cbiAgICAgICAgLm5hdiB7XG4gICAgICAgICAgICBAZXh0ZW5kIC5jZjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgICAgICAgICA+IGxpIHtcblxuICAgICAgICAgICAgICAgICYsXG4gICAgICAgICAgICAgICAgPiBhIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBWRVJUSUNBTFxuICAgICAgICAubmF2LS1zdGFja2VkIHtcbiAgICAgICAgICAgID4gbGkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcblxuICAgICAgICAgICAgICAgID4gYSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1PRElGSUVSOiBDRU5URVJcbiAgICAgICAgLm5hdi0tY2VudGVyIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgLy8gTU9ESUZJRVI6IEJSRUFEQ1JVTUJTXG4gICAgICAgIC5uYXYtLWJyZWFkY3J1bWIgPiBsaSArIGxpOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIsK7IFwiO1xuICAgICAgICB9XG4gICAgICAgIC5uYXYtLWJyZWFkY3J1bWItcGF0aCA+IGxpICsgbGk6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiLyBcIjtcbiAgICAgICAgfVxuICAgICAgICAubmF2LS1icmVhZGNydW1iID4gbGkgKyBsaVtkYXRhLWJyZWFkY3J1bWJdOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtYnJlYWRjcnVtYilcIiBcIjtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgLy8gTU9ESUZJRVI6IFBBR0lOQVRJT05cbiAgICAgICAgLm5hdi0tcGFnaW5hdGlvbiB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgICAgID4gbGkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UvMik7XG5cbiAgICAgICAgICAgICAgICA+IGEge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZywgJHNwYWNlLzIpO1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSByZW0obWFyZ2luLCAtJHNwYWNlLzIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtLXBhZ2luYXRpb25fX2ZpcnN0IGE6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiwqsgXCI7XG4gICAgICAgIH1cbiAgICAgICAgLm5hdi0tcGFnaW5hdGlvbl9fbGFzdCBhOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiIMK7XCI7XG4gICAgICAgIH1cbiAgICB9IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgSUNPTlxuICAgIC5pY29uXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAkdXNlLWljb25zOiB0cnVlICFkZWZhdWx0O1xuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpZiAkdXNlLWljb25zID09IHRydWUge1xuICAgICAgICAuaWNvbntcbiAgICAgICAgICAgIGZpbGw6IGNvbG9yKGJhc2UpO1xuICAgICAgICAgICAgY29sb3I6IGNvbG9yKGJyYW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pY29uOm5vdChbd2lkdGhdKSxcbiAgICAgICAgLmljb246bm90KFtoZWlnaHRdKXtcbiAgICAgICAgICAgIEBpbmNsdWRlIHJlbSgnd2lkdGgnLCAkc3BhY2UpO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKCdoZWlnaHQnLCAkc3BhY2UpO1xuICAgICAgICB9XG4gICAgfSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIElNQUdFXG4gICAgLmltYWdlXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAkdXNlLWltYWdlOiB0cnVlICFkZWZhdWx0O1xuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpZiAkdXNlLWltYWdlID09IHRydWUge1xuXG4gICAgICAgIC5pbWFnZS0tbGVmdHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0obWFyZ2luLCAwICRzcGFjZS1zICRzcGFjZS1zIDApO1xuXG4gICAgICAgIH1cblxuICAgICAgICAuaW1hZ2UtLXJpZ2h0e1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0obWFyZ2luLCAwIDAgJHNwYWNlLXMgJHNwYWNlLXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmltYWdlLS1jZW50ZXJ7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICB9XG4gICAgfSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIFRvZ2dsZVxuICAgIEJhc2VkIG9uIHRvZ2dsZS5qc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAqW2RhdGEtcm9sZT10b2dnbGVlXVtkYXRhLXN0YXRlPXBhc3NpdmVde1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBGT1JNXG4gICAgZXh0ZW5kcyBub2JlYXJjc3MgZnJhbWV3b3JrIGZvcm0gc3R5bGluZ1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgTElTVFxuICAgIHVsIC8gb2wgLyAvIGxpICsgZGwgLyBkdCAvIGRkXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qIFVub3JkZXJlZCBsaXN0XG4gICAgXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAgICAgdWwge1xuXG4gICAgICAgICAgICBsaXt9XG4gICAgICAgIH1cblxuXG4gICAgLyogT3JkZXJlZCBsaXN0XG4gICAgXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAgICAgb2x7XG5cbiAgICAgICAgICAgIGxpe31cbiAgICAgICAgfVxuXG4gICAgLyogKHVuKW9yZGVyZWQgbGlzdCBpdGVtc1xuICAgIFxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgICAgIGxpe31cblxuICAgIC8qIERlZmluaXRpb24gbGlzdFxuICAgIFxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgICAgIGRse31cblxuICAgICAgICAgICAgZHR7fVxuXG4gICAgICAgICAgICBkZHt9XG5cbiAgICAvKiAgQnJhbmRlZCBsaXN0XG4gICAgXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAgICAgLmxpc3QtYnJhbmR7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG5cbiAgICAgICAgICAgIGxpe1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSByZW0obWFyZ2luLWJvdHRvbSwgJHNwYWNlKTtcblxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGJyYW5kKTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHdpZHRoLCAkc3BhY2UqMik7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbShib3R0b20sIC0kc3BhY2Utcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgVEFCTEVcbiAgICB0YWJ1bGFyIGRhdGEgb25seSwgZG8gbm90IHVzZSBmb3IgbGF5b3V0XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBDb21wb25lbnRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgdGFibGV7fVxuXG4gICAgICAgIHRoZWFke31cblxuICAgICAgICB0Ym9keXt9XG5cbiAgICAgICAgdHJ7fVxuXG4gICAgICAgIHRoe1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZS1zKTtcblxuICAgICAgICAgICAgJjpmaXJzdC1jaGlsZHtAaW5jbHVkZSByZW0ocGFkZGluZywgJHNwYWNlLXMgJHNwYWNlLXMgJHNwYWNlLXMgMCk7fVxuICAgICAgICAgICAgJjpsYXN0LWNoaWxke0BpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UtcyAwICRzcGFjZS1zICRzcGFjZS1zKTt9XG4gICAgICAgIH0gICAgXG5cbiAgICAgICAgdGR7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZywgJHNwYWNlLXMpO1xuXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxke0BpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UtcyAkc3BhY2UtcyAkc3BhY2UtcyAwKTt9XG4gICAgICAgICAgICAmOmxhc3QtY2hpbGR7QGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZS1zIDAgJHNwYWNlLXMgJHNwYWNlLXMpO31cbiAgICAgICAgfVxuXG4gICAgIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgVE9QIExFVkVMXG4gICAgSFRNTCwgYm9keSwgd3JhcHBlciwgc2l0ZS13aWR0aCBvdmVycmlkZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiAgVmFyaWFibGVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXG5cbi8qICBDb21wb25lbnRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgYm9keSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICAgIGNvbG9yOiBjb2xvcihiYXNlKTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3IoYmxhbmspO1xuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGV4dGVuZCAudmlzdWFsbHloaWRkZW47XG4gICAgICAgICAgICBjb250ZW50OiAncGFsbSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAud3JhcHBlciB7XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAuc2l0ZS13aWR0aCB7XG4gICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLCAwICRzcGFjZS1zKTtcbiAgICB9XG5cbiAgICAuc2l0ZS13aWR0aC0tbGVmdCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogY2FsYyg1MHZ3IC0gI3skc2l0ZS13aWR0aC8yfSk7XG4gICAgfVxuXG4gICAgLnNpdGUtd2lkdGgtLXJpZ2h0IHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogY2FsYyg1MHZ3IC0gI3skc2l0ZS13aWR0aC8yfSk7XG4gICAgfVxuXG5cblxuLyogIE1lZGlhIHF1ZXJpZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwKXtcbiAgICAgICAgIFxuICAgICAgICBib2R5OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdsYXAnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoZGVzayl7XG4gICAgICAgICBcbiAgICAgICAgYm9keTphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnZGVzayc7XG4gICAgICAgIH1cbiAgICB9IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgVFlQT0dSQVBIWVxuICAgIHRleHQgZXRjXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9TW9udHNlcnJhdDozMDAsNTAwLDYwMCw3MDAnKTtcblxuICAgIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDZ7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1icmFuZDtcbiAgICB9XG5cbiAgICBoMSxcbiAgICAuZm9udHNpemUteGx7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udHNpemUteGwpO1xuICAgIH1cblxuICAgIGgyLFxuICAgIC5mb250c2l6ZS1se1xuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnRzaXplLWwsIC43NSk7XG4gICAgfVxuXG4gICAgLmZvbnRzaXplLXNlbWkge1xuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnRzaXplLXNlbWkpO1xuICAgIH1cblxuICAgIGgzLCBoNCwgaDUsIGg2e1xuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnRzaXplLW0pO1xuICAgIH1cblxuICAgIC50ZXh0LXNtYWxse1xuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnRzaXplLXMpO1xuICAgIH1cblxuICAgIC53ZWlnaHQtbWVkaXVtIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgRk9PVEVSXG4gICAgQm90dG9tIG9mIHBhZ2VcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiAgVmFyaWFibGVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXG5cbi8qICBDb21wb25lbnRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICAgIFxuICAgIC5mb290ZXJ7fSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIEhFUk9cbiAgICBtYWluIGludHJvIGltYWdlIGFuZCB0ZXh0XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAkaWNvbi1zaXplOiAxLjU7XG4gICAgJGhlcm8taGVpZ2h0LXBhbG06IDE1O1xuXG5cblxuLyogIEFuaW1hdGlvbiBrZXlmcmFtZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgQGtleWZyYW1lcyB0ZXh0QXBwZWFyIHtcblxuICAgICAgICAwJSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDB2dyk7XG4gICAgICAgIH0gICAgICAgIFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH0gICAgICAgIFxuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgaWNvbkFwcGVhciB7XG5cbiAgICAgICAgMCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMik7XG4gICAgICAgIH0gICAgICAgIFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH0gICAgICAgIFxuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgZmxvYXRpbmcge1xuXG4gICAgICAgIDAlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJHNwYWNlLXhzKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRzcGFjZS14cyk7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzcGFjZS14cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbi8qICBDb21wb25lbnRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLmhlcm8ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGJyYW5kLWRhcmspO1xuICAgICAgICBAaW5jbHVkZSByZW0oaGVpZ2h0LCAkc3BhY2UqJGhlcm8taGVpZ2h0LXBhbG0pO1xuXG4gICAgICAgICY6YmVmb3JlLFxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAmOmJlZm9yZSB7IC8vIGRhcmsgb3ZlcmxheVxuICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgIGhlaWdodDogNTAlO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgICAgIHRvIGJvdHRvbSxcbiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAwLFxuICAgICAgICAgICAgICAgIGNvbG9yKGJyYW5kLWRhcmspIDEwMCVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHsgLy8gYW5nbGVkIGVkZ2VcbiAgICAgICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwJTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICB0byBib3R0b20gcmlnaHQsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgNDkuNSUsXG4gICAgICAgICAgICAgICAgY29sb3IoYmxhbmspIDUwLjUlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkIGNvbG9yKGJsYW5rKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1cHgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgICAgIC5oZXJvX19jaGFwZWF1LFxuICAgICAgICAuaGVyb19faGVhZGluZyxcbiAgICAgICAgLmhlcm9fX3N1YmhlYWRpbmcge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDBweCAycHggOHB4IGNvbG9yKGJhc2UpO1xuICAgICAgICAgICAgYW5pbWF0aW9uOiAxcyBlYXNlLWluLW91dCBmb3J3YXJkcyB0ZXh0QXBwZWFyO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDB2dyk7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZywgMCAkc3BhY2Utcyk7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVyb19fY2hhcGVhdSxcbiAgICAgICAgLmhlcm9fX2hlYWRpbmd7XG4gICAgICAgICAgICBjb2xvcjogY29sb3IoYmxhbmspO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlcm9fX2NoYXBlYXUsXG4gICAgICAgIC5oZXJvX19zdWJoZWFkaW5ne1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKCRmb250c2l6ZS1sLCAyLzMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlcm9fX2NoYXBlYXUge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogLjVzO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHRvcCwgJHNwYWNlKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLmhlcm9fX2hlYWRpbmcge1xuICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAxcztcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udHNpemUteGwsIDQvNSk7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0odG9wLCAkc3BhY2UqMyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC5oZXJvX19zdWJoZWFkaW5nIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMS41cztcbiAgICAgICAgICAgIGNvbG9yOiBjb2xvcihicmFuZCk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKGJvdHRvbSwgJHNwYWNlKjIpO1xuICAgICAgICAgICAgLy8gQGluY2x1ZGUgcmVtKGJvdHRvbSwgJHNwYWNlKjMpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAuaGVyb19faW1hZ2Uge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHRvcCByaWdodCAxNSU7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZywgJHNwYWNlKiRoZXJvLWhlaWdodC1wYWxtLzIgMCAkc3BhY2UqJGhlcm8taGVpZ2h0LXBhbG0vMiAxMDAlKTtcbiAgICAgICAgICAgIC8vIGFuaW1hdGlvbjogaGVyb2ltYWdlIDNzIDE7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0oaGVpZ2h0LCAkc3BhY2UqJGhlcm8taGVpZ2h0LXBhbG0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlcm9fX2ljb25zIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuXG5cbi8qICBNZWRpYSBxdWVyaWVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGRlc2spe1xuXG4gICAgICAgIC5oZXJvIHtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgICAgIC5oZXJvX19jaGFwZWF1LFxuICAgICAgICAgICAgLmhlcm9fX2hlYWRpbmcsXG4gICAgICAgICAgICAuaGVyb19fc3ViaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoNTB2dyAtICN7JHNpdGUtd2lkdGgvMiAtICRzcGFjZX0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaGVyb19fY2hhcGVhdSxcbiAgICAgICAgICAgIC5oZXJvX19zdWJoZWFkaW5ne1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udHNpemUteGwsIDMvNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgXG4gICAgICAgICAgICAuaGVyb19fY2hhcGVhdSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHRvcCwgJHNwYWNlKjQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAuaGVyb19faGVhZGluZyB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKCRmb250c2l6ZS14eGwsIDQvNSk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHRvcCwgJHNwYWNlKjYpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaGVyb19fc3ViaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKGJvdHRvbSwgJHNwYWNlKjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAuaGVyb19faW1hZ2Uge1xuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogaGVyb2ltYWdlIDNzIDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5oZXJvX19pY29ucyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuaGVyb19faWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9yKGJsYW5rKTtcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdGluZyA1cyBpbmZpbml0ZTtcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtc2hhZG93OiBcbiAgICAgICAgICAgICAgICAgICAgICAgIDBweCAtMnB4IDJweCByZ2JhKGNvbG9yKGJhc2UpLCAuNSksXG4gICAgICAgICAgICAgICAgICAgICAgICAwcHggMnB4IDJweCBjb2xvcihiYXNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnRzaXplLWwsIC41KTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHN2ZyB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHdpZHRoLCAkc3BhY2UqJGljb24tc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSByZW0oaGVpZ2h0LCAkc3BhY2UqJGljb24tc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLmhlcm9fX2ljb25fX2lubmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IDFzIGVhc2UtaW4tb3V0IGZvcndhcmRzIGljb25BcHBlYXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICY6YmVmb3JlIHsgLy8gc2hhZG93IGJlaGluZCBpY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHotaW5kZXg6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgcmdiYShjb2xvcihicmFuZC1kYXJrKSwgLjMpIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIHRyYW5zcGFyZW50ICAgICAgICAgICAgICAgICA3MCVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBAaW5jbHVkZSByZW0od2lkdGgsICRzcGFjZS1sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBAaW5jbHVkZSByZW0oaGVpZ2h0LCAkc3BhY2UtbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgQGluY2x1ZGUgcmVtKG1hcmdpbi1sZWZ0LCAtJHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLmhlcm9fX2ljb25fX2xpbmUgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoYmxhbmspO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKGhlaWdodCwgJHNwYWNlKjIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgfVxuICAgICIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIExBWUVSXG4gICAgUGFnZSBwYXJ0XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC5sYXllcnt9XG5cbiAgICAubGF5ZXIteHMge1xuICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZy10b3AsICRzcGFjZS1zKTtcbiAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctYm90dG9tLCAkc3BhY2Utcyk7XG4gICAgfVxuXG4gICAgLmxheWVyLS1oYXN2aXN1YWwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihzdWJ0bGUpO1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcblxuICAgICAgICAubGF5ZXJfX3Zpc3VhbCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQ7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDEwMCUgcGVyY2VudGFnZSg5LzE2KSAwO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKG1hcmdpbi1ib3R0b20sICRzcGFjZSk7XG4gICAgICAgIH1cblxuICAgICAgICBoMiB7XG4gICAgICAgICAgICBjb2xvcjogY29sb3IoYnJhbmQpO1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKCRmb250c2l6ZS1sLCAuNzUpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxuLyogIE1lZGlhIHF1ZXJpZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoZ3QtcGFsbSl7XG4gICAgICAgICBcbiAgICAgICAgLmxheWVyLS1oYXN2aXN1YWwge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBjb2xvcjogY29sb3IoYmxhbmspO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctdG9wLCAkc3BhY2UteGwpO1xuICAgIFxuICAgICAgICAgICAgLmxheWVyX192aXN1YWwge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMDAlIDAgMDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoMiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IGNvbG9yKGJsYW5rKTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnRzaXplLXhsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBNQVNUSEVBRFxuICAgIFRvcCBvZiBwYWdlXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblxuXG4vKiAgQW5pbWF0aW9uIEtleWZyYW1lc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgQGtleWZyYW1lcyBoZXJvaW1hZ2Uge1xuXG4gICAgICAgIDAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC5tYXN0aGVhZCB7XG5cbiAgICB9XG5cbiAgICAgICAgLm1hc3RoZWFkX19oZWFkZXIge1xuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgICAgei1pbmRleDogOTk5OTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UtcyAwKTtcblxuICAgICAgICAgICAgJjphZnRlciB7IC8vIGZhdXggYmdcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGNvbG9yKGJsYW5rKTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3A7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICR0cmFuc2l0aW9uO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAycHggcmdiYShjb2xvcihiYXNlKSwgLjUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgICAgIC5tYXN0aGVhZF9fYmFzZWxpbmssXG4gICAgICAgICAgICAubWFzdGhlYWRfX25hdiB7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubWFzdGhlYWRfX2Jhc2VsaW5rIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkdHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSByZW0oaGVpZ2h0LCAkc3BhY2UqKCRoZWFkZXItaGVpZ2h0IC0gMSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubWFzdGhlYWRfX2JyYW5kIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJHRyYW5zaXRpb247XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKGhlaWdodCwgJHNwYWNlKigkaGVhZGVyLWhlaWdodCAtIDEpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm1hc3RoZWFkX19uYXYge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJHRyYW5zaXRpb247XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogY29sb3IoYmxhbmspO1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggMnB4IHJnYmEoY29sb3IoYmFzZSksIC41KTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHRvcCwgJHNwYWNlKjQpO1xuXG4gICAgICAgICAgICAgICAgLm1hc3RoZWFkX19oZWFkZXJbZGF0YS1zdGF0ZT1hY3RpdmVdICYge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubWFzdGhlYWRfX2N0YSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgLy8gVEVNUFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHJpZ2h0LCAkc3BhY2Utcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5tYXN0aGVhZF9fcGFuZWx0b2dnbGVyIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgICAgICAgICBjb2xvcihicmFuZCksXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yKGJyYW5kKVxuICAgICAgICAgICAgICAgICkgY2VudGVyIHJpZ2h0IC8gI3t2YWx1ZVRvUmVtKCRzcGFjZSoxLjUpfSAje3ZhbHVlVG9SZW0oJHNwYWNlKjEuNSl9IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDA7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtICR0cmFuc2l0aW9uLCBcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZCAkdHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSByZW0odG9wLCAkc3BhY2UqMS4yNSk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHJpZ2h0LCAkc3BhY2Utcyk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHdpZHRoLCAkc3BhY2UqMS41KTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSByZW0oaGVpZ2h0LCAkc3BhY2UqMS41KTtcblxuICAgICAgICAgICAgICAgICY6YmVmb3JlLFxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjYWxjKDUwJSAtICN7dmFsdWVUb1JlbSgkc3BhY2UqLjE1KX0pO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihibGFuayk7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtICR0cmFuc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgJHRyYW5zaXRpb247XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbSh3aWR0aCwgJHNwYWNlKjEuNSk7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbShoZWlnaHQsICRzcGFjZSouMyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzcGFjZSouMyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkc3BhY2UqLjMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZbZGF0YS1zdGF0ZT1hY3RpdmVde1xuXG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlLFxuICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlKDQ1ZGVnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKC43NSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlKC00NWRlZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZSguNzUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIC5tYXN0aGVhZF9faGVybyB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gICAgICR0cmFuc2l0aW9uLFxuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b20gJHRyYW5zaXRpb247XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0odG9wLCAkc3BhY2UqJGhlYWRlci1oZWlnaHQpO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKG1hcmdpbi1ib3R0b20sICRzcGFjZSokaGVhZGVyLWhlaWdodCk7ICAgIFxuICAgICAgICB9XG4gICAgICAgIFxuXG4gICAgYm9keVtkYXRhLXN0YXRlPXNjcm9sbGVkXSB7XG4gICAgICAgIFxuICAgICAgICAubWFzdGhlYWQge31cblxuICAgICAgICAgICAgLm1hc3RoZWFkX19oZWFkZXIge1xuXG4gICAgICAgICAgICAgICAgJjphZnRlciB7IC8vIGZhdXggYmdcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoLjUpO1xuICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IHJnYmEoY29sb3IoYmFzZSksIC41KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubWFzdGhlYWRfX2Jhc2VsaW5rIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSguMzMzMyk7XG5cbiAgICAgICAgICAgICAgICAgICAgLm1hc3RoZWFkX19icmFuZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMzc1KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5tYXN0aGVhZF9fbmF2IHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwJSwgJHNwYWNlKi0yKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubWFzdGhlYWRfX2hlYWRlcltkYXRhLXN0YXRlPWFjdGl2ZV0gLm1hc3RoZWFkX19uYXYge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAkc3BhY2UqLTIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5tYXN0aGVhZF9fcGFuZWx0b2dnbGVyIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVkoLSRzcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKC43NSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubWFzdGhlYWRfX2hlcm8ge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkc3BhY2UqLTIpO1xuICAgICAgICAgICAgICAgIC8vIEBpbmNsdWRlIHJlbShtYXJnaW4tYm90dG9tLCAkc3BhY2UqMik7ICAgIFxuICAgICAgICAgICAgfVxuICAgIH1cblxuXG5cbi8qICBNZWRpYSBxdWVyaWVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeShkZXNrKXtcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgIC5tYXN0aGVhZCB7fVxuXG4gICAgICAgICAgICAgICAgLm1hc3RoZWFkX19oZWFkZXIge31cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIC5tYXN0aGVhZF9fYmFzZWxpbmssXG4gICAgICAgICAgICAgICAgICAgIC5tYXN0aGVhZF9fbmF2IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAubWFzdGhlYWRfX2Jhc2VsaW5rIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbSh3aWR0aCwgJHNwYWNlKjQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hc3RoZWFkX19icmFuZCB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gLjNzIGVhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAgICAuM3MgZWFzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAubWFzdGhlYWRfX25hdiB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICYsXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5W2RhdGEtc3RhdGU9c2Nyb2xsZWRdICYge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctbGVmdCwgJHNwYWNlLXhsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlbZGF0YS1zdGF0ZT1zY3JvbGxlZF0gJiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlbZGF0YS1zdGF0ZT1zY3JvbGxlZF0gJiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLm1hc3RoZWFkX19jdGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJHRyYW5zaXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgICAgID4gYS5idXR0b24tLWN0YSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLXJhZGl1cyAkdHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keVtkYXRhLXN0YXRlPXNjcm9sbGVkXSAmIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgjeyRzcGFjZS1zfSwgY2FsYygtNTAlIC0gI3skc3BhY2V9KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IGEuYnV0dG9uLS1jdGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5tYXN0aGVhZF9fcGFuZWx0b2dnbGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4vKiAgTWVkaWEgcXVlcmllc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKnRoZSBjb250YWluZXIgbXVzdCBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlOiovXG5cbi5jdXN0b20tc2VsZWN0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LWZhbWlseTogQXJpYWw7XG4gIGZsb2F0OiAnbGVmdCc7XG59XG5cbi5jdXN0b20tc2VsZWN0IHNlbGVjdCB7XG4gIGRpc3BsYXk6IG5vbmU7IC8qaGlkZSBvcmlnaW5hbCBTRUxFQ1QgZWxlbWVudDoqL1xufVxuXG4uc2VsZWN0LXNlbGVjdGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogRG9kZ2VyQmx1ZTtcbn1cblxuLypzdHlsZSB0aGUgYXJyb3cgaW5zaWRlIHRoZSBzZWxlY3QgZWxlbWVudDoqL1xuLnNlbGVjdC1zZWxlY3RlZDphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29udGVudDogXCJcIjtcbiAgdG9wOiAxNHB4O1xuICByaWdodDogMTBweDtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiA2cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1jb2xvcjogI2ZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbn1cblxuLypwb2ludCB0aGUgYXJyb3cgdXB3YXJkcyB3aGVuIHRoZSBzZWxlY3QgYm94IGlzIG9wZW4gKGFjdGl2ZSk6Ki9cbi5zZWxlY3Qtc2VsZWN0ZWQuc2VsZWN0LWFycm93LWFjdGl2ZTphZnRlciB7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZmZiB0cmFuc3BhcmVudDtcbiAgdG9wOiA3cHg7XG59XG5cbi8qc3R5bGUgdGhlIGl0ZW1zIChvcHRpb25zKSwgaW5jbHVkaW5nIHRoZSBzZWxlY3RlZCBpdGVtOiovXG4uc2VsZWN0LWl0ZW1zIGRpdiwuc2VsZWN0LXNlbGVjdGVkIHtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIHBhZGRpbmc6IDhweCAxNnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCByZ2JhKDAsIDAsIDAsIDAuMSkgdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi8qc3R5bGUgaXRlbXMgKG9wdGlvbnMpOiovXG4uc2VsZWN0LWl0ZW1zIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTg5Q0Q4O1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB6LWluZGV4OiA5OTtcbn1cblxuLypoaWRlIHRoZSBpdGVtcyB3aGVuIHRoZSBzZWxlY3QgYm94IGlzIGNsb3NlZDoqL1xuLnNlbGVjdC1oaWRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnNlbGVjdC1pdGVtcyBkaXY6aG92ZXIsIC5zYW1lLWFzLXNlbGVjdGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgQU5JTUFUSU9OXG4gICAgc2Nyb2xsIHRyaWdnZXJlZCB0cmFuc2l0aW9uc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAuYW5pbWF0aW9uIHtcblxuICAgICAgICAvL3RhcmdldCBhbGwgYW5pbWF0aW9uIGNoaWxkcmVuIFxuICAgICAgICBbY2xhc3NePSdhbmltYXRpb25fXyddLCBbY2xhc3MqPScgYW5pbWF0aW9uX18nXXtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAxcyAkYW5pLFxuICAgICAgICAgICAgICAgIG9wYWNpdHkgMXMgJGFuaTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG5cbiAgICAgICAgICAgICZbZGF0YS1zdGF0ZT1pbi12aWV3cG9ydF0ge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgICAgIC5hbmltYXRpb25fX3NsaWRlZnJvbWxlZnQge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hbmltYXRpb25fX3NsaWRlZnJvbXJpZ2h0IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hbmltYXRpb25fX2ZhZGVpbiB7XG4gICAgICAgIH1cblxuXG5cbi8qICBNZWRpYSBxdWVyaWVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGd0LXBhbG0pe1xuXG4gICAgICAgIC5hbmltYXRpb24ge1xuXG4gICAgICAgICAgICAmW2RhdGEtcm9sZT1vbnNjcm9sbF0ge1xuICAgIFxuICAgICAgICAgICAgICAgICZbZGF0YS1zdGF0ZT1pbi12aWV3cG9ydF0ge1xuICAgIFxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NePSdhbmltYXRpb25fXyddLCBbY2xhc3MqPScgYW5pbWF0aW9uX18nXXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gICAgXG4gICAgfSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIEJVVFRPTlxuICAgIHN0eWxlZCBsaW5rLCBidXR0b24sIGV0Y1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAuYnV0dG9uIHt9XG5cbiAgICAuYnV0dG9uLS1jdGEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihicmFuZC1zZWMpO1xuICAgICAgICBjb2xvcjogY29sb3IoYmFzZSk7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKCRiYXNlLWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UtcyAkc3BhY2UtbCk7XG4gICAgICAgIEBpbmNsdWRlIHJlbShib3JkZXItcmFkaXVzLCAkc3BhY2UpO1xuXG4gICAgICAgIC5idXR0b25fX2lubmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICR0cmFuc2l0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IFxuICAgICAgICAgICAgICAgIDAgNHB4IDJweCAtMnB4IHJnYmEoY29sb3IoYmFzZSksIC41KSBpbnNldDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbihkZXNhdHVyYXRlKGNvbG9yKGJyYW5kLXNlYyksIDEwJSksIDUlKTtcblxuICAgICAgICAgICAgLmJ1dHRvbl9faW5uZXIge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgycHgpO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG4vKiAgTWVkaWEgcXVlcmllc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAgICAgLmJ1dHRvbiB7fVxuXG4gICAgICAgIC5idXR0b24tLWN0YXtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IFxuICAgICAgICAgICAgICAgIDAgMCAycHggLTJweCByZ2JhKGNvbG9yKGJhc2UpLCAuNSk7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gICAgICAgICR0cmFuc2l0aW9uLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgICAgICAgJHRyYW5zaXRpb24sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciAkdHJhbnNpdGlvbjtcblxuICAgICAgICAgICAgJjpob3Zlcjpub3QoOmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBcbiAgICAgICAgICAgICAgICAgICAgMCA0cHggMnB4IC0ycHggcmdiYShjb2xvcihiYXNlKSwgLjUpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oc2F0dXJhdGUoY29sb3IoYnJhbmQtc2VjKSwgMTAlKSwgNSUpO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBDQVJEXG4gICAgQmxvY2sgd2l0aCBjb250ZW50LCBvcHRpb25hbCBpbWFnZVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAuY2FyZHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoYmxhbmspO1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDhweCByZ2JhKGNvbG9yKGJhc2UpLCAuNSk7XG4gICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UpO1xuICAgIH1cblxuICAgIC5jYXJkLS1oYXMtcm91bmQtdmlzdWFse1xuICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZy10b3AsICRzcGFjZSo1LjUpO1xuICAgICAgICBAaW5jbHVkZSByZW0odG9wLCAkc3BhY2UqNS41KTtcbiAgICAgICAgQGluY2x1ZGUgcmVtKG1hcmdpbi1ib3R0b20sICRzcGFjZSo1LjUpO1xuICAgIH1cblxuICAgICAgICAuY2FyZF9fdmlzdWFsIHt9XG5cbiAgICAgICAgLmNhcmRfX3Zpc3VhbC0tcm91bmQge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHRvcCwgJHNwYWNlKi02LjUpO1xuICAgICAgICB9XG5cbiAgICAuY2FyZC0taGFzLWxvZ297IFxuICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZywgJHNwYWNlLXMgJHNwYWNlKTtcbiAgICB9XG4gICAgICAgIFxuICAgICAgICAuY2FyZF9fbG9nbyB7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKGhlaWdodCwgJHNwYWNlKjQpO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZSoyIDAgJHNwYWNlKjIgMTAwJSk7XG4gICAgICAgIH1cblxuICAgIGEuY2FyZCB7XG4gICAgICAgIEBleHRlbmQgLmdyZXlzY2FsZTtcbiAgICAgICAgQGV4dGVuZCAuZ3JleXNjYWxlLS1ub2hvdmVyO1xuICAgIH1cblxuXG5cbi8qICBNZWRpYSBxdWVyaWVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGRlc2spe1xuICAgICAgICAgXG4gICAgICAgIGEuY2FyZCB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gJHRyYW5zaXRpb24sXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyAkdHJhbnNpdGlvbixcbiAgICAgICAgICAgICAgICBmaWx0ZXIgJHRyYW5zaXRpb247XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAmOmhvdmVyOm5vdCg6YWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IFxuICAgICAgICAgICAgICAgICAgICAwIDRweCAxMnB4IHJnYmEoY29sb3IoYmFzZSksIC4yNSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgQ09WRVJcbiAgICBmaWxsIG91dCBhbiBpbWFnZSBvbiB0aGUgYXZhaWxhYmxlIHNwYWNlXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC5jb3ZlciB7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAwIDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIERJTUVOU0lPTlNcbiAgICBFeHRlbmRzIG5vYmVhcmNzcyBkaW1lbnNpb25zXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblxuXG4vKiAgTWl4aW5zICYgZnVuY3Rpb25zXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIEBlYWNoICRuIGluICRkaW1lbnNpb25zLWRpdmlzaW9ucyB7XG5cbiAgICAgICAgLyogQXZvaWQgY3JlYXRpbmcgcnVsZXMgbGlrZSAnLnVuaXQtMTItMTIge30nJyAqL1xuICAgICAgICAkeDogJG4gLSAxO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHgge1xuXG4gICAgICAgICAgICAudW5pdC0jeyRpfS0jeyRufS0tZXhwYW5kZWQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKCN7cGVyY2VudGFnZSgkaS8kbil9ICsgI3t2YWx1ZVRvUmVtKCRzcGFjZSoyKX0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAudW5pdC0jeyRpfS0jeyRufS0tc2hvcnRlbmVkIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygje3BlcmNlbnRhZ2UoJGkvJG4pfSAtICN7dmFsdWVUb1JlbSgkc3BhY2UqMil9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVE9ETzogcmVzcG9uc2l2ZVxuXG4gICAgICAgICAgICBAaWYgJGRpbWVuc2lvbnMtdXNlLXVuaXRzID09IHRydWUge1xuICAgICAgICAgICAgICAgIEBlYWNoICRuYW1lIGluICRkaW1lbnNpb25zLWJyZWFrcG9pbnQtaGFzLXVuaXRzIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoJG5hbWUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLnVuaXQtI3skaX0tI3skbn0tLSN7JG5hbWV9LS1leHBhbmRlZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoI3twZXJjZW50YWdlKCRpLyRuKX0gKyAje3ZhbHVlVG9SZW0oJHNwYWNlKjIpfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC51bml0LSN7JGl9LSN7JG59LS0jeyRuYW1lfS0tc2hvcnRlbmVkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygje3BlcmNlbnRhZ2UoJGkvJG4pfSAtICN7dmFsdWVUb1JlbSgkc3BhY2UqMil9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBIRUxQRVJTXG4gICAgdmFyaW91cyBzbWFsbCBoZWxwZXIgY2xhc3Nlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAuZ3JleXNjYWxlIHtcbiAgICAgICAgZmlsdGVyOiBncmF5OyAvKiBJRTYtOSAqL1xuICAgICAgICAtd2Via2l0LWZpbHRlcjogZ3JheXNjYWxlKDEpOyAvKiBHb29nbGUgQ2hyb21lLCBTYWZhcmkgNisgJiBPcGVyYSAxNSsgKi9cbiAgICAgICAgZmlsdGVyOiBncmF5c2NhbGUoMSk7IC8qIE1pY3Jvc29mdCBFZGdlIGFuZCBGaXJlZm94IDM1KyAqLyAgICAgIFxuICAgIH1cblxuXG5cbi8qICBNZWRpYSBxdWVyaWVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbiAgICAgICAgXG4gICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoZGVzayl7XG5cbiAgICAgICAgLmdyZXlzY2FsZS0tbm9ob3ZlciB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIC13ZWJraXQtZmlsdGVyOiBncmF5c2NhbGUoMCk7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiBub25lOyAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gXG4gICAgfSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIElDT05cbiAgICBleHRlbmRzIG5vYmVhcmNzcyBpY29uXG4gICAgc21hbGwgaW5kaWNhdGl2ZSBpbWFnZVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAuaWNvbiB7fVxuXG4gICAgLmljb24tLWwge1xuICAgICAgICBcbiAgICAgICAgJjpub3QoW3dpZHRoXSksXG4gICAgICAgICY6bm90KFtoZWlnaHRdKXtcbiAgICAgICAgICAgIEBpbmNsdWRlIHJlbSgnd2lkdGgnLCAkc3BhY2UtbCk7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0oJ2hlaWdodCcsICRzcGFjZS1sKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pY29uLS14bCB7XG4gICAgICAgIFxuICAgICAgICAmOm5vdChbd2lkdGhdKSxcbiAgICAgICAgJjpub3QoW2hlaWdodF0pe1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKCd3aWR0aCcsICRzcGFjZSozKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHJlbSgnaGVpZ2h0JywgJHNwYWNlKjMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmljb25fX2dyYWRpZW50IHtcbiAgICAgICAgZmlsbDogY29sb3IoYnJhbmQpO1xuICAgICAgICBmaWxsOiB1cmwoI2ljb25ncmFkaWVudCk7XG4gICAgfVxuXG4gICAgLmljb24tZ3JhZGllbnQgeyB9XG5cbiAgICAgICAgLmljb24tZ3JhZGllbnRfX3N0YXJ0IHtcbiAgICAgICAgICAgIHN0b3AtY29sb3I6IGNvbG9yKGJyYW5kLWJyaWdodC1mYWRlKTtcbiAgICAgICAgfVxuICAgICAgICAuaWNvbi1ncmFkaWVudF9fc3RvcCB7XG4gICAgICAgICAgICBzdG9wLWNvbG9yOiBjb2xvcihicmFuZC1icmlnaHQpO1xuICAgICAgICB9XG4gICAgIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgTEFZT1VUXG4gICAgRXh0ZW5kcyBub2JlYXJjc3MgbGF5b3V0XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC5sYXlvdXQtLXJldiB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICB9IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgTUVESUFcbiAgICBJbWFnZSB3aXRoIHRleHRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiAgVmFyaWFibGVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXG5cbi8qICBDb21wb25lbnRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLm1lZGlhIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9ICAgIFxuICAgICAgICBcbiAgICAgICAgLm1lZGlhX19pbWFnZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0obWluLWhlaWdodCwgJHNwYWNlKjEwKTtcbiAgICAgICAgfSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIE9GRlNFVFxuICAgIERlc2NyaXB0aW9uXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC5vZmZzZXQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgLm9mZnNldC0tdG9wLXhsIHtcbiAgICAgICAgQGluY2x1ZGUgcmVtKG1hcmdpbi1ib3R0b20sICRzcGFjZSotMyk7XG4gICAgfVxuXG5cblxuLyogIE1lZGlhIHF1ZXJpZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoZ3QtcGFsbSl7XG4gICAgICAgICBcbiAgICAgICAgLm9mZnNldC0tdG9wLXhsLS1ndC1wYWxtIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHJlbShtYXJnaW4tYm90dG9tLCAkc3BhY2UqLTMpO1xuICAgICAgICB9ICAgIFxuICAgIH0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBQWVJBTUlEXG4gICAgTGF5ZXJzIGluY3JlYXNpbmcgaW4gc2l6ZVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAucHlyYW1pZCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgY29sb3I6IGNvbG9yKGJsYW5rKTtcblxuICAgICAgICAmOmJlZm9yZSwgXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IFxuICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAgICAgdG8gYm90dG9tIHJpZ2h0LFxuICAgICAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCA1MCUsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yKGJyYW5kKSA1MCVcbiAgICAgICAgICAgICAgICApIHRvcCBsZWZ0IC8gNTAlIDEwMCUgbm8tcmVwZWF0LFxuICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAgICAgdG8gYm90dG9tIGxlZnQsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDUwJSxcbiAgICAgICAgICAgICAgICAgICAgY29sb3IoYnJhbmQpIDUwJVxuICAgICAgICAgICAgICAgICkgdG9wIHJpZ2h0IC8gNTAlIDEwMCUgbm8tcmVwZWF0O1xuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlciB7IC8vIHNoYWRvd1xuICAgICAgICAgICAgei1pbmRleDogLTI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcbiAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAgICAgICAgIHRvIGJvdHRvbSByaWdodCxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgNTAlLFxuICAgICAgICAgICAgICAgICAgICByZ2JhKCMwMDAsIC41KSA1MCVcbiAgICAgICAgICAgICAgICApIHRvcCBsZWZ0IC8gNTAlIDEwMCUgbm8tcmVwZWF0LFxuICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAgICAgdG8gYm90dG9tIGxlZnQsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDUwJSxcbiAgICAgICAgICAgICAgICAgICAgcmdiYSgjMDAwLCAuNSkgNTAlXG4gICAgICAgICAgICAgICAgKSB0b3AgcmlnaHQgLyA1MCUgMTAwJSBuby1yZXBlYXQ7XG4gICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b207XG4gICAgICAgICAgICBmaWx0ZXI6IGJsdXIoJHNwYWNlKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogXG4gICAgICAgICAgICAgICAgc2tldygtNTVkZWcpXG4gICAgICAgICAgICAgICAgc2NhbGVZKC41KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICAgICAucHlyYW1pZF9fbGF5ZXIge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IFxuICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAgICAgY29sb3IoYnJhbmQpLCBcbiAgICAgICAgICAgICAgICAgICAgY29sb3IoYnJhbmQpXG4gICAgICAgICAgICAgICAgKSBjZW50ZXIgdG9wIC8gMXB4IDEwMCUgbm8tcmVwZWF0O1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKGhlaWdodCwgJHNwYWNlKjMpO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZSAkc3BhY2Utcyk7XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YWZ0ZXIgeyAvLyBsaW5lIFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGNvbG9yKGJsYW5rKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHsgLy8gbm8gbGluZVxuXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA2IHtcblxuICAgICAgICAgICAgLnB5cmFtaWRfX2xheWVyLS0jeyRpfSB7XG5cbiAgICAgICAgICAgICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbShoZWlnaHQsICRzcGFjZSo2KTtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctdG9wLCAkc3BhY2UqNCk7ICAgICAgICBcbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBwZXJjZW50YWdlKC41IC0gJGkvMTQpO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiBwZXJjZW50YWdlKC41IC0gJGkvMTQpOyAgICBcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoKCRpKzEpLzcpO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgtKCRpKzEpLzE0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBTUVVFRVpFXG4gICAgc2lkZSBwYWRkaW5nXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogIFZhcmlhYmxlc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblxuXG4vKiAgQ29tcG9uZW50XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC5zcXVlZXplIHtcbiAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctbGVmdCwgJHNwYWNlKTtcbiAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctcmlnaHQsICRzcGFjZSk7XG4gICAgfVxuXG4gICAgLnNxdWVlemUtcyB7XG4gICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLWxlZnQsICRzcGFjZS1zKTtcbiAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctcmlnaHQsICRzcGFjZS1zKTtcbiAgICB9XG5cblxuXG4vKiAgTWVkaWEgcXVlcmllc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeShwYWxtKXtcbiAgICAgICAgIFxuICAgICAgICAuc3F1ZWV6ZS0tcGFsbSB7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZy1sZWZ0LCAkc3BhY2UpO1xuICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmctcmlnaHQsICRzcGFjZSk7XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgLnNxdWVlemUtcy0tcGFsbSB7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZy1sZWZ0LCAkc3BhY2Utcyk7XG4gICAgICAgICAgICBAaW5jbHVkZSByZW0ocGFkZGluZy1yaWdodCwgJHNwYWNlLXMpO1xuICAgICAgICB9XG4gICAgfSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIFN3aXRjaFxuICAgIEJhc2VkIG9uIHN3aXRjaC5qc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAqW2RhdGEtcm9sZT1zd2l0Y2hlZV1bZGF0YS1zdGF0ZT1wYXNzaXZlXXtcbiAgICAgICAgQGV4dGVuZCAudmlzdWFsbHloaWRkZW47XG4gICAgfSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgIE1BSU4gTUVOVVxuICAgIE1haW4gbmF2aWdhdGlvbiwgcHJlZmVyYWJseSBmaXJzdCBpbiB0aGUgSFRNTFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qICBWYXJpYWJsZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyogIENvbXBvbmVudFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAubmF2LS1tYWlue1xuICAgICAgICBmb250LXNpemU6IDA7XG5cbiAgICAgICAgLm5hdl9faXRlbSB7IH1cblxuICAgICAgICAgICAgLm5hdl9fbGluayB7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgICAgIGNvbG9yOiBjb2xvcihicmFuZCk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKCRiYXNlLWZvbnQtc2l6ZSk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZS1zICRzcGFjZSk7XG4gICAgICAgICAgICAgICAgLy8gQGluY2x1ZGUgcmVtKHBhZGRpbmcsICRzcGFjZSk7XG4gICAgICAgICAgICB9XG4gICAgfVxuXG5cblxuLyogIE1lZGlhIHF1ZXJpZXNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoZGVzayl7XG4gICAgICAgICBcbiAgICAgICAgLm5hdi0tbWFpbiB7XG5cbiAgICAgICAgICAgIC5uYXZfX2l0ZW0ge31cblxuICAgICAgICAgICAgICAgIC5uYXZfX2xpbmsge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgJHRyYW5zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gJHRyYW5zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvciAgICAgJHRyYW5zaXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMTI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb2xvcihicmFuZC1kYXJrKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJvZHlbZGF0YS1zdGF0ZT1zY3JvbGxlZF0ge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAubmF2LS1tYWluIHtcblxuICAgICAgICAgICAgICAgIC5uYXZfX2l0ZW0ge31cblxuICAgICAgICAgICAgICAgICAgICAubmF2X19saW5rIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJlbShwYWRkaW5nLCAkc3BhY2UtcyAkc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O2dGQUdnRjtBQUVoRjtnRkFDZ0Y7QUNOaEY7O2dGQUVnRjtBQUVoRjtnRkFDZ0Y7QUFlaEYsYUFBYTtBQUtiLFlBQVk7QUFHWixhQUFhO0FBS2IsVUFBVTtBQVVWLFdBQVc7QUFHWCx1QkFBdUI7QUFHdkIseUJBQXlCO0FBVXpCLFVBQVU7QUFJVixTQUFTO0FBSVQsYUFBYTtBQUdiLGFBQWE7QUFHYix3QkFBd0I7QUFJeEIsaUJBQWlCO0FBR2pCLFdBQVc7QUFHWCxZQUFZO0FBR1osbUJBQW1CO0FBSW5COztnRkFFZ0Y7QUFhaEY7O2dGQUVnRjtBQWlCaEY7O2dGQUVnRjtBQU1oRjs7Z0ZBRWdGO0FDdEloRjs7O2dGQUdnRjtBQUVoRjtnRkFDZ0Y7QUNOaEY7OztnRkFHZ0Y7QUFFaEY7Z0ZBQ2dGO0FDTmhGOzs7Z0ZBR2dGO0FBRWhGO2dGQUNnRjtBc0JPNUUsT0FBTyxDQUFDLHlFQUFJO0F0QkxmLEFBQUEsSUFBSSxDQUFDO0VBQ0osV0FBVyxFQUFFLFVBQVU7RUFBRSxPQUFPO0VBQ2hDLG9CQUFvQixFQUFFLElBQUk7RUFBRSxPQUFPO0VBQ25DLHdCQUF3QixFQUFFLElBQUk7RUFBRSxPQUFPLEVBQ3ZDOztBQUVEOztHQUVFO0FBRUYsQUFBQSxJQUFJLENBQUM7RUFDSixNQUFNLEVBQUUsQ0FBQyxHQUNUOztBQUVEOytFQUM4RTtBQUU5RTs7Ozs7R0FLRTtBQUVGLEFBQUEsT0FBTztBQUNQLEtBQUs7QUFDTCxPQUFPO0FBQ1AsVUFBVTtBQUNWLE1BQU07QUFD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 */
