@charset "UTF-8";
/*! normalize.css v4.0.0 | MIT License | github.com/necolas/normalize.css */
/**
 * 1. Change the default font family in all browsers (opinionated).
 * 2. Prevent adjustments of font size after orientation changes in IE and iOS.
 */
html {
  font-family: sans-serif; /* 1 */
  -ms-text-size-adjust: 100%; /* 2 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/**
 * Remove the margin in all browsers (opinionated).
 */
body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 * 1. Add the correct display in Edge, IE, and Firefox.
 * 2. Add the correct display in IE.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
main,
menu,
nav,
section,
summary { /* 1 */
  display: block;
}

/**
 * Add the correct display in IE 9-.
 */
audio,
canvas,
progress,
video {
  display: inline-block;
}

/**
 * Add the correct display in iOS 4-7.
 */
audio:not([controls]) {
  display: none;
  height: 0;
}

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  vertical-align: baseline;
}

/**
 * Add the correct display in IE 10-.
 * 1. Add the correct display in IE.
 */
template,
[hidden] {
  display: none;
}

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

/**
 * Remove the outline on focused links when they are also active or hovered
 * in all browsers (opinionated).
 */
a:active,
a:hover {
  outline-width: 0;
}

/* Text-level semantics
   ========================================================================== */
/**
 * 1. Remove the bottom border in Firefox 39-.
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */
abbr[title] {
  border-bottom: none; /* 1 */
  text-decoration: underline; /* 2 */
  text-decoration: underline dotted; /* 2 */
}

/**
 * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
 */
b,
strong {
  font-weight: inherit;
}

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */
b,
strong {
  font-weight: bolder;
}

/**
 * Add the correct font style in Android 4.3-.
 */
dfn {
  font-style: italic;
}

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/**
 * Add the correct background and color in IE 9-.
 */
mark {
  background-color: #ff0;
  color: #000;
}

/**
 * Add the correct font size in all browsers.
 */
small {
  font-size: 80%;
}

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

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/* Embedded content
   ========================================================================== */
/**
 * Remove the border on images inside links in IE 10-.
 */
img {
  border-style: none;
}

/**
 * Hide the overflow in IE.
 */
svg:not(:root) {
  overflow: hidden;
}

/* Grouping content
   ========================================================================== */
/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
code,
kbd,
pre,
samp {
  font-family: monospace, monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/**
 * Add the correct margin in IE 8.
 */
figure {
  margin: 1em 40px;
}

/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */
hr {
  box-sizing: content-box; /* 1 */
  height: 0; /* 1 */
  overflow: visible; /* 2 */
}

/* Forms
   ========================================================================== */
/**
 * Change font properties to `inherit` in all browsers (opinionated).
 */
button,
input,
select,
textarea {
  font: inherit;
}

/**
 * Restore the font weight unset by the previous rule.
 */
optgroup {
  font-weight: bold;
}

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 * 2. Show the overflow in Edge, Firefox, and IE.
 */
button,
input,
select { /* 2 */
  overflow: visible;
}

/**
 * Remove the margin in Safari.
 * 1. Remove the margin in Firefox and Safari.
 */
button,
input,
select,
textarea { /* 1 */
  margin: 0;
}

/**
 * Remove the inheritence of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritence of text transform in Firefox.
 */
button,
select { /* 1 */
  text-transform: none;
}

/**
 * Change the cursor in all browsers (opinionated).
 */
button,
[type=button],
[type=reset],
[type=submit] {
  cursor: pointer;
}

/**
 * Restore the default cursor to disabled elements unset by the previous rule.
 */
[disabled] {
  cursor: default;
}

/**
 * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
 *    controls in Android 4.
 * 2. Correct the inability to style clickable types in iOS.
 */
button,
html [type=button],
[type=reset],
[type=submit] {
  -webkit-appearance: button; /* 2 */
}

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

/**
 * Restore the focus styles unset by the previous rule.
 */
button:-moz-focusring,
input:-moz-focusring {
  outline: 1px dotted ButtonText;
}

/**
 * Change the border, margin, and padding in all browsers (opinionated).
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */
legend {
  box-sizing: border-box; /* 1 */
  color: inherit; /* 2 */
  display: table; /* 1 */
  max-width: 100%; /* 1 */
  padding: 0; /* 3 */
  white-space: normal; /* 1 */
}

/**
 * Remove the default vertical scrollbar in IE.
 */
textarea {
  overflow: auto;
}

/**
 * 1. Add the correct box sizing in IE 10-.
 * 2. Remove the padding in IE 10-.
 */
[type=checkbox],
[type=radio] {
  box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */
[type=number]::-webkit-inner-spin-button,
[type=number]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * Correct the odd appearance of search inputs in Chrome and Safari.
 */
[type=search] {
  -webkit-appearance: textfield;
}

/**
 * Remove the inner padding and cancel buttons in Chrome on OS X and
 * Safari on OS X.
 */
[type=search]::-webkit-search-cancel-button,
[type=search]::-webkit-search-decoration {
  -webkit-appearance: none;
}

@font-face {
  font-family: "muliextrabold";
  src: url("../fonts/muli-extrabold-webfont.woff2") format("woff2"), url("../fonts/muli-extrabold-webfont.woff") format("woff");
  font-weight: normal;
  font-style: normal;
}
@font-face {
  font-family: "muliregular";
  src: url("../fonts/muli-regular-webfont.woff2") format("woff2"), url("../fonts/muli-regular-webfont.woff") format("woff");
  font-weight: normal;
  font-style: normal;
}
body {
  font-family: "Muli", Tahoma, Verdana, Segoe, sans-serif;
  font-weight: 300;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: "Muli", Tahoma, Verdana, Segoe, sans-serif;
  font-weight: normal;
}

#mapImplantations .implantationWindows a, .button, header .lien-retour, .diapo_mobile .slide .texte a, #prestationsHome .diapo .slide .texte a, #actualitesHome > .titre a, #diaporama .slide .position a, #footer > .position .share, .item-infos a.item-readmore, label {
  font-family: "Muli", Tahoma, Verdana, Segoe, sans-serif;
  font-weight: normal;
}

@font-face {
  font-family: "icons";
  font-style: normal;
  font-weight: normal;
  src: url("../fonts/icons.eot");
  src: url("../fonts/icons.eot?#iefix") format("eot"), url("../fonts/icons.woff") format("woff"), url("../fonts/icons.ttf") format("truetype"), url("../fonts/icons.svg#icons") format("svg");
}
.breadcrumb li:first-child a:before, .icon-home:before, .icon-printer:before, .icon-placeholder-violet:before, .icon-placeholder-vert:before, .icon-placeholder-orange:before, .icon-placeholder-jaune:before, .icon-placeholder-bleu:before, .icon-viadeo-logo:before, .icon-left-arrow:before, .icon-printer-tool:before, .icon-network:before, .icon-mail-send:before, .icon-lecture:before, .icon-twitter-logo-silhouette:before, .icon-target-concentric-circles-symbol:before, .icon-smartphone-call:before, .icon-right-arrow:before, .icon-placeholder:before, .icon-phone-call:before, .icon-linkedin-logo:before, .icon-google-plus:before, .icon-facebook-logo:before, .icon-envelope:before {
  position: relative;
  display: inline-block;
  font-family: "icons";
  font-style: normal;
  font-variant: normal;
  line-height: 1em;
  margin-left: 0.2em;
  margin-right: 0.2em;
  speak: none;
  text-align: center;
  text-decoration: inherit;
  text-transform: none;
  width: 1em;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
}

.icon-envelope:before {
  content: "\ea01";
}

.icon-facebook-logo:before {
  content: "\ea02";
}

.icon-google-plus:before {
  content: "\ea03";
}

.icon-linkedin-logo:before {
  content: "\ea04";
}

.icon-phone-call:before {
  content: "\ea05";
}

.icon-placeholder:before {
  content: "\ea06";
}

.icon-right-arrow:before {
  content: "\ea07";
}

.icon-smartphone-call:before {
  content: "\ea08";
}

.icon-target-concentric-circles-symbol:before {
  content: "\ea09";
}

.icon-twitter-logo-silhouette:before {
  content: "\ea0a";
}

.icon-lecture:before {
  content: "\ea0b";
}

.icon-mail-send:before {
  content: "\ea0c";
}

.icon-network:before {
  content: "\ea0d";
}

.icon-printer-tool:before {
  content: "\ea0e";
}

.icon-left-arrow:before {
  content: "\ea0f";
}

.icon-viadeo-logo:before {
  content: "\ea10";
}

.icon-placeholder-bleu:before {
  content: "\ea11";
}

.icon-placeholder-jaune:before {
  content: "\ea12";
}

.icon-placeholder-orange:before {
  content: "\ea13";
}

.icon-placeholder-vert:before {
  content: "\ea14";
}

.icon-placeholder-violet:before {
  content: "\ea15";
}

.icon-printer:before {
  content: "\ea16";
}

.breadcrumb li:first-child a:before, .icon-home:before {
  content: "\ea17";
}

/**
* SassQueries
* Manage media-queries in Sass easily.
*
* @author     Samuel Marchal (zessx)
* @version    0.3
*/
body:before {
  bottom: 37px;
}

#cookiesplease {
  z-index: 1000000;
  background-color: #480d56;
}
#cookiesplease p {
  text-align: right;
}
#cookiesplease .cookiesplease-accept {
  color: #ffffff;
  background: none;
  border: 2px solid #ffffff;
  text-transform: uppercase;
}

/* Preload images */
body:after {
  content: url(/themes/custom/vhmfonderie/public/images/close.png) url(/themes/custom/vhmfonderie/public/images/loading.gif) url(/themes/custom/vhmfonderie/public/images/prev.png) url(/themes/custom/vhmfonderie/public/images/next.png);
  display: none;
}

body.lb-disable-scrolling {
  overflow: hidden;
}

.lightboxOverlay {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 9999;
  background-color: black;
  /*  filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=80);*/
  opacity: 0.8;
  display: none;
}

.lightbox {
  position: absolute;
  left: 0;
  width: 100%;
  z-index: 10000;
  text-align: center;
  line-height: 0;
  font-weight: custom/vhmfonderiel;
}

.lightbox .lb-image {
  display: block;
  height: auto;
  max-width: inherit;
  max-height: none;
  /* Image border */
  border: 4px solid white;
}

.lightbox a img {
  border: none;
}

.lb-outerContainer {
  position: relative;
  *zoom: 1;
  width: 250px;
  height: 250px;
  margin: 0 auto;
  /* Background color behind image.
   This is visible during transitions. */
  background-color: white;
}

.lb-outerContainer:after {
  content: "";
  display: table;
  clear: both;
}

.lb-loader {
  position: absolute;
  top: 43%;
  left: 0;
  height: 25%;
  width: 100%;
  text-align: center;
  line-height: 0;
}

.lb-cancel {
  display: block;
  width: 32px;
  height: 32px;
  margin: 0 auto;
  background: url(/themes/custom/vhmfonderie/public/images/loading.gif) no-repeat;
}

.lb-nav {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  z-index: 10;
}

.lb-container > .nav {
  left: 0;
}

.lb-nav a {
  outline: none;
  background-image: url("data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");
}

.lb-prev,
.lb-next {
  height: 100%;
  cursor: pointer;
  display: block;
}

.lb-nav a.lb-prev {
  width: 34%;
  left: 0;
  float: left;
  background: url(/themes/custom/vhmfonderie/public/images/prev.png) left 48% no-repeat;
  /*  filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=0); */
  opacity: 0;
  -webkit-transition: opacity 0.6s;
  -moz-transition: opacity 0.6s;
  -o-transition: opacity 0.6s;
  transition: opacity 0.6s;
}

.lb-nav a.lb-prev:hover {
  /*    filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=100);*/
  opacity: 1;
}

.lb-nav a.lb-next {
  width: 64%;
  right: 0;
  float: right;
  background: url(/themes/custom/vhmfonderie/public/images/next.png) right 48% no-repeat;
  /*   filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=0); */
  opacity: 0;
  -webkit-transition: opacity 0.6s;
  -moz-transition: opacity 0.6s;
  -o-transition: opacity 0.6s;
  transition: opacity 0.6s;
}

.lb-nav a.lb-next:hover {
  /*   filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=100); */
  opacity: 1;
}

.lb-dataContainer {
  margin: 0 auto;
  padding-top: 5px;
  *zoom: 1;
  width: 100%;
}

.lb-dataContainer:after {
  content: "";
  display: table;
  clear: both;
}

.lb-data {
  padding: 0 4px;
  color: #ccc;
}

.lb-data .lb-details {
  width: 85%;
  float: left;
  text-align: left;
  line-height: 1.1em;
}

.lb-data .lb-caption {
  text-transform: uppercase;
  font-size: 13px;
  color: #ffffff;
}

.lb-data .lb-number {
  display: block;
  clear: left;
  padding-bottom: 1em;
  font-size: 12px;
  color: #999999;
}

.lb-data .lb-close {
  display: block;
  float: right;
  width: 30px;
  height: 30px;
  background: url(/themes/custom/vhmfonderie/public/images/close.png) top right no-repeat;
  text-align: right;
  outline: none;
  /*  filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=70); */
  opacity: 0.7;
  -webkit-transition: opacity 0.2s;
  -moz-transition: opacity 0.2s;
  -o-transition: opacity 0.2s;
  transition: opacity 0.2s;
}

.lb-data .lb-close:hover {
  cursor: pointer;
  /*  filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=100);*/
  opacity: 1;
}

/* Slider */
.slick-slider {
  position: relative;
  display: block;
  box-sizing: border-box;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -ms-touch-action: pan-y;
  touch-action: pan-y;
  -webkit-tap-highlight-color: transparent;
}

.slick-list {
  position: relative;
  overflow: hidden;
  display: block;
  margin: 0;
  padding: 0;
}
.slick-list:focus {
  outline: none;
}
.slick-list.dragging {
  cursor: pointer;
  cursor: hand;
}

.slick-slider .slick-track,
.slick-slider .slick-list {
  -webkit-transform: translate3d(0, 0, 0);
  -moz-transform: translate3d(0, 0, 0);
  -ms-transform: translate3d(0, 0, 0);
  -o-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
}

.slick-track {
  position: relative;
  left: 0;
  top: 0;
  display: block;
}
.slick-track:before, .slick-track:after {
  content: "";
  display: table;
}
.slick-track:after {
  clear: both;
}
.slick-loading .slick-track {
  visibility: hidden;
}

.slick-slide {
  float: left;
  height: 100%;
  min-height: 1px;
}
[dir=rtl] .slick-slide {
  float: right;
}
.slick-slide img {
  display: block;
}
.slick-slide.slick-loading img {
  display: none;
}
.slick-slide {
  display: none;
}
.slick-slide.dragging img {
  pointer-events: none;
}
.slick-initialized .slick-slide {
  display: block;
}
.slick-loading .slick-slide {
  visibility: hidden;
}
.slick-vertical .slick-slide {
  display: block;
  height: auto;
  border: 1px solid transparent;
}

.slick-arrow.slick-hidden {
  display: none;
}

/*!
 * animate.css -http://daneden.me/animate
 * Version - 3.5.2
 * Licensed under the MIT license - http://opensource.org/licenses/MIT
 *
 * Copyright (c) 2017 Daniel Eden
 */
.animated {
  animation-duration: 1s;
  animation-fill-mode: both;
}

.animated.infinite {
  animation-iteration-count: infinite;
}

.animated.hinge {
  animation-duration: 2s;
}

.animated.flipOutX,
.animated.flipOutY,
.animated.bounceIn,
.animated.bounceOut {
  animation-duration: 0.75s;
}

@keyframes bounce {
  from, 20%, 53%, 80%, to {
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    transform: translate3d(0, 0, 0);
  }
  40%, 43% {
    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    transform: translate3d(0, -30px, 0);
  }
  70% {
    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    transform: translate3d(0, -15px, 0);
  }
  90% {
    transform: translate3d(0, -4px, 0);
  }
}
.bounce {
  animation-name: bounce;
  transform-origin: center bottom;
}

