.block--lp-hero-v2{align-items:center;background-color:#f7f6ff;display:flex;min-height:480px;overflow:hidden;padding:96px 0;position:relative;z-index:1}@media (max-width:767.98px){.block--lp-hero-v2{padding:56px 0}}#main>.block--lp-hero-v2:first-child{margin-top:26px}.block--lp-hero-v2 .lp-hero-v2__breadcrumbs-bar{left:0;margin:0 auto;max-width:1440px;padding:0 1.5rem;pointer-events:none;position:absolute;right:0;top:18px;z-index:6}.block--lp-hero-v2 .lp-hero-v2__breadcrumbs-bar .wmx-breadcrumbs__link{pointer-events:auto}.block--lp-hero-v2 .lp-hero-v2__bg{display:flex;inset:0;justify-content:center;overflow:hidden;position:absolute;z-index:0}.block--lp-hero-v2 .lp-hero-v2__bg-photo,.block--lp-hero-v2 .lp-hero-v2__bg-video{height:100%;mask-image:linear-gradient(90deg,transparent 0,#000 160px);-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 160px);-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center;position:absolute;right:max(0px,50% - 720px);top:0;width:min(50% + 268px,988px)}@media (min-width:1441px){.block--lp-hero-v2 .lp-hero-v2__bg-photo,.block--lp-hero-v2 .lp-hero-v2__bg-video{--lp-hero-v2-fade:min(200px,calc(50vw - 720px));-webkit-mask-composite:source-in,xor;mask-composite:intersect;-webkit-mask-composite:source-in;mask-image:linear-gradient(to right,transparent 0,#000 160px),linear-gradient(to right,#000 calc(100% - var(--lp-hero-v2-fade)),transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0,#000 160px),linear-gradient(to right,#000 calc(100% - var(--lp-hero-v2-fade)),transparent 100%)}}.block--lp-hero-v2 .lp-hero-v2__bg--focal-left .lp-hero-v2__bg-photo,.block--lp-hero-v2 .lp-hero-v2__bg--focal-left .lp-hero-v2__bg-video{-o-object-position:left center;object-position:left center}.block--lp-hero-v2 .lp-hero-v2__bg--focal-right .lp-hero-v2__bg-photo,.block--lp-hero-v2 .lp-hero-v2__bg--focal-right .lp-hero-v2__bg-video{-o-object-position:right center;object-position:right center}.block--lp-hero-v2 .lp-hero-v2__video-toggle{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:rgba(65,50,155,.5);border:0;border-radius:50%;bottom:1rem;color:#fff;cursor:pointer;display:inline-flex;height:33.6px;justify-content:center;position:absolute;right:1rem;transition:background-color .2s ease,transform .15s ease;width:33.6px;z-index:5}.block--lp-hero-v2 .lp-hero-v2__video-toggle svg{fill:currentColor;height:16px;width:16px}.block--lp-hero-v2 .lp-hero-v2__video-toggle:hover{background:rgba(65,50,155,.7)}.block--lp-hero-v2 .lp-hero-v2__video-toggle:focus-visible{outline:2px solid #23004b;outline-offset:2px}.block--lp-hero-v2 .lp-hero-v2__video-toggle:active{transform:scale(.95)}.block--lp-hero-v2 .lp-hero-v2__left-frost-wrap{height:100%;left:max(0px,50% - 720px);overflow:hidden;pointer-events:none;position:absolute;top:0;width:min(100%,1440px);z-index:2}.block--lp-hero-v2 .lp-hero-v2__left-frost{background:rgba(247,246,255,.75);height:calc(100% + 2px);left:calc(50% - 268px);mask-image:linear-gradient(to bottom right,#000,#000 calc(50% - 2px),transparent 50%);-webkit-mask-image:linear-gradient(to bottom right,#000,#000 calc(50% - 2px),transparent 50%);position:absolute;top:-2px;transform:scale(3);transform-origin:top right;width:400px}.block--lp-hero-v2 .lp-hero-v2__bg-soft{height:100%;left:calc(50% - 268px);-webkit-mask-composite:source-in,xor;mask-composite:intersect;-webkit-mask-composite:source-in;mask-image:linear-gradient(to bottom right,#000,#000 calc(50% - 140px),transparent 50%),linear-gradient(90deg,transparent 0,#000 160px);-webkit-mask-image:linear-gradient(to bottom right,#000,#000 calc(50% - 140px),transparent 50%),linear-gradient(90deg,transparent 0,#000 160px);overflow:hidden;pointer-events:none;position:absolute;top:0;width:400px}.block--lp-hero-v2 .lp-hero-v2__bg-soft-img{filter:blur(24px) saturate(1.2);height:100%;left:0;-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center;position:absolute;top:0;width:min(50vw + 268px,988px)}.block--lp-hero-v2 .lp-hero-v2__bg--focal-left .lp-hero-v2__bg-soft-img{-o-object-position:left center;object-position:left center}.block--lp-hero-v2 .lp-hero-v2__bg--focal-right .lp-hero-v2__bg-soft-img{-o-object-position:right center;object-position:right center}.block--lp-hero-v2 .lp-hero-v2__left-frost-brighten-wrap{height:100%;left:max(0px,50% - 720px);overflow:hidden;pointer-events:none;position:absolute;top:0;width:min(100%,1440px)}.block--lp-hero-v2 .lp-hero-v2__left-frost-brighten{background-color:#8c8c8c;height:calc(100% + 2px);left:calc(50% - 268px);mask-image:linear-gradient(to bottom right,#000,#000 calc(50% - 2px),transparent 50%);-webkit-mask-image:linear-gradient(to bottom right,#000,#000 calc(50% - 2px),transparent 50%);mix-blend-mode:screen;position:absolute;top:-2px;transform:scale(3);transform-origin:top right;width:400px}.block--lp-hero-v2 .lp-hero-v2__right-shapes{height:100%;pointer-events:none;position:absolute;right:0;top:0;z-index:4}.block--lp-hero-v2 .lp-hero-v2__frost{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);-webkit-clip-path:polygon(55.1% 0,100% 0,45% 100%,0 100%);clip-path:polygon(55.1% 0,100% 0,45% 100%,0 100%);height:515px;position:absolute;right:-20rem;top:-68px;width:631px;will-change:transform}.block--lp-hero-v2 .lp-hero-v2__frost svg{display:block;height:100%;width:100%}.block--lp-hero-v2 .lp-hero-v2__content{align-items:flex-start;display:flex;flex-direction:column;margin-left:auto;margin-right:auto;max-width:1440px;padding-left:1.5rem;padding-right:1.5rem;position:relative;width:100%;z-index:3}.block--lp-hero-v2 .lp-hero-v2__text{align-items:flex-start;display:flex;flex-direction:column;gap:28px;max-width:calc(66% - 268px);text-align:left}@media (min-width:992px){.block--lp-hero-v2 .lp-hero-v2__text{max-width:calc(57% - 268px)}}.block--lp-hero-v2 .lp-hero-v2__headline{font-family:Avenir LT Pro Bold,sans-serif;font-size:72px;line-height:1.05;margin:0;padding-bottom:.1em}.block--lp-hero-v2 .lp-hero-v2__headline,.block--lp-hero-v2 .lp-hero-v2__highlight{-webkit-text-fill-color:transparent;background:linear-gradient(168deg,#23004b 42.5%,#41329b 168%);-webkit-background-clip:text;background-clip:text}.block--lp-hero-v2 .lp-hero-v2__highlight{position:relative;z-index:0}.block--lp-hero-v2 .lp-hero-v2__highlight:before{background-color:#ffbe00;-webkit-clip-path:polygon(0 0,100% 0,100% 0,0 0);clip-path:polygon(0 0,100% 0,100% 0,0 0);content:"";height:.94em;left:-.05em;position:absolute;right:-.05em;top:.13em;transition:-webkit-clip-path .35s ease;transition:clip-path .35s ease;transition:clip-path .35s ease,-webkit-clip-path .35s ease;z-index:-1}.block--lp-hero-v2 .lp-hero-v2__highlight:hover:before{-webkit-clip-path:polygon(0 0,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}.block--lp-hero-v2 .lp-hero-v2__body{color:#23004b;font-family:Avenir LT Pro Medium,sans-serif;font-size:18px;font-weight:500;line-height:1.45;margin:0}.block--lp-hero-v2 .lp-hero-v2__ctas{display:flex;flex-shrink:0;flex-wrap:nowrap;gap:12px;margin-top:4px;max-width:none;width:-moz-max-content;width:max-content}.block--lp-hero-v2 .lp-hero-v2__cta{align-items:center;border-radius:3px;display:inline-flex;font-family:Avenir LT Pro Medium,sans-serif;font-size:1.125rem;font-weight:500;height:55px;justify-content:center;line-height:1;min-width:187px;padding:4px 24px;text-decoration:none;transition:background-color .3s ease,color .3s ease,border-color .3s ease}.block--lp-hero-v2 .lp-hero-v2__cta,.block--lp-hero-v2 .lp-hero-v2__cta:hover,.block--lp-hero-v2 .lp-hero-v2__cta:link,.block--lp-hero-v2 .lp-hero-v2__cta:visited{text-decoration:none}.block--lp-hero-v2 .lp-hero-v2__cta:active{transform:scale(.98)}.block--lp-hero-v2 .lp-hero-v2__cta:focus-visible{outline:2px solid #23004b;outline-offset:2px}.block--lp-hero-v2 .lp-hero-v2__cta--primary{background-color:#ffbe00;border:2px solid #ffbe00;color:#23004b}.block--lp-hero-v2 .lp-hero-v2__cta--primary,.block--lp-hero-v2 .lp-hero-v2__cta--primary:hover,.block--lp-hero-v2 .lp-hero-v2__cta--primary:link,.block--lp-hero-v2 .lp-hero-v2__cta--primary:visited{color:#23004b}.block--lp-hero-v2 .lp-hero-v2__cta--primary:hover{background-color:#d6a000;border-color:#d6a000}.block--lp-hero-v2 .lp-hero-v2__cta--secondary{background-color:#fff;border:2px solid #23004b;color:#23004b}.block--lp-hero-v2 .lp-hero-v2__cta--secondary,.block--lp-hero-v2 .lp-hero-v2__cta--secondary:hover,.block--lp-hero-v2 .lp-hero-v2__cta--secondary:link,.block--lp-hero-v2 .lp-hero-v2__cta--secondary:visited{color:#23004b}.block--lp-hero-v2 .lp-hero-v2__cta--secondary:hover{background-color:#f7f6ff}.block--lp-hero-v2 .lp-hero-v2__lines{bottom:0;height:40px;left:50%;max-width:100%;opacity:.2;overflow:hidden;pointer-events:none;position:absolute;transform:translateX(-62%);width:600px;z-index:2}.block--lp-hero-v2 .lp-hero-v2__lines img{display:block;height:auto;width:100%}@media (max-width:767px){.block--lp-hero-v2 .lp-hero-v2__lines{display:none}}@media (max-width:991.98px){.block--lp-hero-v2 .lp-hero-v2__headline{font-size:56px}}@media (max-width:767px){.block--lp-hero-v2{align-items:center;flex-direction:column;overflow:hidden;padding:0 0 35px}.block--lp-hero-v2 .lp-hero-v2__breadcrumbs-bar{padding:0 20px;top:24px}.block--lp-hero-v2 .lp-hero-v2__bg{flex-shrink:0;height:280px;inset:auto;justify-content:center;position:relative;width:100%}.block--lp-hero-v2 .lp-hero-v2__bg-photo,.block--lp-hero-v2 .lp-hero-v2__bg-video{max-width:100%;position:static;right:auto;width:100%}.block--lp-hero-v2 .lp-hero-v2__bg:after{background:linear-gradient(180deg,transparent 0,transparent 55%,#f7f6ff),linear-gradient(90deg,#f7f6ff 0,transparent 40%);content:"";height:100%;left:0;max-width:100%;pointer-events:none;position:absolute;top:0;width:100%;z-index:1}.block--lp-hero-v2 .lp-hero-v2__right-shapes{height:280px}.block--lp-hero-v2 .lp-hero-v2__frost{height:220px;right:-10rem;top:4px;width:280px}.block--lp-hero-v2 .lp-hero-v2__bg-soft,.block--lp-hero-v2 .lp-hero-v2__left-frost,.block--lp-hero-v2 .lp-hero-v2__left-frost-brighten{display:none}.block--lp-hero-v2 .lp-hero-v2__content{align-items:center;padding:32px 20px 0}.block--lp-hero-v2 .lp-hero-v2__text{gap:20px;max-width:100%}.block--lp-hero-v2 .lp-hero-v2__headline{font-size:36px}.block--lp-hero-v2 .lp-hero-v2__body{font-size:16px}.block--lp-hero-v2 .lp-hero-v2__ctas{align-self:stretch;flex-direction:column;gap:10px;width:auto}.block--lp-hero-v2 .lp-hero-v2__cta{min-width:0;width:100%}}@media (prefers-reduced-motion:reduce){.block--lp-hero-v2 .lp-hero-v2__frost{will-change:auto}.block--lp-hero-v2 .lp-hero-v2__highlight:before{transition:none}}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzL2xhbmRpbmctcGFnZS1oZXJvLVYyL2Rpc3Qvc3R5bGUubWluLmNzcyIsIm1hcHBpbmdzIjoiQUF1RUEsbUJBSUUsbUJBR0Esd0JDcEVXLENEZ0VYLGFBR0EsaUJBSkEsZ0JBR0EsZUFKQSxrQkFPQSxTQXRFRixDRW1FSSw0QkZMSixtQkFXSSxjQXJFRixDQUNGLENBK0ZFLHFDQUNFLGVBN0ZKLENBNEdFLGdEQUdFLE9BSUEsY0FEQSxpQkFFQSxpQkFJQSxvQkFYQSxrQkFHQSxRQUZBLFNBR0EsU0F0R0osQ0ErR0ksdUVBQ0UsbUJBN0dOLENBdUhFLG1DQUtFLGFBSEEsUUFJQSx1QkFGQSxnQkFIQSxrQkFFQSxTQWxISixDQXlJRSxrRkFNRSxZQW1CQSwyREFDQSxtRUFuQkEscUNBQ0EsK0RBTkEsa0JBRUEsMkJBREEsTUFFQSw0QkFsSUosQ0F5SkksMEJBNUJGLGtGQTZCSSxnREFVQSw4REFRQSxpQ0FmQSxpSkFDRSxDQU9GLHlKQTVKSixDQUNGLENBMEtFLDBJQUVFLDBEQXhLSixDQTJLRSw0SUFFRSw0REF6S0osQ0F5TEUsNkNBTUUsbUJBSUEsNkRBQ0EsOEJBQ0EsU0FDQSxrQkFWQSxZQVdBLFdBQ0EsZUFWQSxvQkFJQSxjQUZBLHVCQU5BLGtCQUNBLFdBY0EseURBUkEsYUFKQSxTQTNLSixDQXlMSSxpREFHRSxrQkFEQSxZQURBLFVBckxOLENBMExJLG1EQUNFLDZCQXhMTixDQTJMSSwyREFDRSwwQkFDQSxrQkF6TE4sQ0E0TEksb0RBQ0Usb0JBMUxOLENBNE1FLGdEQUtFLFlBSEEsMEJBSUEsZ0JBRUEsb0JBUEEsa0JBRUEsTUFDQSx1QkFHQSxTQXpNSixDQStPRSwyQ0F5REUsaUNBeENBLHdCQUhBLHVCQWlEQSxzRkFNQSw4RkF4REEsa0JBRUEsU0FJQSxtQkFEQSwyQkFGQSxXQW5QSixDQXVWRSx3Q0FLRSxZQUhBLHVCQWtCQSw4REFTQSxpQ0FqQkEsdUlBQ0UsQ0FRRiwrSUFDRSxDQWhCRixnQkFDQSxvQkFOQSxrQkFFQSxNQUNBLFdBOVVKLENBZ1hFLDRDQVFFLGdDQUhBLFlBSEEsT0FJQSxxQ0FDQSwrREFOQSxrQkFFQSxNQUNBLDZCQTFXSixDQWtYRSx3RUFDRSwwREFoWEosQ0FtWEUseUVBQ0UsNERBalhKLENBcVpFLHlEQUtFLFlBSEEsMEJBSUEsZ0JBQ0Esb0JBTkEsa0JBRUEsTUFDQSxzQkFoWkosQ0FnYUUsb0RBMkVFLHlCQXZEQSx3QkFIQSx1QkErQkEsc0ZBTUEsOEZBc0JBLHNCQTVEQSxrQkFFQSxTQUlBLG1CQURBLDJCQUZBLFdBdGFKLENBdWVFLDZDQUlFLFlBRUEsb0JBTEEsa0JBQ0EsUUFDQSxNQUVBLFNBcGVKLENBd2VFLHNDQU9FLDBCQUNBLGtDQUNBLDRHQUpBLGFBSkEsa0JBQ0EsYUFDQSxVQUNBLFlBRUEscUJBbmVKLENBd2VJLDBDQUNFLGNBRUEsWUFEQSxVQXJlTixDQTZlRSx3Q0FLRSx1QkFGQSxhQUNBLHNCQUlBLGlCQUNBLGtCQUhBLGlCQUlBLG9CQUNBLHFCQVZBLGtCQU1BLFdBTEEsU0FsZUosQ0E4ZUUscUNBR0UsdUJBRkEsYUFDQSxzQkFHQSxTQW1DQSw0QkFwQ0EsZUExZUosQ0U3SkkseUJGbW9CRixxQ0EyQ0ksMkJBN2dCSixDQUNGLENBeWhCRSx5Q0FDRSx5Q0MxckJVLENEMnJCVixlQUNBLGlCQUtBLFNBd0JBLG1CQTlpQkosQ0FtakJFLG1GQTlCRSxvQ0FIQSw4REFDQSw2QkFDQSxvQkE1Z0JKLENBMmlCRSwwQ0FDRSxrQkFDQSxTQTdpQkosQ0FtakJJLGlEQU9FLHdCQ3B4QkcsQ0RzeEJILDBGQVJBLFdBS0EsYUFGQSxZQUZBLGtCQUdBLGFBRkEsVUFPQSxpSUFGQSxVQS9pQk4sQ0FvakJJLHVEQUNFLHFHQWxqQk4sQ0EwakJFLHFDQUtFLGFDL3pCVyxDRDJ6QlgsMkNDL3ZCUyxDRGl3QlQsZUFEQSxnQkFFQSxpQkFFQSxRQXhqQkosQ0F1a0JFLHFDQUNFLGFBSUEsY0FIQSxpQkFJQSxTQUNBLGVBSEEsZUFEQSx3Q0Fqa0JKLENBd2tCRSxvQ0FFRSxtQkFTQSxrQkFWQSxvQkFNQSwyQ0NweUJTLENEcXlCVCxtQkFDQSxnQkFKQSxZQUZBLHVCQU9BLGNBTkEsZ0JBRUEsaUJBTUEscUJBQ0EseUVBdGtCSixDQXdrQkksbUtBSUUsb0JBemtCTixDQTRrQkksMkNBQ0Usb0JBMWtCTixDQTZrQkksa0RBQ0UsMEJBQ0Esa0JBM2tCTixDQWdsQkUsNkNBQ0Usd0JDcDJCSyxDRHEyQkwseUJBQ0EsYUE5a0JKLENBZ2xCSSx1TUFJRSxhQWpsQk4sQ0FvbEJJLG1EQUNFLHlCQUNBLG9CQWxsQk4sQ0F1bEJFLCtDQUNFLHNCQUNBLHlCQUNBLGFBcmxCSixDQXVsQkksK01BSUUsYUF4bEJOLENBMmxCSSxxREFDRSx3QkF6bEJOLENBZ21CRSxzQ0FFRSxTQUtBLFlBSkEsU0FHQSxlQUtBLFdBSEEsZ0JBRUEsb0JBVEEsa0JBR0EsMkJBQ0EsWUFJQSxTQTVsQkosQ0FnbUJJLDBDQUNFLGNBRUEsWUFEQSxVQTdsQk4sQ0FpbUJJLHlCQW5CRixzQ0FvQkksWUE5bEJKLENBQ0YsQ0UvUUksNEJGbzNCQSx5Q0FDRSxjQWxtQkosQ0FDRixDQWduQkUseUJBejRCRixtQkEyNEJJLG1CQURBLHNCQUdBLGdCQURBLGdCQTVtQkYsQ0FrbkJFLGdEQUVFLGVBREEsUUEvbUJKLENBb25CRSxtQ0FLRSxjQURBLGFBRkEsV0FJQSx1QkFMQSxrQkFFQSxVQS9tQkosQ0F1bkJFLGtGQUtFLGVBSEEsZ0JBQ0EsV0FDQSxVQXBuQkosQ0EwbkJFLHlDQVVFLHlIQUNFLENBVkYsV0FLQSxZQUZBLE9BR0EsZUFDQSxvQkFOQSxrQkFDQSxNQUVBLFdBSUEsU0F2bkJKLENBd29CRSw2Q0FDRSxZQXRvQkosQ0F5b0JFLHNDQUlFLGFBSEEsYUFDQSxRQUNBLFdBdG9CSixDQXVwQkUsdUlBQ0UsWUEvb0JKLENBbXBCRSx3Q0FDRSxtQkFDQSxtQkFqcEJKLENBb3BCRSxxQ0FFRSxTQURBLGNBanBCSixDQXFwQkUseUNBQ0UsY0FucEJKLENBc3BCRSxxQ0FDRSxjQXBwQkosQ0F1cEJFLHFDQUVFLG1CQURBLHNCQUVBLFNBS0EsVUF6cEJKLENBNHBCRSxvQ0FFRSxZQURBLFVBenBCSixDQUNGLENBZ3FCRSx1Q0FDRSxzQ0FDRSxnQkE5cEJKLENBaXFCRSxpREFDRSxlQS9wQkosQ0FDRixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2VibWVjaGFuaXgvLi9ibG9ja3MvbGFuZGluZy1wYWdlLWhlcm8tVjIvc3JjL19sYW5kaW5nLXBhZ2UtaGVyby1WMi5zY3NzIiwid2VicGFjazovL3dlYm1lY2hhbml4Ly4vc3JjL3Njc3MvY3VzdG9tL19icmFuZGluZy5zY3NzIiwid2VicGFjazovL3dlYm1lY2hhbml4Ly4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiLi4vLi4vLi4vc3JjL3Njc3MvYmFyZS1icy1uZWNlc3NpdGllc1wiO1xuXG4vLyBTdWJ0bGUgd2hpdGUgb3V0bGluZSBvbiB0aGUgaGVybyBjb3B5LiBUaGUgdHdvIHRleHQgbGV2ZWxzIHVzZSBkaWZmZXJlbnRcbi8vIG1lY2hhbmlzbXMsIGJlY2F1c2Ugd2hhdCB3b3JrcyBhdCA3MnB4IGZhbGxzIGFwYXJ0IGF0IDE4cHgg4oCUIHNlZSBiZWxvdy5cbi8vXG4vLyBIRUFETElORSDigJQgYSBjZW50cmVkIGJsdXIgdmlhIGBmaWx0ZXJgLCB0d28gY2hhaW5lZCBwYXNzZXMuXG4vL1xuLy8gSXQgaGFzIHRvIGJlIGBmaWx0ZXJgIGFuZCBub3QgYC13ZWJraXQtdGV4dC1zdHJva2VgIG9yIGB0ZXh0LXNoYWRvd2A6IHRoZVxuLy8gaGVhZGxpbmUncyBjb2xvdXIgaXMgYSBncmFkaWVudCAqYmFja2dyb3VuZCogY2xpcHBlZCB0byBpdHMgZ2x5cGhzLCBhbmQgYVxuLy8gYmFja2dyb3VuZCBhbHdheXMgcGFpbnRzIGJlbmVhdGggdGhlIHRleHQgbGF5ZXIsIHNvIGEgc3Ryb2tlIG9yIHNoYWRvdyB3b3VsZFxuLy8gbGFuZCBPTiBUT1Agb2YgdGhlIGdyYWRpZW50IGFuZCBlcm9kZSB0aGUgbGV0dGVyZm9ybXMuIGBmaWx0ZXJgIHJ1bnMgb24gdGhlXG4vLyBlbGVtZW50J3MgZmluaXNoZWQgcmFzdGVyIGluc3RlYWQsIHNvIHRoZSByaW5nIHN0YXlzIG91dHNpZGUgdGhlIGdseXBoIGVkZ2VzLlxuLy9cbi8vIENoYWluZWQgYmVjYXVzZSB0aGUgc2Vjb25kIHBhc3MgZmlsdGVycyB0aGUgZmlyc3QncyBvdXRwdXQ6IHRoZSBoYWxvIHNwcmVhZHNcbi8vIHBhc3QgdGhlIDFweCByYWRpdXMgYW5kIGdldHMgcmVpbmZvcmNlZCwgd2hpY2ggaXMgd2hhdCBtYWtlcyBpdCB2aXNpYmxlIGF0IGFsbFxuLy8gKHNlZSB0aGUgYm9keSBub3RlIGZvciB3aHkgYW4gdW5jaGFpbmVkIGNlbnRyZWQgYmx1ciBtb3N0bHkgaXNuJ3QpLiBUaGUgcGFzc2VzXG4vLyBjb21wb3VuZCwgc28gc2NhbGUgYm90aCBhbHBoYXMgdG9nZXRoZXIgd2hlbiB0dW5pbmcuXG4vLyBCT0RZIOKAlCBubyBvdXRsaW5lLCBkZWxpYmVyYXRlbHkuIFJlY29yZGVkIGhlcmUgYmVjYXVzZSBib3RoIHBsYXVzaWJsZVxuLy8gdGVjaG5pcXVlcyB3ZXJlIHRyaWVkIGFuZCBuZWl0aGVyIHdvcmtzIGF0IDE4cHg6XG4vL1xuLy8gQSBjZW50cmVkIGJsdXIgKGBmaWx0ZXJgLCBhcyBhYm92ZSkgaGF6ZXMuIFdpdGggemVybyBvZmZzZXQgdGhlIHNoYWRvdyBpcyB0aGVcbi8vIGdseXBoIHNpbGhvdWV0dGUsIHNvIHRoZSBvbmx5IHZpc2libGUgcGFydCBpcyB0aGUgZnJpbmdlIGVzY2FwaW5nIHBhc3QgdGhlIGVkZ2U7XG4vLyB0aGUgcmFkaXVzIGlzIH4yw5cgdGhlIEdhdXNzaWFuIHN0ZCBkZXYsIHNvIDAuNXB4IGxlYXZlcyB+MC4yNXB4IG9mIHN0ZCBkZXYgYW5kXG4vLyBuZWFybHkgYWxsIG9mIGl0IGhpZGVzIHVuZGVyIHRoZSBsZXR0ZXIuIFdpZGVuIGl0IHRvIDFweCB0byBjb21wZW5zYXRlIGFuZCBpdFxuLy8gZm9ncywgYmVjYXVzZSBhbiAxOHB4IG1lZGl1bSBzdGVtIGlzIG9ubHkgfjJweCB3aWRlIGFuZCB0aGUgcmVuZGVyZXIgYWxyZWFkeVxuLy8gYmxlbmRzIGl0cyBlZGdlIG92ZXIgYWJvdXQgYSBwaXhlbCDigJQgYSBzdWItcGl4ZWwgcmltIGxhbmRzIGluc2lkZSB0aGF0IGJsZW5kLlxuLy9cbi8vIEEgaGFyZCBvZmZzZXQgcmluZyAoZm91ciBkaWFnb25hbCBgdGV4dC1zaGFkb3dgIGNvcGllcyBhdCAwIGJsdXIpIGlzIGdlbnVpbmVseVxuLy8gY3Jpc3AgYW5kIGRvZXMgY2xlYXIgdGhlIGdseXBoLCBidXQgdGhlIGNvcm5lcnMgb3ZlcmxhcCwgc28gYW55IGFscGhhIGhpZ2hcbi8vIGVub3VnaCB0byByZWdpc3RlciByZWFkcyBhcyBhbiBpbnRlbnNlIHdoaXRlIGtleWxpbmUgb24gdGV4dCB0aGlzIHNtYWxsLlxuLy9cbi8vIFRoZSBvdXRsaW5lIHdhcyBvbmx5IGV2ZXIgY29tcGVuc2F0aW5nIGZvciBib2R5IGNvcHkgY3Jvc3NpbmcgdGhlIGZyb3N0IGRpYWdvbmFsXG4vLyBvbnRvIHRoZSBkYXJrIHBob3RvLiBUaGUgNTAlIGNhcCBvbiAubHAtaGVyby12Ml9fdGV4dCBmaXhlcyB0aGF0IGF0IHRoZSBzb3VyY2UsXG4vLyBzbyB0aGUgYm9keSBuZWVkcyBub3RoaW5nLlxuXG4vLyBUaGUgZGlhZ29uYWwncyBob3Jpem9udGFsIHRyYXZlbCDigJQgdGhlIDQwMHB4IHRoZSBmcm9zdCdzIDk2JSBjbGlwIHlpZWxkcyBvZmYgYVxuLy8gMTAwMDBweCB3aWR0aCDigJQgYW5kIGhvdyBmYXIgYmVmb3JlIHRoZSBzbGFudCB0aGUgc29mdCBibHVyIHN0YXJ0cyBmYWRpbmcuXG4kbHAtaGVyby12Mi1zbGFudDogNDAwcHg7XG4kbHAtaGVyby12Mi1zb2Z0LXJhbXA6IDE0MHB4O1xuLy8gVGhlIG1lZGlhJ3MgbGVmdCBlZGdlIHNpdHMgYXQgYGNlbnRyZSAtIDI2OHB4YCDigJQgdGhlIGRpYWdvbmFsJ3MgYm90dG9tIHBvaW50IOKAlFxuLy8gYW5kIHVzZWQgdG8gYmUgaGlkZGVuIGJ5IHRoZSBmcm9zdCdzIGJhY2tkcm9wLWZpbHRlciBzbWVhcmluZyBhY3Jvc3MgaXQuIFdpdGhcbi8vIHRoYXQgYmx1ciBnb25lIHRoZSBjdXQgaXMgYmFyZSwgc28gYm90aCBjb3BpZXMgZmFkZSB0aGVpciBvd24gYWxwaGEgaW4gb3ZlciB0aGlzXG4vLyBkaXN0YW5jZSBpbnN0ZWFkLiBTYW1lIHRyaWNrIGFzIHRoZSA+MTQ0MXB4IHJpZ2h0LWVkZ2UgZmFkZSBiZWxvdzogcmVtb3Zpbmdcbi8vIGFscGhhIHBhaW50cyBub3RoaW5nLCBzbyB0aGUgZGVjbyBzaGFwZXMgc3RpbGwgc2FtcGxlIGEgcmVhbCBiYWNrZHJvcCBhbmQgdGhlXG4vLyBmYWRlIGZvbGxvd3MgdGhlIGJsb2NrIGJhY2tncm91bmQgYXV0b21hdGljYWxseS5cbiRscC1oZXJvLXYyLWxlZnQtZmFkZTogMTYwcHg7XG5cbi8vIEhvdyBmYXIgYmVmb3JlIHRoZSBkaWFnb25hbCB0aGUgYnJpZ2h0ZW5pbmcgbGlmdCBmYWRlcyBvdXQsIGFuZCB0aGUgc2NhbGUgaXRzXG4vLyBsYXllciBpcyBkcmF3biBhdCAoc2VlIC5scC1oZXJvLXYyX19sZWZ0LWZyb3N0LWJyaWdodGVuKS4gT24tc2NyZWVuIHB4IGFyZVxuLy8gbXVsdGlwbGllZCBieSB0aGUgc2NhbGUsIHNvIHRoZSByYW1wIGlzIGRpdmlkZWQgYnkgaXQgd2hlcmUgaXQncyB1c2VkLlxuJGxwLWhlcm8tdjItYnJpZ2h0ZW4tcmFtcDogNnB4O1xuJGxwLWhlcm8tdjItYnJpZ2h0ZW4tc2NhbGU6IDM7XG5cbi8vIFNhbWUgZm9yIHRoZSBwYW5lbCdzIHRpbnQsIHdoaWNoIGlzIGZlYXRoZXJlZCB0aGUgc2FtZSB3YXkuXG4vL1xuLy8gQSBmZXcgcGl4ZWxzLCBhbmQgdGhhdCBpcyB0aGUgaW50ZW50OiB0aGUgZGlhZ29uYWwgc2hvdWxkIHJlYWQgYXMgYSBsaW5lLCBqdXN0IG5vdFxuLy8gYSByYXpvciBvbmUuIFRoZSB3aG9sZSBzZWFyY2ggaXMgcmVjb3JkZWQgaGVyZSBiZWNhdXNlIGV2ZXJ5IHdpZGVyIHZhbHVlIHdhcyB0cmllZFxuLy8gYW5kIHJlamVjdGVkIOKAlCAzNDBweCBkaXNzb2x2ZWQgdGhlIHNsYW50IGludG8gYSB3YXNoLCAxMjBweCB3YXMgc3RpbGwgYSBncmFkaWVudCxcbi8vIDQ4cHggcmVhZCBhcyBhIHNvZnQgYmFuZCByYXRoZXIgdGhhbiBhbiBlZGdlLiA2cHggaXMgYSBsaW5lIHdpdGggdGhlIGhhcmRuZXNzIHRha2VuXG4vLyBvZmYsIHdoaWNoIGlzIHdoYXQgdGhlIGRlc2lnbiBoYXMgKGl0cyBlZGdlIGlzIGEgc3RyYWlnaHQgcGF0aCwgaS5lLiBpbmZpbml0ZWx5XG4vLyBjcmlzcCDigJQgdGhpcyBpcyB0aGF0LCBtaW51cyB0aGUgYWxpYXNpbmcpLlxuLy9cbi8vIE5vdGUgdGhpcyBpcyBvbmx5IHRoZSB0aW50IGFuZCBsaWZ0IGJvdW5kYXJ5LiBUaGUgZm9jdXMgdHJhbnNpdGlvbiBpcyBzZXBhcmF0ZSBhbmRcbi8vIHN0YXlzIGZhciB3aWRlciAoJGxwLWhlcm8tdjItc29mdC1yYW1wKSwgYmVjYXVzZSB0aGF0IG9uZSAqd2FzKiB0aGUgaGFyc2ggY3V0OiBhXG4vLyBoYXJkLWVkZ2VkIGJsdXIgcHV0cyB1bnJlc29sdmFibGUgbXVzaCBkaXJlY3RseSBhZ2FpbnN0IHNoYXJwIGRldGFpbCwgd2hpY2ggaXMgd2hhdFxuLy8gbWFkZSB0aGUgZGlhZ29uYWwgbG9vayBzbGljZWQuIE5hcnJvd2luZyB0aGlzIHRvIDZweCBkb2VzIG5vdCByZWludHJvZHVjZSB0aGF0LFxuLy8gYmVjYXVzZSB0aGUgYmx1ciBiZWhpbmQgaXQgc3RpbGwgZmFsbHMgb2ZmIGdyYWR1YWxseS4gS2VlcCB0aGUgdHdvIGluZGVwZW5kZW50IOKAlFxuLy8gdGhlIHRpbnQgZWRnZSBkcmF3cyB0aGUgbGluZSwgdGhlIGJsdXIga2VlcHMgaXQgZnJvbSBiZWluZyBhIGN1dC5cbiRscC1oZXJvLXYyLXRpbnQtcmFtcDogNnB4O1xuJGxwLWhlcm8tdjItdGludC1zY2FsZTogMztcblxuLmJsb2NrLS1scC1oZXJvLXYyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvLyBjbGlwIG5lZ2F0aXZlbHktcG9zaXRpb25lZCBzaGFwZXMg4oCUIHByZXZlbnRzIGhvcml6b250YWwgcGFnZSBzY3JvbGxcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOTZweCAwO1xuICBtaW4taGVpZ2h0OiA0ODBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktNTsgLy8gI0Y3RjZGRlxuICB6LWluZGV4OiAxO1xuXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgIHBhZGRpbmc6IDU2cHggMDtcbiAgfVxuXG4gIC8vIENsZWFyIHRoZSBzdGlja3kgaGVhZGVyIGluc3RlYWQgb2YgdHVja2luZyB1bmRlciBpdC5cbiAgLy9cbiAgLy8gI2hlYWRlciBpcyBgcG9zaXRpb246IHN0aWNreWAgYW5kIGNhcnJpZXMgYSBsZWdhY3kgYG1hcmdpbi1ib3R0b206IC0yNnB4YFxuICAvLyAoXCJmaXggZm9yIGNoYW5naW5nIHRoZSBoZWFkZXIgcG9zaXRpb24gdG8gc3RpY2t5XCIsIGZyb20gdGhlIGluaXRpYWwgdGhlbWVcbiAgLy8gY29tbWl0IOKAlCBzZWUgc3JjL3Njc3MvY3VzdG9tL3BhcnRpYWxzL19uYXZpZ2F0aW9uLnNjc3MpLiBTdGlja3kgZWxlbWVudHMgc2l0XG4gIC8vIGluIG5vcm1hbCBmbG93LCBzbyB0aGF0IG5lZ2F0aXZlIG1hcmdpbiBwdWxscyB3aGF0ZXZlciBmb2xsb3dzIDI2cHggdXAgaW50b1xuICAvLyB0aGUgaGVhZGVyJ3MgYm94LCBhbmQgdGhlIG5hdiBpcyBvcGFxdWUgd2hpdGUg4oCUIHNvIHRoZSB0b3AgMjZweCBvZiB0aGUgZmlyc3RcbiAgLy8gYmxvY2sgb24gdGhlIHBhZ2UgaXMgcGFpbnRlZCBvdmVyLlxuICAvL1xuICAvLyBNb3N0IGJsb2NrcyBvcGVuIHdpdGggZW5vdWdoIHBhZGRpbmcgdGhhdCBsb3NpbmcgMjZweCBnb2VzIHVubm90aWNlZC4gVGhpc1xuICAvLyBvbmUgZG9lc24ndDogdGhlIGJyZWFkY3J1bWIgdHJhaWwgaXMgcGlubmVkIDE4cHggZnJvbSB0aGUgYmxvY2sncyB0b3AgZWRnZVxuICAvLyAoMjRweCBvbiBtb2JpbGUpLCB3aGljaCBsYW5kcyBpbnNpZGUgdGhhdCBzdHJpcCwgc28gdGhlIG5hdiBjbGlwcGVkIGl0IGluXG4gIC8vIGhhbGYgb24gZGVza3RvcCBhbmQgaGlkIGl0IG91dHJpZ2h0IG9uIG1vYmlsZS5cbiAgLy9cbiAgLy8gVGhlIDI2cHggaXMgZ2l2ZW4gYmFjayBoZXJlIHJhdGhlciB0aGFuIHJlbW92ZWQgYXQgdGhlIHNvdXJjZSwgYmVjYXVzZSB0aGVcbiAgLy8gaGVhZGVyIHJ1bGUgaXMgZ2xvYmFsIGFuZCBldmVyeSBwYWdlJ3MgZmlyc3QgYmxvY2sgaXMgY3VycmVudGx5IHBvc2l0aW9uZWRcbiAgLy8gYWdhaW5zdCBpdC4gU2libGluZyBtYXJnaW5zIGJldHdlZW4gI2hlYWRlciBhbmQgI21haW4gY29tYmluZSBhc1xuICAvLyBtYXgocG9zaXRpdmUpICsgbWluKG5lZ2F0aXZlKSwgc28gMjYgKyAoLTI2KSByZXNvbHZlcyB0byAwIGFuZCB0aGUgYmxvY2snc1xuICAvLyB0b3AgZWRnZSBsYW5kcyBleGFjdGx5IG9uIHRoZSBoZWFkZXIncyBib3R0b20gZWRnZS4gKCNtYWluIGhhcyBubyBwYWRkaW5nIG9yXG4gIC8vIGJvcmRlciwgc28gdGhpcyBtYXJnaW4gY29sbGFwc2VzIHRocm91Z2ggaXQg4oCUIHRoYXQncyB3aGF0IHB1dHMgaXQgaW4gdGhlIHNhbWVcbiAgLy8gY29sbGFwc2luZyBydW4gYXMgdGhlIGhlYWRlcidzLilcbiAgLy9cbiAgLy8gU2NvcGVkIHRvIDpmaXJzdC1jaGlsZDogbWlkLXBhZ2UgaW5zdGFuY2VzIGFyZSBub3doZXJlIG5lYXIgdGhlIGhlYWRlciBhbmRcbiAgLy8gbXVzdCBub3QgcGljayB1cCBhIHN0cmF5IDI2cHggb2Ygc2VwYXJhdGlvbi5cbiAgI21haW4gPiAmOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAyNnB4O1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEJSRUFEQ1JVTUJTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQaW5uZWQgdG8gdGhlIHRvcCBvZiB0aGUgYmxvY2sgYW5kIHRha2VuIG91dCBvZiBmbG93IGRlbGliZXJhdGVseTogdGhlIHRyYWlsIGlzIGFuXG4gIC8vIG92ZXJsYXksIG5vdCBhIHJvdy4gSW4gZmxvdyBpdCBjb3VsZCBvbmx5IGV2ZXIgc2l0IHdoZXJlIHRoZSBsYXlvdXQgcHV0IGl0IOKAlCBpbnNpZGUgdGhlXG4gIC8vIHZlcnRpY2FsbHktY2VudHJlZCBjb250ZW50IGNvbHVtbiBvbiBkZXNrdG9wLCBhbmQgYmVsb3cgdGhlIHN0YWNrZWQgbWVkaWEgb24gbW9iaWxlIOKAlFxuICAvLyBhbmQgaXQgd291bGQgcmVzZXJ2ZSBoZWlnaHQgdGhhdCBwdXNoZWQgdGhlIHJlc3Qgb2YgdGhlIGJsb2NrIGRvd24uIEFic29sdXRlIGtlZXBzIHRoZVxuICAvLyBoZXJvJ3Mgb3duIGxheW91dCAoYW5kIGl0cyBjZW50cmluZykgZXhhY3RseSBhcyBpdCBpcyBhdCBldmVyeSBicmVha3BvaW50LlxuICAvL1xuICAvLyBsZWZ0L3JpZ2h0OiAwIHdpdGggbWF4LXdpZHRoICsgYXV0byBtYXJnaW5zIGNlbnRyZXMgdGhlIDE0NDBweCBiYW5kLCBzbyB0aGUgdHJhaWwgbGluZXNcbiAgLy8gdXAgd2l0aCB0aGUgaGVhZGxpbmUncyBsZWZ0IGVkZ2UuIHotaW5kZXggY2xlYXJzIC5scC1oZXJvLXYyX19yaWdodC1zaGFwZXMgKDQpIGFuZCB0aGVcbiAgLy8gdmlkZW8gdG9nZ2xlICg1KS5cbiAgLmxwLWhlcm8tdjJfX2JyZWFkY3J1bWJzLWJhciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMThweDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHotaW5kZXg6IDY7XG4gICAgbWF4LXdpZHRoOiAxNDQwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMCAxLjVyZW07XG5cbiAgICAvLyBUaGUgYmFuZCBzcGFucyB0aGUgZnVsbCBjb250ZW50IHdpZHRoIGJ1dCBvbmx5IHRoZSBsaW5rcyBhcmUgaW50ZXJhY3RpdmUsIHNvIGl0IG11c3RcbiAgICAvLyBub3Qgc3dhbGxvdyBjbGlja3MgYWltZWQgYXQgd2hhdCBzaXRzIHVuZGVyIGl0IOKAlCBjaGllZmx5IHRoZSB2aWRlbyBwbGF5L3BhdXNlIHRvZ2dsZS5cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIC53bXgtYnJlYWRjcnVtYnNfX2xpbmsge1xuICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEJBQ0tHUk9VTkQgTEFZRVJcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE1lZGlhIHNpdHMgaW5zaWRlIHRoZSBjZW50cmVkIDE0NDBweCBiYW5kLCBsaWtlIGV2ZXJ5IG90aGVyIFYyIGJsb2NrLCBhbmRcbiAgLy8gcmVhY2hlcyBsZWZ0IHRvIHdoZXJlIHRoZSBmcm9zdCBkaWFnb25hbCBtZWV0cyB0aGUgYm90dG9tIG9mIHRoZSBibG9jay5cbiAgLy8gTm8gZmFkZSBsYXllcnMgb24gZGVza3RvcDsgc2VlIHRoZSBub3RlIGJlbG93IDo6YWZ0ZXIuXG4gIC5scC1oZXJvLXYyX19iZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIHotaW5kZXg6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG5cbiAgLy8gU2l6ZSB0aGUgbWVkaWEgdG8gdGhlIHdlZGdlIHRoZSBkZXNpZ24gc2hvd3MsIGhlbGQgaW5zaWRlIHRoZSAxNDQwcHggYmFuZC5cbiAgLy9cbiAgLy8gUmlnaHQgZWRnZTogdGhlIGJhbmQncyByaWdodCBlZGdlLCBzbyB0aGUgYmxvY2sgaG9ub3VycyB0aGUgc2FtZSBjb250ZW50XG4gIC8vIHdpZHRoIGFzIHRoZSByZXN0IG9mIHRoZSBWMiBzZXQgaW5zdGVhZCBvZiBibGVlZGluZyB0byB0aGUgdmlld3BvcnQuXG4gIC8vIExlZnQgZWRnZTogd2hlcmUgdGhlIGZyb3N0IGRpYWdvbmFsIG1lZXRzIHRoZSBib3R0b20gb2YgdGhlIGJsb2NrLiBUaGVcbiAgLy8gZGlhZ29uYWwgcnVucyBmcm9tIGBjZW50cmUgKyAxMzJweGAgYXQgdGhlIHRvcCB0byBgY2VudHJlIC0gMjY4cHhgIGF0IHRoZVxuICAvLyBib3R0b20gKHNlZSAubHAtaGVyby12Ml9fbGVmdC1mcm9zdCDigJQgYHJpZ2h0OiA1MCVgICsgYSAxMzJweCBudWRnZSwgbGVzcyA0JVxuICAvLyBvZiBpdHMgMTAwMDBweCB3aWR0aCksIHNvIHRoZSBtZWRpYSBoYXMgdG8gcmVhY2ggY2VudHJlIC0gMjY4cHggZm9yIHRoZVxuICAvLyBib3R0b20tbGVmdCBjb3JuZXIgb2YgdGhhdCB3ZWRnZSB0byBoYXZlIGltYWdlIGluIGl0LlxuICAvL1xuICAvLyBXaWR0aCBpcyB0aGF0IHNwYW46IChjZW50cmUgKyA3MjApIC0gKGNlbnRyZSAtIDI2OCkgPSA5ODhweCBvbmNlIHRoZSBiYW5kXG4gIC8vIGlzIGNhcHBlZCwgYW5kIDUwJSArIDI2OHB4IGJlbG93IDE0NDBweCB3aGVyZSB0aGUgYmFuZCBpcyB0aGUgZnVsbCB3aWR0aC5cbiAgLy9cbiAgLy8gS2VlcCB0aGlzIGJveCdzIGFzcGVjdCB3ZWxsIGF3YXkgZnJvbSB0aGUgc291cmNlJ3Mgb3duICh+MTY6OSk6IGEgYm94IHRoYXRcbiAgLy8gbGFuZHMgb24gdGhlIHNvdXJjZSByYXRpbyBsZWF2ZXMgYGNvdmVyYCBubyBob3Jpem9udGFsIG92ZXJmbG93IHRvIGNyb3AsXG4gIC8vIHdoaWNoIGlzIHdoYXQgbWFkZSB0aGUgZm9jYWwgcG9pbnQgY29udHJvbCBsb29rIGxpa2UgaXQgZGlkIG5vdGhpbmcuIEF0XG4gIC8vIDk4OCDDlyA2MDDigJM3MDAgdGhlcmUncyB+ODDigJMyNjBweCBvZiB0cmF2ZWwsIHNvIHRoZSBjb250cm9sIHN0aWxsIGJpdGVzLlxuICAubHAtaGVyby12Ml9fYmctcGhvdG8sXG4gIC5scC1oZXJvLXYyX19iZy12aWRlbyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogbWF4KDBweCwgY2FsYyg1MCUgLSA3MjBweCkpOyAgICAgICAvLyByaWdodCBlZGdlIG9mIHRoZSBjZW50cmVkIGJhbmRcbiAgICB3aWR0aDogbWluKGNhbGMoNTAlICsgMjY4cHgpLCA5ODhweCk7ICAgICAvLyBjZW50cmUgLSAyNjhweCDihpIgYmFuZCByaWdodCBlZGdlXG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcblxuICAgIC8vIEFib3ZlIDE0NDBweCB0aGUgbWVkaWEgc3RvcHMgYXQgdGhlIGJhbmQncyByaWdodCBlZGdlIGFuZCBtZWV0cyBmbGF0XG4gICAgLy8gJHByaW1hcnktNSwgd2hpY2ggcmVhZHMgYXMgYSBoYXJkIHZlcnRpY2FsIHNlYW0uIEZhZGUgdGhlIG1lZGlhJ3Mgb3duXG4gICAgLy8gYWxwaGEgb3V0IGF0IHRoYXQgZWRnZSBzbyBpdCBkaXNzb2x2ZXMgaW50byB0aGUgYmFja2dyb3VuZCBpbnN0ZWFkLlxuICAgIC8vXG4gICAgLy8gQSBtYXNrLCBub3QgYW4gOjphZnRlciBncmFkaWVudDogYW4gb3ZlcmxheSBpcyB3aGF0IHVzZWQgdG8gZmxhdHRlbiB0aGVcbiAgICAvLyBiYWNrZHJvcC1maWx0ZXIgYmVoaW5kIHRoZSBmcm9zdCBzaGFwZXMgKHNlZSB0aGUgbm90ZSBhYm92ZSkgYW5kIGl0IHdvdWxkXG4gICAgLy8gYWxzbyBoYXJkY29kZSAkcHJpbWFyeS01LiBSZW1vdmluZyBhbHBoYSBwYWludHMgbm90aGluZywgc28gdGhlIGRlY29cbiAgICAvLyBzaGFwZXMgc3RpbGwgc2FtcGxlIGEgcmVhbCBiYWNrZHJvcCBhbmQgdGhlIGZhZGUgZm9sbG93cyB0aGUgYmxvY2tcbiAgICAvLyBiYWNrZ3JvdW5kIGF1dG9tYXRpY2FsbHkuXG4gICAgLy9cbiAgICAvLyBGYWRlIHdpZHRoIHRyYWNrcyB0aGUgcHVycGxlIGd1dHRlciDigJQgKDEwMHZ3IC0gMTQ0MCkgLyAyIOKAlCBzbyBpdCByYW1wcyBpblxuICAgIC8vIGZyb20gfjAgYXQgMTQ0MXB4IHJhdGhlciB0aGFuIHNuYXBwaW5nIHRvIGZ1bGwgd2lkdGggYXQgdGhlIGJyZWFrcG9pbnQsXG4gICAgLy8gYW5kIGNhcHMgYXQgMjAwcHggc28gaXQgbmV2ZXIgZWF0cyBpbnRvIHRoZSBzdWJqZWN0IG9uIHVsdHJhd2lkZS5cbiAgICAvLyBMZWZ0IGVkZ2UgZmFkZXMgaW50byB0aGUgYmxvY2sgYmFja2dyb3VuZCByYXRoZXIgdGhhbiBjdXR0aW5nLiBTZWVcbiAgICAvLyAkbHAtaGVyby12Mi1sZWZ0LWZhZGUgYWJvdmUuXG4gICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCAwLCAjMDAwICRscC1oZXJvLXYyLWxlZnQtZmFkZSk7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50IDAsICMwMDAgJGxwLWhlcm8tdjItbGVmdC1mYWRlKTtcblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAxNDQxcHgpIHtcbiAgICAgIC0tbHAtaGVyby12Mi1mYWRlOiBtaW4oMjAwcHgsIGNhbGMoKDEwMHZ3IC0gMTQ0MHB4KSAvIDIpKTtcblxuICAgICAgLy8gQm90aCBlZGdlcyBub3csIGludGVyc2VjdGVkIHNvIGVhY2gga2VlcHMgaXRzIG93biByYW1wLlxuICAgICAgbWFzay1pbWFnZTpcbiAgICAgICAgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCAwLCAjMDAwICRscC1oZXJvLXYyLWxlZnQtZmFkZSksXG4gICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICB0byByaWdodCxcbiAgICAgICAgICAjMDAwIGNhbGMoMTAwJSAtIHZhcigtLWxwLWhlcm8tdjItZmFkZSkpLFxuICAgICAgICAgIHRyYW5zcGFyZW50IDEwMCVcbiAgICAgICAgKTtcbiAgICAgIG1hc2stY29tcG9zaXRlOiBpbnRlcnNlY3Q7XG4gICAgICAtd2Via2l0LW1hc2staW1hZ2U6XG4gICAgICAgIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQgMCwgIzAwMCAkbHAtaGVyby12Mi1sZWZ0LWZhZGUpLFxuICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgdG8gcmlnaHQsXG4gICAgICAgICAgIzAwMCBjYWxjKDEwMCUgLSB2YXIoLS1scC1oZXJvLXYyLWZhZGUpKSxcbiAgICAgICAgICB0cmFuc3BhcmVudCAxMDAlXG4gICAgICAgICk7XG4gICAgICAtd2Via2l0LW1hc2stY29tcG9zaXRlOiBzb3VyY2UtaW47XG4gICAgfVxuICB9XG5cbiAgLy8gRWRpdG9yLWNob3NlbiBmb2NhbCBwb2ludCAoTWVkaWEgRm9jYWwgUG9pbnQgZmllbGQpIOKAlCBkZWNpZGVzIHdoaWNoIHBhcnRcbiAgLy8gb2YgdGhlIG1lZGlhIHN1cnZpdmVzIHRoZSBvYmplY3QtZml0IGNyb3AuIE9ubHkgdGhlIGhvcml6b250YWwgYXhpcyBpc1xuICAvLyBleHBvc2VkOyB2ZXJ0aWNhbCBzdGF5cyBjZW50ZXJlZC4gYGNlbnRlcmAgaXMgdGhlIGRlZmF1bHQgYWJvdmUsIHNvIHRoZVxuICAvLyBtb2RpZmllciBvbmx5IG5lZWRzIHRvIG92ZXJyaWRlIHRoZSBvdGhlciB0d28uXG4gIC5scC1oZXJvLXYyX19iZy0tZm9jYWwtbGVmdCAubHAtaGVyby12Ml9fYmctcGhvdG8sXG4gIC5scC1oZXJvLXYyX19iZy0tZm9jYWwtbGVmdCAubHAtaGVyby12Ml9fYmctdmlkZW8ge1xuICAgIG9iamVjdC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7XG4gIH1cblxuICAubHAtaGVyby12Ml9fYmctLWZvY2FsLXJpZ2h0IC5scC1oZXJvLXYyX19iZy1waG90byxcbiAgLmxwLWhlcm8tdjJfX2JnLS1mb2NhbC1yaWdodCAubHAtaGVyby12Ml9fYmctdmlkZW8ge1xuICAgIG9iamVjdC1wb3NpdGlvbjogcmlnaHQgY2VudGVyO1xuICB9XG5cbiAgLy8gTm8gZmFkZSBsYXllcnMgb24gZGVza3RvcC4gVGhlcmUgdXNlZCB0byBiZSBhIGB0byByaWdodGAgZ3JhZGllbnQgcGFpciBpblxuICAvLyA6OmFmdGVyIOKAlCBzb2xpZCAkcHJpbWFyeS01IHRvIDQ1JSwgcGx1cyBhIHJpZ2h0LWVkZ2UgZmFkZSDigJQgd2hpY2ggZHJldyBhXG4gIC8vIHNvZnQtZWRnZWQgcmVjdGFuZ2xlIGFjcm9zcyBhIGRlc2lnbiB3aG9zZSBvbmx5IGJvdW5kYXJ5IGlzIHRoZSBmcm9zdFxuICAvLyBkaWFnb25hbCwgYW5kIHdhc2hlZCBvdXQgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIG1lZGlhLlxuICAvL1xuICAvLyBGaWdtYSBoYXMgbmVpdGhlcjogdGhlIGxlZnQgc2lkZSBpcyBqdXN0IHRoZSBmcm9zdGVkIHBhbmVsIG92ZXIgdGhlIG1lZGlhXG4gIC8vIChzZWUgLmxwLWhlcm8tdjJfX2xlZnQtZnJvc3QgZm9yIGl0cyBnbGFzcyB2YWx1ZXMpLiBBbnl0aGluZyBwYWludGVkIHVuZGVyXG4gIC8vIHRoYXQgcGFuZWwgaXMgd2hhdCBiYWNrZHJvcC1maWx0ZXIgc2FtcGxlcywgc28gYSBmaWxsIHRoZXJlIGZsYXR0ZW5zIHRoZVxuICAvLyBiYWNrZHJvcCBhbmQgdGhlIGdsYXNzIHJlYWRzIGFzIHBsYWluIGNvbG91ciBpbnN0ZWFkIG9mIGZyb3N0ZWQgaW1hZ2UuIFRoZVxuICAvLyBwYW5lbCBpcyBsZWZ0IHRvIGRvIHRoZSB3b3JrIG9uIGl0cyBvd24uIDo6YWZ0ZXIgaXMgZGVmaW5lZCBpbiB0aGUgbW9iaWxlXG4gIC8vIGJsb2NrLCB0aGUgb25seSBsYXlvdXQgdGhhdCBzdGlsbCBuZWVkcyBhbiBlZGdlIGZhZGUuXG5cbiAgLy8gLS0tLS0tLS0gQmFja2dyb3VuZCB2aWRlbyBwbGF5L3BhdXNlIHRvZ2dsZSAoV0NBRyAyLjIuMikgLS0tLS0tLS1cbiAgLmxwLWhlcm8tdjJfX3ZpZGVvLXRvZ2dsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAxcmVtO1xuICAgIGJvdHRvbTogMXJlbTtcbiAgICB6LWluZGV4OiA1O1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMzLjZweDtcbiAgICBoZWlnaHQ6IDMzLjZweDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoNjUsIDUwLCAxNTUsIDAuNSk7IC8vICRwcmltYXJ5LTUwIEAgNTAlXG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xuXG4gICAgc3ZnIHtcbiAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgZmlsbDogY3VycmVudENvbG9yO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSg2NSwgNTAsIDE1NSwgMC43KTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgb3V0bGluZTogMnB4IHNvbGlkICRwcmltYXJ5LTEwMDtcbiAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTtcbiAgICB9XG4gIH1cblxuICAvLyAtLS0tLS0tLSBMZWZ0LXNpZGUgZnJvc3RlZCBzaGFwZSAoTk8gcGFyYWxsYXgsIE5PIGJvcmRlcikgLS0tLS0tLS1cbiAgLy8gV3JhcHBlciBpcyB0aGUgY2VudHJlZCAxNDQwcHggYmFuZCB3aXRoIG92ZXJmbG93OmhpZGRlbiwgaG9sZGluZyBhblxuICAvLyBvdmVyc2l6ZWQgaW5uZXIgc2hhcGUuIFRoZSBzaGFwZSBpcyAxMDAwMHB4IHdpZGUgKGVmZmVjdGl2ZWx5IHVuYm91bmRlZClcbiAgLy8gYW5jaG9yZWQgYXQgcmlnaHQ6NTAlIG9mIHRoZSB3cmFwcGVyLCB0aGVuIG51ZGdlZCArMTMycHggdmlhIHRyYW5zZm9ybS5cbiAgLy8gVGhlIGNsaXAtcGF0aCdzIDk2JSBib3R0b20tcmlnaHQgZ2l2ZXMgYSBmaXhlZCA0MDBweCBzbGFudCBvZmZzZXQsIHNvIHRoZVxuICAvLyByaWdodCBlZGdlIG9mIHRoZSB2aXNpYmxlIHRyYXBlem9pZCBzaXRzIGF0IGEgc3RhYmxlIHBpeGVsIG9mZnNldCBmcm9tXG4gIC8vIGNlbnRyZSBvbiBldmVyeSB2aWV3cG9ydCDigJQgbm8gZHJpZnQgb24gcmVzaXplLlxuICAvL1xuICAvLyBDbGlwcGluZyB0byB0aGUgYmFuZCBpcyB3aGF0IHN0b3BzIHRoZSBmcm9zdGVkIHdhc2ggcnVubmluZyB0byB0aGUgdmlld3BvcnRcbiAgLy8gZWRnZS4gSXQgZG9lc24ndCBtb3ZlIHRoZSBkaWFnb25hbDogdGhlIGJhbmQgaXMgY2VudHJlZCwgc28gYHJpZ2h0OiA1MCVgIG9mXG4gIC8vIHRoaXMgd3JhcHBlciBpcyBzdGlsbCB0aGUgYmxvY2sncyBjZW50cmUsIGFuZCB0aGUgNDAwcHggc2xhbnQgY29tZXMgb2ZmIHRoZVxuICAvLyBzaGFwZSdzIG93biAxMDAwMHB4IHdpZHRoLCBub3QgdGhlIHdyYXBwZXIncy4gVGhlIGJhbmQtZWRnZSBjdXQgaXMgbmVhci1cbiAgLy8gaW52aXNpYmxlIGluIHByYWN0aWNlIOKAlCBsZWZ0IG9mIGNlbnRyZSAtIDI2OHB4IHRoZXJlJ3Mgbm8gbWVkaWEgdW5kZXIgdGhlXG4gIC8vIHBhbmVsLCBzbyBhbGwgdGhhdCBzaG93cyB0aGVyZSBpcyB0aGUgcGFuZWwncyBvd24gdGludCBvdmVyIGZsYXQgJHByaW1hcnktNS5cbiAgLmxwLWhlcm8tdjJfX2xlZnQtZnJvc3Qtd3JhcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IG1heCgwcHgsIGNhbGMoNTAlIC0gNzIwcHgpKTtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IG1pbigxMDAlLCAxNDQwcHgpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDI7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAvLyBEZWxpYmVyYXRlbHkgTk9UIHRoZSBibHVyKDJweCkgZ2xhc3MgdGhlIFYyIHBhcmFsbGVsb2dyYW0gZGVjb3MgdXNlXG4gIC8vIChmb290ZXItY3RhLWJhbm5lci12MiwgaG9tZS1oZXJvLXYyLCBzdGF0LWdyaWQtdjIsIC5scC1oZXJvLXYyX19mcm9zdFxuICAvLyBiZWxvdykuIFRoaXMgcGFuZWwgaXMgYSBsYXJnZSBzb2Z0IGZyb3N0IG92ZXIgdGhlIG1lZGlhLCBub3QgYSBzbWFsbCBnbGFzc1xuICAvLyBzaGFyZCwgYW5kIDJweCByZWFkcyBhcyBiYXJlbHktdGhlcmUgYWdhaW5zdCBpdC5cbiAgLy9cbiAgLy8gVGhlIGRlc2lnbiBzcGVjcyA2My44cHgsIHJlYWQgb2ZmIHRoZSBwYW5lbCBsYXllciBpbiB0aGUgRmlnbWEgZmlsZSAobm9kZVxuICAvLyA0NzM2OjIwMzUzKS4gV2UgZGVsaWJlcmF0ZWx5IHJ1biBsb3dlciwgYW5kIHRoZSByZWFzb24gaXMgdGhlIGhhcmQgZWRnZS5cbiAgLy9cbiAgLy8gV2l0aCBhIGhhcmQgY2xpcC1wYXRoLCB0aGUgYmx1ciByYWRpdXMgSVMgdGhlIHNpemUgb2YgdGhlIHZpc2libGUgc3RlcCBhdCB0aGVcbiAgLy8gZGlhZ29uYWw6IG11c2ggb24gb25lIHNpZGUsIHNoYXJwIGRldGFpbCBvbiB0aGUgb3RoZXIuIFRoZSBkZXNpZ24gdG9sZXJhdGVzXG4gIC8vIDYzLjhweCBiZWNhdXNlIGl0cyBwaG90b2dyYXBoIGlzIGxvdy1jb250cmFzdCB3aGVyZSB0aGUgc2xhbnQgY3Jvc3NlcyBpdDtcbiAgLy8gZWRpdG9yLWNob3NlbiBhcnR3b3JrIGlzbid0LCBhbmQgYXQgNjMuOHB4IHRoZSBib3VuZGFyeSByZWFkIGFzIGEgY3V0LlxuICAvL1xuICAvLyBSYW1waW5nIHRoZSBibHVyIGluc3RlYWQgd291bGQgbGV0IHVzIGtlZXAgNjMuOHB4LCBidXQgaXQgaXNuJ3QgYXZhaWxhYmxlOlxuICAvLyBDaHJvbWUgZHJvcHMgYGJhY2tkcm9wLWZpbHRlcmAgZW50aXJlbHkgd2hlbiB0aGUgc2FtZSBlbGVtZW50IGNhcnJpZXMgYVxuICAvLyBgbWFzay1pbWFnZWAsIHNvIGEgZ3JhZGllbnQtbWFza2VkIGJsdXIgcmVuZGVycyBhcyBubyBibHVyIGF0IGFsbC4gVmVyaWZpZWRcbiAgLy8gaW4tYnJvd3NlciDigJQgZGVsZXRpbmcgdGhlIG1hc2sgbWFkZSB0aGUgYmx1ciByZWFwcGVhciBhcyBhIGhhcmQgcmVjdGFuZ2xlLlxuICAvL1xuICAvLyBNZWFzdXJlZCBhdCAxNDQwcHggYWdhaW5zdCBhIGhpZ2gtY29udHJhc3QgcGhvdG86IDYzLjhweCBpcyBhbiBvYnZpb3VzIGN1dCxcbiAgLy8gMjRweCByZWFkcyBhcyBhIGdlbnRsZSBjaGFuZ2UsIDE0cHggaXMgbmVhcmx5IGludmlzaWJsZSBidXQgZ2l2ZXMgdXAgbW9zdCBvZlxuICAvLyB0aGUgZnJvc3RlZCBjaGFyYWN0ZXIuIDIwcHggc2l0cyBiZXR3ZWVuIHRoZSBsYXN0IHR3by4gVGhpcyBpcyB0aGUgZGlhbCBmb3IgaG93XG4gIC8vIGxvdWQgdGhlIGRpYWdvbmFsIGlzIOKAlCBub3RoaW5nIGVsc2UgZGVyaXZlcyBmcm9tIGl0LlxuICAvL1xuICAvLyBgdG9wYC9gaGVpZ2h0YCBvdmVyc2NhbiAycHggYWJvdmUgdGhlIHdyYXBwZXIsIHdoaWNoIGNsaXBzIGl0LiBXaXRob3V0IGl0IGFcbiAgLy8gMXB4IHNsaXZlciBvZiB1bmZyb3N0ZWQgbWVkaWEgc2hvd3MgYWxvbmcgdGhlIHRvcCBlZGdlOiB0aGUgYmxvY2sncyBoZWlnaHRcbiAgLy8gaXMgY29udGVudC1kcml2ZW4gYW5kIGxhbmRzIG9uIGZyYWN0aW9uYWwgcGl4ZWxzLCBhbmQgdGhlIGJhY2tkcm9wLWZpbHRlclxuICAvLyByZWdpb24gcm91bmRzIGlud2FyZCBmcm9tIHRoZSBzaGFwZSdzIGJveC4gT25seSB0aGUgdG9wIGlzIG92ZXJzY2FubmVkIOKAlFxuICAvLyB0aGUgcG9seWdvbidzIDEwMCUgZWRnZSBzdGF5cyBleGFjdGx5IG9uIHRoZSBibG9jaydzIGJvdHRvbSwga2VlcGluZyB0aGVcbiAgLy8gZGlhZ29uYWwncyBib3R0b20gcG9pbnQgYXQgY2VudHJlIC0gMjY4cHggc28gaXQgc3RheXMgZmx1c2ggd2l0aCB0aGUgbWVkaWFcbiAgLy8gYW5kIHRoZSB0ZXh0IGNhcC4gVGhlIDJweCBzaGlmdHMgdGhlIHRvcCBwb2ludCBsZWZ0IGJ5IH4xLjNweCwgaW1tYXRlcmlhbC5cbiAgLy8gUGxhaW4gYmx1cjsgdGhlIGxpZ2h0ZW5pbmcgaGFwcGVucyBpbiB0aGUgYnJpZ2h0ZW4gbGF5ZXIgYmVsb3cuIGBzYXR1cmF0ZSgxLjIpYFxuICAvLyBpcyBjb21wZW5zYXRpb24sIG5vdCBkZWNvcmF0aW9uOiBzY3JlZW4gY29tcG9zaXRpbmcgbGlmdHMgYWxsIHRocmVlIGNoYW5uZWxzIGJ5XG4gIC8vIHRoZSBzYW1lIGFic29sdXRlIGFtb3VudCwgd2hpY2ggc2hyaW5rcyB0aGUgZ2FwIGJldHdlZW4gdGhlbSBhbmQgcmVhZHMgYXNcbiAgLy8gd2FzaGVkLW91dCBjb2xvdXIuIFB1c2hpbmcgc2F0dXJhdGlvbiBiYWNrIHVwIHJlc3RvcmVzIHRoZSBtZWRpYSdzIG93biBodWUuXG4gIC5scC1oZXJvLXYyX19sZWZ0LWZyb3N0IHtcbiAgICAvLyBHZW9tZXRyeSBtYXRjaGVzIC5scC1oZXJvLXYyX19sZWZ0LWZyb3N0LWJyaWdodGVuIHJhdGhlciB0aGFuIHRoZSBvbGRcbiAgICAvLyBgcmlnaHQ6IDUwJWAgKyAxMDAwMHB4IGJveCwgZm9yIHRoZSBzYW1lIHJlYXNvbjogdGhlIHRpbnQgbmVlZHMgYSBmZWF0aGVyZWRcbiAgICAvLyBlZGdlLCBhbmQgYSBtYXNrIGNhbiBvbmx5IGZpbmQgdGhlIGRpYWdvbmFsJ3MgYW5nbGUgZnJvbSBhIGJveCB3aG9zZSBjb3JuZXJzXG4gICAgLy8gQVJFIHRoZSBkaWFnb25hbCdzIGVuZHBvaW50cy4gU28gdGhlIGJveCBpcyB0aGUgc2xhbnQncyBib3VuZGluZyBib3gsIHNjYWxlZFxuICAgIC8vIGFib3V0IGl0cyB0b3AtcmlnaHQgY29ybmVyIOKAlCB3aGljaCBzaXRzIG9uIHRoZSBkaWFnb25hbCwgc28gYSB1bmlmb3JtIHNjYWxlXG4gICAgLy8gZ3Jvd3MgdGhlIGJveCBkb3duLWFuZC1sZWZ0IHRvIGNvdmVyIHRoZSBwYW5lbCB3aGlsZSBsZWF2aW5nIGl0cyBvd24gZGlhZ29uYWxcbiAgICAvLyBvbiB0aGUgc2FtZSBsaW5lLiBUaGUgd3JhcCdzIG92ZXJmbG93IHN0aWxsIGhvbGRzIHRoZSB3YXNoIGluc2lkZSB0aGUgMTQ0MHB4XG4gICAgLy8gYmFuZCwgZXhhY3RseSBhcyBiZWZvcmUuXG4gICAgLy9cbiAgICAvLyBTY2FsaW5nIGlzIG9ubHkgc2FmZSBoZXJlIGJlY2F1c2UgdGhpcyBlbGVtZW50IG5vIGxvbmdlciBjYXJyaWVzIGFcbiAgICAvLyBiYWNrZHJvcC1maWx0ZXIg4oCUIGB0cmFuc2Zvcm1gIHdvdWxkIGhhdmUgbXVsdGlwbGllZCBhIGJsdXIgcmFkaXVzLiBJdCBoYXMgYVxuICAgIC8vIGZsYXQgYmFja2dyb3VuZCBjb2xvdXIsIHdoaWNoIHNjYWxlcyB3aXRob3V0IGNvbnNlcXVlbmNlLlxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiBjYWxjKDUwJSAtICN7JGxwLWhlcm8tdjItc2xhbnQgLSAxMzJweH0pO1xuICAgIHRvcDogLTJweDtcbiAgICB3aWR0aDogJGxwLWhlcm8tdjItc2xhbnQ7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAycHgpO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKCRscC1oZXJvLXYyLXRpbnQtc2NhbGUpO1xuICAgIC8vIFNhbWUgY29sb3VyIGFzIHRoZSBibG9jaydzIG93biBncm91bmQgKCRwcmltYXJ5LTUsIHNldCBhdCB0aGUgdG9wIG9mIHRoaXNcbiAgICAvLyBmaWxlKSBzbyB0aGUgcGFuZWwgcmVzb2x2ZXMgdG8gdGhlIHBhZ2UgYmFja2dyb3VuZCByYXRoZXIgdGhhbiB0byBhIGdyZXlcbiAgICAvLyB3YXNoLiBUaGlzIGhhcyB0byBiZSAkcHJpbWFyeS01IGFuZCBub3QgbWVyZWx5IFwiYSBsaWdodCBwdXJwbGVcIjogdGhlIHBhbmVsXG4gICAgLy8gcnVucyBsZWZ0IHBhc3Qgd2hlcmUgdGhlIG1lZGlhIGVuZHMsIGFuZCBhbnkgb3RoZXIgaHVlIG1ha2VzIGEgdmlzaWJsZSBzZWFtXG4gICAgLy8gYWdhaW5zdCB0aGUgYmxvY2sgYmFja2dyb3VuZCBhdCB0aGF0IGVkZ2UuXG4gICAgLy9cbiAgICAvLyBBbHBoYSBpcyB0aGUgZGlhbCwgbm90IHRoZSBjb2xvdXIg4oCUIGFuZCAwLjEgaXMgdGhlIGRlc2lnbidzLCByZWFkIG9mZiB0aGUgc2FtZVxuICAgIC8vIEZpZ21hIGxheWVyIChgZmlsbDogI0Y3RjZGRiwgZmlsbC1vcGFjaXR5OiAwLjFgKS5cbiAgICAvL1xuICAgIC8vIFRoaXMgd2FzIDAuNywgYW5kIHRoYXQgaXMgd2hhdCBtYWRlIHRoZSBkaWFnb25hbCByZWFkIGFzIGEgY3V0IHJhdGhlciB0aGFuIGFcbiAgICAvLyB0cmFuc2l0aW9uLiBUaGUgZWRnZSBoZXJlIGlzIGEgaGFyZCBjbGlwLXBhdGgsIHdoaWNoIGlzIGFsc28gdHJ1ZSBpbiB0aGVcbiAgICAvLyBkZXNpZ24g4oCUIGJ1dCBhIDcwJSB0aW50IHN0b3BwaW5nIGRlYWQgYXQgYSBoYXJkIGVkZ2UgaXMgYSBsYXJnZSBzdGVwLCB3aGlsZSBhXG4gICAgLy8gMTAlIHRpbnQgc3RvcHBpbmcgZGVhZCBpcyBiYXJlbHkgYSBzdGVwIGF0IGFsbC4gVGhlIGRlc2lnbiBnZXRzIGF3YXkgd2l0aCBhXG4gICAgLy8gY3Jpc3AgZWRnZSBwcmVjaXNlbHkgYmVjYXVzZSB0aGUgd2FzaCBpcyBuZWFybHkgdHJhbnNwYXJlbnQuXG4gICAgLy9cbiAgICAvLyBBbHBoYSBhbmQgYmx1ciBhcmUgYSBwYWlyLCB3aGljaCBpcyB3aHkgYW4gZWFybGllciBwYXNzIGF0IHRoaXMgd2VudCB3cm9uZzpcbiAgICAvLyBpdCByYWlzZWQgYWxwaGEgZnJvbSAwLjE1IHRvIDAuNyB0byBzdG9wIHRoZSBwYW5lbCByZWFkaW5nIGFzIGEgZ3JleSB3YXNoLFxuICAgIC8vIHdoaWxlIGxlYXZpbmcgYmx1ciBhdCAzMHB4IGluc3RlYWQgb2YgdGhlIHNwZWNpZmllZCA2My44cHguIEF0IDMwcHggdGhlIG1lZGlhXG4gICAgLy8gdW5kZXJuZWF0aCBpcyBzdGlsbCBsZWdpYmxlIGVub3VnaCB0byBuZWVkIGNvdmVyaW5nOyBhdCA2My44cHggaXQncyBkaWZmdXNlXG4gICAgLy8gZW5vdWdoIHRoYXQgYSAxMCUgdGludCBpcyBhbGwgdGhlIHBhbmVsIG5lZWRzLiBNb3ZlIHRoZW0gdG9nZXRoZXIgb3IgdGhlXG4gICAgLy8gcGFuZWwgZ29lcyBiYWNrIHRvIGVpdGhlciB3YXNoaW5nIG91dCBvciBzbGFiYmluZyBvdmVyIHRoZSBhcnR3b3JrLlxuICAgIC8vXG4gICAgLy8gVGhlIGNvbG91ciBiZWxvbmdzIGhlcmUsIG9uIHRoaXMgcGxhaW4gb3ZlcmxheS4gRG8gTk9UIG1vdmUgaXQgaW50byB0aGVcbiAgICAvLyBicmlnaHRlbiBsYXllciBiZWxvdywgd2hpY2ggbXVzdCBzdGF5IG5ldXRyYWwgZ3JleSDigJQgdGhlIG5vdGUgdGhlcmUgZXhwbGFpbnNcbiAgICAvLyB3aHkgYSBjb2xvdXJlZCBzb3VyY2UgcHVzaGVzIGl0cyBvd24gaHVlIGludG8gdGhlIHNoYWRvd3MuXG4gICAgLy8gMC43NSwgbm90IHRoZSBkZXNpZ24ncyAwLjEuIFRoZSBkZXNpZ24gZ2V0cyBhd2F5IHdpdGggMC4xIGJlY2F1c2UgaXRzXG4gICAgLy8gcGhvdG9ncmFwaCBpcyBsaWdodCB3aGVyZSB0aGUgcGFuZWwgc2l0czsgb3VycyBoYXMgdG8ga2VlcCB0aGUgaGVhZGxpbmUgYW5kXG4gICAgLy8gYm9keSBsZWdpYmxlIG92ZXIgd2hhdGV2ZXIgYW4gZWRpdG9yIHVwbG9hZHMsIGFuZCB0aGlzIHdhc2gg4oCUIG5vdCB0aGVcbiAgICAvLyBicmlnaHRlbmluZyBsYXllciDigJQgaXMgd2hhdCBkb2VzIG1vc3Qgb2YgdGhhdCB3b3JrLiBEcm9wcGluZyBpdCB0byAwLjEgaXMgd2hhdFxuICAgIC8vIHB1dCB0aGUgdGV4dCBiYWNrIG92ZXIgZGFyayBwaXhlbHMuXG4gICAgLy9cbiAgICAvLyBUaGUgcmVhc29uIDAuNyBwcmV2aW91c2x5IGZvcmNlZCBhIHN0YXJrIGRpYWdvbmFsIHdhcyB0aGUgaGFyZCBjbGlwLXBhdGgsIG5vdFxuICAgIC8vIHRoZSBhbHBoYTogYSBoZWF2eSB3YXNoIHN0b3BwaW5nIGRlYWQgaW4gb25lIHBpeGVsIGlzIGEgbGFyZ2Ugc3RlcC4gV2l0aCB0aGVcbiAgICAvLyBtYXNrIGJlbG93IHRoZSB3YXNoIHJhbXBzIG91dCBpbnN0ZWFkLCBzbyBpdCBjYW4gYmUgc3Ryb25nIHdpdGhvdXQgZHJhd2luZyBhXG4gICAgLy8gbGluZS4gUmFpc2UgdG93YXJkIDEgZm9yIG1vcmUgbGVnaWJpbGl0eSBoZWFkcm9vbSwgYXQgdGhlIGNvc3Qgb2YgdGhlIGJsdXJyZWRcbiAgICAvLyBhcnR3b3JrIHN0aWxsIHJlYWRpbmcgdGhyb3VnaCBhcyBnbGFzcyByYXRoZXIgdGhhbiBhIGZsYXQgdHJhcGV6b2lkOyBsb3dlclxuICAgIC8vIHRvd2FyZCB0aGUgZGVzaWduJ3MgMC4xIGlmIHRoZSBhcnR3b3JrIGlzIGxpZ2h0IGVub3VnaCBub3QgdG8gbmVlZCBpdC5cbiAgICBiYWNrZ3JvdW5kOiByZ2JhKCRwcmltYXJ5LTUsIDAuNzUpO1xuXG4gICAgLy8gRmVhdGhlcmVkIGVkZ2UsIHBlcnBlbmRpY3VsYXIgdG8gdGhlIHNsYW50IOKAlCBzZWUgdGhlIG5vdGUgb25cbiAgICAvLyAubHAtaGVyby12Ml9fbGVmdC1mcm9zdC1icmlnaHRlbiBmb3IgaG93IHRoZSBjb3JuZXIga2V5d29yZCBmaW5kcyB0aGUgYW5nbGVcbiAgICAvLyB3aXRob3V0IG9uZSBiZWluZyBoYXJkY29kZWQuIFRoaXMgcmVwbGFjZXMgdGhlIGNsaXAtcGF0aDogcGFzdCA1MCUgdGhlIG1hc2sgaXNcbiAgICAvLyB0cmFuc3BhcmVudCwgd2hpY2ggaXMgd2hhdCBub3cgdGVybWluYXRlcyB0aGUgcGFuZWwgYXQgdGhlIGRpYWdvbmFsLlxuICAgIG1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIHRvIGJvdHRvbSByaWdodCxcbiAgICAgICMwMDAgMCxcbiAgICAgICMwMDAgY2FsYyg1MCUgLSAjeyRscC1oZXJvLXYyLXRpbnQtcmFtcH0gLyAjeyRscC1oZXJvLXYyLXRpbnQtc2NhbGV9KSxcbiAgICAgIHRyYW5zcGFyZW50IDUwJVxuICAgICk7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICB0byBib3R0b20gcmlnaHQsXG4gICAgICAjMDAwIDAsXG4gICAgICAjMDAwIGNhbGMoNTAlIC0gI3skbHAtaGVyby12Mi10aW50LXJhbXB9IC8gI3skbHAtaGVyby12Mi10aW50LXNjYWxlfSksXG4gICAgICB0cmFuc3BhcmVudCA1MCVcbiAgICApO1xuICAgIC8vIE5vIGJhY2tkcm9wLWZpbHRlciBoZXJlIGFueSBtb3JlLiBBIGJhY2tkcm9wLWZpbHRlciBjYW4gb25seSBldmVyIGhhdmUgYSBoYXJkXG4gICAgLy8gZWRnZSDigJQgQ2hyb21lIGRyb3BzIGl0IGVudGlyZWx5IGlmIHRoZSBlbGVtZW50IGFsc28gY2FycmllcyBhIG1hc2staW1hZ2UsIGFuZFxuICAgIC8vIHNjYWxpbmcgdGhlIGVsZW1lbnQgdG8gZ2l2ZSBhIG1hc2sgcm9vbSBtdWx0aXBsaWVzIHRoZSBibHVyIHJhZGl1cy4gVW5kZXIgYVxuICAgIC8vIGhhcmQgY2xpcCB0aGUgYmx1ciByYWRpdXMgSVMgdGhlIHNpemUgb2YgdGhlIHZpc2libGUgc3RlcCwgc28gdGhpcyBlbGVtZW50IHdhc1xuICAgIC8vIHRoZSBzaGFycCBkaWFnb25hbCBubyBtYXR0ZXIgaG93IHRoZSByYWRpdXMgd2FzIHR1bmVkLlxuICAgIC8vXG4gICAgLy8gVGhlIGJsdXIgbW92ZWQgdG8gLmxwLWhlcm8tdjJfX2JnLXNvZnQsIGEgbWFza2VkIGNvcHkgb2YgdGhlIHBob3RvLCB3aGljaCBjYW5cbiAgICAvLyBmYWRlIG91dCBhY3Jvc3MgdGhlIHNsYW50LiBXaGF0J3MgbGVmdCBoZXJlIGlzIHRoZSAxMCUgdGludCwgd2hvc2UgaGFyZCBlZGdlIGlzXG4gICAgLy8gc21hbGwgZW5vdWdoIG5vdCB0byByZWFkIOKAlCB0aGUgZGVzaWduIHNoaXBzIGEgaGFyZCBlZGdlIGZvciBleGFjdGx5IHRoYXRcbiAgICAvLyByZWFzb24uIGBzYXR1cmF0ZWAgbW92ZWQgd2l0aCB0aGUgYmx1ci5cblxuICB9XG5cbiAgLy8gLS0tLS0tLS0gU29mdC1lZGdlZCBibHVyIGFsb25nIHRoZSBkaWFnb25hbCAtLS0tLS0tLVxuICAvLyBBIGJsdXJyZWQgY29weSBvZiB0aGUgcGhvdG8sIGxhaWQgb3ZlciB0aGUgc2hhcnAgb25lIGFuZCBtYXNrZWQgc28gaXQgZmFkZXMgb3V0XG4gIC8vIGFjcm9zcyB0aGUgZGlhZ29uYWwuIFRoaXMgaXMgd2hhdCBtYWtlcyB0aGUgc2xhbnQgYSB0cmFuc2l0aW9uIGluc3RlYWQgb2YgYSBjdXQuXG4gIC8vXG4gIC8vIFdoeSBhIGNvcHksIHdoZW4gYSBiYWNrZHJvcC1maWx0ZXIgd291bGQgbmVlZCBubyBleHRyYSBtYXJrdXA6IGEgYmFja2Ryb3AtZmlsdGVyXG4gIC8vIGNhbm5vdCBoYXZlIGEgc29mdCBlZGdlLiBNYXNraW5nIG9uZSBtYWtlcyBDaHJvbWUgZHJvcCB0aGUgZmlsdGVyIG91dHJpZ2h0XG4gIC8vICh2ZXJpZmllZCBpbi1icm93c2VyIOKAlCBkZWxldGluZyB0aGUgbWFzayBtYWRlIHRoZSBibHVyIHJlYXBwZWFyIGFzIGEgaGFyZFxuICAvLyByZWN0YW5nbGUpLCBhbmQgc2NhbGluZyB0aGUgZWxlbWVudCB0byBnaXZlIHRoZSBtYXNrIHJvb20gbXVsdGlwbGllcyB0aGUgYmx1clxuICAvLyByYWRpdXMgYWxvbmcgd2l0aCBldmVyeXRoaW5nIGVsc2UuIGBmaWx0ZXJgIG9uIHJlYWwgY29udGVudCBtYXNrcyBmaW5lLCBzbyB0aGVcbiAgLy8gY29weSBjYW4gZmFkZSB3aGVyZSBhIGJhY2tkcm9wLWZpbHRlciBjYW4ndC4gVGhlIGRlc2lnbiBmaWxlIGFwcGVhcnMgdG8gZG8gdGhlXG4gIC8vIHNhbWUgdGhpbmc6IGl0IGNhcnJpZXMgdHdvIGNvcGllcyBvZiB0aGUgcGhvdG9ncmFwaCBhdCBuZWFybHkgdGhlIHNhbWUgcG9zaXRpb24uXG4gIC8vXG4gIC8vIE5vIGV4dHJhIGRvd25sb2FkIOKAlCB0aGUgY29weSBpcyByZW5kZXJlZCB0aHJvdWdoIHdwX2dldF9hdHRhY2htZW50X2ltYWdlKCkgYXRcbiAgLy8gdGhlIHNhbWUgc2l6ZSwgc28gaXRzIHNyYyBhbmQgc3Jjc2V0IG1hdGNoIHRoZSBzaGFycCBvbmUgZXhhY3RseSBhbmQgdGhlIGJyb3dzZXJcbiAgLy8gcmV1c2VzIHRoZSBpbWFnZSBpdCBhbHJlYWR5IGhhcy5cbiAgLy9cbiAgLy8gVGhlIHdyYXBwZXIncyBib3ggaXMgdGhlIGRpYWdvbmFsJ3Mgb3duIGJvdW5kaW5nIGJveDogJHNsYW50IHdpZGUsIHN0YXJ0aW5nIGF0XG4gIC8vIHRoZSBkaWFnb25hbCdzIGJvdHRvbSBwb2ludCwgc28gaXRzIGJvdHRvbS1sZWZ0IGFuZCB0b3AtcmlnaHQgY29ybmVycyBzaXQgb24gdGhlXG4gIC8vIGRpYWdvbmFsJ3MgZW5kcG9pbnRzLiBQZXIgQ1NTIEltYWdlcywgYHRvIGJvdHRvbSByaWdodGAgYW5nbGVzIGEgZ3JhZGllbnRcbiAgLy8gcGVycGVuZGljdWxhciB0byB0aGUgbGluZSBqb2luaW5nIHRoZSAqb3RoZXIgdHdvKiBjb3JuZXJzIOKAlCBwcmVjaXNlbHkgdGhvc2Ug4oCUIHNvXG4gIC8vIHRoZSByYW1wIGlzIHBlcnBlbmRpY3VsYXIgdG8gdGhlIHNsYW50IGF0IGFueSBibG9jayBoZWlnaHQsIHdpdGggbm8gYW5nbGVcbiAgLy8gaGFyZGNvZGVkLiBUaGlzIGJsb2NrJ3MgaGVpZ2h0IGlzIGNvbnRlbnQtZHJpdmVuLCBhbmQgYSBmaXhlZCBgTmRlZ2Agd291bGQgZHJpZnRcbiAgLy8gfjEwMHB4IGFsb25nIGFuIDgwMHB4IHNsYW50LiBJdCBhbHNvIHB1dHMgdGhlIGRpYWdvbmFsIHRocm91Z2ggdGhlIGJveCdzIGNlbnRyZSxcbiAgLy8gaS5lLiB0aGUgZ3JhZGllbnQncyA1MCUgbWFyaywgc28gNTAlIElTIHRoZSBkaWFnb25hbDogdGhlIGNvcHkgaXMgb3BhcXVlIGRlZXAgb25cbiAgLy8gdGhlIHBhbmVsIHNpZGUgYW5kIGdvbmUgYnkgdGhlIHRpbWUgaXQgcmVhY2hlcyB0aGUgc2xhbnQuXG4gIC8vXG4gIC8vIFRoZSBib3ggbmVlZHMgbm8gd2lkdGggcGFzdCB0aGUgZGlhZ29uYWwsIGFuZCBub25lIGJlZm9yZSBpdHMgbGVmdCBlZGdlOiB0aGF0XG4gIC8vIGVkZ2UgaXMgYGNlbnRyZSAtIDI2OHB4YCwgd2hpY2ggaXMgZXhhY3RseSB3aGVyZSB0aGUgbWVkaWEgaXRzZWxmIGJlZ2lucy5cbiAgLmxwLWhlcm8tdjJfX2JnLXNvZnQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiBjYWxjKDUwJSAtICN7JGxwLWhlcm8tdjItc2xhbnQgLSAxMzJweH0pO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogJGxwLWhlcm8tdjItc2xhbnQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgLy8gVHdvIG1hc2tzIGludGVyc2VjdGVkOiB0aGUgcGVycGVuZGljdWxhciByYW1wIHRoYXQgZmFkZXMgdGhpcyBjb3B5IG91dCBhdCB0aGVcbiAgICAvLyBkaWFnb25hbCwgYW5kIHRoZSBzYW1lIGxlZnQtZWRnZSBmYWRlIHRoZSBzaGFycCBjb3B5IGdldHMg4oCUIHdpdGhvdXQgdGhlIHNlY29uZFxuICAgIC8vIG9uZSwgYG92ZXJmbG93OiBoaWRkZW5gIHdvdWxkIGNsaXAgdGhpcyBjb3B5IGRlYWQgb24gdGhlIHNhbWUgYmFyZSB2ZXJ0aWNhbFxuICAgIC8vIGxpbmUgYXQgYGNlbnRyZSAtIDI2OHB4YC5cbiAgICBtYXNrLWltYWdlOlxuICAgICAgbGluZWFyLWdyYWRpZW50KFxuICAgICAgICB0byBib3R0b20gcmlnaHQsXG4gICAgICAgICMwMDAgMCxcbiAgICAgICAgIzAwMCBjYWxjKDUwJSAtICN7JGxwLWhlcm8tdjItc29mdC1yYW1wfSksXG4gICAgICAgIHRyYW5zcGFyZW50IDUwJVxuICAgICAgKSxcbiAgICAgIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQgMCwgIzAwMCAkbHAtaGVyby12Mi1sZWZ0LWZhZGUpO1xuICAgIG1hc2stY29tcG9zaXRlOiBpbnRlcnNlY3Q7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOlxuICAgICAgbGluZWFyLWdyYWRpZW50KFxuICAgICAgICB0byBib3R0b20gcmlnaHQsXG4gICAgICAgICMwMDAgMCxcbiAgICAgICAgIzAwMCBjYWxjKDUwJSAtICN7JGxwLWhlcm8tdjItc29mdC1yYW1wfSksXG4gICAgICAgIHRyYW5zcGFyZW50IDUwJVxuICAgICAgKSxcbiAgICAgIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQgMCwgIzAwMCAkbHAtaGVyby12Mi1sZWZ0LWZhZGUpO1xuICAgIC13ZWJraXQtbWFzay1jb21wb3NpdGU6IHNvdXJjZS1pbjtcbiAgfVxuXG4gIC8vIFNpemVkIHRvIHRoZSBzaGFycCBtZWRpYSdzIGJveCwgbm90IHRoZSB3cmFwcGVyJ3MsIHNvIGJvdGggY29waWVzIHJlc29sdmUgdGhlXG4gIC8vIHNhbWUgb2JqZWN0LWZpdCBjcm9wIGFuZCB0aGUgZmFkZSBkb2Vzbid0IGdob3N0LiBUaGUgc2hhcnAgbWVkaWEgaXNcbiAgLy8gYG1pbihjYWxjKDUwJSArIDI2OHB4KSwgOTg4cHgpYCBvZiB0aGUgYmxvY2s7IGluc2lkZSBhIDQwMHB4IHdyYXBwZXIgYVxuICAvLyBwZXJjZW50YWdlIHdvdWxkIHJlc29sdmUgYWdhaW5zdCB0aGUgd3JhcHBlciBpbnN0ZWFkLCBzbyB0aGlzIHJlc3RhdGVzIGl0IGluIHZ3LlxuICAvLyBUaGF0IGRpZmZlcnMgZnJvbSA1MCUgb2YgdGhlIGJsb2NrIGJ5IHRoZSBzY3JvbGxiYXIgd2lkdGggKH44cHgpLCB3aGljaCBhIDI0cHhcbiAgLy8gYmx1ciBzd2FsbG93cy5cbiAgLmxwLWhlcm8tdjJfX2JnLXNvZnQtaW1nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IG1pbihjYWxjKDUwdncgKyAyNjhweCksIDk4OHB4KTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgIGZpbHRlcjogYmx1cigyNHB4KSBzYXR1cmF0ZSgxLjIpO1xuICB9XG5cbiAgLy8gRm9sbG93IHRoZSBlZGl0b3IncyBmb2NhbCBwb2ludCwgbGlrZSB0aGUgc2hhcnAgY29weSBkb2VzLlxuICAubHAtaGVyby12Ml9fYmctLWZvY2FsLWxlZnQgLmxwLWhlcm8tdjJfX2JnLXNvZnQtaW1nIHtcbiAgICBvYmplY3QtcG9zaXRpb246IGxlZnQgY2VudGVyO1xuICB9XG5cbiAgLmxwLWhlcm8tdjJfX2JnLS1mb2NhbC1yaWdodCAubHAtaGVyby12Ml9fYmctc29mdC1pbWcge1xuICAgIG9iamVjdC1wb3NpdGlvbjogcmlnaHQgY2VudGVyO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0gQnJpZ2h0ZW5pbmcgbGF5ZXIgdW5kZXIgdGhlIGZyb3N0ZWQgcGFuZWwgLS0tLS0tLS1cbiAgLy8gTGlmdHMgdGhlIG1lZGlhJ3MgbHVtaW5hbmNlIHdoaWxlIGxlYXZpbmcgaXRzIGNvbG91ciBhbG9uZSwgc28gdGhlIHBhbmVsIHJlYWRzXG4gIC8vIGxpZ2h0IG92ZXIgZGFyayBhcnR3b3JrIHdpdGhvdXQgYmVjb21pbmcgYSB0aW50ZWQgc2xhYi5cbiAgLy9cbiAgLy8gYG1peC1ibGVuZC1tb2RlOiBzY3JlZW5gIGFnYWluc3QgYSBuZXV0cmFsIGdyZXkuIFNjcmVlbiBpc1xuICAvLyBgb3V0ID0gMSAtICgxIC0gbWVkaWEpKDEgLSBncmV5KWAsIGkuZS4gYG1lZGlhICsgZ3JleSAtIG1lZGlhIMOXIGdyZXlgLiBUd29cbiAgLy8gcHJvcGVydGllcyBtYXR0ZXIgaGVyZTpcbiAgLy9cbiAgLy8gICAtIEl0J3MgbW9ub3RvbmljLiBUaGUgc2xvcGUgaXMgKDEgLSBncmV5KSDigJQgYWx3YXlzIHBvc2l0aXZlIOKAlCBzbyBkYXJrZXJcbiAgLy8gICAgIHBpeGVscyBzdGF5IGRhcmtlciB0aGFuIGxpZ2h0ZXIgb25lcyBhbmQgZXZlcnkgYml0IG9mIHZhcmlhdGlvbiBzdXJ2aXZlcy5cbiAgLy8gICAgIFRoYXQncyB0aGUgZGlmZmVyZW5jZSBmcm9tIGBsaWdodGVuYCwgd2hpY2ggZmxhdHRlbmVkIGV2ZXJ5dGhpbmcgYmVsb3cgdGhlXG4gIC8vICAgICBmbG9vciB0byBvbmUgZmxhdCB2YWx1ZS5cbiAgLy8gICAtIEJsYWNrIG1hcHMgdG8gdGhlIGdyZXkgYW5kIHdoaXRlIG1hcHMgdG8gd2hpdGUsIHNvIHRoZSBsaWZ0IGlzIGxhcmdlc3QgaW5cbiAgLy8gICAgIHRoZSBzaGFkb3dzIGFuZCB0YXBlcnMgdG8gbm90aGluZyBpbiB0aGUgaGlnaGxpZ2h0cy4gRGFyayBtZWRpYSBnZXRzXG4gIC8vICAgICByZXNjdWVkOyBhbHJlYWR5LWxpZ2h0IG1lZGlhIGlzIGJhcmVseSB0b3VjaGVkLlxuICAvL1xuICAvLyBUaGUgZ3JleSBpcyBuZXV0cmFsIG9uIHB1cnBvc2UuIEEgY29sb3VyZWQgc291cmNlIGhlcmUgd291bGQgcHVzaCBpdHMgb3duIGh1ZVxuICAvLyBpbnRvIHRoZSBzaGFkb3dzIOKAlCB0aGF0J3MgZXhhY3RseSB3aGF0IHRoZSBlYXJsaWVyIGxhdmVuZGVyIGBsaWdodGVuYCBmbG9vciBkaWQsXG4gIC8vIGFuZCB3aHkgdGhlIHBhbmVsIHJlYWQgYXMgbGF2ZW5kZXIgcmF0aGVyIHRoYW4gYXMgYSBicmlnaHRlbmVkIHBob3RvLiBFcXVhbFxuICAvLyBjaGFubmVscyBsaWZ0IGx1bWluYW5jZSBhbmQgbGV0IHRoZSBtZWRpYSBrZWVwIGl0cyBjb2xvdXIuXG4gIC8vXG4gIC8vIFRoZSB3cmFwcGVyIG11c3QgTk9UIGNyZWF0ZSBhIHN0YWNraW5nIGNvbnRleHQsIGJlY2F1c2UgYSBzdGFja2luZyBjb250ZXh0XG4gIC8vIGlzb2xhdGVzIGJsZW5kaW5nOiB0aGUgZmxvb3Igd291bGQgdGhlbiBoYXZlIG5vdGhpbmcgdG8gYmxlbmQgYWdhaW5zdCBhbmQgd291bGRcbiAgLy8gcGFpbnQgYXMgYSBmbGF0IG9wYXF1ZSB0cmFwZXpvaWQgb3ZlciB0aGUgbWVkaWEuIFNvIG5vIHotaW5kZXggaGVyZSAocG9zaXRpb25pbmdcbiAgLy8gYWxvbmUgZG9lc24ndCBjcmVhdGUgb25lKSwgd2hpY2ggbGVhdmVzIHRoZSBibG9jayByb290IOKAlCBgcG9zaXRpb246IHJlbGF0aXZlYCArXG4gIC8vIGB6LWluZGV4OiAxYCDigJQgYXMgdGhlIGlzb2xhdGlvbiBib3VuZGFyeS4gVGhhdCdzIHRoZSByaWdodCBncm91cDogaXQgY29udGFpbnNcbiAgLy8gdGhlIG1lZGlhLCBzbyB0aGUgYmxlbmQgcmVzb2x2ZXMgYWdhaW5zdCBpdCwgYW5kIGl0IHN0b3BzIHRoZSBibGVuZCBsZWFraW5nIG91dFxuICAvLyB0byB0aGUgcGFnZSBiZWhpbmQgdGhlIGJsb2NrLlxuICAvL1xuICAvLyBQYWludCBvcmRlciByaWRlcyBvbiBET00gb3JkZXIgaW5zdGVhZDogcG9zaXRpb25lZCBlbGVtZW50cyB3aXRoIGB6LWluZGV4OiBhdXRvYFxuICAvLyBwYWludCBpbiB0aGUgc2FtZSBwYXNzIGFzIGB6LWluZGV4OiAwYCBvbmVzLCBpbiB0cmVlIG9yZGVyLCBhbmQgdGhpcyBzaXRzIGFmdGVyXG4gIC8vIC5scC1oZXJvLXYyX19iZyAoei1pbmRleCAwKSBpbiB0aGUgdGVtcGxhdGUuIFRoZSBmcm9zdCB3cmFwJ3MgYHotaW5kZXg6IDJgIHB1dHNcbiAgLy8gaXQgbGF0ZXIgc3RpbGwsIHNvIGl0cyBiYWNrZHJvcC1maWx0ZXIgc2FtcGxlcyB0aGUgYWxyZWFkeS1mbG9vcmVkIG1lZGlhLlxuICAubHAtaGVyby12Ml9fbGVmdC1mcm9zdC1icmlnaHRlbi13cmFwIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogbWF4KDBweCwgY2FsYyg1MCUgLSA3MjBweCkpO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogbWluKDEwMCUsIDE0NDBweCk7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAvLyBHZW9tZXRyeSBpcyBhIHN0cmFpZ2h0IGNvcHkgb2YgLmxwLWhlcm8tdjJfX2xlZnQtZnJvc3Qg4oCUIHNhbWUgYW5jaG9yLCB3aWR0aCxcbiAgLy8gbnVkZ2UsIG92ZXJzY2FuIGFuZCBjbGlwLXBhdGgg4oCUIHNvIHRoaXMgbGF5ZXIgYW5kIHRoZSBmcm9zdCBkZXNjcmliZSB0aGUgc2FtZVxuICAvLyB0cmFwZXpvaWQuIEFueSBjaGFuZ2UgdG8gdGhlIGRpYWdvbmFsIGhhcyB0byBiZSBtYWRlIGluIGJvdGggcGxhY2VzOyB0aGV5J3JlXG4gIC8vIGtlcHQgYXMgbGl0ZXJhbHMgcmF0aGVyIHRoYW4gc2hhcmVkIHZpYSBhIG1peGluIGJlY2F1c2UgdGhlIGZyb3N0J3MgY29tbWVudFxuICAvLyBibG9jayBpcyB3aGVyZSB0aGUgZ2VvbWV0cnkgaXMgYWN0dWFsbHkgZXhwbGFpbmVkLlxuICAvL1xuICAvLyAjOGM4YzhjIGlzIHRoZSBzdHJlbmd0aCBrbm9iIOKAlCByZWFkIGl0IGFzIFwiaG93IGZhciB1cCBibGFjayBnZXRzIHB1c2hlZFwiICgwLjU1XG4gIC8vIGhlcmUpLiBMaWdodGVyIGdyZXkgbGlmdHMgaGFyZGVyIGFuZCBkZXNhdHVyYXRlcyBtb3JlOyBkYXJrZXIgZ3JleSBsaWZ0cyBsZXNzLlxuICAvLyBQdXJlIGJsYWNrIHdvdWxkIGJlIGEgbm8tb3AsIHNpbmNlIHNjcmVlbiBhZ2FpbnN0IDAgcmV0dXJucyB0aGUgbWVkaWEgdW5jaGFuZ2VkLlxuICAvLyBLZWVwIHRoZSB0aHJlZSBjaGFubmVscyBlcXVhbDogdW5lcXVhbCBvbmVzIHRpbnQgdGhlIHNoYWRvd3MuXG4gIC5scC1oZXJvLXYyX19sZWZ0LWZyb3N0LWJyaWdodGVuIHtcbiAgICAvLyBHZW9tZXRyeSBpcyBubyBsb25nZXIgYSBjb3B5IG9mIHRoZSBmcm9zdCdzLCBiZWNhdXNlIHRoaXMgbGF5ZXIgbmVlZHMgYVxuICAgIC8vIGZlYXRoZXJlZCBlZGdlIGFuZCB0aGUgZnJvc3QncyAxMDAwMHB4IGJveCBjYW4ndCBwcm9kdWNlIG9uZS4gSW5zdGVhZCB0aGUgYm94XG4gICAgLy8gaXMgdGhlIGRpYWdvbmFsJ3Mgb3duIGJvdW5kaW5nIGJveCDigJQgNDAwcHggd2lkZSAodGhlIHNsYW50KSBieSB0aGUgYmxvY2snc1xuICAgIC8vIGhlaWdodCDigJQgc28gaXRzIGJvdHRvbS1sZWZ0IGFuZCB0b3AtcmlnaHQgY29ybmVycyBhcmUgZXhhY3RseSB3aGVyZSB0aGVcbiAgICAvLyBkaWFnb25hbCBzdGFydHMgYW5kIGVuZHMuIFRoYXQncyB3aGF0IGxldHMgdGhlIG1hc2sgYmVsb3cgZmluZCB0aGUgcmlnaHRcbiAgICAvLyBhbmdsZSB3aXRob3V0IG9uZSBiZWluZyB3cml0dGVuIGRvd24uXG4gICAgLy9cbiAgICAvLyBUaGVuIHNjYWxlZCBhYm91dCB0aGUgdG9wLXJpZ2h0IGNvcm5lciwgd2hpY2ggc2l0cyAqb24qIHRoZSBkaWFnb25hbCwgc28gYVxuICAgIC8vIHVuaWZvcm0gc2NhbGUgZ3Jvd3MgdGhlIGJveCBkb3duLWFuZC1sZWZ0IHRvIGNvdmVyIHRoZSB3aG9sZSBwYW5lbCBhcmVhIHdoaWxlXG4gICAgLy8gbGVhdmluZyBpdHMgb3duIGRpYWdvbmFsIG9uIHRoZSBzYW1lIGxpbmUuIDN4IHJlYWNoZXMgcGFzdCB0aGUgMTQ0MHB4IGJhbmRcbiAgICAvLyAoNDAwIHggMyA9IDEyMDAsIGFnYWluc3QgdGhlIDg1MnB4IGZyb20gdGhlIGRpYWdvbmFsJ3MgdG9wIHRvIHRoZSBiYW5kIGVkZ2UpO1xuICAgIC8vIHRoZSB3cmFwJ3Mgb3ZlcmZsb3cgYW5kIHRoZSBibG9jaydzIG93biBjbGlwIHRha2UgY2FyZSBvZiB0aGUgZXhjZXNzLlxuICAgIC8vXG4gICAgLy8gVGhlIDJweCBvdmVyc2NhbiBpcyBrZXB0OiBpdCBjaGFuZ2VzIHRoZSBzbGFudCdzIHNsb3BlIHNsaWdodGx5ICg0MDBweCBvdmVyXG4gICAgLy8gaGVpZ2h0ICsgMnB4KSwgYW5kIHRoZSBmcm9zdCBkb2VzIHRoZSBzYW1lLCBzbyB0aGUgdHdvIHN0YXkgY29pbmNpZGVudC5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogY2FsYyg1MCUgLSAyNjhweCk7XG4gICAgdG9wOiAtMnB4O1xuICAgIHdpZHRoOiA0MDBweDtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDJweCk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIHJpZ2h0O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoJGxwLWhlcm8tdjItYnJpZ2h0ZW4tc2NhbGUpO1xuXG4gICAgLy8gUmFtcCB0aGUgbGlmdCBvdXQgYmVmb3JlIGl0IHJlYWNoZXMgdGhlIGRpYWdvbmFsLCBpbnN0ZWFkIG9mIHN0b3BwaW5nIGRlYWQgb25cbiAgICAvLyBhIGNsaXAtcGF0aC4gVGhhdCBoYXJkIGVkZ2Ugd2FzIHRoZSB2aXNpYmxlIGxpbmU6IG5vdCBhIGZvY3VzIHN0ZXAgYnV0IGFcbiAgICAvLyBsdW1pbmFuY2Ugb25lIOKAlCB0aGUgc2NyZWVuIGJsZW5kIGJlbG93IGxpZnRzIHRoaXMgc2lkZSB3ZWxsIGNsZWFyIG9mIHRoZVxuICAgIC8vIHVudG91Y2hlZCBtZWRpYSBvbiB0aGUgb3RoZXIsIGFuZCB0aGUgZXllIHJlYWRzIHRoZSBkaXNjb250aW51aXR5IGV2ZW4gd2hlblxuICAgIC8vIHRoZSB0aW50IGFuZCB0aGUgYmx1ciBhcmUgbWF0Y2hlZCB0byB0aGUgZGVzaWduLlxuICAgIC8vXG4gICAgLy8gRGlyZWN0aW9uIGNvbWVzIGZyb20gdGhlIGJveCwgbm90IGZyb20gYW4gYW5nbGUuIFBlciBDU1MgSW1hZ2VzLCBhIGNvcm5lclxuICAgIC8vIGtleXdvcmQgYW5nbGVzIHRoZSBncmFkaWVudCBsaW5lIHBlcnBlbmRpY3VsYXIgdG8gdGhlIGxpbmUgam9pbmluZyB0aGUgKm90aGVyXG4gICAgLy8gdHdvKiBjb3JuZXJzIOKAlCBmb3IgYHRvIGJvdHRvbSByaWdodGAsIHRoYXQncyB0b3AtcmlnaHQgYW5kIGJvdHRvbS1sZWZ0LCB3aGljaFxuICAgIC8vIHRoaXMgYm94IGhhcyBwbGFjZWQgb24gdGhlIGRpYWdvbmFsJ3MgZW5kcG9pbnRzLiBTbyB0aGUgYXhpcyBpcyBleGFjdGx5XG4gICAgLy8gcGVycGVuZGljdWxhciB0byB0aGUgc2xhbnQgYXQgYW55IGJsb2NrIGhlaWdodCwgd2hpY2ggbWF0dGVycyBiZWNhdXNlIHRoZVxuICAgIC8vIGhlaWdodCBoZXJlIGlzIGNvbnRlbnQtZHJpdmVuIGFuZCBhIGZpeGVkIGBOZGVnYCB3b3VsZCBkcmlmdDogb3ZlciBhbiB+ODAwcHhcbiAgICAvLyBzbGFudCwgNyBkZWdyZWVzIG9mZiBtb3ZlcyB0aGUgcmFtcCB+MTAwcHggYWxvbmcgaXRzIGxlbmd0aC5cbiAgICAvL1xuICAgIC8vIFRoYXQgYWxzbyBwdXRzIHRoZSBkaWFnb25hbCB0aHJvdWdoIHRoZSBib3gncyBjZW50cmUsIHdoaWNoIGlzIHRoZSBncmFkaWVudFxuICAgIC8vIGxpbmUncyA1MCUgbWFyayDigJQgc28gNTAlICppcyogdGhlIGRpYWdvbmFsLCBhbmQgdGhlIHJhbXAgc2ltcGx5IHJ1bnMgZnJvbVxuICAgIC8vIG9wYXF1ZSB1cCB0byBgNTAlIC0gcmVhY2hgIGFuZCBvdXQgdG8gbm90aGluZyBhdCA1MCUuIFBhc3QgNTAlIGl0J3NcbiAgICAvLyB0cmFuc3BhcmVudCwgd2hpY2ggaXMgd2hhdCBub3cgdGVybWluYXRlcyB0aGlzIGxheWVyIGF0IHRoZSBkaWFnb25hbDsgdGhlXG4gICAgLy8gY2xpcC1wYXRoIGl0IHJlcGxhY2VzIGlzIGdvbmUuXG4gICAgLy9cbiAgICAvLyBUaGUgcmVhY2ggZGl2aWRlcyBieSB0aGUgc2NhbGUsIHNpbmNlIG9uLXNjcmVlbiBweCBhcmUgbXVsdGlwbGllZCBieSBpdC5cbiAgICAvLyBSYW1wIHdpZGVuZWQgbm93IHRoYXQgdGhlIGxpZnQgaXMgYmFjayB0byBmdWxsIHN0cmVuZ3RoOiBhIHN0cm9uZ2VyIGVmZmVjdFxuICAgIC8vIG5lZWRzIGEgbG9uZ2VyIGZhZGUgdG8gc3RheSB1bnJlYWRhYmxlIGFzIGFuIGVkZ2UuIFRoZSB0ZXh0IGNvbHVtbiBpcyBjYXBwZWQgYXRcbiAgICAvLyA1MCUgb2YgdGhlIGJsb2NrLCBzbyBmdWxsIGxpZnQgc3RpbGwgY292ZXJzIGFsbCBvZiBpdC5cbiAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICB0byBib3R0b20gcmlnaHQsXG4gICAgICAjMDAwIDAsXG4gICAgICAjMDAwIGNhbGMoNTAlIC0gI3skbHAtaGVyby12Mi1icmlnaHRlbi1yYW1wfSAvICN7JGxwLWhlcm8tdjItYnJpZ2h0ZW4tc2NhbGV9KSxcbiAgICAgIHRyYW5zcGFyZW50IDUwJVxuICAgICk7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICB0byBib3R0b20gcmlnaHQsXG4gICAgICAjMDAwIDAsXG4gICAgICAjMDAwIGNhbGMoNTAlIC0gI3skbHAtaGVyby12Mi1icmlnaHRlbi1yYW1wfSAvICN7JGxwLWhlcm8tdjItYnJpZ2h0ZW4tc2NhbGV9KSxcbiAgICAgIHRyYW5zcGFyZW50IDUwJVxuICAgICk7XG5cbiAgICAvLyBTY3JlZW4gYWdhaW5zdCBncmV5IGBnYCBjb21wdXRlcyBgb3V0ID0gZyArICgxIC0gZykgeCBtZWRpYWAsIHNvIGcgc2V0cyBib3RoXG4gICAgLy8gdGhlIGZsb29yIGFuZCBob3cgbXVjaCBvZiB0aGUgbWVkaWEncyBvd24gY29udHJhc3Qgc3Vydml2ZXM6ICgxIC0gZykgb2YgaXQuXG4gICAgLy8gIzhjOGM4YyBwdXRzIHRoZSBmbG9vciBhdCA1NSUgZ3JleSwgd2hpY2ggaXMgd2hhdCBrZWVwcyB0aGUgaGVhZGxpbmUgYW5kIGJvZHlcbiAgICAvLyBsZWdpYmxlIHdoZW4gYW4gZWRpdG9yIHVwbG9hZHMgZGFyayBhcnR3b3JrLiBUaGUgZGVzaWduIGhhcyBubyBsYXllciBsaWtlIHRoaXNcbiAgICAvLyBhdCBhbGwg4oCUIGl0IGRvZXNuJ3QgbmVlZCBvbmUsIGJlY2F1c2UgdGhhdCBwaG90b2dyYXBoIGlzIGFscmVhZHkgbGlnaHQgd2hlcmVcbiAgICAvLyB0aGUgcGFuZWwgc2l0cy4gT3VycyBoYXMgdG8gc3Vydml2ZSB3aGF0ZXZlciBnZXRzIHVwbG9hZGVkLlxuICAgIC8vXG4gICAgLy8gVGhpcyB3YXMgYnJpZWZseSBkcm9wcGVkIHRvICMzMzMgdG8gc3RvcCBpdCBmbGF0dGVuaW5nIHRoZSBtZWRpYSwgYmFjayB3aGVuXG4gICAgLy8gdGhlIHBhbmVsJ3Mgb3duIGJhY2tkcm9wLWZpbHRlciBzYW1wbGVkIHRoaXMgbGF5ZXIncyBvdXRwdXQg4oCUIGEgYmx1ciBvZlxuICAgIC8vIGFscmVhZHktZmxhdHRlbmVkIGNvbnRlbnQgc2hvd3Mgbm8gYmx1ciwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IGhhcHBlbmVkLiBUaGF0XG4gICAgLy8gY29uc3RyYWludCBpcyBnb25lOiB0aGUgYmx1ciBub3cgbGl2ZXMgaW4gLmxwLWhlcm8tdjJfX2JnLXNvZnQsIGEgY29weSBvZiB0aGVcbiAgICAvLyBwaG90byBibHVycmVkICpiZWZvcmUqIHRoaXMgbGlmdCBpcyBhcHBsaWVkLiBTY3JlZW4gaXMgYSBsaW5lYXIgcGVyLXBpeGVsIG1hcCxcbiAgICAvLyBzbyBpdCByZXNjYWxlcyB0b25lIHdpdGhvdXQgdG91Y2hpbmcgc3BhdGlhbCBkZXRhaWwg4oCUIHRoZSBzb2Z0bmVzcyBzdXJ2aXZlcyBhdFxuICAgIC8vIGZ1bGwgc3RyZW5ndGguIFJlc3RvcmVkLCBhbmQgdGhlIHR3byBlZmZlY3RzIGFyZSBub3cgaW5kZXBlbmRlbnQuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzhjOGM4YztcbiAgICBtaXgtYmxlbmQtbW9kZTogc2NyZWVuO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0gUmlnaHQtc2lkZSBmcm9zdGVkIHBhcmFsbGVsb2dyYW0gKHdpdGggcGFyYWxsYXgpIC0tLS0tLS0tXG4gIC8vIEFuY2hvcmVkIHRvIHRoZSByaWdodCB2aWV3cG9ydCBlZGdlIGZvciBhIHN0YWJsZSBzY3JlZW4tcmVsYXRpdmUgcG9zaXRpb24g4oCUXG4gIC8vIGRlbGliZXJhdGVseSBOT1QgdG8gdGhlIDE0NDBweCBiYW5kIHRoZSBtZWRpYSByZXNwZWN0cywgc28gaXQga2VlcHMgdGhlIHNhbWVcbiAgLy8gcG9zaXRpb24gb24gc2NyZWVuIGF0IGV2ZXJ5IHdpZHRoLiBBYm92ZSAxNDQwcHggaXQgdGhlcmVmb3JlIHNpdHMgcGFzdCB0aGVcbiAgLy8gbWVkaWEncyByaWdodCBlZGdlLCBvdmVyIGZsYXQgJHByaW1hcnktNSwgcmF0aGVyIHRoYW4gb3ZlciB0aGUgYXJ0d29yay5cbiAgLmxwLWhlcm8tdjJfX3JpZ2h0LXNoYXBlcyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogNDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4gIC5scC1oZXJvLXYyX19mcm9zdCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAtMjByZW07XG4gICAgdG9wOiAtNjhweDtcbiAgICB3aWR0aDogNjMxcHg7XG4gICAgaGVpZ2h0OiA1MTVweDtcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDJweCk7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDU1LjElIDAlLCAxMDAlIDAlLCA0NSUgMTAwJSwgMCUgMTAwJSk7XG5cbiAgICBzdmcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ09OVEVOVCBMQVlFUiAobGVmdC1hbGlnbmVkIG9uIGRlc2t0b3ApXG4gIC8vID09PT09PT09PT09PT09PT09PT09PVxuICAubHAtaGVyby12Ml9fY29udGVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDM7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIG1heC13aWR0aDogMTQ0MHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XG4gIH1cblxuICAubHAtaGVyby12Ml9fdGV4dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgZ2FwOiAyOHB4O1xuXG4gICAgLy8gQ29weSBjb2x1bW4gd2lkdGgsIG1lYXN1cmVkIGFnYWluc3QgLmxwLWhlcm8tdjJfX2NvbnRlbnQncyBjb250ZW50IGJveFxuICAgIC8vIChDID0gVyAtIDQ4cHgsIFcgPSBtaW4oYmxvY2ssIDE0NDBweCkpLlxuICAgIC8vXG4gICAgLy8gVGhlIGZyb3N0IGRpYWdvbmFsIHJ1bnMgZnJvbSBgY2VudHJlICsgMTMycHhgIGF0IHRoZSB0b3Agb2YgdGhlIGJsb2NrIHRvXG4gICAgLy8gYGNlbnRyZSAtIDI2OHB4YCBhdCB0aGUgYm90dG9tIChzZWUgLmxwLWhlcm8tdjJfX2xlZnQtZnJvc3QpLCBhbmQgaXRzXG4gICAgLy8gYm90dG9tIHBvaW50IGlzIHRoZSBuYXJyb3dlc3QgdGhlIGZyb3N0ZWQgcGFuZWwgZXZlciBnZXRzLiBUaGUgc3RyaWN0bHlcbiAgICAvLyBzYWZlIGNhcCDigJQgY29weSBuZXZlciBjcm9zc2VzIHRoZSBkaWFnb25hbCBhdCBhbnkgaGVpZ2h0IOKAlCBpcyB0aGUgNTAlXG4gICAgLy8gZm9ybSwgc2luY2UgdGhlIHdyYXBwZXIgaXMgY2VudHJlZCBpbiB0aGUgc2FtZSBib3ggdGhlIGRpYWdvbmFsIG1lYXN1cmVzXG4gICAgLy8gZnJvbSBzbyB0aGUgZnJhbWVzIGNhbmNlbCBleGFjdGx5OlxuICAgIC8vICAgYWxsb3dlZCA9IGJsb2NrLzIgLSAyNjggLSAoYmxvY2sgLSBXKS8yIC0gMjQgPSBXLzIgLSAyOTIgPSBDLzIgLSAyNjhcbiAgICAvL1xuICAgIC8vIFRoZSB2YWx1ZXMgYmVsb3cgYXJlIGxvb3NlciB0aGFuIHRoYXQgc2FmZSBmb3JtLCBzbyBsb25nIGNvcHkgZG9lcyByZWFjaCBwYXN0XG4gICAgLy8gdGhlIGRpYWdvbmFsIGluIHRoZSBsb3dlciBwYXJ0IG9mIHRoZSBibG9jay4gVGhhdCBpcyBhIGRlbGliZXJhdGUsIG1lYXN1cmVkXG4gICAgLy8gdHJhZGUgcmF0aGVyIHRoYW4gYW4gb3ZlcnNpZ2h0OiBzYW1wbGluZyB0aGUgYm9keSBydW4ncyBiYWNrZ3JvdW5kIHBpeGVsIGJ5XG4gICAgLy8gcGl4ZWwgYXQgMTQ0MHB4ICh0ZXh0IGhpZGRlbiwgc28gbm8gZ2x5cGggYW50aS1hbGlhc2luZyBpbiB0aGUgbnVtYmVycykgZ2l2ZXNcbiAgICAvLyBhIG1lZGlhbiBvZiAxNi44OjEgYWdhaW5zdCAkcHJpbWFyeS0xMDAsIHdpdGggMC4yNyUgb2YgdGhlIGFyZWEgYmVsb3cgNC41OjEg4oCUXG4gICAgLy8gNDM1IHB4IGNvbmZpbmVkIHRvIGEgMTN4NjMgcGF0Y2ggYXQgdGhlIGNvbHVtbidzIGJvdHRvbS1yaWdodCBjb3JuZXIsIHdoZXJlXG4gICAgLy8gY29weSBjcm9zc2VzIG9udG8gcmF3IHBob3RvLiAubHAtaGVyby12Ml9fbGVmdC1mcm9zdC1icmlnaHRlbiBpcyB3aGF0IGtlZXBzXG4gICAgLy8gdGhhdCBjb3JuZXIgYXMgY2xvc2UgYXMgaXQgaXMsIGFuZCB0aGUgc2FmZSA1MCUgZm9ybSB3b3VsZCByZW1vdmUgaXQgZW50aXJlbHlcbiAgICAvLyBhdCB0aGUgY29zdCBvZiBtZWFzdXJlICg1MTdweCBkb3duIHRvIH40MjBweCBhdCAxNDQwKS4gS2VwdCBsb29zZSBvbiBwdXJwb3NlLlxuICAgIC8vIEdvIGJhY2sgdG8gNTAlIGlmIHRoZSBicmlnaHRlbiBsYXllciBpcyBldmVyIHJlbW92ZWQg4oCUIHRoZSB0d28gYXJlIGNvdXBsZWQuXG4gICAgLy9cbiAgICAvLyA2NiUgYmFzZSBob2xkcyB0aHJvdWdoIHRoZSB0YWJsZXQgcmFuZ2UsIHdoZXJlIG1lYXN1cmUgaXMgdGhlIHNjYXJjZXJcbiAgICAvLyByZXNvdXJjZSDigJQgYW5kIHdoZXJlIHN0cmljdCBzYWZldHkgaXMgdW5yZWFjaGFibGUgYW55d2F5OiBhdCBhbiA4MDBweCB2aWV3cG9ydFxuICAgIC8vIHRoZSBzYWZlIGZvcm0geWllbGRzIH4xMDhweCBvZiBtZWFzdXJlLCBiZWNhdXNlIHRoZSBkaWFnb25hbCdzIGJvdHRvbSBwb2ludFxuICAgIC8vIHNpdHMgY2xvc2UgdG8gdGhlIGJsb2NrJ3MgbGVmdCBlZGdlIGF0IHNtYWxsIHdpZHRocy4gRGVza3RvcCAo4omlOTkycHgsIHRoZSBzYW1lXG4gICAgLy8gdGhyZXNob2xkIHRoZSBoZWFkbGluZSBzdGVwcyBkb3duIGF0KSB0aWdodGVucyB0byA1NyU6IDUxN3B4IGF0IDE0NDAgdmVyc3VzXG4gICAgLy8gNjUxcHgsIHdoaWNoIGtlZXBzIHRoZSBsaW5lIGxlbmd0aCByZWFkYWJsZSBub3cgdGhlcmUncyByb29tIHRvIHNwYXJlLlxuICAgIC8vXG4gICAgLy8gRGVsaWJlcmF0ZWx5IG5vdCBtaW4oKS1lZCBhZ2FpbnN0IGEgZmxhdCBkZXNpZ24gd2lkdGg6IGEgZmxhdCBjYXAgb25seVxuICAgIC8vIHdpbnMgYWJvdmUgYSAxNzA0cHggd3JhcHBlciwgd2hpY2ggbWF4LXdpZHRoOiAxNDQwcHggcnVsZXMgb3V0LCBzbyBpdFxuICAgIC8vIHdvdWxkIGJlIGRlYWQgY29kZSDigJQgYW5kIGNzc25hbm8gcmV3cml0ZXMgbWluKGEsIGNhbGMoYikpIHRvIG1pbihhLCBiKSxcbiAgICAvLyBsZWFuaW5nIG9uIGltcGxpY2l0IG1hdGggaW5zaWRlIG1pbigpIGZvciBubyBiZW5lZml0LlxuICAgIG1heC13aWR0aDogY2FsYyg2NiUgLSAyNjhweCk7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gICAgICBtYXgtd2lkdGg6IGNhbGMoNTclIC0gMjY4cHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdyYWRpZW50IGhlYWRsaW5lIChzYW1lIHRyZWF0bWVudCBhcyBoZXJvLXYyKVxuICAvL1xuICAvLyBObyB3aGl0ZSBvdXRsaW5lLiBJdCB3YXMgYWRkZWQgaW4gMTIxMWNlZTcgYWxvbmdzaWRlIHRoZSBicmlnaHRlbmluZyBsYXllcixcbiAgLy8gYm90aCBjb21wZW5zYXRpbmcgZm9yIHRoZSBoZWFkbGluZSBzaXR0aW5nIG92ZXIgZGFyayBtZWRpYSDigJQgdGhlIHBhbmVsIGJlaGluZCBpdFxuICAvLyB3YXMgYSB0aGluIHdhc2ggYXQgdGhlIHRpbWUuIE5vdyB0aGF0IHRoZSB3YXNoIGlzIGJhY2sgdG8gMC43NSBhbmQgZmVhdGhlcmVkXG4gIC8vIHJhdGhlciB0aGFuIGNsaXBwZWQsIHRoZSBoZWFkbGluZSBzaXRzIG9uIGEgbGlnaHQgZ3JvdW5kIG9uIGl0cyBvd24gbWVyaXRzLCBhbmRcbiAgLy8gdGhlIG91dGxpbmUgd2FzIGRvaW5nIG5vdGhpbmcgYnV0IHNvZnRlbmluZyB0aGUgZ2x5cGggZWRnZXMuIFJlbW92aW5nIGl0IGFsc29cbiAgLy8gc3RvcHMgdGhlIGZpbHRlciByaW5naW5nIHRoZSBnb2xkIGhpZ2hsaWdodCBiYXIsIHdoaWNoIGlzIGEgY2hpbGQgcHNldWRvLWVsZW1lbnRcbiAgLy8gYW5kIHdhcyBjYXRjaGluZyB0aGUgc2FtZSB3aGl0ZSBmcmluZ2UuXG4gIC5scC1oZXJvLXYyX19oZWFkbGluZSB7XG4gICAgZm9udC1mYW1pbHk6ICRhdmVuaXItYm9sZDtcbiAgICBmb250LXNpemU6IDcycHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE2OGRlZywgJHByaW1hcnktMTAwIDQyLjUlLCAkcHJpbWFyeS01MCAxNjglKTtcbiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIG1hcmdpbjogMDtcblxuICAgIC8vIFJvb20gZm9yIGRlc2NlbmRlcnMgb24gdGhlIGxhc3QgbGluZS4gVGhlIGNvbG91ciBoZXJlIGlzIGEgZ3JhZGllbnRcbiAgICAvLyAqYmFja2dyb3VuZCogY2xpcHBlZCB0byB0aGUgZ2x5cGhzLCBhbmQgYSBiYWNrZ3JvdW5kIG9ubHkgcGFpbnRzIGluc2lkZSB0aGVcbiAgICAvLyBlbGVtZW50J3MgYm94IOKAlCBzbyBhbnkgaW5rIGhhbmdpbmcgYmVsb3cgdGhhdCBib3ggaGFzIG5vdGhpbmcgdG8gcGFpbnQgd2l0aFxuICAgIC8vIGFuZCBzaW1wbHkgZGlzYXBwZWFycy4gSXQgY29zdCB0aGUgYm90dG9tIGxvb3Agb2YgYSBcImdcIi5cbiAgICAvL1xuICAgIC8vIFRoZSBvdmVyaGFuZyBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZSB0aWdodCBsaW5lLWhlaWdodCwgbWVhc3VyZWQgYWdhaW5zdFxuICAgIC8vIEF2ZW5pciBCb2xkJ3Mgb3duIG1ldHJpY3MgKHVuaXRzUGVyRW0gMjA0OCwgYXNjZW5kZXIgMTk3MiwgZGVzY2VuZGVyIC01NTIpOlxuICAgIC8vXG4gICAgLy8gICBjb250ZW50IGFyZWEgICAwLjk2M2VtICsgMC4yNzBlbSAgICAgICAgICA9IDEuMjMyZW1cbiAgICAvLyAgIGxpbmUgYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMS4wNTBlbVxuICAgIC8vICAgaGFsZi1sZWFkaW5nICAgKDEuMDUwIC0gMS4yMzIpIC8gMiAgICAgICAgPSAtMC4wOTFlbVxuICAgIC8vICAgbGluZSBib3ggYm90dG9tLCBmcm9tIHRoZSBiYXNlbGluZSAgICAgICAgPSAgMC4xNzllbVxuICAgIC8vICAgXCJnXCIgLyBcInlcIiBpbmssIGZyb20gdGhlIGJhc2VsaW5lICAgICAgICAgID0gIDAuMjQwZW1cbiAgICAvLyAgIG92ZXJoYW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIDAuMDYxZW1cbiAgICAvL1xuICAgIC8vIDAuMWVtIGNvdmVycyB0aGF0IHdpdGggaGVhZHJvb20uIEluIGVtLCBub3QgcHgsIHNvIGl0IHRyYWNrcyB0aGUgNzIvNTYvMzZweFxuICAgIC8vIHNpemVzIHNldCBmdXJ0aGVyIGRvd24gd2l0aG91dCB0aHJlZSBzZXBhcmF0ZSBvdmVycmlkZXMuIFJhaXNpbmcgbGluZS1oZWlnaHRcbiAgICAvLyBwYXN0IDEuMjMyZW0gd291bGQgYWxzbyBmaXggaXQsIGJ1dCB0aGF0IGxvb3NlbnMgZXZlcnkgbGluZSBvZiBhIG11bHRpLWxpbmVcbiAgICAvLyBoZWFkbGluZSBieSB+MTclIGFuZCB0aGUgdGlnaHQgc2V0dGluZyBpcyB0aGUgZGVzaWduLlxuICAgIC8vXG4gICAgLy8gT25seSB0aGUgYm90dG9tIG5lZWRzIGl0OiB0aGUgdGFsbGVzdCBpbmsgaW4gdGhlIGZhY2UgaXMgfjAuNzI3ZW0gYWJvdmUgdGhlXG4gICAgLy8gYmFzZWxpbmUgYWdhaW5zdCBhIGxpbmUgYm94IHRvcCBvZiAwLjg3MmVtLCBzbyBhc2NlbmRlcnMgaGF2ZSBjbGVhcmFuY2UuXG4gICAgcGFkZGluZy1ib3R0b206IDAuMWVtO1xuXG4gIH1cblxuICAvLyBHb2xkIGhpZ2hsaWdodCBiYXIg4oCUIHNsaWRlcyBpbiBmcm9tIHRvcCBvbiBob3Zlci5cbiAgLmxwLWhlcm8tdjJfX2hpZ2hsaWdodCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE2OGRlZywgJHByaW1hcnktMTAwIDQyLjUlLCAkcHJpbWFyeS01MCAxNjglKTtcbiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDAuMTNlbTtcbiAgICAgIGxlZnQ6IC0wLjA1ZW07XG4gICAgICByaWdodDogLTAuMDVlbTtcbiAgICAgIGhlaWdodDogMC45NGVtO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1nb2xkO1xuICAgICAgei1pbmRleDogLTE7XG4gICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMCAwLCAxMDAlIDAsIDEwMCUgMCwgMCAwKTtcbiAgICAgIHRyYW5zaXRpb246IGNsaXAtcGF0aCAwLjM1cyBlYXNlO1xuICAgIH1cblxuICAgICY6aG92ZXI6OmJlZm9yZSB7XG4gICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMCAwLCAxMDAlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcbiAgICB9XG4gIH1cblxuICAvLyBCb2R5IHRleHQg4oCUIG5vIHdoaXRlIG91dGxpbmUuIEEgY2VudHJlZCBibHVyIGhhemVkIGF0IHRoaXMgc2l6ZSBhbmQgYSBoYXJkXG4gIC8vIG9mZnNldCByaW5nIHJlYWQgYXMgdG9vIGludGVuc2UgYXQgYW55IGFscGhhIHdvcnRoIHNlZWluZzsgYm90aCB3ZXJlIG9ubHlcbiAgLy8gZXZlciBjb21wZW5zYXRpbmcgZm9yIGNvcHkgcnVubmluZyBvdmVyIHRoZSBwaG90bywgd2hpY2ggdGhlIDUwJSBjYXAgb25cbiAgLy8gLmxwLWhlcm8tdjJfX3RleHQgbm93IHByZXZlbnRzLiBUaGUgb3V0bGluZSBzdGF5cyBvbiB0aGUgaGVhZGxpbmUgYWxvbmUuXG4gIC5scC1oZXJvLXYyX19ib2R5IHtcbiAgICBmb250LWZhbWlseTogJGF2ZW5pci1tZWQ7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgY29sb3I6ICRwcmltYXJ5LTEwMDtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBDVEEgZ3JvdXAg4oCUIHByaW1hcnkgKGdvbGQpICsgb3B0aW9uYWwgc2Vjb25kYXJ5ICh3aGl0ZSBvdXRsaW5lKVxuICAvLyBCb3RoIENUQXMgYWx3YXlzIHNoYXJlIG9uZSBsaW5lLiBUd28gYnV0dG9ucyBuZWVkIDM4NnB4ICgyIMOXIHRoZSAxODdweCBtaW4td2lkdGgsIHBsdXNcbiAgLy8gdGhlIGdhcCksIGJ1dCAubHAtaGVyby12Ml9fdGV4dCBpcyBjYXBwZWQgYXQgdGhlIGRpYWdvbmFsJ3MgYGNhbGMoNTAlIC0gMjY4cHgpYCwgd2hpY2hcbiAgLy8gb25seSByZWFjaGVzIDM4NnB4IG9uY2UgdGhlIGJsb2NrIGlzIH4xMzU2cHggd2lkZSDigJQgc28gdGhlIHBhaXIgd3JhcHBlZCBldmVyeXdoZXJlIGZyb21cbiAgLy8gNzY4cHggdG8gYWJvdXQgMTM1NXB4LlxuICAvL1xuICAvLyBgd2lkdGg6IG1heC1jb250ZW50YCBvcHRzIHRoaXMgcm93IG91dCBvZiB0aGF0IGNhcCBpbnN0ZWFkIG9mIHdpZGVuaW5nIHRoZSBjb2x1bW46IHRoZVxuICAvLyBjYXAgaXMgdGhlcmUgdG8ga2VlcCB0aGUgaGVhZGxpbmUgYW5kIGJvZHkgb2ZmIHRoZSBmcm9zdCBkaWFnb25hbCwgYW5kIGEgc2hvcnQgcm93IG9mXG4gIC8vIGJ1dHRvbnMgaXMgbm90IHRoZSBwcm9zZSBpdCB3YXMgd3JpdHRlbiBmb3IuIEJlbG93IH4xMzU2cHggdGhlIHJvdyB0aGVyZWZvcmUgcmVhY2hlc1xuICAvLyBmdXJ0aGVyIHJpZ2h0IHRoYW4gdGhlIGNvcHkgYWJvdmUgaXQsIGFuZCBhdCB0aGUgbmFycm93IGVuZCBvZiB0aGF0IHJhbmdlIGl0IGNyb3NzZXMgdGhlXG4gIC8vIGRpYWdvbmFsIOKAlCB0aGUgY29zdCBvZiBndWFyYW50ZWVpbmcgb25lIGxpbmUuIGZsZXgtc2hyaW5rOiAwIHN0b3BzIHRoZSBjb2x1bW4ncyBvd25cbiAgLy8gd2lkdGggZnJvbSBjbGF3aW5nIGl0IGJhY2suXG4gIC5scC1oZXJvLXYyX19jdGFzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgZ2FwOiAxMnB4O1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgfVxuXG4gIC5scC1oZXJvLXYyX19jdGEge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWluLXdpZHRoOiAxODdweDtcbiAgICBoZWlnaHQ6IDU1cHg7XG4gICAgcGFkZGluZzogNHB4IDI0cHg7XG4gICAgZm9udC1mYW1pbHk6ICRhdmVuaXItbWVkO1xuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBjb2xvciAwLjNzIGVhc2UsIGJvcmRlci1jb2xvciAwLjNzIGVhc2U7XG5cbiAgICAmLFxuICAgICY6bGluayxcbiAgICAmOnZpc2l0ZWQsXG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgb3V0bGluZTogMnB4IHNvbGlkICRwcmltYXJ5LTEwMDtcbiAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgfVxuICB9XG5cbiAgLy8gUHJpbWFyeSDigJQgZ29sZC95ZWxsb3cgZmlsbGVkXG4gIC5scC1oZXJvLXYyX19jdGEtLXByaW1hcnkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktZ29sZDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkc2Vjb25kYXJ5LWdvbGQ7XG4gICAgY29sb3I6ICRwcmltYXJ5LTEwMDtcblxuICAgICYsXG4gICAgJjpsaW5rLFxuICAgICY6dmlzaXRlZCxcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkcHJpbWFyeS0xMDA7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJHNlY29uZGFyeS1nb2xkLCA4JSk7XG4gICAgICBib3JkZXItY29sb3I6IGRhcmtlbigkc2Vjb25kYXJ5LWdvbGQsIDglKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZWNvbmRhcnkg4oCUIHdoaXRlIGZpbGxlZCB3aXRoIHByaW1hcnkgb3V0bGluZSAobWF0Y2hlcyBGaWdtYSBcIndoaXRlXCIgQ1RBKVxuICAubHAtaGVyby12Ml9fY3RhLS1zZWNvbmRhcnkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgYm9yZGVyOiAycHggc29saWQgJHByaW1hcnktMTAwO1xuICAgIGNvbG9yOiAkcHJpbWFyeS0xMDA7XG5cbiAgICAmLFxuICAgICY6bGluayxcbiAgICAmOnZpc2l0ZWQsXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJHByaW1hcnktMTAwO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktNTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTElORSBQQVRURVJOIChzYW1lIGFzIGhlcm8tdjIpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PVxuICAubHAtaGVyby12Ml9fbGluZXMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNjIlKTtcbiAgICB3aWR0aDogNjAwcHg7IC8vIDIwJSBuYXJyb3dlciB0aGFuIHRoZSBvcmlnaW5hbCA3NTBweFxuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB6LWluZGV4OiAyO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIG9wYWNpdHk6IDAuMjtcblxuICAgIGltZyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUkVTUE9OU0lWRSDigJQgZGVza3RvcCB0d2Vha3NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihsZykge1xuICAgIC5scC1oZXJvLXYyX19oZWFkbGluZSB7XG4gICAgICBmb250LXNpemU6IDU2cHg7XG4gICAgfVxuXG4gICAgLy8gTm8gbWF4LXdpZHRoIG92ZXJyaWRlIGhlcmUuIFRoZSBkaWFnb25hbC1kZXJpdmVkIGNhcCBvbiAubHAtaGVyby12Ml9fdGV4dFxuICAgIC8vIGlzIGFscmVhZHkgc3RyaWN0ZXIgdGhhbiB0aGUgZmxhdCA0MjBweCB0aGF0IHVzZWQgdG8gbGl2ZSBoZXJlIGZvciBhbnlcbiAgICAvLyBibG9jayBuYXJyb3dlciB0aGFuIH4xNDI0cHgsIGFuZCByZS1kZWNsYXJpbmcgYSBmbGF0IHZhbHVlIHdvdWxkIGxldCB0aGVcbiAgICAvLyBjb3B5IGNyb3NzIHRoZSBkaWFnb25hbCBhZ2Fpbi5cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNT0JJTEUgU1RBQ0sgKOKJpDc2N3B4KVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gSW1hZ2UvdmlkZW8gc3RhY2tzIG9uIHRvcCB3aXRoIGEgZ3JhZGllbnQgZmFkZSB0byBib3R0b20sIHRoZW4gaGVhZGluZyxcbiAgLy8gYm9keSwgYnV0dG9ucy4gQ29udGFpbmVyIGl0c2VsZiBpcyBjZW50ZXJlZCBob3Jpem9udGFsbHk7IHRleHQgc3RheXNcbiAgLy8gbGVmdC1hbGlnbmVkIHBlciBzcGVjLlxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMCAwIDM1cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC8vIFN0aWxsIHBpbm5lZCB0byB0aGUgdG9wIG9mIHRoZSBibG9jaywgd2hpY2ggaGVyZSBtZWFucyBvdmVyIHRoZSB0b3Agb2YgdGhlIHN0YWNrZWRcbiAgICAvLyBtZWRpYS4gR3V0dGVycyBtYXRjaCAubHAtaGVyby12Ml9fY29udGVudCdzIDIwcHg7IHRoZSBvZmZzZXQgaXMgc21hbGxlciB0aGFuIGRlc2t0b3Anc1xuICAgIC8vIGJlY2F1c2UgdGhlIHJvb3QgZHJvcHMgaXRzIHRvcCBwYWRkaW5nIGluIHRoaXMgc3RhY2sgKHBhZGRpbmc6IDAgMCAzNXB4KS5cbiAgICAubHAtaGVyby12Ml9fYnJlYWRjcnVtYnMtYmFyIHtcbiAgICAgIHRvcDogMjRweDtcbiAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICB9XG5cbiAgICAvLyBCYWNrZ3JvdW5kIGltYWdlL3ZpZGVvIG1vdmVzIGludG8gbm9ybWFsIGZsb3cgYXQgdGhlIHRvcFxuICAgIC5scC1oZXJvLXYyX19iZyB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBpbnNldDogYXV0bztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAyODBweDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLy8gU3RhY2tlZCBsYXlvdXQgaGFzIG5vIGxlZnQgZmFkZSB0byBoaWRlIGJlaGluZCwgc28gdGhlIG1lZGlhIGdvZXMgYmFja1xuICAgIC8vIHRvIHNwYW5uaW5nIHRoZSBmdWxsIGJhbmQgKHVuZG9lcyB0aGUgcmlnaHQtYW5jaG9yZWQgZGVza3RvcCBzaXppbmcpLlxuICAgIC5scC1oZXJvLXYyX19iZy1waG90byxcbiAgICAubHAtaGVyby12Ml9fYmctdmlkZW8ge1xuICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLy8gTGVmdCArIGJvdHRvbSBlZGdlIGZhZGUgZm9yIHRoZSBzdGFja2VkIG1vYmlsZSBpbWFnZS4gRGVjbGFyZWQgaW4gZnVsbFxuICAgIC8vIGhlcmUg4oCUIGRlc2t0b3AgaGFzIG5vIDo6YWZ0ZXIgdG8gaW5oZXJpdCBwb3NpdGlvbi9zaXplIGZyb20uXG4gICAgLmxwLWhlcm8tdjJfX2JnOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB6LWluZGV4OiAxO1xuICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgIHRvIGJvdHRvbSxcbiAgICAgICAgICB0cmFuc3BhcmVudCAwJSxcbiAgICAgICAgICB0cmFuc3BhcmVudCA1NSUsXG4gICAgICAgICAgJHByaW1hcnktNSAxMDAlXG4gICAgICAgICksXG4gICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICB0byByaWdodCxcbiAgICAgICAgICAkcHJpbWFyeS01IDAlLFxuICAgICAgICAgIHRyYW5zcGFyZW50IDQwJVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIENvbnN0cmFpbiB3cmFwcGVyIHRvIHRoZSBiZyBoZWlnaHQgc28gdGhlIHNoYXBlIG92ZXJsYXlzIHRoZSBpbWFnZVxuICAgIC8vIGluc3RlYWQgb2YgYmxlZWRpbmcgaW50byB0aGUgY29udGVudCBzdGFja2VkIGJlbG93LlxuICAgIC5scC1oZXJvLXYyX19yaWdodC1zaGFwZXMge1xuICAgICAgaGVpZ2h0OiAyODBweDtcbiAgICB9XG5cbiAgICAubHAtaGVyby12Ml9fZnJvc3Qge1xuICAgICAgcmlnaHQ6IC0xMHJlbTtcbiAgICAgIHRvcDogNHB4O1xuICAgICAgd2lkdGg6IDI4MHB4O1xuICAgICAgaGVpZ2h0OiAyMjBweDtcbiAgICB9XG5cbiAgICAvLyBCb3RoIHRoZSBmcm9zdCBhbmQgaXRzIGJyaWdodGVuaW5nIGxheWVyIGdvIG9mZi1jYW52YXMg4oCUIHRoZSBzdGFja2VkIGxheW91dFxuICAgIC8vIGhhcyBubyBkaWFnb25hbC4gVGhlIGJyaWdodGVuIGxheWVyIGhhcyB0byBmb2xsb3cgdGhlIGZyb3N0IG9yIGl0IHdvdWxkIHNpdFxuICAgIC8vIGFzIGEgd2FzaGVkLW91dCB0cmFwZXpvaWQgb3ZlciB0aGUgdG9wIG9mIHRoZSBzdGFja2VkIGltYWdlLlxuICAgIC5scC1oZXJvLXYyX19sZWZ0LWZyb3N0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmxwLWhlcm8tdjJfX2JnLXNvZnQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBUaGUgYnJpZ2h0ZW4gbGF5ZXIgaXMgcG9zaXRpb25lZCB3aXRoIGBsZWZ0YCBub3csIHNvIGl0IGNhbid0IHJpZGUgdGhlIHJ1bGVcbiAgICAvLyBhYm92ZSBvZmYtY2FudmFzLiBIaWRkZW4gb3V0cmlnaHQg4oCUIHRoZSBzdGFja2VkIGxheW91dCBoYXMgbm8gZGlhZ29uYWwuXG4gICAgLmxwLWhlcm8tdjJfX2xlZnQtZnJvc3QtYnJpZ2h0ZW4ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBDb250ZW50IGNlbnRlcmVkIGhvcml6b250YWxseSwgdGV4dCBsZWZ0LWFsaWduZWQgcGVyIHNwZWNcbiAgICAubHAtaGVyby12Ml9fY29udGVudCB7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgcGFkZGluZzogMzJweCAyMHB4IDA7XG4gICAgfVxuXG4gICAgLmxwLWhlcm8tdjJfX3RleHQge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgZ2FwOiAyMHB4O1xuICAgIH1cblxuICAgIC5scC1oZXJvLXYyX19oZWFkbGluZSB7XG4gICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgfVxuXG4gICAgLmxwLWhlcm8tdjJfX2JvZHkge1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgIH1cblxuICAgIC5scC1oZXJvLXYyX19jdGFzIHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgZ2FwOiAxMHB4O1xuXG4gICAgICAvLyBCYWNrIHRvIGF1dG8gc28gYGFsaWduLXNlbGY6IHN0cmV0Y2hgIGFwcGxpZXMgYW5kIHRoZSBzdGFja2VkIGJ1dHRvbnMgY2FuIGdvXG4gICAgICAvLyBmdWxsLXdpZHRoIOKAlCBgd2lkdGg6IG1heC1jb250ZW50YCBmcm9tIHRoZSBkZXNrdG9wIHJ1bGUgd291bGQgb3ZlcnJpZGUgdGhlIHN0cmV0Y2hcbiAgICAgIC8vIGFuZCBzaHJpbmsgdGhlbSB0byB0aGVpciBsYWJlbHMuXG4gICAgICB3aWR0aDogYXV0bztcbiAgICB9XG5cbiAgICAubHAtaGVyby12Ml9fY3RhIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWluLXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNT1RJT04gUFJFRkVSRU5DRVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09XG4gIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLmxwLWhlcm8tdjJfX2Zyb3N0IHtcbiAgICAgIHdpbGwtY2hhbmdlOiBhdXRvO1xuICAgIH1cblxuICAgIC5scC1oZXJvLXYyX19oaWdobGlnaHQ6OmJlZm9yZSB7XG4gICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUHJpbWFyeVxuJGJsdWU6ICAgIFx0XHQjMzIwRkZGO1xuJGRhcmstYmx1ZTogICAgXHQjNDEzMjlCO1xuJGluay1ibHVlLTEwMDpcdCMyMzAwNEI7XG4kaW5rLWJsdWUtOTA6XHQjMjgwQTVGO1xuJGluay1ibHVlLTcwOlx0IzMyMTQ3ODtcbiRpbmstYmx1ZS01MDpcdCM0MTMyOUI7XG4kaW5rLWJsdWUtMzA6XHQjNUY1RkMzO1xuJGluay1ibHVlLTEwOlx0IzgyOENFMTtcbiRpbmstYmx1ZS04Olx0I0NERDFGMztcbiRpbmstYmx1ZS01Olx0I2Y3ZjZmZjtcbiRwcmltYXJ5Olx0ICBcdCRibHVlO1xuJHByaW1hcnktZGFyazogXHQkZGFyay1ibHVlO1xuJHByaW1hcnktMTAwOiBcdCRpbmstYmx1ZS0xMDA7XG4kcHJpbWFyeS05MDogXHQkaW5rLWJsdWUtOTA7XG4kcHJpbWFyeS03MDogXHQkaW5rLWJsdWUtNzA7XG4kcHJpbWFyeS01MDogXHQkaW5rLWJsdWUtNTA7XG4kcHJpbWFyeS0zMDogXHQkaW5rLWJsdWUtMzA7XG4kcHJpbWFyeS0xMDogXHQkaW5rLWJsdWUtMTA7XG4kcHJpbWFyeS04OiBcdCRpbmstYmx1ZS04O1xuJHByaW1hcnktNTogXHQkaW5rLWJsdWUtNTtcblxuXG4vLyBTZWNvbmRhcnlcbiRyZWQ6XHRcdFx0I0U2MUUyRDtcbiRicmlnaHQtYmx1ZTpcdCMzMjBGRkY7XG4kZ29sZDpcdFx0XHQjRkZCRTAwO1xuXG4kc2Vjb25kYXJ5LXJlZDpcdFx0JHJlZDtcbiRzZWNvbmRhcnktYmx1ZTpcdCRicmlnaHQtYmx1ZTtcbiRzZWNvbmRhcnktZ29sZDpcdCRnb2xkO1xuXG4vLyBOZXV0cmFsXG4kYmxhY2s6IFx0IzAwMDAwMDtcbiRkYXJrLWdyYXk6ICM3OTcyNzk7XG4kd2FybS1ncmF5Olx0I0I0QjRCOTtcbiRzbm93LWdyYXk6ICNGMEYwRjE7XG4kd2hpdGU6IFx0I0ZGRkZGRjtcblxuXG4vLyBFeHRyYXNcbiRjb2xvcnM6IChcblx0J3ByaW1hcnknXHRcdFx0OiAkcHJpbWFyeSxcblx0J3ByaW1hcnktZGFyaydcdFx0OiAkcHJpbWFyeS1kYXJrLFxuXHQncHJpbWFyeS0xMDAnIFx0XHQ6ICRwcmltYXJ5LTEwMCxcblx0J3ByaW1hcnktOTAnIFx0XHQ6ICRwcmltYXJ5LTkwLFxuXHQncHJpbWFyeS03MCcgXHRcdDogJHByaW1hcnktNzAsXG5cdCdwcmltYXJ5LTUwJyBcdFx0OiAkcHJpbWFyeS01MCxcblx0J3ByaW1hcnktMzAnIFx0XHQ6ICRwcmltYXJ5LTMwLFxuXHQncHJpbWFyeS0xMCcgXHRcdDogJHByaW1hcnktMTAsXG5cdCdwcmltYXJ5LTgnIFx0XHQ6ICRwcmltYXJ5LTgsXG5cdCdwcmltYXJ5LTUnIFx0XHQ6ICRwcmltYXJ5LTUsXG5cdCdyZWQnXHRcdFx0XHQ6ICRzZWNvbmRhcnktcmVkLFxuXHQnYnJpZ2h0LWJsdWUnXHRcdDogJHNlY29uZGFyeS1ibHVlLFxuXHQnZ29sZCdcdFx0XHRcdDogJHNlY29uZGFyeS1nb2xkLFxuXHQnd2FybS1ncmF5J1x0XHRcdDogJHdhcm0tZ3JheSxcblx0J2RhcmstZ3JheSdcdFx0XHQ6ICRkYXJrLWdyYXksXG5cdCdibGFjaydcdFx0XHRcdDogJGJsYWNrLFxuXHQnd2hpdGUnXHRcdFx0XHQ6ICR3aGl0ZVxuKTtcblxuLy8gU2FuLXNlcmlmIEZvbnRzXG4kYXZlbmlyLXJlZzogJ0F2ZW5pciBMVCBQcm8gUmVndWxhcicsIHNhbnMtc2VyaWYgIWRlZmF1bHQ7XG4kYXZlbmlyLW1lZDogJ0F2ZW5pciBMVCBQcm8gTWVkaXVtJywgc2Fucy1zZXJpZiAhZGVmYXVsdDtcbiRhdmVuaXItZGVtaTogJ0F2ZW5pciBMVCBQcm8gRGVtaScsIHNhbnMtc2VyaWYgIWRlZmF1bHQ7XG4kYXZlbmlyLWJvbGQ6ICdBdmVuaXIgTFQgUHJvIEJvbGQnLCBzYW5zLXNlcmlmICFkZWZhdWx0O1xuXG4vLyBTZXJpZiBGb250c1xuJGdlb3JnaWE6ICdHZW9yZ2lhJywgc2VyaWYgIWRlZmF1bHQ7IiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweClcbi8vXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG5cbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwgeHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQGlmIG5vdCAkbiB7XG4gICAgQGVycm9yIFwiYnJlYWtwb2ludCBgI3skbmFtZX1gIG5vdCBmb3VuZCBpbiBgI3skYnJlYWtwb2ludHN9YFwiO1xuICB9XG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIHJlZHVjZWQgYnkgMC4wMnB4IHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZlxuLy8gYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxuLy8gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmsgYXJvdW5kIGEgY3VycmVudCByb3VuZGluZyBidWcgaW4gU2FmYXJpLlxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1heChtZCwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1heCBhbmQgJG1heCA+IDAsICRtYXggLSAuMDIsIG51bGwpO1xufVxuXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250LlxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeCh4cywgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46ICBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogIGJyZWFrcG9pbnQtbWF4KCRuZXh0LCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmV4dCwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/