{"css":"*#dm *.dmBody div.u_dm_content\n{\n\tbackground-image:none !important;\n}\n*#dm *.dmBody a.span.textonly\n{\n\tcolor:rgb(255,15,168) !important;\n}\n*#dm *.dmBody div.dmPopupInner\n{\n\tbackground-color:rgb(99,99,99) !important;\n\tborder-style:solid !important;\n\tborder-width:1px !important;\n\t-webkit-box-shadow:0 0 10px rgba(0,0,0,0.30) !important;\n\tbox-shadow:0 0 10px rgba(0,0,0,0.30) !important;\n\t-moz-box-shadow:0 0 10px rgba(0,0,0,0.30) !important;\n\tborder-radius:5px !important;\n\t-moz-border-radius:5px !important;\n\t-webkit-border-radius:5px !important;\n\tbackground-image:url(https://le-cdn.hibuwebsites.com/md/dmtmpl/0334cd4c-7295-46d4-a49f-fe91ef8056f1/dms3rep/multi/opt/celebrate_b-48x48-2880w.png) !important;\n\tbackground-repeat:repeat !important;\n\tbackground-size:auto !important;\n\tbackground-position:center right !important;\n\tborder-color:rgb(255,37,156) !important;\n}\n*#dm *.dmBody nav.u_1144820115\n{\n\tcolor:black !important;\n}\n*#dm *.dmBody div.u_1516138344\n{\n\tbackground-color:rgba(255,255,255,0.73) !important;\n}\n*#dm *.dmBody *.allWrapper .dmPopupInner\n{\n\tbackground-image:none !important;\n\tborder-style:solid !important;\n\tborder-width:0 !important;\n\tborder-radius:0 !important;\n\t-moz-border-radius:0 !important;\n\t-webkit-border-radius:0 !important;\n\tbackground-color:rgba(0,0,0,0) !important;\n\tbox-shadow:none !important;\n\t-moz-box-shadow:none !important;\n\t-webkit-box-shadow:none !important;\n}\n*#dm *.dmBody nav.u_1832600643\n{\n\tcolor:black !important;\n}\n*#dm *.dmBody div.u_1385122387\n{\n\tbackground-repeat:no-repeat !important;\n\tbackground-image:url('https://le-cdn.hibuwebsites.com/2fe56bc0c71b4aa8837534c9904dc73b/dms3rep/multi/opt/2020-10-29+18.11.18-2880w.jpeg') !important;\n\tbackground-size:cover !important;\n}\n","additionalWidgetCss":"/**/.dmNewParagraph[data-version] .text-align-left{text-align:left!important}.dmNewParagraph[data-version] .text-align-center{text-align:center!important}.dmNewParagraph[data-version] .text-align-right{text-align:right!important}\n.dmNewParagraph[data-version] .text-align-justify{text-align:justify!important}.dmNewParagraph[data-version] .ql-indent-1{padding:0 1em;padding-inline-end:0;padding-inline-start:3em}.dmNewParagraph[data-version] .ql-indent-2{padding:0 2em;padding-inline-end:0;padding-inline-start:6em}\n.dmNewParagraph[data-version] .ql-indent-3{padding:0 3em;padding-inline-end:0;padding-inline-start:9em}.dmNewParagraph[data-version] .ql-indent-4{padding:0 4em;padding-inline-end:0;padding-inline-start:12em}\n.dmNewParagraph[data-version] .ql-indent-5{padding:0 5em;padding-inline-end:0;padding-inline-start:15em}.dmNewParagraph[data-version] .ql-indent-6{padding:0 6em;padding-inline-end:0;padding-inline-start:18em}\n.dmNewParagraph[data-version] .ql-indent-7{padding:0 7em;padding-inline-end:0;padding-inline-start:21em}.dmNewParagraph[data-version] .ql-indent-8{padding:0 8em;padding-inline-end:0;padding-inline-start:24em}\n.dmNewParagraph[data-version] .ql-indent-9{padding:0 9em;padding-inline-end:0;padding-inline-start:27em}.dmNewParagraph[data-version]{line-height:initial}.dmNewParagraph[data-version] [class*=size-]{width:auto!important;height:auto!important}\n.dmNewParagraph[data-version] h1,.dmNewParagraph[data-version] h2,.dmNewParagraph[data-version] h3,.dmNewParagraph[data-version] h4,.dmNewParagraph[data-version] h5,.dmNewParagraph[data-version] h6,.dmNewParagraph[data-version] ol,.dmNewParagraph[data-version] p,.dmNewParagraph[data-version] ul{margin-top:0;margin-bottom:0}\n.dmNewParagraph[data-version] ol,.dmNewParagraph[data-version] ul{padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.dmNewParagraph[data-version] ol>li,.dmNewParagraph[data-version] ul>li{list-style-type:none;text-indent:-1.5em;margin:0 1em;margin-inline-end:0;margin-inline-start:2em}\n.dmNewParagraph[data-version] ol>li:before,.dmNewParagraph[data-version] ul>li:before{min-width:1em;display:inline-block;margin-right:.5em;margin-inline-start:0;margin-inline-end:.5em;text-align:right;text-align:end}\n.dmNewParagraph[data-version] ul .ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-1}.dmNewParagraph[data-version] ul .ql-indent-1:before{font-weight:700;content:\"○\"}\n.dmNewParagraph[data-version] ul .ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-2}.dmNewParagraph[data-version] ul .ql-indent-2:before,.dmNewParagraph[data-version] ul .ql-indent-3:before,.dmNewParagraph[data-version] ul .ql-indent-4:before,.dmNewParagraph[data-version] ul .ql-indent-5:before,.dmNewParagraph[data-version] ul .ql-indent-6:before,.dmNewParagraph[data-version] ul .ql-indent-7:before,.dmNewParagraph[data-version] ul .ql-indent-8:before,.dmNewParagraph[data-version] ul .ql-indent-9:before{font-weight:700;content:\"■\"}\n.dmNewParagraph[data-version] ul .ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-3}.dmNewParagraph[data-version] ul .ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9;counter-increment:list-4}\n.dmNewParagraph[data-version] ul .ql-indent-5{counter-reset:list-6 list-7 list-8 list-9;counter-increment:list-5}.dmNewParagraph[data-version] ul .ql-indent-6{counter-reset:list-7 list-8 list-9;counter-increment:list-6}\n.dmNewParagraph[data-version] ul .ql-indent-7{counter-reset:list-8 list-9;counter-increment:list-7}.dmNewParagraph[data-version] ul .ql-indent-8{counter-reset:list-9;counter-increment:list-8}.dmNewParagraph[data-version] ul .ql-indent-9{counter-reset:list-10 list-9;counter-increment:list-9}\n.dmNewParagraph[data-version] ul>li:before{font-weight:700;content:\"•\";font-family:Arial}.dmNewParagraph[data-version] ul.custom-list-1>li:not([class^=ql-indent-]):not([class*=\" ql-indent-\"]):before{content:\"○\";transform:scale(1);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-2>li:not([class^=ql-indent-]):not([class*=\" ql-indent-\"]):before{content:\"★\";transform:scale(.7);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-3>li:not([class^=ql-indent-]):not([class*=\" ql-indent-\"]):before{content:\"➞\";transform:scale(.8);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-4>li:not([class^=ql-indent-]):not([class*=\" ql-indent-\"]):before{content:\"+\";transform:scale(.7);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-5>li:not([class^=ql-indent-]):not([class*=\" ql-indent-\"]):before{content:\"-\";transform:scale(.7);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-6>li:not([class^=ql-indent-]):not([class*=\" ql-indent-\"]):before{content:\"✓\";transform:scale(.8);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-7>li:not([class^=ql-indent-]):not([class*=\" ql-indent-\"]):before{content:\"✗\";transform:scale(.8);transform-origin:center right}\n.dmNewParagraph[data-version] ol .ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-1}.dmNewParagraph[data-version] ol .ql-indent-1:before{content:counter(list-1,lower-alpha) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-2}.dmNewParagraph[data-version] ol .ql-indent-2:before{content:counter(list-2,lower-roman) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-3}.dmNewParagraph[data-version] ol .ql-indent-3:before{content:counter(list-3,decimal) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9;counter-increment:list-4}.dmNewParagraph[data-version] ol .ql-indent-4:before{content:counter(list-4,lower-alpha) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-5{counter-reset:list-6 list-7 list-8 list-9;counter-increment:list-5}.dmNewParagraph[data-version] ol .ql-indent-5:before{content:counter(list-5,lower-roman) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-6{counter-reset:list-7 list-8 list-9;counter-increment:list-6}.dmNewParagraph[data-version] ol .ql-indent-6:before{content:counter(list-6,decimal) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-7{counter-reset:list-8 list-9;counter-increment:list-7}.dmNewParagraph[data-version] ol .ql-indent-7:before{content:counter(list-7,lower-alpha) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-8{counter-reset:list-9;counter-increment:list-8}.dmNewParagraph[data-version] ol .ql-indent-8:before{content:counter(list-8,lower-roman) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-9{counter-reset:list-10 list-9;counter-increment:list-9}.dmNewParagraph[data-version] ol .ql-indent-9:before{content:counter(list-9,decimal) \". \"}\n.dmNewParagraph[data-version] ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.dmNewParagraph[data-version] ol li:before{content:counter(list-0,decimal) \". \"}\n.dmNewParagraph[data-version] a{vertical-align:initial}@media(min-width:768px) and (max-width:1024px){.dmNewParagraph[data-version] .t-text-align-left{text-align:left!important}.dmNewParagraph[data-version] .t-text-align-center{text-align:center!important}\n.dmNewParagraph[data-version] .t-text-align-right{text-align:right!important}.dmNewParagraph[data-version] .t-text-align-justify{text-align:justify!important}}@media(max-width:767px){.dmRoot .dmNewParagraph[data-version] .m-text-align-left{text-align:left!important}\n.dmRoot .dmNewParagraph[data-version] .m-text-align-center{text-align:center!important}.dmRoot .dmNewParagraph[data-version] .m-text-align-right{text-align:right!important}.dmRoot .dmNewParagraph[data-version] .m-text-align-justify{text-align:justify!important}\n}.inlineBindingLink{color:inherit!important;text-decoration:inherit!important}/**/.dmLargeBody #dm .dmRespRow .dmRespCol.large-11 .dmform[data-layout=layout-2] .dmform-wrapper .dmformsubmit.dmWidget,.dmLargeBody #dm .dmRespRow .dmRespCol.large-12 .dmform[data-layout=layout-2] .dmform-wrapper .dmformsubmit.dmWidget{width:fit-content}\n#dm .dmformsubmit input[type=submit]{text-align:inherit}#dm .dm-layout-sec div.dmInner .dmform[data-layout=layout-2] .dmforminput label:not(.for-checkable),#dm div.dmInner .dmform[data-layout=layout-2] .dmforminput label:not(.for-checkable){width:75px;vertical-align:top;white-space:normal}\n#dm .dmBody div.dmform[data-layout=layout-2] .dmforminput:not(.g-recaptcha):not(.frc-captcha){justify-content:flex-start!important}#dm .dm-layout-sec div.dmInner .dmform[data-layout=layout-1] .dmforminput,#dm div.dmInner .dmform[data-layout=layout-1] .dmforminput{display:block}\n#dm .dm-layout-sec div.dmInner .dmform[data-layout=layout-1] .dmforminput>:not(label):not(div):not(small):not(.frc-banner),#dm div.dmInner .dmform[data-layout=layout-1] .dmforminput>:not(label):not(div):not(small):not(.frc-banner){background:0;border:2px solid #000;display:inline-block}\n#dm .dm-layout-sec div.dmInner .dmform[data-layout=layout-2] .dmforminput,#dm div.dmInner .dmform[data-layout=layout-2] .dmforminput{-js-display:flex;display:flex}#dm .dm-layout-sec div.dmInner .dmform[data-layout=layout-2] .dmforminput input:not([type=checkbox]):not([type=radio]),#dm .dm-layout-sec div.dmInner .dmform[data-layout=layout-2] .dmforminput textarea,#dm div.dmInner .dmform[data-layout=layout-2] .dmforminput>input,#dm div.dmInner .dmform[data-layout=layout-2] .dmforminput>textarea{width:calc(100% - 80px)}\n#dm div.dmInner .dmform[data-layout=layout-2] .dmforminput>.resizeHandler{height:100%;bottom:0}#dm .dm-layout-sec div.dmInner .dmform[data-layout=layout-3] .dmforminput,#dm div.dmInner .dmform[data-layout=layout-3] .dmforminput{margin-top:20px}\n#dm .dm-layout-sec div.dmInner .dmform[data-layout=layout-3] .dmforminput>:not(label):not(div):not(small):not(.frc-banner),#dm div.dmInner .dmform[data-layout=layout-3] .dmforminput>:not(label):not(div):not(small):not(.frc-banner){background:0;border:0;border-radius:0;-webkit-appearance:none;border-bottom:1px solid;height:30px}\n#dm div.dmInner .frc-captcha.dmforminput.dmRespDesignCol{border:0}#dm div.dmInner .frc-captcha.dmforminput.dmRespDesignCol .frc-banner{border:0;position:inherit}#dm div.dmInner .dmform .dmforminput .radiowrapper span{line-height:normal}\n#dm div.dmInner .dmform .dmforminput .checkboxwrapper span,#dm div.dmInner .dmform .dmforminput .optinwrapper div{vertical-align:text-bottom;line-height:normal;display:inline}#dm div.dmInner .dmform .dmforminput .optinwrapper div p.rteBlock{display:inline}\n#dm div.dmInner .dmform .dmforminput .horizontal.checkboxwrapper span,#dm div.dmInner .dmform .dmforminput .horizontal.optinwrapper div div,#dm div.dmInner .dmform .dmforminput .horizontal.radiowrapper span{margin:0 15px 0 3px}\n#dm div.dmInner .dmform .dmforminput .horizontal{-js-display:flex;display:flex;flex-wrap:wrap}#dm div.dmInner .dmform[data-layout=layout-2] .dmforminput .horizontal{-js-display:inline-flex;display:inline-flex}\n#dm div.dmInner .dmform .dmforminput .horizontal div{-js-display:flex;display:flex}#dm div.dmInner .dmform .dmforminput .horizontal input{flex-shrink:0;margin-top:.2em}#dm div.dmInner .dmform .dmforminput label[hide=true],#dm div.dmInner .native-inputs .hide-contact-input .contact-checkable-container input[type=checkbox].checkable-input,#dm div.dmInner .native-inputs .hide-contact-input .contact-checkable-container input[type=checkbox].checkable-input+span,#dm div.dmInner .native-inputs .hide-contact-input .contact-checkable-container input[type=radio].checkable-input,#dm div.dmInner .native-inputs .hide-contact-input .contact-checkable-container input[type=radio].checkable-input+span,.dmform .dmforminput[data-skip-in-editor=true]{display:none}\n.dmform .dmform-field-error{display:none;color:#b00020;background-color:#fef5f5;font-size:12px;padding:6px 12px;margin-top:4px;border-radius:4px}.dmform .dmform-field-error::before{content:\"\";display:inline-block;width:16px;height:16px;margin-right:4px;vertical-align:text-top;background:url('data:image/svg+xml,') no-repeat center/contain;background-repeat:no-repeat;background-position:center;background-size:contain}\n.dmform .inputError{outline:1px solid red!important}.dmform.required-asterisk .required>label::after{content:\"*\";display:inline-block;margin-inline-start:5px;color:#f11111}\n.dmform .dmforminput label{display:block;overflow:hidden;text-overflow:ellipsis}.dmforminput.newLine{clear:both}.dmform .dmWidgetClear{clear:both;display:block}#dm .dmform.form-rtl-direction .dmform-title{text-align:right}\n#dm .dmform.form-rtl-direction .checkboxwrapper,#dm .dmform.form-rtl-direction .dmforminput input,#dm .dmform.form-rtl-direction .optinwrapper,#dm .dmform.form-rtl-direction .radiowrapper,#dm .dmform.form-rtl-direction label,#dm .dmform.form-rtl-direction textarea{direction:rtl;text-align:right}\n#dm .dmform.form-rtl-direction .checkboxwrapper,#dm .dmform.form-rtl-direction .fileUploadLink,#dm .dmform.form-rtl-direction .optinwrapper,#dm .dmform.form-rtl-direction .radiowrapper{float:right;clear:both}\n#dm .dmform.form-rtl-direction .dmRespDesignRow .dmRespDesignCol{float:right;text-align:right}#dm .dmform.form-rtl-direction .dmWidget.R{float:left}.u_dm .dmform a.fileUploadLink{text-decoration:underline;cursor:pointer}\n.dmform .fileUploadLink{cursor:pointer}.dmform[data-layout=layout-2] .checkboxwrapper,.dmform[data-layout=layout-2] .optinwrapper,.dmform[data-layout=layout-2] .radiowrapper{justify-content:flex-start!important;text-align:left!important;text-overflow:unset}\n.dmform[data-layout=layout-2] .dmforminput label{margin-right:5px}#dmRoot.dmLargeBody #dm .dmWidget.dmformsubmit{max-width:100%;padding:0}.dmLargeBody #dm .large-3 .dmformsubmit.dmWidget,.dmLargeBody #dm .large-4 .dmformsubmit.dmWidget{width:150px}\n.dmLargeBody #dm .large-10 .dmformsubmit.dmWidget,.dmLargeBody #dm .large-5 .dmformsubmit.dmWidget,.dmLargeBody #dm .large-6 .dmformsubmit.dmWidget,.dmLargeBody #dm .large-7 .dmformsubmit.dmWidget,.dmLargeBody #dm .large-8 .dmformsubmit.dmWidget,.dmLargeBody #dm .large-9 .dmformsubmit.dmWidget{width:200px}\n.dmLargeBody #dm .large-11 .dmformsubmit.dmformsubmit,.dmLargeBody #dm .large-12 .dmformsubmit.dmformsubmit{width:280px}.dmMobileBody #dm .dmRespRow .dmRespCol.small-12 .dmform-wrapper .dmformsubmit{width:91%;max-width:91%;padding:0 10px;float:left}\n.inFormLayoutMode .dmform.inlineEditorFormSelected .dmforminput{transition:all .1s linear}.dmMobileBody .dmform .dmforminput label{white-space:normal}.dmform .newLineButton,.dmform .resizeHandler,.dmform.inlineEditorFormSelected .large-1 .resizeHandler span.dm-icon-chevron-left,.dmform.inlineEditorFormSelected .large-12 .resizeHandler span.dm-icon-chevron-right{visibility:hidden}\n.dmform.inlineEditorFormSelected .resizeHandler{visibility:visible;height:calc(100% - 30px);position:absolute;bottom:5px;right:10px;cursor:col-resize;z-index:999}.dmform.inlineEditorFormSelected .newLineButton{visibility:visible;position:absolute;left:24px;bottom:calc(50% - 22px);padding:4px;cursor:pointer}\n.dmform.inlineEditorFormSelected .newLineButton:before{display:inline-block}.dmform.inlineEditorFormSelected .newLine .newLineButton:before{-webkit-transform:rotateZ(180deg)}.dmform.inlineEditorFormSelected .resizeHandler span{font-size:9px;position:relative;top:50%;margin-top:-4px;color:#666}\n.dmform.inlineEditorFormSelected .resizeHandler span.dm-icon-chevron-right{margin-left:4px}.dmform.inlineEditorFormSelected .resizeHandler .handle{background-color:#666;height:100%;background:url(/editor/nee/images/common/2ColumnsArrows.png) no-repeat center 50%,url(/editor/nee/images/common/bluePic.png) repeat-y center;border-right:0;right:-5px;width:12px}\n.dmform .m-recaptcha{margin-top:0;margin-bottom:10px}.dmform .grecaptcha-badge[data-style=bottomleft],.dmform .grecaptcha-badge[data-style=bottomright]{z-index:999;opacity:0}.dmform.active .grecaptcha-badge[data-style=bottomleft],.dmform.active .grecaptcha-badge[data-style=bottomright]{opacity:1}\n[data-captcha-position=bottomleft] .g-recaptcha,[data-captcha-position=bottomright] .g-recaptcha{padding:0;margin:0}div.dmInner input[type=date],div.dmInner input[type=time]{font-size:16px;background-color:rgba(102,102,102,.15);border:2px solid #fff;width:100%;margin:3px 0;height:40px;padding:0 10px}\n#dm div.dmInner .native-inputs .contact-checkable-container label.for-checkable{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;overflow:visible}#dm div.dmInner .native-inputs .contact-checkable-container .contact-checkable-img{margin-left:0;margin-bottom:0}\n#dm div.dmInner .native-inputs .contact-checkable-container input[type=checkbox].checkable-input,#dm div.dmInner .native-inputs .contact-checkable-container input[type=radio].checkable-input{display:initial;width:1em;height:1em;margin:8px .3em 8px 0;order:1}\n#dm div.dmInner .native-inputs .contact-checkable-container input[type=checkbox].checkable-input:checked~span.img-wrapper>img,#dm div.dmInner .native-inputs .contact-checkable-container input[type=radio].checkable-input:checked~span.img-wrapper>img{border:3px solid transparent}\n#dm div.dmInner .native-inputs .contact-checkable-container div,#dm div.dmInner .native-inputs .contact-checkable-container span:not(.img-wrapper){order:2}#dm div.dmInner .native-inputs .contact-checkable-container span.img-wrapper{order:0;width:100%}\n#dm .dmform:has(.spacing-container) .dmform-wrapper{overflow:clip}#dm .dmform:has(.spacing-container) .dmform-title.dmwidget-title{padding-inline:0;margin-block-start:0}#dm .dmform:has(.spacing-container) .spacing-container{margin:-7.5px;border:1px solid transparent;overflow:hidden}\n#dm .dmform:has(.spacing-container) .spacing-container .dmforminput{margin-top:0;padding:7.5px}#dm .dmform:has(.spacing-container) .spacing-container textarea{display:block}#dm .dmform:has(.spacing-container) .spacing-container .m-recaptcha{margin-bottom:0}\n#dm .dmform:has(.spacing-container) .spacing-container .g-recaptcha:has(.grecaptcha-badge:not([data-style=inline])){position:absolute}#dm .dmform:has(.spacing-container) form.dmRespDesignRow{padding:0}\n#dm .dmform:has(.spacing-container) form.dmRespDesignRow .dmformsubmit{margin:0;margin-block-start:20px}#dm .dmform:is(.horizontal-alignment) form.dmRespDesignRow{display:flex;flex-direction:row;align-items:flex-end}\n#dm .dmform:is(.horizontal-alignment) form.dmRespDesignRow .dmformsubmit{margin-block-end:5px}#dm .dmform:is(.horizontal-alignment).form-rtl-direction form{flex-direction:row-reverse}/**/.imageWidget{position:relative}.imageWidget a,.imageWidget span.image-caption{font-style:italic;text-align:center}.imageWidget a[data-caption]::after,.imageWidget span[data-caption]::after{content:attr(data-caption);display:block;line-height:100%}\n.imageWidget.with-caption a::after,.imageWidget.with-caption span.image-caption::after{margin-top:12px}.imageWidget img[width][height]{height:auto}[data-flex-site] #fcontainer .imageWidget:after,[data-flex-site] #flex-footer .imageWidget:after,[data-flex-site] #flex-header .imageWidget:after{content:none}\n[data-flex-site] #fcontainer .imageWidget:before,[data-flex-site] #flex-footer .imageWidget:before,[data-flex-site] #flex-header .imageWidget:before{font-size:80px;transform:none}.imageWidget.hover img.hover-image,.imageWidget:hover img.hover-image{display:initial}\n.imageWidget.hover.hasHover img:not(.hover-image),.imageWidget:hover.hasHover img:not(.hover-image){display:none!important}.imageWidget img.hover-image,.imageWidget img.logo-on-scroll{display:none}/**/@media(max-width:767px){body.dmRoot div[dmtemplateid]:not([dmtemplateid=SlideRightTopFloatM]) .dmHeader .multilingualWidget{position:absolute;top:14px;left:13px;margin-top:0}body.dmRoot div[dmtemplateid][dmtemplateid=SlideRightTopFloatM] .dmHeader .multilingualWidget{position:absolute;top:5px;right:17px}\n}@media(min-width:768px) and (max-width:1024px){body:not(.responsiveTablet) #dm div[dmtemplateid=StandardLayoutMultiT] .dmHeader .multilingualWidget{position:absolute!important;top:5px!important;right:17px!important;left:initial!important}\n}@media(max-width:767px){body.dmRoot .dmHeader .displayHidden-inner .multilingualWidget{top:0!important}}#dm_content div.dmRespCol div.multilingualWidget,#hcontainer div.dmRespCol div.multilingualWidget{width:auto!important;display:table!important}\n.multilingualWidget.displayNone{display:none!important}.multilingualWidget>div{position:relative}.multilingualWidget{clear:both;margin:0;vertical-align:top;display:table!important;font-size:0;font-family:sans-serif}\n.multilingualWidget .language{color:#888;display:inline-block}.multilingualWidget .language a{text-align:center;display:inline-block;color:inherit;border:#dadada 1px solid;background-color:#fff}.multilingualWidget .language a img{width:24px;height:26px;min-width:24px;min-height:26px}\n.multilingualWidget .language a span{display:none;line-height:initial}.multilingualWidget .language a span.name{margin-top:5px;margin-left:7px;font-size:12px;font-weight:400;text-transform:capitalize}\n.multilingualWidget .language a span.short-label{font-size:12px}.multilingualWidget .language a:after{line-height:initial}.multilingualWidget.open .current-language a:after{transform:rotate(-180deg)}.multilingualWidget .current-language a:after{transition:transform .2s}\n.multilingualWidget.dropdown .language{width:100%}.multilingualWidget.dropdown .language a{display:block;padding:1px 5px}.multilingualWidget.dropdown .language.other-languages{position:absolute;z-index:800;max-height:0;overflow:hidden;transition:max-height .1s ease-in-out}\n.multilingualWidget.dropdown .language.other-languages a{border-top:0!important}.multilingualWidget.dropdown .current-language{position:relative}.multilingualWidget.dropdown .current-language span.name{padding-right:25px}\n.multilingualWidget.dropdown .dm-icon{font-size:9px;display:inline-block;position:absolute;top:46%;transform:translateY(-50%);transition:transform .2s;right:8px}.multilingualWidget.dropdown.open .dm-icon{transform:rotate(-180deg) translateY(50%)}\n.multilingualWidget.dropdown.open .other-languages{display:block;max-height:300px}.multilingualWidget.dropdown .other-languages,.multilingualWidget.dropdown.flag-only .dm-icon,.multilingualWidget.inline span,.multilingualWidget.no-flag a img{display:none}\n.multilingualWidget.dropdown.flag-only a{border:transparent 1px solid;background-color:transparent}.multilingualWidget.dropdown.flag-only.open .language a{background-color:rgba(0,0,0,.3);border:#dadada 1px solid}\n.multilingualWidget.dropdown.long-label a{text-align:left;padding:2px 0 2px 5px;position:relative;box-sizing:border-box}.multilingualWidget.dropdown.long-label a span.name,.multilingualWidget.inline.flag-only .language,.multilingualWidget.inline.short-label.no-flag span.short-label{display:inline-block}\n.multilingualWidget.dropdown.long-label.no-flag a{padding:7px 10px 9px}.multilingualWidget.dropdown.long-label.no-flag a span.name,.multilingualWidget.dropdown.short-label.no-flag a span.short-label{margin:0;display:inline-block}\n.multilingualWidget.dropdown.short-label.no-flag a{padding:8px 22px 9px 10px;font-size:12px;min-height:32px;height:auto;box-sizing:border-box}.multilingualWidget.dropdown.short-label.no-flag .current-language a:after{top:12px}\n.multilingualWidget.short-label span.short-label{text-transform:uppercase}.multilingualWidget.inline.flag-only a{padding:2px 5px;height:32px;box-sizing:border-box}.multilingualWidget.inline.flag-only .current-language a{box-shadow:inset 0 0 8px 0 rgba(0,0,0,.6);border-right:0;border-right-width:0!important;border-right-color:transparent!important;border-right-style:none!important}\n.multilingualWidget.inline.flag-only .other-languages a:not(:last-child){border-right-width:0!important;border-right-color:transparent!important;border-right-style:none!important}.multilingualWidget.inline.flag-only .dm-icon,.multilingualWidget.inline.short-label.no-flag .dm-icon{display:none}\n.multilingualWidget.inline.short-label.no-flag .current-language a{padding-right:0;border-right-width:0!important;border-right-color:transparent!important;border-right-style:none!important}.multilingualWidget.inline.short-label.no-flag .current-language a span.short-label{font-weight:700}\n.multilingualWidget.inline.short-label.no-flag .other-languages a{border-left-color:transparent!important;border-left-width:0!important;border-left-style:none!important}.multilingualWidget.inline.short-label.no-flag .other-languages a:not(:last-child){padding-right:0;border-right-color:transparent!important;border-right-width:0!important;border-right-style:none!important}\n.multilingualWidget.inline.short-label.no-flag a{position:relative;padding:8px 10px;font-size:12px;min-height:32px;height:auto;text-decoration:none}.multilingualWidget.inline.short-label.no-flag a:after{content:\"/\";position:absolute;top:8px;right:-7px;z-index:1;pointer-events:none}\n.multilingualWidget.inline.short-label.no-flag a:hover .short-label{text-decoration:underline}.multilingualWidget.inline.short-label.no-flag .other-languages a:last-child:after{content:\"\"}","isHomePage":false,"customwidgetsdata":[{"widgetId":"d1ee5d5bf037471ea1770683731e577a","version":23,"js":"JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICQuZ2V0U2NyaXB0KCdodHRwczovL3dpZGdldC5oaWJ1LnVzL3N0YXRpYy9qcy9pbmRleC5qcycpCiAgICAuZG9uZShmdW5jdGlvbigpewogICAgICAgIGRtQVBJLnJ1bk9uUmVhZHkoJ2hpYnVfaGVhZGVyX3Jldmlld3MnLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIHdpbmRvdy5yZW5kZXJBcHAoKTsKICAgICAgICB9KTsKICAgICAgICAKICAgIH0pCiAgICAuZmFpbChmdW5jdGlvbigpewogICAgICAgIGNvbnNvbGUubG9nKCJmYWlsZWQgdG8gbG9hZGVkIGhlYWRlciByZXZpZXdzIGpzIGZpbGUiKQogICAgfSk7Cn0pCgo=","css":".headerWidget {\n min-height:22px;\n}\n\n.headerWidget .reviews-header .link {\n margin-top:4px;\n}\n","strings":{}},{"widgetId":"d1ee5d5bf037471ea1770683731e577a","version":22,"js":"JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICQuZ2V0U2NyaXB0KCdodHRwczovL3dpZGdldC5oaWJ1LnVzL3N0YXRpYy9qcy9pbmRleC5qcycpCiAgICAuZG9uZShmdW5jdGlvbigpewogICAgICAgIGRtQVBJLnJ1bk9uUmVhZHkoJ2hpYnVfaGVhZGVyX3Jldmlld3MnLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIHdpbmRvdy5yZW5kZXJBcHAoKTsKICAgICAgICB9KTsKICAgICAgICAKICAgIH0pCiAgICAuZmFpbChmdW5jdGlvbigpewogICAgICAgIGNvbnNvbGUubG9nKCJmYWlsZWQgdG8gbG9hZGVkIGhlYWRlciByZXZpZXdzIGpzIGZpbGUiKQogICAgfSk7Cn0pCgo=","css":".headerWidget {\n min-height:22px;\n}\n","strings":{}},{"widgetId":"7b6cfbac88324cffbaaf57354cd7a334","version":227,"js":"dmFyIGVtcHR5TGlzdFBsYWNlSG9sZGVyPSI8c3BhbiBzdHlsZT0nbWluLWhlaWdodDoyMHB4JyBjbGFzcz0nZWRpdG9yT25seUluZm8gaW5FZGl0b3InIGRhdGEtbm9zbmlwcGV0PlRoaXMgbGlzdCBoYXMgbm8gZGF0YSBpbiBZZXh0LiBUaGlzIG1lc3NhZ2Ugb25seSBhcHBlYXJzIGluIHRoZSBlZGl0b3IuPC9zcGFuPiIKCi8qIGZpbmQgeWV4dCBzcmMgKi8KdmFyIGZpbmRZZXh0U3JjID0gZnVuY3Rpb24oKXsKICAgIHZhciAga2V5RXhwID0gbmV3IFJlZ0V4cCgvc3JjPSIoLio/KSIvKTsKICAgIGlmIChkYXRhLmNvbmZpZy5zY3JpcHQuaW5jbHVkZXMoJ2xvY2F0aW9uX2lkJykpIHsKICAgICAgICBkYXRhLmNvbmZpZy5zY3JpcHQgPSBkYXRhLmNvbmZpZy5zY3JpcHQucmVwbGFjZSgnbG9jYXRpb25faWQnLCAnZW50aXR5X2lkJyk7CiAgICB9CiAgICB2YXIgcmVzdWx0ID0ga2V5RXhwLmV4ZWMoZGF0YS5jb25maWcuc2NyaXB0KTsKICAgIGlmKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoID09IDIpewogICAgICAgIHdpbmRvdy55ZXh0U2NyaXB0U3JjPXJlc3VsdFsxXTsKICAgICAgICByZXR1cm4gcmVzdWx0WzFdOwogICAgfWVsc2V7CiAgICAgICAgcmV0dXJuIHdpbmRvdy55ZXh0U2NyaXB0U3JjOwogICAgfQp9Cgp3aW5kb3cueWV4dExvYWRlZENhbGxiYWNrID0gZnVuY3Rpb24oeWV4dERhdGEpIHsKICAgICQoJy53cm9uZ1NjcmlwdEVycm9yJykucmVtb3ZlQ2xhc3MoJ2hhc0Vycm9yJyk7CiAgICB3aW5kb3cueWV4dEluaXRpYWxpemVkID0gdHJ1ZTsKICAgIAogICAgaWYoeWV4dERhdGEpIHsKICAgICAgICB3aW5kb3cuX3lleHREYXRhID0geWV4dERhdGE7ICAgIAogICAgfSBlbHNlIHsKICAgICAgICB0aHJvdyAiWWV4dCBsb2FkZWQgYnV0IG5vIGRhdGEgd2FzIHBhc3NlZCI7CiAgICB9Cn0KCmZ1bmN0aW9uIGxvYWRZZXh0U2NyaXB0KHNyYyl7CiAgICAkKGVsZW1lbnQpLmZpbmQoJy53cm9uZ1NjcmlwdEVycm9yJykucmVtb3ZlQ2xhc3MoJ2hhc0Vycm9yJyk7CiAgICB2YXIgeWV4dFNjcmlwdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkLXlleHQtc2NyaXB0Jyk7CiAgICBpZiAoeWV4dFNjcmlwdCkgewogICAgICAgIHlleHRTY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh5ZXh0U2NyaXB0KTsKICAgIH0KICAgIHlleHRTY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgIHlleHRTY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7CiAgICB5ZXh0U2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgIAogICAgc3JjICs9ICImY2FsbGJhY2s9eWV4dExvYWRlZENhbGxiYWNrIgogICAgCiAgICB5ZXh0U2NyaXB0LnNyYyA9IHNyYzsKICAgIHlleHRTY3JpcHQuaWQgPSAnZC15ZXh0LXNjcmlwdCc7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHlleHRTY3JpcHQpOwp9CgovKiBsb2FkIHlleHQgc2NyaXB0ICovCnZhciBsb2FkWWV4dCA9IGZ1bmN0aW9uKGZvcmNlUmVmcmVzaCkgewogICAgLy8gTWFrZSBzdXJlIHdlIGNhbGwgWWV4dCBvbmx5IG9uY2UKICAgIGlmKHdpbmRvdy55ZXh0SW5pdGlhbGl6ZWQgJiYgIWZvcmNlUmVmcmVzaCl7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICBzdGFydEludGVydmFsVG9XYWl0QW5kTG9hZFdpZGdldHMoZGF0YS5jb25maWcudHlwZSk7CiAgICAKICAgIC8vIFdlIGV4dHJhY3QgdGhlICJzcmMiIGF0dHJpYnV0ZSBmcm9tIHRoZSBzdHJpbmcgcHJvdmlkZWQgaW5hICBzYWZlIHdheQogICAgLy8gVGhlIGZvcm1hdCB3ZSBleHBlY3QgaXMgdGhlIGZvbGxvd2luZzoKICAgCiAgICB0cnl7CiAgICAgICAgdmFyIHNyYyA9IGZpbmRZZXh0U3JjKCk7CiAgICAgICAgaWYoc3JjKXsKCiAgICAgICAgICAgIGxvYWRZZXh0U2NyaXB0KHNyYyk7CiAgICAgICAgICAgIAogICAgICAgIH0gZWxzZSBpZihkYXRhLmluRWRpdG9yKSB7CiAgICAgICAgICAgIC8vICQoZG9jdW1lbnQpLmxvYWQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgLy8gICAgIGlmKCF3aW5kb3cuX3lleHREYXRhKSB7CiAgICAgICAgICAgIC8vICAgICAgICAgJChlbGVtZW50KS5maW5kKCcud3JvbmdTY3JpcHRFcnJvcicpLmFkZENsYXNzKCdoYXNFcnJvcicpOyAgICAKICAgICAgICAgICAgLy8gICAgIH0KICAgICAgICAgICAgLy8gfSkKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vICQoZWxlbWVudCkuZmluZCgnLndyb25nU2NyaXB0RXJyb3InKS5hZGRDbGFzcygnaGFzRXJyb3InKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICB9IGNhdGNoKGV4cCkgewogICAgICAgIC8vICQoZWxlbWVudCkuZmluZCgnLndyb25nU2NyaXB0JykuYWRkQ2xhc3MoJ2hhc0Vycm9yJyk7CiAgICAgICAgY29uc29sZS5sb2coZXhwKQogICAgICAgIHJldHVybjsKICAgIH0KICAgIAogICAgaWYgKGRhdGEuaW5FZGl0b3IpIHsKICAgICAgICBpZigkKCcubXVsdGlwbGVZZXh0RXJyb3InKS5sZW5ndGggPiAxKXsKICAgICAgICAgICAgICQoZWxlbWVudCkuZmluZCgnLm11bHRpcGxlWWV4dEVycm9yJykuYWRkQ2xhc3MoJ2hhc0Vycm9yJyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgfWVsc2UgaWYoZGF0YS5jb25maWcudHlwZSA9PT0gJ25vbmUnKXsKICAgICAgICAgICAgJChlbGVtZW50KS5maW5kKCcuZWRpdG9yT25seUluZm8nKS5hZGRDbGFzcygnaW5FZGl0b3InKTsgCiAgICAgICAgfQogICAgfQp9CgovKiByZWZyZXNoIHlleHQgc2NyaXB0ICovCndpbmRvdy5yZWZyZXNoWWV4dCA9IGZ1bmN0aW9uKCl7CiAgICBsb2FkWWV4dCh0cnVlKTsKfQoKLy9mdW5jdGlvbiBmb3IgT21uaXR1cmUgdHJhY2tpbmcKd2luZG93Ll90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50ID0gZnVuY3Rpb24oZXZlbnROYW1lKSB7CiAgICBpZih0eXBlb2YoSEFGKT09PSJvYmplY3QiKXsKICAgICAgICBIQUYuT21UcmFja2luZy5vbkNNQ2xpY2soZXZlbnROYW1lKSAKICAgIH0KICAgIHJldHVybjsKfQoKLyogZHJhdyB5ZXh0IG1hcCAqLwp2YXIgZHJhd01hcCA9IGZ1bmN0aW9uKHlleHREYXRhKXsKICAgIHZhciB6b29tID0gZGF0YS5jb25maWcubWFwWm9vbTsKICAgIHZhciB5RGF0YSA9IHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXM7CiAgICB2YXIgYWRkcmVzc1F1ZXJ5ID0geURhdGFbJ2FkZHJlc3MxJ10gKyAiICIgKyB5RGF0YVsnYWRkcmVzczInXSArICIgIiArIHlEYXRhWydjaXR5J10gKyAiICIgKyB5RGF0YVsnc3RhdGUnXSArICIgIiArIHlEYXRhWyd6aXAnXTsKICAgIGRtQVBJLmRyYXdNYXAoe2FkZHJlc3NRdWVyeTogYWRkcmVzc1F1ZXJ5LCB6b29tOiB6b29tLCBjb250YWluZXI6ICQoZWxlbWVudCkuZmluZCgnLnlleHRNYXAnKX0pOwp9CgoKCnZhciBmb3JtYXRQaG9uZUJlZm9yZVJlbmRlciA9IGZ1bmN0aW9uKG51bSxjYikgewogICAgaWYgKCFjYikKICAgICAgICBjYiA9IGZ1bmN0aW9uKCl7cmV0dXJufQogICAgaWYoZGF0YS5jb25maWcuZm9ybWF0UGhvbmUpeyAKICAgICAgICB2YXIgczIgPSAoIiIrbnVtKS5yZXBsYWNlKC9cRC9nLCAnJyk7CiAgICAgICAgdmFyIG0gPSBzMi5tYXRjaCgvXihcZHszfSkoXGR7M30pKFxkezR9KSQvKTsKICAgICAgICB2YXIgZm9ybWF0dGVkID0gICghbSkgPyBudWxsIDogIigiICsgbVsxXSArICIpICIgKyBtWzJdICsgIi0iICsgbVszXTsKICAgICAgICBjYihmb3JtYXR0ZWQpOwogICAgICAgIHJldHVybiBmb3JtYXR0ZWQ7CiAgICB9IGVsc2UgewogICAgICAgIGNiKG51bSk7CiAgICAgICAgcmV0dXJuIG51bTsKICAgIH0KfQoKdmFyIGRpc3BsYXlUZXh0ZExpc3QgPSBmdW5jdGlvbih0eXBlLHlleHREYXRhLGZpcnN0T25seSkgewogICAgdmFyIGxpc3QgPSAiIjsKICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbdHlwZV0pIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbdHlwZV0KICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSBmYWxzZQogICAgfQogICAgCiAgICBpZih5ZXh0QXR0ICYmIEFycmF5LmlzQXJyYXkoeWV4dEF0dCkpIHsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8IHlleHRBdHQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKHlleHRBdHRbaV0gPT09ICdBbmRyb2lkIFBheScpIHsKICAgICAgICAgICAgICAgIGxpc3QgKz0gJzxsaT5Hb29nbGUgUGF5PC9saT4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbGlzdCArPSAnPGxpPicgKyB5ZXh0QXR0W2ldICsgJzwvbGk+JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJyMnICsgdHlwZSArICdMaXN0JykuaHRtbChsaXN0KTsKICAgIH0gZWxzZSBpZiAoeWV4dEF0dCkgewogICAgICAgIHZhciB5ZXh0QXR0ID0geWV4dEF0dC5zcGxpdCgiLCAiKTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8IHlleHRBdHQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgbGlzdCArPSAnPGxpPicgKyB5ZXh0QXR0W2ldICsgJzwvbGk+JzsKICAgICAgICB9CiAgICAgICAgJChlbGVtZW50KS5maW5kKCcjJyArIHR5cGUgKyAnTGlzdCcpLmh0bWwobGlzdCk7CiAgICB9IGVsc2UgaWYgKGRhdGEuaW5FZGl0b3IpIHsKICAgICAgICAkKGVsZW1lbnQpLmh0bWwoZW1wdHlMaXN0UGxhY2VIb2xkZXIpOwogICAgfSBlbHNlIHsKICAgICAgICAkKGVsZW1lbnQpLmNzcygnZGlzcGxheScsJ25vbmUnKTsKICAgIH0KICAgIAogICAgCn0KCnZhciAgZGlzcGxheVNwZWNpYWx0aWVzID0gZnVuY3Rpb24oeWV4dERhdGEpewogICAgdmFyIGxpc3QgPSAiIjsKICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbInNwZWNpYWx0aWVzIl0pIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbInNwZWNpYWx0aWVzIl0KICAgIH0gZWxzZSBpZiAoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1sic3BlY2lhbGl0aWVzIl0pIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbInNwZWNpYWxpdGllcyJdCiAgICB9IGVsc2UgewogICAgICAgIHZhciB5ZXh0QXR0ID0gZmFsc2UKICAgIH0KICAgIAogICAgaWYoeWV4dEF0dCAmJiBBcnJheS5pc0FycmF5KHlleHRBdHQpKSB7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPCB5ZXh0QXR0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGxpc3QgKz0gJzxsaT4nICsgeWV4dEF0dFtpXSArICc8L2xpPic7CiAgICAgICAgfQogICAgICAgICQoZWxlbWVudCkuZmluZCgnI3NwZWNpYWx0aWVzTGlzdCcpLmh0bWwobGlzdCk7CiAgICB9IGVsc2UgaWYgKHlleHRBdHQpIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IHlleHRBdHQuc3BsaXQoIiwgIik7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPCB5ZXh0QXR0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGxpc3QgKz0gJzxsaT4nICsgeWV4dEF0dFtpXSArICc8L2xpPic7CiAgICAgICAgfQogICAgICAgICQoZWxlbWVudCkuZmluZCgnI3NwZWNpYWx0aWVzTGlzdCcpLmh0bWwobGlzdCk7CiAgICB9IGVsc2UgaWYgKGRhdGEuaW5FZGl0b3IpIHsKICAgICAgICAkKGVsZW1lbnQpLmh0bWwoZW1wdHlMaXN0UGxhY2VIb2xkZXIpOwogICAgfSBlbHNlIHsKICAgICAgICAkKGVsZW1lbnQpLmNzcygnZGlzcGxheScsJ25vbmUnKTsKICAgIH0KfQoKdmFyIGRpc3BsYXlIb3VycyA9IGZ1bmN0aW9uKHR5cGUseWV4dERhdGEpIHsKICAgIHZhciBsaXN0ID0gIiI7CiAgICBpZih5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGVdKSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGVdCiAgICB9IGVsc2UgewogICAgICAgIHZhciB5ZXh0QXR0ID0gZmFsc2UKICAgIH0KICAgIAogICAgaWYoeWV4dEF0dCAmJiBBcnJheS5pc0FycmF5KHlleHRBdHQpKSB7CiAgICAgICAgZm9yKHZhciBpPTA7aSA8IHlleHRBdHQubGVuZ3RoO2krKykgewogICAgICAgICAgICB2YXIgaW5kZXhFbmREYXkgPSB5ZXh0QXR0W2ldLmxhc3RJbmRleE9mKCdkYXkgJykgKyAzOwogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIGxlZnRTaWRlID0geWV4dEF0dFtpXS5zdWJzdHIoMCxpbmRleEVuZERheSkucmVwbGFjZSgiTW9uZGF5IiwiTW9uIikucmVwbGFjZSgiVHVlc2RheSIsIlR1ZSIpLnJlcGxhY2UoIldlZG5lc2RheSIsIldlZCIpLnJlcGxhY2UoIlRodXJzZGF5IiwiVGh1IikucmVwbGFjZSgiRnJpZGF5IiwiRnJpIikucmVwbGFjZSgiU2F0dXJkYXkiLCJTYXQiKS5yZXBsYWNlKCJTdW5kYXkiLCJTdW4iKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciByaWdodFNpZGUgPSB5ZXh0QXR0W2ldLnN1YnN0cihpbmRleEVuZERheSArIDEpCiAgICAgICAgICAgIAogICAgICAgICAgICBsaXN0ICs9ICc8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImxlZnQiPicgKyBsZWZ0U2lkZSArICc8L2Rpdj48ZGl2IGNsYXNzPSJyaWdodCI+JyArIHJpZ2h0U2lkZSArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgIH0KICAgICAgICAKICAgICQoZWxlbWVudCkuZmluZCgnI2hvdXJzU21hbGwnKS5odG1sKGxpc3QpOwogICAgCiAgICB9IGVsc2UgaWYoeWV4dEF0dCkgeyAKICAgICAgICB2YXIgeWV4dEF0dCA9IHlleHRBdHQuc3BsaXQoIiwgIik7CiAgICAgICAgZm9yKHZhciBpPTA7aSA8IHlleHRBdHQubGVuZ3RoO2krKykgewogICAgICAgICAgICBpZigoL1xzLy50ZXN0KHlleHRBdHRbaV0pKSA9PT0gZmFsc2UpewogICAgICAgICAgICAgICAgeWV4dEF0dFtpXSA9IHlleHRBdHRbaV0gKyAnIC0gJyArIHlleHRBdHRbaSsxXQogICAgICAgICAgICAgICAgeWV4dEF0dC5zcGxpY2UoaSsxLCAxKQogICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoeWV4dEF0dFtpXS5pbmNsdWRlcygnZGF5JykgPT09IGZhbHNlICl7CiAgICAgICAgICAgICAgICB2YXIgbGVmdFNpZGUgPSAnICc7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciByaWdodFNpZGUgPSB5ZXh0QXR0W2ldCiAgICAgICAgICAgIH1lbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbmRleEVuZERheSA9IHlleHRBdHRbaV0ubGFzdEluZGV4T2YoJ2RheSAnKSArIDM7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGxlZnRTaWRlID0geWV4dEF0dFtpXS5zdWJzdHIoMCxpbmRleEVuZERheSkucmVwbGFjZSgiTW9uZGF5IiwiTW9uIikucmVwbGFjZSgiVHVlc2RheSIsIlR1ZSIpLnJlcGxhY2UoIldlZG5lc2RheSIsIldlZCIpLnJlcGxhY2UoIlRodXJzZGF5IiwiVGh1IikucmVwbGFjZSgiRnJpZGF5IiwiRnJpIikucmVwbGFjZSgiU2F0dXJkYXkiLCJTYXQiKS5yZXBsYWNlKCJTdW5kYXkiLCJTdW4iKTsKICAgICAgICAKICAgICAgICAgICAgICAgIHZhciByaWdodFNpZGUgPSB5ZXh0QXR0W2ldLnN1YnN0cihpbmRleEVuZERheSArIDEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGxpc3QgKz0gJzxkaXYgY2xhc3M9InJvdyI+PGRpdiBjbGFzcz0ibGVmdCI+JyArIGxlZnRTaWRlICsgJzwvZGl2PjxkaXYgY2xhc3M9InJpZ2h0Ij4nICsgcmlnaHRTaWRlICsgJzwvZGl2PjwvZGl2Pic7CiAgICAgICAgfQogICAgICAgICQoZWxlbWVudCkuZmluZCgnI2hvdXJzU21hbGwnKS5odG1sKGxpc3QpOwogICAgfSBlbHNlIGlmIChkYXRhLmluRWRpdG9yKSB7CiAgICAgICAgJChlbGVtZW50KS5odG1sKGVtcHR5TGlzdFBsYWNlSG9sZGVyKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJChlbGVtZW50KS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7CiAgICB9Cgp9Cgp2YXIgZGlzcGxheU9wZW5Ib3VycyA9IGZ1bmN0aW9uKHR5cGUsIHlleHREYXRhKXsKICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbJ3RpbWV6b25lJ10pewogICAgICAgIHZhciB6b25lID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1sndGltZXpvbmUnXQogICAgfSBlbHNlIHsKICAgICAgICB2YXIgem9uZSA9IGZhbHNlCiAgICB9CiAgICAKICAgIGlmKHpvbmUpewogICAgICAgIHZhciB0aW1lID0gbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7dGltZVpvbmU6IHpvbmV9KTsKICAgICAgICB2YXIgdG9kYXkgPSBuZXcgRGF0ZSh0aW1lICk7CiAgICAgICAgCiAgICAgICAgdmFyIHRoaXJ0eU1pbnMgPSAzMCAqIDYwICogMTAwMAoKICAgICAgICB2YXIgZGF5cyA9IFsnc3VuZGF5JywnbW9uZGF5JywndHVlc2RheScsJ3dlZG5lc2RheScsJ3RodXJzZGF5JywnZnJpZGF5Jywnc2F0dXJkYXknXTsKICAgICAgICB2YXIgZGF5c1Nob3J0ID0gWydTdW4nLCdNb24nLCdUdWVzJywnV2VkJywnVGh1cnMnLCdGcmknLCdTYXQnXTsKCiAgICAgICAgdmFyIGRheSA9IGRheXNbdG9kYXkuZ2V0RGF5KCldOwogICAgICAgIHZhciBob3VyID0gdG9kYXkuZ2V0SG91cnMoKTsKICAgICAgICB2YXIgbWluID0gdG9kYXkuZ2V0TWludXRlcygpOwogICAgICAgIHZhciBkZCA9ICgiMCIgKyB0b2RheS5nZXREYXRlKCkpLnNsaWNlKC0yKTsKICAgICAgICB2YXIgbW0gPSAoIjAiICsgKHRvZGF5LmdldE1vbnRoKCkgKyAxKSkuc2xpY2UoLTIpCiAgICAgICAgdmFyIHl5eXkgPSB0b2RheS5nZXRGdWxsWWVhcigpOwogICAgICAgIHZhciB0b2RheURhdGUgPSB5eXl5ICsgJy0nICsgbW0gKyAnLScgKyBkZAogICAgICAgIHZhciBtbSA9IG1tIC0gMSAKICAgICAgICAKICAgICAgICBjb25zdCB0b21vcnJvdyA9IG5ldyBEYXRlKHRvZGF5KQogICAgICAgIHRvbW9ycm93LnNldERhdGUodG9tb3Jyb3cuZ2V0RGF0ZSgpICsgMSkKICAgICAgICB2YXIgbW1UbXcgID0gKCIwIiArICh0b21vcnJvdy5nZXRNb250aCgpICsgMSkpLnNsaWNlKC0yKQogICAgICAgIHZhciBkZFRtdyA9ICgiMCIgKyB0b21vcnJvdy5nZXREYXRlKCkpLnNsaWNlKC0yKQogICAgICAgIHZhciB5eXl5VG13ID0gdG9tb3Jyb3cuZ2V0RnVsbFllYXIoKTsKICAgICAgICB2YXIgbmV4dERheSA9IGRheXNbdG9tb3Jyb3cuZ2V0RGF5KCldCiAgICAgICAgdmFyIHRvbW1vcnJvdyA9IHl5eXlUbXcgKyAnLScgKyBtbVRtdyArICctJyArIGRkVG13CiAgICAgICAgdmFyIG1tVG13ID0gbW1UbXcgLSAxCiAgICB9CgogICAgaWYoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy0nICsgZGF5XSkgewogICAgICAgIHZhciB5ZXh0QXR0ID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy0nICsgZGF5XQogICAgICAgIGlmICh5ZXh0QXR0ID09PSAiQ2xvc2VkIil7CiAgICAgICAgICAgIHlleHRBdHQgPSBmYWxzZQogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSBmYWxzZQogICAgfQogICAgCiAgICAvL2NoZWNrIGlmIGRheSBpcyBjbG9zZWQKICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbdHlwZSArICcuJyArIGRheSArICcuaXNDbG9zZWQnXSA9PT0gdHJ1ZSkgeyAKICAgICAgICB2YXIgY2xvc2VkID0gdHJ1ZQogICAgfQogICAgCiAgICAvL2NvbGxlY3RzIGJ1c2luZXNzIGhvbGlkYXkgaG91cnMgCiAgICBpZih5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGUgKyAnLmhvbGlkYXlIb3VycyddKXsKICAgICAgICB2YXIgaG9saWRheUhvdXJzID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy5ob2xpZGF5SG91cnMnXQogICAgfSBlbHNlewogICAgICAgICB2YXIgaG9saWRheUhvdXJzID0gZmFsc2UKICAgIH0KICAgIAogICAgLy9nZXRzIG5leHQgZGF5cyBzdGFydCB0aW1lCiAgICBpZih5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGUgKyAnLicgKyBuZXh0RGF5ICsgJy5pc0Nsb3NlZCddID09PSB0cnVlKXsKICAgICAgICB2YXIgdG9tb3Jyb3dPcGVuID0gZmFsc2UKICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHRvbW9ycm93T3BlbiA9IHRydWUKICAgICAgICB2YXIgdG1yd1N0YXJ0ID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy0nICsgbmV4dERheV0uc3BsaXQoIiAtICIpWzBdCiAgICB9CiAgICAKICAgICAvL2NoZWNrcyBpZiBob2xpZGF5IGhvdXJzIGNoYW5nZSAKICAgIGlmKGhvbGlkYXlIb3VycykgewogICAgICAgIGZvcih2YXIgaT0wO2kgPCBob2xpZGF5SG91cnMubGVuZ3RoO2krKyl7CiAgICAgICAgICAgIGlmKGhvbGlkYXlIb3Vyc1tpXS5kYXRlID09PSB0b2RheURhdGUgJiYgaG9saWRheUhvdXJzW2ldLm9wZW5JbnRlcnZhbHMpewogICAgICAgICAgICAgICAgeWV4dEF0dCA9IGhvbGlkYXlIb3Vyc1tpXS5ob3Vyc0Zvcm1hdHRlZAogICAgICAgICAgICB9IAogICAgICAgIH0KICAgIH0KICAgIAogICAgLy9zcGxpdCBob3VycwogICAgaWYoeWV4dEF0dCAmJiB5ZXh0QXR0LmluY2x1ZGVzKCIsIikpewogICAgICAgIHlleHRBdHQgPSB5ZXh0QXR0LnNwbGl0KCIsICIpCiAgICAgICAgZm9yKHZhciBpPTA7aSA8IHlleHRBdHQubGVuZ3RoO2krKyl7CiAgICAgICAgICAgIHZhciBlbmQgPSB5ZXh0QXR0W2ldLnNwbGl0KCcgLSAnKVsxXQogICAgICAgICAgICB2YXIgc3RhcnQgPSB5ZXh0QXR0W2ldLnNwbGl0KCcgLSAnKVswXQogICAgICAgICAgICBpZiAoaSsxICE9IHlleHRBdHQubGVuZ3RoKXsKICAgICAgICAgICAgICAgIHZhciBuZXh0U3RhcnQgPSB5ZXh0QXR0W2kgKyAxXS5zcGxpdCgnIC0gJylbMF0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZihzdGFydC5pbmNsdWRlcygicG0iKSAmJiBzdGFydC5zcGxpdCgvXHMrfDovKVswXSAhPSAiMTIiKXsKICAgICAgICAgICAgICAgIHZhciBzdGFydERhdGUgPSBuZXcgRGF0ZSh5eXl5LCBtbSwgZGQsIHBhcnNlSW50KHN0YXJ0LnNwbGl0KC9ccyt8Oi8pWzBdKSArIDEyLCBwYXJzZUludChzdGFydC5zcGxpdCgvXHMrfDovKVsxXSkpCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgc3RhcnREYXRlID0gbmV3IERhdGUoeXl5eSwgbW0sIGRkLCBwYXJzZUludChzdGFydC5zcGxpdCgvXHMrfDovKVswXSksIHBhcnNlSW50KHN0YXJ0LnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYobmV4dFN0YXJ0LmluY2x1ZGVzKCJwbSIpICYmIG5leHRTdGFydC5zcGxpdCgvXHMrfDovKVswXSAhPSAiMTIiKXsKICAgICAgICAgICAgICAgIHZhciBuZXh0U3RhcnREYXRlID0gbmV3IERhdGUoeXl5eSwgbW0sIGRkLCBwYXJzZUludChuZXh0U3RhcnQuc3BsaXQoL1xzK3w6LylbMF0pICsgMTIsIHBhcnNlSW50KG5leHRTdGFydC5zcGxpdCgvXHMrfDovKVsxXSkpCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgbmV4dFN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHl5eXksIG1tLCBkZCwgcGFyc2VJbnQobmV4dFN0YXJ0KSwgcGFyc2VJbnQobmV4dFN0YXJ0LnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICAgICAgfQogICAgICAgIAogICAgICAgICAgICBpZihlbmQuaW5jbHVkZXMoInBtIikgJiYgZW5kLnNwbGl0KC9ccyt8Oi8pWzBdICE9ICIxMiIpewogICAgICAgICAgICAgICAgdmFyIGVuZERhdGUgPSBuZXcgRGF0ZSh5eXl5LCBtbSwgZGQsIHBhcnNlSW50KGVuZC5zcGxpdCgvXHMrfDovKVswXSkgKyAxMiwgcGFyc2VJbnQoZW5kLnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBlbmREYXRlID0gbmV3IERhdGUoeXl5eSwgbW0sIGRkLCBwYXJzZUludChlbmQuc3BsaXQoL1xzK3w6LylbMF0pLCBwYXJzZUludChlbmQuc3BsaXQoL1xzK3w6LylbMV0pKQogICAgICAgICAgICB9CiAgICAgICAgCiAgICAgICAgICAgIGlmIChlbmQuaW5jbHVkZXMoImFtIikgJiYgKGVuZERhdGUgPCBzdGFydERhdGUpKXsKICAgICAgICAgICAgICAgIGVuZERhdGUgPSBuZXcgRGF0ZSh5eXl5VG13LCBtbVRtdywgZGRUbXcsIHBhcnNlSW50KGVuZC5zcGxpdCgvXHMrfDovKVswXSksIHBhcnNlSW50KGVuZC5zcGxpdCgvXHMrfDovKVsxXSkpCiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgaWYodG9kYXkgPCBzdGFydERhdGUpewogICAgICAgICAgICAgICAgdmFyIGNsb3NlZCA9IHRydWUgCiAgICAgICAgICAgICAgICB0bXJ3U3RhcnQgPSBzdGFydAogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgfWVsc2UgaWYodG9kYXkgPiBzdGFydERhdGUgJiYgdG9kYXkgPCBlbmREYXRlKXsKICAgICAgICAgICAgICAgIHlleHRBdHQgPSBzdGFydCArICcgLSAnICsgZW5kCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB9ZWxzZSBpZih0b2RheSA+IGVuZERhdGUgJiYgIChpKzEgIT0geWV4dEF0dC5sZW5ndGgpICYmIHRvZGF5IDwgbmV4dFN0YXJ0RGF0ZSl7CiAgICAgICAgICAgICAgICB2YXIgY2xvc2VkID0gdHJ1ZQogICAgICAgICAgICAgICAgdG1yd1N0YXJ0ID0gbmV4dFN0YXJ0CiAgICAgICAgICAgICAgICB0b21vcnJvd09wZW4gPSB0cnVlCiAgICAgICAgICAgIH1lbHNlIGlmKHRvZGF5ID4gZW5kRGF0ZSAmJiBpKzEgPT09IHlleHRBdHQubGVuZ3RoKXsKICAgICAgICAgICAgICAgIHZhciBjbG9zZWQgPSB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9ICAKICAgIAogICAgCiAgICBpZih5ZXh0QXR0IHx8IGNsb3NlZCkgewogICAgICAgIGlmKHR5cGVvZiB5ZXh0QXR0ID09PSAic3RyaW5nIil7CiAgICAgICAgdmFyIHN0YXJ0ID0geWV4dEF0dC5zcGxpdCgiIC0gIilbMF0KICAgICAgICB2YXIgZW5kID0geWV4dEF0dC5zcGxpdCgiIC0gIilbMV0KICAgICAgICBpZihzdGFydC5pbmNsdWRlcygicG0iKSAmJiBzdGFydC5zcGxpdCgvXHMrfDovKVswXSAhPSAiMTIiKXsKICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHl5eXksIG1tLCBkZCwgcGFyc2VJbnQoc3RhcnQuc3BsaXQoL1xzK3w6LylbMF0pICsgMTIsIHBhcnNlSW50KHN0YXJ0LnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgc3RhcnREYXRlID0gbmV3IERhdGUoeXl5eSwgbW0sIGRkLCBwYXJzZUludChzdGFydC5zcGxpdCgvXHMrfDovKVswXSksIHBhcnNlSW50KHN0YXJ0LnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYoZW5kLmluY2x1ZGVzKCJwbSIpICYmIGVuZC5zcGxpdCgvXHMrfDovKVswXSAhPSAiMTIiKXsKICAgICAgICAgICAgdmFyIGVuZERhdGUgPSBuZXcgRGF0ZSh5eXl5LCBtbSwgZGQsIHBhcnNlSW50KGVuZC5zcGxpdCgvXHMrfDovKVswXSkgKyAxMiwgcGFyc2VJbnQoZW5kLnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICB9IGVsc2UgaWYgKGVuZC5pbmNsdWRlcygiYW0iKSAmJiBlbmQuc3BsaXQoL1xzK3w6LylbMF0gPT09ICIxMiIpIHsKICAgICAgICAgICAgdmFyIGVuZERhdGUgPSBuZXcgRGF0ZSh5eXl5LCBtbSwgZGQsIHBhcnNlSW50KGVuZC5zcGxpdCgvXHMrfDovKVswXSkgLSAxMiwgcGFyc2VJbnQoZW5kLnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgZW5kRGF0ZSA9IG5ldyBEYXRlKHl5eXksIG1tLCBkZCwgcGFyc2VJbnQoZW5kLnNwbGl0KC9ccyt8Oi8pWzBdKSwgcGFyc2VJbnQoZW5kLnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKGVuZC5pbmNsdWRlcygiYW0iKSAmJiAoZW5kRGF0ZSA8IHN0YXJ0RGF0ZSkpewogICAgICAgICAgICBlbmREYXRlID0gbmV3IERhdGUoeXl5eVRtdywgbW1UbXcsIGRkVG13LCBwYXJzZUludChlbmQuc3BsaXQoL1xzK3w6LylbMF0pLCBwYXJzZUludChlbmQuc3BsaXQoL1xzK3w6LylbMV0pKQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL2NoZWNrIGlmIGNsb3NlZAogICAgICAgIGlmKHRvZGF5ID4gZW5kRGF0ZSl7CiAgICAgICAgICAgIHZhciBjbG9zZWQgPSB0cnVlCiAgICAgICAgLy9vcGVuZWQgMjQgaG91cnMgCiAgICAgICAgfSBlbHNlIGlmKHN0YXJ0ID09PSAnMTI6MDAgYW0nICYmIGVuZCA9PT0gJzExOjU5IHBtJyl7CiAgICAgICAgICAgIHZhciBzdGF0dXMgPSAiT3BlbiAiCiAgICAgICAgICAgIHZhciBjc3NDbGFzcyA9ICJhbGxEYXlTdGF0dXMiCiAgICAgICAgICAgIHZhciBidXNIb3VycyA9ICcgMjQgaG91cnMgJwogICAgICAgIC8vb3BlbmVkCiAgICAgICAgfSBlbHNlIGlmKHRvZGF5IDwgc3RhcnREYXRlKXsKICAgICAgICAgICAgdmFyIGNsb3NlZCA9IHRydWUKICAgICAgICAvL2NoZWNrIGlmIGNsb3Npbmcgc29vbgogICAgICAgIH0gZWxzZSBpZiAoZW5kRGF0ZSAtIHRvZGF5IDwgdGhpcnR5TWlucyAmJiBlbmREYXRlIC0gdG9kYXkgPCAwID09PSBmYWxzZSApewogICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9ICJDbG9zaW5nIFNvb24gIgogICAgICAgICAgICAgICAgdmFyIGNzc0NsYXNzID0gInNvb25TdGF0dXMiCiAgICAgICAgICAgICAgICB2YXIgYnVzSG91cnMgPSAnIOKAoiAnICsgZW5kIAogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBzdGF0dXMgPSAiT3BlbiAiCiAgICAgICAgICAgIHZhciBjc3NDbGFzcyA9ICJvcGVuZWRTdGF0dXMiCiAgICAgICAgICAgIHZhciBidXNIb3VycyA9ICfigKIgQ2xvc2VzICcgKyBlbmQgCiAgICAgICAgfQogCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKGNsb3NlZCl7CiAgICAgICAgCiAgICAgICAgLy8gY2xvc2VkICYgb3BlbmluZyB0b2RheSAKICAgICAgICBpZigodG9kYXkgPCBzdGFydERhdGUpKXsKICAgICAgICAgICAgdmFyIHN0YXR1cyA9ICJDbG9zZWQgIgogICAgICAgICAgICB2YXIgY3NzQ2xhc3MgPSAiY2xvc2VkU3RhdHVzIgogICAgICAgICAgICB2YXIgYnVzSG91cnMgPSAnIE9wZW5zICcgKyBzdGFydCAKICAgICAgICAvL2Nsb3NlZCAmIG9wZW4gdG9tb3Jyb3cgCiAgICAgICAgfSBlbHNlIGlmKGNsb3NlZCAmJiB0b21vcnJvd09wZW4gPT09IHRydWUpewogICAgICAgICAgICB2YXIgc3RhdHVzID0gIkNsb3NlZCAiCiAgICAgICAgICAgIHZhciBjc3NDbGFzcyA9ICJjbG9zZWRTdGF0dXMiCiAgICAgICAgICAgIHZhciBidXNIb3VycyA9ICcg4oCiIE9wZW5zICcgKyB0bXJ3U3RhcnQgCiAgICAgICAgLy9jbG9zZWQgYW5kIG5vdCBvcGVuIHRvbW9ycm93IAogICAgICAgIH0gZWxzZSBpZihjbG9zZWQgJiYgdG9tb3Jyb3dPcGVuICE9IHRydWUpewogICAgICAgICAgICB2YXIgb2Zmc2V0ID0gZGF5cy5pbmRleE9mKGRheSkgKyAxCiAgICAgICAgICAgIGZvciggdmFyIGk9MDsgaSA8IGRheXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBkYXlJbmRleCA9IChpICsgb2Zmc2V0KSAlIGRheXMubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy4nICsgZGF5c1tkYXlJbmRleF0gKyAnLm9wZW5JbnRlcnZhbHMnXSl7CiAgICAgICAgICAgICAgICAgICAgdG1yd1N0YXJ0ID0gIGRheXNTaG9ydFtkYXlJbmRleF0gKyAiICIgKyB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGUgKyAnLScgKyBkYXlzW2RheUluZGV4XV0uc3BsaXQoIiAtICIpWzBdIAogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHN0YXR1cyA9ICJDbG9zZWQgIgogICAgICAgICAgICB2YXIgY3NzQ2xhc3MgPSAiY2xvc2VkU3RhdHVzIgogICAgICAgICAgICB2YXIgYnVzSG91cnMgPSAnIOKAoiBPcGVucyAnICsgdG1yd1N0YXJ0CgogICAgICAgIH0KICAgICAgICB9CiAgICB9CiAKICAgIC8vIGNoZWNrcyBpZiBob2xpZGF5CiAgICBpZihob2xpZGF5SG91cnMpIHsKICAgICAgICBmb3IodmFyIGk9MDtpIDwgaG9saWRheUhvdXJzLmxlbmd0aDtpKyspewogICAgICAgICAgICBpZihob2xpZGF5SG91cnNbaV0uZGF0ZSA9PT0gdG9kYXlEYXRlICYmIGhvbGlkYXlIb3Vyc1tpXS5pc0Nsb3NlZCA9PT0gdHJ1ZSAmJiB0b21vcnJvd09wZW4gPT09IGZhbHNlKXsKICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSBkYXlzLmluZGV4T2YoZGF5KSArIDEKICAgICAgICAgICAgICAgIGZvciggdmFyIGk9MDsgaSA8IGRheXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGF5SW5kZXggPSAoaSArIG9mZnNldCkgJSBkYXlzLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBpZih5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGUgKyAnLicgKyBkYXlzW2RheUluZGV4XSArICcub3BlbkludGVydmFscyddKXsKICAgICAgICAgICAgICAgICAgICB0bXJ3U3RhcnQgPSBkYXlzU2hvcnRbZGF5SW5kZXhdICsgIiAiICsgeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy0nICsgZGF5c1tkYXlJbmRleF1dLnNwbGl0KCIgLSAiKVswXQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gIkNsb3NlZCAiCiAgICAgICAgICAgICAgICB2YXIgY3NzQ2xhc3MgPSAiY2xvc2VkU3RhdHVzIgogICAgICAgICAgICAgICAgdmFyIGJ1c0hvdXJzID0gJyDigKIgT3BlbnMgJyArIHRtcndTdGFydCAgCiAgICAgICAgICAgIH0gZWxzZSBpZihob2xpZGF5SG91cnNbaV0uZGF0ZSA9PT0gdG9kYXlEYXRlICYmIGhvbGlkYXlIb3Vyc1tpXS5pc0Nsb3NlZCA9PT0gdHJ1ZSAmJiB0b21vcnJvd09wZW4gPT09IHRydWUpewogICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9ICJDbG9zZWQgIgogICAgICAgICAgICAgICAgdmFyIGNzc0NsYXNzID0gImNsb3NlZFN0YXR1cyIKICAgICAgICAgICAgICAgIHZhciBidXNIb3VycyA9ICcg4oCiIE9wZW5zICcgKyB0bXJ3U3RhcnQgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gCiAgICBpZihjc3NDbGFzcyl7CiAgICAgICAgdmFyIGhvdXJzV2lkZ2V0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N0YXR1cycpCiAgICAgICAgZm9yKCB2YXIgaT0wOyBpIDwgaG91cnNXaWRnZXRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGhvdXJzV2lkZ2V0c1tpXS5jbGFzc0xpc3QuYWRkKGNzc0NsYXNzKTsKICAgICAgICB9CiAgICB9CiAgICBpZihzdGF0dXMpewogICAgICAgIHZhciBob3Vyc1dpZGdldHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdGF0dXMnKQogICAgICAgIGZvciggdmFyIGk9MDsgaSA8IGhvdXJzV2lkZ2V0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBob3Vyc1dpZGdldHNbaV0uaW5uZXJUZXh0ID0gc3RhdHVzOwogICAgICAgIH0KICAgIH0KICAgIGlmKGNzc0NsYXNzID09PSAnYWxsRGF5U3RhdHVzJyl7CiAgICAgICAgdmFyIGhvdXJzV2lkZ2V0cyA9ICQoZWxlbWVudCkuZmluZCgnLm9wZW5Ib3VycycpCiAgICAgICAgZm9yKCB2YXIgaT0wOyBpIDwgaG91cnNXaWRnZXRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGhvdXJzV2lkZ2V0c1tpXS5jaGlsZHJlblswXS50ZXh0Q29udGVudCA9ICIiCiAgICAgICAgfQogICAgfQogICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnb3BlbkhvdXJzJylbMF0uY2hpbGRFbGVtZW50Q291bnQgPiAxKXsKICAgICAgICB2YXIgaG91cnNXaWRnZXRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnb3BlbkhvdXJzJykKICAgICAgICBmb3IoIHZhciBpPTA7IGkgPCBob3Vyc1dpZGdldHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIG9wZW5Ib3Vyc0xlbmd0aCA9IGhvdXJzV2lkZ2V0c1tpXS5jaGlsZE5vZGVzLmxlbmd0aAogICAgICAgICAgICB2YXIgb2xkSG91cnMgPSBob3Vyc1dpZGdldHNbaV0KICAgICAgICAgICAgb2xkSG91cnMucmVtb3ZlQ2hpbGQob2xkSG91cnMuY2hpbGROb2Rlc1tvcGVuSG91cnNMZW5ndGggLSAxXSkKICAgICAgICB9CiAgICB9CiAgICB2YXIgaG91cnNXaWRnZXRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnb3BlbkhvdXJzJykKICAgIGZvciggdmFyIGk9MDsgaSA8IGhvdXJzV2lkZ2V0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBob3Vyc1dpZGdldHNbaV0uYXBwZW5kKGJ1c0hvdXJzKQogICAgICAgIH0KfQoKCnZhciBkaXNwbGF5SG9saWRheUhvdXJzTGlzdCA9IGZ1bmN0aW9uKHR5cGUseWV4dERhdGEpIHsKICAgIHZhciBsaXN0ID0gIiI7CiAgICAKICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbImhvdXJzLmhvbGlkYXlIb3VycyJdKSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzWyJob3Vycy5ob2xpZGF5SG91cnMiXQogICAgfSBlbHNlIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbImhvbGlkYXlIb3VycyJdKSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzWyJob2xpZGF5SG91cnMiXQogICAgfSBlbHNlIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IGZhbHNlCiAgICB9CiAgICAKICAgIAogICAgCiAgICBpZih5ZXh0QXR0KSB7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPCB5ZXh0QXR0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgZGF0ZUhvbCA9IG5ldyBEYXRlKERhdGUucGFyc2UoeWV4dEF0dFtpXS5kYXRlKSk7IAoKICAgICAgICAgICAgdmFyIGRhdGVOb3cgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICB2YXIgbnVtRGF5c0JldHdlZW4gPSBnZXROdW1EYXlzQmV0d2VlbihkYXRlSG9sLGRhdGVOb3cpOwogICAgICAgIAogICAgICAgICAgICBpZiAobnVtRGF5c0JldHdlZW4gPiAtMSkgewogICAgICAgICAgICAgICAgLy8gd3JpdGUgdG8gZG9tCiAgICAgICAgICAgICAgICBsaXN0ICs9ICc8bGk+JyArIHlleHRBdHRbaV0uZGF0ZUZvcm1hdHRlZCArICcgLSAgPHNwYW4gY2xhc3M9ImhvbGlkYXlIb3Vyc1N0YXR1cyI+JyArIHlleHRBdHRbaV0uaG91cnNGb3JtYXR0ZWQgKyAnPC9zcGFuPjwvbGk+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgJChlbGVtZW50KS5maW5kKCcjJyArIHR5cGUgKyAnTGlzdCcpLmh0bWwobGlzdCk7CiAgICB9IGVsc2UgaWYgKGRhdGEuaW5FZGl0b3IpIHsKICAgICAgICAvLyBpZiBpbiBlZGl0b3IgZGlzcGxheSBwbGFjZSBob2xkZXIKICAgICAgICAkKGVsZW1lbnQpLmh0bWwoZW1wdHlMaXN0UGxhY2VIb2xkZXIpOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBpZiBlbXB0eSwgaGlkZSBlbGVtZW50IG9uIHJ1bnRpbWUKICAgICAgICAkKGVsZW1lbnQpLmNzcygnZGlzcGxheScsJ25vbmUnKTsKICAgIH0KfQoKdmFyIGRpc3BsYXlTZXJ2aWNlQXJlYSA9IGZ1bmN0aW9uKHR5cGUseWV4dERhdGEsZmlyc3RPbmx5KSB7CiAgICB2YXIgbGlzdCA9ICIiOwogICAgaWYoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlXSkgewogICAgICAgIHZhciB5ZXh0QXR0ID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlXQogICAgfSBlbHNlIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IGZhbHNlCiAgICB9CgogICAgaWYgKGZpcnN0T25seSkgewogICAgICAgIGxpc3QgPSAnPGxpPicgKyB5ZXh0QXR0WzBdICsgJzwvbGk+JzsKICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJyMnICsgdHlwZSArICdMaXN0JykuaHRtbChsaXN0KTsKICAgIH0gZWxzZSBpZiAoeWV4dEF0dCAmJiBBcnJheS5pc0FycmF5KHlleHRBdHQpKSB7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPCB5ZXh0QXR0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGxpc3QgKz0gJzxsaT4nICsgeWV4dEF0dFtpXSArICc8L2xpPic7CiAgICAgICAgfQogICAgICAgICQoZWxlbWVudCkuZmluZCgnIycgKyB0eXBlICsgJ0xpc3QnKS5odG1sKGxpc3QpOwogICAgfSBlbHNlIGlmICh5ZXh0QXR0KSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGUgKyAiLnBsYWNlcyJdCiAgICAgICAgZm9yICh2YXIgaT0wOyBpPCB5ZXh0QXR0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGxpc3QgKz0gJzxsaT4nICsgeWV4dEF0dFtpXSArICc8L2xpPic7CiAgICAgICAgfQogICAgICAgICQoZWxlbWVudCkuZmluZCgnIycgKyB0eXBlICsgJ0xpc3QnKS5odG1sKGxpc3QpOwogICAgfSBlbHNlIGlmIChkYXRhLmluRWRpdG9yKSB7CiAgICAgICAgJChlbGVtZW50KS5odG1sKGVtcHR5TGlzdFBsYWNlSG9sZGVyKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJChlbGVtZW50KS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7CiAgICB9Cgp9Cgp2YXIgZGlzcGxheVBob25lTGlzdCA9IGZ1bmN0aW9uKHR5cGUseWV4dERhdGEpIHsKICAgIHZhciBsaXN0ID0gIiI7CiAgICAKICAgIHZhciBsb2NEYXRhID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlczsKICAgIAogICAgaWYobG9jRGF0YS5waG9uZSkgewogICAgICAgIGxpc3QgKz0gJzxsaT48c3BhbiBjbGFzcz0icGhvbmVMYWJlbCI+TWFpbjo8L3NwYW4+PHNwYW4gY2xhc3M9InBob25lTnVtIj4gJyArIGZvcm1hdFBob25lQmVmb3JlUmVuZGVyKGxvY0RhdGEucGhvbmUpICsgJzwvc3Bhbj48L2xpPic7CiAgICB9CiAgICBpZihsb2NEYXRhLmxvY2FsUGhvbmUpIHsKICAgICAgICBsaXN0ICs9ICc8bGk+PHNwYW4gY2xhc3M9InBob25lTGFiZWwiPkxvY2FsOjwvc3Bhbj48c3BhbiBjbGFzcz0icGhvbmVOdW0iPiAnICsgZm9ybWF0UGhvbmVCZWZvcmVSZW5kZXIobG9jRGF0YS5sb2NhbFBob25lKSArICc8L3NwYW4+PC9saT4nOwogICAgfQogICAgaWYobG9jRGF0YS5hbHRlcm5hdGVQaG9uZSkgewogICAgICAgIGxpc3QgKz0gJzxsaT48c3BhbiBjbGFzcz0icGhvbmVMYWJlbCI+QWx0ZXJuYXRlOjwvc3Bhbj48c3BhbiBjbGFzcz0icGhvbmVOdW0iPiAnICsgZm9ybWF0UGhvbmVCZWZvcmVSZW5kZXIobG9jRGF0YS5hbHRlcm5hdGVQaG9uZSkgKyAnPC9zcGFuPjwvbGk+JzsKICAgIH0KICAgIGlmKGxvY0RhdGEudG9sbEZyZWVQaG9uZSkgewogICAgICAgIGxpc3QgKz0gJzxsaT48c3BhbiBjbGFzcz0icGhvbmVMYWJlbCI+VG9sbCBGcmVlOjwvc3Bhbj48c3BhbiBjbGFzcz0icGhvbmVOdW0iPiAnICsgZm9ybWF0UGhvbmVCZWZvcmVSZW5kZXIobG9jRGF0YS50b2xsRnJlZVBob25lKSArICc8L3NwYW4+PC9saT4nOwogICAgfQogICAgaWYobG9jRGF0YS5tb2JpbGVQaG9uZSkgewogICAgICAgIGxpc3QgKz0gJzxsaT48c3BhbiBjbGFzcz0icGhvbmVMYWJlbCI+TW9iaWxlOjwvc3Bhbj48c3BhbiBjbGFzcz0icGhvbmVOdW0iPiAnICsgZm9ybWF0UGhvbmVCZWZvcmVSZW5kZXIobG9jRGF0YS5tb2JpbGVQaG9uZSkgKyAnPC9zcGFuPjwvbGk+JzsKICAgIH0KICAgIGlmKGxvY0RhdGEuZmF4UGhvbmUpIHsKICAgICAgICBsaXN0ICs9ICc8bGk+PHNwYW4gY2xhc3M9InBob25lTGFiZWwiPkZheDo8L3NwYW4+PHNwYW4gY2xhc3M9InBob25lTnVtIj4gJyArIGZvcm1hdFBob25lQmVmb3JlUmVuZGVyKGxvY0RhdGEuZmF4UGhvbmUpICsgJzwvc3Bhbj48L2xpPic7CiAgICB9CiAgICBpZihsb2NEYXRhLnR0eVBob25lKSB7CiAgICAgICAgbGlzdCArPSAnPGxpPjxzcGFuIGNsYXNzPSJwaG9uZUxhYmVsIj5UVFk6PC9zcGFuPjxzcGFuIGNsYXNzPSJwaG9uZU51bSI+ICcgKyBmb3JtYXRQaG9uZUJlZm9yZVJlbmRlcihsb2NEYXRhLnR0eVBob25lKSArICc8L3NwYW4+PC9saT4nOwogICAgfQogICAgCiAgICBpZihsaXN0Lmxlbmd0aCA+IDApIHsKICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJyMnICsgdHlwZSArICdMaXN0JykuaHRtbChsaXN0KTsKICAgIH0gZWxzZSBpZiAoZGF0YS5pbkVkaXRvcikgewogICAgICAgICQoZWxlbWVudCkuaHRtbChlbXB0eUxpc3RQbGFjZUhvbGRlcik7CiAgICB9IGVsc2UgewogICAgICAgICQoZWxlbWVudCkuY3NzKCdkaXNwbGF5Jywnbm9uZScpOwogICAgfQogICAgCiAgICBlbWl0WWV4dFBob25lUmVuZGVyRXZlbnQoZm9ybWF0UGhvbmVCZWZvcmVSZW5kZXIobG9jRGF0YS5waG9uZSkpOwogICAgCn0KCnZhciBnZXROdW1EYXlzQmV0d2VlbiA9IGZ1bmN0aW9uKGQxLCBkMikgewogIHZhciBkaWZmID0gZDEuZ2V0VGltZSgpIC0gZDIuZ2V0VGltZSgpOwogIHJldHVybiBkaWZmIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpOwp9OwoKdmFyIG9yZGVyUGF5bWVudHNMaXN0ID0gZnVuY3Rpb24obGlzdERhdGEpIHsKICAgIAogICAgaWYobGlzdERhdGEuaW5kZXhPZignRGlzY292ZXInKSA+PSAwKSB7CiAgICAgICAgbGlzdERhdGEuc3BsaWNlKGxpc3REYXRhLmluZGV4T2YoIkRpc2NvdmVyIiksIDEpOwogICAgICAgIGxpc3REYXRhLnVuc2hpZnQoJ0Rpc2NvdmVyJyk7CiAgICB9CiAgICAKICAgIGlmKGxpc3REYXRhLmluZGV4T2YoJ0FtZXJpY2FuIEV4cHJlc3MnKSA+PSAwKSB7CiAgICAgICAgbGlzdERhdGEuc3BsaWNlKGxpc3REYXRhLmluZGV4T2YoIkFtZXJpY2FuIEV4cHJlc3MiKSwgMSk7CiAgICAgICAgbGlzdERhdGEudW5zaGlmdCgnQW1lcmljYW4gRXhwcmVzcycpOwogICAgfQogICAgCiAgICBpZihsaXN0RGF0YS5pbmRleE9mKCdNYXN0ZXJDYXJkJykgPj0gMCkgewogICAgICAgIGxpc3REYXRhLnNwbGljZShsaXN0RGF0YS5pbmRleE9mKCJNYXN0ZXJDYXJkIiksIDEpOwogICAgICAgIGxpc3REYXRhLnVuc2hpZnQoJ01hc3RlckNhcmQnKTsKICAgIH0KICAgIAogICAgaWYobGlzdERhdGEuaW5kZXhPZignVmlzYScpID49IDApIHsKICAgICAgICBsaXN0RGF0YS5zcGxpY2UobGlzdERhdGEuaW5kZXhPZigiVmlzYSIpLCAxKTsKICAgICAgICBsaXN0RGF0YS51bnNoaWZ0KCdWaXNhJyk7CiAgICB9CiAgICAKICAgIHJldHVybiBsaXN0RGF0YQp9Cgp2YXIgZGlzcGxheUltYWdlTGlzdCA9IGZ1bmN0aW9uKHR5cGUseWV4dERhdGEpIHsKICAgIHZhciBsaXN0ID0gIiI7CiAgICB2YXIgbGlzdERhdGEgPSBvcmRlclBheW1lbnRzTGlzdChfeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlXSk7CiAgICAKICAgIAogICAgZm9yICh2YXIgaT0wOyBpPCBsaXN0RGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgIAogICAgICAgIGxpc3QgKz0gJzxpbWcgc3JjPSInICsgZ2V0SW1hZ2VVcmwobGlzdERhdGFbaV0sZGF0YS5jb25maWcuY2FyZFN0eWxlRGFya09yTGlnaHQpICsgJyIgYWx0PSInICsgbGlzdERhdGFbaV0gKyAnIi8+JwogICAgfQogICAgCiAgICBpZihsaXN0Lmxlbmd0aCA+IDApIHsKICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJyNwYXltZW50T3B0aW9uc0ltYWdlcycpLmh0bWwobGlzdCkKICAgIH0gZWxzZSBpZiAoZGF0YS5pbkVkaXRvcikgewogICAgICAgICQoZWxlbWVudCkuaHRtbChlbXB0eUxpc3RQbGFjZUhvbGRlcik7CiAgICB9IGVsc2UgewogICAgICAgICQoZWxlbWVudCkuY3NzKCdkaXNwbGF5Jywnbm9uZScpOwogICAgfQogICAgCiAgICAKICAgIAp9Cgp2YXIgZGlzcGxheVNvY2lhbEljb25zID0gZnVuY3Rpb24odHlwZSx5ZXh0RGF0YSkgewogICAgdmFyIGxpc3QgPSAiIjsKICAgIAogICAgaWYoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlcy5mYWNlYm9va1BhZ2VVcmwpIHsKICAgICAgICBsaXN0ICs9ICc8YSBocmVmPSInICsgeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlcy5mYWNlYm9va1BhZ2VVcmwgKyAnIiB0YXJnZXQ9Il9ibGFuayI+IDxpbWcgc3JjPSJodHRwczovL2Nkbi53ZWJzaXRlcy5oaWJ1LmNvbS8tcmVzZWxsZXJzLXByZXZpZXcvX3NvY2lhbF9pY29ucy9oaWJ1X2ZhY2Vib29rLnN2ZyIgLz48L2E+JwogICAgfQogICAgaWYoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlcy50d2l0dGVySGFuZGxlKSB7CiAgICAgICAgbGlzdCArPSAnPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS8nICsgIHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXMudHdpdHRlckhhbmRsZSArICciIHRhcmdldD0iX2JsYW5rIj4gPGltZyBzcmM9Imh0dHBzOi8vY2RuLndlYnNpdGVzLmhpYnUuY29tLy1yZXNlbGxlcnMtcHJldmlldy9fc29jaWFsX2ljb25zL2hpYnVfdHdpdHRlci5zdmciIC8+PC9hPicKICAgIH0KICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXMuaW5zdGFncmFtSGFuZGxlKSB7CiAgICAgICAgbGlzdCArPSAnPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS8nKyB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzLmluc3RhZ3JhbUhhbmRsZSsnIiB0YXJnZXQ9Il9ibGFuayI+IDxpbWcgc3JjPSJodHRwczovL2Nkbi53ZWJzaXRlcy5oaWJ1LmNvbS8tcmVzZWxsZXJzLXByZXZpZXcvX3NvY2lhbF9pY29ucy9oaWJ1X2luc3RhZ3JhbS5zdmciIC8+PC9hPicKICAgIH0KICAgIAogICAgaWYobGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgJChlbGVtZW50KS5maW5kKCcjc29jaWFsSWNvbnMnKS5odG1sKGxpc3QpOwogICAgfSBlbHNlIGlmIChkYXRhLmluRWRpdG9yKSB7CiAgICAgICAgJChlbGVtZW50KS5odG1sKGVtcHR5TGlzdFBsYWNlSG9sZGVyKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJChlbGVtZW50KS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7CiAgICB9CiAgICAKICAgIAp9Cgp2YXIgZ2V0SW1hZ2VVcmwgPSBmdW5jdGlvbihuYW1lLHN0eWxlKSB7CiAgICB2YXIgY2RuUGF0aCA9ICdodHRwczovL2Nkbi53ZWJzaXRlcy5oaWJ1LmNvbS8tcmVzZWxsZXJzLXByZXZpZXcvX2NjX2ljb25zLyc7CiAgICBpZighc3R5bGUpIHsKICAgICAgICBzdHlsZSA9ICdfZC5zdmcnCiAgICB9CiAgICBpZiAobmFtZSA9PT0gIlpFTExFIil7CiAgICAgICAgbmFtZSA9ICJaZWxsZSIKICAgIH0KICAgIGlmIChuYW1lID09PSAiR29vZ2xlIFBheSIpewogICAgICAgIG5hbWUgPSAiQW5kcm9pZCBQYXkiCiAgICB9CiAgICBpZiAobmFtZSA9PT0gIktMQVJOQSIpewogICAgICAgIG5hbWUgPSAiS2xhcm5hIgogICAgfQogICAgdmFyIGltYWdlVXJsPScnOwogICAgc3dpdGNoIChuYW1lKSB7CiAgICAgICAgY2FzZSAnVmlzYSc6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ01hc3RlckNhcmQnOgogICAgICAgICAgICBpbWFnZVVybCA9ICBjZG5QYXRoICsgbmFtZS5yZXBsYWNlKC9bXFdfXSsvZywnJykudG9Mb3dlckNhc2UoKSArIHN0eWxlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdEaXNjb3Zlcic6CiAgICAgICAgICAgIGltYWdlVXJsID0gY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnQW1lcmljYW4gRXhwcmVzcyc6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0FuZHJvaWQgUGF5JzoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnQXBwbGUgUGF5JzoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnQml0Y29pbic6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0Nhc2gnOgogICAgICAgICAgICBpbWFnZVVybCA9ICBjZG5QYXRoICsgbmFtZS5yZXBsYWNlKC9bXFdfXSsvZywnJykudG9Mb3dlckNhc2UoKSArIHN0eWxlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdDaGVjayc6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0RpbmVycyBDbHViJzoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnRGlzY292ZXInOgogICAgICAgICAgICBpbWFnZVVybCA9ICBjZG5QYXRoICsgbmFtZS5yZXBsYWNlKC9bXFdfXSsvZywnJykudG9Mb3dlckNhc2UoKSArIHN0eWxlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdGaW5hbmNpbmcnOgogICAgICAgICAgICBpbWFnZVVybCA9ICBjZG5QYXRoICsgbmFtZS5yZXBsYWNlKC9bXFdfXSsvZywnJykudG9Mb3dlckNhc2UoKSArIHN0eWxlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdJbnZvaWNlJzoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnUGF5UGFsJzoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnU2Ftc3VuZyBQYXknOgogICAgICAgICAgICBpbWFnZVVybCA9ICBjZG5QYXRoICsgbmFtZS5yZXBsYWNlKC9bXFdfXSsvZywnJykudG9Mb3dlckNhc2UoKSArIHN0eWxlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJUcmF2ZWxlcidzIENoZWNrIjoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiWmVsbGUiOgogICAgICAgICAgICBpbWFnZVVybCA9ICBjZG5QYXRoICsgbmFtZS5yZXBsYWNlKC9bXFdfXSsvZywnJykudG9Mb3dlckNhc2UoKSArIHN0eWxlOwogICAgICAgICAgICBicmVhawogICAgICAgIGNhc2UgIktsYXJuYSI6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrCiAgICB9CiAgICByZXR1cm4gaW1hZ2VVcmwKfQoKZnVuY3Rpb24gZW1pdFlleHRQaG9uZVJlbmRlckV2ZW50KHBob25lKSB7CiAgICB2YXIgeWV4dFBob25lUmVuZGVyRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ1lleHRQaG9uZUNoYW5nZUV2ZW50JywgCiAgICAgICAgeyAKICAgICAgICAgICAgZGV0YWlsOiBwaG9uZSwgCiAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsIAogICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlIAogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoeWV4dFBob25lUmVuZGVyRXZlbnQpOwp9Cgp2YXIgaW5pdFlleHRFbGVtZW50cyA9IGZ1bmN0aW9uKHlleHREYXRhLHdpZGdldFR5cGUpewogICAgaWYgKHdpZGdldFR5cGUgPT09ICdhZGRyZXNzJyAmJiBkYXRhLmNvbmZpZy5kcmF3TWFwKSB7CiAgICAgICAgZHJhd01hcCh5ZXh0RGF0YSk7CiAgICB9IGVsc2UgaWYgKHdpZGdldFR5cGUgPT09ICdwYXltZW50T3B0aW9ucycgJiYgZGF0YS5jb25maWcuc2hvd1BheW1lbnRzQXMgPT09ICdwYXltZW50SWNvbnMnKSB7CiAgICAgICAgZGlzcGxheUltYWdlTGlzdCh3aWRnZXRUeXBlLHlleHREYXRhKTsKICAgIH0gZWxzZSBpZiAod2lkZ2V0VHlwZSA9PT0gJ3Bob25lJyAmJiBkYXRhLmNvbmZpZy5waG9uZVNob3dBcyA9PT0gJ2xpc3QnKSB7CiAgICAgICAgZGlzcGxheVBob25lTGlzdCh3aWRnZXRUeXBlLHlleHREYXRhKTsKICAgIC8vIGNoZWNrIGZvciBhbnkgbGlzdCB0eXBlCiAgICB9IGVsc2UgaWYod2lkZ2V0VHlwZSA9PT0gJ3Bob25lJyAmJiBkYXRhLmNvbmZpZy5waG9uZVNob3dBcyA9PT0gJ2J1dHRvbicpIHsKICAgICAgICB2YXIgcGhGb3JtYXR0ZWQgPSBmb3JtYXRQaG9uZUJlZm9yZVJlbmRlcih5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW2RhdGEuY29uZmlnLnBob25lVHlwZV0sZnVuY3Rpb24ocGhvbmUpIHsKICAgICAgICAgICAgJChlbGVtZW50KS5maW5kKCIuZG1CdXR0b25MaW5rIikuaHRtbCgnPHNwYW4gY2xhc3M9InRleHQiPicgKyBwaG9uZSArICc8L3NwYW4+Jyk7ICAgCiAgICAgICAgICAgIAogICAgICAgICAgICBlbWl0WWV4dFBob25lUmVuZGVyRXZlbnQocGhvbmUpOwogICAgICAgICAgICAKICAgICAgICB9KTsKICAgIH0gZWxzZSBpZih3aWRnZXRUeXBlID09PSAncGhvbmUnICYmIGRhdGEuY29uZmlnLnBob25lU2hvd0FzID09PSAndGV4dCcpIHsKICAgICAgICB2YXIgcGhGb3JtYXR0ZWQgPSBmb3JtYXRQaG9uZUJlZm9yZVJlbmRlcih5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW2RhdGEuY29uZmlnLnBob25lVHlwZV0sZnVuY3Rpb24ocGhvbmUpIHsKICAgICAgICAgICAgJChlbGVtZW50KS5maW5kKCcueWV4dFBob25lVGV4dCcpLmh0bWwoJzxzcGFuIGNsYXNzPSJ0ZXh0Ij4nICsgcGhvbmUgKyAnPC9zcGFuPicpOyAgIAogICAgICAgICAgICAKICAgICAgICAgICAgZW1pdFlleHRQaG9uZVJlbmRlckV2ZW50KHBob25lKTsKICAgICAgICAgICAgCiAgICAgICAgfSk7CiAgICB9IGVsc2UgaWYgKHdpZGdldFR5cGUgPT09ICdzZXJ2aWNlcycgfHwgd2lkZ2V0VHlwZSA9PT0gJ2dvb2dsZUF0dHJpYnV0ZXNGb3JtYXR0ZWQnIHx8IHdpZGdldFR5cGUgPT09ICdsYW5ndWFnZXMnIHx8IHdpZGdldFR5cGUgPT09ICdwYXltZW50T3B0aW9ucycgfHwgd2lkZ2V0VHlwZSA9PT0gJ2tleXdvcmRzJyB8fCB3aWRnZXRUeXBlID09PSAncHJvZHVjdHMnIHx8IHdpZGdldFR5cGUgPT09ICdhc3NvY2lhdGlvbnMnIHx8IHdpZGdldFR5cGUgPT09ICdicmFuZHMnKSB7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgCiAgICAgICAgICAgIGRpc3BsYXlUZXh0ZExpc3Qod2lkZ2V0VHlwZSx5ZXh0RGF0YSkKICAgICAgICB9LDEpOwogICAgfSBlbHNlIGlmKHdpZGdldFR5cGUgPT09ICdzcGVjaWFsdGllcycpIHsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBkaXNwbGF5U3BlY2lhbHRpZXMoeWV4dERhdGEpCiAgICAgICAgfSwxKQogICAgfWVsc2UgaWYgKHdpZGdldFR5cGUgPT09J3NlcnZpY2VBcmVhJykgewogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGRpc3BsYXlTZXJ2aWNlQXJlYSh3aWRnZXRUeXBlLHlleHREYXRhLGRhdGEuY29uZmlnLnNob3dTZXJ2aWNlQXJlYUZpcnN0KQogICAgICAgIH0sMSkKICAgIH0gZWxzZSBpZiAod2lkZ2V0VHlwZSA9PT0naG91cnMnICYmIGRhdGEuY29uZmlnLmhvdXJzU2hvd0FzID09PSAnbGlzdCcgJiYgZGF0YS5jb25maWcuaXNMaXN0ID09IGZhbHNlKSB7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgZGlzcGxheUhvdXJzKHdpZGdldFR5cGUseWV4dERhdGEpCiAgICAgICAgfSwxKQogICAgfSBlbHNlIGlmICh3aWRnZXRUeXBlID09PSdob3VycycgJiYgZGF0YS5jb25maWcuaG91cnNTaG93QXMgPT09ICdvcGVuSG91cnMnKSB7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgZGlzcGxheU9wZW5Ib3Vycyh3aWRnZXRUeXBlLHlleHREYXRhKQogICAgICAgIH0sMSkKICAgIH0gZWxzZSBpZiAod2lkZ2V0VHlwZSA9PT0gJ3NvY2lhbCcpIHsKICAgICAgICBkaXNwbGF5U29jaWFsSWNvbnMod2lkZ2V0VHlwZSx5ZXh0RGF0YSk7CiAgICB9IGVsc2UgaWYgKHdpZGdldFR5cGUgPT09ICdob2xpZGF5SG91cnMnKSB7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgCiAgICAgICAgICAgIGRpc3BsYXlIb2xpZGF5SG91cnNMaXN0KHdpZGdldFR5cGUseWV4dERhdGEpCiAgICAgICAgfSwxKTsKICAgIH0gZWxzZSBpZiAod2lkZ2V0VHlwZSA9PT0gJ2hvdXJzJykgewogICAgICAgIC8vaGlkZSBob3VycyBsaXN0IGlmIHRvZ2dsZSBlbmFibGVkCiAgICAgICAgaWYoZGF0YS5jb25maWcuaGlkZUhvdXJzTGlzdCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJy55ZXh0SG91cnMnKS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICh3aWRnZXRUeXBlID09PSAnZGVzY3JpcHRpb24nIHx8IHdpZGdldFR5cGUgPT09ICd5ZWFyRXN0YWJsaXNoZWQnIHx8IHdpZGdldFR5cGUgPT09ICdlbWFpbCcgfHwgd2lkZ2V0VHlwZSA9PT0gJ25hbWUnKSB7CiAgICAgICAgLy8gY2hlY2sKICAgICAgICBoaWRlSWZFbXB0eSh3aWRnZXRUeXBlLHlleHREYXRhKQogICAgfQogICAgLy9yZW1vdmUgZXJyb3IgaWYgc2NyaXB0IG5vdCBlbnRlcmVkIGNvcnJlY3RseS4KICAgICQoZWxlbWVudCkuZmluZCgnLndyb25nU2NyaXB0RXJyb3InKS5yZW1vdmVDbGFzcygnaGFzRXJyb3InKTsKICAgIAp9CgpmdW5jdGlvbiBoaWRlSWZFbXB0eSh0eXBlLHlleHREYXRhKSB7CiAgICBpZigheWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlXSkgewogICAgICAgIGlmKGRhdGEuaW5FZGl0b3IpIHsKICAgICAgICAgICAgJChlbGVtZW50KS5odG1sKGVtcHR5TGlzdFBsYWNlSG9sZGVyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkKGVsZW1lbnQpLmNzcygnZGlzcGxheScsJ25vbmUnKTsgICAgCiAgICAgICAgfQogICAgICAgIAogICAgfQp9CgovLyBUT0RPIENIQU5HRSBUTyBFVkVOVCBDQUxMIEJBQ0sKdmFyIHN0YXJ0SW50ZXJ2YWxUb1dhaXRBbmRMb2FkV2lkZ2V0cyA9IGZ1bmN0aW9uKHdpZGdldFR5cGUpIHsKICAgIC8vc3RhcnQgaW50ZXJ2YWwgZm9yIHRoaXMgc3BlY2lmaWMgd2lkZ2V0CiAgICB2YXIgaW50ZXJ2YWxDaGVja1lleHRMb2FkZWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICAgIGlmICh3aW5kb3cuX3lleHREYXRhKSB7CiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxDaGVja1lleHRMb2FkZWQpOwogICAgICAgICAgICBpbml0WWV4dEVsZW1lbnRzKHdpbmRvdy5feWV4dERhdGEsd2lkZ2V0VHlwZSk7CiAgICAgICAgfSAKICAgIH0sNTApCn0KCgovKiBpbml0aWFsaXphdGlvbiAqLwppZihkYXRhLmluRWRpdG9yKXsKICAgIHdpbmRvdy5yZWZyZXNoWWV4dCAmJiB3aW5kb3cucmVmcmVzaFlleHQoKTsKICAgIAogICAgCiAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgIGlmKCF3aW5kb3cueWV4dEluaXRpYWxpemVkKXsKICAgICAgICAgICAgJChlbGVtZW50KS5maW5kKCcubWlzc2luZ1lleHRXaWRnZXQnKS5hZGRDbGFzcygnc2hvdycpOyAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJy5taXNzaW5nWWV4dFdpZGdldCcpLnJlbW92ZUNsYXNzKCdzaG93Jyk7IAogICAgICAgIH0KICAgIH0pOwogICAgCn0gZWxzZSB7CiAgICBkbUFQSS5ydW5PblJlYWR5KCd5ZXh0JyAsIGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZFlleHQoKTsKICAgfSk7CiAgICAvLyBCZWZvcmUgbmF2aWdhdGluZyB3aXRoIEFqYXgsIHdlIHNldCB0aGUgeWV4dCBpbml0aWFsaXplZCB0byBiZSBmYWxzZSBzbyBpdCB3aWxsIGJlIGluaXRpYWxpemVkIGFnYWluIGFmdGVyIHRoZSBhamF4IG5hdmlnYXRpb24KICAgIGRtQVBJLnJ1bkJlZm9yZUFqYXhOYXZpZ2F0aW9uKCd5ZXh0JywgZnVuY3Rpb24oKXsKICAgICAgICB3aW5kb3cueWV4dEluaXRpYWxpemVkID0gZmFsc2U7CiAgICB9KTsKfQ==","css":".editorOnlyInfo, .multipleYextError, .wrongScriptError {\n display: none;\n max-width: 350px;\n background: #fff;\n text-align: left;\n padding: 10px;\n line-height: normal;\n font-size: 14px;\n}\n\n.editorOnlyInfo.inEditor {\n display: block;\n color: #3ac280;\n}\n\n.multipleYextError.hasError, .wrongScriptError.hasError {\n display: block;\n color: red;\n}\n\n.widget-7b6cfb .dmWidget.yextButton {\n width: 100%;\n}\n\n#dm .widget-7b6cfb {\n line-height: normal !important;\n}\n\na.getDirections {\n display: block;\n}\n\n.yextButton.show {\n display: inline-block;\n}\n\n.yextButton .text {\n display: table-cell;\n vertical-align: middle;\n}\n\n.yextMap {\n height: 100%;\n width: 100%;\n overflow: hidden;\n z-index: 0;\n text-align: left;\n margin: 0 auto;\n}\n\n.yextHours {\n text-align: left;\n width: 300px;\n}\n\n.yextHours .row {\n display: flex;\n}\n\n.yextHours .row .left, .yextHours .row .right {\n flex: 1;\n align-self: center;\n}\n\n.yextAdditionalHoursText {\n display: inline-block;\n}\n\n.yextAddress {\n text-align: left;\n}\n\n#paymentOptionsImages img {\n display: inline-block;\n width: 60px;\n margin-right: 5px;\n margin-bottom: 5px;\n}\n\n#socialIcons a {\n display: inline-block;\n width: 50px;\n margin-right: 5px;\n margin-bottom: 5px;\n}\n\n.bullet {\n list-style-type: disc;\n}\n\n.no-list {\n list-style-type: none;\n}\n\n.circle {\n list-style-type: circle;\n}\n\n.square {\n list-style-type: square;\n}\n\n.decimal {\n list-style-type: decimal;\n}\n\n.bold {\n font-weight: bold;\n}\n\n#socialIcons {\n display: flex;\n}\n\n#socialIcons.left {\n justify-content: flex-start;\n}\n\n#socialIcons.right {\n justify-content: flex-end;\n}\n\n#socialIcons.center {\n justify-content: center;\n}\n\nul[id*=List] {\n margin: 0;\n}\n\nh3[class*=Header] {\n margin: 10px 0;\n}\n\n.yextEmail {\n display: block;\n}\n\n.picons-left {\n text-align: left;\n}\n\n.picons-right {\n text-align: right;\n}\n\n.picons-center {\n text-align: center;\n}\n\n.openedStatus {\n color: #3ac280;\n}\n\n.allDayStatus {\n color: #3ac280;\n}\n\n.closedStatus {\n color: #FF0000;\n}\n\n.soonStatus {\n color: #FF7322;\n}\n","strings":{}},{"widgetId":"afd4bc7f907140298e111130d715031d","version":102,"js":"bGV0IEhhc09wZW5lZE1lbnUgPSBmYWxzZTsNCg0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQogICBkaXNwbGF5VHlwZSgpOw0KfSk7DQoNCmZ1bmN0aW9uIGRpc3BsYXlUeXBlKCkgew0KICAgIGlmKGlzTW9iaWxlKCkpIHsNCiAgICAgICAgZGlzcGxheU1vYmlsZSgpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGRpc3BsYXlEZXNrdG9wKCk7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBkaXNwbGF5TW9iaWxlKCkgew0KICAgIHZhciBtYXN0ZXJGYWJFbGUgPSAkKGVsZW1lbnQpLmZpbmQoJyNtYXN0ZXJmYWInKTsNCiAgICAkKCcjbWFpbi1jb250YWluZXInKS5lbXB0eSgpLmFwcGVuZChnZXRTdmcoZGF0YS5jb25maWcuTW9iaWxlTWFpbikpOw0KICAgIA0KICAgICQobWFzdGVyRmFiRWxlKS5hdHRyKCdjbGFzcycsICdmYWIgbWFzdGVyLW1vYmlsZScpOy8vIGFkZCBtb2JpbGUgY2xhc3MgZm9yIGN1c3RvbSBzdHlsZQ0KICAgIA0KICAgICQobWFzdGVyRmFiRWxlKS5jc3MoJ2Rpc3BsYXknLCAnZmxleCcpOyAvL3NpbmNlIGVsZW1lbnQgaXMgaGlkZGVuIGJ5IGRlZmF1bHQsIHNob3cgaW5zdGVhZA0KICAgIA0KICAgIC8vIHNldCB0aGUgdGV4dCBhbGlnbm1lbnQgdmFyIGhlcmUgZm9yIHVzZSBiZWxvdyAodXBkYXRlIEJTUjoyMDIwMDQyMSkNCiAgICB2YXIgbW9UZXh0ID0gKGRhdGEuY29uZmlnLk1vYmlsZU9yaWVudGF0aW9uID09PSAnbGVmdCcpID8gJ2JzclJpZ2h0VGV4dCcgOiAnbGVmdFRleHQnOw0KICAgIA0KICAgICQoJy5tb2JpbGUtYmcnKS5hZnRlcihnZXRJdGVtcyhtb1RleHQpKTsNCiAgICANCiAgICBtb2JpbGVUaGVtZSgpOyAgLy8gYWRkIGxpZ2h0IG9yIGRhcmsgdGhlbWUNCiAgICBic3JJY29uUmVzaXplKCk7IC8vIG1ha2VzIGEgY3VzdG9tIGljb24gcmVzaXphYmxlICh1cGRhdGUgQlNSOjIwMjAwNTI5KQ0KICAgIGJzck1vYmlsZU9yaWVudGF0aW9uKCk7IC8vIHBvc2l0aW9ucyBtZW51IGxlZnQgb3IgcmlnaHQgKHVwZGF0ZSBCU1I6MjAyMDA0MjEpDQogICAgYWRkTGlzdGVuZXIoKTsNCiAgICANCiAgICBpZiAodHlwZW9mIGZicSA9PT0gImZ1bmN0aW9uIikgeyAvLyB0aGlzIG1ha2VzIHN1cmUgdGhhdCBmYnEgaXMgb24gdGhlIHBhZ2UNCiAgICAgICAgYWRkUGl4ZWxMaXN0ZW5lcigpOyAvLyBGYWNlYm9vayBQaXhlbCBjb252ZXJzaW9uIHRyYWNraW5nICh1cGRhdGUgQlNSOjIwMjAwNDIyKQ0KICAgIH0NCiAgICBhZGRDaGF0TGlzdGVuZXIoKTsgLy8gQWRkIGNoYXQgc2NyaXB0IGluamVjdGlvbiAodXBkYXRlIEJTUjoyMDIwMDUyNikNCiAgICANCiAgICAvLyBhZGQgZm9jdXMgYW5pbWF0aW9uDQogICAgaWYoZGF0YS5jb25maWcuRm9jdXNBbmkpIGFuaW1hdGVGb2N1cygpOw0KfQ0KZnVuY3Rpb24gZGlzcGxheURlc2t0b3AoKSB7DQogICAgdmFyIG1hc3RlckZhYkVsZSA9ICQoZWxlbWVudCkuZmluZCgnI21hc3RlcmZhYicpOw0KICAgICQobWFzdGVyRmFiRWxlKS5jc3MoJ2Rpc3BsYXknLCAnZmxleCcpOyAvL3NpbmNlIGVsZW1lbnQgaXMgaGlkZGVuIGJ5IGRlZmF1bHQsIHNob3cgaW5zdGVhZA0KICAgIGlmKGRhdGEuY29uZmlnLkRlc2t0b3BMYXlvdXQgPT09ICdCYXInKSB7DQogICAgICAgICQoJyNtYWluLWNvbnRhaW5lcicpLmVtcHR5KCkuYXBwZW5kKGdldFN2ZyhkYXRhLmNvbmZpZy5EZXNrTWFpbikpOw0KICAgICAgICAkKG1hc3RlckZhYkVsZSkuYXBwZW5kKGdldEl0ZW1zKCdyaWdodFRleHQnKSk7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICAkKCcjZmxvYXQtY29udGFpbmVyJykuZW1wdHkoKS5hcHBlbmQoZ2V0SXRlbXMoJ3JpZ2h0VGV4dCcsIHRydWUpKTsNCiAgICB9DQogICAgZGVza3RvcFR5cGUoKTsNCiAgICBic3JJY29uUmVzaXplKCk7IC8vIG1ha2VzIGEgY3VzdG9tIGljb24gcmVzaXphYmxlICh1cGRhdGUgQlNSOjIwMjAwNTI5KQ0KICAgIGFkZExpc3RlbmVyKCk7DQogICAgDQogICAgaWYgKHR5cGVvZiBmYnEgPT09ICJmdW5jdGlvbiIpIHsgLy8gdGhpcyBtYWtlcyBzdXJlIHRoYXQgZmJxIGlzIG9uIHRoZSBwYWdlDQogICAgICAgIGFkZFBpeGVsTGlzdGVuZXIoKTsgLy8gRmFjZWJvb2sgUGl4ZWwgY29udmVyc2lvbiB0cmFja2luZyAodXBkYXRlIEJTUjoyMDIwMDQyMikNCiAgICB9DQogICAgYWRkQ2hhdExpc3RlbmVyKCk7IC8vIEFkZCBjaGF0IHNjcmlwdCBpbmplY3Rpb24gKHVwZGF0ZSBCU1I6MjAyMDA1MjYpDQogICAgDQogICAgLy8gYWRkIGZvY3VzIGFuaW1hdGlvbg0KICAgIGlmKGRhdGEuY29uZmlnLkZvY3VzQW5pKSBhbmltYXRlRm9jdXMoKTsNCn0NCi8vIGhhbmRsZXMgc3R5bGUgY2hhbmdlcyBmb3IgZGVza3RvcCB0eXBlcw0KZnVuY3Rpb24gZGVza3RvcFR5cGUoKSB7DQogICAgJCgnI21hc3RlcmZhYicpLmF0dHIoJ2NsYXNzJywgJ2ZhYiBtYXN0ZXItZGVza3RvcCcpOyAvLyBhZGQgZGVza3RvcCBjbGFzcyBmb3Igc3R5bGluZw0KICAgICQoJy5pY29uLWNvbnRhaW5lcicpLmFkZENsYXNzKCdkZXNrdG9wJyk7DQogICAgaWYoZGF0YS5jb25maWcuRGVza3RvcExheW91dCA9PT0gJ0JhcicpIHsNCiAgICAgICAgJCgnLm1lbnUtbGluaycpLmFkZENsYXNzKCdkZXNrLWJhcicpOyAgICAgICAvLyBhZGQgY2xhc3MgZm9yIGZpeGVkIGJhciB0ZXh0DQogICAgICAgICQoJy5jaGlsZCcpLmF0dHIoJ2NsYXNzJywgJ2ZhYiBjaGlsZCBjaGlsZC1kZXNrdG9wLWJhcicpOw0KICAgICAgICANCiAgICAgICAgY29uc3QgbWFzdGVyTGFiZWwgPSAnPHNwYW4gaWQ9Im1hc3Rlci1sYWJlbCI+JytkYXRhLmNvbmZpZy5NYWluTGFiZWwrJzwvc3Bhbj4nOw0KICAgICAgICAkKCcjbWFzdGVyLWxhYmVsJykucmVtb3ZlKCk7DQogICAgICAgICQoJyNtYXN0ZXJmYWInKS5hcHBlbmQobWFzdGVyTGFiZWwpOw0KICAgICAgICANCiAgICAgICAgJCgnI21hc3RlcmZhYicpLmFkZENsYXNzKCdtYXN0ZXItYmFyJyk7DQogICAgfSBlbHNlIGlmKGRhdGEuY29uZmlnLkRlc2t0b3BMYXlvdXQgPT09ICdGbG9hdCcpIHsNCiAgICAgICAgJCgnI21hc3RlcmZhYicpLmhpZGUoKTsNCiAgICB9DQp9DQovLyBzdHlsZXMgbGlnaHQgYW5kIGRhcmsgbW9iaWxlIHRoZW1lcw0KZnVuY3Rpb24gbW9iaWxlVGhlbWUoKSB7DQogICAgJCgnLmNoaWxkJykuYXR0cignY2xhc3MnLCAnZmFiIGNoaWxkIGNoaWxkLW1vYmlsZScpOw0KICAgIGlmKGRhdGEuY29uZmlnLk1vYmlsZVRoZW1lID09PSAnTGlnaHQnKSB7DQogICAgICAgICQoJy5vdmVybGF5LCAuY2hpbGQsIC5zb2NpYWwtaWNvbiwgLmljb24tY29udGFpbmVyLCAubW9iaWxlLWJnLCBzb2NpYWwtYmcsIC5tZW51LWxpbmsnKS5hZGRDbGFzcygnbW9iaWxlIGxpZ2h0Jyk7DQogICAgfQ0KICAgIGVsc2UgaWYoZGF0YS5jb25maWcuTW9iaWxlVGhlbWUgPT09ICdEYXJrJykgew0KICAgICAgICAkKCcub3ZlcmxheSwgLmNoaWxkLCAuc29jaWFsLWljb24sIC5pY29uLWNvbnRhaW5lciwgLm1vYmlsZS1iZywgc29jaWFsLWJnLCAubWVudS1saW5rJykuYWRkQ2xhc3MoJ21vYmlsZSBkYXJrJyk7DQogICAgfQ0KfQ0KLy8gYWRkcyB0aGUgbWVudSB0byB0aGUgbGVmdCBvciByaWdodCBvZiB0aGUgbW9iaWxlIHNjcmVlbiAodXBkYXRlIEJTUjoyMDIwMDQyMSkNCmZ1bmN0aW9uIGJzck1vYmlsZU9yaWVudGF0aW9uKCkgew0KICAgIGlmKGRhdGEuY29uZmlnLk1vYmlsZU9yaWVudGF0aW9uID09PSAnbGVmdCcpIHsNCiAgICAgICAgJCgnLmZhYi5tYXN0ZXItbW9iaWxlLCAuY2hpbGQubW9iaWxlJykuYWRkQ2xhc3MoJ2Jzci1sZWZ0Jyk7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICAkKCcuZmFiLm1hc3Rlci1tb2JpbGUsIC5jaGlsZC5tb2JpbGUnKS5yZW1vdmVDbGFzcygnYnNyLWxlZnQnKTsNCiAgICB9DQp9DQoNCi8qICANCiAgICBQcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBwbGFjZXMgY3VzdG9tIGljb25zIGluIGEgbmV3IDxkaXY+DQogICAgSSBmb3VuZCB0aGlzIHRvIGJlIGluY29uc2lzdGVudCBpbiByZXNpemluZyBzbyB0aGUgZnVuY3Rpb24NCiAgICBhZGRzIHRoZSBhcHByb3ByaWF0ZSBjbGFzcyBkaXJlY3RseSB0byB0aGUgc3ZnIGVsZW1lbnQNCiAgICAodXBkYXRlIEJTUjoyMDIwMDUyOSkNCiovDQpmdW5jdGlvbiBic3JJY29uUmVzaXplKCkgew0KICAgIGN1c3RvbUljb25zID0gJChlbGVtZW50KS5maW5kKCcuY3VzdG9tLXVzZXItaWNvbicpOw0KICAgIGlmKGN1c3RvbUljb25zLmxlbmd0aCA+IDApIHsNCiAgICAgICAgJC5lYWNoKGN1c3RvbUljb25zLCBmdW5jdGlvbihpLCBjaWNvbikgew0KICAgICAgICAgICAgdmFyIGNsYXNzTGlzdCA9ICQoY2ljb24pLmF0dHIoJ2NsYXNzJykuc3BsaXQoL1xzKy8pOw0KICAgICAgICAgICAgJC5lYWNoKGNsYXNzTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGl0ZW0pIHsNCiAgICAgICAgICAgICAgICBpZihpdGVtICE9ICdjdXN0b20tdXNlci1pY29uJykgew0KICAgICAgICAgICAgICAgICAgICQoICIuIiArIGl0ZW0gKyAiID4gc3ZnIiApLmFkZENsYXNzKGl0ZW0pOyAvLyBhZGQgdGhlIGNhbGxpbmcgY2xhc3MgdG8gdGhlIGNoaWxkIHN2ZyBlbGVtZW50IGRpcmVjdGx5DQogICAgICAgICAgICAgICAgICAgJCggIi4iICsgaXRlbSArICIgPiBzdmciICkudW53cmFwKCk7IC8vIHJlbW92ZSB0aGUgcGFyZW50IGRpdg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICB9DQp9DQoNCg0KLy8gYWRkcyBjbGljayBvciBob3ZlciBsaXN0ZW5lcnMNCmZ1bmN0aW9uIGFkZExpc3RlbmVyKCkgew0KICAgIC8vIGFkZCBsaXN0ZW5lciBhbmQgYW5pbWF0aW9uIGZvciBmbG9hdGluZyBpY29ucyBob3ZlciBhbmltYXRpb24NCiAgICBpZighaXNNb2JpbGUoKSAmJiBkYXRhLmNvbmZpZy5EZXNrdG9wTGF5b3V0ID09PSAnRmxvYXQnKSBhbmltYXRlRmxvYXQoJy5mbG9hdC1jb250YWluZXInLCAzMDApOw0KICAgIC8vIGNsaWNrIGhhbmRsZXJzIGZvciBkZXNrdG9wIGJhciBhbmQgbW9iaWxlIG9wdGlvbnMNCiAgICBlbHNlIHsNCiAgICAgICAgJCgiI2NvbnZlcnNpb24tbWVudS1jb250YWluZXIiKS5vZmYoJ2NsaWNrJywgJy5mYWIsLm92ZXJsYXknKTsNCiAgICAgICAgJCgiI2NvbnZlcnNpb24tbWVudS1jb250YWluZXIiKS5vbignY2xpY2snLCAnLmZhYiwub3ZlcmxheScsIGZ1bmN0aW9uKCl7DQogICAgICAgICAgICBIYXNPcGVuZWRNZW51ID0gdHJ1ZTsNCiAgICAgICAgICAgICQoJy5hbmltYXRpb24nKS5yZW1vdmUoKTsgICAvLyByZW1vdmUgYW55IGFuaW1hdGlvbnMgd2UgaGF2ZQ0KICAgICAgICAgICAgaWYoaXNNb2JpbGUoKSkgew0KICAgICAgICAgICAgICAgIGFuaW1hdGVJY29ucygnb3ZlcmxheScpOw0KICAgICAgICAgICAgICAgIGRhdGEuY29uZmlnLk1vYmlsZUxheW91dCA9PT0gJ0Z1bGwnPyBhbmltYXRlQmcoJy5tb2JpbGUtYmcnKSA6ICcnOw0KICAgICAgICAgICAgfSBlbHNlIHsgICAgLy8gYmFyIGRlc2t0b3ANCiAgICAgICAgICAgICAgICBhbmltYXRlSWNvbnMoJ2hlbHBUZXh0Jyk7DQogICAgICAgICAgICAgICAgYW5pbWF0ZUJnKCcuZGVza3RvcC1iZycpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQp9DQoNCi8vIGxpc3RlbnMgZm9yIHNoYXJlIGJ1dHRvbiBjbGljayBhbmQgdHJpZ2dlcnMgcmVzcG9uc2UNCmZ1bmN0aW9uIGFkZFNoYXJlTGlzdGVuZXIoKSB7DQogICAgJCgiI2NvbnZlcnNpb24tbWVudS1jb250YWluZXIiKS5vZmYoJ2NsaWNrJywgJy5zaGFyZScpOw0KICAgICQoIi5zaGFyZSIpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgICAgICAvLyBjb25zb2xlLmxvZygnc2hhcmUgY2xpY2tlZCBtb2RhbCBzaG91bGQgb3BlbicpOw0KICAgICAgICBNaWNyb01vZGFsLnNob3coJ3NvY2lhbC1tb2RhbC1tZW51Jyk7IA0KICAgIH0pOw0KfQ0KZnVuY3Rpb24gYWRkUGl4ZWxMaXN0ZW5lcigpIHsNCiAgICAkKCcuYnNyLW1lbnVsaW5rJykuY2xpY2soZnVuY3Rpb24oKSB7DQogICAgICAgIHZhciBldmVudE5hbWUgPSAkKHRoaXMpLmRhdGEoJ2V2ZW50bmFtZScpOw0KICAgICAgICBpZighZXZlbnROYW1lKSB7DQogICAgICAgICAgICBmYnEoJ3RyYWNrJywgJ0NvbnRhY3QnKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGZicSgndHJhY2tDdXN0b20nLCBldmVudE5hbWUpOw0KICAgICAgICB9DQogICAgfSk7DQp9DQpmdW5jdGlvbiBhZGRDaGF0TGlzdGVuZXIoKSB7DQogICAgJCgiLmJzci1jaGF0Iikub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgICAgICQoIiNjaGF0LXNjcmlwdCIpLnJlbW92ZSgpOyAvLyBHZXQgcmlkIG9mIGFueSBjaGF0LXNjcmlwdCBvbiB0aGUgcGFnZQ0KICAgICAgICAkLmVhY2goZGF0YS5jb25maWcuSWNvbkxpc3QsIGZ1bmN0aW9uKGluZGV4LHZhbHVlKXsNCiAgICAgICAgICAgIGlmKHZhbHVlLmhhc093blByb3BlcnR5KCdDaGF0U2NyaXB0JykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGNzY3JpcHQgPSB2YWx1ZS5DaGF0U2NyaXB0Ow0KICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBzY3JpcHQgaXMgYSBzcmMgb3IgcmF3IHNjcmlwdA0KICAgICAgICAgICAgICAgIC8vIENoYW5nZWQgbWluZCBhbmQgd2FudGVkIHRvIGlucHV0IDxzY3JpcHQ+IHRhZ3Mgc28gdGhpcyBpcyBzYXZlZCBmb3IgcG9zdGVyaXR5DQogICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKCdeKD86W2Etel0rOik/Ly8nLCAnaScpOyAvLyBub24gY2FzZS1zZW5zaXRpdmUsIHByb3RvY29sLWFnbm9zdGljIA0KICAgICAgICAgICAgICAgIGlmIChyZS50ZXN0KGNzY3JpcHQpKSB7DQogICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoJzxzY3JpcHQgYXN5bmM9ImFzeW5jIiBzcmM9IicgKyBjc2NyaXB0ICsgJyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBpZD0iY2hhdC1zY3JpcHQiPjxcL3NjcmlwdD4nKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBicmVhayBvdXQgb2YgdGhlICQuZWFjaCgpIG9uIGZpcnN0IG9jY3VyZW5jZQ0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBpZD0iY2hhdC1zY3JpcHQiPicgKyBjc2NyaXB0ICsgJzxcL3NjcmlwdD4nKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBicmVhayBvdXQgb2YgdGhlICQuZWFjaCgpIG9uIGZpcnN0IG9jY3VyZW5jZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoY3NjcmlwdCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgIH0pOw0KfQ0KLy8NCi8vIEFOSU1BVElPTlMNCi8vDQpmdW5jdGlvbiBhbmltYXRlRm9jdXMoKSB7DQogICAgJCgnLmFuaW1hdGlvbicpLnJlbW92ZSgpOyAgIC8vaW4gY2FzZSBhbHJlYWR5IGluIERPTQ0KICAgIGlmKCFIYXNPcGVuZWRNZW51KSB7DQogICAgICAgIGlmKGlzTW9iaWxlKCkpIHsNCiAgICAgICAgICAgIGNvbnN0IHB1bHNlID0gJzxkaXYgY2xhc3M9InB1bHNlMiBhbmltYXRpb24iLz48ZGl2IGNsYXNzPSJwdWxzZSBhbmltYXRpb24iLz4nOw0KICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAkKCcjbWFzdGVyZmFiJykuYXBwZW5kKHB1bHNlKTsNCiAgICAgICAgICAgIH0sICtkYXRhLmNvbmZpZy5Gb2N1c0RlbGF5KTsNCiAgICAgICAgfQ0KICAgICAgICAvLyBkZXNrdG9wDQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgZGF0YS5jb25maWcuRGVza3RvcExheW91dCA9PT0gJ0Zsb2F0Jz8NCiAgICAgICAgICAgICAgICBhbmltYXRlRmxvYXRGb2N1cygpIDogYW5pbWF0ZUJhckZvY3VzKCk7DQogICAgICAgIH0NCiAgICB9DQp9DQpmdW5jdGlvbiBhbmltYXRlRmxvYXRGb2N1cygpIHsNCiAgICBpZigkKCcuZm9jdXMnKVswXSkgew0KICAgICAgICBjb25zdCBpZCA9ICQoJy5mb2N1cycpWzBdLmlkOw0KICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgJCgnIycraWQpLmNzcygnbWF4LXdpZHRoJywgJycpOw0KICAgICAgICAgICAgJCgnIycraWQpLmFkZENsYXNzKCdzbGlkZS1wdWxzZScpOw0KICAgICAgICB9LCArZGF0YS5jb25maWcuRm9jdXNEZWxheSk7DQogICAgfQ0KfQ0KLy8gb3BlbnMgZml4ZWQgYmFyIG9uIGRlc2t0b3AgYWZ0ZXIgc2V0IGludGVydmFsDQpmdW5jdGlvbiBhbmltYXRlQmFyRm9jdXMoKSB7DQogICAgaWYoISQoIi5kZXNrdG9wLWJnIikuaXMoIjp2aXNpYmxlIikpIHsNCiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIGFuaW1hdGVJY29ucygnaGVscFRleHQnKTsNCiAgICAgICAgICAgIGFuaW1hdGVCZygnLmRlc2t0b3AtYmcnKTsNCiAgICAgICAgfSwgK2RhdGEuY29uZmlnLkZvY3VzRGVsYXkpOw0KICAgIH0NCn0NCi8vIGFkZHMgaG92ZXIgbGlzdGVuZXJzIGFuZCBhbmltYXRlcyBmbG9hdGluZyBpY29ucyBvbiBkZXNrdG9wDQpmdW5jdGlvbiBhbmltYXRlRmxvYXQoc2VsZWN0b3IsIGR1cikgew0KICAgICQoIiNmbG9hdC1jb250YWluZXIiKS5vZmYoIm1vdXNlZW50ZXIiLCBzZWxlY3Rvcik7DQogICAgJCgiI2Zsb2F0LWNvbnRhaW5lciIpLm9uKCJtb3VzZWVudGVyIiwgc2VsZWN0b3IsIGZ1bmN0aW9uKGV2ZW50KSB7DQogICAgICAgIC8vIGNvbnNvbGUubG9nKCdmbG9hdCBtb3VzZSBlbnRlcicpOw0KICAgICAgICBIYXNPcGVuZWRNZW51ID0gdHJ1ZTsNCiAgICAgICAgdmFyIGlkID0gJCh0aGlzKVswXS5pZDsNCiAgICAgICAgLy8gY2FuY2VsIGFuaW1hdGlvbiBvbiBob3Zlcg0KICAgICAgICBkYXRhLmNvbmZpZy5Gb2N1c0FuaT8gJCgnIycraWQpLnJlbW92ZUNsYXNzKCdzbGlkZS1wdWxzZScpIDogMDsNCiAgICAgICAgDQogICAgICAgICQoJyN0ZXh0LScraWQpLmZhZGVJbigpOw0KICAgICAgICAkKCcjZmxvYXQtdGV4dC0nK2lkKS5mYWRlSW4oZHVyKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtZmxleCIpOw0KICAgICAgICAkKCcjJytpZCkuc3RvcCgpLmFuaW1hdGUoew0KICAgICAgICAgICAgIm1heC13aWR0aCI6ICIyMDBweCIsDQogICAgICAgIH0sIGR1cik7DQogICAgfSk7DQogICAgDQogICAgJCgiI2Zsb2F0LWNvbnRhaW5lciIpLm9mZigibW91c2VsZWF2ZSIsIHNlbGVjdG9yKTsNCiAgICAkKCIjZmxvYXQtY29udGFpbmVyIikub24oIm1vdXNlbGVhdmUiLCBzZWxlY3RvciwgZnVuY3Rpb24oZXZlbnQpIHsNCiAgICAgICAgLy8gY29uc29sZS5sb2coJ2Zsb2F0IG1vdXNlIGxlYXZlJyk7DQogICAgICAgIHZhciBpZCA9ICQodGhpcylbMF0uaWQ7DQogICAgICAgICQoJyN0ZXh0LScraWQpLmZhZGVPdXQoZHVyKTsNCiAgICAgICAgJCgnIycraWQpLnN0b3AoKS5hbmltYXRlKHsNCiAgICAgICAgICAgICJtYXgtd2lkdGgiOiAiNDIuNjY2cHgiLA0KICAgICAgICB9LCBkdXIpOw0KICAgIH0pOw0KfQ0KLy8gYW5pbWF0ZXMgaWNvbnMgc2xpZGUgdXAgYW5kIHRyYW5zcGFyZW50IG92ZXJsYXkoZGVwZW5kaW5nIG9uIHNob3dUeXBlKQ0KZnVuY3Rpb24gYW5pbWF0ZUljb25zKHNob3dUeXBlKSB7DQogICAgaWYoJCgiLm92ZXJsYXkiKS5pcygiOnZpc2libGUiKSB8fCAkKCIuZGVza3RvcC1iZyIpLmlzKCI6dmlzaWJsZSIpKSB7DQogICAgICAgIGlmKHNob3dUeXBlID09PSAnb3ZlcmxheScpICAgICAgICAgICQoJy5vdmVybGF5JykuZmFkZU91dCgxMjUpOw0KICAgICAgICBlbHNlIGlmKHNob3dUeXBlID09PSAnaGVscFRleHQnKSAgICAkKCcjaGVscC10ZXh0JykuZmFkZU91dCgxMjUpOw0KICAgICAgICANCiAgICAgICAgLy8gYWRkIHBsdXMgaWNvbiBiYWNrDQogICAgICAgICQoJyNtYWluLWNvbnRhaW5lcicpLmVtcHR5KCkuYXBwZW5kKGdldFN2ZyhkYXRhLmNvbmZpZy5Nb2JpbGVNYWluKSk7DQoNCiAgICAgICAgJCgnLmZhYi5jaGlsZCcpLnN0b3AoKS5hbmltYXRlKHsNCiAgICAgICAgICAgIGJvdHRvbSAgOiAkKCcjbWFzdGVyZmFiJykuY3NzKCdib3R0b20nKSwNCiAgICAgICAgICAgIG9wYWNpdHkgOiAwDQogICAgICAgIH0sIDEyNSwgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAkKHRoaXMpLmhpZGUoKTsNCiAgICAgICAgfSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgaWYoc2hvd1R5cGUgPT09ICdvdmVybGF5JykgICAgICAgICAgJCgnLm92ZXJsYXknKS5mYWRlSW4oMTI1KTsNCiAgICAgICAgZWxzZSBpZihzaG93VHlwZSA9PT0gJ2hlbHBUZXh0JykgICAgJCgnI2hlbHAtdGV4dCcpLmZhZGVJbigxMjUpOw0KICAgICAgICANCiAgICAgICAgLy8gYWRkIGNsb3NlIGljb24gb24gbW9iaWxlIG9ubHkNCiAgICAgICAgaWYoaXNNb2JpbGUoKSkgJCgnI21haW4tY29udGFpbmVyJykuZW1wdHkoKS5hcHBlbmQoZ2V0U3ZnKCdjbG9zZScpKTsNCiAgICAgICAgJCgiLmZhYi5jaGlsZCIpLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIGJvdHRvbVZhbHVlID0gKHBhcnNlSW50KCQoIiNtYXN0ZXJmYWIiKS5jc3MoImJvdHRvbSIpKSArIA0KICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KCQoIiNtYXN0ZXJmYWIiKS5vdXRlckhlaWdodCgpKSArIA0KICAgICAgICAgICAgICAgICAgICAgIDIwICsgDQogICAgICAgICAgICAgICAgICAgICAgNTYgKiAkKHRoaXMpLmRhdGEoInN1Yml0ZW0iKSAtIA0KICAgICAgICAgICAgICAgICAgICAgICQoIi5mYWIuY2hpbGQiKS5vdXRlckhlaWdodCgpKSArICJweCI7DQoNCiAgICAgICAgICAgICQodGhpcykuc3RvcCgpLnNob3coKS5hbmltYXRlKHsNCiAgICAgICAgICAgICAgICBib3R0b206IGJvdHRvbVZhbHVlLA0KICAgICAgICAgICAgICAgIG9wYWNpdHk6IDENCiAgICAgICAgICAgICAgICB9LCAxMjUsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gQWZ0ZXIgYW5pbWF0aW9uIGNvbXBsZXRlcywgZm9yY2UgIWltcG9ydGFudC4gQnVnIGZpeCBmb3Igc3VwcG9ydCB0aWNrZXQgMTgzMTQ3MQ0KICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoInN0eWxlIiwgImRpc3BsYXk6YmxvY2s7IGJvdHRvbTogIiArIGJvdHRvbVZhbHVlICsgIiAhaW1wb3J0YW50OyBvcGFjaXR5OiAxOyIpOw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfSk7DQogICAgfQ0KfQ0KLy8gYWRkcyBvdmVybGF5IHRoYXQgc2xpZGVzIHVwDQpmdW5jdGlvbiBhbmltYXRlQmcoc2VsZWN0b3IpIHsNCiAgICBpZigkKHNlbGVjdG9yKS5pcygiOnZpc2libGUiKSkgew0KICAgICAgICAkKCcjbWFpbi1jb250YWluZXInKS5yZW1vdmVDbGFzcygnb3BlbicpOw0KICAgICAgICAkKCIjbWFzdGVyZmFiLmZhYi5tYXN0ZXItbW9iaWxlIikucmVtb3ZlQ2xhc3MoJ21vYmlsZS1vcGVuJykNCiAgICAgICAgdmFyIG1haW5JY29uID0gZGF0YS5jb25maWcuRGVza01haW4NCiAgICAgICAgLy8gcmV2ZXJ0IHRvIGRlZmF1bHQgbWFpbiBpY29uIHN0eWxlDQogICAgICAgIGlmKGlzTW9iaWxlKCkpIHsNCiAgICAgICAgICAgIG1haW5JY29uID0gZGF0YS5jb25maWcuTW9iaWxlTWFpbjsNCiAgICAgICAgICAgICQoJyNtYXN0ZXJmYWInKS5jc3MoeydiYWNrZ3JvdW5kJzogJycsICdib3gtc2hhZG93JzogJyd9KTsgIC8vIHJlc3RvcmUgZGVmYXVsdA0KICAgICAgICB9DQogICAgICAgICQoJyNtYWluLWNvbnRhaW5lcicpLmVtcHR5KCkuYXBwZW5kKGdldFN2ZyhtYWluSWNvbikpOw0KICAgICAgICANCiAgICAgICAgJCgnLm1lbnUtbGluaywgLmNoaWxkJykuaGlkZSgpOw0KICAgICAgICAvLyBzbGlkZSBkb3duIHRvIGNsb2VzDQogICAgICAgICQoc2VsZWN0b3IpLnN0b3AoKS5hbmltYXRlKHsNCiAgICAgICAgICAgIGhlaWdodCAgOiAwLA0KICAgICAgICAgICAgb3BhY2l0eSA6IDANCiAgICAgICAgfSwgMTI1LCBmdW5jdGlvbigpew0KICAgICAgICAgICAgJCh0aGlzKS5oaWRlKCk7DQogICAgICAgIH0pOw0KICAgIH0gZWxzZSB7DQogICAgICAgICQoJyNtYWluLWNvbnRhaW5lcicpLmFkZENsYXNzKCdvcGVuJyk7DQogICAgICAgICQoIiNtYXN0ZXJmYWIuZmFiLm1hc3Rlci1tb2JpbGUiKS5hZGRDbGFzcygnbW9iaWxlLW9wZW4nKQ0KICAgICAgICB2YXIgdG9wQXJlYSA9IDEwMDsNCiAgICAgICAgaWYoaXNNb2JpbGUoKSkgew0KICAgICAgICAgICAgJCgnI21hc3RlcmZhYicpLmNzcyh7J2JhY2tncm91bmQnOiAnbm9uZScsICdib3gtc2hhZG93JzogJ25vbmUnfSk7ICAvLyBtYWtlIGljb24gZmxhdA0KICAgICAgICAgICAgJCgnI21haW4tY29udGFpbmVyJykuZW1wdHkoKS5hcHBlbmQoZ2V0U3ZnKCdjbG9zZScpKTsgICAvLyBhZGQgeCBpY29uDQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZihkYXRhLmNvbmZpZy5EZXNrdG9wTGF5b3V0ID09PSAnQmFyJykgew0KICAgICAgICAgICAgLy8gaGFjayB0byBnZXQgaGVpZ2h0IG9mIGJhciBoZWxwIHRleHQgYmVmb3JlIGl0J3MgdmlzaWJsZQ0KICAgICAgICAgICAgJChzZWxlY3RvcikuY3NzKHsncG9zaXRpb24nOidhYnNvbHV0ZScsJ3Zpc2liaWxpdHknOidoaWRkZW4nLCAnZGlzcGxheSc6J2Jsb2NrJ30pOw0KICAgICAgICAgICAgdG9wQXJlYSA9ICQoIiNoZWxwLXRleHQiKS5oZWlnaHQoKT8gJCgiI2hlbHAtdGV4dCIpLmhlaWdodCgpICsgNjAgOiA0MDsNCiAgICAgICAgICAgICQoc2VsZWN0b3IpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vIHNsaWRlIHVwIHRvIG9wZW4NCiAgICAgICAgJChzZWxlY3Rvcikuc3RvcCgpLnNob3coKS5hbmltYXRlKHsNCiAgICAgICAgICAgIGhlaWdodCAgOiAoKChkYXRhLmNvbmZpZy5JY29uTGlzdC5sZW5ndGgrMSkgKiA1NikgKyB0b3BBcmVhKSArICJweCIsDQogICAgICAgICAgICBvcGFjaXR5IDogMQ0KICAgICAgICB9LDEyNSwgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAkKCcubWVudS1saW5rJykuZmFkZUluKDEyNSk7DQogICAgICAgICAgICAkKHNlbGVjdG9yKS5jc3MoImRpc3BsYXkiLCJmbGV4IikNCiAgICAgICAgfSk7DQogICAgfQ0KfQ0KZnVuY3Rpb24gZ2V0SXRlbXModHlwZSwgZmxvYXQpIHsNCiAgICAkKCcuY2hpbGQnKS5yZW1vdmUoKTsgICAvLyByZW1vdmUgYW55IGl0ZW1zIGFscmVhZHkgaW4gRE9NDQogICAgdmFyIGh0bWwgPSAnJywgbGFiZWwgPSAnJywgaWNvbiA9ICcnLCB0ZXh0ID0gJyc7DQogICAgdmFyIGl0ZW1zID0gZmxvYXQ/IGRhdGEuY29uZmlnLkljb25MaXN0IDogZGF0YS5jb25maWcuSWNvbkxpc3QucmV2ZXJzZSgpOw0KICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHsNCiAgICAgICAgDQogICAgICAgIGlmKGl0ZW0uc2hvd29ubW9iaWxlPT10cnVlICYmIGRhdGEuZGV2aWNlID09PSAnbW9iaWxlJyl7DQogICAgICAgICAgICBpbmRleCA9IGluZGV4KzE7DQogICAgICAgICAgIGlmKHR5cGUgPT09ICdyaWdodFRleHQnKXsgDQogICAgICAgICAgICAgICBsYWJlbCA9ICc8c3BhbiBjbGFzcz0icmlnaHQtdGV4dCI+JyArIGl0ZW0uTGFiZWwgKyAnPC9zcGFuPic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZih0eXBlID09PSAnbGVmdFRleHQnKSB7DQogICAgICAgICAgICAgICAgbGFiZWwgPSAnPHNwYW4gY2xhc3M9ImxlZnQtdGV4dCI+JyArIGl0ZW0uTGFiZWwgKyAnPC9zcGFuPic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZih0eXBlID09PSAnYnNyUmlnaHRUZXh0Jykgew0KICAgICAgICAgICAgICAgIGxhYmVsID0gJzxzcGFuIGNsYXNzPSJic3ItcmlnaHQtdGV4dCI+JyArIGl0ZW0uTGFiZWwgKyAnPC9zcGFuPic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpY29uID0gJzxzcGFuIGNsYXNzPSJpY29uLWNvbnRhaW5lciI+JytnZXRJdGVtSWNvbihpdGVtKSsnPC9zcGFuPic7DQogICAgICAgICAgICAgICAgaHRtbCArPSANCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZhYiBjaGlsZCIgaWQ9ImNoaWxkLScraW5kZXgrJyIgZGF0YS1zdWJpdGVtPSInK2luZGV4KyciPiBcDQogICAgICAgICAgICAgICAgICAgICAgICAnK2dldEl0ZW1BY3Rpb24oaXRlbSwgaWNvbitsYWJlbCkrJyBcDQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pic7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmKGl0ZW0uQWN0aW9uID09PSAnU2hhcmUnKSB7DQogICAgICAgICAgICAgICAgJC5nZXRTY3JpcHQoJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbWljcm9tb2RhbC9kaXN0L21pY3JvbW9kYWwubWluLmpzJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgIE1pY3JvTW9kYWwuaW5pdCgpOw0KICAgICAgICAgICAgICAgICAgICAkKCcuc2hhcmUtY29udGFpbmVyJykuaHRtbChnZXRTb2NpYWxJdGVtcyhpdGVtKSk7ICAgLy8gYWRkIHNvY2lhbCBpY29ucyB0byBtb2RhbA0KICAgICAgICAgICAgICAgICAgICBhZGRTaGFyZUxpc3RlbmVyKCk7ICAgLy8gaWYgc29jaWFsIHNoYXJpbmcgZW5hYmxlZCBhZGQgY2xpY2sgaGFuZGxlcg0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBlbHNlIGlmKGl0ZW0uc2hvd29uZGVza3RvcD09dHJ1ZSAmJiAoZGF0YS5kZXZpY2UgPT09ICdkZXNrdG9wJyB8fCBkYXRhLmRldmljZSA9PT0gJ3RhYmxldCcpICl7DQogICAgICAgICAgICANCiAgICAgICAgICAgaWYodHlwZSA9PT0gJ3JpZ2h0VGV4dCcpeyANCiAgICAgICAgICAgbGFiZWwgPSAnPHNwYW4gY2xhc3M9InJpZ2h0LXRleHQiPicgKyBpdGVtLkxhYmVsICsgJzwvc3Bhbj4nOw0KICAgICAgICB9DQogICAgICAgIGlmKHR5cGUgPT09ICdsZWZ0VGV4dCcpIHsNCiAgICAgICAgICAgIGxhYmVsID0gJzxzcGFuIGNsYXNzPSJsZWZ0LXRleHQiPicgKyBpdGVtLkxhYmVsICsgJzwvc3Bhbj4nOw0KICAgICAgICB9DQogICAgICAgIGlmKCFmbG9hdCkgew0KICAgICAgICAgICAgaWNvbiA9ICc8c3BhbiBjbGFzcz0iaWNvbi1jb250YWluZXIiPicrZ2V0SXRlbUljb24oaXRlbSkrJzwvc3Bhbj4nOw0KICAgICAgICAgICAgaHRtbCArPSANCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmFiIGNoaWxkIiBpZD0iY2hpbGQtJytpbmRleCsnIiBkYXRhLXN1Yml0ZW09IicraW5kZXgrJyI+IFwNCiAgICAgICAgICAgICAgICAgICAgJytnZXRJdGVtQWN0aW9uKGl0ZW0sIGljb24rbGFiZWwpKycgXA0KICAgICAgICAgICAgICAgIDwvZGl2Pic7DQogICAgICAgIH0NCiAgICAgICAgLy8gZmxvYXRpbmcgaWNvbnMgb24gZGVza3RvcCBvbmx5DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgDQogICAgICAgICAgICAvLyBhZGQgZm9jdXMgY2xhc3MgZm9yIGZvY3VzIGFuaW1hdGlvbg0KICAgICAgICAgICAgbGFiZWwgPSBpdGVtLkxhYmVsOw0KICAgICAgICAgICAgdmFyIGZvY3VzQ2xhc3MgPSBpdGVtLkFuaW1hdGU/ICdmb2N1cycgOiAnJzsNCiAgICAgICAgICAgIGljb24gPSAnPHNwYW4gY2xhc3M9Imljb24tY29udGFpbmVyIj4nK2dldEl0ZW1JY29uKGl0ZW0pKyc8L3NwYW4+JzsNCiAgICAgICAgICAgIHRleHQgPSAnPHNwYW4gY2xhc3M9ImZsb2F0LXRleHQiIGlkPSJ0ZXh0LScraW5kZXgrJyI+JytsYWJlbCsnPC9zcGFuPic7DQogICAgICAgICAgICBodG1sICs9IA0KICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmbG9hdC1jb250YWluZXIgJytmb2N1c0NsYXNzKyciIGlkPSInK2luZGV4KyciPiBcDQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmYWIgY2hpbGQgZmxvYXQiIGlkPSJjaGlsZC0nK2luZGV4KyciIGRhdGEtc3ViaXRlbT0iJytpbmRleCsnIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWZsZXg7Ij4gXA0KICAgICAgICAgICAgICAgICAgICAgICAgJytnZXRJdGVtQWN0aW9uKGl0ZW0sIGljb24pKycgXA0KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IFwNCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZsb2F0LXRleHQtY29udGFpbmVyIiBpZD0iZmxvYXQtdGV4dC0nK2luZGV4KyciPiBcDQogICAgICAgICAgICAgICAgICAgICAgICAnK2dldEl0ZW1BY3Rpb24oaXRlbSwgdGV4dCkrJyBcDQogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gXA0KICAgICAgICAgICAgICAgIDwvZGl2Pic7DQogICAgICAgIH0NCiAgICAgICAgLy8gaWYgYWN0aW9uIGlzIHNoYXJlIGFkZCBzaGFyZSBpdGVtcyB0byBtb2RhbA0KICAgICAgICBpZihpdGVtLkFjdGlvbiA9PT0gJ1NoYXJlJykgew0KICAgICAgICAgICAgJC5nZXRTY3JpcHQoJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbWljcm9tb2RhbC9kaXN0L21pY3JvbW9kYWwubWluLmpzJywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgTWljcm9Nb2RhbC5pbml0KCk7DQogICAgICAgICAgICAgICAgJCgnLnNoYXJlLWNvbnRhaW5lcicpLmh0bWwoZ2V0U29jaWFsSXRlbXMoaXRlbSkpOyAgIC8vIGFkZCBzb2NpYWwgaWNvbnMgdG8gbW9kYWwNCiAgICAgICAgICAgICAgICBhZGRTaGFyZUxpc3RlbmVyKCk7ICAgLy8gaWYgc29jaWFsIHNoYXJpbmcgZW5hYmxlZCBhZGQgY2xpY2sgaGFuZGxlcg0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0pOw0KICAgIHJldHVybiBodG1sOw0KfQ0KZnVuY3Rpb24gZ2V0U29jaWFsSXRlbXMoaXRlbSkgew0KICAgIGxldCBodG1sID0gJyc7DQogICAgY29uc3QgY29udGVudCA9IGdldFNoYXJlQ29udGVudChpdGVtKTsNCiAgICBpZihpdGVtLkVtYWlsKSAgICAgIGh0bWwgKz0gZ2V0U2hhcmVIdG1sKCdFbWFpbCcsIGNvbnRlbnQubGluaywgY29udGVudC50aXRsZSwgJ1RhYicsICdzb2NpYWwnKTsNCiAgICBpZihpdGVtLkZhY2Vib29rKSAgIGh0bWwgKz0gZ2V0U2hhcmVIdG1sKCdGYWNlYm9vaycsIGNvbnRlbnQubGluaywgY29udGVudC50aXRsZSwgJ1RhYicsICdzb2NpYWwnKTsNCiAgICBpZihpdGVtLlR1bWJscikgICAgIGh0bWwgKz0gZ2V0U2hhcmVIdG1sKCdUdW1ibHInLCBjb250ZW50LmxpbmssIGNvbnRlbnQudGl0bGUsICdUYWInLCAnc29jaWFsJyk7DQogICAgaWYoaXRlbS5MaW5rZWRJbikgICBodG1sICs9IGdldFNoYXJlSHRtbCgnTGlua2VkSW4nLCBjb250ZW50LmxpbmssIGNvbnRlbnQudGl0bGUsICdUYWInLCAnc29jaWFsJyk7DQogICAgaWYoaXRlbS5Ud2l0dGVyKSAgICBodG1sICs9IGdldFNoYXJlSHRtbCgnVHdpdHRlcicsIGNvbnRlbnQubGluaywgY29udGVudC50aXRsZSwgJ1RhYicsICdzb2NpYWwnKTsNCiAgICBpZihpdGVtLlJlZGRpdCkgICAgIGh0bWwgKz0gZ2V0U2hhcmVIdG1sKCdSZWRkaXQnLCBjb250ZW50LmxpbmssIGNvbnRlbnQudGl0bGUsICdUYWInLCAnc29jaWFsJyk7DQogICAgLy9pZihpdGVtLkdvb2dsZVBsdXMpIGh0bWwgKz0gZ2V0U2hhcmVIdG1sKCdHb29nbGVQbHVzJywgY29udGVudC5saW5rLCBjb250ZW50LnRpdGxlLCAnVGFiJywgJ3NvY2lhbCcpOw0KICAgIGlmKGl0ZW0uUGludGVyZXN0KSAgaHRtbCArPSBnZXRTaGFyZUh0bWwoJ1BpbnRlcmVzdCcsIGNvbnRlbnQubGluaywgY29udGVudC50aXRsZSwgJ1RhYicsICdzb2NpYWwnKTsNCiAgICByZXR1cm4gaHRtbDsNCn0NCg0KLy8NCi8vIFNvY2lhbCBTaGFyZSBGdW5jdGlvbnMNCi8vDQpmdW5jdGlvbiBnZXRTaGFyZUNvbnRlbnQoaXRlbSkgew0KICAgIC8vIHNldCBsaW5rIHRvIHRoZSBjdXJyZW50IHBhZ2UgdXJsDQogICAgbGV0IGxpbmsgPSBpdGVtLlNoYXJlTGluaz8gaXRlbS5MaW5rLmhyZWYgOiB3aW5kb3cudG9wLmxvY2F0aW9uLmhyZWY7DQogICAgbGluayA9IGVuY29kZVVSSShsaW5rKTsNCiAgICANCiAgICAvLyBnZXQgZGVmYXVsdCBwYWdlIHRpdGxlIGZyb20gdGhlIGFjdHVhbCBwYWdlIHRpdGxlDQogICAgY29uc3QgcGFnZVRpdGxlID0gaXRlbS5TaGFyZVRpdGxlPyBpdGVtLlNoYXJlVGl0bGUgOiBkb2N1bWVudC50aXRsZTsNCiAgICBjb25zdCBlbmNvZGVkVGl0bGUgPSBlbmNvZGVVUkkocGFnZVRpdGxlKTsNCiAgICANCiAgICByZXR1cm4ge2xpbms6IGxpbmssIHRpdGxlOiBlbmNvZGVkVGl0bGV9Ow0KfQ0KZnVuY3Rpb24gZ2V0U2hhcmVIdG1sKHNpdGUsIGxpbmssIGVuY29kZWRUaXRsZSwgYWN0aW9uLCBsaW5rQ2xhc3MpIHsNCiAgICBsZXQgaHJlZiA9ICcnOw0KICAgIHN3aXRjaChzaXRlKSB7DQogICAgICAgIGNhc2UgJ0VtYWlsJzoNCiAgICAgICAgICAgIGhyZWYgPSAibWFpbHRvOj9TdWJqZWN0PSIrZW5jb2RlZFRpdGxlKyImYm9keT1DaGVjayBvdXQgdGhpcyBzaXRlOiAiK3dpbmRvdy5sb2NhdGlvbi5ocmVmOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBzdGF0c0V2ZW50TmFtZSA9ICdDTV9TSEFSRV9FTUFJTCc7DQogICAgICAgICAgICByZXR1cm4gKA0KICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzb2NpYWwtaWNvbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZXk7Ij4gXA0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSInK2hyZWYrJyIgY2xhc3M9IicrbGlua0NsYXNzKyciIG9uY2xpY2s9Il90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50KFwnJytzdGF0c0V2ZW50TmFtZSsnXCcpOzsiPiBcDQogICAgICAgICAgICAgICAgICAgICAgICAnK2dldFN2Zygnc2hhcmVlbnZlbG9wZScpKycgXA0KICAgICAgICAgICAgICAgICAgICA8L2E+IFwNCiAgICAgICAgICAgICAgICA8L2Rpdj4nKTsNCiAgICAgICAgY2FzZSAnRmFjZWJvb2snOg0KICAgICAgICAgICAgaHJlZiA9ICdodHRwczovL3d3dy5mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA/dT0nK2xpbms7DQogICAgICAgICAgICBzdGF0c0V2ZW50TmFtZSA9ICdDTV9TSEFSRV9GQic7DQogICAgICAgICAgICByZXR1cm4gKA0KICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzb2NpYWwtaWNvbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICMzYjU5OTg7Ij4gXA0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSInK2hyZWYrJyIgY2xhc3M9IicrbGlua0NsYXNzKyciIHRhcmdldD0iX2JsYW5rIiBvbmNsaWNrPSJfdHJhY2tDb252V2lkZ2V0Q2xpY2tFdmVudChcJycrc3RhdHNFdmVudE5hbWUrJ1wnKTsiPiBcDQogICAgICAgICAgICAgICAgICAgICAgICAnK2dldFN2ZygnZmFjZWJvb2snKSsnIFwNCiAgICAgICAgICAgICAgICAgICAgPC9hPiBcDQogICAgICAgICAgICAgICAgPC9kaXY+Jyk7DQogICAgICAgIGNhc2UgJ1R1bWJscic6DQogICAgICAgICAgICBocmVmID0gJ2h0dHA6Ly90dW1ibHIuY29tL3NoYXJlL2xpbms/dXJsPScrbGluaysnJm5hbWU9JytlbmNvZGVkVGl0bGU7DQogICAgICAgICAgICByZXR1cm4gKCANCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic29jaWFsLWljb24iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjMzU0NjVjOyI+IFwNCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJytocmVmKyciIGNsYXNzPSInK2xpbmtDbGFzcysnIiB0YXJnZXQ9Il9ibGFuayIgPiBcDQogICAgICAgICAgICAgICAgICAgICAgICAnK2dldFN2ZygndHVtYmxyJykrJyBcDQogICAgICAgICAgICAgICAgICAgIDwvYT4gXA0KICAgICAgICAgICAgICAgIDwvZGl2PicpOw0KICAgICAgICBjYXNlICdMaW5rZWRJbic6DQogICAgICAgICAgICBocmVmID0gJ2h0dHA6Ly93d3cubGlua2VkaW4uY29tL3NoYXJlQXJ0aWNsZT9taW5pPXRydWUmYW1wO3VybD0nK2xpbmsrJyZhbXA7dGl0bGU9JytlbmNvZGVkVGl0bGU7DQogICAgICAgICAgICBzdGF0c0V2ZW50TmFtZSA9ICdDTV9TSEFSRV9MSU5LRURJTic7DQogICAgICAgICAgICByZXR1cm4gKCANCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic29jaWFsLWljb24iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjNDg3NUI0OyI+IFwNCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJytocmVmKyciIGNsYXNzPSInK2xpbmtDbGFzcysnIiB0YXJnZXQ9Il9ibGFuayIgb25jbGljaz0iX3RyYWNrQ29udldpZGdldENsaWNrRXZlbnQoXCcnK3N0YXRzRXZlbnROYW1lKydcJyk7Ij4gXA0KICAgICAgICAgICAgICAgICAgICAgICAgJytnZXRTdmcoJ2xpbmtlZEluJykrJyBcDQogICAgICAgICAgICAgICAgICAgIDwvYT4gXA0KICAgICAgICAgICAgICAgIDwvZGl2PicpOw0KICAgICAgICBjYXNlICdUd2l0dGVyJzoNCiAgICAgICAgICAgIGhyZWYgPSAnaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ/dGV4dD0nK2xpbms7DQogICAgICAgICAgICBzdGF0c0V2ZW50TmFtZSA9ICdDTV9TSEFSRV9UV0lUVEVSJzsNCiAgICAgICAgICAgIHJldHVybiAoDQogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNvY2lhbC1pY29uIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsiPiBcDQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IicraHJlZisnIiBjbGFzcz0iJytsaW5rQ2xhc3MrJyIgdGFyZ2V0PSJfYmxhbmsiIG9uY2xpY2s9Il90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50KFwnJytzdGF0c0V2ZW50TmFtZSsnXCcpOyI+IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICcrZ2V0U3ZnKCd0d2l0dGVyJykrJyBcDQogICAgICAgICAgICAgICAgICAgIDwvYT4gXA0KICAgICAgICAgICAgICAgIDwvZGl2PicpOw0KICAgICAgICBjYXNlICdSZWRkaXQnOg0KICAgICAgICAgICAgaHJlZiA9ICdodHRwOi8vd3d3LnJlZGRpdC5jb20vc3VibWl0P3VybD0nK2xpbmsrJyZ0aXRsZT0nK2VuY29kZWRUaXRsZSsnJnRleHQ9JytlbmNvZGVkVGl0bGU7DQogICAgICAgICAgICByZXR1cm4gKCANCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic29jaWFsLWljb24iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0NTAwOyI+IFwNCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJytocmVmKyciIGNsYXNzPSInK2xpbmtDbGFzcysnIiB0YXJnZXQ9Il9ibGFuayI+IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICcrZ2V0U3ZnKCdyZWRkaXQnKSsnIFwNCiAgICAgICAgICAgICAgICAgICAgPC9hPiBcDQogICAgICAgICAgICAgICAgPC9kaXY+Jyk7DQogICAgICAgLyogY2FzZSAnR29vZ2xlUGx1cyc6DQogICAgICAgICAgICBocmVmID0gJ2h0dHBzOi8vcGx1cy5nb29nbGUuY29tL3NoYXJlP3VybD0nK2xpbms7DQogICAgICAgICAgICBzdGF0c0V2ZW50TmFtZSA9ICdDTV9TSEFSRV9HT09HTEVfUExVUyc7DQogICAgICAgICAgICByZXR1cm4gKCANCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic29jaWFsLWljb24iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZDM0ODM2OyI+IFwNCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJytocmVmKyciIGNsYXNzPSInK2xpbmtDbGFzcysnIiB0YXJnZXQ9Il9ibGFuayIgb25jbGljaz0iX3RyYWNrQ29udldpZGdldENsaWNrRXZlbnQoXCcnK3N0YXRzRXZlbnROYW1lKydcJyk7Ij4gXA0KICAgICAgICAgICAgICAgICAgICAgICAgJytnZXRTdmcoJ2dQbHVzJykrJyBcDQogICAgICAgICAgICAgICAgICAgIDwvYT4gXA0KICAgICAgICAgICAgICAgIDwvZGl2PicpOyAqLw0KICAgICAgICBjYXNlICdQaW50ZXJlc3QnOg0KICAgICAgICAgICAgaHJlZiA9ICdodHRwOi8vcGludGVyZXN0LmNvbS9waW4vY3JlYXRlL2J1dHRvbi8/dXJsPScrbGluaysnJmFtcDtkZXNjcmlwdGlvbj0nK2VuY29kZWRUaXRsZTsNCiAgICAgICAgICAgIHJldHVybiAoDQogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNvY2lhbC1pY29uIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2NiMjAyNzsiPiBcDQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IicraHJlZisnIiBjbGFzcz0iJytsaW5rQ2xhc3MrJyIgdGFyZ2V0PSJfYmxhbmsiPiBcDQogICAgICAgICAgICAgICAgICAgICAgICAnK2dldFN2ZygncGludGVyZXN0JykrJyBcDQogICAgICAgICAgICAgICAgICAgIDwvYT4gXA0KICAgICAgICAgICAgICAgIDwvZGl2PicpOw0KICAgICAgICBkZWZhdWx0OiANCiAgICAgICAgICAgIHJldHVybiAnJzsNCiAgICB9DQp9DQoNCi8vDQovLyBIZWxwZXJzDQovLw0KLy8gY2hlY2sgZGlzcGxheSB0eXBlDQpmdW5jdGlvbiBpc01vYmlsZSgpIHsNCiAgICByZXR1cm4gZGF0YS5kZXZpY2UgPT09ICdtb2JpbGUnOw0KfQ0KZnVuY3Rpb24gZ2V0SXRlbUFjdGlvbihpdGVtLCBlbGVtKSB7DQogICAgdmFyIHN0YXRzRXZlbnROYW1lPScnOw0KICAgIHN3aXRjaChpdGVtLkFjdGlvbikgew0KICAgICAgICBjYXNlICdMaW5rJzoNCiAgICAgICAgICAgIGlmKCFpdGVtLkxpbmspIHtpdGVtLkxpbmsgPSB7IHRhcmdldDogJ3RhcmdldD0iX2JsYW5rIicsIGhyZWY6ICdodHRwOi8vd3d3Lmdvb2dsZS5jb20nIH19ICAvLyBkZWZhdWx0IGxpbmsNCiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBpdGVtLkxpbmsudGFyZ2V0PyBgdGFyZ2V0PSIke2l0ZW0uTGluay50YXJnZXR9ImAgOiAnJzsNCiAgICAgICAgICAgIHZhciBzdGF0c0V2ZW50TmFtZSA9ICdDTV9MSU5LX0NMSUNLJzsNCiAgICAgICAgICAgIHJldHVybiAnPGEgJyt0YXJnZXQrJyBocmVmPSInK2l0ZW0uTGluay5ocmVmKyciIGNsYXNzPSJtZW51LWxpbmsgYnNyLW1lbnVsaW5rIiBvbmNsaWNrPSJfdHJhY2tDb252V2lkZ2V0Q2xpY2tFdmVudChcJycrc3RhdHNFdmVudE5hbWUrJ1wnKTsiPicrZWxlbSsnPC9hPic7DQogICAgICAgIGNhc2UgJ0NhbGwnOg0KICAgICAgICAgICAgc3RhdHNFdmVudE5hbWUgPSAnQ01fQ0xJQ0tfVE9fQ0FMTCc7DQogICAgICAgICAgICByZXR1cm4gJzxhIGhyZWY9InRlbDonK2l0ZW0uQ2FsbE51bSsnIiBjbGFzcz0ibWVudS1saW5rIGJzci1tZW51bGluayIgb25jbGljaz0iX3RyYWNrQ29udldpZGdldENsaWNrRXZlbnQoXCcnK3N0YXRzRXZlbnROYW1lKydcJyk7Ij4nK2VsZW0rJzwvYT4nOw0KICAgICAgICBjYXNlICdTbXMnOg0KICAgICAgICAgICAgc3RhdHNFdmVudE5hbWUgPSAnQ01fQ0xJQ0tfVE9fU01TJzsNCiAgICAgICAgICAgIHJldHVybiAnPGEgaHJlZj0ic21zOicraXRlbS5TbXNOdW0rJyIgY2xhc3M9Im1lbnUtbGluayBic3ItbWVudWxpbmsiIG9uY2xpY2s9Il90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50KFwnJytzdGF0c0V2ZW50TmFtZSsnXCcpOyI+JytlbGVtKyc8L2E+JzsNCiAgICAgICAgY2FzZSAnRW1haWwnOg0KICAgICAgICAgICAgc3RhdHNFdmVudE5hbWUgPSAnQ01fQ0xJQ0tfVE9fRU1BSUwnOw0KICAgICAgICAgICAgcmV0dXJuICc8YSBocmVmPSJtYWlsdG86JytpdGVtLkVtYWlsQWRkcisnP3N1YmplY3Q9JytpdGVtLmVtYWlsRGVmU3ViamVjdCArICcmYm9keT0nICsgaXRlbS5kZWZFbWFpbEJvZHkgKyAnIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9Im1lbnUtbGluayBic3ItbWVudWxpbmsiIG9uY2xpY2s9Il90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50KFwnJytzdGF0c0V2ZW50TmFtZSsnXCcpOyI+JytlbGVtKyc8L2E+JzsNCiAgICAgICAgY2FzZSAnTWFwJzoNCiAgICAgICAgICAgIHN0YXRzRXZlbnROYW1lID0gJ0NNX0RJUkVDVElPTic7DQogICAgICAgICAgICByZXR1cm4gJzxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3d3dy5nb29nbGUuY29tL21hcHM/cT0nK2l0ZW0uUXVlcnkrJyIgY2xhc3M9Im1lbnUtbGluayBic3ItbWVudWxpbmsiIG9uY2xpY2s9Il90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50KFwnJytzdGF0c0V2ZW50TmFtZSsnXCcpOyIgZGF0YS1ldmVudG5hbWU9IkZpbmQgTG9jYXRpb24iPicrZWxlbSsnPC9hPic7DQogICAgICAgIGNhc2UgJ01lc3MnOg0KICAgICAgICAgICAgc3RhdHNFdmVudE5hbWUgPSAnQ01fRkJfTUVTU0FHRSc7DQogICAgICAgICAgICByZXR1cm4gJzxhIGhyZWY9Imh0dHA6Ly9tLm1lLycraXRlbS5GYlVzZXIrJyIgY2xhc3M9Im1lbnUtbGluayBic3ItbWVudWxpbmsiIHRhcmdldD0iX2JsYW5rIiBvbmNsaWNrPSJfdHJhY2tDb252V2lkZ2V0Q2xpY2tFdmVudChcJycrc3RhdHNFdmVudE5hbWUrJ1wnKTsiPicrZWxlbSsnPC9hPic7DQogICAgICAgIGNhc2UgJ1NoYXJlJzoNCiAgICAgICAgICAgIHJldHVybiAnPGEgaHJlZj0iIyIgY2xhc3M9Im1lbnUtbGluayBzaGFyZSBic3ItbWVudWxpbmsiPicrZWxlbSsnPC9hPic7DQogICAgICAgIGNhc2UgJ0NoYXQnOg0KICAgICAgICAgICAgcmV0dXJuICc8YSBocmVmPSIjIiBjbGFzcz0ibWVudS1saW5rIGJzci1jaGF0IGJzci1tZW51bGluayI+JytlbGVtKyc8L2E+JzsNCiAgICAgICAgZGVmYXVsdDogDQogICAgICAgICAgICByZXR1cm4gJyc7DQogICAgfQ0KfQ0KLy8gcmV0dXJucyBuZXcgZGVmYXVsdCBpY29uIG9ubHkgaWYgaWNvbiBpcyBkZWZhdWx0IChpZGVudGlmaWVkIGJ5IHBhdGggZGF0YSBpbiBkZWZhdWx0IHN2ZyBNVVNUIENIQU5HRSBGT1IgRElGRkVSRU5UIERFRkFVVEwpDQpmdW5jdGlvbiB4Z2V0SXRlbUljb24oaXRlbSkgew0KICAgIC8vIGljb24gaXMgZGVmYXVsdA0KICAgIGlmKGl0ZW0uQ3VzdG9tSWNvbikgew0KICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJuZXctY29udGFpbmVyIj4nK2l0ZW0uSWNvbisnPC9kaXY+JzsNCiAgICB9IGVsc2Ugew0KICAgICAgICBzd2l0Y2goaXRlbS5BY3Rpb24pIHsNCiAgICAgICAgICAgIGNhc2UgJ0xpbmsnOg0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdmcoJ2xpbmsnKTsNCiAgICAgICAgICAgIGNhc2UgJ0NhbGwnOg0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdmcoJ3Bob25lJyk7DQogICAgICAgICAgICBjYXNlICdTbXMnOg0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdmcoJ3NtcycpOw0KICAgICAgICAgICAgY2FzZSAnRW1haWwnOg0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdmcoJ2VudmVsb3BlJyk7DQogICAgICAgICAgICBjYXNlICdNZXNzJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3ZnKCdtZXNzZW5nZXInKTsNCiAgICAgICAgICAgIGNhc2UgJ01hcCc6DQogICAgICAgICAgICAgICAgcmV0dXJuIGdldFN2ZygnbWFwJyk7DQogICAgICAgICAgICBjYXNlICdTaGFyZSc6DQogICAgICAgICAgICAgICAgcmV0dXJuIGdldFN2Zygnc2hhcmUnKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQpmdW5jdGlvbiBnZXRJdGVtSWNvbihpdGVtKSB7DQogICAgdmFyIGxjYXNlID0gaXRlbS5BY3Rpb24udG9Mb3dlckNhc2UoKTsNCg0KICAgIGlmKGl0ZW0uQ3VzdG9tSWNvbikgew0KICAgICAgICBzd2l0Y2goaXRlbS5DdXN0b21JY29uX1NlbGVjdCkgew0KICAgICAgICAgICAgY2FzZSAnY3VzdG9tX2ljb24xJzoNCiAgICAgICAgICAgICAgICAvLyByZXR1cm4gJzxkaXYgY2xhc3M9IicrbGNhc2UrJy1pY29uLXByZXYgY3VzdG9tLXVzZXItaWNvbiAnICsgaXRlbS5DdXN0b21JY29uX1NlbGVjdCArICciPicgKyBkYXRhLmNvbmZpZy5jdXN0b21faWNvbjEgKyAnPC9kaXY+JzsNCiAgICAgICAgICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImN1c3RvbS11c2VyLWljb24gJyArIGl0ZW0uQ3VzdG9tSWNvbl9TZWxlY3QgKyAnIj4nICsgZGF0YS5jb25maWcuY3VzdG9tX2ljb24xICsgJzwvZGl2Pic7DQogICAgICAgICAgICBjYXNlICdjdXN0b21faWNvbjInOg0KICAgICAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iY3VzdG9tLXVzZXItaWNvbiAnICsgaXRlbS5DdXN0b21JY29uX1NlbGVjdCArICciPicgKyBkYXRhLmNvbmZpZy5jdXN0b21faWNvbjIgKyAnPC9kaXY+JzsNCiAgICAgICAgICAgIGNhc2UgJ2N1c3RvbV9pY29uMyc6DQogICAgICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJjdXN0b20tdXNlci1pY29uICcgKyBpdGVtLkN1c3RvbUljb25fU2VsZWN0ICsgJyI+JyArIGRhdGEuY29uZmlnLmN1c3RvbV9pY29uMyArICc8L2Rpdj4nOw0KICAgICAgICAgICAgY2FzZSAnY3VzdG9tX2ljb240JzoNCiAgICAgICAgICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImN1c3RvbS11c2VyLWljb24gJyArIGl0ZW0uQ3VzdG9tSWNvbl9TZWxlY3QgKyAnIj4nICsgZGF0YS5jb25maWcuY3VzdG9tX2ljb240ICsgJzwvZGl2Pic7DQogICAgICAgICAgICBjYXNlICdjdXN0b21faWNvbjUnOg0KICAgICAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iY3VzdG9tLXVzZXItaWNvbiAnICsgaXRlbS5DdXN0b21JY29uX1NlbGVjdCArICciPicgKyBkYXRhLmNvbmZpZy5jdXN0b21faWNvbjUgKyAnPC9kaXY+JzsNCiAgICAgICAgICAgIGNhc2UgJ2N1c3RvbV9pY29uNic6DQogICAgICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJjdXN0b20tdXNlci1pY29uICcgKyBpdGVtLkN1c3RvbUljb25fU2VsZWN0ICsgJyI+JyArIGRhdGEuY29uZmlnLmN1c3RvbV9pY29uNiArICc8L2Rpdj4nOw0KICAgICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgICAgc3dpdGNoKGl0ZW0uQWN0aW9uKSB7DQogICAgICAgICAgICBjYXNlICdMaW5rJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3ZnKCdsaW5rJyk7DQogICAgICAgICAgICBjYXNlICdDYWxsJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3ZnKCdwaG9uZScpOw0KICAgICAgICAgICAgY2FzZSAnU21zJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3ZnKCdzbXMnKTsNCiAgICAgICAgICAgIGNhc2UgJ0VtYWlsJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3ZnKCdlbnZlbG9wZScpOw0KICAgICAgICAgICAgY2FzZSAnTWVzcyc6DQogICAgICAgICAgICAgICAgcmV0dXJuIGdldFN2ZygnbWVzc2VuZ2VyJyk7DQogICAgICAgICAgICBjYXNlICdNYXAnOg0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdmcoJ21hcCcpOw0KICAgICAgICAgICAgY2FzZSAnU2hhcmUnOg0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdmcoJ3NoYXJlJyk7DQogICAgICAgICAgICBjYXNlICdDaGF0JzoNCiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3ZnKCdjaGF0Jyk7DQogICAgICAgIH0NCiAgICB9DQp9DQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0Kd2luZG93Ll90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50ID0gZnVuY3Rpb24oZXZlbnROYW1lKSB7DQogICAgaWYodHlwZW9mKEhBRik9PT0ib2JqZWN0Iil7DQogICAgICAgIEhBRi5PbVRyYWNraW5nLm9uQ01DbGljayhldmVudE5hbWUpIA0KICAgIH0NCiAgICByZXR1cm47DQp9DQoNCmZ1bmN0aW9uIGR1ZGFpY29uKGljb24pew0KICAgIHJldHVybiAnPHNwYW4gY2xhc3M9Im5ldy1jb250YWluZXIiPicraWNvbisnPC9zcGFuPicNCiAgICANCiAgICANCn0NCmZ1bmN0aW9uIHhnZXRTdmcobmFtZSkgew0KICAgIGNvbnN0IHR5cGUgPSBuYW1lPyBuYW1lIDogZGF0YS5jb25maWcuRGVza01haW47DQogICAgc3dpdGNoKHR5cGUpIHsNCiAgICAgICAgY2FzZSAndkVsbGlwc2lzJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgNTEyIj48dGl0bGU+TW9yZTwvdGl0bGU+PHBhdGggZD0iTTk2IDE4NGMzOS44IDAgNzIgMzIuMiA3MiA3MnMtMzIuMiA3Mi03MiA3Mi03Mi0zMi4yLTcyLTcyIDMyLjItNzIgNzItNzJ6TTI0IDgwYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzJTMTM1LjggOCA5NiA4IDI0IDQwLjIgMjQgODB6bTAgMzUyYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03Mi03MiAzMi4yLTcyIDcyeiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ21hcCc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdtYXAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4NCA1MTIiIGRhdGEtZGVmYXVsdD0idHJ1ZSI+PHBhdGggZD0iTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpNMTkyIDI3MmM0NC4xODMgMCA4MC0zNS44MTcgODAtODBzLTM1LjgxNy04MC04MC04MC04MCAzNS44MTctODAgODAgMzUuODE3IDgwIDgwIDgweiIvPjwvc3ZnPicNCiAgICAgICAgY2FzZSAnaEVsbGlwc2lzJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48dGl0bGU+TW9yZTwvdGl0bGU+PHBhdGggZD0iTTMyOCAyNTZjMCAzOS44LTMyLjIgNzItNzIgNzJzLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MiA3MiAzMi4yIDcyIDcyem0xMDQtNzJjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyem0tMzUyIDBjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyeiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3BsdXMnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA0MiA0MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDIgNDI7IHhtbDpzcGFjZT0icHJlc2VydmUiPjx0aXRsZT5Nb3JlPC90aXRsZT48cG9seWdvbiBwb2ludHM9IjQyLDIwIDIyLDIwIDIyLDAgMjAsMCAyMCwyMCAwLDIwIDAsMjIgMjAsMjIgMjAsNDIgMjIsNDIgMjIsMjIgNDIsMjIgIi8+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+JzsNCiAgICAgICAgY2FzZSAnYmFycyc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDQ4IDUxMiI+PHRpdGxlPk1vcmU8L3RpdGxlPjxwYXRoIGQ9Ik0xNiAxMzJoNDE2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZWNzZjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNkM3LjE2MyA2MCAwIDY3LjE2MyAwIDc2djQwYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZ6bTAgMTYwaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di00MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2SDE2Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djQwYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZ6bTAgMTYwaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di00MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2SDE2Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djQwYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZ6Ii8+PC9zdmc+JzsNCiAgICAgICAgY2FzZSAnZW52ZWxvcGUnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJpY29uc3ZnZW1haWwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjx0aXRsZT5FbWFpbDwvdGl0bGU+PHBhdGggZD0iTTQ2NCA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0wIDQ4djQwLjgwNWMtMjIuNDIyIDE4LjI1OS01OC4xNjggNDYuNjUxLTEzNC41ODcgMTA2LjQ5LTE2Ljg0MSAxMy4yNDctNTAuMjAxIDQ1LjA3Mi03My40MTMgNDQuNzAxLTIzLjIwOC4zNzUtNTYuNTc5LTMxLjQ1OS03My40MTMtNDQuNzAxQzEwNi4xOCAxOTkuNDY1IDcwLjQyNSAxNzEuMDY3IDQ4IDE1Mi44MDVWMTEyaDQxNnpNNDggNDAwVjIxNC4zOThjMjIuOTE0IDE4LjI1MSA1NS40MDkgNDMuODYyIDEwNC45MzggODIuNjQ2IDIxLjg1NyAxNy4yMDUgNjAuMTM0IDU1LjE4NiAxMDMuMDYyIDU0Ljk1NSA0Mi43MTcuMjMxIDgwLjUwOS0zNy4xOTkgMTAzLjA1My01NC45NDcgNDkuNTI4LTM4Ljc4MyA4Mi4wMzItNjQuNDAxIDEwNC45NDctODIuNjUzVjQwMEg0OHoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdzaGFyZWVudmVsb3BlJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iaWNvbnN2Z3NoYXJlZW1haWwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjx0aXRsZT5FbWFpbDwvdGl0bGU+PHBhdGggZD0iTTQ2NCA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0wIDQ4djQwLjgwNWMtMjIuNDIyIDE4LjI1OS01OC4xNjggNDYuNjUxLTEzNC41ODcgMTA2LjQ5LTE2Ljg0MSAxMy4yNDctNTAuMjAxIDQ1LjA3Mi03My40MTMgNDQuNzAxLTIzLjIwOC4zNzUtNTYuNTc5LTMxLjQ1OS03My40MTMtNDQuNzAxQzEwNi4xOCAxOTkuNDY1IDcwLjQyNSAxNzEuMDY3IDQ4IDE1Mi44MDVWMTEyaDQxNnpNNDggNDAwVjIxNC4zOThjMjIuOTE0IDE4LjI1MSA1NS40MDkgNDMuODYyIDEwNC45MzggODIuNjQ2IDIxLjg1NyAxNy4yMDUgNjAuMTM0IDU1LjE4NiAxMDMuMDYyIDU0Ljk1NSA0Mi43MTcuMjMxIDgwLjUwOS0zNy4xOTkgMTAzLjA1My01NC45NDcgNDkuNTI4LTM4Ljc4MyA4Mi4wMzItNjQuNDAxIDEwNC45NDctODIuNjUzVjQwMEg0OHoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdwaG9uZSc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdwaG9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgZGF0YS1kZWZhdWx0Pjx0aXRsZT5QaG9uZTwvdGl0bGU+PHBhdGggZD0iTTQ5My40IDI0LjZsLTEwNC0yNGMtMTEuMy0yLjYtMjIuOSAzLjMtMjcuNSAxMy45bC00OCAxMTJjLTQuMiA5LjgtMS40IDIxLjMgNi45IDI4bDYwLjYgNDkuNmMtMzYgNzYuNy05OC45IDE0MC41LTE3Ny4yIDE3Ny4ybC00OS42LTYwLjZjLTYuOC04LjMtMTguMi0xMS4xLTI4LTYuOWwtMTEyIDQ4QzMuOSAzNjYuNS0yIDM3OC4xLjYgMzg5LjRsMjQgMTA0QzI3LjEgNTA0LjIgMzYuNyA1MTIgNDggNTEyYzI1Ni4xIDAgNDY0LTIwNy41IDQ2NC00NjQgMC0xMS4yLTcuNy0yMC45LTE4LjYtMjMuNHoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdjbG9zZSc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdjbG9zZSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCJ2aWV3Qm94PSIwIDAgMjI0LjUxMiAyMjQuNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMjQuNTEyIDIyNC41MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48dGl0bGU+Q2xvc2U8L3RpdGxlPjxnPjxwb2x5Z29uIHBvaW50cz0iMjI0LjUwNyw2Ljk5NyAyMTcuNTIxLDAgMTEyLjI1NiwxMDUuMjU4IDYuOTk4LDAgMC4wMDUsNi45OTcgMTA1LjI2MywxMTIuMjU0IDAuMDA1LDIxNy41MTIgNi45OTgsMjI0LjUxMiAxMTIuMjU2LDExOS4yNCAyMTcuNTIxLDIyNC41MTIgMjI0LjUwNywyMTcuNTEyIDExOS4yNDksMTEyLjI1NCIvPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdmYWNlYm9vayc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdmYiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjY0IDUxMiI+PHRpdGxlPkZhY2Vib29rPC90aXRsZT48cGF0aCBkPSJNNzYuNyA1MTJWMjgzSDB2LTkxaDc2Ljd2LTcxLjdDNzYuNyA0Mi40IDEyNC4zIDAgMTkzLjggMGMzMy4zIDAgNjEuOSAyLjUgNzAuMiAzLjZWODVoLTQ4LjJjLTM3LjggMC00NS4xIDE4LTQ1LjEgNDQuM1YxOTJIMjU2bC0xMS43IDkxaC03My42djIyOSIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ21lc3Nlbmdlcic6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdtZXNnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48dGl0bGU+RmFjZWJvb2sgTWVzc2VuZ2VyPC90aXRsZT48cGF0aCBkPSJNMjI0IDMyQzE1LjkgMzItNzcuNSAyNzggODQuNiA0MDAuNlY0ODBsNzUuNy00MmMxNDIuMiAzOS44IDI4NS40LTU5LjkgMjg1LjQtMTk4LjdDNDQ1LjggMTI0LjggMzQ2LjUgMzIgMjI0IDMyem0yMy40IDI3OC4xTDE5MCAyNTAuNSA3OS42IDMxMS42bDEyMS4xLTEyOC41IDU3LjQgNTkuNiAxMTAuNC02MS4xLTEyMS4xIDEyOC41eiIvPjwvc3ZnPicNCiAgICAgICAgY2FzZSAndHVtYmxyJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iaWNvbnN2Z3RtYiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIwIDUxMiI+PHRpdGxlPlR1bWJscjwvdGl0bGU+PHBhdGggZD0iTTMwOS44IDQ4MC4zYy0xMy42IDE0LjUtNTAgMzEuNy05Ny40IDMxLjctMTIwLjggMC0xNDctODguOC0xNDctMTQwLjZ2LTE0NEgxNy45Yy01LjUgMC0xMC00LjUtMTAtMTB2LTY4YzAtNy4yIDQuNS0xMy42IDExLjMtMTYgNjItMjEuOCA4MS41LTc2IDg0LjMtMTE3LjEuOC0xMSA2LjUtMTYuMyAxNi4xLTE2LjNoNzAuOWM1LjUgMCAxMCA0LjUgMTAgMTB2MTE1LjJoODNjNS41IDAgMTAgNC40IDEwIDkuOXY4MS43YzAgNS41LTQuNSAxMC0xMCAxMGgtODMuNFYzNjBjMCAzNC4yIDIzLjcgNTMuNiA2OCAzNS44IDQuOC0xLjkgOS0zLjIgMTIuNy0yLjIgMy41LjkgNS44IDMuNCA3LjQgNy45bDIyIDY0LjNjMS44IDUgMy4zIDEwLjYtLjQgMTQuNXoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdsaW5rZWRJbic6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdsaSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDQ4IDUxMiI+PHRpdGxlPkxpbmtlZEluPC90aXRsZT48cGF0aCBkPSJNMTAwLjMgNDgwSDcuNFYxODAuOWg5Mi45VjQ4MHpNNTMuOCAxNDAuMUMyNC4xIDE0MC4xIDAgMTE1LjUgMCA4NS44IDAgNTYuMSAyNC4xIDMyIDUzLjggMzJjMjkuNyAwIDUzLjggMjQuMSA1My44IDUzLjggMCAyOS43LTI0LjEgNTQuMy01My44IDU0LjN6TTQ0OCA0ODBoLTkyLjdWMzM0LjRjMC0zNC43LS43LTc5LjItNDguMy03OS4yLTQ4LjMgMC01NS43IDM3LjctNTUuNyA3Ni43VjQ4MGgtOTIuOFYxODAuOWg4OS4xdjQwLjhoMS4zYzEyLjQtMjMuNSA0Mi43LTQ4LjMgODcuOS00OC4zIDk0IDAgMTExLjMgNjEuOSAxMTEuMyAxNDIuM1Y0ODB6Ii8+PC9zdmc+JzsNCiAgICAgICAgY2FzZSAndHdpdHRlcic6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmd0dyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjx0aXRsZT5Ud2l0dGVyPC90aXRsZT48cGF0aCBkPSJNMTIuNi43NWgyLjQ1NGwtNS4zNiA2LjE0MkwxNiAxNS4yNWgtNC45MzdsLTMuODY3LTUuMDctNC40MjUgNS4wN0guMzE2bDUuNzMzLTYuNTdMMCAuNzVoNS4wNjNsMy40OTUgNC42MzNMMTIuNjAxLjc1Wm0tLjg2IDEzLjAyOGgxLjM2TDQuMzIzIDIuMTQ1SDIuODY1eiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3JlZGRpdCc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdyZWQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjx0aXRsZT5SZWRkaXQ8L3RpdGxlPjxwYXRoIGQ9Ik00NDAuMyAyMDMuNWMtMTUgMC0yOC4yIDYuMi0zNy45IDE1LjktMzUuNy0yNC43LTgzLjgtNDAuNi0xMzcuMS00Mi4zTDI5MyA1Mi4zbDg4LjIgMTkuOGMwIDIxLjYgMTcuNiAzOS4yIDM5LjIgMzkuMiAyMiAwIDM5LjctMTguMSAzOS43LTM5LjdzLTE3LjYtMzkuNy0zOS43LTM5LjdjLTE1LjQgMC0yOC43IDkuMy0zNS4zIDIybC05Ny40LTIxLjZjLTQuOS0xLjMtOS43IDIuMi0xMSA3LjFMMjQ2LjMgMTc3Yy01Mi45IDIuMi0xMDAuNSAxOC4xLTEzNi4zIDQyLjgtOS43LTEwLjEtMjMuNC0xNi4zLTM4LjQtMTYuMy01NS42IDAtNzMuOCA3NC42LTIyLjkgMTAwLjEtMS44IDcuOS0yLjYgMTYuMy0yLjYgMjQuNyAwIDgzLjggOTQuNCAxNTEuNyAyMTAuMyAxNTEuNyAxMTYuNCAwIDIxMC44LTY3LjkgMjEwLjgtMTUxLjcgMC04LjQtLjktMTcuMi0zLjEtMjUuMSA0OS45LTI1LjYgMzEuNS05OS43LTIzLjgtOTkuN3pNMTI5LjQgMzA4LjljMC0yMiAxNy42LTM5LjcgMzkuNy0zOS43IDIxLjYgMCAzOS4yIDE3LjYgMzkuMiAzOS43IDAgMjEuNi0xNy42IDM5LjItMzkuMiAzOS4yLTIyIC4xLTM5LjctMTcuNi0zOS43LTM5LjJ6bTIxNC4zIDkzLjVjLTM2LjQgMzYuNC0xMzkuMSAzNi40LTE3NS41IDAtNC0zLjUtNC05LjcgMC0xMy43IDMuNS0zLjUgOS43LTMuNSAxMy4yIDAgMjcuOCAyOC41IDEyMCAyOSAxNDkgMCAzLjUtMy41IDkuNy0zLjUgMTMuMiAwIDQuMSA0IDQuMSAxMC4yLjEgMTMuN3ptLS44LTU0LjJjLTIxLjYgMC0zOS4yLTE3LjYtMzkuMi0zOS4yIDAtMjIgMTcuNi0zOS43IDM5LjItMzkuNyAyMiAwIDM5LjcgMTcuNiAzOS43IDM5LjctLjEgMjEuNS0xNy43IDM5LjItMzkuNyAzOS4yeiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3BpbnRlcmVzdCc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdwaW4iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4NCA1MTIiPjx0aXRsZT5QaW50ZXJlc3Q8L3RpdGxlPjxwYXRoIGQ9Ik0yMDQgNi41QzEwMS40IDYuNSAwIDc0LjkgMCAxODUuNiAwIDI1NiAzOS42IDI5NiA2My42IDI5NmM5LjkgMCAxNS42LTI3LjYgMTUuNi0zNS40IDAtOS4zLTIzLjctMjkuMS0yMy43LTY3LjggMC04MC40IDYxLjItMTM3LjQgMTQwLjQtMTM3LjQgNjguMSAwIDExOC41IDM4LjcgMTE4LjUgMTA5LjggMCA1My4xLTIxLjMgMTUyLjctOTAuMyAxNTIuNy0yNC45IDAtNDYuMi0xOC00Ni4yLTQzLjggMC0zNy44IDI2LjQtNzQuNCAyNi40LTExMy40IDAtNjYuMi05My45LTU0LjItOTMuOSAyNS44IDAgMTYuOCAyLjEgMzUuNCA5LjYgNTAuNy0xMy44IDU5LjQtNDIgMTQ3LjktNDIgMjA5LjEgMCAxOC45IDIuNyAzNy41IDQuNSA1Ni40IDMuNCAzLjggMS43IDMuNCA2LjkgMS41IDUwLjQtNjkgNDguNi04Mi41IDcxLjQtMTcyLjggMTIuMyAyMy40IDQ0LjEgMzYgNjkuMyAzNiAxMDYuMiAwIDE1My45LTEwMy41IDE1My45LTE5Ni44QzM4NCA3MS4zIDI5OC4yIDYuNSAyMDQgNi41eiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3NoYXJlJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iaWNvbnN2Z3NoYXJlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTM2IDE3OTIiPjx0aXRsZT5TaGFyZTwvdGl0bGU+PHBhdGggZD0iTTEyMTYgMTAyNHExMzMgMCAyMjYuNSA5My41dDkzLjUgMjI2LjUtOTMuNSAyMjYuNS0yMjYuNSA5My41LTIyNi41LTkzLjUtOTMuNS0yMjYuNXEwLTEyIDItMzRsLTM2MC0xODBxLTkyIDg2LTIxOCA4Ni0xMzMgMC0yMjYuNS05My41dC05My41LTIyNi41IDkzLjUtMjI2LjUgMjI2LjUtOTMuNXExMjYgMCAyMTggODZsMzYwLTE4MHEtMi0yMi0yLTM0IDAtMTMzIDkzLjUtMjI2LjV0MjI2LjUtOTMuNSAyMjYuNSA5My41IDkzLjUgMjI2LjUtOTMuNSAyMjYuNS0yMjYuNSA5My41cS0xMjYgMC0yMTgtODZsLTM2MCAxODBxMiAyMiAyIDM0dC0yIDM0bDM2MCAxODBxOTItODYgMjE4LTg2eiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3Ntcyc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdzbXMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjx0aXRsZT5TTVMgVGV4dDwvdGl0bGU+PHBhdGggZD0iTTQ0OCAwSDY0QzI4LjcgMCAwIDI4LjcgMCA2NHYyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZ2ODRjMCA5LjggMTEuMiAxNS41IDE5LjEgOS43TDMwNCA0MTZoMTQ0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0eiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ2xpbmsnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJpY29uc3ZnbGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHBhdGggZD0iTTMyNi42MTIgMTg1LjM5MWM1OS43NDcgNTkuODA5IDU4LjkyNyAxNTUuNjk4LjM2IDIxNC41OS0uMTEuMTItLjI0LjI1LS4zNi4zN2wtNjcuMiA2Ny4yYy01OS4yNyA1OS4yNy0xNTUuNjk5IDU5LjI2Mi0yMTQuOTYgMC01OS4yNy01OS4yNi01OS4yNy0xNTUuNyAwLTIxNC45NmwzNy4xMDYtMzcuMTA2YzkuODQtOS44NCAyNi43ODYtMy4zIDI3LjI5NCAxMC42MDYuNjQ4IDE3LjcyMiAzLjgyNiAzNS41MjcgOS42OSA1Mi43MjEgMS45ODYgNS44MjIuNTY3IDEyLjI2Mi0zLjc4MyAxNi42MTJsLTEzLjA4NyAxMy4wODdjLTI4LjAyNiAyOC4wMjYtMjguOTA1IDczLjY2LTEuMTU1IDEwMS45NiAyOC4wMjQgMjguNTc5IDc0LjA4NiAyOC43NDkgMTAyLjMyNS41MWw2Ny4yLTY3LjE5YzI4LjE5MS0yOC4xOTEgMjguMDczLTczLjc1NyAwLTEwMS44My0zLjcwMS0zLjY5NC03LjQyOS02LjU2NC0xMC4zNDEtOC41NjlhMTYuMDM3IDE2LjAzNyAwIDAgMS02Ljk0Ny0xMi42MDZjLS4zOTYtMTAuNTY3IDMuMzQ4LTIxLjQ1NiAxMS42OTgtMjkuODA2bDIxLjA1NC0yMS4wNTVjNS41MjEtNS41MjEgMTQuMTgyLTYuMTk5IDIwLjU4NC0xLjczMWExNTIuNDgyIDE1Mi40ODIgMCAwIDEgMjAuNTIyIDE3LjE5N3pNNDY3LjU0NyA0NC40NDljLTU5LjI2MS01OS4yNjItMTU1LjY5LTU5LjI3LTIxNC45NiAwbC02Ny4yIDY3LjJjLS4xMi4xMi0uMjUuMjUtLjM2LjM3LTU4LjU2NiA1OC44OTItNTkuMzg3IDE1NC43ODEuMzYgMjE0LjU5YTE1Mi40NTQgMTUyLjQ1NCAwIDAgMCAyMC41MjEgMTcuMTk2YzYuNDAyIDQuNDY4IDE1LjA2NCAzLjc4OSAyMC41ODQtMS43MzFsMjEuMDU0LTIxLjA1NWM4LjM1LTguMzUgMTIuMDk0LTE5LjIzOSAxMS42OTgtMjkuODA2YTE2LjAzNyAxNi4wMzcgMCAwIDAtNi45NDctMTIuNjA2Yy0yLjkxMi0yLjAwNS02LjY0LTQuODc1LTEwLjM0MS04LjU2OS0yOC4wNzMtMjguMDczLTI4LjE5MS03My42MzkgMC0xMDEuODNsNjcuMi02Ny4xOWMyOC4yMzktMjguMjM5IDc0LjMtMjguMDY5IDEwMi4zMjUuNTEgMjcuNzUgMjguMyAyNi44NzIgNzMuOTM0LTEuMTU1IDEwMS45NmwtMTMuMDg3IDEzLjA4N2MtNC4zNSA0LjM1LTUuNzY5IDEwLjc5LTMuNzgzIDE2LjYxMiA1Ljg2NCAxNy4xOTQgOS4wNDIgMzQuOTk5IDkuNjkgNTIuNzIxLjUwOSAxMy45MDYgMTcuNDU0IDIwLjQ0NiAyNy4yOTQgMTAuNjA2bDM3LjEwNi0zNy4xMDZjNTkuMjcxLTU5LjI1OSA1OS4yNzEtMTU1LjY5OS4wMDEtMjE0Ljk1OXoiLz48L3N2Zz4nOw0KICAgICAgICBkZWZhdWx0OiANCiAgICAgICAgICAgIHJldHVybiAnJzsNCiAgICB9DQp9DQpmdW5jdGlvbiBnZXRTdmcobmFtZSkgew0KICAgIGNvbnN0IHR5cGUgPSBuYW1lPyBuYW1lIDogZGF0YS5jb25maWcuRGVza01haW47DQogICAgc3dpdGNoKHR5cGUpIHsNCiAgICAgICAgY2FzZSAndkVsbGlwc2lzJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgNTEyIj48dGl0bGU+TW9yZTwvdGl0bGU+PHBhdGggZD0iTTk2IDE4NGMzOS44IDAgNzIgMzIuMiA3MiA3MnMtMzIuMiA3Mi03MiA3Mi03Mi0zMi4yLTcyLTcyIDMyLjItNzIgNzItNzJ6TTI0IDgwYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzJTMTM1LjggOCA5NiA4IDI0IDQwLjIgMjQgODB6bTAgMzUyYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03Mi03MiAzMi4yLTcyIDcyeiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ21hcCc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Im1hcC1pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzODQgNTEyIiBkYXRhLWRlZmF1bHQ9InRydWUiPjxwYXRoIGQ9Ik0xNzIuMjY4IDUwMS42N0MyNi45NyAyOTEuMDMxIDAgMjY5LjQxMyAwIDE5MiAwIDg1Ljk2MSA4NS45NjEgMCAxOTIgMHMxOTIgODUuOTYxIDE5MiAxOTJjMCA3Ny40MTMtMjYuOTcgOTkuMDMxLTE3Mi4yNjggMzA5LjY3LTkuNTM1IDEzLjc3NC0yOS45MyAxMy43NzMtMzkuNDY0IDB6TTE5MiAyNzJjNDQuMTgzIDAgODAtMzUuODE3IDgwLTgwcy0zNS44MTctODAtODAtODAtODAgMzUuODE3LTgwIDgwIDM1LjgxNyA4MCA4MCA4MHoiLz48L3N2Zz4nDQogICAgICAgIGNhc2UgJ2hFbGxpcHNpcyc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHRpdGxlPk1vcmU8L3RpdGxlPjxwYXRoIGQ9Ik0zMjggMjU2YzAgMzkuOC0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcyIDMyLjItNzIgNzItNzIgNzIgMzIuMiA3MiA3MnptMTA0LTcyYy0zOS44IDAtNzIgMzIuMi03MiA3MnMzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03MnptLTM1MiAwYy0zOS44IDAtNzIgMzIuMi03MiA3MnMzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03MnoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdwbHVzJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDIgNDIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQyIDQyOyB4bWw6c3BhY2U9InByZXNlcnZlIj48dGl0bGU+TW9yZTwvdGl0bGU+PHBvbHlnb24gcG9pbnRzPSI0MiwyMCAyMiwyMCAyMiwwIDIwLDAgMjAsMjAgMCwyMCAwLDIyIDIwLDIyIDIwLDQyIDIyLDQyIDIyLDIyIDQyLDIyICIvPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ2JhcnMnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjx0aXRsZT5Nb3JlPC90aXRsZT48cGF0aCBkPSJNMTYgMTMyaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2Vjc2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZIMTZDNy4xNjMgNjAgMCA2Ny4xNjMgMCA3NnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2eiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ2VudmVsb3BlJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iZW1haWwtaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHRpdGxlPkVtYWlsPC90aXRsZT48cGF0aCBkPSJNNDY0IDY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTEyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bTAgNDh2NDAuODA1Yy0yMi40MjIgMTguMjU5LTU4LjE2OCA0Ni42NTEtMTM0LjU4NyAxMDYuNDktMTYuODQxIDEzLjI0Ny01MC4yMDEgNDUuMDcyLTczLjQxMyA0NC43MDEtMjMuMjA4LjM3NS01Ni41NzktMzEuNDU5LTczLjQxMy00NC43MDFDMTA2LjE4IDE5OS40NjUgNzAuNDI1IDE3MS4wNjcgNDggMTUyLjgwNVYxMTJoNDE2ek00OCA0MDBWMjE0LjM5OGMyMi45MTQgMTguMjUxIDU1LjQwOSA0My44NjIgMTA0LjkzOCA4Mi42NDYgMjEuODU3IDE3LjIwNSA2MC4xMzQgNTUuMTg2IDEwMy4wNjIgNTQuOTU1IDQyLjcxNy4yMzEgODAuNTA5LTM3LjE5OSAxMDMuMDUzLTU0Ljk0NyA0OS41MjgtMzguNzgzIDgyLjAzMi02NC40MDEgMTA0Ljk0Ny04Mi42NTNWNDAwSDQ4eiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3NoYXJlZW52ZWxvcGUnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJpY29uc3Znc2hhcmVlbWFpbCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHRpdGxlPkVtYWlsPC90aXRsZT48cGF0aCBkPSJNNDY0IDY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTEyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bTAgNDh2NDAuODA1Yy0yMi40MjIgMTguMjU5LTU4LjE2OCA0Ni42NTEtMTM0LjU4NyAxMDYuNDktMTYuODQxIDEzLjI0Ny01MC4yMDEgNDUuMDcyLTczLjQxMyA0NC43MDEtMjMuMjA4LjM3NS01Ni41NzktMzEuNDU5LTczLjQxMy00NC43MDFDMTA2LjE4IDE5OS40NjUgNzAuNDI1IDE3MS4wNjcgNDggMTUyLjgwNVYxMTJoNDE2ek00OCA0MDBWMjE0LjM5OGMyMi45MTQgMTguMjUxIDU1LjQwOSA0My44NjIgMTA0LjkzOCA4Mi42NDYgMjEuODU3IDE3LjIwNSA2MC4xMzQgNTUuMTg2IDEwMy4wNjIgNTQuOTU1IDQyLjcxNy4yMzEgODAuNTA5LTM3LjE5OSAxMDMuMDUzLTU0Ljk0NyA0OS41MjgtMzguNzgzIDgyLjAzMi02NC40MDEgMTA0Ljk0Ny04Mi42NTNWNDAwSDQ4eiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3Bob25lJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iY2FsbC1pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBkYXRhLWRlZmF1bHQ+PHRpdGxlPlBob25lPC90aXRsZT48cGF0aCBkPSJNNDkzLjQgMjQuNmwtMTA0LTI0Yy0xMS4zLTIuNi0yMi45IDMuMy0yNy41IDEzLjlsLTQ4IDExMmMtNC4yIDkuOC0xLjQgMjEuMyA2LjkgMjhsNjAuNiA0OS42Yy0zNiA3Ni43LTk4LjkgMTQwLjUtMTc3LjIgMTc3LjJsLTQ5LjYtNjAuNmMtNi44LTguMy0xOC4yLTExLjEtMjgtNi45bC0xMTIgNDhDMy45IDM2Ni41LTIgMzc4LjEuNiAzODkuNGwyNCAxMDRDMjcuMSA1MDQuMiAzNi43IDUxMiA0OCA1MTJjMjU2LjEgMCA0NjQtMjA3LjUgNDY0LTQ2NCAwLTExLjItNy43LTIwLjktMTguNi0yMy40eiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ2Nsb3NlJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iaWNvbnN2Z2Nsb3NlIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4InZpZXdCb3g9IjAgMCAyMjQuNTEyIDIyNC41MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyNC41MTIgMjI0LjUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjx0aXRsZT5DbG9zZTwvdGl0bGU+PGc+PHBvbHlnb24gcG9pbnRzPSIyMjQuNTA3LDYuOTk3IDIxNy41MjEsMCAxMTIuMjU2LDEwNS4yNTggNi45OTgsMCAwLjAwNSw2Ljk5NyAxMDUuMjYzLDExMi4yNTQgMC4wMDUsMjE3LjUxMiA2Ljk5OCwyMjQuNTEyIDExMi4yNTYsMTE5LjI0IDIxNy41MjEsMjI0LjUxMiAyMjQuNTA3LDIxNy41MTIgMTE5LjI0OSwxMTIuMjU0Ii8+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ2ZhY2Vib29rJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iaWNvbnN2Z2ZiIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNjQgNTEyIj48dGl0bGU+RmFjZWJvb2s8L3RpdGxlPjxwYXRoIGQ9Ik03Ni43IDUxMlYyODNIMHYtOTFoNzYuN3YtNzEuN0M3Ni43IDQyLjQgMTI0LjMgMCAxOTMuOCAwYzMzLjMgMCA2MS45IDIuNSA3MC4yIDMuNlY4NWgtNDguMmMtMzcuOCAwLTQ1LjEgMTgtNDUuMSA0NC4zVjE5MkgyNTZsLTExLjcgOTFoLTczLjZ2MjI5Ii8+PC9zdmc+JzsNCiAgICAgICAgY2FzZSAnbWVzc2VuZ2VyJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0ibWVzcy1pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48dGl0bGU+RmFjZWJvb2sgTWVzc2VuZ2VyPC90aXRsZT48cGF0aCBkPSJNMjI0IDMyQzE1LjkgMzItNzcuNSAyNzggODQuNiA0MDAuNlY0ODBsNzUuNy00MmMxNDIuMiAzOS44IDI4NS40LTU5LjkgMjg1LjQtMTk4LjdDNDQ1LjggMTI0LjggMzQ2LjUgMzIgMjI0IDMyem0yMy40IDI3OC4xTDE5MCAyNTAuNSA3OS42IDMxMS42bDEyMS4xLTEyOC41IDU3LjQgNTkuNiAxMTAuNC02MS4xLTEyMS4xIDEyOC41eiIvPjwvc3ZnPicNCiAgICAgICAgY2FzZSAndHVtYmxyJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iaWNvbnN2Z3RtYiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIwIDUxMiI+PHRpdGxlPlR1bWJscjwvdGl0bGU+PHBhdGggZD0iTTMwOS44IDQ4MC4zYy0xMy42IDE0LjUtNTAgMzEuNy05Ny40IDMxLjctMTIwLjggMC0xNDctODguOC0xNDctMTQwLjZ2LTE0NEgxNy45Yy01LjUgMC0xMC00LjUtMTAtMTB2LTY4YzAtNy4yIDQuNS0xMy42IDExLjMtMTYgNjItMjEuOCA4MS41LTc2IDg0LjMtMTE3LjEuOC0xMSA2LjUtMTYuMyAxNi4xLTE2LjNoNzAuOWM1LjUgMCAxMCA0LjUgMTAgMTB2MTE1LjJoODNjNS41IDAgMTAgNC40IDEwIDkuOXY4MS43YzAgNS41LTQuNSAxMC0xMCAxMGgtODMuNFYzNjBjMCAzNC4yIDIzLjcgNTMuNiA2OCAzNS44IDQuOC0xLjkgOS0zLjIgMTIuNy0yLjIgMy41LjkgNS44IDMuNCA3LjQgNy45bDIyIDY0LjNjMS44IDUgMy4zIDEwLjYtLjQgMTQuNXoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdsaW5rZWRJbic6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdsaSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDQ4IDUxMiI+PHRpdGxlPkxpbmtlZEluPC90aXRsZT48cGF0aCBkPSJNMTAwLjMgNDgwSDcuNFYxODAuOWg5Mi45VjQ4MHpNNTMuOCAxNDAuMUMyNC4xIDE0MC4xIDAgMTE1LjUgMCA4NS44IDAgNTYuMSAyNC4xIDMyIDUzLjggMzJjMjkuNyAwIDUzLjggMjQuMSA1My44IDUzLjggMCAyOS43LTI0LjEgNTQuMy01My44IDU0LjN6TTQ0OCA0ODBoLTkyLjdWMzM0LjRjMC0zNC43LS43LTc5LjItNDguMy03OS4yLTQ4LjMgMC01NS43IDM3LjctNTUuNyA3Ni43VjQ4MGgtOTIuOFYxODAuOWg4OS4xdjQwLjhoMS4zYzEyLjQtMjMuNSA0Mi43LTQ4LjMgODcuOS00OC4zIDk0IDAgMTExLjMgNjEuOSAxMTEuMyAxNDIuM1Y0ODB6Ii8+PC9zdmc+JzsNCiAgICAgICAgY2FzZSAndHdpdHRlcic6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmd0dyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjx0aXRsZT5Ud2l0dGVyPC90aXRsZT48cGF0aCBkPSJNMTIuNi43NWgyLjQ1NGwtNS4zNiA2LjE0MkwxNiAxNS4yNWgtNC45MzdsLTMuODY3LTUuMDctNC40MjUgNS4wN0guMzE2bDUuNzMzLTYuNTdMMCAuNzVoNS4wNjNsMy40OTUgNC42MzNMMTIuNjAxLjc1Wm0tLjg2IDEzLjAyOGgxLjM2TDQuMzIzIDIuMTQ1SDIuODY1eiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3JlZGRpdCc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdyZWQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjx0aXRsZT5SZWRkaXQ8L3RpdGxlPjxwYXRoIGQ9Ik00NDAuMyAyMDMuNWMtMTUgMC0yOC4yIDYuMi0zNy45IDE1LjktMzUuNy0yNC43LTgzLjgtNDAuNi0xMzcuMS00Mi4zTDI5MyA1Mi4zbDg4LjIgMTkuOGMwIDIxLjYgMTcuNiAzOS4yIDM5LjIgMzkuMiAyMiAwIDM5LjctMTguMSAzOS43LTM5LjdzLTE3LjYtMzkuNy0zOS43LTM5LjdjLTE1LjQgMC0yOC43IDkuMy0zNS4zIDIybC05Ny40LTIxLjZjLTQuOS0xLjMtOS43IDIuMi0xMSA3LjFMMjQ2LjMgMTc3Yy01Mi45IDIuMi0xMDAuNSAxOC4xLTEzNi4zIDQyLjgtOS43LTEwLjEtMjMuNC0xNi4zLTM4LjQtMTYuMy01NS42IDAtNzMuOCA3NC42LTIyLjkgMTAwLjEtMS44IDcuOS0yLjYgMTYuMy0yLjYgMjQuNyAwIDgzLjggOTQuNCAxNTEuNyAyMTAuMyAxNTEuNyAxMTYuNCAwIDIxMC44LTY3LjkgMjEwLjgtMTUxLjcgMC04LjQtLjktMTcuMi0zLjEtMjUuMSA0OS45LTI1LjYgMzEuNS05OS43LTIzLjgtOTkuN3pNMTI5LjQgMzA4LjljMC0yMiAxNy42LTM5LjcgMzkuNy0zOS43IDIxLjYgMCAzOS4yIDE3LjYgMzkuMiAzOS43IDAgMjEuNi0xNy42IDM5LjItMzkuMiAzOS4yLTIyIC4xLTM5LjctMTcuNi0zOS43LTM5LjJ6bTIxNC4zIDkzLjVjLTM2LjQgMzYuNC0xMzkuMSAzNi40LTE3NS41IDAtNC0zLjUtNC05LjcgMC0xMy43IDMuNS0zLjUgOS43LTMuNSAxMy4yIDAgMjcuOCAyOC41IDEyMCAyOSAxNDkgMCAzLjUtMy41IDkuNy0zLjUgMTMuMiAwIDQuMSA0IDQuMSAxMC4yLjEgMTMuN3ptLS44LTU0LjJjLTIxLjYgMC0zOS4yLTE3LjYtMzkuMi0zOS4yIDAtMjIgMTcuNi0zOS43IDM5LjItMzkuNyAyMiAwIDM5LjcgMTcuNiAzOS43IDM5LjctLjEgMjEuNS0xNy43IDM5LjItMzkuNyAzOS4yeiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3BpbnRlcmVzdCc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdwaW4iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4NCA1MTIiPjx0aXRsZT5QaW50ZXJlc3Q8L3RpdGxlPjxwYXRoIGQ9Ik0yMDQgNi41QzEwMS40IDYuNSAwIDc0LjkgMCAxODUuNiAwIDI1NiAzOS42IDI5NiA2My42IDI5NmM5LjkgMCAxNS42LTI3LjYgMTUuNi0zNS40IDAtOS4zLTIzLjctMjkuMS0yMy43LTY3LjggMC04MC40IDYxLjItMTM3LjQgMTQwLjQtMTM3LjQgNjguMSAwIDExOC41IDM4LjcgMTE4LjUgMTA5LjggMCA1My4xLTIxLjMgMTUyLjctOTAuMyAxNTIuNy0yNC45IDAtNDYuMi0xOC00Ni4yLTQzLjggMC0zNy44IDI2LjQtNzQuNCAyNi40LTExMy40IDAtNjYuMi05My45LTU0LjItOTMuOSAyNS44IDAgMTYuOCAyLjEgMzUuNCA5LjYgNTAuNy0xMy44IDU5LjQtNDIgMTQ3LjktNDIgMjA5LjEgMCAxOC45IDIuNyAzNy41IDQuNSA1Ni40IDMuNCAzLjggMS43IDMuNCA2LjkgMS41IDUwLjQtNjkgNDguNi04Mi41IDcxLjQtMTcyLjggMTIuMyAyMy40IDQ0LjEgMzYgNjkuMyAzNiAxMDYuMiAwIDE1My45LTEwMy41IDE1My45LTE5Ni44QzM4NCA3MS4zIDI5OC4yIDYuNSAyMDQgNi41eiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3NoYXJlJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0ic2hhcmUtaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTUzNiAxNzkyIj48dGl0bGU+U2hhcmU8L3RpdGxlPjxwYXRoIGQ9Ik0xMjE2IDEwMjRxMTMzIDAgMjI2LjUgOTMuNXQ5My41IDIyNi41LTkzLjUgMjI2LjUtMjI2LjUgOTMuNS0yMjYuNS05My41LTkzLjUtMjI2LjVxMC0xMiAyLTM0bC0zNjAtMTgwcS05MiA4Ni0yMTggODYtMTMzIDAtMjI2LjUtOTMuNXQtOTMuNS0yMjYuNSA5My41LTIyNi41IDIyNi41LTkzLjVxMTI2IDAgMjE4IDg2bDM2MC0xODBxLTItMjItMi0zNCAwLTEzMyA5My41LTIyNi41dDIyNi41LTkzLjUgMjI2LjUgOTMuNSA5My41IDIyNi41LTkzLjUgMjI2LjUtMjI2LjUgOTMuNXEtMTI2IDAtMjE4LTg2bC0zNjAgMTgwcTIgMjIgMiAzNHQtMiAzNGwzNjAgMTgwcTkyLTg2IDIxOC04NnoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdzbXMnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJzbXMtaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHRpdGxlPlNNUyBUZXh0PC90aXRsZT48cGF0aCBkPSJNNDQ4IDBINjRDMjguNyAwIDAgMjguNyAwIDY0djI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg5NnY4NGMwIDkuOCAxMS4yIDE1LjUgMTkuMSA5LjdMMzA0IDQxNmgxNDRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjR6Ii8+PC9zdmc+JzsNCiAgICAgICAgY2FzZSAnbGluayc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9ImxpbmstaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHBhdGggZD0iTTMyNi42MTIgMTg1LjM5MWM1OS43NDcgNTkuODA5IDU4LjkyNyAxNTUuNjk4LjM2IDIxNC41OS0uMTEuMTItLjI0LjI1LS4zNi4zN2wtNjcuMiA2Ny4yYy01OS4yNyA1OS4yNy0xNTUuNjk5IDU5LjI2Mi0yMTQuOTYgMC01OS4yNy01OS4yNi01OS4yNy0xNTUuNyAwLTIxNC45NmwzNy4xMDYtMzcuMTA2YzkuODQtOS44NCAyNi43ODYtMy4zIDI3LjI5NCAxMC42MDYuNjQ4IDE3LjcyMiAzLjgyNiAzNS41MjcgOS42OSA1Mi43MjEgMS45ODYgNS44MjIuNTY3IDEyLjI2Mi0zLjc4MyAxNi42MTJsLTEzLjA4NyAxMy4wODdjLTI4LjAyNiAyOC4wMjYtMjguOTA1IDczLjY2LTEuMTU1IDEwMS45NiAyOC4wMjQgMjguNTc5IDc0LjA4NiAyOC43NDkgMTAyLjMyNS41MWw2Ny4yLTY3LjE5YzI4LjE5MS0yOC4xOTEgMjguMDczLTczLjc1NyAwLTEwMS44My0zLjcwMS0zLjY5NC03LjQyOS02LjU2NC0xMC4zNDEtOC41NjlhMTYuMDM3IDE2LjAzNyAwIDAgMS02Ljk0Ny0xMi42MDZjLS4zOTYtMTAuNTY3IDMuMzQ4LTIxLjQ1NiAxMS42OTgtMjkuODA2bDIxLjA1NC0yMS4wNTVjNS41MjEtNS41MjEgMTQuMTgyLTYuMTk5IDIwLjU4NC0xLjczMWExNTIuNDgyIDE1Mi40ODIgMCAwIDEgMjAuNTIyIDE3LjE5N3pNNDY3LjU0NyA0NC40NDljLTU5LjI2MS01OS4yNjItMTU1LjY5LTU5LjI3LTIxNC45NiAwbC02Ny4yIDY3LjJjLS4xMi4xMi0uMjUuMjUtLjM2LjM3LTU4LjU2NiA1OC44OTItNTkuMzg3IDE1NC43ODEuMzYgMjE0LjU5YTE1Mi40NTQgMTUyLjQ1NCAwIDAgMCAyMC41MjEgMTcuMTk2YzYuNDAyIDQuNDY4IDE1LjA2NCAzLjc4OSAyMC41ODQtMS43MzFsMjEuMDU0LTIxLjA1NWM4LjM1LTguMzUgMTIuMDk0LTE5LjIzOSAxMS42OTgtMjkuODA2YTE2LjAzNyAxNi4wMzcgMCAwIDAtNi45NDctMTIuNjA2Yy0yLjkxMi0yLjAwNS02LjY0LTQuODc1LTEwLjM0MS04LjU2OS0yOC4wNzMtMjguMDczLTI4LjE5MS03My42MzkgMC0xMDEuODNsNjcuMi02Ny4xOWMyOC4yMzktMjguMjM5IDc0LjMtMjguMDY5IDEwMi4zMjUuNTEgMjcuNzUgMjguMyAyNi44NzIgNzMuOTM0LTEuMTU1IDEwMS45NmwtMTMuMDg3IDEzLjA4N2MtNC4zNSA0LjM1LTUuNzY5IDEwLjc5LTMuNzgzIDE2LjYxMiA1Ljg2NCAxNy4xOTQgOS4wNDIgMzQuOTk5IDkuNjkgNTIuNzIxLjUwOSAxMy45MDYgMTcuNDU0IDIwLjQ0NiAyNy4yOTQgMTAuNjA2bDM3LjEwNi0zNy4xMDZjNTkuMjcxLTU5LjI1OSA1OS4yNzEtMTU1LjY5OS4wMDEtMjE0Ljk1OXoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdjaGF0JzoNCiAgICAgICAgICAgIC8vIHJldHVybiAnPHN2ZyBjbGFzcz0iY2hhdC1pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48dGl0bGU+RW1haWw8L3RpdGxlPjxwYXRoIGQ9Ik00NjQgNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0OHY0MC44MDVjLTIyLjQyMiAxOC4yNTktNTguMTY4IDQ2LjY1MS0xMzQuNTg3IDEwNi40OS0xNi44NDEgMTMuMjQ3LTUwLjIwMSA0NS4wNzItNzMuNDEzIDQ0LjcwMS0yMy4yMDguMzc1LTU2LjU3OS0zMS40NTktNzMuNDEzLTQ0LjcwMUMxMDYuMTggMTk5LjQ2NSA3MC40MjUgMTcxLjA2NyA0OCAxNTIuODA1VjExMmg0MTZ6TTQ4IDQwMFYyMTQuMzk4YzIyLjkxNCAxOC4yNTEgNTUuNDA5IDQzLjg2MiAxMDQuOTM4IDgyLjY0NiAyMS44NTcgMTcuMjA1IDYwLjEzNCA1NS4xODYgMTAzLjA2MiA1NC45NTUgNDIuNzE3LjIzMSA4MC41MDktMzcuMTk5IDEwMy4wNTMtNTQuOTQ3IDQ5LjUyOC0zOC43ODMgODIuMDMyLTY0LjQwMSAxMDQuOTQ3LTgyLjY1M1Y0MDBINDh6Ii8+PC9zdmc+JzsNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iY2hhdC1pY29uIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Zz48cGF0aCBkPSJtNDYwLjc0NyA0MzkuMTYzYzg5LjExOS0xMDIuNzkxIDU4LjExMS0yNjIuNTkyLTYzLjA5NC0zMjQuOTMtMzUuMDA0LTY3Ljc4NC0xMDUuNzU0LTExNC4yMzMtMTg3LjE1My0xMTQuMjMzLTExNi4wNjQgMC0yMTAuNDg4IDk0LjQzLTIxMC40ODggMjEwLjUgMCA1MS4wOTkgMTguMDg4IDk5LjQyNyA1MS4yMzcgMTM3LjY2M2wtNDYuNzc0IDQ2LjE2Yy05LjQ4IDkuMzU3LTIuOTEzIDI1LjYxMiAxMC40NjUgMjUuNjc3bDExMi45NTYuNTM4YzM4LjkyNSA1Ni42NDEgMTAzLjIyOCA5MS40NjIgMTczLjYgOTEuNDYyLjE0NCAwIDE5NS40NDYtLjk5OSAxOTUuNTYxLTEgMTMuMzMzLS4wNjQgMTkuOTc1LTE2LjI5IDEwLjQ2NC0yNS42Nzd6bS0zNzcuOTg1LTEwMS4xNDZjLTM0LjAxNy0zNC4wOC01Mi43NTItNzkuMzY3LTUyLjc1Mi0xMjcuNTE3IDAtOTkuNTI4IDgwLjk2OC0xODAuNSAxODAuNDktMTgwLjVzMTgwLjQ5IDgwLjk3MiAxODAuNDkgMTgwLjVjMCA5NS4zNzMtNzUuNDczIDE4MS4yNjktMTg2LjM0MyAxODAuNDAzbC0xNTMuMjU4LS43MyAzMS4yOTMtMzAuODgyYzUuOTE4LTUuODQyIDUuOTUzLTE1LjM4OS4wOC0yMS4yNzR6bTIxOC43MzQgMTQzLjk4M2MtNTIuNjM0IDAtMTAxLjU1Ny0yMi40ODktMTM1LjU2NS02MS4yODEgNTcuMTA0LjM3NiA0MS45NDUuMjgxIDQ0LjU2OS4yODEgMTM1LjQwMiAwIDIzNi41MDYtMTI3LjAwOSAyMDQuNjg5LTI1OS42MTcgODIuOTY2IDY3Ljc3NCA4OS43NjEgMTkxLjc3OSAxNC4wNDUgMjY3LjYzNC01Ljg3NCA1Ljg4NS01LjgzOCAxNS40MzMuMDggMjEuMjc0bDMxLjI5MyAzMC44ODJjLS4xMTkgMC0xNTguOTk1LjgyNy0xNTkuMTExLjgyN3oiLz48cGF0aCBkPSJtMTIxLjAwNSAxNjZoMTc5Ljk5YzguMjg0IDAgMTQuOTk5LTYuNzE2IDE0Ljk5OS0xNXMtNi43MTUtMTUtMTQuOTk5LTE1aC0xNzkuOTljLTguMjg0IDAtMTQuOTk5IDYuNzE2LTE0Ljk5OSAxNXM2LjcxNiAxNSAxNC45OTkgMTV6Ii8+PHBhdGggZD0ibTEyMS4wMDUgMjI2aDE3OS45OWM4LjI4NCAwIDE0Ljk5OS02LjcxNiAxNC45OTktMTVzLTYuNzE1LTE1LTE0Ljk5OS0xNWgtMTc5Ljk5Yy04LjI4NCAwLTE0Ljk5OSA2LjcxNi0xNC45OTkgMTVzNi43MTYgMTUgMTQuOTk5IDE1eiIvPjxwYXRoIGQ9Im0xMjEuMDA1IDI4NmgxNzkuOTljOC4yODQgMCAxNC45OTktNi43MTYgMTQuOTk5LTE1cy02LjcxNS0xNS0xNC45OTktMTVoLTE3OS45OWMtOC4yODQgMC0xNC45OTkgNi43MTYtMTQuOTk5IDE1czYuNzE2IDE1IDE0Ljk5OSAxNXoiLz48L2c+PC9zdmc+JzsNCiAgICAgICAgZGVmYXVsdDogDQogICAgICAgICAgICByZXR1cm4gJyc7DQogICAgfQ0KfQ0K","css":"#main-container.open > svg {\n fill: #333333 !important;\n}\n\n#main-container {\n display: inline-block;\n margin: 0 auto;\n}\n\n.master-bar > #main-container {\n margin: 0;\n width: 40px;\n max-height: 60px;\n}\n\n#close-bar {\n width: 42.666px;\n z-index: 10000006;\n position: absolute;\n bottom: 0.5em;\n right: 0.5em;\n}\n\n#close-bar svg {\n fill: #fff !important;\n}\n\n.share-container .iconsvgshareemail {\n padding: 0 !important;\n margin: 0 auto !important;\n display: block;\n width: 60%;\n}\n\n.fab {\n background: #fff;\n width: 64px;\n height: 64px;\n border-radius: 50%;\n text-align: center;\n color: #333333;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5), 3px 3px 3px rgba(0, 0, 0, 0.25);\n position: fixed;\n bottom: 0px;\n right: 0px;\n font-size: 2.6667em;\n display: inline-block;\n cursor: default;\n}\n\n.fab.master-mobile, .child.mobile {\n bottom: 15px;\n right: 15px;\n}\n\n.fab.bsr-left {\n bottom: 15px !important;\n left: 15px !important;\n}\n\n.fab, .social-icon span {\n vertical-align: middle;\n}\n\n.fab.child {\n width: 42.66666667px;\n height: 42.66666667px;\n display: none;\n opacity: 0;\n font-size: 2em;\n background-color: #ffffff;\n z-index: 10000007;\n margin: 0 10px;\n /* Aligns icon in center */\n display: flex;\n align-items: center;\n}\n\n.fab.child.child-desktop-bar {\n position: absolute;\n left: 10px;\n background-color: black;\n background-color: rgba(0, 0, 0, 0);\n border: 2px solid #cccccc;\n box-shadow: none;\n display: none;\n}\n\n.fab.child.dark {\n background-color: #fff;\n}\n\n.fab.child.float {\n border-radius: 0px;\n background-color: #fff;\n box-shadow: none;\n margin: auto;\n position: relative;\n opacity: 1;\n min-width: 42.666px;\n top: 0;\n}\n\n.social-icon {\n width: 42.66666667px;\n height: 42.66666667px;\n font-size: 2em;\n z-index: 10000007;\n margin: 10px auto;\n display: flex;\n align-items: center;\n border-radius: 50%;\n}\n\n.social {\n width: inherit;\n height: inherit;\n}\n\n.social-icon svg {\n width: inherit;\n height: inherit;\n padding: 8px;\n fill: white;\n}\n\n.social-icon.light svg {\n fill: white;\n}\n\n.social-icon.dark svg {\n fill: black;\n}\n\n.overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: #ECECEC;\n opacity: 0.9;\n display: none;\n z-index: 10000001;\n}\n\n.overlay.dark {\n background: #000;\n opacity: 0.6;\n}\n\n.icon-container svg {\n fill: #CCCCCC;\n margin: 0 auto;\n display: block;\n width: 50%;\n height: 100%;\n}\n\n.icon-container.mobile.dark svg {\n fill: #000;\n}\n\n.mobile-bg, .social-bg {\n position: fixed;\n width: 100%;\n bottom: 0px;\n left: 0px;\n z-index: 10000002;\n display: none;\n}\n\n.social-bg {\n z-index: 10000005;\n}\n\n.mobile-bg.dark, .social-bg.dark {\n background: #000;\n}\n\n.mobile-bg.light, .social-bg.light {\n background: #fff;\n}\n\n.desktop-bg {\n position: absolute;\n min-width: 200px;\n bottom: 0px;\n left: 0px;\n z-index: 10000004;\n display: none;\n background: #ffffff;\n border-bottom: 6px solid #333333;\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5), 3px 3px 3px rgba(0, 0, 0, 0.25);\n}\n\n.left-text {\n text-align: right;\n position: absolute;\n right: 4rem;\n width: 300px;\n top: 49%;\n transform: translateY(-49%);\n}\n\n.bsr-right-text {\n text-align: left;\n position: absolute;\n left: 4rem;\n width: 300px;\n top: 49%;\n transform: translateY(-49%);\n}\n\n.menu-link {\n text-decoration: none;\n align-self: center;\n}\n\n.menu-link.dark {\n color: white;\n}\n\n.menu-link.light {\n color: black;\n}\n\n.menu-link.desk-bar {\n color: #333333;\n font-size: 24px;\n}\n\n.right-text {\n position: absolute;\n text-align: left;\n font-size: 20px;\n width: 200px;\n left: 50px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n#float-container {\n position: fixed;\n right: 0px;\n top: 50%;\n transform: translateY(-50%);\n white-space: nowrap;\n z-index: 10000005;\n}\n\n.float-container {\n display: flex;\n height: 42.666px;\n max-width: 42.666px;\n background-color: white;\n margin-left: auto;\n margin-right: 0;\n float: right;\n clear: right;\n}\n\n.float-text-container {\n display: none;\n opacity: 1 !important;\n max-width: 100%;\n}\n\n.float-text {\n font-size: 20px;\n color: #333333;\n padding-left: 0.5em;\n padding-right: 44px;\n display: none;\n}\n\n.master-bar {\n border-radius: 0px;\n height: 50px;\n bottom: 0px;\n right: 50px;\n width: 200px;\n padding: 0 0.5em;\n}\n\n#help-text {\n display: none;\n position: absolute;\n margin: 20px;\n color: #333333;\n font-size: 24px;\n text-align: left;\n}\n\n#master-label {\n font-size: 16px;\n}\n\n#masterfab {\n z-index: 10000006;\n display: none;\n align-items: center;\n}\n\n#masterfab svg {\n fill: #cccccc;\n margin: 0 auto;\n display: block;\n width: 60%;\n max-width: 70px;\n max-height: 50px;\n}\n\n/* Pulse animation */\n.pulse {\n border: 3px solid #cccccc;\n -webkit-border-radius: 50px;\n height: 100px;\n width: 100px;\n position: absolute;\n /* trick to center, left margin half of width */\n margin: 0 0 0 -50px;\n left: 50%;\n -webkit-animation: pulsate 1s ease-out;\n -moz-animation: pulsate 1s ease-out;\n -o-animation: pulsate 1s ease-out;\n animation: pulsate 1s ease-out;\n opacity: 0;\n}\n\n@-webkit-keyframes pulsate {\n 0% {\n -webkit-transform: scale(0.8, 0.8);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n -webkit-transform: scale(1.4, 1.4);\n opacity: 0;\n }\n}\n@-moz-keyframes pulsate {\n 0% {\n -webkit-transform: scale(0.8, 0.8);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n -webkit-transform: scale(1.4, 1.4);\n opacity: 0;\n }\n}\n@-o-keyframes pulsate {\n 0% {\n -webkit-transform: scale(0.8, 0.8);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n -webkit-transform: scale(1.4, 1.4);\n opacity: 0;\n }\n}\n@keyframes pulsate {\n 0% {\n -webkit-transform: scale(0.8, 0.8);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n -webkit-transform: scale(1.4, 1.4);\n opacity: 0;\n }\n}\n.pulse2 {\n border: 3px solid #cccccc;\n -webkit-border-radius: 40px;\n height: 80px;\n width: 80px;\n position: absolute;\n /* trick to center, left margin half of width */\n margin: 0 0 0 -40px;\n left: 50%;\n -webkit-animation: pulsate2 1s ease-out;\n -moz-animation: pulsate2 1s ease-out;\n -o-animation: pulsate2 1s ease-out;\n animation: pulsate2 1s ease-out;\n opacity: 0;\n}\n\n@-webkit-keyframes pulsate2 {\n 0% {\n -webkit-transform: scale(0.8, 0.8);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n -webkit-transform: scale(1.4, 1.4);\n opacity: 0;\n }\n}\n@-moz-keyframes pulsate2 {\n 0% {\n -webkit-transform: scale(0.8, 0.8);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n -webkit-transform: scale(1.4, 1.4);\n opacity: 0;\n }\n}\n@-o-keyframes pulsate2 {\n 0% {\n -webkit-transform: scale(0.8, 0.8);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n -webkit-transform: scale(1.4, 1.4);\n opacity: 0;\n }\n}\n@keyframes pulsate2 {\n 0% {\n -webkit-transform: scale(0.8, 0.8);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n -webkit-transform: scale(1.4, 1.4);\n opacity: 0;\n }\n}\n.slide-pulse {\n -webkit-animation: slide 1s ease;\n -moz-animation: slide 1s ease;\n -o-animation: slide 1s ease;\n animation: slide 1s ease;\n}\n\n@-webkit-keyframes slide {\n 0% {\n max-width: 42.6667px;\n width: 42.667px;\n }\n 50% {\n max-width: 50px;\n width: 50px;\n }\n 100% {\n max-width: 50px;\n width: 42.667px;\n }\n}\n@-moz-keyframes slide {\n 0% {\n max-width: 42.6667px;\n width: 42.667px;\n }\n 50% {\n max-width: 50px;\n width: 50px;\n }\n 100% {\n max-width: 50px;\n width: 42.667px;\n }\n}\n@-o-keyframes slide {\n 0% {\n max-width: 42.6667px;\n width: 42.667px;\n }\n 50% {\n max-width: 50px;\n width: 50px;\n }\n 100% {\n max-width: 50px;\n width: 42.667px;\n }\n}\n@keyframes slide {\n 0% {\n max-width: 42.6667px;\n width: 42.667px;\n }\n 50% {\n max-width: 50px;\n width: 50px;\n }\n 100% {\n max-width: 50px;\n width: 42.667px;\n }\n}\n/* Modal Styles */\n.modal__overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.6);\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n height: 100%;\n width: 100%;\n}\n\n.modal__container {\n background-color: #fff;\n padding: 30px;\n max-width: 500px;\n min-width: 200px;\n max-height: 100vh;\n border-radius: 4px;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n.modal__header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.modal__title {\n margin: 0 auto;\n color: black;\n font-weight: 600;\n font-size: 1.25rem;\n line-height: 1.25;\n box-sizing: border-box;\n}\n\n.modal__close {\n background: transparent;\n border: 0;\n position: absolute;\n top: 14px;\n right: 14px;\n}\n\n.modal__close, .modal__close svg {\n width: 20px;\n height: 20px;\n outline: none !important;\n}\n\n.modal__close svg {\n position: absolute;\n left: 0px;\n top: 0px;\n}\n\n.modal__content {\n margin-top: 2rem;\n margin-bottom: 2rem;\n line-height: 1.5;\n color: rgba(0, 0, 0, 0.8);\n}\n\n.modal__btn {\n font-size: 0.875rem;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n background-color: #e6e6e6;\n color: rgba(0, 0, 0, 0.8);\n border-radius: 0.25rem;\n border-style: none;\n border-width: 0;\n cursor: pointer;\n -webkit-appearance: button;\n text-transform: none;\n overflow: visible;\n line-height: 1.15;\n margin: 0;\n will-change: transform;\n -moz-osx-font-smoothing: grayscale;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-transform: translateZ(0);\n transform: translateZ(0);\n transition: -webkit-transform 0.25s ease-out;\n transition: transform 0.25s ease-out;\n transition: transform 0.25s ease-out, -webkit-transform 0.25s ease-out;\n}\n\n.modal__btn:focus, .modal__btn:hover {\n -webkit-transform: scale(1.05);\n transform: scale(1.05);\n}\n\n.modal__btn-primary {\n background-color: #00449e;\n color: #fff;\n}\n\n/* Modal animation */\n@keyframes mmfadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes mmfadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes mmslideIn {\n from {\n transform: translateY(15%);\n }\n to {\n transform: translateY(0);\n }\n}\n@keyframes mmslideOut {\n from {\n transform: translateY(0);\n }\n to {\n transform: translateY(-10%);\n }\n}\n.micromodal-slide {\n display: none;\n}\n\n.micromodal-slide.is-open {\n display: block;\n}\n\n.micromodal-slide[aria-hidden=false] .modal__overlay {\n animation: mmfadeIn 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.micromodal-slide[aria-hidden=false] .modal__container {\n animation: mmslideIn 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.micromodal-slide[aria-hidden=true] .modal__overlay {\n animation: mmfadeOut 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.micromodal-slide[aria-hidden=true] .modal__container {\n animation: mmslideOut 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.micromodal-slide .modal__container,\n.micromodal-slide .modal__overlay {\n will-change: transform;\n}\n\n.micromodal-slide.is-open {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n z-index: 999;\n}\n","strings":{}}],"page_title":"new_student_pop_up","flexstyles":[],"popups":[],"title":null,"uuid":"00918a7906fe48a7bab3fde9fa5a26f2","devicecss":"*#dm *.dmBody div.u_dm_content\n{\n\tpadding-top:20px !important;\n\tpadding-bottom:20px !important;\n\tpadding-left:20px !important;\n\tpadding-right:20px !important;\n}\n*#dm *.dmBody div.dmPopupInner\n{\n\tpadding-top:20px !important;\n\tpadding-bottom:20px !important;\n}\n*#dm *.dmBody *.allWrapper .dmPopupInner\n{\n\tbackground-repeat:no-repeat !important;\n\tbackground-size:cover !important;\n\tbackground-position:50% 50% !important;\n}\n*#dm *.dmBody div.u_1565092680\n{\n\tfloat:none !important;\n\ttop:0 !important;\n\tleft:0 !important;\n\twidth:calc(100% - 0px) !important;\n\tposition:relative !important;\n\theight:auto !important;\n\tpadding-top:2px !important;\n\tpadding-left:0 !important;\n\tpadding-bottom:2px !important;\n\tmargin-right:0 !important;\n\tmargin-left:0 !important;\n\tmax-width:100% !important;\n\tmargin-top:22px !important;\n\tmargin-bottom:8px !important;\n\tpadding-right:0 !important;\n\tmin-width:25px !important;\n}\n*#dm *.dmBody div.u_1630345372\n{\n\tfloat:none !important;\n\ttop:0 !important;\n\tleft:0 !important;\n\twidth:calc(100% - 31px) !important;\n\tposition:relative !important;\n\theight:502.988px !important;\n\tpadding-top:0 !important;\n\tpadding-left:0 !important;\n\tpadding-bottom:0 !important;\n\tmargin-right:0 !important;\n\tmargin-left:31px !important;\n\tmax-width:278px !important;\n\tmargin-top:0 !important;\n\tmargin-bottom:0 !important;\n\tpadding-right:0 !important;\n\tmin-width:25px !important;\n\ttext-align:center !important;\n}\n*#dm *.dmBody div.u_1624387373\n{\n\tfloat:none !important;\n\ttop:0 !important;\n\tleft:0 !important;\n\twidth:calc(100% - 0px) !important;\n\tposition:relative !important;\n\theight:auto !important;\n\tpadding-top:2px !important;\n\tpadding-left:0 !important;\n\tpadding-bottom:2px !important;\n\tmargin-right:0 !important;\n\tmargin-left:0 !important;\n\tmax-width:100% !important;\n\tmargin-top:-8px !important;\n\tmargin-bottom:8px !important;\n\tpadding-right:0 !important;\n\tmin-width:25px !important;\n}\n*#dm *.dmBody div.allWrapper .dmPopupInner\n{\n\tmargin-left:0 !important;\n\tpadding-top:0 !important;\n\tpadding-left:0 !important;\n\tpadding-bottom:0 !important;\n\tmargin-top:0 !important;\n\tmargin-bottom:0 !important;\n\tmargin-right:0 !important;\n\tpadding-right:0 !important;\n}\n*#dm *.dmBody div.u_1516138344\n{\n\tmargin-left:0 !important;\n\tpadding-top:30px !important;\n\tpadding-left:40px !important;\n\tpadding-bottom:30px !important;\n\tmargin-top:0 !important;\n\tmargin-bottom:0 !important;\n\tmargin-right:0 !important;\n\tpadding-right:20px !important;\n}\n*#dm *.dmBody div.u_1299455227\n{\n\tfloat:none !important;\n\ttop:0 !important;\n\tleft:0 !important;\n\twidth:calc(100% - 0px) !important;\n\tposition:relative !important;\n\theight:auto !important;\n\tpadding-top:2px !important;\n\tpadding-left:0 !important;\n\tpadding-bottom:2px !important;\n\tmargin-right:0 !important;\n\tmargin-left:0 !important;\n\tmax-width:290.996px !important;\n\tmargin-top:-8px !important;\n\tmargin-bottom:8px !important;\n\tpadding-right:0 !important;\n\tmin-width:25px !important;\n}\n*#dm *.dmBody a.u_1111722435\n{\n\tdisplay:block !important;\n\tfloat:none !important;\n\ttop:0 !important;\n\tleft:0 !important;\n\twidth:calc(100% - 0px) !important;\n\tposition:relative !important;\n\theight:58.9844px !important;\n\tpadding-top:0 !important;\n\tpadding-left:0 !important;\n\tpadding-bottom:0 !important;\n\tmargin-right:118.027px !important;\n\tmargin-left:0 !important;\n\tmax-width:215.5px !important;\n\tmargin-top:22px !important;\n\tmargin-bottom:10px !important;\n\tpadding-right:0 !important;\n\tmin-width:25px !important;\n\ttext-align:center !important;\n}\n*#dm *.dmBody div.u_1385122387\n{\n\tpadding-left:0 !important;\n\tpadding-right:0 !important;\n\tpadding-top:0 !important;\n\tpadding-bottom:0 !important;\n\tmargin-left:0 !important;\n\tmargin-top:0 !important;\n\tmargin-bottom:0 !important;\n\tmargin-right:0 !important;\n\twidth:auto !important;\n\tbackground-repeat:no-repeat !important;\n\tbackground-size:cover !important;\n\tbackground-position:100% 50% !important;\n}\n","seometatags":"","content":"
\n
\n
\n
\n
\n

NEW CLIENT INTRO OFFER

\n
\n

21-DAYS of Yoga For Only $59!

\n
\n

Join the \nEscape to Yoga Community with the best deal for your health!

\n \n \n Shop now \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n","ssr_script":"","headsection":"\n\n\n\r\n \r\n Escape to Yoga\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n","current_url":"","collections":"e30=","sidebarPosition":"NA","pageFontSizeStyle":".font-size-20, .size-20, .size-20 > font { font-size: 20px !important; }.font-size-30, .size-30, .size-30 > font { font-size: 30px !important; }","alias":"new-student-pop-up","relAlternateLanguageLinksMarkup":"","extensionsToRender":{"1888830622":"
\n","1715149005":"
\n","1898920767":" \n","1004017050":" \n","1030165537":" \n","1832600643":" \n"},"parameters":{"InitialPageAlias":"new-student-pop-up","InitialDynamicItem":null,"IsCurrentHomePage":false,"pageType":"POPUP","CurrentPageUrl":""},"insite_scripts":""}