@keyframes flash {
  from, 50%, to {
    opacity: 1;
  }
  25%, 75% {
    opacity: 0;
  }
}
.flash {
  animation-name: flash;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@keyframes pulse {
  from {
    transform: scale3d(1, 1, 1);
  }
  50% {
    transform: scale3d(1.05, 1.05, 1.05);
  }
  to {
    transform: scale3d(1, 1, 1);
  }
}
.pulse {
  animation-name: pulse;
}

@keyframes rubberBand {
  from {
    transform: scale3d(1, 1, 1);
  }
  30% {
    transform: scale3d(1.25, 0.75, 1);
  }
  40% {
    transform: scale3d(0.75, 1.25, 1);
  }
  50% {
    transform: scale3d(1.15, 0.85, 1);
  }
  65% {
    transform: scale3d(0.95, 1.05, 1);
  }
  75% {
    transform: scale3d(1.05, 0.95, 1);
  }
  to {
    transform: scale3d(1, 1, 1);
  }
}
.rubberBand {
  animation-name: rubberBand;
}

@keyframes shake {
  from, to {
    transform: translate3d(0, 0, 0);
  }
  10%, 30%, 50%, 70%, 90% {
    transform: translate3d(-10px, 0, 0);
  }
  20%, 40%, 60%, 80% {
    transform: translate3d(10px, 0, 0);
  }
}
.shake {
  animation-name: shake;
}

@keyframes headShake {
  0% {
    transform: translateX(0);
  }
  6.5% {
    transform: translateX(-6px) rotateY(-9deg);
  }
  18.5% {
    transform: translateX(5px) rotateY(7deg);
  }
  31.5% {
    transform: translateX(-3px) rotateY(-5deg);
  }
  43.5% {
    transform: translateX(2px) rotateY(3deg);
  }
  50% {
    transform: translateX(0);
  }
}
.headShake {
  animation-timing-function: ease-in-out;
  animation-name: headShake;
}

@keyframes swing {
  20% {
    transform: rotate3d(0, 0, 1, 15deg);
  }
  40% {
    transform: rotate3d(0, 0, 1, -10deg);
  }
  60% {
    transform: rotate3d(0, 0, 1, 5deg);
  }
  80% {
    transform: rotate3d(0, 0, 1, -5deg);
  }
  to {
    transform: rotate3d(0, 0, 1, 0deg);
  }
}
.swing {
  transform-origin: top center;
  animation-name: swing;
}

@keyframes tada {
  from {
    transform: scale3d(1, 1, 1);
  }
  10%, 20% {
    transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
  }
  30%, 50%, 70%, 90% {
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  }
  40%, 60%, 80% {
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  }
  to {
    transform: scale3d(1, 1, 1);
  }
}
.tada {
  animation-name: tada;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@keyframes wobble {
  from {
    transform: none;
  }
  15% {
    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  }
  30% {
    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  }
  45% {
    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  }
  60% {
    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  }
  75% {
    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  }
  to {
    transform: none;
  }
}
.wobble {
  animation-name: wobble;
}

@keyframes jello {
  from, 11.1%, to {
    transform: none;
  }
  22.2% {
    transform: skewX(-12.5deg) skewY(-12.5deg);
  }
  33.3% {
    transform: skewX(6.25deg) skewY(6.25deg);
  }
  44.4% {
    transform: skewX(-3.125deg) skewY(-3.125deg);
  }
  55.5% {
    transform: skewX(1.5625deg) skewY(1.5625deg);
  }
  66.6% {
    transform: skewX(-0.78125deg) skewY(-0.78125deg);
  }
  77.7% {
    transform: skewX(0.390625deg) skewY(0.390625deg);
  }
  88.8% {
    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
  }
}
.jello {
  animation-name: jello;
  transform-origin: center;
}

@keyframes bounceIn {
  from, 20%, 40%, 60%, 80%, to {
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  0% {
    opacity: 0;
    transform: scale3d(0.3, 0.3, 0.3);
  }
  20% {
    transform: scale3d(1.1, 1.1, 1.1);
  }
  40% {
    transform: scale3d(0.9, 0.9, 0.9);
  }
  60% {
    opacity: 1;
    transform: scale3d(1.03, 1.03, 1.03);
  }
  80% {
    transform: scale3d(0.97, 0.97, 0.97);
  }
  to {
    opacity: 1;
    transform: scale3d(1, 1, 1);
  }
}
.bounceIn {
  animation-name: bounceIn;
}

@keyframes bounceInDown {
  from, 60%, 75%, 90%, to {
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  0% {
    opacity: 0;
    transform: translate3d(0, -3000px, 0);
  }
  60% {
    opacity: 1;
    transform: translate3d(0, 25px, 0);
  }
  75% {
    transform: translate3d(0, -10px, 0);
  }
  90% {
    transform: translate3d(0, 5px, 0);
  }
  to {
    transform: none;
  }
}
.bounceInDown {
  animation-name: bounceInDown;
}

@keyframes bounceInLeft {
  from, 60%, 75%, 90%, to {
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  0% {
    opacity: 0;
    transform: translate3d(-3000px, 0, 0);
  }
  60% {
    opacity: 1;
    transform: translate3d(25px, 0, 0);
  }
  75% {
    transform: translate3d(-10px, 0, 0);
  }
  90% {
    transform: translate3d(5px, 0, 0);
  }
  to {
    transform: none;
  }
}
.bounceInLeft {
  animation-name: bounceInLeft;
}

@keyframes bounceInRight {
  from, 60%, 75%, 90%, to {
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  from {
    opacity: 0;
    transform: translate3d(3000px, 0, 0);
  }
  60% {
    opacity: 1;
    transform: translate3d(-25px, 0, 0);
  }
  75% {
    transform: translate3d(10px, 0, 0);
  }
  90% {
    transform: translate3d(-5px, 0, 0);
  }
  to {
    transform: none;
  }
}
.bounceInRight {
  animation-name: bounceInRight;
}

@keyframes bounceInUp {
  from, 60%, 75%, 90%, to {
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  from {
    opacity: 0;
    transform: translate3d(0, 3000px, 0);
  }
  60% {
    opacity: 1;
    transform: translate3d(0, -20px, 0);
  }
  75% {
    transform: translate3d(0, 10px, 0);
  }
  90% {
    transform: translate3d(0, -5px, 0);
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}
.bounceInUp {
  animation-name: bounceInUp;
}

@keyframes bounceOut {
  20% {
    transform: scale3d(0.9, 0.9, 0.9);
  }
  50%, 55% {
    opacity: 1;
    transform: scale3d(1.1, 1.1, 1.1);
  }
  to {
    opacity: 0;
    transform: scale3d(0.3, 0.3, 0.3);
  }
}
.bounceOut {
  animation-name: bounceOut;
}

@keyframes bounceOutDown {
  20% {
    transform: translate3d(0, 10px, 0);
  }
  40%, 45% {
    opacity: 1;
    transform: translate3d(0, -20px, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(0, 2000px, 0);
  }
}
.bounceOutDown {
  animation-name: bounceOutDown;
}

@keyframes bounceOutLeft {
  20% {
    opacity: 1;
    transform: translate3d(20px, 0, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(-2000px, 0, 0);
  }
}
.bounceOutLeft {
  animation-name: bounceOutLeft;
}

@keyframes bounceOutRight {
  20% {
    opacity: 1;
    transform: translate3d(-20px, 0, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(2000px, 0, 0);
  }
}
.bounceOutRight {
  animation-name: bounceOutRight;
}

@keyframes bounceOutUp {
  20% {
    transform: translate3d(0, -10px, 0);
  }
  40%, 45% {
    opacity: 1;
    transform: translate3d(0, 20px, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(0, -2000px, 0);
  }
}
.bounceOutUp {
  animation-name: bounceOutUp;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
.fadeIn {
  animation-name: fadeIn;
}

@keyframes fadeInDown {
  from {
    opacity: 0;
    transform: translate3d(0, -100%, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.fadeInDown {
  animation-name: fadeInDown;
}

@keyframes fadeInDownBig {
  from {
    opacity: 0;
    transform: translate3d(0, -2000px, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.fadeInDownBig {
  animation-name: fadeInDownBig;
}

@keyframes fadeInLeft {
  from {
    opacity: 0;
    transform: translate3d(-100px, 0, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.fadeInLeft {
  animation-name: fadeInLeft;
}

@keyframes fadeInLeftBig {
  from {
    opacity: 0;
    transform: translate3d(-2000px, 0, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.fadeInLeftBig {
  animation-name: fadeInLeftBig;
}

@keyframes fadeInRight {
  from {
    opacity: 0;
    transform: translate3d(100px, 0, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.fadeInRight {
  animation-name: fadeInRight;
}

@keyframes fadeInRightBig {
  from {
    opacity: 0;
    transform: translate3d(2000px, 0, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.fadeInRightBig {
  animation-name: fadeInRightBig;
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.fadeInUp {
  animation-name: fadeInUp;
}

@keyframes fadeInUpBig {
  from {
    opacity: 0;
    transform: translate3d(0, 2000px, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.fadeInUpBig {
  animation-name: fadeInUpBig;
}

@keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
.fadeOut {
  animation-name: fadeOut;
}

@keyframes fadeOutDown {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
  }
}
.fadeOutDown {
  animation-name: fadeOutDown;
}

@keyframes fadeOutDownBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translate3d(0, 2000px, 0);
  }
}
.fadeOutDownBig {
  animation-name: fadeOutDownBig;
}

@keyframes fadeOutLeft {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translate3d(-100%, 0, 0);
  }
}
.fadeOutLeft {
  animation-name: fadeOutLeft;
}

@keyframes fadeOutLeftBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translate3d(-2000px, 0, 0);
  }
}
.fadeOutLeftBig {
  animation-name: fadeOutLeftBig;
}

@keyframes fadeOutRight {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translate3d(100%, 0, 0);
  }
}
.fadeOutRight {
  animation-name: fadeOutRight;
}

@keyframes fadeOutRightBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translate3d(2000px, 0, 0);
  }
}
.fadeOutRightBig {
  animation-name: fadeOutRightBig;
}

@keyframes fadeOutUp {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translate3d(0, -100%, 0);
  }
}
.fadeOutUp {
  animation-name: fadeOutUp;
}

@keyframes fadeOutUpBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translate3d(0, -2000px, 0);
  }
}
.fadeOutUpBig {
  animation-name: fadeOutUpBig;
}

@keyframes flip {
  from {
    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
    animation-timing-function: ease-out;
  }
  40% {
    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
    animation-timing-function: ease-out;
  }
  50% {
    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
    animation-timing-function: ease-in;
  }
  80% {
    transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
    animation-timing-function: ease-in;
  }
  to {
    transform: perspective(400px);
    animation-timing-function: ease-in;
  }
}
.animated.flip {
  -webkit-backface-visibility: visible;
  backface-visibility: visible;
  animation-name: flip;
}

@keyframes flipInX {
  from {
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    animation-timing-function: ease-in;
    opacity: 0;
  }
  40% {
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    animation-timing-function: ease-in;
  }
  60% {
    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    opacity: 1;
  }
  80% {
    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  }
  to {
    transform: perspective(400px);
  }
}
.flipInX {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  animation-name: flipInX;
}

@keyframes flipInY {
  from {
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    animation-timing-function: ease-in;
    opacity: 0;
  }
  40% {
    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    animation-timing-function: ease-in;
  }
  60% {
    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    opacity: 1;
  }
  80% {
    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  }
  to {
    transform: perspective(400px);
  }
}
.flipInY {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  animation-name: flipInY;
}

@keyframes flipOutX {
  from {
    transform: perspective(400px);
  }
  30% {
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    opacity: 1;
  }
  to {
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    opacity: 0;
  }
}
.flipOutX {
  animation-name: flipOutX;
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
}

@keyframes flipOutY {
  from {
    transform: perspective(400px);
  }
  30% {
    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    opacity: 1;
  }
  to {
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    opacity: 0;
  }
}
.flipOutY {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  animation-name: flipOutY;
}

@keyframes lightSpeedIn {
  from {
    transform: translate3d(100%, 0, 0) skewX(-30deg);
    opacity: 0;
  }
  60% {
    transform: skewX(20deg);
    opacity: 1;
  }
  80% {
    transform: skewX(-5deg);
    opacity: 1;
  }
  to {
    transform: none;
    opacity: 1;
  }
}
.lightSpeedIn {
  animation-name: lightSpeedIn;
  animation-timing-function: ease-out;
}

@keyframes lightSpeedOut {
  from {
    opacity: 1;
  }
  to {
    transform: translate3d(100%, 0, 0) skewX(30deg);
    opacity: 0;
  }
}
.lightSpeedOut {
  animation-name: lightSpeedOut;
  animation-timing-function: ease-in;
}

@keyframes rotateIn {
  from {
    transform-origin: center;
    transform: rotate3d(0, 0, 1, -200deg);
    opacity: 0;
  }
  to {
    transform-origin: center;
    transform: none;
    opacity: 1;
  }
}
.rotateIn {
  animation-name: rotateIn;
}

@keyframes rotateInDownLeft {
  from {
    transform-origin: left bottom;
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
  to {
    transform-origin: left bottom;
    transform: none;
    opacity: 1;
  }
}
.rotateInDownLeft {
  animation-name: rotateInDownLeft;
}

@keyframes rotateInDownRight {
  from {
    transform-origin: right bottom;
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
  to {
    transform-origin: right bottom;
    transform: none;
    opacity: 1;
  }
}
.rotateInDownRight {
  animation-name: rotateInDownRight;
}

@keyframes rotateInUpLeft {
  from {
    transform-origin: left bottom;
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
  to {
    transform-origin: left bottom;
    transform: none;
    opacity: 1;
  }
}
.rotateInUpLeft {
  animation-name: rotateInUpLeft;
}

@keyframes rotateInUpRight {
  from {
    transform-origin: right bottom;
    transform: rotate3d(0, 0, 1, -90deg);
    opacity: 0;
  }
  to {
    transform-origin: right bottom;
    transform: none;
    opacity: 1;
  }
}
.rotateInUpRight {
  animation-name: rotateInUpRight;
}

@keyframes rotateOut {
  from {
    transform-origin: center;
    opacity: 1;
  }
  to {
    transform-origin: center;
    transform: rotate3d(0, 0, 1, 200deg);
    opacity: 0;
  }
}
.rotateOut {
  animation-name: rotateOut;
}

@keyframes rotateOutDownLeft {
  from {
    transform-origin: left bottom;
    opacity: 1;
  }
  to {
    transform-origin: left bottom;
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
}
.rotateOutDownLeft {
  animation-name: rotateOutDownLeft;
}

@keyframes rotateOutDownRight {
  from {
    transform-origin: right bottom;
    opacity: 1;
  }
  to {
    transform-origin: right bottom;
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}
.rotateOutDownRight {
  animation-name: rotateOutDownRight;
}

@keyframes rotateOutUpLeft {
  from {
    transform-origin: left bottom;
    opacity: 1;
  }
  to {
    transform-origin: left bottom;
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}
.rotateOutUpLeft {
  animation-name: rotateOutUpLeft;
}

@keyframes rotateOutUpRight {
  from {
    transform-origin: right bottom;
    opacity: 1;
  }
  to {
    transform-origin: right bottom;
    transform: rotate3d(0, 0, 1, 90deg);
    opacity: 0;
  }
}
.rotateOutUpRight {
  animation-name: rotateOutUpRight;
}

@keyframes hinge {
  0% {
    transform-origin: top left;
    animation-timing-function: ease-in-out;
  }
  20%, 60% {
    transform: rotate3d(0, 0, 1, 80deg);
    transform-origin: top left;
    animation-timing-function: ease-in-out;
  }
  40%, 80% {
    transform: rotate3d(0, 0, 1, 60deg);
    transform-origin: top left;
    animation-timing-function: ease-in-out;
    opacity: 1;
  }
  to {
    transform: translate3d(0, 700px, 0);
    opacity: 0;
  }
}
.hinge {
  animation-name: hinge;
}

@keyframes jackInTheBox {
  from {
    opacity: 0;
    transform: scale(0.1) rotate(30deg);
    transform-origin: center bottom;
  }
  50% {
    transform: rotate(-10deg);
  }
  70% {
    transform: rotate(3deg);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
.jackInTheBox {
  animation-name: jackInTheBox;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@keyframes rollIn {
  from {
    opacity: 0;
    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.rollIn {
  animation-name: rollIn;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@keyframes rollOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  }
}
.rollOut {
  animation-name: rollOut;
}

@keyframes zoomIn {
  from {
    opacity: 0;
    transform: scale3d(0.3, 0.3, 0.3);
  }
  50% {
    opacity: 1;
  }
}
.zoomIn {
  animation-name: zoomIn;
}

@keyframes zoomInDown {
  from {
    opacity: 0;
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomInDown {
  animation-name: zoomInDown;
}

@keyframes zoomInLeft {
  from {
    opacity: 0;
    transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomInLeft {
  animation-name: zoomInLeft;
}

@keyframes zoomInRight {
  from {
    opacity: 0;
    transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomInRight {
  animation-name: zoomInRight;
}

@keyframes zoomInUp {
  from {
    opacity: 0;
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomInUp {
  animation-name: zoomInUp;
}

@keyframes zoomOut {
  from {
    opacity: 1;
  }
  50% {
    opacity: 0;
    transform: scale3d(0.3, 0.3, 0.3);
  }
  to {
    opacity: 0;
  }
}
.zoomOut {
  animation-name: zoomOut;
}

@keyframes zoomOutDown {
  40% {
    opacity: 1;
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  to {
    opacity: 0;
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
    transform-origin: center bottom;
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomOutDown {
  animation-name: zoomOutDown;
}

@keyframes zoomOutLeft {
  40% {
    opacity: 1;
    transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
  }
  to {
    opacity: 0;
    transform: scale(0.1) translate3d(-2000px, 0, 0);
    transform-origin: left center;
  }
}
.zoomOutLeft {
  animation-name: zoomOutLeft;
}

@keyframes zoomOutRight {
  40% {
    opacity: 1;
    transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
  }
  to {
    opacity: 0;
    transform: scale(0.1) translate3d(2000px, 0, 0);
    transform-origin: right center;
  }
}
.zoomOutRight {
  animation-name: zoomOutRight;
}

@keyframes zoomOutUp {
  40% {
    opacity: 1;
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  to {
    opacity: 0;
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
    transform-origin: center bottom;
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomOutUp {
  animation-name: zoomOutUp;
}

@keyframes slideInDown {
  from {
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}
.slideInDown {
  animation-name: slideInDown;
}

@keyframes slideInLeft {
  from {
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}
.slideInLeft {
  animation-name: slideInLeft;
}

@keyframes slideInRight {
  from {
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}
.slideInRight {
  animation-name: slideInRight;
}

@keyframes slideInUp {
  from {
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}
.slideInUp {
  animation-name: slideInUp;
}

@keyframes slideOutDown {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(0, 100%, 0);
  }
}
.slideOutDown {
  animation-name: slideOutDown;
}

@keyframes slideOutLeft {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(-100%, 0, 0);
  }
}
.slideOutLeft {
  animation-name: slideOutLeft;
}

@keyframes slideOutRight {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(100%, 0, 0);
  }
}
.slideOutRight {
  animation-name: slideOutRight;
}

@keyframes slideOutUp {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(0, -100%, 0);
  }
}
.slideOutUp {
  animation-name: slideOutUp;
}

::selection {
  color: #ffffff;
  background: #480d56;
}

.icon-right-arrow:before {
  top: 0.2em;
}

#pushFoot #node-other .container .liste_push li .item-readmore i,
#pushFoot #node-list .container .liste_push li .item-readmore i, .diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile.active .infos_mobile, .diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile.active, .diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile:hover, .diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile .infos_mobile h2:before, .diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile .infos_mobile, .diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile, .diapo_mobile .active, #prestationsHome .gears .infos, #prestationsHome .gears:after, #prestationsHome .gears, #prestationsHome .diapo .slide.active, #prestationsHome .diapo .slide .visuel, #actualitesHome > .titre h2:after, #diaporama ul.slick-dots li button:before, .scrollToTop, #block-menufooterde ul > li a,
#block-menufooteren ul > li a,
#block-menufooter ul > li a, .breadcrumb a, .menu-trigger .intituleMenu, .menu-trigger, #header .position .skew-bg, #header .position, #header, .socialHeader .secondary_menu li:first-child:hover .dropdown_sites,
.socialHeader .secondary_menu li.drop:hover .dropdown_sites, .socialHeader .secondary_menu li:first-child:hover,
.socialHeader .secondary_menu li.drop:hover, .socialHeader .secondary_menu li li:hover a, .socialHeader .secondary_menu li, label, input[type=text],
input[type=email],
input[type=number],
input[type=tel],
input[type=password],
select,
textarea, #pushs .overlay:before, .overlay:before, #mapImplantations .implantationWindows a i, .button i, header .lien-retour i, .diapo_mobile .slide .texte a i, #prestationsHome .diapo .slide .texte a i, #actualitesHome > .titre a i, #diaporama .slide .position a i, #footer > .position .share i, .item-infos a.item-readmore i, label i, #pushQualite .container a i, #prestationsHome .diapo .slide .texte a i, .button, header .lien-retour, .diapo_mobile .slide .texte a, #prestationsHome .diapo .slide .texte a, #actualitesHome > .titre a, #diaporama .slide .position a, .item-infos a.item-readmore, #header .social a, h1:before,
.container h3:before,
.push h3:before,
h2:before,
#prestationsHome .gears.active .infos:before {
  transition: all 0.4s ease-out;
}

article > header .positionH1, #prestationsHome #diaporamaPrestations, #diaporama .slide .position, #header .position {
  position: relative;
  width: 100vw;
  padding: 0 100px;
}
@media all and (max-width: 1280px) {
  article > header .positionH1, #prestationsHome #diaporamaPrestations, #diaporama .slide .position, #header .position {
    padding: 0 50px;
  }
}
@media all and (max-width: 1100px) {
  article > header .positionH1, #prestationsHome #diaporamaPrestations, #diaporama .slide .position, #header .position {
    padding: 0 25px;
  }
}

#block-menufooterde ul li:not(:last-child):after,
#block-menufooteren ul li:not(:last-child):after,
#block-menufooter ul li:not(:last-child):after, #header .scroll_menu > ul > li:not(:last-child):after {
  content: "";
  height: 12px;
  width: 2px;
  background-color: #480d56;
  position: relative;
  display: inline-block;
  transform: skewX(22deg);
  margin-left: 10px;
}

h1:before,
.container h3:before,
.push h3:before,
h2:before,
#prestationsHome .gears.active .infos:before {
  content: "";
  height: 38px;
  width: 13px;
  display: inline-block;
  transform: skewX(22deg);
}

h1:before {
  background-color: #ffffff;
  position: relative;
  margin-right: 10px;
}

.container h3:before, .push h3:before, h2:before {
  background-color: #480d56;
  position: relative;
  margin-right: 10px;
  top: 15px;
}

#prestationsHome .gears.active .infos:before {
  background-color: #ffffff;
  position: absolute;
  top: 10px;
  left: 80px;
  opacity: 0;
  animation: opacitySkew 400ms linear;
  animation-fill-mode: forwards;
  animation-delay: 400ms;
}

.button:hover, header .lien-retour:hover, .diapo_mobile .slide .texte a:hover, #prestationsHome .diapo .slide .texte a:hover, #actualitesHome > .titre a:hover, #diaporama .slide .position a:hover, .item-infos a.item-readmore:hover, #header .social a:hover {
  opacity: 0.5;
}

#pushQualite .container a:hover i, .diapo_mobile .slide .texte a:hover i, #prestationsHome .diapo .slide .texte a:hover i, #actualitesHome > .titre a:hover i, #diaporama .slide .position a:hover i, .item-infos a.item-readmore:hover i {
  padding-left: 10px;
}

#mapImplantations .implantationWindows a, .button, header .lien-retour, .diapo_mobile .slide .texte a, #prestationsHome .diapo .slide .texte a, #actualitesHome > .titre a, #diaporama .slide .position a, #footer > .position .share, .item-infos a.item-readmore, label {
  cursor: pointer;
  font-size: 12px;
  text-transform: uppercase;
  font-weight: 900;
}
#mapImplantations .implantationWindows a i, .button i, header .lien-retour i, .diapo_mobile .slide .texte a i, #prestationsHome .diapo .slide .texte a i, #actualitesHome > .titre a i, #diaporama .slide .position a i, #footer > .position .share i, .item-infos a.item-readmore i, label i {
  opacity: 0.5;
}

article > header, .cycle_concept .container_concept .liste_concept .even .block_conception .visuel_concept, .cycle_concept .container_concept .liste_concept .odd .block_conception .visuel_concept, #prestationsHome .diapo .slide .visuel, #diaporama .slide, #produits .listing #node-list .container ul li .visuel_produits, .item-visuel {
  overflow: hidden;
  position: relative;
}
article > header img, .cycle_concept .container_concept .liste_concept .even .block_conception .visuel_concept img, .cycle_concept .container_concept .liste_concept .odd .block_conception .visuel_concept img, #prestationsHome .diapo .slide .visuel img, #diaporama .slide img, #produits .listing #node-list .container ul li .visuel_produits img, .item-visuel img {
  position: relative;
  width: 100%;
  height: 100%;
  object-fit: cover;
  font-family: "object-fit: cover";
  z-index: 1;
}

.contain {
  object-fit: contain;
  font-family: "object-fit: contain";
}

#actualitesHome > .titre {
  background: linear-gradient(to right, #480d56 0%, #4f2686 100%);
}

.item-visuel .overlay-gradient {
  background: linear-gradient(to top, rgb(0, 0, 0) 0%, rgba(0, 0, 0, 0) 72%, rgba(0, 0, 0, 0) 100%);
}

.overlay img {
  position: relative;
  z-index: 1;
}
@media screen and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  .overlay img {
    min-width: 200%;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 100%;
    height: auto;
  }
}
@media all and (max-width: 680px) {
  .overlay img {
    min-width: 100%;
  }
}
@media screen and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  .overlay .img_concept {
    min-width: 0;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: auto !important;
    height: 100%;
    max-width: none;
  }
}
.overlay:before {
  content: "";
  height: 100%;
  width: 175px;
  top: 0;
  z-index: 10;
  right: 87.5px;
  display: inline-block;
  transform: skewX(22deg);
  background-color: rgba(255, 255, 255, 0.15);
  position: absolute;
}

.visuel_concept .overlay img {
  min-width: 0%;
}

.overlay .over {
  position: relative;
  z-index: 1;
}
.overlay:before {
  content: "";
  height: 100%;
  width: 175px;
  top: 0;
  z-index: 10;
  right: 87.5px;
  display: inline-block;
  transform: skewX(22deg);
  background-color: rgba(255, 255, 255, 0.15);
  position: absolute;
}

#pushs .overlay a {
  position: relative;
  z-index: 1;
}
#pushs .overlay:before {
  content: "";
  height: 100%;
  width: 175px;
  top: 0;
  z-index: 10;
  right: 87.5px;
  display: inline-block;
  transform: skewX(22deg);
  background-color: rgba(255, 255, 255, 0.15);
  position: absolute;
}

* {
  box-sizing: border-box;
}

html {
  font-family: Arial, sans-serif;
  overflow-x: hidden;
}

body {
  height: 100%;
}
body.cke_editable {
  padding: 1em;
}
body.is-open {
  overflow: hidden;
}

ul,
ol {
  list-style: none;
  padding: 0;
  line-height: 1.7em;
}

p {
  margin: 0;
  line-height: 1.7em;
}

figure {
  margin: 0;
}

img,
input {
  max-width: 100%;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: normal;
}

h2,
h3 {
  font-weight: normal;
}
@media all and (max-width: 1100px) {
  h2,
  h3 {
    text-align: center;
  }
}

h1 {
  font-size: 55px;
  margin: 25px 0;
  line-height: 120%;
}
@media all and (max-width: 680px) {
  h1 {
    font-size: 45px;
  }
}

h2 {
  font-size: 20px;
  text-transform: uppercase;
  margin: 40px 0;
  align-items: baseline;
  line-height: 120%;
}
@media all and (max-width: 450px) {
  h2 {
    line-height: 185%;
  }
}

h3 {
  font-size: 16px;
  margin: 0.7em 0;
}

a {
  color: inherit;
  text-decoration: none;
}
a:hover, a:focus {
  text-decoration: none;
}

blockquote {
  position: relative;
  border-left: 0.2em solid #480d56;
  margin-top: 3em;
  margin-bottom: 3em;
  padding-left: 1em;
  font-weight: 100;
  font-style: italic;
}

.relative {
  position: relative;
}

@keyframes move {
  0% {
    transform: translate(-50%, 0%);
  }
  100% {
    transform: translate(0%, 0%);
  }
}
@keyframes colorChange {
  0% {
    background: #480d56;
  }
  100% {
    background: #ffffff;
  }
}
@keyframes opacitySkew {
  0% {
    opacity: 0;
    transform: skewX(0deg);
  }
  100% {
    opacity: 1;
    transform: skewX(22deg);
  }
}
@keyframes opacity {
  0% {
    opacity: 0;
    display: none;
  }
  0% {
    opacity: 0;
    display: none;
  }
  100% {
    opacity: 1;
    display: inline;
  }
}
@keyframes line-top-in {
  0% {
    left: -5px;
    bot: 0;
    transform: rotate(-45deg);
  }
  20% {
    left: -5px;
    bot: 0;
    transform: rotate(-60deg);
  }
  80% {
    left: 0;
    bot: 0;
    transform: rotate(15deg);
  }
  100% {
    left: 0;
    bot: 1px;
    transform: rotate(0deg);
  }
}
@keyframes line-top-out {
  0% {
    left: 0;
    top: 0;
    transform: rotate(0deg);
  }
  20% {
    left: 0;
    top: 0;
    transform: rotate(15deg);
  }
  80% {
    left: -5px;
    top: 0;
    transform: rotate(-60deg);
  }
  100% {
    left: -5px;
    top: 1px;
    transform: rotate(-45deg);
  }
}
@keyframes line-bot-in {
  0% {
    left: -5px;
    transform: rotate(45deg);
  }
  20% {
    left: -5px;
    bot: 0;
    transform: rotate(60deg);
  }
  80% {
    left: 0;
    bot: 0;
    transform: rotate(-15deg);
  }
  100% {
    left: 0;
    transform: rotate(0deg);
  }
}
@keyframes line-bot-out {
  0% {
    left: 0;
    transform: rotate(0deg);
  }
  20% {
    left: 0;
    transform: rotate(-15deg);
  }
  80% {
    left: -5px;
    transform: rotate(60deg);
  }
  100% {
    left: -5px;
    transform: rotate(45deg);
  }
}
@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  20% {
    opacity: 0.1;
  }
  80% {
    opacity: 0.7;
  }
  100% {
    opacity: 1;
  }
}
@keyframes fadeOut {
  0% {
    opacity: 1;
  }
  20% {
    opacity: 0.7;
  }
  80% {
    opacity: 0.1;
  }
  100% {
    opacity: 0;
  }
}
@keyframes menuIn {
  0%, 5% {
    opacity: 0;
    width: 0%;
  }
  50% {
    opacity: 1;
  }
  100% {
    width: 100%;
  }
}
@keyframes menuOut {
  0%, 5% {
    opacity: 1;
    width: 100%;
  }
  95% {
    opacity: 0;
  }
  100% {
    width: 0%;
  }
}
.push .col-container .container,
.node-content .position .col-container {
  display: flex;
  flex-wrap: wrap;
  width: calc(100% + 25px);
}
.push .col-container .container:after,
.node-content .position .col-container:after {
  content: "";
  display: block;
  clear: both;
}
.push .col-container .container,
.node-content .position .col-container {
  margin: 0;
  flex-direction: row;
  height: 100%;
}
@media all and (max-width: 1100px) {
  .push .col-container .container,
  .node-content .position .col-container {
    width: 100%;
  }
}
.push .col-container .container.col2 .col ul,
.push .col-container .container.col2 .col h1,
.push .col-container .container.col2 .col h2,
.push .col-container .container.col2 .col h3,
.push .col-container .container.col2 .col h4,
.push .col-container .container.col2 .col h5,
.node-content .position .col-container.col2 .col ul,
.node-content .position .col-container.col2 .col h1,
.node-content .position .col-container.col2 .col h2,
.node-content .position .col-container.col2 .col h3,
.node-content .position .col-container.col2 .col h4,
.node-content .position .col-container.col2 .col h5 {
  width: 100%;
}
.push .col-container .container.col2 .col,
.node-content .position .col-container.col2 .col {
  display: block;
  width: calc(1 * 100% / 2 - 25px);
  margin: 12.5px;
  flex-direction: column;
}
@media all and (max-width: 1100px) {
  .push .col-container .container.col2 .col,
  .node-content .position .col-container.col2 .col {
    width: calc(2 * 100% / 2 - 25px);
    margin: 12.5px;
  }
}
@media all and (max-width: 680px) {
  .push .col-container .container.col2 .col,
  .node-content .position .col-container.col2 .col {
    width: calc(1 * 100% / 1 - 0px);
    margin: 0px;
  }
}
.push .col-container .container.col3 .col ul,
.push .col-container .container.col3 .col h1,
.push .col-container .container.col3 .col h2,
.push .col-container .container.col3 .col h3,
.push .col-container .container.col3 .col h4,
.push .col-container .container.col3 .col h5,
.node-content .position .col-container.col3 .col ul,
.node-content .position .col-container.col3 .col h1,
.node-content .position .col-container.col3 .col h2,
.node-content .position .col-container.col3 .col h3,
.node-content .position .col-container.col3 .col h4,
.node-content .position .col-container.col3 .col h5 {
  width: 100%;
}
.push .col-container .container.col3 .col,
.node-content .position .col-container.col3 .col {
  width: calc(1 * 100% / 3 - 25px);
  margin: 12.5px;
  flex-direction: column;
}
@media all and (max-width: 1100px) {
  .push .col-container .container.col3 .col,
  .node-content .position .col-container.col3 .col {
    width: calc(3 * 100% / 3 - 25px);
    margin: 12.5px;
  }
}
@media all and (max-width: 680px) {
  .push .col-container .container.col3 .col,
  .node-content .position .col-container.col3 .col {
    width: calc(1 * 100% / 1 - 0px);
    margin: 0px;
  }
}

.modal {
  display: none;
  position: fixed;
  left: 0;
  top: 0;
  height: 100%;
  width: 100%;
  background-color: rgba(0, 0, 0, 0.6);
  z-index: 99999;
  overflow: hidden;
}
.modal .close {
  color: white;
  position: absolute;
  top: 0;
  right: 0;
  width: calc(3 * 25px);
  padding: 25px;
  font-size: 25px;
  line-height: 25px;
  font-weight: bold;
  transition: 0.3s ease;
  text-shadow: 0 0 3px #333;
  text-align: center;
  z-index: 99;
}
.modal .close:hover {
  color: #480d56;
  text-decoration: none;
  cursor: pointer;
}
.modal .mySlides {
  display: none;
}
.modal #prev,
.modal #next {
  cursor: pointer;
  position: absolute;
  top: 50%;
  width: calc(3 * 25px);
  padding: 25px;
  font-size: 25px;
  line-height: 25px;
  margin-top: -50px;
  color: white;
  font-weight: bold;
  transition: 0.3s ease;
  border-radius: 0 3px 3px 0;
  text-shadow: 0 0 3px #333;
  user-select: none;
  text-align: center;
}
@media all and (max-width: 680px) {
  .modal #prev,
  .modal #next {
    padding: 25px 15px;
  }
}
.modal #prev:after,
.modal #next:after {
  display: none !important;
}
.modal #prev:hover,
.modal #next:hover {
  color: #480d56;
}
.modal #prev {
  left: 0;
}
@media all and (max-width: 680px) {
  .modal #prev {
    left: -15px;
  }
}
.modal #next {
  right: 0;
}
@media all and (max-width: 680px) {
  .modal #next {
    right: -15px;
  }
}
.modal .modal-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin: auto;
  width: 60%;
  height: calc(100% - 2 * 25px);
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  -webkit-animation-name: animatetop;
  -webkit-animation-duration: 0.4s;
  animation-name: animatetop;
  animation-duration: 0.4s;
}
.modal .modal-content .mySlides {
  height: 100%;
  width: 100%;
  text-align: center;
}
.modal .modal-content .mySlides .labelProduits {
  z-index: 1000;
  background: #480d56;
  position: absolute;
  width: 100%;
  bottom: 0;
  height: 100px;
  line-height: 100px;
}
.modal .modal-content .mySlides .labelProduits h3 {
  color: white;
}
.modal .modal-content .mySlides img {
  transform: translateY(-50%);
  margin-top: 50vh;
  width: 42%;
}
@media all and (max-width: 1100px) {
  .modal .modal-content .mySlides img {
    margin-top: 50vh;
    max-height: 75%;
    width: 80%;
  }
}
@media all and (max-width: 680px) {
  .modal .modal-content .mySlides img {
    height: auto;
  }
}
.modal.modal-gallery .modal-content {
  display: block;
  width: 100%;
  height: 100%;
  background: #333;
}
@-webkit-keyframes animatetop {
  from {
    top: -300px;
    opacity: 0;
  }
  to {
    top: 0;
    opacity: 1;
  }
}
@keyframes animatetop {
  from {
    top: -300px;
    opacity: 0;
  }
  to {
    top: 0;
    opacity: 1;
  }
}
.modal .modal-header {
  position: relative;
  padding: 25px;
  color: white;
  background: #333;
}
.modal .modal-body {
  padding: 0 25px 25px;
  background: #333;
}
.modal .numbertext {
  display: none;
}

.caption-container {
  text-align: center;
  background-color: black;
  padding: 2px 16px;
  color: white;
}

/***********************************
************************************

GALERIE

************************************
***********************************/
.gallery {
  width: calc(1 * (100% - (4 - 1) * 25px) / 4 + (1 - 1) * 25px);
  margin-right: 25px;
}
.gallery:nth-child(4n+4) {
  margin-right: 0px;
}
.gallery {
  position: relative;
  overflow: hidden;
  margin-bottom: 25px;
  display: flex;
}
.gallery img {
  display: block;
  width: auto;
  min-width: 100%;
  padding: 0;
}
@media all and (max-width: 1280px) {
  .gallery {
    width: calc(1 * (100% - (2 - 1) * 25px) / 2 + (1 - 1) * 25px);
    margin-right: 25px;
  }
  .gallery:nth-child(2n+2) {
    margin-right: 0px;
  }
}
@media all and (max-width: 1100px) {
  .gallery {
    width: calc(1 * (100% - (1 - 1) * 0) / 1 + (1 - 1) * 0);
    margin-right: 0;
  }
  .gallery:nth-child(1n+1) {
    margin-right: 0px;
  }
  .gallery {
    height: 400px;
  }
  .gallery img {
    min-height: 400px;
  }
}

.lightbox-gallery {
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
  width: 100%;
  padding: 0 0;
  margin-top: 25px;
}
.lightbox-gallery div {
  position: relative;
  overflow: hidden;
  margin-bottom: 25px;
}
.lightbox-gallery div img {
  display: block;
  width: auto;
  min-width: 100%;
  padding: 0;
}
@media all and (max-width: 1100px) {
  .lightbox-gallery div {
    width: calc(1 * (100% - (1 - 1) * 0) / 1 + (1 - 1) * 0);
    margin-right: 0;
  }
  .lightbox-gallery div:nth-child(1n+1) {
    margin-right: 0px;
  }
  .lightbox-gallery div {
    height: 400px;
  }
  .lightbox-gallery div img {
    min-height: 400px;
  }
}

.form-item,
.form-textarea-wrapper,
form {
  width: 100%;
}

input[type=text],
input[type=email],
input[type=number],
input[type=tel],
input[type=password],
select,
textarea {
  height: 50px;
  background-color: #ffffff;
  outline: none;
  border: 1px solid #480d56;
  color: #aaa;
  padding: 15px;
  width: 100%;
}

input:hover,
input:active,
input:focus {
  border-color: #6a525c;
}

textarea {
  min-height: 300px;
  height: auto;
}

button[type=submit],
input[type=submit] {
  color: #ffffff;
  background-color: #480d56;
  min-height: 75px;
  font-size: 12px !important;
  text-transform: uppercase;
  border: none;
  padding: 0;
  margin: 0;
  outline: none;
  width: calc(1 * (100% - (3 - 1) * 0) / 3 + (1 - 1) * 0);
  margin-right: 0;
}
button[type=submit]:nth-child(3n+3),
input[type=submit]:nth-child(3n+3) {
  margin-right: 0px;
}
@media all and (max-width: 680px) {
  button[type=submit],
  input[type=submit] {
    width: calc(1 * (100% - (1 - 1) * 0) / 1 + (1 - 1) * 0);
    margin-right: 0;
  }
  button[type=submit]:nth-child(1n+1),
  input[type=submit]:nth-child(1n+1) {
    margin-right: 0px;
  }
}

.form-managed-file input[type=submit] {
  background-color: #858585;
  color: #ffffff;
  height: 25px;
  min-height: 25px;
  padding: 0 15px;
  text-transform: lowercase;
  font-size: 12px !important;
  margin-top: 4px;
  width: 60px;
}

.form-actions {
  margin-bottom: 0;
}

form .description {
  padding-top: 15px;
  font-style: italic;
}

.field--name-field-messagekey {
  display: none;
}

.messages--status {
  color: #ffffff;
  background-color: green;
  border: none;
  background-image: none;
  box-shadow: none;
  position: fixed;
  bottom: 0;
  width: 100%;
  left: 0;
  z-index: 10000;
  height: auto;
}

#user-login-form {
  margin: auto;
  width: 50vw;
  margin-left: 25vw;
}
@media all and (max-width: 1280px) {
  #user-login-form {
    width: 80vw;
    margin-left: 10vw;
  }
}
@media all and (max-width: 1100px) {
  #user-login-form {
    width: 100%;
    margin-left: 0;
    padding: 0 25px;
  }
}

.js-form-managed-file .messages {
  display: none !important;
}

#tarteaucitronRoot #tarteaucitronAlertBig {
  top: auto !important;
  bottom: 0 !important;
}
#tarteaucitronRoot #tarteaucitronAlertBig a {
  text-decoration: underline;
}

#tarteaucitronRoot #tarteaucitronAlertSmall {
  right: 70px !important;
  bottom: 12px !important;
}

#tarteaucitronRoot #tarteaucitronInfo {
  text-align: left !important;
}
#tarteaucitronRoot #tarteaucitronInfo a {
  font-size: 16px !important;
}
#tarteaucitronRoot #tarteaucitronInfo .underlined {
  color: white;
  text-decoration: underline;
}

#tarteaucitronRoot #tarteaucitronDisclaimerAlert {
  margin-bottom: 1em;
}

#tarteaucitronRoot #tarteaucitronAlertBig {
  position: fixed;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: auto;
}

#donnees-personnelles {
  margin-top: -55px;
  padding-top: calc(55px + 1.33em);
}

.socialHeader {
  background-color: #515153;
  position: relative;
  padding: 15px 100px;
}
@media all and (max-width: 1100px) {
  .socialHeader {
    display: none;
  }
}
.socialHeader .secondary_menu {
  margin: 0;
  display: flex;
  text-align: right;
  justify-content: flex-end;
}
.socialHeader .secondary_menu .txt {
  margin-right: 25px;
  position: relative;
}
.socialHeader .secondary_menu .langue-switcher {
  margin-left: 25px;
  position: relative;
}
.socialHeader .secondary_menu .langue-switcher a {
  text-transform: uppercase;
  font-weight: bold;
}
.socialHeader .secondary_menu li li:hover a {
  color: white;
}
.socialHeader .secondary_menu li .dropdown_sites {
  width: 150%;
  top: 30px;
  position: absolute;
  padding: 5px 0;
  display: none;
  z-index: 9999;
  background: #515153;
  text-align: left;
}
.socialHeader .secondary_menu li .dropdown_sites li {
  border-bottom: 1px solid grey;
  padding: 5px;
}
.socialHeader .secondary_menu li .dropdown_sites li:last-child {
  border-bottom: none;
}
.socialHeader .secondary_menu li .dropdown_sites li:first-child {
  background-color: #858585;
  color: white;
}
.socialHeader .secondary_menu li .dropdown_sites li:hover {
  background-color: #858585;
}
.socialHeader .secondary_menu li .dropdown_sites:before {
  content: "";
  position: absolute;
  top: -10px;
  height: 10px;
  width: 100%;
}
.socialHeader .secondary_menu li:first-child:hover .dropdown_sites,
.socialHeader .secondary_menu li.drop:hover .dropdown_sites {
  display: block;
}

#header {
  position: absolute;
  top: 75px;
  padding: 0 100px;
  width: 100%;
  display: flex;
  justify-content: center;
  z-index: 1000;
}
#header .skew-bg {
  box-shadow: 5px 5px 7px 0 rgba(0, 0, 0, 0.2) !important;
}
#header.navBarOpen {
  position: fixed;
  top: 0;
  padding: 0;
}
#header.navBarOpen .skew-bg {
  box-shadow: 5px 5px 7px 0 rgba(0, 0, 0, 0.2) !important;
  transform: skew(0deg) !important;
}
#header.navBarOpen .v-header {
  display: none;
}
#header.navBarOpen .position {
  left: 0;
  width: 100%;
  padding: 0 50px;
}
@media all and (max-width: 1100px) {
  #header.navBarOpen .position {
    padding: 5px 25px;
  }
}
@media all and (max-width: 1100px) {
  #header.navBarClose .position {
    left: 0;
    width: 100%;
    padding: 5px 25px;
  }
}
@media all and (max-width: 1500px) {
  #header {
    padding: 0 10px;
  }
}
@media all and (max-width: 1100px) {
  #header {
    top: 0;
    padding: 0;
    width: 100%;
    left: 0px;
  }
}
#header .v-header {
  display: block;
  height: 150px;
  width: 122px;
  margin: -18px auto auto 0;
}
@media all and (max-width: 1100px) {
  #header .v-header {
    display: none;
  }
}
#header .position {
  display: flex;
  height: 75px;
  width: calc(100% + 50px);
  position: relative;
  left: -55px;
  justify-content: space-between;
  align-items: center;
  padding: 0 0 0 50px;
}
@media all and (max-width: 1500px) {
  #header .position {
    padding: 0 0 0 25px;
  }
}
@media all and (max-width: 1100px) {
  #header .position {
    padding: 5px 25px;
    left: 0px;
  }
}
#header .position #logo {
  width: 115px;
}
#header .position .skew-bg {
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
  height: inherit;
  width: inherit;
  transform: skewX(22deg);
  background-color: #ffffff;
}
@media all and (max-width: 1100px) {
  #header .position .skew-bg {
    transform: skew(0deg);
  }
}
#header .social a {
  color: #858585;
}
@media all and (max-width: 1212px) {
  #header .social a {
    display: none;
  }
}
#header .social a:not(:last-child) {
  padding-right: 5px;
}

/****************************
*****************************

WAVES

*****************************
****************************/
.waves {
  width: 100vw;
  height: 200px;
  top: calc(60vh - 105px);
  position: absolute;
  overflow: hidden;
}
@media all and (max-width: 680px) {
  .waves {
    display: none;
  }
}
@media all and (max-width: 1100px) {
  .waves {
    top: calc(80vh - 160px);
  }
}
@media (max-width: 1100px) and (-ms-high-contrast: none), (max-width: 1100px) and (-ms-high-contrast: active) {
  .waves {
    top: calc(60vh - 160px);
  }
}
.waves .wave {
  width: 100vw;
  height: 100%;
  z-index: 10;
  display: block;
  position: absolute;
}
.waves .wave image {
  background-size: cover;
}

@media all and (max-width: 1100px) {
  .path-frontpage .waves {
    top: calc(80vh - 160px);
  }
}
@media (max-width: 1100px) and (-ms-high-contrast: none), (max-width: 1100px) and (-ms-high-contrast: active) {
  .path-frontpage .waves {
    top: calc(80vh - 160px);
  }
}

/***********************************
************************************

MENU TRIGGER

************************************
***********************************/
.menu-trigger {
  right: 25px;
  top: 10px;
  height: 40px;
  display: flex;
  z-index: 11000;
  position: fixed;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0 10px;
}
.menu-trigger .trigger-bg {
  position: absolute;
  height: 100%;
  width: 100%;
  left: 0;
  top: 0;
  z-index: -1;
  background-color: #480d56;
  transform: skewX(22deg);
}
@media all and (min-width: 1099px) {
  .menu-trigger {
    display: none;
  }
}
.menu-trigger:hover .intituleMenu {
  color: rgba(255, 255, 255, 0.5);
}
.menu-trigger .intituleMenu {
  position: relative;
  padding-right: 10px;
  color: #ffffff;
  text-transform: uppercase;
  font-size: 12px;
  font-weight: 300;
}
.menu-trigger .triggers {
  position: relative;
  height: 20px;
  width: 25px;
}
.menu-trigger .triggers .line-top,
.menu-trigger .triggers .line-middle,
.menu-trigger .triggers .line-bottom {
  position: absolute;
  display: block;
  height: 3px;
  background: #ffffff;
}
.menu-trigger .triggers .line-top {
  top: 0;
  width: 25px;
  transform-origin: 24px 2px;
}
.menu-trigger .triggers .line-middle {
  top: 8px;
  opacity: 0.6;
  width: 17px;
  transition: opacity 200ms linear;
}
.menu-trigger .triggers .line-bottom {
  bottom: 0;
  width: 25px;
  opacity: 0.35;
  transform-origin: 23px 2px;
}
.is-open .menu-trigger span .line-top {
  margin-left: 1px;
  animation: line-top-out 600ms linear normal;
  animation-fill-mode: forwards;
  animation-delay: 0;
}
.is-open .menu-trigger span .line-middle {
  opacity: 0;
}
.is-open .menu-trigger span .line-bottom {
  margin-left: 1px;
  opacity: 1;
  animation: line-bot-out 600ms linear normal;
  animation-fill-mode: forwards;
  animation-delay: 0;
}
.is-closed .menu-trigger span .line-top {
  animation: line-top-in 600ms linear normal;
  animation-fill-mode: forwards;
  animation-delay: 0;
}
.is-closed .menu-trigger span .line-middle {
  transition-delay: 200ms;
}
.is-closed .menu-trigger span .line-bottom {
  animation: line-bot-in 600ms linear normal;
  animation-fill-mode: forwards;
  animation-delay: 0;
}

.breadcrumb {
  padding-bottom: 0.5em;
  position: relative;
  z-index: 100;
  width: 50vw;
  font-size: 13px;
  margin-bottom: 25px;
  margin-left: 25vw;
}
@media all and (max-width: 1280px) {
  .breadcrumb {
    width: 80vw;
    margin-left: 10vw;
  }
}
@media all and (max-width: 1100px) {
  .breadcrumb {
    width: 100vw;
    margin-left: 0;
    padding: 0 25px;
  }
}
@media all and (max-width: 680px) {
  .breadcrumb {
    width: 100vw;
    margin-left: 0;
    padding: 25px;
  }
}
.breadcrumb li:first-child a {
  font-size: 0px;
}
.breadcrumb li:first-child a:before {
  position: relative;
  top: 1px;
  font-size: 13px;
}
.breadcrumb li:not(:first-of-type):before {
  content: "-" !important;
  opacity: 0.65;
}
.breadcrumb a {
  opacity: 0.65;
}
.breadcrumb a:hover {
  color: #480d56;
  opacity: 1;
}

