.vue-map-container{position:relative}.vue-map-container .vue-map{bottom:0;left:0;position:absolute;right:0;top:0}.vue-map-hidden{display:none}.vue-street-view-pano-container{position:relative}.vue-street-view-pano-container .vue-street-view-pano{bottom:0;left:0;position:absolute;right:0;top:0}.agile{position:relative}.agile--ssr .agile__slides--cloned{display:none}.agile--ssr .agile__slides>*{overflow:hidden;width:0}.agile--ssr .agile__slides>:first-child{width:100%}.agile--rtl .agile__actions,.agile--rtl .agile__dots,.agile--rtl .agile__slides,.agile--rtl .agile__track{flex-direction:row-reverse}.agile :active,.agile :focus,.agile:active,.agile:focus{outline:none}.agile__list{display:block;overflow:hidden;position:relative;width:100%}.agile__track{display:flex;flex-direction:row;flex-wrap:nowrap}.agile__actions{display:flex;justify-content:space-between}.agile--no-nav-buttons .agile__actions{justify-content:center}.agile__slides{align-items:center;display:flex;flex-direction:row;flex-grow:1;flex-shrink:unset;flex-wrap:nowrap;justify-content:flex-start}.agile--disabled .agile__slides{display:block;width:100%}.agile__slide{display:block;flex-grow:1;flex-shrink:0}.agile__slide,.agile__slide *{-webkit-user-drag:none}.agile--fade .agile__slide{opacity:0;position:relative;z-index:0}.agile--fade .agile__slide--active{opacity:1;z-index:2}.agile--fade .agile__slide--expiring{opacity:1;transition-duration:0s;z-index:1}.agile__nav-button[disabled]{cursor:default}.agile__dots{align-items:center;display:flex;list-style:none;padding:0;white-space:nowrap}.agile__dot button{cursor:pointer;display:block;font-size:0;line-height:0}.vue__time-picker{display:inline-block;font-family:sans-serif;font-size:1em;position:relative;vertical-align:middle;width:10em}.vue__time-picker *{box-sizing:border-box}.vue__time-picker input.display-time{border:1px solid #d2d2d2;font-size:1em;height:2.2em;padding:.3em .5em;width:10em}.vue__time-picker input.has-custom-icon{padding-left:1.8em}.vue__time-picker input.display-time.invalid:not(.skip-error-style){border-color:#c03;outline-color:#c03}.vue__time-picker input.display-time.disabled,.vue__time-picker input.display-time:disabled{color:#d2d2d2}.vue__time-picker .controls{align-items:stretch;bottom:0;display:flex;flex-flow:row nowrap;justify-content:flex-end;pointer-events:none;position:absolute;right:0;top:0;z-index:3}.vue__time-picker .controls>*{align-items:center;color:#d2d2d2;cursor:pointer;display:flex;flex-flow:column nowrap;font-style:normal;justify-content:center;line-height:100%;padding:0 .35em;pointer-events:auto;transition:color .2s,opacity .2s;width:auto}.vue__time-picker .controls>:hover{color:#797979}.vue__time-picker .controls>:active,.vue__time-picker .controls>:focus{outline:0}.vue__time-picker .controls .char{-webkit-margin-before:-.15em;font-size:1.1em;line-height:100%}.vue__time-picker .custom-icon{align-items:center;bottom:0;display:flex;flex-flow:column nowrap;justify-content:center;left:0;pointer-events:none;position:absolute;top:0;width:1.8em;z-index:2}.vue__time-picker .controls img,.vue__time-picker .controls svg,.vue__time-picker .custom-icon img,.vue__time-picker .custom-icon svg{border:0;display:inline-block;height:auto;margin:0;max-width:1em;outline:0;vertical-align:middle}.vue__time-picker .time-picker-overlay{bottom:0;left:0;position:fixed;right:0;top:0;z-index:4}.vue__time-picker .dropdown,.vue__time-picker-dropdown{background:#fff;box-shadow:0 1px 6px rgba(0,0,0,.15);font-weight:400;height:10em;left:0;position:absolute;top:calc(2.2em + 2px);width:10em;z-index:5}.vue__time-picker-dropdown{position:fixed;z-index:100}.vue__time-picker .dropdown.drop-up,.vue__time-picker-dropdown.drop-up{bottom:calc(2.2em + 1px);top:auto}.vue__time-picker .dropdown .select-list,.vue__time-picker-dropdown .select-list{align-items:stretch;display:flex;flex-flow:row nowrap;height:10em;justify-content:space-between;overflow:hidden;width:10em}.vue__time-picker .dropdown .select-list:active,.vue__time-picker .dropdown .select-list:focus,.vue__time-picker-dropdown .select-list:active,.vue__time-picker-dropdown .select-list:focus{outline:0}.vue__time-picker .dropdown ul,.vue__time-picker-dropdown ul{flex:1 1 0.00001px;list-style:none;margin:0;outline:0;overflow-x:hidden;overflow-y:auto;padding:0}.vue__time-picker .dropdown ul.apms,.vue__time-picker .dropdown ul.minutes,.vue__time-picker .dropdown ul.seconds,.vue__time-picker-dropdown ul.apms,.vue__time-picker-dropdown ul.minutes,.vue__time-picker-dropdown ul.seconds{border-left:1px solid #fff}.vue__time-picker .dropdown ul li,.vue__time-picker-dropdown ul li{color:#161616;list-style:none;padding:.3em 0;text-align:center}.vue__time-picker .dropdown ul li:not(.hint):not([disabled]):focus,.vue__time-picker .dropdown ul li:not(.hint):not([disabled]):hover,.vue__time-picker-dropdown ul li:not(.hint):not([disabled]):focus,.vue__time-picker-dropdown ul li:not(.hint):not([disabled]):hover{background:rgba(0,0,0,.08);color:#161616;cursor:pointer}.vue__time-picker .dropdown ul li:not([disabled]).active,.vue__time-picker .dropdown ul li:not([disabled]).active:focus,.vue__time-picker .dropdown ul li:not([disabled]).active:hover,.vue__time-picker-dropdown ul li:not([disabled]).active,.vue__time-picker-dropdown ul li:not([disabled]).active:focus,.vue__time-picker-dropdown ul li:not([disabled]).active:hover{background:#41b883;color:#fff}.vue__time-picker .dropdown ul li[disabled],.vue__time-picker .dropdown ul li[disabled]:hover,.vue__time-picker-dropdown ul li[disabled],.vue__time-picker-dropdown ul li[disabled]:hover{background:transparent;cursor:not-allowed;opacity:.3}.vue__time-picker .dropdown .hint,.vue__time-picker-dropdown .hint{color:#a5a5a5;cursor:default;font-size:.8em}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-modal-dialog,.vjs-button>.vjs-icon-placeholder:before,.vjs-modal-dialog .vjs-modal-dialog-content{height:100%;left:0;position:absolute;top:0;width:100%}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.vjs-button>.vjs-icon-placeholder:before{text-align:center}@font-face{font-family:VideoJS;src:url(/f72fc39ed5340b2def6b.eot?#iefix) format("eot")}@font-face{font-family:VideoJS;font-style:normal;font-weight:400;src:url(data:application/font-woff;charset=utf-8;base64,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) format("woff"),url(data:application/x-font-ttf;charset=utf-8;base64,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AG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAIAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgAEcGxheQtwbGF5LWNpcmNsZQVwYXVzZQt2b2x1bWUtbXV0ZQp2b2x1bWUtbG93CnZvbHVtZS1taWQLdm9sdW1lLWhpZ2gQZnVsbHNjcmVlbi1lbnRlcg9mdWxsc2NyZWVuLWV4aXQGc3F1YXJlB3NwaW5uZXIJc3VidGl0bGVzCGNhcHRpb25zCGNoYXB0ZXJzBXNoYXJlA2NvZwZjaXJjbGUOY2lyY2xlLW91dGxpbmUTY2lyY2xlLWlubmVyLWNpcmNsZQJoZAZjYW5jZWwGcmVwbGF5CGZhY2Vib29rBWdwbHVzCGxpbmtlZGluB3R3aXR0ZXIGdHVtYmxyCXBpbnRlcmVzdBFhdWRpby1kZXNjcmlwdGlvbgVhdWRpbwluZXh0LWl0ZW0NcHJldmlvdXMtaXRlbQAAAAA=) format("truetype")}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder,.vjs-icon-play{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder:before,.vjs-icon-play:before{content:"\f101"}.vjs-icon-play-circle{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-play-circle:before{content:"\f102"}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder,.vjs-icon-pause{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before,.vjs-icon-pause:before{content:"\f103"}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder,.vjs-icon-volume-mute{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before,.vjs-icon-volume-mute:before{content:"\f104"}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder,.vjs-icon-volume-low{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before,.vjs-icon-volume-low:before{content:"\f105"}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder,.vjs-icon-volume-mid{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before,.vjs-icon-volume-mid:before{content:"\f106"}.video-js .vjs-mute-control .vjs-icon-placeholder,.vjs-icon-volume-high{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-mute-control .vjs-icon-placeholder:before,.vjs-icon-volume-high:before{content:"\f107"}.video-js .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-enter{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-enter:before{content:"\f108"}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-exit{font-family:VideoJS;font-style:normal;font-weight:400}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-exit:before{content:"\f109"}.vjs-icon-square{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-square:before{content:"\f10a"}.vjs-icon-spinner{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-spinner:before{content:"\f10b"}.video-js .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-subtitles-button .vjs-icon-placeholder,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-subtitles{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-subtitles-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-subtitles:before{content:"\f10c"}.video-js .vjs-captions-button .vjs-icon-placeholder,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-captions{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-captions-button .vjs-icon-placeholder:before,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-captions:before{content:"\f10d"}.video-js .vjs-chapters-button .vjs-icon-placeholder,.vjs-icon-chapters{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-chapters-button .vjs-icon-placeholder:before,.vjs-icon-chapters:before{content:"\f10e"}.vjs-icon-share{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-share:before{content:"\f10f"}.vjs-icon-cog{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-cog:before{content:"\f110"}.video-js .vjs-play-progress,.video-js .vjs-volume-level,.vjs-icon-circle{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-play-progress:before,.video-js .vjs-volume-level:before,.vjs-icon-circle:before{content:"\f111"}.vjs-icon-circle-outline{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-circle-outline:before{content:"\f112"}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-circle-inner-circle:before{content:"\f113"}.vjs-icon-hd{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-hd:before{content:"\f114"}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder,.vjs-icon-cancel{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before,.vjs-icon-cancel:before{content:"\f115"}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder,.vjs-icon-replay{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before,.vjs-icon-replay:before{content:"\f116"}.vjs-icon-facebook{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-facebook:before{content:"\f117"}.vjs-icon-gplus{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-gplus:before{content:"\f118"}.vjs-icon-linkedin{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-linkedin:before{content:"\f119"}.vjs-icon-twitter{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-twitter:before{content:"\f11a"}.vjs-icon-tumblr{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-tumblr:before{content:"\f11b"}.vjs-icon-pinterest{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-pinterest:before{content:"\f11c"}.video-js .vjs-descriptions-button .vjs-icon-placeholder,.vjs-icon-audio-description{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-descriptions-button .vjs-icon-placeholder:before,.vjs-icon-audio-description:before{content:"\f11d"}.video-js .vjs-audio-button .vjs-icon-placeholder,.vjs-icon-audio{font-family:VideoJS;font-style:normal;font-weight:400}.video-js .vjs-audio-button .vjs-icon-placeholder:before,.vjs-icon-audio:before{content:"\f11e"}.vjs-icon-next-item{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-next-item:before{content:"\f11f"}.vjs-icon-previous-item{font-family:VideoJS;font-style:normal;font-weight:400}.vjs-icon-previous-item:before{content:"\f120"}.video-js{background-color:#000;box-sizing:border-box;color:#fff;display:block;font-family:Arial,Helvetica,sans-serif;font-size:10px;font-style:normal;font-weight:400;line-height:1;padding:0;position:relative;vertical-align:top;word-break:normal}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{height:100%!important;width:100%!important}.video-js[tabindex="-1"]{outline:none}.video-js *,.video-js :after,.video-js :before{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin:0}.video-js.vjs-16-9,.video-js.vjs-4-3,.video-js.vjs-fluid{height:0;max-width:100%;width:100%}.video-js.vjs-16-9{padding-top:56.25%}.video-js.vjs-4-3{padding-top:75%}.video-js .vjs-tech,.video-js.vjs-fill{height:100%;width:100%}.video-js .vjs-tech{left:0;position:absolute;top:0}body.vjs-full-window{height:100%;margin:0;overflow-y:auto;padding:0}.vjs-full-window .video-js.vjs-fullscreen{bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;z-index:1000}.video-js.vjs-fullscreen{height:100%!important;padding-top:0!important;width:100%!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-hidden{display:none!important}.vjs-disabled{cursor:default;opacity:.5}.video-js .vjs-offscreen{height:1px;left:-9999px;position:absolute;top:0;width:1px}.vjs-lock-showing{display:block!important;opacity:1;visibility:visible}.vjs-no-js{background-color:#000;color:#fff;font-family:Arial,Helvetica,sans-serif;font-size:18px;height:150px;margin:0 auto;padding:20px;text-align:center;width:300px}.vjs-no-js a,.vjs-no-js a:visited{color:#66a8cc}.video-js .vjs-big-play-button{background-color:#2b333f;background-color:rgba(43,51,63,.7);border:.06666em solid #fff;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;cursor:pointer;display:block;font-size:3em;height:1.5em;left:10px;line-height:1.5em;opacity:1;padding:0;position:absolute;top:10px;-webkit-transition:all .4s;-moz-transition:all .4s;-ms-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:3em}.vjs-big-play-centered .vjs-big-play-button{left:50%;margin-left:-1.5em;margin-top:-.75em;top:50%}.video-js .vjs-big-play-button:focus,.video-js:hover .vjs-big-play-button{background-color:#73859f;background-color:rgba(115,133,159,.5);border-color:#fff;-webkit-transition:all 0s;-moz-transition:all 0s;-ms-transition:all 0s;-o-transition:all 0s;transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-error .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button{display:none}.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause .vjs-big-play-button{display:block}.video-js button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;overflow:visible;text-decoration:none;text-transform:none;transition:none}.vjs-control .vjs-button{height:100%;width:100%}.video-js .vjs-control.vjs-close-button{cursor:pointer;height:3em;position:absolute;right:0;top:.5em;z-index:2}.video-js .vjs-modal-dialog{background:rgba(0,0,0,.8);background:-webkit-linear-gradient(-90deg,rgba(0,0,0,.8),hsla(0,0%,100%,0));background:linear-gradient(180deg,rgba(0,0,0,.8),hsla(0,0%,100%,0));box-sizing:content-box;overflow:auto}.video-js .vjs-modal-dialog>*{box-sizing:border-box}.vjs-modal-dialog .vjs-modal-dialog-content{font-size:1.2em;line-height:1.5;padding:20px 24px;z-index:1}.vjs-menu-button{cursor:pointer}.vjs-menu-button.vjs-disabled{cursor:default}.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu{display:none}.vjs-menu .vjs-menu-content{box-sizing:content-box;display:block;font-family:Arial,Helvetica,sans-serif;margin:0;overflow:auto;padding:0}.vjs-menu .vjs-menu-content>*{box-sizing:border-box}.vjs-scrubbing .vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{font-size:1.2em;line-height:1.4em;list-style:none;margin:0;padding:.2em 0;text-align:center;text-transform:lowercase}.vjs-menu li.vjs-menu-item:focus,.vjs-menu li.vjs-menu-item:hover{background-color:#73859f;background-color:rgba(115,133,159,.5)}.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2b333f}.vjs-menu li.vjs-menu-title{cursor:default;font-size:1em;font-weight:700;line-height:2em;margin:0 0 .3em;padding:0;text-align:center;text-transform:uppercase}.vjs-menu-button-popup .vjs-menu{border-top-color:rgba(43,51,63,.7);bottom:0;display:none;height:0;left:-3em;margin-bottom:1.5em;position:absolute;width:10em}.vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#2b333f;background-color:rgba(43,51,63,.7);bottom:1.5em;max-height:15em;position:absolute;width:100%}.vjs-menu-button-popup .vjs-menu.vjs-lock-showing,.vjs-workinghover .vjs-menu-button-popup:hover .vjs-menu{display:block}.video-js .vjs-menu-button-inline{overflow:hidden;-webkit-transition:all .4s;-moz-transition:all .4s;-ms-transition:all .4s;-o-transition:all .4s;transition:all .4s}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline.vjs-slider-active,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline:hover,.video-js.vjs-no-flex .vjs-menu-button-inline{width:12em}.vjs-menu-button-inline .vjs-menu{height:100%;left:4em;margin:0;opacity:0;padding:0;position:absolute;top:0;-webkit-transition:all .4s;-moz-transition:all .4s;-ms-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:auto}.vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline:hover .vjs-menu{display:block;opacity:1}.vjs-no-flex .vjs-menu-button-inline .vjs-menu{display:block;opacity:1;position:relative;width:auto}.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu{width:auto}.vjs-menu-button-inline .vjs-menu-content{height:100%;margin:0;overflow:hidden;width:auto}.video-js .vjs-control-bar{background-color:#2b333f;background-color:rgba(43,51,63,.7);bottom:0;display:none;height:3em;left:0;position:absolute;right:0;width:100%}.vjs-has-started .vjs-control-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;opacity:1;-webkit-transition:visibility .1s,opacity .1s;-moz-transition:visibility .1s,opacity .1s;-ms-transition:visibility .1s,opacity .1s;-o-transition:visibility .1s,opacity .1s;transition:visibility .1s,opacity .1s;visibility:visible}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:0;-webkit-transition:visibility 1s,opacity 1s;-moz-transition:visibility 1s,opacity 1s;-ms-transition:visibility 1s,opacity 1s;-o-transition:visibility 1s,opacity 1s;transition:visibility 1s,opacity 1s;visibility:visible}.vjs-controls-disabled .vjs-control-bar,.vjs-error .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar{display:none!important}.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible}.vjs-has-started.vjs-no-flex .vjs-control-bar{display:table}.video-js .vjs-control{-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none;height:100%;margin:0;padding:0;position:relative;text-align:center;width:4em}.vjs-button>.vjs-icon-placeholder:before{font-size:1.8em;line-height:1.67}.video-js .vjs-control:focus,.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before{text-shadow:0 0 1em #fff}.video-js .vjs-control-text{clip:rect(0 0 0 0);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-no-flex .vjs-control{display:table-cell;vertical-align:middle}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:auto;-ms-flex:auto;flex:auto;min-width:4em;touch-action:none}.video-js .vjs-progress-control.disabled{cursor:default}.vjs-live .vjs-progress-control{display:none}.vjs-no-flex .vjs-progress-control{width:auto}.video-js .vjs-progress-holder{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;height:.3em;-webkit-transition:all .2s;-moz-transition:all .2s;-ms-transition:all .2s;-o-transition:all .2s;transition:all .2s}.video-js .vjs-progress-control .vjs-progress-holder{margin:0 10px}.video-js .vjs-progress-control:hover .vjs-progress-holder{font-size:1.6666666666666667em}.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled{font-size:1em}.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div,.video-js .vjs-progress-holder .vjs-play-progress{display:block;height:100%;left:0;margin:0;padding:0;position:absolute;top:0;width:0}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{font-size:.9em;position:absolute;right:-.5em;top:-.333333333333333em;z-index:1}.video-js .vjs-load-progress{background:#bfc7d3;background:rgba(115,133,159,.5)}.video-js .vjs-load-progress div{background:#fff;background:rgba(115,133,159,.75)}.video-js .vjs-time-tooltip{background-color:#fff;background-color:hsla(0,0%,100%,.8);-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-progress-holder:focus .vjs-time-tooltip{display:none}.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip,.video-js .vjs-progress-control:hover .vjs-time-tooltip{display:block;font-size:.6em;visibility:visible}.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip{font-size:1em}.video-js .vjs-progress-control .vjs-mouse-display{background-color:#000;display:none;height:100%;position:absolute;width:1px;z-index:1}.vjs-no-flex .vjs-progress-control .vjs-mouse-display{z-index:0}.video-js .vjs-progress-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display{opacity:0;-webkit-transition:visibility 1s,opacity 1s;-moz-transition:visibility 1s,opacity 1s;-ms-transition:visibility 1s,opacity 1s;-o-transition:visibility 1s,opacity 1s;transition:visibility 1s,opacity 1s;visibility:hidden}.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display{display:none}.vjs-mouse-display .vjs-time-tooltip{background-color:#000;background-color:rgba(0,0,0,.8);color:#fff}.video-js .vjs-slider{-webkit-touch-callout:none;background-color:#73859f;background-color:rgba(115,133,159,.5);cursor:pointer;margin:0 .45em;padding:0;position:relative;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.video-js .vjs-slider.disabled{cursor:default}.video-js .vjs-slider:focus{-webkit-box-shadow:0 0 1em #fff;-moz-box-shadow:0 0 1em #fff;box-shadow:0 0 1em #fff;text-shadow:0 0 1em #fff}.video-js .vjs-mute-control{-webkit-box-flex:none;-moz-box-flex:none;cursor:pointer;-webkit-flex:none;-ms-flex:none;flex:none;padding-bottom:3em;padding-left:2em;padding-right:2em}.video-js .vjs-volume-control{cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-right:1em}.video-js .vjs-volume-control.vjs-volume-horizontal{width:5em}.video-js .vjs-volume-panel .vjs-volume-control{height:1px;margin-left:-1px;opacity:0;visibility:visible;width:1px}.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical,.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical .vjs-volume-bar,.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical .vjs-volume-level{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.video-js .vjs-volume-panel{-webkit-transition:width 1s;-moz-transition:width 1s;-ms-transition:width 1s;-o-transition:width 1s;transition:width 1s}.video-js .vjs-volume-panel .vjs-mute-control:hover~.vjs-volume-control,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active,.video-js .vjs-volume-panel .vjs-volume-control:active,.video-js .vjs-volume-panel .vjs-volume-control:hover,.video-js .vjs-volume-panel:active .vjs-volume-control,.video-js .vjs-volume-panel:focus .vjs-volume-control,.video-js .vjs-volume-panel:hover .vjs-volume-control{opacity:1;position:relative;-webkit-transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s;-moz-transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s;-ms-transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s;-o-transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s;transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s;visibility:visible}.video-js .vjs-volume-panel .vjs-mute-control:hover~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control:hover.vjs-volume-horizontal,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:hover .vjs-volume-control.vjs-volume-horizontal{height:3em;width:5em}.video-js .vjs-volume-panel .vjs-mute-control:hover~.vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-mute-control:hover~.vjs-volume-control.vjs-volume-vertical .vjs-volume-bar,.video-js .vjs-volume-panel .vjs-mute-control:hover~.vjs-volume-control.vjs-volume-vertical .vjs-volume-level,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical .vjs-volume-bar,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical .vjs-volume-level,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical .vjs-volume-bar,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical .vjs-volume-level,.video-js .vjs-volume-panel .vjs-volume-control:hover.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control:hover.vjs-volume-vertical .vjs-volume-bar,.video-js .vjs-volume-panel .vjs-volume-control:hover.vjs-volume-vertical .vjs-volume-level,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical .vjs-volume-bar,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical .vjs-volume-level,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical .vjs-volume-bar,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical .vjs-volume-level,.video-js .vjs-volume-panel:hover .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:hover .vjs-volume-control.vjs-volume-vertical .vjs-volume-bar,.video-js .vjs-volume-panel:hover .vjs-volume-control.vjs-volume-vertical .vjs-volume-level{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal:hover{-webkit-transition:width .1s;-moz-transition:width .1s;-ms-transition:width .1s;-o-transition:width .1s;transition:width .1s;width:9em}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only{width:4em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{height:8em;left:-3.5em;-webkit-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s;-moz-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s;-ms-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s;-o-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s;width:3em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{-webkit-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s;-moz-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s;-ms-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s;-o-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s}.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{height:3em;opacity:1;position:relative;-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;visibility:visible;width:5em}.video-js.vjs-no-flex .vjs-volume-control.vjs-volume-vertical,.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{bottom:3em;left:.5em;position:absolute}.video-js .vjs-volume-panel{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.video-js .vjs-volume-bar{margin:1.35em .45em}.vjs-volume-bar.vjs-slider-horizontal{height:.3em;width:5em}.vjs-volume-bar.vjs-slider-vertical{height:5em;margin:1.35em auto;width:.3em}.video-js .vjs-volume-level{background-color:#fff;bottom:0;left:0;position:absolute}.video-js .vjs-volume-level:before{font-size:.9em;position:absolute}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{left:-.3em;top:-.5em}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{right:-.5em;top:-.3em}.video-js .vjs-volume-panel.vjs-volume-panel-vertical{width:4em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.video-js .vjs-volume-vertical{background-color:#2b333f;background-color:rgba(43,51,63,.7);bottom:8em;height:8em;width:3em}.video-js .vjs-volume-horizontal .vjs-menu{left:-2em}.vjs-poster{background-color:#000;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;bottom:0;cursor:pointer;display:inline-block;height:100%;left:0;margin:0;position:absolute;right:0;top:0}.vjs-poster,.vjs-poster img{padding:0;vertical-align:middle}.vjs-poster img{display:block;margin:0 auto;max-height:100%;width:100%}.vjs-has-started .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster{display:block}.vjs-using-native-controls .vjs-poster{display:none}.video-js .vjs-live-control{-webkit-box-align:flex-start;-ms-flex-align:flex-start;-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-align-items:flex-start;align-items:flex-start;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:auto;-ms-flex:auto;flex:auto;font-size:1em;line-height:3em}.vjs-no-flex .vjs-live-control{display:table-cell;text-align:left;width:auto}.video-js .vjs-time-control{-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none;font-size:1em;line-height:3em;min-width:2em;padding-left:1em;padding-right:1em;width:auto}.video-js .vjs-current-time,.vjs-live .vjs-time-control,.vjs-no-flex .vjs-current-time{display:none}.vjs-no-flex .vjs-remaining-time.vjs-time-control.vjs-control{white-space:nowrap;width:0!important}.video-js .vjs-duration,.vjs-no-flex .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.vjs-live .vjs-time-divider{display:none}.video-js .vjs-play-control .vjs-icon-placeholder{-webkit-box-flex:none;-moz-box-flex:none;cursor:pointer;-webkit-flex:none;-ms-flex:none;flex:none}.vjs-text-track-display{bottom:3em;left:0;pointer-events:none;position:absolute;right:0;top:0}.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{background-color:#000;background-color:rgba(0,0,0,.5);font-size:1.4em;margin-bottom:.1em;text-align:center}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}video::-webkit-media-text-track-display{-moz-transform:translateY(-3em);-ms-transform:translateY(-3em);-o-transform:translateY(-3em);-webkit-transform:translateY(-3em);transform:translateY(-3em)}.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display{-moz-transform:translateY(-1.5em);-ms-transform:translateY(-1.5em);-o-transform:translateY(-1.5em);-webkit-transform:translateY(-1.5em);transform:translateY(-1.5em)}.video-js .vjs-fullscreen-control{-webkit-box-flex:none;-moz-box-flex:none;cursor:pointer;-webkit-flex:none;-ms-flex:none;flex:none}.vjs-playback-rate .vjs-playback-rate-value,.vjs-playback-rate>.vjs-menu-button{height:100%;left:0;position:absolute;top:0;width:100%}.vjs-playback-rate .vjs-playback-rate-value{font-size:1.5em;line-height:2;pointer-events:none;text-align:center}.vjs-playback-rate .vjs-menu{left:0;width:4em}.vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:1.4em;text-align:center}.vjs-error .vjs-error-display:before{color:#fff;content:"X";font-family:Arial,Helvetica,sans-serif;font-size:4em;left:0;line-height:1;margin-top:-.5em;position:absolute;text-align:center;text-shadow:.05em .05em .1em #000;top:50%;vertical-align:middle;width:100%}.vjs-loading-spinner{background-clip:padding-box;border:6px solid rgba(43,51,63,.7);border-radius:25px;box-sizing:border-box;display:none;height:50px;left:50%;margin:-25px 0 0 -25px;opacity:.85;position:absolute;text-align:left;top:50%;visibility:hidden;width:50px}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{animation:vjs-spinner-show 0s linear .3s forwards;display:block}.vjs-loading-spinner:after,.vjs-loading-spinner:before{border:inherit;border-color:#fff transparent transparent;border-radius:inherit;box-sizing:inherit;content:"";height:inherit;margin:-6px;opacity:1;position:absolute;width:inherit}.vjs-seeking .vjs-loading-spinner:after,.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before{-webkit-animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite;animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{-webkit-animation-delay:.44s;animation-delay:.44s;border-top-color:#fff}@keyframes vjs-spinner-show{to{visibility:visible}}@-webkit-keyframes vjs-spinner-show{to{visibility:visible}}@keyframes vjs-spinner-spin{to{transform:rotate(1turn)}}@-webkit-keyframes vjs-spinner-spin{to{-webkit-transform:rotate(1turn)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}@-webkit-keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder{display:inline-block;margin-bottom:-.1em;vertical-align:middle}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{content:"\f10d";font-family:VideoJS;font-size:1.5em;line-height:inherit}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder{display:inline-block;margin-bottom:-.1em;vertical-align:middle}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{content:" \f11d";font-family:VideoJS;font-size:1.5em;line-height:inherit}.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-custom-control-spacer{-webkit-box-flex:auto;-moz-box-flex:auto;display:block;-webkit-flex:auto;-ms-flex:auto;flex:auto}.video-js.vjs-layout-tiny:not(.vjs-fullscreen).vjs-no-flex .vjs-custom-control-spacer{width:auto}.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-audio-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-descriptions-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-subtitles-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-volume-panel,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-audio-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-descriptions-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-progress-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-subs-caps-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-subtitles-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-panel,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-audio-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-descriptions-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-subs-caps-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-subtitles-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-panel{display:none}.vjs-modal-dialog.vjs-text-track-settings{background-color:#2b333f;background-color:rgba(43,51,63,.75);color:#fff;height:70%}.vjs-text-track-settings .vjs-modal-dialog-content{display:table}.vjs-text-track-settings .vjs-track-settings-colors,.vjs-text-track-settings .vjs-track-settings-controls,.vjs-text-track-settings .vjs-track-settings-font{display:table-cell}.vjs-text-track-settings .vjs-track-settings-controls{text-align:right;vertical-align:bottom}@supports (display:grid){.vjs-text-track-settings .vjs-modal-dialog-content{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr auto}.vjs-text-track-settings .vjs-track-settings-colors{display:block;grid-column:1;grid-row:1}.vjs-text-track-settings .vjs-track-settings-font{grid-column:2;grid-row:1}.vjs-text-track-settings .vjs-track-settings-controls{grid-column:2;grid-row:2}}.vjs-track-setting>select{margin-right:5px}.vjs-text-track-settings fieldset{border:none;margin:5px;padding:3px}.vjs-text-track-settings fieldset span{display:inline-block}.vjs-text-track-settings legend{color:#fff;margin:0 0 5px}.vjs-text-track-settings .vjs-label{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);border:0;display:block;height:1px;margin:0 0 5px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-track-settings-controls button:active,.vjs-track-settings-controls button:focus{background-image:linear-gradient(0deg,#fff 88%,#73859f);outline-style:solid;outline-width:medium}.vjs-track-settings-controls button:hover{color:rgba(43,51,63,.75)}.vjs-track-settings-controls button{background-color:#fff;background-image:linear-gradient(-180deg,#fff 88%,#73859f);border-radius:2px;color:#2b333f;cursor:pointer}.vjs-track-settings-controls .vjs-default-button{margin-right:1em}@media print{.video-js>:not(.vjs-tech):not(.vjs-poster){visibility:hidden}}.vjs-resize-manager{border:none;height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1000}.js-focus-visible .video-js :focus:not(.focus-visible){outline:none}.video-js :focus:not(:focus-visible){outline:none}@media \0screen{.vjs-user-inactive.vjs-playing .vjs-control-bar :before{content:""}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:hidden}}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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LHdEQUNFLFVBQ0YsQ0FJQSxnRUFDRSxpQkFDRixDQUxGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcHJvcC1leGNoYW5nZS8uL25vZGVfbW9kdWxlcy92dWUyLWdvb2dsZS1tYXBzL2Rpc3QvY29tcG9uZW50cy9tYXAudnVlIiwid2VicGFjazovL3Byb3AtZXhjaGFuZ2UvLi9ub2RlX21vZHVsZXMvdnVlMi1nb29nbGUtbWFwcy9kaXN0L2NvbXBvbmVudHMvc3RyZWV0Vmlld1Bhbm9yYW1hLnZ1ZSIsIndlYnBhY2s6Ly9wcm9wLWV4Y2hhbmdlLy4vbm9kZV9tb2R1bGVzL3Z1ZS1hZ2lsZS9zcmMvQWdpbGUudnVlIiwid2VicGFjazovL3Byb3AtZXhjaGFuZ2UvLi9ub2RlX21vZHVsZXMvdnVlMi10aW1lcGlja2VyL3NyYy92dWUtdGltZXBpY2tlci52dWUiLCJ3ZWJwYWNrOi8vcHJvcC1leGNoYW5nZS8uL25vZGVfbW9kdWxlcy92aWRlby5qcy9kaXN0L3ZpZGVvLWpzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJ2dWUtbWFwLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgcmVmPVwidnVlLW1hcFwiIGNsYXNzPVwidnVlLW1hcFwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ2dWUtbWFwLWhpZGRlblwiPlxuICAgICAgPHNsb3Q+PC9zbG90PlxuICAgIDwvZGl2PlxuICAgIDxzbG90IG5hbWU9XCJ2aXNpYmxlXCI+PC9zbG90PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHguZGVmYXVsdCB8fCB4IH0pKHJlcXVpcmUoJy4vbWFwSW1wbC5qcycpKVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwiY3NzXCI+XG4udnVlLW1hcC1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi52dWUtbWFwLWNvbnRhaW5lciAudnVlLW1hcCB7XG4gIGxlZnQ6IDA7IHJpZ2h0OiAwOyB0b3A6IDA7IGJvdHRvbTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuLnZ1ZS1tYXAtaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJ2dWUtc3RyZWV0LXZpZXctcGFuby1jb250YWluZXJcIj5cbiAgICA8ZGl2IHJlZj1cInZ1ZS1zdHJlZXQtdmlldy1wYW5vXCIgY2xhc3M9XCJ2dWUtc3RyZWV0LXZpZXctcGFub1wiPjwvZGl2PlxuICAgIDxzbG90Pjwvc2xvdD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4LmRlZmF1bHQgfHwgeCB9KShyZXF1aXJlKCcuL3N0cmVldFZpZXdQYW5vcmFtYUltcGwuanMnKSlcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImNzc1wiPlxuLnZ1ZS1zdHJlZXQtdmlldy1wYW5vLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnZ1ZS1zdHJlZXQtdmlldy1wYW5vLWNvbnRhaW5lciAudnVlLXN0cmVldC12aWV3LXBhbm8ge1xuICBsZWZ0OiAwOyByaWdodDogMDsgdG9wOiAwOyBib3R0b206IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG5cdDxkaXZcblx0XHRjbGFzcz1cImFnaWxlXCJcblx0XHQ6Y2xhc3M9XCJ7J2FnaWxlLS1zc3InOiBpc1NTUiwgJ2FnaWxlLS1hdXRvLXBsYXknOiBzZXR0aW5ncy5hdXRvcGxheSwgJ2FnaWxlLS1kaXNhYmxlZCc6IHNldHRpbmdzLnVuYWdpbGUsICdhZ2lsZS0tZmFkZSc6IHNldHRpbmdzLmZhZGUgJiYgIXNldHRpbmdzLnVuYWdpbGUsICdhZ2lsZS0tcnRsJzogc2V0dGluZ3MucnRsLCAnYWdpbGUtLW5vLW5hdi1idXR0b25zJzogIXNldHRpbmdzLm5hdkJ1dHRvbnN9XCJcblx0XHRAdG91Y2hzdGFydD1cIigpID0+IHt9XCJcblx0PlxuXHRcdDxkaXZcblx0XHRcdHJlZj1cImxpc3RcIlxuXHRcdFx0Y2xhc3M9XCJhZ2lsZV9fbGlzdFwiXG5cdFx0PlxuXHRcdFx0PGRpdlxuXHRcdFx0XHRyZWY9XCJ0cmFja1wiXG5cdFx0XHRcdGNsYXNzPVwiYWdpbGVfX3RyYWNrXCJcblx0XHRcdFx0OnN0eWxlPVwie3RyYW5zZm9ybTogYHRyYW5zbGF0ZSgke3RyYW5zbGF0ZVggKyBtYXJnaW5YfXB4KWAsIHRyYW5zaXRpb246IGB0cmFuc2Zvcm0gJHtzZXR0aW5ncy50aW1pbmd9ICR7dHJhbnNpdGlvbkRlbGF5fW1zYH1cIlxuXHRcdFx0XHRAbW91c2VvdmVyPVwiaGFuZGxlTW91c2VPdmVyKCd0cmFjaycpXCJcblx0XHRcdFx0QG1vdXNlb3V0PVwiaGFuZGxlTW91c2VPdXQoJ3RyYWNrJylcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0di1zaG93PVwic2xpZGVzQ2xvbmVkXCJcblx0XHRcdFx0XHRyZWY9XCJzbGlkZXNDbG9uZWRCZWZvcmVcIlxuXHRcdFx0XHRcdGNsYXNzPVwiYWdpbGVfX3NsaWRlcyBhZ2lsZV9fc2xpZGVzLS1jbG9uZWRcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PHNsb3QgLz5cblx0XHRcdFx0PC9kaXY+XG5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdHJlZj1cInNsaWRlc1wiXG5cdFx0XHRcdFx0Y2xhc3M9XCJhZ2lsZV9fc2xpZGVzIGFnaWxlX19zbGlkZXMtLXJlZ3VsYXJcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PHNsb3QgLz5cblx0XHRcdFx0PC9kaXY+XG5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdHYtc2hvdz1cInNsaWRlc0Nsb25lZFwiXG5cdFx0XHRcdFx0cmVmPVwic2xpZGVzQ2xvbmVkQWZ0ZXJcIlxuXHRcdFx0XHRcdGNsYXNzPVwiYWdpbGVfX3NsaWRlcyBhZ2lsZV9fc2xpZGVzLS1jbG9uZWRcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PHNsb3QgLz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblxuXG5cdFx0PGRpdlxuXHRcdFx0di1pZj1cIiRzbG90cy5jYXB0aW9uXCJcblx0XHRcdGNsYXNzPVwiYWdpbGVfX2NhcHRpb25cIlxuXHRcdD5cblx0XHRcdDxzbG90IG5hbWU9XCJjYXB0aW9uXCIgLz5cblx0XHQ8L2Rpdj5cblxuXHRcdDxkaXZcblx0XHRcdHYtaWY9XCIhc2V0dGluZ3MudW5hZ2lsZSAmJiAoc2V0dGluZ3MubmF2QnV0dG9ucyB8fCBzZXR0aW5ncy5kb3RzKVwiXG5cdFx0XHRjbGFzcz1cImFnaWxlX19hY3Rpb25zXCJcblx0XHQ+XG5cdFx0XHQ8YnV0dG9uXG5cdFx0XHRcdHYtaWY9XCJzZXR0aW5ncy5uYXZCdXR0b25zICYmICFzZXR0aW5ncy51bmFnaWxlXCJcblx0XHRcdFx0cmVmPVwicHJldkJ1dHRvblwiXG5cdFx0XHRcdGNsYXNzPVwiYWdpbGVfX25hdi1idXR0b24gYWdpbGVfX25hdi1idXR0b24tLXByZXZcIlxuXHRcdFx0XHQ6ZGlzYWJsZWQ9XCIhY2FuR29Ub1ByZXZcIlxuXHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0QGNsaWNrPVwiZ29Ub1ByZXYoKSwgcmVzdGFydEF1dG9QbGF5KClcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8c2xvdCBuYW1lPVwicHJldkJ1dHRvblwiPlxuXHRcdFx0XHRcdOKGkFxuXHRcdFx0XHQ8L3Nsb3Q+XG5cdFx0XHQ8L2J1dHRvbj5cblxuXHRcdFx0PHVsXG5cdFx0XHRcdHYtaWY9XCJzZXR0aW5ncy5kb3RzICYmICFzZXR0aW5ncy51bmFnaWxlXCJcblx0XHRcdFx0cmVmPVwiZG90c1wiXG5cdFx0XHRcdGNsYXNzPVwiYWdpbGVfX2RvdHNcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bGlcblx0XHRcdFx0XHR2LWZvcj1cIm4gaW4gY291bnRTbGlkZXNcIlxuXHRcdFx0XHRcdDprZXk9XCJuXCJcblx0XHRcdFx0XHRjbGFzcz1cImFnaWxlX19kb3RcIlxuXHRcdFx0XHRcdDpjbGFzcz1cInsnYWdpbGVfX2RvdC0tY3VycmVudCc6IG4gLSAxID09PSBjdXJyZW50U2xpZGV9XCJcblx0XHRcdFx0XHRAbW91c2VvdmVyPVwiaGFuZGxlTW91c2VPdmVyKCdkb3QnKVwiXG5cdFx0XHRcdFx0QG1vdXNlb3V0PVwiaGFuZGxlTW91c2VPdXQoJ2RvdCcpXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFx0QGNsaWNrPVwiZ29UbyhuIC0gMSksIHJlc3RhcnRBdXRvUGxheSgpXCJcblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHR7eyBuIH19XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdDwvbGk+XG5cdFx0XHQ8L3VsPlxuXG5cdFx0XHQ8YnV0dG9uXG5cdFx0XHRcdHYtaWY9XCJzZXR0aW5ncy5uYXZCdXR0b25zICYmICFzZXR0aW5ncy51bmFnaWxlXCJcblx0XHRcdFx0cmVmPVwibmV4dEJ1dHRvblwiXG5cdFx0XHRcdGNsYXNzPVwiYWdpbGVfX25hdi1idXR0b24gYWdpbGVfX25hdi1idXR0b24tLW5leHRcIlxuXHRcdFx0XHQ6ZGlzYWJsZWQ9XCIhY2FuR29Ub05leHRcIlxuXHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0QGNsaWNrPVwiZ29Ub05leHQoKSwgcmVzdGFydEF1dG9QbGF5KClcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8c2xvdCBuYW1lPVwibmV4dEJ1dHRvblwiPlxuXHRcdFx0XHRcdOKGklxuXHRcdFx0XHQ8L3Nsb3Q+XG5cdFx0XHQ8L2J1dHRvbj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuXHRpbXBvcnQgaGFuZGxlcnMgZnJvbSAnLi9taXhpbnMvaGFuZGxlcnMnXG5cdGltcG9ydCBoZWxwZXJzIGZyb20gJy4vbWl4aW5zL2hlbHBlcnMnXG5cdGltcG9ydCBtZXRob2RzIGZyb20gJy4vbWl4aW5zL21ldGhvZHMnXG5cdGltcG9ydCBwcmVwYXJhdGlvbnMgZnJvbSAnLi9taXhpbnMvcHJlcGFyYXRpb25zJ1xuXHRpbXBvcnQgc2V0dGluZ3MgZnJvbSAnLi9taXhpbnMvc2V0dGluZ3MnXG5cdGltcG9ydCB0aHJvdHRsZSBmcm9tICcuL21peGlucy90aHJvdHRsZSdcblx0aW1wb3J0IHdhdGNoZXJzIGZyb20gJy4vbWl4aW5zL3dhdGNoZXJzJ1xuXG5cdGV4cG9ydCBkZWZhdWx0IHtcblx0XHRuYW1lOiAnQWdpbGUnLFxuXG5cdFx0bWl4aW5zOiBbaGFuZGxlcnMsIGhlbHBlcnMsIG1ldGhvZHMsIHByZXBhcmF0aW9ucywgc2V0dGluZ3MsIHRocm90dGxlLCB3YXRjaGVyc10sXG5cblx0XHRkYXRhICgpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGF1dG9wbGF5SW50ZXJ2YWw6IG51bGwsXG5cdFx0XHRcdGF1dG9wbGF5UmVtYWluaW5nOiBudWxsLFxuXHRcdFx0XHRhdXRvcGxheVN0YXJ0VGltZXN0YW1wOiBudWxsLFxuXHRcdFx0XHRhdXRvcGxheVRpbWVvdXQ6IG51bGwsXG5cdFx0XHRcdGN1cnJlbnRTbGlkZTogbnVsbCxcblx0XHRcdFx0ZHJhZ0Rpc3RhbmNlOiAwLFxuXHRcdFx0XHRkcmFnU3RhcnRYOiAwLFxuXHRcdFx0XHRkcmFnU3RhcnRZOiAwLFxuXHRcdFx0XHRpc0F1dG9wbGF5UGF1c2VkOiBmYWxzZSxcblx0XHRcdFx0aXNNb3VzZURvd246IGZhbHNlLFxuXHRcdFx0XHRzbGlkZXM6IFtdLFxuXHRcdFx0XHRzbGlkZXNDbG9uZWRBZnRlcjogW10sXG5cdFx0XHRcdHNsaWRlc0Nsb25lZEJlZm9yZTogW10sXG5cdFx0XHRcdGlzU1NSOiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpLFxuXHRcdFx0XHR0cmFuc2l0aW9uRGVsYXk6IDAsXG5cdFx0XHRcdHRyYW5zbGF0ZVg6IDAsXG5cdFx0XHRcdHdpZHRoV2luZG93OiAwLFxuXHRcdFx0XHR3aWR0aENvbnRhaW5lcjogMFxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRjb21wdXRlZDoge1xuXHRcdFx0YnJlYWtwb2ludHM6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuICghdGhpcy5pbml0aWFsU2V0dGluZ3MucmVzcG9uc2l2ZSkgPyBbXSA6IHRoaXMuaW5pdGlhbFNldHRpbmdzLnJlc3BvbnNpdmUubWFwKGl0ZW0gPT4gaXRlbS5icmVha3BvaW50KVxuXHRcdFx0fSxcblxuXHRcdFx0Y2FuR29Ub1ByZXY6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuICh0aGlzLnNldHRpbmdzLmluZmluaXRlIHx8IHRoaXMuY3VycmVudFNsaWRlID4gMClcblx0XHRcdH0sXG5cblx0XHRcdGNhbkdvVG9OZXh0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJldHVybiAodGhpcy5zZXR0aW5ncy5pbmZpbml0ZSB8fCB0aGlzLmN1cnJlbnRTbGlkZSA8IHRoaXMuY291bnRTbGlkZXMgLSAxKVxuXHRcdFx0fSxcblxuXHRcdFx0Y291bnRTbGlkZXM6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuICh0aGlzLmlzU1NSKSA/IHRoaXMuaHRtbENvbGxlY3Rpb25Ub0FycmF5KHRoaXMuJHNsb3RzLmRlZmF1bHQpLmxlbmd0aCA6IHRoaXMuc2xpZGVzLmxlbmd0aFxuXHRcdFx0fSxcblxuXHRcdFx0Y291bnRTbGlkZXNBbGw6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuc2xpZGVzQWxsLmxlbmd0aFxuXHRcdFx0fSxcblxuXHRcdFx0Y3VycmVudEJyZWFrcG9pbnQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0bGV0IGJyZWFrcG9pbnRzID0gdGhpcy5icmVha3BvaW50cy5tYXAoaXRlbSA9PiBpdGVtKS5yZXZlcnNlKClcblx0XHRcdFx0cmV0dXJuICh0aGlzLmluaXRpYWxTZXR0aW5ncy5tb2JpbGVGaXJzdCkgPyBicmVha3BvaW50cy5maW5kKGl0ZW0gPT4gaXRlbSA8IHRoaXMud2lkdGhXaW5kb3cpIHx8IDAgOiBicmVha3BvaW50cy5maW5kKGl0ZW0gPT4gaXRlbSA+IHRoaXMud2lkdGhXaW5kb3cpIHx8IG51bGxcblx0XHRcdH0sXG5cblx0XHRcdG1hcmdpblg6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MudW5hZ2lsZSkge1xuXHRcdFx0XHRcdHJldHVybiAwXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgbWFyZ2luWCA9ICh0aGlzLnNsaWRlc0Nsb25lZCkgPyB0aGlzLmNvdW50U2xpZGVzICogdGhpcy53aWR0aFNsaWRlIDogMFxuXG5cdFx0XHRcdC8vIENlbnRlciBtb2RlIG1hcmdpblxuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5jZW50ZXJNb2RlKSB7XG5cdFx0XHRcdFx0bWFyZ2luWCAtPSAoTWF0aC5mbG9vcih0aGlzLnNldHRpbmdzLnNsaWRlc1RvU2hvdyAvIDIpIC0gKyh0aGlzLnNldHRpbmdzLnNsaWRlc1RvU2hvdyAlIDIgPT09IDApKSAqIHRoaXMud2lkdGhTbGlkZVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuICh0aGlzLnNldHRpbmdzLnJ0bCkgPyBtYXJnaW5YIDogLTEgKiBtYXJnaW5YXG5cdFx0XHR9LFxuXG5cdFx0XHRzbGlkZXNDbG9uZWQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuICghdGhpcy5zZXR0aW5ncy51bmFnaWxlICYmICF0aGlzLnNldHRpbmdzLmZhZGUgJiYgdGhpcy5zZXR0aW5ncy5pbmZpbml0ZSlcblx0XHRcdH0sXG5cblx0XHRcdHNsaWRlc0FsbDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRyZXR1cm4gKHRoaXMuc2xpZGVzQ2xvbmVkKSA/IFsuLi50aGlzLnNsaWRlc0Nsb25lZEJlZm9yZSwgLi4udGhpcy5zbGlkZXMsIC4uLnRoaXMuc2xpZGVzQ2xvbmVkQWZ0ZXJdIDogdGhpcy5zbGlkZXNcblx0XHRcdH0sXG5cblx0XHRcdHdpZHRoU2xpZGU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuICghdGhpcy5zZXR0aW5ncy51bmFnaWxlKSA/IHRoaXMud2lkdGhDb250YWluZXIgLyB0aGlzLnNldHRpbmdzLnNsaWRlc1RvU2hvdyA6ICdhdXRvJ1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRtb3VudGVkICgpIHtcblx0XHRcdC8vIFdpbmRvd3MgcmVzaXplIGxpc3RlbmVyXG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5nZXRXaWR0aClcblxuXHRcdFx0Ly8gTW91c2UgYW5kIHRvdWNoIGV2ZW50c1xuXHRcdFx0dGhpcy4kcmVmcy50cmFjay5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5oYW5kbGVNb3VzZURvd24pXG5cdFx0XHR0aGlzLiRyZWZzLnRyYWNrLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5oYW5kbGVNb3VzZVVwKVxuXHRcdFx0dGhpcy4kcmVmcy50cmFjay5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLmhhbmRsZU1vdXNlTW92ZSlcblx0XHRcdHRoaXMuJHJlZnMudHJhY2suYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVNb3VzZURvd24pXG5cdFx0XHR0aGlzLiRyZWZzLnRyYWNrLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmhhbmRsZU1vdXNlVXApXG5cdFx0XHR0aGlzLiRyZWZzLnRyYWNrLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFuZGxlTW91c2VNb3ZlKVxuXG5cdFx0XHQvLyBJbml0XG5cdFx0XHR0aGlzLmlzU1NSID0gZmFsc2Vcblx0XHRcdHRoaXMucmVsb2FkKClcblx0XHR9LFxuXG5cdFx0YmVmb3JlRGVzdHJveSAoKSB7XG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5nZXRXaWR0aClcblxuXHRcdFx0dGhpcy4kcmVmcy50cmFjay5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5oYW5kbGVNb3VzZURvd24pXG5cdFx0XHR0aGlzLiRyZWZzLnRyYWNrLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5oYW5kbGVNb3VzZVVwKVxuXHRcdFx0dGhpcy4kcmVmcy50cmFjay5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLmhhbmRsZU1vdXNlTW92ZSlcblx0XHRcdHRoaXMuJHJlZnMudHJhY2sucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVNb3VzZURvd24pXG5cdFx0XHR0aGlzLiRyZWZzLnRyYWNrLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmhhbmRsZU1vdXNlVXApXG5cdFx0XHR0aGlzLiRyZWZzLnRyYWNrLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFuZGxlTW91c2VNb3ZlKVxuXG5cdFx0XHR0aGlzLmRpc2FibGVBdXRvUGxheSgpXG5cdFx0fSxcblxuXHRcdG1ldGhvZHM6IHtcblx0XHRcdC8vIFJldHVybiBjdXJyZW50IGJyZWFrcG9pbnRcblx0XHRcdGdldEN1cnJlbnRCcmVha3BvaW50ICgpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY3VycmVudEJyZWFrcG9pbnRcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJldHVybiBzZXR0aW5ncyBmb3IgY3VycmVudCBicmVha3BvaW50XG5cdFx0XHRnZXRDdXJyZW50U2V0dGluZ3MgKCkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5zZXR0aW5nc1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmV0dXJuIGN1cnJlbnQgc2xpZGUgaW5kZXhcblx0XHRcdGdldEN1cnJlbnRTbGlkZSAoKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmN1cnJlbnRTbGlkZVxuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmV0dXJuIGluaXRpYWwgc2V0dGluZ3Ncblx0XHRcdGdldEluaXRpYWxTZXR0aW5ncyAoKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmluaXRpYWxTZXR0aW5nc1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gR28gdG8gc2xpZGVcblx0XHRcdGdvVG8gKG4sIHRyYW5zaXRpb24gPSB0cnVlLCBhc05hdiA9IGZhbHNlKSB7XG5cdFx0XHRcdC8vIEJyZWFrIGdvVG8oKSBpZiB1bmFnaWxlIGlzIGFjdGl2ZVxuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy51bmFnaWxlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIWFzTmF2KSB7XG5cdFx0XHRcdFx0dGhpcy5zZXR0aW5ncy5hc05hdkZvci5mb3JFYWNoKGNhcm91c2VsID0+IHtcblx0XHRcdFx0XHRcdGlmIChjYXJvdXNlbCkge1xuXHRcdFx0XHRcdFx0XHRjYXJvdXNlbC5nb1RvKG4sIHRyYW5zaXRpb24sIHRydWUpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBzbGlkZU5leHRSZWFsID0gblxuXG5cdFx0XHRcdGlmICh0cmFuc2l0aW9uKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuaW5maW5pdGUgJiYgbiA8IDApIHtcblx0XHRcdFx0XHRcdHNsaWRlTmV4dFJlYWwgPSB0aGlzLmNvdW50U2xpZGVzIC0gMVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAobiA+PSB0aGlzLmNvdW50U2xpZGVzKSB7XG5cdFx0XHRcdFx0XHRzbGlkZU5leHRSZWFsID0gMFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2JlZm9yZS1jaGFuZ2UnLCB7IGN1cnJlbnRTbGlkZTogdGhpcy5jdXJyZW50U2xpZGUsIG5leHRTbGlkZTogc2xpZGVOZXh0UmVhbCB9KVxuXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50U2xpZGUgPSBzbGlkZU5leHRSZWFsXG5cblx0XHRcdFx0XHRpZiAobiAhPT0gc2xpZGVOZXh0UmVhbCkge1xuXHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZ29UbyhzbGlkZU5leHRSZWFsLCBmYWxzZSlcblx0XHRcdFx0XHRcdH0sIHRoaXMuc2V0dGluZ3Muc3BlZWQpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IHRyYW5zbGF0ZVggPSAoIXRoaXMuc2V0dGluZ3MuZmFkZSkgPyBuICogdGhpcy53aWR0aFNsaWRlICogdGhpcy5zZXR0aW5ncy5zbGlkZXNUb1Njcm9sbCA6IDBcblx0XHRcdFx0dGhpcy50cmFuc2l0aW9uRGVsYXkgPSAodHJhbnNpdGlvbikgPyB0aGlzLnNwZWVkIDogMFxuXG5cdFx0XHRcdGlmICh0aGlzLmluZmluaXRlIHx8ICh0aGlzLmN1cnJlbnRTbGlkZSArIHRoaXMuc2xpZGVzVG9TaG93IDw9IHRoaXMuY291bnRTbGlkZXMpKSB7XG5cdFx0XHRcdFx0dGhpcy50cmFuc2xhdGVYID0gKHRoaXMuc2V0dGluZ3MucnRsKSA/IHRyYW5zbGF0ZVggOiAtMSAqIHRyYW5zbGF0ZVhcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0Ly8gR28gdG8gbmV4dCBzbGlkZVxuXHRcdFx0Z29Ub05leHQgKCkge1xuXHRcdFx0XHRpZiAodGhpcy5jYW5Hb1RvTmV4dCkge1xuXHRcdFx0XHRcdHRoaXMuZ29Ubyh0aGlzLmN1cnJlbnRTbGlkZSArIDEpXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8vIEdvIHRvIHByZXZpb3VzIHNsaWRlXG5cdFx0XHRnb1RvUHJldiAoKSB7XG5cdFx0XHRcdGlmICh0aGlzLmNhbkdvVG9QcmV2KSB7XG5cdFx0XHRcdFx0dGhpcy5nb1RvKHRoaXMuY3VycmVudFNsaWRlIC0gMSlcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmVsb2FkIGNhcm91c2VsXG5cdFx0XHRyZWxvYWQgKCkge1xuXHRcdFx0XHR0aGlzLmdldFdpZHRoKClcblx0XHRcdFx0dGhpcy5wcmVwYXJlU2xpZGVzKClcblx0XHRcdFx0dGhpcy5wcmVwYXJlQ2Fyb3VzZWwoKVxuXHRcdFx0XHR0aGlzLnRvZ2dsZUZhZGUoKVxuXHRcdFx0XHR0aGlzLnRvZ2dsZUF1dG9QbGF5KClcblx0XHRcdH1cblx0XHR9XG5cdH1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG5cdC5hZ2lsZSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR9XG5cblx0LmFnaWxlLS1zc3IgLmFnaWxlX19zbGlkZXMtLWNsb25lZCB7XG5cdFx0ZGlzcGxheTogbm9uZVxuXHR9XG5cblx0LmFnaWxlLS1zc3IgLmFnaWxlX19zbGlkZXMgPiAqIHtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHdpZHRoOiAwXG5cdH1cblxuXHQuYWdpbGUtLXNzciAuYWdpbGVfX3NsaWRlcyA+ICo6Zmlyc3QtY2hpbGQge1xuXHRcdHdpZHRoOiAxMDAlXG5cdH1cblxuXHQuYWdpbGUtLXJ0bCAuYWdpbGVfX3RyYWNrLFxuXHQuYWdpbGUtLXJ0bCAuYWdpbGVfX3NsaWRlcyxcblx0LmFnaWxlLS1ydGwgLmFnaWxlX19hY3Rpb25zLFxuXHQuYWdpbGUtLXJ0bCAuYWdpbGVfX2RvdHMge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcblx0fVxuXG5cdC5hZ2lsZTpmb2N1cywgLmFnaWxlOmFjdGl2ZSwgLmFnaWxlICo6Zm9jdXMsIC5hZ2lsZSAqOmFjdGl2ZSB7XG5cdFx0b3V0bGluZTogbm9uZTtcblx0fVxuXG5cdC5hZ2lsZV9fbGlzdCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cblxuXHQuYWdpbGVfX3RyYWNrIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0ZmxleC13cmFwOiBub3dyYXA7XG5cdH1cblxuXHQuYWdpbGVfX2FjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHR9XG5cblx0LmFnaWxlLS1uby1uYXYtYnV0dG9ucyAuYWdpbGVfX2FjdGlvbnMge1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR9XG5cblx0LmFnaWxlX19zbGlkZXMge1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGZsZXgtZ3JvdzogMTtcblx0XHRmbGV4LXNocmluazogdW5zZXQ7XG5cdFx0ZmxleC13cmFwOiBub3dyYXA7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHR9XG5cblx0LmFnaWxlLS1kaXNhYmxlZCAuYWdpbGVfX3NsaWRlcyB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cblxuXHQuYWdpbGVfX3NsaWRlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmbGV4LWdyb3c6IDE7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdH1cblxuXHQuYWdpbGVfX3NsaWRlLFxuXHQuYWdpbGVfX3NsaWRlICoge1xuXHRcdC13ZWJraXQtdXNlci1kcmFnOiBub25lO1xuXHR9XG5cblx0LmFnaWxlLS1mYWRlIC5hZ2lsZV9fc2xpZGUge1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHotaW5kZXg6IDA7XG5cdH1cblxuXHQuYWdpbGUtLWZhZGUgLmFnaWxlX19zbGlkZS0tYWN0aXZlIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHotaW5kZXg6IDI7XG5cdH1cblxuXHQuYWdpbGUtLWZhZGUgLmFnaWxlX19zbGlkZS0tZXhwaXJpbmcge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7XG5cdFx0ei1pbmRleDogMTtcblx0fVxuXG5cdC5hZ2lsZV9fbmF2LWJ1dHRvbltkaXNhYmxlZF0ge1xuXHRcdGN1cnNvcjogZGVmYXVsdDtcblx0fVxuXG5cdC5hZ2lsZV9fZG90cyB7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0cGFkZGluZzogMDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0LmFnaWxlX19kb3QgYnV0dG9uIHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Zm9udC1zaXplOiAwO1xuXHRcdGxpbmUtaGVpZ2h0OiAwO1xuXHR9XG48L3N0eWxlPlxuIiwiPHNjcmlwdD5cbmNvbnN0IENPTkZJRyA9IHtcbiAgSE9VUl9UT0tFTlM6IFsnSEgnLCAnSCcsICdoaCcsICdoJywgJ2trJywgJ2snXSxcbiAgTUlOVVRFX1RPS0VOUzogWydtbScsICdtJ10sXG4gIFNFQ09ORF9UT0tFTlM6IFsnc3MnLCAncyddLFxuICBBUE1fVE9LRU5TOiBbJ0EnLCAnYSddLFxuICBCQVNJQ19UWVBFUzogWydob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCAnYXBtJ11cbn1cblxuY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICBmb3JtYXQ6ICdISDptbScsXG4gIG1pbnV0ZUludGVydmFsOiAxLFxuICBzZWNvbmRJbnRlcnZhbDogMSxcbiAgaG91clJhbmdlOiBudWxsLFxuICBtaW51dGVSYW5nZTogbnVsbCxcbiAgc2Vjb25kUmFuZ2U6IG51bGwsXG4gIGhpZGVEaXNhYmxlZEhvdXJzOiBmYWxzZSxcbiAgaGlkZURpc2FibGVkTWludXRlczogZmFsc2UsXG4gIGhpZGVEaXNhYmxlZFNlY29uZHM6IGZhbHNlLFxuICBoaWRlRGlzYWJsZWRJdGVtczogZmFsc2UsXG4gIGhpZGVEcm9wZG93bjogZmFsc2UsXG4gIGJsdXJEZWxheTogMzAwLFxuICBtYW51YWxJbnB1dFRpbWVvdXQ6IDEwMDAsXG4gIGRyb3BPZmZzZXRIZWlnaHQ6IDE2MFxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdWdWVUaW1lcGlja2VyJyxcbiAgcHJvcHM6IHtcbiAgICB2YWx1ZTogeyB0eXBlOiBbIE9iamVjdCwgU3RyaW5nIF0gfSxcbiAgICBmb3JtYXQ6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgbWludXRlSW50ZXJ2YWw6IHsgdHlwZTogWyBOdW1iZXIsIFN0cmluZyBdIH0sXG4gICAgc2Vjb25kSW50ZXJ2YWw6IHsgdHlwZTogWyBOdW1iZXIsIFN0cmluZyBdIH0sXG5cbiAgICBob3VyUmFuZ2U6IHsgdHlwZTogQXJyYXkgfSxcbiAgICBtaW51dGVSYW5nZTogeyB0eXBlOiBBcnJheSB9LFxuICAgIHNlY29uZFJhbmdlOiB7IHR5cGU6IEFycmF5IH0sXG5cbiAgICBoaWRlRGlzYWJsZWRIb3VyczogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIGhpZGVEaXNhYmxlZE1pbnV0ZXM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBoaWRlRGlzYWJsZWRTZWNvbmRzOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgaGlkZURpc2FibGVkSXRlbXM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcblxuICAgIGhpZGVDbGVhckJ1dHRvbjogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgY2xvc2VPbkNvbXBsZXRlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG5cbiAgICBpZDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICBuYW1lOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgIGlucHV0Q2xhc3M6IHsgdHlwZTogWyBTdHJpbmcsIE9iamVjdCwgQXJyYXkgXSB9LFxuICAgIHBsYWNlaG9sZGVyOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgIHRhYmluZGV4OiB7IHR5cGU6IFsgTnVtYmVyLCBTdHJpbmcgXSwgZGVmYXVsdDogMCB9LFxuICAgIGlucHV0V2lkdGg6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgYXV0b2NvbXBsZXRlOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ29mZicgfSxcblxuICAgIGhvdXJMYWJlbDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICBtaW51dGVMYWJlbDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICBzZWNvbmRMYWJlbDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICBhcG1MYWJlbDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICBhbVRleHQ6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgcG1UZXh0OiB7IHR5cGU6IFN0cmluZyB9LFxuXG4gICAgYmx1ckRlbGF5OiB7IHR5cGU6IFsgTnVtYmVyLCBTdHJpbmcgXSB9LFxuICAgIGFkdmFuY2VkS2V5Ym9hcmQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcblxuICAgIGxhenk6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBhdXRvU2Nyb2xsOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG5cbiAgICBkcm9wRGlyZWN0aW9uOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ2Rvd24nIH0sXG4gICAgZHJvcE9mZnNldEhlaWdodDogeyB0eXBlOiBbIE51bWJlciwgU3RyaW5nIF0gfSxcbiAgICBjb250YWluZXJJZDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICBhcHBlbmRUb0JvZHk6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcblxuICAgIG1hbnVhbElucHV0OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgbWFudWFsSW5wdXRUaW1lb3V0OiB7IHR5cGU6IFsgTnVtYmVyLCBTdHJpbmcgXSB9LFxuICAgIGhpZGVEcm9wZG93bjogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIGZpeGVkRHJvcGRvd25CdXR0b246IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcblxuICAgIGRlYnVnTW9kZTogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG5cbiAgZGF0YSAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpbWVWYWx1ZToge30sXG5cbiAgICAgIGhvdXJzOiBbXSxcbiAgICAgIG1pbnV0ZXM6IFtdLFxuICAgICAgc2Vjb25kczogW10sXG4gICAgICBhcG1zOiBbXSxcblxuICAgICAgaXNBY3RpdmU6IGZhbHNlLFxuICAgICAgc2hvd0Ryb3Bkb3duOiBmYWxzZSxcbiAgICAgIGlzRm9jdXNpbmc6IGZhbHNlLFxuICAgICAgZGVib3VuY2VUaW1lcjogdW5kZWZpbmVkLFxuXG4gICAgICBob3VyVHlwZTogJ0hIJyxcbiAgICAgIG1pbnV0ZVR5cGU6ICdtbScsXG4gICAgICBzZWNvbmRUeXBlOiAnJyxcbiAgICAgIGFwbVR5cGU6ICcnLFxuICAgICAgaG91cjogJycsXG4gICAgICBtaW51dGU6ICcnLFxuICAgICAgc2Vjb25kOiAnJyxcbiAgICAgIGFwbTogJycsXG4gICAgICBmdWxsVmFsdWVzOiB1bmRlZmluZWQsXG4gICAgICBiYWtEaXNwbGF5VGltZTogdW5kZWZpbmVkLFxuICAgICAgZG9DbGVhckFwbUNoZWNraW5nOiBmYWxzZSxcblxuICAgICAgc2VsZWN0aW9uVGltZXI6IHVuZGVmaW5lZCxcbiAgICAgIGtiSW5wdXRUaW1lcjogdW5kZWZpbmVkLFxuICAgICAga2JJbnB1dExvZzogJycsXG4gICAgICBiYWtDdXJyZW50UG9zOiB1bmRlZmluZWQsXG4gICAgICBmb3JjZURyb3BPblRvcDogZmFsc2VcbiAgICB9XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBvcHRzICgpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMpXG5cbiAgICAgIGlmICh0aGlzLmZvcm1hdCAmJiB0aGlzLmZvcm1hdC5sZW5ndGgpIHtcbiAgICAgICAgb3B0aW9ucy5mb3JtYXQgPSBTdHJpbmcodGhpcy5mb3JtYXQpXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzTnVtYmVyKHRoaXMubWludXRlSW50ZXJ2YWwpKSB7XG4gICAgICAgIG9wdGlvbnMubWludXRlSW50ZXJ2YWwgPSArdGhpcy5taW51dGVJbnRlcnZhbFxuICAgICAgfVxuICAgICAgLy8gbWludXRlSW50ZXJ2YWwgZmFpbHNhZmVcbiAgICAgIGlmICghb3B0aW9ucy5taW51dGVJbnRlcnZhbCB8fCBvcHRpb25zLm1pbnV0ZUludGVydmFsIDwgMSB8fCBvcHRpb25zLm1pbnV0ZUludGVydmFsID4gNjApIHtcbiAgICAgICAgaWYgKHRoaXMuZGVidWdNb2RlKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMubWludXRlSW50ZXJ2YWwgPiA2MCkge1xuICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZyhgXCJtaW51dGUtaW50ZXJ2YWxcIiBzaG91bGQgYmUgbGVzcyB0aGFuIDYwLiBDdXJyZW50IHZhbHVlIGlzICR7dGhpcy5taW51dGVJbnRlcnZhbH1gKVxuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5taW51dGVJbnRlcnZhbCA9PT0gMCB8fCBvcHRpb25zLm1pbnV0ZUludGVydmFsIDwgMSkge1xuICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZyhgXCJtaW51dGUtaW50ZXJ2YWxcIiBzaG91bGQgYmUgTk8gbGVzcyB0aGFuIDEuIEN1cnJlbnQgdmFsdWUgaXMgJHt0aGlzLm1pbnV0ZUludGVydmFsfWApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm1pbnV0ZUludGVydmFsID09PSAwKSB7XG4gICAgICAgICAgb3B0aW9ucy5taW51dGVJbnRlcnZhbCA9IDYwXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5taW51dGVJbnRlcnZhbCA9IDFcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc051bWJlcih0aGlzLnNlY29uZEludGVydmFsKSkge1xuICAgICAgICBvcHRpb25zLnNlY29uZEludGVydmFsID0gK3RoaXMuc2Vjb25kSW50ZXJ2YWxcbiAgICAgIH1cbiAgICAgIC8vIHNlY29uZEludGVydmFsIGZhaWxzYWZlXG4gICAgICBpZiAoIW9wdGlvbnMuc2Vjb25kSW50ZXJ2YWwgfHwgb3B0aW9ucy5zZWNvbmRJbnRlcnZhbCA8IDEgfHwgb3B0aW9ucy5zZWNvbmRJbnRlcnZhbCA+IDYwKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnTW9kZSkge1xuICAgICAgICAgIGlmIChvcHRpb25zLnNlY29uZEludGVydmFsID4gNjApIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWdMb2coYFwic2Vjb25kLWludGVydmFsXCIgc2hvdWxkIGJlIGxlc3MgdGhhbiA2MC4gQ3VycmVudCB2YWx1ZSBpcyAke3RoaXMuc2Vjb25kSW50ZXJ2YWx9YClcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuc2Vjb25kSW50ZXJ2YWwgPT09IDAgfHwgb3B0aW9ucy5zZWNvbmRJbnRlcnZhbCA8IDEpIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWdMb2coYFwic2Vjb25kLWludGVydmFsXCIgc2hvdWxkIGJlIE5PIGxlc3MgdGhhbiAxLiBDdXJyZW50IHZhbHVlIGlzICR7dGhpcy5zZWNvbmRJbnRlcnZhbH1gKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5zZWNvbmRJbnRlcnZhbCA9PT0gMCkge1xuICAgICAgICAgIG9wdGlvbnMuc2Vjb25kSW50ZXJ2YWwgPSA2MFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wdGlvbnMuc2Vjb25kSW50ZXJ2YWwgPSAxXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaG91clJhbmdlICYmIEFycmF5LmlzQXJyYXkodGhpcy5ob3VyUmFuZ2UpKSB7XG4gICAgICAgIG9wdGlvbnMuaG91clJhbmdlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhvdXJSYW5nZSkpXG4gICAgICAgIGlmICghdGhpcy5ob3VyUmFuZ2UubGVuZ3RoICYmIHRoaXMuZGVidWdNb2RlKSB7XG4gICAgICAgICAgdGhpcy5kZWJ1Z0xvZygnVGhlIFwiaG91ci1yYW5nZVwiIGFycmF5IGlzIGVtcHR5IChsZW5ndGggPT09IDApJylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5taW51dGVSYW5nZSAmJiBBcnJheS5pc0FycmF5KHRoaXMubWludXRlUmFuZ2UpKSB7XG4gICAgICAgIG9wdGlvbnMubWludXRlUmFuZ2UgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubWludXRlUmFuZ2UpKVxuICAgICAgICBpZiAoIXRoaXMubWludXRlUmFuZ2UubGVuZ3RoICYmIHRoaXMuZGVidWdNb2RlKSB7XG4gICAgICAgICAgdGhpcy5kZWJ1Z0xvZygnVGhlIFwibWludXRlLXJhbmdlXCIgYXJyYXkgaXMgZW1wdHkgKGxlbmd0aCA9PT0gMCknKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNlY29uZFJhbmdlICYmIEFycmF5LmlzQXJyYXkodGhpcy5zZWNvbmRSYW5nZSkpIHtcbiAgICAgICAgb3B0aW9ucy5zZWNvbmRSYW5nZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWNvbmRSYW5nZSkpXG4gICAgICAgIGlmICghdGhpcy5zZWNvbmRSYW5nZS5sZW5ndGggJiYgdGhpcy5kZWJ1Z01vZGUpIHtcbiAgICAgICAgICB0aGlzLmRlYnVnTG9nKCdUaGUgXCJzZWNvbmQtcmFuZ2VcIiBhcnJheSBpcyBlbXB0eSAobGVuZ3RoID09PSAwKScpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaGlkZURpc2FibGVkSXRlbXMpIHtcbiAgICAgICAgb3B0aW9ucy5oaWRlRGlzYWJsZWRJdGVtcyA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaGlkZURpc2FibGVkSG91cnMgfHwgdGhpcy5oaWRlRGlzYWJsZWRJdGVtcykge1xuICAgICAgICBvcHRpb25zLmhpZGVEaXNhYmxlZEhvdXJzID0gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaGlkZURpc2FibGVkTWludXRlcyB8fCB0aGlzLmhpZGVEaXNhYmxlZEl0ZW1zKSB7XG4gICAgICAgIG9wdGlvbnMuaGlkZURpc2FibGVkTWludXRlcyA9IHRydWVcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmhpZGVEaXNhYmxlZFNlY29uZHMgfHwgdGhpcy5oaWRlRGlzYWJsZWRJdGVtcykge1xuICAgICAgICBvcHRpb25zLmhpZGVEaXNhYmxlZFNlY29uZHMgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmhpZGVEcm9wZG93bikge1xuICAgICAgICBpZiAodGhpcy5tYW51YWxJbnB1dCkge1xuICAgICAgICAgIG9wdGlvbnMuaGlkZURyb3Bkb3duID0gdHJ1ZVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGVidWdNb2RlKSB7XG4gICAgICAgICAgdGhpcy5kZWJ1Z0xvZygnXCJoaWRlLWRyb3Bkb3duXCIgb25seSB3b3JrcyB3aXRoIFwibWFudWFsLWlucHV0XCIgbW9kZScpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYmx1ckRlbGF5ICYmICt0aGlzLmJsdXJEZWxheSA+IDApIHtcbiAgICAgICAgb3B0aW9ucy5ibHVyRGVsYXkgPSArdGhpcy5ibHVyRGVsYXlcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubWFudWFsSW5wdXRUaW1lb3V0ICYmICt0aGlzLm1hbnVhbElucHV0VGltZW91dCA+IDApIHtcbiAgICAgICAgb3B0aW9ucy5tYW51YWxJbnB1dFRpbWVvdXQgPSArdGhpcy5tYW51YWxJbnB1dFRpbWVvdXRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZHJvcE9mZnNldEhlaWdodCAmJiArdGhpcy5kcm9wT2Zmc2V0SGVpZ2h0ID4gMCkge1xuICAgICAgICBvcHRpb25zLmRyb3BPZmZzZXRIZWlnaHQgPSArdGhpcy5kcm9wT2Zmc2V0SGVpZ2h0XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcHRpb25zXG4gICAgfSxcblxuICAgIHVzZVN0cmluZ1ZhbHVlICgpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICB9LFxuXG4gICAgZm9ybWF0U3RyaW5nICgpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdHMuZm9ybWF0IHx8IERFRkFVTFRfT1BUSU9OUy5mb3JtYXRcbiAgICB9LFxuXG4gICAgaW5Vc2UgKCkge1xuICAgICAgY29uc3QgdHlwZXNJblVzZSA9IENPTkZJRy5CQVNJQ19UWVBFUy5maWx0ZXIodHlwZSA9PiB0aGlzLmdldFRva2VuQnlUeXBlKHR5cGUpKVxuICAgICAgLy8gU29ydCB0eXBlcyBhbmQgdG9rZW5zIGJ5IHRoZWlyIHNlcXVlbmNlIGluIHRoZSBcImZvcm1hdFwiIHN0cmluZ1xuICAgICAgdHlwZXNJblVzZS5zb3J0KChsLCByKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFN0cmluZy5pbmRleE9mKHRoaXMuZ2V0VG9rZW5CeVR5cGUobCkgfHwgbnVsbCkgLSB0aGlzLmZvcm1hdFN0cmluZy5pbmRleE9mKHRoaXMuZ2V0VG9rZW5CeVR5cGUocikgfHwgbnVsbClcbiAgICAgIH0pXG4gICAgICBjb25zdCB0b2tlbnNJblVzZSA9IHR5cGVzSW5Vc2UubWFwKHR5cGUgPT4gdGhpcy5nZXRUb2tlbkJ5VHlwZSh0eXBlKSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhvdXI6ICEhdGhpcy5ob3VyVHlwZSxcbiAgICAgICAgbWludXRlOiAhIXRoaXMubWludXRlVHlwZSxcbiAgICAgICAgc2Vjb25kOiAhIXRoaXMuc2Vjb25kVHlwZSxcbiAgICAgICAgYXBtOiAhIXRoaXMuYXBtVHlwZSxcbiAgICAgICAgdHlwZXM6IHR5cGVzSW5Vc2UgfHwgW10sXG4gICAgICAgIHRva2VuczogdG9rZW5zSW5Vc2UgfHwgW11cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZGlzcGxheVRpbWUgKCkge1xuICAgICAgbGV0IGZvcm1hdFN0cmluZyA9IFN0cmluZyh0aGlzLmZvcm1hdFN0cmluZylcbiAgICAgIGlmICh0aGlzLmhvdXIpIHtcbiAgICAgICAgZm9ybWF0U3RyaW5nID0gZm9ybWF0U3RyaW5nLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLmhvdXJUeXBlLCAnZycpLCB0aGlzLmhvdXIpXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5taW51dGUpIHtcbiAgICAgICAgZm9ybWF0U3RyaW5nID0gZm9ybWF0U3RyaW5nLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLm1pbnV0ZVR5cGUsICdnJyksIHRoaXMubWludXRlKVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2Vjb25kICYmIHRoaXMuc2Vjb25kVHlwZSkge1xuICAgICAgICBmb3JtYXRTdHJpbmcgPSBmb3JtYXRTdHJpbmcucmVwbGFjZShuZXcgUmVnRXhwKHRoaXMuc2Vjb25kVHlwZSwgJ2cnKSwgdGhpcy5zZWNvbmQpXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hcG0gJiYgdGhpcy5hcG1UeXBlKSB7XG4gICAgICAgIGZvcm1hdFN0cmluZyA9IGZvcm1hdFN0cmluZy5yZXBsYWNlKG5ldyBSZWdFeHAodGhpcy5hcG1UeXBlLCAnZycpLCB0aGlzLmFwbSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtYXRTdHJpbmdcbiAgICB9LFxuXG4gICAgY3VzdG9tRGlzcGxheVRpbWUgKCkge1xuICAgICAgaWYgKCF0aGlzLmFtVGV4dCAmJiAhdGhpcy5wbVRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheVRpbWVcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlUaW1lLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLmFwbSwgJ2cnKSwgdGhpcy5hcG1EaXNwbGF5VGV4dCh0aGlzLmFwbSkpXG4gICAgfSxcblxuICAgIGlucHV0SXNFbXB0eSAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRTdHJpbmcgPT09IHRoaXMuZGlzcGxheVRpbWVcbiAgICB9LFxuXG4gICAgYWxsVmFsdWVTZWxlY3RlZCAoKSB7XG4gICAgICBpZiAoXG4gICAgICAgICh0aGlzLmluVXNlLmhvdXIgJiYgIXRoaXMuaG91cikgfHxcbiAgICAgICAgKHRoaXMuaW5Vc2UubWludXRlICYmICF0aGlzLm1pbnV0ZSkgfHxcbiAgICAgICAgKHRoaXMuaW5Vc2Uuc2Vjb25kICYmICF0aGlzLnNlY29uZCkgfHxcbiAgICAgICAgKHRoaXMuaW5Vc2UuYXBtICYmICF0aGlzLmFwbSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSxcblxuICAgIGNvbHVtbnNTZXF1ZW5jZSAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pblVzZS50eXBlcy5tYXAodHlwZSA9PiB0eXBlKSB8fCBbXVxuICAgIH0sXG5cbiAgICBzaG93Q2xlYXJCdG4gKCkge1xuICAgICAgaWYgKHRoaXMuaGlkZUNsZWFyQnV0dG9uIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gIXRoaXMuaW5wdXRJc0VtcHR5XG4gICAgfSxcblxuICAgIHNob3dEcm9wZG93bkJ0biAoKSB7XG4gICAgICBpZiAodGhpcy5maXhlZERyb3Bkb3duQnV0dG9uKSB7IHJldHVybiB0cnVlIH1cbiAgICAgIGlmICh0aGlzLm9wdHMuaGlkZURyb3Bkb3duICYmIHRoaXMuaXNBY3RpdmUgJiYgIXRoaXMuc2hvd0Ryb3Bkb3duKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxuXG4gICAgYmFzZU9uMTJIb3VycyAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5ob3VyVHlwZSA9PT0gJ2gnIHx8IHRoaXMuaG91clR5cGUgPT09ICdoaCdcbiAgICB9LFxuXG4gICAgaG91clJhbmdlSW4yNEhyRm9ybWF0ICgpIHtcbiAgICAgIGlmICghdGhpcy5ob3VyVHlwZSB8fCAhdGhpcy5vcHRzLmhvdXJSYW5nZSkgeyByZXR1cm4gZmFsc2UgfVxuICAgICAgaWYgKCF0aGlzLm9wdHMuaG91clJhbmdlLmxlbmd0aCkgeyByZXR1cm4gW10gfVxuXG4gICAgICBjb25zdCByYW5nZSA9IFtdXG4gICAgICB0aGlzLm9wdHMuaG91clJhbmdlLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAyICYmIHRoaXMuZGVidWdNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnTG9nKGBOZXN0ZWQgYXJyYXkgd2l0aGluIFwiaG91ci1yYW5nZVwiIG11c3QgY29udGFpbiBubyBtb3JlIHRoYW4gdHdvIGl0ZW1zLiBPbmx5IHRoZSBmaXJzdCB0d28gaXRlbXMgb2YgJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9IHdpbGwgYmUgdGFrZW4gaW50byBhY2NvdW50LmApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHN0YXJ0ID0gdmFsdWVbMF1cbiAgICAgICAgICBsZXQgZW5kID0gdmFsdWVbMV0gfHwgdmFsdWVbMF1cblxuICAgICAgICAgIGlmICh0aGlzLmlzMTJoUmFuZ2Uoc3RhcnQpKSB7XG4gICAgICAgICAgICBzdGFydCA9IHRoaXMudHJhbnNsYXRlMTJoUmFuZ2Uoc3RhcnQpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLmlzMTJoUmFuZ2UoZW5kKSkge1xuICAgICAgICAgICAgZW5kID0gdGhpcy50cmFuc2xhdGUxMmhSYW5nZShlbmQpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChsZXQgaSA9ICtzdGFydDsgaSA8PSArZW5kOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChpIDwgMCB8fCBpID4gMjQpIHsgY29udGludWUgfVxuICAgICAgICAgICAgaWYgKCFyYW5nZS5pbmNsdWRlcyhpKSkge1xuICAgICAgICAgICAgICByYW5nZS5wdXNoKGkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmlzMTJoUmFuZ2UodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMudHJhbnNsYXRlMTJoUmFuZ2UodmFsdWUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gK3ZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiAyNCkgeyByZXR1cm4gfVxuICAgICAgICAgIGlmICghcmFuZ2UuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICByYW5nZS5wdXNoKHZhbHVlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJhbmdlLnNvcnQoKGwsIHIpID0+IHsgcmV0dXJuIGwgLSByIH0pXG4gICAgICByZXR1cm4gcmFuZ2VcbiAgICB9LFxuXG4gICAgcmVzdHJpY3RlZEhvdXJSYW5nZSAoKSB7XG4gICAgICAvLyBObyByZXN0cmljdGlvblxuICAgICAgaWYgKCF0aGlzLmhvdXJSYW5nZUluMjRIckZvcm1hdCkgeyByZXR1cm4gZmFsc2UgfVxuICAgICAgLy8gMTItSG91clxuICAgICAgaWYgKHRoaXMuYmFzZU9uMTJIb3Vycykge1xuICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMuaG91clJhbmdlSW4yNEhyRm9ybWF0Lm1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IDEyKSB7XG4gICAgICAgICAgICByZXR1cm4gJzEycCdcbiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAyNCB8fCB2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICcxMmEnXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2YWx1ZSA+IDEyID8gYCR7dmFsdWUgJSAxMn1wYCA6IGAke3ZhbHVlfWFgXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiByYW5nZVxuICAgICAgfVxuICAgICAgLy8gMjQtSG91clxuICAgICAgcmV0dXJuIHRoaXMuaG91clJhbmdlSW4yNEhyRm9ybWF0XG4gICAgfSxcblxuICAgIHZhbGlkSG91cnNMaXN0ICgpIHtcbiAgICAgIGlmICghdGhpcy5tYW51YWxJbnB1dCkgeyByZXR1cm4gZmFsc2UgfVxuICAgICAgaWYgKHRoaXMucmVzdHJpY3RlZEhvdXJSYW5nZSkge1xuICAgICAgICBsZXQgbGlzdCA9IFtdXG4gICAgICAgIGlmICh0aGlzLmJhc2VPbjEySG91cnMpIHtcbiAgICAgICAgICBsaXN0ID0gdGhpcy5yZXN0cmljdGVkSG91clJhbmdlLm1hcChociA9PiB7XG4gICAgICAgICAgICBjb25zdCBsID0gaHIuc3Vic3RyKDAsIGhyLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICBjb25zdCByID0gaHIuc3Vic3RyKC0xKVxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0VmFsdWUodGhpcy5ob3VyVHlwZSwgbCl9JHtyfWBcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGFtMTJJbmRleCA9IGxpc3QuaW5kZXhPZignMTJhJylcbiAgICAgICAgICBpZiAoYW0xMkluZGV4ID4gMCkge1xuICAgICAgICAgICAgLy8gTWFrZSAnMTJhJyB0aGUgZmlyc3QgaXRlbSBpbiBoL2hoXG4gICAgICAgICAgICBsaXN0LnVuc2hpZnQobGlzdC5zcGxpY2UoYW0xMkluZGV4LCAxKVswXSlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGxpc3RcbiAgICAgICAgfVxuICAgICAgICBsaXN0ID0gdGhpcy5yZXN0cmljdGVkSG91clJhbmdlLm1hcChociA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0VmFsdWUodGhpcy5ob3VyVHlwZSwgaHIpXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA+IDEgJiYgbGlzdFswXSAmJiBsaXN0WzBdID09PSAnMjQnKSB7XG4gICAgICAgICAgLy8gTWFrZSAnMjQnIHRoZSBsYXN0IGl0ZW0gaW4gay9ra1xuICAgICAgICAgIGxpc3QucHVzaChsaXN0LnNoaWZ0KCkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3RcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmJhc2VPbjEySG91cnMpIHtcbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChbXSwgdGhpcy5ob3Vycy5tYXAoaHIgPT4gYCR7aHJ9YWApLCB0aGlzLmhvdXJzLm1hcChociA9PiBgJHtocn1wYCkpXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5ob3Vyc1xuICAgIH0sXG5cbiAgICBoYXMgKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICBjdXN0b21BcG1UZXh0OiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgYXBtRW5hYmxlZCA9ICEhdGhpcy5hcG1UeXBlXG5cbiAgICAgIGlmIChhcG1FbmFibGVkICYmIHRoaXMuaG91clJhbmdlSW4yNEhyRm9ybWF0ICYmIHRoaXMuaG91clJhbmdlSW4yNEhyRm9ybWF0Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCByYW5nZSA9IFtdLmNvbmNhdChbXSwgdGhpcy5ob3VyUmFuZ2VJbjI0SHJGb3JtYXQpXG4gICAgICAgIHJlc3VsdC5hbSA9IHJhbmdlLnNvbWUodmFsdWUgPT4gdmFsdWUgPCAxMiB8fCB2YWx1ZSA9PT0gMjQpXG4gICAgICAgIHJlc3VsdC5wbSA9IHJhbmdlLnNvbWUodmFsdWUgPT4gdmFsdWUgPj0gMTIgJiYgdmFsdWUgPCAyNClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5hbSA9IGFwbUVuYWJsZWRcbiAgICAgICAgcmVzdWx0LnBtID0gYXBtRW5hYmxlZFxuICAgICAgfVxuICAgICAgaWYgKCh0aGlzLmFtVGV4dCAmJiB0aGlzLmFtVGV4dC5sZW5ndGgpIHx8ICh0aGlzLnBtVGV4dCAmJiB0aGlzLnBtVGV4dC5sZW5ndGgpKSB7XG4gICAgICAgIHJlc3VsdC5jdXN0b21BcG1UZXh0ID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG5cbiAgICBtaW51dGVSYW5nZUxpc3QgKCkge1xuICAgICAgaWYgKCF0aGlzLm1pbnV0ZVR5cGUgfHwgIXRoaXMub3B0cy5taW51dGVSYW5nZSkgeyByZXR1cm4gZmFsc2UgfVxuICAgICAgaWYgKCF0aGlzLm9wdHMubWludXRlUmFuZ2UubGVuZ3RoKSB7IHJldHVybiBbXSB9XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJSYW5nZUxpc3QodGhpcy5vcHRzLm1pbnV0ZVJhbmdlLCAnbWludXRlJylcbiAgICB9LFxuXG4gICAgc2Vjb25kUmFuZ2VMaXN0ICgpIHtcbiAgICAgIGlmICghdGhpcy5zZWNvbmRUeXBlIHx8ICF0aGlzLm9wdHMuc2Vjb25kUmFuZ2UpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICAgIGlmICghdGhpcy5vcHRzLnNlY29uZFJhbmdlLmxlbmd0aCkgeyByZXR1cm4gW10gfVxuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyUmFuZ2VMaXN0KHRoaXMub3B0cy5zZWNvbmRSYW5nZSwgJ3NlY29uZCcpXG4gICAgfSxcbiAgICBcbiAgICBob3VyTGFiZWxUZXh0ICgpIHtcbiAgICAgIHJldHVybiB0aGlzLmhvdXJMYWJlbCB8fCB0aGlzLmhvdXJUeXBlXG4gICAgfSxcbiAgICBtaW51dGVMYWJlbFRleHQgKCkge1xuICAgICAgcmV0dXJuIHRoaXMubWludXRlTGFiZWwgfHwgdGhpcy5taW51dGVUeXBlXG4gICAgfSxcbiAgICBzZWNvbmRMYWJlbFRleHQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWNvbmRMYWJlbCB8fCB0aGlzLnNlY29uZFR5cGVcbiAgICB9LFxuICAgIGFwbUxhYmVsVGV4dCAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcG1MYWJlbCB8fCB0aGlzLmFwbVR5cGVcbiAgICB9LFxuXG4gICAgaW5wdXRXaWR0aFN0eWxlICgpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dFdpZHRoIHx8ICF0aGlzLmlucHV0V2lkdGgubGVuZ3RoKSB7IHJldHVybiB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogdGhpcy5pbnB1dFdpZHRoXG4gICAgICB9XG4gICAgfSxcblxuICAgIHRva2VuUmVnZXhCYXNlICgpIHtcbiAgICAgIHJldHVybiB0aGlzLmluVXNlLnRva2Vucy5qb2luKCd8JylcbiAgICB9LFxuXG4gICAgdG9rZW5DaHVua3MgKCkge1xuICAgICAgaWYgKCF0aGlzLm1hbnVhbElucHV0ICYmICF0aGlzLnVzZVN0cmluZ1ZhbHVlKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdFN0cmluZyA9IFN0cmluZyh0aGlzLmZvcm1hdFN0cmluZylcbiAgICAgIGNvbnN0IHRva2Vuc1JlZ3hTdHIgPSBgKCR7dGhpcy50b2tlblJlZ2V4QmFzZX0pKz9gXG4gICAgICBjb25zdCB0b2tlbnNNYXRjaEFsbCA9IHRoaXMuZ2V0TWF0Y2hBbGxCeVJlZ2V4KGZvcm1hdFN0cmluZywgdG9rZW5zUmVneFN0cilcblxuICAgICAgY29uc3QgdG9rZW5DaHVua3MgPSBbXVxuICAgICAgZm9yIChsZXQgdGtNYXRjaCBvZiB0b2tlbnNNYXRjaEFsbCkge1xuICAgICAgICBjb25zdCByYXdUb2tlbiA9IHRrTWF0Y2hbMF1cbiAgICAgICAgY29uc3QgdG9rZW5NYXRjaEl0ZW0gPSB7XG4gICAgICAgICAgaW5kZXg6IHRrTWF0Y2guaW5kZXgsXG4gICAgICAgICAgdG9rZW46IHJhd1Rva2VuLFxuICAgICAgICAgIHR5cGU6IHRoaXMuZ2V0VG9rZW5UeXBlKHJhd1Rva2VuKSxcbiAgICAgICAgICBuZWVkc0NhbGlicmF0ZTogcmF3VG9rZW4ubGVuZ3RoIDwgMixcbiAgICAgICAgICBsZW46IChyYXdUb2tlbiB8fCAnJykubGVuZ3RoXG4gICAgICAgIH1cbiAgICAgICAgdG9rZW5DaHVua3MucHVzaCh0b2tlbk1hdGNoSXRlbSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB0b2tlbkNodW5rc1xuICAgIH0sXG5cbiAgICBuZWVkc1Bvc0NhbGlicmF0ZSAoKSB7XG4gICAgICBpZiAoIXRoaXMubWFudWFsSW5wdXQpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICAgIHJldHVybiB0aGlzLnRva2VuQ2h1bmtzLnNvbWUoY2hrID0+IGNoay5uZWVkc0NhbGlicmF0ZSlcbiAgICB9LFxuXG4gICAgdG9rZW5DaHVua3NQb3MgKCkge1xuICAgICAgaWYgKCF0aGlzLm1hbnVhbElucHV0KSB7IHJldHVybiBmYWxzZSB9XG4gICAgICBpZiAoIXRoaXMubmVlZHNQb3NDYWxpYnJhdGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5DaHVua3MubWFwKGNoayA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRva2VuOiBjaGsudG9rZW4sXG4gICAgICAgICAgICB0eXBlOiBjaGsudHlwZSxcbiAgICAgICAgICAgIHN0YXJ0OiBjaGsuaW5kZXgsXG4gICAgICAgICAgICBlbmQ6IGNoay5pbmRleCArIGNoay5sZW5cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBsaXN0ID0gW11cbiAgICAgIGxldCBjYWxpYnJhdGVMZW4gPSAwXG4gICAgICB0aGlzLnRva2VuQ2h1bmtzLmZvckVhY2goY2hrID0+IHtcbiAgICAgICAgbGV0IGNodW5rQ3VycmVudExlblxuICAgICAgICAvLyBBZGp1c3QgZm9yIGN1c3RvbWl6ZWQgQU0vUE0gdGV4dFxuICAgICAgICBpZiAoY2hrLnR5cGUgPT09ICdhcG0nICYmIHRoaXMuaGFzLmN1c3RvbUFwbVRleHQpIHtcbiAgICAgICAgICBpZiAodGhpcy5hcG0gJiYgdGhpcy5hcG0ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21BcG1UZXh0ID0gdGhpcy5hcG0udG9Mb3dlckNhc2UoKSA9PT0gJ2FtJyA/IHRoaXMuYW1UZXh0IDogdGhpcy5wbVRleHRcbiAgICAgICAgICAgIGNodW5rQ3VycmVudExlbiA9IChjdXN0b21BcG1UZXh0ICYmIGN1c3RvbUFwbVRleHQubGVuZ3RoKSA/IGN1c3RvbUFwbVRleHQubGVuZ3RoIDogY2hrLmxlblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaHVua0N1cnJlbnRMZW4gPSBjaGsubGVuXG4gICAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaHVua0N1cnJlbnRMZW4gPSB0aGlzW2Noay50eXBlXSAmJiB0aGlzW2Noay50eXBlXS5sZW5ndGggPyB0aGlzW2Noay50eXBlXS5sZW5ndGggOiBjaGsubGVuXG4gICAgICAgIH1cbiAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICB0b2tlbjogY2hrLnRva2VuLFxuICAgICAgICAgIHR5cGU6IGNoay50eXBlLFxuICAgICAgICAgIHN0YXJ0OiBjaGsuaW5kZXggKyBjYWxpYnJhdGVMZW4sXG4gICAgICAgICAgZW5kOiBjaGsuaW5kZXggKyBjYWxpYnJhdGVMZW4gKyBjaHVua0N1cnJlbnRMZW5cbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGNoay5uZWVkc0NhbGlicmF0ZSAmJiBjaHVua0N1cnJlbnRMZW4gPiBjaGsubGVuKSB7XG4gICAgICAgICAgY2FsaWJyYXRlTGVuICs9IChjaHVua0N1cnJlbnRMZW4gLSBjaGsubGVuKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuIGxpc3RcbiAgICB9LFxuXG4gICAgaW52YWxpZFZhbHVlcyAoKSB7XG4gICAgICBpZiAodGhpcy5pbnB1dElzRW1wdHkpIHsgcmV0dXJuIFtdIH1cbiAgICAgIGlmICghdGhpcy5yZXN0cmljdGVkSG91clJhbmdlICYmICF0aGlzLm1pbnV0ZVJhbmdlTGlzdCAmJiAhdGhpcy5zZWNvbmRSYW5nZUxpc3QgJiYgdGhpcy5vcHRzLm1pbnV0ZUludGVydmFsID09PSAxICYmIHRoaXMub3B0cy5zZWNvbmRJbnRlcnZhbCA9PT0gMSkgeyByZXR1cm4gW10gfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBbXVxuICAgICAgaWYgKHRoaXMuaW5Vc2UuaG91ciAmJiAhdGhpcy5pc0VtcHR5VmFsdWUodGhpcy5ob3VyVHlwZSwgdGhpcy5ob3VyKSAmJiAoIXRoaXMuaXNWYWxpZFZhbHVlKHRoaXMuaG91clR5cGUsIHRoaXMuaG91cikgfHwgdGhpcy5pc0Rpc2FibGVkKCdob3VyJywgdGhpcy5ob3VyKSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJ2hvdXInKVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaW5Vc2UubWludXRlICYmICF0aGlzLmlzRW1wdHlWYWx1ZSh0aGlzLm1pbnV0ZVR5cGUsIHRoaXMubWludXRlKSAmJiAoIXRoaXMuaXNWYWxpZFZhbHVlKHRoaXMubWludXRlVHlwZSwgdGhpcy5taW51dGUpIHx8IHRoaXMuaXNEaXNhYmxlZCgnbWludXRlJywgdGhpcy5taW51dGUpIHx8IHRoaXMubm90SW5JbnRlcnZhbCgnbWludXRlJywgdGhpcy5taW51dGUpKSkge1xuICAgICAgICByZXN1bHQucHVzaCgnbWludXRlJylcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmluVXNlLnNlY29uZCAmJiAhdGhpcy5pc0VtcHR5VmFsdWUodGhpcy5zZWNvbmRUeXBlLCB0aGlzLnNlY29uZCkgJiYgKCF0aGlzLmlzVmFsaWRWYWx1ZSh0aGlzLnNlY29uZFR5cGUsIHRoaXMuc2Vjb25kKSB8fCB0aGlzLmlzRGlzYWJsZWQoJ3NlY29uZCcsIHRoaXMuc2Vjb25kKSB8fCB0aGlzLm5vdEluSW50ZXJ2YWwoJ3NlY29uZCcsIHRoaXMuc2Vjb25kKSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJ3NlY29uZCcpXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pblVzZS5hcG0gJiYgIXRoaXMuaXNFbXB0eVZhbHVlKHRoaXMuYXBtVHlwZSwgdGhpcy5hcG0pICYmICghdGhpcy5pc1ZhbGlkVmFsdWUodGhpcy5hcG1UeXBlLCB0aGlzLmFwbSkgfHwgdGhpcy5pc0Rpc2FibGVkKCdhcG0nLCB0aGlzLmFwbSkpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKCdhcG0nKVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuICAgICAgcmV0dXJuIFtdXG4gICAgfSxcblxuICAgIGhhc0ludmFsaWRJbnB1dCAoKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbih0aGlzLmludmFsaWRWYWx1ZXMgJiYgdGhpcy5pbnZhbGlkVmFsdWVzLmxlbmd0aClcbiAgICB9LFxuXG4gICAgYXV0b0RpcmVjdGlvbkVuYWJsZWQgKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZHJvcERpcmVjdGlvbiA9PT0gJ2F1dG8nXG4gICAgfSxcblxuICAgIGRyb3Bkb3duRGlyQ2xhc3MgKCkge1xuICAgICAgaWYgKHRoaXMuYXV0b0RpcmVjdGlvbkVuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9yY2VEcm9wT25Ub3AgPyAnZHJvcC11cCcgOiAnZHJvcC1kb3duJ1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZHJvcERpcmVjdGlvbiA9PT0gJ3VwJyA/ICdkcm9wLXVwJyA6ICdkcm9wLWRvd24nICAgICAgXG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgJ29wdHMuZm9ybWF0JyAobmV3VmFsdWUpIHtcbiAgICAgIHRoaXMucmVuZGVyRm9ybWF0KG5ld1ZhbHVlKVxuICAgIH0sXG4gICAgJ29wdHMubWludXRlSW50ZXJ2YWwnIChuZXdJbnRldmFsKSB7XG4gICAgICB0aGlzLnJlbmRlckxpc3QoJ21pbnV0ZScsIG5ld0ludGV2YWwpXG4gICAgfSxcbiAgICAnb3B0cy5zZWNvbmRJbnRlcnZhbCcgKG5ld0ludGV2YWwpIHtcbiAgICAgIHRoaXMucmVuZGVyTGlzdCgnc2Vjb25kJywgbmV3SW50ZXZhbClcbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICBkZWVwOiB0cnVlLFxuICAgICAgaGFuZGxlciAoKSB7XG4gICAgICAgIHRoaXMucmVhZFZhbHVlcygpXG4gICAgICB9XG4gICAgfSxcbiAgICBkaXNwbGF5VGltZSAoKSB7XG4gICAgICB0aGlzLmZpbGxWYWx1ZXMoKVxuICAgIH0sXG4gICAgZGlzYWJsZWQgKHRvRGlzYWJsZWQpIHtcbiAgICAgIGlmICh0b0Rpc2FibGVkKSB7XG4gICAgICAgIC8vIEZvcmNlIGNsb3NlIGRyb3Bkb3duIGFuZCByZXNldCBzdGF0dXMgd2hlbiBkaXNhYmxlZFxuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNob3dEcm9wZG93bikge1xuICAgICAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgJ2ludmFsaWRWYWx1ZXMubGVuZ3RoJyAobmV3TGVuZ3RoLCBvbGRMZW5ndGgpIHtcbiAgICAgIGlmIChuZXdMZW5ndGggJiYgbmV3TGVuZ3RoID49IDEpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnZXJyb3InLCB0aGlzLmludmFsaWRWYWx1ZXMpXG4gICAgICB9IGVsc2UgaWYgKG9sZExlbmd0aCAmJiBvbGRMZW5ndGggPj0gMSkge1xuICAgICAgICB0aGlzLiRlbWl0KCdlcnJvcicsIFtdKVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZm9ybWF0VmFsdWUgKHRva2VuLCBpKSB7XG4gICAgICBpZiAoIXRoaXMuaXNOdW1iZXIoaSkpIHsgcmV0dXJuICcnIH1cbiAgICAgIGkgPSAraVxuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgIGNhc2UgJ2snOlxuICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgaWYgKFsnaCcsICdrJ10uaW5jbHVkZXModG9rZW4pICYmIGkgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbiA9PT0gJ2snID8gJzI0JyA6ICcxMidcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyhpKVxuICAgICAgICBjYXNlICdISCc6XG4gICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgIGNhc2UgJ2trJzpcbiAgICAgICAgICBpZiAoWydoaCcsICdrayddLmluY2x1ZGVzKHRva2VuKSAmJiBpID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4gPT09ICdraycgPyAnMjQnIDogJzEyJ1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaSA8IDEwID8gYDAke2l9YCA6IFN0cmluZyhpKVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBjaGVja0FjY2VwdGluZ1R5cGUgKHZhbGlkVmFsdWVzLCBmb3JtYXRTdHJpbmcpIHtcbiAgICAgIGlmICghdmFsaWRWYWx1ZXMgfHwgIWZvcm1hdFN0cmluZyB8fCAhZm9ybWF0U3RyaW5nLmxlbmd0aCkgeyByZXR1cm4gJycgfVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWxpZFZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZm9ybWF0U3RyaW5nLmluZGV4T2YodmFsaWRWYWx1ZXNbaV0pID4gLTEpIHtcbiAgICAgICAgICByZXR1cm4gdmFsaWRWYWx1ZXNbaV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICcnXG4gICAgfSxcblxuICAgIHJlbmRlckZvcm1hdCAobmV3Rm9ybWF0KSB7XG4gICAgICBuZXdGb3JtYXQgPSBuZXdGb3JtYXQgfHwgdGhpcy5vcHRzLmZvcm1hdCB8fCBERUZBVUxUX09QVElPTlMuZm9ybWF0XG5cbiAgICAgIGxldCBob3VyVHlwZSA9IHRoaXMuY2hlY2tBY2NlcHRpbmdUeXBlKENPTkZJRy5IT1VSX1RPS0VOUywgbmV3Rm9ybWF0KVxuICAgICAgbGV0IG1pbnV0ZVR5cGUgPSB0aGlzLmNoZWNrQWNjZXB0aW5nVHlwZShDT05GSUcuTUlOVVRFX1RPS0VOUywgbmV3Rm9ybWF0KVxuICAgICAgdGhpcy5zZWNvbmRUeXBlID0gdGhpcy5jaGVja0FjY2VwdGluZ1R5cGUoQ09ORklHLlNFQ09ORF9UT0tFTlMsIG5ld0Zvcm1hdClcbiAgICAgIHRoaXMuYXBtVHlwZSA9IHRoaXMuY2hlY2tBY2NlcHRpbmdUeXBlKENPTkZJRy5BUE1fVE9LRU5TLCBuZXdGb3JtYXQpXG5cbiAgICAgIC8vIEZhaWxzYWZlIGNoZWNraW5nXG4gICAgICBpZiAoIWhvdXJUeXBlICYmICFtaW51dGVUeXBlICYmICF0aGlzLnNlY29uZFR5cGUgJiYgIXRoaXMuYXBtVHlwZSkge1xuICAgICAgICBpZiAodGhpcy5kZWJ1Z01vZGUgJiYgdGhpcy5mb3JtYXQpIHtcbiAgICAgICAgICB0aGlzLmRlYnVnTG9nKGBObyB2YWxpZCB0b2tlbnMgZm91bmQgaW4geW91ciBkZWZpbmVkIFwiZm9ybWF0XCIgc3RyaW5nIFwiJHt0aGlzLmZvcm1hdH1cIi4gRmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQgXCJISDptbVwiIGZvcm1hdC5gKVxuICAgICAgICB9XG4gICAgICAgIGhvdXJUeXBlID0gJ0hIJ1xuICAgICAgICBtaW51dGVUeXBlID0gJ21tJ1xuICAgICAgfVxuICAgICAgdGhpcy5ob3VyVHlwZSA9IGhvdXJUeXBlXG4gICAgICB0aGlzLm1pbnV0ZVR5cGUgPSBtaW51dGVUeXBlXG5cbiAgICAgIHRoaXMuaG91clR5cGUgPyB0aGlzLnJlbmRlckhvdXJzTGlzdCgpIDogdGhpcy5ob3VycyA9IFtdXG4gICAgICB0aGlzLm1pbnV0ZVR5cGUgPyB0aGlzLnJlbmRlckxpc3QoJ21pbnV0ZScpIDogdGhpcy5taW51dGVzID0gW11cbiAgICAgIHRoaXMuc2Vjb25kVHlwZSA/IHRoaXMucmVuZGVyTGlzdCgnc2Vjb25kJykgOiB0aGlzLnNlY29uZHMgPSBbXVxuICAgICAgdGhpcy5hcG1UeXBlID8gdGhpcy5yZW5kZXJBcG1MaXN0KCkgOiB0aGlzLmFwbXMgPSBbXVxuXG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHRoaXMucmVhZFZhbHVlcygpXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICByZW5kZXJIb3Vyc0xpc3QgKCkge1xuICAgICAgY29uc3QgaG91cnNDb3VudCA9IHRoaXMuYmFzZU9uMTJIb3VycyA/IDEyIDogMjRcbiAgICAgIGNvbnN0IGhvdXJzID0gW11cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaG91cnNDb3VudDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLmhvdXJUeXBlID09PSAnaycgfHwgdGhpcy5ob3VyVHlwZSA9PT0gJ2trJykge1xuICAgICAgICAgIGhvdXJzLnB1c2godGhpcy5mb3JtYXRWYWx1ZSh0aGlzLmhvdXJUeXBlLCBpICsgMSkpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaG91cnMucHVzaCh0aGlzLmZvcm1hdFZhbHVlKHRoaXMuaG91clR5cGUsIGkpKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmhvdXJzID0gaG91cnNcbiAgICB9LFxuXG4gICAgcmVuZGVyTGlzdCAobGlzdFR5cGUsIGludGVydmFsKSB7XG4gICAgICBpZiAoIXRoaXMuaXNNaW51dGVPclNlY29uZChsaXN0VHlwZSkpIHsgcmV0dXJuIH1cblxuICAgICAgY29uc3QgaXNNaW51dGUgPSBsaXN0VHlwZSA9PT0gJ21pbnV0ZSdcbiAgICAgIGludGVydmFsID0gaW50ZXJ2YWwgfHwgKGlzTWludXRlID8gKHRoaXMub3B0cy5taW51dGVJbnRlcnZhbCB8fCBERUZBVUxUX09QVElPTlMubWludXRlSW50ZXJ2YWwpIDogKHRoaXMub3B0cy5zZWNvbmRJbnRlcnZhbCB8fCBERUZBVUxUX09QVElPTlMuc2Vjb25kSW50ZXJ2YWwpKVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBbXVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2MDsgaSArPSBpbnRlcnZhbCkge1xuICAgICAgICByZXN1bHQucHVzaCh0aGlzLmZvcm1hdFZhbHVlKGlzTWludXRlID8gdGhpcy5taW51dGVUeXBlIDogdGhpcy5zZWNvbmRUeXBlLCBpKSlcbiAgICAgIH1cbiAgICAgIGlzTWludXRlID8gdGhpcy5taW51dGVzID0gcmVzdWx0IDogdGhpcy5zZWNvbmRzID0gcmVzdWx0XG4gICAgfSxcblxuICAgIHJlbmRlckFwbUxpc3QgKCkge1xuICAgICAgdGhpcy5hcG1zID0gdGhpcy5hcG1UeXBlID09PSAnQScgPyBbJ0FNJywgJ1BNJ10gOiBbJ2FtJywgJ3BtJ11cbiAgICB9LFxuXG4gICAgcmVhZFZhbHVlcyAoKSB7XG4gICAgICBpZiAodGhpcy51c2VTdHJpbmdWYWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5kZWJ1Z01vZGUpIHtcbiAgICAgICAgICB0aGlzLmRlYnVnTG9nKGBSZWNlaXZlZCBhIHN0cmluZyB2YWx1ZTogXCIke3RoaXMudmFsdWV9XCJgKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVhZFN0cmluZ1ZhbHVlcyh0aGlzLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZGVidWdNb2RlKSB7XG4gICAgICAgICAgdGhpcy5kZWJ1Z0xvZyhgUmVjZWl2ZWQgYW4gb2JqZWN0IHZhbHVlOiBcIiR7SlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSB8fCB7fSl9XCJgKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVhZE9iamVjdFZhbHVlcyh0aGlzLnZhbHVlKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICByZWFkT2JqZWN0VmFsdWVzIChvYmpWYWx1ZSkge1xuICAgICAgY29uc3QgdGltZVZhbHVlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmpWYWx1ZSB8fCB7fSkpXG4gICAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3Qua2V5cyh0aW1lVmFsdWUpXG5cbiAgICAgIC8vIEZhaWxzYWZlIGZvciBlbXB0eSBgdi1tb2RlbGAgb2JqZWN0XG4gICAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmFkZEZhbGxiYWNrVmFsdWVzKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIENPTkZJRy5CQVNJQ19UWVBFUy5mb3JFYWNoKHR5cGUgPT4ge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW5CeVR5cGUodHlwZSlcbiAgICAgICAgaWYgKHZhbHVlcy5pbmRleE9mKHRva2VuKSA+IC0xKSB7XG4gICAgICAgICAgY29uc3Qgc2FuaXRpemVkVmFsdWUgPSB0aGlzLnNhbml0aXplZFZhbHVlKHRva2VuLCB0aW1lVmFsdWVbdG9rZW5dKVxuICAgICAgICAgIHRoaXNbdHlwZV0gPSBzYW5pdGl6ZWRWYWx1ZVxuICAgICAgICAgIHRpbWVWYWx1ZVt0b2tlbl0gPSBzYW5pdGl6ZWRWYWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXNbdHlwZV0gPSAnJ1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgdGhpcy50aW1lVmFsdWUgPSB0aW1lVmFsdWVcbiAgICB9LFxuXG4gICAgZ2V0TWF0Y2hBbGxCeVJlZ2V4ICh0ZXN0U3RyaW5nLCByZWdleFN0cmluZykge1xuICAgICAgY29uc3Qgc3RyID0gJ3BvbHlmaWxsVGVzdCdcbiAgICAgIGNvbnN0IG5lZWRzUG9seWZpbGwgPSBCb29sZWFuKCFzdHIubWF0Y2hBbGwgfHwgdHlwZW9mIHN0ci5tYXRjaEFsbCAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHJldHVybiBuZWVkc1BvbHlmaWxsID8gdGhpcy5wb2x5ZmlsbE1hdGNoQWxsKHRlc3RTdHJpbmcsIHJlZ2V4U3RyaW5nKSA6IHRlc3RTdHJpbmcubWF0Y2hBbGwobmV3IFJlZ0V4cChyZWdleFN0cmluZywgJ2cnKSlcbiAgICB9LFxuXG4gICAgcmVhZFN0cmluZ1ZhbHVlcyAoc3RyaW5nVmFsdWUpIHtcbiAgICAgIC8vIEZhaWxzYWZlIGZvciBlbXB0eSBgdi1tb2RlbGAgc3RyaW5nXG4gICAgICBpZiAoIXN0cmluZ1ZhbHVlIHx8ICFzdHJpbmdWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5hZGRGYWxsYmFja1ZhbHVlcygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXRTdHJpbmcgPSBTdHJpbmcodGhpcy5mb3JtYXRTdHJpbmcpXG4gICAgICBjb25zdCB0b2tlbnNSZWd4U3RyID0gYCgke3RoaXMudG9rZW5SZWdleEJhc2V9KSs/YFxuICAgICAgY29uc3Qgb3RoZXJzUmVneFN0ciA9IGBbXigke3RoaXMudG9rZW5SZWdleEJhc2V9KV0rYFxuXG4gICAgICBjb25zdCB0b2tlbnNNYXRjaEFsbCA9IHRoaXMuZ2V0TWF0Y2hBbGxCeVJlZ2V4KGZvcm1hdFN0cmluZywgdG9rZW5zUmVneFN0cilcbiAgICAgIGNvbnN0IG90aGVyc01hdGNoQWxsID0gdGhpcy5nZXRNYXRjaEFsbEJ5UmVnZXgoZm9ybWF0U3RyaW5nLCBvdGhlcnNSZWd4U3RyKVxuXG4gICAgICBjb25zdCBjaHVua3MgPSBbXVxuICAgICAgY29uc3QgdG9rZW5DaHVua3MgPSBbXVxuXG4gICAgICBmb3IgKGxldCB0a01hdGNoIG9mIHRva2Vuc01hdGNoQWxsKSB7XG4gICAgICAgIGNvbnN0IHRva2VuTWF0Y2hJdGVtID0ge1xuICAgICAgICAgIGluZGV4OiB0a01hdGNoLmluZGV4LFxuICAgICAgICAgIHRva2VuOiB0a01hdGNoWzBdLFxuICAgICAgICAgIGlzVmFsdWVUb2tlbjogdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGNodW5rcy5wdXNoKHRva2VuTWF0Y2hJdGVtKVxuICAgICAgICB0b2tlbkNodW5rcy5wdXNoKHRva2VuTWF0Y2hJdGVtKVxuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBvdE1hdGNoIG9mIG90aGVyc01hdGNoQWxsKSB7XG4gICAgICAgIGNodW5rcy5wdXNoKHtcbiAgICAgICAgICBpbmRleDogb3RNYXRjaC5pbmRleCxcbiAgICAgICAgICB0b2tlbjogb3RNYXRjaFswXVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjaHVua3Muc29ydCgobCwgcikgPT4gbC5pbmRleCA8IHIuaW5kZXggPyAtMSA6IDEpXG5cbiAgICAgIGxldCByZWdleENvbWJvID0gJydcbiAgICAgIGNodW5rcy5mb3JFYWNoKGNodW5rID0+IHtcbiAgICAgICAgaWYgKGNodW5rLmlzVmFsdWVUb2tlbikge1xuICAgICAgICAgIGNvbnN0IHRva2VuUmVnZXggPSB0aGlzLmdldFRva2VuUmVnZXgoY2h1bmsudG9rZW4pIHx8ICcnXG4gICAgICAgICAgcmVnZXhDb21ibyArPSB0b2tlblJlZ2V4XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgc2FmZUNoYXJzID0gY2h1bmsudG9rZW4ucmVwbGFjZSgvXFxcXHswfShcXCp8XFw/fFxcLnxcXCspL2csICdcXFxcJDEnKVxuICAgICAgICAgIHJlZ2V4Q29tYm8gKz0gYCg/OiR7c2FmZUNoYXJzfSlgXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGNvbWJvUmVnID0gbmV3IFJlZ0V4cChyZWdleENvbWJvKVxuXG4gICAgICAvLyBEbyB0ZXN0IGJlZm9yZSBtYXRjaFxuICAgICAgaWYgKGNvbWJvUmVnLnRlc3Qoc3RyaW5nVmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoUmVzdWx0cyA9IHN0cmluZ1ZhbHVlLm1hdGNoKG5ldyBSZWdFeHAocmVnZXhDb21ibykpXG4gICAgICAgIGNvbnN0IHZhbHVlUmVzdWx0cyA9IG1hdGNoUmVzdWx0cy5zbGljZSgxLCB0b2tlbkNodW5rcy5sZW5ndGggKyAxKVxuICAgICAgICBjb25zdCB0aW1lVmFsdWUgPSB7fVxuICAgICAgICB2YWx1ZVJlc3VsdHMuZm9yRWFjaCgodmFsdWUsIHZySW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW5DaHVua3NbdnJJbmRleF0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldFRva2VuID0gdG9rZW5DaHVua3NbdnJJbmRleF0udG9rZW5cbiAgICAgICAgICAgIHRpbWVWYWx1ZVt0YXJnZXRUb2tlbl0gPSB0aGlzLnNldFZhbHVlRnJvbVN0cmluZyh2YWx1ZSwgdGFyZ2V0VG9rZW4pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLnRpbWVWYWx1ZSA9IHRpbWVWYWx1ZVxuXG4gICAgICAgIGlmICh0aGlzLmRlYnVnTW9kZSkge1xuICAgICAgICAgIGNvbnN0IHRva2VuQ2h1bmtzRm9yTG9nID0gdG9rZW5DaHVua3MubWFwKHRDaHVuayA9PiB0Q2h1bmsgJiYgdENodW5rLnRva2VuKVxuICAgICAgICAgIHRoaXMuZGVidWdMb2coYFN1Y2Nlc3NmdWxseSBwYXJzZWQgdmFsdWVzICR7SlNPTi5zdHJpbmdpZnkodmFsdWVSZXN1bHRzKX1cXG5mb3IgJHtKU09OLnN0cmluZ2lmeSh0b2tlbkNodW5rc0ZvckxvZyl9XFxuaW4gZm9ybWF0IHBhdHRlcm4gJyR7dGhpcy5mb3JtYXRTdHJpbmd9J2ApXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnTW9kZSkge1xuICAgICAgICAgIHRoaXMuZGVidWdMb2coYFRoZSBpbnB1dCBzdHJpbmcgaW4gXCJ2LW1vZGVsXCIgZG9lcyBOT1QgbWF0Y2ggdGhlIFwiZm9ybWF0XCIgcGF0dGVyblxcbmZvcm1hdDogJHt0aGlzLmZvcm1hdFN0cmluZ31cXG52LW1vZGVsOiAke3N0cmluZ1ZhbHVlfWApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgcG9seWZpbGxNYXRjaEFsbCAodGFyZ2V0U3RyaW5nLCByZWd4U3RyKSB7XG4gICAgICBjb25zdCBtYXRjaGVzTGlzdCA9IHRhcmdldFN0cmluZy5tYXRjaChuZXcgUmVnRXhwKHJlZ3hTdHIsICdnJykpXG4gICAgICBjb25zdCByZXN1bHQgPSBbXVxuICAgICAgY29uc3QgaW5kaWNlc1JlZyA9IFtdXG4gICAgICBpZiAobWF0Y2hlc0xpc3QgJiYgbWF0Y2hlc0xpc3QubGVuZ3RoKSB7XG4gICAgICAgIG1hdGNoZXNMaXN0LmZvckVhY2gobWF0Y2hlZEl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IGV4aXN0SW5kZXggPSBpbmRpY2VzUmVnLmZpbmRJbmRleChpZHhJdGVtID0+IGlkeEl0ZW0uc3RyID09PSBtYXRjaGVkSXRlbSlcbiAgICAgICAgICBsZXQgaW5kZXhcbiAgICAgICAgICBpZiAoZXhpc3RJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICBpZiAoaW5kaWNlc1JlZ1tleGlzdEluZGV4XSAmJiBpbmRpY2VzUmVnW2V4aXN0SW5kZXhdLnJlZ2V4KSB7XG4gICAgICAgICAgICAgIGluZGV4ID0gaW5kaWNlc1JlZ1tleGlzdEluZGV4XS5yZWdleC5leGVjKHRhcmdldFN0cmluZykuaW5kZXhcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbUluZGljZXNSZWdleCA9IG5ldyBSZWdFeHAobWF0Y2hlZEl0ZW0sICdnJylcbiAgICAgICAgICAgIGluZGV4ID0gaXRlbUluZGljZXNSZWdleC5leGVjKHRhcmdldFN0cmluZykuaW5kZXhcbiAgICAgICAgICAgIGluZGljZXNSZWcucHVzaCh7XG4gICAgICAgICAgICAgIHN0cjogU3RyaW5nKG1hdGNoZWRJdGVtKSxcbiAgICAgICAgICAgICAgcmVnZXg6IGl0ZW1JbmRpY2VzUmVnZXhcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgIDA6IFN0cmluZyhtYXRjaGVkSXRlbSksXG4gICAgICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG5cbiAgICBhZGRGYWxsYmFja1ZhbHVlcyAoKSB7XG4gICAgICBjb25zdCB0aW1lVmFsdWUgPSB7fVxuICAgICAgdGhpcy5pblVzZS50eXBlcy5mb3JFYWNoKHR5cGUgPT4ge1xuICAgICAgICB0aW1lVmFsdWVbdGhpcy5nZXRUb2tlbkJ5VHlwZSh0eXBlKV0gPSAnJ1xuICAgICAgfSlcbiAgICAgIHRoaXMudGltZVZhbHVlID0gdGltZVZhbHVlXG4gICAgfSxcblxuICAgIHNldFZhbHVlRnJvbVN0cmluZyAocGFyc2VkVmFsdWUsIHRva2VuKSB7XG4gICAgICBpZiAoIXRva2VuIHx8ICFwYXJzZWRWYWx1ZSkgeyByZXR1cm4gJycgfVxuICAgICAgY29uc3QgdG9rZW5UeXBlID0gdGhpcy5nZXRUb2tlblR5cGUodG9rZW4pXG4gICAgICBpZiAoIXRva2VuVHlwZSB8fCAhdG9rZW5UeXBlLmxlbmd0aCkgeyByZXR1cm4gJycgfVxuICAgICAgY29uc3Qgc3RkVmFsdWUgPSAocGFyc2VkVmFsdWUgIT09IHRoaXMuZ2V0VG9rZW5CeVR5cGUodG9rZW5UeXBlKSkgPyBwYXJzZWRWYWx1ZSA6ICcnXG4gICAgICB0aGlzW3Rva2VuVHlwZV0gPSBzdGRWYWx1ZVxuICAgICAgcmV0dXJuIHN0ZFZhbHVlXG4gICAgfSxcblxuICAgIGZpbGxWYWx1ZXMgKGZvcmNlRW1pdCkge1xuICAgICAgY29uc3QgZnVsbFZhbHVlcyA9IHt9XG5cbiAgICAgIGNvbnN0IGJhc2VIb3VyID0gdGhpcy5ob3VyXG4gICAgICBjb25zdCBiYXNlSG91clR5cGUgPSB0aGlzLmhvdXJUeXBlXG5cbiAgICAgIGxldCBhcG1WYWx1ZVxuXG4gICAgICAvLyBIb3VyIHR5cGUgb3IgaG91ciB2YWx1ZSBpcyBOT1Qgc2V0IGluIHRoZSBcImZvcm1hdFwiIHN0cmluZ1xuICAgICAgaWYgKCFiYXNlSG91clR5cGUgfHwgIXRoaXMuaXNOdW1iZXIoYmFzZUhvdXIpKSB7XG4gICAgICAgIENPTkZJRy5IT1VSX1RPS0VOUy5mb3JFYWNoKHRva2VuID0+IGZ1bGxWYWx1ZXNbdG9rZW5dID0gJycpXG4gICAgICAgIGFwbVZhbHVlID0gdGhpcy5sb3dlckNhc2VkQXBtKHRoaXMuYXBtIHx8ICcnKVxuICAgICAgICBmdWxsVmFsdWVzLmEgPSBhcG1WYWx1ZVxuICAgICAgICBmdWxsVmFsdWVzLkEgPSBhcG1WYWx1ZS50b1VwcGVyQ2FzZSgpXG5cbiAgICAgIC8vIEJvdGggSG91ciB0eXBlIGFuZCB2YWx1ZSBhcmUgc2V0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBob3VyVmFsdWUgPSArYmFzZUhvdXJcbiAgICAgICAgY29uc3QgYXBtVmFsdWUgPSAodGhpcy5iYXNlT24xMkhvdXJzICYmIHRoaXMuYXBtKSA/IHRoaXMubG93ZXJDYXNlZEFwbSh0aGlzLmFwbSkgOiBmYWxzZVxuXG4gICAgICAgIENPTkZJRy5IT1VSX1RPS0VOUy5mb3JFYWNoKCh0b2tlbikgPT4ge1xuICAgICAgICAgIGlmICh0b2tlbiA9PT0gYmFzZUhvdXJUeXBlKSB7XG4gICAgICAgICAgICBmdWxsVmFsdWVzW3Rva2VuXSA9IGJhc2VIb3VyXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmFsdWVcbiAgICAgICAgICBsZXQgYXBtXG4gICAgICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICBjYXNlICdISCc6XG4gICAgICAgICAgICBjYXNlICdrJzpcbiAgICAgICAgICAgIGNhc2UgJ2trJzpcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYmFzZU9uMTJIb3Vycykge1xuICAgICAgICAgICAgICAgIGlmIChhcG1WYWx1ZSA9PT0gJ3BtJykge1xuICAgICAgICAgICAgICAgICAgdmFsdWUgPSBob3VyVmFsdWUgPCAxMiA/IGhvdXJWYWx1ZSArIDEyIDogaG91clZhbHVlXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChbJ2snLCAna2snXS5pbmNsdWRlcyh0b2tlbikpIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gaG91clZhbHVlID09PSAxMiA/IDI0IDogaG91clZhbHVlXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gaG91clZhbHVlICUgMTJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFsnaycsICdrayddLmluY2x1ZGVzKHRva2VuKSkge1xuICAgICAgICAgICAgICAgICAgdmFsdWUgPSBob3VyVmFsdWUgPT09IDAgPyAyNCA6IGhvdXJWYWx1ZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZSA9IGhvdXJWYWx1ZSAlIDI0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGZ1bGxWYWx1ZXNbdG9rZW5dID0gdGhpcy5mb3JtYXRWYWx1ZSh0b2tlbiwgdmFsdWUpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgLy8gaCA8LT4gaGhcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYmFzZU9uMTJIb3Vycykge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gaG91clZhbHVlXG4gICAgICAgICAgICAgICAgYXBtID0gYXBtVmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgLy8gUmVhZCBmcm9tIG90aGVyIGhvdXIgZm9ybWF0c1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChob3VyVmFsdWUgPiAxMSAmJiBob3VyVmFsdWUgPCAyNCkge1xuICAgICAgICAgICAgICAgICAgYXBtID0gJ3BtJ1xuICAgICAgICAgICAgICAgICAgdmFsdWUgPSBob3VyVmFsdWUgPT09IDEyID8gMTIgOiBob3VyVmFsdWUgJSAxMlxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBhcG0gPSAnYW0nXG4gICAgICAgICAgICAgICAgICB2YWx1ZSA9IGhvdXJWYWx1ZSAlIDEyID09PSAwID8gMTIgOiBob3VyVmFsdWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZnVsbFZhbHVlc1t0b2tlbl0gPSB0aGlzLmZvcm1hdFZhbHVlKHRva2VuLCB2YWx1ZSlcbiAgICAgICAgICAgICAgZnVsbFZhbHVlcy5hID0gYXBtXG4gICAgICAgICAgICAgIGZ1bGxWYWx1ZXMuQSA9IGFwbS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBmdWxsVmFsdWVzLm0gPSB0aGlzLmZvcm1hdFZhbHVlKCdtJywgdGhpcy5taW51dGUpXG4gICAgICBmdWxsVmFsdWVzLm1tID0gdGhpcy5mb3JtYXRWYWx1ZSgnbW0nLCB0aGlzLm1pbnV0ZSlcbiAgICAgIGZ1bGxWYWx1ZXMucyA9IHRoaXMuZm9ybWF0VmFsdWUoJ3MnLCB0aGlzLnNlY29uZClcbiAgICAgIGZ1bGxWYWx1ZXMuc3MgPSB0aGlzLmZvcm1hdFZhbHVlKCdzcycsIHRoaXMuc2Vjb25kKVxuXG4gICAgICB0aGlzLmZ1bGxWYWx1ZXMgPSBmdWxsVmFsdWVzXG5cbiAgICAgIC8vIE9uIGxhenkgbW9kZSwgZW1pdCBgaW5wdXRgIGFuZCBgY2hhbmdlYCBldmVudHMgb25seSB3aGVuOlxuICAgICAgLy8gLSBUaGUgdXNlciBwaWNrIGEgbmV3IHZhbHVlIGFuZCB0aGVuIGNsb3NlIHRoZSBkcm9wZG93blxuICAgICAgLy8gLSBUaGUgdXNlciBjbGljayB0aGUgKFwieFwiKSBjbGVhciBidXR0b25cbiAgICAgIGlmICghdGhpcy5sYXp5IHx8IGZvcmNlRW1pdCkge1xuICAgICAgICB0aGlzLmVtaXRUaW1lVmFsdWUoKVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jbG9zZU9uQ29tcGxldGUgJiYgdGhpcy5hbGxWYWx1ZVNlbGVjdGVkICYmIHRoaXMuc2hvd0Ryb3Bkb3duKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlQWN0aXZlKClcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0RnVsbERhdGEgKCkge1xuICAgICAgaWYgKCF0aGlzLmZ1bGxWYWx1ZXMpIHtcbiAgICAgICAgdGhpcy5maWxsVmFsdWVzKClcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGE6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5mdWxsVmFsdWVzKSksXG4gICAgICAgIGRpc3BsYXlUaW1lOiB0aGlzLmlucHV0SXNFbXB0eSA/ICcnIDogU3RyaW5nKHRoaXMuZGlzcGxheVRpbWUpXG4gICAgICB9XG4gICAgfSxcblxuICAgIGVtaXRUaW1lVmFsdWUgKCkge1xuICAgICAgaWYgKHRoaXMubGF6eSAmJiB0aGlzLmJha0Rpc3BsYXlUaW1lID09PSB0aGlzLmRpc3BsYXlUaW1lKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnTW9kZSkge1xuICAgICAgICAgIHRoaXMuZGVidWdMb2coJ1RoZSB2YWx1ZSBkb2VzIG5vdCBjaGFuZ2Ugb24gYGxhenlgIG1vZGUuIFNraXAgdGhlIGVtaXR0aW5nIGBpbnB1dGAgYW5kIGBjaGFuZ2VgIGV2ZW50LicpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZ1bGxEYXRhID0gdGhpcy5nZXRGdWxsRGF0YSgpXG5cbiAgICAgIGlmICh0aGlzLnVzZVN0cmluZ1ZhbHVlKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgZnVsbERhdGEuZGlzcGxheVRpbWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmdWxsVmFsdWVzID0gZnVsbERhdGEuZGF0YVxuICAgICAgICBjb25zdCB0b2tlbnNJblVzZSA9IHRoaXMuaW5Vc2UudG9rZW5zIHx8IFtdXG4gICAgICAgIGNvbnN0IHRpbWVWYWx1ZSA9IHt9XG4gICAgICAgIHRva2Vuc0luVXNlLmZvckVhY2goKHRva2VuKSA9PiB7XG4gICAgICAgICAgdGltZVZhbHVlW3Rva2VuXSA9IGZ1bGxWYWx1ZXNbdG9rZW5dIHx8ICcnXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aW1lVmFsdWUpKSlcbiAgICAgIH1cblxuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgZnVsbERhdGEpXG4gICAgfSxcblxuICAgIHRyYW5zbGF0ZTEyaFJhbmdlICh2YWx1ZSkge1xuICAgICAgY29uc3QgdmFsdWVUID0gdGhpcy5tYXRjaDEyaFJhbmdlKHZhbHVlKVxuICAgICAgaWYgKCt2YWx1ZVRbMV0gPT09IDEyKSB7XG4gICAgICAgIHJldHVybiArdmFsdWVUWzFdICsgKHZhbHVlVFsyXS50b0xvd2VyQ2FzZSgpID09PSAncCcgPyAwIDogMTIpXG4gICAgICB9XG4gICAgICByZXR1cm4gK3ZhbHVlVFsxXSArICh2YWx1ZVRbMl0udG9Mb3dlckNhc2UoKSA9PT0gJ3AnID8gMTIgOiAwKVxuICAgIH0sXG5cbiAgICBpc0Rpc2FibGVkICh0eXBlLCB2YWx1ZSkge1xuICAgICAgaWYgKCF0aGlzLmlzQmFzaWNUeXBlKHR5cGUpIHx8ICF0aGlzLmluVXNlW3R5cGVdKSB7IHJldHVybiB0cnVlIH1cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc0Rpc2FibGVkSG91cih2YWx1ZSlcbiAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICBpZiAoIXRoaXNbYCR7dHlwZX1SYW5nZUxpc3RgXSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAhdGhpc1tgJHt0eXBlfVJhbmdlTGlzdGBdLmluY2x1ZGVzKHZhbHVlKVxuICAgICAgICBjYXNlICdhcG0nOlxuICAgICAgICAgIGlmICghdGhpcy5yZXN0cmljdGVkSG91clJhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICF0aGlzLmhhc1t0aGlzLmxvd2VyQ2FzZWRBcG0odmFsdWUpXVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfSxcblxuICAgIGlzRGlzYWJsZWRIb3VyICh2YWx1ZSkge1xuICAgICAgaWYgKCF0aGlzLnJlc3RyaWN0ZWRIb3VyUmFuZ2UpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICAgIGlmICh0aGlzLmJhc2VPbjEySG91cnMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFwbSB8fCAhdGhpcy5hcG0ubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmFwbS50b0xvd2VyQ2FzZSgpID09PSAnYW0nID8gJ2EnIDogJ3AnXG4gICAgICAgICAgcmV0dXJuICF0aGlzLnJlc3RyaWN0ZWRIb3VyUmFuZ2UuaW5jbHVkZXMoYCR7K3ZhbHVlfSR7dG9rZW59YClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRmFsbGJhY2sgZm9yICdISCcgYW5kICdIIGhvdXIgZm9ybWF0IHdpdGggYSBgaG91ci1yYW5nZWAgaW4gYSAxMi1ob3VyIGZvcm1cbiAgICAgIGlmIChcbiAgICAgICAgKHRoaXMuaG91clR5cGUgPT09ICdISCcgfHwgdGhpcy5ob3VyVHlwZSA9PT0gJ0gnKSAmJlxuICAgICAgICArdmFsdWUgPT09IDAgJiYgdGhpcy5yZXN0cmljdGVkSG91clJhbmdlLmluY2x1ZGVzKDI0KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgcmV0dXJuICF0aGlzLnJlc3RyaWN0ZWRIb3VyUmFuZ2UuaW5jbHVkZXMoK3ZhbHVlKVxuICAgIH0sXG5cbiAgICBub3RJbkludGVydmFsIChzZWN0aW9uLCB2YWx1ZSkge1xuICAgICAgaWYgKCFzZWN0aW9uIHx8ICF0aGlzLmlzTWludXRlT3JTZWNvbmQoc2VjdGlvbikpIHsgcmV0dXJuIH1cbiAgICAgIGlmICh0aGlzLm9wdHNbYCR7c2VjdGlvbn1JbnRlcnZhbGBdID09PSAxKSB7IHJldHVybiBmYWxzZSB9XG4gICAgICByZXR1cm4gK3ZhbHVlICUgdGhpcy5vcHRzW2Ake3NlY3Rpb259SW50ZXJ2YWxgXSAhPT0gMFxuICAgIH0sXG5cbiAgICByZW5kZXJSYW5nZUxpc3QgKHJhd1JhbmdlLCBzZWN0aW9uKSB7XG4gICAgICBpZiAoIXJhd1JhbmdlIHx8ICFzZWN0aW9uIHx8ICF0aGlzLmlzTWludXRlT3JTZWNvbmQoc2VjdGlvbikpIHsgcmV0dXJuIFtdIH1cbiAgICAgIGNvbnN0IHJhbmdlID0gW11cbiAgICAgIGxldCBmb3JtYXRlZFZhbHVlXG4gICAgICByYXdSYW5nZS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMiAmJiB0aGlzLmRlYnVnTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZyhgTmVzdGVkIGFycmF5IHdpdGhpbiBcIiR7c2VjdGlvbn0tcmFuZ2VcIiBtdXN0IGNvbnRhaW4gbm8gbW9yZSB0aGFuIHR3byBpdGVtcy4gT25seSB0aGUgZmlyc3QgdHdvIGl0ZW1zIG9mICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfSB3aWxsIGJlIHRha2VuIGludG8gYWNjb3VudC5gKVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBzdGFydCA9IHZhbHVlWzBdXG4gICAgICAgICAgY29uc3QgZW5kID0gdmFsdWVbMV0gfHwgdmFsdWVbMF1cbiAgICAgICAgICBmb3IgKGxldCBpID0gK3N0YXJ0OyBpIDw9ICtlbmQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKGkgPCAwIHx8IGkgPiA1OSkgeyBjb250aW51ZSB9XG4gICAgICAgICAgICBmb3JtYXRlZFZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZSh0aGlzLmdldFRva2VuQnlUeXBlKHNlY3Rpb24pLCBpKVxuICAgICAgICAgICAgaWYgKCFyYW5nZS5pbmNsdWRlcyhmb3JtYXRlZFZhbHVlKSkge1xuICAgICAgICAgICAgICByYW5nZS5wdXNoKGZvcm1hdGVkVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICgrdmFsdWUgPCAwIHx8ICt2YWx1ZSA+IDU5KSB7IHJldHVybiB9XG4gICAgICAgICAgZm9ybWF0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUodGhpcy5nZXRUb2tlbkJ5VHlwZShzZWN0aW9uKSwgdmFsdWUpXG4gICAgICAgICAgaWYgKCFyYW5nZS5pbmNsdWRlcyhmb3JtYXRlZFZhbHVlKSkge1xuICAgICAgICAgICAgcmFuZ2UucHVzaChmb3JtYXRlZFZhbHVlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJhbmdlLnNvcnQoKGwsIHIpID0+IHsgcmV0dXJuIGwgLSByIH0pXG4gICAgICAvLyBEZWJ1ZyBNb2RlXG4gICAgICBpZiAodGhpcy5kZWJ1Z01vZGUpIHtcbiAgICAgICAgY29uc3QgZnVsbExpc3QgPSAoc2VjdGlvbiA9PT0gJ21pbnV0ZScgPyB0aGlzLm1pbnV0ZXMgOiB0aGlzLnNlY29uZHMpIHx8IFtdXG4gICAgICAgIGNvbnN0IHZhbGlkSXRlbXMgPSBmdWxsTGlzdC5maWx0ZXIoaXRlbSA9PiByYW5nZS5pbmNsdWRlcyhpdGVtKSlcbiAgICAgICAgaWYgKCF2YWxpZEl0ZW1zIHx8ICF2YWxpZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChzZWN0aW9uID09PSAnbWludXRlJykge1xuICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZyhgVGhlIG1pbnV0ZSBsaXN0IGlzIGVtcHR5IGR1ZSB0byB0aGUgXCJtaW51dGUtcmFuZ2VcIiBjb25maWdcXG5taW51dGUtcmFuZ2U6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5taW51dGVSYW5nZSl9XFxubWludXRlLWludGVydmFsOiAke3RoaXMub3B0cy5taW51dGVJbnRlcnZhbH1gKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnTG9nKGBUaGUgc2Vjb25kIGxpc3QgaXMgZW1wdHkgZHVlIHRvIHRoZSBcInNlY29uZC1yYW5nZVwiIGNvbmZpZ1xcbnNlY29uZC1yYW5nZTogJHtKU09OLnN0cmluZ2lmeSh0aGlzLnNlY29uZFJhbmdlKX1cXG5zZWNvbmQtaW50ZXJ2YWw6ICR7dGhpcy5vcHRzLnNlY29uZEludGVydmFsfWApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmFuZ2VcbiAgICB9LFxuXG4gICAgZm9yY2VBcG1TZWxlY3Rpb24gKCkge1xuICAgICAgaWYgKHRoaXMubWFudWFsSW5wdXQpIHtcbiAgICAgICAgLy8gU2tpcCB0aGlzIHRvIGFsbG93IHVzZXJzIHRvIHBhc3RlIGEgc3RyaW5nIHZhbHVlIGZyb20gdGhlIGNsaXBib2FyZCBpbiBNYW51YWwgSW5wdXQgbW9kZVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmFwbVR5cGUgJiYgIXRoaXMuYXBtKSB7XG4gICAgICAgIGlmICh0aGlzLmhhcy5hbSB8fCB0aGlzLmhhcy5wbSkge1xuICAgICAgICAgIHRoaXMuZG9DbGVhckFwbUNoZWNraW5nID0gdHJ1ZVxuICAgICAgICAgIGNvbnN0IGFwbVZhbHVlID0gdGhpcy5oYXMuYW0gPyAnYW0nIDogJ3BtJ1xuICAgICAgICAgIHRoaXMuYXBtID0gdGhpcy5hcG1UeXBlID09PSAnQScgPyBhcG1WYWx1ZS50b1VwcGVyQ2FzZSgpIDogYXBtVmFsdWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBlbXB0eUFwbVNlbGVjdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcy5kb0NsZWFyQXBtQ2hlY2tpbmcgJiYgdGhpcy5ob3VyID09PSAnJyAmJiB0aGlzLm1pbnV0ZSA9PT0gJycgJiYgdGhpcy5zZWNvbmQgPT09ICcnKSB7XG4gICAgICAgIHRoaXMuYXBtID0gJydcbiAgICAgIH1cbiAgICAgIHRoaXMuZG9DbGVhckFwbUNoZWNraW5nID0gZmFsc2VcbiAgICB9LFxuXG4gICAgYXBtRGlzcGxheVRleHQgKGFwbVZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5hbVRleHQgJiYgdGhpcy5sb3dlckNhc2VkQXBtKGFwbVZhbHVlKSA9PT0gJ2FtJykge1xuICAgICAgICByZXR1cm4gdGhpcy5hbVRleHRcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnBtVGV4dCAmJiB0aGlzLmxvd2VyQ2FzZWRBcG0oYXBtVmFsdWUpID09PSAncG0nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBtVGV4dFxuICAgICAgfVxuICAgICAgcmV0dXJuIGFwbVZhbHVlXG4gICAgfSxcblxuICAgIHRvZ2dsZUFjdGl2ZSAoKSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm4gfVxuICAgICAgdGhpcy5pc0FjdGl2ZSA9ICF0aGlzLmlzQWN0aXZlXG5cbiAgICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMuaXNGb2N1c2luZyA9IHRydWVcbiAgICAgICAgaWYgKHRoaXMubWFudWFsSW5wdXQpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdmb2N1cycpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuaGlkZURyb3Bkb3duKSB7XG4gICAgICAgICAgdGhpcy5zZXREcm9wZG93blN0YXRlKHRydWUpXG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjb3JkIHRvIGNoZWNrIGlmIHZhbHVlIGRpZCBjaGFuZ2UgaW4gdGhlIGxhdGVyIHBoYXNlXG4gICAgICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgICAgICB0aGlzLmJha0Rpc3BsYXlUaW1lID0gU3RyaW5nKHRoaXMuZGlzcGxheVRpbWUgfHwgJycpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubWFudWFsSW5wdXQgJiYgIXRoaXMuaW5wdXRJc0VtcHR5KSB7XG4gICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMuaW5wdXQgJiYgdGhpcy4kcmVmcy5pbnB1dC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJiB0aGlzLiRyZWZzLmlucHV0LnNlbGVjdGlvbkVuZCA9PT0gdGhpcy5kaXNwbGF5VGltZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgLy8gU2VsZWN0IHRoZSBmaXJzdCBzbG90IGluc3RlYWQgb2YgdGhlIHdob2xlIHZhbHVlIHN0cmluZyB3aGVuIHRhYmJlZCBpblxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0U2xvdCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0Ryb3Bkb3duKSB7XG4gICAgICAgICAgdGhpcy5zZXREcm9wZG93blN0YXRlKGZhbHNlKVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWFudWFsSW5wdXQpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdibHVyJywgdGhpcy5nZXRGdWxsRGF0YSgpKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNGb2N1c2luZyA9IGZhbHNlXG4gICAgICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgICAgICB0aGlzLmZpbGxWYWx1ZXModHJ1ZSlcbiAgICAgICAgICB0aGlzLmJha0Rpc3BsYXlUaW1lID0gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucmVzdHJpY3RlZEhvdXJSYW5nZSAmJiB0aGlzLmJhc2VPbjEySG91cnMpIHtcbiAgICAgICAgdGhpcy5zaG93RHJvcGRvd24gPyB0aGlzLmZvcmNlQXBtU2VsZWN0aW9uKCkgOiB0aGlzLmVtcHR5QXBtU2VsZWN0aW9uKClcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNob3dEcm9wZG93bikge1xuICAgICAgICB0aGlzLmNoZWNrRm9yQXV0b1Njcm9sbCgpXG4gICAgICB9XG4gICAgfSxcblxuICAgIHNldERyb3Bkb3duU3RhdGUgKHRvU2hvdywgZnJvbVVzZXJDbGljayA9IGZhbHNlKSB7XG4gICAgICBpZiAodG9TaG93KSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvQm9keSkge1xuICAgICAgICAgIHRoaXMuYXBwZW5kRHJvcGRvd25Ub0JvZHkoKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMua2VlcEZvY3VzaW5nKClcbiAgICAgICAgaWYgKHRoaXMuYXV0b0RpcmVjdGlvbkVuYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmNoZWNrRHJvcERpcmVjdGlvbigpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSB0cnVlXG4gICAgICAgIHRoaXMuJGVtaXQoJ29wZW4nKSBcbiAgICAgICAgaWYgKGZyb21Vc2VyQ2xpY2spIHtcbiAgICAgICAgICBpZiAodGhpcy5maXhlZERyb3Bkb3duQnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLiRlbWl0KCdibHVyJywgdGhpcy5nZXRGdWxsRGF0YSgpKVxuICAgICAgICAgIHRoaXMuY2hlY2tGb3JBdXRvU2Nyb2xsKClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZVxuICAgICAgICB0aGlzLiRlbWl0KCdjbG9zZScsIHRoaXMuZ2V0RnVsbERhdGEoKSlcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5KSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVEcm9wZG93bkZyb21Cb2R5KClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhcHBlbmREcm9wZG93blRvQm9keSAoKSB7XG4gICAgICBjb25zdCBkcm9wZG93biA9IHRoaXMuJHJlZnMgJiYgdGhpcy4kcmVmcy5kcm9wZG93blxuICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF1cbiAgICAgIGlmIChib2R5ICYmIGRyb3Bkb3duKSB7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnVwZGF0ZURyb3Bkb3duUG9zKVxuICAgICAgICBkcm9wZG93bi5jbGFzc0xpc3QuYWRkKCd2dWVfX3RpbWUtcGlja2VyLWRyb3Bkb3duJylcbiAgICAgICAgdGhpcy51cGRhdGVEcm9wZG93blBvcygpXG4gICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZHJvcGRvd24pXG4gICAgICB9XG4gICAgfSxcblxuICAgIHVwZGF0ZURyb3Bkb3duUG9zICgpIHtcbiAgICAgIGlmICghdGhpcy5hcHBlbmRUb0JvZHkpIHsgcmV0dXJuIH1cbiAgICAgIGNvbnN0IGRyb3Bkb3duID0gdGhpcy4kcmVmcyAmJiB0aGlzLiRyZWZzLmRyb3Bkb3duXG4gICAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXVxuICAgICAgaWYgKGJvZHkgJiYgZHJvcGRvd24pIHtcbiAgICAgICAgY29uc3QgYm94ID0gdGhpcy4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25EaXJDbGFzcyA9PT0gJ2Ryb3AtdXAnKSB7XG4gICAgICAgICAgZHJvcGRvd24uc3R5bGUuYm90dG9tID0gYCR7d2luZG93LmlubmVySGVpZ2h0IC0gYm94Lnl9cHhgXG4gICAgICAgICAgZHJvcGRvd24uc3R5bGUudG9wID0gJ2F1dG8nXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZHJvcGRvd24uc3R5bGUudG9wID0gYCR7Ym94LnkgKyBib3guaGVpZ2h0fXB4YFxuICAgICAgICAgIGRyb3Bkb3duLnN0eWxlLmJvdHRvbSA9ICdhdXRvJ1xuICAgICAgICB9XG4gICAgICAgIGRyb3Bkb3duLnN0eWxlLmxlZnQgPSBgJHtib3gueH1weGBcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgcmVtb3ZlRHJvcGRvd25Gcm9tQm9keSAoKSB7XG4gICAgICBjb25zdCBkcm9wZG93biA9IHRoaXMuJHJlZnMgJiYgdGhpcy4kcmVmcy5kcm9wZG93blxuICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF1cbiAgICAgIGlmIChib2R5ICYmIGRyb3Bkb3duICYmIGJvZHkuY29udGFpbnMoZHJvcGRvd24pKSB7XG4gICAgICAgIGJvZHkucmVtb3ZlQ2hpbGQoZHJvcGRvd24pXG4gICAgICB9XG4gICAgICBpZiAoZHJvcGRvd24pIHtcbiAgICAgICAgZHJvcGRvd24uY2xhc3NMaXN0LnJlbW92ZSgndnVlX190aW1lLXBpY2tlci1kcm9wZG93bicpXG4gICAgICAgIGRyb3Bkb3duLnN0eWxlLnRvcCA9ICcnXG4gICAgICAgIGRyb3Bkb3duLnN0eWxlLmJvdHRvbSA9ICcnXG4gICAgICAgIGRyb3Bkb3duLnN0eWxlLmxlZnQgPSAnJ1xuICAgICAgICB0aGlzLiRlbC5hcHBlbmRDaGlsZChkcm9wZG93bilcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnVwZGF0ZURyb3Bkb3duUG9zKVxuICAgIH0sXG5cbiAgICBibHVyRXZlbnQgKCkge1xuICAgICAgaWYgKHRoaXMubWFudWFsSW5wdXQgJiYgIXRoaXMub3B0cy5oaWRlRHJvcGRvd24pIHtcbiAgICAgICAgLy8gaGlkZURyb3Bkb3duJ3MgYGJsdXJgIGV2ZW50IGlzIGhhbmRsZWQgc29tZXdoZXJlIGVsc2VcbiAgICAgICAgdGhpcy4kZW1pdCgnYmx1cicsIHRoaXMuZ2V0RnVsbERhdGEoKSlcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc2VsZWN0ICh0eXBlLCB2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuaXNCYXNpY1R5cGUodHlwZSkgJiYgIXRoaXMuaXNEaXNhYmxlZCh0eXBlLCB2YWx1ZSkpIHtcbiAgICAgICAgdGhpc1t0eXBlXSA9IHZhbHVlXG4gICAgICAgIGlmICh0aGlzLmRvQ2xlYXJBcG1DaGVja2luZykge1xuICAgICAgICAgIHRoaXMuZG9DbGVhckFwbUNoZWNraW5nID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBjbGVhclRpbWUgKCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuIH1cbiAgICAgIHRoaXMuaG91ciA9ICcnXG4gICAgICB0aGlzLm1pbnV0ZSA9ICcnXG4gICAgICB0aGlzLnNlY29uZCA9ICcnXG4gICAgICB0aGlzLmFwbSA9ICcnXG5cbiAgICAgIGlmICh0aGlzLm1hbnVhbElucHV0ICYmIHRoaXMuJHJlZnMgJiYgdGhpcy4kcmVmcy5pbnB1dCAmJiB0aGlzLiRyZWZzLmlucHV0LnZhbHVlLmxlbmd0aCkge1xuICAgICAgICB0aGlzLiRyZWZzLmlucHV0LnZhbHVlID0gJydcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubGF6eSkge1xuICAgICAgICB0aGlzLmZpbGxWYWx1ZXModHJ1ZSlcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy9cbiAgICAvLyBBdXRvLVNjcm9sbFxuICAgIC8vXG5cbiAgICBjaGVja0ZvckF1dG9TY3JvbGwgKCkge1xuICAgICAgaWYgKHRoaXMuaW5wdXRJc0VtcHR5KSB7IHJldHVybiB9XG4gICAgICBpZiAodGhpcy5hdXRvU2Nyb2xsKSB7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWRWYWx1ZXMoKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFkdmFuY2VkS2V5Ym9hcmQpIHtcbiAgICAgICAgLy8gQXV0by1mb2N1cyBvbiBzZWxlY3RlZCB2YWx1ZSBpbiB0aGUgZmlyc3QgY29sdW1uIGZvciBhZHZhbmNlZC1rZXlib2FyZFxuICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmlyc3RDb2x1bW4gPSB0aGlzLmluVXNlLnR5cGVzWzBdXG4gICAgICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkKGZpcnN0Q29sdW1uLCB0cnVlKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzY3JvbGxUb1NlbGVjdGVkIChjb2x1bW4sIGFsbG93RmFsbGJhY2sgPSBmYWxzZSkge1xuICAgICAgaWYgKCF0aGlzLnRpbWVWYWx1ZSB8fCB0aGlzLmlucHV0SXNFbXB0eSkgeyByZXR1cm4gfVxuICAgICAgbGV0IHRhcmdldExpc3RcbiAgICAgIGlmICh0aGlzLmFwcGVuZFRvQm9keSAmJiB0aGlzLiRyZWZzICYmIHRoaXMuJHJlZnMuZHJvcGRvd24pIHtcbiAgICAgICAgdGFyZ2V0TGlzdCA9IHRoaXMuJHJlZnMuZHJvcGRvd24ucXVlcnlTZWxlY3RvckFsbChgdWwuJHtjb2x1bW59c2ApWzBdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRMaXN0ID0gdGhpcy4kZWwucXVlcnlTZWxlY3RvckFsbChgdWwuJHtjb2x1bW59c2ApWzBdXG4gICAgICB9XG4gICAgICBsZXQgdGFyZ2V0VmFsdWUgPSB0aGlzLmFjdGl2ZUl0ZW1JbkNvbChjb2x1bW4pWzBdXG4gICAgICBpZiAoIXRhcmdldFZhbHVlICYmIGFsbG93RmFsbGJhY2spIHtcbiAgICAgICAgLy8gTm8gdmFsdWUgc2VsZWN0ZWQgaW4gdGhlIHRhcmdldCBjb2x1bW4sIGZhbGxiYWNrIHRvIHRoZSBmaXJzdCBmb3VuZCB2YWxpZCBpdGVtXG4gICAgICAgIHRhcmdldFZhbHVlID0gdGhpcy52YWxpZEl0ZW1zSW5Db2woY29sdW1uKVswXVxuICAgICAgfVxuICAgICAgaWYgKHRhcmdldExpc3QgJiYgdGFyZ2V0VmFsdWUpIHtcbiAgICAgICAgdGFyZ2V0TGlzdC5zY3JvbGxUb3AgPSB0YXJnZXRWYWx1ZS5vZmZzZXRUb3AgfHwgMFxuICAgICAgICBpZiAodGhpcy5hZHZhbmNlZEtleWJvYXJkKSB7XG4gICAgICAgICAgdGFyZ2V0VmFsdWUuZm9jdXMoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHNjcm9sbFRvU2VsZWN0ZWRWYWx1ZXMgKCkge1xuICAgICAgaWYgKCF0aGlzLnRpbWVWYWx1ZSB8fCB0aGlzLmlucHV0SXNFbXB0eSkgeyByZXR1cm4gfVxuICAgICAgdGhpcy5pblVzZS50eXBlcy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWQoc2VjdGlvbilcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIC8vXG4gICAgLy8gQWRkaXRpb25hbCBLZXlib2FyZCBOYXZpZ2F0aW9uXG4gICAgLy9cblxuICAgIG9uRm9jdXMgKCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuIH1cbiAgICAgIGlmICghdGhpcy5pc0ZvY3VzaW5nKSB7XG4gICAgICAgIHRoaXMuaXNGb2N1c2luZyA9IHRydWVcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZUFjdGl2ZSgpXG4gICAgICB9XG4gICAgfSxcblxuICAgIGVzY0JsdXIgKCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuIH1cbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5kZWJvdW5jZVRpbWVyKVxuICAgICAgdGhpcy5pc0ZvY3VzaW5nID0gZmFsc2VcbiAgICAgIGNvbnN0IGlucHV0Qm94ID0gdGhpcy4kZWwucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQuZGlzcGxheS10aW1lJylbMF1cbiAgICAgIGlmIChpbnB1dEJveCkge1xuICAgICAgICBpbnB1dEJveC5ibHVyKClcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZGVib3VuY2VCbHVyICgpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybiB9XG4gICAgICB0aGlzLmlzRm9jdXNpbmcgPSBmYWxzZVxuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZXIpXG4gICAgICB0aGlzLmRlYm91bmNlVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5kZWJvdW5jZVRpbWVyKVxuICAgICAgICB0aGlzLm9uQmx1cigpXG4gICAgICB9LCB0aGlzLm9wdHMuYmx1ckRlbGF5KVxuICAgIH0sXG5cbiAgICBvbkJsdXIgKCkge1xuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmlzRm9jdXNpbmcgJiYgdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZUFjdGl2ZSgpXG4gICAgICB9XG4gICAgfSxcblxuICAgIGtlZXBGb2N1c2luZyAoKSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm4gfVxuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZXIpXG4gICAgICBpZiAoIXRoaXMuaXNGb2N1c2luZykge1xuICAgICAgICB0aGlzLmlzRm9jdXNpbmcgPSB0cnVlXG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uVGFiIChjb2x1bW4sIHZhbHVlLCBldnQpIHtcbiAgICAgIGlmICh0aGlzLmFwcGVuZFRvQm9keSAmJiBldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgY29uc3QgZmlyc3RDb2x1bW4gPSB0aGlzLmluVXNlLnR5cGVzWzBdXG4gICAgICAgIGlmIChjb2x1bW4gIT09IGZpcnN0Q29sdW1uKSB7IHJldHVybiB9XG4gICAgICAgIGNvbnN0IGZpcnN0VmFsaWRWYWx1ZSA9IHRoaXMudmFsaWRJdGVtc0luQ29sKGZpcnN0Q29sdW1uKVswXVxuICAgICAgICAvLyBJcyB0aGUgZmlyc3QgdmFsaWQgaXRlbSBpbiB0aGUgZmlyc3QgY29sdW1uXG4gICAgICAgIGlmIChmaXJzdFZhbGlkVmFsdWUgJiYgZmlyc3RWYWxpZFZhbHVlLmdldEF0dHJpYnV0ZSgnZGF0YS1rZXknKSA9PT0gU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgLy8gRm9jdXMgYmFjayBvbiA8aW5wdXQ+XG4gICAgICAgICAgaWYgKHRoaXMuJHJlZnMgJiYgdGhpcy4kcmVmcy5pbnB1dCkge1xuICAgICAgICAgICAgdGhpcy4kcmVmcy5pbnB1dC5mb2N1cygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHZhbGlkSXRlbXNJbkNvbCAoY29sdW1uKSB7XG4gICAgICBjb25zdCBjb2x1bW5DbGFzcyA9IGAke2NvbHVtbn1zYFxuICAgICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5ICYmIHRoaXMuJHJlZnMgJiYgdGhpcy4kcmVmcy5kcm9wZG93bikge1xuICAgICAgICByZXR1cm4gdGhpcy4kcmVmcy5kcm9wZG93bi5xdWVyeVNlbGVjdG9yQWxsKGB1bC4ke2NvbHVtbkNsYXNzfSA+IGxpOm5vdCguaGludCk6bm90KFtkaXNhYmxlZF0pYClcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKGB1bC4ke2NvbHVtbkNsYXNzfSA+IGxpOm5vdCguaGludCk6bm90KFtkaXNhYmxlZF0pYClcbiAgICB9LFxuXG4gICAgYWN0aXZlSXRlbUluQ29sIChjb2x1bW4pIHtcbiAgICAgIGNvbnN0IGNvbHVtbkNsYXNzID0gYCR7Y29sdW1ufXNgXG4gICAgICBpZiAodGhpcy5hcHBlbmRUb0JvZHkgJiYgdGhpcy4kcmVmcyAmJiB0aGlzLiRyZWZzLmRyb3Bkb3duKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRyZWZzLmRyb3Bkb3duLnF1ZXJ5U2VsZWN0b3JBbGwoYHVsLiR7Y29sdW1uQ2xhc3N9ID4gbGkuYWN0aXZlOm5vdCguaGludClgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwoYHVsLiR7Y29sdW1uQ2xhc3N9ID4gbGkuYWN0aXZlOm5vdCguaGludClgKVxuICAgIH0sXG5cbiAgICBnZXRDbG9zZXN0U2libGluZyAoY29sdW1uLCBkYXRhS2V5LCBnZXRQcmV2aW91cyA9IGZhbHNlKSB7XG4gICAgICBjb25zdCBzaWJsaW5nc0luQ29sID0gdGhpcy52YWxpZEl0ZW1zSW5Db2woY29sdW1uKVxuICAgICAgY29uc3Qgc2VsZkluZGV4ID0gQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleC5jYWxsKHNpYmxpbmdzSW5Db2wsIChzYmwpID0+IHtcbiAgICAgICAgcmV0dXJuIHNibC5nZXRBdHRyaWJ1dGUoJ2RhdGEta2V5JykgPT09IGRhdGFLZXlcbiAgICAgIH0pXG5cbiAgICAgIC8vIEFscmVhZHkgdGhlIGZpcnN0IGl0ZW1cbiAgICAgIGlmIChnZXRQcmV2aW91cyAmJiBzZWxmSW5kZXggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHNpYmxpbmdzSW5Db2xbc2libGluZ3NJbkNvbC5sZW5ndGggLSAxXVxuICAgICAgfVxuICAgICAgLy8gQWxyZWFkeSB0aGUgbGFzdCBpdGVtXG4gICAgICBpZiAoIWdldFByZXZpb3VzICYmIHNlbGZJbmRleCA9PT0gc2libGluZ3NJbkNvbC5sZW5ndGggLSAxKSB7XG4gICAgICAgIHJldHVybiBzaWJsaW5nc0luQ29sWzBdXG4gICAgICB9XG4gICAgICAvLyBTZWxlY3RlZCB2YWx1ZSBub3QgaW4gdGhlIHZhbGlkIHZhbHVlcyBsaXN0XG4gICAgICBpZiAoc2VsZkluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gc2libGluZ3NJbkNvbFswXVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2V0UHJldmlvdXMpIHtcbiAgICAgICAgcmV0dXJuIHNpYmxpbmdzSW5Db2xbc2VsZkluZGV4IC0gMV1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzaWJsaW5nc0luQ29sW3NlbGZJbmRleCArIDFdXG4gICAgfSxcblxuICAgIHByZXZJdGVtIChjb2x1bW4sIGRhdGFLZXksIGlzTWFudWFsSW5wdXQgPSBmYWxzZSkge1xuICAgICAgY29uc3QgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0Q2xvc2VzdFNpYmxpbmcoY29sdW1uLCBkYXRhS2V5LCB0cnVlKVxuICAgICAgaWYgKHRhcmdldEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGlzTWFudWFsSW5wdXQgPyB0YXJnZXRJdGVtIDogdGFyZ2V0SXRlbS5mb2N1cygpXG4gICAgICB9XG4gICAgfSxcblxuICAgIG5leHRJdGVtIChjb2x1bW4sIGRhdGFLZXksIGlzTWFudWFsSW5wdXQgPSBmYWxzZSkge1xuICAgICAgY29uc3QgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0Q2xvc2VzdFNpYmxpbmcoY29sdW1uLCBkYXRhS2V5LCBmYWxzZSlcbiAgICAgIGlmICh0YXJnZXRJdGVtKSB7XG4gICAgICAgIHJldHVybiBpc01hbnVhbElucHV0ID8gdGFyZ2V0SXRlbSA6IHRhcmdldEl0ZW0uZm9jdXMoKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBnZXRTaWRlQ29sdW1uTmFtZSAoY3VycmVudENvbHVtbiwgdG9MZWZ0ID0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDb2x1bW5JbmRleCA9IHRoaXMuaW5Vc2UudHlwZXMuaW5kZXhPZihjdXJyZW50Q29sdW1uKVxuICAgICAgaWYgKHRvTGVmdCAmJiBjdXJyZW50Q29sdW1uSW5kZXggPD0gMCkge1xuICAgICAgICBpZiAodGhpcy5kZWJ1Z01vZGUpIHtcbiAgICAgICAgICB0aGlzLmRlYnVnTG9nKCdZb3VcXCdyZSBpbiB0aGUgbGVmdG1vc3QgbGlzdCBhbHJlYWR5JylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH0gZWxzZSBpZiAoIXRvTGVmdCAmJiBjdXJyZW50Q29sdW1uSW5kZXggPT09ICh0aGlzLmluVXNlLnR5cGVzLmxlbmd0aCAtIDEpKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnTW9kZSkge1xuICAgICAgICAgIHRoaXMuZGVidWdMb2coJ1lvdVxcJ3JlIGluIHRoZSByaWdodG1vc3QgbGlzdCBhbHJlYWR5JylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmluVXNlLnR5cGVzW3RvTGVmdCA/IGN1cnJlbnRDb2x1bW5JbmRleCAtIDEgOiBjdXJyZW50Q29sdW1uSW5kZXggKyAxXVxuICAgIH0sXG5cbiAgICBnZXRGaXJzdEl0ZW1JblNpZGVDb2x1bW4gKGN1cnJlbnRDb2x1bW4sIHRvTGVmdCA9IGZhbHNlKSB7XG4gICAgICBjb25zdCB0YXJnZXRDb2x1bW4gPSB0aGlzLmdldFNpZGVDb2x1bW5OYW1lKGN1cnJlbnRDb2x1bW4sIHRvTGVmdClcbiAgICAgIGlmICghdGFyZ2V0Q29sdW1uKSB7IHJldHVybiB9XG4gICAgICBjb25zdCBsaXN0SXRlbXMgPSB0aGlzLnZhbGlkSXRlbXNJbkNvbCh0YXJnZXRDb2x1bW4pXG4gICAgICBpZiAobGlzdEl0ZW1zICYmIGxpc3RJdGVtc1swXSkge1xuICAgICAgICByZXR1cm4gbGlzdEl0ZW1zWzBdXG4gICAgICB9XG4gICAgfSxcblxuICAgIGdldEFjdGl2ZUl0ZW1JblNpZGVDb2x1bW4gKGN1cnJlbnRDb2x1bW4sIHRvTGVmdCA9IGZhbHNlKSB7XG4gICAgICBjb25zdCB0YXJnZXRDb2x1bW4gPSB0aGlzLmdldFNpZGVDb2x1bW5OYW1lKGN1cnJlbnRDb2x1bW4sIHRvTGVmdClcbiAgICAgIGlmICghdGFyZ2V0Q29sdW1uKSB7IHJldHVybiB9XG4gICAgICBjb25zdCBhY3RpdmVJdGVtcyA9IHRoaXMuYWN0aXZlSXRlbUluQ29sKHRhcmdldENvbHVtbilcbiAgICAgIGlmIChhY3RpdmVJdGVtcyAmJiBhY3RpdmVJdGVtc1swXSkge1xuICAgICAgICByZXR1cm4gYWN0aXZlSXRlbXNbMF1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgdG9MZWZ0Q29sdW1uIChjdXJyZW50Q29sdW1uKSB7XG4gICAgICBjb25zdCB0YXJnZXRJdGVtID0gdGhpcy5nZXRBY3RpdmVJdGVtSW5TaWRlQ29sdW1uKGN1cnJlbnRDb2x1bW4sIHRydWUpIHx8IHRoaXMuZ2V0Rmlyc3RJdGVtSW5TaWRlQ29sdW1uKGN1cnJlbnRDb2x1bW4sIHRydWUpXG4gICAgICBpZiAodGFyZ2V0SXRlbSkge1xuICAgICAgICB0YXJnZXRJdGVtLmZvY3VzKClcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgdG9SaWdodENvbHVtbiAoY3VycmVudENvbHVtbikge1xuICAgICAgY29uc3QgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0QWN0aXZlSXRlbUluU2lkZUNvbHVtbihjdXJyZW50Q29sdW1uLCBmYWxzZSkgfHwgdGhpcy5nZXRGaXJzdEl0ZW1JblNpZGVDb2x1bW4oY3VycmVudENvbHVtbiwgZmFsc2UpXG4gICAgICBpZiAodGFyZ2V0SXRlbSkge1xuICAgICAgICB0YXJnZXRJdGVtLmZvY3VzKClcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy9cbiAgICAvLyBNYW51YWwgSW5wdXRcbiAgICAvL1xuXG4gICAgb25Nb3VzZURvd24gKCkge1xuICAgICAgaWYgKCF0aGlzLm1hbnVhbElucHV0KSB7IHJldHVybiB9XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2VsZWN0aW9uVGltZXIpXG4gICAgICB0aGlzLnNlbGVjdGlvblRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2VsZWN0aW9uVGltZXIpXG4gICAgICAgIGlmICh0aGlzLiRyZWZzICYmIHRoaXMuJHJlZnMuaW5wdXQpIHtcbiAgICAgICAgICBjb25zdCBuZWFyZXN0U2xvdCA9IHRoaXMuZ2V0TmVhcmVzdENodW5rQnlQb3ModGhpcy4kcmVmcy5pbnB1dC5zZWxlY3Rpb25TdGFydCB8fCAwKVxuICAgICAgICAgIHRoaXMuZGVib3VuY2VTZXRJbnB1dFNlbGVjdGlvbihuZWFyZXN0U2xvdClcbiAgICAgICAgfVxuICAgICAgfSwgNTApXG4gICAgfSxcblxuICAgIGtleURvd25IYW5kbGVyIChldnQpIHtcbiAgICAgIGlmIChldnQuaXNDb21wb3NpbmcgfHwgZXZ0LmtleUNvZGUgPT09IDIyOSkge1xuICAgICAgICAvLyBTa2lwIElNRSBpbnB1dHNcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgLy8gTnVtYmVyc1xuICAgICAgaWYgKChldnQua2V5Q29kZSA+PSA0OCAmJiBldnQua2V5Q29kZSA8PSA1NykgfHwgKGV2dC5rZXlDb2RlID49IDk2ICYmIGV2dC5rZXlDb2RlIDw9IDEwNSkpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgdGhpcy5rZXlib2FyZElucHV0KGV2dC5rZXkpXG4gICAgICAvLyBBfFB8TVxuICAgICAgfSBlbHNlIGlmIChbNjUsIDgwLCA3N10uaW5jbHVkZXMoZXZ0LmtleUNvZGUpKSB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHRoaXMua2V5Ym9hcmRJbnB1dChldnQua2V5LCB0cnVlKVxuICAgICAgLy8gQXJyb3cga2V5c1xuICAgICAgfSBlbHNlIGlmIChldnQua2V5Q29kZSA+PSAzNyAmJiBldnQua2V5Q29kZSA8PSA0MCkge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICB0aGlzLmNsZWFyS2JJbnB1dExvZygpXG4gICAgICAgIHRoaXMuYXJyb3dIYW5kbGVyKGV2dClcbiAgICAgIC8vIERlbGV0ZXxCYWNrc3BhY2VcbiAgICAgIH0gZWxzZSBpZiAoZXZ0LmtleUNvZGUgPT09IDggfHwgZXZ0LmtleUNvZGUgPT09IDQ2KSB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHRoaXMuY2xlYXJLYklucHV0TG9nKClcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKVxuICAgICAgLy8gVGFiXG4gICAgICB9IGVsc2UgaWYgKGV2dC5rZXlDb2RlID09PSA5KSB7XG4gICAgICAgIHRoaXMuY2xlYXJLYklucHV0TG9nKClcbiAgICAgICAgdGhpcy50YWJIYW5kbGVyKGV2dClcbiAgICAgIC8vIENvbG9ufFNwYWNlXG4gICAgICB9IGVsc2UgaWYgKGV2dC5rZXlDb2RlID09PSAxODYgfHwgZXZ0LmtleUNvZGUgPT09IDMyKSB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHRoaXMuY2xlYXJLYklucHV0TG9nKClcbiAgICAgICAgdGhpcy50b05leHRTbG90KClcbiAgICAgIC8vIFByZXZlbnQgYW55IE5vbi1FU0MgYW5kIG5vbi1wYXN0aW5nIGlucHV0c1xuICAgICAgfSBlbHNlIGlmIChldnQua2V5Q29kZSAhPT0gMjcgJiYgIShldnQubWV0YUtleSB8fCBldnQuY3RybEtleSkpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgb25Db21wb3N0aW9uU3RhcnQgKGV2dCkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgdGhpcy5iYWtDdXJyZW50UG9zID0gdGhpcy5nZXRDdXJyZW50VG9rZW5DaHVuaygpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxuXG4gICAgb25Db21wb3N0aW9uRW5kIChldnQpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgICAgY29uc3QgY3BzRGF0YSA9IGV2dC5kYXRhXG4gICAgICBsZXQgaW5wdXRJc0N1c3RvbUFwbVRleHQgPSBmYWxzZVxuICAgICAgaWYgKHRoaXMuaGFzLmN1c3RvbUFwbVRleHQpIHtcbiAgICAgICAgaW5wdXRJc0N1c3RvbUFwbVRleHQgPSB0aGlzLmlzQ3VzdG9tQXBtVGV4dChjcHNEYXRhKVxuICAgICAgfVxuICAgICAgaWYgKGlucHV0SXNDdXN0b21BcG1UZXh0KSB7XG4gICAgICAgIHRoaXMuc2V0U2FuaXRpemVkVmFsdWVUb1NlY3Rpb24oJ2FwbScsIGlucHV0SXNDdXN0b21BcG1UZXh0KVxuICAgICAgfVxuXG4gICAgICB0aGlzLiRyZWZzLmlucHV0LnZhbHVlID0gdGhpcy5oYXMuY3VzdG9tQXBtVGV4dCA/IHRoaXMuY3VzdG9tRGlzcGxheVRpbWUgOiB0aGlzLmRpc3BsYXlUaW1lXG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYmFrQ3VycmVudFBvcykge1xuICAgICAgICAgIGNvbnN0IGJha1BvcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5iYWtDdXJyZW50UG9zKSlcbiAgICAgICAgICBpZiAoaW5wdXRJc0N1c3RvbUFwbVRleHQpIHtcbiAgICAgICAgICAgIGJha1Bvcy5lbmQgPSAoYmFrUG9zLnN0YXJ0ICsgY3BzRGF0YS5sZW5ndGgpXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZGVib3VuY2VTZXRJbnB1dFNlbGVjdGlvbihiYWtQb3MpXG4gICAgICAgICAgdGhpcy5iYWtDdXJyZW50UG9zID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSxcblxuICAgIHBhc3RlSGFuZGxlciAoZXZ0KSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgICAgbGV0IHBhc3RpbmdUZXh0ID0gKGV2dC5jbGlwYm9hcmREYXRhIHx8IHdpbmRvdy5jbGlwYm9hcmREYXRhKS5nZXREYXRhKCd0ZXh0JylcbiAgICAgIGlmICh0aGlzLmRlYnVnTW9kZSkge1xuICAgICAgICB0aGlzLmRlYnVnTG9nKGBQYXN0aW5nIHZhbHVlIFwiJHtwYXN0aW5nVGV4dH1cIiBmcm9tIGNsaXBib2FyZGApXG4gICAgICB9XG4gICAgICBpZiAoIXBhc3RpbmdUZXh0IHx8ICFwYXN0aW5nVGV4dC5sZW5ndGgpIHsgcmV0dXJuIH1cblxuICAgICAgLy8gUmVwbGFjZSBjdXN0b20gQU0vUE0gdGV4dCAoaWYgYW55KVxuICAgICAgaWYgKHRoaXMuaGFzLmN1c3RvbUFwbVRleHQpIHtcbiAgICAgICAgcGFzdGluZ1RleHQgPSB0aGlzLnJlcGxhY2VDdXN0b21BcG1UZXh0KHBhc3RpbmdUZXh0KVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pbnB1dElzRW1wdHkpIHtcbiAgICAgICAgdGhpcy5yZWFkU3RyaW5nVmFsdWVzKHBhc3RpbmdUZXh0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5rYklucHV0TG9nID0gcGFzdGluZ1RleHQuc3Vic3RyKC0yLCAyKVxuICAgICAgICB0aGlzLnNldEtiSW5wdXQoKVxuICAgICAgICB0aGlzLmRlYm91bmNlQ2xlYXJLYkxvZygpXG4gICAgICB9XG4gICAgfSxcblxuICAgIGFycm93SGFuZGxlciAoZXZ0KSB7XG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSB7IDM3OiAnTCcsIDM4OiAnVScsIDM5OiAnUicsIDQwOiAnRCcgfVtldnQua2V5Q29kZV1cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdVJyB8fCBkaXJlY3Rpb24gPT09ICdEJykge1xuICAgICAgICBpZiAodGhpcy5pbnB1dElzRW1wdHkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0VmFsaWRWYWx1ZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudENodW5rID0gdGhpcy5nZXRDdXJyZW50VG9rZW5DaHVuaygpXG4gICAgICAgICAgaWYgKCFjdXJyZW50Q2h1bmspIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0Rmlyc3RWYWxpZFZhbHVlKClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB0b2tlblR5cGUgPSBjdXJyZW50Q2h1bmsudHlwZVxuICAgICAgICAgIHRoaXMuZ2V0Q2xvc2VzdFZhbGlkSXRlbUluQ29sKHRva2VuVHlwZSwgdGhpc1t0b2tlblR5cGVdLCBkaXJlY3Rpb24pXG4gICAgICAgICAgY29uc3QgbmV3Q2h1bmtQb3MgPSB0aGlzLmdldEN1cnJlbnRUb2tlbkNodW5rKClcbiAgICAgICAgICB0aGlzLmRlYm91bmNlU2V0SW5wdXRTZWxlY3Rpb24obmV3Q2h1bmtQb3MpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnUicpIHtcbiAgICAgICAgdGhpcy50b0xhdGVyYWxUb2tlbihmYWxzZSlcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnTCcpIHtcbiAgICAgICAgdGhpcy50b0xhdGVyYWxUb2tlbih0cnVlKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICB0YWJIYW5kbGVyIChldnQpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dElzRW1wdHkgJiYgdGhpcy50b2tlbkNodW5rc1BvcyAmJiB0aGlzLnRva2VuQ2h1bmtzUG9zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjdXJyZW50Q2h1bmsgPSB0aGlzLmdldEN1cnJlbnRUb2tlbkNodW5rKClcbiAgICAgICAgaWYgKCFjdXJyZW50Q2h1bmspIHsgcmV0dXJuIH1cbiAgICAgICAgY29uc3QgZmlyc3RDaHVuayA9IHRoaXMudG9rZW5DaHVua3NQb3NbMF1cbiAgICAgICAgY29uc3QgbGFzdENodW5rID0gdGhpcy50b2tlbkNodW5rc1Bvc1t0aGlzLnRva2VuQ2h1bmtzUG9zLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICgoZXZ0LnNoaWZ0S2V5ICYmIGN1cnJlbnRDaHVuay50b2tlbiAhPT0gZmlyc3RDaHVuay50b2tlbikgfHwgKCFldnQuc2hpZnRLZXkgJiYgY3VycmVudENodW5rLnRva2VuICE9PSBsYXN0Q2h1bmsudG9rZW4pKSB7XG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICB0aGlzLnRvTGF0ZXJhbFRva2VuKGV2dC5zaGlmdEtleSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFwcGVuZFRvQm9keSAmJiB0aGlzLmFkdmFuY2VkS2V5Ym9hcmQpIHtcbiAgICAgICAgaWYgKGV2dC5zaGlmdEtleSkgeyByZXR1cm4gfVxuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBpZiAodGhpcy5pbnB1dElzRW1wdHkpIHtcbiAgICAgICAgICBjb25zdCBmaXJzdENvbHVtbiA9IHRoaXMuaW5Vc2UudHlwZXNbMF1cbiAgICAgICAgICBjb25zdCB0YXJnZXRWYWx1ZSA9IHRoaXMudmFsaWRJdGVtc0luQ29sKGZpcnN0Q29sdW1uKVswXVxuICAgICAgICAgIGlmICh0YXJnZXRWYWx1ZSkge1xuICAgICAgICAgICAgdGFyZ2V0VmFsdWUuZm9jdXMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBrZXlib2FyZElucHV0IChuZXdDaGFyLCBpc0FwbSA9IGZhbHNlKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2h1bmsgPSB0aGlzLmdldEN1cnJlbnRUb2tlbkNodW5rKClcbiAgICAgIGlmICghY3VycmVudENodW5rIHx8IChjdXJyZW50Q2h1bmsudHlwZSAhPT0gJ2FwbScgJiYgaXNBcG0pIHx8IChjdXJyZW50Q2h1bmsudHlwZSA9PT0gJ2FwbScgJiYgIWlzQXBtKSkgeyByZXR1cm4gfVxuICAgICAgdGhpcy5rYklucHV0TG9nID0gYCR7dGhpcy5rYklucHV0TG9nLnN1YnN0cigtMSl9JHtuZXdDaGFyfWBcbiAgICAgIHRoaXMuc2V0S2JJbnB1dCgpXG4gICAgICB0aGlzLmRlYm91bmNlQ2xlYXJLYkxvZygpXG4gICAgfSxcblxuICAgIGNsZWFyS2JJbnB1dExvZyAoKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMua2JJbnB1dFRpbWVyKVxuICAgICAgdGhpcy5rYklucHV0TG9nID0gJydcbiAgICB9LFxuXG4gICAgZGVib3VuY2VDbGVhcktiTG9nICgpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5rYklucHV0VGltZXIpXG4gICAgICB0aGlzLmtiSW5wdXRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jbGVhcktiSW5wdXRMb2coKVxuICAgICAgfSwgdGhpcy5vcHRzLm1hbnVhbElucHV0VGltZW91dClcbiAgICB9LFxuXG4gICAgc2V0S2JJbnB1dCAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgfHwgdGhpcy5rYklucHV0TG9nXG4gICAgICBjb25zdCBjdXJyZW50Q2h1bmsgPSB0aGlzLmdldEN1cnJlbnRUb2tlbkNodW5rKClcbiAgICAgIGlmICghY3VycmVudENodW5rIHx8ICF2YWx1ZSB8fCAhdmFsdWUubGVuZ3RoKSB7IHJldHVybiB9XG4gICAgICBjb25zdCBjaHVua1R5cGUgPSBjdXJyZW50Q2h1bmsudHlwZVxuICAgICAgY29uc3QgY2h1bmtUb2tlbiA9IGN1cnJlbnRDaHVuay50b2tlblxuXG4gICAgICBsZXQgdmFsaWRWYWx1ZVxuICAgICAgaWYgKGNodW5rVHlwZSA9PT0gJ2FwbScpIHtcbiAgICAgICAgaWYgKHRoaXMubG93ZXJDYXNlZEFwbSh2YWx1ZSkuaW5jbHVkZXMoJ2EnKSkge1xuICAgICAgICAgIHZhbGlkVmFsdWUgPSAnYW0nXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5sb3dlckNhc2VkQXBtKHZhbHVlKS5pbmNsdWRlcygncCcpKSB7XG4gICAgICAgICAgdmFsaWRWYWx1ZSA9ICdwbSdcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsaWRWYWx1ZSkge1xuICAgICAgICAgIHZhbGlkVmFsdWUgPSBjaHVua1Rva2VuID09PSAnQScgPyB2YWxpZFZhbHVlLnRvVXBwZXJDYXNlKCkgOiB2YWxpZFZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRWYWx1ZShjaHVua1Rva2VuLCB2YWx1ZSkpIHtcbiAgICAgICAgICB2YWxpZFZhbHVlID0gdmFsdWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBsYXN0SW5wdXRWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUoY2h1bmtUb2tlbiwgdmFsdWUuc3Vic3RyKC0xKSlcbiAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkVmFsdWUoY2h1bmtUb2tlbiwgbGFzdElucHV0VmFsdWUpKSB7XG4gICAgICAgICAgICB2YWxpZFZhbHVlID0gbGFzdElucHV0VmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXRTYW5pdGl6ZWRWYWx1ZVRvU2VjdGlvbihjaHVua1R5cGUsIHZhbGlkVmFsdWUpXG4gICAgICAgIGNvbnN0IG5ld0NodW5rUG9zID0gdGhpcy5nZXRDdXJyZW50VG9rZW5DaHVuaygpXG4gICAgICAgIHRoaXMuZGVib3VuY2VTZXRJbnB1dFNlbGVjdGlvbihuZXdDaHVua1BvcykgICAgICBcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRlYnVnTW9kZSkge1xuICAgICAgICBpZiAodmFsaWRWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuZGVidWdMb2coYFN1Y2Nlc3NmdWxseSBzZXQgdmFsdWUgXCIke3ZhbGlkVmFsdWV9XCIgZnJvbSBsYXRlc3QgaW5wdXQgXCIke3ZhbHVlfVwiIGZvciB0aGUgXCIke2NodW5rVHlwZX1cIiBzbG90YClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRlYnVnTG9nKGBWYWx1ZSBcIiR7dmFsdWV9XCIgaXMgaW52YWxpZCBpbiB0aGUgXCIke2NodW5rVHlwZX1cIiBzbG90YClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBGb3JtIEF1dG9maWxsXG4gICAgb25DaGFuZ2UgKCkge1xuICAgICAgaWYgKCF0aGlzLm1hbnVhbElucHV0IHx8ICF0aGlzLiRyZWZzIHx8ICF0aGlzLiRyZWZzLmlucHV0KSB7IHJldHVybiB9XG4gICAgICBjb25zdCBhdXRvRmlsbFZhbHVlID0gdGhpcy4kcmVmcy5pbnB1dC52YWx1ZSB8fCAnJ1xuICAgICAgaWYgKGF1dG9GaWxsVmFsdWUgJiYgYXV0b0ZpbGxWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5yZWFkU3RyaW5nVmFsdWVzKGF1dG9GaWxsVmFsdWUpXG4gICAgICB9XG4gICAgfSxcblxuICAgIGdldE5lYXJlc3RDaHVua0J5UG9zIChzdGFydFBvcykge1xuICAgICAgaWYgKCF0aGlzLnRva2VuQ2h1bmtzUG9zIHx8ICF0aGlzLnRva2VuQ2h1bmtzUG9zLmxlbmd0aCkgeyByZXR1cm4gfVxuICAgICAgbGV0IG5lYXJlc3RcbiAgICAgIGxldCBuZWFyZXN0RGVsdGEgPSAtMVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRva2VuQ2h1bmtzUG9zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNodW5rID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnRva2VuQ2h1bmtzUG9zW2ldKSlcbiAgICAgICAgaWYgKGNodW5rLnN0YXJ0ID09PSBzdGFydFBvcykge1xuICAgICAgICAgIHJldHVybiBjaHVua1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlbHRhID0gTWF0aC5hYnMoY2h1bmsuc3RhcnQgLSBzdGFydFBvcylcbiAgICAgICAgaWYgKG5lYXJlc3REZWx0YSA8IDApIHtcbiAgICAgICAgICBuZWFyZXN0ID0gY2h1bmtcbiAgICAgICAgICBuZWFyZXN0RGVsdGEgPSBkZWx0YVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChuZWFyZXN0RGVsdGEgPD0gZGVsdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBuZWFyZXN0XG4gICAgICAgICAgfVxuICAgICAgICAgIG5lYXJlc3REZWx0YSA9IGRlbHRhXG4gICAgICAgICAgbmVhcmVzdCA9IGNodW5rXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZWFyZXN0XG4gICAgfSxcblxuICAgIHNlbGVjdEZpcnN0VmFsaWRWYWx1ZSAoKSB7XG4gICAgICBpZiAoIXRoaXMudG9rZW5DaHVua3NQb3MgfHwgIXRoaXMudG9rZW5DaHVua3NQb3MubGVuZ3RoKSB7IHJldHVybiB9XG4gICAgICBjb25zdCBmaXJzdFNsb3RUeXBlID0gdGhpcy50b2tlbkNodW5rc1Bvc1swXS50eXBlXG4gICAgICBpZiAoZmlyc3RTbG90VHlwZSA9PT0gJ2hvdXInKSB7XG4gICAgICAgIHRoaXMuZ2V0Q2xvc2VzdEhvdXJJdGVtKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ2V0Q2xvc2VzdFZhbGlkSXRlbUluQ29sKGZpcnN0U2xvdFR5cGUsIHRoaXNbZmlyc3RTbG90VHlwZV0pXG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdEZpcnN0U2xvdCgpXG4gICAgfSxcblxuICAgIGdldENsb3Nlc3RIb3VySXRlbSAoY3VycmVudFZhbHVlLCBkaXJlY3Rpb24gPSAnVScpIHtcbiAgICAgIGlmICghdGhpcy52YWxpZEhvdXJzTGlzdCB8fCAhdGhpcy52YWxpZEhvdXJzTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVidWdNb2RlKSB7XG4gICAgICAgICAgdGhpcy5kZWJ1Z0xvZyhgTm8gdmFsaWQgaG91ciB2YWx1ZXMgZm91bmQsIHBsZWFzZSBjaGVjayB5b3VyIFwiaG91ci1yYW5nZVwiIGNvbmZpZ1xcbmhvdXItcmFuZ2U6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5ob3VyUmFuZ2UpfWApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoIWN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLnNldE1hbnVhbEhvdXIodGhpcy52YWxpZEhvdXJzTGlzdFswXSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLnZhbGlkSG91cnNMaXN0LmZpbmRJbmRleChpdGVtID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmJhc2VPbjEySG91cnMpIHtcbiAgICAgICAgICByZXR1cm4gaXRlbSA9PT0gY3VycmVudFZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdmFsdWVLZXkgPSBgJHtjdXJyZW50VmFsdWV9JHt0aGlzLmxvd2VyQ2FzZWRBcG0odGhpcy5hcG0pID09PSAncG0nID8gJ3AnIDogJ2EnfWAgXG4gICAgICAgICAgcmV0dXJuIGl0ZW0gPT09IHZhbHVlS2V5XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBsZXQgbmV4dEluZGV4XG4gICAgICBpZiAoY3VycmVudEluZGV4ID09PSAtMSkge1xuICAgICAgICBuZXh0SW5kZXggPSAwXG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ0QnKSB7XG4gICAgICAgIG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCA9PT0gMCA/IHRoaXMudmFsaWRIb3Vyc0xpc3QubGVuZ3RoIC0gMSA6IGN1cnJlbnRJbmRleCAtIDFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyAxKSAlIHRoaXMudmFsaWRIb3Vyc0xpc3QubGVuZ3RoXG4gICAgICB9XG4gICAgICBjb25zdCBuZXh0SXRlbSA9IHRoaXMudmFsaWRIb3Vyc0xpc3RbbmV4dEluZGV4XVxuICAgICAgdGhpcy5zZXRNYW51YWxIb3VyKG5leHRJdGVtKVxuICAgIH0sXG5cbiAgICBnZXRDbG9zZXN0VmFsaWRJdGVtSW5Db2wgKGNvbHVtbiwgY3VycmVudFZhbHVlLCBkaXJlY3Rpb24gPSAnVScpIHtcbiAgICAgIGlmIChjb2x1bW4gPT09ICdob3VyJykge1xuICAgICAgICB0aGlzLmdldENsb3Nlc3RIb3VySXRlbShjdXJyZW50VmFsdWUsIGRpcmVjdGlvbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5leHRJdGVtID0gZGlyZWN0aW9uID09PSAnRCcgPyB0aGlzLnByZXZJdGVtKGNvbHVtbiwgdGhpc1tjb2x1bW5dLCB0cnVlKSA6IHRoaXMubmV4dEl0ZW0oY29sdW1uLCB0aGlzW2NvbHVtbl0sIHRydWUpXG4gICAgICAgIGlmIChuZXh0SXRlbSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0KGNvbHVtbiwgbmV4dEl0ZW0uZ2V0QXR0cmlidXRlKCdkYXRhLWtleScpKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHNldFNhbml0aXplZFZhbHVlVG9TZWN0aW9uIChzZWN0aW9uLCBpbnB1dFZhbHVlKSB7XG4gICAgICBpZiAoIXNlY3Rpb24gfHwgIXRoaXMuZ2V0VG9rZW5CeVR5cGUoc2VjdGlvbikpIHsgcmV0dXJuIH1cbiAgICAgIC8vIE5PVEU6IERpc2FibGVkIHZhbHVlcyBhcmUgYWxsb3dlZCBoZXJlLCBmb2xsb3dlZCBieSBhbiAnZXJyb3InIGV2ZW50LCB0aG91Z2hcbiAgICAgIGNvbnN0IHNhbml0aXplZFZhbHVlID0gdGhpcy5zYW5pdGl6ZWRWYWx1ZSh0aGlzLmdldFRva2VuQnlUeXBlKHNlY3Rpb24pLCBpbnB1dFZhbHVlKVxuICAgICAgdGhpc1tzZWN0aW9uXSA9IHNhbml0aXplZFZhbHVlXG4gICAgfSxcblxuICAgIHNldE1hbnVhbEhvdXIgKG5leHRJdGVtKSB7XG4gICAgICBpZiAodGhpcy5pczEyaFJhbmdlKG5leHRJdGVtKSkge1xuICAgICAgICBjb25zdCBob3VyVCA9IHRoaXMubWF0Y2gxMmhSYW5nZShuZXh0SXRlbSlcbiAgICAgICAgY29uc3QgYXBtVmFsdWUgPSBob3VyVFsyXSA9PT0gJ2EnID8gJ0FNJyA6ICdQTSdcbiAgICAgICAgdGhpcy5zZXRTYW5pdGl6ZWRWYWx1ZVRvU2VjdGlvbignYXBtJywgdGhpcy5hcG1UeXBlID09PSAnYScgPyBhcG1WYWx1ZS50b0xvd2VyQ2FzZSgpIDogYXBtVmFsdWUpXG4gICAgICAgIHRoaXMuc2V0U2FuaXRpemVkVmFsdWVUb1NlY3Rpb24oJ2hvdXInLCBob3VyVFsxXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0U2FuaXRpemVkVmFsdWVUb1NlY3Rpb24oJ2hvdXInLCBuZXh0SXRlbSlcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZGVib3VuY2VTZXRJbnB1dFNlbGVjdGlvbiAoe3N0YXJ0ID0gMCwgZW5kID0gMCB9KSB7XG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0SW5wdXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKVxuICAgICAgfSlcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zZWxlY3Rpb25UaW1lcilcbiAgICAgIHRoaXMuc2VsZWN0aW9uVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zZWxlY3Rpb25UaW1lcilcbiAgICAgICAgLy8gRG91YmxlLWNoZWNrIHNlbGVjdGlvbiBmb3IgMTJociBmb3JtYXRcbiAgICAgICAgaWYgKHRoaXMuJHJlZnMuaW5wdXQgJiYgKHRoaXMuJHJlZnMuaW5wdXQuc2VsZWN0aW9uU3RhcnQgIT09IHN0YXJ0IHx8IHRoaXMuJHJlZnMuaW5wdXQuc2VsZWN0aW9uRW5kICE9PSBlbmQpKSB7XG4gICAgICAgICAgdGhpcy5zZXRJbnB1dFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpXG4gICAgICAgIH1cbiAgICAgIH0sIDMwKVxuICAgIH0sXG5cbiAgICBzZXRJbnB1dFNlbGVjdGlvblJhbmdlIChzdGFydCwgZW5kKSB7XG4gICAgICBpZiAodGhpcy4kcmVmcyAmJiB0aGlzLiRyZWZzLmlucHV0KSB7XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIGVuZClcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0Q3VycmVudFRva2VuQ2h1bmsgKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVhcmVzdENodW5rQnlQb3MoKHRoaXMuJHJlZnMuaW5wdXQgJiYgdGhpcy4kcmVmcy5pbnB1dC5zZWxlY3Rpb25TdGFydCkgfHwgMClcbiAgICB9LFxuXG4gICAgc2VsZWN0Rmlyc3RTbG90ICgpIHtcbiAgICAgIGNvbnN0IGZpcnN0Q2h1bmtQb3MgPSB0aGlzLmdldE5lYXJlc3RDaHVua0J5UG9zKDApXG4gICAgICB0aGlzLmRlYm91bmNlU2V0SW5wdXRTZWxlY3Rpb24oZmlyc3RDaHVua1BvcylcbiAgICB9LFxuXG4gICAgdG9OZXh0U2xvdCAoKSB7XG4gICAgICBpZiAoIXRoaXMuaW5wdXRJc0VtcHR5ICYmIHRoaXMudG9rZW5DaHVua3NQb3MgJiYgdGhpcy50b2tlbkNodW5rc1Bvcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgY3VycmVudENodW5rID0gdGhpcy5nZXRDdXJyZW50VG9rZW5DaHVuaygpXG4gICAgICAgIGlmICghY3VycmVudENodW5rKSB7IHJldHVybiB9XG4gICAgICAgIGNvbnN0IGxhc3RDaHVuayA9IHRoaXMudG9rZW5DaHVua3NQb3NbdGhpcy50b2tlbkNodW5rc1Bvcy5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoY3VycmVudENodW5rLnRva2VuICE9PSBsYXN0Q2h1bmsudG9rZW4pIHtcbiAgICAgICAgICB0aGlzLnRvTGF0ZXJhbFRva2VuKGZhbHNlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHRvTGF0ZXJhbFRva2VuICh0b0xlZnQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaHVuayA9IHRoaXMuZ2V0Q3VycmVudFRva2VuQ2h1bmsoKVxuICAgICAgaWYgKCFjdXJyZW50Q2h1bmspIHtcbiAgICAgICAgdGhpcy5zZWxlY3RGaXJzdFZhbGlkVmFsdWUoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRDaHVua0luZGV4ID0gdGhpcy50b2tlbkNodW5rc1Bvcy5maW5kSW5kZXgoY2hrID0+IGNoay50b2tlbiA9PT0gY3VycmVudENodW5rLnRva2VuKVxuICAgICAgaWYgKCghdG9MZWZ0ICYmIGN1cnJlbnRDaHVua0luZGV4ID49IHRoaXMudG9rZW5DaHVua3NQb3MubGVuZ3RoIC0gMSkgfHwgKHRvTGVmdCAmJiBjdXJyZW50Q2h1bmtJbmRleCA9PT0gMCkpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVidWdNb2RlKSB7XG4gICAgICAgICAgaWYgKHRvTGVmdCkge1xuICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZygnWW91XFwncmUgaW4gdGhlIGxlZnRtb3N0IHNsb3QgYWxyZWFkeScpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWdMb2coJ1lvdVxcJ3JlIGluIHRoZSByaWdodG1vc3Qgc2xvdCBhbHJlYWR5JylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXRTbG90UG9zID0gdG9MZWZ0ID8gdGhpcy50b2tlbkNodW5rc1Bvc1tjdXJyZW50Q2h1bmtJbmRleCAtIDFdIDogdGhpcy50b2tlbkNodW5rc1Bvc1tjdXJyZW50Q2h1bmtJbmRleCArIDFdXG4gICAgICB0aGlzLmRlYm91bmNlU2V0SW5wdXRTZWxlY3Rpb24odGFyZ2V0U2xvdFBvcylcbiAgICB9LFxuXG4gICAgaXNDdXN0b21BcG1UZXh0IChpbnB1dERhdGEpIHtcbiAgICAgIGlmICghaW5wdXREYXRhIHx8ICFpbnB1dERhdGEubGVuZ3RoKSB7IHJldHVybiBmYWxzZSB9XG4gICAgICBpZiAodGhpcy5hbVRleHQgJiYgdGhpcy5hbVRleHQgPT09IGlucHV0RGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcG1UeXBlID09PSAnQScgPyAnQU0nIDogJ2FtJ1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucG1UZXh0ICYmIHRoaXMucG1UZXh0ID09PSBpbnB1dERhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBtVHlwZSA9PT0gJ0EnID8gJ1BNJyA6ICdwbSdcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG5cbiAgICByZXBsYWNlQ3VzdG9tQXBtVGV4dCAoaW5wdXRTdHJpbmcpIHtcbiAgICAgIGlmICh0aGlzLmFtVGV4dCAmJiB0aGlzLmFtVGV4dC5sZW5ndGggJiYgaW5wdXRTdHJpbmcuaW5jbHVkZXModGhpcy5hbVRleHQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dFN0cmluZy5yZXBsYWNlKG5ldyBSZWdFeHAodGhpcy5hbVRleHQsICdnJyksIHRoaXMuYXBtVHlwZSA9PT0gJ0EnID8gJ0FNJyA6ICdhbScpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucG1UZXh0ICYmIHRoaXMucG1UZXh0Lmxlbmd0aCAmJiBpbnB1dFN0cmluZy5pbmNsdWRlcyh0aGlzLnBtVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0U3RyaW5nLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLnBtVGV4dCwgJ2cnKSwgdGhpcy5hcG1UeXBlID09PSAnQScgPyAnUE0nIDogJ3BtJylcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbnB1dFN0cmluZ1xuICAgIH0sXG5cbiAgICBjaGVja0Ryb3BEaXJlY3Rpb24gKCkge1xuICAgICAgaWYgKCF0aGlzLiRlbCkgeyByZXR1cm4gfVxuICAgICAgbGV0IGNvbnRhaW5lclxuICAgICAgaWYgKHRoaXMuY29udGFpbmVySWQgJiYgdGhpcy5jb250YWluZXJJZC5sZW5ndGgpIHtcbiAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5jb250YWluZXJJZClcbiAgICAgICAgaWYgKCFjb250YWluZXIgJiYgdGhpcy5kZWJ1Z01vZGUpIHtcbiAgICAgICAgICB0aGlzLmRlYnVnTG9nKGBDb250YWluZXIgd2l0aCBpZCBcIiR7dGhpcy5jb250YWluZXJJZH1cIiBub3QgZm91bmQuIEZhbGxiYWNrIHRvIGRvY3VtZW50IGJvZHkuYClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgZWwgPSB0aGlzLiRlbFxuICAgICAgbGV0IHNwYWNlRG93blxuICAgICAgaWYgKGNvbnRhaW5lciAmJiBjb250YWluZXIub2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgIC8vIFZhbGlkIGNvbnRhaW5lciBmb3VuZFxuICAgICAgICBzcGFjZURvd24gPSAoY29udGFpbmVyLm9mZnNldFRvcCArIGNvbnRhaW5lci5vZmZzZXRIZWlnaHQpIC0gKGVsLm9mZnNldFRvcCArIGVsLm9mZnNldEhlaWdodClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZhbGxiYWNrIHRvIGRvY3VtZW50IGJvZHlcbiAgICAgICAgY29uc3QgZG9jSGVpZ2h0ID0gTWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQsIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0LCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0LCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodClcbiAgICAgICAgc3BhY2VEb3duID0gZG9jSGVpZ2h0IC0gKGVsLm9mZnNldFRvcCArIGVsLm9mZnNldEhlaWdodClcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9yY2VEcm9wT25Ub3AgPSB0aGlzLm9wdHMuZHJvcE9mZnNldEhlaWdodCA+IHNwYWNlRG93blxuICAgIH0sXG5cbiAgICAvL1xuICAgIC8vIEhlbHBlcnNcbiAgICAvL1xuXG4gICAgaXMxMmhSYW5nZSAodmFsdWUpIHtcbiAgICAgIHJldHVybiAvXlxcZHsxLDJ9KGF8cHxBfFApJC8udGVzdCh2YWx1ZSlcbiAgICB9LFxuXG4gICAgbWF0Y2gxMmhSYW5nZSAodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5tYXRjaCgvXihcXGR7MSwyfSkoYXxwfEF8UCkkLylcbiAgICB9LFxuXG4gICAgaXNOdW1iZXIgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKSAmJiBpc0Zpbml0ZSh2YWx1ZSlcbiAgICB9LFxuXG4gICAgaXNCYXNpY1R5cGUgKHR5cGUpIHtcbiAgICAgIHJldHVybiBDT05GSUcuQkFTSUNfVFlQRVMuaW5jbHVkZXModHlwZSlcbiAgICB9LFxuXG4gICAgbG93ZXJDYXNlZEFwbSAoYXBtVmFsdWUpIHtcbiAgICAgIHJldHVybiAoYXBtVmFsdWUgfHwgJycpLnRvTG93ZXJDYXNlKClcbiAgICB9LFxuXG4gICAgZ2V0VG9rZW5SZWdleCAodG9rZW4pIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnSEgnOlxuICAgICAgICAgIHJldHVybiAnKFswMV1bMC05XXwyWzAtM118SHsyfSknXG4gICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgIHJldHVybiAnKFswLTldezF9fDFbMC05XXwyWzAtM118SHsxfSknXG4gICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICByZXR1cm4gJygwWzEtOV18MVswLTJdfGh7Mn0pJ1xuICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICByZXR1cm4gJyhbMS05XXsxfXwxWzAtMl18aHsxfSknXG4gICAgICAgIGNhc2UgJ2trJzpcbiAgICAgICAgICByZXR1cm4gJygwWzEtOV18MVswLTldfDJbMC00XXxrezJ9KSdcbiAgICAgICAgY2FzZSAnayc6XG4gICAgICAgICAgcmV0dXJuICcoWzEtOV17MX18MVswLTldfDJbMC00XXxrezF9KSdcbiAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgIHJldHVybiAnKFswLTVdWzAtOV18bXsyfSknXG4gICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICByZXR1cm4gJyhbMC01XVswLTldfHN7Mn0pJ1xuICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICByZXR1cm4gJyhbMC05XXsxfXxbMS01XVswLTldfG17MX0pJ1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICByZXR1cm4gJyhbMC05XXsxfXxbMS01XVswLTldfHN7MX0pJ1xuICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICByZXR1cm4gJyhBTXxQTXxBezF9KSdcbiAgICAgICAgY2FzZSAnYSc6XG4gICAgICAgICAgcmV0dXJuICcoYW18cG18YXsxfSknXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICcnXG4gICAgICB9XG4gICAgfSxcblxuICAgIGlzRW1wdHlWYWx1ZSAodGFyZ2V0VG9rZW4sIHRlc3RWYWx1ZSkge1xuICAgICAgcmV0dXJuICghdGVzdFZhbHVlIHx8ICF0ZXN0VmFsdWUubGVuZ3RoKSB8fCAodGVzdFZhbHVlICYmIHRlc3RWYWx1ZSA9PT0gdGFyZ2V0VG9rZW4pXG4gICAgfSxcblxuICAgIGlzVmFsaWRWYWx1ZSAodGFyZ2V0VG9rZW4sIHRlc3RWYWx1ZSkge1xuICAgICAgaWYgKCF0YXJnZXRUb2tlbiB8fCB0aGlzLmlzRW1wdHlWYWx1ZSh0YXJnZXRUb2tlbiwgdGVzdFZhbHVlKSkgeyByZXR1cm4gZmFsc2UgfVxuICAgICAgY29uc3QgdG9rZW5SZWdleFN0ciA9IHRoaXMuZ2V0VG9rZW5SZWdleCh0YXJnZXRUb2tlbilcbiAgICAgIGlmICghdG9rZW5SZWdleFN0ciB8fCAhdG9rZW5SZWdleFN0ci5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICAgIHJldHVybiAobmV3IFJlZ0V4cChgXiR7dG9rZW5SZWdleFN0cn0kYCkpLnRlc3QodGVzdFZhbHVlKVxuICAgIH0sXG5cbiAgICBzYW5pdGl6ZWRWYWx1ZSAodGFyZ2V0VG9rZW4sIGlucHV0VmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmlzVmFsaWRWYWx1ZSh0YXJnZXRUb2tlbiwgaW5wdXRWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0VmFsdWVcbiAgICAgIH1cbiAgICAgIHJldHVybiAnJ1xuICAgIH0sXG5cbiAgICBnZXRUb2tlblR5cGUgKHRva2VuKSB7XG4gICAgICByZXR1cm4gdGhpcy5pblVzZS50eXBlc1t0aGlzLmluVXNlLnRva2Vucy5pbmRleE9mKHRva2VuKV0gfHwgJydcbiAgICB9LFxuXG4gICAgZ2V0VG9rZW5CeVR5cGUgKHR5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzW2Ake3R5cGV9VHlwZWBdIHx8ICcnXG4gICAgfSxcblxuICAgIGlzTWludXRlT3JTZWNvbmQgKHR5cGUpIHtcbiAgICAgIHJldHVybiBbJ21pbnV0ZScsICdzZWNvbmQnXS5pbmNsdWRlcyh0eXBlKVxuICAgIH0sXG5cbiAgICBkZWJ1Z0xvZyAobG9nVGV4dCkge1xuICAgICAgaWYgKCFsb2dUZXh0IHx8ICFsb2dUZXh0Lmxlbmd0aCkgeyByZXR1cm4gfVxuICAgICAgbGV0IGlkZW50aWZpZXIgPSAnJ1xuICAgICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgICAgaWRlbnRpZmllciArPSBgIyR7dGhpcy5pZH1gXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uYW1lKSB7XG4gICAgICAgIGlkZW50aWZpZXIgKz0gYFtuYW1lPSR7dGhpcy5uYW1lfV1gXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pbnB1dENsYXNzKSB7XG4gICAgICAgIGxldCBpbnB1dENsYXNzZXMgPSBbXVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW5wdXRDbGFzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBpbnB1dENsYXNzZXMgPSB0aGlzLmlucHV0Q2xhc3Muc3BsaXQoL1xccy9nKVxuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pbnB1dENsYXNzKSkge1xuICAgICAgICAgIGlucHV0Q2xhc3NlcyA9IFtdLmNvbmNhdChbXSwgdGhpcy5pbnB1dENsYXNzKVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmlucHV0Q2xhc3MgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5pbnB1dENsYXNzKS5mb3JFYWNoKGNsc05hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRDbGFzc1tjbHNOYW1lXSkge1xuICAgICAgICAgICAgICBpbnB1dENsYXNzZXMucHVzaChjbHNOYW1lKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaW5wdXRDbGFzcyBvZiBpbnB1dENsYXNzZXMpIHtcbiAgICAgICAgICBpZiAoaW5wdXRDbGFzcyAmJiBpbnB1dENsYXNzLnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlkZW50aWZpZXIgKz0gYC4ke2lucHV0Q2xhc3MudHJpbSgpfWBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbmFsTG9nVGV4dCA9IGBERUJVRzogJHtsb2dUZXh0fSR7aWRlbnRpZmllciA/IGBcXG5cXHQoJHtpZGVudGlmaWVyfSlgIDogJycgfWBcbiAgICAgIGlmICh3aW5kb3cuY29uc29sZS5kZWJ1ZyAmJiB0eXBlb2Ygd2luZG93LmNvbnNvbGUuZGVidWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgd2luZG93LmNvbnNvbGUuZGVidWcoZmluYWxMb2dUZXh0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmNvbnNvbGUubG9nKGZpbmFsTG9nVGV4dClcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZCAoKSB7XG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZXIpXG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnNlbGVjdGlvblRpbWVyKVxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5rYklucHV0VGltZXIpXG4gICAgdGhpcy5yZW5kZXJGb3JtYXQoKVxuICB9LFxuXG4gIGJlZm9yZURlc3Ryb3kgKCkge1xuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5kZWJvdW5jZVRpbWVyKVxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zZWxlY3Rpb25UaW1lcilcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMua2JJbnB1dFRpbWVyKVxuICB9XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuPHNwYW4gY2xhc3M9XCJ2dWVfX3RpbWUtcGlja2VyIHRpbWUtcGlja2VyXCIgOnN0eWxlPVwiaW5wdXRXaWR0aFN0eWxlXCI+XG4gIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZGlzcGxheS10aW1lXCIgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgOmNsYXNzPVwiW2lucHV0Q2xhc3MsIHsnaXMtZW1wdHknOiBpbnB1dElzRW1wdHksICdpbnZhbGlkJzogaGFzSW52YWxpZElucHV0LCAnYWxsLXNlbGVjdGVkJzogYWxsVmFsdWVTZWxlY3RlZCwgJ2Rpc2FibGVkJzogZGlzYWJsZWQsICdoYXMtY3VzdG9tLWljb24nOiAkc2xvdHMgJiYgJHNsb3RzLmljb24gfV1cIlxuICAgICAgICAgOnN0eWxlPVwiaW5wdXRXaWR0aFN0eWxlXCJcbiAgICAgICAgIDppZD1cImlkXCJcbiAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICA6dmFsdWU9XCJpbnB1dElzRW1wdHkgPyBudWxsIDogY3VzdG9tRGlzcGxheVRpbWVcIlxuICAgICAgICAgOnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6IGZvcm1hdFN0cmluZ1wiXG4gICAgICAgICA6dGFiaW5kZXg9XCJkaXNhYmxlZCA/IC0xIDogdGFiaW5kZXhcIlxuICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgOnJlYWRvbmx5PVwiIW1hbnVhbElucHV0XCJcbiAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGVcIlxuICAgICAgICAgQGZvY3VzPVwib25Gb2N1c1wiXG4gICAgICAgICBAY2hhbmdlPVwib25DaGFuZ2VcIlxuICAgICAgICAgQGJsdXI9XCJkZWJvdW5jZUJsdXIoKTsgYmx1ckV2ZW50KClcIlxuICAgICAgICAgQG1vdXNlZG93bj1cIm9uTW91c2VEb3duXCJcbiAgICAgICAgIEBrZXlkb3duPVwia2V5RG93bkhhbmRsZXJcIlxuICAgICAgICAgQGNvbXBvc2l0aW9uc3RhcnQ9XCJvbkNvbXBvc3Rpb25TdGFydFwiXG4gICAgICAgICBAY29tcG9zaXRpb25lbmQ9XCJvbkNvbXBvc3Rpb25FbmRcIlxuICAgICAgICAgQHBhc3RlPVwicGFzdGVIYW5kbGVyXCJcbiAgICAgICAgIEBrZXlkb3duLmVzYy5leGFjdD1cImVzY0JsdXJcIiAvPlxuICA8ZGl2IGNsYXNzPVwiY29udHJvbHNcIiB2LWlmPVwic2hvd0NsZWFyQnRuIHx8IHNob3dEcm9wZG93bkJ0blwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICA8c3BhbiB2LWlmPVwiIWlzQWN0aXZlICYmIHNob3dDbGVhckJ0blwiIGNsYXNzPVwiY2xlYXItYnRuXCIgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgOmNsYXNzPVwieydoYXMtY3VzdG9tLWJ0bic6ICRzbG90cyAmJiAkc2xvdHMuY2xlYXJCdXR0b24gfVwiXG4gICAgICAgICAgQGNsaWNrPVwiY2xlYXJUaW1lXCI+XG4gICAgICA8c2xvdCBuYW1lPVwiY2xlYXJCdXR0b25cIj48c3BhbiBjbGFzcz1cImNoYXJcIj4mdGltZXM7PC9zcGFuPjwvc2xvdD5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gdi1pZj1cInNob3dEcm9wZG93bkJ0blwiIGNsYXNzPVwiZHJvcGRvd24tYnRuXCIgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgOmNsYXNzPVwieydoYXMtY3VzdG9tLWJ0bic6ICRzbG90cyAmJiAkc2xvdHMuZHJvcGRvd25CdXR0b24gfVwiXG4gICAgICAgICAgQGNsaWNrPVwic2V0RHJvcGRvd25TdGF0ZShmaXhlZERyb3Bkb3duQnV0dG9uID8gIXNob3dEcm9wZG93biA6IHRydWUsIHRydWUpXCJcbiAgICAgICAgICBAbW91c2Vkb3duPVwia2VlcEZvY3VzaW5nXCI+XG4gICAgICA8c2xvdCBuYW1lPVwiZHJvcGRvd25CdXR0b25cIj48c3BhbiBjbGFzcz1cImNoYXJcIj4mZHRyaWY7PC9zcGFuPjwvc2xvdD5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWljb25cIiB2LWlmPVwiJHNsb3RzICYmICRzbG90cy5pY29uXCI+PHNsb3QgbmFtZT1cImljb25cIj48L3Nsb3Q+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlci1vdmVybGF5XCIgdi1pZj1cInNob3dEcm9wZG93blwiIEBjbGljaz1cInRvZ2dsZUFjdGl2ZVwiIHRhYmluZGV4PVwiLTFcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCIgcmVmPVwiZHJvcGRvd25cIiB2LXNob3c9XCJzaG93RHJvcGRvd25cIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICA6Y2xhc3M9XCJbZHJvcGRvd25EaXJDbGFzc11cIiA6c3R5bGU9XCJpbnB1dFdpZHRoU3R5bGVcIlxuICAgICAgIEBtb3VzZXVwPVwia2VlcEZvY3VzaW5nXCIgQGNsaWNrLnN0b3A9XCJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LWxpc3RcIiA6c3R5bGU9XCJpbnB1dFdpZHRoU3R5bGVcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICA8IS0tIENvbW1vbiBLZXlib2FyZCBTdXBwb3J0OiBsZXNzIGV2ZW50IGxpc3RlbmVycyAtLT5cbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiIWFkdmFuY2VkS2V5Ym9hcmRcIj5cbiAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiY29sdW1uIGluIGNvbHVtbnNTZXF1ZW5jZVwiPlxuICAgICAgICAgIDx1bCB2LWlmPVwiY29sdW1uID09PSAnaG91cidcIiA6a2V5PVwiY29sdW1uXCIgY2xhc3M9XCJob3Vyc1wiIEBzY3JvbGw9XCJrZWVwRm9jdXNpbmdcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImhpbnRcIiB2LXRleHQ9XCJob3VyTGFiZWxUZXh0XCI+PC9saT5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihociwgaEluZGV4KSBpbiBob3Vyc1wiPlxuICAgICAgICAgICAgICA8bGkgdi1pZj1cIiFvcHRzLmhpZGVEaXNhYmxlZEhvdXJzIHx8IChvcHRzLmhpZGVEaXNhYmxlZEhvdXJzICYmICFpc0Rpc2FibGVkKCdob3VyJywgaHIpKVwiXG4gICAgICAgICAgICAgICAgICA6a2V5PVwiaEluZGV4XCJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInthY3RpdmU6IGhvdXIgPT09IGhyfVwiXG4gICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0Rpc2FibGVkKCdob3VyJywgaHIpXCJcbiAgICAgICAgICAgICAgICAgIDpkYXRhLWtleT1cImhyXCJcbiAgICAgICAgICAgICAgICAgIHYtdGV4dD1cImhyXCJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cInNlbGVjdCgnaG91cicsIGhyKVwiPjwvbGk+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPHVsIHYtaWY9XCJjb2x1bW4gPT09ICdtaW51dGUnXCIgOmtleT1cImNvbHVtblwiIGNsYXNzPVwibWludXRlc1wiIEBzY3JvbGw9XCJrZWVwRm9jdXNpbmdcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImhpbnRcIiB2LXRleHQ9XCJtaW51dGVMYWJlbFRleHRcIj48L2xpPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKG0sIG1JbmRleCkgaW4gbWludXRlc1wiPlxuICAgICAgICAgICAgICA8bGkgdi1pZj1cIiFvcHRzLmhpZGVEaXNhYmxlZE1pbnV0ZXMgfHwgKG9wdHMuaGlkZURpc2FibGVkTWludXRlcyAmJiAhaXNEaXNhYmxlZCgnbWludXRlJywgbSkpXCJcbiAgICAgICAgICAgICAgICAgIDprZXk9XCJtSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwie2FjdGl2ZTogbWludXRlID09PSBtfVwiXG4gICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0Rpc2FibGVkKCdtaW51dGUnLCBtKVwiXG4gICAgICAgICAgICAgICAgICA6ZGF0YS1rZXk9XCJtXCJcbiAgICAgICAgICAgICAgICAgIHYtdGV4dD1cIm1cIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic2VsZWN0KCdtaW51dGUnLCBtKVwiPjwvbGk+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPHVsIHYtaWY9XCJjb2x1bW4gPT09ICdzZWNvbmQnXCIgOmtleT1cImNvbHVtblwiIGNsYXNzPVwic2Vjb25kc1wiIEBzY3JvbGw9XCJrZWVwRm9jdXNpbmdcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImhpbnRcIiB2LXRleHQ9XCJzZWNvbmRMYWJlbFRleHRcIj48L2xpPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKHMsIHNJbmRleCkgaW4gc2Vjb25kc1wiPlxuICAgICAgICAgICAgICA8bGkgdi1pZj1cIiFvcHRzLmhpZGVEaXNhYmxlZFNlY29uZHMgfHwgKG9wdHMuaGlkZURpc2FibGVkU2Vjb25kcyAmJiAhaXNEaXNhYmxlZCgnc2Vjb25kJywgcykpXCJcbiAgICAgICAgICAgICAgICAgIDprZXk9XCJzSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwie2FjdGl2ZTogc2Vjb25kID09PSBzfVwiXG4gICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0Rpc2FibGVkKCdzZWNvbmQnLCBzKVwiXG4gICAgICAgICAgICAgICAgICA6ZGF0YS1rZXk9XCJzXCJcbiAgICAgICAgICAgICAgICAgIHYtdGV4dD1cInNcIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic2VsZWN0KCdzZWNvbmQnLCBzKVwiPjwvbGk+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPHVsIHYtaWY9XCJjb2x1bW4gPT09ICdhcG0nXCIgOmtleT1cImNvbHVtblwiIGNsYXNzPVwiYXBtc1wiIEBzY3JvbGw9XCJrZWVwRm9jdXNpbmdcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImhpbnRcIiB2LXRleHQ9XCJhcG1MYWJlbFRleHRcIj48L2xpPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGEsIGFJbmRleCkgaW4gYXBtc1wiPlxuICAgICAgICAgICAgICA8bGkgdi1pZj1cIiFvcHRzLmhpZGVEaXNhYmxlZEhvdXJzIHx8IChvcHRzLmhpZGVEaXNhYmxlZEhvdXJzICYmICFpc0Rpc2FibGVkKCdhcG0nLCBhKSlcIlxuICAgICAgICAgICAgICAgICAgOmtleT1cImFJbmRleFwiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7YWN0aXZlOiBhcG0gPT09IGF9XCJcbiAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cImlzRGlzYWJsZWQoJ2FwbScsIGEpXCJcbiAgICAgICAgICAgICAgICAgIDpkYXRhLWtleT1cImFcIlxuICAgICAgICAgICAgICAgICAgdi10ZXh0PVwiYXBtRGlzcGxheVRleHQoYSlcIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic2VsZWN0KCdhcG0nLCBhKVwiPjwvbGk+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L3RlbXBsYXRlPjwhLS0gLyBDb21tb24gS2V5Ym9hcmQgU3VwcG9ydCAtLT5cblxuICAgICAgPCEtLVxuICAgICAgICBBZHZhbmNlZCBLZXlib2FyZCBTdXBwb3J0XG4gICAgICAgIEFkZGVkcyBodW5kcmVkcyBvZiBhZGRpdGlvbmFsIGV2ZW50IGxpc2VudGVyc1xuICAgICAgLS0+XG4gICAgICA8dGVtcGxhdGUgdi1pZj1cImFkdmFuY2VkS2V5Ym9hcmRcIj5cbiAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiY29sdW1uIGluIGNvbHVtbnNTZXF1ZW5jZVwiPlxuICAgICAgICAgIDx1bCB2LWlmPVwiY29sdW1uID09PSAnaG91cidcIiA6a2V5PVwiY29sdW1uXCIgY2xhc3M9XCJob3Vyc1wiIHRhYmluZGV4PVwiLTFcIiBAc2Nyb2xsPVwia2VlcEZvY3VzaW5nXCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJoaW50XCIgdi10ZXh0PVwiaG91ckxhYmVsVGV4dFwiIHRhYmluZGV4PVwiLTFcIj48L2xpPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGhyLCBoSW5kZXgpIGluIGhvdXJzXCI+XG4gICAgICAgICAgICAgIDxsaSB2LWlmPVwiIW9wdHMuaGlkZURpc2FibGVkSG91cnMgfHwgKG9wdHMuaGlkZURpc2FibGVkSG91cnMgJiYgIWlzRGlzYWJsZWQoJ2hvdXInLCBocikpXCJcbiAgICAgICAgICAgICAgICAgIDprZXk9XCJoSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwie2FjdGl2ZTogaG91ciA9PT0gaHJ9XCJcbiAgICAgICAgICAgICAgICAgIDp0YWJpbmRleD1cImlzRGlzYWJsZWQoJ2hvdXInLCBocikgPyAtMSA6IHRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgIDpkYXRhLWtleT1cImhyXCJcbiAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cImlzRGlzYWJsZWQoJ2hvdXInLCBocilcIlxuICAgICAgICAgICAgICAgICAgdi10ZXh0PVwiaHJcIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic2VsZWN0KCdob3VyJywgaHIpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLnRhYj1cIm9uVGFiKCdob3VyJywgaHIsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgQGtleWRvd24uc3BhY2UucHJldmVudD1cInNlbGVjdCgnaG91cicsIGhyKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi5lbnRlci5wcmV2ZW50PVwic2VsZWN0KCdob3VyJywgaHIpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLnVwLnByZXZlbnQ9XCJwcmV2SXRlbSgnaG91cicsIGhyKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi5kb3duLnByZXZlbnQ9XCJuZXh0SXRlbSgnaG91cicsIGhyKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi5sZWZ0LnByZXZlbnQ9XCJ0b0xlZnRDb2x1bW4oJ2hvdXInKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi5yaWdodC5wcmV2ZW50PVwidG9SaWdodENvbHVtbignaG91cicpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLmVzYy5leGFjdD1cImRlYm91bmNlQmx1clwiXG4gICAgICAgICAgICAgICAgICBAYmx1cj1cImRlYm91bmNlQmx1clwiXG4gICAgICAgICAgICAgICAgICBAZm9jdXM9XCJrZWVwRm9jdXNpbmdcIj48L2xpPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDx1bCB2LWlmPVwiY29sdW1uID09PSAnbWludXRlJ1wiIDprZXk9XCJjb2x1bW5cIiBjbGFzcz1cIm1pbnV0ZXNcIiB0YWJpbmRleD1cIi0xXCIgQHNjcm9sbD1cImtlZXBGb2N1c2luZ1wiPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiaGludFwiIHYtdGV4dD1cIm1pbnV0ZUxhYmVsVGV4dFwiIHRhYmluZGV4PVwiLTFcIj48L2xpPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKG0sIG1JbmRleCkgaW4gbWludXRlc1wiPlxuICAgICAgICAgICAgICA8bGkgdi1pZj1cIiFvcHRzLmhpZGVEaXNhYmxlZE1pbnV0ZXMgfHwgKG9wdHMuaGlkZURpc2FibGVkTWludXRlcyAmJiAhaXNEaXNhYmxlZCgnbWludXRlJywgbSkpXCJcbiAgICAgICAgICAgICAgICAgIDprZXk9XCJtSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwie2FjdGl2ZTogbWludXRlID09PSBtfVwiXG4gICAgICAgICAgICAgICAgICA6dGFiaW5kZXg9XCJpc0Rpc2FibGVkKCdtaW51dGUnLCBtKSA/IC0xIDogdGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgOmRhdGEta2V5PVwibVwiXG4gICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0Rpc2FibGVkKCdtaW51dGUnLCBtKVwiXG4gICAgICAgICAgICAgICAgICB2LXRleHQ9XCJtXCJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cInNlbGVjdCgnbWludXRlJywgbSlcIlxuICAgICAgICAgICAgICAgICAgQGtleWRvd24udGFiPVwib25UYWIoJ21pbnV0ZScsIG0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgQGtleWRvd24uc3BhY2UucHJldmVudD1cInNlbGVjdCgnbWludXRlJywgbSlcIlxuICAgICAgICAgICAgICAgICAgQGtleWRvd24uZW50ZXIucHJldmVudD1cInNlbGVjdCgnbWludXRlJywgbSlcIlxuICAgICAgICAgICAgICAgICAgQGtleWRvd24udXAucHJldmVudD1cInByZXZJdGVtKCdtaW51dGUnLCBtKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi5kb3duLnByZXZlbnQ9XCJuZXh0SXRlbSgnbWludXRlJywgbSlcIlxuICAgICAgICAgICAgICAgICAgQGtleWRvd24ubGVmdC5wcmV2ZW50PVwidG9MZWZ0Q29sdW1uKCdtaW51dGUnKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi5yaWdodC5wcmV2ZW50PVwidG9SaWdodENvbHVtbignbWludXRlJylcIlxuICAgICAgICAgICAgICAgICAgQGtleWRvd24uZXNjLmV4YWN0PVwiZGVib3VuY2VCbHVyXCJcbiAgICAgICAgICAgICAgICAgIEBibHVyPVwiZGVib3VuY2VCbHVyXCJcbiAgICAgICAgICAgICAgICAgIEBmb2N1cz1cImtlZXBGb2N1c2luZ1wiPjwvbGk+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPHVsIHYtaWY9XCJjb2x1bW4gPT09ICdzZWNvbmQnXCIgOmtleT1cImNvbHVtblwiIGNsYXNzPVwic2Vjb25kc1wiIHRhYmluZGV4PVwiLTFcIiBAc2Nyb2xsPVwia2VlcEZvY3VzaW5nXCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJoaW50XCIgdi10ZXh0PVwic2Vjb25kTGFiZWxUZXh0XCIgdGFiaW5kZXg9XCItMVwiPjwvbGk+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIocywgc0luZGV4KSBpbiBzZWNvbmRzXCI+XG4gICAgICAgICAgICAgIDxsaSB2LWlmPVwiIW9wdHMuaGlkZURpc2FibGVkU2Vjb25kcyB8fCAob3B0cy5oaWRlRGlzYWJsZWRTZWNvbmRzICYmICFpc0Rpc2FibGVkKCdzZWNvbmQnLCBzKSlcIlxuICAgICAgICAgICAgICAgICAgOmtleT1cInNJbmRleFwiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7YWN0aXZlOiBzZWNvbmQgPT09IHN9XCJcbiAgICAgICAgICAgICAgICAgIDp0YWJpbmRleD1cImlzRGlzYWJsZWQoJ3NlY29uZCcsIHMpID8gLTEgOiB0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICA6ZGF0YS1rZXk9XCJzXCJcbiAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cImlzRGlzYWJsZWQoJ3NlY29uZCcsIHMpXCJcbiAgICAgICAgICAgICAgICAgIHYtdGV4dD1cInNcIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic2VsZWN0KCdzZWNvbmQnLCBzKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi50YWI9XCJvblRhYignc2Vjb25kJywgcywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi5zcGFjZS5wcmV2ZW50PVwic2VsZWN0KCdzZWNvbmQnLCBzKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi5lbnRlci5wcmV2ZW50PVwic2VsZWN0KCdzZWNvbmQnLCBzKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi51cC5wcmV2ZW50PVwicHJldkl0ZW0oJ3NlY29uZCcsIHMpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLmRvd24ucHJldmVudD1cIm5leHRJdGVtKCdzZWNvbmQnLCBzKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi5sZWZ0LnByZXZlbnQ9XCJ0b0xlZnRDb2x1bW4oJ3NlY29uZCcpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLnJpZ2h0LnByZXZlbnQ9XCJ0b1JpZ2h0Q29sdW1uKCdzZWNvbmQnKVwiXG4gICAgICAgICAgICAgICAgICBAa2V5ZG93bi5lc2MuZXhhY3Q9XCJkZWJvdW5jZUJsdXJcIlxuICAgICAgICAgICAgICAgICAgQGJsdXI9XCJkZWJvdW5jZUJsdXJcIlxuICAgICAgICAgICAgICAgICAgQGZvY3VzPVwia2VlcEZvY3VzaW5nXCI+PC9saT5cbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgICA8dWwgdi1pZj1cImNvbHVtbiA9PT0gJ2FwbSdcIiA6a2V5PVwiY29sdW1uXCIgY2xhc3M9XCJhcG1zXCIgdGFiaW5kZXg9XCItMVwiIEBzY3JvbGw9XCJrZWVwRm9jdXNpbmdcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImhpbnRcIiB2LXRleHQ9XCJhcG1MYWJlbFRleHRcIiB0YWJpbmRleD1cIi0xXCI+PC9saT5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihhLCBhSW5kZXgpIGluIGFwbXNcIj5cbiAgICAgICAgICAgICAgPGxpIHYtaWY9XCIhb3B0cy5oaWRlRGlzYWJsZWRIb3VycyB8fCAob3B0cy5oaWRlRGlzYWJsZWRIb3VycyAmJiAhaXNEaXNhYmxlZCgnYXBtJywgYSkpXCJcbiAgICAgICAgICAgICAgICAgIDprZXk9XCJhSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwie2FjdGl2ZTogYXBtID09PSBhfVwiXG4gICAgICAgICAgICAgICAgICA6dGFiaW5kZXg9XCJpc0Rpc2FibGVkKCdhcG0nLCBhKSA/IC0xIDogdGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgOmRhdGEta2V5PVwiYVwiXG4gICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0Rpc2FibGVkKCdhcG0nLCBhKVwiXG4gICAgICAgICAgICAgICAgICB2LXRleHQ9XCJhcG1EaXNwbGF5VGV4dChhKVwiXG4gICAgICAgICAgICAgICAgICBAY2xpY2s9XCJzZWxlY3QoJ2FwbScsIGEpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLnRhYj1cIm9uVGFiKCdhcG0nLCBhLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLnNwYWNlLnByZXZlbnQ9XCJzZWxlY3QoJ2FwbScsIGEpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLmVudGVyLnByZXZlbnQ9XCJzZWxlY3QoJ2FwbScsIGEpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLnVwLnByZXZlbnQ9XCJwcmV2SXRlbSgnYXBtJywgYSlcIlxuICAgICAgICAgICAgICAgICAgQGtleWRvd24uZG93bi5wcmV2ZW50PVwibmV4dEl0ZW0oJ2FwbScsIGEpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLmxlZnQucHJldmVudD1cInRvTGVmdENvbHVtbignYXBtJylcIlxuICAgICAgICAgICAgICAgICAgQGtleWRvd24ucmlnaHQucHJldmVudD1cInRvUmlnaHRDb2x1bW4oJ2FwbScpXCJcbiAgICAgICAgICAgICAgICAgIEBrZXlkb3duLmVzYy5leGFjdD1cImRlYm91bmNlQmx1clwiXG4gICAgICAgICAgICAgICAgICBAYmx1cj1cImRlYm91bmNlQmx1clwiXG4gICAgICAgICAgICAgICAgICBAZm9jdXM9XCJrZWVwRm9jdXNpbmdcIj48L2xpPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC90ZW1wbGF0ZT48IS0tIC8gQWR2YW5jZWQgS2V5Ym9hcmQgU3VwcG9ydCAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3NwYW4+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG4udnVlX190aW1lLXBpY2tlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LXNpemU6IDFlbTtcbiAgd2lkdGg6IDEwZW07XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4udnVlX190aW1lLXBpY2tlciAqIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgaW5wdXQuZGlzcGxheS10aW1lIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2QyZDJkMjtcbiAgd2lkdGg6IDEwZW07XG4gIGhlaWdodDogMi4yZW07XG4gIHBhZGRpbmc6IDAuM2VtIDAuNWVtO1xuICBmb250LXNpemU6IDFlbTtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgaW5wdXQuaGFzLWN1c3RvbS1pY29uIHtcbiAgcGFkZGluZy1sZWZ0OiAxLjhlbTtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgaW5wdXQuZGlzcGxheS10aW1lLmludmFsaWQ6bm90KC5za2lwLWVycm9yLXN0eWxlKSB7XG4gIGJvcmRlci1jb2xvcjogI2NjMDAzMztcbiAgb3V0bGluZS1jb2xvcjogI2NjMDAzMztcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgaW5wdXQuZGlzcGxheS10aW1lOmRpc2FibGVkLFxuLnZ1ZV9fdGltZS1waWNrZXIgaW5wdXQuZGlzcGxheS10aW1lLmRpc2FibGVkIHtcbiAgY29sb3I6ICNkMmQyZDI7XG59XG5cbi52dWVfX3RpbWUtcGlja2VyIC5jb250cm9scyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB6LWluZGV4OiAzO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cbiAgLyogUHJldmVudCBicm93c2VyIGZvY3VzaW5nIG9uIHRoZSBjb250cm9scyBsYXllciAqL1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgLmNvbnRyb2xzID4gKiB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgXG4gIHdpZHRoOiBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIHBhZGRpbmc6IDAgMC4zNWVtO1xuXG4gIGNvbG9yOiAjZDJkMmQyO1xuICBsaW5lLWhlaWdodDogMTAwJTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG4gIC8qIFJlc3VtZSBwb2ludGVyLWV2ZW50cyBvbiBjaGlsZHJlbiBjb21wb25lbnRzICovXG4gIHBvaW50ZXItZXZlbnRzOiBpbml0aWFsO1xuXG4gIHRyYW5zaXRpb246IGNvbG9yIC4ycywgb3BhY2l0eSAuMnM7XG59XG5cbi52dWVfX3RpbWUtcGlja2VyIC5jb250cm9scyA+ICo6aG92ZXIge1xuICBjb2xvcjogIzc5Nzk3OTtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgLmNvbnRyb2xzID4gKjpmb2N1cyxcbi52dWVfX3RpbWUtcGlja2VyIC5jb250cm9scyA+ICo6YWN0aXZlIHtcbiAgb3V0bGluZTogMDtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgLmNvbnRyb2xzIC5jaGFyIHtcbiAgZm9udC1zaXplOiAxLjFlbTtcbiAgbGluZS1oZWlnaHQ6IDEwMCU7XG5cbiAgLyogVmVydGljYWwgYWxpZ24gZml4ZXMgZm9yIHdlYmtpdCBicm93c2VycyBvbmx5ICovXG4gIC13ZWJraXQtbWFyZ2luLWJlZm9yZTogLTAuMTVlbTtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgLmN1c3RvbS1pY29uIHtcbiAgei1pbmRleDogMjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEuOGVtO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgLyogcGFzcyBkb3duIG1vdXNlIGV2ZW50cyB0byB0aGUgPGlucHV0PiB1bmRlcm5lYXRoICovXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4udnVlX190aW1lLXBpY2tlciAuY3VzdG9tLWljb24gaW1nLFxuLnZ1ZV9fdGltZS1waWNrZXIgLmN1c3RvbS1pY29uIHN2Zyxcbi52dWVfX3RpbWUtcGlja2VyIC5jb250cm9scyBpbWcsXG4udnVlX190aW1lLXBpY2tlciAuY29udHJvbHMgc3ZnIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDtcbiAgb3V0bGluZTogMDtcbiAgbWF4LXdpZHRoOiAxZW07XG4gIGhlaWdodDogYXV0bztcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgLnRpbWUtcGlja2VyLW92ZXJsYXkge1xuICB6LWluZGV4OiA0O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgLmRyb3Bkb3duLFxuLnZ1ZV9fdGltZS1waWNrZXItZHJvcGRvd24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDU7XG4gIHRvcDogY2FsYygyLjJlbSArIDJweCk7XG4gIGxlZnQ6IDA7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDZweCByZ2JhKDAsMCwwLDAuMTUpO1xuICB3aWR0aDogMTBlbTtcbiAgaGVpZ2h0OiAxMGVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4vKiBEcm9wZG93biBjbGFzcyB3aGVuIFwiYXBwZW5kLXRvLWJvZHlcIiBpcyBvbiAqL1xuLnZ1ZV9fdGltZS1waWNrZXItZHJvcGRvd24ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDEwMDtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgLmRyb3Bkb3duLmRyb3AtdXAsXG4udnVlX190aW1lLXBpY2tlci1kcm9wZG93bi5kcm9wLXVwIHtcbiAgdG9wOiBhdXRvO1xuICBib3R0b206IGNhbGMoMi4yZW0gKyAxcHgpO1xufVxuXG4udnVlX190aW1lLXBpY2tlciAuZHJvcGRvd24gLnNlbGVjdC1saXN0LFxuLnZ1ZV9fdGltZS1waWNrZXItZHJvcGRvd24gLnNlbGVjdC1saXN0IHtcbiAgd2lkdGg6IDEwZW07XG4gIGhlaWdodDogMTBlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4udnVlX190aW1lLXBpY2tlciAuZHJvcGRvd24gLnNlbGVjdC1saXN0OmZvY3VzLFxuLnZ1ZV9fdGltZS1waWNrZXIgLmRyb3Bkb3duIC5zZWxlY3QtbGlzdDphY3RpdmUsXG4udnVlX190aW1lLXBpY2tlci1kcm9wZG93biAuc2VsZWN0LWxpc3Q6Zm9jdXMsXG4udnVlX190aW1lLXBpY2tlci1kcm9wZG93biAuc2VsZWN0LWxpc3Q6YWN0aXZlIHtcbiAgb3V0bGluZTogMDtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgLmRyb3Bkb3duIHVsLFxuLnZ1ZV9fdGltZS1waWNrZXItZHJvcGRvd24gdWwge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG91dGxpbmU6IDA7XG5cbiAgZmxleDogMSAxIDAuMDAwMDFweDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4udnVlX190aW1lLXBpY2tlciAuZHJvcGRvd24gdWwubWludXRlcyxcbi52dWVfX3RpbWUtcGlja2VyIC5kcm9wZG93biB1bC5zZWNvbmRzLFxuLnZ1ZV9fdGltZS1waWNrZXIgLmRyb3Bkb3duIHVsLmFwbXMsXG4udnVlX190aW1lLXBpY2tlci1kcm9wZG93biB1bC5taW51dGVzLFxuLnZ1ZV9fdGltZS1waWNrZXItZHJvcGRvd24gdWwuc2Vjb25kcyxcbi52dWVfX3RpbWUtcGlja2VyLWRyb3Bkb3duIHVsLmFwbXMge1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNmZmY7XG59XG5cbi52dWVfX3RpbWUtcGlja2VyIC5kcm9wZG93biB1bCBsaSxcbi52dWVfX3RpbWUtcGlja2VyLWRyb3Bkb3duIHVsIGxpIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAwLjNlbSAwO1xuICBjb2xvcjogIzE2MTYxNjtcbn1cblxuLnZ1ZV9fdGltZS1waWNrZXIgLmRyb3Bkb3duIHVsIGxpOm5vdCguaGludCk6bm90KFtkaXNhYmxlZF0pOmhvdmVyLFxuLnZ1ZV9fdGltZS1waWNrZXIgLmRyb3Bkb3duIHVsIGxpOm5vdCguaGludCk6bm90KFtkaXNhYmxlZF0pOmZvY3VzLFxuLnZ1ZV9fdGltZS1waWNrZXItZHJvcGRvd24gdWwgbGk6bm90KC5oaW50KTpub3QoW2Rpc2FibGVkXSk6aG92ZXIsXG4udnVlX190aW1lLXBpY2tlci1kcm9wZG93biB1bCBsaTpub3QoLmhpbnQpOm5vdChbZGlzYWJsZWRdKTpmb2N1cyAge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC4wOCk7XG4gIGNvbG9yOiAjMTYxNjE2O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi52dWVfX3RpbWUtcGlja2VyIC5kcm9wZG93biB1bCBsaTpub3QoW2Rpc2FibGVkXSkuYWN0aXZlLFxuLnZ1ZV9fdGltZS1waWNrZXIgLmRyb3Bkb3duIHVsIGxpOm5vdChbZGlzYWJsZWRdKS5hY3RpdmU6aG92ZXIsXG4udnVlX190aW1lLXBpY2tlciAuZHJvcGRvd24gdWwgbGk6bm90KFtkaXNhYmxlZF0pLmFjdGl2ZTpmb2N1cyxcbi52dWVfX3RpbWUtcGlja2VyLWRyb3Bkb3duIHVsIGxpOm5vdChbZGlzYWJsZWRdKS5hY3RpdmUsXG4udnVlX190aW1lLXBpY2tlci1kcm9wZG93biB1bCBsaTpub3QoW2Rpc2FibGVkXSkuYWN0aXZlOmhvdmVyLFxuLnZ1ZV9fdGltZS1waWNrZXItZHJvcGRvd24gdWwgbGk6bm90KFtkaXNhYmxlZF0pLmFjdGl2ZTpmb2N1cyB7XG4gIGJhY2tncm91bmQ6ICM0MUI4ODM7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4udnVlX190aW1lLXBpY2tlciAuZHJvcGRvd24gdWwgbGlbZGlzYWJsZWRdLFxuLnZ1ZV9fdGltZS1waWNrZXIgLmRyb3Bkb3duIHVsIGxpW2Rpc2FibGVkXTpob3Zlcixcbi52dWVfX3RpbWUtcGlja2VyLWRyb3Bkb3duIHVsIGxpW2Rpc2FibGVkXSxcbi52dWVfX3RpbWUtcGlja2VyLWRyb3Bkb3duIHVsIGxpW2Rpc2FibGVkXTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBvcGFjaXR5OiAwLjM7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi52dWVfX3RpbWUtcGlja2VyIC5kcm9wZG93biAuaGludCxcbi52dWVfX3RpbWUtcGlja2VyLWRyb3Bkb3duIC5oaW50IHtcbiAgY29sb3I6ICNhNWE1YTU7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgZm9udC1zaXplOiAwLjhlbTtcbn1cbjwvc3R5bGU+XG4iLCIudmlkZW8tanMgLnZqcy1iaWctcGxheS1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyOmJlZm9yZSwgLnZqcy1idXR0b24gPiAudmpzLWljb24tcGxhY2Vob2xkZXI6YmVmb3JlLCAudmlkZW8tanMgLnZqcy1tb2RhbC1kaWFsb2csIC52anMtbW9kYWwtZGlhbG9nIC52anMtbW9kYWwtZGlhbG9nLWNvbnRlbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTsgfVxuXG4udmlkZW8tanMgLnZqcy1iaWctcGxheS1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyOmJlZm9yZSwgLnZqcy1idXR0b24gPiAudmpzLWljb24tcGxhY2Vob2xkZXI6YmVmb3JlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgc3JjOiB1cmwoXCJmb250L1ZpZGVvSlMuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlb3RcIik7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBzcmM6IHVybChkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxkMDlHUmdBQkFBQUFBQkJJQUFzQUFBQUFHb1FBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkhVMVZDQUFBQkNBQUFBRHNBQUFCVUlJc2xlazlUTHpJQUFBRkVBQUFBUGdBQUFGWlJpVjNSWTIxaGNBQUFBWVFBQUFEUUFBQURJam4wOThabmJIbG1BQUFDVkFBQUN2NEFBQkVJQXduU3cyaGxZV1FBQUExVUFBQUFLd0FBQURZU3kyaExhR2hsWVFBQURZQUFBQUFiQUFBQUpBNERCeUZvYlhSNEFBQU5uQUFBQUE4QUFBQ0U0QUFBQUd4dlkyRUFBQTJzQUFBQVJBQUFBRVE5TkVIR2JXRjRjQUFBRGZBQUFBQWZBQUFBSUFFeUFJRnVZVzFsQUFBT0VBQUFBU1VBQUFJSzFjZjFvSEJ2YzNRQUFBODRBQUFCRHdBQUFaNUFBbC8wZUp4allHUmdZT0JpTUdDd1kyQnljZk1KWWVETFNTekpZNUJpWUdHQUFKQThNcHN4SnpNOWtZRUR4Z1BLc1lCcERpQm1nNGdDQUNZN0JVZ0FlSnhqWUdRN3hUaUJnWldCZ2FXUTVSa0RBOE12Q00wY3d4RE9lSTZCZ1ltQmxaa0JLd2hJYzAxaGNQakkrRkdCSGNSZHlBNFJaZ1FSQUM0SEN3RUFBSGljN2RGcHJzSWdBRVhoZzhVNjFYbWVXY0JiMUZ1UVA0dzdaUVhLNWJvTW0zeWNsRkRTQU5BSG11S3ZpQkJlQlBROHlteW84dzNqT2gvNXIydWk1bk42djhzWU5KYjNXTWRlV1J2TGppMERob3pLZHhNNnBzeVlzMkRKaWpVYnR1elljK0RJaVRNWHJ0eTRrOG9HTGIrbjB4Q2UzN2VrTTdaNjZqMURiVXkzbDZQcEhuTGZkTE81TmRTQm9RNE5kV1NvWTlPTjU0bWhkcWEveTFORG5SbnEzRkFYaHJvMDFKV2hyZzExWTZoYlE5MFo2dDVRRDRaNk5OU1RvWjROOVdLb1YwTzlHZXJkVUpPUlBxa2hUZDU0bkoxWURYQlUxUlYrNTc2L0pCczJiUFlQa3JEWnQ1dnNKcnY1M1YvSTVtY2xoR0RDVHdnR0JRUVNURWppNGhDa1lJQUdkNFRHSVdGQWhWMFJRVHBXbVFwMXh2NmhBNE9UT2xOcjJ6RkFOYkhVWWJxMk90TkNwVmlScXNrK2UrN2JUUUFoenRpOHZQZnVQZmZjYzg4OTU5enpuYmNNTVBqSEQvS0RER0VZMEFCcFlYMzg0Tmhsb21JWWxvNEpJU0dFWTltTWgyRlNpZFlpcWtFVXBodE5ZRFNZL2RYZzkwMjNsNERkeGxxVWwwY2h1WlJobmNKS3JzQ1FISXdjR3V3Zm5oTUl6Qm51SDRTeW0rMUQyemFHamhlWGxoWWZEMjM4ejgwbUtZTW12SjVYZU9UemQ4ejlldWpiTXhKTmh1NEM5eFBFL2JDTWlEdVNOSVdna1RRd0JFNTVoTFNBRTdad2hySExuQUhaT0dWL2ttQkdUaU5qWnh6STc3SGI3SHFqejY4VGpUNnZoKzVKVC9jQ0lrcVMwRDZDcVBmNWpYNFFqZHg1ajZ2bERmWk00YVpGZGJWWEl4dE9sSmFQL1dvdHRNbkg2Q0pRM2JUaXVlM1ByWTIzSGpuQ2h0dWFteHd2dnpGanhrUHJOajN6MHRHOVQ1NjFIRFlmNk9nbVJXdmxZM0pRSG9RYjhsdFYyWWV0N1lmV2N0RWpSMUF0eFMvY1NYNlU0YWxmNk5KRUJRN1lLZzl3clhRS2QwSWVaQ2IydXg3NVVoaDFVbitOeis5TFRPRTdQSzc3N25ONXhxZFRuZVRCaENieDQ0Nm1acmhuVWtyQ3oyWWhBOWRTTXhhRzBTWW1UOGhpOVpQdTFFOTRQSllRU0g2TFJtaHhlYzdRN1plWG50Z1F1VnBiaCthNHFXTnNja1Z5VGRuMFA3bzdEcGdQVzg0K3VSY3EwQklUZmxCaWtHZFVqQVo5d1lCVkkzbXRyTnZyOWtwZzFVc2FLNnQzNjkwYW9vckMxbGcwR3BNSDJIQU10a1pqc1NpNUlnOUVTVm9zT2g3R1FmTGpLTkx2S3BNS2tMU0tORkFrYTcxMEdkZ1NpOG9ETVNvTmhxamtLQlhUZ24zc3d0YXh5ekdrVXpJemFlOVJ0TGRXa1NsWjFLRFg2RXpnbGx6VjROVjRTb0RGU09HRDQrSENlUVVGOHdyWjVIczh6SWI1RWFWeHk4RFlGVGJNQ0pQbkxJV1p4dWdaRTJObGl2QzBnYzFxRVFVUjhqRUtnWmNBWGVIMThCaUNnbDVubEhoMENyakI0SGI1Zlg0Z2IwSjdjOVB1SFZzZmdreDJuL3ZUWS9KVjhrbjhQR3hmN2ZhT1o4cVg4SlZCeXVJZjR3aGs5c3FYbGkyaHZQSlY5aHJwMGhZN2w4cjJ4Mzd5ZGFWc2I0eHZYdi80N3YyTmpmQ2w4bTVvUkRKY2xGTW9FMXlrMFVoMVRlNC9tOGxGWGU5cUJaRDBFa2hlaWNlYlh2ekkyUExDdW9LQ3VrTHVoUEllS3dhSFBFb3V4dzNrTXFhSVVYRFExcDBtaXArTXlDT1JTQ1Fhb1VzblkxVlozOG5VVHJHMjFXdlZvNGYxT3NFSkZodlNmQUZ3R2ZUOFZIUk1lQVZVcHdMT29MempUL1JFSWozTzNGaHVVUkUrbkVSRiswcFRJZDVGeXh2NXNmd0d5ZzRPK215NHZadjBzWm03b2VRbEZaT1JpQit0RzBNd2VWTnJhZWl0bDd5eGlQSUhUazQvZGlWeHM5NG81bEVZaXNoQjJpQXRrY2hFbnNBY3RvRXB4NDRGbzhYbnNRTWFBMjJCbHFDMjBSbWhCS3pZb2paeVlheGcrSmdnTWM0SEhZMm0rTDlFa1dTWWxqaXJPaXNyTzdkM1Zvcnh6eVo2VmM0bEpxSVRBdTFiMndPQmRyTEVsQVArYkZjMmVHYVpGVmJrbUprdHY1dVQ2Smx6NUQvTW5CRm9yNmlnL0pQblJWaUJzVjNMTktHR3FCMUNoSjB0Z1F5d2xWTEZKSXVRZ1RGdHR3a2lLeGh5UWRBWk1kTVl0U2FvQWV3cWZ2WFZZUEFiRFQ2LzFtZXo4NVlTOEZTRHl3UTZOZkFuZWY2Rk5FR01pbG5wcHl2bjVyQjZ0VHlxMXBPY2VSV25wMldKRVpGWEhlWDVveW9lbTFuVFRnZHFjNGhlRFk3Yk9lS3o2M3ZueisvZFJ4K3MzMUh0MkpHYW5RNXNlaXJmV0pMOXRqb3pVLzEyVG5Fam41b3V4OU96VTNja0diQnpCd05PeWs2OUp5a0tIMG4vMExNOUE3MnR1d00zelFwSVJ1NEF4aVRvc2VFcGdQT21iUk95RmU5L1gyeWVVdm9Vc0N5RXZqY2dzN2ZwV1AzL2FLbEZOMCs2SEZVZTZEOUhGei9YUHdCbE45dFRxTnlaakZKOFVPMlJVVDUvaDRDcHRDY3RFeWVpc25PeVhqQUxFcDdkWEthUUtmNk83SU1uR2pOTkFDUk1MeHFkWUpYOGVNTHZtbWQ2OEQrYXlCTHlLS1lad1l4RHQvR05oekVUREowNVF4bHlpM3BpMy9aOTNuZFlWU3VtZ2owVi9La0lGbE82KzFLM2ZGMiszZzBxK1l0dVNJZjBidm1McVYwOW5ub2JJNmh3Y2pJUDhhUENLYXlqc0Y1SkJZM0xhS0FlUkxTeVlCMWg4MW9Ud2U5U2xQTWtYQjdHMG1mTDlxNzFnYXFxd1BxdTY3UVJLUzErT2JUeCtzYlF5OVFWMk9RSEVTY0drZEZCZVQ3djdxaXNxcXJzNk41Mmk3OC9SKzZTMHFRT05WajI2YWdPVm9zd0N5UVdJVjVEODZ2SDUzYnhOVWVYVjBLK1haYUh2L25tL0tzSGhPdnlsd3NXbkpYL0hFOGwvNFdDdjV4K2w1bjA4ejZVVThiVU1hM01CcFNtTTdGNjNBeG50ZEM5ZUJDS0VaVzlIcitBQk5xdHhnQVFyU2JNdG1yVzdsS1F1b1NnQmhTclRheldWVTJRQUtXWTh3aWl1aHFGbVFnV0pCZ29YaXVXSW00Mk43aHFaYkJzZ1h6NTJPNVA1dVN2YU5nRkduT3V2c1J3OEk4TGFoYTkxd012RHV4cVdGaGVONy84R1Z0VGx0ZFM4M0RRc1hSbXFjNVp0Y0pYRVZybFYyZG9UV2s1K1l1bm03MWRHNWY1NW0vcVkwTWpJOTN2djkvTmZweFhWOXNVWHJ4eTJmYk55MW9yNjVjT2xEUm5Pb0tGZWVYY2J3NDJIL2JORFQ1UXMzZmxnczMxZ1dDMWxEMW5mVVYvWDdOZENuU1VkSFkyZThhZnpmS3NxWjVabGpmRHFqTE9tazNVZWJOWEIrYUhBclBZRFJzKy9IRER4ZVQ1RGlQK3NGZzdPcFJhVlFNR0JWODlQcGVCZGoyMmhDRTBVdWIwVXF3THJOV3NHMGN1eWFkZ0xYVGVSNXJiTzQrM2MvdmwxNWN1cjJuUnErVFhDUURjUzNTTytzNmFrK2U1L2VNUysxZHczYnR1M1lHMnR2Rkw4WGRJWnZkamRXNlRPLzRCN0lkclpXVlBtY3RtNS81OUFnc1BJdFRTYkNpSUJyMk9xSUd6bXUyMFNNS0FTN3lxd0dCVWZHZmdqRFlsTExEZUYwU2ZjTEIyTFN4OGZsVCswOC9reno2eU9qOTZyZnQ0cnBUamRQUWNtTGQ0N3VLaWJiRHE3WlN6L1h0Ykgybk43MTdOZDYyclUrYzhJY2V2dnY3STA5d0E2V3ZqVmNhZmIrRnNiTkcrWlE4MFJuNlpac3ZyUDd0ZVAyZHpUZG9FVHZOaGpDbXNyOEZJRDJzSjY5Vll2ZFVjeGs0QXpZUmxLY2FFMzhlWE5SbGZXOUgxYXM5aTZhY0xIcDFYcHVOQjVLN0RJdmtYMDh5MVpZdmgzS2ZXYWlDekgrenRyU0RtRDdMdVg3M3gvbUplbEI4WWozOXQ4bmhOUUpKMkNBdGhwb0ZHTHNHZ3RTT0NKb29DR29hSkFNVGpTV0hWWjA4WUFhMUZnOWxQSTVVNkRPc0dWakRhc0plWlorWXloZkN3Zk96Q3hsQkE2OU05WExYdHphN0gvcmF2KzlUanE1eE5pMHdwS1FJUk5PNExyeno3eXA1UVZZTTZKZC9vYzFVdm4vbVFoaHVXaDZFTlhvUzJZVFo4UVQ0MmJGNWQvNTU5enA1cjBVZmYyVm5SMnRkZjIvV0NPZDJjTzBNdzZxcFdQbnZ4cFYwbnJ0NWZaZDJ5SXRjMTk5R1dlOHZsTmZORHErQ0gvN3lBQW5COWhuN1Q0UU80YzFnOVNjeHNaZ216bnRuRS9JREduZHRITXc2OWxGd29DbllzTUd4K3JCcDhKU0JxZEx6QnI5UVJQcS9QYmhXTVdGdFFacDF4Z3V5L2hhdzNURUhtM1RXQW54RldRUVdndDdNNU9WMGxDejFWUll1Y3BXbGl5N3o2WmQ0dXJ3UEl5ZVpRcWxpMkxnZzdzekpWMDlQeXNBVGJPUXRZSXJCMll6YmtKWWtHZ0owbTRBalBVYXAxcHZZdTFLOXFyOTd6MFlsM3AzMzJiMkxZQjc4bmNZSWxSa2F1LzhHT2JTc09sWmFuY0FDRTVkNWlseStjMis3aDVZajRscWhWbVhYQitpWExmdmRxU2dxZkt0UXZmSERWME9udlFSMXFodzQyWFMvdmt2c2gvaFhjckRGUDBhK1NKTklvbUVmRDFuc3JZR08rMWJnVE9KaE04SHY2ZWsrN3ZWZ2x4dVNSd29LbjE3UzkzN2JtNllKQ2VTU0cwT3Axbis3dEUzN3RjWi9wN2RzVHY0RVVyR3BEYld1ZUtpZ3NMSGhxVFZzb0VqK0pVMGthU2puajl0ejgvZ3J5UVd3SjlCY0pYQkMvN3NtTytJL0lGVVJKZXRGUHJkdDVXY29MNkRiRUpheWdJOENUSGZRVGpmNDBvZkQrRHdhbFRxSUFBSGljWTJCa1lHQUE0akM1dDIvaitXMitNbkN6TTREQXRUQys1Y2cwT3lOWW5JT0JDVVFCQUFjZUI5MEFlSnhqWUdSZ1lHY0FBUkQ1L3o4N0l3TWpBeXBRQkFBdGd3STRBSGljWTJCZ1lHQWZZQXdBT2tRQTRRQUFBQUFBQUE0QWFBQitBTXdBNEFFQ0FVSUJiQUdZQWNJQ0dBSllBclFDNEFNd0E3QUQzZ1F3QkpZRTNBVWtCV1lGaWdZZ0JtWUd0QWJxQjFnSUVnaFlDRzRJaEhpY1kyQmtZR0JRWkNobFlHY0FBU1lnNWdKQ0JvYi9ZRDREQUJmVEFiUUFlSnhka0UxcWcwQVlobDhUazlBSW9WRGFWU216YWhjRjg3UE1BUkxJTW9GQWwwWkhZMUJIZEJKSVQ5QVQ5QVE5UlE5UWVxeSt5dGVOTXpEemZNKzg4dzBLNEJZL2NOQU1CNk4yYlVhUFBCTHVreWJDTHZsZWVBQVBqOEpEK2hmaE1WN2hDM3U0d3hzN09PNE56UVNaY0kvOEx0d25md2k3NUUvaEFSN3dKVHlrL3hZZVk0OWZZUS9QenRNK2piVFo3TFk2T1dkQkpkWC9wcXM2TllXYSt6TXhhMTNvS3JBNlVvZXJxaS9Kd3RwWXhaWEoxY29VVm1lWlVXVmxUanEwL3RIYWNqbWR4dUw5ME9SOE8wVUVEWU1OZHRpU0VwejVYUUdxemxtMzBrelVkQVlGRk9iOFI3Tk9aazBxMmx3QXl6MWk3b0FyMXhvWHZyT2d0WWhaeDh3WTVLUlYyNjlKWjV5R3BtelBUalFodlk5amU2dkVFbFBPdUpQM21XS25QNU0zVitZQUFBQjRuRzJQeVhMQ01CQkUzWUNORFdFTDJmZms3bzhTOG9DbmtDVkhDNUMvanpCUWxVUDZJSFZQell5ZWtsNXkwaUw1WDUvb29ZOEJVbVFZSWtlQkVjYTR3Z1JUekRESEF0ZFk0Z2EzdU1NOUh2Q0lKenpqQmE5NHd6cys4SW12Wk5BcThUTStIcVZrS3hXbHJRaU94anVqUWtObEV6eU56bDZaL2NVMlhGMDZhdDdVODNWUXlrbExwRXZTbnV6c2IrSEFQblBmUVZnYXVwYTFKbHU0c1BMc0ZibGNpdGF6MGRIVTBaRjFxYXRqWjErYVRYWUNtcDZ1MGdTdldOUHlITHRGWitaZVhXVlNhRWtxczNUOFM3NFdrbGJHYk5OTnE0TEw0K0NXS3RaRHYyY2ZYOGw4YUZiS0ZoRW5KbkorSVVMRnBxd29Rbk5IbEhhVlF0UEJsK3lwbWJTV2RteUM2MUtTL0FLWkMzWStBQT09KSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoZGF0YTphcHBsaWNhdGlvbi94LWZvbnQtdHRmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LEFBRUFBQUFMQUlBQUF3QXdSMU5WUWlDTEpYb0FBQUU0QUFBQVZFOVRMekpSaVYzUkFBQUJqQUFBQUZaamJXRndPZlQzeGdBQUFtZ0FBQU1pWjJ4NVpnTUowc01BQUFYUUFBQVJDR2hsWVdRU3kyaExBQUFBNEFBQUFEWm9hR1ZoRGdNSElRQUFBTHdBQUFBa2FHMTBlT0FBQUFBQUFBSGtBQUFBaEd4dlkyRTlORUhHQUFBRmpBQUFBRVJ0WVhod0FUSUFnUUFBQVJnQUFBQWdibUZ0WmRYSDlhQUFBQmJZQUFBQ0NuQnZjM1JBQWwvMEFBQVk1QUFBQVo0QUFRQUFCd0FBQUFBQUJ3QUFBUC8vQndFQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUNFQUFRQUFBQUVBQUZZZlR3bGZEenoxQUFzSEFBQUFBQURXVmc2bkFBQUFBTlpXRHFjQUFBQUFCd0VIQUFBQUFBZ0FBZ0FBQUFBQUFBQUJBQUFBSVFCMUFBY0FBQUFBQUFJQUFBQUtBQW9BQUFEL0FBQUFBQUFBQUFFQUFBQUtBREFBUGdBQ1JFWk1WQUFPYkdGMGJnQWFBQVFBQUFBQUFBQUFBUUFBQUFRQUFBQUFBQUFBQVFBQUFBRnNhV2RoQUFnQUFBQUJBQUFBQVFBRUFBUUFBQUFCQUFnQUFRQUdBQUFBQVFBQUFBRUd5Z0dRQUFVQUFBUnhCT1lBQUFENkJIRUU1Z0FBQTF3QVZ3SE9BQUFDQUFVREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJtUldRQVFQRUI4U0FIQUFBQUFLRUhBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUhBQUFBQndBQUFBY0FBQUFIQUFBQUJ3QUFBQWNBQUFBSEFBQUFCd0FBQUFjQUFBQUhBQUFBQndBQUFBY0FBQUFIQUFBQUJ3QUFBQWNBQUFBSEFBQUFCd0FBQUFjQUFBQUhBQUFBQndBQUFBY0FBQUFIQUFBQUJ3QUFBQWNBQUFBSEFBQUFCd0FBQUFjQUFBQUhBQUFBQndBQUFBY0FBQUFIQUFBQUJ3QUFBQUFBQUFVQUFBQURBQUFBTEFBQUFBUUFBQUdTQUFFQUFBQUFBSXdBQXdBQkFBQUFMQUFEQUFvQUFBR1NBQVFBWUFBQUFBUUFCQUFCQUFEeElQLy9BQUR4QWYvL0FBQUFBUUFFQUFBQUFRQUNBQU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FBQUJCZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFHUUFBQUFBQUFBQUNBQUFQRUJBQUR4QVFBQUFBRUFBUEVDQUFEeEFnQUFBQUlBQVBFREFBRHhBd0FBQUFNQUFQRUVBQUR4QkFBQUFBUUFBUEVGQUFEeEJRQUFBQVVBQVBFR0FBRHhCZ0FBQUFZQUFQRUhBQUR4QndBQUFBY0FBUEVJQUFEeENBQUFBQWdBQVBFSkFBRHhDUUFBQUFrQUFQRUtBQUR4Q2dBQUFBb0FBUEVMQUFEeEN3QUFBQXNBQVBFTUFBRHhEQUFBQUF3QUFQRU5BQUR4RFFBQUFBMEFBUEVPQUFEeERnQUFBQTRBQVBFUEFBRHhEd0FBQUE4QUFQRVFBQUR4RUFBQUFCQUFBUEVSQUFEeEVRQUFBQkVBQVBFU0FBRHhFZ0FBQUJJQUFQRVRBQUR4RXdBQUFCTUFBUEVVQUFEeEZBQUFBQlFBQVBFVkFBRHhGUUFBQUJVQUFQRVdBQUR4RmdBQUFCWUFBUEVYQUFEeEZ3QUFBQmNBQVBFWUFBRHhHQUFBQUJnQUFQRVpBQUR4R1FBQUFCa0FBUEVhQUFEeEdnQUFBQm9BQVBFYkFBRHhHd0FBQUJzQUFQRWNBQUR4SEFBQUFCd0FBUEVkQUFEeEhRQUFBQjBBQVBFZUFBRHhIZ0FBQUI0QUFQRWZBQUR4SHdBQUFCOEFBUEVnQUFEeElBQUFBQ0FBQUFBQUFBQUFEZ0JvQUg0QXpBRGdBUUlCUWdGc0FaZ0J3Z0lZQWxnQ3RBTGdBekFEc0FQZUJEQUVsZ1RjQlNRRlpnV0tCaUFHWmdhMEJ1b0hXQWdTQ0ZnSWJnaUVBQUVBQUFBQUJZc0Zpd0FDQUFBQkVRRUNWUU0yQll2NzZnSUxBQUFEQUFBQUFBWnJCbXNBQWdBYkFEUUFBQWtDRXlJSERnRUhCaEFYSGdFWEZpQTNQZ0UzTmhBbkxnRW5KZ01pSnk0Qkp5WTBOejRCTnpZeUZ4NEJGeFlVQnc0QkJ3WUM2d0hBL2tDVm1JdUd6ams3T3puT2hvc0JNSXVHemprN096bk9ob3VZZVc5cnBpMHZMeTJtYTIveWIydW1MUzh2TGFacmJ3SXdBVkFCVUFHYk96bk9ob3YrMEl1R3pqazdPem5PaG9zQk1JdUd6ams3K3NBdkxhWnJiL0p2YTZZdEx5OHRwbXR2OG05cnBpMHZBQUFDQUFBQUFBVkFCWXNBQXdBSEFBQUJJUkVwQVJFaEVRSEFBU3YrMVFKVkFTc0JkUVFXKytvRUZnQUFBQVFBQUFBQUJpRUdJQUFIQUJjQUp3QXFBQUFCTkNjbUp4VVhOamNVQnhjMk5UUW5MZ0VuRlI0QkZ4WUJCd0VoRVNFQkVRRUdCeFUyTnhjM0FRY1hCTkEwTWxXNEE3c3BjVTFGUSs2VmJLb3ZNZnUwWHdGaC9wOEJLd0YxQVQ1UVdabDZtVi85WUp5Y0E0QmhVbEFxcGJnWUdHTmljWktrbll5SHZTS2FJSk5sYVFJc1gvNmYva0QraXdIMi9zSTlHNW9qWkpoZkJKYWNuQUFBQUFFQUFBQUFCS3NGMWdBRkFBQUJFU0VCRVFFQ0N3RXFBWGIraWdSZy9rRCtpd1NxL29zQUFBQUNBQUFBQUFWbUJkWUFDQUFPQUFBQk5DY21KeEUyTnpZQkVTRUJFUUVGWlRReVZGUXlOUHdRQVNzQmRmNkxBNEJoVWxBcS9hWXFVRklCUWY1QS9vc0VxdjZMQUFNQUFBQUFCaUFHRHdBRkFBNEFJZ0FBRXhFaEFSRUJCVFFuSmljUk5qYzJBeFVlQVJjV0ZBY09BUWNWUGdFM05oQW5MZ0hnQVNzQmRmNkxBc1UwTWxWVk1qUzdiS292TVRFdnFteVY3a05GUlVQdUJHRCtRUDZMQktyK2krQmhVbEFxL2FZcVVGSUM4Sm9nazJWcDZHbGxreUNhSXIySGpBRTZqSWU5QUFBQUJBQUFBQUFGaXdXTEFBVUFDd0FSQUJjQUFBRWpFU0UxSXdNek5UTTFJUUVqRlNFUkl3TVZNeFV6RVFJTGxnRjI0SmFXNFA2S0E0RGdBWGFXNE9DV0F1ditpcFlDQ3VDVy9JQ1dBWFlDb0piZ0FYWUFCQUFBQUFBRml3V0xBQVVBQ3dBUkFCY0FBQUV6RlRNUklSTWpGU0VSSXdFek5UTTFJUk0xSXhFaE5RRjE0SmIraXVEZ0FYYVdBY0NXNFA2S2xwWUJkZ0pWNEFGMkFjQ1dBWGI3NnVDV0FjRGcvb3FXQUFBQUFBSUFBQUFBQmRZRjFnQVRBQmNBQUFFaElnNEJGUkVVSGdFeklUSStBVFVSTkM0QkF5RVJJUVZBL0lBcFJDZ29SQ2tEZ0NsRUtDaEVLZnlBQTRBRjFTaEVLZnlBS1VRb0tFUXBBNEFwUkNqNzZ3T0FBQVlBQUFBQUJtc0dhd0FJQUEwQUZRQWVBQ01BTEFBQUNRRW1JeUlIQmdjQkpTNEJKd0VGSVFFMk56WTFOQVVCQmdjR0ZSUVhJUVVlQVJjQk13RVdNekkzTmpjQkFyNEJaRkpRaEh0Mll3RVNBNDR6N1ovKzdnTGwvZEFCZWwwek5md1MvdDFkTXpVUEFqRDk1RFB0bndFU2VQN2RVMCtFZTNaai91NEQ4QUpvRXkwclVmNG5kNlA2UFA0blMvMXpabitFajB0TEFmaG1mNFNQUzBwTG8vbzhBZG4rQ0JNdEsxRUIyUUFGQUFBQUFBWnJCZFlBRXdBWEFCc0FId0FqQUFBQklTSU9BUlVSRkI0Qk15RXlQZ0UxRVRRdUFRRWhGU0VCSVRVaEJTRTFJVFVoTlNFRjFmdFdLVVVvS0VVcEJLb3BSU2dvUmZzdEFTcisxZ0xxL1JZQzZnSEEvdFlCS3YwV0F1b0YxU2hFS2Z5QUtVUW9LRVFwQTRBcFJDajlxNVgrMVpXVmxaYVZBQUFBQUFNQUFBQUFCaUFGMWdBVEFDc0FRd0FBQVNFaURnRVZFUlFlQVRNaE1qNEJOUkUwTGdFQkl6VWpGVE0xTXhVVUJpc0JJaVkxRVRRMk93RXlGaFVGSXpVakZUTTFNeFVVQmlzQklpWTFFVFEyT3dFeUZoVUZpL3ZxS0VVb0tFVW9CQllvUlNnb1JmMkNjSldWY0NzZjRCOHNMQi9nSHlzQ0MzQ1ZsWEFzSCtBZkt5c2Y0QjhzQmRVb1JDbjhnQ2xFS0NoRUtRT0FLVVFvL2ZZbDRDVktIeXdzSHdFcUh5d3NIMG9sNENWS0h5d3NId0VxSHl3c0h3QUdBQUFBQUFZZ0JQWUFBd0FIQUFzQUR3QVRBQmNBQUJNek5TTVJNelVqRVRNMUl3RWhOU0VSSVRVaEVSVWhOZUNWbFpXVmxaVUJLd1FWKytzRUZmdnJCQlVETlpiK1FKVUJ3SlgrUUpiK1FKVUNWWldWQUFBQUFRQUFBQUFHSVFac0FERUFBQUVpQmdjQk5qUW5BUjRCTXpJK0FUUXVBU0lPQVJVVUZ3RXVBU01pRGdFVUhnRXpNalkzQVFZVkZCNEJNajRCTkM0QkJVQXFTeDc5N0FjSEFnOGVUeXM5Wnp3OFozcG5QQWY5OFI1UEt6MW5QRHhuUFN0UEhnSVVCanRrZG1RN08yUUNUeDRjQVRjYk1oc0JOQjBnUEdkNlp6dzhaejBaRy83TkhDQThaM3BuUENBYy9zb1pHRHRrT2pwa2RtUTdBQUFBQUFJQUFBQUFCbGtHYXdCREFGQUFBQUUyTkNjM1BnRW5BeTRCRHdFbUx3RXVBU01oSWdZUEFRWUhKeVlHQndNR0ZoOEJCaFFYQnc0QkZ4TWVBVDhCRmg4QkhnRXpJVEkyUHdFMk54Y1dOamNUTmlZbkJTSXVBVFErQVRJZUFSUU9BUVdyQlFXZUNnWUhsZ2NhRExvOFFod0RGUTcrMWc0VkFoeEVPcm9OR2dlVkJ3VUxuUVVGblFzRkI1VUhHZzI2TzBNY0FoVU9BU29PRlFJY1JEcTZEUm9IbFFjRkMvMDRSM2hHUm5pT2VFWkdlQU0zS2o0cWV3a2JEQUVEREFrRlN5NGJ4ZzRTRWc3R0hDMUxCUWtNL3YwTUd3bDdLajRxZXdrYkRQNzlEQWtGU3k0YnhnNFNFZzdHSEMxTEJRa01BUU1NR3dsQlJuaU9lRVpHZUk1NFJnQUJBQUFBQUFackJtc0FHQUFBRXhRWEhnRVhGaUEzUGdFM05oQW5MZ0VuSmlBSERnRUhCcFU3T2M2R2l3RXdpNGJPT1RzN09jNkdpLzdRaTRiT09Uc0RnSmlMaHM0NU96czV6b2FMQVRDTGhzNDVPenM1em9hTEFBQUFBQUlBQUFBQUJtc0dhd0FZQURFQUFBRWlCdzRCQndZUUZ4NEJGeFlnTno0Qk56WVFKeTRCSnlZRElpY3VBU2NtTkRjK0FUYzJNaGNlQVJjV0ZBY09BUWNHQTRDWWk0Yk9PVHM3T2M2R2l3RXdpNGJPT1RzN09jNkdpNWg1YjJ1bUxTOHZMYVpyYi9KdmE2WXRMeTh0cG10dkJtczdPYzZHaS83UWk0Yk9PVHM3T2M2R2l3RXdpNGJPT1R2NndDOHRwbXR2OG05cnBpMHZMeTJtYTIveWIydW1MUzhBQXdBQUFBQUdhd1pyQUJnQU1RQStBQUFCSWdjT0FRY0dFQmNlQVJjV0lEYytBVGMyRUNjdUFTY21BeUluTGdFbkpqUTNQZ0UzTmpJWEhnRVhGaFFIRGdFSEJoTVVEZ0VpTGdFMFBnRXlIZ0VEZ0ppS2hzODVPenM1ejRhS0FUQ0toczg1T3pzNXo0YUttSGx2YTZZdEx5OHRwbXR2OG05cnBpMHZMeTJtYTI5blBHZDZaenc4WjNwblBBWnJPem5QaG9yKzBJcUd6ems3T3puUGhvb0JNSXFHenprNytzQXZMYVpyYi9KdmE2WXRMeTh0cG10djhtOXJwaTB2QWxVOVp6dzhaM3BuUER4bkFBQUFCQUFBQUFBR0lBWWhBQk1BSHdBcEFDMEFBQUVoSWc0QkZSRVVIZ0V6SVRJK0FUVVJOQzRCQVNNMUl4VWpFVE1WTXpVN0FTRXlGaFVSRkFZaklUY3pOU01GaS92cUtFVW9LRVVvQkJZb1JTZ29SZjJDY0pWd2NKVndsZ0VxSHl3c0gvN1djSldWQmlBb1JTajc2aWhGS0NoRktBUVdLRVVvL0lDVmxRSEF1N3NzSC83V0h5eHc0QUFBQUFBQ0FBQUFBQVpyQm1zQUdBQWtBQUFCSWdjT0FRY0dFQmNlQVJjV0lEYytBVGMyRUNjdUFTY21Fd2NKQVNjSkFUY0pBUmNCQTRDWWk0Yk9PVHM3T2M2R2l3RXdpNGJPT1RzN09jNkdpOTFwL3ZUKzlHa0JDLzcxYVFFTUFReHAvdlVHYXpzNXpvYUwvdENMaHM0NU96czV6b2FMQVRDTGhzNDVPL3dKYVFFTC92VnBBUXdCREduKzlRRUxhZjcwQUFBQkFBQUFBQVhXQnJZQUp3QUFBUkVKQVJFeUZ4WVhGaFFIQmdjR0lpY21KeVkxSXhRWEhnRVhGakkzUGdFM05qUW5MZ0VuSmdPQS9vc0JkWHBvWmpzOVBUdG1hUFJvWmpzOWxTOHRwV3R2OUc5cnBTMHZMeTJsYTI4Rml3RXEvb3YraXdFcVBUdG1hUE5wWlR3OVBUeGxhWGw1YjJ1bUxTOHZMYVpyYi9OdmE2VXVMd0FCQUFBQUFBVS9Cd0FBRkFBQUFSRWpJZ1lkQVNFREl4RWhFU01STXpVME5qTXlCVCtkVmp3QkpTZisvczcvLzlDdGt3YjAvdmhJU0wzKzJQMEpBdmNCS05xNnpRQUFBQUFFQUFBQUFBYU9Cd0FBTUFCRkFHQUFiQUFBQVJRZUF4VVVCd1lFSXlJbUp5WTFORFkzTmlVdUFUVTBOd1lqSWlZMU5EWTNQZ0V6SVFjakhnRVZGQTRESnpJMk56WTFOQzRDSXlJR0J3WVZGQjRERXpJK0FqVTBMZ0V2QVNZdkFpWWpJZzRERlJRZUFnRXpGU01WSXpVak5UTTFNd01mUUZ0YVFEQkkvdXFmaE9VNUpWbEtnd0VSSUI4VkxoYVV5MGcvVGROd0FhS0tnMHBNTVVWR01aSW1VQm8xSWo5cVFDcFJHUzhVS3oxWk5qcHJXemNPRHhNZUNod2xUaEFnTldodlV6WkdjWDBEYTlYVmFkVFVhUVBrSkVWRFVJQk9XbE42YzFOZ1BFZFJpaTVTRWlwQUtTUXhCTUdVVXBvMlFrQllQNHhhU0hOSE8wQStJUnM1WmpxR2ZWSW5JVHRsTG1kblVqVDhseG8wWGo0Wk1DUVlJd3NYSFRnQ0RpUTRYVHRHYXpzZEEyeHMyOXRzMlFBREFBQUFBQWFBQm13QUF3QU9BQ29BQUFFUklSRUJGZ1lyQVNJbU5EWXlGZ0VSSVJFMEppTWlCZ2NHRlJFaEVoQXZBU0VWSXo0RE16SVdBZDMrdGdGZkFXZFVBbEprWjZaa0JJLyt0MUZXUDFVVkMvNjNBZ0VCQVVrQ0ZDcEhaeityMEFTUC9DRUQzd0V5U1dKaWsyRmgvTjM5eUFJU2FYZEZNeDR6L2RjQmp3SHdNRENRSURBNEgrTUFBQUVBQUFBQUJwUUdBQUF4QUFBQkJnY1dGUlFDRGdFRUl5QW5Gak15Tnk0Qkp4WXpNamN1QVQwQkZoY3VBVFUwTnhZRUZ5WTFORFl6TWhjMk53WUhOZ2FVUTE4QlRKdlcvdEtzL3ZIaEl5dmhzR21tSHlFY0t5cHdrMFJPUWs0c2VRRmJ4Z2k5aG94Z2JXQWxhVjBGYUdKRkRoeUMvdjN1dDIyUkJJb0NmV0VGQ3hleGRRUW1BeXlPVTFoTGxiTUtKaVNHdldZVk9YTS9DZ0FBQUFFQUFBQUFCWUFIQUFBaUFBQUJGdzRCQndZdUF6VVJJelUrQkRjK0FUc0JFU0VWSVJFVUhnSTNOZ1V3VUJld1dXaXRjRTRocUVoeVJEQVVCUUVIQlBRQlRmNnlEU0JETUU0QnorMGpQZ0VDT0Z4NGVEb0NJTmNhVjExdlZ5MEZCLzVZL1AzNkhqUTFIZ0VDQUFFQUFBQUFCb0FHZ0FCS0FBQUJGQUlFSXlJbk5qOEJIZ0V6TWo0Qk5UUXVBU01pRGdNVkZCWVhGajhCTmpjMkp5WTFORFl6TWhZVkZBWWpJaVkzUGdJMU5DWWpJZ1lWRkJjREJoY21BalUwRWlRZ0JCSUdnTTcrbjlGdmF6c1ROaFJxUFhtK2FIZmlqbW0yZjFzclVFMGVDQWdHQWdZUk05R3BsNm1KYXoxS0RnZ2xGell5UGxZWll4RUV6djdPQVdFQm9nRmh6Z09BMGY2ZnppQmRSOU1uT1lud2xuTElmanBnZllaRGFKNGdEQ0FmR0FZWEZEMWFsOW1rZzZydVZ6MGpkVmtmTWtKeVZVa3gvbDVHYTFzQmZPblJBV0hPenY2ZkFBQUhBQUFBQUFjQkJNOEFGd0FoQURnQVR3Qm1BSEVBZEFBQUFSRXpOaGNXRnhZWEZoY1dCdzRCQndZSEJpY21Md0VtTnhZMk56WXVBUWNSRkFVV056WS9BVFkzTmpVMkp5TUdGeFlmQVJZWEZoY1VGeFkzTmo4Qk5qYzJOelluSXdZWEZoOEJGaGNXRlJZWEZqYzJQd0UyTnpZM05pY2pCaGNXSHdFV0Z4WVZGZ1V6UHdFVk14RWpCZ3NCQVJVbkF4d2NhQzVNTkQwc1RTc3ZDZ2RWUkVkVE5XZzFLZ0VDcTFKckNRY3dZa0FCZmhvU0N4QUtKQlFYQVg0ZEFRTUNCZ01uRnhzQkpCb1NDeEFLSkJRV0FRRitIZ0VFQWdVRUp4Y2JBU01aRXdzUUNpUVVGZ0VCZmg0QkJBSUZCQ2NYR3dINVErNUI0YXJORGZIdkFoYU9BY2tDL1FJQkF3d1BIemRjWlhsWm1DOHhDQVFCQVFJREJNSURWa3hDWkRRRi9wVUh3Z2NUQ3lBVVFFZFBVOGV0Q0FnRkNRWkhURnhid0xvSEV3c2dGRUJIVDFQSHJRZ0lCUWtHUjB4Y1c4QzZCeE1MSUJSQVIwOVR4NjBJQ0FVSkJrZE1YRnZBd0dRQlpRTU1GZjZEL29ZQi9ma0JBQUFCQUFBQUFBWWhCcllBTEFBQUFTSUhEZ0VIQmhVUkZCNEJPd0VSSVRVME56NEJOell5Rng0QkZ4WWRBU0VSTXpJK0FUVVJOQ2N1QVNjbUE0Q0pmWGk2TXpVOFp6M2cvdFVwS0pGZVlkUmhYcEVvS2Y3VjREMW5QRFV6dW5oOUJyVTBNN3Q0ZlluOTlqMW5QQUpWbFd0aFhwQW9LU2tva0Y1aGE1WDlxenhuUFFJS2lYMTR1ek0wQUFBQUFBSUFBQUFBQlVBRlFBQUNBQVlBQUFrQ0lSRXpFUUhBQW52OWhRTHJsUUhBQWNBQndQeUFBNEFBQUFBQUFnQUFBQUFGUUFWQUFBTUFCZ0FBQVRNUkl3a0JFUUhBbFpVQkJRSjdCVUQ4Z0FIQS9rQURnQUFBQUFBQUFCQUF4Z0FCQUFBQUFBQUJBQWNBQUFBQkFBQUFBQUFDQUFjQUJ3QUJBQUFBQUFBREFBY0FEZ0FCQUFBQUFBQUVBQWNBRlFBQkFBQUFBQUFGQUFzQUhBQUJBQUFBQUFBR0FBY0FKd0FCQUFBQUFBQUtBQ3NBTGdBQkFBQUFBQUFMQUJNQVdRQURBQUVFQ1FBQkFBNEFiQUFEQUFFRUNRQUNBQTRBZWdBREFBRUVDUUFEQUE0QWlBQURBQUVFQ1FBRUFBNEFsZ0FEQUFFRUNRQUZBQllBcEFBREFBRUVDUUFHQUE0QXVnQURBQUVFQ1FBS0FGWUF5QUFEQUFFRUNRQUxBQ1lCSGxacFpHVnZTbE5TWldkMWJHRnlWbWxrWlc5S1UxWnBaR1Z2U2xOV1pYSnphVzl1SURFdU1GWnBaR1Z2U2xOSFpXNWxjbUYwWldRZ1lua2djM1puTW5SMFppQm1jbTl0SUVadmJuUmxiR3h2SUhCeWIycGxZM1F1YUhSMGNEb3ZMMlp2Ym5SbGJHeHZMbU52YlFCV0FHa0FaQUJsQUc4QVNnQlRBRklBWlFCbkFIVUFiQUJoQUhJQVZnQnBBR1FBWlFCdkFFb0FVd0JXQUdrQVpBQmxBRzhBU2dCVEFGWUFaUUJ5QUhNQWFRQnZBRzRBSUFBeEFDNEFNQUJXQUdrQVpBQmxBRzhBU2dCVEFFY0FaUUJ1QUdVQWNnQmhBSFFBWlFCa0FDQUFZZ0I1QUNBQWN3QjJBR2NBTWdCMEFIUUFaZ0FnQUdZQWNnQnZBRzBBSUFCR0FHOEFiZ0IwQUdVQWJBQnNBRzhBSUFCd0FISUFid0JxQUdVQVl3QjBBQzRBYUFCMEFIUUFjQUE2QUM4QUx3Qm1BRzhBYmdCMEFHVUFiQUJzQUc4QUxnQmpBRzhBYlFBQUFBSUFBQUFBQUFBQUVRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnQUVjR3hoZVF0d2JHRjVMV05wY21Oc1pRVndZWFZ6WlF0MmIyeDFiV1V0YlhWMFpRcDJiMngxYldVdGJHOTNDblp2YkhWdFpTMXRhV1FMZG05c2RXMWxMV2hwWjJnUVpuVnNiSE5qY21WbGJpMWxiblJsY2c5bWRXeHNjMk55WldWdUxXVjRhWFFHYzNGMVlYSmxCM053YVc1dVpYSUpjM1ZpZEdsMGJHVnpDR05oY0hScGIyNXpDR05vWVhCMFpYSnpCWE5vWVhKbEEyTnZad1pqYVhKamJHVU9ZMmx5WTJ4bExXOTFkR3hwYm1VVFkybHlZMnhsTFdsdWJtVnlMV05wY21Oc1pRSm9aQVpqWVc1alpXd0djbVZ3YkdGNUNHWmhZMlZpYjI5ckJXZHdiSFZ6Q0d4cGJtdGxaR2x1QjNSM2FYUjBaWElHZEhWdFlteHlDWEJwYm5SbGNtVnpkQkZoZFdScGJ5MWtaWE5qY21sd2RHbHZiZ1ZoZFdScGJ3bHVaWGgwTFdsMFpXME5jSEpsZG1sdmRYTXRhWFJsYlFBQUFBQT0pIGZvcm1hdChcInRydWV0eXBlXCIpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxuLnZqcy1pY29uLXBsYXksIC52aWRlby1qcyAudmpzLWJpZy1wbGF5LWJ1dHRvbiAudmpzLWljb24tcGxhY2Vob2xkZXI6YmVmb3JlLCAudmlkZW8tanMgLnZqcy1wbGF5LWNvbnRyb2wgLnZqcy1pY29uLXBsYWNlaG9sZGVyIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tcGxheTpiZWZvcmUsIC52aWRlby1qcyAudmpzLWJpZy1wbGF5LWJ1dHRvbiAudmpzLWljb24tcGxhY2Vob2xkZXI6YmVmb3JlLCAudmlkZW8tanMgLnZqcy1wbGF5LWNvbnRyb2wgLnZqcy1pY29uLXBsYWNlaG9sZGVyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMDFcIjsgfVxuXG4udmpzLWljb24tcGxheS1jaXJjbGUge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG4gIC52anMtaWNvbi1wbGF5LWNpcmNsZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxmMTAyXCI7IH1cblxuLnZqcy1pY29uLXBhdXNlLCAudmlkZW8tanMgLnZqcy1wbGF5LWNvbnRyb2wudmpzLXBsYXlpbmcgLnZqcy1pY29uLXBsYWNlaG9sZGVyIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tcGF1c2U6YmVmb3JlLCAudmlkZW8tanMgLnZqcy1wbGF5LWNvbnRyb2wudmpzLXBsYXlpbmcgLnZqcy1pY29uLXBsYWNlaG9sZGVyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMDNcIjsgfVxuXG4udmpzLWljb24tdm9sdW1lLW11dGUsIC52aWRlby1qcyAudmpzLW11dGUtY29udHJvbC52anMtdm9sLTAgLnZqcy1pY29uLXBsYWNlaG9sZGVyIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tdm9sdW1lLW11dGU6YmVmb3JlLCAudmlkZW8tanMgLnZqcy1tdXRlLWNvbnRyb2wudmpzLXZvbC0wIC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxmMTA0XCI7IH1cblxuLnZqcy1pY29uLXZvbHVtZS1sb3csIC52aWRlby1qcyAudmpzLW11dGUtY29udHJvbC52anMtdm9sLTEgLnZqcy1pY29uLXBsYWNlaG9sZGVyIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tdm9sdW1lLWxvdzpiZWZvcmUsIC52aWRlby1qcyAudmpzLW11dGUtY29udHJvbC52anMtdm9sLTEgLnZqcy1pY29uLXBsYWNlaG9sZGVyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMDVcIjsgfVxuXG4udmpzLWljb24tdm9sdW1lLW1pZCwgLnZpZGVvLWpzIC52anMtbXV0ZS1jb250cm9sLnZqcy12b2wtMiAudmpzLWljb24tcGxhY2Vob2xkZXIge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG4gIC52anMtaWNvbi12b2x1bWUtbWlkOmJlZm9yZSwgLnZpZGVvLWpzIC52anMtbXV0ZS1jb250cm9sLnZqcy12b2wtMiAudmpzLWljb24tcGxhY2Vob2xkZXI6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjEwNlwiOyB9XG5cbi52anMtaWNvbi12b2x1bWUtaGlnaCwgLnZpZGVvLWpzIC52anMtbXV0ZS1jb250cm9sIC52anMtaWNvbi1wbGFjZWhvbGRlciB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgLnZqcy1pY29uLXZvbHVtZS1oaWdoOmJlZm9yZSwgLnZpZGVvLWpzIC52anMtbXV0ZS1jb250cm9sIC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxmMTA3XCI7IH1cblxuLnZqcy1pY29uLWZ1bGxzY3JlZW4tZW50ZXIsIC52aWRlby1qcyAudmpzLWZ1bGxzY3JlZW4tY29udHJvbCAudmpzLWljb24tcGxhY2Vob2xkZXIge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG4gIC52anMtaWNvbi1mdWxsc2NyZWVuLWVudGVyOmJlZm9yZSwgLnZpZGVvLWpzIC52anMtZnVsbHNjcmVlbi1jb250cm9sIC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxmMTA4XCI7IH1cblxuLnZqcy1pY29uLWZ1bGxzY3JlZW4tZXhpdCwgLnZpZGVvLWpzLnZqcy1mdWxsc2NyZWVuIC52anMtZnVsbHNjcmVlbi1jb250cm9sIC52anMtaWNvbi1wbGFjZWhvbGRlciB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgLnZqcy1pY29uLWZ1bGxzY3JlZW4tZXhpdDpiZWZvcmUsIC52aWRlby1qcy52anMtZnVsbHNjcmVlbiAudmpzLWZ1bGxzY3JlZW4tY29udHJvbCAudmpzLWljb24tcGxhY2Vob2xkZXI6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjEwOVwiOyB9XG5cbi52anMtaWNvbi1zcXVhcmUge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG4gIC52anMtaWNvbi1zcXVhcmU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjEwYVwiOyB9XG5cbi52anMtaWNvbi1zcGlubmVyIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tc3Bpbm5lcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxmMTBiXCI7IH1cblxuLnZqcy1pY29uLXN1YnRpdGxlcywgLnZpZGVvLWpzIC52anMtc3VidGl0bGVzLWJ1dHRvbiAudmpzLWljb24tcGxhY2Vob2xkZXIsIC52aWRlby1qcyAudmpzLXN1YnMtY2Fwcy1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyLFxuLnZpZGVvLWpzLnZpZGVvLWpzOmxhbmcoZW4tR0IpIC52anMtc3Vicy1jYXBzLWJ1dHRvbiAudmpzLWljb24tcGxhY2Vob2xkZXIsXG4udmlkZW8tanMudmlkZW8tanM6bGFuZyhlbi1JRSkgLnZqcy1zdWJzLWNhcHMtYnV0dG9uIC52anMtaWNvbi1wbGFjZWhvbGRlcixcbi52aWRlby1qcy52aWRlby1qczpsYW5nKGVuLUFVKSAudmpzLXN1YnMtY2Fwcy1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyLFxuLnZpZGVvLWpzLnZpZGVvLWpzOmxhbmcoZW4tTlopIC52anMtc3Vicy1jYXBzLWJ1dHRvbiAudmpzLWljb24tcGxhY2Vob2xkZXIge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG4gIC52anMtaWNvbi1zdWJ0aXRsZXM6YmVmb3JlLCAudmlkZW8tanMgLnZqcy1zdWJ0aXRsZXMtYnV0dG9uIC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUsIC52aWRlby1qcyAudmpzLXN1YnMtY2Fwcy1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyOmJlZm9yZSxcbiAgLnZpZGVvLWpzLnZpZGVvLWpzOmxhbmcoZW4tR0IpIC52anMtc3Vicy1jYXBzLWJ1dHRvbiAudmpzLWljb24tcGxhY2Vob2xkZXI6YmVmb3JlLFxuICAudmlkZW8tanMudmlkZW8tanM6bGFuZyhlbi1JRSkgLnZqcy1zdWJzLWNhcHMtYnV0dG9uIC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUsXG4gIC52aWRlby1qcy52aWRlby1qczpsYW5nKGVuLUFVKSAudmpzLXN1YnMtY2Fwcy1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyOmJlZm9yZSxcbiAgLnZpZGVvLWpzLnZpZGVvLWpzOmxhbmcoZW4tTlopIC52anMtc3Vicy1jYXBzLWJ1dHRvbiAudmpzLWljb24tcGxhY2Vob2xkZXI6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjEwY1wiOyB9XG5cbi52anMtaWNvbi1jYXB0aW9ucywgLnZpZGVvLWpzIC52anMtY2FwdGlvbnMtYnV0dG9uIC52anMtaWNvbi1wbGFjZWhvbGRlciwgLnZpZGVvLWpzOmxhbmcoZW4pIC52anMtc3Vicy1jYXBzLWJ1dHRvbiAudmpzLWljb24tcGxhY2Vob2xkZXIsXG4udmlkZW8tanM6bGFuZyhmci1DQSkgLnZqcy1zdWJzLWNhcHMtYnV0dG9uIC52anMtaWNvbi1wbGFjZWhvbGRlciB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgLnZqcy1pY29uLWNhcHRpb25zOmJlZm9yZSwgLnZpZGVvLWpzIC52anMtY2FwdGlvbnMtYnV0dG9uIC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUsIC52aWRlby1qczpsYW5nKGVuKSAudmpzLXN1YnMtY2Fwcy1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyOmJlZm9yZSxcbiAgLnZpZGVvLWpzOmxhbmcoZnItQ0EpIC52anMtc3Vicy1jYXBzLWJ1dHRvbiAudmpzLWljb24tcGxhY2Vob2xkZXI6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjEwZFwiOyB9XG5cbi52anMtaWNvbi1jaGFwdGVycywgLnZpZGVvLWpzIC52anMtY2hhcHRlcnMtYnV0dG9uIC52anMtaWNvbi1wbGFjZWhvbGRlciB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgLnZqcy1pY29uLWNoYXB0ZXJzOmJlZm9yZSwgLnZpZGVvLWpzIC52anMtY2hhcHRlcnMtYnV0dG9uIC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxmMTBlXCI7IH1cblxuLnZqcy1pY29uLXNoYXJlIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tc2hhcmU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjEwZlwiOyB9XG5cbi52anMtaWNvbi1jb2cge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG4gIC52anMtaWNvbi1jb2c6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjExMFwiOyB9XG5cbi52anMtaWNvbi1jaXJjbGUsIC52aWRlby1qcyAudmpzLXBsYXktcHJvZ3Jlc3MsIC52aWRlby1qcyAudmpzLXZvbHVtZS1sZXZlbCB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgLnZqcy1pY29uLWNpcmNsZTpiZWZvcmUsIC52aWRlby1qcyAudmpzLXBsYXktcHJvZ3Jlc3M6YmVmb3JlLCAudmlkZW8tanMgLnZqcy12b2x1bWUtbGV2ZWw6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjExMVwiOyB9XG5cbi52anMtaWNvbi1jaXJjbGUtb3V0bGluZSB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgLnZqcy1pY29uLWNpcmNsZS1vdXRsaW5lOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMTJcIjsgfVxuXG4udmpzLWljb24tY2lyY2xlLWlubmVyLWNpcmNsZSB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgLnZqcy1pY29uLWNpcmNsZS1pbm5lci1jaXJjbGU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjExM1wiOyB9XG5cbi52anMtaWNvbi1oZCB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgLnZqcy1pY29uLWhkOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMTRcIjsgfVxuXG4udmpzLWljb24tY2FuY2VsLCAudmlkZW8tanMgLnZqcy1jb250cm9sLnZqcy1jbG9zZS1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tY2FuY2VsOmJlZm9yZSwgLnZpZGVvLWpzIC52anMtY29udHJvbC52anMtY2xvc2UtYnV0dG9uIC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxmMTE1XCI7IH1cblxuLnZqcy1pY29uLXJlcGxheSwgLnZpZGVvLWpzIC52anMtcGxheS1jb250cm9sLnZqcy1lbmRlZCAudmpzLWljb24tcGxhY2Vob2xkZXIge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG4gIC52anMtaWNvbi1yZXBsYXk6YmVmb3JlLCAudmlkZW8tanMgLnZqcy1wbGF5LWNvbnRyb2wudmpzLWVuZGVkIC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxmMTE2XCI7IH1cblxuLnZqcy1pY29uLWZhY2Vib29rIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tZmFjZWJvb2s6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjExN1wiOyB9XG5cbi52anMtaWNvbi1ncGx1cyB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgLnZqcy1pY29uLWdwbHVzOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMThcIjsgfVxuXG4udmpzLWljb24tbGlua2VkaW4ge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG4gIC52anMtaWNvbi1saW5rZWRpbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxmMTE5XCI7IH1cblxuLnZqcy1pY29uLXR3aXR0ZXIge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG4gIC52anMtaWNvbi10d2l0dGVyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMWFcIjsgfVxuXG4udmpzLWljb24tdHVtYmxyIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tdHVtYmxyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMWJcIjsgfVxuXG4udmpzLWljb24tcGludGVyZXN0IHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tcGludGVyZXN0OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMWNcIjsgfVxuXG4udmpzLWljb24tYXVkaW8tZGVzY3JpcHRpb24sIC52aWRlby1qcyAudmpzLWRlc2NyaXB0aW9ucy1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tYXVkaW8tZGVzY3JpcHRpb246YmVmb3JlLCAudmlkZW8tanMgLnZqcy1kZXNjcmlwdGlvbnMtYnV0dG9uIC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxmMTFkXCI7IH1cblxuLnZqcy1pY29uLWF1ZGlvLCAudmlkZW8tanMgLnZqcy1hdWRpby1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tYXVkaW86YmVmb3JlLCAudmlkZW8tanMgLnZqcy1hdWRpby1idXR0b24gLnZqcy1pY29uLXBsYWNlaG9sZGVyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMWVcIjsgfVxuXG4udmpzLWljb24tbmV4dC1pdGVtIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuICAudmpzLWljb24tbmV4dC1pdGVtOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGYxMWZcIjsgfVxuXG4udmpzLWljb24tcHJldmlvdXMtaXRlbSB7XG4gIGZvbnQtZmFtaWx5OiBWaWRlb0pTO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgLnZqcy1pY29uLXByZXZpb3VzLWl0ZW06YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjEyMFwiOyB9XG5cbi52aWRlby1qcyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAwO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICB3b3JkLWJyZWFrOiBpbml0aWFsOyB9XG4gIC52aWRlby1qczotbW96LWZ1bGwtc2NyZWVuIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cbiAgLnZpZGVvLWpzOi13ZWJraXQtZnVsbC1zY3JlZW4ge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuLnZpZGVvLWpzW3RhYmluZGV4PVwiLTFcIl0ge1xuICBvdXRsaW5lOiBub25lOyB9XG5cbi52aWRlby1qcyAqLFxuLnZpZGVvLWpzICo6YmVmb3JlLFxuLnZpZGVvLWpzICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG5cbi52aWRlby1qcyB1bCB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlO1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi52aWRlby1qcy52anMtZmx1aWQsXG4udmlkZW8tanMudmpzLTE2LTksXG4udmlkZW8tanMudmpzLTQtMyB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMDsgfVxuXG4udmlkZW8tanMudmpzLTE2LTkge1xuICBwYWRkaW5nLXRvcDogNTYuMjUlOyB9XG5cbi52aWRlby1qcy52anMtNC0zIHtcbiAgcGFkZGluZy10b3A6IDc1JTsgfVxuXG4udmlkZW8tanMudmpzLWZpbGwge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlOyB9XG5cbi52aWRlby1qcyAudmpzLXRlY2gge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTsgfVxuXG5ib2R5LnZqcy1mdWxsLXdpbmRvdyB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdy15OiBhdXRvOyB9XG5cbi52anMtZnVsbC13aW5kb3cgLnZpZGVvLWpzLnZqcy1mdWxsc2NyZWVuIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB6LWluZGV4OiAxMDAwO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7IH1cblxuLnZpZGVvLWpzLnZqcy1mdWxsc2NyZWVuIHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH1cblxuLnZpZGVvLWpzLnZqcy1mdWxsc2NyZWVuLnZqcy11c2VyLWluYWN0aXZlIHtcbiAgY3Vyc29yOiBub25lOyB9XG5cbi52anMtaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi52anMtZGlzYWJsZWQge1xuICBvcGFjaXR5OiAwLjU7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG4udmlkZW8tanMgLnZqcy1vZmZzY3JlZW4ge1xuICBoZWlnaHQ6IDFweDtcbiAgbGVmdDogLTk5OTlweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxcHg7IH1cblxuLnZqcy1sb2NrLXNob3dpbmcge1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlOyB9XG5cbi52anMtbm8tanMge1xuICBwYWRkaW5nOiAyMHB4O1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogMTUwcHg7XG4gIG1hcmdpbjogMHB4IGF1dG87IH1cblxuLnZqcy1uby1qcyBhLFxuLnZqcy1uby1qcyBhOnZpc2l0ZWQge1xuICBjb2xvcjogIzY2QThDQzsgfVxuXG4udmlkZW8tanMgLnZqcy1iaWctcGxheS1idXR0b24ge1xuICBmb250LXNpemU6IDNlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNWVtO1xuICBoZWlnaHQ6IDEuNWVtO1xuICB3aWR0aDogM2VtO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwcHg7XG4gIGxlZnQ6IDEwcHg7XG4gIHBhZGRpbmc6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3BhY2l0eTogMTtcbiAgYm9yZGVyOiAwLjA2NjY2ZW0gc29saWQgI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJCMzMzRjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTEsIDYzLCAwLjcpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAuM2VtO1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDAuM2VtO1xuICBib3JkZXItcmFkaXVzOiAwLjNlbTtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cztcbiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cztcbiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzO1xuICAtby10cmFuc2l0aW9uOiBhbGwgMC40cztcbiAgdHJhbnNpdGlvbjogYWxsIDAuNHM7IH1cblxuLnZqcy1iaWctcGxheS1jZW50ZXJlZCAudmpzLWJpZy1wbGF5LWJ1dHRvbiB7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIG1hcmdpbi10b3A6IC0wLjc1ZW07XG4gIG1hcmdpbi1sZWZ0OiAtMS41ZW07IH1cblxuLnZpZGVvLWpzOmhvdmVyIC52anMtYmlnLXBsYXktYnV0dG9uLFxuLnZpZGVvLWpzIC52anMtYmlnLXBsYXktYnV0dG9uOmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzM4NTlmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDExNSwgMTMzLCAxNTksIDAuNSk7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDBzO1xuICAtbW96LXRyYW5zaXRpb246IGFsbCAwcztcbiAgLW1zLXRyYW5zaXRpb246IGFsbCAwcztcbiAgLW8tdHJhbnNpdGlvbjogYWxsIDBzO1xuICB0cmFuc2l0aW9uOiBhbGwgMHM7IH1cblxuLnZqcy1jb250cm9scy1kaXNhYmxlZCAudmpzLWJpZy1wbGF5LWJ1dHRvbixcbi52anMtaGFzLXN0YXJ0ZWQgLnZqcy1iaWctcGxheS1idXR0b24sXG4udmpzLXVzaW5nLW5hdGl2ZS1jb250cm9scyAudmpzLWJpZy1wbGF5LWJ1dHRvbixcbi52anMtZXJyb3IgLnZqcy1iaWctcGxheS1idXR0b24ge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi52anMtaGFzLXN0YXJ0ZWQudmpzLXBhdXNlZC52anMtc2hvdy1iaWctcGxheS1idXR0b24tb24tcGF1c2UgLnZqcy1iaWctcGxheS1idXR0b24ge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4udmlkZW8tanMgYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGFwcGVhcmFuY2U6IG5vbmU7IH1cblxuLnZqcy1jb250cm9sIC52anMtYnV0dG9uIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTsgfVxuXG4udmlkZW8tanMgLnZqcy1jb250cm9sLnZqcy1jbG9zZS1idXR0b24ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGhlaWdodDogM2VtO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwO1xuICB0b3A6IDAuNWVtO1xuICB6LWluZGV4OiAyOyB9XG5cbi52aWRlby1qcyAudmpzLW1vZGFsLWRpYWxvZyB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoLTkwZGVnLCByZ2JhKDAsIDAsIDAsIDAuOCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDAsIDAsIDAsIDAuOCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkpO1xuICBvdmVyZmxvdzogYXV0bztcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IH1cblxuLnZpZGVvLWpzIC52anMtbW9kYWwtZGlhbG9nID4gKiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuLnZqcy1tb2RhbC1kaWFsb2cgLnZqcy1tb2RhbC1kaWFsb2ctY29udGVudCB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIHBhZGRpbmc6IDIwcHggMjRweDtcbiAgei1pbmRleDogMTsgfVxuXG4udmpzLW1lbnUtYnV0dG9uIHtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbi52anMtbWVudS1idXR0b24udmpzLWRpc2FibGVkIHtcbiAgY3Vyc29yOiBkZWZhdWx0OyB9XG5cbi52anMtd29ya2luZ2hvdmVyIC52anMtbWVudS1idXR0b24udmpzLWRpc2FibGVkOmhvdmVyIC52anMtbWVudSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLnZqcy1tZW51IC52anMtbWVudS1jb250ZW50IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfVxuXG4udmpzLW1lbnUgLnZqcy1tZW51LWNvbnRlbnQgPiAqIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4udmpzLXNjcnViYmluZyAudmpzLW1lbnUtYnV0dG9uOmhvdmVyIC52anMtbWVudSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLnZqcy1tZW51IGxpIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwLjJlbSAwO1xuICBsaW5lLWhlaWdodDogMS40ZW07XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsgfVxuXG4udmpzLW1lbnUgbGkudmpzLW1lbnUtaXRlbTpmb2N1cyxcbi52anMtbWVudSBsaS52anMtbWVudS1pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzczODU5ZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMTUsIDEzMywgMTU5LCAwLjUpOyB9XG5cbi52anMtbWVudSBsaS52anMtc2VsZWN0ZWQsXG4udmpzLW1lbnUgbGkudmpzLXNlbGVjdGVkOmZvY3VzLFxuLnZqcy1tZW51IGxpLnZqcy1zZWxlY3RlZDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjMkIzMzNGOyB9XG5cbi52anMtbWVudSBsaS52anMtbWVudS10aXRsZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC1zaXplOiAxZW07XG4gIGxpbmUtaGVpZ2h0OiAyZW07XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMCAwIDAuM2VtIDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjdXJzb3I6IGRlZmF1bHQ7IH1cblxuLnZqcy1tZW51LWJ1dHRvbi1wb3B1cCAudmpzLW1lbnUge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwZW07XG4gIGxlZnQ6IC0zZW07XG4gIGhlaWdodDogMGVtO1xuICBtYXJnaW4tYm90dG9tOiAxLjVlbTtcbiAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSg0MywgNTEsIDYzLCAwLjcpOyB9XG5cbi52anMtbWVudS1idXR0b24tcG9wdXAgLnZqcy1tZW51IC52anMtbWVudS1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJCMzMzRjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTEsIDYzLCAwLjcpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBib3R0b206IDEuNWVtO1xuICBtYXgtaGVpZ2h0OiAxNWVtOyB9XG5cbi52anMtd29ya2luZ2hvdmVyIC52anMtbWVudS1idXR0b24tcG9wdXA6aG92ZXIgLnZqcy1tZW51LFxuLnZqcy1tZW51LWJ1dHRvbi1wb3B1cCAudmpzLW1lbnUudmpzLWxvY2stc2hvd2luZyB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi52aWRlby1qcyAudmpzLW1lbnUtYnV0dG9uLWlubGluZSB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHM7XG4gIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHM7XG4gIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cztcbiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHM7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbi52aWRlby1qcyAudmpzLW1lbnUtYnV0dG9uLWlubGluZTpiZWZvcmUge1xuICB3aWR0aDogMi4yMjIyMjIyMjJlbTsgfVxuXG4udmlkZW8tanMgLnZqcy1tZW51LWJ1dHRvbi1pbmxpbmU6aG92ZXIsXG4udmlkZW8tanMgLnZqcy1tZW51LWJ1dHRvbi1pbmxpbmU6Zm9jdXMsXG4udmlkZW8tanMgLnZqcy1tZW51LWJ1dHRvbi1pbmxpbmUudmpzLXNsaWRlci1hY3RpdmUsXG4udmlkZW8tanMudmpzLW5vLWZsZXggLnZqcy1tZW51LWJ1dHRvbi1pbmxpbmUge1xuICB3aWR0aDogMTJlbTsgfVxuXG4udmpzLW1lbnUtYnV0dG9uLWlubGluZSAudmpzLW1lbnUge1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiBhdXRvO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDRlbTtcbiAgdG9wOiAwO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHM7XG4gIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHM7XG4gIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cztcbiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHM7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzOyB9XG5cbi52anMtbWVudS1idXR0b24taW5saW5lOmhvdmVyIC52anMtbWVudSxcbi52anMtbWVudS1idXR0b24taW5saW5lOmZvY3VzIC52anMtbWVudSxcbi52anMtbWVudS1idXR0b24taW5saW5lLnZqcy1zbGlkZXItYWN0aXZlIC52anMtbWVudSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvcGFjaXR5OiAxOyB9XG5cbi52anMtbm8tZmxleCAudmpzLW1lbnUtYnV0dG9uLWlubGluZSAudmpzLW1lbnUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3BhY2l0eTogMTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogYXV0bzsgfVxuXG4udmpzLW5vLWZsZXggLnZqcy1tZW51LWJ1dHRvbi1pbmxpbmU6aG92ZXIgLnZqcy1tZW51LFxuLnZqcy1uby1mbGV4IC52anMtbWVudS1idXR0b24taW5saW5lOmZvY3VzIC52anMtbWVudSxcbi52anMtbm8tZmxleCAudmpzLW1lbnUtYnV0dG9uLWlubGluZS52anMtc2xpZGVyLWFjdGl2ZSAudmpzLW1lbnUge1xuICB3aWR0aDogYXV0bzsgfVxuXG4udmpzLW1lbnUtYnV0dG9uLWlubGluZSAudmpzLW1lbnUtY29udGVudCB7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG4udmlkZW8tanMgLnZqcy1jb250cm9sLWJhciB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGhlaWdodDogMy4wZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICMyQjMzM0Y7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDUxLCA2MywgMC43KTsgfVxuXG4udmpzLWhhcy1zdGFydGVkIC52anMtY29udHJvbC1iYXIge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMTtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDAuMXMsIG9wYWNpdHkgMC4xcztcbiAgLW1vei10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDAuMXMsIG9wYWNpdHkgMC4xcztcbiAgLW1zLXRyYW5zaXRpb246IHZpc2liaWxpdHkgMC4xcywgb3BhY2l0eSAwLjFzO1xuICAtby10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDAuMXMsIG9wYWNpdHkgMC4xcztcbiAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAwLjFzLCBvcGFjaXR5IDAuMXM7IH1cblxuLnZqcy1oYXMtc3RhcnRlZC52anMtdXNlci1pbmFjdGl2ZS52anMtcGxheWluZyAudmpzLWNvbnRyb2wtYmFyIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMDtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzO1xuICAtbW96LXRyYW5zaXRpb246IHZpc2liaWxpdHkgMXMsIG9wYWNpdHkgMXM7XG4gIC1tcy10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzO1xuICAtby10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzO1xuICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzOyB9XG5cbi52anMtY29udHJvbHMtZGlzYWJsZWQgLnZqcy1jb250cm9sLWJhcixcbi52anMtdXNpbmctbmF0aXZlLWNvbnRyb2xzIC52anMtY29udHJvbC1iYXIsXG4udmpzLWVycm9yIC52anMtY29udHJvbC1iYXIge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuLnZqcy1hdWRpby52anMtaGFzLXN0YXJ0ZWQudmpzLXVzZXItaW5hY3RpdmUudmpzLXBsYXlpbmcgLnZqcy1jb250cm9sLWJhciB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7IH1cblxuLnZqcy1oYXMtc3RhcnRlZC52anMtbm8tZmxleCAudmpzLWNvbnRyb2wtYmFyIHtcbiAgZGlzcGxheTogdGFibGU7IH1cblxuLnZpZGVvLWpzIC52anMtY29udHJvbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDRlbTtcbiAgLXdlYmtpdC1ib3gtZmxleDogbm9uZTtcbiAgLW1vei1ib3gtZmxleDogbm9uZTtcbiAgLXdlYmtpdC1mbGV4OiBub25lO1xuICAtbXMtZmxleDogbm9uZTtcbiAgZmxleDogbm9uZTsgfVxuXG4udmpzLWJ1dHRvbiA+IC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUge1xuICBmb250LXNpemU6IDEuOGVtO1xuICBsaW5lLWhlaWdodDogMS42NzsgfVxuXG4udmlkZW8tanMgLnZqcy1jb250cm9sOmZvY3VzOmJlZm9yZSxcbi52aWRlby1qcyAudmpzLWNvbnRyb2w6aG92ZXI6YmVmb3JlLFxuLnZpZGVvLWpzIC52anMtY29udHJvbDpmb2N1cyB7XG4gIHRleHQtc2hhZG93OiAwZW0gMGVtIDFlbSB3aGl0ZTsgfVxuXG4udmlkZW8tanMgLnZqcy1jb250cm9sLXRleHQge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7IH1cblxuLnZqcy1uby1mbGV4IC52anMtY29udHJvbCB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLnZpZGVvLWpzIC52anMtY3VzdG9tLWNvbnRyb2wtc3BhY2VyIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4udmlkZW8tanMgLnZqcy1wcm9ncmVzcy1jb250cm9sIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LWJveC1mbGV4OiBhdXRvO1xuICAtbW96LWJveC1mbGV4OiBhdXRvO1xuICAtd2Via2l0LWZsZXg6IGF1dG87XG4gIC1tcy1mbGV4OiBhdXRvO1xuICBmbGV4OiBhdXRvO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyO1xuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtaW4td2lkdGg6IDRlbTtcbiAgdG91Y2gtYWN0aW9uOiBub25lOyB9XG5cbi52aWRlby1qcyAudmpzLXByb2dyZXNzLWNvbnRyb2wuZGlzYWJsZWQge1xuICBjdXJzb3I6IGRlZmF1bHQ7IH1cblxuLnZqcy1saXZlIC52anMtcHJvZ3Jlc3MtY29udHJvbCB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLnZqcy1uby1mbGV4IC52anMtcHJvZ3Jlc3MtY29udHJvbCB7XG4gIHdpZHRoOiBhdXRvOyB9XG5cbi52aWRlby1qcyAudmpzLXByb2dyZXNzLWhvbGRlciB7XG4gIC13ZWJraXQtYm94LWZsZXg6IGF1dG87XG4gIC1tb3otYm94LWZsZXg6IGF1dG87XG4gIC13ZWJraXQtZmxleDogYXV0bztcbiAgLW1zLWZsZXg6IGF1dG87XG4gIGZsZXg6IGF1dG87XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICBoZWlnaHQ6IDAuM2VtOyB9XG5cbi52aWRlby1qcyAudmpzLXByb2dyZXNzLWNvbnRyb2wgLnZqcy1wcm9ncmVzcy1ob2xkZXIge1xuICBtYXJnaW46IDAgMTBweDsgfVxuXG4udmlkZW8tanMgLnZqcy1wcm9ncmVzcy1jb250cm9sOmhvdmVyIC52anMtcHJvZ3Jlc3MtaG9sZGVyIHtcbiAgZm9udC1zaXplOiAxLjY2NjY2NjY2NjY2NjY2NjY2NmVtOyB9XG5cbi52aWRlby1qcyAudmpzLXByb2dyZXNzLWNvbnRyb2w6aG92ZXIgLnZqcy1wcm9ncmVzcy1ob2xkZXIuZGlzYWJsZWQge1xuICBmb250LXNpemU6IDFlbTsgfVxuXG4udmlkZW8tanMgLnZqcy1wcm9ncmVzcy1ob2xkZXIgLnZqcy1wbGF5LXByb2dyZXNzLFxuLnZpZGVvLWpzIC52anMtcHJvZ3Jlc3MtaG9sZGVyIC52anMtbG9hZC1wcm9ncmVzcyxcbi52aWRlby1qcyAudmpzLXByb2dyZXNzLWhvbGRlciAudmpzLWxvYWQtcHJvZ3Jlc3MgZGl2IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIHdpZHRoOiAwO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7IH1cblxuLnZpZGVvLWpzIC52anMtcGxheS1wcm9ncmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cbiAgLnZpZGVvLWpzIC52anMtcGxheS1wcm9ncmVzczpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAtMC41ZW07XG4gICAgdG9wOiAtMC4zMzMzMzMzMzMzMzMzMzNlbTtcbiAgICB6LWluZGV4OiAxOyB9XG5cbi52aWRlby1qcyAudmpzLWxvYWQtcHJvZ3Jlc3Mge1xuICBiYWNrZ3JvdW5kOiAjYmZjN2QzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDExNSwgMTMzLCAxNTksIDAuNSk7IH1cblxuLnZpZGVvLWpzIC52anMtbG9hZC1wcm9ncmVzcyBkaXYge1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYmFja2dyb3VuZDogcmdiYSgxMTUsIDEzMywgMTU5LCAwLjc1KTsgfVxuXG4udmlkZW8tanMgLnZqcy10aW1lLXRvb2x0aXAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMC4zZW07XG4gIC1tb3otYm9yZGVyLXJhZGl1czogMC4zZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuM2VtO1xuICBjb2xvcjogIzAwMDtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxZW07XG4gIHBhZGRpbmc6IDZweCA4cHggOHB4IDhweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMy40ZW07XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgei1pbmRleDogMTsgfVxuXG4udmlkZW8tanMgLnZqcy1wcm9ncmVzcy1ob2xkZXI6Zm9jdXMgLnZqcy10aW1lLXRvb2x0aXAge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi52aWRlby1qcyAudmpzLXByb2dyZXNzLWNvbnRyb2w6aG92ZXIgLnZqcy10aW1lLXRvb2x0aXAsXG4udmlkZW8tanMgLnZqcy1wcm9ncmVzcy1jb250cm9sOmhvdmVyIC52anMtcHJvZ3Jlc3MtaG9sZGVyOmZvY3VzIC52anMtdGltZS10b29sdGlwIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogMC42ZW07XG4gIHZpc2liaWxpdHk6IHZpc2libGU7IH1cblxuLnZpZGVvLWpzIC52anMtcHJvZ3Jlc3MtY29udHJvbC5kaXNhYmxlZDpob3ZlciAudmpzLXRpbWUtdG9vbHRpcCB7XG4gIGZvbnQtc2l6ZTogMWVtOyB9XG5cbi52aWRlby1qcyAudmpzLXByb2dyZXNzLWNvbnRyb2wgLnZqcy1tb3VzZS1kaXNwbGF5IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gIHotaW5kZXg6IDE7IH1cblxuLnZqcy1uby1mbGV4IC52anMtcHJvZ3Jlc3MtY29udHJvbCAudmpzLW1vdXNlLWRpc3BsYXkge1xuICB6LWluZGV4OiAwOyB9XG5cbi52aWRlby1qcyAudmpzLXByb2dyZXNzLWNvbnRyb2w6aG92ZXIgLnZqcy1tb3VzZS1kaXNwbGF5IHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLnZpZGVvLWpzLnZqcy11c2VyLWluYWN0aXZlIC52anMtcHJvZ3Jlc3MtY29udHJvbCAudmpzLW1vdXNlLWRpc3BsYXkge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIG9wYWNpdHk6IDA7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAxcywgb3BhY2l0eSAxcztcbiAgLW1vei10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzO1xuICAtbXMtdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAxcywgb3BhY2l0eSAxcztcbiAgLW8tdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAxcywgb3BhY2l0eSAxcztcbiAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAxcywgb3BhY2l0eSAxczsgfVxuXG4udmlkZW8tanMudmpzLXVzZXItaW5hY3RpdmUudmpzLW5vLWZsZXggLnZqcy1wcm9ncmVzcy1jb250cm9sIC52anMtbW91c2UtZGlzcGxheSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLnZqcy1tb3VzZS1kaXNwbGF5IC52anMtdGltZS10b29sdGlwIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTsgfVxuXG4udmlkZW8tanMgLnZqcy1zbGlkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwIDAuNDVlbSAwIDAuNDVlbTtcbiAgLyogaU9TIFNhZmFyaSAqL1xuICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7XG4gIC8qIFNhZmFyaSAqL1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAvKiBLb25xdWVyb3IgSFRNTCAqL1xuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC8qIEZpcmVmb3ggKi9cbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLyogSW50ZXJuZXQgRXhwbG9yZXIvRWRnZSAqL1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC8qIE5vbi1wcmVmaXhlZCB2ZXJzaW9uLCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IENocm9tZSBhbmQgT3BlcmEgKi9cbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3Mzg1OWY7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTE1LCAxMzMsIDE1OSwgMC41KTsgfVxuXG4udmlkZW8tanMgLnZqcy1zbGlkZXIuZGlzYWJsZWQge1xuICBjdXJzb3I6IGRlZmF1bHQ7IH1cblxuLnZpZGVvLWpzIC52anMtc2xpZGVyOmZvY3VzIHtcbiAgdGV4dC1zaGFkb3c6IDBlbSAwZW0gMWVtIHdoaXRlO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxZW0gI2ZmZjtcbiAgLW1vei1ib3gtc2hhZG93OiAwIDAgMWVtICNmZmY7XG4gIGJveC1zaGFkb3c6IDAgMCAxZW0gI2ZmZjsgfVxuXG4udmlkZW8tanMgLnZqcy1tdXRlLWNvbnRyb2wge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC13ZWJraXQtYm94LWZsZXg6IG5vbmU7XG4gIC1tb3otYm94LWZsZXg6IG5vbmU7XG4gIC13ZWJraXQtZmxleDogbm9uZTtcbiAgLW1zLWZsZXg6IG5vbmU7XG4gIGZsZXg6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAyZW07XG4gIHBhZGRpbmctYm90dG9tOiAzZW07IH1cblxuLnZpZGVvLWpzIC52anMtdm9sdW1lLWNvbnRyb2wge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1hcmdpbi1yaWdodDogMWVtO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDsgfVxuXG4udmlkZW8tanMgLnZqcy12b2x1bWUtY29udHJvbC52anMtdm9sdW1lLWhvcml6b250YWwge1xuICB3aWR0aDogNWVtOyB9XG5cbi52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbCAudmpzLXZvbHVtZS1jb250cm9sIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMDtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbi1sZWZ0OiAtMXB4OyB9XG5cbi52anMtbm8tZmxleCAudmpzLXZvbHVtZS1wYW5lbCAudmpzLXZvbHVtZS1jb250cm9sLnZqcy12b2x1bWUtdmVydGljYWwge1xuICAtbXMtZmlsdGVyOiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApXCI7IH1cbiAgLnZqcy1uby1mbGV4IC52anMtdm9sdW1lLXBhbmVsIC52anMtdm9sdW1lLWNvbnRyb2wudmpzLXZvbHVtZS12ZXJ0aWNhbCAudmpzLXZvbHVtZS1iYXIsXG4gIC52anMtbm8tZmxleCAudmpzLXZvbHVtZS1wYW5lbCAudmpzLXZvbHVtZS1jb250cm9sLnZqcy12b2x1bWUtdmVydGljYWwgLnZqcy12b2x1bWUtbGV2ZWwge1xuICAgIC1tcy1maWx0ZXI6IFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MClcIjsgfVxuXG4udmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWwge1xuICAtd2Via2l0LXRyYW5zaXRpb246IHdpZHRoIDFzO1xuICAtbW96LXRyYW5zaXRpb246IHdpZHRoIDFzO1xuICAtbXMtdHJhbnNpdGlvbjogd2lkdGggMXM7XG4gIC1vLXRyYW5zaXRpb246IHdpZHRoIDFzO1xuICB0cmFuc2l0aW9uOiB3aWR0aCAxczsgfVxuICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWw6aG92ZXIgLnZqcy12b2x1bWUtY29udHJvbCxcbiAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsOmFjdGl2ZSAudmpzLXZvbHVtZS1jb250cm9sLFxuICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWw6Zm9jdXMgLnZqcy12b2x1bWUtY29udHJvbCxcbiAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtdm9sdW1lLWNvbnRyb2w6aG92ZXIsXG4gIC52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbCAudmpzLXZvbHVtZS1jb250cm9sOmFjdGl2ZSxcbiAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtbXV0ZS1jb250cm9sOmhvdmVyIH4gLnZqcy12b2x1bWUtY29udHJvbCxcbiAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtdm9sdW1lLWNvbnRyb2wudmpzLXNsaWRlci1hY3RpdmUge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgb3BhY2l0eTogMTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDAuMXMsIG9wYWNpdHkgMC4xcywgaGVpZ2h0IDAuMXMsIHdpZHRoIDAuMXMsIGxlZnQgMHMsIHRvcCAwcztcbiAgICAtbW96LXRyYW5zaXRpb246IHZpc2liaWxpdHkgMC4xcywgb3BhY2l0eSAwLjFzLCBoZWlnaHQgMC4xcywgd2lkdGggMC4xcywgbGVmdCAwcywgdG9wIDBzO1xuICAgIC1tcy10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDAuMXMsIG9wYWNpdHkgMC4xcywgaGVpZ2h0IDAuMXMsIHdpZHRoIDAuMXMsIGxlZnQgMHMsIHRvcCAwcztcbiAgICAtby10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDAuMXMsIG9wYWNpdHkgMC4xcywgaGVpZ2h0IDAuMXMsIHdpZHRoIDAuMXMsIGxlZnQgMHMsIHRvcCAwcztcbiAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDAuMXMsIG9wYWNpdHkgMC4xcywgaGVpZ2h0IDAuMXMsIHdpZHRoIDAuMXMsIGxlZnQgMHMsIHRvcCAwczsgfVxuICAgIC52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbDpob3ZlciAudmpzLXZvbHVtZS1jb250cm9sLnZqcy12b2x1bWUtaG9yaXpvbnRhbCxcbiAgICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWw6YWN0aXZlIC52anMtdm9sdW1lLWNvbnRyb2wudmpzLXZvbHVtZS1ob3Jpem9udGFsLFxuICAgIC52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbDpmb2N1cyAudmpzLXZvbHVtZS1jb250cm9sLnZqcy12b2x1bWUtaG9yaXpvbnRhbCxcbiAgICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWwgLnZqcy12b2x1bWUtY29udHJvbDpob3Zlci52anMtdm9sdW1lLWhvcml6b250YWwsXG4gICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtdm9sdW1lLWNvbnRyb2w6YWN0aXZlLnZqcy12b2x1bWUtaG9yaXpvbnRhbCxcbiAgICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWwgLnZqcy1tdXRlLWNvbnRyb2w6aG92ZXIgfiAudmpzLXZvbHVtZS1jb250cm9sLnZqcy12b2x1bWUtaG9yaXpvbnRhbCxcbiAgICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWwgLnZqcy12b2x1bWUtY29udHJvbC52anMtc2xpZGVyLWFjdGl2ZS52anMtdm9sdW1lLWhvcml6b250YWwge1xuICAgICAgd2lkdGg6IDVlbTtcbiAgICAgIGhlaWdodDogM2VtOyB9XG4gICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsOmhvdmVyIC52anMtdm9sdW1lLWNvbnRyb2wudmpzLXZvbHVtZS12ZXJ0aWNhbCxcbiAgICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWw6YWN0aXZlIC52anMtdm9sdW1lLWNvbnRyb2wudmpzLXZvbHVtZS12ZXJ0aWNhbCxcbiAgICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWw6Zm9jdXMgLnZqcy12b2x1bWUtY29udHJvbC52anMtdm9sdW1lLXZlcnRpY2FsLFxuICAgIC52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbCAudmpzLXZvbHVtZS1jb250cm9sOmhvdmVyLnZqcy12b2x1bWUtdmVydGljYWwsXG4gICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtdm9sdW1lLWNvbnRyb2w6YWN0aXZlLnZqcy12b2x1bWUtdmVydGljYWwsXG4gICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtbXV0ZS1jb250cm9sOmhvdmVyIH4gLnZqcy12b2x1bWUtY29udHJvbC52anMtdm9sdW1lLXZlcnRpY2FsLFxuICAgIC52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbCAudmpzLXZvbHVtZS1jb250cm9sLnZqcy1zbGlkZXItYWN0aXZlLnZqcy12b2x1bWUtdmVydGljYWwge1xuICAgICAgLW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApXCI7IH1cbiAgICAgIC52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbDpob3ZlciAudmpzLXZvbHVtZS1jb250cm9sLnZqcy12b2x1bWUtdmVydGljYWwgLnZqcy12b2x1bWUtYmFyLFxuICAgICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsOmhvdmVyIC52anMtdm9sdW1lLWNvbnRyb2wudmpzLXZvbHVtZS12ZXJ0aWNhbCAudmpzLXZvbHVtZS1sZXZlbCxcbiAgICAgIC52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbDphY3RpdmUgLnZqcy12b2x1bWUtY29udHJvbC52anMtdm9sdW1lLXZlcnRpY2FsIC52anMtdm9sdW1lLWJhcixcbiAgICAgIC52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbDphY3RpdmUgLnZqcy12b2x1bWUtY29udHJvbC52anMtdm9sdW1lLXZlcnRpY2FsIC52anMtdm9sdW1lLWxldmVsLFxuICAgICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsOmZvY3VzIC52anMtdm9sdW1lLWNvbnRyb2wudmpzLXZvbHVtZS12ZXJ0aWNhbCAudmpzLXZvbHVtZS1iYXIsXG4gICAgICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWw6Zm9jdXMgLnZqcy12b2x1bWUtY29udHJvbC52anMtdm9sdW1lLXZlcnRpY2FsIC52anMtdm9sdW1lLWxldmVsLFxuICAgICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtdm9sdW1lLWNvbnRyb2w6aG92ZXIudmpzLXZvbHVtZS12ZXJ0aWNhbCAudmpzLXZvbHVtZS1iYXIsXG4gICAgICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWwgLnZqcy12b2x1bWUtY29udHJvbDpob3Zlci52anMtdm9sdW1lLXZlcnRpY2FsIC52anMtdm9sdW1lLWxldmVsLFxuICAgICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtdm9sdW1lLWNvbnRyb2w6YWN0aXZlLnZqcy12b2x1bWUtdmVydGljYWwgLnZqcy12b2x1bWUtYmFyLFxuICAgICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtdm9sdW1lLWNvbnRyb2w6YWN0aXZlLnZqcy12b2x1bWUtdmVydGljYWwgLnZqcy12b2x1bWUtbGV2ZWwsXG4gICAgICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWwgLnZqcy1tdXRlLWNvbnRyb2w6aG92ZXIgfiAudmpzLXZvbHVtZS1jb250cm9sLnZqcy12b2x1bWUtdmVydGljYWwgLnZqcy12b2x1bWUtYmFyLFxuICAgICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtbXV0ZS1jb250cm9sOmhvdmVyIH4gLnZqcy12b2x1bWUtY29udHJvbC52anMtdm9sdW1lLXZlcnRpY2FsIC52anMtdm9sdW1lLWxldmVsLFxuICAgICAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsIC52anMtdm9sdW1lLWNvbnRyb2wudmpzLXNsaWRlci1hY3RpdmUudmpzLXZvbHVtZS12ZXJ0aWNhbCAudmpzLXZvbHVtZS1iYXIsXG4gICAgICAudmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWwgLnZqcy12b2x1bWUtY29udHJvbC52anMtc2xpZGVyLWFjdGl2ZS52anMtdm9sdW1lLXZlcnRpY2FsIC52anMtdm9sdW1lLWxldmVsIHtcbiAgICAgICAgLW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApXCI7IH1cbiAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsLnZqcy12b2x1bWUtcGFuZWwtaG9yaXpvbnRhbDpob3ZlciwgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsLnZqcy12b2x1bWUtcGFuZWwtaG9yaXpvbnRhbDphY3RpdmUsIC52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbC52anMtdm9sdW1lLXBhbmVsLWhvcml6b250YWwudmpzLXNsaWRlci1hY3RpdmUge1xuICAgIHdpZHRoOiA5ZW07XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAwLjFzO1xuICAgIC1tb3otdHJhbnNpdGlvbjogd2lkdGggMC4xcztcbiAgICAtbXMtdHJhbnNpdGlvbjogd2lkdGggMC4xcztcbiAgICAtby10cmFuc2l0aW9uOiB3aWR0aCAwLjFzO1xuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMXM7IH1cbiAgLnZpZGVvLWpzIC52anMtdm9sdW1lLXBhbmVsLnZqcy12b2x1bWUtcGFuZWwtaG9yaXpvbnRhbC52anMtbXV0ZS10b2dnbGUtb25seSB7XG4gICAgd2lkdGg6IDRlbTsgfVxuXG4udmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWwgLnZqcy12b2x1bWUtY29udHJvbC52anMtdm9sdW1lLXZlcnRpY2FsIHtcbiAgaGVpZ2h0OiA4ZW07XG4gIHdpZHRoOiAzZW07XG4gIGxlZnQ6IC0zLjVlbTtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzLCBoZWlnaHQgMXMgMXMsIHdpZHRoIDFzIDFzLCBsZWZ0IDFzIDFzLCB0b3AgMXMgMXM7XG4gIC1tb3otdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAxcywgb3BhY2l0eSAxcywgaGVpZ2h0IDFzIDFzLCB3aWR0aCAxcyAxcywgbGVmdCAxcyAxcywgdG9wIDFzIDFzO1xuICAtbXMtdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAxcywgb3BhY2l0eSAxcywgaGVpZ2h0IDFzIDFzLCB3aWR0aCAxcyAxcywgbGVmdCAxcyAxcywgdG9wIDFzIDFzO1xuICAtby10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzLCBoZWlnaHQgMXMgMXMsIHdpZHRoIDFzIDFzLCBsZWZ0IDFzIDFzLCB0b3AgMXMgMXM7XG4gIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMXMsIG9wYWNpdHkgMXMsIGhlaWdodCAxcyAxcywgd2lkdGggMXMgMXMsIGxlZnQgMXMgMXMsIHRvcCAxcyAxczsgfVxuXG4udmlkZW8tanMgLnZqcy12b2x1bWUtcGFuZWwgLnZqcy12b2x1bWUtY29udHJvbC52anMtdm9sdW1lLWhvcml6b250YWwge1xuICAtd2Via2l0LXRyYW5zaXRpb246IHZpc2liaWxpdHkgMXMsIG9wYWNpdHkgMXMsIGhlaWdodCAxcyAxcywgd2lkdGggMXMsIGxlZnQgMXMgMXMsIHRvcCAxcyAxcztcbiAgLW1vei10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzLCBoZWlnaHQgMXMgMXMsIHdpZHRoIDFzLCBsZWZ0IDFzIDFzLCB0b3AgMXMgMXM7XG4gIC1tcy10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzLCBoZWlnaHQgMXMgMXMsIHdpZHRoIDFzLCBsZWZ0IDFzIDFzLCB0b3AgMXMgMXM7XG4gIC1vLXRyYW5zaXRpb246IHZpc2liaWxpdHkgMXMsIG9wYWNpdHkgMXMsIGhlaWdodCAxcyAxcywgd2lkdGggMXMsIGxlZnQgMXMgMXMsIHRvcCAxcyAxcztcbiAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAxcywgb3BhY2l0eSAxcywgaGVpZ2h0IDFzIDFzLCB3aWR0aCAxcywgbGVmdCAxcyAxcywgdG9wIDFzIDFzOyB9XG5cbi52aWRlby1qcy52anMtbm8tZmxleCAudmpzLXZvbHVtZS1wYW5lbCAudmpzLXZvbHVtZS1jb250cm9sLnZqcy12b2x1bWUtaG9yaXpvbnRhbCB7XG4gIHdpZHRoOiA1ZW07XG4gIGhlaWdodDogM2VtO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBvcGFjaXR5OiAxO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTtcbiAgLW1vei10cmFuc2l0aW9uOiBub25lO1xuICAtbXMtdHJhbnNpdGlvbjogbm9uZTtcbiAgLW8tdHJhbnNpdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogbm9uZTsgfVxuXG4udmlkZW8tanMudmpzLW5vLWZsZXggLnZqcy12b2x1bWUtY29udHJvbC52anMtdm9sdW1lLXZlcnRpY2FsLFxuLnZpZGVvLWpzLnZqcy1uby1mbGV4IC52anMtdm9sdW1lLXBhbmVsIC52anMtdm9sdW1lLWNvbnRyb2wudmpzLXZvbHVtZS12ZXJ0aWNhbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAzZW07XG4gIGxlZnQ6IDAuNWVtOyB9XG5cbi52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbCB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4OyB9XG5cbi52aWRlby1qcyAudmpzLXZvbHVtZS1iYXIge1xuICBtYXJnaW46IDEuMzVlbSAwLjQ1ZW07IH1cblxuLnZqcy12b2x1bWUtYmFyLnZqcy1zbGlkZXItaG9yaXpvbnRhbCB7XG4gIHdpZHRoOiA1ZW07XG4gIGhlaWdodDogMC4zZW07IH1cblxuLnZqcy12b2x1bWUtYmFyLnZqcy1zbGlkZXItdmVydGljYWwge1xuICB3aWR0aDogMC4zZW07XG4gIGhlaWdodDogNWVtO1xuICBtYXJnaW46IDEuMzVlbSBhdXRvOyB9XG5cbi52aWRlby1qcyAudmpzLXZvbHVtZS1sZXZlbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB9XG4gIC52aWRlby1qcyAudmpzLXZvbHVtZS1sZXZlbDpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBmb250LXNpemU6IDAuOWVtOyB9XG5cbi52anMtc2xpZGVyLXZlcnRpY2FsIC52anMtdm9sdW1lLWxldmVsIHtcbiAgd2lkdGg6IDAuM2VtOyB9XG4gIC52anMtc2xpZGVyLXZlcnRpY2FsIC52anMtdm9sdW1lLWxldmVsOmJlZm9yZSB7XG4gICAgdG9wOiAtMC41ZW07XG4gICAgbGVmdDogLTAuM2VtOyB9XG5cbi52anMtc2xpZGVyLWhvcml6b250YWwgLnZqcy12b2x1bWUtbGV2ZWwge1xuICBoZWlnaHQ6IDAuM2VtOyB9XG4gIC52anMtc2xpZGVyLWhvcml6b250YWwgLnZqcy12b2x1bWUtbGV2ZWw6YmVmb3JlIHtcbiAgICB0b3A6IC0wLjNlbTtcbiAgICByaWdodDogLTAuNWVtOyB9XG5cbi52aWRlby1qcyAudmpzLXZvbHVtZS1wYW5lbC52anMtdm9sdW1lLXBhbmVsLXZlcnRpY2FsIHtcbiAgd2lkdGg6IDRlbTsgfVxuXG4udmpzLXZvbHVtZS1iYXIudmpzLXNsaWRlci12ZXJ0aWNhbCAudmpzLXZvbHVtZS1sZXZlbCB7XG4gIGhlaWdodDogMTAwJTsgfVxuXG4udmpzLXZvbHVtZS1iYXIudmpzLXNsaWRlci1ob3Jpem9udGFsIC52anMtdm9sdW1lLWxldmVsIHtcbiAgd2lkdGg6IDEwMCU7IH1cblxuLnZpZGVvLWpzIC52anMtdm9sdW1lLXZlcnRpY2FsIHtcbiAgd2lkdGg6IDNlbTtcbiAgaGVpZ2h0OiA4ZW07XG4gIGJvdHRvbTogOGVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkIzMzNGO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQzLCA1MSwgNjMsIDAuNyk7IH1cblxuLnZpZGVvLWpzIC52anMtdm9sdW1lLWhvcml6b250YWwgLnZqcy1tZW51IHtcbiAgbGVmdDogLTJlbTsgfVxuXG4udmpzLXBvc3RlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwJTsgfVxuXG4udmpzLXBvc3RlciBpbWcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIHBhZGRpbmc6IDA7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi52anMtaGFzLXN0YXJ0ZWQgLnZqcy1wb3N0ZXIge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi52anMtYXVkaW8udmpzLWhhcy1zdGFydGVkIC52anMtcG9zdGVyIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLnZqcy11c2luZy1uYXRpdmUtY29udHJvbHMgLnZqcy1wb3N0ZXIge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi52aWRlby1qcyAudmpzLWxpdmUtY29udHJvbCB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1hbGlnbjogZmxleC1zdGFydDtcbiAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgLW1zLWZsZXgtYWxpZ246IGZsZXgtc3RhcnQ7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAtd2Via2l0LWJveC1mbGV4OiBhdXRvO1xuICAtbW96LWJveC1mbGV4OiBhdXRvO1xuICAtd2Via2l0LWZsZXg6IGF1dG87XG4gIC1tcy1mbGV4OiBhdXRvO1xuICBmbGV4OiBhdXRvO1xuICBmb250LXNpemU6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDNlbTsgfVxuXG4udmpzLW5vLWZsZXggLnZqcy1saXZlLWNvbnRyb2wge1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICB3aWR0aDogYXV0bztcbiAgdGV4dC1hbGlnbjogbGVmdDsgfVxuXG4udmlkZW8tanMgLnZqcy10aW1lLWNvbnRyb2wge1xuICAtd2Via2l0LWJveC1mbGV4OiBub25lO1xuICAtbW96LWJveC1mbGV4OiBub25lO1xuICAtd2Via2l0LWZsZXg6IG5vbmU7XG4gIC1tcy1mbGV4OiBub25lO1xuICBmbGV4OiBub25lO1xuICBmb250LXNpemU6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDNlbTtcbiAgbWluLXdpZHRoOiAyZW07XG4gIHdpZHRoOiBhdXRvO1xuICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgcGFkZGluZy1yaWdodDogMWVtOyB9XG5cbi52anMtbGl2ZSAudmpzLXRpbWUtY29udHJvbCB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLnZpZGVvLWpzIC52anMtY3VycmVudC10aW1lLFxuLnZqcy1uby1mbGV4IC52anMtY3VycmVudC10aW1lIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4udmpzLW5vLWZsZXggLnZqcy1yZW1haW5pbmctdGltZS52anMtdGltZS1jb250cm9sLnZqcy1jb250cm9sIHtcbiAgd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG5cbi52aWRlby1qcyAudmpzLWR1cmF0aW9uLFxuLnZqcy1uby1mbGV4IC52anMtZHVyYXRpb24ge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi52anMtdGltZS1kaXZpZGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDNlbTsgfVxuXG4udmpzLWxpdmUgLnZqcy10aW1lLWRpdmlkZXIge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi52aWRlby1qcyAudmpzLXBsYXktY29udHJvbCAudmpzLWljb24tcGxhY2Vob2xkZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC13ZWJraXQtYm94LWZsZXg6IG5vbmU7XG4gIC1tb3otYm94LWZsZXg6IG5vbmU7XG4gIC13ZWJraXQtZmxleDogbm9uZTtcbiAgLW1zLWZsZXg6IG5vbmU7XG4gIGZsZXg6IG5vbmU7IH1cblxuLnZqcy10ZXh0LXRyYWNrLWRpc3BsYXkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogM2VtO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuXG4udmlkZW8tanMudmpzLXVzZXItaW5hY3RpdmUudmpzLXBsYXlpbmcgLnZqcy10ZXh0LXRyYWNrLWRpc3BsYXkge1xuICBib3R0b206IDFlbTsgfVxuXG4udmlkZW8tanMgLnZqcy10ZXh0LXRyYWNrIHtcbiAgZm9udC1zaXplOiAxLjRlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAwLjFlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOyB9XG5cbi52anMtc3VidGl0bGVzIHtcbiAgY29sb3I6ICNmZmY7IH1cblxuLnZqcy1jYXB0aW9ucyB7XG4gIGNvbG9yOiAjZmM2OyB9XG5cbi52anMtdHQtY3VlIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxudmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IHtcbiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNlbSk7XG4gIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNlbSk7XG4gIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM2VtKTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNlbSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM2VtKTsgfVxuXG4udmlkZW8tanMudmpzLXVzZXItaW5hY3RpdmUudmpzLXBsYXlpbmcgdmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IHtcbiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuNWVtKTtcbiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS41ZW0pO1xuICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuNWVtKTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuNWVtKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xLjVlbSk7IH1cblxuLnZpZGVvLWpzIC52anMtZnVsbHNjcmVlbi1jb250cm9sIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LWJveC1mbGV4OiBub25lO1xuICAtbW96LWJveC1mbGV4OiBub25lO1xuICAtd2Via2l0LWZsZXg6IG5vbmU7XG4gIC1tcy1mbGV4OiBub25lO1xuICBmbGV4OiBub25lOyB9XG5cbi52anMtcGxheWJhY2stcmF0ZSA+IC52anMtbWVudS1idXR0b24sXG4udmpzLXBsYXliYWNrLXJhdGUgLnZqcy1wbGF5YmFjay1yYXRlLXZhbHVlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7IH1cblxuLnZqcy1wbGF5YmFjay1yYXRlIC52anMtcGxheWJhY2stcmF0ZS12YWx1ZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBmb250LXNpemU6IDEuNWVtO1xuICBsaW5lLWhlaWdodDogMjtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi52anMtcGxheWJhY2stcmF0ZSAudmpzLW1lbnUge1xuICB3aWR0aDogNGVtO1xuICBsZWZ0OiAwZW07IH1cblxuLnZqcy1lcnJvciAudmpzLWVycm9yLWRpc3BsYXkgLnZqcy1tb2RhbC1kaWFsb2ctY29udGVudCB7XG4gIGZvbnQtc2l6ZTogMS40ZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG4udmpzLWVycm9yIC52anMtZXJyb3ItZGlzcGxheTpiZWZvcmUge1xuICBjb2xvcjogI2ZmZjtcbiAgY29udGVudDogJ1gnO1xuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiA0ZW07XG4gIGxlZnQ6IDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBtYXJnaW4tdG9wOiAtMC41ZW07XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdGV4dC1zaGFkb3c6IDAuMDVlbSAwLjA1ZW0gMC4xZW0gIzAwMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0b3A6IDUwJTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDEwMCU7IH1cblxuLnZqcy1sb2FkaW5nLXNwaW5uZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIG1hcmdpbjogLTI1cHggMCAwIC0yNXB4O1xuICBvcGFjaXR5OiAwLjg1O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBib3JkZXI6IDZweCBzb2xpZCByZ2JhKDQzLCA1MSwgNjMsIDAuNyk7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDI1cHg7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuXG4udmpzLXNlZWtpbmcgLnZqcy1sb2FkaW5nLXNwaW5uZXIsXG4udmpzLXdhaXRpbmcgLnZqcy1sb2FkaW5nLXNwaW5uZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgYW5pbWF0aW9uOiAwcyBsaW5lYXIgMC4zcyBmb3J3YXJkcyB2anMtc3Bpbm5lci1zaG93OyB9XG5cbi52anMtbG9hZGluZy1zcGlubmVyOmJlZm9yZSxcbi52anMtbG9hZGluZy1zcGlubmVyOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW46IC02cHg7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIHdpZHRoOiBpbmhlcml0O1xuICBoZWlnaHQ6IGluaGVyaXQ7XG4gIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gIG9wYWNpdHk6IDE7XG4gIGJvcmRlcjogaW5oZXJpdDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7IH1cblxuLnZqcy1zZWVraW5nIC52anMtbG9hZGluZy1zcGlubmVyOmJlZm9yZSxcbi52anMtc2Vla2luZyAudmpzLWxvYWRpbmctc3Bpbm5lcjphZnRlcixcbi52anMtd2FpdGluZyAudmpzLWxvYWRpbmctc3Bpbm5lcjpiZWZvcmUsXG4udmpzLXdhaXRpbmcgLnZqcy1sb2FkaW5nLXNwaW5uZXI6YWZ0ZXIge1xuICAtd2Via2l0LWFuaW1hdGlvbjogdmpzLXNwaW5uZXItc3BpbiAxLjFzIGN1YmljLWJlemllcigwLjYsIDAuMiwgMCwgMC44KSBpbmZpbml0ZSwgdmpzLXNwaW5uZXItZmFkZSAxLjFzIGxpbmVhciBpbmZpbml0ZTtcbiAgYW5pbWF0aW9uOiB2anMtc3Bpbm5lci1zcGluIDEuMXMgY3ViaWMtYmV6aWVyKDAuNiwgMC4yLCAwLCAwLjgpIGluZmluaXRlLCB2anMtc3Bpbm5lci1mYWRlIDEuMXMgbGluZWFyIGluZmluaXRlOyB9XG5cbi52anMtc2Vla2luZyAudmpzLWxvYWRpbmctc3Bpbm5lcjpiZWZvcmUsXG4udmpzLXdhaXRpbmcgLnZqcy1sb2FkaW5nLXNwaW5uZXI6YmVmb3JlIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7IH1cblxuLnZqcy1zZWVraW5nIC52anMtbG9hZGluZy1zcGlubmVyOmFmdGVyLFxuLnZqcy13YWl0aW5nIC52anMtbG9hZGluZy1zcGlubmVyOmFmdGVyIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjQ0cztcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjQ0czsgfVxuXG5Aa2V5ZnJhbWVzIHZqcy1zcGlubmVyLXNob3cge1xuICB0byB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTsgfSB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyB2anMtc3Bpbm5lci1zaG93IHtcbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7IH0gfVxuXG5Aa2V5ZnJhbWVzIHZqcy1zcGlubmVyLXNwaW4ge1xuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHZqcy1zcGlubmVyLXNwaW4ge1xuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxuXG5Aa2V5ZnJhbWVzIHZqcy1zcGlubmVyLWZhZGUge1xuICAwJSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogIzczODU5ZjsgfVxuICAyMCUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICM3Mzg1OWY7IH1cbiAgMzUlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTsgfVxuICA2MCUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICM3Mzg1OWY7IH1cbiAgMTAwJSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogIzczODU5ZjsgfSB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyB2anMtc3Bpbm5lci1mYWRlIHtcbiAgMCUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICM3Mzg1OWY7IH1cbiAgMjAlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjNzM4NTlmOyB9XG4gIDM1JSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7IH1cbiAgNjAlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjNzM4NTlmOyB9XG4gIDEwMCUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICM3Mzg1OWY7IH0gfVxuXG4udmpzLWNoYXB0ZXJzLWJ1dHRvbiAudmpzLW1lbnUgdWwge1xuICB3aWR0aDogMjRlbTsgfVxuXG4udmlkZW8tanMgLnZqcy1zdWJzLWNhcHMtYnV0dG9uICsgLnZqcy1tZW51IC52anMtY2FwdGlvbnMtbWVudS1pdGVtIC52anMtbWVudS1pdGVtLXRleHQgLnZqcy1pY29uLXBsYWNlaG9sZGVyIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAtMC4xZW07IH1cblxuLnZpZGVvLWpzIC52anMtc3Vicy1jYXBzLWJ1dHRvbiArIC52anMtbWVudSAudmpzLWNhcHRpb25zLW1lbnUtaXRlbSAudmpzLW1lbnUtaXRlbS10ZXh0IC52anMtaWNvbi1wbGFjZWhvbGRlcjpiZWZvcmUge1xuICBmb250LWZhbWlseTogVmlkZW9KUztcbiAgY29udGVudDogXCJcXGYxMGRcIjtcbiAgZm9udC1zaXplOiAxLjVlbTtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH1cblxuLnZpZGVvLWpzIC52anMtYXVkaW8tYnV0dG9uICsgLnZqcy1tZW51IC52anMtbWFpbi1kZXNjLW1lbnUtaXRlbSAudmpzLW1lbnUtaXRlbS10ZXh0IC52anMtaWNvbi1wbGFjZWhvbGRlciB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogLTAuMWVtOyB9XG5cbi52aWRlby1qcyAudmpzLWF1ZGlvLWJ1dHRvbiArIC52anMtbWVudSAudmpzLW1haW4tZGVzYy1tZW51LWl0ZW0gLnZqcy1tZW51LWl0ZW0tdGV4dCAudmpzLWljb24tcGxhY2Vob2xkZXI6YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6IFZpZGVvSlM7XG4gIGNvbnRlbnQ6IFwiIFxcZjExZFwiO1xuICBmb250LXNpemU6IDEuNWVtO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDsgfVxuXG4udmlkZW8tanMudmpzLWxheW91dC10aW55Om5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtY3VzdG9tLWNvbnRyb2wtc3BhY2VyIHtcbiAgLXdlYmtpdC1ib3gtZmxleDogYXV0bztcbiAgLW1vei1ib3gtZmxleDogYXV0bztcbiAgLXdlYmtpdC1mbGV4OiBhdXRvO1xuICAtbXMtZmxleDogYXV0bztcbiAgZmxleDogYXV0bztcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLnZpZGVvLWpzLnZqcy1sYXlvdXQtdGlueTpub3QoLnZqcy1mdWxsc2NyZWVuKS52anMtbm8tZmxleCAudmpzLWN1c3RvbS1jb250cm9sLXNwYWNlciB7XG4gIHdpZHRoOiBhdXRvOyB9XG5cbi52aWRlby1qcy52anMtbGF5b3V0LXRpbnk6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1jdXJyZW50LXRpbWUsIC52aWRlby1qcy52anMtbGF5b3V0LXRpbnk6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy10aW1lLWRpdmlkZXIsIC52aWRlby1qcy52anMtbGF5b3V0LXRpbnk6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1kdXJhdGlvbiwgLnZpZGVvLWpzLnZqcy1sYXlvdXQtdGlueTpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLXJlbWFpbmluZy10aW1lLFxuLnZpZGVvLWpzLnZqcy1sYXlvdXQtdGlueTpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLXBsYXliYWNrLXJhdGUsIC52aWRlby1qcy52anMtbGF5b3V0LXRpbnk6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1wcm9ncmVzcy1jb250cm9sLFxuLnZpZGVvLWpzLnZqcy1sYXlvdXQtdGlueTpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLW11dGUtY29udHJvbCwgLnZpZGVvLWpzLnZqcy1sYXlvdXQtdGlueTpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLXZvbHVtZS1jb250cm9sLCAudmlkZW8tanMudmpzLWxheW91dC10aW55Om5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtdm9sdW1lLXBhbmVsLFxuLnZpZGVvLWpzLnZqcy1sYXlvdXQtdGlueTpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLWNoYXB0ZXJzLWJ1dHRvbiwgLnZpZGVvLWpzLnZqcy1sYXlvdXQtdGlueTpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLWRlc2NyaXB0aW9ucy1idXR0b24sIC52aWRlby1qcy52anMtbGF5b3V0LXRpbnk6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1jYXB0aW9ucy1idXR0b24sXG4udmlkZW8tanMudmpzLWxheW91dC10aW55Om5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtc3VidGl0bGVzLWJ1dHRvbiwgLnZpZGVvLWpzLnZqcy1sYXlvdXQtdGlueTpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLXN1YnMtY2Fwcy1idXR0b24sIC52aWRlby1qcy52anMtbGF5b3V0LXRpbnk6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1hdWRpby1idXR0b24ge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi52aWRlby1qcy52anMtbGF5b3V0LXgtc21hbGw6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1jdXJyZW50LXRpbWUsIC52aWRlby1qcy52anMtbGF5b3V0LXgtc21hbGw6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy10aW1lLWRpdmlkZXIsIC52aWRlby1qcy52anMtbGF5b3V0LXgtc21hbGw6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1kdXJhdGlvbiwgLnZpZGVvLWpzLnZqcy1sYXlvdXQteC1zbWFsbDpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLXJlbWFpbmluZy10aW1lLFxuLnZpZGVvLWpzLnZqcy1sYXlvdXQteC1zbWFsbDpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLXBsYXliYWNrLXJhdGUsXG4udmlkZW8tanMudmpzLWxheW91dC14LXNtYWxsOm5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtbXV0ZS1jb250cm9sLCAudmlkZW8tanMudmpzLWxheW91dC14LXNtYWxsOm5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtdm9sdW1lLWNvbnRyb2wsIC52aWRlby1qcy52anMtbGF5b3V0LXgtc21hbGw6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy12b2x1bWUtcGFuZWwsXG4udmlkZW8tanMudmpzLWxheW91dC14LXNtYWxsOm5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtY2hhcHRlcnMtYnV0dG9uLCAudmlkZW8tanMudmpzLWxheW91dC14LXNtYWxsOm5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtZGVzY3JpcHRpb25zLWJ1dHRvbiwgLnZpZGVvLWpzLnZqcy1sYXlvdXQteC1zbWFsbDpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLWNhcHRpb25zLWJ1dHRvbixcbi52aWRlby1qcy52anMtbGF5b3V0LXgtc21hbGw6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1zdWJ0aXRsZXMtYnV0dG9uLCAudmlkZW8tanMudmpzLWxheW91dC14LXNtYWxsOm5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtc3Vicy1jYXBzLWJ1dHRvbiwgLnZpZGVvLWpzLnZqcy1sYXlvdXQteC1zbWFsbDpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLWF1ZGlvLWJ1dHRvbiB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLnZpZGVvLWpzLnZqcy1sYXlvdXQtc21hbGw6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1jdXJyZW50LXRpbWUsIC52aWRlby1qcy52anMtbGF5b3V0LXNtYWxsOm5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtdGltZS1kaXZpZGVyLCAudmlkZW8tanMudmpzLWxheW91dC1zbWFsbDpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLWR1cmF0aW9uLCAudmlkZW8tanMudmpzLWxheW91dC1zbWFsbDpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLXJlbWFpbmluZy10aW1lLFxuLnZpZGVvLWpzLnZqcy1sYXlvdXQtc21hbGw6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1wbGF5YmFjay1yYXRlLFxuLnZpZGVvLWpzLnZqcy1sYXlvdXQtc21hbGw6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1tdXRlLWNvbnRyb2wsIC52aWRlby1qcy52anMtbGF5b3V0LXNtYWxsOm5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtdm9sdW1lLWNvbnRyb2wsIC52aWRlby1qcy52anMtbGF5b3V0LXNtYWxsOm5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtdm9sdW1lLXBhbmVsLFxuLnZpZGVvLWpzLnZqcy1sYXlvdXQtc21hbGw6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1jaGFwdGVycy1idXR0b24sIC52aWRlby1qcy52anMtbGF5b3V0LXNtYWxsOm5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtZGVzY3JpcHRpb25zLWJ1dHRvbiwgLnZpZGVvLWpzLnZqcy1sYXlvdXQtc21hbGw6bm90KC52anMtZnVsbHNjcmVlbikgLnZqcy1jYXB0aW9ucy1idXR0b24sXG4udmlkZW8tanMudmpzLWxheW91dC1zbWFsbDpub3QoLnZqcy1mdWxsc2NyZWVuKSAudmpzLXN1YnRpdGxlcy1idXR0b24sIC52aWRlby1qcy52anMtbGF5b3V0LXNtYWxsOm5vdCgudmpzLWZ1bGxzY3JlZW4pIC52anMtYXVkaW8tYnV0dG9uIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4udmpzLW1vZGFsLWRpYWxvZy52anMtdGV4dC10cmFjay1zZXR0aW5ncyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyQjMzM0Y7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDUxLCA2MywgMC43NSk7XG4gIGNvbG9yOiAjZmZmO1xuICBoZWlnaHQ6IDcwJTsgfVxuXG4udmpzLXRleHQtdHJhY2stc2V0dGluZ3MgLnZqcy1tb2RhbC1kaWFsb2ctY29udGVudCB7XG4gIGRpc3BsYXk6IHRhYmxlOyB9XG5cbi52anMtdGV4dC10cmFjay1zZXR0aW5ncyAudmpzLXRyYWNrLXNldHRpbmdzLWNvbG9ycyxcbi52anMtdGV4dC10cmFjay1zZXR0aW5ncyAudmpzLXRyYWNrLXNldHRpbmdzLWZvbnQsXG4udmpzLXRleHQtdHJhY2stc2V0dGluZ3MgLnZqcy10cmFjay1zZXR0aW5ncy1jb250cm9scyB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7IH1cblxuLnZqcy10ZXh0LXRyYWNrLXNldHRpbmdzIC52anMtdHJhY2stc2V0dGluZ3MtY29udHJvbHMge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsgfVxuXG5Ac3VwcG9ydHMgKGRpc3BsYXk6IGdyaWQpIHtcbiAgLnZqcy10ZXh0LXRyYWNrLXNldHRpbmdzIC52anMtbW9kYWwtZGlhbG9nLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyIGF1dG87IH1cbiAgLnZqcy10ZXh0LXRyYWNrLXNldHRpbmdzIC52anMtdHJhY2stc2V0dGluZ3MtY29sb3JzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBncmlkLWNvbHVtbjogMTtcbiAgICBncmlkLXJvdzogMTsgfVxuICAudmpzLXRleHQtdHJhY2stc2V0dGluZ3MgLnZqcy10cmFjay1zZXR0aW5ncy1mb250IHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgICBncmlkLXJvdzogMTsgfVxuICAudmpzLXRleHQtdHJhY2stc2V0dGluZ3MgLnZqcy10cmFjay1zZXR0aW5ncy1jb250cm9scyB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgZ3JpZC1yb3c6IDI7IH0gfVxuXG4udmpzLXRyYWNrLXNldHRpbmcgPiBzZWxlY3Qge1xuICBtYXJnaW4tcmlnaHQ6IDVweDsgfVxuXG4udmpzLXRleHQtdHJhY2stc2V0dGluZ3MgZmllbGRzZXQge1xuICBtYXJnaW46IDVweDtcbiAgcGFkZGluZzogM3B4O1xuICBib3JkZXI6IG5vbmU7IH1cblxuLnZqcy10ZXh0LXRyYWNrLXNldHRpbmdzIGZpZWxkc2V0IHNwYW4ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cblxuLnZqcy10ZXh0LXRyYWNrLXNldHRpbmdzIGxlZ2VuZCB7XG4gIGNvbG9yOiAjZmZmO1xuICBtYXJnaW46IDAgMCA1cHggMDsgfVxuXG4udmpzLXRleHQtdHJhY2stc2V0dGluZ3MgLnZqcy1sYWJlbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY2xpcDogcmVjdCgxcHggMXB4IDFweCAxcHgpO1xuICBjbGlwOiByZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDAgMCA1cHggMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwO1xuICBoZWlnaHQ6IDFweDtcbiAgd2lkdGg6IDFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG4udmpzLXRyYWNrLXNldHRpbmdzLWNvbnRyb2xzIGJ1dHRvbjpmb2N1cyxcbi52anMtdHJhY2stc2V0dGluZ3MtY29udHJvbHMgYnV0dG9uOmFjdGl2ZSB7XG4gIG91dGxpbmUtc3R5bGU6IHNvbGlkO1xuICBvdXRsaW5lLXdpZHRoOiBtZWRpdW07XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgwZGVnLCAjZmZmIDg4JSwgIzczODU5ZiAxMDAlKTsgfVxuXG4udmpzLXRyYWNrLXNldHRpbmdzLWNvbnRyb2xzIGJ1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiByZ2JhKDQzLCA1MSwgNjMsIDAuNzUpOyB9XG5cbi52anMtdHJhY2stc2V0dGluZ3MtY29udHJvbHMgYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0xODBkZWcsICNmZmYgODglLCAjNzM4NTlmIDEwMCUpO1xuICBjb2xvcjogIzJCMzMzRjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItcmFkaXVzOiAycHg7IH1cblxuLnZqcy10cmFjay1zZXR0aW5ncy1jb250cm9scyAudmpzLWRlZmF1bHQtYnV0dG9uIHtcbiAgbWFyZ2luLXJpZ2h0OiAxZW07IH1cblxuQG1lZGlhIHByaW50IHtcbiAgLnZpZGVvLWpzID4gKjpub3QoLnZqcy10ZWNoKTpub3QoLnZqcy1wb3N0ZXIpIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH0gfVxuXG4udmpzLXJlc2l6ZS1tYW5hZ2VyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlcjogbm9uZTtcbiAgei1pbmRleDogLTEwMDA7IH1cblxuLmpzLWZvY3VzLXZpc2libGUgLnZpZGVvLWpzICo6Zm9jdXM6bm90KC5mb2N1cy12aXNpYmxlKSB7XG4gIG91dGxpbmU6IG5vbmU7IH1cblxuLnZpZGVvLWpzICo6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gIG91dGxpbmU6IG5vbmU7IH1cblxuQG1lZGlhIFxcMHNjcmVlbiB7XG4gIC52anMtdXNlci1pbmFjdGl2ZS52anMtcGxheWluZyAudmpzLWNvbnRyb2wtYmFyIDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cbn1cblxuQG1lZGlhIFxcMHNjcmVlbiB7XG4gIC52anMtaGFzLXN0YXJ0ZWQudmpzLXVzZXItaW5hY3RpdmUudmpzLXBsYXlpbmcgLnZqcy1jb250cm9sLWJhciB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/