.listing,
#listing {
  position: relative;
  margin-left: auto;
  margin-right: auto;
  background-size: cover;
}
@media all and (max-width: 1100px) {
  .listing,
  #listing {
    padding: 0 50px;
  }
}
@media all and (max-width: 680px) {
  .listing,
  #listing {
    padding: 0 25px;
  }
}
.listing #ajax-callback #node-list,
#listing #ajax-callback #node-list {
  padding: 0;
}
.listing #ajax-callback #node-list h2,
#listing #ajax-callback #node-list h2 {
  padding: 25px 0;
}
.listing #ajax-callback #node-list #pagination,
#listing #ajax-callback #node-list #pagination {
  margin-top: 25px;
}
.listing #node-content .container,
#listing #node-content .container {
  width: 60vw;
  margin-left: 20vw;
  margin-bottom: 0;
}
.listing #node-list,
.listing #node-other,
#listing #node-list,
#listing #node-other {
  padding: 25px 0;
}
.listing #node-list h2,
.listing #node-other h2,
#listing #node-list h2,
#listing #node-other h2 {
  margin: 0;
}
.listing #node-list .actu_title,
.listing #node-other .actu_title,
#listing #node-list .actu_title,
#listing #node-other .actu_title {
  text-align: center;
}
.listing #node-list .container,
.listing #node-other .container,
#listing #node-list .container,
#listing #node-other .container {
  width: 60vw;
  margin-left: 20vw;
  margin-bottom: 0;
}
@media all and (max-width: 1280px) {
  .listing #node-list .container,
  .listing #node-other .container,
  #listing #node-list .container,
  #listing #node-other .container {
    width: 80vw;
    margin-left: 10vw;
  }
}
@media all and (max-width: 1100px) {
  .listing #node-list .container,
  .listing #node-other .container,
  #listing #node-list .container,
  #listing #node-other .container {
    width: 100%;
    margin: 0;
    padding: 0;
  }
}
.listing #node-list .container a,
.listing #node-other .container a,
#listing #node-list .container a,
#listing #node-other .container a {
  box-shadow: none;
}
.listing #node-list .container .liste_presta,
.listing #node-other .container .liste_presta,
#listing #node-list .container .liste_presta,
#listing #node-other .container .liste_presta {
  display: flex;
  flex-wrap: wrap;
}
.listing #node-list .container .liste_presta > li,
.listing #node-other .container .liste_presta > li,
#listing #node-list .container .liste_presta > li,
#listing #node-other .container .liste_presta > li {
  height: 90px;
}
.listing #node-list .container .liste_presta > li > .logo,
.listing #node-other .container .liste_presta > li > .logo,
#listing #node-list .container .liste_presta > li > .logo,
#listing #node-other .container .liste_presta > li > .logo {
  align-self: center;
  z-index: 3;
}
.listing #node-list .container .liste_presta > li,
.listing #node-other .container .liste_presta > li,
#listing #node-list .container .liste_presta > li,
#listing #node-other .container .liste_presta > li {
  position: relative;
  width: calc(1 * 100% / 3 - 25px);
  margin: 12.5px;
  margin: 12.5px;
  list-style: none;
  margin-top: 0;
  background: #AAAFF8;
  padding: 10px 25px;
  display: flex;
  justify-content: space-between;
}
.listing #node-list .container .liste_presta > li .item-infos,
.listing #node-other .container .liste_presta > li .item-infos,
#listing #node-list .container .liste_presta > li .item-infos,
#listing #node-other .container .liste_presta > li .item-infos {
  display: block;
}
.listing #node-list .container .liste_presta > li h3,
.listing #node-other .container .liste_presta > li h3,
#listing #node-list .container .liste_presta > li h3,
#listing #node-other .container .liste_presta > li h3 {
  text-align: left;
  margin-left: 0;
}
.listing #node-list .container .liste_presta > li a,
.listing #node-other .container .liste_presta > li a,
#listing #node-list .container .liste_presta > li a,
#listing #node-other .container .liste_presta > li a {
  color: white;
  box-shadow: none;
  padding: 0;
}
.listing #node-list .container .liste_presta > li h3:before,
.listing #node-other .container .liste_presta > li h3:before,
#listing #node-list .container .liste_presta > li h3:before,
#listing #node-other .container .liste_presta > li h3:before {
  content: none;
}
@media all and (max-width: 1100px) {
  .listing #node-list .container .liste_presta > li,
  .listing #node-other .container .liste_presta > li,
  #listing #node-list .container .liste_presta > li,
  #listing #node-other .container .liste_presta > li {
    width: calc(1 * 100% / 2 - 25px);
    margin: 12.5px;
    margin-bottom: 25px;
  }
}
@media all and (max-width: 680px) {
  .listing #node-list .container .liste_presta > li,
  .listing #node-other .container .liste_presta > li,
  #listing #node-list .container .liste_presta > li,
  #listing #node-other .container .liste_presta > li {
    width: calc(2 * 100% / 2 - 0);
    margin: 0;
    margin-bottom: 25px;
  }
}
.listing #node-list .container .liste_presta .active:before,
.listing #node-other .container .liste_presta .active:before,
#listing #node-list .container .liste_presta .active:before,
#listing #node-other .container .liste_presta .active:before {
  content: "";
  position: absolute;
  z-index: 0;
  top: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  background: #888cc6;
  opacity: 1;
  left: 0;
}
.listing #node-list .container .liste_domaine,
.listing #node-other .container .liste_domaine,
#listing #node-list .container .liste_domaine,
#listing #node-other .container .liste_domaine {
  margin-bottom: 12.5px;
}
.listing #node-list .container .liste_domaine > li,
.listing #node-other .container .liste_domaine > li,
#listing #node-list .container .liste_domaine > li,
#listing #node-other .container .liste_domaine > li {
  height: 335px;
  cursor: pointer;
  width: calc(50% - 25px);
  padding: 25px;
  background-size: cover;
}
@media all and (max-width: 1100px) {
  .listing #node-list .container .liste_domaine > li,
  .listing #node-other .container .liste_domaine > li,
  #listing #node-list .container .liste_domaine > li,
  #listing #node-other .container .liste_domaine > li {
    padding: 0;
  }
}
@media all and (max-width: 680px) {
  .listing #node-list .container .liste_domaine > li,
  .listing #node-other .container .liste_domaine > li,
  #listing #node-list .container .liste_domaine > li,
  #listing #node-other .container .liste_domaine > li {
    padding: 0;
    width: 100%;
  }
}
.listing #node-list .container ul,
.listing #node-other .container ul,
#listing #node-list .container ul,
#listing #node-other .container ul {
  left: -12.5px;
  position: relative;
  display: flex;
  flex-wrap: wrap;
  width: 100%;
  list-style: none;
}
@media all and (max-width: 1100px) {
  .listing #node-list .container ul,
  .listing #node-other .container ul,
  #listing #node-list .container ul,
  #listing #node-other .container ul {
    flex-wrap: wrap;
    justify-content: space-between;
  }
}
.listing #node-list .container ul,
.listing #node-other .container ul,
#listing #node-list .container ul,
#listing #node-other .container ul {
  display: flex;
  flex-wrap: wrap;
  width: calc(100% + 25px);
}
.listing #node-list .container ul:after,
.listing #node-other .container ul:after,
#listing #node-list .container ul:after,
#listing #node-other .container ul:after {
  content: "";
  display: block;
  clear: both;
}
.listing #node-list .container ul,
.listing #node-other .container ul,
#listing #node-list .container ul,
#listing #node-other .container ul {
  margin: 0;
}
.listing #node-list .container ul .presta_liste,
.listing #node-other .container ul .presta_liste,
#listing #node-list .container ul .presta_liste,
#listing #node-other .container ul .presta_liste {
  position: relative;
}
.listing #node-list .container ul .presta_liste .item-infos,
.listing #node-other .container ul .presta_liste .item-infos,
#listing #node-list .container ul .presta_liste .item-infos,
#listing #node-other .container ul .presta_liste .item-infos {
  padding: 0;
}
.listing #node-list .container ul li,
.listing #node-other .container ul li,
#listing #node-list .container ul li,
#listing #node-other .container ul li {
  position: relative;
  width: calc(33.33333% - 25px);
  margin: 12.5px;
  height: 225px;
  list-style: none;
}
@media all and (max-width: 1100px) {
  .listing #node-list .container ul li,
  .listing #node-other .container ul li,
  #listing #node-list .container ul li,
  #listing #node-other .container ul li {
    margin: 0;
    width: calc(1 * 100% / 2 - 25px);
    margin: 12.5px;
  }
}
@media all and (max-width: 680px) {
  .listing #node-list .container ul li,
  .listing #node-other .container ul li,
  #listing #node-list .container ul li,
  #listing #node-other .container ul li {
    width: calc(2 * 100% / 2 - 0);
    margin: 0;
    margin-bottom: 25px;
  }
}
.listing #node-list .container ul li a,
.listing #node-other .container ul li a,
#listing #node-list .container ul li a,
#listing #node-other .container ul li a {
  color: white;
  box-shadow: none;
}
.listing #node-list .container ul li .item-infos h3,
.listing #node-other .container ul li .item-infos h3,
#listing #node-list .container ul li .item-infos h3,
#listing #node-other .container ul li .item-infos h3 {
  text-align: left;
  margin: 0;
}
.listing #node-list .container ul li .item-infos h3:before,
.listing #node-other .container ul li .item-infos h3:before,
#listing #node-list .container ul li .item-infos h3:before,
#listing #node-other .container ul li .item-infos h3:before {
  content: none;
}
.listing #node-list .container ul li .item-infos .label_domaine,
.listing #node-other .container ul li .item-infos .label_domaine,
#listing #node-list .container ul li .item-infos .label_domaine,
#listing #node-other .container ul li .item-infos .label_domaine {
  width: 100%;
  position: relative;
}
.listing #node-list .container ul li .item-infos .label_domaine h3,
.listing #node-other .container ul li .item-infos .label_domaine h3,
#listing #node-list .container ul li .item-infos .label_domaine h3,
#listing #node-other .container ul li .item-infos .label_domaine h3 {
  position: absolute;
  bottom: 0;
  color: white;
}
@media all and (max-width: 1100px) {
  .listing #node-list .container ul li .item-infos .label_domaine,
  .listing #node-other .container ul li .item-infos .label_domaine,
  #listing #node-list .container ul li .item-infos .label_domaine,
  #listing #node-other .container ul li .item-infos .label_domaine {
    height: 100%;
  }
  .listing #node-list .container ul li .item-infos .label_domaine h3,
  .listing #node-other .container ul li .item-infos .label_domaine h3,
  #listing #node-list .container ul li .item-infos .label_domaine h3,
  #listing #node-other .container ul li .item-infos .label_domaine h3 {
    padding: 25px;
    bottom: 0;
  }
}
.listing #node-list .container ul li:hover .overlay:before,
.listing #node-other .container ul li:hover .overlay:before,
#listing #node-list .container ul li:hover .overlay:before,
#listing #node-other .container ul li:hover .overlay:before {
  width: 175px;
  right: 80%;
}
.listing #node-list .container ul li:hover i,
.listing #node-other .container ul li:hover i,
#listing #node-list .container ul li:hover i,
#listing #node-other .container ul li:hover i {
  padding-left: 10px;
}
.listing #node-list .container ul li > .item-link,
.listing #node-other .container ul li > .item-link,
#listing #node-list .container ul li > .item-link,
#listing #node-other .container ul li > .item-link {
  position: absolute;
  height: 100%;
  width: 100%;
  z-index: 101;
  top: 0;
  left: 0;
}
.listing #node-list .container ul li .item-actu,
.listing #node-other .container ul li .item-actu,
#listing #node-list .container ul li .item-actu,
#listing #node-other .container ul li .item-actu {
  display: block;
  position: absolute;
  bottom: 0;
  top: initial;
  height: initial;
}
.listing #node-list .container ul li .item-liste-presta,
.listing #node-other .container ul li .item-liste-presta,
#listing #node-list .container ul li .item-liste-presta,
#listing #node-other .container ul li .item-liste-presta {
  top: auto;
}
.listing #node-list .container ul li .infos,
.listing #node-other .container ul li .infos,
#listing #node-list .container ul li .infos,
#listing #node-other .container ul li .infos {
  background: #AAAFF8;
  height: 33%;
  width: 100%;
  color: white;
  position: absolute;
  bottom: 0;
  padding: 10px 25px;
  display: flex;
  justify-content: space-between;
}
.listing #node-list .container ul li .infos a,
.listing #node-other .container ul li .infos a,
#listing #node-list .container ul li .infos a,
#listing #node-other .container ul li .infos a {
  color: white;
}
.listing #node-list .container ul li .infos h3:before,
.listing #node-other .container ul li .infos h3:before,
#listing #node-list .container ul li .infos h3:before,
#listing #node-other .container ul li .infos h3:before {
  content: none;
}
.listing #node-list .container ul li .infos a,
.listing #node-other .container ul li .infos a,
#listing #node-list .container ul li .infos a,
#listing #node-other .container ul li .infos a {
  box-shadow: none;
}
.listing #node-list .container ul .presta_liste,
.listing #node-other .container ul .presta_liste,
#listing #node-list .container ul .presta_liste,
#listing #node-other .container ul .presta_liste {
  height: 280px;
}
.listing #node-list .container ul .presta_liste .infos div,
.listing #node-other .container ul .presta_liste .infos div,
#listing #node-list .container ul .presta_liste .infos div,
#listing #node-other .container ul .presta_liste .infos div {
  align-self: center;
}

.path-prestations footer {
  padding: 0 !important;
}

.domaine_app {
  width: auto !important;
}
@media all and (max-width: 680px) {
  .domaine_app {
    padding: 0 25px;
  }
}
.domaine_app .liste_domaine li {
  width: calc(50% - 25px);
  padding: 25px;
  background-size: cover;
}
@media all and (max-width: 1100px) {
  .domaine_app .liste_domaine li {
    padding: 0;
  }
}
@media all and (max-width: 680px) {
  .domaine_app .liste_domaine li {
    padding: 0;
    width: 100%;
  }
}
.domaine_app .liste_domaine li .back {
  max-height: 0;
  overflow-y: hidden;
  transition: max-height 0.5s linear;
  z-index: 100;
  background: #480d56;
  color: #ffffff;
  position: absolute;
  top: 0;
  opacity: 0.7;
  margin-left: -25px;
  width: 100%;
  height: 100%;
}
@media all and (max-width: 1100px) {
  .domaine_app .liste_domaine li .back {
    margin-left: 0;
  }
}
.domaine_app .liste_domaine li .back .textBack {
  padding: 25px;
  text-align: center;
  height: 100%;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overflow-x: hidden;
}
.domaine_app .liste_domaine li .back .textBack h3 {
  margin: auto;
  color: white;
  text-transform: uppercase;
}
.domaine_app .liste_domaine li .back .textBack h3:before {
  content: none;
}
.domaine_app .liste_domaine li .back .textBack p {
  margin: auto;
}
.domaine_app .liste_domaine .flipped .label_domaine {
  display: none;
}
.domaine_app .liste_domaine .flipped .back {
  max-height: 100% !important;
}

.item {
  position: relative;
}

.item-visuel {
  position: absolute;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
}
.item-visuel .overlay-gradient {
  position: absolute;
  height: 100%;
  width: 100%;
  z-index: 10;
  top: 0;
  left: 0;
}

#produits {
  background-size: cover;
}
@media all and (max-width: 1100px) {
  #produits {
    background-size: auto;
  }
}
#produits #node-other,
#produits #node-list {
  padding-top: 25px;
}
@media all and (max-width: 1100px) {
  #produits #node-other #pushProduit,
  #produits #node-list #pushProduit {
    width: 100%;
    padding: 0 25px;
  }
}
#produits #node-other .container,
#produits #node-list .container {
  margin-bottom: 0;
}
#produits .listing #node-list {
  padding: 0 0 25px 0;
}
#produits .listing #node-list .container ul {
  margin-top: 25px;
}
#produits .listing #node-list .container ul li {
  width: calc(1 * 100% / 5 - 25px);
  margin: 12.5px;
  height: auto;
  display: block;
  overflow: visible;
}
@media all and (max-width: 1100px) {
  #produits .listing #node-list .container ul li {
    width: calc(1 * 100% / 3 - 25px);
    margin: 12.5px;
  }
}
@media all and (max-width: 680px) {
  #produits .listing #node-list .container ul li {
    width: calc(1 * 100% / 1 - 25px);
    margin: 12.5px;
  }
}
#produits .listing #node-list .container ul li img {
  height: auto;
}
#produits .listing #node-list .container ul li .label_produits {
  background-color: #480d56;
  height: 50px;
  margin-bottom: 0;
  display: grid;
  text-align: center;
  align-items: center;
}
@media all and (max-width: 1100px) {
  #produits .listing #node-list .container ul li .label_produits {
    background-color: #480d56;
  }
}
#produits .listing #node-list .container ul li .label_produits h3 {
  opacity: 1;
  margin: 0;
  margin-top: -5px;
  padding: 5px 10px;
  color: #ffffff;
}
@media all and (max-width: 1100px) {
  #produits .listing #node-list .container ul li .label_produits h3 {
    opacity: 1;
  }
}
#produits .listing #node-list .container ul li .label_produits h3:before {
  content: none;
}
#produits .listing #node-list .container ul li .visuel_produits {
  position: relative;
  width: 100%;
  margin-bottom: 0;
}

@media all and (max-width: 680px) {
  #references {
    padding: 0 25px;
  }
  #references #pushReference {
    padding: 0;
  }
}
#references .listing #node-list .container .liste_reference {
  justify-content: center;
}
#references .listing #node-list .container .liste_reference .reference {
  height: 200px;
  width: 200px;
  display: block;
  overflow: visible;
}
#references .listing #node-list .container .liste_reference .reference img {
  height: auto;
}
#references .listing #node-list .container .liste_reference .reference .label_references {
  opacity: 0;
}
#references .listing #node-list .container .liste_reference .reference .label_references h3:before {
  content: none;
}
#references .listing #node-list .container .liste_reference .reference:hover .label_references {
  opacity: 1;
}

.item-infos {
  position: relative;
  z-index: 100;
  display: flex;
  color: white;
  top: 0;
  height: 100%;
  width: 100%;
  text-transform: uppercase;
}
.item-infos .logo {
  display: flex;
  justify-content: flex-end;
  position: relative;
}
@media all and (max-width: 1100px) {
  .item-infos {
    align-items: center;
  }
}
.item-infos span.item-summary,
.item-infos span.item-date {
  margin-bottom: 25px;
}
.item-infos span.item-date {
  opacity: 0.75;
  font-style: italic;
}
.noticia .item-infos {
  padding: 50px;
}

#pagination span.button {
  display: flex;
  height: 50px;
  background: #480d56;
  justify-content: center;
  align-items: center;
  color: #ffffff;
  width: calc(1 * (100% - (3 - 1) * 25px) / 3 + (1 - 1) * 25px);
  margin-right: 25px;
}
#pagination span.button:nth-child(3n+3) {
  margin-right: 0px;
}
#pagination span.button {
  margin: auto;
}
@media all and (max-width: 1100px) {
  #pagination span.button {
    width: calc(1 * (100% - (1 - 1) * 0) / 1 + (1 - 1) * 0);
    margin-right: 0;
  }
  #pagination span.button:nth-child(1n+1) {
    margin-right: 0px;
  }
}

#actualites ul li a {
  color: white;
  box-shadow: none;
}
#actualites ul li .item-infos {
  padding: 1.5em;
}
#actualites ul li .item-infos h3 {
  text-align: left;
  margin: 0;
}
#actualites ul li .item-infos h3:before {
  content: none;
}

.infos div h3 {
  text-align: left;
}

/****************************
*****************************

MENU PRINCIPAL

*****************************
****************************/
#header .scroll_menu > ul > li:not(:last-child) {
  padding-right: 10px;
}
@media all and (min-width: 1099px) {
  #header .scroll_menu > ul {
    margin: 0;
  }
  #header .scroll_menu > ul li span,
  #header .scroll_menu > ul li a {
    color: #858585;
  }
}
@media all and (min-width: 1099px) and (max-width: 1100px) {
  #header .scroll_menu > ul li span,
  #header .scroll_menu > ul li a {
    color: #ffffff;
  }
}
@media all and (min-width: 1099px) {
  #header .scroll_menu > ul li span:hover,
  #header .scroll_menu > ul li a:hover {
    color: #480d56;
  }
}
@media all and (min-width: 1099px) and (max-width: 1100px) {
  #header .scroll_menu > ul li span:hover,
  #header .scroll_menu > ul li a:hover {
    color: rgba(255, 255, 255, 0.25);
  }
}
@media all and (min-width: 1099px) {
  #header .scroll_menu .niv0 {
    display: flex;
  }
}
@media all and (min-width: 1099px) and (max-width: 1100px) {
  #header .scroll_menu .niv0 {
    flex-direction: column;
  }
}
@media all and (min-width: 1099px) {
  #header .scroll_menu .niv0 li {
    padding: 25px 0;
  }
}
@media all and (min-width: 1099px) and (max-width: 1100px) {
  #header .scroll_menu .niv0 li {
    padding: 0;
  }
}
@media all and (min-width: 1099px) {
  #header .scroll_menu ul.niv1,
  #header .scroll_menu ul.niv2 {
    display: none;
  }
}
@media all and (min-width: 1099px) and (max-width: 1100px) {
  #header .scroll_menu ul.niv1,
  #header .scroll_menu ul.niv2 {
    display: flex;
    flex-direction: column;
  }
}
@media all and (min-width: 1099px) {
  #header .scroll_menu .niv0 > .toggler:hover > ul {
    display: flex;
    flex-direction: column;
    background-color: #480d56;
    position: absolute;
    margin-top: 25px;
    z-index: 1000;
  }
  #header .scroll_menu .niv0 > .toggler:hover > ul li {
    padding: 0 25px;
    min-width: 200px;
  }
  #header .scroll_menu .niv0 > .toggler:hover > ul li:first-of-type {
    padding-top: 25px;
  }
  #header .scroll_menu .niv0 > .toggler:hover > ul li:last-of-type {
    padding-bottom: 25px;
  }
  #header .scroll_menu .niv0 > .toggler:hover > ul li:last-of-type > a:after {
    display: none;
  }
  #header .scroll_menu ul.niv1 {
    position: relative;
  }
  #header .scroll_menu ul.niv2 {
    position: absolute;
    top: 0;
    background-color: #6a525c;
    left: 100%;
    margin-left: 0;
  }
  #header .scroll_menu .niv1 > .toggler:hover > ul {
    display: flex;
    flex-direction: column;
  }
  #header .scroll_menu .niv1 span,
  #header .scroll_menu .niv1 a {
    color: #ffffff;
    cursor: pointer;
  }
  #header .scroll_menu .niv1 span:after,
  #header .scroll_menu .niv1 a:after {
    content: "";
    height: 1px;
    width: 25px;
    background-color: rgba(255, 255, 255, 0.5);
    position: relative;
    display: block;
    margin: 25px 0;
  }
  #header .scroll_menu .niv1 span:hover,
  #header .scroll_menu .niv1 a:hover {
    color: rgba(255, 255, 255, 0.5);
  }
  #header .scroll_menu .socialHeader {
    display: none;
  }
}

/**********************************
***********************************

MENU RESPONSIVE

***********************************
**********************************/
@media all and (max-width: 1100px) {
  #block-navigationprincipale > ul > li:not(:last-child):after {
    display: none !important;
  }
  #main-menu {
    height: 100vh;
    width: 0;
    position: fixed;
    left: -10000px;
    z-index: 109;
    background-color: #480d56;
    top: 0;
  }
  .is-open #main-menu {
    left: 0;
    display: block;
    animation: menuIn 1s cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-fill-mode: forwards;
  }
  .is-open #main-menu .menuContent {
    opacity: 1;
    transition-delay: 1s;
  }
  .is-open #main-menu .scroll_menu {
    position: relative;
    overflow: hidden !important;
  }
}
@media all and (max-width: 1100px) and (max-width: 1100px) {
  .is-open #main-menu .scroll_menu {
    height: 90vh;
    padding: 25px;
  }
}
@media all and (max-width: 1100px) {
  .is-closed #main-menu {
    right: 0;
    left: auto;
    animation: menuOut 1s cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-fill-mode: forwards;
  }
  #main-menu ul.menu {
    margin-left: 0px;
    margin-bottom: 0px;
  }
  #main-menu .socialHeader {
    display: block;
    text-align: center;
    background: none;
    padding: 0;
  }
  #main-menu .socialHeader a {
    color: #ffffff;
    opacity: 1;
  }
  #main-menu .socialHeader a:hover {
    opacity: 0.6;
  }
  #main-menu .socialHeader .secondary_menu {
    margin: 0;
    display: flex;
    text-align: center;
    justify-content: center;
    flex-wrap: wrap;
  }
  #main-menu .socialHeader .secondary_menu:before {
    content: "";
    height: 1px;
    width: 25px;
    background-color: rgba(255, 255, 255, 0.5);
    position: relative;
    display: block;
    margin: 15px auto;
  }
  #main-menu .socialHeader .secondary_menu li {
    margin-top: 25px;
  }
  #main-menu .socialHeader .secondary_menu .txt {
    margin-right: 0;
    margin-top: 0;
    width: 100%;
  }
  #main-menu .menuContent {
    position: relative;
    height: 100%;
    display: flex;
    min-height: 100vh;
    width: 100%;
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }
  .is-closed #main-menu .menuContent {
    display: none;
  }
  .is-closed #main-menu .menuContent ul.niv0 {
    opacity: 0;
  }
  .is-open .is-closed #main-menu .menuContent ul.niv0 {
    animation: fadeIn 300ms;
    animation-fill-mode: forwards;
    animation-delay: 1s;
  }
  .is-closed .is-closed #main-menu .menuContent ul.niv0 {
    animation: fadeOut 300ms;
    animation-fill-mode: forwards;
  }
  #main-menu .menuContent #block-navigationprincipale {
    max-height: 100vh;
    overflow-y: auto;
  }
}
@media all and (max-width: 1100px) and (max-width: 680px) {
  #main-menu .menuContent #block-navigationprincipale {
    max-height: calc(100vh - 200px) !important;
  }
}
@media all and (max-width: 1100px) {
  #main-menu .menuContent .niv0 li:after {
    display: none !important;
  }
  #main-menu .menuContent .niv0 > li {
    padding-right: 0 !important;
    text-align: center;
  }
  #main-menu .menuContent .niv0 > li > a {
    color: #ffffff;
    padding-top: 25px;
  }
  #main-menu .menuContent .niv0 > li > a:before {
    content: "";
    height: 1px;
    width: 25px;
    background-color: rgba(255, 255, 255, 0.5);
    position: relative;
    display: block;
    margin: 15px auto;
  }
  #main-menu .menuContent .niv0 > li > a:hover {
    color: rgba(255, 255, 255, 0.5);
  }
  #main-menu .menuContent .niv0 > li:first-of-type > a:before {
    display: none;
  }
  #main-menu .menuContent ul.niv1 {
    margin: 15px auto 0 auto;
    text-align: center;
  }
  #main-menu .menuContent ul.niv1 > li {
    padding: 5px 0;
  }
  #main-menu .menuContent ul.niv1 > li > a {
    color: rgba(255, 255, 255, 0.7);
  }
  #main-menu .menuContent ul.niv2 {
    text-align: center;
    margin: 0px 0 0 0;
  }
  #main-menu .menuContent ul.niv2 > li {
    padding: 5px 0;
  }
  #main-menu .menuContent ul.niv2 > li > a {
    color: rgba(255, 255, 255, 0.5);
  }
}
/****************************
*****************************

MENU FOOTER

*****************************
****************************/
#block-menufooterde ul,
#block-menufooteren ul,
#block-menufooter ul {
  margin: 0;
  display: flex;
}
#block-menufooterde ul > li a,
#block-menufooteren ul > li a,
#block-menufooter ul > li a {
  color: #858585;
}
#block-menufooterde ul > li a:hover,
#block-menufooteren ul > li a:hover,
#block-menufooter ul > li a:hover {
  color: #480d56;
}
#block-menufooterde ul li:not(:last-child),
#block-menufooteren ul li:not(:last-child),
#block-menufooter ul li:not(:last-child) {
  padding-right: 25px;
}
@media all and (max-width: 1100px) {
  #block-menufooterde ul li:not(:last-child):after,
  #block-menufooteren ul li:not(:last-child):after,
  #block-menufooter ul li:not(:last-child):after {
    display: none;
  }
}
#block-menufooterde .niv0,
#block-menufooteren .niv0,
#block-menufooter .niv0 {
  display: flex;
}
#block-menufooterde .niv0 > li,
#block-menufooteren .niv0 > li,
#block-menufooter .niv0 > li {
  padding: 15px 0;
}
@media all and (max-width: 1100px) {
  #block-menufooterde .niv0,
  #block-menufooteren .niv0,
  #block-menufooter .niv0 {
    flex-direction: column;
    align-items: center;
  }
  #block-menufooterde .niv0 > li,
  #block-menufooteren .niv0 > li,
  #block-menufooter .niv0 > li {
    padding: 10px 0;
  }
}
#block-menufooterde .socialHeader,
#block-menufooteren .socialHeader,
#block-menufooter .socialHeader {
  display: none;
}

body {
  font-size: 16px;
  background: #ffffff;
  color: #858585;
}
body #main {
  background: #ffffff;
}
body.is-open {
  overflow: hidden;
  height: 100vh;
}
body.imce-page #footer,
body.imce-page #main,
body.imce-page .waves,
body.imce-page .sf-toolbar,
body.imce-page #header {
  display: none;
}

.legend {
  font-size: 0.7em;
  line-height: 15px;
  color: #515153;
  text-align: center;
  font-style: italic;
  position: relative;
}

#footer {
  width: 100vw;
  position: relative;
  display: flex;
  padding: 50px 0 0;
  flex-direction: column;
}
@media all and (max-width: 1280px) {
  #footer {
    padding: 0 50px;
    padding-top: 50px;
  }
}
#footer #pushs {
  margin-top: 0px;
  padding-top: 0px;
}
#footer #block-menufooter ul li {
  padding-right: 10px;
}

#footer > .position {
  width: 100%;
  margin: 0 0 50px 0;
  position: relative;
  display: flex;
  align-items: center;
  flex-direction: column;
}
#footer > .position .share {
  margin: 0 auto;
  font-size: 14px;
  color: #480d56;
}
#footer > .position .share i {
  opacity: 1;
}
@media all and (max-width: 1100px) {
  #footer > .position .share {
    text-align: center;
  }
  #footer > .position .share span {
    width: 100%;
    display: block;
  }
}
#footer > .position .adress {
  font-weight: 300;
  text-align: center;
  width: 100%;
}
#footer > .position .logo {
  margin-top: 50px;
}
@media all and (max-width: 1100px) {
  #footer > .position .logo {
    display: flex;
    flex-direction: row;
    justify-content: center;
    flex-wrap: wrap;
  }
  #footer > .position .logo a {
    margin-top: 10px;
    margin-right: 10px;
  }
}

.scrollToTop {
  position: fixed;
  height: 50px;
  width: 50px;
  background-color: #480d56;
  bottom: 50px;
  right: 100px;
  z-index: 1000;
  color: #ffffff;
  display: none;
  align-items: center;
  justify-content: center;
}
@media all and (max-width: 1280px) {
  .scrollToTop {
    bottom: 50px;
    right: 50px;
  }
}
@media all and (max-width: 1100px) {
  .scrollToTop {
    bottom: 25px;
    right: 25px;
  }
}
.scrollToTop i {
  transform: rotate(-90deg);
}

.path-domaines #footer {
  padding-top: 0;
}

/****************************
*****************************

DIAPORAMA

*****************************
****************************/
#diaporama {
  height: 60vh;
  width: 100%;
  position: relative;
  overflow: hidden;
}
@media all and (max-width: 1100px) {
  #diaporama {
    height: 80vh;
  }
}
#diaporama ul {
  margin: 0;
  position: relative;
  height: 100%;
  width: inherit;
}
#diaporama ul.slick-dots {
  position: absolute !important;
  top: 0 !important;
  z-index: 100000 !important;
  display: flex !important;
  padding-top: 300px;
  right: 100px;
}
@media all and (max-width: 1100px) {
  #diaporama ul.slick-dots {
    padding-top: 120px;
    right: 50%;
    transform: translate(-50%);
  }
}
#diaporama ul.slick-dots li button {
  font-size: 0;
  line-height: 0;
  display: block;
  width: 20px;
  height: 20px;
  padding: 5px;
  cursor: pointer;
  color: transparent;
  border: 0;
  outline: none;
  background: transparent;
}
#diaporama ul.slick-dots li button:before {
  font-size: 24px;
  line-height: 20px;
  position: relative;
  top: 0;
  left: 0;
  width: 20px;
  height: 20px;
  content: "•";
  text-align: center;
  opacity: 0.65;
  color: #ffffff;
}
#diaporama ul.slick-dots li.slick-active button:before {
  font-size: 32px;
  opacity: 1;
  color: #ffffff;
}
#diaporama .slide {
  position: relative;
  height: 60vh;
  width: inherit;
}
@media all and (max-width: 1100px) {
  #diaporama .slide {
    height: 80vh;
  }
}
#diaporama .slide h1,
#diaporama .slide .link {
  margin-left: 75px;
}
#diaporama .slide img {
  position: absolute;
}
#diaporama .slide .position {
  height: 100%;
  color: #ffffff;
  position: relative;
  z-index: 100;
  padding-top: 18vh;
}
@media all and (max-width: 1100px) {
  #diaporama .slide .position {
    padding-top: 10vh;
    padding-left: 50px;
  }
  #diaporama .slide .position h1 {
    margin-left: 0;
  }
}
/****************************
*****************************

ACTUALITÉS

*****************************
****************************/
#actualitesHome {
  width: 100%;
  position: relative;
}
#actualitesHome .listing {
  width: 100%;
  padding: 0 100px;
}
@media all and (max-width: 1100px) {
  #actualitesHome .listing {
    padding: 25px;
  }
  #actualitesHome .listing li {
    height: 280px;
  }
}
@media all and (max-width: 1100px) {
  #actualitesHome {
    top: 50px;
  }
}

#actualitesHome > .titre {
  height: 270px;
  width: 100%;
  padding: 100px;
  position: relative;
  color: #ffffff;
}
@media all and (max-width: 1280px) {
  #actualitesHome > .titre {
    padding: 0 50px;
  }
}
@media all and (max-width: 1100px) {
  #actualitesHome > .titre {
    padding: 0 25px;
    height: 200px;
  }
}
#actualitesHome > .titre h2 {
  margin: auto;
  width: 100%;
  text-align: center;
}
#actualitesHome > .titre h2:before {
  background-color: #ffffff;
}
#actualitesHome > .titre h2:after {
  content: "";
  height: 1px;
  width: 50px;
  background-color: rgba(255, 255, 255, 0.5);
  position: relative;
  display: block;
  margin: 25px auto auto auto;
}
#actualitesHome > .titre a {
  position: absolute;
  right: 100px;
  top: 50%;
  transform: translateY(-50%);
}
@media all and (max-width: 1100px) {
  #actualitesHome > .titre a {
    right: 25px;
  }
}
@media all and (max-width: 450px) {
  #actualitesHome > .titre a {
    display: none;
  }
}

@media all and (max-width: 680px) {
  #actualites .listing ul:first-of-type,
  #actualites .listing ul:last-of-type,
  #actualites .listing ul {
    flex-wrap: wrap;
    margin: 0px;
  }
  #actualites .listing ul:first-of-type li,
  #actualites .listing ul:last-of-type li,
  #actualites .listing ul li {
    width: 100%;
    margin-left: 0px;
    margin-right: 0px;
    margin-bottom: 25px;
  }
}
/****************************
*****************************

PRESTATIONS

*****************************
****************************/
#prestationsHome {
  width: 100%;
  background-size: cover;
  padding: 0 50px 100px 50px;
  position: relative;
}
@media all and (max-width: 1500px) {
  #prestationsHome {
    padding: 0 0 0 0;
  }
}
@media all and (max-width: 1100px) {
  #prestationsHome {
    margin-top: 0;
    padding: 0;
  }
}
#prestationsHome #diaporamaPrestations {
  width: 100%;
  display: flex;
  margin: auto;
  justify-content: space-between;
  padding: 0 50px;
}
@media all and (max-width: 1500px) {
  #prestationsHome #diaporamaPrestations {
    margin: auto;
    margin-top: 0;
  }
}
@media all and (max-width: 1280px) {
  #prestationsHome #diaporamaPrestations {
    padding: 0;
    display: block;
  }
}
#prestationsHome .diapo {
  position: relative;
  width: 40%;
  height: 549px;
}
@media all and (max-width: 1280px) {
  #prestationsHome .diapo {
    width: 100%;
    text-align: center;
    height: 300px;
  }
}
@media all and (max-width: 1100px) {
  #prestationsHome .diapo {
    height: 100%;
    min-height: 300px;
  }
}
#prestationsHome .diapo .slide {
  position: absolute;
  top: 50px;
  left: 0px;
  width: 100%;
  height: 100%;
  opacity: 0;
  z-index: -1;
  display: flex;
}
@media all and (max-width: 1280px) {
  #prestationsHome .diapo .slide {
    height: auto;
  }
}
#prestationsHome .diapo .slide .visuel {
  width: calc(calc(2 * 100% / 3 - 25px) + 100px);
  margin-left: -100px;
  opacity: 0;
}
#prestationsHome .diapo .slide.active {
  opacity: 1;
  top: 0px;
  z-index: 10;
}
@media all and (max-width: 1100px) {
  #prestationsHome .diapo .slide.active {
    position: relative;
  }
}
#prestationsHome .diapo .slide.active .visuel {
  opacity: 1;
}
#prestationsHome .diapo .slide .texte {
  display: block;
  margin-top: 100px;
  padding-left: 25px;
  flex-direction: column;
  justify-content: center;
}
@media all and (max-width: 1280px) {
  #prestationsHome .diapo .slide .texte {
    margin-top: 25px;
  }
}
#prestationsHome .diapo .slide .texte a {
  color: #480d56;
  margin-top: 25px;
}
@media all and (max-width: 1100px) {
  #prestationsHome .diapo .slide {
    flex-wrap: wrap;
  }
  #prestationsHome .diapo .slide .visuel,
  #prestationsHome .diapo .slide .texte {
    width: 100%;
    padding: 0 0;
    margin: 0;
  }
  #prestationsHome .diapo .slide .visuel {
    height: 350px;
    display: none;
  }
}
@media all and (max-width: 1100px) {
  #prestationsHome .diapo #pushPresta .container .texte h2 {
    text-align: center;
  }
}
@media all and (max-width: 680px) {
  #prestationsHome .diapo #pushPresta .container .texte {
    text-align: left;
  }
}
#prestationsHome .diapo section .container {
  margin-left: 0;
  margin-bottom: 0;
  width: 100%;
}
@media all and (max-width: 1280px) {
  #prestationsHome .diapo section .container {
    width: 80vw;
    margin-left: 10vw;
  }
  #prestationsHome .diapo section .container h2 {
    text-align: center;
  }
}
@media all and (max-width: 1100px) {
  #prestationsHome .diapo section .container {
    width: 100%;
    padding: 25px;
    margin-left: 0;
  }
}
#prestationsHome .diapo section .container h2 + p {
  margin: 0;
}
#prestationsHome .diapo section .container h2 {
  margin: 40px 0;
}
#prestationsHome .diapo section .container a {
  box-shadow: none;
}
#prestationsHome .diapo section .container .texte {
  height: 100%;
}
#prestationsHome .diapo section .empty {
  display: none;
}
#prestationsHome .diapo section .active {
  display: block;
}
#prestationsHome .gears {
  position: relative;
  z-index: 11;
  margin: 0;
  padding: 0 50px 50px 0;
  width: calc(9 * 100% / 10 - 25px);
  color: #ffffff;
  min-height: 549px;
  display: flex;
}
@media all and (max-width: 1500px) {
  #prestationsHome .gears {
    left: -50px;
  }
}
@media all and (max-width: 1280px) {
  #prestationsHome .gears {
    left: 75px;
  }
}
@media all and (max-width: 1100px) {
  #prestationsHome .gears {
    position: relative;
    padding: 25px;
    width: 100%;
    min-height: 549px;
    left: 0;
    top: 0;
    align-items: center;
    display: none;
  }
}
#prestationsHome .gears li {
  position: absolute;
}
#prestationsHome .gears li .violet {
  top: 237px;
  position: absolute;
  left: 500px;
}
#prestationsHome .gears li svg {
  overflow: visible;
  fill: #AAAFF8;
}
#prestationsHome .gears li h4 {
  margin: -14px;
  color: #6469b2;
  text-transform: uppercase;
  z-index: 1001;
  text-align: center;
  font-size: 1.2em;
  position: absolute;
  font-weight: 500;
}
#prestationsHome .gears li:hover {
  transform: rotate(360deg);
  transition: filter 2s;
  z-index: 10000;
}
#prestationsHome .gears li:hover #dents {
  filter: url(#drop-shadow);
}
#prestationsHome .gears .usinage h4 {
  left: 110px;
  top: 40px;
}
#prestationsHome .gears .usinage {
  position: absolute;
  top: -14px;
  left: 22px;
}
#prestationsHome .gears .usinage .logo_svg {
  left: 129px;
}
#prestationsHome .gears .usinage:hover svg path,
#prestationsHome .gears .usinage:hover svg image {
  animation-name: rotationL;
  animation-duration: 10000ms;
  transform-origin: 178px 178px;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}
#prestationsHome .gears .mecano-soudure h4 {
  left: 40px;
  top: 40px;
}
#prestationsHome .gears .mecano-soudure {
  position: absolute;
  top: 23px;
  left: 340px;
}
#prestationsHome .gears .mecano-soudure .logo_svg {
  top: 135px;
  left: 135px;
}
#prestationsHome .gears .mecano-soudure:hover svg image {
  animation-name: rotationL;
  animation-duration: 10000ms;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  transform-origin: 184px 184px;
}
#prestationsHome .gears .prestations_annexes h4 {
  top: 60px;
  left: 210px;
}
#prestationsHome .gears .prestations_annexes {
  position: absolute;
  left: 575px;
  top: 0px;
}
#prestationsHome .gears .prestations_annexes .logo_svg {
  top: 70px;
  left: 75px;
}
#prestationsHome .gears .prestations_annexes:hover svg path,
#prestationsHome .gears .prestations_annexes:hover svg image {
  animation-name: rotationR;
  animation-duration: 10000ms;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  transform-origin: 187px 179px;
}
#prestationsHome .gears .fonderie h4 {
  top: 340px;
  left: 130px;
}
#prestationsHome .gears .fonderie {
  position: absolute;
  top: 210px;
  left: 140px;
}
#prestationsHome .gears .fonderie img {
  width: 150px;
  height: 150px;
  top: 90px;
  left: 115px;
}
#prestationsHome .gears .fonderie:hover svg path,
#prestationsHome .gears .fonderie:hover svg image {
  animation-name: rotationR;
  animation-duration: 10000ms;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  transform-origin: 188px 167px;
}
#prestationsHome .gears .expertise h4 {
  top: 220px;
  left: 60px;
}
#prestationsHome .gears .expertise {
  position: absolute;
  top: 340px;
  left: 424px;
}
#prestationsHome .gears .expertise .logo_svg {
  top: 60px;
  left: 69px;
}
#prestationsHome .gears .expertise:hover svg path,
#prestationsHome .gears .expertise:hover svg image {
  animation-name: rotationL;
  animation-duration: 10000ms;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  transform-origin: 181px 170px;
}
#prestationsHome .gears .violet {
  position: absolute;
  top: 341px;
  left: 590px;
}
#prestationsHome .gears .violet svg {
  fill: #4f2686 !important;
}
#prestationsHome .gears .violet .logo_svg {
  top: 70px;
  left: 65px;
}
#prestationsHome .gears .violet:hover svg path,
#prestationsHome .gears .violet:hover svg image {
  animation-name: rotationR;
  animation-duration: 10000ms;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  transform-origin: 177px 182px;
}
#prestationsHome .gears .controle_qualite h4 {
  left: 125px;
  top: 5px;
}
#prestationsHome .gears .controle_qualite {
  position: absolute;
  left: 650px;
  top: 202px;
}
#prestationsHome .gears .controle_qualite .logo_svg {
  top: 76px;
  width: 80px;
  height: 80px;
  left: 80px;
}
#prestationsHome .gears .controle_qualite:hover svg path,
#prestationsHome .gears .controle_qualite:hover svg image {
  animation-name: rotationL;
  animation-duration: 10000ms;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  transform-origin: 178px 177px;
}
#prestationsHome .gears li .logo_svg {
  transition: all 350ms cubic-bezier(0, 10, 0.16, 0.1);
}
#prestationsHome .gears li .logo_svg:hover {
  border: 1px solid;
  border-radius: 50%;
  box-shadow: inset 0 0 50px rgba(255, 255, 255, 0.5), 0 0 50px rgba(255, 255, 255, 0.5);
  outline-color: rgba(255, 255, 255, 0);
  outline-offset: 15px;
  text-shadow: 1px 1px 2px #427388;
}
#prestationsHome .gears li:first-of-type h3 {
  margin-top: 0;
}
#prestationsHome .gears li:last-of-type div:after {
  display: none;
}
#prestationsHome .gears {
  cursor: pointer;
  left: 0;
}
#prestationsHome .gears.active .infos::before {
  top: 4px;
}
#prestationsHome .gears.active .infos:after {
  opacity: 0;
}
#prestationsHome .gears.active img {
  animation: opacity 400ms linear;
  animation-fill-mode: forwards;
  animation-delay: 200ms;
}
#prestationsHome .gears.active:hover {
  left: 0;
}
#prestationsHome .gears.active:after {
  opacity: 0;
}
#prestationsHome .gears:after {
  content: "";
  height: 1px;
  width: 25px;
  background-color: rgba(255, 255, 255, 0.5);
  position: relative;
  display: block;
  margin-top: 15px;
}
@media all and (max-width: 1100px) {
  #prestationsHome .gears:after {
    margin: 15px auto;
  }
}
#prestationsHome .gears img {
  position: absolute;
  z-index: 9;
  top: 125px;
  width: 100px;
  height: 100px;
  left: 133px;
}
#prestationsHome .gears .infos {
  color: rgba(255, 255, 255, 0.55);
}
#prestationsHome .gears .infos h3 {
  color: #ffffff;
}

@keyframes rotationR {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(359deg);
  }
}
@keyframes rotationL {
  from {
    transform: rotate(360deg);
  }
  to {
    transform: rotate(0deg);
  }
}
#pushs {
  padding-bottom: 0;
  flex-wrap: wrap;
}
#pushs a {
  width: 48%;
}
@media all and (max-width: 1100px) {
  #pushs a {
    margin-left: 5%;
    width: 100%;
    margin-bottom: 25px;
  }
}

@media all and (max-width: 1100px) {
  .diapo_desktop {
    display: none;
  }
}

@media all and (min-width: 1099px) {
  .diapo_mobile {
    display: none;
  }
}
.diapo_mobile .slide {
  padding: 25px;
  opacity: 0;
  position: absolute;
  top: 0;
}
.diapo_mobile .slide .texte {
  text-align: center;
  display: none;
}
.diapo_mobile .slide .texte h2 {
  margin: 0;
}
.diapo_mobile .slide .texte a {
  color: #480d56;
  margin-top: 25px;
}
.diapo_mobile .active {
  opacity: 1;
  height: 100%;
  position: relative;
}
.diapo_mobile .active .texte {
  margin-top: 25px;
  position: relative;
  height: 100%;
  flex-direction: column;
  justify-content: center;
  display: block;
  text-align: inherit;
}
.diapo_mobile .active .texte h2 {
  height: inherit;
  margin: 25px 0;
}
.diapo_mobile .active .texte p {
  height: 100%;
}
@media all and (max-width: 1100px) {
  .diapo_mobile {
    display: block;
  }
}
.diapo_mobile h2 {
  text-align: center;
}
.diapo_mobile .textIntro {
  display: none;
}
.diapo_mobile .active {
  display: block;
}
.diapo_mobile #diaporamaPrestationsMobile .list {
  padding: 25px 0;
  background-color: #480d56;
}
.diapo_mobile #diaporamaPrestationsMobile .list li:first-child .switchPrestationMobile .logo_svg {
  height: 40px;
}
.diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile {
  cursor: pointer;
  display: flex;
  justify-content: center;
  position: relative;
}
.diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile #anchorPresta:before {
  content: "";
  width: 100%;
  height: 100px;
  position: absolute;
  top: 0px;
}
.diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile .logo_svg {
  transition: all 0.5s ease-out;
  position: relative;
  top: 40px;
  height: 35px;
}
.diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile .infos_mobile {
  color: #ffffff;
}
.diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile .infos_mobile h2 {
  text-transform: capitalize;
  margin: 25px 0;
}
.diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile .infos_mobile h2:before {
  background-color: #ffffff;
  opacity: 0;
}
.diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile .infos_mobile p {
  text-align: center;
}
.diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile .infos_mobile:after {
  content: "";
  height: 1px;
  width: 25px;
  background-color: hsla(0, 0%, 100%, 0.5);
  position: relative;
  display: block;
  margin-top: 15px;
  margin: auto;
}
.diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile:hover {
  margin-left: 25px;
}
@media all and (min-width: 679px) {
  .diapo_mobile #diaporamaPrestationsMobile .list li .switchPrestationMobile.active .logo_svg {
    opacity: 1;
  }
}
/****************************
*****************************

Qualité

*****************************
****************************/
#pushQualite {
  padding: 0 100px;
  margin: auto;
  display: flex;
}
@media all and (max-width: 1500px) {
  #pushQualite {
    padding: 0 100px;
  }
}
@media all and (max-width: 1100px) {
  #pushQualite {
    padding: 0 25px;
    width: 100%;
  }
}
@media all and (max-width: 680px) {
  #pushQualite {
    padding: 0 25px;
    width: 100%;
  }
}
#pushQualite .container {
  width: auto;
  margin-left: 0;
  display: flex;
  margin-bottom: 0;
  justify-content: space-around;
  padding: 0;
}
@media all and (max-width: 1100px) {
  #pushQualite .container {
    display: block;
    height: 100%;
  }
}
@media all and (max-width: 680px) {
  #pushQualite .container {
    width: 100%;
  }
}
#pushQualite .container a {
  box-shadow: none;
  font-weight: 600;
}
#pushQualite .container a:hover {
  opacity: 0.5;
  color: #480d56;
}
#pushQualite .container a:hover i {
  padding-left: 10px;
}
#pushQualite .container .texte {
  padding: 100px;
  width: 45%;
  padding-top: 50px;
}
@media all and (max-width: 1280px) {
  #pushQualite .container .texte {
    padding: 0;
    margin-bottom: 50px;
  }
}
@media all and (min-width: 1099px) {
  #pushQualite .container .texte {
    margin-right: 25px;
  }
  #pushQualite .container .texte h2 {
    margin-top: 0;
  }
}
@media all and (max-width: 1100px) {
  #pushQualite .container .texte {
    margin-bottom: 0;
  }
}
#pushQualite .container .texte h2 {
  text-align: left;
  display: flex;
}
@media all and (max-width: 1100px) {
  #pushQualite .container .texte {
    width: 100%;
    margin-bottom: 25px;
  }
}
@media all and (max-width: 680px) {
  #pushQualite .container .texte {
    text-align: left;
  }
}
#pushQualite .container .video-container {
  text-align: left;
  margin-bottom: 25px;
}
@media all and (min-width: 1099px) {
  #pushQualite .container .video-container {
    margin-top: 50px;
    text-align: left;
  }
}
@media all and (max-width: 680px) {
  #pushQualite .container .video-container iframe {
    width: 100%;
    height: 100%;
  }
}
#pushQualite img {
  padding: 50px 0 50px 50px;
  width: calc(6 * 100% / 10 - 25px);
  height: 100%;
  object-fit: contain;
}
@media all and (max-width: 680px) {
  #pushQualite img {
    padding: 50px 0 0 0;
    width: 100%;
    height: 50%;
  }
}

/*********************

Cycle de conception

********************/
.cycle_concept {
  margin: auto;
  background-size: cover;
  padding-bottom: 25px;
}
@media all and (max-width: 1100px) {
  .cycle_concept {
    padding: 0;
  }
}
@media all and (max-width: 680px) {
  .cycle_concept {
    content: none;
  }
}
.cycle_concept .texte {
  text-align: center;
}
.cycle_concept .texte h2 {
  margin: 0;
  padding: 40px 0;
}
@media all and (max-width: 680px) {
  .cycle_concept .texte h2 {
    padding: 0 0 40px 0;
  }
}
@media all and (max-width: 680px) {
  .cycle_concept .texte {
    text-align: left;
  }
}
.cycle_concept .container {
  margin-bottom: 0;
}
@media all and (max-width: 1280px) {
  .cycle_concept .container {
    width: 80vw;
    margin-left: 10vw;
  }
}
@media all and (max-width: 1100px) {
  .cycle_concept .container {
    width: 100%;
    margin-left: 0;
    padding: 25px;
  }
}
.cycle_concept .container_concept .liste_concept {
  position: relative;
  margin: 0;
  padding-top: 25px;
}
.cycle_concept .container_concept .liste_concept .li {
  width: 450px;
  justify-content: space-around;
}
.cycle_concept .container_concept .liste_concept .odd {
  position: relative;
  display: flex;
  overflow: hidden;
}
@media all and (max-width: 680px) {
  .cycle_concept .container_concept .liste_concept .odd {
    overflow: visible;
  }
}
.cycle_concept .container_concept .liste_concept .odd .block_conception {
  position: relative;
  display: flex;
  height: 125px;
  width: 45%;
  margin-bottom: 25px;
}
.cycle_concept .container_concept .liste_concept .odd .block_conception .overlay {
  width: 100%;
}
@media all and (max-width: 680px) {
  .cycle_concept .container_concept .liste_concept .odd .block_conception .overlay:before {
    content: none;
  }
}
.cycle_concept .container_concept .liste_concept .odd .block_conception .label_concept {
  color: white;
  word-break: normal;
  background: #480d56;
  text-transform: uppercase;
  width: 100%;
  z-index: 100;
}
.cycle_concept .container_concept .liste_concept .odd .block_conception .label_concept h3 {
  padding: 1.5em;
  text-align: center;
  color: white;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
}
.cycle_concept .container_concept .liste_concept .odd .block_conception .label_concept h3:before {
  content: none;
}
.cycle_concept .container_concept .liste_concept .odd .block_conception:hover .overlay:before {
  width: 175px;
  right: 80%;
}
.cycle_concept .container_concept .liste_concept .odd .block_conception:hover i {
  padding-left: 10px;
}
.cycle_concept .container_concept .liste_concept .odd .block_conception .visuel_concept {
  position: relative;
  width: 100%;
}
.cycle_concept .container_concept .liste_concept .odd .block_conception .img_concept {
  position: relative;
  height: 100%;
}
@media all and (max-width: 680px) {
  .cycle_concept .container_concept .liste_concept .odd .block_conception .img_concept {
    width: 100%;
  }
}
.cycle_concept .container_concept .liste_concept .odd .buble {
  width: 100%;
  position: absolute;
  left: 0em;
  margin-top: 50px;
}
.cycle_concept .container_concept .liste_concept .even {
  position: relative;
  display: flex;
  justify-content: flex-end;
  overflow: hidden;
}
@media all and (max-width: 680px) {
  .cycle_concept .container_concept .liste_concept .even {
    overflow: visible;
  }
}
.cycle_concept .container_concept .liste_concept .even .block_conception {
  position: relative;
  display: flex;
  height: 120px;
  width: 45%;
  margin-bottom: 25px;
}
.cycle_concept .container_concept .liste_concept .even .block_conception .overlay {
  width: 100%;
}
@media all and (max-width: 680px) {
  .cycle_concept .container_concept .liste_concept .even .block_conception .overlay:before {
    content: none;
  }
}
.cycle_concept .container_concept .liste_concept .even .block_conception .label_concept {
  color: white;
  word-break: normal;
  background: #480d56;
  width: 100%;
  text-transform: uppercase;
  z-index: 100;
}
.cycle_concept .container_concept .liste_concept .even .block_conception .label_concept h3 {
  padding: 1.5em;
  text-align: center;
  color: white;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
}
.cycle_concept .container_concept .liste_concept .even .block_conception .label_concept h3:before {
  content: none;
}
.cycle_concept .container_concept .liste_concept .even .block_conception:hover .overlay:before {
  width: 175px;
  right: 80%;
}
.cycle_concept .container_concept .liste_concept .even .block_conception:hover i {
  padding-left: 10px;
}
.cycle_concept .container_concept .liste_concept .even .block_conception .visuel_concept {
  position: relative;
  width: 100%;
}
.cycle_concept .container_concept .liste_concept .even .block_conception .img_concept {
  position: relative;
  height: 100%;
}
@media all and (max-width: 680px) {
  .cycle_concept .container_concept .liste_concept .even .block_conception .img_concept {
    width: 100%;
  }
}
.cycle_concept .container_concept .liste_concept .even .buble {
  width: 100%;
  position: absolute;
  right: 0em;
  margin-top: 50px;
}
.cycle_concept .container_concept .liste_concept .bulle {
  display: flex;
  height: 40px;
  width: 40px;
  align-self: center;
  border: 2px solid #858585;
  border-radius: 50%;
  background: #f2f2f2;
  align-items: center;
  color: #480d56;
  font-weight: 600;
  margin-left: auto;
  margin-right: auto;
  justify-content: center;
}
@media all and (max-width: 680px) {
  .cycle_concept .container_concept .liste_concept .odd .block_conception {
    width: 100%;
    margin-bottom: 25px;
    height: auto;
  }
  .cycle_concept .container_concept .liste_concept .even .block_conception {
    width: 100%;
    margin-bottom: 25px;
    height: auto;
  }
  .cycle_concept .container_concept .liste_concept .bulle {
    display: none;
  }
}
.cycle_concept .container_concept .liste_concept:before {
  content: "";
  position: absolute;
  z-index: 0;
  top: 100px;
  bottom: 0;
  left: 50%;
  height: 85%;
  border-left: 2px solid #858585;
  -webkit-transform: translate(-50%);
  transform: translate(-50%);
}
@media all and (max-width: 680px) {
  .cycle_concept .container_concept .liste_concept:before {
    content: none;
  }
}

/****************************
*****************************

Pushs pied de page

*****************************
****************************/
#pushFoot {
  width: auto !important;
  padding: 38.5px 100px 0 100px;
}
@media all and (max-width: 1100px) {
  #pushFoot {
    margin: 0;
    padding: 38.5px 25px 0 25px;
  }
}
#pushFoot #node-other,
#pushFoot #node-list {
  padding: 0;
}
#pushFoot #node-other .container,
#pushFoot #node-list .container {
  width: auto;
  margin-left: 0;
}
#pushFoot #node-other .container ul,
#pushFoot #node-list .container ul {
  left: -6px;
  width: 100%;
  left: 0;
}
#pushFoot #node-other .container .liste_push li,
#pushFoot #node-list .container .liste_push li {
  width: calc(50% - 20px);
  padding: 25px;
  padding-bottom: 0;
  background-size: cover;
  background: #480d56;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
@media all and (max-width: 1100px) {
  #pushFoot #node-other .container .liste_push li,
  #pushFoot #node-list .container .liste_push li {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
    background-size: cover;
  }
}
@media all and (max-width: 680px) {
  #pushFoot #node-other .container .liste_push li,
  #pushFoot #node-list .container .liste_push li {
    width: 100%;
  }
}
#pushFoot #node-other .container .liste_push li .pushBlock,
#pushFoot #node-list .container .liste_push li .pushBlock {
  width: 100%;
}
#pushFoot #node-other .container .liste_push li .pushBlock h3,
#pushFoot #node-list .container .liste_push li .pushBlock h3 {
  color: #ffffff;
  text-transform: uppercase;
  text-align: left;
}
#pushFoot #node-other .container .liste_push li .pushBlock h3:before,
#pushFoot #node-list .container .liste_push li .pushBlock h3:before {
  background: #ffffff;
}
#pushFoot #node-other .container .liste_push li .pushBlock:before,
#pushFoot #node-list .container .liste_push li .pushBlock:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
}
#pushFoot #node-other .container .liste_push li .item-readmore,
#pushFoot #node-list .container .liste_push li .item-readmore {
  margin: auto;
  margin-left: 0;
  margin-bottom: 25px;
}
#pushFoot #node-other .container .liste_push li .item-readmore i:before,
#pushFoot #node-list .container .liste_push li .item-readmore i:before {
  top: 4px;
}
#pushFoot #node-other .container .liste_push li:nth-child(even),
#pushFoot #node-list .container .liste_push li:nth-child(even) {
  margin-right: 0;
}
#pushFoot #node-other .container .liste_push li:last-child,
#pushFoot #node-list .container .liste_push li:last-child {
  background-color: #515153;
}

.list:nth-of-type(odd) {
  margin: 0 !important;
}

.list:nth-of-type(even) {
  margin-right: 0 !important;
}

article > header {
  height: 60vh;
  width: 100vw;
  position: relative;
  overflow: hidden;
}
@media all and (max-width: 1100px) {
  article > header {
    height: 80vh;
  }
}
@media screen and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  article > header {
    height: 60vh;
  }
}
@media screen and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  article > header .img_implantation {
    top: 185px;
  }
}
article > header img {
  top: 0px;
  position: absolute;
}
@media screen and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  article > header img {
    min-width: 100%;
    min-height: 100%;
    left: 50%;
    transform: translate(-50%, -50%);
    height: auto;
    position: relative;
  }
}
@media only screen and (-ms-high-contrast: none) and (max-width: 1100px), only screen and (-ms-high-contrast: active) and (max-width: 1100px) {
  article > header img {
    top: 0;
  }
}
article > header h1 {
  color: #ffffff;
}
article > header .positionH1 {
  z-index: 10;
  color: #ffffff;
  padding: 0 100px;
  padding-top: 18vh;
}
@media all and (max-width: 1100px) {
  article > header .positionH1 {
    padding-left: 75px;
    padding-top: 21vh;
  }
}
@media all and (max-width: 680px) {
  article > header .positionH1 {
    padding: 21vh 0 0 25px;
  }
}
article > header .positionH1 h1 {
  margin: 0px;
  margin-left: 75px;
}
@media all and (max-width: 1100px) {
  article > header .positionH1 h1 {
    margin-left: 0;
  }
}
article > header .positionH1 .lien-retour {
  margin-left: 75px;
}
@media all and (max-width: 680px) {
  article > header .positionH1 .lien-retour {
    margin-left: 0;
  }
}

@media screen and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  .page-404 article > header img {
    top: 50%;
  }
}

.push {
  width: 50vw;
  margin-left: 25vw;
  margin: auto;
}
@media all and (max-width: 1280px) {
  .push {
    width: 80vw;
    margin-left: 10vw;
  }
}
@media all and (max-width: 1100px) {
  .push {
    width: 100%;
    padding: 0 25px;
    margin-left: 0;
  }
}
.push strong {
  font-weight: bold;
}
.push li {
  list-style-type: disc;
  list-style-position: outside;
  padding-left: 0px;
  margin-left: 25px;
  text-align: left;
  line-height: 150%;
}
.push a {
  text-decoration: none;
  color: #480d56;
  box-shadow: inset 0 -2px 0 0 #480d56;
  display: inline-block;
  transition: all 0.2s ease-in-out;
  padding: 0 3px;
}
.push a:hover {
  border: none;
  box-shadow: inset 0 -75px 0 0 #480d56;
  color: #ffffff;
}
.push .nolink a {
  box-shadow: none;
}
.push .nolink a:hover {
  box-shadow: none;
}
.push h3 {
  text-align: center;
  margin: 25px auto;
}
.push h2 {
  text-align: center;
}
.push h2 + p {
  margin: 0 auto auto;
}
.push h3 {
  color: #480d56;
}

#pushPresta .container {
  width: 25vw;
  margin-left: 50px;
  margin-bottom: 100px;
}
@media all and (max-width: 1280px) {
  #pushPresta .container {
    width: 100%;
    padding-top: 10px;
    margin: 0 50px;
    margin-bottom: 100px;
  }
}
@media all and (max-width: 1280px) {
  #pushPresta .container {
    margin: 0;
  }
}
@media all and (max-width: 680px) {
  #pushPresta .container {
    margin: 0 10px;
  }
}
#pushPresta .container h2 {
  text-align: left;
  margin: 25px 0;
}

.container {
  width: 50vw;
  margin-left: 25vw;
  margin-bottom: 100px;
}
@media all and (max-width: 1280px) {
  .container {
    width: 80vw;
    margin-left: 10vw;
  }
}
@media all and (max-width: 1100px) {
  .container {
    width: 100%;
    padding: 0 25px;
    margin-left: 0;
  }
}
.container strong {
  font-weight: bold;
}
.container a {
  text-decoration: none;
  color: #480d56;
  box-shadow: inset 0 -2px 0 0 #480d56;
  display: inline-block;
  transition: all 0.2s ease-in-out;
  padding: 0 3px;
}
.container a:hover {
  border: none;
  box-shadow: inset 0 -75px 0 0 #480d56;
  color: #ffffff;
}
.container .nolink a {
  box-shadow: none;
}
.container .nolink a:hover {
  box-shadow: none;
}
.container h3 {
  text-align: center;
  margin: 12.5px 0;
}
.container h2 {
  text-align: center;
}
.container h3 {
  color: #480d56;
}
.container h3 + p,
.container h2 + p {
  margin: 0 auto auto;
}
.container .position div {
  display: flex;
  flex-direction: column;
  position: relative;
  align-items: flex-start;
}
.container .position div h1,
.container .position div h2,
.container .position div h3,
.container .position div h4 {
  align-self: center;
}
.container .position div li {
  list-style-type: disc;
  list-style-position: outside;
  padding-left: 0px;
  margin-left: 25px;
  text-align: left;
}
.container .position div li > ul li {
  list-style-type: circle;
}
.container .position div img {
  padding: 0 0;
  height: auto;
  margin: auto;
}
.container .position div p {
  width: 100%;
  height: 100%;
}
.container .position div .flexWrapper {
  display: flex;
  flex-wrap: wrap;
}

#node-specificpage section #pushProduit h2 {
  margin: 0px 0 25px 0;
}
@media all and (max-width: 1100px) {
  #node-specificpage section .push {
    width: 100%;
    padding: 0 25px;
    margin-left: 0;
  }
}
#node-specificpage section .push h2 {
  text-align: center;
  font-size: 20px;
  margin: 40px 0;
  line-height: 120%;
}

.page-node-type-prestations #prestations .container {
  margin-bottom: 0;
}
.page-node-type-prestations #prestations .container p > img {
  margin: 0;
  display: block;
}
@media all and (max-width: 680px) {
  .page-node-type-prestations #prestations .container {
    margin: auto;
    display: block;
  }
}
.page-node-type-prestations #prestations .container ul {
  list-style: disc;
  width: 100%;
}
.page-node-type-prestations #prestations .container ul li ul {
  list-style: circle;
}
.page-node-type-prestations #prestations .container #node-other {
  padding: 0;
}
.page-node-type-prestations #footer {
  padding: 0;
}

#pushPrestations h2 {
  margin: 40px 0;
}

/**********************************
***********************************

CSS SPE COLONNES

***********************************
**********************************/
.node--type-page-simple .bloc-text .container {
  margin-bottom: 0;
}

.col-container {
  display: flex;
  line-height: 1.7em;
  justify-content: center;
}
@media all and (max-width: 680px) {
  .col-container {
    display: block;
  }
  .col-container .col {
    height: 100%;
    width: calc(1 * 100% / 1 - 0px);
    margin: 0px;
    margin-left: 0;
  }
}
.col-container .col,
.col-container .col2,
.col-container .col3 {
  height: 100%;
  width: 100%;
  margin: 0;
}
.col-container .col img,
.col-container .col2 img,
.col-container .col3 img {
  width: 100%;
  height: auto;
}
@media all and (max-width: 1100px) {
  .col-container .col img,
  .col-container .col2 img,
  .col-container .col3 img {
    margin: 12.5px 0;
  }
}

.col3 .col img {
  width: calc(3 * (100% - 20px) / 3 + 0px);
}

.col2 .col:nth-child(even) {
  margin-left: 25px;
}
@media all and (max-width: 680px) {
  .col2 .col:nth-child(even) {
    margin-left: 0;
  }
}
.col2 .col {
  height: 100%;
}
@media all and (max-width: 680px) {
  .col2 .col {
    width: calc(1 * 100% / 1 - 0px);
    margin: 0px;
    margin-left: 0;
  }
}

img[data-align=center] {
  display: block;
  margin: auto;
}

p img {
  height: auto;
  margin: auto;
  display: block;
}

#tarteaucitronRoot #tarteaucitronAlertBig {
  background: #480d56 !important;
}

header .date-actu,
header .lien-retour {
  position: relative;
  z-index: 1000;
  color: #ffffff;
  display: block;
}
header .date-actu {
  text-transform: uppercase;
}
header .lien-retour {
  left: 25px;
}
header .lien-retour:hover i {
  left: -35px;
}
header .lien-retour i {
  transform: rotate(180deg);
  display: block;
  position: absolute;
  left: -25px;
  bottom: 2px;
}

#pagination {
  text-align: center;
}

#more-listing {
  display: flex;
  justify-content: space-between;
  width: 100%;
  flex-direction: row;
  padding-top: 25px;
}

#mapImplantations {
  height: 500px;
  width: calc(100% - 200px);
  margin: 0 0 50px 100px;
}
@media all and (max-width: 1100px) {
  #mapImplantations {
    width: calc(100% - 50px);
    margin: 0 0 50px 25px;
  }
}
#mapImplantations .implantationWindows {
  font-size: 14px;
}
#mapImplantations .implantationWindows .icon-placeholder {
  font-size: 36px;
}
#mapImplantations .implantationWindows a {
  display: inline-block;
  margin-top: 5px;
}
#mapImplantations .implantationWindows .wrapper {
  display: flex;
}

#pushImplantations {
  margin-bottom: 75px;
  margin-top: 50px;
}

.listingImplantations {
  margin: 0;
}

.implantationWindows.canalisation h2:before,
.activitie.canalisation h2:before {
  background-color: #006fba;
}
.implantationWindows.canalisation h3,
.implantationWindows.canalisation i,
.implantationWindows.canalisation .contact .nom,
.implantationWindows.canalisation .lieu,
.activitie.canalisation h3,
.activitie.canalisation i,
.activitie.canalisation .contact .nom,
.activitie.canalisation .lieu {
  color: #006fba;
}
.implantationWindows.eclairage h2:before,
.activitie.eclairage h2:before {
  background-color: #9fae30;
}
.implantationWindows.eclairage h3,
.implantationWindows.eclairage i,
.implantationWindows.eclairage .contact .nom,
.implantationWindows.eclairage .lieu,
.activitie.eclairage h3,
.activitie.eclairage i,
.activitie.eclairage .contact .nom,
.activitie.eclairage .lieu {
  color: #9fae30;
}
.implantationWindows.fonderie h2:before,
.activitie.fonderie h2:before {
  background-color: #480d56;
}
.implantationWindows.fonderie h3,
.implantationWindows.fonderie i,
.implantationWindows.fonderie .contact .nom,
.implantationWindows.fonderie .lieu,
.activitie.fonderie h3,
.activitie.fonderie i,
.activitie.fonderie .contact .nom,
.activitie.fonderie .lieu {
  color: #480d56;
}
.implantationWindows.mecanique h2:before,
.activitie.mecanique h2:before {
  background-color: #480d56;
}
.implantationWindows.mecanique h3,
.implantationWindows.mecanique i,
.implantationWindows.mecanique .contact .nom,
.implantationWindows.mecanique .lieu,
.activitie.mecanique h3,
.activitie.mecanique i,
.activitie.mecanique .contact .nom,
.activitie.mecanique .lieu {
  color: #480d56;
}
.implantationWindows.mobilier-urbain h2:before,
.activitie.mobilier-urbain h2:before {
  background-color: #ffbe32;
}
.implantationWindows.mobilier-urbain h3,
.implantationWindows.mobilier-urbain i,
.implantationWindows.mobilier-urbain .contact .nom,
.implantationWindows.mobilier-urbain .lieu,
.activitie.mobilier-urbain h3,
.activitie.mobilier-urbain i,
.activitie.mobilier-urbain .contact .nom,
.activitie.mobilier-urbain .lieu {
  color: #ffbe32;
}
.implantationWindows.realisations h2:before,
.activitie.realisations h2:before {
  background-color: #f26d28;
}
.implantationWindows.realisations h3,
.implantationWindows.realisations i,
.implantationWindows.realisations .contact .nom,
.implantationWindows.realisations .lieu,
.activitie.realisations h3,
.activitie.realisations i,
.activitie.realisations .contact .nom,
.activitie.realisations .lieu {
  color: #f26d28;
}

.implantation {
  border-bottom: 1px solid rgba(72, 13, 86, 0.2);
  padding: 25px 0;
  width: 100%;
}
.implantation h3 {
  color: #480d56;
  font-weight: 600;
}
.implantation i {
  color: #480d56;
  font-size: 20px;
}
.implantation i.icon-placeholder {
  font-size: 36px;
}
.implantation .lieu {
  font-style: italic;
  color: #480d56;
  display: flex;
  align-items: center;
  padding-bottom: 10px;
}
.implantation .lieu i:before {
  top: 4px;
}
.implantation .resume {
  padding-bottom: 25px;
}
.implantation .contact .coordonnees,
.implantation .contact .nom {
  display: flex;
  flex-direction: column;
  margin-right: 25px;
}
.implantation .contact .coordonnees span,
.implantation .contact .nom span {
  margin-bottom: 10px;
  display: flex;
  align-items: center;
}
.implantation .contact .nom {
  color: #480d56;
  font-style: italic;
}
.implantation .contact .nom span {
  color: #858585;
  margin-top: 10px;
}

.implantations .listing #node-list .container .activitie .listingImplantations .implantation h3 {
  text-align: left;
}
.implantations .listing #node-list .container .activitie .listingImplantations .implantation h3:before {
  content: none;
}

#block-formulairedecontactglobaldusite-2 {
  margin-bottom: 75px;
  margin-top: 50px;
  width: 50vw;
  margin-left: 25vw;
  margin: auto;
}
@media all and (max-width: 1100px) {
  #block-formulairedecontactglobaldusite-2 {
    padding: 0 25px;
    width: 100%;
    margin: 0;
  }
}

.toRight {
  width: 50vw;
  margin-left: 25vw;
  margin: auto;
  text-align: right;
}
.toRight span {
  color: red;
}

.page--contact .node-content {
  margin-top: 75px;
}
.page--contact .node-content .container h2 {
  text-align: left !important;
}
.page--contact .node-content .container .sitemap .content {
  line-height: 180%;
}
.page--contact .node-content .container .sitemap .content ul {
  list-style: disc;
}
.page--contact .node-content .container .sitemap .content ul .expanded ul {
  list-style: circle;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJhc2UvX25vcm1hbGl6ZS5zY3NzIiwiYmFzZS9fZm9udC5zY3NzIiwiYmFzZS9faWNvbnMuc2NzcyIsIi4uL3ZlbmRvci9zYXNzLXF1ZXJpZXMvc2Fzcy1xdWVyaWVzLnNjc3MiLCJ2ZW5kb3IvX3Nhc3MtcXVlcmllcy5zY3NzIiwidmVuZG9yL19jb29raWVzcGxlYXNlLnNjc3MiLCJiYXNlL192YXJpYWJsZXMuc2NzcyIsInZlbmRvci9fbGlnaHRib3guc2NzcyIsInZlbmRvci9fc2xpY2suc2NzcyIsInZlbmRvci9fYW5pbWF0ZS5zY3NzIiwiYmFzZS9fY29zbWV0aWMuc2NzcyIsImJhc2UvX2Jvb3RzdHJhcC5zY3NzIiwiYmFzZS9fYW5pbWF0aW9ucy5zY3NzIiwiYmFzZS9fZ3JpZC5zY3NzIiwiY29tcG9uZW50cy9fbW9kYWwuc2NzcyIsImNvbXBvbmVudHMvX2Zvcm0uc2NzcyIsImNvbXBvbmVudHMvX3RhcnRlYXVjaXRyb24uc2NzcyIsImxheW91dC9faGVhZGVyLnNjc3MiLCJsYXlvdXQvX2xpc3Rpbmcuc2NzcyIsImxheW91dC9fbWVudS5zY3NzIiwibGF5b3V0L19jb250ZW50LnNjc3MiLCJsYXlvdXQvX2Zvb3Rlci5zY3NzIiwicGFnZXMvX2hvbWUuc2NzcyIsInBhZ2VzL19wYWdlLnNjc3MiLCJwYWdlcy9fYWN0dWFsaXRlcy5zY3NzIiwicGFnZXMvX2ltcGxhbnRhdGlvbnMuc2NzcyIsInBhZ2VzL19zaXRlbWFwLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtBQUFBO0FBSUE7RUFDRTs7O0FBR0Y7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFXVTtFQUNSOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtFQUlFOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtFQUNFO0VBQ0E7OztBQUdGO0FBQUE7QUFBQTtBQUlBO0VBQ0U7OztBQUdGO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtFQUVFOzs7QUFHRjtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBSUE7RUFDRTs7O0FBR0Y7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0VBRUU7OztBQUdGO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtBQUFBO0VBRUU7OztBQUdGO0FBQUE7QUFBQTtBQUlBO0FBQUE7RUFFRTs7O0FBR0Y7QUFBQTtBQUFBO0FBSUE7RUFDRTs7O0FBR0Y7QUFBQTtBQUFBO0FBQUE7QUFLQTtFQUNFO0VBQ0E7OztBQUdGO0FBQUE7QUFBQTtBQUlBO0VBQ0U7RUFDQTs7O0FBR0Y7QUFBQTtBQUFBO0FBSUE7RUFDRTs7O0FBR0Y7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7OztBQUdGO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFJQTtFQUNFOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtFQUNFOzs7QUFHRjtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQTtFQUlFO0VBQ0E7OztBQUdGO0FBQUE7QUFBQTtBQUlBO0VBQ0U7OztBQUdGO0FBQUE7QUFBQTtBQUFBO0FBS0E7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtFQUlFOzs7QUFHRjtBQUFBO0FBQUE7QUFJQTtFQUNFOzs7QUFHRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFBQTtBQUFBLFNBRVM7RUFDUDs7O0FBR0Y7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQSxXQUdXO0VBQ1Q7OztBQUdGO0FBQUE7QUFBQTtBQUFBO0FB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UjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7QUFDQTtFQUNBOzs7QUN6TUo7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUNBO0VBQ0k7O0FBRUo7RUFDSTtFQUNBOzs7QUFJUjtBQUFBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFDQTtFQUVJO0VBQ0E7O0FBRUo7RUFDSTs7QUFFSjtFQUNJOzs7QUFJUjtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUVKO0VBQ0k7O0FBRUo7RUFDSTs7QUFaUjtFQWNJOztBQUNBO0VBQ0k7O0FBRUo7RUFDSTs7QUFFSjtFQUNJOztBQUVKO0VBQ0k7RUFDQTtFQUNBOzs7QUFJUjtFQUNJOzs7QUN6Rko7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQTtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7OztBQUdGO0FBQUE7QUFBQTtBQUFBO0VBSUU7OztBQUdGO0VBQ0U7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTs7O0FBR0Y7QUFFQTtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7OztBQUdGO0FBRUE7RUFDRTtJQUNFOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTs7RUFHRjtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTs7RUFHRjtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7SUFDRTtJQUNBO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7RUFHRjtJQUNFOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7SUFDRTs7RUFHRjtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTtJQUNBOztFQUdGO0lBQ0U7SUFDQTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTtJQUNBOztFQUdGO0lBQ0U7SUFDQTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTtJQUNBOztFQUdGO0lBQ0U7SUFDQTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTtJQUNBOztFQUdGO0lBQ0U7SUFDQTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTtJQUNBOztFQUdGO0lBQ0U7SUFDQTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBOztFQUdGO0lBQ0U7SUFDQTtJQUNBOztFQUdGO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTtJQUNBOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0FBRUE7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtBQUVBO0VBQ0U7SUFDRTs7RUFHRjtJQUNFO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTs7RUFHRjtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7SUFDQTtJQUNBOzs7QUFJSjtFQUNFOzs7QUFHRjtFQUNFO0lBQ0U7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBO0lBQ0E7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7SUFDRTtJQUNBO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBO0lBQ0E7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7SUFDQTs7O0FBSUo7RUFDRTs7O0FDeGlERjtFQUNJO0VBQ0EsWUpPUzs7O0FJSGI7RUFDSTs7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UTs7O0FuQjdWUjtFbUJrVkE7SUFjUSxNaEIzWE47OztBSDJCRjtFbUJrVkE7SUFpQlE7SUFDQSxTaEI3WEo7SWdCOFhJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7O0FBRUo7RUFDSTs7QUFDQTtFQUNJO0VBQ0E7RUFDQTs7QUFFSjtFQUNJO0VBQ0E7O0FBRUo7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdSO0VBQ0k7RUFDQTtFQUNBOztBQUNBO0VBQ0k7O0FBSUo7RUFDSTtFQUNBOztBQUhSO0VBS0k7RUFDQTtFQUNBOztBQUNBO0VBQ0k7O0FBSUk7QUFBQTtFQUdJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBTVo7RUFDSTtFQUNBOztBQUhSO0VBS0k7RUFDQTtFQUNBOztBQUNBO0VBQ0k7RUFDQTs7QUFJSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBTVo7RUFDSTtFQUNBOztBQUhSO0VBS0k7RUFDQTtFQUNBOztBQUNBO0VBQ0k7RUFDQTs7QUFJSTtBQUFBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFNWjtFQUNJO0VBQ0E7O0FBSFI7RUFLSTtFQUNBO0VBQ0E7O0FBQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFJSTtBQUFBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFNWjtFQUNJO0VBQ0E7O0FBSFI7RUFLSTtFQUNBO0VBQ0E7O0FBQ0E7RUFDSTtFQUNBOztBQUlJO0FBQUE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUtoQjtFQUNJO0VBQ0E7RUFDQTs7QUFDQTtFQUNJOztBQUVKO0VBQ0k7RUFDQTs7QUFJSTtBQUFBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFNWjtFQUNJO0VBQ0E7O0FBSFI7RUFLSTtFQUNBO0VBQ0E7O0FBQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFJSTtBQUFBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFNWjtFQUNJOztBQUVKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztB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OztBQUNBO0VBQ0k7O0FBRUk7RUFDSSIsImZpbGUiOiJtYWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBjaGFyc2V0ICdVVEYtOCc7XG5cbi8qISBub3JtYWxpemUuY3NzIHY0LjAuMCB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyoqXG4gKiAxLiBDaGFuZ2UgdGhlIGRlZmF1bHQgZm9udCBmYW1pbHkgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIElFIGFuZCBpT1MuXG4gKi9cblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvKiAxICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSwgYW5kIEZpcmVmb3guXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAqL1xuXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLCAvKiAxICovXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxubWFpbiwgLyogMiAqL1xubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHsgLyogMSAqL1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAqL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gaU9TIDQtNy5cbiAqL1xuXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICBkaXNwbGF5OiBub25lO1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC0uXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAqL1xuXG50ZW1wbGF0ZSwgLyogMSAqL1xuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgb3V0bGluZSBvbiBmb2N1c2VkIGxpbmtzIHdoZW4gdGhleSBhcmUgYWxzbyBhY3RpdmUgb3IgaG92ZXJlZFxuICogaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cblxuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgb3V0bGluZS13aWR0aDogMDtcbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG59XG5cbi8qKlxuICogUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc3R5bGUgaW4gQW5kcm9pZCA0LjMtLlxuICovXG5cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGJhY2tncm91bmQgYW5kIGNvbG9yIGluIElFIDktLlxuICovXG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICBjb2xvcjogIzAwMDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIG92ZXJmbG93IGluIElFLlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IG1hcmdpbiBpbiBJRSA4LlxuICovXG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgaGVpZ2h0OiAwOyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250OiBpbmhlcml0O1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvbnQgd2VpZ2h0IHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LCAvKiAxICovXG5zZWxlY3QgeyAvKiAyICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIFNhZmFyaS5cbiAqIDEuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbnNlbGVjdCxcbnRleHRhcmVhIHsgLyogMSAqL1xuICBtYXJnaW46IDA7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbmhlcml0ZW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRlbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHsgLyogMSAqL1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiBDaGFuZ2UgdGhlIGN1cnNvciBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBkZWZhdWx0IGN1cnNvciB0byBkaXNhYmxlZCBlbGVtZW50cyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuXG5bZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKipcbiAqIDEuIFByZXZlbnQgYSBXZWJLaXQgYnVnIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYCBhbmQgYHZpZGVvYFxuICogICAgY29udHJvbHMgaW4gQW5kcm9pZCA0LlxuICogMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MuXG4gKi9cblxuYnV0dG9uLFxuaHRtbCBbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5pbnB1dDotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cblxuLyoqXG4gKiBDaGFuZ2UgdGhlIGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZyBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxubGVnZW5kIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICBkaXNwbGF5OiB0YWJsZTsgLyogMSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMyAqL1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRS5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLS5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC0uXG4gKi9cblxuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBvZiBzZWFyY2ggaW5wdXRzIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGFuZCBjYW5jZWwgYnV0dG9ucyBpbiBDaHJvbWUgb24gT1MgWCBhbmRcbiAqIFNhZmFyaSBvbiBPUyBYLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59IiwiQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdtdWxpZXh0cmFib2xkJztcbiAgICBzcmM6IHVybCgnLi4vZm9udHMvbXVsaS1leHRyYWJvbGQtd2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcbiAgICAgICAgIHVybCgnLi4vZm9udHMvbXVsaS1leHRyYWJvbGQtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ211bGlyZWd1bGFyJztcbiAgICBzcmM6IHVybCgnLi4vZm9udHMvbXVsaS1yZWd1bGFyLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgICB1cmwoJy4uL2ZvbnRzL211bGktcmVndWxhci13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuJWZvbnQtcmVndWxhciB7XG4gIGZvbnQtZmFtaWx5OiAnTXVsaScsIFRhaG9tYSwgVmVyZGFuYSwgU2Vnb2UsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG5cbiVmb250LXNlY29uZGFyeSB7XG4gIGZvbnQtZmFtaWx5OiAnTXVsaScsIFRhaG9tYSwgVmVyZGFuYSwgU2Vnb2UsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbiVmb250LXNlY29uZGFyeS1ib2xkIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpJywgVGFob21hLCBWZXJkYW5hLCBTZWdvZSwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cbiIsIkBjaGFyc2V0ICdVVEYtOCc7XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnaWNvbnMnO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIHNyYzogdXJsKCcuLi9mb250cy9pY29ucy5lb3QnKTtcbiAgICBzcmM6IHVybCgnLi4vZm9udHMvaWNvbnMuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW90JyksXG4gICAgICAgICB1cmwoJy4uL2ZvbnRzL2ljb25zLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICAgIHVybCgnLi4vZm9udHMvaWNvbnMudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuICAgICAgICAgdXJsKCcuLi9mb250cy9pY29ucy5zdmcjaWNvbnMnKSBmb3JtYXQoJ3N2ZycpO1xufVxuXG4laWNvbiB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmb250LWZhbWlseTogJ2ljb25zJztcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC4yZW07XG4gICAgICAgIG1hcmdpbi1yaWdodDogLjJlbTtcbiAgICAgICAgc3BlYWs6IG5vbmU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgfVxufVxuXG4laWNvbi1lbnZlbG9wZSwgLmljb24tZW52ZWxvcGUgeyBAZXh0ZW5kICVpY29uOyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGVhMDEnOyB9fVxuJWljb24tZmFjZWJvb2stbG9nbywgLmljb24tZmFjZWJvb2stbG9nbyB7IEBleHRlbmQgJWljb247ICY6YmVmb3JlIHsgY29udGVudDogJ1xcZWEwMic7IH19XG4laWNvbi1nb29nbGUtcGx1cywgLmljb24tZ29vZ2xlLXBsdXMgeyBAZXh0ZW5kICVpY29uOyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGVhMDMnOyB9fVxuJWljb24tbGlua2VkaW4tbG9nbywgLmljb24tbGlua2VkaW4tbG9nbyB7IEBleHRlbmQgJWljb247ICY6YmVmb3JlIHsgY29udGVudDogJ1xcZWEwNCc7IH19XG4laWNvbi1waG9uZS1jYWxsLCAuaWNvbi1waG9uZS1jYWxsIHsgQGV4dGVuZCAlaWNvbjsgJjpiZWZvcmUgeyBjb250ZW50OiAnXFxlYTA1JzsgfX1cbiVpY29uLXBsYWNlaG9sZGVyLCAuaWNvbi1wbGFjZWhvbGRlciB7IEBleHRlbmQgJWljb247ICY6YmVmb3JlIHsgY29udGVudDogJ1xcZWEwNic7IH19XG4laWNvbi1yaWdodC1hcnJvdywgLmljb24tcmlnaHQtYXJyb3cgeyBAZXh0ZW5kICVpY29uOyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGVhMDcnOyB9fVxuJWljb24tc21hcnRwaG9uZS1jYWxsLCAuaWNvbi1zbWFydHBob25lLWNhbGwgeyBAZXh0ZW5kICVpY29uOyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGVhMDgnOyB9fVxuJWljb24tdGFyZ2V0LWNvbmNlbnRyaWMtY2lyY2xlcy1zeW1ib2wsIC5pY29uLXRhcmdldC1jb25jZW50cmljLWNpcmNsZXMtc3ltYm9sIHsgQGV4dGVuZCAlaWNvbjsgJjpiZWZvcmUgeyBjb250ZW50OiAnXFxlYTA5JzsgfX1cbiVpY29uLXR3aXR0ZXItbG9nby1zaWxob3VldHRlLCAuaWNvbi10d2l0dGVyLWxvZ28tc2lsaG91ZXR0ZSB7IEBleHRlbmQgJWljb247ICY6YmVmb3JlIHsgY29udGVudDogJ1xcZWEwYSc7IH19XG4laWNvbi1sZWN0dXJlLCAuaWNvbi1sZWN0dXJlIHsgQGV4dGVuZCAlaWNvbjsgJjpiZWZvcmUgeyBjb250ZW50OiAnXFxlYTBiJzsgfX1cbiVpY29uLW1haWwtc2VuZCwgLmljb24tbWFpbC1zZW5kIHsgQGV4dGVuZCAlaWNvbjsgJjpiZWZvcmUgeyBjb250ZW50OiAnXFxlYTBjJzsgfX1cbiVpY29uLW5ldHdvcmssIC5pY29uLW5ldHdvcmsgeyBAZXh0ZW5kICVpY29uOyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGVhMGQnOyB9fVxuJWljb24tcHJpbnRlci10b29sLCAuaWNvbi1wcmludGVyLXRvb2wgeyBAZXh0ZW5kICVpY29uOyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGVhMGUnOyB9fVxuJWljb24tbGVmdC1hcnJvdywgLmljb24tbGVmdC1hcnJvdyB7IEBleHRlbmQgJWljb247ICY6YmVmb3JlIHsgY29udGVudDogJ1xcZWEwZic7IH19XG4laWNvbi12aWFkZW8tbG9nbywgLmljb24tdmlhZGVvLWxvZ28geyBAZXh0ZW5kICVpY29uOyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGVhMTAnOyB9fVxuJWljb24tcGxhY2Vob2xkZXItYmxldSwgLmljb24tcGxhY2Vob2xkZXItYmxldSB7IEBleHRlbmQgJWljb247ICY6YmVmb3JlIHsgY29udGVudDogJ1xcZWExMSc7IH19XG4laWNvbi1wbGFjZWhvbGRlci1qYXVuZSwgLmljb24tcGxhY2Vob2xkZXItamF1bmUgeyBAZXh0ZW5kICVpY29uOyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGVhMTInOyB9fVxuJWljb24tcGxhY2Vob2xkZXItb3JhbmdlLCAuaWNvbi1wbGFjZWhvbGRlci1vcmFuZ2UgeyBAZXh0ZW5kICVpY29uOyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGVhMTMnOyB9fVxuJWljb24tcGxhY2Vob2xkZXItdmVydCwgLmljb24tcGxhY2Vob2xkZXItdmVydCB7IEBleHRlbmQgJWljb247ICY6YmVmb3JlIHsgY29udGVudDogJ1xcZWExNCc7IH19XG4laWNvbi1wbGFjZWhvbGRlci12aW9sZXQsIC5pY29uLXBsYWNlaG9sZGVyLXZpb2xldCB7IEBleHRlbmQgJWljb247ICY6YmVmb3JlIHsgY29udGVudDogJ1xcZWExNSc7IH19XG4laWNvbi1wcmludGVyLCAuaWNvbi1wcmludGVyIHsgQGV4dGVuZCAlaWNvbjsgJjpiZWZvcmUgeyBjb250ZW50OiAnXFxlYTE2JzsgfX1cbiVpY29uLWhvbWUsIC5pY29uLWhvbWUgeyBAZXh0ZW5kICVpY29uOyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGVhMTcnOyB9fVxuIiwiLyoqXG4qIFNhc3NRdWVyaWVzXG4qIE1hbmFnZSBtZWRpYS1xdWVyaWVzIGluIFNhc3MgZWFzaWx5LlxuKlxuKiBAYXV0aG9yICAgICBTYW11ZWwgTWFyY2hhbCAoemVzc3gpXG4qIEB2ZXJzaW9uICAgIDAuM1xuKi9cbiRzcS1icmVha3BvaW50czogKFxuICB3aWRlOiAgICAgIDEyMDBweCxcbiAgZGVza3RvcDogICA5OTJweCxcbiAgdGFibGV0OiAgICA3NjhweCxcbiAgbW9iaWxlOiAgICAzMjBweFxuKSAhZGVmYXVsdDtcbiRzcS1tZWRpYTogXCJhbGxcIiAhZGVmYXVsdDtcbiRzcS1kZWJ1ZzogZmFsc2UgIWRlZmF1bHQ7XG4kc3EtbW9iaWxlLWZpcnN0OiB0cnVlICFkZWZhdWx0O1xuXG5AbWl4aW4gbWVkaWEoJGZyb206IGZhbHNlLCAkdW50aWw6IGZhbHNlLCAkYW5kOiBmYWxzZSwgJG1lZGlhOiAkc3EtbWVkaWEsICRtb2JpbGUtZmlyc3Q6ICRzcS1tb2JpbGUtZmlyc3QpXG57XG4gICAgJG1pbjogMDtcbiAgICAkbWF4OiAwO1xuICAgICRxdWVyeTogXCJcIjtcblxuICAgIEBpZiAkZnJvbSB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmcm9tKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1pbjogJGZyb207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1pbjogbWFwLWdldCgkc3EtYnJlYWtwb2ludHMsICRmcm9tKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaWYgJHVudGlsIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJHVudGlsKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1heDogJHVudGlsIC0gMTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWF4OiBtYXAtZ2V0KCRzcS1icmVha3BvaW50cywgJHVudGlsKSAtIDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAkZGlyLW1pbjogXCJtYXhcIjtcbiAgICAkZGlyLW1heDogXCJtaW5cIjtcbiAgICBAaWYgJG1vYmlsZS1maXJzdCB7XG4gICAgICAkZGlyLW1pbjogXCJtaW5cIjtcbiAgICAgICRkaXItbWF4OiBcIm1heFwiO1xuICAgIH1cblxuICAgIEBpZiAkbWluICE9IDAgeyAkcXVlcnk6IFwiI3skcXVlcnl9IGFuZCAoI3skZGlyLW1pbn0td2lkdGg6ICN7JG1pbn0pXCI7IH1cbiAgICBAaWYgJG1heCAhPSAwIHsgJHF1ZXJ5OiBcIiN7JHF1ZXJ5fSBhbmQgKCN7JGRpci1tYXh9LXdpZHRoOiAjeyRtYXh9KVwiOyB9XG4gICAgQGlmICRhbmQgICAgICB7ICRxdWVyeTogXCIjeyRxdWVyeX0gYW5kICN7JGFuZH1cIjsgfVxuXG4gICAgQG1lZGlhICN7JG1lZGlhfSAjeyRxdWVyeX0ge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBpZiAkc3EtZGVidWcge1xuICAgIGJvZHk6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgYm90dG9tOiAtMXB4O1xuICAgICAgICByaWdodDogLTFweDtcbiAgICAgICAgcGFkZGluZzogM3B4O1xuICAgICAgICBmb250LWZhbWlseTogVmVyZGFuYTtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzMztcbiAgICAgICAgY29sb3I6ICMzMzM7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpO1xuICAgICAgICB6LWluZGV4OiA5OTk5OTtcblxuICAgICAgICBAaWYgJHNxLW1vYmlsZS1maXJzdCB7XG4gICAgICAgICAgICAkbWluLWJyZWFrcG9pbnQ6IG1pbihtYXAtdmFsdWVzKCRzcS1icmVha3BvaW50cykuLi4pO1xuICAgICAgICAgICAgQGVhY2ggJGxhYmVsLCAkd2lkdGggaW4gJHNxLWJyZWFrcG9pbnRzIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogJGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiPj0gI3skd2lkdGh9ICgjeyRsYWJlbH0pXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJHVudGlsOiAkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIjwgI3skbWluLWJyZWFrcG9pbnR9ICh1bmRlZmluZWQpXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1heC1icmVha3BvaW50OiBtYXgobWFwLXZhbHVlcygkc3EtYnJlYWtwb2ludHMpLi4uKTtcbiAgICAgICAgICAgIEBlYWNoICRsYWJlbCwgJHdpZHRoIGluICRzcS1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206ICRsYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIjw9ICN7JHdpZHRofSAoI3skbGFiZWx9KVwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCR1bnRpbDogJG1heC1icmVha3BvaW50KSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCI+ICN7JG1heC1icmVha3BvaW50fSAodW5kZWZpbmVkKVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiJHNxLWJyZWFrcG9pbnRzOiAoIHdpZGU6IDE1MDBweCwgZGVza3RvcDogMTI4MHB4LCB0YWJsZXQ6IDExMDBweCwgbW9iaWxlOiA2ODBweCwgc21hbGw6IDQ1MHB4KTtcbiRzcS1tZWRpYTogXCJhbGxcIjtcbiRzcS1kZWJ1ZzogZmFsc2U7XG4kc3EtbW9iaWxlLWZpcnN0OiBmYWxzZTtcbkBpbXBvcnQgXCIuLi8uLi92ZW5kb3Ivc2Fzcy1xdWVyaWVzL3Nhc3MtcXVlcmllc1wiO1xuYm9keTpiZWZvcmUge1xuICAgIGJvdHRvbTogMzdweDtcbn0iLCJAY2hhcnNldCAnVVRGLTgnO1xuI2Nvb2tpZXNwbGVhc2Uge1xuXHR6LWluZGV4OiAxMDAwMDAwO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkbWFpbi1jb2xvcjtcbiAgcCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIH1cbiAgLmNvb2tpZXNwbGVhc2UtYWNjZXB0IHtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiAycHggc29saWQgJHdoaXRlO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cbn1cblxuIiwiQGNoYXJzZXQgJ1VURi04JztcbiRiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuJHdoaXRlOiAjZmZmZmZmO1xuJGJsYWNrOiAjMjIyO1xuJGdyZXktbGlnaHRlcjogI2VmZWZlZjtcbiRncmV5LWxpZ2h0OiAjODU4NTg1O1xuJGdyZXk6ICM0NjQ5NDk7XG4kZ3JleS1kYXJrOiAjNTE1MTUzO1xuJG1haW4tY29sb3ItbGlnaHQ6ICM2YTUyNWM7XG4vLyAkbWFpbi1jb2xvcjogIzVhMzk0NztcbiRtYWluLWNvbG9yOiAjNDgwZDU2O1xuJGNvbG9yLWJsdWU6ICNBQUFGRjg7XG4kY29sb3ItZm9uZGVyaWU6ICM0ODBkNTY7XG4kY29sb3ItZm9uZGVyaWUyOiAjNGYyNjg2O1xuJGNvbG9yLW1lY2FuaXF1ZTogIzQ4MGQ1NjtcbiRjb2xvci1jYW5hbGlzYXRpb246ICMwMDZmYmE7XG4kY29sb3ItM2Q6ICNmMjZkMjg7XG4kY29sb3ItbW9iaWxpZXI6ICNmZmJlMzI7XG4kY29sb3ItZWNsYWlyYWdlOiAjOWZhZTMwO1xuJGRlZmF1bHQtZm9udC1zaXplOiAxNnB4O1xuJHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4kZ2lhbnQ6IDEwMHB4O1xuJGJpZzogNzVweDtcbiRtZWRpdW06IDUwcHg7XG4kc21hbGw6IDI1cHg7XG4kc2tldzogc2tld1goMjJkZWcpO1xuJGRpYXBvcmFtYS1oZWlnaHQ6IDYwdmg7XG4kaXRlbS1oZWlnaHQ6IDQyNXB4OyIsIi8qIFByZWxvYWQgaW1hZ2VzICovXG5cbmJvZHk6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IHVybCgvdGhlbWVzL2N1c3RvbS92aG1mb25kZXJpZS9wdWJsaWMvaW1hZ2VzL2Nsb3NlLnBuZykgdXJsKC90aGVtZXMvY3VzdG9tL3ZobWZvbmRlcmllL3B1YmxpYy9pbWFnZXMvbG9hZGluZy5naWYpIHVybCgvdGhlbWVzL2N1c3RvbS92aG1mb25kZXJpZS9wdWJsaWMvaW1hZ2VzL3ByZXYucG5nKSB1cmwoL3RoZW1lcy9jdXN0b20vdmhtZm9uZGVyaWUvcHVibGljL2ltYWdlcy9uZXh0LnBuZyk7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuYm9keS5sYi1kaXNhYmxlLXNjcm9sbGluZyB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmxpZ2h0Ym94T3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDk5OTk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICAgLyogIGZpbHRlcjogcHJvZ2lkOiBEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTgwKTsqL1xuICAgIG9wYWNpdHk6IDAuODtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ubGlnaHRib3gge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDEwMDAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICBmb250LXdlaWdodDogY3VzdG9tL3ZobWZvbmRlcmllbDtcbn1cblxuLmxpZ2h0Ym94IC5sYi1pbWFnZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1heC13aWR0aDogaW5oZXJpdDtcbiAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgIC8qIEltYWdlIGJvcmRlciAqL1xuICAgIGJvcmRlcjogNHB4IHNvbGlkIHdoaXRlO1xufVxuXG4ubGlnaHRib3ggYSBpbWcge1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuLmxiLW91dGVyQ29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgKnpvb206IDE7XG4gICAgd2lkdGg6IDI1MHB4O1xuICAgIGhlaWdodDogMjUwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgLyogQmFja2dyb3VuZCBjb2xvciBiZWhpbmQgaW1hZ2UuXG4gICAgIFRoaXMgaXMgdmlzaWJsZSBkdXJpbmcgdHJhbnNpdGlvbnMuICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG5cbi5sYi1vdXRlckNvbnRhaW5lcjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbn1cblxuLmxiLWxvYWRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNDMlO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAyNSU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xufVxuXG4ubGItY2FuY2VsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgYmFja2dyb3VuZDogdXJsKC90aGVtZXMvY3VzdG9tL3ZobWZvbmRlcmllL3B1YmxpYy9pbWFnZXMvbG9hZGluZy5naWYpIG5vLXJlcGVhdDtcbn1cblxuLmxiLW5hdiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDtcbn1cblxuLmxiLWNvbnRhaW5lcj4ubmF2IHtcbiAgICBsZWZ0OiAwO1xufVxuXG4ubGItbmF2IGEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQVBBQUFQLy8vd0FBQUNINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQ1JBRUFPdz09Jyk7XG59XG5cbi5sYi1wcmV2LFxuLmxiLW5leHQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5sYi1uYXYgYS5sYi1wcmV2IHtcbiAgICB3aWR0aDogMzQlO1xuICAgIGxlZnQ6IDA7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgYmFja2dyb3VuZDogdXJsKC90aGVtZXMvY3VzdG9tL3ZobWZvbmRlcmllL3B1YmxpYy9pbWFnZXMvcHJldi5wbmcpIGxlZnQgNDglIG5vLXJlcGVhdDtcbiAgICAvKiAgZmlsdGVyOiBwcm9naWQ6IERYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCk7ICovXG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC42cztcbiAgICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC42cztcbiAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNnM7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzO1xufVxuXG4ubGItbmF2IGEubGItcHJldjpob3ZlciB7XG4gICAgLyogICAgZmlsdGVyOiBwcm9naWQ6IERYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTsqL1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5sYi1uYXYgYS5sYi1uZXh0IHtcbiAgICB3aWR0aDogNjQlO1xuICAgIHJpZ2h0OiAwO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoL3RoZW1lcy9jdXN0b20vdmhtZm9uZGVyaWUvcHVibGljL2ltYWdlcy9uZXh0LnBuZykgcmlnaHQgNDglIG5vLXJlcGVhdDtcbiAgICAvKiAgIGZpbHRlcjogcHJvZ2lkOiBEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApOyAqL1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNnM7XG4gICAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNnM7XG4gICAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC42cztcbn1cblxuLmxiLW5hdiBhLmxiLW5leHQ6aG92ZXIge1xuICAgIC8qICAgZmlsdGVyOiBwcm9naWQ6IERYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTsgKi9cbiAgICBvcGFjaXR5OiAxO1xufVxuXG4ubGItZGF0YUNvbnRhaW5lciB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy10b3A6IDVweDtcbiAgICAqem9vbTogMTtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmxiLWRhdGFDb250YWluZXI6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG59XG5cbi5sYi1kYXRhIHtcbiAgICBwYWRkaW5nOiAwIDRweDtcbiAgICBjb2xvcjogI2NjYztcbn1cblxuLmxiLWRhdGEgLmxiLWRldGFpbHMge1xuICAgIHdpZHRoOiA4NSU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBsaW5lLWhlaWdodDogMS4xZW07XG59XG5cbi5sYi1kYXRhIC5sYi1jYXB0aW9uIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogJHdoaXRlO1xufVxuXG4ubGItZGF0YSAubGItY2FwdGlvbiBhIHt9XG5cbi5sYi1kYXRhIC5sYi1udW1iZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNsZWFyOiBsZWZ0O1xuICAgIHBhZGRpbmctYm90dG9tOiAxZW07XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAjOTk5OTk5O1xufVxuXG4ubGItZGF0YSAubGItY2xvc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgYmFja2dyb3VuZDogdXJsKC90aGVtZXMvY3VzdG9tL3ZobWZvbmRlcmllL3B1YmxpYy9pbWFnZXMvY2xvc2UucG5nKSB0b3AgcmlnaHQgbm8tcmVwZWF0O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgLyogIGZpbHRlcjogcHJvZ2lkOiBEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTcwKTsgKi9cbiAgICBvcGFjaXR5OiAwLjc7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7XG4gICAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7XG4gICAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcbn1cblxuLmxiLWRhdGEgLmxiLWNsb3NlOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLyogIGZpbHRlcjogcHJvZ2lkOiBEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCk7Ki9cbiAgICBvcGFjaXR5OiAxO1xufSIsIi8qIFNsaWRlciAqL1xuXG4uc2xpY2stc2xpZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXRvdWNoLWFjdGlvbjogcGFuLXk7XG4gICAgdG91Y2gtYWN0aW9uOiBwYW4teTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uc2xpY2stbGlzdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxuICAgICYuZHJhZ2dpbmcge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGN1cnNvcjogaGFuZDtcbiAgICB9XG59XG5cbi5zbGljay1zbGlkZXIgLnNsaWNrLXRyYWNrLFxuLnNsaWNrLXNsaWRlciAuc2xpY2stbGlzdCB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi5zbGljay10cmFjayB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgICAuc2xpY2stbG9hZGluZyAmIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbn1cblxuLnNsaWNrLXNsaWRlIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMXB4O1xuICBcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuICAgIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAmLnNsaWNrLWxvYWRpbmcgaW1nIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICAmLmRyYWdnaW5nIGltZyB7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgICAuc2xpY2staW5pdGlhbGl6ZWQgJiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAuc2xpY2stbG9hZGluZyAmIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbiAgICAuc2xpY2stdmVydGljYWwgJiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIH1cbn1cblxuLnNsaWNrLWFycm93LnNsaWNrLWhpZGRlbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn0iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8qIVxuICogYW5pbWF0ZS5jc3MgLWh0dHA6Ly9kYW5lZGVuLm1lL2FuaW1hdGVcbiAqIFZlcnNpb24gLSAzLjUuMlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIC0gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVFxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNyBEYW5pZWwgRWRlblxuICovXG5cbi5hbmltYXRlZCB7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5cbi5hbmltYXRlZC5pbmZpbml0ZSB7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xufVxuXG4uYW5pbWF0ZWQuaGluZ2Uge1xuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xufVxuXG4uYW5pbWF0ZWQuZmxpcE91dFgsXG4uYW5pbWF0ZWQuZmxpcE91dFksXG4uYW5pbWF0ZWQuYm91bmNlSW4sXG4uYW5pbWF0ZWQuYm91bmNlT3V0IHtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuNzVzO1xufVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZSB7XG4gIGZyb20sIDIwJSwgNTMlLCA4MCUsIHRvIHtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEwLCAwLjM1NSwgMS4wMDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwwLDApO1xuICB9XG5cbiAgNDAlLCA0MyUge1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjc1NSwgMC4wNTAsIDAuODU1LCAwLjA2MCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzBweCwgMCk7XG4gIH1cblxuICA3MCUge1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjc1NSwgMC4wNTAsIDAuODU1LCAwLjA2MCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTVweCwgMCk7XG4gIH1cblxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwtNHB4LDApO1xuICB9XG59XG5cbi5ib3VuY2Uge1xuICBhbmltYXRpb24tbmFtZTogYm91bmNlO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tO1xufVxuXG5Aa2V5ZnJhbWVzIGZsYXNoIHtcbiAgZnJvbSwgNTAlLCB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIDI1JSwgNzUlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbi5mbGFzaCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmbGFzaDtcbn1cblxuLyogb3JpZ2luYWxseSBhdXRob3JlZCBieSBOaWNrIFBldHRpdCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrcGV0dGl0L2dsaWRlICovXG5cbkBrZXlmcmFtZXMgcHVsc2Uge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7XG4gIH1cblxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjA1LCAxLjA1LCAxLjA1KTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7XG4gIH1cbn1cblxuLnB1bHNlIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHB1bHNlO1xufVxuXG5Aa2V5ZnJhbWVzIHJ1YmJlckJhbmQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7XG4gIH1cblxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjI1LCAwLjc1LCAxKTtcbiAgfVxuXG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNzUsIDEuMjUsIDEpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xNSwgMC44NSwgMSk7XG4gIH1cblxuICA2NSUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCguOTUsIDEuMDUsIDEpO1xuICB9XG5cbiAgNzUlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4wNSwgLjk1LCAxKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7XG4gIH1cbn1cblxuLnJ1YmJlckJhbmQge1xuICBhbmltYXRpb24tbmFtZTogcnViYmVyQmFuZDtcbn1cblxuQGtleWZyYW1lcyBzaGFrZSB7XG4gIGZyb20sIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgMTAlLCAzMCUsIDUwJSwgNzAlLCA5MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwcHgsIDAsIDApO1xuICB9XG5cbiAgMjAlLCA0MCUsIDYwJSwgODAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApO1xuICB9XG59XG5cbi5zaGFrZSB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzaGFrZTtcbn1cblxuQGtleWZyYW1lcyBoZWFkU2hha2Uge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICB9XG5cbiAgNi41JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC02cHgpIHJvdGF0ZVkoLTlkZWcpO1xuICB9XG5cbiAgMTguNSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpIHJvdGF0ZVkoN2RlZyk7XG4gIH1cblxuICAzMS41JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpIHJvdGF0ZVkoLTVkZWcpO1xuICB9XG5cbiAgNDMuNSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpIHJvdGF0ZVkoM2RlZyk7XG4gIH1cblxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgfVxufVxuXG4uaGVhZFNoYWtlIHtcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBoZWFkU2hha2U7XG59XG5cbkBrZXlmcmFtZXMgc3dpbmcge1xuICAyMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMTVkZWcpO1xuICB9XG5cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC0xMGRlZyk7XG4gIH1cblxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNWRlZyk7XG4gIH1cblxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTVkZWcpO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZyk7XG4gIH1cbn1cblxuLnN3aW5nIHtcbiAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcjtcbiAgYW5pbWF0aW9uLW5hbWU6IHN3aW5nO1xufVxuXG5Aa2V5ZnJhbWVzIHRhZGEge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7XG4gIH1cblxuICAxMCUsIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45LCAuOSwgLjkpIHJvdGF0ZTNkKDAsIDAsIDEsIC0zZGVnKTtcbiAgfVxuXG4gIDMwJSwgNTAlLCA3MCUsIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMSwgMS4xLCAxLjEpIHJvdGF0ZTNkKDAsIDAsIDEsIDNkZWcpO1xuICB9XG5cbiAgNDAlLCA2MCUsIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMSwgMS4xLCAxLjEpIHJvdGF0ZTNkKDAsIDAsIDEsIC0zZGVnKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7XG4gIH1cbn1cblxuLnRhZGEge1xuICBhbmltYXRpb24tbmFtZTogdGFkYTtcbn1cblxuLyogb3JpZ2luYWxseSBhdXRob3JlZCBieSBOaWNrIFBldHRpdCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrcGV0dGl0L2dsaWRlICovXG5cbkBrZXlmcmFtZXMgd29iYmxlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgMTUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yNSUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC01ZGVnKTtcbiAgfVxuXG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMCUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIDNkZWcpO1xuICB9XG5cbiAgNDUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xNSUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC0zZGVnKTtcbiAgfVxuXG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMCUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIDJkZWcpO1xuICB9XG5cbiAgNzUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTFkZWcpO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4ud29iYmxlIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHdvYmJsZTtcbn1cblxuQGtleWZyYW1lcyBqZWxsbyB7XG4gIGZyb20sIDExLjElLCB0byB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgMjIuMiUge1xuICAgIHRyYW5zZm9ybTogc2tld1goLTEyLjVkZWcpIHNrZXdZKC0xMi41ZGVnKTtcbiAgfVxuXG4gIDMzLjMlIHtcbiAgICB0cmFuc2Zvcm06IHNrZXdYKDYuMjVkZWcpIHNrZXdZKDYuMjVkZWcpO1xuICB9XG5cbiAgNDQuNCUge1xuICAgIHRyYW5zZm9ybTogc2tld1goLTMuMTI1ZGVnKSBza2V3WSgtMy4xMjVkZWcpO1xuICB9XG5cbiAgNTUuNSUge1xuICAgIHRyYW5zZm9ybTogc2tld1goMS41NjI1ZGVnKSBza2V3WSgxLjU2MjVkZWcpO1xuICB9XG5cbiAgNjYuNiUge1xuICAgIHRyYW5zZm9ybTogc2tld1goLTAuNzgxMjVkZWcpIHNrZXdZKC0wLjc4MTI1ZGVnKTtcbiAgfVxuXG4gIDc3LjclIHtcbiAgICB0cmFuc2Zvcm06IHNrZXdYKDAuMzkwNjI1ZGVnKSBza2V3WSgwLjM5MDYyNWRlZyk7XG4gIH1cblxuICA4OC44JSB7XG4gICAgdHJhbnNmb3JtOiBza2V3WCgtMC4xOTUzMTI1ZGVnKSBza2V3WSgtMC4xOTUzMTI1ZGVnKTtcbiAgfVxufVxuXG4uamVsbG8ge1xuICBhbmltYXRpb24tbmFtZTogamVsbG87XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbn1cblxuQGtleWZyYW1lcyBib3VuY2VJbiB7XG4gIGZyb20sIDIwJSwgNDAlLCA2MCUsIDgwJSwgdG8ge1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIxNSwgMC42MTAsIDAuMzU1LCAxLjAwMCk7XG4gIH1cblxuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjMsIC4zLCAuMyk7XG4gIH1cblxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKTtcbiAgfVxuXG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45LCAuOSwgLjkpO1xuICB9XG5cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjAzLCAxLjAzLCAxLjAzKTtcbiAgfVxuXG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45NywgLjk3LCAuOTcpO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpO1xuICB9XG59XG5cbi5ib3VuY2VJbiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbjtcbn1cblxuQGtleWZyYW1lcyBib3VuY2VJbkRvd24ge1xuICBmcm9tLCA2MCUsIDc1JSwgOTAlLCB0byB7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxMCwgMC4zNTUsIDEuMDAwKTtcbiAgfVxuXG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTMwMDBweCwgMCk7XG4gIH1cblxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyNXB4LCAwKTtcbiAgfVxuXG4gIDc1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTBweCwgMCk7XG4gIH1cblxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgNXB4LCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cblxuLmJvdW5jZUluRG93biB7XG4gIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbkRvd247XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlSW5MZWZ0IHtcbiAgZnJvbSwgNjAlLCA3NSUsIDkwJSwgdG8ge1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIxNSwgMC42MTAsIDAuMzU1LCAxLjAwMCk7XG4gIH1cblxuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0zMDAwcHgsIDAsIDApO1xuICB9XG5cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjVweCwgMCwgMCk7XG4gIH1cblxuICA3NSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwcHgsIDAsIDApO1xuICB9XG5cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDVweCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG5cbi5ib3VuY2VJbkxlZnQge1xuICBhbmltYXRpb24tbmFtZTogYm91bmNlSW5MZWZ0O1xufVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZUluUmlnaHQge1xuICBmcm9tLCA2MCUsIDc1JSwgOTAlLCB0byB7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxMCwgMC4zNTUsIDEuMDAwKTtcbiAgfVxuXG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgzMDAwcHgsIDAsIDApO1xuICB9XG5cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTI1cHgsIDAsIDApO1xuICB9XG5cbiAgNzUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApO1xuICB9XG5cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01cHgsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4uYm91bmNlSW5SaWdodCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJblJpZ2h0O1xufVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZUluVXAge1xuICBmcm9tLCA2MCUsIDc1JSwgOTAlLCB0byB7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxMCwgMC4zNTUsIDEuMDAwKTtcbiAgfVxuXG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAzMDAwcHgsIDApO1xuICB9XG5cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApO1xuICB9XG5cbiAgNzUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwcHgsIDApO1xuICB9XG5cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC01cHgsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuLmJvdW5jZUluVXAge1xuICBhbmltYXRpb24tbmFtZTogYm91bmNlSW5VcDtcbn1cblxuQGtleWZyYW1lcyBib3VuY2VPdXQge1xuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCguOSwgLjksIC45KTtcbiAgfVxuXG4gIDUwJSwgNTUlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMywgLjMsIC4zKTtcbiAgfVxufVxuXG4uYm91bmNlT3V0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dDtcbn1cblxuQGtleWZyYW1lcyBib3VuY2VPdXREb3duIHtcbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwcHgsIDApO1xuICB9XG5cbiAgNDAlLCA0NSUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjBweCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7XG4gIH1cbn1cblxuLmJvdW5jZU91dERvd24ge1xuICBhbmltYXRpb24tbmFtZTogYm91bmNlT3V0RG93bjtcbn1cblxuQGtleWZyYW1lcyBib3VuY2VPdXRMZWZ0IHtcbiAgMjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjBweCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yMDAwcHgsIDAsIDApO1xuICB9XG59XG5cbi5ib3VuY2VPdXRMZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dExlZnQ7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlT3V0UmlnaHQge1xuICAyMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjBweCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7XG4gIH1cbn1cblxuLmJvdW5jZU91dFJpZ2h0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dFJpZ2h0O1xufVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZU91dFVwIHtcbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMHB4LCAwKTtcbiAgfVxuXG4gIDQwJSwgNDUlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjBweCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yMDAwcHgsIDApO1xuICB9XG59XG5cbi5ib3VuY2VPdXRVcCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VPdXRVcDtcbn1cblxuQGtleWZyYW1lcyBmYWRlSW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLmZhZGVJbiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW47XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluRG93biB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cblxuLmZhZGVJbkRvd24ge1xuICBhbmltYXRpb24tbmFtZTogZmFkZUluRG93bjtcbn1cblxuQGtleWZyYW1lcyBmYWRlSW5Eb3duQmlnIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yMDAwcHgsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG5cbi5mYWRlSW5Eb3duQmlnIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd25CaWc7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluTGVmdCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwcHgsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG5cbi5mYWRlSW5MZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkxlZnQ7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluTGVmdEJpZyB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4uZmFkZUluTGVmdEJpZyB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5MZWZ0QmlnO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJblJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMHB4LCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4uZmFkZUluUmlnaHQge1xuICBhbmltYXRpb24tbmFtZTogZmFkZUluUmlnaHQ7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluUmlnaHRCaWcge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjAwMHB4LCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4uZmFkZUluUmlnaHRCaWcge1xuICBhbmltYXRpb24tbmFtZTogZmFkZUluUmlnaHRCaWc7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluVXAge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cblxuLmZhZGVJblVwIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJblVwQmlnIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cblxuLmZhZGVJblVwQmlnIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwQmlnO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuLmZhZGVPdXQge1xuICBhbmltYXRpb24tbmFtZTogZmFkZU91dDtcbn1cblxuQGtleWZyYW1lcyBmYWRlT3V0RG93biB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICB9XG59XG5cbi5mYWRlT3V0RG93biB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0RG93bjtcbn1cblxuQGtleWZyYW1lcyBmYWRlT3V0RG93bkJpZyB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7XG4gIH1cbn1cblxuLmZhZGVPdXREb3duQmlnIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXREb3duQmlnO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXRMZWZ0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbi5mYWRlT3V0TGVmdCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0TGVmdDtcbn1cblxuQGtleWZyYW1lcyBmYWRlT3V0TGVmdEJpZyB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yMDAwcHgsIDAsIDApO1xuICB9XG59XG5cbi5mYWRlT3V0TGVmdEJpZyB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0TGVmdEJpZztcbn1cblxuQGtleWZyYW1lcyBmYWRlT3V0UmlnaHQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG4uZmFkZU91dFJpZ2h0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRSaWdodDtcbn1cblxuQGtleWZyYW1lcyBmYWRlT3V0UmlnaHRCaWcge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApO1xuICB9XG59XG5cbi5mYWRlT3V0UmlnaHRCaWcge1xuICBhbmltYXRpb24tbmFtZTogZmFkZU91dFJpZ2h0QmlnO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXRVcCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgfVxufVxuXG4uZmFkZU91dFVwIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRVcDtcbn1cblxuQGtleWZyYW1lcyBmYWRlT3V0VXBCaWcge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTtcbiAgfVxufVxuXG4uZmFkZU91dFVwQmlnIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRVcEJpZztcbn1cblxuQGtleWZyYW1lcyBmbGlwIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTM2MGRlZyk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XG4gIH1cblxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZTNkKDAsIDAsIDE1MHB4KSByb3RhdGUzZCgwLCAxLCAwLCAtMTkwZGVnKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDtcbiAgfVxuXG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlM2QoMCwgMCwgMTUwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0xNzBkZWcpO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47XG4gIH1cblxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHNjYWxlM2QoLjk1LCAuOTUsIC45NSk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluO1xuICB9XG59XG5cbi5hbmltYXRlZC5mbGlwIHtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBhbmltYXRpb24tbmFtZTogZmxpcDtcbn1cblxuQGtleWZyYW1lcyBmbGlwSW5YIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgOTBkZWcpO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgLTIwZGVnKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluO1xuICB9XG5cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCAxMGRlZyk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgLTVkZWcpO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpO1xuICB9XG59XG5cbi5mbGlwSW5YIHtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbiAgYW5pbWF0aW9uLW5hbWU6IGZsaXBJblg7XG59XG5cbkBrZXlmcmFtZXMgZmxpcEluWSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIDkwZGVnKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0yMGRlZyk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjtcbiAgfVxuXG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgMTBkZWcpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC01ZGVnKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTtcbiAgfVxufVxuXG4uZmxpcEluWSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBmbGlwSW5ZO1xufVxuXG5Aa2V5ZnJhbWVzIGZsaXBPdXRYIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7XG4gIH1cblxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIC0yMGRlZyk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCA5MGRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG4uZmxpcE91dFgge1xuICBhbmltYXRpb24tbmFtZTogZmxpcE91dFg7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG5cbkBrZXlmcmFtZXMgZmxpcE91dFkge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTtcbiAgfVxuXG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTE1ZGVnKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIDkwZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbi5mbGlwT3V0WSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBmbGlwT3V0WTtcbn1cblxuQGtleWZyYW1lcyBsaWdodFNwZWVkSW4ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIHNrZXdYKC0zMGRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBza2V3WCgyMGRlZyk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBza2V3WCgtNWRlZyk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4ubGlnaHRTcGVlZEluIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGxpZ2h0U3BlZWRJbjtcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgbGlnaHRTcGVlZE91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSBza2V3WCgzMGRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG4ubGlnaHRTcGVlZE91dCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBsaWdodFNwZWVkT3V0O1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluO1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZUluIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTIwMGRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLnJvdGF0ZUluIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZUluO1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZUluRG93bkxlZnQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC00NWRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4ucm90YXRlSW5Eb3duTGVmdCB7XG4gIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbkRvd25MZWZ0O1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZUluRG93blJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tO1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNDVkZWcpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi5yb3RhdGVJbkRvd25SaWdodCB7XG4gIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbkRvd25SaWdodDtcbn1cblxuQGtleWZyYW1lcyByb3RhdGVJblVwTGVmdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tO1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNDVkZWcpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLnJvdGF0ZUluVXBMZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZUluVXBMZWZ0O1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZUluVXBSaWdodCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC05MGRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLnJvdGF0ZUluVXBSaWdodCB7XG4gIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVJblVwUmlnaHQ7XG59XG5cbkBrZXlmcmFtZXMgcm90YXRlT3V0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMjAwZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbi5yb3RhdGVPdXQge1xuICBhbmltYXRpb24tbmFtZTogcm90YXRlT3V0O1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZU91dERvd25MZWZ0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDQ1ZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbi5yb3RhdGVPdXREb3duTGVmdCB7XG4gIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVPdXREb3duTGVmdDtcbn1cblxuQGtleWZyYW1lcyByb3RhdGVPdXREb3duUmlnaHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207XG4gICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNDVkZWcpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuLnJvdGF0ZU91dERvd25SaWdodCB7XG4gIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVPdXREb3duUmlnaHQ7XG59XG5cbkBrZXlmcmFtZXMgcm90YXRlT3V0VXBMZWZ0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC00NWRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG4ucm90YXRlT3V0VXBMZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dFVwTGVmdDtcbn1cblxuQGtleWZyYW1lcyByb3RhdGVPdXRVcFJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tO1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgOTBkZWcpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuLnJvdGF0ZU91dFVwUmlnaHQge1xuICBhbmltYXRpb24tbmFtZTogcm90YXRlT3V0VXBSaWdodDtcbn1cblxuQGtleWZyYW1lcyBoaW5nZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcbiAgfVxuXG4gIDIwJSwgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDgwZGVnKTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcbiAgfVxuXG4gIDQwJSwgODAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDYwZGVnKTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgNzAwcHgsIDApO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuLmhpbmdlIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGhpbmdlO1xufVxuXG5Aa2V5ZnJhbWVzIGphY2tJblRoZUJveCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjEpIHJvdGF0ZSgzMGRlZyk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTEwZGVnKTtcbiAgfVxuXG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoM2RlZyk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG5cbi5qYWNrSW5UaGVCb3gge1xuICBhbmltYXRpb24tbmFtZTogamFja0luVGhlQm94O1xufVxuXG4vKiBvcmlnaW5hbGx5IGF1dGhvcmVkIGJ5IE5pY2sgUGV0dGl0IC0gaHR0cHM6Ly9naXRodWIuY29tL25pY2twZXR0aXQvZ2xpZGUgKi9cblxuQGtleWZyYW1lcyByb2xsSW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC0xMjBkZWcpO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG5cbi5yb2xsSW4ge1xuICBhbmltYXRpb24tbmFtZTogcm9sbEluO1xufVxuXG4vKiBvcmlnaW5hbGx5IGF1dGhvcmVkIGJ5IE5pY2sgUGV0dGl0IC0gaHR0cHM6Ly9naXRodWIuY29tL25pY2twZXR0aXQvZ2xpZGUgKi9cblxuQGtleWZyYW1lcyByb2xsT3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgMTIwZGVnKTtcbiAgfVxufVxuXG4ucm9sbE91dCB7XG4gIGFuaW1hdGlvbi1uYW1lOiByb2xsT3V0O1xufVxuXG5Aa2V5ZnJhbWVzIHpvb21JbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4zLCAuMywgLjMpO1xuICB9XG5cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi56b29tSW4ge1xuICBhbmltYXRpb24tbmFtZTogem9vbUluO1xufVxuXG5Aa2V5ZnJhbWVzIHpvb21JbkRvd24ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAtMTAwMHB4LCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApO1xuICB9XG5cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgwLCA2MHB4LCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7XG4gIH1cbn1cblxuLnpvb21JbkRvd24ge1xuICBhbmltYXRpb24tbmFtZTogem9vbUluRG93bjtcbn1cblxuQGtleWZyYW1lcyB6b29tSW5MZWZ0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjEsIC4xLCAuMSkgdHJhbnNsYXRlM2QoLTEwMDBweCwgMCwgMCk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTtcbiAgfVxuXG4gIDYwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMTBweCwgMCwgMCk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMjAsIDEpO1xuICB9XG59XG5cbi56b29tSW5MZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHpvb21JbkxlZnQ7XG59XG5cbkBrZXlmcmFtZXMgem9vbUluUmlnaHQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgxMDAwcHgsIDAsIDApO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XG4gIH1cblxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7XG4gIH1cbn1cblxuLnpvb21JblJpZ2h0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHpvb21JblJpZ2h0O1xufVxuXG5Aa2V5ZnJhbWVzIHpvb21JblVwIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjEsIC4xLCAuMSkgdHJhbnNsYXRlM2QoMCwgMTAwMHB4LCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApO1xuICB9XG5cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgwLCAtNjBweCwgMCk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMjAsIDEpO1xuICB9XG59XG5cbi56b29tSW5VcCB7XG4gIGFuaW1hdGlvbi1uYW1lOiB6b29tSW5VcDtcbn1cblxuQGtleWZyYW1lcyB6b29tT3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjMsIC4zLCAuMyk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG4uem9vbU91dCB7XG4gIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0O1xufVxuXG5Aa2V5ZnJhbWVzIHpvb21PdXREb3duIHtcbiAgNDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgwLCAtNjBweCwgMCk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMjAsIDEpO1xuICB9XG59XG5cbi56b29tT3V0RG93biB7XG4gIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0RG93bjtcbn1cblxuQGtleWZyYW1lcyB6b29tT3V0TGVmdCB7XG4gIDQwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoNDJweCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKC4xKSB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjtcbiAgfVxufVxuXG4uem9vbU91dExlZnQge1xuICBhbmltYXRpb24tbmFtZTogem9vbU91dExlZnQ7XG59XG5cbkBrZXlmcmFtZXMgem9vbU91dFJpZ2h0IHtcbiAgNDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgtNDJweCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKC4xKSB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGNlbnRlcjtcbiAgfVxufVxuXG4uem9vbU91dFJpZ2h0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHpvb21PdXRSaWdodDtcbn1cblxuQGtleWZyYW1lcyB6b29tT3V0VXAge1xuICA0MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjEsIC4xLCAuMSkgdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7XG4gIH1cbn1cblxuLnpvb21PdXRVcCB7XG4gIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0VXA7XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJbkRvd24ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuLnNsaWRlSW5Eb3duIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5Eb3duO1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW5MZWZ0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbi5zbGlkZUluTGVmdCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluTGVmdDtcbn1cblxuQGtleWZyYW1lcyBzbGlkZUluUmlnaHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG4uc2xpZGVJblJpZ2h0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5SaWdodDtcbn1cblxuQGtleWZyYW1lcyBzbGlkZUluVXAge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG4uc2xpZGVJblVwIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5VcDtcbn1cblxuQGtleWZyYW1lcyBzbGlkZU91dERvd24ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICB9XG59XG5cbi5zbGlkZU91dERvd24ge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXREb3duO1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0TGVmdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbi5zbGlkZU91dExlZnQge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXRMZWZ0O1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0UmlnaHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICB9XG59XG5cbi5zbGlkZU91dFJpZ2h0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0UmlnaHQ7XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVPdXRVcCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICB9XG59XG5cbi5zbGlkZU91dFVwIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0VXA7XG59XG4iLCJAY2hhcnNldCAnVVRGLTgnO1xuOjpzZWxlY3Rpb24ge1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgYmFja2dyb3VuZDogJG1haW4tY29sb3I7XG59XG5cbi8vIENvcnJlY3Rpb24gZCd1biBkw6ljYWxhZ2UgZGFucyB1bmUgaWNvbmVcbi5pY29uLXJpZ2h0LWFycm93OmJlZm9yZSB7XG4gICAgdG9wOiAwLjJlbTtcbn1cblxuJXRyYW5zaXRpb24ge1xuICAgIHRyYW5zaXRpb246IGFsbCAkdHJhbnNpdGlvbi1kdXJhdGlvbiBlYXNlLW91dDtcbn1cblxuJWNlbnRlckJveCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBwYWRkaW5nOiAwICRnaWFudDtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogZGVza3RvcCkge1xuICAgICAgICBwYWRkaW5nOiAwICRtZWRpdW07XG4gICAgfVxuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgcGFkZGluZzogMCAkc21hbGw7XG4gICAgfVxufVxuXG4lYW50aXNsYXNoLW1lbnUge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBoZWlnaHQ6IDEycHg7XG4gICAgICAgIHdpZHRoOiAycHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYWluLWNvbG9yO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdHJhbnNmb3JtOiAkc2tldztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgfVxufVxuXG4lYW50aXNsYXNoLWgxLFxuJWFudGlzbGFzaC1oMixcbiVhbnRpc2xhc2gtaDMge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICB3aWR0aDogMTNweDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB0cmFuc2Zvcm06ICRza2V3O1xuICAgIH1cbn1cblxuJWFudGlzbGFzaC1oMSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIH1cbn1cblxuJWFudGlzbGFzaC1oMiB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWFpbi1jb2xvcjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIHRvcDogMTVweDtcbiAgICAgICAgLy8gTW9kaWYgaGVyZSB0b3Agd2FzIDE1cHhcbiAgICB9XG59XG5cbiVhbnRpc2xhc2gtaDMge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMTBweDtcbiAgICAgICAgbGVmdDogODBweDtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYW5pbWF0aW9uOiBvcGFjaXR5U2tldyA0MDBtcyBsaW5lYXI7XG4gICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDQwMG1zO1xuICAgIH1cbn1cblxuJWhvdmVyLWxpbmsge1xuICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgJjpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG59XG5cbiVob3Zlci1pIHtcbiAgICBpIHtcbiAgICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICB9XG4gICAgJjpob3ZlciBpIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIH1cbn1cblxuJWxpbmsge1xuICAgIEBleHRlbmQgJWZvbnQtc2Vjb25kYXJ5LWJvbGQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgaSB7XG4gICAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG59XG5cbiVjb3ZlciB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaW1nIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdvYmplY3QtZml0OiBjb3Zlcic7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxufVxuXG4uY29udGFpbiB7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICBmb250LWZhbWlseTogJ29iamVjdC1maXQ6IGNvbnRhaW4nO1xufVxuXG4lbWFpbi1jb2xvci1ncmFkaWVudCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkbWFpbi1jb2xvciAwJSwgJGNvbG9yLWZvbmRlcmllMiAxMDAlKTtcbn1cblxuJWl0ZW0tY29sb3ItZ3JhZGllbnQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMCwgMCwgMCwgMSkgMCUsIHJnYmEoMCwgMCwgMCwgMCkgNzIlLCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpO1xufVxuXG4lZGlhcG8tZ3JhZGllbnQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAuNykgMCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSk7XG59XG5cbi5vdmVybGF5IHtcbiAgICBpbWcge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIC8vIGlmIElFMTArXG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSksICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDIwMCU7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgLy8gQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSwgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuaW1nX2NvbmNlcHQge1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxNzVweDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgcmlnaHQ6IGNhbGMoMTc1cHgvMik7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdHJhbnNmb3JtOiAkc2tldztcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRpemUoJHdoaXRlLCAwLjg1KTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cbn1cblxuLnZpc3VlbF9jb25jZXB0IHtcbiAgICAub3ZlcmxheSB7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ub3ZlcmxheSB7XG4gICAgLm92ZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTc1cHg7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIHJpZ2h0OiBjYWxjKDE3NXB4LzIpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHRyYW5zZm9ybTogJHNrZXc7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCR3aGl0ZSwgMC44NSk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG59XG5cbiNwdXNocyB7XG4gICAgLm92ZXJsYXkge1xuICAgICAgICBhIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIH1cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB3aWR0aDogMTc1cHg7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICAgIHJpZ2h0OiBjYWxjKDE3NXB4LzIpO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiAkc2tldztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCR3aGl0ZSwgMC44NSk7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIH1cbiAgICB9XG59IiwiQGNoYXJzZXQgJ1VURi04Jztcbioge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbmh0bWwge1xuICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG59XG5cbmJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICAmLmNrZV9lZGl0YWJsZSB7XG4gICAgICAgIHBhZGRpbmc6IDFlbTtcbiAgICB9XG4gICAgJi5pcy1vcGVuIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG59XG5cbnVsLFxub2wge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaW5lLWhlaWdodDogMS43ZW07XG59XG5cbnAge1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS43ZW07XG59XG5cbmZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xufVxuXG5pbWcsXG5pbnB1dCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgQGV4dGVuZCAlZm9udC1zZWNvbmRhcnk7XG59XG5cbmgyLFxuaDMge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgQGV4dGVuZCAlZm9udC1zZWNvbmRhcnk7XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxufVxuXG5oMSB7XG4gICAgZm9udC1zaXplOiA1NXB4O1xuICAgIG1hcmdpbjogJHNtYWxsIDA7XG4gICAgbGluZS1oZWlnaHQ6IDEyMCU7XG4gICAgQGV4dGVuZCAlYW50aXNsYXNoLWgxO1xuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgZm9udC1zaXplOiA0NXB4O1xuICAgIH1cbn1cblxuaDIsXG4laDIge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIG1hcmdpbjogNDBweCAwO1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBsaW5lLWhlaWdodDogMTIwJTtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogc21hbGwpIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE4NSU7XG4gICAgfVxuICAgIEBleHRlbmQgJWFudGlzbGFzaC1oMjtcbn1cblxuaDMsXG4laDMge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBtYXJnaW46IDAuN2VtIDA7XG59XG5cbmEge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxufVxuXG5ibG9ja3F1b3RlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm9yZGVyLWxlZnQ6IDAuMmVtIHNvbGlkICRtYWluLWNvbG9yO1xuICAgIG1hcmdpbi10b3A6IDNlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAzZW07XG4gICAgcGFkZGluZy1sZWZ0OiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5yZWxhdGl2ZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufSIsIkBjaGFyc2V0ICdVVEYtOCc7XG5cblxuQGtleWZyYW1lcyBtb3Zle1xuXHQwJSB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwwJSk7fVxuXHQxMDAlIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwJSwwJSk7fVxufVxuXG5Aa2V5ZnJhbWVzIGNvbG9yQ2hhbmdle1xuXHQwJSB7YmFja2dyb3VuZDokbWFpbi1jb2xvcjt9XG5cdDEwMCUge2JhY2tncm91bmQ6JHdoaXRlfVxufVxuXG5Aa2V5ZnJhbWVzIG9wYWNpdHlTa2V3e1xuXHQwJSB7b3BhY2l0eTowOyB0cmFuc2Zvcm06IHNrZXdYKDBkZWcpO31cblx0MTAwJSB7b3BhY2l0eTogMTt0cmFuc2Zvcm06JHNrZXc7fVxufVxuXG5Aa2V5ZnJhbWVzIG9wYWNpdHl7XG5cdDAlIHtvcGFjaXR5OjA7ZGlzcGxheTpub25lfVxuXHQwJSB7b3BhY2l0eTowO2Rpc3BsYXk6bm9uZX1cblx0MTAwJSB7b3BhY2l0eTogMTtkaXNwbGF5OmlubGluZTt9XG59XG5cblxuQGtleWZyYW1lcyBsaW5lLXRvcC1pbiB7XG5cdDAlIHtcblx0XHRsZWZ0OiAtNXB4O1xuXHRcdGJvdDogMDtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuXHR9XG5cdDIwJSB7XG5cdFx0bGVmdDogLTVweDtcblx0XHRib3Q6IDA7XG5cdFx0dHJhbnNmb3JtOiByb3RhdGUoLTYwZGVnKTtcblx0fVxuXHQ4MCUge1xuXHRcdGxlZnQ6IDA7XG5cdFx0Ym90OiAwO1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDE1ZGVnKTtcblx0fVxuXHQxMDAlIHtcblx0XHRsZWZ0OiAwO1xuXHRcdGJvdDogMXB4O1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuXHR9XG59XG5cbkBrZXlmcmFtZXMgbGluZS10b3Atb3V0IHtcblx0MCUge1xuXHRcdGxlZnQ6IDA7XG5cdFx0dG9wOiAwO1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuXHR9XG5cdDIwJSB7XG5cdFx0bGVmdDogMDtcblx0XHR0b3A6IDA7XG5cdFx0dHJhbnNmb3JtOiByb3RhdGUoMTVkZWcpO1xuXHR9XG5cdDgwJSB7XG5cdFx0bGVmdDogLTVweDtcblx0XHR0b3A6IDA7XG5cdFx0dHJhbnNmb3JtOiByb3RhdGUoLTYwZGVnKTtcblx0fVxuXHQxMDAlIHtcblx0XHRsZWZ0OiAtNXB4O1xuXHRcdHRvcDogMXB4O1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG5cdH1cbn1cblxuQGtleWZyYW1lcyBsaW5lLWJvdC1pbiB7XG5cdDAlIHtcblx0XHRsZWZ0OiAtNXB4O1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcblx0fVxuXHQyMCUge1xuXHRcdGxlZnQ6IC01cHg7XG5cdFx0Ym90OiAwO1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTtcblx0fVxuXHQ4MCUge1xuXHRcdGxlZnQ6IDA7XG5cdFx0Ym90OiAwO1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKC0xNWRlZyk7XG5cdH1cblx0MTAwJSB7XG5cdFx0bGVmdDogMDtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIGxpbmUtYm90LW91dCB7XG5cdDAlIHtcblx0XHRsZWZ0OiAwO1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuXHR9XG5cdDIwJSB7XG5cdFx0bGVmdDogMDtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgtMTVkZWcpO1xuXHR9XG5cdDgwJSB7XG5cdFx0bGVmdDogLTVweDtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7XG5cdH1cblx0MTAwJSB7XG5cdFx0bGVmdDogLTVweDtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG5cdH1cbn1cblxuQGtleWZyYW1lcyBmYWRlSW4ge1xuXHQwJSB7XG5cdFx0b3BhY2l0eTowO1xuXHR9XG5cdDIwJSB7XG5cdFx0b3BhY2l0eTowLjE7XG5cdH1cblx0ODAlIHtcblx0XHRvcGFjaXR5OjAuNztcblx0fVxuXHQxMDAlIHtcdFx0XG5cdFx0b3BhY2l0eToxO1xuXHR9XG59XG5cbkBrZXlmcmFtZXMgZmFkZU91dCB7XG5cdDAlIHtcblx0XHRvcGFjaXR5OjE7XG5cdH1cblx0MjAlIHtcblx0XHRvcGFjaXR5OjAuNztcblx0fVxuXHQ4MCUge1xuXHRcdG9wYWNpdHk6MC4xO1xuXHR9XG5cdDEwMCUge1x0XHRcblx0XHRvcGFjaXR5OjA7XG5cdH1cbn1cblxuQGtleWZyYW1lcyBtZW51SW4ge1x0XG5cdDAlLCA1JSB7XG5cdFx0b3BhY2l0eTowO1xuXHRcdHdpZHRoOiAwJTtcblx0fVxuXHQ1MCUge1xuXHRcdG9wYWNpdHk6MTtcblx0fVxuXHQxMDAlIHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIG1lbnVPdXQge1x0XG5cdDAlLCA1JSB7XG5cdFx0b3BhY2l0eToxO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cdDk1JSB7XG5cdFx0b3BhY2l0eTowO1xuXHR9XG5cdDEwMCUge1xuXHRcdHdpZHRoOiAwJTtcblx0fVxufVxuXG5cblxuXG4iLCJAY2hhcnNldCAnVVRGLTgnO1xuQG1peGluIGNvbCgkYywgJHQ6NSwgJG06ICRtYXJnaW4tbGlzdGluZykge1xuICAgIHdpZHRoOiBjYWxjKCgjeyRjfSAqICgxMDAlIC0gKCN7JHR9IC0gMSkgKiAjeyRtfSkgLyAjeyR0fSkgKyAoI3skY30gLSAxKSAqICN7JG19KTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtO1xuICAgICY6bnRoLWNoaWxkKCAjeyR0fW4gKyAjeyR0fSkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDBweDtcbiAgICB9XG59XG5cbkBmdW5jdGlvbiBjb2xTaXplKCRzaXplLCAkdG90YWw6IDUsICRtYXJnaW46ICRtYXJnaW4tbGlzdGluZykge1xuICAgIEByZXR1cm4gY2FsYygoI3skc2l6ZX0gKiAxMDAlIC8gI3skdG90YWx9KSAtICN7JG1hcmdpbn0pO1xufVxuXG5AbWl4aW4gY29sLWNvbnRhaW5lcigkbWFyZ2luOiAkbWFyZ2luLWxpc3RpbmcpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgI3skbWFyZ2lufSk7XG4gICAgLy8gbWFyZ2luOiAjeyRtYXJnaW4gLyAyfTtcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbn1cblxuQG1peGluIGNvbDIoJHNpemUsICR0b3RhbDogMywgJG1hcmdpbjogJG1hcmdpbi1saXN0aW5nKSB7XG4gICAgd2lkdGg6IGNhbGMoKCN7JHNpemV9ICogMTAwJSAvICN7JHRvdGFsfSkgLSAjeyRtYXJnaW59KTtcbiAgICBtYXJnaW46ICN7JG1hcmdpbiAvIDJ9O1xufVxuXG4ucHVzaCAuY29sLWNvbnRhaW5lciAuY29udGFpbmVyLFxuLm5vZGUtY29udGVudCAucG9zaXRpb24gLmNvbC1jb250YWluZXIsXG57XG4gICAgQGluY2x1ZGUgY29sLWNvbnRhaW5lcigyNXB4KTtcbiAgICBtYXJnaW46IDA7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAvLyBtYXJnaW4tdG9wOiAyNXB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICAmLmNvbDIge1xuICAgICAgICAuY29sIHtcbiAgICAgICAgICAgIHVsLFxuICAgICAgICAgICAgaDEsXG4gICAgICAgICAgICBoMixcbiAgICAgICAgICAgIGgzLFxuICAgICAgICAgICAgaDQsXG4gICAgICAgICAgICBoNSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIEBpbmNsdWRlIGNvbDIoMSwgMiwgMjVweCk7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNvbDIoMiwgMiwgMjVweCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgY29sMigxLCAxLCAwcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICYuY29sMyB7XG4gICAgICAgIC5jb2wge1xuICAgICAgICAgICAgdWwsXG4gICAgICAgICAgICBoMSxcbiAgICAgICAgICAgIGgyLFxuICAgICAgICAgICAgaDMsXG4gICAgICAgICAgICBoNCxcbiAgICAgICAgICAgIGg1IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpbmNsdWRlIGNvbDIoMSwgMywgMjVweCk7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgLy8gbWFyZ2luOiAwO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNvbDIoMywgMywgMjVweCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgY29sMigxLCAxLCAwcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSIsIkBjaGFyc2V0ICdVVEYtOCc7XHJcbi5tb2RhbCB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHRvcDogMDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xyXG4gICAgei1pbmRleDogOTk5OTk7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgLmNsb3NlIHtcclxuICAgICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICB3aWR0aDogY2FsYygzICogI3skc21hbGx9KTtcclxuICAgICAgICBwYWRkaW5nOiAkc21hbGw7XHJcbiAgICAgICAgZm9udC1zaXplOiAkc21hbGw7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRzbWFsbDtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICB0cmFuc2l0aW9uOiAwLjNzIGVhc2U7XHJcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAzcHggIzMzMztcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgei1pbmRleDogOTk7XHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAkbWFpbi1jb2xvcjtcclxuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLm15U2xpZGVzIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gICAgI3ByZXYsXHJcbiAgICAjbmV4dCB7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICB3aWR0aDogY2FsYygzICogI3skc21hbGx9KTtcclxuICAgICAgICBwYWRkaW5nOiAkc21hbGw7XHJcbiAgICAgICAgZm9udC1zaXplOiAkc21hbGw7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRzbWFsbDtcclxuICAgICAgICBtYXJnaW4tdG9wOiAtNTBweDtcclxuICAgICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogMC4zcyBlYXNlO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAgM3B4IDNweCAwO1xyXG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgM3B4ICMzMzM7XHJcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcclxuICAgICAgICAgICAgcGFkZGluZzogJHNtYWxsIDE1cHg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICBjb2xvcjogJG1haW4tY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgI3ByZXYge1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xyXG4gICAgICAgICAgICBsZWZ0OiAtMTVweDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAjbmV4dCB7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xyXG4gICAgICAgICAgICByaWdodDogLTE1cHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLm1vZGFsLWNvbnRlbnQge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBtYXJnaW46IGF1dG87XHJcbiAgICAgICAgd2lkdGg6IDYwJTtcclxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDIgKiAjeyRzbWFsbH0pO1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwgMCA2cHggMjBweCAwIHJnYmEoMCwgMCwgMCwgMC4xOSk7XHJcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYW5pbWF0ZXRvcDtcclxuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMC40cztcclxuICAgICAgICBhbmltYXRpb24tbmFtZTogYW5pbWF0ZXRvcDtcclxuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNHM7XHJcbiAgICAgICAgLm15U2xpZGVzIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgICAubGFiZWxQcm9kdWl0cyB7XHJcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAxMDAwO1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG1haW4tY29sb3I7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwcHg7XHJcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTAwcHg7XHJcbiAgICAgICAgICAgICAgICBoMyB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGltZyB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA1MHZoO1xyXG4gICAgICAgICAgICAgICAgLy8gaGVpZ2h0OiA3NSU7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogNDIlO1xyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDUwdmg7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogNzUlO1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA4MCU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJi5tb2RhbC1nYWxsZXJ5IHtcclxuICAgICAgICAubW9kYWwtY29udGVudCB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMzMzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRldG9wIHtcclxuICAgICAgICBmcm9tIHtcclxuICAgICAgICAgICAgdG9wOiAtMzAwcHg7XHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgdG8ge1xyXG4gICAgICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDFcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBAa2V5ZnJhbWVzIGFuaW1hdGV0b3Age1xyXG4gICAgICAgIGZyb20ge1xyXG4gICAgICAgICAgICB0b3A6IC0zMDBweDtcclxuICAgICAgICAgICAgb3BhY2l0eTogMFxyXG4gICAgICAgIH1cclxuICAgICAgICB0byB7XHJcbiAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgb3BhY2l0eTogMVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5tb2RhbC1oZWFkZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBwYWRkaW5nOiAkc21hbGw7XHJcbiAgICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICMzMzM7XHJcbiAgICB9XHJcbiAgICAubW9kYWwtYm9keSB7XHJcbiAgICAgICAgcGFkZGluZzogMCAkc21hbGwgJHNtYWxsO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICMzMzM7XHJcbiAgICB9XHJcbiAgICAubnVtYmVydGV4dCB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxufVxyXG5cclxuLmNhcHRpb24tY29udGFpbmVyIHtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xyXG4gICAgcGFkZGluZzogMnB4IDE2cHg7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcblxyXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5HQUxFUklFXHJcblxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4uZ2FsbGVyeSB7XHJcbiAgICBAaW5jbHVkZSBjb2woMSwgNCwgMjVweCk7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJHNtYWxsO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGltZyB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgICAgbWluLXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogZGVza3RvcCkge1xyXG4gICAgICAgIEBpbmNsdWRlIGNvbCgxLCAyLCAyNXB4KTtcclxuICAgIH1cclxuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcclxuICAgICAgICBAaW5jbHVkZSBjb2woMSwgMSwgMCk7XHJcbiAgICAgICAgaGVpZ2h0OiA0MDBweDtcclxuICAgICAgICBpbWcge1xyXG4gICAgICAgICAgICBtaW4taGVpZ2h0OiA0MDBweDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi5saWdodGJveC1nYWxsZXJ5IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBwYWRkaW5nOiAwIDA7XHJcbiAgICBtYXJnaW4tdG9wOiAkc21hbGw7XHJcbiAgICBkaXYge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzbWFsbDtcclxuICAgICAgICBpbWcge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBjb2woMSwgMSwgMCk7XHJcbiAgICAgICAgICAgIGhlaWdodDogNDAwcHg7XHJcbiAgICAgICAgICAgIGltZyB7XHJcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA0MDBweDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIkBjaGFyc2V0ICdVVEYtOCc7XG4uZm9ybS1pdGVtLFxuLmZvcm0tdGV4dGFyZWEtd3JhcHBlcixcbmZvcm0ge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG5pbnB1dFt0eXBlPXRleHRdLFxuaW5wdXRbdHlwZT1lbWFpbF0sXG5pbnB1dFt0eXBlPW51bWJlcl0sXG5pbnB1dFt0eXBlPXRlbF0sXG5pbnB1dFt0eXBlPXBhc3N3b3JkXSxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xuICAgIGhlaWdodDogJG1lZGl1bTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkbWFpbi1jb2xvcjtcbiAgICBjb2xvcjogI2FhYTtcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG5sYWJlbCB7XG4gICAgQGV4dGVuZCAlbGluaztcbiAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xufVxuXG5pbnB1dDpob3ZlcixcbmlucHV0OmFjdGl2ZSxcbmlucHV0OmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRtYWluLWNvbG9yLWxpZ2h0O1xufVxuXG50ZXh0YXJlYSB7XG4gICAgbWluLWhlaWdodDogMzAwcHg7XG4gICAgaGVpZ2h0OiBhdXRvO1xufVxuXG5idXR0b25bdHlwZT1zdWJtaXRdLFxuaW5wdXRbdHlwZT1zdWJtaXRdIHtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtYWluLWNvbG9yO1xuICAgIG1pbi1oZWlnaHQ6ICRiaWc7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBAaW5jbHVkZSBjb2woMSwgMywgMCk7XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICBAaW5jbHVkZSBjb2woMSwgMSwgMCk7XG4gICAgfVxufVxuXG4uZm9ybS1tYW5hZ2VkLWZpbGUgaW5wdXRbdHlwZT1zdWJtaXRdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1saWdodDtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGhlaWdodDogMjVweDtcbiAgICBtaW4taGVpZ2h0OiAyNXB4O1xuICAgIHBhZGRpbmc6IDAgMTVweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlO1xuICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICB3aWR0aDogNjBweDtcbn1cblxuLmZvcm0tYWN0aW9ucyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuZm9ybSAuZGVzY3JpcHRpb24ge1xuICAgIHBhZGRpbmctdG9wOiAxNXB4O1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmZpZWxkLS1uYW1lLWZpZWxkLW1lc3NhZ2VrZXkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5tZXNzYWdlcy0tc3RhdHVzIHtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDEwMDAwO1xuICAgIGhlaWdodDogYXV0bztcbn1cblxuI3VzZXItbG9naW4tZm9ybSB7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIHdpZHRoOiA1MHZ3O1xuICAgIG1hcmdpbi1sZWZ0OiAyNXZ3O1xuICAgIEBpbmNsdWRlIG1lZGlhICgkZnJvbTogZGVza3RvcCkge1xuICAgICAgICB3aWR0aDogODB2dztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwdnc7XG4gICAgfVxuICAgIEBpbmNsdWRlIG1lZGlhICgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgcGFkZGluZzogMCAkc21hbGw7XG4gICAgfVxufVxuXG4uanMtZm9ybS1tYW5hZ2VkLWZpbGUge1xuICAgIC5tZXNzYWdlcyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59IiwiLy8gRnJvbSBfY29zbWV0aWMuc2NzcyBWSE0tR3JvdXBcclxuI3RhcnRlYXVjaXRyb25Sb290ICN0YXJ0ZWF1Y2l0cm9uQWxlcnRCaWd7XHJcbiAgLy9iYWNrZ3JvdW5kOiAkbWFpbi1jb2xvciAhaW1wb3J0YW50O1xyXG4gIHRvcDogYXV0byAhaW1wb3J0YW50O1xyXG4gIGJvdHRvbTogMCAhaW1wb3J0YW50O1xyXG4gIGEge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbiAgfVxyXG59XHJcblxyXG4jdGFydGVhdWNpdHJvblJvb3QgI3RhcnRlYXVjaXRyb25BbGVydFNtYWxsIHtcclxuICByaWdodDogNzBweCFpbXBvcnRhbnQ7XHJcbiAgYm90dG9tOiAxMnB4IWltcG9ydGFudDtcclxufVxyXG5cclxuI3RhcnRlYXVjaXRyb25Sb290ICN0YXJ0ZWF1Y2l0cm9uSW5mbyB7XHJcbiAgdGV4dC1hbGlnbjogbGVmdCFpbXBvcnRhbnQ7XHJcbiAgYXtcclxuICAgIGZvbnQtc2l6ZToxNnB4IWltcG9ydGFudDtcclxuICB9XHJcbiAgLnVuZGVybGluZWQge1xyXG4gICAgY29sb3I6d2hpdGU7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICB9XHJcbn1cclxuXHJcbiN0YXJ0ZWF1Y2l0cm9uUm9vdCAjdGFydGVhdWNpdHJvbkRpc2NsYWltZXJBbGVydHtcclxuICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbn1cclxuXHJcbi8vIEZyb20gX3BhZ2Uuc2NzcyBWSE0tR3JvdXBcclxuI3RhcnRlYXVjaXRyb25Sb290ICN0YXJ0ZWF1Y2l0cm9uQWxlcnRCaWcge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICBsZWZ0OiAwcHg7XHJcbiAgcmlnaHQ6IDBweDtcclxuICB0b3A6IDBweDtcclxuICBib3R0b206YXV0bztcclxufVxyXG5cclxuI2Rvbm5lZXMtcGVyc29ubmVsbGVzIHtcclxuICBtYXJnaW4tdG9wOiAtNTVweDtcclxuICBwYWRkaW5nLXRvcDogY2FsYyg1NXB4ICsgMS4zM2VtKTtcclxufVxyXG5cclxuIiwiQGNoYXJzZXQgJ1VURi04Jztcbi5zb2NpYWxIZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1kYXJrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDE1cHggJGdpYW50O1xuICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAuc2Vjb25kYXJ5X21lbnUge1xuICAgIG1hcmdpbjogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgLnR4dCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRzbWFsbDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gICAgLmxhbmd1ZS1zd2l0Y2hlciB7XG4gICAgICBtYXJnaW4tbGVmdDogJHNtYWxsO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgYSB7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxpIHtcbiAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICBsaTpob3ZlciB7XG4gICAgICAgIGEge1xuICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuZHJvcGRvd25fc2l0ZXMge1xuICAgICAgICB3aWR0aDogMTUwJTtcbiAgICAgICAgdG9wOiAzMHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHBhZGRpbmc6IDVweCAwO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB6LWluZGV4OiA5OTk5O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZ3JleS1kYXJrO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBsaSB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGdyZXk7XG4gICAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICB9XG4gICAgICAgIGxpOmxhc3QtY2hpbGQge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgbGk6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LWxpZ2h0O1xuICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgICBsaTpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXktbGlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5kcm9wZG93bl9zaXRlczpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTEwcHg7XG4gICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuICAgIGxpOmZpcnN0LWNoaWxkOmhvdmVyLFxuICAgIGxpLmRyb3A6aG92ZXIge1xuICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICAgIC5kcm9wZG93bl9zaXRlcyB7XG4gICAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4jaGVhZGVyIHtcbiAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICRiaWc7XG4gIHBhZGRpbmc6IDAgJGdpYW50O1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHotaW5kZXg6IDEwMDA7XG4gIC5za2V3LWJnIHtcbiAgICBib3gtc2hhZG93OiA1cHggNXB4IDdweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSAhaW1wb3J0YW50O1xuICB9XG4gICYubmF2QmFyT3BlbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIC5za2V3LWJnIHtcbiAgICAgIGJveC1zaGFkb3c6IDVweCA1cHggN3B4IDAgcmdiYSgwLCAwLCAwLCAwLjIpICFpbXBvcnRhbnQ7XG4gICAgICB0cmFuc2Zvcm06IHNrZXcoMGRlZykgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLnYtaGVhZGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5wb3NpdGlvbiB7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwYWRkaW5nOiAwICRtZWRpdW07XG4gICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIHBhZGRpbmc6IDVweCAkc21hbGw7XG4gICAgICB9XG4gICAgfVxuICB9XG4gICYubmF2QmFyQ2xvc2Uge1xuICAgIC5wb3NpdGlvbiB7XG4gICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiA1cHggJHNtYWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogd2lkZSkge1xuICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgfVxuICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgdG9wOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbGVmdDogMHB4O1xuICB9XG4gIC52LWhlYWRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMTIycHg7XG4gICAgbWFyZ2luOiAtMThweCBhdXRvIGF1dG8gMDtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuICAucG9zaXRpb24ge1xuICAgIEBleHRlbmQgJWNlbnRlckJveDtcbiAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgaGVpZ2h0OiA3NXB4O1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA1MHB4KTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogLTU1cHg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMCAwIDAgJG1lZGl1bTtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogd2lkZSkge1xuICAgICAgcGFkZGluZzogMCAwIDAgJHNtYWxsO1xuICAgIH1cbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICBwYWRkaW5nOiA1cHggJHNtYWxsO1xuICAgICAgbGVmdDogMHB4O1xuICAgIH1cbiAgICAjbG9nbyB7XG4gICAgICB3aWR0aDogMTE1cHg7XG4gICAgfVxuICAgIC5za2V3LWJnIHtcbiAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgei1pbmRleDogLTE7XG4gICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICB3aWR0aDogaW5oZXJpdDtcbiAgICAgIHRyYW5zZm9ybTogJHNrZXc7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2tldygwZGVnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnNvY2lhbCBhIHtcbiAgICBjb2xvcjogJGdyZXktbGlnaHQ7XG4gICAgQGV4dGVuZCAlaG92ZXItbGluaztcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogMTIxMnB4KSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgIH1cbiAgfVxufVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbldBVkVTXG5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4ud2F2ZXMge1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogMjAwcHg7XG4gIHRvcDogY2FsYygjeyRkaWFwb3JhbWEtaGVpZ2h0fSAtIDEwNXB4KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgdG9wOiBjYWxjKDgwdmggLSAxNjBweCk7XG4gICAgQG1lZGlhICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSksICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG4gICAgICB0b3A6IGNhbGMoNjB2aCAtIDE2MHB4KTtcbiAgICB9XG4gIH1cbiAgLndhdmUge1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogMTA7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGltYWdlIHtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgfVxuICB9XG59XG5cbi5wYXRoLWZyb250cGFnZSB7XG4gIC53YXZlcyB7XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgdG9wOiBjYWxjKDgwdmggLSAxNjBweCk7XG4gICAgICBAbWVkaWEgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSwgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgICAgICAgdG9wOiBjYWxjKDgwdmggLSAxNjBweCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5NRU5VIFRSSUdHRVJcblxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLm1lbnUtdHJpZ2dlciB7XG4gIHJpZ2h0OiAkc21hbGw7XG4gIHRvcDogMTBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICB6LWluZGV4OiAxMTAwMDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiAwIDEwcHg7XG4gIEBleHRlbmQgJXRyYW5zaXRpb247XG4gIC50cmlnZ2VyLWJnIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIHotaW5kZXg6IC0xO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtYWluLWNvbG9yO1xuICAgIHRyYW5zZm9ybTogJHNrZXc7XG4gIH1cbiAgQGluY2x1ZGUgbWVkaWEoJHVudGlsOiB0YWJsZXQpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICY6aG92ZXIgLmludGl0dWxlTWVudSB7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50aXplKCR3aGl0ZSwgMC41KTtcbiAgfVxuICAuaW50aXR1bGVNZW51IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgfVxuICAudHJpZ2dlcnMge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgLmxpbmUtdG9wLFxuICAgIC5saW5lLW1pZGRsZSxcbiAgICAubGluZS1ib3R0b20ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBoZWlnaHQ6IDNweDtcbiAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICB9XG4gICAgLmxpbmUtdG9wIHtcbiAgICAgIHRvcDogMDtcbiAgICAgIHdpZHRoOiAkc21hbGw7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAyNHB4IDJweDtcbiAgICB9XG4gICAgLmxpbmUtbWlkZGxlIHtcbiAgICAgIHRvcDogOHB4O1xuICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgd2lkdGg6IDE3cHg7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDIwMG1zIGxpbmVhcjtcbiAgICB9XG4gICAgLmxpbmUtYm90dG9tIHtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIHdpZHRoOiAkc21hbGw7XG4gICAgICBvcGFjaXR5OiAwLjM1O1xuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMjNweCAycHg7XG4gICAgfVxuICB9XG4gIC5pcy1vcGVuICYgc3BhbiB7XG4gICAgLmxpbmUtdG9wIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxcHg7XG4gICAgICBhbmltYXRpb246IGxpbmUtdG9wLW91dCA2MDBtcyBsaW5lYXIgbm9ybWFsO1xuICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDA7XG4gICAgfVxuICAgIC5saW5lLW1pZGRsZSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAubGluZS1ib3R0b20ge1xuICAgICAgbWFyZ2luLWxlZnQ6IDFweDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBhbmltYXRpb246IGxpbmUtYm90LW91dCA2MDBtcyBsaW5lYXIgbm9ybWFsO1xuICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDA7XG4gICAgfVxuICB9XG4gIC5pcy1jbG9zZWQgJiBzcGFuIHtcbiAgICAubGluZS10b3Age1xuICAgICAgYW5pbWF0aW9uOiBsaW5lLXRvcC1pbiA2MDBtcyBsaW5lYXIgbm9ybWFsO1xuICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDA7XG4gICAgfVxuICAgIC5saW5lLW1pZGRsZSB7XG4gICAgICB0cmFuc2l0aW9uLWRlbGF5OiAyMDBtcztcbiAgICB9XG4gICAgLmxpbmUtYm90dG9tIHtcbiAgICAgIGFuaW1hdGlvbjogbGluZS1ib3QtaW4gNjAwbXMgbGluZWFyIG5vcm1hbDtcbiAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwO1xuICAgIH1cbiAgfVxufVxuXG4uYnJlYWRjcnVtYiB7XG4gIHBhZGRpbmctYm90dG9tOiAwLjVlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxMDA7XG4gIHdpZHRoOiA1MHZ3O1xuICBmb250LXNpemU6IDEzcHg7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gIG1hcmdpbi1sZWZ0OiAyNXZ3O1xuICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogZGVza3RvcCkge1xuICAgIHdpZHRoOiA4MHZ3O1xuICAgIG1hcmdpbi1sZWZ0OiAxMHZ3O1xuICB9XG4gIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgcGFkZGluZzogMCAkc21hbGw7XG4gIH1cbiAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBwYWRkaW5nOiAkc21hbGw7XG4gIH1cbiAgbGk6Zmlyc3QtY2hpbGQgYSB7XG4gICAgZm9udC1zaXplOiAwcHg7XG4gICAgQGV4dGVuZCAlaWNvbi1ob21lO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogMXB4O1xuICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgIH1cbiAgfVxuICBsaTpub3QoOmZpcnN0LW9mLXR5cGUpOmJlZm9yZSB7XG4gICAgY29udGVudDogXCItXCIgIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAwLjY1O1xuICB9XG4gIGEge1xuICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgb3BhY2l0eTogMC42NTtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkbWFpbi1jb2xvcjtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCAnVVRGLTgnO1xuLmxpc3RpbmcsXG4jbGlzdGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgcGFkZGluZzogMCAkbWVkaXVtO1xuICAgIH1cbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgIHBhZGRpbmc6IDAgJHNtYWxsO1xuICAgIH1cbiAgICAjYWpheC1jYWxsYmFjayB7XG4gICAgICAgIC8vICNub2RlLWxpc3Q6Zmlyc3QtY2hpbGQge1xuICAgICAgICAvLyBwYWRkaW5nOiA1MHB4IDA7XG4gICAgICAgIC8vIH1cbiAgICAgICAgI25vZGUtbGlzdCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgaDIge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICRzbWFsbCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgI3BhZ2luYXRpb24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICRzbWFsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAjbm9kZS1jb250ZW50IHtcbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgICB3aWR0aDogNjB2dztcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyMHZ3O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAjbm9kZS1saXN0LFxuICAgICNub2RlLW90aGVyIHtcbiAgICAgICAgcGFkZGluZzogJHNtYWxsIDA7XG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgICAgICAuYWN0dV90aXRsZSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgICB3aWR0aDogNjB2dztcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyMHZ3O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBkZXNrdG9wKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDgwdnc7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwdnc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUHJlc3RhdGlvbi9ub2RlXG4gICAgICAgICAgICAubGlzdGVfcHJlc3RhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgICAgICA+bGkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDkwcHg7XG4gICAgICAgICAgICAgICAgICAgID4ubG9nbyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgY29sMigxLCAzLCAyNXB4KTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAxMi41cHg7XG4gICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1ibHVlO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4ICRzbWFsbDtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgICAgICAgICAuaXRlbS1pbmZvcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBoMzpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBjb2wyKDEsIDIsIDI1cHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNtYWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNvbDIoMiwgMiwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmFjdGl2ZTpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjODg4Y2M2O1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5saXN0ZV9kb21haW5lIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMi41cHg7XG4gICAgICAgICAgICAgICAgPmxpIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMzVweDtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2FsYyg1MCUgLSAyNXB4KTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHNtYWxsO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBsZWZ0OiAtMTIuNXB4O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNvbC1jb250YWluZXIoJHNtYWxsKTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgLnByZXN0YV9saXN0ZSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgLml0ZW0taW5mb3Mge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMzMuMzMzMzMlIC0gI3skc21hbGx9KTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAkc21hbGwgLyAyO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIyNXB4O1xuICAgICAgICAgICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBjb2wyKDEsIDIsICRzbWFsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgY29sMigyLCAyLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzbWFsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLml0ZW0taW5mb3Mge1xuICAgICAgICAgICAgICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaDM6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLmxhYmVsX2RvbWFpbmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhICgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMjVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vdmVybGF5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNzVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDgwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPi5pdGVtLWxpbmsge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAxMDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5pdGVtLWFjdHUge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLml0ZW0tbGlzdGUtcHJlc3RhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpZHRoOiA1MCU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLmluZm9zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1ibHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMyU7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggJHNtYWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGgzOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gUHJlc3RhdGlvbnNcbiAgICAgICAgICAgICAgICAucHJlc3RhX2xpc3RlIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyODBweDtcbiAgICAgICAgICAgICAgICAgICAgLmluZm9zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucGF0aC1wcmVzdGF0aW9ucyB7XG4gICAgZm9vdGVyIHtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gZG9tYWluZXMgZCdhcHBsaWNhdGlvbnNcbi5kb21haW5lX2FwcCB7XG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgIHBhZGRpbmc6IDAgJHNtYWxsO1xuICAgIH1cbiAgICAubGlzdGVfZG9tYWluZSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKDUwJSAtIDI1cHgpO1xuICAgICAgICAgICAgcGFkZGluZzogJHNtYWxsO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuYmFjayB7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjVzIGxpbmVhcjtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAxMDA7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWZvbmRlcmllO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0yNXB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAudGV4dEJhY2sge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAkc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaDM6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gT25DbGljaywgZGlzcGxheSB0ZXh0XG4gICAgICAgIC5mbGlwcGVkIHtcbiAgICAgICAgICAgIC5sYWJlbF9kb21haW5lIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmJhY2sge1xuICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMCUhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uaXRlbSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uaXRlbS12aXN1ZWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgQGV4dGVuZCAlY292ZXI7XG4gICAgLm92ZXJsYXktZ3JhZGllbnQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIEBleHRlbmQgJWl0ZW0tY29sb3ItZ3JhZGllbnQ7XG4gICAgfVxufVxuXG4jcHJvZHVpdHMge1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG87XG4gICAgfVxuICAgICNub2RlLW90aGVyLFxuICAgICNub2RlLWxpc3Qge1xuICAgICAgICBwYWRkaW5nLXRvcDogMjVweDtcbiAgICAgICAgI3B1c2hQcm9kdWl0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwICRzbWFsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgICAgICAvLyBwYWRkaW5nOiAwICRtZWRpdW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5saXN0aW5nIHtcbiAgICAgICAgI25vZGUtbGlzdCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDAgMjVweCAwO1xuICAgICAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNvbDIoMSwgNSwgMjVweCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNvbDIoMSwgMywgMjVweCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgY29sMigxLCAxLCAyNXB4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLmxhYmVsX3Byb2R1aXRzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1haW4tY29sb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAkbWVkaXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYWluLWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaDM6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAudmlzdWVsX3Byb2R1aXRzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGV4dGVuZCAlY292ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBsaTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAubGFiZWxfcHJvZHVpdHMge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYWluLWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuI3JlZmVyZW5jZXMge1xuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgcGFkZGluZzogMCAkc21hbGw7XG4gICAgICAgICNwdXNoUmVmZXJlbmNlIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmxpc3Rpbmcge1xuICAgICAgICAjbm9kZS1saXN0IHtcbiAgICAgICAgICAgIC5jb250YWluZXIge1xuICAgICAgICAgICAgICAgIC5saXN0ZV9yZWZlcmVuY2Uge1xuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgLnJlZmVyZW5jZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLmxhYmVsX3JlZmVyZW5jZXMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAubGFiZWxfcmVmZXJlbmNlcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaDM6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLnJlZmVyZW5jZTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAubGFiZWxfcmVmZXJlbmNlcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLml0ZW0taW5mb3Mge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdG9wOiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIC5sb2dvIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICAgIHNwYW4uaXRlbS1zdW1tYXJ5LFxuICAgIHNwYW4uaXRlbS1kYXRlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNtYWxsO1xuICAgIH1cbiAgICBzcGFuLml0ZW0tZGF0ZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG4gICAgYS5pdGVtLXJlYWRtb3JlIHtcbiAgICAgICAgQGV4dGVuZCAlbGluaztcbiAgICAgICAgQGV4dGVuZCAlaG92ZXItaTtcbiAgICAgICAgQGV4dGVuZCAlaG92ZXItbGluaztcbiAgICB9XG59XG5cbi5ub3RpY2lhIHtcbiAgICAuaXRlbS1pbmZvcyB7XG4gICAgICAgIHBhZGRpbmc6ICRtZWRpdW07XG4gICAgfVxufVxuXG4jcGFnaW5hdGlvbiBzcGFuLmJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBoZWlnaHQ6ICRtZWRpdW07XG4gICAgYmFja2dyb3VuZDogJG1haW4tY29sb3I7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIEBpbmNsdWRlIGNvbCgxLCAzLCAyNXB4KTtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICBAaW5jbHVkZSBjb2woMSwgMSwgMCk7XG4gICAgfVxufVxuXG4jYWN0dWFsaXRlcyB7XG4gICAgdWwge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pdGVtLWluZm9zIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxLjVlbTtcbiAgICAgICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaDM6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5pbmZvcyB7XG4gICAgZGl2IHtcbiAgICAgICAgaDMge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuTUVOVSBQUklOQ0lQQUxcblxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiNoZWFkZXIge1xuICAgIC5zY3JvbGxfbWVudT51bD5saTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICAgICAgQGV4dGVuZCAlYW50aXNsYXNoLW1lbnU7XG4gICAgfVxuICAgIEBpbmNsdWRlIG1lZGlhKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICAgIC5zY3JvbGxfbWVudSB7XG4gICAgICAgICAgICA+dWwge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4sXG4gICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRncmV5LWxpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJG1haW4tY29sb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnRpemUoJHdoaXRlLCAwLjc1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubml2MCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMjVweCAwO1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdWwubml2MSxcbiAgICAgICAgICAgIHVsLm5pdjIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5uaXYwPi50b2dnbGVyOmhvdmVyIHtcbiAgICAgICAgICAgICAgICA+dWwge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWFpbi1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAyNXB4O1xuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwICRzbWFsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAkc21hbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206ICRzbWFsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICY6bGFzdC1vZi10eXBlPmE6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1bC5uaXYxIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1bC5uaXYyIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYWluLWNvbG9yLWxpZ2h0O1xuICAgICAgICAgICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubml2MT4udG9nZ2xlcjpob3ZlciB7XG4gICAgICAgICAgICAgICAgPnVsIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubml2MSBzcGFuLFxuICAgICAgICAgICAgLm5pdjEgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJHNtYWxsO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkd2hpdGUsIDAuNSk7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogJHNtYWxsIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnRpemUoJHdoaXRlLCAwLjUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5zb2NpYWxIZWFkZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbk1FTlUgUkVTUE9OU0lWRVxuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICNibG9jay1uYXZpZ2F0aW9ucHJpbmNpcGFsZT51bD5saTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgI21haW4tbWVudSB7XG4gICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGxlZnQ6IC0xMDAwMHB4O1xuICAgICAgICB6LWluZGV4OiAxMDk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYWluLWNvbG9yO1xuICAgICAgICAvLyBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgLmlzLW9wZW4gJiB7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBhbmltYXRpb246IG1lbnVJbiAxcyBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgLm1lbnVDb250ZW50IHtcbiAgICAgICAgICAgICAgICBuYXYge1xuICAgICAgICAgICAgICAgICAgICAvLyBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuc2Nyb2xsX21lbnUge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDkwdmg7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDI1cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5pcy1jbG9zZWQgJiB7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICBhbmltYXRpb246IG1lbnVPdXQgMXMgY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7XG4gICAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAgICAgfVxuICAgICAgICB1bC5tZW51IHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLnNvY2lhbEhlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnNlY29uZGFyeV9tZW51IHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAkc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCR3aGl0ZSwgMC41KTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAxNXB4IGF1dG87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNtYWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAudHh0IHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLm1lbnVDb250ZW50IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIC5pcy1jbG9zZWQgJiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB1bC5uaXYwIHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICAgICAgLmlzLW9wZW4gJiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGZhZGVJbiAzMDBtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAxcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAuaXMtY2xvc2VkICYge1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlT3V0IDMwMG1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAjYmxvY2stbmF2aWdhdGlvbnByaW5jaXBhbGUge1xuICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBtYXJnaW4tdG9wOjEwMHB4O1xcXG4gICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyMDBweCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubml2MCBsaSB7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubml2MD5saSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICA+YSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAkc21hbGw7XG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAkc21hbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkd2hpdGUsIDAuNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMTVweCBhdXRvO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50aXplKCR3aGl0ZSwgMC41KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmOmZpcnN0LW9mLXR5cGU+YTpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVsLm5pdjEge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMTVweCBhdXRvIDAgYXV0bztcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgPmxpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDA7XG4gICAgICAgICAgICAgICAgICAgID5hIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkd2hpdGUsIDAuMyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1bC5uaXYyIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwcHggMCAwIDA7XG4gICAgICAgICAgICAgICAgPmxpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDA7XG4gICAgICAgICAgICAgICAgICAgID5hIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkd2hpdGUsIDAuNSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbk1FTlUgRk9PVEVSXG5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI2Jsb2NrLW1lbnVmb290ZXJkZSxcbiNibG9jay1tZW51Zm9vdGVyZW4sXG4jYmxvY2stbWVudWZvb3RlciB7XG4gICAgdWwge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgID5saSB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGdyZXktbGlnaHQ7XG4gICAgICAgICAgICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRtYWluLWNvbG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRzbWFsbDtcbiAgICAgICAgICAgIEBleHRlbmQgJWFudGlzbGFzaC1tZW51O1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAubml2MCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgID5saSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDA7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICA+bGkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuc29jaWFsSGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG4iLCJAY2hhcnNldCAnVVRGLTgnO1xuYm9keSB7XG4gICAgQGV4dGVuZCAlZm9udC1yZWd1bGFyO1xuICAgIGZvbnQtc2l6ZTogJGRlZmF1bHQtZm9udC1zaXplO1xuICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkZ3JleS1saWdodDtcbiAgICAjbWFpbiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICB9XG4gICAgJi5pcy1vcGVuIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICB9XG4gICAgJi5pbWNlLXBhZ2Uge1xuICAgICAgICAjZm9vdGVyLFxuICAgICAgICAjbWFpbixcbiAgICAgICAgLndhdmVzLFxuICAgICAgICAuc2YtdG9vbGJhcixcbiAgICAgICAgI2hlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubGVnZW5kIHtcbiAgICBmb250LXNpemU6IDAuN2VtO1xuICAgIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICAgIGNvbG9yOiAkZ3JleS1kYXJrO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufSIsIkBjaGFyc2V0ICdVVEYtOCc7XG4jZm9vdGVyIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcGFkZGluZzogJG1lZGl1bSAwIDA7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogZGVza3RvcCkge1xuICAgICAgICBwYWRkaW5nOiAwICRtZWRpdW07XG4gICAgICAgIHBhZGRpbmctdG9wOiAkbWVkaXVtO1xuICAgIH1cbiAgICAjcHVzaHMge1xuICAgICAgICBtYXJnaW4tdG9wOiAwcHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwcHg7XG4gICAgfVxuICAgICNibG9jay1tZW51Zm9vdGVyIHtcbiAgICAgICAgdWwge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiNmb290ZXI+LnBvc2l0aW9uIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDAgMCAkbWVkaXVtIDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIC5zaGFyZSB7XG4gICAgICAgIEBleHRlbmQgJWxpbms7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGNvbG9yOiAkbWFpbi1jb2xvcjtcbiAgICAgICAgaSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5hZHJlc3Mge1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICAubG9nbyB7XG4gICAgICAgIG1hcmdpbi10b3A6ICRtZWRpdW07XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNjcm9sbFRvVG9wIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICBoZWlnaHQ6ICRtZWRpdW07XG4gICAgd2lkdGg6ICRtZWRpdW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWZvbmRlcmllO1xuICAgIGJvdHRvbTogJG1lZGl1bTtcbiAgICByaWdodDogJGdpYW50O1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IGRlc2t0b3ApIHtcbiAgICAgICAgYm90dG9tOiAkbWVkaXVtO1xuICAgICAgICByaWdodDogJG1lZGl1bTtcbiAgICB9XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICBib3R0b206ICRzbWFsbDtcbiAgICAgICAgcmlnaHQ6ICRzbWFsbDtcbiAgICB9XG4gICAgaSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG4gICAgfVxufVxuXG4ucGF0aC1kb21haW5lcyB7XG4gICAgI2Zvb3RlciB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuRElBUE9SQU1BXG5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4jZGlhcG9yYW1hIHtcbiAgICBoZWlnaHQ6ICRkaWFwb3JhbWEtaGVpZ2h0O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgaGVpZ2h0OiA4MHZoO1xuICAgIH1cbiAgICB1bCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgIH1cbiAgICB1bC5zbGljay1kb3RzIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gICAgICAgIHRvcDogMCAhaW1wb3J0YW50O1xuICAgICAgICB6LWluZGV4OiAxMDAwMDAgIWltcG9ydGFudDtcbiAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nLXRvcDogMzAwcHg7XG4gICAgICAgIHJpZ2h0OiAxMDBweDtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDEyMHB4O1xuICAgICAgICAgICAgcmlnaHQ6IDUwJTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUpO1xuICAgICAgICB9XG4gICAgICAgIGxpIGJ1dHRvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn4oCiJztcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogLjY1O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGkuc2xpY2stYWN0aXZlIGJ1dHRvbjpiZWZvcmUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzMnB4O1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnNsaWRlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBoZWlnaHQ6ICRkaWFwb3JhbWEtaGVpZ2h0O1xuICAgICAgICB3aWR0aDogaW5oZXJpdDtcbiAgICAgICAgQGV4dGVuZCAlY292ZXI7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgIGhlaWdodDogODB2aDtcbiAgICAgICAgfVxuICAgICAgICBoMSxcbiAgICAgICAgLmxpbmsge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRiaWc7XG4gICAgICAgIH1cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIC8vIGlmIElFMTArXG4gICAgICAgICAgICAvLyBAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuICAgICAgICAgICAgLy8gICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIC8vICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgLy8gICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgIC8vICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIC8vICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuICAgICAgICAucG9zaXRpb24ge1xuICAgICAgICAgICAgQGV4dGVuZCAlY2VudGVyQm94O1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHotaW5kZXg6IDEwMDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxOHZoO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMHZoO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJG1lZGl1bTtcbiAgICAgICAgICAgICAgICBoMSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIEBleHRlbmQgJWxpbms7XG4gICAgICAgICAgICAgICAgQGV4dGVuZCAlaG92ZXItaTtcbiAgICAgICAgICAgICAgICBAZXh0ZW5kICVob3Zlci1saW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucHVzaFByZXN0YXRpb25zIHtcbiAgICAudGV4dGUge1xuICAgICAgICBwIHtcbiAgICAgICAgICAgIC8vIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BQ1RVQUxJVMOJU1xuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI2FjdHVhbGl0ZXNIb21lIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgLmxpc3Rpbmcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMCAxMDBweDtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgcGFkZGluZzogMjVweDtcbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI4MHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgdG9wOiAkbWVkaXVtO1xuICAgIH1cbn1cblxuI2FjdHVhbGl0ZXNIb21lPi50aXRyZSB7XG4gICAgaGVpZ2h0OiAyNzBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAkZ2lhbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgQGV4dGVuZCAlbWFpbi1jb2xvci1ncmFkaWVudDtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogZGVza3RvcCkge1xuICAgICAgICBwYWRkaW5nOiAwICRtZWRpdW07XG4gICAgfVxuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgcGFkZGluZzogMCAkc21hbGw7XG4gICAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgfVxuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgLy8gaGVpZ2h0OiAyNTBweDtcbiAgICB9XG4gICAgaDIge1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICB3aWR0aDogJG1lZGl1bTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCR3aGl0ZSwgMC41KTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luOiAkc21hbGwgYXV0byBhdXRvIGF1dG87XG4gICAgICAgIH1cbiAgICB9XG4gICAgYSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6ICRnaWFudDtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgQGV4dGVuZCAlbGluaztcbiAgICAgICAgQGV4dGVuZCAlaG92ZXItaTtcbiAgICAgICAgQGV4dGVuZCAlaG92ZXItbGluaztcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgcmlnaHQ6ICRzbWFsbDtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogc21hbGwpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAjYWN0dWFsaXRlcyAubGlzdGluZyB7XG4gICAgICAgIHVsOmZpcnN0LW9mLXR5cGUsXG4gICAgICAgIHVsOmxhc3Qtb2YtdHlwZSxcbiAgICAgICAgdWwge1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDBweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5QUkVTVEFUSU9OU1xuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI3ByZXN0YXRpb25zSG9tZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBwYWRkaW5nOiAwICRtZWRpdW0gJGdpYW50ICRtZWRpdW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB3aWRlKSB7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAwIDA7XG4gICAgfVxuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG4gICAgI2RpYXBvcmFtYVByZXN0YXRpb25zIHtcbiAgICAgICAgQGV4dGVuZCAlY2VudGVyQm94O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIHBhZGRpbmc6IDAgJG1lZGl1bTtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHdpZGUpIHtcbiAgICAgICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IGRlc2t0b3ApIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZGlhcG8ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiA0MCU7XG4gICAgICAgIGhlaWdodDogNTQ5cHg7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBkZXNrdG9wKSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGhlaWdodDogMzAwcHg7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgbWluLWhlaWdodDogMzAwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLnNsaWRlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogNTBweDtcbiAgICAgICAgICAgIGxlZnQ6IDBweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBkZXNrdG9wKSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnZpc3VlbCB7XG4gICAgICAgICAgICAgICAgQGV4dGVuZCAlY292ZXI7XG4gICAgICAgICAgICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYyggI3tjb2xTaXplKDIsMywyNXB4KX0gKyAxMDBweCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0kZ2lhbnQ7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgdG9wOiAwcHg7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC52aXN1ZWwge1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC50ZXh0ZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJGdpYW50O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHNtYWxsO1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IGRlc2t0b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNtYWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgQGV4dGVuZCAlbGluaztcbiAgICAgICAgICAgICAgICAgICAgQGV4dGVuZCAlaG92ZXItaTtcbiAgICAgICAgICAgICAgICAgICAgQGV4dGVuZCAlaG92ZXItbGluaztcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRtYWluLWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkc21hbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgICAgICAudmlzdWVsLFxuICAgICAgICAgICAgICAgIC50ZXh0ZSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnZpc3VlbCB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzUwcHg7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgICNwdXNoUHJlc3RhIHtcbiAgICAgICAgICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgLnRleHRlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgI3B1c2hQcmVzdGEge1xuICAgICAgICAgICAgICAgIC5jb250YWluZXIge1xuICAgICAgICAgICAgICAgICAgICAudGV4dGUge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZWN0aW9uIHtcbiAgICAgICAgICAgIC5jb250YWluZXIge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IGRlc2t0b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDgwdnc7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHZ3O1xuICAgICAgICAgICAgICAgICAgICBoMiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHNtYWxsO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaDIrcCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaDIge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDQwcHggMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC50ZXh0ZSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZW1wdHkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuZ2VhcnMge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDExO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDAgJG1lZGl1bSAkbWVkaXVtIDA7XG4gICAgICAgIHdpZHRoOiBjb2xTaXplKDksIDEwLCAyNXB4KTtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgbWluLWhlaWdodDogNTQ5cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB3aWRlKSB7XG4gICAgICAgICAgICBsZWZ0OiAtJG1lZGl1bTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogZGVza3RvcCkge1xuICAgICAgICAgICAgbGVmdDogJGJpZztcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAkc21hbGw7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDU0OXB4O1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIC52aW9sZXQge1xuICAgICAgICAgICAgICAgIHRvcDogMjM3cHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDUwMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICBmaWxsOiAjQUFBRkY4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogLTE0cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM2NDY5YjI7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAxMDAxO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMmVtO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBmaWx0ZXIgMnM7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDAwMDtcbiAgICAgICAgICAgICNkZW50cyB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiB1cmwoI2Ryb3Atc2hhZG93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAudXNpbmFnZSB7XG4gICAgICAgICAgICBoNCB7XG4gICAgICAgICAgICAgICAgbGVmdDogMTEwcHg7XG4gICAgICAgICAgICAgICAgdG9wOiA0MHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAtMTRweDtcbiAgICAgICAgICAgIGxlZnQ6IDIycHg7XG4gICAgICAgICAgICAubG9nb19zdmcge1xuICAgICAgICAgICAgICAgIGxlZnQ6IDEyOXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0aW9uTDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMDBtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDE3OHB4IDE3OHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLm1lY2Fuby1zb3VkdXJlIHtcbiAgICAgICAgICAgIGg0IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiA0MHB4O1xuICAgICAgICAgICAgICAgIHRvcDogNDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMjNweDtcbiAgICAgICAgICAgIGxlZnQ6IDM0MHB4O1xuICAgICAgICAgICAgLmxvZ29fc3ZnIHtcbiAgICAgICAgICAgICAgICB0b3A6IDEzNXB4O1xuICAgICAgICAgICAgICAgIGxlZnQ6IDEzNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0aW9uTDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMDBtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMTg0cHggMTg0cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnByZXN0YXRpb25zX2FubmV4ZXMge1xuICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgIHRvcDogNjBweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAyMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDU3NXB4O1xuICAgICAgICAgICAgdG9wOiAwcHg7XG4gICAgICAgICAgICAubG9nb19zdmcge1xuICAgICAgICAgICAgICAgIHRvcDogNzBweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiA3NXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0aW9uUjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMDBtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMTg3cHggMTc5cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmZvbmRlcmllIHtcbiAgICAgICAgICAgIGg0IHtcbiAgICAgICAgICAgICAgICB0b3A6IDM0MHB4O1xuICAgICAgICAgICAgICAgIGxlZnQ6IDEzMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAyMTBweDtcbiAgICAgICAgICAgIGxlZnQ6IDE0MHB4O1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTUwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxNTBweDtcbiAgICAgICAgICAgICAgICB0b3A6IDkwcHg7XG4gICAgICAgICAgICAgICAgbGVmdDogMTE1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tbmFtZTogcm90YXRpb25SO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxMDAwMG1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxODhweCAxNjdweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuZXhwZXJ0aXNlIHtcbiAgICAgICAgICAgIGg0IHtcbiAgICAgICAgICAgICAgICB0b3A6IDIyMHB4O1xuICAgICAgICAgICAgICAgIGxlZnQ6IDYwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDM0MHB4O1xuICAgICAgICAgICAgbGVmdDogNDI0cHg7XG4gICAgICAgICAgICAubG9nb19zdmcge1xuICAgICAgICAgICAgICAgIHRvcDogNjBweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiA2OXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0aW9uTDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMDBtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMTgxcHggMTcwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnZpb2xldCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDM0MXB4O1xuICAgICAgICAgICAgbGVmdDogNTkwcHg7XG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIGZpbGw6ICRjb2xvci1mb25kZXJpZTIgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5sb2dvX3N2ZyB7XG4gICAgICAgICAgICAgICAgdG9wOiA3MHB4O1xuICAgICAgICAgICAgICAgIGxlZnQ6IDY1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tbmFtZTogcm90YXRpb25SO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxMDAwMG1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxNzdweCAxODJweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuY29udHJvbGVfcXVhbGl0ZSB7XG4gICAgICAgICAgICBoNCB7XG4gICAgICAgICAgICAgICAgbGVmdDogMTI1cHg7XG4gICAgICAgICAgICAgICAgdG9wOiA1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiA2NTBweDtcbiAgICAgICAgICAgIHRvcDogMjAycHg7XG4gICAgICAgICAgICAubG9nb19zdmcge1xuICAgICAgICAgICAgICAgIHRvcDogNzZweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgICAgICAgICAgbGVmdDogODBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgIGltYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiByb3RhdGlvbkw7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDEwMDAwbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDE3OHB4IDE3N3B4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIC5sb2dvX3N2ZyB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDM1MG1zIGN1YmljLWJlemllcigwLCAxMCwgMC4xNiwgMC4xMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubG9nb19zdmc6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgNTBweCByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KSwgMCAwIDUwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7XG4gICAgICAgICAgICAgICAgb3V0bGluZS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTtcbiAgICAgICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogMTVweDtcbiAgICAgICAgICAgICAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCAycHggIzQyNzM4ODtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaTpmaXJzdC1vZi10eXBlIGgzIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cbiAgICAgICAgbGk6bGFzdC1vZi10eXBlIGRpdjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgLmluZm9zIHtcbiAgICAgICAgICAgICAgICBAZXh0ZW5kICVhbnRpc2xhc2gtaDM7XG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA0cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBvcGFjaXR5IDQwMG1zIGxpbmVhcjtcbiAgICAgICAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDIwMG1zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgd2lkdGg6ICRzbWFsbDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCR3aGl0ZSwgMC41KTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDE1cHggYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgei1pbmRleDogOTtcbiAgICAgICAgICAgIHRvcDogMTI1cHg7XG4gICAgICAgICAgICB3aWR0aDogMTAwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMHB4O1xuICAgICAgICAgICAgbGVmdDogMTMzcHg7XG4gICAgICAgIH1cbiAgICAgICAgLmluZm9zIHtcbiAgICAgICAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KTtcbiAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0aW9uUiB7XG4gICAgZnJvbSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0aW9uTCB7XG4gICAgZnJvbSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgfVxufVxuXG4jcHVzaHMge1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhIHtcbiAgICAgICAgd2lkdGg6IDQ4JTtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDUlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc21hbGw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kaWFwb19kZXNrdG9wIHtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uZGlhcG9fbW9iaWxlIHtcbiAgICBAaW5jbHVkZSBtZWRpYSgkdW50aWw6IHRhYmxldCkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAuc2xpZGUge1xuICAgICAgICBwYWRkaW5nOiAkc21hbGw7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICAudGV4dGUge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBAZXh0ZW5kICVsaW5rO1xuICAgICAgICAgICAgICAgIEBleHRlbmQgJWhvdmVyLWk7XG4gICAgICAgICAgICAgICAgQGV4dGVuZCAlaG92ZXItbGluaztcbiAgICAgICAgICAgICAgICBjb2xvcjogJG1haW4tY29sb3I7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNtYWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5hY3RpdmUge1xuICAgICAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgLnRleHRlIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6ICRzbWFsbDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbiAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAkc21hbGwgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICBoMiB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gICAgLnRleHRJbnRybyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5hY3RpdmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgI2RpYXBvcmFtYVByZXN0YXRpb25zTW9iaWxlIHtcbiAgICAgICAgLmxpc3Qge1xuICAgICAgICAgICAgcGFkZGluZzogJHNtYWxsIDA7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWFpbi1jb2xvcjtcbiAgICAgICAgICAgIGxpOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAuc3dpdGNoUHJlc3RhdGlvbk1vYmlsZSB7XG4gICAgICAgICAgICAgICAgICAgIC5sb2dvX3N2ZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgLnN3aXRjaFByZXN0YXRpb25Nb2JpbGUge1xuICAgICAgICAgICAgICAgICAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICNhbmNob3JQcmVzdGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAjYW5jaG9yUHJlc3RhOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMDBweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAubG9nb19zdmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1vdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiA0MHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lkdGg6IDYwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDM1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXJnaW4tdG9wOiAkc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLmluZm9zX21vYmlsZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICRzbWFsbCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaDI6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsIDAlLCAxMDAlLCAuNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAkc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnN3aXRjaFByZXN0YXRpb25Nb2JpbGUuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgQGV4dGVuZCAldHJhbnNpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJHVudGlsOiBtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5sb2dvX3N2ZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAuaW5mb3NfbW9iaWxlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkdW50aWw6IG1vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhZGRpbmctbGVmdDogMjIwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFyZ2luLWxlZnQ6IDgwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBoMjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblF1YWxpdMOpXG5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4jcHVzaFF1YWxpdGUge1xuICAgIHBhZGRpbmc6IDAgJGdpYW50O1xuICAgIG1hcmdpbjogYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB3aWRlKSB7XG4gICAgICAgIHBhZGRpbmc6IDAgJGdpYW50O1xuICAgIH1cbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIHBhZGRpbmc6IDAgJHNtYWxsO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICBwYWRkaW5nOiAwICRzbWFsbDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIC5jb250YWluZXIge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIC8vIHBhZGRpbmc6ICRzbWFsbDtcbiAgICAgICAgfVxuICAgICAgICBhIHtcbiAgICAgICAgICAgIEBleHRlbmQgJWhvdmVyLWk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuICAgICAgICBhOmhvdmVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IC41O1xuICAgICAgICAgICAgY29sb3I6ICRtYWluLWNvbG9yO1xuICAgICAgICAgICAgaSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC50ZXh0ZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAkZ2lhbnQ7XG4gICAgICAgICAgICB3aWR0aDogNDUlO1xuICAgICAgICAgICAgcGFkZGluZy10b3A6ICRtZWRpdW07XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogZGVza3RvcCkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1lZGl1bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhICgkdW50aWw6IHRhYmxldCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHNtYWxsO1xuICAgICAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgLy8gcGFkZGluZy10b3A6IDQwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgLy8gdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzbWFsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC52aWRlby1jb250YWluZXIge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzbWFsbDtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJG1lZGl1bTtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWZyYW1lIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGltZyB7XG4gICAgICAgIHBhZGRpbmc6ICRtZWRpdW0gMCAkbWVkaXVtICRtZWRpdW07XG4gICAgICAgIHdpZHRoOiBjb2xTaXplKDYsIDEwLCAyNXB4KTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAkbWVkaXVtIDAgMCAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vKioqKioqKioqKioqKioqKioqKioqXG5cbkN5Y2xlIGRlIGNvbmNlcHRpb25cblxuKioqKioqKioqKioqKioqKioqKiovXG5cbi5jeWNsZV9jb25jZXB0IHtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjVweDtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgY29udGVudDogbm9uZTtcbiAgICB9XG4gICAgLnRleHRlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBoMiB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiA0MHB4IDA7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAwIDQwcHggMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5jb250YWluZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogZGVza3RvcCkge1xuICAgICAgICAgICAgd2lkdGg6IDgwdnc7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTB2dztcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMjVweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuY29udGFpbmVyX2NvbmNlcHQge1xuICAgICAgICAubGlzdGVfY29uY2VwdCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMjVweDtcbiAgICAgICAgICAgIC5saSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDQ1MHB4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLm9kZCB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuYmxvY2tfY29uY2VwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMjVweDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQ1JTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNtYWxsO1xuICAgICAgICAgICAgICAgICAgICAub3ZlcmxheSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAub3ZlcmxheTpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLmxhYmVsX2NvbmNlcHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgd29yZC1icmVhazogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWZvbmRlcmllO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEuNWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBoMzpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAub3ZlcmxheSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTc1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiA4MCU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC52aXN1ZWxfY29uY2VwdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBleHRlbmQgJWNvdmVyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5pbWdfY29uY2VwdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmJ1YmxlIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMGVtO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkbWVkaXVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5ldmVuIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmJsb2NrX2NvbmNlcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTIwcHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA0NSU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzbWFsbDtcbiAgICAgICAgICAgICAgICAgICAgLm92ZXJsYXkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLm92ZXJsYXk6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5sYWJlbF9jb25jZXB0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1mb25kZXJpZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDEwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxLjVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaDM6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgLm92ZXJsYXkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE3NXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogODAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAudmlzdWVsX2NvbmNlcHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICBAZXh0ZW5kICVjb3ZlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAuaW1nX2NvbmNlcHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5idWJsZSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwZW07XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICRtZWRpdW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmJ1bGxlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgJGdyZXktbGlnaHQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmMmYyZjI7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLWZvbmRlcmllO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgICAgIC5vZGQge1xuICAgICAgICAgICAgICAgICAgICAuYmxvY2tfY29uY2VwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzbWFsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuZXZlbiB7XG4gICAgICAgICAgICAgICAgICAgIC5ibG9ja19jb25jZXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNtYWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5idWxsZSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5saXN0ZV9jb25jZXB0OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgICAgIHRvcDogJGdpYW50O1xuICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgaGVpZ2h0OiA4NSU7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICRncmV5LWxpZ2h0O1xuICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUpO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblB1c2hzIHBpZWQgZGUgcGFnZVxuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI3B1c2hGb290IHtcbiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDM4LjVweCAkZ2lhbnQgMCAkZ2lhbnQ7XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDM4LjVweCAkc21hbGwgMCAkc21hbGw7XG4gICAgfVxuICAgICNub2RlLW90aGVyLFxuICAgICNub2RlLWxpc3Qge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgbGVmdDogLTZweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmxpc3RlX3B1c2gge1xuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gMjBweCk7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICRzbWFsbDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1mb25kZXJpZTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLnB1c2hCbG9jayB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGgzOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5wdXNoQmxvY2s6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLml0ZW0tcmVhZG1vcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc21hbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZXh0ZW5kICV0cmFuc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiA0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxpOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGk6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LWRhcms7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubGlzdDpudGgtb2YtdHlwZShvZGQpIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbn1cblxuLmxpc3Q6bnRoLW9mLXR5cGUoZXZlbikge1xuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xufSIsImFydGljbGU+aGVhZGVyIHtcbiAgICBoZWlnaHQ6ICRkaWFwb3JhbWEtaGVpZ2h0O1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBAZXh0ZW5kICVjb3ZlcjtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIGhlaWdodDogODB2aDtcbiAgICB9XG4gICAgLy8gaWYgSUVcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLFxuICAgICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG4gICAgICAgIC8vIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgaGVpZ2h0OiA2MHZoO1xuICAgICAgICAvLyB9XG4gICAgfVxuICAgIC5pbWdfaW1wbGFudGF0aW9uIHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSwgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgICAgICAgICAgIC8vIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgICAgIHRvcDogMTg1cHg7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW1nIHtcbiAgICAgICAgdG9wOiAwcHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgLy8gaWYgSUVcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSwgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAvLyB0b3A6IDUwJTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTAwcHgpIHtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaDEge1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cbiAgICAucG9zaXRpb25IMSB7XG4gICAgICAgIEBleHRlbmQgJWNlbnRlckJveDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIHBhZGRpbmc6IDAgJGdpYW50O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTh2aDtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkYmlnO1xuICAgICAgICAgICAgLy8gcGFkZGluZzogMCAwO1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDIxdmg7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgLy8gcGFkZGluZy1sZWZ0OiAkc21hbGw7XG4gICAgICAgICAgICAvLyBwYWRkaW5nOiAwIDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAyMXZoIDAgMCAkc21hbGw7XG4gICAgICAgICAgICAvLyBwYWRkaW5nLXRvcDogMjF2aDtcbiAgICAgICAgfVxuICAgICAgICBoMSB7XG4gICAgICAgICAgICBtYXJnaW46IDBweDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAkYmlnO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIC8vIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7fVxuICAgICAgICB9XG4gICAgICAgIC5saWVuLXJldG91ciB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogJGJpZztcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnBhZ2UtNDA0IHtcbiAgICBhcnRpY2xlPmhlYWRlciB7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICAvLyBpZiBJRVxuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSwgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAvLyBAaW5jbHVkZSBtZWRpYSgkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucHVzaCB7XG4gICAgd2lkdGg6IDUwdnc7XG4gICAgbWFyZ2luLWxlZnQ6IDI1dnc7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBkZXNrdG9wKSB7XG4gICAgICAgIHdpZHRoOiA4MHZ3O1xuICAgICAgICBtYXJnaW4tbGVmdDogMTB2dztcbiAgICB9XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMCAkc21hbGw7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgICBzdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gICAgbGkge1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG4gICAgICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGU7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogMjVweDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE1MCU7XG4gICAgfVxuICAgIGEge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGNvbG9yOiAkbWFpbi1jb2xvcjtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDAgMCAkbWFpbi1jb2xvcjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2UtaW4tb3V0O1xuICAgICAgICBwYWRkaW5nOiAwIDNweDtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIC03NXB4IDAgMCAkbWFpbi1jb2xvcjtcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm5vbGluayB7XG4gICAgICAgIGEge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gaDIsXG4gICAgaDMge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogJHNtYWxsIGF1dG87XG4gICAgfVxuICAgIGgyIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgICBoMitwIHtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gYXV0bztcbiAgICB9XG4gICAgaDMge1xuICAgICAgICBAZXh0ZW5kICVhbnRpc2xhc2gtaDI7XG4gICAgICAgIGNvbG9yOiAkbWFpbi1jb2xvcjtcbiAgICB9XG59XG5cbiNwdXNoUHJlc3RhIHtcbiAgICAuY29udGFpbmVyIHtcbiAgICAgICAgd2lkdGg6IDI1dnc7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWVkaXVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMDBweDtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IGRlc2t0b3ApIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgJG1lZGl1bTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwMHB4O1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBkZXNrdG9wKSB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IG1vYmlsZSkge1xuICAgICAgICAgICAgbWFyZ2luOiAwIDEwcHg7XG4gICAgICAgIH1cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbjogJHNtYWxsIDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jb250YWluZXIge1xuICAgIHdpZHRoOiA1MHZ3O1xuICAgIG1hcmdpbi1sZWZ0OiAyNXZ3O1xuICAgIG1hcmdpbi1ib3R0b206ICRnaWFudDtcbiAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogZGVza3RvcCkge1xuICAgICAgICB3aWR0aDogODB2dztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwdnc7XG4gICAgfVxuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDAgJHNtYWxsO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gICAgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICAgIGEge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGNvbG9yOiAkbWFpbi1jb2xvcjtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDAgMCAkbWFpbi1jb2xvcjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2UtaW4tb3V0O1xuICAgICAgICBwYWRkaW5nOiAwIDNweDtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIC03NXB4IDAgMCAkbWFpbi1jb2xvcjtcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm5vbGluayB7XG4gICAgICAgIGEge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gaDIsXG4gICAgaDMge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogMTIuNXB4IDA7XG4gICAgfVxuICAgIGgyIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgICBoMyB7XG4gICAgICAgIEBleHRlbmQgJWFudGlzbGFzaC1oMjtcbiAgICAgICAgY29sb3I6ICRtYWluLWNvbG9yO1xuICAgIH1cbiAgICBoMytwLFxuICAgIGgyK3Age1xuICAgICAgICBtYXJnaW46IDAgYXV0byBhdXRvO1xuICAgIH1cbiAgICAucG9zaXRpb24gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgaDEsXG4gICAgICAgIGgyLFxuICAgICAgICBoMyxcbiAgICAgICAgaDQge1xuICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICB9XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGU7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyNXB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIC8vIGxpbmUtaGVpZ2h0OiAxNTAlO1xuICAgICAgICAgICAgPnVsIHtcbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogY2lyY2xlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgcGFkZGluZzogMCAwO1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICAgICAgLy8gcGFkZGluZzogMCAwIDE1cHghaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIHAge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLmZsZXhXcmFwcGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiNub2RlLXNwZWNpZmljcGFnZSB7XG4gICAgc2VjdGlvbiB7XG4gICAgICAgICNwdXNoUHJvZHVpdCB7XG4gICAgICAgICAgICBoMiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwcHggMCAyNXB4IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnB1c2gge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjVweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogNDBweCAwO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxMjAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucGFnZS1ub2RlLXR5cGUtcHJlc3RhdGlvbnMge1xuICAgICNwcmVzdGF0aW9ucyB7XG4gICAgICAgIC5jb250YWluZXIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIHA+aW1nIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZnJvbTogbW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGU6IGRpc2M7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LXN0eWxlOiBjaXJjbGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAjbm9kZS1vdGhlciB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAjZm9vdGVyIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG59XG5cbiNwdXNoUHJlc3RhdGlvbnMge1xuICAgIGgyIHtcbiAgICAgICAgbWFyZ2luOiA0MHB4IDA7XG4gICAgfVxufVxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5DU1MgU1BFIENPTE9OTkVTXG5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5kaXYuY29sIHtcbiAgICBwIGltZyB7XG4gICAgICAgIC8vIHBhZGRpbmc6IDAgMCAxNXB4IDAgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5ub2RlLS10eXBlLXBhZ2Utc2ltcGxlIHtcbiAgICAuYmxvYy10ZXh0IHtcbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY29sLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBsaW5lLWhlaWdodDogMS43ZW07XG4gICAgLy8gbWFyZ2luLXRvcDogJHNtYWxsO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIC5jb2wge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgQGluY2x1ZGUgY29sMigxLCAxLCAwcHgpO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmNvbCxcbiAgICAuY29sMixcbiAgICAuY29sMyB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIC8vIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBpbWcge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSAoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMTIuNXB4IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jb2wzIHtcbiAgICAuY29sIHtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKCgzICogKDEwMCUgLSAyICogMTBweCkgLyAzKSArIDAgKiAxMHB4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNvbDIge1xuICAgIC5jb2w6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRzbWFsbDtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEgKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5jb2wge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIC8vIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAvLyB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRmcm9tOiBtb2JpbGUpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNvbDIoMSwgMSwgMHB4KTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5pbWdbZGF0YS1hbGlnbj1jZW50ZXJdIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IGF1dG87XG59XG5cbnAge1xuICAgIGltZyB7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbiN0YXJ0ZWF1Y2l0cm9uUm9vdCB7XG4gICN0YXJ0ZWF1Y2l0cm9uQWxlcnRCaWcge1xuICAgIGJhY2tncm91bmQ6ICM0ODBkNTYgIWltcG9ydGFudDtcbiAgfVxufVxuIiwiaGVhZGVyIHtcbiAgICAuZGF0ZS1hY3R1LFxuICAgIC5saWVuLXJldG91ciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgIC5kYXRlLWFjdHUge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cbiAgICAubGllbi1yZXRvdXIge1xuICAgICAgICBsZWZ0OiAkc21hbGw7XG4gICAgICAgIEBleHRlbmQgJWxpbms7XG4gICAgICAgIEBleHRlbmQgJWhvdmVyLWxpbms7XG4gICAgICAgICY6aG92ZXIgaSB7XG4gICAgICAgICAgICBsZWZ0OiAtMzVweDtcbiAgICAgICAgfVxuICAgICAgICBpIHtcbiAgICAgICAgICAgIEBleHRlbmQgJXRyYW5zaXRpb247XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiAtJHNtYWxsO1xuICAgICAgICAgICAgYm90dG9tOiAycHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiNwYWdpbmF0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbiNtb3JlLWxpc3Rpbmcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgcGFkZGluZy10b3A6ICRzbWFsbDtcbn1cblxuLmJ1dHRvbiB7XG4gICAgQGV4dGVuZCAlbGluaztcbiAgICBAZXh0ZW5kICVob3Zlci1saW5rO1xufSIsIiNtYXBJbXBsYW50YXRpb25zIHtcbiAgICBoZWlnaHQ6IDUwMHB4O1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyMDBweCk7XG4gICAgbWFyZ2luOiAwIDAgJG1lZGl1bSAkZ2lhbnQ7XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNTBweCk7XG4gICAgICAgIG1hcmdpbjogMCAwICRtZWRpdW0gJHNtYWxsO1xuICAgIH1cbiAgICAuaW1wbGFudGF0aW9uV2luZG93cyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgLmljb24tcGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzNnB4O1xuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgICAgICAgICAgQGV4dGVuZCAlbGluaztcbiAgICAgICAgfVxuICAgICAgICAud3JhcHBlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4jcHVzaEltcGxhbnRhdGlvbnMge1xuICAgIG1hcmdpbi1ib3R0b206ICRiaWc7XG4gICAgbWFyZ2luLXRvcDogJG1lZGl1bTtcbn1cblxuLmxpc3RpbmdJbXBsYW50YXRpb25zIHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5pbXBsYW50YXRpb25XaW5kb3dzLFxuLmFjdGl2aXRpZSB7XG4gICAgJi5jYW5hbGlzYXRpb24ge1xuICAgICAgICBoMjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWNhbmFsaXNhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBoMyxcbiAgICAgICAgaSxcbiAgICAgICAgLmNvbnRhY3QgLm5vbSxcbiAgICAgICAgLmxpZXUge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1jYW5hbGlzYXRpb247XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5lY2xhaXJhZ2Uge1xuICAgICAgICBoMjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWVjbGFpcmFnZTtcbiAgICAgICAgfVxuICAgICAgICBoMyxcbiAgICAgICAgaSxcbiAgICAgICAgLmNvbnRhY3QgLm5vbSxcbiAgICAgICAgLmxpZXUge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1lY2xhaXJhZ2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5mb25kZXJpZSB7XG4gICAgICAgIGgyOmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZm9uZGVyaWU7XG4gICAgICAgIH1cbiAgICAgICAgaDMsXG4gICAgICAgIGksXG4gICAgICAgIC5jb250YWN0IC5ub20sXG4gICAgICAgIC5saWV1IHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItZm9uZGVyaWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5tZWNhbmlxdWUge1xuICAgICAgICBoMjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLW1lY2FuaXF1ZTtcbiAgICAgICAgfVxuICAgICAgICBoMyxcbiAgICAgICAgaSxcbiAgICAgICAgLmNvbnRhY3QgLm5vbSxcbiAgICAgICAgLmxpZXUge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1tZWNhbmlxdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5tb2JpbGllci11cmJhaW4ge1xuICAgICAgICBoMjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLW1vYmlsaWVyO1xuICAgICAgICB9XG4gICAgICAgIGgzLFxuICAgICAgICBpLFxuICAgICAgICAuY29udGFjdCAubm9tLFxuICAgICAgICAubGlldSB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLW1vYmlsaWVyO1xuICAgICAgICB9XG4gICAgfVxuICAgICYucmVhbGlzYXRpb25zIHtcbiAgICAgICAgaDI6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci0zZDtcbiAgICAgICAgfVxuICAgICAgICBoMyxcbiAgICAgICAgaSxcbiAgICAgICAgLmNvbnRhY3QgLm5vbSxcbiAgICAgICAgLmxpZXUge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci0zZDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmltcGxhbnRhdGlvbiB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50aXplKCRtYWluLWNvbG9yLCAwLjgpO1xuICAgIHBhZGRpbmc6ICRzbWFsbCAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGgzIHtcbiAgICAgICAgY29sb3I6ICRtYWluLWNvbG9yO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cbiAgICBpIHtcbiAgICAgICAgY29sb3I6ICRtYWluLWNvbG9yO1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICYuaWNvbi1wbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmxpZXUge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIGNvbG9yOiAkbWFpbi1jb2xvcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgIGk6YmVmb3JlIHtcbiAgICAgICAgICAgIHRvcDogNHB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5yZXN1bWUge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHNtYWxsO1xuICAgIH1cbiAgICAuY29udGFjdCB7XG4gICAgICAgIC5jb29yZG9ubmVlcyxcbiAgICAgICAgLm5vbSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHNtYWxsO1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLm5vbSB7XG4gICAgICAgICAgICBjb2xvcjogJG1haW4tY29sb3I7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGdyZXktbGlnaHQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmltcGxhbnRhdGlvbnMge1xuICAgIC5saXN0aW5nIHtcbiAgICAgICAgI25vZGUtbGlzdCB7XG4gICAgICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAuYWN0aXZpdGllIHtcbiAgICAgICAgICAgICAgICAgICAgLmxpc3RpbmdJbXBsYW50YXRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbXBsYW50YXRpb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaDM6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiNibG9jay1mb3JtdWxhaXJlZGVjb250YWN0Z2xvYmFsZHVzaXRlLTIge1xuICAgIG1hcmdpbi1ib3R0b206IDc1cHg7XG4gICAgbWFyZ2luLXRvcDogNTBweDtcbiAgICB3aWR0aDogNTB2dztcbiAgICBtYXJnaW4tbGVmdDogMjV2dztcbiAgICBtYXJnaW46IGF1dG87XG4gICAgQGluY2x1ZGUgbWVkaWEoJGZyb206IHRhYmxldCkge1xuICAgICAgICBwYWRkaW5nOiAwICRzbWFsbDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbi50b1JpZ2h0IHtcbiAgICB3aWR0aDogNTB2dztcbiAgICBtYXJnaW4tbGVmdDogMjV2dztcbiAgICBtYXJnaW46IGF1dG87XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgc3BhbiB7XG4gICAgICAgIGNvbG9yOiByZWQ7XG4gICAgfVxufSIsIi5wYWdlLS1jb250YWN0IHtcclxuICAgIC5ub2RlLWNvbnRlbnQge1xyXG4gICAgICAgIG1hcmdpbi10b3A6ICRiaWc7XHJcbiAgICAgICAgLmNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgIGgyIHtcclxuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAuc2l0ZW1hcCB7XHJcbiAgICAgICAgICAgICAgICAuY29udGVudCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE4MCU7XHJcbiAgICAgICAgICAgICAgICAgICAgdWwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LXN0eWxlOiBkaXNjO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuZXhwYW5kZWQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGU6IGNpcmNsZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ== */
