????

Your IP : 18.222.142.215


Current Path : /home/darkwebsol/acrepairkwt.com/wp-content/plugins/feeds-for-youtube/js/
Upload File :
Current File : /home/darkwebsol/acrepairkwt.com/wp-content/plugins/feeds-for-youtube/js/sb-youtube.min.js

/*! For license information please see sb-youtube.min.js.LICENSE.txt */
(()=>{var t={473:(t,e,i)=>{var s=i(43),n=i(323);function a(t){return null==t}function o(t){(t=function(t){var e={};for(var i in t)e[i]=t[i];return e}(t||{})).whiteList=t.whiteList||s.whiteList,t.onAttr=t.onAttr||s.onAttr,t.onIgnoreAttr=t.onIgnoreAttr||s.onIgnoreAttr,t.safeAttrValue=t.safeAttrValue||s.safeAttrValue,this.options=t}i(100),o.prototype.process=function(t){if(!(t=(t=t||"").toString()))return"";var e=this.options,i=e.whiteList,s=e.onAttr,o=e.onIgnoreAttr,r=e.safeAttrValue;return n(t,(function(t,e,n,l,d){var h=i[n],c=!1;if(!0===h?c=h:"function"==typeof h?c=h(l):h instanceof RegExp&&(c=h.test(l)),!0!==c&&(c=!1),l=r(n,l)){var u,g={position:e,sourcePosition:t,source:d,isWhite:c};return c?a(u=s(n,l,g))?n+":"+l:u:a(u=o(n,l,g))?void 0:u}}))},t.exports=o},43:(t,e)=>{function i(){return{"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1}}var s=/javascript\s*\:/gim;e.whiteList={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1},e.getDefaultWhiteList=i,e.onAttr=function(t,e,i){},e.onIgnoreAttr=function(t,e,i){},e.safeAttrValue=function(t,e){return s.test(e)?"":e}},18:(t,e,i)=>{var s=i(43),n=i(473);for(var a in(e=t.exports=function(t,e){return new n(e).process(t)}).FilterCSS=n,s)e[a]=s[a];"undefined"!=typeof window&&(window.filterCSS=t.exports)},323:(t,e,i)=>{var s=i(100);t.exports=function(t,e){";"!==(t=s.trimRight(t))[t.length-1]&&(t+=";");var i=t.length,n=!1,a=0,o=0,r="";function l(){if(!n){var i=s.trim(t.slice(a,o)),l=i.indexOf(":");if(-1!==l){var d=s.trim(i.slice(0,l)),h=s.trim(i.slice(l+1));if(d){var c=e(a,r.length,d,h,i);c&&(r+=c+"; ")}}}a=o+1}for(;o<i;o++){var d=t[o];if("/"===d&&"*"===t[o+1]){var h=t.indexOf("*/",o+2);if(-1===h)break;a=(o=h+1)+1,n=!1}else"("===d?n=!0:")"===d?n=!1:";"===d?n||l():"\n"===d&&l()}return s.trim(r)}},100:t=>{t.exports={indexOf:function(t,e){var i,s;if(Array.prototype.indexOf)return t.indexOf(e);for(i=0,s=t.length;i<s;i++)if(t[i]===e)return i;return-1},forEach:function(t,e,i){var s,n;if(Array.prototype.forEach)return t.forEach(e,i);for(s=0,n=t.length;s<n;s++)e.call(i,t[s],s,t)},trim:function(t){return String.prototype.trim?t.trim():t.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(t){return String.prototype.trimRight?t.trimRight():t.replace(/(\s*$)/g,"")}}},48:(t,e,i)=>{var s=i(18).FilterCSS,n=i(18).getDefaultWhiteList,a=i(349);var o=new s;function r(t){return t.replace(l,"&lt;").replace(d,"&gt;")}var l=/</g,d=/>/g,h=/"/g,c=/&quot;/g,u=/&#([a-zA-Z0-9]*);?/gim,g=/&colon;?/gim,p=/&newline;?/gim,y=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,f=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,b=/u\s*r\s*l\s*\(.*/gi;function m(t){return t.replace(h,"&quot;")}function _(t){return t.replace(c,'"')}function v(t){return t.replace(u,(function(t,e){return"x"===e[0]||"X"===e[0]?String.fromCharCode(parseInt(e.substr(1),16)):String.fromCharCode(parseInt(e,10))}))}function w(t){return t.replace(g,":").replace(p," ")}function x(t){for(var e="",i=0,s=t.length;i<s;i++)e+=t.charCodeAt(i)<32?" ":t.charAt(i);return a.trim(e)}function C(t){return x(t=w(t=v(t=_(t))))}function I(t){return r(t=m(t))}e.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},e.getDefaultWhiteList=function(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}},e.onTag=function(t,e,i){},e.onIgnoreTag=function(t,e,i){},e.onTagAttr=function(t,e,i){},e.onIgnoreTagAttr=function(t,e,i){},e.safeAttrValue=function(t,e,i,s){if(i=C(i),"href"===e||"src"===e){if("#"===(i=a.trim(i)))return"#";if("http://"!==i.substr(0,7)&&"https://"!==i.substr(0,8)&&"mailto:"!==i.substr(0,7)&&"tel:"!==i.substr(0,4)&&"data:image/"!==i.substr(0,11)&&"ftp://"!==i.substr(0,6)&&"./"!==i.substr(0,2)&&"../"!==i.substr(0,3)&&"#"!==i[0]&&"/"!==i[0])return""}else if("background"===e){if(y.lastIndex=0,y.test(i))return""}else if("style"===e){if(f.lastIndex=0,f.test(i))return"";if(b.lastIndex=0,b.test(i)&&(y.lastIndex=0,y.test(i)))return"";!1!==s&&(i=(s=s||o).process(i))}return I(i)},e.escapeHtml=r,e.escapeQuote=m,e.unescapeQuote=_,e.escapeHtmlEntities=v,e.escapeDangerHtml5Entities=w,e.clearNonPrintableCharacter=x,e.friendlyAttrValue=C,e.escapeAttrValue=I,e.onIgnoreTagStripAll=function(){return""},e.StripTagBody=function(t,e){"function"!=typeof e&&(e=function(){});var i=!Array.isArray(t),s=[],n=!1;return{onIgnoreTag:function(o,r,l){if(function(e){return!!i||-1!==a.indexOf(t,e)}(o)){if(l.isClosing){var d=l.position+10;return s.push([!1!==n?n:l.position,d]),n=!1,"[/removed]"}return n||(n=l.position),"[removed]"}return e(o,r,l)},remove:function(t){var e="",i=0;return a.forEach(s,(function(s){e+=t.slice(i,s[0]),i=s[1]})),e+=t.slice(i)}}},e.stripCommentTag=function(t){for(var e="",i=0;i<t.length;){var s=t.indexOf("\x3c!--",i);if(-1===s){e+=t.slice(i);break}e+=t.slice(i,s);var n=t.indexOf("--\x3e",s);if(-1===n)break;i=n+3}return e},e.stripBlankChar=function(t){var e=t.split("");return(e=e.filter((function(t){var e=t.charCodeAt(0);return!(127===e||e<=31&&10!==e&&13!==e)}))).join("")},e.attributeWrapSign='"',e.cssFilter=o,e.getDefaultCSSWhiteList=n},5:(t,e,i)=>{var s=i(48),n=i(930),a=i(327);function o(t,e){return new a(e).process(t)}(e=t.exports=o).filterXSS=o,e.FilterXSS=a,function(){for(var t in s)e[t]=s[t];for(var i in n)e[i]=n[i]}(),"undefined"!=typeof window&&(window.filterXSS=t.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=t.exports)},930:(t,e,i)=>{var s=i(349);function n(t){var e,i=s.spaceIndex(t);return e=-1===i?t.slice(1,-1):t.slice(1,i+1),"/"===(e=s.trim(e).toLowerCase()).slice(0,1)&&(e=e.slice(1)),"/"===e.slice(-1)&&(e=e.slice(0,-1)),e}function a(t){return"</"===t.slice(0,2)}var o=/[^a-zA-Z0-9\\_:.-]/gim;function r(t,e){for(;e<t.length;e++){var i=t[e];if(" "!==i)return"="===i?e:-1}}function l(t,e){for(;e<t.length;e++){var i=t[e];if(" "!==i)return"'"===i||'"'===i?e:-1}}function d(t,e){for(;e>0;e--){var i=t[e];if(" "!==i)return"="===i?e:-1}}function h(t){return function(t){return'"'===t[0]&&'"'===t[t.length-1]||"'"===t[0]&&"'"===t[t.length-1]}(t)?t.substr(1,t.length-2):t}e.parseTag=function(t,e,i){"use strict";var s="",o=0,r=!1,l=!1,d=0,h=t.length,c="",u="";t:for(d=0;d<h;d++){var g=t.charAt(d);if(!1===r){if("<"===g){r=d;continue}}else if(!1===l){if("<"===g){s+=i(t.slice(o,d)),r=d,o=d;continue}if(">"===g||d===h-1){s+=i(t.slice(o,r)),c=n(u=t.slice(r,d+1)),s+=e(r,s.length,c,u,a(u)),o=d+1,r=!1;continue}if('"'===g||"'"===g)for(var p=1,y=t.charAt(d-p);""===y.trim()||"="===y;){if("="===y){l=g;continue t}y=t.charAt(d-++p)}}else if(g===l){l=!1;continue}}return o<h&&(s+=i(t.substr(o))),s},e.parseAttr=function(t,e){"use strict";var i=0,n=0,a=[],c=!1,u=t.length;function g(t,i){if(!((t=(t=s.trim(t)).replace(o,"").toLowerCase()).length<1)){var n=e(t,i||"");n&&a.push(n)}}for(var p=0;p<u;p++){var y,f=t.charAt(p);if(!1!==c||"="!==f)if(!1===c||p!==n){if(/\s|\n|\t/.test(f)){if(t=t.replace(/\s|\n|\t/g," "),!1===c){if(-1===(y=r(t,p))){g(s.trim(t.slice(i,p))),c=!1,i=p+1;continue}p=y-1;continue}if(-1===(y=d(t,p-1))){g(c,h(s.trim(t.slice(i,p)))),c=!1,i=p+1;continue}}}else{if(-1===(y=t.indexOf(f,p+1)))break;g(c,s.trim(t.slice(n+1,y))),c=!1,i=(p=y)+1}else c=t.slice(i,p),i=p+1,n='"'===t.charAt(i)||"'"===t.charAt(i)?i:l(t,p+1)}return i<t.length&&(!1===c?g(t.slice(i)):g(c,h(s.trim(t.slice(i))))),s.trim(a.join(" "))}},349:t=>{t.exports={indexOf:function(t,e){var i,s;if(Array.prototype.indexOf)return t.indexOf(e);for(i=0,s=t.length;i<s;i++)if(t[i]===e)return i;return-1},forEach:function(t,e,i){var s,n;if(Array.prototype.forEach)return t.forEach(e,i);for(s=0,n=t.length;s<n;s++)e.call(i,t[s],s,t)},trim:function(t){return String.prototype.trim?t.trim():t.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(t){var e=/\s|\n|\t/.exec(t);return e?e.index:-1}}},327:(t,e,i)=>{var s=i(18).FilterCSS,n=i(48),a=i(930),o=a.parseTag,r=a.parseAttr,l=i(349);function d(t){return null==t}function h(t){(t=function(t){var e={};for(var i in t)e[i]=t[i];return e}(t||{})).stripIgnoreTag&&(t.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),t.onIgnoreTag=n.onIgnoreTagStripAll),t.whiteList||t.allowList?t.whiteList=function(t){var e={};for(var i in t)Array.isArray(t[i])?e[i.toLowerCase()]=t[i].map((function(t){return t.toLowerCase()})):e[i.toLowerCase()]=t[i];return e}(t.whiteList||t.allowList):t.whiteList=n.whiteList,this.attributeWrapSign=!0===t.singleQuotedAttributeValue?"'":n.attributeWrapSign,t.onTag=t.onTag||n.onTag,t.onTagAttr=t.onTagAttr||n.onTagAttr,t.onIgnoreTag=t.onIgnoreTag||n.onIgnoreTag,t.onIgnoreTagAttr=t.onIgnoreTagAttr||n.onIgnoreTagAttr,t.safeAttrValue=t.safeAttrValue||n.safeAttrValue,t.escapeHtml=t.escapeHtml||n.escapeHtml,this.options=t,!1===t.css?this.cssFilter=!1:(t.css=t.css||{},this.cssFilter=new s(t.css))}h.prototype.process=function(t){if(!(t=(t=t||"").toString()))return"";var e=this,i=e.options,s=i.whiteList,a=i.onTag,h=i.onIgnoreTag,c=i.onTagAttr,u=i.onIgnoreTagAttr,g=i.safeAttrValue,p=i.escapeHtml,y=e.attributeWrapSign,f=e.cssFilter;i.stripBlankChar&&(t=n.stripBlankChar(t)),i.allowCommentTag||(t=n.stripCommentTag(t));var b=!1;i.stripIgnoreTagBody&&(b=n.StripTagBody(i.stripIgnoreTagBody,h),h=b.onIgnoreTag);var m=o(t,(function(t,e,i,n,o){var b={sourcePosition:t,position:e,isClosing:o,isWhite:Object.prototype.hasOwnProperty.call(s,i)},m=a(i,n,b);if(!d(m))return m;if(b.isWhite){if(b.isClosing)return"</"+i+">";var _=function(t){var e=l.spaceIndex(t);if(-1===e)return{html:"",closing:"/"===t[t.length-2]};var i="/"===(t=l.trim(t.slice(e+1,-1)))[t.length-1];return i&&(t=l.trim(t.slice(0,-1))),{html:t,closing:i}}(n),v=s[i],w=r(_.html,(function(t,e){var s=-1!==l.indexOf(v,t),n=c(i,t,e,s);return d(n)?s?(e=g(i,t,e,f))?t+"="+y+e+y:t:d(n=u(i,t,e,s))?void 0:n:n}));return n="<"+i,w&&(n+=" "+w),_.closing&&(n+=" /"),n+">"}return d(m=h(i,n,b))?p(n):m}),p);return b&&(m=b.remove(m)),m},t.exports=h}},e={};function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var s,n,a,o,r,l,d,h,c,u,g,p=function i(s){var n=e[s];if(void 0!==n)return n.exports;var a=e[s]={exports:{}};return t[s](a,a.exports,i),a.exports}(5),y=void 0!==y;if(!y){var f=function(t){return p(t)},b=function(){return!!document.createElement("video").canPlayType};if(window.sbyLinkify=(o="[a-z\\d.-]+://",r="(?:(?:(?:[^\\s!@#$%^&*()_=+[\\]{}\\\\|;:'\",.<>/?]+)\\.)+(?:ac|ad|aero|ae|af|ag|ai|al|am|an|ao|aq|arpa|ar|asia|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|biz|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|cat|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|coop|com|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|info|int|in|io|iq|ir|is|it|je|jm|jobs|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mobi|mo|mp|mq|mr|ms|mt|museum|mu|mv|mw|mx|my|mz|name|na|nc|net|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pro|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|travel|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xn--0zwm56d|xn--11b5bs3a9aj6g|xn--80akhbyknj4f|xn--9t4b11yi5a|xn--deba0ad|xn--g6w251d|xn--hgbk6aj7f53bba|xn--hlcj6aya9esc7a|xn--jxalpdlp|xn--kgbechtv|xn--zckzah|ye|yt|yu|za|zm|zw)|(?:(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5]))",l="(?:\\?[^#<>\\s]*)?(?:#[^<>\\s]*)?",d="mailto:",h=new RegExp("(?:\\b"+o+"[^<>\\s]+|\\b"+r+"(?:[;/][^#?<>\\s]*)?"+l+"(?!\\w)|(?:"+d+")?[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@"+r+l+"(?!\\w))","ig"),c=new RegExp("^"+o,"i"),u={"'":"`",">":"<",")":"(","]":"[","}":"{","B;":"B+","b:":"b9"},g={callback:function(t,e){return e?'<a href="'+e+'" title="'+e+'" target="_blank" rel="noopener">'+t+"</a>":t},punct_regexp:/(?:[!?.,:;'"]|(?:&|&amp;)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)$/},function(t,e){e=e||{};var i,s,n,a,o,r,l,p,y,f,b,m,_="",v=[];for(s in g)void 0===e[s]&&(e[s]=g[s]);for(;i=h.exec(t);)if(n=i[0],l=(r=h.lastIndex)-n.length,!/[\/:]/.test(t.charAt(l-1))){do{p=n,m=n.substr(-1),(b=u[m])&&(y=n.match(new RegExp("\\"+b+"(?!$)","g")),f=n.match(new RegExp("\\"+m,"g")),(y?y.length:0)<(f?f.length:0)&&(n=n.substr(0,n.length-1),r--)),e.punct_regexp&&(n=n.replace(e.punct_regexp,(function(t){return r-=t.length,""})))}while(n.length&&n!==p);a=n,c.test(a)||(a=(-1!==a.indexOf("@")?a.indexOf(d)?d:"":a.indexOf("irc.")?a.indexOf("ftp.")?"http://":"ftp://":"irc://")+a),o!=l&&(v.push([t.slice(o,l)]),o=r),v.push([n,a])}for(v.push([t.substr(o)]),s=0;s<v.length;s++)_+=e.callback.apply(window,v[s]);return _||t}),function(t,e,s,n){function a(e,i){this.settings=null,this.options=t.extend({},a.Defaults,i),this.$element=t(e),this._handlers={},this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._widths=[],this._invalidated={},this._pipe=[],this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null},this._states={current:{},tags:{initializing:["busy"],animating:["busy"],dragging:["interacting"]}},t.each(["onResize","onThrottledResize"],t.proxy((function(e,i){this._handlers[i]=t.proxy(this[i],this)}),this)),t.each(a.Plugins,t.proxy((function(t,e){this._plugins[t.charAt(0).toLowerCase()+t.slice(1)]=new e(this)}),this)),t.each(a.Workers,t.proxy((function(e,i){this._pipe.push({filter:i.filter,run:t.proxy(i.run,this)})}),this)),this.setup(),this.initialize()}a.Defaults={items:3,loop:!1,center:!1,rewind:!1,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:e,fallbackEasing:"swing",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",refreshClass:"sby-owl-refresh",loadedClass:"sby-owl-loaded",loadingClass:"sby-owl-loading",rtlClass:"sby-owl-rtl",responsiveClass:"sby-owl-responsive",dragClass:"sby-owl-drag",itemClass:"sby-owl-item",stageClass:"sby-owl-stage",stageOuterClass:"sby-owl-stage-outer",grabClass:"sby-owl-grab"},a.Width={Default:"default",Inner:"inner",Outer:"outer"},a.Type={Event:"event",State:"state"},a.Plugins={},a.Workers=[{filter:["width","settings"],run:function(){this._width=this.$element.width()}},{filter:["width","items","settings"],run:function(t){t.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){this.$stage.children(".cloned").remove()}},{filter:["width","items","settings"],run:function(t){var e=this.settings.margin||"",i=!this.settings.autoWidth,s=this.settings.rtl,n={width:"auto","margin-left":s?e:"","margin-right":s?"":e};!i&&this.$stage.children().css(n),t.css=n}},{filter:["width","items","settings"],run:function(t){var e=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,i=null,s=this._items.length,n=!this.settings.autoWidth,a=[];for(t.items={merge:!1,width:e};s--;)i=this._mergers[s],i=this.settings.mergeFit&&Math.min(i,this.settings.items)||i,t.items.merge=i>1||t.items.merge,a[s]=n?e*i:this._items[s].width();this._widths=a}},{filter:["items","settings"],run:function(){var e=[],i=this._items,s=this.settings,n=Math.max(2*s.items,4),a=2*Math.ceil(i.length/2),o=s.loop&&i.length?s.rewind?n:Math.max(n,a):0,r="",l="";for(o/=2;o--;)e.push(this.normalize(e.length/2,!0)),r+=i[e[e.length-1]][0].outerHTML,e.push(this.normalize(i.length-1-(e.length-1)/2,!0)),l=i[e[e.length-1]][0].outerHTML+l;this._clones=e,t(r).addClass("cloned").appendTo(this.$stage),t(l).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var t=this.settings.rtl?1:-1,e=this._clones.length+this._items.length,i=-1,s=0,n=0,a=[];++i<e;)s=a[i-1]||0,n=this._widths[this.relative(i)]+this.settings.margin,a.push(s+n*t);this._coordinates=a}},{filter:["width","items","settings"],run:function(){var t=this.settings.stagePadding,e=this._coordinates,i={width:Math.ceil(Math.abs(e[e.length-1]))+2*t,"padding-left":t||"","padding-right":t||""};this.$stage.css(i)}},{filter:["width","items","settings"],run:function(t){var e=this._coordinates.length,i=!this.settings.autoWidth,s=this.$stage.children();if(i&&t.items.merge)for(;e--;)t.css.width=this._widths[this.relative(e)],s.eq(e).css(t.css);else i&&(t.css.width=t.items.width,s.css(t.css))}},{filter:["items"],run:function(){this._coordinates.length<1&&this.$stage.removeAttr("style")}},{filter:["width","items","settings"],run:function(t){t.current=t.current?this.$stage.children().index(t.current):0,t.current=Math.max(this.minimum(),Math.min(this.maximum(),t.current)),this.reset(t.current)}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var t,e,i,s,n=this.settings.rtl?1:-1,a=2*this.settings.stagePadding,o=this.coordinates(this.current())+a,r=o+this.width()*n,l=[];for(i=0,s=this._coordinates.length;i<s;i++)t=this._coordinates[i-1]||0,e=Math.abs(this._coordinates[i])+a*n,(this.op(t,"<=",o)&&this.op(t,">",r)||this.op(e,"<",o)&&this.op(e,">",r))&&l.push(i);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+l.join("), :eq(")+")").addClass("active"),this.settings.center&&(this.$stage.children(".center").removeClass("center"),this.$stage.children().eq(this.current()).addClass("center"))}}],a.prototype.initialize=function(){var e,i,s;this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading")&&(e=this.$element.find("img"),i=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:n,s=this.$element.children(i).width(),e.length&&s<=0&&this.preloadAutoWidthImages(e)),this.$element.addClass(this.options.loadingClass),this.$stage=t("<"+this.settings.stageElement+' class="'+this.settings.stageClass+'"/>').wrap('<div class="'+this.settings.stageOuterClass+'"/>'),this.$element.append(this.$stage.parent()),this.replace(this.$element.children().not(this.$stage.parent())),this.$element.is(":visible")?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},a.prototype.setup=function(){var e=this.viewport(),i=this.options.responsive,s=-1,n=null;i?(t.each(i,(function(t){t<=e&&t>s&&(s=Number(t))})),"function"==typeof(n=t.extend({},this.options,i[s])).stagePadding&&(n.stagePadding=n.stagePadding()),delete n.responsive,n.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+s))):n=t.extend({},this.options),this.trigger("change",{property:{name:"settings",value:n}}),this._breakpoint=s,this.settings=n,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}})},a.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},a.prototype.prepare=function(e){var i=this.trigger("prepare",{content:e});return i.data||(i.data=t("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(e)),this.trigger("prepared",{content:i.data}),i.data},a.prototype.update=function(){for(var e=0,i=this._pipe.length,s=t.proxy((function(t){return this[t]}),this._invalidated),n={};e<i;)(this._invalidated.all||t.grep(this._pipe[e].filter,s).length>0)&&this._pipe[e].run(n),e++;this._invalidated={},!this.is("valid")&&this.enter("valid")},a.prototype.width=function(t){switch(t=t||a.Width.Default){case a.Width.Inner:case a.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},a.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},a.prototype.onThrottledResize=function(){e.clearTimeout(this.resizeTimer),this.resizeTimer=e.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},a.prototype.onResize=function(){return!!this._items.length&&this._width!==this.$element.width()&&!!this.$element.is(":visible")&&(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized")))},a.prototype.registerEventHandlers=function(){t.support.transition&&this.$stage.on(t.support.transition.end+".owl.core",t.proxy(this.onTransitionEnd,this)),!1!==this.settings.responsive&&this.on(e,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",t.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",(function(){return!1}))),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",t.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",t.proxy(this.onDragEnd,this)))},a.prototype.onDragStart=function(e){var i=null;3!==e.which&&(t.support.transform?i={x:(i=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","))[16===i.length?12:4],y:i[16===i.length?13:5]}:(i=this.$stage.position(),i={x:this.settings.rtl?i.left+this.$stage.width()-this.width()+this.settings.margin:i.left,y:i.top}),this.is("animating")&&(t.support.transform?this.animate(i.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===e.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=t(e.target),this._drag.stage.start=i,this._drag.stage.current=i,this._drag.pointer=this.pointer(e),t(s).on("mouseup.owl.core touchend.owl.core",t.proxy(this.onDragEnd,this)),t(s).one("mousemove.owl.core touchmove.owl.core",t.proxy((function(e){var i=this.difference(this._drag.pointer,this.pointer(e));t(s).on("mousemove.owl.core touchmove.owl.core",t.proxy(this.onDragMove,this)),Math.abs(i.x)<Math.abs(i.y)&&this.is("valid")||(e.preventDefault(),this.enter("dragging"),this.trigger("drag"))}),this)))},a.prototype.onDragMove=function(t){var e=null,i=null,s=null,n=this.difference(this._drag.pointer,this.pointer(t)),a=this.difference(this._drag.stage.start,n);this.is("dragging")&&(t.preventDefault(),this.settings.loop?(e=this.coordinates(this.minimum()),i=this.coordinates(this.maximum()+1)-e,a.x=((a.x-e)%i+i)%i+e):(e=this.settings.rtl?this.coordinates(this.maximum()):this.coordinates(this.minimum()),i=this.settings.rtl?this.coordinates(this.minimum()):this.coordinates(this.maximum()),s=this.settings.pullDrag?-1*n.x/5:0,a.x=Math.max(Math.min(a.x,e+s),i+s)),this._drag.stage.current=a,this.animate(a.x))},a.prototype.onDragEnd=function(e){var i=this.difference(this._drag.pointer,this.pointer(e)),n=this._drag.stage.current,a=i.x>0^this.settings.rtl?"left":"right";t(s).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==i.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(n.x,0!==i.x?a:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=a,(Math.abs(i.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",(function(){return!1}))),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},a.prototype.closest=function(e,i){var s=-1,n=this.width(),a=this.coordinates();return this.settings.freeDrag||t.each(a,t.proxy((function(t,o){return"left"===i&&e>o-30&&e<o+30?s=t:"right"===i&&e>o-n-30&&e<o-n+30?s=t+1:this.op(e,"<",o)&&this.op(e,">",a[t+1]||o-n)&&(s="left"===i?t+1:t),-1===s}),this)),this.settings.loop||(this.op(e,">",a[this.minimum()])?s=e=this.minimum():this.op(e,"<",a[this.maximum()])&&(s=e=this.maximum())),s},a.prototype.animate=function(e){var i=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),i&&(this.enter("animating"),this.trigger("translate")),t.support.transform3d&&t.support.transition?this.$stage.css({transform:"translate3d("+e+"px,0px,0px)",transition:this.speed()/1e3+"s"}):i?this.$stage.animate({left:e+"px"},this.speed(),this.settings.fallbackEasing,t.proxy(this.onTransitionEnd,this)):this.$stage.css({left:e+"px"})},a.prototype.is=function(t){return this._states.current[t]&&this._states.current[t]>0},a.prototype.current=function(t){if(t===n)return this._current;if(0===this._items.length)return n;if(t=this.normalize(t),this._current!==t){var e=this.trigger("change",{property:{name:"position",value:t}});e.data!==n&&(t=this.normalize(e.data)),this._current=t,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},a.prototype.invalidate=function(e){return"string"===t.type(e)&&(this._invalidated[e]=!0,this.is("valid")&&this.leave("valid")),t.map(this._invalidated,(function(t,e){return e}))},a.prototype.reset=function(t){(t=this.normalize(t))!==n&&(this._speed=0,this._current=t,this.suppress(["translate","translated"]),this.animate(this.coordinates(t)),this.release(["translate","translated"]))},a.prototype.normalize=function(t,e){var i=this._items.length,s=e?0:this._clones.length;return!this.isNumeric(t)||i<1?t=n:(t<0||t>=i+s)&&(t=((t-s/2)%i+i)%i+s/2),t},a.prototype.relative=function(t){return t-=this._clones.length/2,this.normalize(t,!0)},a.prototype.maximum=function(t){var e,i,s,n=this.settings,a=this._coordinates.length;if(n.loop)a=this._clones.length/2+this._items.length-1;else if(n.autoWidth||n.merge){for(e=this._items.length,i=this._items[--e].width(),s=this.$element.width();e--&&!((i+=this._items[e].width()+this.settings.margin)>s););a=e+1}else a=n.center?this._items.length-1:this._items.length-n.items;return t&&(a-=this._clones.length/2),Math.max(a,0)},a.prototype.minimum=function(t){return t?0:this._clones.length/2},a.prototype.items=function(t){return t===n?this._items.slice():(t=this.normalize(t,!0),this._items[t])},a.prototype.mergers=function(t){return t===n?this._mergers.slice():(t=this.normalize(t,!0),this._mergers[t])},a.prototype.clones=function(e){var i=this._clones.length/2,s=i+this._items.length,a=function(t){return t%2==0?s+t/2:i-(t+1)/2};return e===n?t.map(this._clones,(function(t,e){return a(e)})):t.map(this._clones,(function(t,i){return t===e?a(i):null}))},a.prototype.speed=function(t){return t!==n&&(this._speed=t),this._speed},a.prototype.coordinates=function(e){var i,s=1,a=e-1;return e===n?t.map(this._coordinates,t.proxy((function(t,e){return this.coordinates(e)}),this)):(this.settings.center?(this.settings.rtl&&(s=-1,a=e+1),i=this._coordinates[e],i+=(this.width()-i+(this._coordinates[a]||0))/2*s):i=this._coordinates[a]||0,i=Math.ceil(i))},a.prototype.duration=function(t,e,i){return 0===i?0:Math.min(Math.max(Math.abs(e-t),1),6)*Math.abs(i||this.settings.smartSpeed)},a.prototype.to=function(t,e){var i=this.current(),s=null,n=t-this.relative(i),a=(n>0)-(n<0),o=this._items.length,r=this.minimum(),l=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(n)>o/2&&(n+=-1*a*o),(s=(((t=i+n)-r)%o+o)%o+r)!==t&&s-n<=l&&s-n>0&&(i=s-n,t=s,this.reset(i))):t=this.settings.rewind?(t%(l+=1)+l)%l:Math.max(r,Math.min(l,t)),this.speed(this.duration(i,t,e)),this.current(t),this.$element.is(":visible")&&this.update()},a.prototype.next=function(t){t=t||!1,this.to(this.relative(this.current())+1,t)},a.prototype.prev=function(t){t=t||!1,this.to(this.relative(this.current())-1,t)},a.prototype.onTransitionEnd=function(t){if(t!==n&&(t.stopPropagation(),(t.target||t.srcElement||t.originalTarget)!==this.$stage.get(0)))return!1;this.leave("animating"),this.trigger("translated")},a.prototype.viewport=function(){var i;return this.options.responsiveBaseElement!==e?i=t(this.options.responsiveBaseElement).width():e.innerWidth?i=e.innerWidth:s.documentElement&&s.documentElement.clientWidth?i=s.documentElement.clientWidth:console.warn("Can not detect viewport width."),i},a.prototype.replace=function(e){this.$stage.empty(),this._items=[],e&&(e=e instanceof jQuery?e:t(e)),this.settings.nestedItemSelector&&(e=e.find("."+this.settings.nestedItemSelector)),e.filter((function(){return 1===this.nodeType})).each(t.proxy((function(t,e){e=this.prepare(e),this.$stage.append(e),this._items.push(e),this._mergers.push(1*e.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)}),this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},a.prototype.add=function(e,i){var s=this.relative(this._current);i=i===n?this._items.length:this.normalize(i,!0),e=e instanceof jQuery?e:t(e),this.trigger("add",{content:e,position:i}),e=this.prepare(e),0===this._items.length||i===this._items.length?(0===this._items.length&&this.$stage.append(e),0!==this._items.length&&this._items[i-1].after(e),this._items.push(e),this._mergers.push(1*e.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)):(this._items[i].before(e),this._items.splice(i,0,e),this._mergers.splice(i,0,1*e.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)),this._items[s]&&this.reset(this._items[s].index()),this.invalidate("items"),this.trigger("added",{content:e,position:i})},a.prototype.remove=function(t){(t=this.normalize(t,!0))!==n&&(this.trigger("remove",{content:this._items[t],position:t}),this._items[t].remove(),this._items.splice(t,1),this._mergers.splice(t,1),this.invalidate("items"),this.trigger("removed",{content:null,position:t}))},a.prototype.preloadAutoWidthImages=function(e){e.each(t.proxy((function(e,i){this.enter("pre-loading"),i=t(i),t(new Image).one("load",t.proxy((function(t){i.attr("src",t.target.src),i.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()}),this)).attr("src",i.attr("src")||i.attr("data-src")||i.attr("data-src-retina"))}),this))},a.prototype.destroy=function(){for(var i in this.$element.off(".owl.core"),this.$stage.off(".owl.core"),t(s).off(".owl.core"),!1!==this.settings.responsive&&(e.clearTimeout(this.resizeTimer),this.off(e,"resize",this._handlers.onThrottledResize)),this._plugins)this._plugins[i].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.carousel")},a.prototype.op=function(t,e,i){var s=this.settings.rtl;switch(e){case"<":return s?t>i:t<i;case">":return s?t<i:t>i;case">=":return s?t<=i:t>=i;case"<=":return s?t>=i:t<=i}},a.prototype.on=function(t,e,i,s){t.addEventListener?t.addEventListener(e,i,s):t.attachEvent&&t.attachEvent("on"+e,i)},a.prototype.off=function(t,e,i,s){t.removeEventListener?t.removeEventListener(e,i,s):t.detachEvent&&t.detachEvent("on"+e,i)},a.prototype.trigger=function(e,i,s,n,o){var r={item:{count:this._items.length,index:this.current()}},l=t.camelCase(t.grep(["on",e,s],(function(t){return t})).join("-").toLowerCase()),d=t.Event([e,"owl",s||"carousel"].join(".").toLowerCase(),t.extend({relatedTarget:this},r,i));return this._supress[e]||(t.each(this._plugins,(function(t,e){e.onTrigger&&e.onTrigger(d)})),this.register({type:a.Type.Event,name:e}),this.$element.trigger(d),this.settings&&"function"==typeof this.settings[l]&&this.settings[l].call(this,d)),d},a.prototype.enter=function(e){t.each([e].concat(this._states.tags[e]||[]),t.proxy((function(t,e){this._states.current[e]===n&&(this._states.current[e]=0),this._states.current[e]++}),this))},a.prototype.leave=function(e){t.each([e].concat(this._states.tags[e]||[]),t.proxy((function(t,e){this._states.current[e]--}),this))},a.prototype.register=function(e){if(e.type===a.Type.Event){if(t.event.special[e.name]||(t.event.special[e.name]={}),!t.event.special[e.name].owl){var i=t.event.special[e.name]._default;t.event.special[e.name]._default=function(t){return!i||!i.apply||t.namespace&&-1!==t.namespace.indexOf("owl")?t.namespace&&t.namespace.indexOf("owl")>-1:i.apply(this,arguments)},t.event.special[e.name].owl=!0}}else e.type===a.Type.State&&(this._states.tags[e.name]?this._states.tags[e.name]=this._states.tags[e.name].concat(e.tags):this._states.tags[e.name]=e.tags,this._states.tags[e.name]=t.grep(this._states.tags[e.name],t.proxy((function(i,s){return t.inArray(i,this._states.tags[e.name])===s}),this)))},a.prototype.suppress=function(e){t.each(e,t.proxy((function(t,e){this._supress[e]=!0}),this))},a.prototype.release=function(e){t.each(e,t.proxy((function(t,e){delete this._supress[e]}),this))},a.prototype.pointer=function(t){var i={x:null,y:null};return(t=(t=t.originalEvent||t||e.event).touches&&t.touches.length?t.touches[0]:t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t).pageX?(i.x=t.pageX,i.y=t.pageY):(i.x=t.clientX,i.y=t.clientY),i},a.prototype.isNumeric=function(t){return!isNaN(parseFloat(t))},a.prototype.difference=function(t,e){return{x:t.x-e.x,y:t.y-e.y}},t.fn.sbyOwlCarousel=function(e){var s=Array.prototype.slice.call(arguments,1);return this.each((function(){var n=t(this),o=n.data("owl.carousel");o||(o=new a(this,"object"==i(e)&&e),n.data("owl.carousel",o),t.each(["next","prev","to","destroy","refresh","replace","add","remove"],(function(e,i){o.register({type:a.Type.Event,name:i}),o.$element.on(i+".owl.carousel.core",t.proxy((function(t){t.namespace&&t.relatedTarget!==this&&(this.suppress([i]),o[i].apply(this,[].slice.call(arguments,1)),this.release([i]))}),o))}))),"string"==typeof e&&"_"!==e.charAt(0)&&o[e].apply(o,s)}))},t.fn.sbyOwlCarousel.Constructor=a}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._interval=null,this._visible=null,this._handlers={"initialized.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.autoRefresh&&this.watch()}),this)},this._core.options=t.extend({},n.Defaults,this._core.options),this._core.$element.on(this._handlers)};n.Defaults={autoRefresh:!0,autoRefreshInterval:500},n.prototype.watch=function(){this._interval||(this._visible=this._core.$element.is(":visible"),this._interval=e.setInterval(t.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},n.prototype.refresh=function(){this._core.$element.is(":visible")!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("sby-owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},n.prototype.destroy=function(){var t,i;for(t in e.clearInterval(this._interval),this._handlers)this._core.$element.off(t,this._handlers[t]);for(i in Object.getOwnPropertyNames(this))"function"!=typeof this[i]&&(this[i]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.AutoRefresh=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel resized.owl.carousel":t.proxy((function(e){if(e.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(e.property&&"position"==e.property.name||"initialized"==e.type))for(var i=this._core.settings,s=i.center&&Math.ceil(i.items/2)||i.items,n=i.center&&-1*s||0,a=(e.property&&void 0!==e.property.value?e.property.value:this._core.current())+n,o=this._core.clones().length,r=t.proxy((function(t,e){this.load(e)}),this);n++<s;)this.load(o/2+this._core.relative(a)),o&&t.each(this._core.clones(this._core.relative(a)),r),a++}),this)},this._core.options=t.extend({},n.Defaults,this._core.options),this._core.$element.on(this._handlers)};n.Defaults={lazyLoad:!1},n.prototype.load=function(i){var s=this._core.$stage.children().eq(i),n=s&&s.find(".sby-owl-lazy");!n||t.inArray(s.get(0),this._loaded)>-1||(n.each(t.proxy((function(i,s){var n,a=t(s),o=e.devicePixelRatio>1&&a.attr("data-src-retina")||a.attr("data-src");this._core.trigger("load",{element:a,url:o},"lazy"),a.is("img")?a.one("load.owl.lazy",t.proxy((function(){a.css("opacity",1),this._core.trigger("loaded",{element:a,url:o},"lazy")}),this)).attr("src",o):((n=new Image).onload=t.proxy((function(){a.css({"background-image":'url("'+o+'")',opacity:"1"}),this._core.trigger("loaded",{element:a,url:o},"lazy")}),this),n.src=o)}),this)),this._loaded.push(s.get(0)))},n.prototype.destroy=function(){var t,e;for(t in this.handlers)this._core.$element.off(t,this.handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.Lazy=n}(window.Zepto||window.jQuery,window,document),n=window.Zepto||window.jQuery,window,document,a=function(t){this._core=t,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":n.proxy((function(t){t.namespace&&this._core.settings.autoHeight&&this.update()}),this),"changed.owl.carousel":n.proxy((function(t){t.namespace&&this._core.settings.autoHeight&&"position"==t.property.name&&this.update()}),this),"loaded.owl.lazy":n.proxy((function(t){t.namespace&&this._core.settings.autoHeight&&t.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()}),this)},this._core.options=n.extend({},a.Defaults,this._core.options),this._core.$element.on(this._handlers)},a.Defaults={autoHeight:!1,autoHeightClass:"sby-owl-height"},a.prototype.update=function(){var t,e=this._core._current,i=e+this._core.settings.items,s=this._core.$stage.children().toArray().slice(e,i),a=[];n.each(s,(function(t,e){a.push(n(e).height())})),t=Math.max.apply(null,a),this._core.$stage.parent().height(t).addClass(this._core.settings.autoHeightClass)},a.prototype.destroy=function(){var t,e;for(t in this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},n.fn.sbyOwlCarousel.Constructor.Plugins.AutoHeight=a,function(t,e,i,s){var n=function(e){this._core=e,this._videos={},this._playing=null,this._handlers={"initialized.owl.carousel":t.proxy((function(t){t.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})}),this),"resize.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.video&&this.isInFullScreen()&&t.preventDefault()}),this),"refreshed.owl.carousel":t.proxy((function(t){t.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .sby-owl-video-frame").remove()}),this),"changed.owl.carousel":t.proxy((function(t){t.namespace&&"position"===t.property.name&&this._playing&&this.stop()}),this),"prepared.owl.carousel":t.proxy((function(e){if(e.namespace){var i=t(e.content).find(".sby-owl-video");i.length&&(i.css("display","none"),this.fetch(i,t(e.content)))}}),this)},this._core.options=t.extend({},n.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".sby-owl-video-play-icon",t.proxy((function(t){this.play(t)}),this))};n.Defaults={video:!1,videoHeight:!1,videoWidth:!1},n.prototype.fetch=function(t,e){var i=t.attr("data-vimeo-id")?"vimeo":t.attr("data-vzaar-id")?"vzaar":"youtube",s=t.attr("data-vimeo-id")||t.attr("data-youtube-id")||t.attr("data-vzaar-id"),n=t.attr("data-width")||this._core.settings.videoWidth,a=t.attr("data-height")||this._core.settings.videoHeight,o=t.attr("href");if(!o)throw new Error("Missing video URL.");if((s=o.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/))[3].indexOf("youtu")>-1)i="youtube";else if(s[3].indexOf("vimeo")>-1)i="vimeo";else{if(!(s[3].indexOf("vzaar")>-1))throw new Error("Video URL not supported.");i="vzaar"}s=s[6],this._videos[o]={type:i,id:s,width:n,height:a},e.attr("data-video",o),this.thumbnail(t,this._videos[o])},n.prototype.thumbnail=function(e,i){var s,n,a=i.width&&i.height?'style="width:'+i.width+"px;height:"+i.height+'px;"':"",o=e.find("img"),r="src",l="",d=this._core.settings,h=function(t){s=d.lazyLoad?'<div class="sby-owl-video-tn '+l+'" '+r+'="'+t+'"></div>':'<div class="sby-owl-video-tn" style="opacity:1;background-image:url('+t+')"></div>',e.after(s),e.after('<div class="sby-owl-video-play-icon"></div>')};if(e.wrap('<div class="sby-owl-video-wrapper"'+a+"></div>"),this._core.settings.lazyLoad&&(r="data-src",l="sby-owl-lazy"),o.length)return h(o.attr(r)),o.remove(),!1;"youtube"===i.type?(n="//img.youtube.com/vi/"+i.id+"/hqdefault.jpg",h(n)):"vimeo"===i.type?t.ajax({type:"GET",url:"//vimeo.com/api/v2/video/"+i.id+".json",jsonp:"callback",dataType:"jsonp",success:function(t){n=t[0].thumbnail_large,h(n)}}):"vzaar"===i.type&&t.ajax({type:"GET",url:"//vzaar.com/api/videos/"+i.id+".json",jsonp:"callback",dataType:"jsonp",success:function(t){n=t.framegrab_url,h(n)}})},n.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".sby-owl-video-frame").remove(),this._playing.removeClass("sby-owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},n.prototype.play=function(e){var i,s=t(e.target).closest("."+this._core.settings.itemClass),n=this._videos[s.attr("data-video")],a=n.width||"100%",o=n.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),s=this._core.items(this._core.relative(s.index())),this._core.reset(s.index()),"youtube"===n.type?i='<iframe width="'+a+'" height="'+o+'" src="//www.youtube.com/embed/'+n.id+"?autoplay=1&rel=0&v="+n.id+'" frameborder="0" allowfullscreen></iframe>':"vimeo"===n.type?i='<iframe src="//player.vimeo.com/video/'+n.id+'?autoplay=1" width="'+a+'" height="'+o+'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>':"vzaar"===n.type&&(i='<iframe frameborder="0"height="'+o+'"width="'+a+'" allowfullscreen mozallowfullscreen webkitAllowFullScreen src="//view.vzaar.com/'+n.id+'/player?autoplay=true"></iframe>'),t('<div class="sby-owl-video-frame">'+i+"</div>").insertAfter(s.find(".sby-owl-video")),this._playing=s.addClass("sby-owl-video-playing"))},n.prototype.isInFullScreen=function(){var e=i.fullscreenElement||i.mozFullScreenElement||i.webkitFullscreenElement;return e&&t(e).parent().hasClass("sby-owl-video-frame")},n.prototype.destroy=function(){var t,e;for(t in this._core.$element.off("click.owl.video"),this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.Video=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this.core=e,this.core.options=t.extend({},n.Defaults,this.core.options),this.swapping=!0,this.previous=s,this.next=s,this.handlers={"change.owl.carousel":t.proxy((function(t){t.namespace&&"position"==t.property.name&&(this.previous=this.core.current(),this.next=t.property.value)}),this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":t.proxy((function(t){t.namespace&&(this.swapping="translated"==t.type)}),this),"translate.owl.carousel":t.proxy((function(t){t.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()}),this)},this.core.$element.on(this.handlers)};n.Defaults={animateOut:!1,animateIn:!1},n.prototype.swap=function(){if(1===this.core.settings.items&&t.support.animation&&t.support.transition){this.core.speed(0);var e,i=t.proxy(this.clear,this),s=this.core.$stage.children().eq(this.previous),n=this.core.$stage.children().eq(this.next),a=this.core.settings.animateIn,o=this.core.settings.animateOut;this.core.current()!==this.previous&&(o&&(e=this.core.coordinates(this.previous)-this.core.coordinates(this.next),s.one(t.support.animation.end,i).css({left:e+"px"}).addClass("animated sby-owl-animated-out").addClass(o)),a&&n.one(t.support.animation.end,i).addClass("animated sby-owl-animated-in").addClass(a))}},n.prototype.clear=function(e){t(e.target).css({left:""}).removeClass("animated sby-owl-animated-out sby-owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},n.prototype.destroy=function(){var t,e;for(t in this.handlers)this.core.$element.off(t,this.handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.Animate=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._timeout=null,this._paused=!1,this._handlers={"changed.owl.carousel":t.proxy((function(t){t.namespace&&"settings"===t.property.name?this._core.settings.autoplay?this.play():this.stop():t.namespace&&"position"===t.property.name&&this._core.settings.autoplay&&this._setAutoPlayInterval()}),this),"initialized.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.autoplay&&this.play()}),this),"play.owl.autoplay":t.proxy((function(t,e,i){t.namespace&&this.play(e,i)}),this),"stop.owl.autoplay":t.proxy((function(t){t.namespace&&this.stop()}),this),"mouseover.owl.autoplay":t.proxy((function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()}),this),"mouseleave.owl.autoplay":t.proxy((function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()}),this),"touchstart.owl.core":t.proxy((function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()}),this),"touchend.owl.core":t.proxy((function(){this._core.settings.autoplayHoverPause&&this.play()}),this)},this._core.$element.on(this._handlers),this._core.options=t.extend({},n.Defaults,this._core.options)};n.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},n.prototype.play=function(t,e){this._paused=!1,this._core.is("rotating")||(this._core.enter("rotating"),this._setAutoPlayInterval())},n.prototype._getNextTimeout=function(s,n){return this._timeout&&e.clearTimeout(this._timeout),e.setTimeout(t.proxy((function(){this._paused||this._core.is("busy")||this._core.is("interacting")||i.hidden||this._core.next(n||this._core.settings.autoplaySpeed)}),this),s||this._core.settings.autoplayTimeout)},n.prototype._setAutoPlayInterval=function(){this._timeout=this._getNextTimeout()},n.prototype.stop=function(){this._core.is("rotating")&&(e.clearTimeout(this._timeout),this._core.leave("rotating"))},n.prototype.pause=function(){this._core.is("rotating")&&(this._paused=!0)},n.prototype.destroy=function(){var t,e;for(t in this.stop(),this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.autoplay=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){"use strict";var n=function(e){this._core=e,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":t.proxy((function(e){e.namespace&&this._core.settings.dotsData&&this._templates.push('<div class="'+this._core.settings.dotClass+'">'+t(e.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"</div>")}),this),"added.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.dotsData&&this._templates.splice(t.position,0,this._templates.pop())}),this),"remove.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.dotsData&&this._templates.splice(t.position,1)}),this),"changed.owl.carousel":t.proxy((function(t){t.namespace&&"position"==t.property.name&&this.draw()}),this),"initialized.owl.carousel":t.proxy((function(t){t.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))}),this),"refreshed.owl.carousel":t.proxy((function(t){t.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))}),this)},this._core.options=t.extend({},n.Defaults,this._core.options),this.$element.on(this._handlers)};n.Defaults={nav:!1,navText:["prev","next"],navSpeed:!1,navElement:"div",navContainer:!1,navContainerClass:"sby-owl-nav",navClass:["sby-owl-prev","sby-owl-next"],slideBy:1,dotClass:"sby-owl-dot",dotsClass:"sby-owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},n.prototype.initialize=function(){var e,i=this._core.settings;for(e in this._controls.$relative=(i.navContainer?t(i.navContainer):t("<div>").addClass(i.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=t("<"+i.navElement+">").addClass(i.navClass[0]).html(i.navText[0]).prependTo(this._controls.$relative).on("click",t.proxy((function(t){this.prev(i.navSpeed)}),this)),this._controls.$next=t("<"+i.navElement+">").addClass(i.navClass[1]).html(i.navText[1]).appendTo(this._controls.$relative).on("click",t.proxy((function(t){this.next(i.navSpeed)}),this)),i.dotsData||(this._templates=[t("<div>").addClass(i.dotClass).append(t("<span>")).prop("outerHTML")]),this._controls.$absolute=(i.dotsContainer?t(i.dotsContainer):t("<div>").addClass(i.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","div",t.proxy((function(e){var s=t(e.target).parent().is(this._controls.$absolute)?t(e.target).index():t(e.target).parent().index();e.preventDefault(),this.to(s,i.dotsSpeed)}),this)),this._overrides)this._core[e]=t.proxy(this[e],this)},n.prototype.destroy=function(){var t,e,i,s;for(t in this._handlers)this.$element.off(t,this._handlers[t]);for(e in this._controls)this._controls[e].remove();for(s in this.overides)this._core[s]=this._overrides[s];for(i in Object.getOwnPropertyNames(this))"function"!=typeof this[i]&&(this[i]=null)},n.prototype.update=function(){var t,e,i=this._core.clones().length/2,s=i+this._core.items().length,n=this._core.maximum(!0),a=this._core.settings,o=a.center||a.autoWidth||a.dotsData?1:a.dotsEach||a.items;if("page"!==a.slideBy&&(a.slideBy=Math.min(a.slideBy,a.items)),a.dots||"page"==a.slideBy)for(this._pages=[],t=i,e=0;t<s;t++){if(e>=o||0===e){if(this._pages.push({start:Math.min(n,t-i),end:t-i+o-1}),Math.min(n,t-i)===n)break;e=0}e+=this._core.mergers(this._core.relative(t))}},n.prototype.draw=function(){var e,i=this._core.settings,s=this._core.items().length<=i.items,n=this._core.relative(this._core.current()),a=i.loop||i.rewind;this._controls.$relative.toggleClass("disabled",!i.nav||s),i.nav&&(this._controls.$previous.toggleClass("disabled",!a&&n<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!a&&n>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!i.dots||s),i.dots&&(e=this._pages.length-this._controls.$absolute.children().length,i.dotsData&&0!==e?this._controls.$absolute.html(this._templates.join("")):e>0?this._controls.$absolute.append(new Array(e+1).join(this._templates[0])):e<0&&this._controls.$absolute.children().slice(e).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(t.inArray(this.current(),this._pages)).addClass("active"))},n.prototype.onTrigger=function(e){var i=this._core.settings;e.page={index:t.inArray(this.current(),this._pages),count:this._pages.length,size:i&&(i.center||i.autoWidth||i.dotsData?1:i.dotsEach||i.items)}},n.prototype.current=function(){var e=this._core.relative(this._core.current());return t.grep(this._pages,t.proxy((function(t,i){return t.start<=e&&t.end>=e}),this)).pop()},n.prototype.getPosition=function(e){var i,s,n=this._core.settings;return"page"==n.slideBy?(i=t.inArray(this.current(),this._pages),s=this._pages.length,e?++i:--i,i=this._pages[(i%s+s)%s].start):(i=this._core.relative(this._core.current()),s=this._core.items().length,e?i+=n.slideBy:i-=n.slideBy),i},n.prototype.next=function(e){t.proxy(this._overrides.to,this._core)(this.getPosition(!0),e)},n.prototype.prev=function(e){t.proxy(this._overrides.to,this._core)(this.getPosition(!1),e)},n.prototype.to=function(e,i,s){var n;!s&&this._pages.length?(n=this._pages.length,t.proxy(this._overrides.to,this._core)(this._pages[(e%n+n)%n].start,i)):t.proxy(this._overrides.to,this._core)(e,i)},t.fn.sbyOwlCarousel.Constructor.Plugins.Navigation=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){"use strict";var n=function(i){this._core=i,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":t.proxy((function(i){i.namespace&&"URLHash"===this._core.settings.startPosition&&t(e).trigger("hashchange.owl.navigation")}),this),"prepared.owl.carousel":t.proxy((function(e){if(e.namespace){var i=t(e.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");if(!i)return;this._hashes[i]=e.content}}),this),"changed.owl.carousel":t.proxy((function(i){if(i.namespace&&"position"===i.property.name){var s=this._core.items(this._core.relative(this._core.current())),n=t.map(this._hashes,(function(t,e){return t===s?e:null})).join();if(!n||e.location.hash.slice(1)===n)return;e.location.hash=n}}),this)},this._core.options=t.extend({},n.Defaults,this._core.options),this.$element.on(this._handlers),t(e).on("hashchange.owl.navigation",t.proxy((function(t){var i=e.location.hash.substring(1),s=this._core.$stage.children(),n=this._hashes[i]&&s.index(this._hashes[i]);void 0!==n&&n!==this._core.current()&&this._core.to(this._core.relative(n),!1,!0)}),this))};n.Defaults={URLhashListener:!1},n.prototype.destroy=function(){var i,s;for(i in t(e).off("hashchange.owl.navigation"),this._handlers)this._core.$element.off(i,this._handlers[i]);for(s in Object.getOwnPropertyNames(this))"function"!=typeof this[s]&&(this[s]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.Hash=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){function n(e,i){var n=!1,a=e.charAt(0).toUpperCase()+e.slice(1);return t.each((e+" "+r.join(a+" ")+a).split(" "),(function(t,e){if(o[e]!==s)return n=!i||e,!1})),n}function a(t){return n(t,!0)}var o=t("<support>").get(0).style,r="Webkit Moz O ms".split(" "),l={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}};!!n("transition")&&(t.support.transition=new String(a("transition")),t.support.transition.end=l.transition.end[t.support.transition]),!!n("animation")&&(t.support.animation=new String(a("animation")),t.support.animation.end=l.animation.end[t.support.animation]),n("transform")&&(t.support.transform=new String(a("transform")),t.support.transform3d=!!n("perspective"))}(window.Zepto||window.jQuery,window,document),s=window.Zepto||window.jQuery,window,document,Owl2row=function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){this.owl=t,this.owl.options=s.extend({},Owl2row.Defaults,this.owl.options),this.handlers={"initialize.owl.carousel":s.proxy((function(t){this.owl.settings.owl2row&&this.build2row(this)}),this)},this.owl.$element.on(this.handlers)})),Owl2row.Defaults={owl2row:!1,owl2rowTarget:"sby_item",owl2rowContainer:"sby_owl2row-item",owl2rowDirection:"utd"},Owl2row.prototype.build2row=function(t){var e=s(t.owl.$element),i=e.find("."+t.owl.options.owl2rowTarget),n=[],a=[];s.each(i,(function(t,e){t%2==0?n.push(e):a.push(e)})),"ltr"===t.owl.options.owl2rowDirection?t.leftToright(t,e,i):t.upTodown(t,n,a,e)},Owl2row.prototype.leftToright=function(t,e,i){var n=t.owl.options.owl2rowContainer,a=t.owl.options.margin,o=i.length,r=[],l=[];o%2==1?o=(o-1)/2+1:o/=2,s.each(i,(function(t,e){t<o?r.push(e):l.push(e)})),s.each(r,(function(t,i){var o=s('<div class="'+n+'"/>'),d=r[t];d.style.marginBottom=a+"px",o.append(d).append(l[t]),e.append(o)}))},Owl2row.prototype.upTodown=function(t,e,i,n){var a=t.owl.options.owl2rowContainer,o=t.owl.options.margin;s.each(e,(function(t,r){var l=s('<div class="'+a+'"/>'),d=e[t];d.style.marginBottom=o+"px",l.append(d).append(i[t]),n.append(l)}))},Owl2row.prototype.destroy=function(){},s.fn.sbyOwlCarousel.Constructor.Plugins.owl2row=Owl2row,function(t){function e(){this.feeds={},this.ctas={},this.options=sbyOptions,this.isTouch="ontouchstart"in document.documentElement}function i(t,e,i){this.el=t,this.index=e,this.settings=i,this.placeholderURL=window.sby.options.placeholder,i.narrowPlayer&&(this.placeholderURL=window.sby.options.placeholderNarrow),this.playerAPIReady=!1,this.consentGiven=i.consentGiven,this.players={},this.minImageWidth=0,this.imageResolution=150,this.resizedImages={},this.needsResizing=[],this.outOfPages=!1,this.isInitialized=!1,this.mostRecentlyLoadedPosts=[],this.embedURL="//www.youtube-nocookie.com",i.allowCookies&&(this.embedURL="//www.youtube.com")}function s(e,s,n){i.call(this,e,s,n),this.CTA={},this.initLayout=function(){this.initGalleryLayout(),this.initGrid(),this.initCarousels();var t=jQuery.Event("sbyafterlayoutinit");t.feed=this,jQuery(window).trigger(t),$()},this.initGrid=function(){if(window.sbySemiEagerLoading&&jQuery("#sby_lightbox").length){var e=this;playerID="sby_lb-player",jQuery("#sby_lightbox").addClass("sby_video_lightbox"),window.sbyOptions.isPro||jQuery("#sby_lightbox").addClass("sby_lightbox_free");var i=t(this.el).find("sby_item").first().attr("data-video-id"),s=sbyOptions.autoplay;if(void 0===window.sbyLightboxPlayer){var n={host:window.location.protocol+e.embedURL,videoId:i,playerVars:{modestbranding:1,rel:0,autoplay:s},events:{onStateChange:function(i){var s=i.target.getVideoData().video_id;e.afterStateChange(playerID,s,i,t("#"+playerID).closest(".sby_video_thumbnail_wrap"))}}};e.maybeAddCTA(playerID),window.sbyLightboxPlayer=new window.YT.Player(playerID,n)}}},this.initCarousels=function(){var e=this,i=t(this.el);if(void 0!==this.settings.general.carousel){var s=this.settings.cols,n=this.settings.colsmobile;i.find(".sby_items_wrap").addClass("sby_carousel"),i.find(".sby_load_btn").remove(),i.find(".sby_item").css({"padding-top":i.find(".sby_items_wrap").css("padding-top"),"padding-right":i.find(".sby_items_wrap").css("padding-top"),"padding-bottom":i.find(".sby_items_wrap").css("padding-top"),"padding-left":i.find(".sby_items_wrap").css("padding-top")}),i.find(".sby_item").each((function(){t(this).attr("style",t(this).attr("style").replace("padding: "+i.find(".sby_items_wrap").css("padding-top"),"padding: "+i.find(".sby_items_wrap").css("padding-top")+" !important"))}));var a=e.settings.general.carousel[0],o=e.settings.general.carousel[1],r=e.settings.general.carousel[2],l=e.settings.general.carousel[3],d=e.settings.general.carousel[4],h=e.settings.general.carousel[5];r||(l=!1);var c=s,u=s,g=(a=a?"onhover":"hide",r=!1!==l,2==h);d=!d,i.hasClass("sby_mob_col_auto")?(c=2,2!=parseInt(s)&&(u=1),2==parseInt(s)&&(u=2)):u=n,this.carouselArgs={items:s,loop:d,rewind:!d,autoplay:r,autoplayTimeout:Math.max(l,2e3),autoplayHoverPause:!0,nav:!0,navText:['<svg class="svg-inline--fa fa-chevron-left fa-w-10" aria-hidden="true" data-fa-processed="" data-prefix="fa" data-icon="chevron-left" role="presentation" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"></path></svg>','<svg class="svg-inline--fa fa-chevron-right fa-w-10" aria-hidden="true" data-fa-processed="" data-prefix="fa" data-icon="chevron-right" role="presentation" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>'],dots:o,owl2row:g,responsive:{0:{items:u},480:{items:c},640:{items:s}},onChange:function(){setTimeout((function(){e.afterResize()}),1)},onInitialize:function(){var t=jQuery(e.el);t.find(".sby_items_wrap.sby_carousel").fadeIn(),setTimeout((function(){t.find(".sby_items_wrap.sby_carousel .sby_info, .sby_owl2row-item,.sby_items_wrap.sby_carousel").fadeIn()}),1),setTimeout((function(){var e=t.find(".sby-owl-nav");if("onhover"===a);else if("below"===a){var i=t.find(".sby-owl-dots"),s=t.find(".sby-owl-prev"),n=t.find(".sby-owl-next"),o=t.find(".sby-owl-nav"),r=t.find(".sby-owl-dot"),l=r.length*r.innerWidth();t.innerWidth(),s.after(i),o.css("position","relative"),n.css("position","absolute").css("top","-6px").css("right",Math.max(.5*o.innerWidth()-.5*l-n.innerWidth()-6,0)),s.css("position","absolute").css("top","-6px").css("left",Math.max(.5*o.innerWidth()-.5*l-s.innerWidth()-6,0))}else"hide"===a&&e.addClass("hide").hide()}),1)}}}},this.stripEmojihtml=function(e){return e.find(".emoji").each((function(){t(this).replaceWith(t(this).attr("alt"))})),e.html()},this.afterItemRevealed=function(t){var e=this;if(t.find(".sby_caption").length&&!t.find(".sby_caption").hasClass("sby_full_caption")){var i=t.find(".sby_item_caption_wrap .sby_caption"),s=t.find(".sby_item_video_thumbnail .sby_caption"),n=void 0!==e.settings.general.descriptionlength?parseInt(e.settings.general.descriptionlength):150;n<1&&(n=99999);var a=this.stripEmojihtml(t.find(".sby_caption").first()),o=((a.match(/<br>/g)||[]).length,void 0===sbyOptions.brAdjust||"1"===sbyOptions.brAdjust||sbyOptions.brAdjust,a.substring(0,n));if(o=a.length>n?o.substr(0,Math.min(o.length,o.lastIndexOf(" "))):o,i.length&&(i.html(sbyLinkify(o)),o===a&&i.next(".sby_expand").remove()),s.length){var r=o;o!==a&&(r+='<span class="sby_more">...</span>'),s.html(r)}a.length>n&&t.find(".sby_expand").show(),t.find(".sby_expand a").off("click").on("click",(function(s){s.preventDefault(),jQuery(this),i=void 0!==i?i:t.find(".sby_info .sby_caption"),a="undefined"!=typeof captiontext?a:f(t.find(".sby_item_video_thumbnail").attr("data-title")),t.hasClass("sby_caption_full")&&void 0!==o?(i.html(o),t.removeClass("sby_caption_full")):(i.html(sbyLinkify(a)),t.addClass("sby_caption_full")),e.afterResize()}))}this.setUpCTA(t);var l=void 0!==e.settings.general.disablelightbox&&e.settings.general.disablelightbox,d=void 0!==e.settings.general.captionlinks&&e.settings.general.captionlinks;if(l||d){if(d){var h="";void 0!==t.find("img").attr("alt")?h=t.find("img").attr("alt"):void 0!==t.find("video").attr("alt")&&(h=t.find("video").attr("alt"));var c=h.match(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);c&&t.find("a").attr("href",c)}t.find(".sby_link").addClass("sby_disable_lightbox")}else{var u=t.find(".sby_photo_wrap"),g=u.find(".sby_link");feedOptions={hovereffect:"true"},"none"==feedOptions.hovereffect?(g.css("background","none").show(),g.find("*").hide().end().find(".sby_link_area").show()):u.on("mouseenter mouseleave",(function(e){switch(e.type){case"mouseenter":t.addClass("sby_animate");break;case"mouseleave":t.removeClass("sby_animate")}}))}var p=void 0!==t.attr("data-video-id")?t.attr("data-video-id"):t.find(".sby_video_thumbnail").attr("data-video-id");this.mostRecentlyLoadedPosts.push(p)},this.afterFeedSet=function(){void 0!==this.carouselArgs&&(t(this.el).find(".sby_carousel").sbyOwlCarousel(this.carouselArgs),2===parseInt(this.settings.general.carousel[5])&&t(this.el).addClass("sby_carousel_2_row"))},this.setUpCTA=function(t,e){e=void 0!==e?e:t.find(".sby_item_video_thumbnail").attr("data-video-id");var i=f(void 0!==t.find(".sby_item_video_thumbnail").attr("data-title")?t.find(".sby_item_video_thumbnail").attr("data-title"):""),s=window.sby.ctaDetect(i);window.sby.ctas[e]=s||this.getDefaultCTA()},this.getDefaultCTA=function(){return void 0!==this.settings.general.cta&&"default"!==this.settings.general.cta.type&&("link"===this.settings.general.cta.type?{callback:"link",url:this.settings.general.cta.defaultLink,text:this.settings.general.cta.defaultText}:{callback:"related",related:this.settings.general.cta.defaultPosts})},this.afterResize=function(){this.setImageHeight(),this.setImageResolution(),this.maybeRaiseImageResolution(),this.setImageSizeClass(),this.setAllCTADimensions(),this.sizePlayer(),this.sizeItems()},this.setAllCTADimensions=function(){t.each(this.CTA,(function(t,e){e.isInitialized&&e.setCTAStyles()}))},this.afterSendCheckWPPostsToServer=function(e){var i=t(this.el);i.find(".sby_item").each((function(){if(void 0!==e[t(this).attr("data-video-id")]){var i=e[t(this).attr("data-video-id")];t(this).find(".sby_view_count").text(i.sby_view_count),t(this).find(".sby_comment_count").text(i.sby_comment_count),t(this).find(".sby_like_count").text(i.sby_like_count),t(this).find(".sby_video_thumbnail").attr("data-views",i.sby_view_count),t(this).find(".sby_video_thumbnail").attr("data-comment-count",i.sby_comment_count),"none"!==i.sby_live_broadcast.broadcast_type&&(t(this).find(".sby_ls_message").text(i.sby_live_broadcast.live_streaming_string),t(this).find(".sby_date").html(i.sby_live_broadcast.live_streaming_date)),void 0!==i.sby_live_broadcast.live_streaming_timestamp&&t(this).attr("data-live-date",i.sby_live_broadcast.live_streaming_timestamp),void 0!==i.sby_description&&t(this).find(".sby_item_video_thumbnail").attr("data-title",f(i.sby_description))}})),i.find(".sby_player_item").each((function(){if(void 0!==e[t(this).find(".sby_video_thumbnail").attr("data-video-id")]){var i=e[t(this).find(".sby_video_thumbnail").attr("data-video-id")];t(this).find(".sby_view_count").text(i.sby_view_count),t(this).find(".sby_comment_count").text(i.sby_comment_count),t(this).find(".sby_like_count").text(i.sby_like_count),"none"!==i.sby_live_broadcast.broadcast_type&&(t(this).find(".sby_ls_message").text(i.sby_live_broadcast.live_streaming_string),t(this).find(".sby_date").html(i.sby_live_broadcast.live_streaming_date)),void 0!==i.sby_live_broadcast.live_streaming_timestamp&&t(this).attr("data-live-date",i.sby_live_broadcast.live_streaming_timestamp)}}));var n=jQuery.Event("sbyaftercheckposts");n.feed=window.sby.feeds[s],n.response=e,jQuery(window).trigger(n)},this.afterStateChange=function(t,e,i,s){this.CTA[t].toggleCTA(e,i.data,s)},this.changePlayerInfo=function(e){var i=t(this.el);i.find(".sby_player_item").find(".sby_info").replaceWith(e.find(".sby_info").clone(!0,!0));var s=A(e.attr("data-video-title")),n=A(e.find(".sby_video_thumbnail").attr("data-formatted-published-date"));i.find(".sby-player-info .sby-video-header-info .sby-video-info-header h5").text(s),i.find(".sby-player-info .sby-video-header-meta .sby-video-date").text(n),D(i),$()},this.maybeAddCTA=function(t,e){void 0===this.CTA[t]&&(this.CTA[t]=new o(t,this))}}function n(){}function a(){n.call(this),this.getData=function(t){var e=t.closest(".sb_youtube"),i=parseInt(e.attr("data-sby-index")-1),s=e.attr("data-subscribe-btn-text"),n=e.attr("data-subscribe-btn"),a=e.hasClass("sby_palette_dark")?"dark":"light",o=e.attr("data-shortcode-atts"),r=t.closest(".sby_item").attr("data-live-date"),l=e.attr("data_channel_header_colors")?JSON.parse(e.attr("data_channel_header_colors")):"";return{feedIndex:i,link:t.attr("href"),video:t.attr("data-video-id"),title:f(t.attr("data-title")),videoTitle:void 0!==t.attr("data-video-title")?f(t.attr("data-video-title")):"YouTube Video",avatar:t.attr("data-avatar"),user:f(t.attr("data-user")),channelURL:t.attr("data-url"),channelID:t.attr("data-channel-id"),channelSubscribers:t.closest(".sb_youtube").attr("data-channel-subscribers"),subscribeBtn:n,subscribeBtnText:s,colorScheme:a,publishedDate:t.attr("data-published-date"),commentCount:t.attr("data-comment-count"),views:t.attr("data-views"),liveData:r,channelHeaderColors:l,atts:o}},this.template=function(){return"\n                <div id='sby_lightboxOverlay' class='sby_lightboxOverlay'></div>\n                <div id='sby_lightbox' class='sby_lightbox'>\n                 <div class='sby_lb-header'></div>\n                  <div class='sby_lb-outerContainer'>\n                    <a class='sby_lb-close'></a>\n                    <div class='sby_lb-container'>\n                      <div class='sby_lb_video_thumbnail_wrap'>\n                        <span class='sby_lb_video_thumbnail'>\n                          <img class='sby_lb-image' alt='Lightbox image placeholder' src='' />\n                          <div class='sby_lb-player' id='sby_lb-player'></div>\n                        </span>\n                      </div>\n                      <div class='sby_lb-nav'>\n                        <a class='sby_lb-prev' href='#'>\n                          <p class='sby-screenreader'>Previous Slide</p>\n                          <span></span>\n                        </a>\n                        <a class='sby_lb-next' href='#'>\n                          <p class='sby-screenreader'>Next Slide</p>\n                          <span></span>\n                        </a>\n                      </div>\n                      <div class='sby_lb-loader'>\n                        <a class='sby_lb-cancel'></a>\n                      </div>\n                    </div>\n                  </div>\n                  <div class='sby_lb-dataContainer'>\n                    <div class='sby_lb-data'>\n                      <div class='sby_lb-details'>\n                        <div class='sby_lb-caption'>\n                        </div>\n                        <div class='sby_lb-info'>\n                          <div class='sby_lb-number'></div>\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                </div>"},this.beforePlayerSetup=function(e,i,s,n,a){t("body").css("overflow","hidden"),e.find(".sby_cta_items_wraps").length?e.find(".sby_cta_items_wraps").replaceWith(t(a.el).find(".sby_cta_items_wraps").clone()):e.find(".sby_lb_video_thumbnail_wrap").append(t(a.el).find(".sby_cta_items_wraps").clone())},this.afterPlayerSetup=function(t,e,i,s){var n;this.availableAvatarUrls={};var a=!(null==e||!e.subscribeBtn)&&e.subscribeBtn,o=null!=e&&e.subscribeBtnText?e.subscribeBtnText:"";"function"==typeof sbyLightboxAction&&setTimeout((function(){sbyLightboxAction()}),100),null!=e&&e.colorScheme&&"dark"===e.colorScheme&&L(e.colorScheme,!0);var r="",l=a?'<a class="sby-lb-subscribe-btn" href="http://www.youtube.com/channel/'+e.channelID+'?sub_confirmation=1&feature=subscribe-embed-click" target="_blank" rel="noopener noreferrer">'+C("youtube")+" <p>"+o+"</p></a>":"";void 0!==e.avatar&&""!==e.avatar&&void 0!==e.user?r="undefined"!==e.avatar?e.avatar:"":void 0!==e.user&&jQuery.each(window.sby.feeds,(function(){void 0!==this.availableAvatarUrls&&void 0!==this.availableAvatarUrls[e.user]&&"undefined"!==this.availableAvatarUrls[e.user]&&(r=this.availableAvatarUrls[e.user])}));var d,h,c=null!==(n=null==e?void 0:e.channelSubscribers)&&void 0!==n?n:"",u=r?'<img src="'+r+'" referrerPolicy="no-referrer"/>':C("profile-picture"),g=a&&r?'<div class="sby-lb-channel-header"><a class="sby_lightbox_username" href="'+e.channelURL+'" target="_blank" rel="noopener">'+u+'<p class="sby-lb-channel-name-with-subs"><span>@'+e.user+"</span><span>"+c+"</span></p></a> "+l+"</div>":"",p=a&&r?"sby_lb-channel-info":"sby_lb-no-channel-info";if(window.sbyOptions.isPro){var y=null!=e&&e.title?(h=e.title)?(h=h.replace(/(>#)/g,"> #"),sbyLinkify(h)):"":"",f=null!=e&&e.publishedDate?z((d=e.publishedDate)?new Date(1e3*parseInt(d)):""):"",b=null!=e&&e.views?e.views:"",m='\n                    <div class="sby_lb-video-heading">\n                        <h3>'.concat(e.videoTitle,'</h3>\n                        <div class="sby_lb-video-info">\n                            <span>').concat(b,'</span>\n                            <span class="sby_lb-spacer">·</span>\n                            <span>').concat(f,"</span>\n                        </div>\n                    </div>\n                "),_='\n                    <div class="sby_lb-video-description-wrap">\n                        <div class="sby_lb-description sby-read-more-target">\n                            '.concat(y,'\n                        </div>\n                        <button class="sby_lb-more-info-btn sby-read-more-trigger">Description').concat(C("angle-down"),"</button>\n                    </div>\n                "),v=y?_:"";if(t.find(".sby_lb-caption").html('<div class="sby_lb-caption-inner '.concat(p,'">')+m+g+v+'\n                    <div class="sby-comments-wrap">\n                    </div>\n                </div>').fadeIn("fast"),null!=e&&e.liveData&&"0"===e.liveData){var w=null!=e&&e.video?e.video:"",x=null!=e&&e.atts?e.atts:"",I=null!=e&&e.commentCount?e.commentCount:"";S(w,x,t.find(".sby-comments-wrap"),I)}else T();null!=e&&e.channelHeaderColors&&function(t){var e=t.channelName,i=t.subscribeCount,s=t.buttonBackground,n=t.buttonText,a=jQuery(".sby_lb-dataContainer .sby-lb-channel-header");if(!a)return!1;e&&a.find(".sby-lb-channel-name-with-subs span:first-child").css("color",e),i&&a.find(".sby-lb-channel-name-with-subs span:nth-child(2)").css("color",i),s&&a.find(".sby-lb-subscribe-btn").css("background",s),n&&a.find(".sby-lb-subscribe-btn").css("color",n)}(e.channelHeaderColors)}}}function o(t,e){this.isInitialized=!1,this.videoID=t,this.callback=this.related,this.callbackArgs={},this.feedObjInContext=e,this.state=1,this.numItems=4,this.numItemColumns=2,this.$player=!1}e.prototype={createPage:function(e,i){void 0!==window.sbyajaxurl&&-1!==window.sbyajaxurl.indexOf(window.location.hostname)||(window.sbyajaxurl=window.location.hostname+"/wp-admin/admin-ajax.php"),t(".sby_no_js_error_message").remove(),t(".sby_no_js").removeClass("sby_no_js"),e(i)},maybeAddYTAPI:function(){var t="sby-youtube-api";if(null===document.getElementById(t)){var e=document.createElement("script"),i=document.getElementsByTagName("script")[0];e.src="https://www.youtube.com/iframe_api",e.id=t,i.parentNode.insertBefore(e,i)}},createLightbox:function(){var e,i=new a,s=(e=0,function(t,i){clearTimeout(e),e=setTimeout(t,i)});jQuery(window).on("resize",(function(){s((function(){i.afterResize()}),200)})),function(){var e=jQuery,s=function(){function t(){this.fadeDuration=500,this.fitImagesInViewport=!0,this.resizeDuration=700,this.positionFromTop=50,this.showImageNumberLabel=!0,this.alwaysShowNavOnTouchDevices=!1,this.wrapAround=!1}return t.prototype.albumLabel=function(t,e){return t+" / "+e},t}(),n=function(){function s(t){this.options=t,this.album=[],this.currentImageIndex=void 0,this.init()}return s.prototype.init=function(){this.enable(),this.build()},s.prototype.enable=function(){var t=this;e("body").on("click","a[data-sby-lightbox]",(function(i){return t.start(e(i.currentTarget)),!1}))},s.prototype.build=function(){var t=this;e(""+i.template()).appendTo(e("body")),this.$lightbox=e("#sby_lightbox"),this.$overlay=e("#sby_lightboxOverlay"),this.$outerContainer=this.$lightbox.find(".sby_lb-outerContainer"),this.$container=this.$lightbox.find(".sby_lb-container"),this.containerTopPadding=parseInt(this.$container.css("padding-top"),10),this.containerRightPadding=parseInt(this.$container.css("padding-right"),10),this.containerBottomPadding=parseInt(this.$container.css("padding-bottom"),10),this.containerLeftPadding=parseInt(this.$container.css("padding-left"),10),this.$overlay.hide().on("click",(function(){return t.end(),!1})),jQuery(document).on("click",(function(t,e,s){jQuery(t.target).closest(".sby_lb-outerContainer").length||jQuery(t.target).closest(".sby_lb-dataContainer").length||(j(),i.pausePlayer(),jQuery("#sby_lightboxOverlay, #sby_lightbox").fadeOut())})),this.$lightbox.hide(),jQuery("#sby_lightboxOverlay").on("click",(function(s){return i.pausePlayer(),jQuery(".sby_gdpr_notice").remove(),"sby_lightbox"===e(s.target).attr("id")&&t.end(),!1})),this.$lightbox.find(".sby_lb-prev").on("click",(function(){return i.pausePlayer(),jQuery(".sby_gdpr_notice").remove(),t.changeImage(0===t.currentImageIndex?t.album.length-1:t.currentImageIndex-1),!1})),this.$lightbox.find(".sby_lb-container").on("swiperight",(function(){return i.pausePlayer(),jQuery(".sby_gdpr_notice").remove(),t.changeImage(0===t.currentImageIndex?t.album.length-1:t.currentImageIndex-1),!1})),this.$lightbox.find(".sby_lb-next").on("click",(function(){return i.pausePlayer(),jQuery(".sby_gdpr_notice").remove(),t.changeImage(t.currentImageIndex===t.album.length-1?0:t.currentImageIndex+1),!1})),this.$lightbox.find(".sby_lb-container").on("swipeleft",(function(){return i.pausePlayer(),jQuery(".sby_gdpr_notice").remove(),t.changeImage(t.currentImageIndex===t.album.length-1?0:t.currentImageIndex+1),!1})),this.$lightbox.find(".sby_lb-loader, .sby_lb-close").on("click",(function(){return j(),i.pausePlayer(),t.end(),!1}))},s.prototype.start=function(t){function s(t){n.album.push(i.getData(t))}var n=this,a=e(window);a.on("resize",e.proxy(this.sizeOverlay,this)),e("select, object, embed").css({visibility:"hidden"}),this.sizeOverlay(),this.album=[];var o,r=0,l=t.attr("data-sby-lightbox");if(l){o=e(t.prop("tagName")+'[data-sby-lightbox="'+l+'"]');for(var d=0;d<o.length;d=++d)s(e(o[d])),o[d]===t[0]&&(r=d)}else if("lightbox"===t.attr("rel"))s(t);else{o=e(t.prop("tagName")+'[rel="'+t.attr("rel")+'"]');for(var h=0;h<o.length;h=++h)s(e(o[h])),o[h]===t[0]&&(r=h)}var c=a.scrollTop()+this.options.positionFromTop-50,u=a.scrollLeft();this.$lightbox.css({top:c+"px",left:u+"px"}).fadeIn(this.options.fadeDuration),this.changeImage(r)},s.prototype.changeImage=function(t){var i=this;this.disableKeyboardNav();var s=this.$lightbox.find(".sby_lb-image");this.$overlay.fadeIn(this.options.fadeDuration),e(".sby_lb-loader").fadeIn("slow"),this.$lightbox.find(".sby_lb-image, .sby_lb-nav, .sby_lb-prev, .sby_lb-next, .sby_lb-dataContainer, .sby_lb-numbers, .sby_lb-caption").hide(),this.$outerContainer.addClass("animating");var n=new Image;n.onload=function(){var a,o,r,l,d,h;s.attr("src",i.album[t].link),e(n),s.width(n.width),s.height(n.height),i.options.fitImagesInViewport&&(h=e(window).width(),d=e(window).height(),l=h-i.containerLeftPadding-i.containerRightPadding-20-100,r=d-i.containerTopPadding-i.containerBottomPadding-150,(n.width>l||n.height>r)&&(n.width/l>n.height/r?(o=l,a=parseInt(n.height/(n.width/o),10),s.width(o),s.height(a)):(a=r,o=parseInt(n.width/(n.height/a),10),s.width(o),s.height(a)))),i.sizeContainer(s.width(),s.height())},n.src=this.album[t].link,this.currentImageIndex=t},s.prototype.sizeOverlay=function(){this.$overlay.width(e(window).width()).height(e(document).height())},s.prototype.sizeContainer=function(t,e){function i(){s.$lightbox.find(".sby_lb-dataContainer").width(o),s.$lightbox.find(".sby_lb-prevLink").height(r),s.$lightbox.find(".sby_lb-nextLink").height(r),s.showImage()}var s=this,n=this.$outerContainer.outerWidth(),a=this.$outerContainer.outerHeight(),o=t+this.containerLeftPadding+this.containerRightPadding,r=e+this.containerTopPadding+this.containerBottomPadding;n!==o||a!==r?this.$outerContainer.animate({width:o,height:r},this.options.resizeDuration,"swing",(function(){i()})):i()},s.prototype.showImage=function(){this.$lightbox.find(".sby_lb-loader").hide(),this.$lightbox.find(".sby_lb-image").fadeIn("slow"),this.updateNav(),this.updateDetails(),this.preloadNeighboringImages(),this.enableKeyboardNav()},s.prototype.updateNav=function(){var t=!1;try{document.createEvent("TouchEvent"),t=!!this.options.alwaysShowNavOnTouchDevices}catch(t){}this.$lightbox.find(".sby_lb-nav").show(),this.album.length>1&&(this.options.wrapAround?(t&&this.$lightbox.find(".sby_lb-prev, .sby_lb-next").css("opacity","1"),this.$lightbox.find(".sby_lb-prev, .sby_lb-next").show()):(this.currentImageIndex>0&&(this.$lightbox.find(".sby_lb-prev").show(),t&&this.$lightbox.find(".sby_lb-prev").css("opacity","1")),this.currentImageIndex<this.album.length-1&&(this.$lightbox.find(".sby_lb-next").show(),t&&this.$lightbox.find(".sby_lb-next").css("opacity","1"))))},s.prototype.updateDetails=function(){var e=this;jQuery("iframe.sby_lb-player-loaded").length&&(jQuery(".sby_lb-player-placeholder").replaceWith(jQuery("iframe.sby_lb-player-loaded")),jQuery("iframe.sby_lb-player-loaded").removeClass("sby_lb-player-loaded").show());var s=window.sby.feeds[this.album[this.currentImageIndex].feedIndex];if(i.beforePlayerSetup(this.$lightbox,this.album[this.currentImageIndex],this.currentImageIndex,this.album,s),b()){if(jQuery("#sby_lightbox").removeClass("sby_video_lightbox"),s.settings.consentGiven&&this.album[this.currentImageIndex].video.length){jQuery(".sby_gdpr_notice").remove();var n="sby_lb-player";jQuery("#sby_lightbox").addClass("sby_video_lightbox"),window.sbyOptions.isPro||jQuery("#sby_lightbox").addClass("sby_lightbox_free");var a=this.album[this.currentImageIndex].video,o=sbyOptions.autoplay;if(void 0===window.sbyLightboxPlayer){var r={host:window.location.protocol+s.embedURL,videoId:a,playerVars:{modestbranding:1,rel:0,autoplay:o},events:{onStateChange:function(e){var i=e.target.getVideoData().video_id;s.afterStateChange(n,i,e,t("#"+n).closest(".sby_video_thumbnail_wrap"))}}};s.maybeAddCTA(n),window.sbyLightboxPlayer=new window.YT.Player(n,r)}else window.sbyLightboxPlayer.loadVideoById(a);this.$outerContainer.removeClass("animating"),this.$lightbox.find(".sby_lb-dataContainer").fadeIn(this.options.resizeDuration,(function(){return e.sizeOverlay()})),setTimeout((function(){t("#sby_lightbox .sby_lb-player").css({height:t("#sby_lightbox .sby_lb-outerContainer").height()+"px",width:t("#sby_lightbox .sby_lb-outerContainer").width()+"px",top:0})}),1),this.$lightbox.find("iframe").length&&this.$lightbox.find("iframe").attr("title",this.album[this.currentImageIndex].videoTitle)}else{var l=t(".sby_item[data-video-id="+this.album[this.currentImageIndex].video+"]").find(".sby_video_thumbnail").attr("data-full-res");t(".sby_lb-image").attr("src",l),this.$outerContainer.removeClass("animating"),this.$lightbox.find(".sby_lb-dataContainer").fadeIn(this.options.resizeDuration,(function(){return e.sizeOverlay()})),jQuery(".sby_lb-container").prepend('<a href="https://www.youtube.com/watch?v='+this.album[this.currentImageIndex].video+'" target="_blank" rel="noopener noreferrer" class="sby_gdpr_notice"><svg style="color: rgba(255,255,255,1)" class="svg-inline--fa fa-play fa-w-14 sby_playbtn" aria-label="Play" aria-hidden="true" data-fa-processed="" data-prefix="fa" data-icon="play" role="presentation" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"></path></svg></a>')}i.afterPlayerSetup(this.$lightbox,this.album[this.currentImageIndex],this.currentImageIndex,this.album),this.album.length>1&&this.options.showImageNumberLabel?this.$lightbox.find(".sby_lb-number").text(this.options.albumLabel(this.currentImageIndex+1,this.album.length)).fadeIn("fast"):this.$lightbox.find(".sby_lb-number").hide()}},s.prototype.preloadNeighboringImages=function(){this.album.length>this.currentImageIndex+1&&((new Image).src=this.album[this.currentImageIndex+1].link),this.currentImageIndex>0&&((new Image).src=this.album[this.currentImageIndex-1].link)},s.prototype.enableKeyboardNav=function(){e(document).on("keyup.keyboard",e.proxy(this.keyboardAction,this))},s.prototype.disableKeyboardNav=function(){e(document).off(".keyboard")},s.prototype.keyboardAction=function(e){var s=event.keyCode,n=String.fromCharCode(s).toLowerCase();27===s||n.match(/x|o|c/)?(b()&&t("#sby_lightbox video.sby_video")[0].pause(),t("#sby_lightbox iframe").attr("src",""),this.end()):"p"===n||37===s?(0!==this.currentImageIndex?this.changeImage(this.currentImageIndex-1):this.options.wrapAround&&this.album.length>1&&this.changeImage(this.album.length-1),b()&&t("#sby_lightbox video.sby_video")[0].pause(),t("#sby_lightbox iframe").attr("src","")):"n"!==n&&39!==s||(this.currentImageIndex!==this.album.length-1?this.changeImage(this.currentImageIndex+1):this.options.wrapAround&&this.album.length>1&&this.changeImage(0),i.pausePlayer())},s.prototype.end=function(){this.disableKeyboardNav(),e(window).off("resize",this.sizeOverlay),this.$lightbox.fadeOut(this.options.fadeDuration),this.$overlay.fadeOut(this.options.fadeDuration),e("select, object, embed").css({visibility:"visible"})},s}();e((function(){var e=new s;new n(e),t(".sby_lightbox_action a").off().on("click",(function(){t(this).parent().find(".sby_lightbox_tooltip").toggle()}))}))}.call(this),window.sbyOptions.lightboxCreated=!0},createFeeds:function(e){sbyOptions.isAdmin||void 0!==sbyOptions.lightboxCreated||window.sby.createLightbox(),e.whenFeedsCreated(t(".sb_youtube").each((function(e){t(this).attr("data-sby-index",e+1),t(this).find(".sby_player").replaceWith('<div id="sby_player'+e+'"></div>');var i=t(this),n=void 0!==i.attr("data-sby-flags")?i.attr("data-sby-flags").split(","):[],a=void 0!==i.attr("data-options")?JSON.parse(i.attr("data-options")):{};n.indexOf("testAjax")>-1&&(window.sby.triggeredTest=!0,O({action:"sby_on_ajax_test_trigger"},(function(t){console.log("did test")})));var o={cols:i.attr("data-cols"),colsmobile:"same"!==i.attr("data-colsmobile")?i.attr("data-colsmobile"):i.attr("data-cols"),num:i.attr("data-num"),imgRes:i.attr("data-res"),feedID:i.attr("data-feedid"),postID:void 0!==i.attr("data-postid")?i.attr("data-postid"):"unknown",shortCodeAtts:i.attr("data-shortcode-atts"),resizingEnabled:-1===n.indexOf("resizeDisable"),imageLoadEnabled:-1===n.indexOf("imageLoadDisable"),debugEnabled:n.indexOf("debug")>-1,favorLocal:n.indexOf("favorLocal")>-1,ajaxPostLoad:n.indexOf("ajaxPostLoad")>-1,checkWPPosts:n.indexOf("checkWPPosts")>-1,singleCheckPosts:n.indexOf("singleCheckPosts")>-1,narrowPlayer:n.indexOf("narrowPlayer")>-1,gdpr:n.indexOf("gdpr")>-1,consentGiven:-1===n.indexOf("gdpr"),noCDN:n.indexOf("disablecdn")>-1,allowCookies:n.indexOf("allowcookies")>-1,lightboxEnabled:void 0!==i.attr("data-sby-supports-lightbox"),locator:n.indexOf("locator")>-1,autoMinRes:1,general:a,subscribeBarEnabled:!0};window.sby.feeds[e]=function(t,e,i){return new s(t,e,i)}(this,e,o),void 0!==window.sbyAPIReady&&(window.sby.feeds[e].playerAPIReady=!0),window.sby.feeds[e].setResizedImages(),window.sby.feeds[e].init();var r=jQuery.Event("sbyafterfeedcreate");r.feed=window.sby.feeds[e],jQuery(window).trigger(r)})))},afterFeedsCreated:function(){if(t(".sb_youtube_header").each((function(){var e=t(this);e.find(".sby_header_link").on("mouseenter mouseleave",(function(t){switch(t.type){case"mouseenter":e.find(".sby_header_img_hover").addClass("sby_fade_in");break;case"mouseleave":e.find(".sby_header_img_hover").removeClass("sby_fade_in")}}))})),window.sbyAPIReady){var e=jQuery.Event("sbyfeedandytready");jQuery(window).trigger(e)}},encodeHTML:function(t){return void 0===t?"":t.replace(/(>)/g,"&gt;").replace(/(<)/g,"&lt;").replace(/(&lt;br\/&gt;)/g,"<br>").replace(/(&lt;br&gt;)/g,"<br>")},urlDetect:function(t){return t.match(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g)},ctaDetect:function(t){var e=t.match(/{Link:(.*)}/g),i=!1;if(null!==e){var s=window.sby.urlDetect(e[0]);if(null!==s){var n=s[0].trim();i={callback:"link",url:n,text:e[0].replace("{Link:","").replace("}","").replace(n,"").replace("  "," ").trim()}}else console.log("CTA found but no URL")}return i},shuffle:function(t){for(var e,i,s=t.length;0!==s;)i=Math.floor(Math.random()*s),e=t[s-=1],t[s]=t[i],t[i]=e;return t}},i.prototype={init:function(){var e=this;e.settings.consentGiven=e.checkConsent(),e.settings.consentGiven&&window.sby.maybeAddYTAPI(),e.settings.noCDN&&!e.settings.consentGiven&&(t(this.el).find(".sb_youtube_header").length?t(this.el).find(".sb_youtube_header").addClass("sby_no_consent"):t(this.el).prev(".sb_youtube_header").length&&t(this.el).prev(".sb_youtube_header").addClass("sby_no_consent")),t(this.el).find("#sby_mod_error").length&&t(this.el).prepend(t(this.el).find("#sby_mod_error")),this.settings.ajaxPostLoad?this.getNewPostSet():this.afterInitialImagesLoaded();var i,s=(i=0,function(t,e){clearTimeout(i),i=setTimeout(t,e)});jQuery(window).on("resize",(function(){s((function(){e.afterResize()}),1)}))},initLayout:function(){this.initGalleryLayout()},initGalleryLayout:function(){var e=t(this.el),i=this;e.hasClass("sby_layout_gallery")&&e.find(".sby_player_outer_wrap").length&&(this.maybeRaiseSingleImageResolution(e.find(".sby_player_outer_wrap"),0,!0),e.find(".sby_player_outer_wrap .sby_video_thumbnail").off().on("click",(function(e){!(!i.settings.lightboxEnabled||i.settings.lightboxEnabled&&i.settings.noCDN)||!i.settings.noCDN&&i.settings.consentGiven?(e.preventDefault(),i.onThumbnailClick(t(this),!0)):t(this).closest(".sby_item").length&&void 0!==t(this).closest(".sby_item").attr("data-video-id")&&t(this).attr("href","https://www.youtube.com/watch?v="+t(this).closest(".sby_item").attr("data-video-id"))})),e.find(".sby_item").first().addClass("sby_current"),e.on("mouseenter",(function(){i.canCreatePlayer()&&(e.find(".sby_player_outer_wrap iframe").length?void 0===i.player&&i.playerEagerLoaded()&&i.createPlayer("sby_player"+i.index):(e.addClass("sby_player_added").find(".sby_player_outer_wrap").addClass("sby_player_loading"),e.find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").show().removeClass("sby_hidden"),i.createPlayer("sby_player"+i.index)))})),window.sbySemiEagerLoading&&i.createPlayer("sby_player"+i.index),i.settings.noCDN&&e.find(".sby_player_outer_wrap").append('<div class="sby_play_btn">\n                        <span class="sby_play_btn_bg"></span>\n                    <svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="youtube" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="svg-inline--fa fa-youtube fa-w-18"><path fill="currentColor" d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z" class=""></path></svg>                    </div>'))},createPlayer:function(e,i,s,n){var a=t(this.el),o=this;if(i=void 0!==i?i:this.getVideoID(a.find(".sby_item").first()),s=void 0!==s?s:0,void 0===sbyOptions.isCustomizer||!sbyOptions.isCustomizer){if(void 0===n&&(n={host:window.location.protocol+o.embedURL,videoId:i,playerVars:{modestbranding:1,rel:0,autoplay:s}}),void 0===n.events&&(n.events={onReady:function(){a.find(".sby_player_outer_wrap").removeClass("sby_player_loading").find(".sby_video_thumbnail").css("z-index",-1).find(".sby_loader").hide().addClass("sby_hidden"),t("#"+e).length&&t("#"+e).closest(".sby_video_thumbnail_wrap").find(".sby_video_thumbnail").length&&t("#"+e).closest(".sby_video_thumbnail_wrap").find(".sby_video_thumbnail").fadeTo(0,"slow",(function(){t(this).css("z-index",-1),t(this).find(".sby_loader").hide().addClass("sby_hidden"),t(this).closest(".sby_item").removeClass("sby_player_loading")}));var i=jQuery.Event("sbyafterplayerready");i.feed=o,i.player=this,jQuery(window).trigger(i)},onStateChange:function(s){if(a.find(".sby_player_outer_wrap").removeClass("sby_player_loading").find(".sby_video_thumbnail").css("z-index",-1).find(".sby_loader").hide().addClass("sby_hidden"),o.afterStateChange(e,i,s,t("#"+e).closest(".sby_video_thumbnail_wrap")),1===s.data){var n;if(o.el){var r,l=o.el.getAttribute("data-shortcode-atts");l&&(n=null===(r=JSON.parse(l))||void 0===r?void 0:r.feed)}document.dispatchEvent(new CustomEvent("sby-video-interaction",{detail:{videoID:i,feedID:n}})),void 0!==o.players&&a.find(".sby_item").each((function(){var e=o.getVideoID(t(this));t(this).find("iframe").length&&e!==i&&void 0!==o.players[e]&&"function"==typeof o.players[e].pauseVideo&&o.players[e].pauseVideo()}))}}}),window.sbyEagerLoading)var r=YT.get(e);else r=new window.YT.Player(e,n);this.maybeAddCTA(e),a.hasClass("sby_layout_list")&&void 0===this.players[i]?this.players[i]=r:void 0===this.player&&(this.player=r);var l=jQuery.Event("sbyafterplayercreated");return l.feed=this,jQuery(window).trigger(l),a.find(".sby_player_outer_wrap .sby_play_btn").remove(),r}},afterStateChange:function(t,e,i,s){},afterInitialImagesLoaded:function(){this.initLayout(),this.loadMoreButtonInit(),this.hideExtraItemsForWidth(),this.beforeNewImagesRevealed(),this.revealNewImages(),this.afterNewImagesRevealed(),this.afterFeedSet(),this.sizePlayer(),this.sizeItems(),this.settings.consentGiven?this.applyFullFeatures():this.removeFeatures()},afterResize:function(){this.setImageHeight(),this.setImageResolution(),this.maybeRaiseImageResolution(),this.setImageSizeClass()},afterLoadMoreClicked:function(t){t.find(".sby_loader").removeClass("sby_hidden"),t.find(".sby_btn_text").addClass("sby_hidden"),t.closest(".sb_youtube").find(".sby_num_diff_hide").addClass("sby_transition").removeClass("sby_num_diff_hide")},afterNewImagesLoaded:function(){var e=t(this.el),i=this;this.beforeNewImagesRevealed(),this.revealNewImages(),this.afterNewImagesRevealed(),this.sizePlayer(),this.sizeItems(),setTimeout((function(){e.find(".sby_loader").addClass("sby_hidden"),e.find(".sby_btn_text").removeClass("sby_hidden"),i.maybeRaiseImageResolution()}),1),this.settings.consentGiven?this.applyFullFeatures():this.removeFeatures()},beforeNewImagesRevealed:function(){this.setImageHeight(),this.maybeRaiseImageResolution(!0),this.setImageSizeClass()},afterFeedSet:function(){},sizePlayer:function(){var e=t(this.el),i=this;if(e.hasClass("sby_layout_gallery")){$playerThumbnail=e.find(".sby_player_item").find(".sby_player_video_thumbnail");var s=$playerThumbnail.innerWidth(),n=Math.floor(9*s/16);i.settings.narrowPlayer&&(n=Math.floor(3*s/4)),$playerThumbnail.css("height",n+"px").css("overflow","hidden")}else e.hasClass("sby_layout_list")&&e.find(".sby_item").each((function(){$playerThumbnail=t(this).find(".sby_item_video_thumbnail");var e=$playerThumbnail.innerWidth(),s=Math.floor(9*e/16);i.settings.narrowPlayer&&(s=Math.floor(3*e/4)),$playerThumbnail.css("height",s+"px").css("overflow","hidden")}))},sizeItems:function(){var e=t(this.el);e.hasClass("sby_layout_list")||e.find(".sby_item").find(".sby_item_video_thumbnail").each((function(){if(t(this).hasClass("sby_imgLiquid_ready")){var e=t(this).innerWidth(),i=Math.floor(9*e/16);t(this).css("height",i+"px").css("overflow","hidden")}}))},revealNewImages:function(){var e=t(this.el),i=this;this.applyImageLiquid(),"function"==typeof sbyCustomJS&&setTimeout((function(){sbyCustomJS()}),100),e.find(".sby-screenreader").find("img").remove(),e.find(".sby_item.sby_new").each((function(e){var s=jQuery(this);videoID=s.attr("data-video-id"),window.sbyEagerLoading&&i.canCreatePlayer()&&t("#sby_player_"+videoID).length&&(player=new YT.Player("sby_player_"+videoID,{height:"100",width:"100",videoId:videoID,playerVars:{modestbranding:1,rel:0,autoplay:0},events:{onStateChange:function(t){var e=t.target.getVideoData().video_id;1===t.data&&(document.dispatchEvent(videoInteractionEvent,{videoID:e}),s.find(".sby_item").each((function(){var e=jQuery(this).attr("data-video-id");jQuery(this).find("iframe").length&&jQuery(t.target.a).attr("id")!==jQuery(this).find("iframe").attr("id")&&YT.get("sby_player_"+e).pauseVideo()})))}}})),s.find(".sby_video_thumbnail").on("mouseenter",(function(){i.onThumbnailEnter(t(this),!1)})),s.find(".sby_player_wrap").on("mouseleave",(function(){i.onThumbnailLeave(t(this),!1)})),s.find(".sby_video_thumbnail").on("click",(function(e){!(!i.settings.lightboxEnabled||i.settings.lightboxEnabled&&i.settings.noCDN)||!i.settings.noCDN&&i.settings.consentGiven?(e.preventDefault(),i.onThumbnailClick(t(this),!1)):t(this).closest(".sby_item").length&&void 0!==t(this).closest(".sby_item").attr("data-video-id")&&t(this).attr("href","https://www.youtube.com/watch?v="+t(this).closest(".sby_item").attr("data-video-id"))})),i.settings.lightboxEnabled&&(s.find(".sby_video_thumbnail").attr("data-sby-lightbox",i.index),"undefined"!=typeof sbyOptions&&void 0!==sbyOptions.lightboxPlaceholder&&(i.settings.narrowPlayer?s.find(".sby_video_thumbnail").attr("href",sbyOptions.lightboxPlaceholderNarrow):s.find(".sby_video_thumbnail").attr("href",sbyOptions.lightboxPlaceholder))),i.afterItemRevealed(s),""===s.find(".sby_info_item").text().trim()&&s.find(".sby_info_item").addClass("sby_no_space")})),e.find(".sby_player_item").each((function(t){var e=jQuery(this);i.afterItemRevealed(e)})),setTimeout((function(){e.find(".sby_item.sby_new").removeClass("sby_new"),e.find(".sby_transition").length,e.find(".sby_transition").each((function(t){var e=jQuery(this);setTimeout((function(){e.removeClass("sby_transition")}),1)}))}),1)},afterItemRevealed:function(){},afterNewImagesRevealed:function(){this.listenForVisibilityChange(),this.sendNeedsResizingToServer(),this.sendCheckWPPostsToServer(),this.settings.imageLoadEnabled||t(".sby_no_resraise").removeClass("sby_no_resraise");var e=t.Event("sbyafterimagesloaded");e.el=t(this.el),t(window).trigger(e)},setResizedImages:function(){t(this.el).find(".sby_resized_image_data").length&&void 0!==t(this.el).find(".sby_resized_image_data").attr("data-resized")&&0===t(this.el).find(".sby_resized_image_data").attr("data-resized").indexOf('{"')&&(this.resizedImages=JSON.parse(t(this.el).find(".sby_resized_image_data").attr("data-resized")),t(this.el).find(".sby_resized_image_data").remove())},sendNeedsResizingToServer:function(){var e=this;if(e.needsResizing.length>0&&e.settings.resizingEnabled){var i=t(this.el).find(".sby_item").length;O({action:"sby_resized_images_submit",needs_resizing:e.needsResizing,offset:i,feed_id:e.settings.feedID,location:e.locationGuess(),post_id:e.settings.postID,atts:e.settings.shortCodeAtts},(function(t){if(0===t.trim().indexOf("{")){var i=JSON.parse(t);e.settings.debugEnabled&&console.log(i)}}))}},sendCheckWPPostsToServer:function(){var e=this;if(e.settings.checkWPPosts||e.settings.singleCheckPosts){var i=void 0!==e.settings.feedID?e.settings.feedID:"sby_single",s=e.mostRecentlyLoadedPosts;e.mostRecentlyLoadedPosts=[],O({action:"sby_check_wp_submit",feed_id:i,atts:e.settings.shortCodeAtts,location:e.locationGuess(),post_id:e.settings.postID,offset:t(this.el).hasClass("sby_layout_carousel")?Math.floor(t(this.el).find(".sby_item").length/2-1):t(this.el).find(".sby_item").length,posts:s},(function(t){if(0===t.trim().indexOf("{")){var i=JSON.parse(t);e.settings.debugEnabled&&console.log(i),e.afterSendCheckWPPostsToServer(i)}}))}},afterSendCheckWPPostsToServer:function(t){},loadMoreButtonInit:function(){var e=t(this.el),i=this;e.find(".sby_footer .sby_load_btn").off().on("click",(function(){i.afterLoadMoreClicked(jQuery(this)),i.getNewPostSet()}))},getNewPostSet:function(){var e=t(this.el),i=this;O({action:"sby_load_more_clicked",offset:e.find(".sby_item").length,feed_id:i.settings.feedID,atts:i.settings.shortCodeAtts,location:i.locationGuess(),post_id:i.settings.postID,current_resolution:i.imageResolution},(function(s){if(0===s.trim().indexOf("{")){var n=JSON.parse(s),a=void 0!==n.feedStatus.checkWPPosts&&n.feedStatus.checkWPPosts;i.settings.debugEnabled&&console.log(n),i.settings.checkWPPosts=!!a,i.appendNewPosts(n.html),i.addResizedImages(n.resizedImages),i.settings.ajaxPostLoad?(i.settings.ajaxPostLoad=!1,i.afterInitialImagesLoaded()):i.afterNewImagesLoaded(),n.feedStatus.shouldPaginate?i.outOfPages=!1:(i.outOfPages=!0,e.find(".sby_load_btn").hide()),t(".sby_no_js").removeClass("sby_no_js"),$()}}))},appendNewPosts:function(e){var i=t(this.el);i.find(".sby_items_wrap .sby_item").length?i.find(".sby_items_wrap .sby_item").last().after(e):i.find(".sby_items_wrap").append(e)},addResizedImages:function(t){for(var e in t)this.resizedImages[e]=t[e]},setImageHeight:function(){},maybeRaiseSingleImageResolution:function(e,i,s){var n=this,a=n.getImageUrls(e),o=e.find(".sby_video_thumbnail > img").attr("src"),r=150;if(s=void 0!==s&&s,!(e.hasClass("sby_no_resraise")||!n.settings.consentGiven&&n.settings.noCDN)){t.each(a,(function(t,e){e===o&&(r=parseInt(t),s=!1)}));var l=640;switch(n.settings.imgRes){case"thumb":l=120;break;case"medium":l=320;break;case"large":l=480;break;case"full":l=640;break;default:var d=Math.max(n.settings.autoMinRes,e.find(".sby_video_thumbnail").innerWidth());switch(n.getBestResolutionForAuto(d,1,t(this.el).find("sby_item").first())){case 480:l=480;break;case 320:l=320;break;case 120:l=120}}if(l>r||o===n.placeholderURL||s){if(n.settings.debugEnabled){var h=o===n.placeholderURL?"was placeholder":"too small";console.log("rais res for "+o,h)}var c=a[l];e.find(".sby_video_thumbnail > img").attr("src",c),e.find(".sby_video_thumbnail").hasClass("sby_imgLiquid_ready")&&e.find(".sby_video_thumbnail").css("background-image",'url("'+c+'")')}e.find("img").on("error",(function(){if(t(this).hasClass("sby_img_error"))console.log("unfixed error "+t(this).attr("src"));else{if(t(this).addClass("sby_img_error"),t(this).attr("src").indexOf("i.ytimg.com")>-1){n.settings.favorLocal=!0;var e=n.getImageUrls(t(this).closest(".sby_item"));void 0!==e[640]&&(t(this).attr("src",e[640]),t(this).closest(".sby_video_thumbnail").css("background-image","url("+e[640]+")"))}else void 0!==t(this).closest(".sby_video_thumbnail").attr("data-full-res")?(t(this).attr("src",t(this).closest(".sby_video_thumbnail").attr("data-full-res")),t(this).closest(".sby_video_thumbnail").css("background-image","url("+t(this).closest(".sby_video_thumbnail").attr("data-full-res")+")")):"undefined"!==t(this).closest(".sby_video_thumbnail").attr("href")&&(t(this).attr("src",t(this).closest(".sby_video_thumbnail").attr("href")+"media?size=l"),t(this).closest(".sby_video_thumbnail").css("background-image","url("+t(this).closest(".sby_video_thumbnail").attr("href")+"media?size=l)"));setTimeout((function(){n.afterResize()}),1)}}))}},maybeRaiseImageResolution:function(e){var i=this,s=void 0!==e&&!0===e?".sby_item.sby_new":".sby_item",n=!i.isInitialized;t(i.el).find(s).each((function(e){!t(this).hasClass("sby_num_diff_hide")&&t(this).find(".sby_video_thumbnail").length&&void 0!==t(this).find(".sby_video_thumbnail").attr("data-img-src-set")&&i.maybeRaiseSingleImageResolution(t(this),e,n)})),i.isInitialized=!0},getBestResolutionForAuto:function(e,i,s){(isNaN(i)||i<1)&&(i=1);var n=e*i,a=10*Math.ceil(n/10),o=[120,320,480,640];if(s.hasClass("sby_highlighted")&&(a*=2),-1===o.indexOf(parseInt(a))){var r=!1;t.each(o,(function(t,e){e>parseInt(a)&&!r&&(a=e,r=!0)}))}return a},hideExtraItemsForWidth:function(){if("carousel"!==this.layout){var e=t(this.el),i=void 0!==e.attr("data-num")&&""!==e.attr("data-num")?parseInt(e.attr("data-num")):1,s=void 0!==e.attr("data-nummobile")&&""!==e.attr("data-nummobile")?parseInt(e.attr("data-nummobile")):i;e.hasClass(".sby_layout_carousel")||(t(window).width()<480?s<e.find(".sby_item").length&&e.find(".sby_item").slice(s-e.find(".sby_item").length).addClass("sby_num_diff_hide"):i<e.find(".sby_item").length&&e.find(".sby_item").slice(i-e.find(".sby_item").length).addClass("sby_num_diff_hide"))}},setImageSizeClass:function(){var e=t(this.el);e.removeClass("sby_small sby_medium");var i=e.innerWidth(),s=parseInt(e.find(".sby_items_wrap").outerWidth()-e.find(".sby_items_wrap").width())/2,n=this.getColumnCount(),a=(i-s*(n+2))/n;a>140&&a<240?e.addClass("sby_medium"):a<=140&&e.addClass("sby_small")},setMinImageWidth:function(){t(this.el).find(".sby_item .sby_video_thumbnail").first().length?this.minImageWidth=t(this.el).find(".sby_item .sby_video_thumbnail").first().innerWidth():this.minImageWidth=150},setImageResolution:function(){if("auto"===this.settings.imgRes)this.imageResolution="auto";else switch(this.settings.imgRes){case"thumb":this.imageResolution=150;break;case"medium":this.imageResolution=320;break;default:this.imageResolution=640}},getImageUrls:function(t){var e=JSON.parse(t.find(".sby_video_thumbnail").attr("data-img-src-set").replace(/\\\//g,"/")),i=t.attr("id").replace("sby_","").replace("player_","");if(void 0!==this.resizedImages[i]&&"video"!==this.resizedImages[i]&&"pending"!==this.resizedImages[i]&&"error"!==this.resizedImages[i].id&&"video"!==this.resizedImages[i].id&&"pending"!==this.resizedImages[i].id){if(void 0!==this.resizedImages[i].sizes){var s=[];void 0!==this.resizedImages[i].sizes.full&&(s.push(640),e[640]=sbyOptions.resized_url+this.resizedImages[i].id+"full.jpg",t.find(".sby_link_area").attr("href",sbyOptions.resized_url+this.resizedImages[i].id+"full.jpg"),t.find(".sby_video_thumbnail").attr("data-full-res",sbyOptions.resized_url+this.resizedImages[i].id+"full.jpg")),void 0!==this.resizedImages[i].sizes.low&&(s.push(320),e[320]=sbyOptions.resized_url+this.resizedImages[i].id+"low.jpg",this.settings.favorLocal&&void 0===this.resizedImages[i].sizes.full&&(t.find(".sby_link_area").attr("href",sbyOptions.resized_url+this.resizedImages[i].id+"low.jpg"),t.find(".sby_video_thumbnail").attr("data-full-res",sbyOptions.resized_url+this.resizedImages[i].id+"low.jpg"))),void 0!==this.resizedImages[i].sizes.thumb&&(s.push(150),e[150]=sbyOptions.resized_url+this.resizedImages[i].id+"thumb.jpg"),this.settings.favorLocal&&(-1===s.indexOf(640)&&s.indexOf(320)>-1&&(e[640]=sbyOptions.resized_url+this.resizedImages[i].id+"low.jpg"),-1===s.indexOf(320)&&(s.indexOf(640)>-1?e[320]=sbyOptions.resized_url+this.resizedImages[i].id+"full.jpg":s.indexOf(150)>-1&&(e[320]=sbyOptions.resized_url+this.resizedImages[i].id+"thumb.jpg")),-1===s.indexOf(150)&&(s.indexOf(320)>-1?e[150]=sbyOptions.resized_url+this.resizedImages[i].id+"low.jpg":s.indexOf(640)>-1&&(e[150]=sbyOptions.resized_url+this.resizedImages[i].id+"full.jpg")))}}else(void 0===this.resizedImages[i]||void 0!==this.resizedImages[i].id&&"pending"!==this.resizedImages[i].id&&"error"!==this.resizedImages[i].id)&&this.addToNeedsResizing(i);return e},getVideoID:function(e){if(e.hasClass("sby_item")||e.hasClass("sby_player_item")){if(void 0!==e.find(".sby_video_thumbnail").attr("data-video-id"))return e.find(".sby_video_thumbnail").attr("data-video-id")}else if(e.closest("sby_item").length||e.closest("sby_player_item").length){var i=e.closest("sby_item").length?e.closest("sby_item"):e.closest("sby_player_item");if(void 0!==i.find(".sby_video_thumbnail").attr("data-video-id"))return i.find(".sby_video_thumbnail").attr("data-video-id")}else{if(e.hasClass("sb_youtube"))return e.find(".sby_item").first().find(".sby_video_thumbnail").attr("data-video-id");if(t(this.el).find(".sby_video_thumbnail").first().length&&void 0!==t(this.el).find(".sby_video_thumbnail").first().attr("data-video-id"))return t(this.el).find(".sby_video_thumbnail").first().attr("data-video-id")}return""},getAvatarUrl:function(t,e){if(""===t)return"";var i=this.settings.general.avatars;return"local"===(e=void 0!==e?e:"local")?void 0!==i["LCL"+t]&&1===parseInt(i["LCL"+t])?sbyOptions.resized_url+t+".jpg":void 0!==i[t]?i[t]:"":void 0!==i[t]?i[t]:void 0!==i["LCL"+t]&&1===parseInt(i["LCL"+t])?sbyOptions.resized_url+t+".jpg":""},addToNeedsResizing:function(t){-1===this.needsResizing.indexOf(t)&&this.needsResizing.push(t)},applyImageLiquid:function(){var e=t(this.el);(function(){var t,e,i,s,n=n||{VER:"0.9.944"};n.bgs_Available=!1,n.bgs_CheckRunned=!1,(t=jQuery).fn.extend({sby_imgLiquid:function(e){this.defaults={fill:!0,verticalAlign:"center",horizontalAlign:"center",useBackgroundSize:!0,useDataHtmlAttr:!0,responsive:!0,delay:0,fadeInTime:0,removeBoxBackground:!0,hardPixels:!0,responsiveCheckTime:500,timecheckvisibility:500,onStart:null,onFinish:null,onItemStart:null,onItemFinish:null,onItemError:null},function(){if(!n.bgs_CheckRunned){n.bgs_CheckRunned=!0;var e=t('<span style="background-size:cover" />');t("body").append(e),function(){var t=e[0];if(t&&window.getComputedStyle){var i=window.getComputedStyle(t,null);i&&i.backgroundSize&&(n.bgs_Available="cover"===i.backgroundSize)}}(),e.remove()}}();var i=this;return this.options=e,this.settings=t.extend({},this.defaults,this.options),this.settings.onStart&&this.settings.onStart(),this.each((function(e){function s(){(l.responsive||h.data("sby_imgLiquid_oldProcessed"))&&h.data("sby_imgLiquid_settings")&&(l=h.data("sby_imgLiquid_settings"),d.actualSize=d.get(0).offsetWidth+d.get(0).offsetHeight/1e4,d.sizeOld&&d.actualSize!==d.sizeOld&&o(),d.sizeOld=d.actualSize,setTimeout(s,l.responsiveCheckTime))}function a(){h.data("sby_imgLiquid_error",!0),d.addClass("sby_imgLiquid_error"),l.onItemError&&l.onItemError(e,d,h),r()}function o(){var t,i,s,n,a,o,c,u,g=0,p=0,y=d.width(),f=d.height();void 0===h.data("owidth")&&h.data("owidth",h[0].width),void 0===h.data("oheight")&&h.data("oheight",h[0].height),l.fill===y/f>=h.data("owidth")/h.data("oheight")?(t="100%",i="auto",s=Math.floor(y),n=Math.floor(y*(h.data("oheight")/h.data("owidth")))):(t="auto",i="100%",s=Math.floor(f*(h.data("owidth")/h.data("oheight"))),n=Math.floor(f)),c=y-s,"left"===(a=l.horizontalAlign.toLowerCase())&&(p=0),"center"===a&&(p=.5*c),"right"===a&&(p=c),-1!==a.indexOf("%")&&(a=parseInt(a.replace("%",""),10))>0&&(p=c*a*.01),u=f-n,"left"===(o=l.verticalAlign.toLowerCase())&&(g=0),"center"===o&&(g=.5*u),"bottom"===o&&(g=u),-1!==o.indexOf("%")&&(o=parseInt(o.replace("%",""),10))>0&&(g=u*o*.01),l.hardPixels&&(t=s,i=n),h.css({width:t,height:i,"margin-left":Math.floor(p),"margin-top":Math.floor(g)}),h.data("sby_imgLiquid_oldProcessed")||(h.fadeTo(l.fadeInTime,1),h.data("sby_imgLiquid_oldProcessed",!0),l.removeBoxBackground&&d.css("background-image","none"),d.addClass("sby_imgLiquid_nobgSize"),d.addClass("sby_imgLiquid_ready")),l.onItemFinish&&l.onItemFinish(e,d,h),r()}function r(){e===i.length-1&&i.settings.onFinish&&i.settings.onFinish()}var l=i.settings,d=t(this),h=t("img:first",d);return h.length?(h.data("sby_imgLiquid_settings")?(d.removeClass("sby_imgLiquid_error").removeClass("sby_imgLiquid_ready"),l=t.extend({},h.data("sby_imgLiquid_settings"),i.options)):l=t.extend({},i.settings,function(){var t={};if(i.settings.useDataHtmlAttr){var e=d.attr("data-sby_imgLiquid-fill"),s=d.attr("data-sby_imgLiquid-horizontalAlign"),a=d.attr("data-sby_imgLiquid-verticalAlign");("true"===e||"false"===e)&&(t.fill=Boolean("true"===e)),void 0===s||"left"!==s&&"center"!==s&&"right"!==s&&-1===s.indexOf("%")||(t.horizontalAlign=s),void 0===a||"top"!==a&&"bottom"!==a&&"center"!==a&&-1===a.indexOf("%")||(t.verticalAlign=a)}return n.isIE&&i.settings.ieFadeInDisabled&&(t.fadeInTime=0),t}()),h.data("sby_imgLiquid_settings",l),l.onItemStart&&l.onItemStart(e,d,h),void(n.bgs_Available&&l.useBackgroundSize?(-1===d.css("background-image").indexOf(encodeURI(h.attr("src")))&&d.css({"background-image":'url("'+encodeURI(h.attr("src"))+'")'}),d.css({"background-size":l.fill?"cover":"contain","background-position":(l.horizontalAlign+" "+l.verticalAlign).toLowerCase(),"background-repeat":"no-repeat"}),t("a:first",d).css({display:"block",width:"100%",height:"100%"}),t("img",d).css({display:"none"}),l.onItemFinish&&l.onItemFinish(e,d,h),d.addClass("sby_imgLiquid_bgSize"),d.addClass("sby_imgLiquid_ready"),r()):function i(){if(h.data("oldSrc")&&h.data("oldSrc")!==h.attr("src")){var n=h.clone().removeAttr("style");return n.data("sby_imgLiquid_settings",h.data("sby_imgLiquid_settings")),h.parent().prepend(n),h.remove(),(h=n)[0].width=0,void setTimeout(i,10)}return h.data("sby_imgLiquid_oldProcessed")?void o():(h.data("sby_imgLiquid_oldProcessed",!1),h.data("oldSrc",h.attr("src")),t("img:not(:first)",d).css("display","none"),d.css({overflow:"hidden"}),h.fadeTo(0,0).removeAttr("width").removeAttr("height").css({visibility:"visible","max-width":"none","max-height":"none",width:"auto",height:"auto",display:"block"}),h.on("error",a),h[0].onerror=a,function t(){h.data("sby_imgLiquid_error")||h.data("sby_imgLiquid_loaded")||h.data("sby_imgLiquid_oldProcessed")||(d.is(":visible")&&h[0].complete&&h[0].width>0&&h[0].height>0?(h.data("sby_imgLiquid_loaded",!0),setTimeout(o,e*l.delay)):setTimeout(t,l.timecheckvisibility))}(),void s())}())):void a()}))}}),e=n.injectCss,i=document.getElementsByTagName("head")[0],(s=document.createElement("style")).type="text/css",s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e)),i.appendChild(s)})(),"function"==typeof e.find(".sby_player_item").sby_imgLiquid&&(e.find(".sby_player_item").length&&e.find(".sby_player_item .sby_player_video_thumbnail").sby_imgLiquid({fill:!0}),e.find(".sby_item .sby_item_video_thumbnail").sby_imgLiquid({fill:!0}))},listenForVisibilityChange:function(){var e=this;!function(t){var e={callback:function(){},runOnLoad:!0,frequency:100,sbyPreviousVisibility:null},i={sbyCheckVisibility:function(t,e){if(jQuery.contains(document,t[0])){var s=e.sbyPreviousVisibility,n=t.is(":visible");e.sbyPreviousVisibility=n,null==s?e.runOnLoad&&e.callback(t,n):s!==n&&e.callback(t,n),setTimeout((function(){i.sbyCheckVisibility(t,e)}),e.frequency)}}};t.fn.sbyVisibilityChanged=function(s){var n=t.extend({},e,s);return this.each((function(){i.sbyCheckVisibility(t(this),n)}))}}(jQuery),"function"==typeof t(this.el).filter(":hidden").sbyVisibilityChanged&&t(this.el).filter(":hidden").sbyVisibilityChanged({callback:function(t,i){e.afterResize()},runOnLoad:!1})},getColumnCount:function(){var e=t(this.el),i=this.settings.cols,s=this.settings.colsmobile,n=i;return sbyWindowWidth=window.innerWidth,e.hasClass("sby_mob_col_auto")?(sbyWindowWidth<640&&parseInt(i)>2&&parseInt(i)<7&&(n=2),sbyWindowWidth<640&&parseInt(i)>6&&parseInt(i)<11&&(n=4),sbyWindowWidth<=480&&parseInt(i)>2&&(n=1)):sbyWindowWidth<=480&&(n=s),parseInt(n)},onThumbnailClick:function(e,i,s){if(this.canCreatePlayer()){var n=t(this.el);if(n.hasClass("sby_layout_gallery")){if(n.find(".sby_current").removeClass("sby_current"),e.closest(".sby_item").addClass("sby_current"),e.closest(".sby_item").addClass("sby_current"),n.addClass("sby_player_added").find(".sby_player_outer_wrap").addClass("sby_player_loading"),n.find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").show().removeClass("sby_hidden"),n.find(".sby_player_outer_wrap iframe").length)i?(s=void 0===s?this.getVideoID(n.find(".sby_item").first()):s,this.playVideoInPlayer(s)):(s=void 0===s?this.getVideoID(e.closest(".sby_item")):s,this.changePlayerInfo(e.closest(".sby_item")),this.playVideoInPlayer(s),this.afterVideoChanged());else if(i)this.createPlayer("sby_player"+this.index);else{s=void 0===s?this.getVideoID(e.closest(".sby_item")):s;this.createPlayer("sby_player"+this.index,s)}this.updateGalleryPlayerSubscribeBtn(e)}else if(t(this.el).hasClass("sby_layout_grid")||t(this.el).hasClass("sby_layout_carousel")){var a=e.closest(".sby_item");s=void 0===s?this.getVideoID(a):s,this.playVideoInPlayer(s),this.afterVideoChanged()}else t(this.el).hasClass("sby_layout_list")&&(a=e.closest(".sby_item"),s=void 0===s?this.getVideoID(a):s,a.length&&!a.find("iframe").length?(a.find(".sby_loader").show().removeClass("sby_hidden"),a.addClass("sby_player_loading sby_player_loaded"),this.createPlayer("sby_player_"+s,s)):(this.playVideoInPlayer(s,a.attr("data-video-id")),this.afterVideoChanged()))}},onThumbnailEnter:function(e){if(this.canCreatePlayer()&&t(this.el).hasClass("sby_layout_list")){var i=e.closest(".sby_item"),s=this.getVideoID(i);i.find("iframe").length||(i.find(".sby_loader").show().removeClass("sby_hidden"),i.addClass("sby_player_loading sby_player_loaded"),this.createPlayer("sby_player_"+s,s,0))}},onThumbnailLeave:function(t){},changePlayerInfo:function(t){},playerEagerLoaded:function(){if(void 0!==this.player||t(this.el).hasClass("sby_player_loaded"))return!0},canCreatePlayer:function(){if(t(this.el).find("#sby_blank").length)return!1;var e=this.settings.consentGiven,i=window.sby.feeds[this.index].playerAPIReady&&e;return this.playerEagerLoaded()||this.playerAPIReady&&e||window.sbyAPIReady&&e||i},playVideoInPlayer:function(t,e){void 0!==this.player&&void 0!==this.player.loadVideoById?this.player.loadVideoById(t):void 0!==window.sbyLightboxPlayer&&void 0!==window.sbyLightboxPlayer.loadVideoById?window.sbyLightboxPlayer.loadVideoById(t):void 0!==e&&void 0!==this.players&&void 0!==this.players[e]&&void 0!==this.players[e].loadVideoById&&this.players[e].loadVideoById(t)},afterVideoChanged:function(){t(this.el).hasClass("sby_layout_gallery")&&(t(this.el).find(".sby_player_outer_wrap").removeClass("sby_player_loading"),t(this.el).find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").hide().addClass("sby_hidden"),t("html, body").animate({scrollTop:t(this.el).find(".sby_player_outer_wrap").offset().top},300))},updateGalleryPlayerSubscribeBtn:function(e){var i=e.attr("href").match(/channel\/(.*)$/);if(i){var s="http://www.youtube.com/channel/"+i[1]+"?sub_confirmation=1&feature=subscribe-embed-click";t(".sby-channel-subscribe-btn a").attr("href",s)}},checkConsent:function(){if(this.settings.consentGiven||!this.settings.gdpr)return this.settings.noCDN=!1,!0;if("undefined"!=typeof CLI_Cookie)null!==CLI_Cookie.read(CLI_ACCEPT_COOKIE_NAME)&&("null"!==CLI_Cookie.read("cookielawinfo-checkbox-non-necessary")&&(this.settings.consentGiven="yes"===CLI_Cookie.read("cookielawinfo-checkbox-non-necessary")),"null"!==CLI_Cookie.read("cookielawinfo-checkbox-necessary")&&(this.settings.consentGiven="yes"===CLI_Cookie.read("cookielawinfo-checkbox-necessary")));else if(void 0!==window.cnArgs){var t=("; "+document.cookie).split("; cookie_notice_accepted=");if(2===t.length){var e=t.pop().split(";").shift();this.settings.consentGiven="true"===e}}else void 0!==window.complianz?this.settings.consentGiven="allow"===function(t){for(var e="cmplz_marketing=",i=window.document.cookie.split(";"),s=0;s<i.length;s++){var n=i[s].trim();if(0==n.indexOf(e))return n.substring(16,n.length)}return""}()||jQuery("body").hasClass("cmplz-status-marketing"):void 0!==window.Cookiebot?this.settings.consentGiven=Cookiebot.consented:void 0!==window.BorlabsCookie&&(this.settings.consentGiven=void 0!==window.BorlabsCookie.Consents?window.BorlabsCookie.Consents.hasConsent("youtube"):window.BorlabsCookie.checkCookieConsent("youtube"));var i=jQuery.Event("sbycheckconsent");return i.feed=this,jQuery(window).trigger(i),this.settings.consentGiven&&(this.settings.noCDN=!1),this.settings.consentGiven},afterConsentToggled:function(){if(this.checkConsent()){var t=this;window.sby.maybeAddYTAPI(),t.maybeRaiseImageResolution(),t.applyFullFeatures(),setTimeout((function(){t.afterResize()}),500)}},removeFeatures:function(){this.settings.noCDN&&t(this.el).find(".sby_video_thumbnail").each((function(){t(this).removeAttr("data-sby-lightbox")}))},applyFullFeatures:function(){var e=this;t(e.el).find(".sby_header_img img").attr("src",t(e.el).find(".sby_header_img").attr("data-avatar-url")),void 0===t(e.el).find(".sby_video_thumbnail").first().attr("data-sby-lightbox")&&e.settings.lightboxEnabled&&t(e.el).find(".sby_video_thumbnail").each((function(){t(this).attr("data-sby-lightbox",e.index)}));var i=t(e.el);if(i.find(".sby_no_consent").removeClass("sby_no_consent"),i.hasClass("sby_layout_gallery")&&i.find(".sby_player_outer_wrap").length){if(this.maybeRaiseSingleImageResolution(i.find(".sby_player_outer_wrap"),0,!0),i.find(".sby_item").first().addClass("sby_current"),!e.canCreatePlayer())return;i.find(".sby_player_outer_wrap iframe").length||e.createPlayer("sby_player"+e.index)}},locationGuess:function(){var e=t(this.el),i="content";return e.closest("footer").length?i="footer":e.closest(".header").length||e.closest("header").length?i="header":(e.closest(".sidebar").length||e.closest("aside").length)&&(i="sidebar"),i}},s.prototype=Object.create(i.prototype),n.prototype={getData:function(t){return{feedIndex:parseInt(t.closest(".sb_youtube").attr("data-sby-index")-1),link:t.attr("href"),videoTitle:void 0!==t.attr("data-video-title")?f(t.attr("data-video-title")):"YouTube Video",video:t.attr("data-video-id"),channelID:t.attr("data-channel-id")}},template:function(){return"<div id='sby_lightboxOverlay' class='sby_lightboxOverlay'></div><div id='sby_lightbox' class='sby_lightbox'><div class='sby_lb-outerContainer'><div class='sby_lb-container'><img class='sby_lb-image' alt='Lightbox image placeholder' src='' /><div class='sby_lb-player sby_lb-player-placeholder' id='sby_lb-player'></div><div class='sby_lb-nav'><a class='sby_lb-prev' href='#' ><p class='sby-screenreader'>Previous Slide</p><span></span></a><a class='sby_lb-next' href='#' ><p class='sby-screenreader'>Next Slide</p><span></span></a></div><div class='sby_lb-loader'><a class='sby_lb-cancel'></a></div></div></div><div class='sby_lb-dataContainer'><div class='sby_lb-data'><div class='sby_lb-details'><div class='sby_lb-caption'></div><div class='sby_lb-info'><div class='sby_lb-number'></div></div></div><div class='sby_lb-closeContainer'><a class='sby_lb-close'></a></div></div></div></div>"},beforePlayerSetup:function(t,e,i,s,n){},afterPlayerSetup:function(t,e,i,s){},afterResize:function(){var e=t("#sby_lightbox .sby_lb-player").height();if(e>100){var i=t("#sby_lightbox .sby_lb-outerContainer").height()-e;i>10&&t("#sby_lightbox .sby_lb-player").css("top",i/2)}},pausePlayer:function(){void 0===window.sbyLightboxPlayer&&"undefined"==typeof YT||(void 0!==YT.get("sby_lb-player")&&"function"==typeof YT.get("sby_lb-player").pauseVideo?YT.get("sby_lb-player").pauseVideo():void 0!==window.sbyLightboxPlayer&&"function"==typeof window.sbyLightboxPlayer.pauseVideo&&window.sbyLightboxPlayer.pauseVideo())}},a.prototype=Object.create(n.prototype),o.prototype={toggleCTA:function(e,i,s){this.$player=s.length?s:t(".sby_lb-container"),this.state=i,this.videoID=e,this.isInitialized=!0,this.resetCTA(),void 0!==window.sby.ctas[e]&&(this.callbackArgs=window.sby.ctas[e]);var n=this.callbackArgs.callback;if("link"===n)this.callback=this.link;else{if("related"!==n)return;this.callback=this.related}2===i||0===i?(this.$player.find(".sby_cta_items_wraps").addClass("sby_cta_is_open"),2===i?this.$player.find(".sby_cta_items_wraps").addClass("sby_cta_state_paused"):this.$player.find(".sby_cta_items_wraps").addClass("sby_cta_state_ended"),this.$player.find(".sby_cta_items_wraps").show(),this.callback(),this.setCTAStyles()):(this.$player.find(".sby_cta_items_wraps").removeClass("sby_cta_is_open"),this.$player.find(".sby_cta_items_wraps").hide().removeClass("sby_cta_state_paused").removeClass("sby_cta_state_ended").removeClass("sby_cta_is_open"))},related:function(e){var i=this,s=this.feedObjInContext,n=window.sby.shuffle(this.getRelated(s)),a=0,o=this.videoID,r=this.$player;this.$player.find(".sby_cta_items_wraps").removeClass("sby_cta_cols_"+this.numItemColumns),this.numItems=4,this.numItemColumns=2,r.width()<480&&(this.numItems=1,this.numItemColumns=1);var l=this.numItems;t.each(n,(function(t,e){e.videoID!==o&&a<l&&(r.find(".sby_cta_items_wraps .sby_cta_inner_wrap").append('<div class="sby_cta_item"><div class="sby_video_thumbnail_wrap"><a class="sby_video_thumbnail" href="javascript:void(0);" target="_blank" rel="noopener" data-video-id="'+e.videoID+'"><div class="sby_thumbnail_hover"><div class="sby_thumbnail_hover_inner"><span class="sby_video_title">'+e.title+'</span></div></div><span class="sby-screenreader">Play</span><img src="'+e.thumbnail+'" alt="'+e.title+'"><span class="sby_loader sby_hidden" style="background-color: rgb(255, 255, 255);"></span></a></div></div>'),a++)})),r.find(".sby_cta_items_wraps .sby_video_thumbnail").each((function(){t(this).off().on("click",(function(e){e.preventDefault();var n=t(this).attr("data-video-id");s.onThumbnailClick(t(this),!0,n),i.videoID=n}))}))},getRelated:function(e){if(void 0===e.settings.general.cta.defaultPosts[0]){var i=t(e.el),s=[];return i.find(".sby_item").each((function(){if(void 0!==t(this).find(".sby_item_video_thumbnail").attr("data-full-res")){var e={videoID:t(this).attr("data-video-id"),title:f(t(this).attr("data-video-title")),thumbnail:t(this).find(".sby_item_video_thumbnail").attr("data-full-res")};s.push(e)}})),s}return e.settings.general.cta.defaultPosts},link:function(t){var e=this.$player,i=this.feedObjInContext;this.$player.find(".sby_cta_items_wraps").removeClass("sby_cta_cols_"+this.numItemColumns),this.numItems=1,this.numItemColumns=1;var s="",n="";""===i.settings.general.cta.color&&""===i.settings.general.cta.textColor||(s=' style="',n=" sby_custom",""!==i.settings.general.cta.color&&(s+="background: rgb("+i.settings.general.cta.color+");"),""!==i.settings.general.cta.textColor&&(s+="color: rgb("+i.settings.general.cta.textColor+");"),s+='"');var a="";"newwindow"===i.settings.general.cta.openType&&(a=' target="_blank" rel="noopener"'),e.find(".sby_cta_items_wraps .sby_cta_inner_wrap").append('<div class="sby_cta_item"><div class="sby_btn_wrap"><div class="sby_btn'+n+'"><a class="sby_cta_button" href="'+this.callbackArgs.url+'"'+a+' data-video-id="'+this.videoID+'"'+s+">"+this.callbackArgs.text+"</a></div></div></div>")},setCTAStyles:function(){var t=Math.max(90,this.$player.height()-60-49);this.$player.find(".sby_cta_items_wraps").css("height",t+"px").css("width",this.$player.find("iframe").width()-20+"px").addClass("sby_cta_cols_"+this.numItemColumns);var e=Math.max(1,this.numItems/this.numItemColumns),i=2*parseInt(this.$player.find(".sby_cta_items_wraps").css("padding-top").replace("px","")),s=Math.max(90,(t-i)/e);this.$player.find(".sby_cta_item").css("max-height",s+"px").find("img").css({"max-height":s+"px",width:"auto",margin:"auto"}),this.$player.find(".sby_btn_wrap").css("height",s+"px")},resetCTA:function(){this.$player.find(".sby_cta_items_wraps .sby_cta_inner_wrap").empty()}},window.sby_init=function(){window.sby=new e,window.sby.createPage(window.sby.createFeeds,{whenFeedsCreated:window.sby.afterFeedsCreated})},window.sby_carousel_init=function(){console.log("log")}}(jQuery),void 0===window.sbyEagerLoading){if(window.sbyEagerLoading=void 0!==window.sbyOptions&&window.sbyOptions.eagerload,jQuery(".elementor-widget-video").length){var m=void 0!==jQuery(".elementor-widget-video").attr("data-settings")&&JSON.parse(jQuery(".elementor-widget-video").attr("data-settings"));m&&void 0!==m.youtube_url&&(window.sbyEagerLoading=!0)}jQuery("div[data-vc-video-bg]").length&&(window.sbyEagerLoading=!0)}void 0===window.sbySemiEagerLoading&&(window.sbySemiEagerLoading=void 0!==window.sbyOptions&&window.sbyOptions.semiEagerload,(jQuery("div[data-vc-video-bg]").length||window.sbyEagerLoading)&&(window.sbySemiEagerLoading=!1)),jQuery(document).ready((function(t){window.sbySemiEagerLoading||sby_init(),t("#cookie-notice a").on("click",(function(){setTimeout((function(){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].afterConsentToggled()}))}),1e3)})),t("#cookie-law-info-bar a").on("click",(function(){setTimeout((function(){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].afterConsentToggled()}))}),1e3)})),t(".cli-user-preference-checkbox").on("click",(function(){setTimeout((function(){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!1,window.sby.feeds[t].afterConsentToggled()}))}),1e3)})),t(window).on("CookiebotOnAccept",(function(e){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!0,window.sby.feeds[t].afterConsentToggled()}))})),document.addEventListener("cmplz_status_change",(function(e){"marketing"===e.detail.category&&"allow"===e.detail.value&&t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!0,window.sby.feeds[t].afterConsentToggled()}))})),t(document).on("cmplzFireCategories",(function(e){"marketing"===e.detail.category&&t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!0,window.sby.feeds[t].afterConsentToggled()}))})),t(document).on("borlabs-cookie-consent-saved",(function(e){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!1,window.sby.feeds[t].afterConsentToggled()}))})),t("#sby-frce-hide-license-error").on("click",(function(){t("#sby-fr-ce-license-error").slideUp(),jQuery.ajax({url:sbyOptions.adminAjaxUrl,type:"post",data:{action:"sby_hide_frontend_license_error",nonce:sbyOptions.nonce},success:function(t){console.log(t)}})}))}))}if(window.sbySemiEagerLoading){var _="sby-youtube-api";if(null===document.getElementById(_)){var v=document.createElement("script"),w=document.getElementsByTagName("script")[0];v.src="https://www.youtube.com/iframe_api",v.id=_,w.parentNode.insertBefore(v,w)}}function x(t,e){var i,s,n,a,o,r;switch(e){case"authorProfileImageUrl":return null!=t&&null!==(i=t.snippet)&&void 0!==i&&i.authorProfileImageUrl?t.snippet.authorProfileImageUrl:"";case"authorDisplayName":return null!=t&&null!==(s=t.snippet)&&void 0!==s&&s.authorDisplayName?t.snippet.authorDisplayName:"";case"authorChannelUrl":return null!=t&&null!==(n=t.snippet)&&void 0!==n&&n.authorChannelUrl?t.snippet.authorChannelUrl:"";case"textDisplay":return null!=t&&null!==(a=t.snippet)&&void 0!==a&&a.textDisplay?t.snippet.textDisplay:"";case"likeCount":return null!=t&&null!==(o=t.snippet)&&void 0!==o&&o.likeCount?t.snippet.likeCount:"";case"publishedAt":return null!=t&&null!==(r=t.snippet)&&void 0!==r&&r.publishedAt?t.snippet.publishedAt:"";case"totalReplyCount":return null!=t&&t.totalReplyCount?t.totalReplyCount:"";default:return!1}}function C(t){switch(t){case"profile-picture":return'<svg fill="currentColor" width="800px" height="800px" viewBox="0 0 512 512" id="_x30_1" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M256,0C114.615,0,0,114.615,0,256s114.615,256,256,256s256-114.615,256-256S397.385,0,256,0z M256,90  c37.02,0,67.031,35.468,67.031,79.219S293.02,248.438,256,248.438s-67.031-35.468-67.031-79.219S218.98,90,256,90z M369.46,402  H142.54c-11.378,0-20.602-9.224-20.602-20.602C121.938,328.159,181.959,285,256,285s134.062,43.159,134.062,96.398  C390.062,392.776,380.839,402,369.46,402z"/></svg>';case"thumbs-up":return'<svg width="15" height="13" viewBox="0 0 15 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.4159 4.18027C13.761 4.18027 14.0778 4.32177 14.3664 4.60477C14.6549 4.88777 14.7992 5.20738 14.7992 5.5636V6.2706C14.7992 6.36471 14.7902 6.45188 14.7722 6.5321C14.7542 6.61232 14.7272 6.69266 14.6912 6.7731L12.684 11.4908C12.5845 11.7449 12.4181 11.9486 12.1849 12.1019C11.9517 12.2552 11.69 12.3318 11.3999 12.3318H5.15938C4.77282 12.3318 4.44566 12.2006 4.17788 11.9383C3.90999 11.6759 3.77604 11.346 3.77604 10.9484V4.7561C3.77604 4.56277 3.81332 4.38049 3.88788 4.20927C3.96254 4.03804 4.06477 3.88754 4.19454 3.75777L7.28938 0.662932C7.5186 0.431043 7.79427 0.281321 8.11638 0.213765C8.43849 0.146321 8.71416 0.178988 8.94338 0.311765C9.22549 0.46421 9.40932 0.695932 9.49488 1.00693C9.58032 1.31793 9.58999 1.62804 9.52388 1.93727L9.09554 4.18027H13.4159ZM1.34404 12.3318C1.01393 12.3318 0.726767 12.2097 0.482544 11.9654C0.238322 11.7212 0.116211 11.434 0.116211 11.1039V5.40827C0.116211 5.07804 0.236989 4.79082 0.478544 4.5466C0.7201 4.30238 1.00466 4.18027 1.33221 4.18027H1.34804C1.67827 4.18027 1.96549 4.30238 2.20971 4.5466C2.45393 4.79082 2.57604 5.07804 2.57604 5.40827V11.1039C2.57604 11.434 2.45393 11.7212 2.20971 11.9654C1.96549 12.2097 1.67827 12.3318 1.34804 12.3318H1.34404Z" fill="currentColor"/></svg>';case"angle-down":return'<svg width="8" height="6" viewBox="0 0 8 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.94 0.726654L4 3.77999L7.06 0.726654L8 1.66665L4 5.66665L0 1.66665L0.94 0.726654Z" fill="currentColor"/></svg>';case"youtube":return'<svg width="14" height="11" viewBox="0 0 14 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.66671 7.5L9.12671 5.5L5.66671 3.5V7.5ZM13.3734 2.28C13.46 2.59334 13.52 3.01334 13.56 3.54667C13.6067 4.08 13.6267 4.54 13.6267 4.94L13.6667 5.5C13.6667 6.96 13.56 8.03334 13.3734 8.72C13.2067 9.32 12.82 9.70667 12.22 9.87334C11.9067 9.96 11.3334 10.02 10.4534 10.06C9.58671 10.1067 8.79337 10.1267 8.06004 10.1267L7.00004 10.1667C4.20671 10.1667 2.46671 10.06 1.78004 9.87334C1.18004 9.70667 0.793374 9.32 0.626707 8.72C0.540041 8.40667 0.480041 7.98667 0.440041 7.45334C0.393374 6.92 0.373374 6.46 0.373374 6.06L0.333374 5.5C0.333374 4.04 0.440041 2.96667 0.626707 2.28C0.793374 1.68 1.18004 1.29334 1.78004 1.12667C2.09337 1.04 2.66671 0.980002 3.54671 0.940002C4.41337 0.893336 5.20671 0.873336 5.94004 0.873336L7.00004 0.833336C9.79337 0.833336 11.5334 0.940003 12.22 1.12667C12.82 1.29334 13.2067 1.68 13.3734 2.28Z" fill="currentColor"/></svg>';case"cross":return'<svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.25 1.41L12.84 0L7.25 5.59L1.66 0L0.25 1.41L5.84 7L0.25 12.59L1.66 14L7.25 8.41L12.84 14L14.25 12.59L8.66 7L14.25 1.41Z" fill="currentColor"/></svg>';case"message":return'<svg width="28" height="26" viewBox="0 0 28 26" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.33341 22C2.60008 22 1.9723 21.7389 1.45008 21.2167C0.927859 20.6944 0.666748 20.0667 0.666748 19.3333V3.33334C0.666748 2.6 0.927859 1.97223 1.45008 1.45001C1.9723 0.927783 2.60008 0.666672 3.33341 0.666672H24.6667C25.4001 0.666672 26.0279 0.927783 26.5501 1.45001C27.0723 1.97223 27.3334 2.6 27.3334 3.33334V24.1C27.3334 24.7 27.0612 25.1167 26.5167 25.35C25.9723 25.5833 25.489 25.4889 25.0667 25.0667L22.0001 22H3.33341ZM23.1334 19.3333L24.6667 20.8333V3.33334H3.33341V19.3333H23.1334Z" fill="currentColor"/></svg>';default:return!1}}function I(t,e,i,s,n,a,o){var r,l=t?"<img src=".concat(t,' loading="lazy" referrerPolicy="no-referrer"/>'):C("profile-picture"),d=o?'<button class="sby-replies">'.concat(o||0," Replies ").concat(C("angle-down"),"</button>"):"";return'\n            <div class="sby-comment-profile-pic">\n                '.concat(l,'\n            </div>\n            <div class="sby-comment-heading">\n                <a href="').concat(i,'" target="_blank" class="sby-comment-user-name">').concat(e,"</a>\n                <span>").concat(z(a),'</span>\n            </div>\n                <div class="sby-comment-text">\n                <p class="sby-read-more-target">').concat(s,'</p>\n                <div class="sby-read-more-trigger">\n                    <button class="sby-read-more-text">Read More</button>\n                    <button class="sby-read-less-text">Read Less</button>\n                </div>\n             </div>\n            <div class="sby-comment-bottom">\n                <span class="sby-comment-likes">\n                    ').concat(C("thumbs-up")," ").concat(n?(r=n,r>=1e9?(r/1e9).toFixed(1)+"B":r>=1e6?(r/1e6).toFixed(1)+"M":r>=1e3?(r/1e3).toFixed(1)+"K":r):0,"\n                </span>\n                ").concat(d,"\n            </div>\n    ")}function k(t){return'\n        <h4 class="sby-comments-sub-heading">Comments</h4>\n        <div class="sby-no-comments">\n            <p>'.concat(t,"</p>\n        </div>")}function z(t){var e=new Date-new Date(t),i=Math.floor(e/1e3),s=Math.floor(i/60),n=Math.floor(s/60),a=Math.floor(n/24),o=Math.floor(a/30),r=Math.floor(o/12);return r>0?"".concat(r," year").concat(r>1?"s":""," ago"):o>0?"".concat(o," month").concat(o>1?"s":""," ago"):a>0?"".concat(a," day").concat(a>1?"s":""," ago"):n>0?"".concat(n," hour").concat(n>1?"s":""," ago"):s>0?"".concat(s," minute").concat(s>1?"s":""," ago"):i>0?"".concat(i," second").concat(i>1?"s":""," ago"):"just now"}function T(){var t=jQuery(".sby-read-more-target"),e=".sby-read-more-trigger";t.each((function(t){var i=jQuery(this)[0],s=i.scrollHeight,n=i.offsetHeight;if(s>n&&s>n+1){var a=jQuery(this).parent().find(e);a.unbind("click"),a.click((function(){jQuery(this).toggleClass("sby-read-more-trigger-active"),jQuery(this).parent().find(".sby-read-more-target").toggleClass("sby-read-more-target-active")}))}else jQuery(this).parent().find(e).hide()}))}function L(t,e){var i=jQuery(".sby_lb-caption"),s="sby-lb-dark-scheme";return!1===e?(i.removeClass(s),!1):"dark"===t&&!0===e?(i.addClass(s),!1):void 0}function j(){jQuery("body").css("overflow","auto"),L("",!1),jQuery(".sby_gdpr_notice").remove()}function P(t){var e=t.closest(".sb_youtube");return e.hasClass("sby_layout_list")?"list":e.hasClass("sby_layout_grid")?"grid":e.hasClass("sby_layout_carousel")?"carousel":!!e.hasClass("sby_layout_gallery")&&"gallery"}function $(){if(!window.sbyOptions.isPro)return!1;var t=jQuery(".sby-comments-trigger");t.unbind("click"),t.click((function(){var t=".sby-comments-wrap",e=jQuery(this).closest(".sby-comment-container"),i=e.find(t),s=P(jQuery(this));if(i.text().length<=0){var n,a,o;if("gallery"===s){var r=jQuery(this).closest(".sb_youtube"),l=r.find(".sby_item.sby_current");r&&l&&(a=A(l.attr("data-video-id")),n=A(l.find("a").attr("data-comment-count")),o=r.find(t))}if("list"===s){var d=jQuery(this).closest(".sby_item");d&&(a=A(d.attr("data-video-id")),n=A(d.find("a").attr("data-comment-count")),o=d.find(t)),D(jQuery(this).closest(".sb_youtube"))}S(a,A(jQuery(this).closest(".sb_youtube").attr("data-shortcode-atts")),o,n),i.addClass("sby-comments-active")}else i.toggle(),i.toggleClass("sby-comments-active");var h=e.find(".sby-comments-trigger p");h&&function(t,e,i){if(t&&e&&i){var s=e===t.text()?i:e;t.text(s)}}(h,"Show Comments","Hide Comments")}))}function A(t){return t||""}function O(t,e){jQuery.ajax({url:sbyOptions.adminAjaxUrl,type:"post",data:t,success:e})}function S(t,e,i,s){submitData={action:"sby_get_comments",video_id:t,atts:e},T(),O(submitData,(function(e){var n;if(!e)return!1;if(!1===e.success)return i.html(k(e.data)),!1;var a=JSON.parse(e);if(!a)return!1;if(null!=a&&a.success&&!1===a.success)return i.html(k(a.data)),!1;if(null!=a&&a.error&&null!=a&&null!==(n=a.error)&&void 0!==n&&n.message){var o=a.error.message;return o.includes("disabled comments")&&(o="Comments are turned off"),i.html(k(o)),!1}var r=null!=a&&a.items&&null!=a&&a.items.length?a.items.length:"",l=t?"https://www.youtube.com/watch?v=".concat(t):"";if(!r)return i.html('\n        <h4 class="sby-comments-sub-heading">Comments</h4>\n        <div class="sby-no-comments">\n            '.concat(C("message"),"\n            <p>There are no comments to display</p>\n        </div>")),T(),!1;currentCommentCount=s?"( ".concat(s," )"):"";var d='<h4 class="sby-comments-sub-heading">Comments '.concat(currentCommentCount,'</h4><ul class="sby-comments">');jQuery.each(a.items,(function(t,e){var i,s,n=null==e||null===(i=e.snippet)||void 0===i?void 0:i.topLevelComment,a=null==e?void 0:e.snippet;d+='<li class="sby-comment">'.concat(I(x(n,"authorProfileImageUrl"),x(n,"authorDisplayName"),x(n,"authorChannelUrl"),x(n,"textDisplay"),x(n,"likeCount"),x(n,"publishedAt"),x(a,"totalReplyCount")),'\n            <ul class="sby-reply-comments">'),null!=e&&null!==(s=e.replies)&&void 0!==s&&s.comments&&jQuery.each(e.replies.comments,(function(t,e){d+='<li class="sby-reply-comment" >'.concat(I(x(e,"authorProfileImageUrl"),x(e,"authorDisplayName"),x(e,"authorChannelUrl"),x(e,"textDisplay"),x(e,"likeCount"),x(e,"publishedAt")),"</li>")})),d+="</ul></li>"})),d+="</ul>",d+='<a href="'.concat(l,'" target="_blank" class="sby-view-all-button ">View all comments on YouTube</a>'),i.html(d).fadeIn("fast"),T(),function(t,e,i,s){jQuery(s).css("display","none"),jQuery(e).unbind("click"),jQuery(e).click((function(){jQuery(this).toggleClass("sby-active-trigger"),jQuery(this).closest(".sby-comment").find(s).toggle()}))}(0,".sby-replies",0,".sby-reply-comments")}))}function D(t){"gallery"!==P(t)&&"list"!==P(t)||(t.find(".sby-comments-trigger").find("p").text("Show Comments"),t.find(".sby-comments-wrap").html(""))}window.onYouTubeIframeAPIReady=function(){var t=document.getElementsByClassName("sb_youtube").length;if(t>0){if(window.sbySemiEagerLoading){if(void 0!==window.sby)for(var e=0;e<t;e++)window.sby.feeds[e].playerAPIReady=!0;else window.sbyAPIReady=!0;sby_init()}else if(window.sbyEagerLoading){var i=!1,s=!1;jQuery(".sb_youtube").each((function(t){var e=jQuery(this);e.hasClass("sby_layout_list")?(jQuery(this).addClass("sby_player_loaded"),e.find(".sby_item").each((function(){videoID=jQuery(this).attr("data-video-id"),player=new YT.Player("sby_player_"+videoID,{height:"100",width:"100",videoId:videoID,playerVars:{modestbranding:1,rel:0,autoplay:s},events:{onStateChange:function(t){t.target.getVideoData().video_id,1===t.data&&e.find(".sby_item").each((function(){var e=jQuery(this).attr("data-video-id");jQuery(this).find("iframe").length&&jQuery(t.target.a).attr("id")!==jQuery(this).find("iframe").attr("id")&&YT.get("sby_player_"+e).pauseVideo()}))}}})}))):e.hasClass("sby_layout_gallery")?(jQuery(this).addClass("sby_player_loaded"),player=new YT.Player("sby_player"+t,{height:"100",width:"100",videoId:jQuery(this).find(".sby_item").first().attr("data-video-id"),playerVars:{modestbranding:1,rel:0,autoplay:s},events:{onStateChange:function(t){t.target.getVideoData().video_id,1===t.data&&e.find(".sby_item").each((function(){var e=jQuery(this).attr("data-video-id");jQuery(this).find("iframe").length&&jQuery(t.target.a).attr("id")!==jQuery(this).find("iframe").attr("id")&&YT.get("sby_player_"+e).pauseVideo()}))}}})):i=!0}))}else if(void 0!==window.sby)for(e=0;e<t;e++)window.sby.feeds[e].playerAPIReady=!0;else window.sbyAPIReady=!0;jQuery(".sb_youtube").each((function(t){var e=jQuery(this);e.find(".sby_live_player").length&&(player=new YT.Player(e.find(".sby_live_player").attr("id"),{events:{onReady:function(){e.find(".sby_live_player").hide(),e.find(".sby_item").remove();var i=YT.get(e.find(".sby_live_player").attr("id")).getVideoData().video_id;e.find(".sby_player_video_thumbnail").attr("data-video-id",i).css("z-index",-1),e.find(".sby_item").length;var s={action:"sby_live_retrieve",video_id:i,feed_id:e.attr("data-feedid"),atts:e.attr("data-shortcode-atts")};jQuery.ajax({url:sbyOptions.adminAjaxUrl,type:"post",data:s,success:function(i){if(0===i.trim().indexOf("{")){var s=window.sby.feeds[t],n=JSON.parse(i),a=void 0!==n.feedStatus.checkWPPosts&&n.feedStatus.checkWPPosts;s.settings.debugEnabled&&console.log(n),s.settings.checkWPPosts=!!a,s.appendNewPosts(n.html),s.addResizedImages(n.resizedImages),s.afterInitialImagesLoaded(),n.feedStatus.shouldPaginate?s.outOfPages=!1:(s.outOfPages=!0,e.find(".sby_load_btn").hide()),jQuery(".sby_no_js").removeClass("sby_no_js"),e.find(".sby_live_player").remove(),e.hasClass("sby_layout_gallery")&&s.createPlayer("sby_player"+s.index),e.find(".sby_player_item").css("opacity",1),e.find(".sby_item").css("opacity",1),e.find(".sby_player_loading").removeClass("sby_player_loading"),e.hasClass("sby_layout_list")&&e.find(".sby_item_video_thumbnail").on("mouseenter",(function(){jQuery(this).css("z-index",-1)}))}}})}}}))})),i&&(jQuery("#sby_lb-player").length||jQuery(".sb_youtube").first().append('<div class="sby_lb-player-loaded sby_lb-player" id="sby_lb-player" style="display: none;"></div>'),player=new YT.Player("sby_lb-player",{height:"100",width:"100",videoId:jQuery(this).find(".sby_item").first().attr("data-video-id"),playerVars:{modestbranding:1,rel:0,autoplay:s}}),window.sbyLightboxPlayer=player)}if(void 0!==window.sby){var n=jQuery.Event("sbyfeedandytready");jQuery(window).trigger(n)}}})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUFBTTlJLFNBQVMsb0JBQ2Y4SSxFQUFNeFMsS0FBSyw2QkFBNkI2QixHQUFHLGNBQWEsV0FDcERxQyxPQUFPbmIsTUFBTUcsSUFBSSxXQUFXLEVBQ2hDLEdBR1IsQ0FFSixHQU9KLEtBSWhCLElBRUlxckMsSUFDS3J3QixPQUFPLGtCQUFrQjNaLFFBQzFCMlosT0FBTyxlQUFldU4sUUFBUXRSLE9BQU8sb0dBRXpDd2lCLE9BQVMsSUFBSXJRLEdBQUdDLE9BQU8sZ0JBQWlCLENBQ3BDbkssT0FBUSxNQUNSakssTUFBTyxNQUNQMlQsUUFBUzVOLE9BQU9uYixNQUFNaVgsS0FBSyxhQUFheVIsUUFBUTdRLEtBQUssaUJBQ3JEbVIsV0FBWSxDQUNSQyxlQUFnQixFQUNoQkMsSUFBSyxFQUNMMUgsU0FBVUEsS0FHbEJwZ0IsT0FBT3VuQixrQkFBb0JpUixPQUduQyxDQUVBLFFBQTBCLElBQWZ4NEIsT0FBT3lsQixJQUFxQixDQUNuQyxJQUFJc0IsRUFBTWhOLE9BQU9qRyxNQUFNLHFCQUN2QmlHLE9BQU8vWixRQUFRMFYsUUFBUXFSLEVBQzNCLENBRUoiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly95b3V0dWJlLWZlZWQtcHJvLy4vbm9kZV9tb2R1bGVzL2Nzc2ZpbHRlci9saWIvY3NzLmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMvY3NzZmlsdGVyL2xpYi9kZWZhdWx0LmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMvY3NzZmlsdGVyL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly95b3V0dWJlLWZlZWQtcHJvLy4vbm9kZV9tb2R1bGVzL2Nzc2ZpbHRlci9saWIvcGFyc2VyLmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMvY3NzZmlsdGVyL2xpYi91dGlsLmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMveHNzL2xpYi9kZWZhdWx0LmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMveHNzL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly95b3V0dWJlLWZlZWQtcHJvLy4vbm9kZV9tb2R1bGVzL3hzcy9saWIvcGFyc2VyLmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMveHNzL2xpYi91dGlsLmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMveHNzL2xpYi94c3MuanMiLCJ3ZWJwYWNrOi8veW91dHViZS1mZWVkLXByby93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly95b3V0dWJlLWZlZWQtcHJvLy4vanMvc2IteW91dHViZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNzc2ZpbHRlclxuICpcbiAqIEBhdXRob3Ig6ICB6Zu3PGxlaXpvbmdtaW5AZ21haWwuY29tPlxuICovXG5cbnZhciBERUZBVUxUID0gcmVxdWlyZSgnLi9kZWZhdWx0Jyk7XG52YXIgcGFyc2VTdHlsZSA9IHJlcXVpcmUoJy4vcGFyc2VyJyk7XG52YXIgXyA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5cbi8qKlxuICog6L+U5Zue5YC85piv5ZCm5Li656m6XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNOdWxsIChvYmopIHtcbiAgcmV0dXJuIChvYmogPT09IHVuZGVmaW5lZCB8fCBvYmogPT09IG51bGwpO1xufVxuXG4vKipcbiAqIOa1heaLt+i0neWvueixoVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gc2hhbGxvd0NvcHlPYmplY3QgKG9iaikge1xuICB2YXIgcmV0ID0ge307XG4gIGZvciAodmFyIGkgaW4gb2JqKSB7XG4gICAgcmV0W2ldID0gb2JqW2ldO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog5Yib5bu6Q1NT6L+H5ruk5ZmoXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqICAgLSB7T2JqZWN0fSB3aGl0ZUxpc3RcbiAqICAgLSB7RnVuY3Rpb259IG9uQXR0clxuICogICAtIHtGdW5jdGlvbn0gb25JZ25vcmVBdHRyXG4gKiAgIC0ge0Z1bmN0aW9ufSBzYWZlQXR0clZhbHVlXG4gKi9cbmZ1bmN0aW9uIEZpbHRlckNTUyAob3B0aW9ucykge1xuICBvcHRpb25zID0gc2hhbGxvd0NvcHlPYmplY3Qob3B0aW9ucyB8fCB7fSk7XG4gIG9wdGlvbnMud2hpdGVMaXN0ID0gb3B0aW9ucy53aGl0ZUxpc3QgfHwgREVGQVVMVC53aGl0ZUxpc3Q7XG4gIG9wdGlvbnMub25BdHRyID0gb3B0aW9ucy5vbkF0dHIgfHwgREVGQVVMVC5vbkF0dHI7XG4gIG9wdGlvbnMub25JZ25vcmVBdHRyID0gb3B0aW9ucy5vbklnbm9yZUF0dHIgfHwgREVGQVVMVC5vbklnbm9yZUF0dHI7XG4gIG9wdGlvbnMuc2FmZUF0dHJWYWx1ZSA9IG9wdGlvbnMuc2FmZUF0dHJWYWx1ZSB8fCBERUZBVUxULnNhZmVBdHRyVmFsdWU7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG59XG5cbkZpbHRlckNTUy5wcm90b3R5cGUucHJvY2VzcyA9IGZ1bmN0aW9uIChjc3MpIHtcbiAgLy8g5YW85a655ZCE56eN5aWH6JGp6L6T5YWlXG4gIGNzcyA9IGNzcyB8fCAnJztcbiAgY3NzID0gY3NzLnRvU3RyaW5nKCk7XG4gIGlmICghY3NzKSByZXR1cm4gJyc7XG5cbiAgdmFyIG1lID0gdGhpcztcbiAgdmFyIG9wdGlvbnMgPSBtZS5vcHRpb25zO1xuICB2YXIgd2hpdGVMaXN0ID0gb3B0aW9ucy53aGl0ZUxpc3Q7XG4gIHZhciBvbkF0dHIgPSBvcHRpb25zLm9uQXR0cjtcbiAgdmFyIG9uSWdub3JlQXR0ciA9IG9wdGlvbnMub25JZ25vcmVBdHRyO1xuICB2YXIgc2FmZUF0dHJWYWx1ZSA9IG9wdGlvbnMuc2FmZUF0dHJWYWx1ZTtcblxuICB2YXIgcmV0Q1NTID0gcGFyc2VTdHlsZShjc3MsIGZ1bmN0aW9uIChzb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24sIG5hbWUsIHZhbHVlLCBzb3VyY2UpIHtcblxuICAgIHZhciBjaGVjayA9IHdoaXRlTGlzdFtuYW1lXTtcbiAgICB2YXIgaXNXaGl0ZSA9IGZhbHNlO1xuICAgIGlmIChjaGVjayA9PT0gdHJ1ZSkgaXNXaGl0ZSA9IGNoZWNrO1xuICAgIGVsc2UgaWYgKHR5cGVvZiBjaGVjayA9PT0gJ2Z1bmN0aW9uJykgaXNXaGl0ZSA9IGNoZWNrKHZhbHVlKTtcbiAgICBlbHNlIGlmIChjaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCkgaXNXaGl0ZSA9IGNoZWNrLnRlc3QodmFsdWUpO1xuICAgIGlmIChpc1doaXRlICE9PSB0cnVlKSBpc1doaXRlID0gZmFsc2U7XG5cbiAgICAvLyDlpoLmnpzov4fmu6TlkI4gdmFsdWUg5Li656m65YiZ55u05o6l5b+955WlXG4gICAgdmFsdWUgPSBzYWZlQXR0clZhbHVlKG5hbWUsIHZhbHVlKTtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XG5cbiAgICB2YXIgb3B0cyA9IHtcbiAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgIHNvdXJjZVBvc2l0aW9uOiBzb3VyY2VQb3NpdGlvbixcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgaXNXaGl0ZTogaXNXaGl0ZVxuICAgIH07XG5cbiAgICBpZiAoaXNXaGl0ZSkge1xuXG4gICAgICB2YXIgcmV0ID0gb25BdHRyKG5hbWUsIHZhbHVlLCBvcHRzKTtcbiAgICAgIGlmIChpc051bGwocmV0KSkge1xuICAgICAgICByZXR1cm4gbmFtZSArICc6JyArIHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIHZhciByZXQgPSBvbklnbm9yZUF0dHIobmFtZSwgdmFsdWUsIG9wdHMpO1xuICAgICAgaWYgKCFpc051bGwocmV0KSkge1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuXG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmV0Q1NTO1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IEZpbHRlckNTUztcbiIsIi8qKlxuICogY3NzZmlsdGVyXG4gKlxuICogQGF1dGhvciDogIHpm7c8bGVpem9uZ21pbkBnbWFpbC5jb20+XG4gKi9cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFdoaXRlTGlzdCAoKSB7XG4gIC8vIOeZveWQjeWNleWAvOivtOaYju+8mlxuICAvLyB0cnVlOiDlhYHorrjor6XlsZ7mgKdcbiAgLy8gRnVuY3Rpb246IGZ1bmN0aW9uICh2YWwpIHsgfSDov5Tlm550cnVl6KGo56S65YWB6K646K+l5bGe5oCn77yM5YW25LuW5YC85Z2H6KGo56S65LiN5YWB6K64XG4gIC8vIFJlZ0V4cDogcmVnZXhwLnRlc3QodmFsKSDov5Tlm550cnVl6KGo56S65YWB6K646K+l5bGe5oCn77yM5YW25LuW5YC85Z2H6KGo56S65LiN5YWB6K64XG4gIC8vIOmZpOS4iumdouWIl+WHuueahOWAvOWkluWdh+ihqOekuuS4jeWFgeiuuFxuICB2YXIgd2hpdGVMaXN0ID0ge307XG5cbiAgd2hpdGVMaXN0WydhbGlnbi1jb250ZW50J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2FsaWduLWl0ZW1zJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2FsaWduLXNlbGYnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnYWxpZ25tZW50LWFkanVzdCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydhbGlnbm1lbnQtYmFzZWxpbmUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBiYXNlbGluZVxuICB3aGl0ZUxpc3RbJ2FsbCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydhbmNob3ItcG9pbnQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYW5pbWF0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ2FuaW1hdGlvbi1kZWxheSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydhbmltYXRpb24tZGlyZWN0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnYW5pbWF0aW9uLWR1cmF0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ2FuaW1hdGlvbi1maWxsLW1vZGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDFcbiAgd2hpdGVMaXN0WydhbmltYXRpb24tbmFtZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydhbmltYXRpb24tcGxheS1zdGF0ZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IHJ1bm5pbmdcbiAgd2hpdGVMaXN0WydhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZWFzZVxuICB3aGl0ZUxpc3RbJ2F6aW11dGgnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBjZW50ZXJcbiAgd2hpdGVMaXN0WydiYWNrZmFjZS12aXNpYmlsaXR5J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogdmlzaWJsZVxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydiYWNrZ3JvdW5kLWF0dGFjaG1lbnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IHNjcm9sbFxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQtY2xpcCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYm9yZGVyLWJveFxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQtY29sb3InXSA9IHRydWU7IC8vIGRlZmF1bHQ6IHRyYW5zcGFyZW50XG4gIHdoaXRlTGlzdFsnYmFja2dyb3VuZC1pbWFnZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQtb3JpZ2luJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBwYWRkaW5nLWJveFxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQtcG9zaXRpb24nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDAlIDAlXG4gIHdoaXRlTGlzdFsnYmFja2dyb3VuZC1yZXBlYXQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IHJlcGVhdFxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQtc2l6ZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2Jhc2VsaW5lLXNoaWZ0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYmFzZWxpbmVcbiAgd2hpdGVMaXN0WydiaW5kaW5nJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2JsZWVkJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogNnB0XG4gIHdoaXRlTGlzdFsnYm9va21hcmstbGFiZWwnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBjb250ZW50KClcbiAgd2hpdGVMaXN0Wydib29rbWFyay1sZXZlbCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wydib29rbWFyay1zdGF0ZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG9wZW5cbiAgd2hpdGVMaXN0Wydib3JkZXInXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0Wydib3JkZXItYm90dG9tJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWJvdHRvbS1jb2xvciddID0gdHJ1ZTsgLy8gZGVmYXVsdDogY3VycmVudCBjb2xvclxuICB3aGl0ZUxpc3RbJ2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0Wydib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyddID0gdHJ1ZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ2JvcmRlci1ib3R0b20tc3R5bGUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wydib3JkZXItYm90dG9tLXdpZHRoJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBtZWRpdW1cbiAgd2hpdGVMaXN0Wydib3JkZXItY29sbGFwc2UnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IHNlcGFyYXRlXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWNvbG9yJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWltYWdlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWltYWdlLW91dHNldCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ2JvcmRlci1pbWFnZS1yZXBlYXQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IHN0cmV0Y2hcbiAgd2hpdGVMaXN0Wydib3JkZXItaW1hZ2Utc2xpY2UnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDEwMCVcbiAgd2hpdGVMaXN0Wydib3JkZXItaW1hZ2Utc291cmNlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWltYWdlLXdpZHRoJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAxXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWxlZnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0Wydib3JkZXItbGVmdC1jb2xvciddID0gdHJ1ZTsgLy8gZGVmYXVsdDogY3VycmVudCBjb2xvclxuICB3aGl0ZUxpc3RbJ2JvcmRlci1sZWZ0LXN0eWxlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWxlZnQtd2lkdGgnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ2JvcmRlci1yYWRpdXMnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0Wydib3JkZXItcmlnaHQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0Wydib3JkZXItcmlnaHQtY29sb3InXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGN1cnJlbnQgY29sb3JcbiAgd2hpdGVMaXN0Wydib3JkZXItcmlnaHQtc3R5bGUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wydib3JkZXItcmlnaHQtd2lkdGgnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ2JvcmRlci1zcGFjaW5nJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsnYm9yZGVyLXN0eWxlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnYm9yZGVyLXRvcCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ2JvcmRlci10b3AtY29sb3InXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGN1cnJlbnQgY29sb3JcbiAgd2hpdGVMaXN0Wydib3JkZXItdG9wLWxlZnQtcmFkaXVzJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsnYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0Wydib3JkZXItdG9wLXN0eWxlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYm9yZGVyLXRvcC13aWR0aCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbWVkaXVtXG4gIHdoaXRlTGlzdFsnYm9yZGVyLXdpZHRoJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnYm90dG9tJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2JveC1kZWNvcmF0aW9uLWJyZWFrJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBzbGljZVxuICB3aGl0ZUxpc3RbJ2JveC1zaGFkb3cnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wydib3gtc2l6aW5nJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBjb250ZW50LWJveFxuICB3aGl0ZUxpc3RbJ2JveC1zbmFwJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYm94LXN1cHByZXNzJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBzaG93XG4gIHdoaXRlTGlzdFsnYnJlYWstYWZ0ZXInXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydicmVhay1iZWZvcmUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydicmVhay1pbnNpZGUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydjYXB0aW9uLXNpZGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiB0b3BcbiAgd2hpdGVMaXN0WydjaGFpbnMnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnY2xlYXInXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydjbGlwJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2NsaXAtcGF0aCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydjbGlwLXJ1bGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub256ZXJvXG4gIHdoaXRlTGlzdFsnY29sb3InXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGltcGxlbWVudGF0aW9uIGRlcGVuZGVudFxuICB3aGl0ZUxpc3RbJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2NvbHVtbi1jb3VudCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wydjb2x1bW4tZmlsbCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGJhbGFuY2VcbiAgd2hpdGVMaXN0Wydjb2x1bW4tZ2FwJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnY29sdW1uLXJ1bGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnY29sdW1uLXJ1bGUtY29sb3InXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBjdXJyZW50IGNvbG9yXG4gIHdoaXRlTGlzdFsnY29sdW1uLXJ1bGUtc3R5bGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBtZWRpdW1cbiAgd2hpdGVMaXN0Wydjb2x1bW4tcnVsZS13aWR0aCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ2NvbHVtbi1zcGFuJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2NvbHVtbi13aWR0aCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wydjb2x1bW5zJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ2NvbnRhaW4nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnY29udGVudCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2NvdW50ZXItaW5jcmVtZW50J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2NvdW50ZXItcmVzZXQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnY291bnRlci1zZXQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnY3JvcCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydjdWUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnY3VlLWFmdGVyJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2N1ZS1iZWZvcmUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnY3Vyc29yJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2RpcmVjdGlvbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGx0clxuICB3aGl0ZUxpc3RbJ2Rpc3BsYXknXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydkaXNwbGF5LWluc2lkZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2Rpc3BsYXktbGlzdCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2Rpc3BsYXktb3V0c2lkZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogaW5saW5lLWxldmVsXG4gIHdoaXRlTGlzdFsnZG9taW5hbnQtYmFzZWxpbmUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnZWxldmF0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbGV2ZWxcbiAgd2hpdGVMaXN0WydlbXB0eS1jZWxscyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IHNob3dcbiAgd2hpdGVMaXN0WydmaWx0ZXInXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnZmxleCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydmbGV4LWJhc2lzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2ZsZXgtZGlyZWN0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogcm93XG4gIHdoaXRlTGlzdFsnZmxleC1mbG93J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ2ZsZXgtZ3JvdyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydmbGV4LXNocmluayddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDFcbiAgd2hpdGVMaXN0WydmbGV4LXdyYXAnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub3dyYXBcbiAgd2hpdGVMaXN0WydmbG9hdCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydmbG9hdC1vZmZzZXQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiAwIDBcbiAgd2hpdGVMaXN0WydmbG9vZC1jb2xvciddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGJsYWNrXG4gIHdoaXRlTGlzdFsnZmxvb2Qtb3BhY2l0eSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDFcbiAgd2hpdGVMaXN0WydmbG93LWZyb20nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnZmxvdy1pbnRvJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2ZvbnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0Wydmb250LWZhbWlseSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogaW1wbGVtZW50YXRpb24gZGVwZW5kZW50XG4gIHdoaXRlTGlzdFsnZm9udC1mZWF0dXJlLXNldHRpbmdzJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0Wydmb250LWtlcm5pbmcnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wydmb250LWxhbmd1YWdlLW92ZXJyaWRlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0Wydmb250LXNpemUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ2ZvbnQtc2l6ZS1hZGp1c3QnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wydmb250LXN0cmV0Y2gnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtc3R5bGUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtc3ludGhlc2lzJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiB3ZWlnaHQgc3R5bGVcbiAgd2hpdGVMaXN0Wydmb250LXZhcmlhbnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0Wydmb250LXZhcmlhbnQtY2FwcyddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnZm9udC12YXJpYW50LWVhc3QtYXNpYW4nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtdmFyaWFudC1saWdhdHVyZXMnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtdmFyaWFudC1udW1lcmljJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0Wydmb250LXZhcmlhbnQtcG9zaXRpb24nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtd2VpZ2h0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0WydncmlkJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ2dyaWQtYXJlYSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydncmlkLWF1dG8tY29sdW1ucyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydncmlkLWF1dG8tZmxvdyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydncmlkLWF1dG8tcm93cyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydncmlkLWNvbHVtbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydncmlkLWNvbHVtbi1lbmQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnZ3JpZC1jb2x1bW4tc3RhcnQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnZ3JpZC1yb3cnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnZ3JpZC1yb3ctZW5kJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2dyaWQtcm93LXN0YXJ0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2dyaWQtdGVtcGxhdGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnZ3JpZC10ZW1wbGF0ZS1hcmVhcyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2hhbmdpbmctcHVuY3R1YXRpb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnaGVpZ2h0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnaHlwaGVucyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1hbnVhbFxuICB3aGl0ZUxpc3RbJ2ljb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnaW1hZ2Utb3JpZW50YXRpb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnaW1hZ2UtcmVzb2x1dGlvbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ltZS1tb2RlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2luaXRpYWwtbGV0dGVycyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2lubGluZS1ib3gtYWxpZ24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBsYXN0XG4gIHdoaXRlTGlzdFsnanVzdGlmeS1jb250ZW50J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2p1c3RpZnktaXRlbXMnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnanVzdGlmeS1zZWxmJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2xlZnQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnbGV0dGVyLXNwYWNpbmcnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2xpZ2h0aW5nLWNvbG9yJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiB3aGl0ZVxuICB3aGl0ZUxpc3RbJ2xpbmUtYm94LWNvbnRhaW4nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBibG9jayBpbmxpbmUgcmVwbGFjZWRcbiAgd2hpdGVMaXN0WydsaW5lLWJyZWFrJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2xpbmUtZ3JpZCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1hdGNoLXBhcmVudFxuICB3aGl0ZUxpc3RbJ2xpbmUtaGVpZ2h0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnbGluZS1zbmFwJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2xpbmUtc3RhY2tpbmcnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnbGluZS1zdGFja2luZy1ydWJ5J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZXhjbHVkZS1ydWJ5XG4gIHdoaXRlTGlzdFsnbGluZS1zdGFja2luZy1zaGlmdCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGNvbnNpZGVyLXNoaWZ0c1xuICB3aGl0ZUxpc3RbJ2xpbmUtc3RhY2tpbmctc3RyYXRlZ3knXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBpbmxpbmUtbGluZS1oZWlnaHRcbiAgd2hpdGVMaXN0WydsaXN0LXN0eWxlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnbGlzdC1zdHlsZS1pbWFnZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2xpc3Qtc3R5bGUtcG9zaXRpb24nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG91dHNpZGVcbiAgd2hpdGVMaXN0WydsaXN0LXN0eWxlLXR5cGUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRpc2NcbiAgd2hpdGVMaXN0WydtYXJnaW4nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydtYXJnaW4tYm90dG9tJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsnbWFyZ2luLWxlZnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydtYXJnaW4tcmlnaHQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydtYXJnaW4tdG9wJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsnbWFya2VyLW9mZnNldCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydtYXJrZXItc2lkZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGxpc3QtaXRlbVxuICB3aGl0ZUxpc3RbJ21hcmtzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ21hc2snXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBib3JkZXItYm94XG4gIHdoaXRlTGlzdFsnbWFzay1ib3gnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBzZWUgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnbWFzay1ib3gtb3V0c2V0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ21hc2stYm94LXJlcGVhdCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IHN0cmV0Y2hcbiAgd2hpdGVMaXN0WydtYXNrLWJveC1zbGljZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDAgZmlsbFxuICB3aGl0ZUxpc3RbJ21hc2stYm94LXNvdXJjZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydtYXNrLWJveC13aWR0aCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydtYXNrLWNsaXAnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBib3JkZXItYm94XG4gIHdoaXRlTGlzdFsnbWFzay1pbWFnZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydtYXNrLW9yaWdpbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGJvcmRlci1ib3hcbiAgd2hpdGVMaXN0WydtYXNrLXBvc2l0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogY2VudGVyXG4gIHdoaXRlTGlzdFsnbWFzay1yZXBlYXQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBuby1yZXBlYXRcbiAgd2hpdGVMaXN0WydtYXNrLXNpemUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBib3JkZXItYm94XG4gIHdoaXRlTGlzdFsnbWFzay1zb3VyY2UtdHlwZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydtYXNrLXR5cGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBsdW1pbmFuY2VcbiAgd2hpdGVMaXN0WydtYXgtaGVpZ2h0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnbWF4LWxpbmVzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ21heC13aWR0aCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ21pbi1oZWlnaHQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydtaW4td2lkdGgnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0Wydtb3ZlLXRvJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnbmF2LWRvd24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnbmF2LWluZGV4J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ25hdi1sZWZ0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ25hdi1yaWdodCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WyduYXYtdXAnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnb2JqZWN0LWZpdCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGZpbGxcbiAgd2hpdGVMaXN0WydvYmplY3QtcG9zaXRpb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiA1MCUgNTAlXG4gIHdoaXRlTGlzdFsnb3BhY2l0eSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDFcbiAgd2hpdGVMaXN0WydvcmRlciddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydvcnBoYW5zJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMlxuICB3aGl0ZUxpc3RbJ291dGxpbmUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnb3V0bGluZS1jb2xvciddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGludmVydFxuICB3aGl0ZUxpc3RbJ291dGxpbmUtb2Zmc2V0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ291dGxpbmUtc3R5bGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnb3V0bGluZS13aWR0aCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ292ZXJmbG93J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ292ZXJmbG93LXdyYXAnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0WydvdmVyZmxvdy14J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogdmlzaWJsZVxuICB3aGl0ZUxpc3RbJ292ZXJmbG93LXknXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiB2aXNpYmxlXG4gIHdoaXRlTGlzdFsncGFkZGluZyddID0gdHJ1ZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ3BhZGRpbmctYm90dG9tJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsncGFkZGluZy1sZWZ0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsncGFkZGluZy1yaWdodCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ3BhZGRpbmctdG9wJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsncGFnZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydwYWdlLWJyZWFrLWFmdGVyJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3BhZ2UtYnJlYWstYmVmb3JlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3BhZ2UtYnJlYWstaW5zaWRlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3BhZ2UtcG9saWN5J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogc3RhcnRcbiAgd2hpdGVMaXN0WydwYXVzZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGltcGxlbWVudGF0aW9uIGRlcGVuZGVudFxuICB3aGl0ZUxpc3RbJ3BhdXNlLWFmdGVyJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogaW1wbGVtZW50YXRpb24gZGVwZW5kZW50XG4gIHdoaXRlTGlzdFsncGF1c2UtYmVmb3JlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogaW1wbGVtZW50YXRpb24gZGVwZW5kZW50XG4gIHdoaXRlTGlzdFsncGVyc3BlY3RpdmUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsncGVyc3BlY3RpdmUtb3JpZ2luJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogNTAlIDUwJVxuICB3aGl0ZUxpc3RbJ3BpdGNoJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbWVkaXVtXG4gIHdoaXRlTGlzdFsncGl0Y2gtcmFuZ2UnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiA1MFxuICB3aGl0ZUxpc3RbJ3BsYXktZHVyaW5nJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3Bvc2l0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogc3RhdGljXG4gIHdoaXRlTGlzdFsncHJlc2VudGF0aW9uLWxldmVsJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ3F1b3RlcyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IHRleHRcbiAgd2hpdGVMaXN0WydyZWdpb24tZnJhZ21lbnQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsncmVzaXplJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3Jlc3QnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsncmVzdC1hZnRlciddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydyZXN0LWJlZm9yZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydyaWNobmVzcyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDUwXG4gIHdoaXRlTGlzdFsncmlnaHQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsncm90YXRpb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsncm90YXRpb24tcG9pbnQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiA1MCUgNTAlXG4gIHdoaXRlTGlzdFsncnVieS1hbGlnbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydydWJ5LW1lcmdlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogc2VwYXJhdGVcbiAgd2hpdGVMaXN0WydydWJ5LXBvc2l0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYmVmb3JlXG4gIHdoaXRlTGlzdFsnc2hhcGUtaW1hZ2UtdGhyZXNob2xkJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMC4wXG4gIHdoaXRlTGlzdFsnc2hhcGUtb3V0c2lkZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydzaGFwZS1tYXJnaW4nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsnc2l6ZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydzcGVhayddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydzcGVhay1hcyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ3NwZWFrLWhlYWRlciddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG9uY2VcbiAgd2hpdGVMaXN0WydzcGVhay1udW1lcmFsJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogY29udGludW91c1xuICB3aGl0ZUxpc3RbJ3NwZWFrLXB1bmN0dWF0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3NwZWVjaC1yYXRlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbWVkaXVtXG4gIHdoaXRlTGlzdFsnc3RyZXNzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogNTBcbiAgd2hpdGVMaXN0WydzdHJpbmctc2V0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3RhYi1zaXplJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogOFxuICB3aGl0ZUxpc3RbJ3RhYmxlLWxheW91dCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wyd0ZXh0LWFsaWduJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBzdGFydFxuICB3aGl0ZUxpc3RbJ3RleHQtYWxpZ24tbGFzdCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3RleHQtY29tYmluZS11cHJpZ2h0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsndGV4dC1kZWNvcmF0aW9uJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsndGV4dC1kZWNvcmF0aW9uLWNvbG9yJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBjdXJyZW50Q29sb3JcbiAgd2hpdGVMaXN0Wyd0ZXh0LWRlY29yYXRpb24tbGluZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3RleHQtZGVjb3JhdGlvbi1za2lwJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBvYmplY3RzXG4gIHdoaXRlTGlzdFsndGV4dC1kZWNvcmF0aW9uLXN0eWxlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBzb2xpZFxuICB3aGl0ZUxpc3RbJ3RleHQtZW1waGFzaXMnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0Wyd0ZXh0LWVtcGhhc2lzLWNvbG9yJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBjdXJyZW50Q29sb3JcbiAgd2hpdGVMaXN0Wyd0ZXh0LWVtcGhhc2lzLXBvc2l0aW9uJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBvdmVyIHJpZ2h0XG4gIHdoaXRlTGlzdFsndGV4dC1lbXBoYXNpcy1zdHlsZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3RleHQtaGVpZ2h0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsndGV4dC1pbmRlbnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0Wyd0ZXh0LWp1c3RpZnknXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wyd0ZXh0LW9yaWVudGF0aW9uJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBtaXhlZFxuICB3aGl0ZUxpc3RbJ3RleHQtb3ZlcmZsb3cnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGNsaXBcbiAgd2hpdGVMaXN0Wyd0ZXh0LXNoYWRvdyddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3RleHQtc3BhY2UtY29sbGFwc2UnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGNvbGxhcHNlXG4gIHdoaXRlTGlzdFsndGV4dC10cmFuc2Zvcm0nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wyd0ZXh0LXVuZGVybGluZS1wb3NpdGlvbiddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3RleHQtd3JhcCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsndG9wJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3RyYW5zZm9ybSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wyd0cmFuc2Zvcm0tb3JpZ2luJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogNTAlIDUwJSAwXG4gIHdoaXRlTGlzdFsndHJhbnNmb3JtLXN0eWxlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZmxhdFxuICB3aGl0ZUxpc3RbJ3RyYW5zaXRpb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsndHJhbnNpdGlvbi1kZWxheSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDBzXG4gIHdoaXRlTGlzdFsndHJhbnNpdGlvbi1kdXJhdGlvbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDBzXG4gIHdoaXRlTGlzdFsndHJhbnNpdGlvbi1wcm9wZXJ0eSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGFsbFxuICB3aGl0ZUxpc3RbJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZWFzZVxuICB3aGl0ZUxpc3RbJ3VuaWNvZGUtYmlkaSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ3ZlcnRpY2FsLWFsaWduJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYmFzZWxpbmVcbiAgd2hpdGVMaXN0Wyd2aXNpYmlsaXR5J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogdmlzaWJsZVxuICB3aGl0ZUxpc3RbJ3ZvaWNlLWJhbGFuY2UnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBjZW50ZXJcbiAgd2hpdGVMaXN0Wyd2b2ljZS1kdXJhdGlvbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wyd2b2ljZS1mYW1pbHknXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnRcbiAgd2hpdGVMaXN0Wyd2b2ljZS1waXRjaCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ3ZvaWNlLXJhbmdlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbWVkaXVtXG4gIHdoaXRlTGlzdFsndm9pY2UtcmF0ZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ3ZvaWNlLXN0cmVzcyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ3ZvaWNlLXZvbHVtZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ3ZvbHVtZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ3doaXRlLXNwYWNlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnd2lkb3dzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMlxuICB3aGl0ZUxpc3RbJ3dpZHRoJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnd2lsbC1jaGFuZ2UnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnd29yZC1icmVhayddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnd29yZC1zcGFjaW5nJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0Wyd3b3JkLXdyYXAnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ3dyYXAtZmxvdyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wyd3cmFwLXRocm91Z2gnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiB3cmFwXG4gIHdoaXRlTGlzdFsnd3JpdGluZy1tb2RlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogaG9yaXpvbnRhbC10YlxuICB3aGl0ZUxpc3RbJ3otaW5kZXgnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG5cbiAgcmV0dXJuIHdoaXRlTGlzdDtcbn1cblxuXG4vKipcbiAqIOWMuemFjeWIsOeZveWQjeWNleS4iueahOS4gOS4quWxnuaAp+aXtlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG9uQXR0ciAobmFtZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgLy8gZG8gbm90aGluZ1xufVxuXG4vKipcbiAqIOWMuemFjeWIsOS4jeWcqOeZveWQjeWNleS4iueahOS4gOS4quWxnuaAp+aXtlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG9uSWdub3JlQXR0ciAobmFtZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgLy8gZG8gbm90aGluZ1xufVxuXG52YXIgUkVHRVhQX1VSTF9KQVZBU0NSSVBUID0gL2phdmFzY3JpcHRcXHMqXFw6L2ltZztcblxuLyoqXG4gKiDov4fmu6TlsZ7mgKflgLxcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHNhZmVBdHRyVmFsdWUobmFtZSwgdmFsdWUpIHtcbiAgaWYgKFJFR0VYUF9VUkxfSkFWQVNDUklQVC50ZXN0KHZhbHVlKSkgcmV0dXJuICcnO1xuICByZXR1cm4gdmFsdWU7XG59XG5cblxuZXhwb3J0cy53aGl0ZUxpc3QgPSBnZXREZWZhdWx0V2hpdGVMaXN0KCk7XG5leHBvcnRzLmdldERlZmF1bHRXaGl0ZUxpc3QgPSBnZXREZWZhdWx0V2hpdGVMaXN0O1xuZXhwb3J0cy5vbkF0dHIgPSBvbkF0dHI7XG5leHBvcnRzLm9uSWdub3JlQXR0ciA9IG9uSWdub3JlQXR0cjtcbmV4cG9ydHMuc2FmZUF0dHJWYWx1ZSA9IHNhZmVBdHRyVmFsdWU7XG4iLCIvKipcbiAqIGNzc2ZpbHRlclxuICpcbiAqIEBhdXRob3Ig6ICB6Zu3PGxlaXpvbmdtaW5AZ21haWwuY29tPlxuICovXG5cbnZhciBERUZBVUxUID0gcmVxdWlyZSgnLi9kZWZhdWx0Jyk7XG52YXIgRmlsdGVyQ1NTID0gcmVxdWlyZSgnLi9jc3MnKTtcblxuXG4vKipcbiAqIFhTU+i/h+a7pFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBjc3Mg6KaB6L+H5ruk55qEQ1NT5Luj56CBXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyDpgInpobnvvJp3aGl0ZUxpc3QsIG9uQXR0ciwgb25JZ25vcmVBdHRyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGZpbHRlckNTUyAoaHRtbCwgb3B0aW9ucykge1xuICB2YXIgeHNzID0gbmV3IEZpbHRlckNTUyhvcHRpb25zKTtcbiAgcmV0dXJuIHhzcy5wcm9jZXNzKGh0bWwpO1xufVxuXG5cbi8vIOi+k+WHulxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZmlsdGVyQ1NTO1xuZXhwb3J0cy5GaWx0ZXJDU1MgPSBGaWx0ZXJDU1M7XG5mb3IgKHZhciBpIGluIERFRkFVTFQpIGV4cG9ydHNbaV0gPSBERUZBVUxUW2ldO1xuXG4vLyDlnKjmtY/op4jlmajnq6/kvb/nlKhcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICB3aW5kb3cuZmlsdGVyQ1NTID0gbW9kdWxlLmV4cG9ydHM7XG59XG4iLCIvKipcbiAqIGNzc2ZpbHRlclxuICpcbiAqIEBhdXRob3Ig6ICB6Zu3PGxlaXpvbmdtaW5AZ21haWwuY29tPlxuICovXG5cbnZhciBfID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cblxuLyoqXG4gKiDop6PmnpBzdHlsZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBjc3NcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9uQXR0ciDlpITnkIblsZ7mgKfnmoTlh73mlbBcbiAqICAg5Y+C5pWw5qC85byP77yaIGZ1bmN0aW9uIChzb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24sIG5hbWUsIHZhbHVlLCBzb3VyY2UpXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHBhcnNlU3R5bGUgKGNzcywgb25BdHRyKSB7XG4gIGNzcyA9IF8udHJpbVJpZ2h0KGNzcyk7XG4gIGlmIChjc3NbY3NzLmxlbmd0aCAtIDFdICE9PSAnOycpIGNzcyArPSAnOyc7XG4gIHZhciBjc3NMZW5ndGggPSBjc3MubGVuZ3RoO1xuICB2YXIgaXNQYXJlbnRoZXNpc09wZW4gPSBmYWxzZTtcbiAgdmFyIGxhc3RQb3MgPSAwO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXRDU1MgPSAnJztcblxuICBmdW5jdGlvbiBhZGROZXdBdHRyICgpIHtcbiAgICAvLyDlpoLmnpzmsqHmnInmraPluLjnmoTpl63lkIjlnIbmi6zlj7fvvIzliJnnm7TmjqXlv73nlaXlvZPliY3lsZ7mgKdcbiAgICBpZiAoIWlzUGFyZW50aGVzaXNPcGVuKSB7XG4gICAgICB2YXIgc291cmNlID0gXy50cmltKGNzcy5zbGljZShsYXN0UG9zLCBpKSk7XG4gICAgICB2YXIgaiA9IHNvdXJjZS5pbmRleE9mKCc6Jyk7XG4gICAgICBpZiAoaiAhPT0gLTEpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfLnRyaW0oc291cmNlLnNsaWNlKDAsIGopKTtcbiAgICAgICAgdmFyIHZhbHVlID0gXy50cmltKHNvdXJjZS5zbGljZShqICsgMSkpO1xuICAgICAgICAvLyDlv4XpobvmnInlsZ7mgKflkI3np7BcbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICB2YXIgcmV0ID0gb25BdHRyKGxhc3RQb3MsIHJldENTUy5sZW5ndGgsIG5hbWUsIHZhbHVlLCBzb3VyY2UpO1xuICAgICAgICAgIGlmIChyZXQpIHJldENTUyArPSByZXQgKyAnOyAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGxhc3RQb3MgPSBpICsgMTtcbiAgfVxuXG4gIGZvciAoOyBpIDwgY3NzTGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYyA9IGNzc1tpXTtcbiAgICBpZiAoYyA9PT0gJy8nICYmIGNzc1tpICsgMV0gPT09ICcqJykge1xuICAgICAgLy8g5aSH5rOo5byA5aeLXG4gICAgICB2YXIgaiA9IGNzcy5pbmRleE9mKCcqLycsIGkgKyAyKTtcbiAgICAgIC8vIOWmguaenOayoeacieato+W4uOeahOWkh+azqOe7k+adn++8jOWImeWQjumdoueahOmDqOWIhuWFqOmDqOi3s+i/h1xuICAgICAgaWYgKGogPT09IC0xKSBicmVhaztcbiAgICAgIC8vIOebtOaOpeWwhuW9k+WJjeS9jee9ruiwg+WIsOWkh+azqOe7k+Wwvu+8jOW5tuS4lOWIneWni+WMlueKtuaAgVxuICAgICAgaSA9IGogKyAxO1xuICAgICAgbGFzdFBvcyA9IGkgKyAxO1xuICAgICAgaXNQYXJlbnRoZXNpc09wZW4gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGMgPT09ICcoJykge1xuICAgICAgaXNQYXJlbnRoZXNpc09wZW4gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJyknKSB7XG4gICAgICBpc1BhcmVudGhlc2lzT3BlbiA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJzsnKSB7XG4gICAgICBpZiAoaXNQYXJlbnRoZXNpc09wZW4pIHtcbiAgICAgICAgLy8g5Zyo5ZyG5ous5Y+36YeM6Z2i77yM5b+955WlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGROZXdBdHRyKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjID09PSAnXFxuJykge1xuICAgICAgYWRkTmV3QXR0cigpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfLnRyaW0ocmV0Q1NTKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVN0eWxlO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGluZGV4T2Y6IGZ1bmN0aW9uIChhcnIsIGl0ZW0pIHtcbiAgICB2YXIgaSwgajtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgICAgIHJldHVybiBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICB9XG4gICAgZm9yIChpID0gMCwgaiA9IGFyci5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgIGlmIChhcnJbaV0gPT09IGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfSxcbiAgZm9yRWFjaDogZnVuY3Rpb24gKGFyciwgZm4sIHNjb3BlKSB7XG4gICAgdmFyIGksIGo7XG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKSB7XG4gICAgICByZXR1cm4gYXJyLmZvckVhY2goZm4sIHNjb3BlKTtcbiAgICB9XG4gICAgZm9yIChpID0gMCwgaiA9IGFyci5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgIGZuLmNhbGwoc2NvcGUsIGFycltpXSwgaSwgYXJyKTtcbiAgICB9XG4gIH0sXG4gIHRyaW06IGZ1bmN0aW9uIChzdHIpIHtcbiAgICBpZiAoU3RyaW5nLnByb3RvdHlwZS50cmltKSB7XG4gICAgICByZXR1cm4gc3RyLnRyaW0oKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oXlxccyopfChcXHMqJCkvZywgJycpO1xuICB9LFxuICB0cmltUmlnaHQ6IGZ1bmN0aW9uIChzdHIpIHtcbiAgICBpZiAoU3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQpIHtcbiAgICAgIHJldHVybiBzdHIudHJpbVJpZ2h0KCk7XG4gICAgfVxuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFxccyokKS9nLCAnJyk7XG4gIH1cbn07XG4iLCIvKipcbiAqIGRlZmF1bHQgc2V0dGluZ3NcbiAqXG4gKiBAYXV0aG9yIFpvbmdtaW4gTGVpPGxlaXpvbmdtaW5AZ21haWwuY29tPlxuICovXG5cbnZhciBGaWx0ZXJDU1MgPSByZXF1aXJlKFwiY3NzZmlsdGVyXCIpLkZpbHRlckNTUztcbnZhciBnZXREZWZhdWx0Q1NTV2hpdGVMaXN0ID0gcmVxdWlyZShcImNzc2ZpbHRlclwiKS5nZXREZWZhdWx0V2hpdGVMaXN0O1xudmFyIF8gPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0V2hpdGVMaXN0KCkge1xuICByZXR1cm4ge1xuICAgIGE6IFtcInRhcmdldFwiLCBcImhyZWZcIiwgXCJ0aXRsZVwiXSxcbiAgICBhYmJyOiBbXCJ0aXRsZVwiXSxcbiAgICBhZGRyZXNzOiBbXSxcbiAgICBhcmVhOiBbXCJzaGFwZVwiLCBcImNvb3Jkc1wiLCBcImhyZWZcIiwgXCJhbHRcIl0sXG4gICAgYXJ0aWNsZTogW10sXG4gICAgYXNpZGU6IFtdLFxuICAgIGF1ZGlvOiBbXG4gICAgICBcImF1dG9wbGF5XCIsXG4gICAgICBcImNvbnRyb2xzXCIsXG4gICAgICBcImNyb3Nzb3JpZ2luXCIsXG4gICAgICBcImxvb3BcIixcbiAgICAgIFwibXV0ZWRcIixcbiAgICAgIFwicHJlbG9hZFwiLFxuICAgICAgXCJzcmNcIixcbiAgICBdLFxuICAgIGI6IFtdLFxuICAgIGJkaTogW1wiZGlyXCJdLFxuICAgIGJkbzogW1wiZGlyXCJdLFxuICAgIGJpZzogW10sXG4gICAgYmxvY2txdW90ZTogW1wiY2l0ZVwiXSxcbiAgICBicjogW10sXG4gICAgY2FwdGlvbjogW10sXG4gICAgY2VudGVyOiBbXSxcbiAgICBjaXRlOiBbXSxcbiAgICBjb2RlOiBbXSxcbiAgICBjb2w6IFtcImFsaWduXCIsIFwidmFsaWduXCIsIFwic3BhblwiLCBcIndpZHRoXCJdLFxuICAgIGNvbGdyb3VwOiBbXCJhbGlnblwiLCBcInZhbGlnblwiLCBcInNwYW5cIiwgXCJ3aWR0aFwiXSxcbiAgICBkZDogW10sXG4gICAgZGVsOiBbXCJkYXRldGltZVwiXSxcbiAgICBkZXRhaWxzOiBbXCJvcGVuXCJdLFxuICAgIGRpdjogW10sXG4gICAgZGw6IFtdLFxuICAgIGR0OiBbXSxcbiAgICBlbTogW10sXG4gICAgZmlnY2FwdGlvbjogW10sXG4gICAgZmlndXJlOiBbXSxcbiAgICBmb250OiBbXCJjb2xvclwiLCBcInNpemVcIiwgXCJmYWNlXCJdLFxuICAgIGZvb3RlcjogW10sXG4gICAgaDE6IFtdLFxuICAgIGgyOiBbXSxcbiAgICBoMzogW10sXG4gICAgaDQ6IFtdLFxuICAgIGg1OiBbXSxcbiAgICBoNjogW10sXG4gICAgaGVhZGVyOiBbXSxcbiAgICBocjogW10sXG4gICAgaTogW10sXG4gICAgaW1nOiBbXCJzcmNcIiwgXCJhbHRcIiwgXCJ0aXRsZVwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwibG9hZGluZ1wiXSxcbiAgICBpbnM6IFtcImRhdGV0aW1lXCJdLFxuICAgIGtiZDogW10sXG4gICAgbGk6IFtdLFxuICAgIG1hcms6IFtdLFxuICAgIG5hdjogW10sXG4gICAgb2w6IFtdLFxuICAgIHA6IFtdLFxuICAgIHByZTogW10sXG4gICAgczogW10sXG4gICAgc2VjdGlvbjogW10sXG4gICAgc21hbGw6IFtdLFxuICAgIHNwYW46IFtdLFxuICAgIHN1YjogW10sXG4gICAgc3VtbWFyeTogW10sXG4gICAgc3VwOiBbXSxcbiAgICBzdHJvbmc6IFtdLFxuICAgIHN0cmlrZTogW10sXG4gICAgdGFibGU6IFtcIndpZHRoXCIsIFwiYm9yZGVyXCIsIFwiYWxpZ25cIiwgXCJ2YWxpZ25cIl0sXG4gICAgdGJvZHk6IFtcImFsaWduXCIsIFwidmFsaWduXCJdLFxuICAgIHRkOiBbXCJ3aWR0aFwiLCBcInJvd3NwYW5cIiwgXCJjb2xzcGFuXCIsIFwiYWxpZ25cIiwgXCJ2YWxpZ25cIl0sXG4gICAgdGZvb3Q6IFtcImFsaWduXCIsIFwidmFsaWduXCJdLFxuICAgIHRoOiBbXCJ3aWR0aFwiLCBcInJvd3NwYW5cIiwgXCJjb2xzcGFuXCIsIFwiYWxpZ25cIiwgXCJ2YWxpZ25cIl0sXG4gICAgdGhlYWQ6IFtcImFsaWduXCIsIFwidmFsaWduXCJdLFxuICAgIHRyOiBbXCJyb3dzcGFuXCIsIFwiYWxpZ25cIiwgXCJ2YWxpZ25cIl0sXG4gICAgdHQ6IFtdLFxuICAgIHU6IFtdLFxuICAgIHVsOiBbXSxcbiAgICB2aWRlbzogW1xuICAgICAgXCJhdXRvcGxheVwiLFxuICAgICAgXCJjb250cm9sc1wiLFxuICAgICAgXCJjcm9zc29yaWdpblwiLFxuICAgICAgXCJsb29wXCIsXG4gICAgICBcIm11dGVkXCIsXG4gICAgICBcInBsYXlzaW5saW5lXCIsXG4gICAgICBcInBvc3RlclwiLFxuICAgICAgXCJwcmVsb2FkXCIsXG4gICAgICBcInNyY1wiLFxuICAgICAgXCJoZWlnaHRcIixcbiAgICAgIFwid2lkdGhcIixcbiAgICBdLFxuICB9O1xufVxuXG52YXIgZGVmYXVsdENTU0ZpbHRlciA9IG5ldyBGaWx0ZXJDU1MoKTtcblxuLyoqXG4gKiBkZWZhdWx0IG9uVGFnIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHRhZ1xuICogQHBhcmFtIHtTdHJpbmd9IGh0bWxcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG9uVGFnKHRhZywgaHRtbCwgb3B0aW9ucykge1xuICAvLyBkbyBub3RoaW5nXG59XG5cbi8qKlxuICogZGVmYXVsdCBvbklnbm9yZVRhZyBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0YWdcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBvbklnbm9yZVRhZyh0YWcsIGh0bWwsIG9wdGlvbnMpIHtcbiAgLy8gZG8gbm90aGluZ1xufVxuXG4vKipcbiAqIGRlZmF1bHQgb25UYWdBdHRyIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHRhZ1xuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBvblRhZ0F0dHIodGFnLCBuYW1lLCB2YWx1ZSkge1xuICAvLyBkbyBub3RoaW5nXG59XG5cbi8qKlxuICogZGVmYXVsdCBvbklnbm9yZVRhZ0F0dHIgZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdGFnXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG9uSWdub3JlVGFnQXR0cih0YWcsIG5hbWUsIHZhbHVlKSB7XG4gIC8vIGRvIG5vdGhpbmdcbn1cblxuLyoqXG4gKiBkZWZhdWx0IGVzY2FwZUh0bWwgZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaHRtbFxuICovXG5mdW5jdGlvbiBlc2NhcGVIdG1sKGh0bWwpIHtcbiAgcmV0dXJuIGh0bWwucmVwbGFjZShSRUdFWFBfTFQsIFwiJmx0O1wiKS5yZXBsYWNlKFJFR0VYUF9HVCwgXCImZ3Q7XCIpO1xufVxuXG4vKipcbiAqIGRlZmF1bHQgc2FmZUF0dHJWYWx1ZSBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0YWdcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjc3NGaWx0ZXJcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc2FmZUF0dHJWYWx1ZSh0YWcsIG5hbWUsIHZhbHVlLCBjc3NGaWx0ZXIpIHtcbiAgLy8gdW5lc2NhcGUgYXR0cmlidXRlIHZhbHVlIGZpcnN0bHlcbiAgdmFsdWUgPSBmcmllbmRseUF0dHJWYWx1ZSh2YWx1ZSk7XG5cbiAgaWYgKG5hbWUgPT09IFwiaHJlZlwiIHx8IG5hbWUgPT09IFwic3JjXCIpIHtcbiAgICAvLyBmaWx0ZXIgYGhyZWZgIGFuZCBgc3JjYCBhdHRyaWJ1dGVcbiAgICAvLyBvbmx5IGFsbG93IHRoZSB2YWx1ZSB0aGF0IHN0YXJ0cyB3aXRoIGBodHRwOi8vYCB8IGBodHRwczovL2AgfCBgbWFpbHRvOmAgfCBgL2AgfCBgI2BcbiAgICB2YWx1ZSA9IF8udHJpbSh2YWx1ZSk7XG4gICAgaWYgKHZhbHVlID09PSBcIiNcIikgcmV0dXJuIFwiI1wiO1xuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIHZhbHVlLnN1YnN0cigwLCA3KSA9PT0gXCJodHRwOi8vXCIgfHxcbiAgICAgICAgdmFsdWUuc3Vic3RyKDAsIDgpID09PSBcImh0dHBzOi8vXCIgfHxcbiAgICAgICAgdmFsdWUuc3Vic3RyKDAsIDcpID09PSBcIm1haWx0bzpcIiB8fFxuICAgICAgICB2YWx1ZS5zdWJzdHIoMCwgNCkgPT09IFwidGVsOlwiIHx8XG4gICAgICAgIHZhbHVlLnN1YnN0cigwLCAxMSkgPT09IFwiZGF0YTppbWFnZS9cIiB8fFxuICAgICAgICB2YWx1ZS5zdWJzdHIoMCwgNikgPT09IFwiZnRwOi8vXCIgfHxcbiAgICAgICAgdmFsdWUuc3Vic3RyKDAsIDIpID09PSBcIi4vXCIgfHxcbiAgICAgICAgdmFsdWUuc3Vic3RyKDAsIDMpID09PSBcIi4uL1wiIHx8XG4gICAgICAgIHZhbHVlWzBdID09PSBcIiNcIiB8fFxuICAgICAgICB2YWx1ZVswXSA9PT0gXCIvXCJcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfSBlbHNlIGlmIChuYW1lID09PSBcImJhY2tncm91bmRcIikge1xuICAgIC8vIGZpbHRlciBgYmFja2dyb3VuZGAgYXR0cmlidXRlIChtYXliZSBubyB1c2UpXG4gICAgLy8gYGphdmFzY3JpcHQ6YFxuICAgIFJFR0VYUF9ERUZBVUxUX09OX1RBR19BVFRSXzQubGFzdEluZGV4ID0gMDtcbiAgICBpZiAoUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfNC50ZXN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKG5hbWUgPT09IFwic3R5bGVcIikge1xuICAgIC8vIGBleHByZXNzaW9uKClgXG4gICAgUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfNy5sYXN0SW5kZXggPSAwO1xuICAgIGlmIChSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl83LnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgLy8gYHVybCgpYFxuICAgIFJFR0VYUF9ERUZBVUxUX09OX1RBR19BVFRSXzgubGFzdEluZGV4ID0gMDtcbiAgICBpZiAoUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfOC50ZXN0KHZhbHVlKSkge1xuICAgICAgUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfNC5sYXN0SW5kZXggPSAwO1xuICAgICAgaWYgKFJFR0VYUF9ERUZBVUxUX09OX1RBR19BVFRSXzQudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjc3NGaWx0ZXIgIT09IGZhbHNlKSB7XG4gICAgICBjc3NGaWx0ZXIgPSBjc3NGaWx0ZXIgfHwgZGVmYXVsdENTU0ZpbHRlcjtcbiAgICAgIHZhbHVlID0gY3NzRmlsdGVyLnByb2Nlc3ModmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzY2FwZSBgPD5cImAgYmVmb3JlIHJldHVybnNcbiAgdmFsdWUgPSBlc2NhcGVBdHRyVmFsdWUodmFsdWUpO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbi8vIFJlZ0V4cCBsaXN0XG52YXIgUkVHRVhQX0xUID0gLzwvZztcbnZhciBSRUdFWFBfR1QgPSAvPi9nO1xudmFyIFJFR0VYUF9RVU9URSA9IC9cIi9nO1xudmFyIFJFR0VYUF9RVU9URV8yID0gLyZxdW90Oy9nO1xudmFyIFJFR0VYUF9BVFRSX1ZBTFVFXzEgPSAvJiMoW2EtekEtWjAtOV0qKTs/L2dpbTtcbnZhciBSRUdFWFBfQVRUUl9WQUxVRV9DT0xPTiA9IC8mY29sb247Py9naW07XG52YXIgUkVHRVhQX0FUVFJfVkFMVUVfTkVXTElORSA9IC8mbmV3bGluZTs/L2dpbTtcbi8vIHZhciBSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl8zID0gL1xcL1xcKnxcXCpcXC8vZ207XG52YXIgUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfNCA9XG4gIC8oKGpcXHMqYVxccyp2XFxzKmF8dlxccypifGxcXHMqaVxccyp2XFxzKmUpXFxzKnNcXHMqY1xccypyXFxzKmlcXHMqcFxccyp0XFxzKnxtXFxzKm9cXHMqY1xccypoXFxzKmEpOi9naTtcbi8vIHZhciBSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl81ID0gL15bXFxzXCInYF0qKGRcXHMqYVxccyp0XFxzKmFcXHMqKVxcOi9naTtcbi8vIHZhciBSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl82ID0gL15bXFxzXCInYF0qKGRcXHMqYVxccyp0XFxzKmFcXHMqKVxcOlxccyppbWFnZVxcLy9naTtcbnZhciBSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl83ID1cbiAgL2VcXHMqeFxccypwXFxzKnJcXHMqZVxccypzXFxzKnNcXHMqaVxccypvXFxzKm5cXHMqXFwoLiovZ2k7XG52YXIgUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfOCA9IC91XFxzKnJcXHMqbFxccypcXCguKi9naTtcblxuLyoqXG4gKiBlc2NhcGUgZG91YmxlIHF1b3RlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7U3RyaW5nfSBzdHJcbiAqL1xuZnVuY3Rpb24gZXNjYXBlUXVvdGUoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShSRUdFWFBfUVVPVEUsIFwiJnF1b3Q7XCIpO1xufVxuXG4vKipcbiAqIHVuZXNjYXBlIGRvdWJsZSBxdW90ZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge1N0cmluZ30gc3RyXG4gKi9cbmZ1bmN0aW9uIHVuZXNjYXBlUXVvdGUoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShSRUdFWFBfUVVPVEVfMiwgJ1wiJyk7XG59XG5cbi8qKlxuICogZXNjYXBlIGh0bWwgZW50aXRpZXNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUh0bWxFbnRpdGllcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFJFR0VYUF9BVFRSX1ZBTFVFXzEsIGZ1bmN0aW9uIHJlcGxhY2VVbmljb2RlKHN0ciwgY29kZSkge1xuICAgIHJldHVybiBjb2RlWzBdID09PSBcInhcIiB8fCBjb2RlWzBdID09PSBcIlhcIlxuICAgICAgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGNvZGUuc3Vic3RyKDEpLCAxNikpXG4gICAgICA6IFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoY29kZSwgMTApKTtcbiAgfSk7XG59XG5cbi8qKlxuICogZXNjYXBlIGh0bWw1IG5ldyBkYW5nZXIgZW50aXRpZXNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZURhbmdlckh0bWw1RW50aXRpZXMoc3RyKSB7XG4gIHJldHVybiBzdHJcbiAgICAucmVwbGFjZShSRUdFWFBfQVRUUl9WQUxVRV9DT0xPTiwgXCI6XCIpXG4gICAgLnJlcGxhY2UoUkVHRVhQX0FUVFJfVkFMVUVfTkVXTElORSwgXCIgXCIpO1xufVxuXG4vKipcbiAqIGNsZWFyIG5vbnByaW50YWJsZSBjaGFyYWN0ZXJzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBjbGVhck5vblByaW50YWJsZUNoYXJhY3RlcihzdHIpIHtcbiAgdmFyIHN0cjIgPSBcIlwiO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgc3RyMiArPSBzdHIuY2hhckNvZGVBdChpKSA8IDMyID8gXCIgXCIgOiBzdHIuY2hhckF0KGkpO1xuICB9XG4gIHJldHVybiBfLnRyaW0oc3RyMik7XG59XG5cbi8qKlxuICogZ2V0IGZyaWVuZGx5IGF0dHJpYnV0ZSB2YWx1ZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZnJpZW5kbHlBdHRyVmFsdWUoc3RyKSB7XG4gIHN0ciA9IHVuZXNjYXBlUXVvdGUoc3RyKTtcbiAgc3RyID0gZXNjYXBlSHRtbEVudGl0aWVzKHN0cik7XG4gIHN0ciA9IGVzY2FwZURhbmdlckh0bWw1RW50aXRpZXMoc3RyKTtcbiAgc3RyID0gY2xlYXJOb25QcmludGFibGVDaGFyYWN0ZXIoc3RyKTtcbiAgcmV0dXJuIHN0cjtcbn1cblxuLyoqXG4gKiB1bmVzY2FwZSBhdHRyaWJ1dGUgdmFsdWVcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUF0dHJWYWx1ZShzdHIpIHtcbiAgc3RyID0gZXNjYXBlUXVvdGUoc3RyKTtcbiAgc3RyID0gZXNjYXBlSHRtbChzdHIpO1xuICByZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIGBvbklnbm9yZVRhZ2AgZnVuY3Rpb24gZm9yIHJlbW92aW5nIGFsbCB0aGUgdGFncyB0aGF0IGFyZSBub3QgaW4gd2hpdGVsaXN0XG4gKi9cbmZ1bmN0aW9uIG9uSWdub3JlVGFnU3RyaXBBbGwoKSB7XG4gIHJldHVybiBcIlwiO1xufVxuXG4vKipcbiAqIHJlbW92ZSB0YWcgYm9keVxuICogc3BlY2lmeSBhIGB0YWdzYCBsaXN0LCBpZiB0aGUgdGFnIGlzIG5vdCBpbiB0aGUgYHRhZ3NgIGxpc3QgdGhlbiBwcm9jZXNzIGJ5IHRoZSBzcGVjaWZ5IGZ1bmN0aW9uIChvcHRpb25hbClcbiAqXG4gKiBAcGFyYW0ge2FycmF5fSB0YWdzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBuZXh0XG4gKi9cbmZ1bmN0aW9uIFN0cmlwVGFnQm9keSh0YWdzLCBuZXh0KSB7XG4gIGlmICh0eXBlb2YgbmV4dCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgbmV4dCA9IGZ1bmN0aW9uICgpIHt9O1xuICB9XG5cbiAgdmFyIGlzUmVtb3ZlQWxsVGFnID0gIUFycmF5LmlzQXJyYXkodGFncyk7XG4gIGZ1bmN0aW9uIGlzUmVtb3ZlVGFnKHRhZykge1xuICAgIGlmIChpc1JlbW92ZUFsbFRhZykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIF8uaW5kZXhPZih0YWdzLCB0YWcpICE9PSAtMTtcbiAgfVxuXG4gIHZhciByZW1vdmVMaXN0ID0gW107XG4gIHZhciBwb3NTdGFydCA9IGZhbHNlO1xuXG4gIHJldHVybiB7XG4gICAgb25JZ25vcmVUYWc6IGZ1bmN0aW9uICh0YWcsIGh0bWwsIG9wdGlvbnMpIHtcbiAgICAgIGlmIChpc1JlbW92ZVRhZyh0YWcpKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmlzQ2xvc2luZykge1xuICAgICAgICAgIHZhciByZXQgPSBcIlsvcmVtb3ZlZF1cIjtcbiAgICAgICAgICB2YXIgZW5kID0gb3B0aW9ucy5wb3NpdGlvbiArIHJldC5sZW5ndGg7XG4gICAgICAgICAgcmVtb3ZlTGlzdC5wdXNoKFtcbiAgICAgICAgICAgIHBvc1N0YXJ0ICE9PSBmYWxzZSA/IHBvc1N0YXJ0IDogb3B0aW9ucy5wb3NpdGlvbixcbiAgICAgICAgICAgIGVuZCxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICBwb3NTdGFydCA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFwb3NTdGFydCkge1xuICAgICAgICAgICAgcG9zU3RhcnQgPSBvcHRpb25zLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gXCJbcmVtb3ZlZF1cIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5leHQodGFnLCBodG1sLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gKGh0bWwpIHtcbiAgICAgIHZhciByZXRodG1sID0gXCJcIjtcbiAgICAgIHZhciBsYXN0UG9zID0gMDtcbiAgICAgIF8uZm9yRWFjaChyZW1vdmVMaXN0LCBmdW5jdGlvbiAocG9zKSB7XG4gICAgICAgIHJldGh0bWwgKz0gaHRtbC5zbGljZShsYXN0UG9zLCBwb3NbMF0pO1xuICAgICAgICBsYXN0UG9zID0gcG9zWzFdO1xuICAgICAgfSk7XG4gICAgICByZXRodG1sICs9IGh0bWwuc2xpY2UobGFzdFBvcyk7XG4gICAgICByZXR1cm4gcmV0aHRtbDtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIHJlbW92ZSBodG1sIGNvbW1lbnRzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGh0bWxcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc3RyaXBDb21tZW50VGFnKGh0bWwpIHtcbiAgdmFyIHJldEh0bWwgPSBcIlwiO1xuICB2YXIgbGFzdFBvcyA9IDA7XG4gIHdoaWxlIChsYXN0UG9zIDwgaHRtbC5sZW5ndGgpIHtcbiAgICB2YXIgaSA9IGh0bWwuaW5kZXhPZihcIjwhLS1cIiwgbGFzdFBvcyk7XG4gICAgaWYgKGkgPT09IC0xKSB7XG4gICAgICByZXRIdG1sICs9IGh0bWwuc2xpY2UobGFzdFBvcyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0SHRtbCArPSBodG1sLnNsaWNlKGxhc3RQb3MsIGkpO1xuICAgIHZhciBqID0gaHRtbC5pbmRleE9mKFwiLS0+XCIsIGkpO1xuICAgIGlmIChqID09PSAtMSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxhc3RQb3MgPSBqICsgMztcbiAgfVxuICByZXR1cm4gcmV0SHRtbDtcbn1cblxuLyoqXG4gKiByZW1vdmUgaW52aXNpYmxlIGNoYXJhY3RlcnNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaHRtbFxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBzdHJpcEJsYW5rQ2hhcihodG1sKSB7XG4gIHZhciBjaGFycyA9IGh0bWwuc3BsaXQoXCJcIik7XG4gIGNoYXJzID0gY2hhcnMuZmlsdGVyKGZ1bmN0aW9uIChjaGFyKSB7XG4gICAgdmFyIGMgPSBjaGFyLmNoYXJDb2RlQXQoMCk7XG4gICAgaWYgKGMgPT09IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjIDw9IDMxKSB7XG4gICAgICBpZiAoYyA9PT0gMTAgfHwgYyA9PT0gMTMpIHJldHVybiB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiBjaGFycy5qb2luKFwiXCIpO1xufVxuXG5leHBvcnRzLndoaXRlTGlzdCA9IGdldERlZmF1bHRXaGl0ZUxpc3QoKTtcbmV4cG9ydHMuZ2V0RGVmYXVsdFdoaXRlTGlzdCA9IGdldERlZmF1bHRXaGl0ZUxpc3Q7XG5leHBvcnRzLm9uVGFnID0gb25UYWc7XG5leHBvcnRzLm9uSWdub3JlVGFnID0gb25JZ25vcmVUYWc7XG5leHBvcnRzLm9uVGFnQXR0ciA9IG9uVGFnQXR0cjtcbmV4cG9ydHMub25JZ25vcmVUYWdBdHRyID0gb25JZ25vcmVUYWdBdHRyO1xuZXhwb3J0cy5zYWZlQXR0clZhbHVlID0gc2FmZUF0dHJWYWx1ZTtcbmV4cG9ydHMuZXNjYXBlSHRtbCA9IGVzY2FwZUh0bWw7XG5leHBvcnRzLmVzY2FwZVF1b3RlID0gZXNjYXBlUXVvdGU7XG5leHBvcnRzLnVuZXNjYXBlUXVvdGUgPSB1bmVzY2FwZVF1b3RlO1xuZXhwb3J0cy5lc2NhcGVIdG1sRW50aXRpZXMgPSBlc2NhcGVIdG1sRW50aXRpZXM7XG5leHBvcnRzLmVzY2FwZURhbmdlckh0bWw1RW50aXRpZXMgPSBlc2NhcGVEYW5nZXJIdG1sNUVudGl0aWVzO1xuZXhwb3J0cy5jbGVhck5vblByaW50YWJsZUNoYXJhY3RlciA9IGNsZWFyTm9uUHJpbnRhYmxlQ2hhcmFjdGVyO1xuZXhwb3J0cy5mcmllbmRseUF0dHJWYWx1ZSA9IGZyaWVuZGx5QXR0clZhbHVlO1xuZXhwb3J0cy5lc2NhcGVBdHRyVmFsdWUgPSBlc2NhcGVBdHRyVmFsdWU7XG5leHBvcnRzLm9uSWdub3JlVGFnU3RyaXBBbGwgPSBvbklnbm9yZVRhZ1N0cmlwQWxsO1xuZXhwb3J0cy5TdHJpcFRhZ0JvZHkgPSBTdHJpcFRhZ0JvZHk7XG5leHBvcnRzLnN0cmlwQ29tbWVudFRhZyA9IHN0cmlwQ29tbWVudFRhZztcbmV4cG9ydHMuc3RyaXBCbGFua0NoYXIgPSBzdHJpcEJsYW5rQ2hhcjtcbmV4cG9ydHMuYXR0cmlidXRlV3JhcFNpZ24gPSAnXCInO1xuZXhwb3J0cy5jc3NGaWx0ZXIgPSBkZWZhdWx0Q1NTRmlsdGVyO1xuZXhwb3J0cy5nZXREZWZhdWx0Q1NTV2hpdGVMaXN0ID0gZ2V0RGVmYXVsdENTU1doaXRlTGlzdDtcbiIsIi8qKlxuICogeHNzXG4gKlxuICogQGF1dGhvciBab25nbWluIExlaTxsZWl6b25nbWluQGdtYWlsLmNvbT5cbiAqL1xuXG52YXIgREVGQVVMVCA9IHJlcXVpcmUoXCIuL2RlZmF1bHRcIik7XG52YXIgcGFyc2VyID0gcmVxdWlyZShcIi4vcGFyc2VyXCIpO1xudmFyIEZpbHRlclhTUyA9IHJlcXVpcmUoXCIuL3hzc1wiKTtcblxuLyoqXG4gKiBmaWx0ZXIgeHNzIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGh0bWxcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIHsgd2hpdGVMaXN0LCBvblRhZywgb25UYWdBdHRyLCBvbklnbm9yZVRhZywgb25JZ25vcmVUYWdBdHRyLCBzYWZlQXR0clZhbHVlLCBlc2NhcGVIdG1sIH1cbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZmlsdGVyWFNTKGh0bWwsIG9wdGlvbnMpIHtcbiAgdmFyIHhzcyA9IG5ldyBGaWx0ZXJYU1Mob3B0aW9ucyk7XG4gIHJldHVybiB4c3MucHJvY2VzcyhodG1sKTtcbn1cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZmlsdGVyWFNTO1xuZXhwb3J0cy5maWx0ZXJYU1MgPSBmaWx0ZXJYU1M7XG5leHBvcnRzLkZpbHRlclhTUyA9IEZpbHRlclhTUztcblxuKGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgaSBpbiBERUZBVUxUKSB7XG4gICAgZXhwb3J0c1tpXSA9IERFRkFVTFRbaV07XG4gIH1cbiAgZm9yICh2YXIgaiBpbiBwYXJzZXIpIHtcbiAgICBleHBvcnRzW2pdID0gcGFyc2VyW2pdO1xuICB9XG59KSgpO1xuXG4vLyB1c2luZyBgeHNzYCBvbiB0aGUgYnJvd3Nlciwgb3V0cHV0IGBmaWx0ZXJYU1NgIHRvIHRoZSBnbG9iYWxzXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICB3aW5kb3cuZmlsdGVyWFNTID0gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIHVzaW5nIGB4c3NgIG9uIHRoZSBXZWJXb3JrZXIsIG91dHB1dCBgZmlsdGVyWFNTYCB0byB0aGUgZ2xvYmFsc1xuZnVuY3Rpb24gaXNXb3JrZXJFbnYoKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICB0eXBlb2YgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICBzZWxmIGluc3RhbmNlb2YgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVcbiAgKTtcbn1cbmlmIChpc1dvcmtlckVudigpKSB7XG4gIHNlbGYuZmlsdGVyWFNTID0gbW9kdWxlLmV4cG9ydHM7XG59XG4iLCIvKipcbiAqIFNpbXBsZSBIVE1MIFBhcnNlclxuICpcbiAqIEBhdXRob3IgWm9uZ21pbiBMZWk8bGVpem9uZ21pbkBnbWFpbC5jb20+XG4gKi9cblxudmFyIF8gPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG4vKipcbiAqIGdldCB0YWcgbmFtZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sIGUuZy4gJzxhIGhlZj1cIiNcIj4nXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldFRhZ05hbWUoaHRtbCkge1xuICB2YXIgaSA9IF8uc3BhY2VJbmRleChodG1sKTtcbiAgdmFyIHRhZ05hbWU7XG4gIGlmIChpID09PSAtMSkge1xuICAgIHRhZ05hbWUgPSBodG1sLnNsaWNlKDEsIC0xKTtcbiAgfSBlbHNlIHtcbiAgICB0YWdOYW1lID0gaHRtbC5zbGljZSgxLCBpICsgMSk7XG4gIH1cbiAgdGFnTmFtZSA9IF8udHJpbSh0YWdOYW1lKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAodGFnTmFtZS5zbGljZSgwLCAxKSA9PT0gXCIvXCIpIHRhZ05hbWUgPSB0YWdOYW1lLnNsaWNlKDEpO1xuICBpZiAodGFnTmFtZS5zbGljZSgtMSkgPT09IFwiL1wiKSB0YWdOYW1lID0gdGFnTmFtZS5zbGljZSgwLCAtMSk7XG4gIHJldHVybiB0YWdOYW1lO1xufVxuXG4vKipcbiAqIGlzIGNsb3NlIHRhZz9cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaHRtbCDlpoLvvJonPGEgaGVmPVwiI1wiPidcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzQ2xvc2luZyhodG1sKSB7XG4gIHJldHVybiBodG1sLnNsaWNlKDAsIDIpID09PSBcIjwvXCI7XG59XG5cbi8qKlxuICogcGFyc2UgaW5wdXQgaHRtbCBhbmQgcmV0dXJucyBwcm9jZXNzZWQgaHRtbFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvblRhZyBlLmcuIGZ1bmN0aW9uIChzb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24sIHRhZywgaHRtbCwgaXNDbG9zaW5nKVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXNjYXBlSHRtbFxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBwYXJzZVRhZyhodG1sLCBvblRhZywgZXNjYXBlSHRtbCkge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgcmV0aHRtbCA9IFwiXCI7XG4gIHZhciBsYXN0UG9zID0gMDtcbiAgdmFyIHRhZ1N0YXJ0ID0gZmFsc2U7XG4gIHZhciBxdW90ZVN0YXJ0ID0gZmFsc2U7XG4gIHZhciBjdXJyZW50UG9zID0gMDtcbiAgdmFyIGxlbiA9IGh0bWwubGVuZ3RoO1xuICB2YXIgY3VycmVudFRhZ05hbWUgPSBcIlwiO1xuICB2YXIgY3VycmVudEh0bWwgPSBcIlwiO1xuXG4gIGNoYXJpdGVyYXRvcjogZm9yIChjdXJyZW50UG9zID0gMDsgY3VycmVudFBvcyA8IGxlbjsgY3VycmVudFBvcysrKSB7XG4gICAgdmFyIGMgPSBodG1sLmNoYXJBdChjdXJyZW50UG9zKTtcbiAgICBpZiAodGFnU3RhcnQgPT09IGZhbHNlKSB7XG4gICAgICBpZiAoYyA9PT0gXCI8XCIpIHtcbiAgICAgICAgdGFnU3RhcnQgPSBjdXJyZW50UG9zO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHF1b3RlU3RhcnQgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChjID09PSBcIjxcIikge1xuICAgICAgICAgIHJldGh0bWwgKz0gZXNjYXBlSHRtbChodG1sLnNsaWNlKGxhc3RQb3MsIGN1cnJlbnRQb3MpKTtcbiAgICAgICAgICB0YWdTdGFydCA9IGN1cnJlbnRQb3M7XG4gICAgICAgICAgbGFzdFBvcyA9IGN1cnJlbnRQb3M7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGMgPT09IFwiPlwiIHx8IGN1cnJlbnRQb3MgPT09IGxlbiAtIDEpIHtcbiAgICAgICAgICByZXRodG1sICs9IGVzY2FwZUh0bWwoaHRtbC5zbGljZShsYXN0UG9zLCB0YWdTdGFydCkpO1xuICAgICAgICAgIGN1cnJlbnRIdG1sID0gaHRtbC5zbGljZSh0YWdTdGFydCwgY3VycmVudFBvcyArIDEpO1xuICAgICAgICAgIGN1cnJlbnRUYWdOYW1lID0gZ2V0VGFnTmFtZShjdXJyZW50SHRtbCk7XG4gICAgICAgICAgcmV0aHRtbCArPSBvblRhZyhcbiAgICAgICAgICAgIHRhZ1N0YXJ0LFxuICAgICAgICAgICAgcmV0aHRtbC5sZW5ndGgsXG4gICAgICAgICAgICBjdXJyZW50VGFnTmFtZSxcbiAgICAgICAgICAgIGN1cnJlbnRIdG1sLFxuICAgICAgICAgICAgaXNDbG9zaW5nKGN1cnJlbnRIdG1sKVxuICAgICAgICAgICk7XG4gICAgICAgICAgbGFzdFBvcyA9IGN1cnJlbnRQb3MgKyAxO1xuICAgICAgICAgIHRhZ1N0YXJ0ID0gZmFsc2U7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGMgPT09ICdcIicgfHwgYyA9PT0gXCInXCIpIHtcbiAgICAgICAgICB2YXIgaSA9IDE7XG4gICAgICAgICAgdmFyIGljID0gaHRtbC5jaGFyQXQoY3VycmVudFBvcyAtIGkpO1xuXG4gICAgICAgICAgd2hpbGUgKGljLnRyaW0oKSA9PT0gXCJcIiB8fCBpYyA9PT0gXCI9XCIpIHtcbiAgICAgICAgICAgIGlmIChpYyA9PT0gXCI9XCIpIHtcbiAgICAgICAgICAgICAgcXVvdGVTdGFydCA9IGM7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIGNoYXJpdGVyYXRvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGljID0gaHRtbC5jaGFyQXQoY3VycmVudFBvcyAtICsraSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYyA9PT0gcXVvdGVTdGFydCkge1xuICAgICAgICAgIHF1b3RlU3RhcnQgPSBmYWxzZTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAobGFzdFBvcyA8IGxlbikge1xuICAgIHJldGh0bWwgKz0gZXNjYXBlSHRtbChodG1sLnN1YnN0cihsYXN0UG9zKSk7XG4gIH1cblxuICByZXR1cm4gcmV0aHRtbDtcbn1cblxudmFyIFJFR0VYUF9JTExFR0FMX0FUVFJfTkFNRSA9IC9bXmEtekEtWjAtOVxcXFxfOi4tXS9naW07XG5cbi8qKlxuICogcGFyc2UgaW5wdXQgYXR0cmlidXRlcyBhbmQgcmV0dXJucyBwcm9jZXNzZWQgYXR0cmlidXRlc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sIGUuZy4gYGhyZWY9XCIjXCIgdGFyZ2V0PVwiX2JsYW5rXCJgXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbkF0dHIgZS5nLiBgZnVuY3Rpb24gKG5hbWUsIHZhbHVlKWBcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcGFyc2VBdHRyKGh0bWwsIG9uQXR0cikge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgbGFzdFBvcyA9IDA7XG4gIHZhciBsYXN0TWFya1BvcyA9IDA7XG4gIHZhciByZXRBdHRycyA9IFtdO1xuICB2YXIgdG1wTmFtZSA9IGZhbHNlO1xuICB2YXIgbGVuID0gaHRtbC5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gYWRkQXR0cihuYW1lLCB2YWx1ZSkge1xuICAgIG5hbWUgPSBfLnRyaW0obmFtZSk7XG4gICAgbmFtZSA9IG5hbWUucmVwbGFjZShSRUdFWFBfSUxMRUdBTF9BVFRSX05BTUUsIFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKG5hbWUubGVuZ3RoIDwgMSkgcmV0dXJuO1xuICAgIHZhciByZXQgPSBvbkF0dHIobmFtZSwgdmFsdWUgfHwgXCJcIik7XG4gICAgaWYgKHJldCkgcmV0QXR0cnMucHVzaChyZXQpO1xuICB9XG5cbiAgLy8g6YCQ5Liq5YiG5p6Q5a2X56ymXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGh0bWwuY2hhckF0KGkpO1xuICAgIHZhciB2LCBqO1xuICAgIGlmICh0bXBOYW1lID09PSBmYWxzZSAmJiBjID09PSBcIj1cIikge1xuICAgICAgdG1wTmFtZSA9IGh0bWwuc2xpY2UobGFzdFBvcywgaSk7XG4gICAgICBsYXN0UG9zID0gaSArIDE7XG4gICAgICBsYXN0TWFya1BvcyA9IGh0bWwuY2hhckF0KGxhc3RQb3MpID09PSAnXCInIHx8IGh0bWwuY2hhckF0KGxhc3RQb3MpID09PSBcIidcIiA/IGxhc3RQb3MgOiBmaW5kTmV4dFF1b3RhdGlvbk1hcmsoaHRtbCwgaSArIDEpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICh0bXBOYW1lICE9PSBmYWxzZSkge1xuICAgICAgaWYgKFxuICAgICAgICBpID09PSBsYXN0TWFya1Bvc1xuICAgICAgKSB7XG4gICAgICAgIGogPSBodG1sLmluZGV4T2YoYywgaSArIDEpO1xuICAgICAgICBpZiAoaiA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2ID0gXy50cmltKGh0bWwuc2xpY2UobGFzdE1hcmtQb3MgKyAxLCBqKSk7XG4gICAgICAgICAgYWRkQXR0cih0bXBOYW1lLCB2KTtcbiAgICAgICAgICB0bXBOYW1lID0gZmFsc2U7XG4gICAgICAgICAgaSA9IGo7XG4gICAgICAgICAgbGFzdFBvcyA9IGkgKyAxO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgvXFxzfFxcbnxcXHQvLnRlc3QoYykpIHtcbiAgICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoL1xcc3xcXG58XFx0L2csIFwiIFwiKTtcbiAgICAgIGlmICh0bXBOYW1lID09PSBmYWxzZSkge1xuICAgICAgICBqID0gZmluZE5leHRFcXVhbChodG1sLCBpKTtcbiAgICAgICAgaWYgKGogPT09IC0xKSB7XG4gICAgICAgICAgdiA9IF8udHJpbShodG1sLnNsaWNlKGxhc3RQb3MsIGkpKTtcbiAgICAgICAgICBhZGRBdHRyKHYpO1xuICAgICAgICAgIHRtcE5hbWUgPSBmYWxzZTtcbiAgICAgICAgICBsYXN0UG9zID0gaSArIDE7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaSA9IGogLSAxO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqID0gZmluZEJlZm9yZUVxdWFsKGh0bWwsIGkgLSAxKTtcbiAgICAgICAgaWYgKGogPT09IC0xKSB7XG4gICAgICAgICAgdiA9IF8udHJpbShodG1sLnNsaWNlKGxhc3RQb3MsIGkpKTtcbiAgICAgICAgICB2ID0gc3RyaXBRdW90ZVdyYXAodik7XG4gICAgICAgICAgYWRkQXR0cih0bXBOYW1lLCB2KTtcbiAgICAgICAgICB0bXBOYW1lID0gZmFsc2U7XG4gICAgICAgICAgbGFzdFBvcyA9IGkgKyAxO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGxhc3RQb3MgPCBodG1sLmxlbmd0aCkge1xuICAgIGlmICh0bXBOYW1lID09PSBmYWxzZSkge1xuICAgICAgYWRkQXR0cihodG1sLnNsaWNlKGxhc3RQb3MpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWRkQXR0cih0bXBOYW1lLCBzdHJpcFF1b3RlV3JhcChfLnRyaW0oaHRtbC5zbGljZShsYXN0UG9zKSkpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gXy50cmltKHJldEF0dHJzLmpvaW4oXCIgXCIpKTtcbn1cblxuZnVuY3Rpb24gZmluZE5leHRFcXVhbChzdHIsIGkpIHtcbiAgZm9yICg7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYyA9IHN0cltpXTtcbiAgICBpZiAoYyA9PT0gXCIgXCIpIGNvbnRpbnVlO1xuICAgIGlmIChjID09PSBcIj1cIikgcmV0dXJuIGk7XG4gICAgcmV0dXJuIC0xO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmROZXh0UXVvdGF0aW9uTWFyayhzdHIsIGkpIHtcbiAgZm9yICg7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYyA9IHN0cltpXTtcbiAgICBpZiAoYyA9PT0gXCIgXCIpIGNvbnRpbnVlO1xuICAgIGlmIChjID09PSBcIidcIiB8fCBjID09PSAnXCInKSByZXR1cm4gaTtcbiAgICByZXR1cm4gLTE7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEJlZm9yZUVxdWFsKHN0ciwgaSkge1xuICBmb3IgKDsgaSA+IDA7IGktLSkge1xuICAgIHZhciBjID0gc3RyW2ldO1xuICAgIGlmIChjID09PSBcIiBcIikgY29udGludWU7XG4gICAgaWYgKGMgPT09IFwiPVwiKSByZXR1cm4gaTtcbiAgICByZXR1cm4gLTE7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNRdW90ZVdyYXBTdHJpbmcodGV4dCkge1xuICBpZiAoXG4gICAgKHRleHRbMF0gPT09ICdcIicgJiYgdGV4dFt0ZXh0Lmxlbmd0aCAtIDFdID09PSAnXCInKSB8fFxuICAgICh0ZXh0WzBdID09PSBcIidcIiAmJiB0ZXh0W3RleHQubGVuZ3RoIC0gMV0gPT09IFwiJ1wiKVxuICApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RyaXBRdW90ZVdyYXAodGV4dCkge1xuICBpZiAoaXNRdW90ZVdyYXBTdHJpbmcodGV4dCkpIHtcbiAgICByZXR1cm4gdGV4dC5zdWJzdHIoMSwgdGV4dC5sZW5ndGggLSAyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxufVxuXG5leHBvcnRzLnBhcnNlVGFnID0gcGFyc2VUYWc7XG5leHBvcnRzLnBhcnNlQXR0ciA9IHBhcnNlQXR0cjtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBpbmRleE9mOiBmdW5jdGlvbiAoYXJyLCBpdGVtKSB7XG4gICAgdmFyIGksIGo7XG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKSB7XG4gICAgICByZXR1cm4gYXJyLmluZGV4T2YoaXRlbSk7XG4gICAgfVxuICAgIGZvciAoaSA9IDAsIGogPSBhcnIubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICBpZiAoYXJyW2ldID09PSBpdGVtKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH0sXG4gIGZvckVhY2g6IGZ1bmN0aW9uIChhcnIsIGZuLCBzY29wZSkge1xuICAgIHZhciBpLCBqO1xuICAgIGlmIChBcnJheS5wcm90b3R5cGUuZm9yRWFjaCkge1xuICAgICAgcmV0dXJuIGFyci5mb3JFYWNoKGZuLCBzY29wZSk7XG4gICAgfVxuICAgIGZvciAoaSA9IDAsIGogPSBhcnIubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICBmbi5jYWxsKHNjb3BlLCBhcnJbaV0sIGksIGFycik7XG4gICAgfVxuICB9LFxuICB0cmltOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgaWYgKFN0cmluZy5wcm90b3R5cGUudHJpbSkge1xuICAgICAgcmV0dXJuIHN0ci50cmltKCk7XG4gICAgfVxuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKF5cXHMqKXwoXFxzKiQpL2csIFwiXCIpO1xuICB9LFxuICBzcGFjZUluZGV4OiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgdmFyIHJlZyA9IC9cXHN8XFxufFxcdC87XG4gICAgdmFyIG1hdGNoID0gcmVnLmV4ZWMoc3RyKTtcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaC5pbmRleCA6IC0xO1xuICB9LFxufTtcbiIsIi8qKlxuICogZmlsdGVyIHhzc1xuICpcbiAqIEBhdXRob3IgWm9uZ21pbiBMZWk8bGVpem9uZ21pbkBnbWFpbC5jb20+XG4gKi9cblxudmFyIEZpbHRlckNTUyA9IHJlcXVpcmUoXCJjc3NmaWx0ZXJcIikuRmlsdGVyQ1NTO1xudmFyIERFRkFVTFQgPSByZXF1aXJlKFwiLi9kZWZhdWx0XCIpO1xudmFyIHBhcnNlciA9IHJlcXVpcmUoXCIuL3BhcnNlclwiKTtcbnZhciBwYXJzZVRhZyA9IHBhcnNlci5wYXJzZVRhZztcbnZhciBwYXJzZUF0dHIgPSBwYXJzZXIucGFyc2VBdHRyO1xudmFyIF8gPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG4vKipcbiAqIHJldHVybnMgYHRydWVgIGlmIHRoZSBpbnB1dCB2YWx1ZSBpcyBgdW5kZWZpbmVkYCBvciBgbnVsbGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5mdW5jdGlvbiBpc051bGwob2JqKSB7XG4gIHJldHVybiBvYmogPT09IHVuZGVmaW5lZCB8fCBvYmogPT09IG51bGw7XG59XG5cbi8qKlxuICogZ2V0IGF0dHJpYnV0ZXMgZm9yIGEgdGFnXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGh0bWxcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqICAgLSB7U3RyaW5nfSBodG1sXG4gKiAgIC0ge0Jvb2xlYW59IGNsb3NpbmdcbiAqL1xuZnVuY3Rpb24gZ2V0QXR0cnMoaHRtbCkge1xuICB2YXIgaSA9IF8uc3BhY2VJbmRleChodG1sKTtcbiAgaWYgKGkgPT09IC0xKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGh0bWw6IFwiXCIsXG4gICAgICBjbG9zaW5nOiBodG1sW2h0bWwubGVuZ3RoIC0gMl0gPT09IFwiL1wiLFxuICAgIH07XG4gIH1cbiAgaHRtbCA9IF8udHJpbShodG1sLnNsaWNlKGkgKyAxLCAtMSkpO1xuICB2YXIgaXNDbG9zaW5nID0gaHRtbFtodG1sLmxlbmd0aCAtIDFdID09PSBcIi9cIjtcbiAgaWYgKGlzQ2xvc2luZykgaHRtbCA9IF8udHJpbShodG1sLnNsaWNlKDAsIC0xKSk7XG4gIHJldHVybiB7XG4gICAgaHRtbDogaHRtbCxcbiAgICBjbG9zaW5nOiBpc0Nsb3NpbmcsXG4gIH07XG59XG5cbi8qKlxuICogc2hhbGxvdyBjb3B5XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBzaGFsbG93Q29weU9iamVjdChvYmopIHtcbiAgdmFyIHJldCA9IHt9O1xuICBmb3IgKHZhciBpIGluIG9iaikge1xuICAgIHJldFtpXSA9IG9ialtpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBrZXlzVG9Mb3dlckNhc2Uob2JqKSB7XG4gIHZhciByZXQgPSB7fTtcbiAgZm9yICh2YXIgaSBpbiBvYmopIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpbaV0pKSB7XG4gICAgICByZXRbaS50b0xvd2VyQ2FzZSgpXSA9IG9ialtpXS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udG9Mb3dlckNhc2UoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXRbaS50b0xvd2VyQ2FzZSgpXSA9IG9ialtpXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBGaWx0ZXJYU1MgY2xhc3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogICAgICAgIHdoaXRlTGlzdCAob3IgYWxsb3dMaXN0KSwgb25UYWcsIG9uVGFnQXR0ciwgb25JZ25vcmVUYWcsXG4gKiAgICAgICAgb25JZ25vcmVUYWdBdHRyLCBzYWZlQXR0clZhbHVlLCBlc2NhcGVIdG1sXG4gKiAgICAgICAgc3RyaXBJZ25vcmVUYWdCb2R5LCBhbGxvd0NvbW1lbnRUYWcsIHN0cmlwQmxhbmtDaGFyXG4gKiAgICAgICAgY3Nze3doaXRlTGlzdCwgb25BdHRyLCBvbklnbm9yZUF0dHJ9IGBjc3M9ZmFsc2VgIG1lYW5zIGRvbid0IHVzZSBgY3NzZmlsdGVyYFxuICovXG5mdW5jdGlvbiBGaWx0ZXJYU1Mob3B0aW9ucykge1xuICBvcHRpb25zID0gc2hhbGxvd0NvcHlPYmplY3Qob3B0aW9ucyB8fCB7fSk7XG5cbiAgaWYgKG9wdGlvbnMuc3RyaXBJZ25vcmVUYWcpIHtcbiAgICBpZiAob3B0aW9ucy5vbklnbm9yZVRhZykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ05vdGVzOiBjYW5ub3QgdXNlIHRoZXNlIHR3byBvcHRpb25zIFwic3RyaXBJZ25vcmVUYWdcIiBhbmQgXCJvbklnbm9yZVRhZ1wiIGF0IHRoZSBzYW1lIHRpbWUnXG4gICAgICApO1xuICAgIH1cbiAgICBvcHRpb25zLm9uSWdub3JlVGFnID0gREVGQVVMVC5vbklnbm9yZVRhZ1N0cmlwQWxsO1xuICB9XG4gIGlmIChvcHRpb25zLndoaXRlTGlzdCB8fCBvcHRpb25zLmFsbG93TGlzdCkge1xuICAgIG9wdGlvbnMud2hpdGVMaXN0ID0ga2V5c1RvTG93ZXJDYXNlKG9wdGlvbnMud2hpdGVMaXN0IHx8IG9wdGlvbnMuYWxsb3dMaXN0KTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLndoaXRlTGlzdCA9IERFRkFVTFQud2hpdGVMaXN0O1xuICB9XG5cbiAgdGhpcy5hdHRyaWJ1dGVXcmFwU2lnbiA9IG9wdGlvbnMuc2luZ2xlUXVvdGVkQXR0cmlidXRlVmFsdWUgPT09IHRydWUgPyBcIidcIiA6IERFRkFVTFQuYXR0cmlidXRlV3JhcFNpZ247XG5cbiAgb3B0aW9ucy5vblRhZyA9IG9wdGlvbnMub25UYWcgfHwgREVGQVVMVC5vblRhZztcbiAgb3B0aW9ucy5vblRhZ0F0dHIgPSBvcHRpb25zLm9uVGFnQXR0ciB8fCBERUZBVUxULm9uVGFnQXR0cjtcbiAgb3B0aW9ucy5vbklnbm9yZVRhZyA9IG9wdGlvbnMub25JZ25vcmVUYWcgfHwgREVGQVVMVC5vbklnbm9yZVRhZztcbiAgb3B0aW9ucy5vbklnbm9yZVRhZ0F0dHIgPSBvcHRpb25zLm9uSWdub3JlVGFnQXR0ciB8fCBERUZBVUxULm9uSWdub3JlVGFnQXR0cjtcbiAgb3B0aW9ucy5zYWZlQXR0clZhbHVlID0gb3B0aW9ucy5zYWZlQXR0clZhbHVlIHx8IERFRkFVTFQuc2FmZUF0dHJWYWx1ZTtcbiAgb3B0aW9ucy5lc2NhcGVIdG1sID0gb3B0aW9ucy5lc2NhcGVIdG1sIHx8IERFRkFVTFQuZXNjYXBlSHRtbDtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICBpZiAob3B0aW9ucy5jc3MgPT09IGZhbHNlKSB7XG4gICAgdGhpcy5jc3NGaWx0ZXIgPSBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLmNzcyA9IG9wdGlvbnMuY3NzIHx8IHt9O1xuICAgIHRoaXMuY3NzRmlsdGVyID0gbmV3IEZpbHRlckNTUyhvcHRpb25zLmNzcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBzdGFydCBwcm9jZXNzIGFuZCByZXR1cm5zIHJlc3VsdFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbkZpbHRlclhTUy5wcm90b3R5cGUucHJvY2VzcyA9IGZ1bmN0aW9uIChodG1sKSB7XG4gIC8vIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5wdXRcbiAgaHRtbCA9IGh0bWwgfHwgXCJcIjtcbiAgaHRtbCA9IGh0bWwudG9TdHJpbmcoKTtcbiAgaWYgKCFodG1sKSByZXR1cm4gXCJcIjtcblxuICB2YXIgbWUgPSB0aGlzO1xuICB2YXIgb3B0aW9ucyA9IG1lLm9wdGlvbnM7XG4gIHZhciB3aGl0ZUxpc3QgPSBvcHRpb25zLndoaXRlTGlzdDtcbiAgdmFyIG9uVGFnID0gb3B0aW9ucy5vblRhZztcbiAgdmFyIG9uSWdub3JlVGFnID0gb3B0aW9ucy5vbklnbm9yZVRhZztcbiAgdmFyIG9uVGFnQXR0ciA9IG9wdGlvbnMub25UYWdBdHRyO1xuICB2YXIgb25JZ25vcmVUYWdBdHRyID0gb3B0aW9ucy5vbklnbm9yZVRhZ0F0dHI7XG4gIHZhciBzYWZlQXR0clZhbHVlID0gb3B0aW9ucy5zYWZlQXR0clZhbHVlO1xuICB2YXIgZXNjYXBlSHRtbCA9IG9wdGlvbnMuZXNjYXBlSHRtbDtcbiAgdmFyIGF0dHJpYnV0ZVdyYXBTaWduID0gbWUuYXR0cmlidXRlV3JhcFNpZ247XG4gIHZhciBjc3NGaWx0ZXIgPSBtZS5jc3NGaWx0ZXI7XG5cbiAgLy8gcmVtb3ZlIGludmlzaWJsZSBjaGFyYWN0ZXJzXG4gIGlmIChvcHRpb25zLnN0cmlwQmxhbmtDaGFyKSB7XG4gICAgaHRtbCA9IERFRkFVTFQuc3RyaXBCbGFua0NoYXIoaHRtbCk7XG4gIH1cblxuICAvLyByZW1vdmUgaHRtbCBjb21tZW50c1xuICBpZiAoIW9wdGlvbnMuYWxsb3dDb21tZW50VGFnKSB7XG4gICAgaHRtbCA9IERFRkFVTFQuc3RyaXBDb21tZW50VGFnKGh0bWwpO1xuICB9XG5cbiAgLy8gaWYgZW5hYmxlIHN0cmlwSWdub3JlVGFnQm9keVxuICB2YXIgc3RyaXBJZ25vcmVUYWdCb2R5ID0gZmFsc2U7XG4gIGlmIChvcHRpb25zLnN0cmlwSWdub3JlVGFnQm9keSkge1xuICAgIHN0cmlwSWdub3JlVGFnQm9keSA9IERFRkFVTFQuU3RyaXBUYWdCb2R5KFxuICAgICAgb3B0aW9ucy5zdHJpcElnbm9yZVRhZ0JvZHksXG4gICAgICBvbklnbm9yZVRhZ1xuICAgICk7XG4gICAgb25JZ25vcmVUYWcgPSBzdHJpcElnbm9yZVRhZ0JvZHkub25JZ25vcmVUYWc7XG4gIH1cblxuICB2YXIgcmV0SHRtbCA9IHBhcnNlVGFnKFxuICAgIGh0bWwsXG4gICAgZnVuY3Rpb24gKHNvdXJjZVBvc2l0aW9uLCBwb3NpdGlvbiwgdGFnLCBodG1sLCBpc0Nsb3NpbmcpIHtcbiAgICAgIHZhciBpbmZvID0ge1xuICAgICAgICBzb3VyY2VQb3NpdGlvbjogc291cmNlUG9zaXRpb24sXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgICAgaXNDbG9zaW5nOiBpc0Nsb3NpbmcsXG4gICAgICAgIGlzV2hpdGU6IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh3aGl0ZUxpc3QsIHRhZyksXG4gICAgICB9O1xuXG4gICAgICAvLyBjYWxsIGBvblRhZygpYFxuICAgICAgdmFyIHJldCA9IG9uVGFnKHRhZywgaHRtbCwgaW5mbyk7XG4gICAgICBpZiAoIWlzTnVsbChyZXQpKSByZXR1cm4gcmV0O1xuXG4gICAgICBpZiAoaW5mby5pc1doaXRlKSB7XG4gICAgICAgIGlmIChpbmZvLmlzQ2xvc2luZykge1xuICAgICAgICAgIHJldHVybiBcIjwvXCIgKyB0YWcgKyBcIj5cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhdHRycyA9IGdldEF0dHJzKGh0bWwpO1xuICAgICAgICB2YXIgd2hpdGVBdHRyTGlzdCA9IHdoaXRlTGlzdFt0YWddO1xuICAgICAgICB2YXIgYXR0cnNIdG1sID0gcGFyc2VBdHRyKGF0dHJzLmh0bWwsIGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgIC8vIGNhbGwgYG9uVGFnQXR0cigpYFxuICAgICAgICAgIHZhciBpc1doaXRlQXR0ciA9IF8uaW5kZXhPZih3aGl0ZUF0dHJMaXN0LCBuYW1lKSAhPT0gLTE7XG4gICAgICAgICAgdmFyIHJldCA9IG9uVGFnQXR0cih0YWcsIG5hbWUsIHZhbHVlLCBpc1doaXRlQXR0cik7XG4gICAgICAgICAgaWYgKCFpc051bGwocmV0KSkgcmV0dXJuIHJldDtcblxuICAgICAgICAgIGlmIChpc1doaXRlQXR0cikge1xuICAgICAgICAgICAgLy8gY2FsbCBgc2FmZUF0dHJWYWx1ZSgpYFxuICAgICAgICAgICAgdmFsdWUgPSBzYWZlQXR0clZhbHVlKHRhZywgbmFtZSwgdmFsdWUsIGNzc0ZpbHRlcik7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBhdHRyaWJ1dGVXcmFwU2lnbiArIHZhbHVlICsgYXR0cmlidXRlV3JhcFNpZ247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gY2FsbCBgb25JZ25vcmVUYWdBdHRyKClgXG4gICAgICAgICAgICByZXQgPSBvbklnbm9yZVRhZ0F0dHIodGFnLCBuYW1lLCB2YWx1ZSwgaXNXaGl0ZUF0dHIpO1xuICAgICAgICAgICAgaWYgKCFpc051bGwocmV0KSkgcmV0dXJuIHJldDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGJ1aWxkIG5ldyB0YWcgaHRtbFxuICAgICAgICBodG1sID0gXCI8XCIgKyB0YWc7XG4gICAgICAgIGlmIChhdHRyc0h0bWwpIGh0bWwgKz0gXCIgXCIgKyBhdHRyc0h0bWw7XG4gICAgICAgIGlmIChhdHRycy5jbG9zaW5nKSBodG1sICs9IFwiIC9cIjtcbiAgICAgICAgaHRtbCArPSBcIj5cIjtcbiAgICAgICAgcmV0dXJuIGh0bWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjYWxsIGBvbklnbm9yZVRhZygpYFxuICAgICAgICByZXQgPSBvbklnbm9yZVRhZyh0YWcsIGh0bWwsIGluZm8pO1xuICAgICAgICBpZiAoIWlzTnVsbChyZXQpKSByZXR1cm4gcmV0O1xuICAgICAgICByZXR1cm4gZXNjYXBlSHRtbChodG1sKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVzY2FwZUh0bWxcbiAgKTtcblxuICAvLyBpZiBlbmFibGUgc3RyaXBJZ25vcmVUYWdCb2R5XG4gIGlmIChzdHJpcElnbm9yZVRhZ0JvZHkpIHtcbiAgICByZXRIdG1sID0gc3RyaXBJZ25vcmVUYWdCb2R5LnJlbW92ZShyZXRIdG1sKTtcbiAgfVxuXG4gIHJldHVybiByZXRIdG1sO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGaWx0ZXJYU1M7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwibGV0IHhzcyA9IHJlcXVpcmUoXCJ4c3NcIik7XG52YXIgc2J5X2pzX2V4aXN0cyA9ICh0eXBlb2Ygc2J5X2pzX2V4aXN0cyAhPT0gJ3VuZGVmaW5lZCcpID8gdHJ1ZSA6IGZhbHNlO1xuXG5pZighc2J5X2pzX2V4aXN0cykge1xuXG4gICAgLyoqXG4gICAgICogU2FuaXRpemUgc3RyaW5nIGJ5IGVzY2FwaW5nIEhUTUwgZW50aXRpZXNcbiAgICAgKiBAcGFyYW0gaW5wdXRcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNieUVuY29kZUlucHV0KGlucHV0KSAge1xuICAgICAgICByZXR1cm4geHNzKGlucHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzYnlBZGRJbWdMaXF1aWQoKSB7XG4gICAgICAgIC8qISBpbWdMaXF1aWQgdjAuOS45NDQgLyAwMy0wNS0yMDEzIGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhY2FzL2ltZ0xpcXVpZCAqL1xuICAgICAgICB2YXIgc2J5X2ltZ0xpcXVpZCA9IHNieV9pbWdMaXF1aWQgfHwge1ZFUjogXCIwLjkuOTQ0XCJ9O1xuICAgICAgICBzYnlfaW1nTGlxdWlkLmJnc19BdmFpbGFibGUgPSAhMSwgc2J5X2ltZ0xpcXVpZC5iZ3NfQ2hlY2tSdW5uZWQgPSAhMSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzYnlfaW1nTGlxdWlkLmJnc19DaGVja1J1bm5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzYnlfaW1nTGlxdWlkLmJnc19DaGVja1J1bm5lZCA9ICEwO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGkoJzxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1zaXplOmNvdmVyXCIgLz4nKTtcbiAgICAgICAgICAgICAgICAgICAgaShcImJvZHlcIikuYXBwZW5kKHQpLCAhZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0WzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgJiYgd2luZG93LmdldENvbXB1dGVkU3R5bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGksIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgZS5iYWNrZ3JvdW5kU2l6ZSAmJiAoc2J5X2ltZ0xpcXVpZC5iZ3NfQXZhaWxhYmxlID0gXCJjb3ZlclwiID09PSBlLmJhY2tncm91bmRTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KCksIHQucmVtb3ZlKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkuZm4uZXh0ZW5kKHtcbiAgICAgICAgICAgICAgICBzYnlfaW1nTGlxdWlkOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogITAsXG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWduOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlQmFja2dyb3VuZFNpemU6ICEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlRGF0YUh0bWxBdHRyOiAhMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6ICEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWRlSW5UaW1lOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQm94QmFja2dyb3VuZDogITAsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXJkUGl4ZWxzOiAhMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpdmVDaGVja1RpbWU6IDUwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVjaGVja3Zpc2liaWxpdHk6IDUwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RhcnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmlzaDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uSXRlbVN0YXJ0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25JdGVtRmluaXNoOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25JdGVtRXJyb3I6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfSwgdCgpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMgPSBlLCB0aGlzLnNldHRpbmdzID0gaS5leHRlbmQoe30sIHRoaXMuZGVmYXVsdHMsIHRoaXMub3B0aW9ucyksIHRoaXMuc2V0dGluZ3Mub25TdGFydCAmJiB0aGlzLnNldHRpbmdzLm9uU3RhcnQoKSwgdGhpcy5lYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xID09PSB1LmNzcyhcImJhY2tncm91bmQtaW1hZ2VcIikuaW5kZXhPZihlbmNvZGVVUkkoYy5hdHRyKFwic3JjXCIpKSkgJiYgdS5jc3Moe1wiYmFja2dyb3VuZC1pbWFnZVwiOiAndXJsKFwiJyArIGVuY29kZVVSSShjLmF0dHIoXCJzcmNcIikpICsgJ1wiKSd9KSwgdS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJhY2tncm91bmQtc2l6ZVwiOiBnLmZpbGwgPyBcImNvdmVyXCIgOiBcImNvbnRhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLXBvc2l0aW9uXCI6IChnLmhvcml6b250YWxBbGlnbiArIFwiIFwiICsgZy52ZXJ0aWNhbEFsaWduKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJhY2tncm91bmQtcmVwZWF0XCI6IFwibm8tcmVwZWF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaShcImE6Zmlyc3RcIiwgdSkuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaShcImltZ1wiLCB1KS5jc3Moe2Rpc3BsYXk6IFwibm9uZVwifSksIGcub25JdGVtRmluaXNoICYmIGcub25JdGVtRmluaXNoKHQsIHUsIGMpLCB1LmFkZENsYXNzKFwic2J5X2ltZ0xpcXVpZF9iZ1NpemVcIiksIHUuYWRkQ2xhc3MoXCJzYnlfaW1nTGlxdWlkX3JlYWR5XCIpLCBsKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbygpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmRhdGEoXCJzYnlfaW1nTGlxdWlkX2Vycm9yXCIpIHx8IGMuZGF0YShcInNieV9pbWdMaXF1aWRfbG9hZGVkXCIpIHx8IGMuZGF0YShcInNieV9pbWdMaXF1aWRfb2xkUHJvY2Vzc2VkXCIpIHx8ICh1LmlzKFwiOnZpc2libGVcIikgJiYgY1swXS5jb21wbGV0ZSAmJiBjWzBdLndpZHRoID4gMCAmJiBjWzBdLmhlaWdodCA+IDAgPyAoYy5kYXRhKFwic2J5X2ltZ0xpcXVpZF9sb2FkZWRcIiwgITApLCBzZXRUaW1lb3V0KHIsIHQgKiBnLmRlbGF5KSkgOiBzZXRUaW1lb3V0KGUsIGcudGltZWNoZWNrdmlzaWJpbGl0eSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMuZGF0YShcIm9sZFNyY1wiKSAmJiBjLmRhdGEoXCJvbGRTcmNcIikgIT09IGMuYXR0cihcInNyY1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGMuY2xvbmUoKS5yZW1vdmVBdHRyKFwic3R5bGVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRhdGEoXCJzYnlfaW1nTGlxdWlkX3NldHRpbmdzXCIsIGMuZGF0YShcInNieV9pbWdMaXF1aWRfc2V0dGluZ3NcIikpLCBjLnBhcmVudCgpLnByZXBlbmQoYSksIGMucmVtb3ZlKCksIGMgPSBhLCBjWzBdLndpZHRoID0gMCwgdm9pZCBzZXRUaW1lb3V0KG8sIDEwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5kYXRhKFwic2J5X2ltZ0xpcXVpZF9vbGRQcm9jZXNzZWRcIikgPyB2b2lkIHIoKSA6IChjLmRhdGEoXCJzYnlfaW1nTGlxdWlkX29sZFByb2Nlc3NlZFwiLCAhMSksIGMuZGF0YShcIm9sZFNyY1wiLCBjLmF0dHIoXCJzcmNcIikpLCBpKFwiaW1nOm5vdCg6Zmlyc3QpXCIsIHUpLmNzcyhcImRpc3BsYXlcIiwgXCJub25lXCIpLCB1LmNzcyh7b3ZlcmZsb3c6IFwiaGlkZGVuXCJ9KSwgYy5mYWRlVG8oMCwgMCkucmVtb3ZlQXR0cihcIndpZHRoXCIpLnJlbW92ZUF0dHIoXCJoZWlnaHRcIikuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogXCJ2aXNpYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWF4LXdpZHRoXCI6IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1heC1oZWlnaHRcIjogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGMub24oXCJlcnJvclwiLCBuKSwgY1swXS5vbmVycm9yID0gbiwgZSgpLCB2b2lkIGQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZy5yZXNwb25zaXZlIHx8IGMuZGF0YShcInNieV9pbWdMaXF1aWRfb2xkUHJvY2Vzc2VkXCIpKSAmJiBjLmRhdGEoXCJzYnlfaW1nTGlxdWlkX3NldHRpbmdzXCIpICYmIChnID0gYy5kYXRhKFwic2J5X2ltZ0xpcXVpZF9zZXR0aW5nc1wiKSwgdS5hY3R1YWxTaXplID0gdS5nZXQoMCkub2Zmc2V0V2lkdGggKyB1LmdldCgwKS5vZmZzZXRIZWlnaHQgLyAxZTQsIHUuc2l6ZU9sZCAmJiB1LmFjdHVhbFNpemUgIT09IHUuc2l6ZU9sZCAmJiByKCksIHUuc2l6ZU9sZCA9IHUuYWN0dWFsU2l6ZSwgc2V0VGltZW91dChkLCBnLnJlc3BvbnNpdmVDaGVja1RpbWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZGF0YShcInNieV9pbWdMaXF1aWRfZXJyb3JcIiwgITApLCB1LmFkZENsYXNzKFwic2J5X2ltZ0xpcXVpZF9lcnJvclwiKSwgZy5vbkl0ZW1FcnJvciAmJiBnLm9uSXRlbUVycm9yKHQsIHUsIGMpLCBsKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcygpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLnNldHRpbmdzLnVzZURhdGFIdG1sQXR0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHUuYXR0cihcImRhdGEtc2J5X2ltZ0xpcXVpZC1maWxsXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB1LmF0dHIoXCJkYXRhLXNieV9pbWdMaXF1aWQtaG9yaXpvbnRhbEFsaWduXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB1LmF0dHIoXCJkYXRhLXNieV9pbWdMaXF1aWQtdmVydGljYWxBbGlnblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwidHJ1ZVwiID09PSB0IHx8IFwiZmFsc2VcIiA9PT0gdCkgJiYgKGkuZmlsbCA9IEJvb2xlYW4oXCJ0cnVlXCIgPT09IHQpKSwgdm9pZCAwID09PSBlIHx8IFwibGVmdFwiICE9PSBlICYmIFwiY2VudGVyXCIgIT09IGUgJiYgXCJyaWdodFwiICE9PSBlICYmIC0xID09PSBlLmluZGV4T2YoXCIlXCIpIHx8IChpLmhvcml6b250YWxBbGlnbiA9IGUpLCB2b2lkIDAgPT09IG8gfHwgXCJ0b3BcIiAhPT0gbyAmJiBcImJvdHRvbVwiICE9PSBvICYmIFwiY2VudGVyXCIgIT09IG8gJiYgLTEgPT09IG8uaW5kZXhPZihcIiVcIikgfHwgKGkudmVydGljYWxBbGlnbiA9IG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzYnlfaW1nTGlxdWlkLmlzSUUgJiYgYS5zZXR0aW5ncy5pZUZhZGVJbkRpc2FibGVkICYmIChpLmZhZGVJblRpbWUgPSAwKSwgaVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBlLCBhLCBvLCBkLCBuLCBzLCByLCBtID0gMCwgaCA9IDAsIGYgPSB1LndpZHRoKCksIHYgPSB1LmhlaWdodCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gYy5kYXRhKFwib3dpZHRoXCIpICYmIGMuZGF0YShcIm93aWR0aFwiLCBjWzBdLndpZHRoKSwgdm9pZCAwID09PSBjLmRhdGEoXCJvaGVpZ2h0XCIpICYmIGMuZGF0YShcIm9oZWlnaHRcIiwgY1swXS5oZWlnaHQpLCBnLmZpbGwgPT09IGYgLyB2ID49IGMuZGF0YShcIm93aWR0aFwiKSAvIGMuZGF0YShcIm9oZWlnaHRcIikgPyAoaSA9IFwiMTAwJVwiLCBlID0gXCJhdXRvXCIsIGEgPSBNYXRoLmZsb29yKGYpLCBvID0gTWF0aC5mbG9vcihmICogKGMuZGF0YShcIm9oZWlnaHRcIikgLyBjLmRhdGEoXCJvd2lkdGhcIikpKSkgOiAoaSA9IFwiYXV0b1wiLCBlID0gXCIxMDAlXCIsIGEgPSBNYXRoLmZsb29yKHYgKiAoYy5kYXRhKFwib3dpZHRoXCIpIC8gYy5kYXRhKFwib2hlaWdodFwiKSkpLCBvID0gTWF0aC5mbG9vcih2KSksIGQgPSBnLmhvcml6b250YWxBbGlnbi50b0xvd2VyQ2FzZSgpLCBzID0gZiAtIGEsIFwibGVmdFwiID09PSBkICYmIChoID0gMCksIFwiY2VudGVyXCIgPT09IGQgJiYgKGggPSAuNSAqIHMpLCBcInJpZ2h0XCIgPT09IGQgJiYgKGggPSBzKSwgLTEgIT09IGQuaW5kZXhPZihcIiVcIikgJiYgKGQgPSBwYXJzZUludChkLnJlcGxhY2UoXCIlXCIsIFwiXCIpLCAxMCksIGQgPiAwICYmIChoID0gcyAqIGQgKiAuMDEpKSwgbiA9IGcudmVydGljYWxBbGlnbi50b0xvd2VyQ2FzZSgpLCByID0gdiAtIG8sIFwibGVmdFwiID09PSBuICYmIChtID0gMCksIFwiY2VudGVyXCIgPT09IG4gJiYgKG0gPSAuNSAqIHIpLCBcImJvdHRvbVwiID09PSBuICYmIChtID0gciksIC0xICE9PSBuLmluZGV4T2YoXCIlXCIpICYmIChuID0gcGFyc2VJbnQobi5yZXBsYWNlKFwiJVwiLCBcIlwiKSwgMTApLCBuID4gMCAmJiAobSA9IHIgKiBuICogLjAxKSksIGcuaGFyZFBpeGVscyAmJiAoaSA9IGEsIGUgPSBvKSwgYy5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hcmdpbi1sZWZ0XCI6IE1hdGguZmxvb3IoaCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFyZ2luLXRvcFwiOiBNYXRoLmZsb29yKG0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGMuZGF0YShcInNieV9pbWdMaXF1aWRfb2xkUHJvY2Vzc2VkXCIpIHx8IChjLmZhZGVUbyhnLmZhZGVJblRpbWUsIDEpLCBjLmRhdGEoXCJzYnlfaW1nTGlxdWlkX29sZFByb2Nlc3NlZFwiLCAhMCksIGcucmVtb3ZlQm94QmFja2dyb3VuZCAmJiB1LmNzcyhcImJhY2tncm91bmQtaW1hZ2VcIiwgXCJub25lXCIpLCB1LmFkZENsYXNzKFwic2J5X2ltZ0xpcXVpZF9ub2JnU2l6ZVwiKSwgdS5hZGRDbGFzcyhcInNieV9pbWdMaXF1aWRfcmVhZHlcIikpLCBnLm9uSXRlbUZpbmlzaCAmJiBnLm9uSXRlbUZpbmlzaCh0LCB1LCBjKSwgbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9PT0gYS5sZW5ndGggLSAxICYmIGEuc2V0dGluZ3Mub25GaW5pc2ggJiYgYS5zZXR0aW5ncy5vbkZpbmlzaCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gYS5zZXR0aW5ncywgdSA9IGkodGhpcyksIGMgPSBpKFwiaW1nOmZpcnN0XCIsIHUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMubGVuZ3RoID8gKGMuZGF0YShcInNieV9pbWdMaXF1aWRfc2V0dGluZ3NcIikgPyAodS5yZW1vdmVDbGFzcyhcInNieV9pbWdMaXF1aWRfZXJyb3JcIikucmVtb3ZlQ2xhc3MoXCJzYnlfaW1nTGlxdWlkX3JlYWR5XCIpLCBnID0gaS5leHRlbmQoe30sIGMuZGF0YShcInNieV9pbWdMaXF1aWRfc2V0dGluZ3NcIiksIGEub3B0aW9ucykpIDogZyA9IGkuZXh0ZW5kKHt9LCBhLnNldHRpbmdzLCBzKCkpLCBjLmRhdGEoXCJzYnlfaW1nTGlxdWlkX3NldHRpbmdzXCIsIGcpLCBnLm9uSXRlbVN0YXJ0ICYmIGcub25JdGVtU3RhcnQodCwgdSwgYyksIHZvaWQgKHNieV9pbWdMaXF1aWQuYmdzX0F2YWlsYWJsZSAmJiBnLnVzZUJhY2tncm91bmRTaXplID8gZSgpIDogbygpKSkgOiB2b2lkIG4oKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0oalF1ZXJ5KTtcblxuICAgICAgICAvLyBVc2UgaW1hZ2VmaWxsIHRvIHNldCB0aGUgaW1hZ2VzIGFzIGJhY2tncm91bmRzIHNvIHRoZXkgY2FuIGJlIHNxdWFyZVxuICAgICAgICAhZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNzcyA9IHNieV9pbWdMaXF1aWQuaW5qZWN0Q3NzLFxuICAgICAgICAgICAgICBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSxcbiAgICAgICAgICAgICAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICAgICAgfSgpO1xuICAgIH1cblxuICAgIC8qIEphdmFTY3JpcHQgTGlua2lmeSAtIHYwLjMgLSA2LzI3LzIwMDkgLSBodHRwOi8vYmVuYWxtYW4uY29tL3Byb2plY3RzL2phdmFzY3JpcHQtbGlua2lmeS8gKi9cbiAgICB3aW5kb3cuc2J5TGlua2lmeSA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBrID0gXCJbYS16XFxcXGQuLV0rOi8vXCIsXG4gICAgICAgICAgaCA9IFwiKD86KD86WzAtOV18WzEtOV1cXFxcZHwxXFxcXGR7Mn18MlswLTRdXFxcXGR8MjVbMC01XSlcXFxcLil7M30oPzpbMC05XXxbMS05XVxcXFxkfDFcXFxcZHsyfXwyWzAtNF1cXFxcZHwyNVswLTVdKVwiLFxuICAgICAgICAgIGMgPSBcIig/Oig/OlteXFxcXHMhQCMkJV4mKigpXz0rW1xcXFxde31cXFxcXFxcXHw7OidcXFwiLC48Pi8/XSspXFxcXC4pK1wiLFxuICAgICAgICAgIG4gPSBcIig/OmFjfGFkfGFlcm98YWV8YWZ8YWd8YWl8YWx8YW18YW58YW98YXF8YXJwYXxhcnxhc2lhfGFzfGF0fGF1fGF3fGF4fGF6fGJhfGJifGJkfGJlfGJmfGJnfGJofGJpenxiaXxianxibXxibnxib3xicnxic3xidHxidnxid3xieXxienxjYXR8Y2F8Y2N8Y2R8Y2Z8Y2d8Y2h8Y2l8Y2t8Y2x8Y218Y258Y29vcHxjb218Y298Y3J8Y3V8Y3Z8Y3h8Y3l8Y3p8ZGV8ZGp8ZGt8ZG18ZG98ZHp8ZWN8ZWR1fGVlfGVnfGVyfGVzfGV0fGV1fGZpfGZqfGZrfGZtfGZvfGZyfGdhfGdifGdkfGdlfGdmfGdnfGdofGdpfGdsfGdtfGdufGdvdnxncHxncXxncnxnc3xndHxndXxnd3xneXxoa3xobXxobnxocnxodHxodXxpZHxpZXxpbHxpbXxpbmZvfGludHxpbnxpb3xpcXxpcnxpc3xpdHxqZXxqbXxqb2JzfGpvfGpwfGtlfGtnfGtofGtpfGttfGtufGtwfGtyfGt3fGt5fGt6fGxhfGxifGxjfGxpfGxrfGxyfGxzfGx0fGx1fGx2fGx5fG1hfG1jfG1kfG1lfG1nfG1ofG1pbHxta3xtbHxtbXxtbnxtb2JpfG1vfG1wfG1xfG1yfG1zfG10fG11c2V1bXxtdXxtdnxtd3xteHxteXxtenxuYW1lfG5hfG5jfG5ldHxuZXxuZnxuZ3xuaXxubHxub3xucHxucnxudXxuenxvbXxvcmd8cGF8cGV8cGZ8cGd8cGh8cGt8cGx8cG18cG58cHJvfHByfHBzfHB0fHB3fHB5fHFhfHJlfHJvfHJzfHJ1fHJ3fHNhfHNifHNjfHNkfHNlfHNnfHNofHNpfHNqfHNrfHNsfHNtfHNufHNvfHNyfHN0fHN1fHN2fHN5fHN6fHRjfHRkfHRlbHx0Znx0Z3x0aHx0anx0a3x0bHx0bXx0bnx0b3x0cHx0cmF2ZWx8dHJ8dHR8dHZ8dHd8dHp8dWF8dWd8dWt8dW18dXN8dXl8dXp8dmF8dmN8dmV8dmd8dml8dm58dnV8d2Z8d3N8eG4tLTB6d201NmR8eG4tLTExYjViczNhOWFqNmd8eG4tLTgwYWtoYnlrbmo0Znx4bi0tOXQ0YjExeWk1YXx4bi0tZGViYTBhZHx4bi0tZzZ3MjUxZHx4bi0taGdiazZhajdmNTNiYmF8eG4tLWhsY2o2YXlhOWVzYzdhfHhuLS1qeGFscGRscHx4bi0ta2diZWNodHZ8eG4tLXpja3phaHx5ZXx5dHx5dXx6YXx6bXx6dylcIixcbiAgICAgICAgICBmID0gXCIoPzpcIiArIGMgKyBuICsgXCJ8XCIgKyBoICsgXCIpXCIsIG8gPSBcIig/Ols7L11bXiM/PD5cXFxcc10qKT9cIiwgZSA9IFwiKD86XFxcXD9bXiM8PlxcXFxzXSopPyg/OiNbXjw+XFxcXHNdKik/XCIsXG4gICAgICAgICAgZCA9IFwiXFxcXGJcIiArIGsgKyBcIltePD5cXFxcc10rXCIsIGEgPSBcIlxcXFxiXCIgKyBmICsgbyArIGUgKyBcIig/IVxcXFx3KVwiLCBtID0gXCJtYWlsdG86XCIsXG4gICAgICAgICAgaiA9IFwiKD86XCIgKyBtICsgXCIpP1thLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcXFxcLlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKkBcIiArIGYgKyBlICsgXCIoPyFcXFxcdylcIixcbiAgICAgICAgICBsID0gbmV3IFJlZ0V4cChcIig/OlwiICsgZCArIFwifFwiICsgYSArIFwifFwiICsgaiArIFwiKVwiLCBcImlnXCIpLCBnID0gbmV3IFJlZ0V4cChcIl5cIiArIGssIFwiaVwiKSxcbiAgICAgICAgICBiID0ge1wiJ1wiOiBcImBcIiwgXCI+XCI6IFwiPFwiLCBcIilcIjogXCIoXCIsIFwiXVwiOiBcIltcIiwgXCJ9XCI6IFwie1wiLCBcIkI7XCI6IFwiQitcIiwgXCJiOlwiOiBcImI5XCJ9LCBpID0ge1xuICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gKHEsIHApIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwID8gJzxhIGhyZWY9XCInICsgcCArICdcIiB0aXRsZT1cIicgKyBwICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCI+JyArIHEgKyBcIjwvYT5cIiA6IHFcbiAgICAgICAgICAgICAgfSwgcHVuY3RfcmVnZXhwOiAvKD86WyE/Liw6OydcIl18KD86JnwmYW1wOykoPzpsdHxndHxxdW90fGFwb3N8cmFxdW98bGFxdW98cnNhcXVvfGxzYXF1byk7KSQvXG4gICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh1LCB6KSB7XG4gICAgICAgICAgICB6ID0geiB8fCB7fTtcbiAgICAgICAgICAgIHZhciB3LCB2LCBBLCBwLCB4ID0gXCJcIiwgdCA9IFtdLCBzLCBFLCBDLCB5LCBxLCBELCBCLCByO1xuICAgICAgICAgICAgZm9yICh2IGluIGkpIHtcbiAgICAgICAgICAgICAgICBpZiAoelt2XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHpbdl0gPSBpW3ZdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHcgPSBsLmV4ZWModSkpIHtcbiAgICAgICAgICAgICAgICBBID0gd1swXTtcbiAgICAgICAgICAgICAgICBFID0gbC5sYXN0SW5kZXg7XG4gICAgICAgICAgICAgICAgQyA9IEUgLSBBLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAoL1tcXC86XS8udGVzdCh1LmNoYXJBdChDIC0gMSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgeSA9IEE7XG4gICAgICAgICAgICAgICAgICAgIHIgPSBBLnN1YnN0cigtMSk7XG4gICAgICAgICAgICAgICAgICAgIEIgPSBiW3JdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoQikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcSA9IEEubWF0Y2gobmV3IFJlZ0V4cChcIlxcXFxcIiArIEIgKyBcIig/ISQpXCIsIFwiZ1wiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBEID0gQS5tYXRjaChuZXcgUmVnRXhwKFwiXFxcXFwiICsgciwgXCJnXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocSA/IHEubGVuZ3RoIDogMCkgPCAoRCA/IEQubGVuZ3RoIDogMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gQS5zdWJzdHIoMCwgQS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFLS1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoei5wdW5jdF9yZWdleHApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBBLnJlcGxhY2Uoei5wdW5jdF9yZWdleHAsIGZ1bmN0aW9uIChGKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRSAtPSBGLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKEEubGVuZ3RoICYmIEEgIT09IHkpO1xuICAgICAgICAgICAgICAgIHAgPSBBO1xuICAgICAgICAgICAgICAgIGlmICghZy50ZXN0KHApKSB7XG4gICAgICAgICAgICAgICAgICAgIHAgPSAocC5pbmRleE9mKFwiQFwiKSAhPT0gLTEgPyAoIXAuaW5kZXhPZihtKSA/IFwiXCIgOiBtKSA6ICFwLmluZGV4T2YoXCJpcmMuXCIpID8gXCJpcmM6Ly9cIiA6ICFwLmluZGV4T2YoXCJmdHAuXCIpID8gXCJmdHA6Ly9cIiA6IFwiaHR0cDovL1wiKSArIHBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMgIT0gQykge1xuICAgICAgICAgICAgICAgICAgICB0LnB1c2goW3Uuc2xpY2UocywgQyldKTtcbiAgICAgICAgICAgICAgICAgICAgcyA9IEVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdC5wdXNoKFtBLCBwXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQucHVzaChbdS5zdWJzdHIocyldKTtcbiAgICAgICAgICAgIGZvciAodiA9IDA7IHYgPCB0Lmxlbmd0aDsgdisrKSB7XG4gICAgICAgICAgICAgICAgeCArPSB6LmNhbGxiYWNrLmFwcGx5KHdpbmRvdywgdFt2XSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB4IHx8IHVcbiAgICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICAvL0NoZWNrcyB3aGV0aGVyIGJyb3dzZXIgc3VwcG9ydCBIVE1MNSB2aWRlbyBlbGVtZW50XG4gICAgZnVuY3Rpb24gc2J5X3N1cHBvcnRzX3ZpZGVvKCkge1xuICAgICAgICByZXR1cm4gISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycpLmNhblBsYXlUeXBlO1xuICAgIH1cblxuICAgIC8vIENhcm91c2VsXG4gICAgIWZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgICAgIGZ1bmN0aW9uIGUoYiwgYykge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncyA9IG51bGwsIHRoaXMub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCBjKSwgdGhpcy4kZWxlbWVudCA9IGEoYiksIHRoaXMuX2hhbmRsZXJzID0ge30sIHRoaXMuX3BsdWdpbnMgPSB7fSwgdGhpcy5fc3VwcmVzcyA9IHt9LCB0aGlzLl9jdXJyZW50ID0gbnVsbCwgdGhpcy5fc3BlZWQgPSBudWxsLCB0aGlzLl9jb29yZGluYXRlcyA9IFtdLCB0aGlzLl9icmVha3BvaW50ID0gbnVsbCwgdGhpcy5fd2lkdGggPSBudWxsLCB0aGlzLl9pdGVtcyA9IFtdLCB0aGlzLl9jbG9uZXMgPSBbXSwgdGhpcy5fbWVyZ2VycyA9IFtdLCB0aGlzLl93aWR0aHMgPSBbXSwgdGhpcy5faW52YWxpZGF0ZWQgPSB7fSwgdGhpcy5fcGlwZSA9IFtdLCB0aGlzLl9kcmFnID0ge1xuICAgICAgICAgICAgICAgIHRpbWU6IG51bGwsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICAgICAgICAgIHBvaW50ZXI6IG51bGwsXG4gICAgICAgICAgICAgICAgc3RhZ2U6IHtzdGFydDogbnVsbCwgY3VycmVudDogbnVsbH0sXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBudWxsXG4gICAgICAgICAgICB9LCB0aGlzLl9zdGF0ZXMgPSB7XG4gICAgICAgICAgICAgICAgY3VycmVudDoge30sXG4gICAgICAgICAgICAgICAgdGFnczoge2luaXRpYWxpemluZzogW1wiYnVzeVwiXSwgYW5pbWF0aW5nOiBbXCJidXN5XCJdLCBkcmFnZ2luZzogW1wiaW50ZXJhY3RpbmdcIl19XG4gICAgICAgICAgICB9LCBhLmVhY2goW1wib25SZXNpemVcIiwgXCJvblRocm90dGxlZFJlc2l6ZVwiXSwgYS5wcm94eShmdW5jdGlvbiAoYiwgYykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZXJzW2NdID0gYS5wcm94eSh0aGlzW2NdLCB0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcykpLCBhLmVhY2goZS5QbHVnaW5zLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGx1Z2luc1thLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgYS5zbGljZSgxKV0gPSBuZXcgYih0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcykpLCBhLmVhY2goZS5Xb3JrZXJzLCBhLnByb3h5KGZ1bmN0aW9uIChiLCBjKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGlwZS5wdXNoKHtmaWx0ZXI6IGMuZmlsdGVyLCBydW46IGEucHJveHkoYy5ydW4sIHRoaXMpfSlcbiAgICAgICAgICAgIH0sIHRoaXMpKSwgdGhpcy5zZXR1cCgpLCB0aGlzLmluaXRpYWxpemUoKVxuICAgICAgICB9XG5cbiAgICAgICAgZS5EZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIGl0ZW1zOiAzLFxuICAgICAgICAgICAgbG9vcDogITEsXG4gICAgICAgICAgICBjZW50ZXI6ICExLFxuICAgICAgICAgICAgcmV3aW5kOiAhMSxcbiAgICAgICAgICAgIG1vdXNlRHJhZzogITAsXG4gICAgICAgICAgICB0b3VjaERyYWc6ICEwLFxuICAgICAgICAgICAgcHVsbERyYWc6ICEwLFxuICAgICAgICAgICAgZnJlZURyYWc6ICExLFxuICAgICAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgICAgICAgc3RhZ2VQYWRkaW5nOiAwLFxuICAgICAgICAgICAgbWVyZ2U6ICExLFxuICAgICAgICAgICAgbWVyZ2VGaXQ6ICEwLFxuICAgICAgICAgICAgYXV0b1dpZHRoOiAhMSxcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb246IDAsXG4gICAgICAgICAgICBydGw6ICExLFxuICAgICAgICAgICAgc21hcnRTcGVlZDogMjUwLFxuICAgICAgICAgICAgZmx1aWRTcGVlZDogITEsXG4gICAgICAgICAgICBkcmFnRW5kU3BlZWQ6ICExLFxuICAgICAgICAgICAgcmVzcG9uc2l2ZToge30sXG4gICAgICAgICAgICByZXNwb25zaXZlUmVmcmVzaFJhdGU6IDIwMCxcbiAgICAgICAgICAgIHJlc3BvbnNpdmVCYXNlRWxlbWVudDogYixcbiAgICAgICAgICAgIGZhbGxiYWNrRWFzaW5nOiBcInN3aW5nXCIsXG4gICAgICAgICAgICBpbmZvOiAhMSxcbiAgICAgICAgICAgIG5lc3RlZEl0ZW1TZWxlY3RvcjogITEsXG4gICAgICAgICAgICBpdGVtRWxlbWVudDogXCJkaXZcIixcbiAgICAgICAgICAgIHN0YWdlRWxlbWVudDogXCJkaXZcIixcbiAgICAgICAgICAgIHJlZnJlc2hDbGFzczogXCJzYnktb3dsLXJlZnJlc2hcIixcbiAgICAgICAgICAgIGxvYWRlZENsYXNzOiBcInNieS1vd2wtbG9hZGVkXCIsXG4gICAgICAgICAgICBsb2FkaW5nQ2xhc3M6IFwic2J5LW93bC1sb2FkaW5nXCIsXG4gICAgICAgICAgICBydGxDbGFzczogXCJzYnktb3dsLXJ0bFwiLFxuICAgICAgICAgICAgcmVzcG9uc2l2ZUNsYXNzOiBcInNieS1vd2wtcmVzcG9uc2l2ZVwiLFxuICAgICAgICAgICAgZHJhZ0NsYXNzOiBcInNieS1vd2wtZHJhZ1wiLFxuICAgICAgICAgICAgaXRlbUNsYXNzOiBcInNieS1vd2wtaXRlbVwiLFxuICAgICAgICAgICAgc3RhZ2VDbGFzczogXCJzYnktb3dsLXN0YWdlXCIsXG4gICAgICAgICAgICBzdGFnZU91dGVyQ2xhc3M6IFwic2J5LW93bC1zdGFnZS1vdXRlclwiLFxuICAgICAgICAgICAgZ3JhYkNsYXNzOiBcInNieS1vd2wtZ3JhYlwiXG4gICAgICAgIH0sIGUuV2lkdGggPSB7RGVmYXVsdDogXCJkZWZhdWx0XCIsIElubmVyOiBcImlubmVyXCIsIE91dGVyOiBcIm91dGVyXCJ9LCBlLlR5cGUgPSB7XG4gICAgICAgICAgICBFdmVudDogXCJldmVudFwiLFxuICAgICAgICAgICAgU3RhdGU6IFwic3RhdGVcIlxuICAgICAgICB9LCBlLlBsdWdpbnMgPSB7fSwgZS5Xb3JrZXJzID0gW3tcbiAgICAgICAgICAgIGZpbHRlcjogW1wid2lkdGhcIiwgXCJzZXR0aW5nc1wiXSwgcnVuOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2lkdGggPSB0aGlzLiRlbGVtZW50LndpZHRoKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgZmlsdGVyOiBbXCJ3aWR0aFwiLCBcIml0ZW1zXCIsIFwic2V0dGluZ3NcIl0sIHJ1bjogZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICBhLmN1cnJlbnQgPSB0aGlzLl9pdGVtcyAmJiB0aGlzLl9pdGVtc1t0aGlzLnJlbGF0aXZlKHRoaXMuX2N1cnJlbnQpXVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBmaWx0ZXI6IFtcIml0ZW1zXCIsIFwic2V0dGluZ3NcIl0sIHJ1bjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0YWdlLmNoaWxkcmVuKFwiLmNsb25lZFwiKS5yZW1vdmUoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBmaWx0ZXI6IFtcIndpZHRoXCIsIFwiaXRlbXNcIiwgXCJzZXR0aW5nc1wiXSwgcnVuOiBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgIHZhciBiID0gdGhpcy5zZXR0aW5ncy5tYXJnaW4gfHwgXCJcIiwgYyA9ICF0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCwgZCA9IHRoaXMuc2V0dGluZ3MucnRsLFxuICAgICAgICAgICAgICAgICAgZSA9IHt3aWR0aDogXCJhdXRvXCIsIFwibWFyZ2luLWxlZnRcIjogZCA/IGIgOiBcIlwiLCBcIm1hcmdpbi1yaWdodFwiOiBkID8gXCJcIiA6IGJ9O1xuICAgICAgICAgICAgICAgICFjICYmIHRoaXMuJHN0YWdlLmNoaWxkcmVuKCkuY3NzKGUpLCBhLmNzcyA9IGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgZmlsdGVyOiBbXCJ3aWR0aFwiLCBcIml0ZW1zXCIsIFwic2V0dGluZ3NcIl0sIHJ1bjogZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgYiA9ICh0aGlzLndpZHRoKCkgLyB0aGlzLnNldHRpbmdzLml0ZW1zKS50b0ZpeGVkKDMpIC0gdGhpcy5zZXR0aW5ncy5tYXJnaW4sIGMgPSBudWxsLFxuICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuX2l0ZW1zLmxlbmd0aCwgZSA9ICF0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCwgZiA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoYS5pdGVtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2U6ICExLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogYlxuICAgICAgICAgICAgICAgIH07IGQtLTspIGMgPSB0aGlzLl9tZXJnZXJzW2RdLCBjID0gdGhpcy5zZXR0aW5ncy5tZXJnZUZpdCAmJiBNYXRoLm1pbihjLCB0aGlzLnNldHRpbmdzLml0ZW1zKSB8fCBjLCBhLml0ZW1zLm1lcmdlID0gYyA+IDEgfHwgYS5pdGVtcy5tZXJnZSwgZltkXSA9IGUgPyBiICogYyA6IHRoaXMuX2l0ZW1zW2RdLndpZHRoKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2lkdGhzID0gZlxuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBmaWx0ZXI6IFtcIml0ZW1zXCIsIFwic2V0dGluZ3NcIl0sIHJ1bjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBiID0gW10sIGMgPSB0aGlzLl9pdGVtcywgZCA9IHRoaXMuc2V0dGluZ3MsIGUgPSBNYXRoLm1heCgyICogZC5pdGVtcywgNCksXG4gICAgICAgICAgICAgICAgICBmID0gMiAqIE1hdGguY2VpbChjLmxlbmd0aCAvIDIpLCBnID0gZC5sb29wICYmIGMubGVuZ3RoID8gZC5yZXdpbmQgPyBlIDogTWF0aC5tYXgoZSwgZikgOiAwLCBoID0gXCJcIixcbiAgICAgICAgICAgICAgICAgIGkgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGZvciAoZyAvPSAyOyBnLS07KSBiLnB1c2godGhpcy5ub3JtYWxpemUoYi5sZW5ndGggLyAyLCAhMCkpLCBoICs9IGNbYltiLmxlbmd0aCAtIDFdXVswXS5vdXRlckhUTUwsIGIucHVzaCh0aGlzLm5vcm1hbGl6ZShjLmxlbmd0aCAtIDEgLSAoYi5sZW5ndGggLSAxKSAvIDIsICEwKSksIGkgPSBjW2JbYi5sZW5ndGggLSAxXV1bMF0ub3V0ZXJIVE1MICsgaTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jbG9uZXMgPSBiLCBhKGgpLmFkZENsYXNzKFwiY2xvbmVkXCIpLmFwcGVuZFRvKHRoaXMuJHN0YWdlKSwgYShpKS5hZGRDbGFzcyhcImNsb25lZFwiKS5wcmVwZW5kVG8odGhpcy4kc3RhZ2UpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZpbHRlcjogW1wid2lkdGhcIiwgXCJpdGVtc1wiLCBcInNldHRpbmdzXCJdLCBydW46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gdGhpcy5zZXR0aW5ncy5ydGwgPyAxIDogLTEsIGIgPSB0aGlzLl9jbG9uZXMubGVuZ3RoICsgdGhpcy5faXRlbXMubGVuZ3RoLCBjID0gLTEsIGQgPSAwLCBlID0gMCwgZiA9IFtdOyArK2MgPCBiOykgZCA9IGZbYyAtIDFdIHx8IDAsIGUgPSB0aGlzLl93aWR0aHNbdGhpcy5yZWxhdGl2ZShjKV0gKyB0aGlzLnNldHRpbmdzLm1hcmdpbiwgZi5wdXNoKGQgKyBlICogYSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29vcmRpbmF0ZXMgPSBmXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZpbHRlcjogW1wid2lkdGhcIiwgXCJpdGVtc1wiLCBcInNldHRpbmdzXCJdLCBydW46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuc2V0dGluZ3Muc3RhZ2VQYWRkaW5nLCBiID0gdGhpcy5fY29vcmRpbmF0ZXMsIGMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBNYXRoLmNlaWwoTWF0aC5hYnMoYltiLmxlbmd0aCAtIDFdKSkgKyAyICogYSxcbiAgICAgICAgICAgICAgICAgICAgXCJwYWRkaW5nLWxlZnRcIjogYSB8fCBcIlwiLFxuICAgICAgICAgICAgICAgICAgICBcInBhZGRpbmctcmlnaHRcIjogYSB8fCBcIlwiXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdGFnZS5jc3MoYylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgZmlsdGVyOiBbXCJ3aWR0aFwiLCBcIml0ZW1zXCIsIFwic2V0dGluZ3NcIl0sIHJ1bjogZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMuX2Nvb3JkaW5hdGVzLmxlbmd0aCwgYyA9ICF0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCwgZCA9IHRoaXMuJHN0YWdlLmNoaWxkcmVuKCk7XG4gICAgICAgICAgICAgICAgaWYgKGMgJiYgYS5pdGVtcy5tZXJnZSkgZm9yICg7IGItLTspIGEuY3NzLndpZHRoID0gdGhpcy5fd2lkdGhzW3RoaXMucmVsYXRpdmUoYildLCBkLmVxKGIpLmNzcyhhLmNzcyk7IGVsc2UgYyAmJiAoYS5jc3Mud2lkdGggPSBhLml0ZW1zLndpZHRoLCBkLmNzcyhhLmNzcykpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZpbHRlcjogW1wiaXRlbXNcIl0sIHJ1bjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Nvb3JkaW5hdGVzLmxlbmd0aCA8IDEgJiYgdGhpcy4kc3RhZ2UucmVtb3ZlQXR0cihcInN0eWxlXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZpbHRlcjogW1wid2lkdGhcIiwgXCJpdGVtc1wiLCBcInNldHRpbmdzXCJdLCBydW46IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgYS5jdXJyZW50ID0gYS5jdXJyZW50ID8gdGhpcy4kc3RhZ2UuY2hpbGRyZW4oKS5pbmRleChhLmN1cnJlbnQpIDogMCwgYS5jdXJyZW50ID0gTWF0aC5tYXgodGhpcy5taW5pbXVtKCksIE1hdGgubWluKHRoaXMubWF4aW11bSgpLCBhLmN1cnJlbnQpKSwgdGhpcy5yZXNldChhLmN1cnJlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZpbHRlcjogW1wicG9zaXRpb25cIl0sIHJ1bjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZSh0aGlzLmNvb3JkaW5hdGVzKHRoaXMuX2N1cnJlbnQpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBmaWx0ZXI6IFtcIndpZHRoXCIsIFwicG9zaXRpb25cIiwgXCJpdGVtc1wiLCBcInNldHRpbmdzXCJdLCBydW46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgYSwgYiwgYywgZCwgZSA9IHRoaXMuc2V0dGluZ3MucnRsID8gMSA6IC0xLCBmID0gMiAqIHRoaXMuc2V0dGluZ3Muc3RhZ2VQYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgZyA9IHRoaXMuY29vcmRpbmF0ZXModGhpcy5jdXJyZW50KCkpICsgZiwgaCA9IGcgKyB0aGlzLndpZHRoKCkgKiBlLCBpID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjID0gMCwgZCA9IHRoaXMuX2Nvb3JkaW5hdGVzLmxlbmd0aDsgYyA8IGQ7IGMrKykgYSA9IHRoaXMuX2Nvb3JkaW5hdGVzW2MgLSAxXSB8fCAwLCBiID0gTWF0aC5hYnModGhpcy5fY29vcmRpbmF0ZXNbY10pICsgZiAqIGUsICh0aGlzLm9wKGEsIFwiPD1cIiwgZykgJiYgdGhpcy5vcChhLCBcIj5cIiwgaCkgfHwgdGhpcy5vcChiLCBcIjxcIiwgZykgJiYgdGhpcy5vcChiLCBcIj5cIiwgaCkpICYmIGkucHVzaChjKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdGFnZS5jaGlsZHJlbihcIi5hY3RpdmVcIikucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIiksIHRoaXMuJHN0YWdlLmNoaWxkcmVuKFwiOmVxKFwiICsgaS5qb2luKFwiKSwgOmVxKFwiKSArIFwiKVwiKS5hZGRDbGFzcyhcImFjdGl2ZVwiKSwgdGhpcy5zZXR0aW5ncy5jZW50ZXIgJiYgKHRoaXMuJHN0YWdlLmNoaWxkcmVuKFwiLmNlbnRlclwiKS5yZW1vdmVDbGFzcyhcImNlbnRlclwiKSwgdGhpcy4kc3RhZ2UuY2hpbGRyZW4oKS5lcSh0aGlzLmN1cnJlbnQoKSkuYWRkQ2xhc3MoXCJjZW50ZXJcIikpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1dLCBlLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZW50ZXIoXCJpbml0aWFsaXppbmdcIiksIHRoaXMudHJpZ2dlcihcImluaXRpYWxpemVcIiksIHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3ModGhpcy5zZXR0aW5ncy5ydGxDbGFzcywgdGhpcy5zZXR0aW5ncy5ydGwpLCB0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCAmJiAhdGhpcy5pcyhcInByZS1sb2FkaW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGIsIGMsIGU7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXMuJGVsZW1lbnQuZmluZChcImltZ1wiKSwgYyA9IHRoaXMuc2V0dGluZ3MubmVzdGVkSXRlbVNlbGVjdG9yID8gXCIuXCIgKyB0aGlzLnNldHRpbmdzLm5lc3RlZEl0ZW1TZWxlY3RvciA6IGQsIGUgPSB0aGlzLiRlbGVtZW50LmNoaWxkcmVuKGMpLndpZHRoKCksIGIubGVuZ3RoICYmIGUgPD0gMCAmJiB0aGlzLnByZWxvYWRBdXRvV2lkdGhJbWFnZXMoYilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmxvYWRpbmdDbGFzcyksIHRoaXMuJHN0YWdlID0gYShcIjxcIiArIHRoaXMuc2V0dGluZ3Muc3RhZ2VFbGVtZW50ICsgJyBjbGFzcz1cIicgKyB0aGlzLnNldHRpbmdzLnN0YWdlQ2xhc3MgKyAnXCIvPicpLndyYXAoJzxkaXYgY2xhc3M9XCInICsgdGhpcy5zZXR0aW5ncy5zdGFnZU91dGVyQ2xhc3MgKyAnXCIvPicpLCB0aGlzLiRlbGVtZW50LmFwcGVuZCh0aGlzLiRzdGFnZS5wYXJlbnQoKSksIHRoaXMucmVwbGFjZSh0aGlzLiRlbGVtZW50LmNoaWxkcmVuKCkubm90KHRoaXMuJHN0YWdlLnBhcmVudCgpKSksIHRoaXMuJGVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKSA/IHRoaXMucmVmcmVzaCgpIDogdGhpcy5pbnZhbGlkYXRlKFwid2lkdGhcIiksIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmxvYWRpbmdDbGFzcykuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmxvYWRlZENsYXNzKSwgdGhpcy5yZWdpc3RlckV2ZW50SGFuZGxlcnMoKSwgdGhpcy5sZWF2ZShcImluaXRpYWxpemluZ1wiKSwgdGhpcy50cmlnZ2VyKFwiaW5pdGlhbGl6ZWRcIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYiA9IHRoaXMudmlld3BvcnQoKSwgYyA9IHRoaXMub3B0aW9ucy5yZXNwb25zaXZlLCBkID0gLTEsIGUgPSBudWxsO1xuICAgICAgICAgICAgYyA/IChhLmVhY2goYywgZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICBhIDw9IGIgJiYgYSA+IGQgJiYgKGQgPSBOdW1iZXIoYSkpXG4gICAgICAgICAgICB9KSwgZSA9IGEuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnMsIGNbZF0pLCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUuc3RhZ2VQYWRkaW5nICYmIChlLnN0YWdlUGFkZGluZyA9IGUuc3RhZ2VQYWRkaW5nKCkpLCBkZWxldGUgZS5yZXNwb25zaXZlLCBlLnJlc3BvbnNpdmVDbGFzcyAmJiB0aGlzLiRlbGVtZW50LmF0dHIoXCJjbGFzc1wiLCB0aGlzLiRlbGVtZW50LmF0dHIoXCJjbGFzc1wiKS5yZXBsYWNlKG5ldyBSZWdFeHAoXCIoXCIgKyB0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZUNsYXNzICsgXCItKVxcXFxTK1xcXFxzXCIsIFwiZ1wiKSwgXCIkMVwiICsgZCkpKSA6IGUgPSBhLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zKSwgdGhpcy50cmlnZ2VyKFwiY2hhbmdlXCIsIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eToge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNldHRpbmdzXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksIHRoaXMuX2JyZWFrcG9pbnQgPSBkLCB0aGlzLnNldHRpbmdzID0gZSwgdGhpcy5pbnZhbGlkYXRlKFwic2V0dGluZ3NcIiksIHRoaXMudHJpZ2dlcihcImNoYW5nZWRcIiwge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5OiB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2V0dGluZ3NcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2V0dGluZ3NcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5vcHRpb25zTG9naWMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCAmJiAodGhpcy5zZXR0aW5ncy5zdGFnZVBhZGRpbmcgPSAhMSwgdGhpcy5zZXR0aW5ncy5tZXJnZSA9ICExKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5wcmVwYXJlID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHZhciBjID0gdGhpcy50cmlnZ2VyKFwicHJlcGFyZVwiLCB7Y29udGVudDogYn0pO1xuICAgICAgICAgICAgcmV0dXJuIGMuZGF0YSB8fCAoYy5kYXRhID0gYShcIjxcIiArIHRoaXMuc2V0dGluZ3MuaXRlbUVsZW1lbnQgKyBcIi8+XCIpLmFkZENsYXNzKHRoaXMub3B0aW9ucy5pdGVtQ2xhc3MpLmFwcGVuZChiKSksIHRoaXMudHJpZ2dlcihcInByZXBhcmVkXCIsIHtjb250ZW50OiBjLmRhdGF9KSwgYy5kYXRhXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGIgPSAwLCBjID0gdGhpcy5fcGlwZS5sZW5ndGgsIGQgPSBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbYV1cbiAgICAgICAgICAgIH0sIHRoaXMuX2ludmFsaWRhdGVkKSwgZSA9IHt9OyBiIDwgYzspICh0aGlzLl9pbnZhbGlkYXRlZC5hbGwgfHwgYS5ncmVwKHRoaXMuX3BpcGVbYl0uZmlsdGVyLCBkKS5sZW5ndGggPiAwKSAmJiB0aGlzLl9waXBlW2JdLnJ1bihlKSwgYisrO1xuICAgICAgICAgICAgdGhpcy5faW52YWxpZGF0ZWQgPSB7fSwgIXRoaXMuaXMoXCJ2YWxpZFwiKSAmJiB0aGlzLmVudGVyKFwidmFsaWRcIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUud2lkdGggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgc3dpdGNoIChhID0gYSB8fCBlLldpZHRoLkRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICBjYXNlIGUuV2lkdGguSW5uZXI6XG4gICAgICAgICAgICAgICAgY2FzZSBlLldpZHRoLk91dGVyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2lkdGg7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoIC0gMiAqIHRoaXMuc2V0dGluZ3Muc3RhZ2VQYWRkaW5nICsgdGhpcy5zZXR0aW5ncy5tYXJnaW5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuZW50ZXIoXCJyZWZyZXNoaW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJyZWZyZXNoXCIpLCB0aGlzLnNldHVwKCksIHRoaXMub3B0aW9uc0xvZ2ljKCksIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLnJlZnJlc2hDbGFzcyksIHRoaXMudXBkYXRlKCksIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLnJlZnJlc2hDbGFzcyksIHRoaXMubGVhdmUoXCJyZWZyZXNoaW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJyZWZyZXNoZWRcIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUub25UaHJvdHRsZWRSZXNpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBiLmNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVyKSwgdGhpcy5yZXNpemVUaW1lciA9IGIuc2V0VGltZW91dCh0aGlzLl9oYW5kbGVycy5vblJlc2l6ZSwgdGhpcy5zZXR0aW5ncy5yZXNwb25zaXZlUmVmcmVzaFJhdGUpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLm9uUmVzaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5faXRlbXMubGVuZ3RoICYmICh0aGlzLl93aWR0aCAhPT0gdGhpcy4kZWxlbWVudC53aWR0aCgpICYmICghIXRoaXMuJGVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKSAmJiAodGhpcy5lbnRlcihcInJlc2l6aW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJyZXNpemVcIikuaXNEZWZhdWx0UHJldmVudGVkKCkgPyAodGhpcy5sZWF2ZShcInJlc2l6aW5nXCIpLCAhMSkgOiAodGhpcy5pbnZhbGlkYXRlKFwid2lkdGhcIiksIHRoaXMucmVmcmVzaCgpLCB0aGlzLmxlYXZlKFwicmVzaXppbmdcIiksIHZvaWQgdGhpcy50cmlnZ2VyKFwicmVzaXplZFwiKSkpKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVnaXN0ZXJFdmVudEhhbmRsZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYS5zdXBwb3J0LnRyYW5zaXRpb24gJiYgdGhpcy4kc3RhZ2Uub24oYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kICsgXCIub3dsLmNvcmVcIiwgYS5wcm94eSh0aGlzLm9uVHJhbnNpdGlvbkVuZCwgdGhpcykpLCB0aGlzLnNldHRpbmdzLnJlc3BvbnNpdmUgIT09ICExICYmIHRoaXMub24oYiwgXCJyZXNpemVcIiwgdGhpcy5faGFuZGxlcnMub25UaHJvdHRsZWRSZXNpemUpLCB0aGlzLnNldHRpbmdzLm1vdXNlRHJhZyAmJiAodGhpcy4kZWxlbWVudC5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuZHJhZ0NsYXNzKSwgdGhpcy4kc3RhZ2Uub24oXCJtb3VzZWRvd24ub3dsLmNvcmVcIiwgYS5wcm94eSh0aGlzLm9uRHJhZ1N0YXJ0LCB0aGlzKSksIHRoaXMuJHN0YWdlLm9uKFwiZHJhZ3N0YXJ0Lm93bC5jb3JlIHNlbGVjdHN0YXJ0Lm93bC5jb3JlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gITFcbiAgICAgICAgICAgIH0pKSwgdGhpcy5zZXR0aW5ncy50b3VjaERyYWcgJiYgKHRoaXMuJHN0YWdlLm9uKFwidG91Y2hzdGFydC5vd2wuY29yZVwiLCBhLnByb3h5KHRoaXMub25EcmFnU3RhcnQsIHRoaXMpKSwgdGhpcy4kc3RhZ2Uub24oXCJ0b3VjaGNhbmNlbC5vd2wuY29yZVwiLCBhLnByb3h5KHRoaXMub25EcmFnRW5kLCB0aGlzKSkpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0ID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHZhciBkID0gbnVsbDtcbiAgICAgICAgICAgIDMgIT09IGIud2hpY2ggJiYgKGEuc3VwcG9ydC50cmFuc2Zvcm0gPyAoZCA9IHRoaXMuJHN0YWdlLmNzcyhcInRyYW5zZm9ybVwiKS5yZXBsYWNlKC8uKlxcKHxcXCl8IC9nLCBcIlwiKS5zcGxpdChcIixcIiksIGQgPSB7XG4gICAgICAgICAgICAgICAgeDogZFsxNiA9PT0gZC5sZW5ndGggPyAxMiA6IDRdLFxuICAgICAgICAgICAgICAgIHk6IGRbMTYgPT09IGQubGVuZ3RoID8gMTMgOiA1XVxuICAgICAgICAgICAgfSkgOiAoZCA9IHRoaXMuJHN0YWdlLnBvc2l0aW9uKCksIGQgPSB7XG4gICAgICAgICAgICAgICAgeDogdGhpcy5zZXR0aW5ncy5ydGwgPyBkLmxlZnQgKyB0aGlzLiRzdGFnZS53aWR0aCgpIC0gdGhpcy53aWR0aCgpICsgdGhpcy5zZXR0aW5ncy5tYXJnaW4gOiBkLmxlZnQsXG4gICAgICAgICAgICAgICAgeTogZC50b3BcbiAgICAgICAgICAgIH0pLCB0aGlzLmlzKFwiYW5pbWF0aW5nXCIpICYmIChhLnN1cHBvcnQudHJhbnNmb3JtID8gdGhpcy5hbmltYXRlKGQueCkgOiB0aGlzLiRzdGFnZS5zdG9wKCksIHRoaXMuaW52YWxpZGF0ZShcInBvc2l0aW9uXCIpKSwgdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcyh0aGlzLm9wdGlvbnMuZ3JhYkNsYXNzLCBcIm1vdXNlZG93blwiID09PSBiLnR5cGUpLCB0aGlzLnNwZWVkKDApLCB0aGlzLl9kcmFnLnRpbWUgPSAobmV3IERhdGUpLmdldFRpbWUoKSwgdGhpcy5fZHJhZy50YXJnZXQgPSBhKGIudGFyZ2V0KSwgdGhpcy5fZHJhZy5zdGFnZS5zdGFydCA9IGQsIHRoaXMuX2RyYWcuc3RhZ2UuY3VycmVudCA9IGQsIHRoaXMuX2RyYWcucG9pbnRlciA9IHRoaXMucG9pbnRlcihiKSwgYShjKS5vbihcIm1vdXNldXAub3dsLmNvcmUgdG91Y2hlbmQub3dsLmNvcmVcIiwgYS5wcm94eSh0aGlzLm9uRHJhZ0VuZCwgdGhpcykpLCBhKGMpLm9uZShcIm1vdXNlbW92ZS5vd2wuY29yZSB0b3VjaG1vdmUub3dsLmNvcmVcIiwgYS5wcm94eShmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5kaWZmZXJlbmNlKHRoaXMuX2RyYWcucG9pbnRlciwgdGhpcy5wb2ludGVyKGIpKTtcbiAgICAgICAgICAgICAgICBhKGMpLm9uKFwibW91c2Vtb3ZlLm93bC5jb3JlIHRvdWNobW92ZS5vd2wuY29yZVwiLCBhLnByb3h5KHRoaXMub25EcmFnTW92ZSwgdGhpcykpLCBNYXRoLmFicyhkLngpIDwgTWF0aC5hYnMoZC55KSAmJiB0aGlzLmlzKFwidmFsaWRcIikgfHwgKGIucHJldmVudERlZmF1bHQoKSwgdGhpcy5lbnRlcihcImRyYWdnaW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJkcmFnXCIpKVxuICAgICAgICAgICAgfSwgdGhpcykpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5vbkRyYWdNb3ZlID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVsbCwgYyA9IG51bGwsIGQgPSBudWxsLCBlID0gdGhpcy5kaWZmZXJlbmNlKHRoaXMuX2RyYWcucG9pbnRlciwgdGhpcy5wb2ludGVyKGEpKSxcbiAgICAgICAgICAgICAgZiA9IHRoaXMuZGlmZmVyZW5jZSh0aGlzLl9kcmFnLnN0YWdlLnN0YXJ0LCBlKTtcbiAgICAgICAgICAgIHRoaXMuaXMoXCJkcmFnZ2luZ1wiKSAmJiAoYS5wcmV2ZW50RGVmYXVsdCgpLCB0aGlzLnNldHRpbmdzLmxvb3AgPyAoYiA9IHRoaXMuY29vcmRpbmF0ZXModGhpcy5taW5pbXVtKCkpLCBjID0gdGhpcy5jb29yZGluYXRlcyh0aGlzLm1heGltdW0oKSArIDEpIC0gYiwgZi54ID0gKChmLnggLSBiKSAlIGMgKyBjKSAlIGMgKyBiKSA6IChiID0gdGhpcy5zZXR0aW5ncy5ydGwgPyB0aGlzLmNvb3JkaW5hdGVzKHRoaXMubWF4aW11bSgpKSA6IHRoaXMuY29vcmRpbmF0ZXModGhpcy5taW5pbXVtKCkpLCBjID0gdGhpcy5zZXR0aW5ncy5ydGwgPyB0aGlzLmNvb3JkaW5hdGVzKHRoaXMubWluaW11bSgpKSA6IHRoaXMuY29vcmRpbmF0ZXModGhpcy5tYXhpbXVtKCkpLCBkID0gdGhpcy5zZXR0aW5ncy5wdWxsRHJhZyA/IC0xICogZS54IC8gNSA6IDAsIGYueCA9IE1hdGgubWF4KE1hdGgubWluKGYueCwgYiArIGQpLCBjICsgZCkpLCB0aGlzLl9kcmFnLnN0YWdlLmN1cnJlbnQgPSBmLCB0aGlzLmFuaW1hdGUoZi54KSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUub25EcmFnRW5kID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHZhciBkID0gdGhpcy5kaWZmZXJlbmNlKHRoaXMuX2RyYWcucG9pbnRlciwgdGhpcy5wb2ludGVyKGIpKSwgZSA9IHRoaXMuX2RyYWcuc3RhZ2UuY3VycmVudCxcbiAgICAgICAgICAgICAgZiA9IGQueCA+IDAgXiB0aGlzLnNldHRpbmdzLnJ0bCA/IFwibGVmdFwiIDogXCJyaWdodFwiO1xuICAgICAgICAgICAgYShjKS5vZmYoXCIub3dsLmNvcmVcIiksIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmdyYWJDbGFzcyksICgwICE9PSBkLnggJiYgdGhpcy5pcyhcImRyYWdnaW5nXCIpIHx8ICF0aGlzLmlzKFwidmFsaWRcIikpICYmICh0aGlzLnNwZWVkKHRoaXMuc2V0dGluZ3MuZHJhZ0VuZFNwZWVkIHx8IHRoaXMuc2V0dGluZ3Muc21hcnRTcGVlZCksIHRoaXMuY3VycmVudCh0aGlzLmNsb3Nlc3QoZS54LCAwICE9PSBkLnggPyBmIDogdGhpcy5fZHJhZy5kaXJlY3Rpb24pKSwgdGhpcy5pbnZhbGlkYXRlKFwicG9zaXRpb25cIiksIHRoaXMudXBkYXRlKCksIHRoaXMuX2RyYWcuZGlyZWN0aW9uID0gZiwgKE1hdGguYWJzKGQueCkgPiAzIHx8IChuZXcgRGF0ZSkuZ2V0VGltZSgpIC0gdGhpcy5fZHJhZy50aW1lID4gMzAwKSAmJiB0aGlzLl9kcmFnLnRhcmdldC5vbmUoXCJjbGljay5vd2wuY29yZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICExXG4gICAgICAgICAgICB9KSksIHRoaXMuaXMoXCJkcmFnZ2luZ1wiKSAmJiAodGhpcy5sZWF2ZShcImRyYWdnaW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJkcmFnZ2VkXCIpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5jbG9zZXN0ID0gZnVuY3Rpb24gKGIsIGMpIHtcbiAgICAgICAgICAgIHZhciBkID0gLTEsIGUgPSAzMCwgZiA9IHRoaXMud2lkdGgoKSwgZyA9IHRoaXMuY29vcmRpbmF0ZXMoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmZyZWVEcmFnIHx8IGEuZWFjaChnLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibGVmdFwiID09PSBjICYmIGIgPiBoIC0gZSAmJiBiIDwgaCArIGUgPyBkID0gYSA6IFwicmlnaHRcIiA9PT0gYyAmJiBiID4gaCAtIGYgLSBlICYmIGIgPCBoIC0gZiArIGUgPyBkID0gYSArIDEgOiB0aGlzLm9wKGIsIFwiPFwiLCBoKSAmJiB0aGlzLm9wKGIsIFwiPlwiLCBnW2EgKyAxXSB8fCBoIC0gZikgJiYgKGQgPSBcImxlZnRcIiA9PT0gYyA/IGEgKyAxIDogYSksIGQgPT09IC0xXG4gICAgICAgICAgICB9LCB0aGlzKSksIHRoaXMuc2V0dGluZ3MubG9vcCB8fCAodGhpcy5vcChiLCBcIj5cIiwgZ1t0aGlzLm1pbmltdW0oKV0pID8gZCA9IGIgPSB0aGlzLm1pbmltdW0oKSA6IHRoaXMub3AoYiwgXCI8XCIsIGdbdGhpcy5tYXhpbXVtKCldKSAmJiAoZCA9IGIgPSB0aGlzLm1heGltdW0oKSkpLCBkXG4gICAgICAgIH0sIGUucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdmFyIGMgPSB0aGlzLnNwZWVkKCkgPiAwO1xuICAgICAgICAgICAgdGhpcy5pcyhcImFuaW1hdGluZ1wiKSAmJiB0aGlzLm9uVHJhbnNpdGlvbkVuZCgpLCBjICYmICh0aGlzLmVudGVyKFwiYW5pbWF0aW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJ0cmFuc2xhdGVcIikpLCBhLnN1cHBvcnQudHJhbnNmb3JtM2QgJiYgYS5zdXBwb3J0LnRyYW5zaXRpb24gPyB0aGlzLiRzdGFnZS5jc3Moe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUzZChcIiArIGIgKyBcInB4LDBweCwwcHgpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdGhpcy5zcGVlZCgpIC8gMWUzICsgXCJzXCJcbiAgICAgICAgICAgIH0pIDogYyA/IHRoaXMuJHN0YWdlLmFuaW1hdGUoe2xlZnQ6IGIgKyBcInB4XCJ9LCB0aGlzLnNwZWVkKCksIHRoaXMuc2V0dGluZ3MuZmFsbGJhY2tFYXNpbmcsIGEucHJveHkodGhpcy5vblRyYW5zaXRpb25FbmQsIHRoaXMpKSA6IHRoaXMuJHN0YWdlLmNzcyh7bGVmdDogYiArIFwicHhcIn0pXG4gICAgICAgIH0sIGUucHJvdG90eXBlLmlzID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZXMuY3VycmVudFthXSAmJiB0aGlzLl9zdGF0ZXMuY3VycmVudFthXSA+IDBcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICBpZiAoYSA9PT0gZCkgcmV0dXJuIHRoaXMuX2N1cnJlbnQ7XG4gICAgICAgICAgICBpZiAoMCA9PT0gdGhpcy5faXRlbXMubGVuZ3RoKSByZXR1cm4gZDtcbiAgICAgICAgICAgIGlmIChhID0gdGhpcy5ub3JtYWxpemUoYSksIHRoaXMuX2N1cnJlbnQgIT09IGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMudHJpZ2dlcihcImNoYW5nZVwiLCB7cHJvcGVydHk6IHtuYW1lOiBcInBvc2l0aW9uXCIsIHZhbHVlOiBhfX0pO1xuICAgICAgICAgICAgICAgIGIuZGF0YSAhPT0gZCAmJiAoYSA9IHRoaXMubm9ybWFsaXplKGIuZGF0YSkpLCB0aGlzLl9jdXJyZW50ID0gYSwgdGhpcy5pbnZhbGlkYXRlKFwicG9zaXRpb25cIiksIHRoaXMudHJpZ2dlcihcImNoYW5nZWRcIiwge1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJwb3NpdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuX2N1cnJlbnRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFxuICAgICAgICB9LCBlLnByb3RvdHlwZS5pbnZhbGlkYXRlID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHJldHVybiBcInN0cmluZ1wiID09PSBhLnR5cGUoYikgJiYgKHRoaXMuX2ludmFsaWRhdGVkW2JdID0gITAsIHRoaXMuaXMoXCJ2YWxpZFwiKSAmJiB0aGlzLmxlYXZlKFwidmFsaWRcIikpLCBhLm1hcCh0aGlzLl9pbnZhbGlkYXRlZCwgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYlxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgYSA9IHRoaXMubm9ybWFsaXplKGEpLCBhICE9PSBkICYmICh0aGlzLl9zcGVlZCA9IDAsIHRoaXMuX2N1cnJlbnQgPSBhLCB0aGlzLnN1cHByZXNzKFtcInRyYW5zbGF0ZVwiLCBcInRyYW5zbGF0ZWRcIl0pLCB0aGlzLmFuaW1hdGUodGhpcy5jb29yZGluYXRlcyhhKSksIHRoaXMucmVsZWFzZShbXCJ0cmFuc2xhdGVcIiwgXCJ0cmFuc2xhdGVkXCJdKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHZhciBjID0gdGhpcy5faXRlbXMubGVuZ3RoLCBlID0gYiA/IDAgOiB0aGlzLl9jbG9uZXMubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmlzTnVtZXJpYyhhKSB8fCBjIDwgMSA/IGEgPSBkIDogKGEgPCAwIHx8IGEgPj0gYyArIGUpICYmIChhID0gKChhIC0gZSAvIDIpICUgYyArIGMpICUgYyArIGUgLyAyKSwgYVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5yZWxhdGl2ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICByZXR1cm4gYSAtPSB0aGlzLl9jbG9uZXMubGVuZ3RoIC8gMiwgdGhpcy5ub3JtYWxpemUoYSwgITApXG4gICAgICAgIH0sIGUucHJvdG90eXBlLm1heGltdW0gPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgdmFyIGIsIGMsIGQsIGUgPSB0aGlzLnNldHRpbmdzLCBmID0gdGhpcy5fY29vcmRpbmF0ZXMubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKGUubG9vcCkgZiA9IHRoaXMuX2Nsb25lcy5sZW5ndGggLyAyICsgdGhpcy5faXRlbXMubGVuZ3RoIC0gMTsgZWxzZSBpZiAoZS5hdXRvV2lkdGggfHwgZS5tZXJnZSkge1xuICAgICAgICAgICAgICAgIGZvciAoYiA9IHRoaXMuX2l0ZW1zLmxlbmd0aCwgYyA9IHRoaXMuX2l0ZW1zWy0tYl0ud2lkdGgoKSwgZCA9IHRoaXMuJGVsZW1lbnQud2lkdGgoKTsgYi0tICYmIChjICs9IHRoaXMuX2l0ZW1zW2JdLndpZHRoKCkgKyB0aGlzLnNldHRpbmdzLm1hcmdpbiwgIShjID4gZCkpOykgO1xuICAgICAgICAgICAgICAgIGYgPSBiICsgMVxuICAgICAgICAgICAgfSBlbHNlIGYgPSBlLmNlbnRlciA/IHRoaXMuX2l0ZW1zLmxlbmd0aCAtIDEgOiB0aGlzLl9pdGVtcy5sZW5ndGggLSBlLml0ZW1zO1xuICAgICAgICAgICAgcmV0dXJuIGEgJiYgKGYgLT0gdGhpcy5fY2xvbmVzLmxlbmd0aCAvIDIpLCBNYXRoLm1heChmLCAwKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5taW5pbXVtID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIHJldHVybiBhID8gMCA6IHRoaXMuX2Nsb25lcy5sZW5ndGggLyAyXG4gICAgICAgIH0sIGUucHJvdG90eXBlLml0ZW1zID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIHJldHVybiBhID09PSBkID8gdGhpcy5faXRlbXMuc2xpY2UoKSA6IChhID0gdGhpcy5ub3JtYWxpemUoYSwgITApLCB0aGlzLl9pdGVtc1thXSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUubWVyZ2VycyA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA9PT0gZCA/IHRoaXMuX21lcmdlcnMuc2xpY2UoKSA6IChhID0gdGhpcy5ub3JtYWxpemUoYSwgITApLCB0aGlzLl9tZXJnZXJzW2FdKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5jbG9uZXMgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdmFyIGMgPSB0aGlzLl9jbG9uZXMubGVuZ3RoIC8gMiwgZSA9IGMgKyB0aGlzLl9pdGVtcy5sZW5ndGgsIGYgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhICUgMiA9PT0gMCA/IGUgKyBhIC8gMiA6IGMgLSAoYSArIDEpIC8gMlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBiID09PSBkID8gYS5tYXAodGhpcy5fY2xvbmVzLCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmKGIpXG4gICAgICAgICAgICB9KSA6IGEubWFwKHRoaXMuX2Nsb25lcywgZnVuY3Rpb24gKGEsIGMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYSA9PT0gYiA/IGYoYykgOiBudWxsXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5zcGVlZCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICByZXR1cm4gYSAhPT0gZCAmJiAodGhpcy5fc3BlZWQgPSBhKSwgdGhpcy5fc3BlZWRcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuY29vcmRpbmF0ZXMgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdmFyIGMsIGUgPSAxLCBmID0gYiAtIDE7XG4gICAgICAgICAgICByZXR1cm4gYiA9PT0gZCA/IGEubWFwKHRoaXMuX2Nvb3JkaW5hdGVzLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29vcmRpbmF0ZXMoYilcbiAgICAgICAgICAgIH0sIHRoaXMpKSA6ICh0aGlzLnNldHRpbmdzLmNlbnRlciA/ICh0aGlzLnNldHRpbmdzLnJ0bCAmJiAoZSA9IC0xLCBmID0gYiArIDEpLCBjID0gdGhpcy5fY29vcmRpbmF0ZXNbYl0sIGMgKz0gKHRoaXMud2lkdGgoKSAtIGMgKyAodGhpcy5fY29vcmRpbmF0ZXNbZl0gfHwgMCkpIC8gMiAqIGUpIDogYyA9IHRoaXMuX2Nvb3JkaW5hdGVzW2ZdIHx8IDAsIGMgPSBNYXRoLmNlaWwoYykpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLmR1cmF0aW9uID0gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgICAgIHJldHVybiAwID09PSBjID8gMCA6IE1hdGgubWluKE1hdGgubWF4KE1hdGguYWJzKGIgLSBhKSwgMSksIDYpICogTWF0aC5hYnMoYyB8fCB0aGlzLnNldHRpbmdzLnNtYXJ0U3BlZWQpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnRvID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHZhciBjID0gdGhpcy5jdXJyZW50KCksIGQgPSBudWxsLCBlID0gYSAtIHRoaXMucmVsYXRpdmUoYyksIGYgPSAoZSA+IDApIC0gKGUgPCAwKSwgZyA9IHRoaXMuX2l0ZW1zLmxlbmd0aCxcbiAgICAgICAgICAgICAgaCA9IHRoaXMubWluaW11bSgpLCBpID0gdGhpcy5tYXhpbXVtKCk7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmxvb3AgPyAoIXRoaXMuc2V0dGluZ3MucmV3aW5kICYmIE1hdGguYWJzKGUpID4gZyAvIDIgJiYgKGUgKz0gZiAqIC0xICogZyksIGEgPSBjICsgZSwgZCA9ICgoYSAtIGgpICUgZyArIGcpICUgZyArIGgsIGQgIT09IGEgJiYgZCAtIGUgPD0gaSAmJiBkIC0gZSA+IDAgJiYgKGMgPSBkIC0gZSwgYSA9IGQsIHRoaXMucmVzZXQoYykpKSA6IHRoaXMuc2V0dGluZ3MucmV3aW5kID8gKGkgKz0gMSwgYSA9IChhICUgaSArIGkpICUgaSkgOiBhID0gTWF0aC5tYXgoaCwgTWF0aC5taW4oaSwgYSkpLCB0aGlzLnNwZWVkKHRoaXMuZHVyYXRpb24oYywgYSwgYikpLCB0aGlzLmN1cnJlbnQoYSksIHRoaXMuJGVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKSAmJiB0aGlzLnVwZGF0ZSgpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgYSA9IGEgfHwgITEsIHRoaXMudG8odGhpcy5yZWxhdGl2ZSh0aGlzLmN1cnJlbnQoKSkgKyAxLCBhKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIGEgPSBhIHx8ICExLCB0aGlzLnRvKHRoaXMucmVsYXRpdmUodGhpcy5jdXJyZW50KCkpIC0gMSwgYSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUub25UcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIGlmIChhICE9PSBkICYmIChhLnN0b3BQcm9wYWdhdGlvbigpLCAoYS50YXJnZXQgfHwgYS5zcmNFbGVtZW50IHx8IGEub3JpZ2luYWxUYXJnZXQpICE9PSB0aGlzLiRzdGFnZS5nZXQoMCkpKSByZXR1cm4gITE7XG4gICAgICAgICAgICB0aGlzLmxlYXZlKFwiYW5pbWF0aW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJ0cmFuc2xhdGVkXCIpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnZpZXdwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJlc3BvbnNpdmVCYXNlRWxlbWVudCAhPT0gYiA/IGQgPSBhKHRoaXMub3B0aW9ucy5yZXNwb25zaXZlQmFzZUVsZW1lbnQpLndpZHRoKCkgOiBiLmlubmVyV2lkdGggPyBkID0gYi5pbm5lcldpZHRoIDogYy5kb2N1bWVudEVsZW1lbnQgJiYgYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggPyBkID0gYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggOiBjb25zb2xlLndhcm4oXCJDYW4gbm90IGRldGVjdCB2aWV3cG9ydCB3aWR0aC5cIiksIGRcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICB0aGlzLiRzdGFnZS5lbXB0eSgpLCB0aGlzLl9pdGVtcyA9IFtdLCBiICYmIChiID0gYiBpbnN0YW5jZW9mIGpRdWVyeSA/IGIgOiBhKGIpKSwgdGhpcy5zZXR0aW5ncy5uZXN0ZWRJdGVtU2VsZWN0b3IgJiYgKGIgPSBiLmZpbmQoXCIuXCIgKyB0aGlzLnNldHRpbmdzLm5lc3RlZEl0ZW1TZWxlY3RvcikpLCBiLmZpbHRlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgPT09IHRoaXMubm9kZVR5cGVcbiAgICAgICAgICAgIH0pLmVhY2goYS5wcm94eShmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIGIgPSB0aGlzLnByZXBhcmUoYiksIHRoaXMuJHN0YWdlLmFwcGVuZChiKSwgdGhpcy5faXRlbXMucHVzaChiKSwgdGhpcy5fbWVyZ2Vycy5wdXNoKDEgKiBiLmZpbmQoXCJbZGF0YS1tZXJnZV1cIikuYWRkQmFjayhcIltkYXRhLW1lcmdlXVwiKS5hdHRyKFwiZGF0YS1tZXJnZVwiKSB8fCAxKVxuICAgICAgICAgICAgfSwgdGhpcykpLCB0aGlzLnJlc2V0KHRoaXMuaXNOdW1lcmljKHRoaXMuc2V0dGluZ3Muc3RhcnRQb3NpdGlvbikgPyB0aGlzLnNldHRpbmdzLnN0YXJ0UG9zaXRpb24gOiAwKSwgdGhpcy5pbnZhbGlkYXRlKFwiaXRlbXNcIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGIsIGMpIHtcbiAgICAgICAgICAgIHZhciBlID0gdGhpcy5yZWxhdGl2ZSh0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgICAgIGMgPSBjID09PSBkID8gdGhpcy5faXRlbXMubGVuZ3RoIDogdGhpcy5ub3JtYWxpemUoYywgITApLCBiID0gYiBpbnN0YW5jZW9mIGpRdWVyeSA/IGIgOiBhKGIpLCB0aGlzLnRyaWdnZXIoXCJhZGRcIiwge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGNcbiAgICAgICAgICAgIH0pLCBiID0gdGhpcy5wcmVwYXJlKGIpLCAwID09PSB0aGlzLl9pdGVtcy5sZW5ndGggfHwgYyA9PT0gdGhpcy5faXRlbXMubGVuZ3RoID8gKDAgPT09IHRoaXMuX2l0ZW1zLmxlbmd0aCAmJiB0aGlzLiRzdGFnZS5hcHBlbmQoYiksIDAgIT09IHRoaXMuX2l0ZW1zLmxlbmd0aCAmJiB0aGlzLl9pdGVtc1tjIC0gMV0uYWZ0ZXIoYiksIHRoaXMuX2l0ZW1zLnB1c2goYiksIHRoaXMuX21lcmdlcnMucHVzaCgxICogYi5maW5kKFwiW2RhdGEtbWVyZ2VdXCIpLmFkZEJhY2soXCJbZGF0YS1tZXJnZV1cIikuYXR0cihcImRhdGEtbWVyZ2VcIikgfHwgMSkpIDogKHRoaXMuX2l0ZW1zW2NdLmJlZm9yZShiKSwgdGhpcy5faXRlbXMuc3BsaWNlKGMsIDAsIGIpLCB0aGlzLl9tZXJnZXJzLnNwbGljZShjLCAwLCAxICogYi5maW5kKFwiW2RhdGEtbWVyZ2VdXCIpLmFkZEJhY2soXCJbZGF0YS1tZXJnZV1cIikuYXR0cihcImRhdGEtbWVyZ2VcIikgfHwgMSkpLCB0aGlzLl9pdGVtc1tlXSAmJiB0aGlzLnJlc2V0KHRoaXMuX2l0ZW1zW2VdLmluZGV4KCkpLCB0aGlzLmludmFsaWRhdGUoXCJpdGVtc1wiKSwgdGhpcy50cmlnZ2VyKFwiYWRkZWRcIiwge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGNcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICBhID0gdGhpcy5ub3JtYWxpemUoYSwgITApLCBhICE9PSBkICYmICh0aGlzLnRyaWdnZXIoXCJyZW1vdmVcIiwge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX2l0ZW1zW2FdLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhXG4gICAgICAgICAgICB9KSwgdGhpcy5faXRlbXNbYV0ucmVtb3ZlKCksIHRoaXMuX2l0ZW1zLnNwbGljZShhLCAxKSwgdGhpcy5fbWVyZ2Vycy5zcGxpY2UoYSwgMSksIHRoaXMuaW52YWxpZGF0ZShcIml0ZW1zXCIpLCB0aGlzLnRyaWdnZXIoXCJyZW1vdmVkXCIsIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBudWxsLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucHJlbG9hZEF1dG9XaWR0aEltYWdlcyA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICBiLmVhY2goYS5wcm94eShmdW5jdGlvbiAoYiwgYykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50ZXIoXCJwcmUtbG9hZGluZ1wiKSwgYyA9IGEoYyksIGEobmV3IEltYWdlKS5vbmUoXCJsb2FkXCIsIGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYy5hdHRyKFwic3JjXCIsIGEudGFyZ2V0LnNyYyksIGMuY3NzKFwib3BhY2l0eVwiLCAxKSwgdGhpcy5sZWF2ZShcInByZS1sb2FkaW5nXCIpLCAhdGhpcy5pcyhcInByZS1sb2FkaW5nXCIpICYmICF0aGlzLmlzKFwiaW5pdGlhbGl6aW5nXCIpICYmIHRoaXMucmVmcmVzaCgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcykpLmF0dHIoXCJzcmNcIiwgYy5hdHRyKFwic3JjXCIpIHx8IGMuYXR0cihcImRhdGEtc3JjXCIpIHx8IGMuYXR0cihcImRhdGEtc3JjLXJldGluYVwiKSlcbiAgICAgICAgICAgIH0sIHRoaXMpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5vZmYoXCIub3dsLmNvcmVcIiksIHRoaXMuJHN0YWdlLm9mZihcIi5vd2wuY29yZVwiKSwgYShjKS5vZmYoXCIub3dsLmNvcmVcIiksIHRoaXMuc2V0dGluZ3MucmVzcG9uc2l2ZSAhPT0gITEgJiYgKGIuY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZXIpLCB0aGlzLm9mZihiLCBcInJlc2l6ZVwiLCB0aGlzLl9oYW5kbGVycy5vblRocm90dGxlZFJlc2l6ZSkpO1xuICAgICAgICAgICAgZm9yICh2YXIgZCBpbiB0aGlzLl9wbHVnaW5zKSB0aGlzLl9wbHVnaW5zW2RdLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuJHN0YWdlLmNoaWxkcmVuKFwiLmNsb25lZFwiKS5yZW1vdmUoKSwgdGhpcy4kc3RhZ2UudW53cmFwKCksIHRoaXMuJHN0YWdlLmNoaWxkcmVuKCkuY29udGVudHMoKS51bndyYXAoKSwgdGhpcy4kc3RhZ2UuY2hpbGRyZW4oKS51bndyYXAoKSwgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMucmVmcmVzaENsYXNzKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMubG9hZGluZ0NsYXNzKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMubG9hZGVkQ2xhc3MpLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5ydGxDbGFzcykucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmRyYWdDbGFzcykucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmdyYWJDbGFzcykuYXR0cihcImNsYXNzXCIsIHRoaXMuJGVsZW1lbnQuYXR0cihcImNsYXNzXCIpLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZUNsYXNzICsgXCItXFxcXFMrXFxcXHNcIiwgXCJnXCIpLCBcIlwiKSkucmVtb3ZlRGF0YShcIm93bC5jYXJvdXNlbFwiKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5vcCA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgICAgICB2YXIgZCA9IHRoaXMuc2V0dGluZ3MucnRsO1xuICAgICAgICAgICAgc3dpdGNoIChiKSB7XG4gICAgICAgICAgICAgICAgY2FzZVwiPFwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCA/IGEgPiBjIDogYSA8IGM7XG4gICAgICAgICAgICAgICAgY2FzZVwiPlwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCA/IGEgPCBjIDogYSA+IGM7XG4gICAgICAgICAgICAgICAgY2FzZVwiPj1cIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQgPyBhIDw9IGMgOiBhID49IGM7XG4gICAgICAgICAgICAgICAgY2FzZVwiPD1cIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQgPyBhID49IGMgOiBhIDw9IGNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgICAgICAgYS5hZGRFdmVudExpc3RlbmVyID8gYS5hZGRFdmVudExpc3RlbmVyKGIsIGMsIGQpIDogYS5hdHRhY2hFdmVudCAmJiBhLmF0dGFjaEV2ZW50KFwib25cIiArIGIsIGMpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLm9mZiA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgICAgICAgICBhLnJlbW92ZUV2ZW50TGlzdGVuZXIgPyBhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYiwgYywgZCkgOiBhLmRldGFjaEV2ZW50ICYmIGEuZGV0YWNoRXZlbnQoXCJvblwiICsgYiwgYylcbiAgICAgICAgfSwgZS5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uIChiLCBjLCBkLCBmLCBnKSB7XG4gICAgICAgICAgICB2YXIgaCA9IHtpdGVtOiB7Y291bnQ6IHRoaXMuX2l0ZW1zLmxlbmd0aCwgaW5kZXg6IHRoaXMuY3VycmVudCgpfX0sXG4gICAgICAgICAgICAgIGkgPSBhLmNhbWVsQ2FzZShhLmdyZXAoW1wib25cIiwgYiwgZF0sIGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gYVxuICAgICAgICAgICAgICB9KS5qb2luKFwiLVwiKS50b0xvd2VyQ2FzZSgpKSxcbiAgICAgICAgICAgICAgaiA9IGEuRXZlbnQoW2IsIFwib3dsXCIsIGQgfHwgXCJjYXJvdXNlbFwiXS5qb2luKFwiLlwiKS50b0xvd2VyQ2FzZSgpLCBhLmV4dGVuZCh7cmVsYXRlZFRhcmdldDogdGhpc30sIGgsIGMpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdXByZXNzW2JdIHx8IChhLmVhY2godGhpcy5fcGx1Z2lucywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICBiLm9uVHJpZ2dlciAmJiBiLm9uVHJpZ2dlcihqKVxuICAgICAgICAgICAgfSksIHRoaXMucmVnaXN0ZXIoe1xuICAgICAgICAgICAgICAgIHR5cGU6IGUuVHlwZS5FdmVudCxcbiAgICAgICAgICAgICAgICBuYW1lOiBiXG4gICAgICAgICAgICB9KSwgdGhpcy4kZWxlbWVudC50cmlnZ2VyKGopLCB0aGlzLnNldHRpbmdzICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdGhpcy5zZXR0aW5nc1tpXSAmJiB0aGlzLnNldHRpbmdzW2ldLmNhbGwodGhpcywgaikpLCBqXG4gICAgICAgIH0sIGUucHJvdG90eXBlLmVudGVyID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIGEuZWFjaChbYl0uY29uY2F0KHRoaXMuX3N0YXRlcy50YWdzW2JdIHx8IFtdKSwgYS5wcm94eShmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlcy5jdXJyZW50W2JdID09PSBkICYmICh0aGlzLl9zdGF0ZXMuY3VycmVudFtiXSA9IDApLCB0aGlzLl9zdGF0ZXMuY3VycmVudFtiXSsrXG4gICAgICAgICAgICB9LCB0aGlzKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUubGVhdmUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgYS5lYWNoKFtiXS5jb25jYXQodGhpcy5fc3RhdGVzLnRhZ3NbYl0gfHwgW10pLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVzLmN1cnJlbnRbYl0tLVxuICAgICAgICAgICAgfSwgdGhpcykpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIGlmIChiLnR5cGUgPT09IGUuVHlwZS5FdmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChhLmV2ZW50LnNwZWNpYWxbYi5uYW1lXSB8fCAoYS5ldmVudC5zcGVjaWFsW2IubmFtZV0gPSB7fSksICFhLmV2ZW50LnNwZWNpYWxbYi5uYW1lXS5vd2wpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBhLmV2ZW50LnNwZWNpYWxbYi5uYW1lXS5fZGVmYXVsdDtcbiAgICAgICAgICAgICAgICAgICAgYS5ldmVudC5zcGVjaWFsW2IubmFtZV0uX2RlZmF1bHQgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFjIHx8ICFjLmFwcGx5IHx8IGEubmFtZXNwYWNlICYmIGEubmFtZXNwYWNlLmluZGV4T2YoXCJvd2xcIikgIT09IC0xID8gYS5uYW1lc3BhY2UgJiYgYS5uYW1lc3BhY2UuaW5kZXhPZihcIm93bFwiKSA+IC0xIDogYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICAgICAgICAgICAgICAgIH0sIGEuZXZlbnQuc3BlY2lhbFtiLm5hbWVdLm93bCA9ICEwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGIudHlwZSA9PT0gZS5UeXBlLlN0YXRlICYmICh0aGlzLl9zdGF0ZXMudGFnc1tiLm5hbWVdID8gdGhpcy5fc3RhdGVzLnRhZ3NbYi5uYW1lXSA9IHRoaXMuX3N0YXRlcy50YWdzW2IubmFtZV0uY29uY2F0KGIudGFncykgOiB0aGlzLl9zdGF0ZXMudGFnc1tiLm5hbWVdID0gYi50YWdzLCB0aGlzLl9zdGF0ZXMudGFnc1tiLm5hbWVdID0gYS5ncmVwKHRoaXMuX3N0YXRlcy50YWdzW2IubmFtZV0sIGEucHJveHkoZnVuY3Rpb24gKGMsIGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5pbkFycmF5KGMsIHRoaXMuX3N0YXRlcy50YWdzW2IubmFtZV0pID09PSBkXG4gICAgICAgICAgICB9LCB0aGlzKSkpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnN1cHByZXNzID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIGEuZWFjaChiLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3VwcmVzc1tiXSA9ICEwXG4gICAgICAgICAgICB9LCB0aGlzKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVsZWFzZSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICBhLmVhY2goYiwgYS5wcm94eShmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zdXByZXNzW2JdXG4gICAgICAgICAgICB9LCB0aGlzKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucG9pbnRlciA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICB2YXIgYyA9IHt4OiBudWxsLCB5OiBudWxsfTtcbiAgICAgICAgICAgIHJldHVybiBhID0gYS5vcmlnaW5hbEV2ZW50IHx8IGEgfHwgYi5ldmVudCwgYSA9IGEudG91Y2hlcyAmJiBhLnRvdWNoZXMubGVuZ3RoID8gYS50b3VjaGVzWzBdIDogYS5jaGFuZ2VkVG91Y2hlcyAmJiBhLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA/IGEuY2hhbmdlZFRvdWNoZXNbMF0gOiBhLCBhLnBhZ2VYID8gKGMueCA9IGEucGFnZVgsIGMueSA9IGEucGFnZVkpIDogKGMueCA9IGEuY2xpZW50WCwgYy55ID0gYS5jbGllbnRZKSwgY1xuICAgICAgICB9LCBlLnByb3RvdHlwZS5pc051bWVyaWMgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUZsb2F0KGEpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kaWZmZXJlbmNlID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiB7eDogYS54IC0gYi54LCB5OiBhLnkgLSBiLnl9XG4gICAgICAgIH0sIGEuZm4uc2J5T3dsQ2Fyb3VzZWwgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdmFyIGMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBhKHRoaXMpLCBmID0gZC5kYXRhKFwib3dsLmNhcm91c2VsXCIpO1xuICAgICAgICAgICAgICAgIGYgfHwgKGYgPSBuZXcgZSh0aGlzLCBcIm9iamVjdFwiID09IHR5cGVvZiBiICYmIGIpLCBkLmRhdGEoXCJvd2wuY2Fyb3VzZWxcIiwgZiksIGEuZWFjaChbXCJuZXh0XCIsIFwicHJldlwiLCBcInRvXCIsIFwiZGVzdHJveVwiLCBcInJlZnJlc2hcIiwgXCJyZXBsYWNlXCIsIFwiYWRkXCIsIFwicmVtb3ZlXCJdLCBmdW5jdGlvbiAoYiwgYykge1xuICAgICAgICAgICAgICAgICAgICBmLnJlZ2lzdGVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUuVHlwZS5FdmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNcbiAgICAgICAgICAgICAgICAgICAgfSksIGYuJGVsZW1lbnQub24oYyArIFwiLm93bC5jYXJvdXNlbC5jb3JlXCIsIGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIGEucmVsYXRlZFRhcmdldCAhPT0gdGhpcyAmJiAodGhpcy5zdXBwcmVzcyhbY10pLCBmW2NdLmFwcGx5KHRoaXMsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSksIHRoaXMucmVsZWFzZShbY10pKVxuICAgICAgICAgICAgICAgICAgICB9LCBmKSlcbiAgICAgICAgICAgICAgICB9KSksIFwic3RyaW5nXCIgPT0gdHlwZW9mIGIgJiYgXCJfXCIgIT09IGIuY2hhckF0KDApICYmIGZbYl0uYXBwbHkoZiwgYylcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sIGEuZm4uc2J5T3dsQ2Fyb3VzZWwuQ29uc3RydWN0b3IgPSBlXG4gICAgfSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCksIGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgICAgIHZhciBlID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUgPSBiLCB0aGlzLl9pbnRlcnZhbCA9IG51bGwsIHRoaXMuX3Zpc2libGUgPSBudWxsLCB0aGlzLl9oYW5kbGVycyA9IHtcbiAgICAgICAgICAgICAgICBcImluaXRpYWxpemVkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b1JlZnJlc2ggJiYgdGhpcy53YXRjaCgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcylcbiAgICAgICAgICAgIH0sIHRoaXMuX2NvcmUub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCB0aGlzLl9jb3JlLm9wdGlvbnMpLCB0aGlzLl9jb3JlLiRlbGVtZW50Lm9uKHRoaXMuX2hhbmRsZXJzKVxuICAgICAgICB9O1xuICAgICAgICBlLkRlZmF1bHRzID0ge2F1dG9SZWZyZXNoOiAhMCwgYXV0b1JlZnJlc2hJbnRlcnZhbDogNTAwfSwgZS5wcm90b3R5cGUud2F0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnRlcnZhbCB8fCAodGhpcy5fdmlzaWJsZSA9IHRoaXMuX2NvcmUuJGVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKSwgdGhpcy5faW50ZXJ2YWwgPSBiLnNldEludGVydmFsKGEucHJveHkodGhpcy5yZWZyZXNoLCB0aGlzKSwgdGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvUmVmcmVzaEludGVydmFsKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUuJGVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKSAhPT0gdGhpcy5fdmlzaWJsZSAmJiAodGhpcy5fdmlzaWJsZSA9ICF0aGlzLl92aXNpYmxlLCB0aGlzLl9jb3JlLiRlbGVtZW50LnRvZ2dsZUNsYXNzKFwic2J5LW93bC1oaWRkZW5cIiwgIXRoaXMuX3Zpc2libGUpLCB0aGlzLl92aXNpYmxlICYmIHRoaXMuX2NvcmUuaW52YWxpZGF0ZShcIndpZHRoXCIpICYmIHRoaXMuX2NvcmUucmVmcmVzaCgpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGM7XG4gICAgICAgICAgICBiLmNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWwpO1xuICAgICAgICAgICAgZm9yIChhIGluIHRoaXMuX2hhbmRsZXJzKSB0aGlzLl9jb3JlLiRlbGVtZW50Lm9mZihhLCB0aGlzLl9oYW5kbGVyc1thXSk7XG4gICAgICAgICAgICBmb3IgKGMgaW4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpIFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgdGhpc1tjXSAmJiAodGhpc1tjXSA9IG51bGwpXG4gICAgICAgIH0sIGEuZm4uc2J5T3dsQ2Fyb3VzZWwuQ29uc3RydWN0b3IuUGx1Z2lucy5BdXRvUmVmcmVzaCA9IGVcbiAgICB9KHdpbmRvdy5aZXB0byB8fCB3aW5kb3cualF1ZXJ5LCB3aW5kb3csIGRvY3VtZW50KSwgZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICAgICAgdmFyIGUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdGhpcy5fY29yZSA9IGIsIHRoaXMuX2xvYWRlZCA9IFtdLCB0aGlzLl9oYW5kbGVycyA9IHtcbiAgICAgICAgICAgICAgICBcImluaXRpYWxpemVkLm93bC5jYXJvdXNlbCBjaGFuZ2Uub3dsLmNhcm91c2VsIHJlc2l6ZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MgJiYgdGhpcy5fY29yZS5zZXR0aW5ncy5sYXp5TG9hZCAmJiAoYi5wcm9wZXJ0eSAmJiBcInBvc2l0aW9uXCIgPT0gYi5wcm9wZXJ0eS5uYW1lIHx8IFwiaW5pdGlhbGl6ZWRcIiA9PSBiLnR5cGUpKSBmb3IgKHZhciBjID0gdGhpcy5fY29yZS5zZXR0aW5ncywgZSA9IGMuY2VudGVyICYmIE1hdGguY2VpbChjLml0ZW1zIC8gMikgfHwgYy5pdGVtcywgZiA9IGMuY2VudGVyICYmIGUgKiAtMSB8fCAwLCBnID0gKGIucHJvcGVydHkgJiYgYi5wcm9wZXJ0eS52YWx1ZSAhPT0gZCA/IGIucHJvcGVydHkudmFsdWUgOiB0aGlzLl9jb3JlLmN1cnJlbnQoKSkgKyBmLCBoID0gdGhpcy5fY29yZS5jbG9uZXMoKS5sZW5ndGgsIGkgPSBhLnByb3h5KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQoYilcbiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcyk7IGYrKyA8IGU7KSB0aGlzLmxvYWQoaCAvIDIgKyB0aGlzLl9jb3JlLnJlbGF0aXZlKGcpKSwgaCAmJiBhLmVhY2godGhpcy5fY29yZS5jbG9uZXModGhpcy5fY29yZS5yZWxhdGl2ZShnKSksIGkpLCBnKytcbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcy5fY29yZS5vcHRpb25zID0gYS5leHRlbmQoe30sIGUuRGVmYXVsdHMsIHRoaXMuX2NvcmUub3B0aW9ucyksIHRoaXMuX2NvcmUuJGVsZW1lbnQub24odGhpcy5faGFuZGxlcnMpXG4gICAgICAgIH07XG4gICAgICAgIGUuRGVmYXVsdHMgPSB7bGF6eUxvYWQ6ICExfSwgZS5wcm90b3R5cGUubG9hZCA9IGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICB2YXIgZCA9IHRoaXMuX2NvcmUuJHN0YWdlLmNoaWxkcmVuKCkuZXEoYyksIGUgPSBkICYmIGQuZmluZChcIi5zYnktb3dsLWxhenlcIik7XG4gICAgICAgICAgICAhZSB8fCBhLmluQXJyYXkoZC5nZXQoMCksIHRoaXMuX2xvYWRlZCkgPiAtMSB8fCAoZS5lYWNoKGEucHJveHkoZnVuY3Rpb24gKGMsIGQpIHtcbiAgICAgICAgICAgICAgICB2YXIgZSwgZiA9IGEoZCksIGcgPSBiLmRldmljZVBpeGVsUmF0aW8gPiAxICYmIGYuYXR0cihcImRhdGEtc3JjLXJldGluYVwiKSB8fCBmLmF0dHIoXCJkYXRhLXNyY1wiKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb3JlLnRyaWdnZXIoXCJsb2FkXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogZixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBnXG4gICAgICAgICAgICAgICAgfSwgXCJsYXp5XCIpLCBmLmlzKFwiaW1nXCIpID8gZi5vbmUoXCJsb2FkLm93bC5sYXp5XCIsIGEucHJveHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBmLmNzcyhcIm9wYWNpdHlcIiwgMSksIHRoaXMuX2NvcmUudHJpZ2dlcihcImxvYWRlZFwiLCB7ZWxlbWVudDogZiwgdXJsOiBnfSwgXCJsYXp5XCIpXG4gICAgICAgICAgICAgICAgfSwgdGhpcykpLmF0dHIoXCJzcmNcIiwgZykgOiAoZSA9IG5ldyBJbWFnZSwgZS5vbmxvYWQgPSBhLnByb3h5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZi5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLWltYWdlXCI6ICd1cmwoXCInICsgZyArICdcIiknLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogXCIxXCJcbiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuX2NvcmUudHJpZ2dlcihcImxvYWRlZFwiLCB7ZWxlbWVudDogZiwgdXJsOiBnfSwgXCJsYXp5XCIpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIGUuc3JjID0gZylcbiAgICAgICAgICAgIH0sIHRoaXMpKSwgdGhpcy5fbG9hZGVkLnB1c2goZC5nZXQoMCkpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGI7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5oYW5kbGVycykgdGhpcy5fY29yZS4kZWxlbWVudC5vZmYoYSwgdGhpcy5oYW5kbGVyc1thXSk7XG4gICAgICAgICAgICBmb3IgKGIgaW4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpIFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgdGhpc1tiXSAmJiAodGhpc1tiXSA9IG51bGwpXG4gICAgICAgIH0sIGEuZm4uc2J5T3dsQ2Fyb3VzZWwuQ29uc3RydWN0b3IuUGx1Z2lucy5MYXp5ID0gZVxuICAgIH0od2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpLCBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgICB2YXIgZSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICB0aGlzLl9jb3JlID0gYiwgdGhpcy5faGFuZGxlcnMgPSB7XG4gICAgICAgICAgICAgICAgXCJpbml0aWFsaXplZC5vd2wuY2Fyb3VzZWwgcmVmcmVzaGVkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b0hlaWdodCAmJiB0aGlzLnVwZGF0ZSgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwiY2hhbmdlZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmF1dG9IZWlnaHQgJiYgXCJwb3NpdGlvblwiID09IGEucHJvcGVydHkubmFtZSAmJiB0aGlzLnVwZGF0ZSgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwibG9hZGVkLm93bC5sYXp5XCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvSGVpZ2h0ICYmIGEuZWxlbWVudC5jbG9zZXN0KFwiLlwiICsgdGhpcy5fY29yZS5zZXR0aW5ncy5pdGVtQ2xhc3MpLmluZGV4KCkgPT09IHRoaXMuX2NvcmUuY3VycmVudCgpICYmIHRoaXMudXBkYXRlKClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcy5fY29yZS5vcHRpb25zID0gYS5leHRlbmQoe30sIGUuRGVmYXVsdHMsIHRoaXMuX2NvcmUub3B0aW9ucyksIHRoaXMuX2NvcmUuJGVsZW1lbnQub24odGhpcy5faGFuZGxlcnMpXG4gICAgICAgIH07XG4gICAgICAgIGUuRGVmYXVsdHMgPSB7YXV0b0hlaWdodDogITEsIGF1dG9IZWlnaHRDbGFzczogXCJzYnktb3dsLWhlaWdodFwifSwgZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGIgPSB0aGlzLl9jb3JlLl9jdXJyZW50LCBjID0gYiArIHRoaXMuX2NvcmUuc2V0dGluZ3MuaXRlbXMsXG4gICAgICAgICAgICAgIGQgPSB0aGlzLl9jb3JlLiRzdGFnZS5jaGlsZHJlbigpLnRvQXJyYXkoKS5zbGljZShiLCBjKSwgZSA9IFtdLCBmID0gMDtcbiAgICAgICAgICAgIGEuZWFjaChkLCBmdW5jdGlvbiAoYiwgYykge1xuICAgICAgICAgICAgICAgIGUucHVzaChhKGMpLmhlaWdodCgpKVxuICAgICAgICAgICAgfSksIGYgPSBNYXRoLm1heC5hcHBseShudWxsLCBlKSwgdGhpcy5fY29yZS4kc3RhZ2UucGFyZW50KCkuaGVpZ2h0KGYpLmFkZENsYXNzKHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b0hlaWdodENsYXNzKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGI7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5faGFuZGxlcnMpIHRoaXMuX2NvcmUuJGVsZW1lbnQub2ZmKGEsIHRoaXMuX2hhbmRsZXJzW2FdKTtcbiAgICAgICAgICAgIGZvciAoYiBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0aGlzW2JdICYmICh0aGlzW2JdID0gbnVsbClcbiAgICAgICAgfSwgYS5mbi5zYnlPd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zLkF1dG9IZWlnaHQgPSBlXG4gICAgfSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCksIGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgICAgIHZhciBlID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUgPSBiLCB0aGlzLl92aWRlb3MgPSB7fSwgdGhpcy5fcGxheWluZyA9IG51bGwsIHRoaXMuX2hhbmRsZXJzID0ge1xuICAgICAgICAgICAgICAgIFwiaW5pdGlhbGl6ZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5yZWdpc3Rlcih7dHlwZTogXCJzdGF0ZVwiLCBuYW1lOiBcInBsYXlpbmdcIiwgdGFnczogW1wiaW50ZXJhY3RpbmdcIl19KVxuICAgICAgICAgICAgICAgIH0sIHRoaXMpLCBcInJlc2l6ZS5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLnZpZGVvICYmIHRoaXMuaXNJbkZ1bGxTY3JlZW4oKSAmJiBhLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJyZWZyZXNoZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5pcyhcInJlc2l6aW5nXCIpICYmIHRoaXMuX2NvcmUuJHN0YWdlLmZpbmQoXCIuY2xvbmVkIC5zYnktb3dsLXZpZGVvLWZyYW1lXCIpLnJlbW92ZSgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwiY2hhbmdlZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiBcInBvc2l0aW9uXCIgPT09IGEucHJvcGVydHkubmFtZSAmJiB0aGlzLl9wbGF5aW5nICYmIHRoaXMuc3RvcCgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwicHJlcGFyZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIubmFtZXNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGEoYi5jb250ZW50KS5maW5kKFwiLnNieS1vd2wtdmlkZW9cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLmxlbmd0aCAmJiAoYy5jc3MoXCJkaXNwbGF5XCIsIFwibm9uZVwiKSwgdGhpcy5mZXRjaChjLCBhKGIuY29udGVudCkpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdGhpcylcbiAgICAgICAgICAgIH0sIHRoaXMuX2NvcmUub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCB0aGlzLl9jb3JlLm9wdGlvbnMpLCB0aGlzLl9jb3JlLiRlbGVtZW50Lm9uKHRoaXMuX2hhbmRsZXJzKSwgdGhpcy5fY29yZS4kZWxlbWVudC5vbihcImNsaWNrLm93bC52aWRlb1wiLCBcIi5zYnktb3dsLXZpZGVvLXBsYXktaWNvblwiLCBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbGF5KGEpXG4gICAgICAgICAgICB9LCB0aGlzKSlcbiAgICAgICAgfTtcbiAgICAgICAgZS5EZWZhdWx0cyA9IHt2aWRlbzogITEsIHZpZGVvSGVpZ2h0OiAhMSwgdmlkZW9XaWR0aDogITF9LCBlLnByb3RvdHlwZS5mZXRjaCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICB2YXIgYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBhLmF0dHIoXCJkYXRhLXZpbWVvLWlkXCIpID8gXCJ2aW1lb1wiIDogYS5hdHRyKFwiZGF0YS12emFhci1pZFwiKSA/IFwidnphYXJcIiA6IFwieW91dHViZVwiXG4gICAgICAgICAgICAgIH0oKSwgZCA9IGEuYXR0cihcImRhdGEtdmltZW8taWRcIikgfHwgYS5hdHRyKFwiZGF0YS15b3V0dWJlLWlkXCIpIHx8IGEuYXR0cihcImRhdGEtdnphYXItaWRcIiksXG4gICAgICAgICAgICAgIGUgPSBhLmF0dHIoXCJkYXRhLXdpZHRoXCIpIHx8IHRoaXMuX2NvcmUuc2V0dGluZ3MudmlkZW9XaWR0aCxcbiAgICAgICAgICAgICAgZiA9IGEuYXR0cihcImRhdGEtaGVpZ2h0XCIpIHx8IHRoaXMuX2NvcmUuc2V0dGluZ3MudmlkZW9IZWlnaHQsIGcgPSBhLmF0dHIoXCJocmVmXCIpO1xuICAgICAgICAgICAgaWYgKCFnKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHZpZGVvIFVSTC5cIik7XG4gICAgICAgICAgICBpZiAoZCA9IGcubWF0Y2goLyhodHRwOnxodHRwczp8KVxcL1xcLyhwbGF5ZXIufHd3dy58YXBwLik/KHZpbWVvXFwuY29tfHlvdXR1KGJlXFwuY29tfFxcLmJlfGJlXFwuZ29vZ2xlYXBpc1xcLmNvbSl8dnphYXJcXC5jb20pXFwvKHZpZGVvXFwvfHZpZGVvc1xcL3xlbWJlZFxcL3xjaGFubmVsc1xcLy4rXFwvfGdyb3Vwc1xcLy4rXFwvfHdhdGNoXFw/dj18dlxcLyk/KFtBLVphLXowLTkuXyUtXSopKFxcJlxcUyspPy8pLCBkWzNdLmluZGV4T2YoXCJ5b3V0dVwiKSA+IC0xKSBjID0gXCJ5b3V0dWJlXCI7IGVsc2UgaWYgKGRbM10uaW5kZXhPZihcInZpbWVvXCIpID4gLTEpIGMgPSBcInZpbWVvXCI7IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghKGRbM10uaW5kZXhPZihcInZ6YWFyXCIpID4gLTEpKSB0aHJvdyBuZXcgRXJyb3IoXCJWaWRlbyBVUkwgbm90IHN1cHBvcnRlZC5cIik7XG4gICAgICAgICAgICAgICAgYyA9IFwidnphYXJcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZCA9IGRbNl0sIHRoaXMuX3ZpZGVvc1tnXSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBjLFxuICAgICAgICAgICAgICAgIGlkOiBkLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBlLFxuICAgICAgICAgICAgICAgIGhlaWdodDogZlxuICAgICAgICAgICAgfSwgYi5hdHRyKFwiZGF0YS12aWRlb1wiLCBnKSwgdGhpcy50aHVtYm5haWwoYSwgdGhpcy5fdmlkZW9zW2ddKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS50aHVtYm5haWwgPSBmdW5jdGlvbiAoYiwgYykge1xuICAgICAgICAgICAgdmFyIGQsIGUsIGYsIGcgPSBjLndpZHRoICYmIGMuaGVpZ2h0ID8gJ3N0eWxlPVwid2lkdGg6JyArIGMud2lkdGggKyBcInB4O2hlaWdodDpcIiArIGMuaGVpZ2h0ICsgJ3B4O1wiJyA6IFwiXCIsXG4gICAgICAgICAgICAgIGggPSBiLmZpbmQoXCJpbWdcIiksIGkgPSBcInNyY1wiLCBqID0gXCJcIiwgayA9IHRoaXMuX2NvcmUuc2V0dGluZ3MsIGwgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgZSA9ICc8ZGl2IGNsYXNzPVwic2J5LW93bC12aWRlby1wbGF5LWljb25cIj48L2Rpdj4nLCBkID0gay5sYXp5TG9hZCA/ICc8ZGl2IGNsYXNzPVwic2J5LW93bC12aWRlby10biAnICsgaiArICdcIiAnICsgaSArICc9XCInICsgYSArICdcIj48L2Rpdj4nIDogJzxkaXYgY2xhc3M9XCJzYnktb3dsLXZpZGVvLXRuXCIgc3R5bGU9XCJvcGFjaXR5OjE7YmFja2dyb3VuZC1pbWFnZTp1cmwoJyArIGEgKyAnKVwiPjwvZGl2PicsIGIuYWZ0ZXIoZCksIGIuYWZ0ZXIoZSlcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChiLndyYXAoJzxkaXYgY2xhc3M9XCJzYnktb3dsLXZpZGVvLXdyYXBwZXJcIicgKyBnICsgXCI+PC9kaXY+XCIpLCB0aGlzLl9jb3JlLnNldHRpbmdzLmxhenlMb2FkICYmIChpID0gXCJkYXRhLXNyY1wiLCBqID0gXCJzYnktb3dsLWxhenlcIiksIGgubGVuZ3RoKSByZXR1cm4gbChoLmF0dHIoaSkpLCBoLnJlbW92ZSgpLCAhMTtcbiAgICAgICAgICAgIFwieW91dHViZVwiID09PSBjLnR5cGUgPyAoZiA9IFwiLy9pbWcueW91dHViZS5jb20vdmkvXCIgKyBjLmlkICsgXCIvaHFkZWZhdWx0LmpwZ1wiLCBsKGYpKSA6IFwidmltZW9cIiA9PT0gYy50eXBlID8gYS5hamF4KHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgIHVybDogXCIvL3ZpbWVvLmNvbS9hcGkvdjIvdmlkZW8vXCIgKyBjLmlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICAgIGpzb25wOiBcImNhbGxiYWNrXCIsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBmID0gYVswXS50aHVtYm5haWxfbGFyZ2UsIGwoZilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSA6IFwidnphYXJcIiA9PT0gYy50eXBlICYmIGEuYWpheCh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcbiAgICAgICAgICAgICAgICB1cmw6IFwiLy92emFhci5jb20vYXBpL3ZpZGVvcy9cIiArIGMuaWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgICAganNvbnA6IFwiY2FsbGJhY2tcIixcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGYgPSBhLmZyYW1lZ3JhYl91cmwsIGwoZilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY29yZS50cmlnZ2VyKFwic3RvcFwiLCBudWxsLCBcInZpZGVvXCIpLCB0aGlzLl9wbGF5aW5nLmZpbmQoXCIuc2J5LW93bC12aWRlby1mcmFtZVwiKS5yZW1vdmUoKSwgdGhpcy5fcGxheWluZy5yZW1vdmVDbGFzcyhcInNieS1vd2wtdmlkZW8tcGxheWluZ1wiKSwgdGhpcy5fcGxheWluZyA9IG51bGwsIHRoaXMuX2NvcmUubGVhdmUoXCJwbGF5aW5nXCIpLCB0aGlzLl9jb3JlLnRyaWdnZXIoXCJzdG9wcGVkXCIsIG51bGwsIFwidmlkZW9cIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucGxheSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICB2YXIgYywgZCA9IGEoYi50YXJnZXQpLCBlID0gZC5jbG9zZXN0KFwiLlwiICsgdGhpcy5fY29yZS5zZXR0aW5ncy5pdGVtQ2xhc3MpLFxuICAgICAgICAgICAgICBmID0gdGhpcy5fdmlkZW9zW2UuYXR0cihcImRhdGEtdmlkZW9cIildLCBnID0gZi53aWR0aCB8fCBcIjEwMCVcIixcbiAgICAgICAgICAgICAgaCA9IGYuaGVpZ2h0IHx8IHRoaXMuX2NvcmUuJHN0YWdlLmhlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5fcGxheWluZyB8fCAodGhpcy5fY29yZS5lbnRlcihcInBsYXlpbmdcIiksIHRoaXMuX2NvcmUudHJpZ2dlcihcInBsYXlcIiwgbnVsbCwgXCJ2aWRlb1wiKSwgZSA9IHRoaXMuX2NvcmUuaXRlbXModGhpcy5fY29yZS5yZWxhdGl2ZShlLmluZGV4KCkpKSwgdGhpcy5fY29yZS5yZXNldChlLmluZGV4KCkpLCBcInlvdXR1YmVcIiA9PT0gZi50eXBlID8gYyA9ICc8aWZyYW1lIHdpZHRoPVwiJyArIGcgKyAnXCIgaGVpZ2h0PVwiJyArIGggKyAnXCIgc3JjPVwiLy93d3cueW91dHViZS5jb20vZW1iZWQvJyArIGYuaWQgKyBcIj9hdXRvcGxheT0xJnJlbD0wJnY9XCIgKyBmLmlkICsgJ1wiIGZyYW1lYm9yZGVyPVwiMFwiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4nIDogXCJ2aW1lb1wiID09PSBmLnR5cGUgPyBjID0gJzxpZnJhbWUgc3JjPVwiLy9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLycgKyBmLmlkICsgJz9hdXRvcGxheT0xXCIgd2lkdGg9XCInICsgZyArICdcIiBoZWlnaHQ9XCInICsgaCArICdcIiBmcmFtZWJvcmRlcj1cIjBcIiB3ZWJraXRhbGxvd2Z1bGxzY3JlZW4gbW96YWxsb3dmdWxsc2NyZWVuIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4nIDogXCJ2emFhclwiID09PSBmLnR5cGUgJiYgKGMgPSAnPGlmcmFtZSBmcmFtZWJvcmRlcj1cIjBcImhlaWdodD1cIicgKyBoICsgJ1wid2lkdGg9XCInICsgZyArICdcIiBhbGxvd2Z1bGxzY3JlZW4gbW96YWxsb3dmdWxsc2NyZWVuIHdlYmtpdEFsbG93RnVsbFNjcmVlbiBzcmM9XCIvL3ZpZXcudnphYXIuY29tLycgKyBmLmlkICsgJy9wbGF5ZXI/YXV0b3BsYXk9dHJ1ZVwiPjwvaWZyYW1lPicpLCBhKCc8ZGl2IGNsYXNzPVwic2J5LW93bC12aWRlby1mcmFtZVwiPicgKyBjICsgXCI8L2Rpdj5cIikuaW5zZXJ0QWZ0ZXIoZS5maW5kKFwiLnNieS1vd2wtdmlkZW9cIikpLCB0aGlzLl9wbGF5aW5nID0gZS5hZGRDbGFzcyhcInNieS1vd2wtdmlkZW8tcGxheWluZ1wiKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuaXNJbkZ1bGxTY3JlZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYiA9IGMuZnVsbHNjcmVlbkVsZW1lbnQgfHwgYy5tb3pGdWxsU2NyZWVuRWxlbWVudCB8fCBjLndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50O1xuICAgICAgICAgICAgcmV0dXJuIGIgJiYgYShiKS5wYXJlbnQoKS5oYXNDbGFzcyhcInNieS1vd2wtdmlkZW8tZnJhbWVcIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhLCBiO1xuICAgICAgICAgICAgdGhpcy5fY29yZS4kZWxlbWVudC5vZmYoXCJjbGljay5vd2wudmlkZW9cIik7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5faGFuZGxlcnMpIHRoaXMuX2NvcmUuJGVsZW1lbnQub2ZmKGEsIHRoaXMuX2hhbmRsZXJzW2FdKTtcbiAgICAgICAgICAgIGZvciAoYiBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0aGlzW2JdICYmICh0aGlzW2JdID0gbnVsbClcbiAgICAgICAgfSwgYS5mbi5zYnlPd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zLlZpZGVvID0gZVxuICAgIH0od2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpLCBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgICB2YXIgZSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICB0aGlzLmNvcmUgPSBiLCB0aGlzLmNvcmUub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCB0aGlzLmNvcmUub3B0aW9ucyksIHRoaXMuc3dhcHBpbmcgPSAhMCwgdGhpcy5wcmV2aW91cyA9IGQsIHRoaXMubmV4dCA9IGQsIHRoaXMuaGFuZGxlcnMgPSB7XG4gICAgICAgICAgICAgICAgXCJjaGFuZ2Uub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgXCJwb3NpdGlvblwiID09IGEucHJvcGVydHkubmFtZSAmJiAodGhpcy5wcmV2aW91cyA9IHRoaXMuY29yZS5jdXJyZW50KCksIHRoaXMubmV4dCA9IGEucHJvcGVydHkudmFsdWUpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwiZHJhZy5vd2wuY2Fyb3VzZWwgZHJhZ2dlZC5vd2wuY2Fyb3VzZWwgdHJhbnNsYXRlZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiAodGhpcy5zd2FwcGluZyA9IFwidHJhbnNsYXRlZFwiID09IGEudHlwZSlcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJ0cmFuc2xhdGUub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5zd2FwcGluZyAmJiAodGhpcy5jb3JlLm9wdGlvbnMuYW5pbWF0ZU91dCB8fCB0aGlzLmNvcmUub3B0aW9ucy5hbmltYXRlSW4pICYmIHRoaXMuc3dhcCgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcylcbiAgICAgICAgICAgIH0sIHRoaXMuY29yZS4kZWxlbWVudC5vbih0aGlzLmhhbmRsZXJzKVxuICAgICAgICB9O1xuICAgICAgICBlLkRlZmF1bHRzID0ge2FuaW1hdGVPdXQ6ICExLCBhbmltYXRlSW46ICExfSwgZS5wcm90b3R5cGUuc3dhcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICgxID09PSB0aGlzLmNvcmUuc2V0dGluZ3MuaXRlbXMgJiYgYS5zdXBwb3J0LmFuaW1hdGlvbiAmJiBhLnN1cHBvcnQudHJhbnNpdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY29yZS5zcGVlZCgwKTtcbiAgICAgICAgICAgICAgICB2YXIgYiwgYyA9IGEucHJveHkodGhpcy5jbGVhciwgdGhpcyksIGQgPSB0aGlzLmNvcmUuJHN0YWdlLmNoaWxkcmVuKCkuZXEodGhpcy5wcmV2aW91cyksXG4gICAgICAgICAgICAgICAgICBlID0gdGhpcy5jb3JlLiRzdGFnZS5jaGlsZHJlbigpLmVxKHRoaXMubmV4dCksIGYgPSB0aGlzLmNvcmUuc2V0dGluZ3MuYW5pbWF0ZUluLFxuICAgICAgICAgICAgICAgICAgZyA9IHRoaXMuY29yZS5zZXR0aW5ncy5hbmltYXRlT3V0O1xuICAgICAgICAgICAgICAgIHRoaXMuY29yZS5jdXJyZW50KCkgIT09IHRoaXMucHJldmlvdXMgJiYgKGcgJiYgKGIgPSB0aGlzLmNvcmUuY29vcmRpbmF0ZXModGhpcy5wcmV2aW91cykgLSB0aGlzLmNvcmUuY29vcmRpbmF0ZXModGhpcy5uZXh0KSwgZC5vbmUoYS5zdXBwb3J0LmFuaW1hdGlvbi5lbmQsIGMpLmNzcyh7bGVmdDogYiArIFwicHhcIn0pLmFkZENsYXNzKFwiYW5pbWF0ZWQgc2J5LW93bC1hbmltYXRlZC1vdXRcIikuYWRkQ2xhc3MoZykpLCBmICYmIGUub25lKGEuc3VwcG9ydC5hbmltYXRpb24uZW5kLCBjKS5hZGRDbGFzcyhcImFuaW1hdGVkIHNieS1vd2wtYW5pbWF0ZWQtaW5cIikuYWRkQ2xhc3MoZikpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGUucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIGEoYi50YXJnZXQpLmNzcyh7bGVmdDogXCJcIn0pLnJlbW92ZUNsYXNzKFwiYW5pbWF0ZWQgc2J5LW93bC1hbmltYXRlZC1vdXQgc2J5LW93bC1hbmltYXRlZC1pblwiKS5yZW1vdmVDbGFzcyh0aGlzLmNvcmUuc2V0dGluZ3MuYW5pbWF0ZUluKS5yZW1vdmVDbGFzcyh0aGlzLmNvcmUuc2V0dGluZ3MuYW5pbWF0ZU91dCksIHRoaXMuY29yZS5vblRyYW5zaXRpb25FbmQoKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGI7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5oYW5kbGVycykgdGhpcy5jb3JlLiRlbGVtZW50Lm9mZihhLCB0aGlzLmhhbmRsZXJzW2FdKTtcbiAgICAgICAgICAgIGZvciAoYiBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0aGlzW2JdICYmICh0aGlzW2JdID0gbnVsbClcbiAgICAgICAgfSxcbiAgICAgICAgICBhLmZuLnNieU93bENhcm91c2VsLkNvbnN0cnVjdG9yLlBsdWdpbnMuQW5pbWF0ZSA9IGVcbiAgICB9KHdpbmRvdy5aZXB0byB8fCB3aW5kb3cualF1ZXJ5LCB3aW5kb3csIGRvY3VtZW50KSwgZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICAgICAgdmFyIGUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdGhpcy5fY29yZSA9IGIsIHRoaXMuX3RpbWVvdXQgPSBudWxsLCB0aGlzLl9wYXVzZWQgPSAhMSwgdGhpcy5faGFuZGxlcnMgPSB7XG4gICAgICAgICAgICAgICAgXCJjaGFuZ2VkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIFwic2V0dGluZ3NcIiA9PT0gYS5wcm9wZXJ0eS5uYW1lID8gdGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvcGxheSA/IHRoaXMucGxheSgpIDogdGhpcy5zdG9wKCkgOiBhLm5hbWVzcGFjZSAmJiBcInBvc2l0aW9uXCIgPT09IGEucHJvcGVydHkubmFtZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmF1dG9wbGF5ICYmIHRoaXMuX3NldEF1dG9QbGF5SW50ZXJ2YWwoKVxuICAgICAgICAgICAgICAgIH0sIHRoaXMpLCBcImluaXRpYWxpemVkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXkgJiYgdGhpcy5wbGF5KClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJwbGF5Lm93bC5hdXRvcGxheVwiOiBhLnByb3h5KGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIHRoaXMucGxheShiLCBjKVxuICAgICAgICAgICAgICAgIH0sIHRoaXMpLCBcInN0b3Aub3dsLmF1dG9wbGF5XCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5zdG9wKClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJtb3VzZW92ZXIub3dsLmF1dG9wbGF5XCI6IGEucHJveHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb3JlLnNldHRpbmdzLmF1dG9wbGF5SG92ZXJQYXVzZSAmJiB0aGlzLl9jb3JlLmlzKFwicm90YXRpbmdcIikgJiYgdGhpcy5wYXVzZSgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwibW91c2VsZWF2ZS5vd2wuYXV0b3BsYXlcIjogYS5wcm94eShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXlIb3ZlclBhdXNlICYmIHRoaXMuX2NvcmUuaXMoXCJyb3RhdGluZ1wiKSAmJiB0aGlzLnBsYXkoKVxuICAgICAgICAgICAgICAgIH0sIHRoaXMpLCBcInRvdWNoc3RhcnQub3dsLmNvcmVcIjogYS5wcm94eShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXlIb3ZlclBhdXNlICYmIHRoaXMuX2NvcmUuaXMoXCJyb3RhdGluZ1wiKSAmJiB0aGlzLnBhdXNlKClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJ0b3VjaGVuZC5vd2wuY29yZVwiOiBhLnByb3h5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvcGxheUhvdmVyUGF1c2UgJiYgdGhpcy5wbGF5KClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcy5fY29yZS4kZWxlbWVudC5vbih0aGlzLl9oYW5kbGVycyksIHRoaXMuX2NvcmUub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCB0aGlzLl9jb3JlLm9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgICAgIGUuRGVmYXVsdHMgPSB7XG4gICAgICAgICAgICBhdXRvcGxheTogITEsXG4gICAgICAgICAgICBhdXRvcGxheVRpbWVvdXQ6IDVlMyxcbiAgICAgICAgICAgIGF1dG9wbGF5SG92ZXJQYXVzZTogITEsXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiAhMVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5wbGF5ID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhdXNlZCA9ICExLCB0aGlzLl9jb3JlLmlzKFwicm90YXRpbmdcIikgfHwgKHRoaXMuX2NvcmUuZW50ZXIoXCJyb3RhdGluZ1wiKSwgdGhpcy5fc2V0QXV0b1BsYXlJbnRlcnZhbCgpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5fZ2V0TmV4dFRpbWVvdXQgPSBmdW5jdGlvbiAoZCwgZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVvdXQgJiYgYi5jbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksIGIuc2V0VGltZW91dChhLnByb3h5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXVzZWQgfHwgdGhpcy5fY29yZS5pcyhcImJ1c3lcIikgfHwgdGhpcy5fY29yZS5pcyhcImludGVyYWN0aW5nXCIpIHx8IGMuaGlkZGVuIHx8IHRoaXMuX2NvcmUubmV4dChlIHx8IHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXlTcGVlZClcbiAgICAgICAgICAgIH0sIHRoaXMpLCBkIHx8IHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXlUaW1lb3V0KVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5fc2V0QXV0b1BsYXlJbnRlcnZhbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVvdXQgPSB0aGlzLl9nZXROZXh0VGltZW91dCgpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLmlzKFwicm90YXRpbmdcIikgJiYgKGIuY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpLCB0aGlzLl9jb3JlLmxlYXZlKFwicm90YXRpbmdcIikpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY29yZS5pcyhcInJvdGF0aW5nXCIpICYmICh0aGlzLl9wYXVzZWQgPSAhMClcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhLCBiO1xuICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5faGFuZGxlcnMpIHRoaXMuX2NvcmUuJGVsZW1lbnQub2ZmKGEsIHRoaXMuX2hhbmRsZXJzW2FdKTtcbiAgICAgICAgICAgIGZvciAoYiBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0aGlzW2JdICYmICh0aGlzW2JdID0gbnVsbClcbiAgICAgICAgfSwgYS5mbi5zYnlPd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zLmF1dG9wbGF5ID0gZVxuICAgIH0od2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpLCBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgdmFyIGUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdGhpcy5fY29yZSA9IGIsIHRoaXMuX2luaXRpYWxpemVkID0gITEsIHRoaXMuX3BhZ2VzID0gW10sIHRoaXMuX2NvbnRyb2xzID0ge30sIHRoaXMuX3RlbXBsYXRlcyA9IFtdLCB0aGlzLiRlbGVtZW50ID0gdGhpcy5fY29yZS4kZWxlbWVudCwgdGhpcy5fb3ZlcnJpZGVzID0ge1xuICAgICAgICAgICAgICAgIG5leHQ6IHRoaXMuX2NvcmUubmV4dCxcbiAgICAgICAgICAgICAgICBwcmV2OiB0aGlzLl9jb3JlLnByZXYsXG4gICAgICAgICAgICAgICAgdG86IHRoaXMuX2NvcmUudG9cbiAgICAgICAgICAgIH0sIHRoaXMuX2hhbmRsZXJzID0ge1xuICAgICAgICAgICAgICAgIFwicHJlcGFyZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgYi5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5zZXR0aW5ncy5kb3RzRGF0YSAmJiB0aGlzLl90ZW1wbGF0ZXMucHVzaCgnPGRpdiBjbGFzcz1cIicgKyB0aGlzLl9jb3JlLnNldHRpbmdzLmRvdENsYXNzICsgJ1wiPicgKyBhKGIuY29udGVudCkuZmluZChcIltkYXRhLWRvdF1cIikuYWRkQmFjayhcIltkYXRhLWRvdF1cIikuYXR0cihcImRhdGEtZG90XCIpICsgXCI8L2Rpdj5cIilcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJhZGRlZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmRvdHNEYXRhICYmIHRoaXMuX3RlbXBsYXRlcy5zcGxpY2UoYS5wb3NpdGlvbiwgMCwgdGhpcy5fdGVtcGxhdGVzLnBvcCgpKVxuICAgICAgICAgICAgICAgIH0sIHRoaXMpLCBcInJlbW92ZS5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmRvdHNEYXRhICYmIHRoaXMuX3RlbXBsYXRlcy5zcGxpY2UoYS5wb3NpdGlvbiwgMSlcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJjaGFuZ2VkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIFwicG9zaXRpb25cIiA9PSBhLnByb3BlcnR5Lm5hbWUgJiYgdGhpcy5kcmF3KClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJpbml0aWFsaXplZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiAhdGhpcy5faW5pdGlhbGl6ZWQgJiYgKHRoaXMuX2NvcmUudHJpZ2dlcihcImluaXRpYWxpemVcIiwgbnVsbCwgXCJuYXZpZ2F0aW9uXCIpLCB0aGlzLmluaXRpYWxpemUoKSwgdGhpcy51cGRhdGUoKSwgdGhpcy5kcmF3KCksIHRoaXMuX2luaXRpYWxpemVkID0gITAsIHRoaXMuX2NvcmUudHJpZ2dlcihcImluaXRpYWxpemVkXCIsIG51bGwsIFwibmF2aWdhdGlvblwiKSlcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJyZWZyZXNoZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5faW5pdGlhbGl6ZWQgJiYgKHRoaXMuX2NvcmUudHJpZ2dlcihcInJlZnJlc2hcIiwgbnVsbCwgXCJuYXZpZ2F0aW9uXCIpLCB0aGlzLnVwZGF0ZSgpLCB0aGlzLmRyYXcoKSwgdGhpcy5fY29yZS50cmlnZ2VyKFwicmVmcmVzaGVkXCIsIG51bGwsIFwibmF2aWdhdGlvblwiKSlcbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcy5fY29yZS5vcHRpb25zID0gYS5leHRlbmQoe30sIGUuRGVmYXVsdHMsIHRoaXMuX2NvcmUub3B0aW9ucyksIHRoaXMuJGVsZW1lbnQub24odGhpcy5faGFuZGxlcnMpXG4gICAgICAgIH07XG4gICAgICAgIGUuRGVmYXVsdHMgPSB7XG4gICAgICAgICAgICBuYXY6ICExLFxuICAgICAgICAgICAgbmF2VGV4dDogW1wicHJldlwiLCBcIm5leHRcIl0sXG4gICAgICAgICAgICBuYXZTcGVlZDogITEsXG4gICAgICAgICAgICBuYXZFbGVtZW50OiBcImRpdlwiLFxuICAgICAgICAgICAgbmF2Q29udGFpbmVyOiAhMSxcbiAgICAgICAgICAgIG5hdkNvbnRhaW5lckNsYXNzOiBcInNieS1vd2wtbmF2XCIsXG4gICAgICAgICAgICBuYXZDbGFzczogW1wic2J5LW93bC1wcmV2XCIsIFwic2J5LW93bC1uZXh0XCJdLFxuICAgICAgICAgICAgc2xpZGVCeTogMSxcbiAgICAgICAgICAgIGRvdENsYXNzOiBcInNieS1vd2wtZG90XCIsXG4gICAgICAgICAgICBkb3RzQ2xhc3M6IFwic2J5LW93bC1kb3RzXCIsXG4gICAgICAgICAgICBkb3RzOiAhMCxcbiAgICAgICAgICAgIGRvdHNFYWNoOiAhMSxcbiAgICAgICAgICAgIGRvdHNEYXRhOiAhMSxcbiAgICAgICAgICAgIGRvdHNTcGVlZDogITEsXG4gICAgICAgICAgICBkb3RzQ29udGFpbmVyOiAhMVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGIsIGMgPSB0aGlzLl9jb3JlLnNldHRpbmdzO1xuICAgICAgICAgICAgdGhpcy5fY29udHJvbHMuJHJlbGF0aXZlID0gKGMubmF2Q29udGFpbmVyID8gYShjLm5hdkNvbnRhaW5lcikgOiBhKFwiPGRpdj5cIikuYWRkQ2xhc3MoYy5uYXZDb250YWluZXJDbGFzcykuYXBwZW5kVG8odGhpcy4kZWxlbWVudCkpLmFkZENsYXNzKFwiZGlzYWJsZWRcIiksIHRoaXMuX2NvbnRyb2xzLiRwcmV2aW91cyA9IGEoXCI8XCIgKyBjLm5hdkVsZW1lbnQgKyBcIj5cIikuYWRkQ2xhc3MoYy5uYXZDbGFzc1swXSkuaHRtbChjLm5hdlRleHRbMF0pLnByZXBlbmRUbyh0aGlzLl9jb250cm9scy4kcmVsYXRpdmUpLm9uKFwiY2xpY2tcIiwgYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldihjLm5hdlNwZWVkKVxuICAgICAgICAgICAgfSwgdGhpcykpLCB0aGlzLl9jb250cm9scy4kbmV4dCA9IGEoXCI8XCIgKyBjLm5hdkVsZW1lbnQgKyBcIj5cIikuYWRkQ2xhc3MoYy5uYXZDbGFzc1sxXSkuaHRtbChjLm5hdlRleHRbMV0pLmFwcGVuZFRvKHRoaXMuX2NvbnRyb2xzLiRyZWxhdGl2ZSkub24oXCJjbGlja1wiLCBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KGMubmF2U3BlZWQpXG4gICAgICAgICAgICB9LCB0aGlzKSksIGMuZG90c0RhdGEgfHwgKHRoaXMuX3RlbXBsYXRlcyA9IFthKFwiPGRpdj5cIikuYWRkQ2xhc3MoYy5kb3RDbGFzcykuYXBwZW5kKGEoXCI8c3Bhbj5cIikpLnByb3AoXCJvdXRlckhUTUxcIildKSwgdGhpcy5fY29udHJvbHMuJGFic29sdXRlID0gKGMuZG90c0NvbnRhaW5lciA/IGEoYy5kb3RzQ29udGFpbmVyKSA6IGEoXCI8ZGl2PlwiKS5hZGRDbGFzcyhjLmRvdHNDbGFzcykuYXBwZW5kVG8odGhpcy4kZWxlbWVudCkpLmFkZENsYXNzKFwiZGlzYWJsZWRcIiksIHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5vbihcImNsaWNrXCIsIFwiZGl2XCIsIGEucHJveHkoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICB2YXIgZCA9IGEoYi50YXJnZXQpLnBhcmVudCgpLmlzKHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZSkgPyBhKGIudGFyZ2V0KS5pbmRleCgpIDogYShiLnRhcmdldCkucGFyZW50KCkuaW5kZXgoKTtcbiAgICAgICAgICAgICAgICBiLnByZXZlbnREZWZhdWx0KCksIHRoaXMudG8oZCwgYy5kb3RzU3BlZWQpXG4gICAgICAgICAgICB9LCB0aGlzKSk7XG4gICAgICAgICAgICBmb3IgKGIgaW4gdGhpcy5fb3ZlcnJpZGVzKSB0aGlzLl9jb3JlW2JdID0gYS5wcm94eSh0aGlzW2JdLCB0aGlzKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGIsIGMsIGQ7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5faGFuZGxlcnMpIHRoaXMuJGVsZW1lbnQub2ZmKGEsIHRoaXMuX2hhbmRsZXJzW2FdKTtcbiAgICAgICAgICAgIGZvciAoYiBpbiB0aGlzLl9jb250cm9scykgdGhpcy5fY29udHJvbHNbYl0ucmVtb3ZlKCk7XG4gICAgICAgICAgICBmb3IgKGQgaW4gdGhpcy5vdmVyaWRlcykgdGhpcy5fY29yZVtkXSA9IHRoaXMuX292ZXJyaWRlc1tkXTtcbiAgICAgICAgICAgIGZvciAoYyBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0aGlzW2NdICYmICh0aGlzW2NdID0gbnVsbClcbiAgICAgICAgfSwgZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGIsIGMsIGQgPSB0aGlzLl9jb3JlLmNsb25lcygpLmxlbmd0aCAvIDIsIGUgPSBkICsgdGhpcy5fY29yZS5pdGVtcygpLmxlbmd0aCxcbiAgICAgICAgICAgICAgZiA9IHRoaXMuX2NvcmUubWF4aW11bSghMCksIGcgPSB0aGlzLl9jb3JlLnNldHRpbmdzLFxuICAgICAgICAgICAgICBoID0gZy5jZW50ZXIgfHwgZy5hdXRvV2lkdGggfHwgZy5kb3RzRGF0YSA/IDEgOiBnLmRvdHNFYWNoIHx8IGcuaXRlbXM7XG4gICAgICAgICAgICBpZiAoXCJwYWdlXCIgIT09IGcuc2xpZGVCeSAmJiAoZy5zbGlkZUJ5ID0gTWF0aC5taW4oZy5zbGlkZUJ5LCBnLml0ZW1zKSksIGcuZG90cyB8fCBcInBhZ2VcIiA9PSBnLnNsaWRlQnkpIGZvciAodGhpcy5fcGFnZXMgPSBbXSwgYSA9IGQsIGIgPSAwLCBjID0gMDsgYSA8IGU7IGErKykge1xuICAgICAgICAgICAgICAgIGlmIChiID49IGggfHwgMCA9PT0gYikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGFnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogTWF0aC5taW4oZiwgYSAtIGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBhIC0gZCArIGggLSAxXG4gICAgICAgICAgICAgICAgICAgIH0pLCBNYXRoLm1pbihmLCBhIC0gZCkgPT09IGYpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBiID0gMCwgKytjXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGIgKz0gdGhpcy5fY29yZS5tZXJnZXJzKHRoaXMuX2NvcmUucmVsYXRpdmUoYSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGUucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYiwgYyA9IHRoaXMuX2NvcmUuc2V0dGluZ3MsIGQgPSB0aGlzLl9jb3JlLml0ZW1zKCkubGVuZ3RoIDw9IGMuaXRlbXMsXG4gICAgICAgICAgICAgIGUgPSB0aGlzLl9jb3JlLnJlbGF0aXZlKHRoaXMuX2NvcmUuY3VycmVudCgpKSwgZiA9IGMubG9vcCB8fCBjLnJld2luZDtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xzLiRyZWxhdGl2ZS50b2dnbGVDbGFzcyhcImRpc2FibGVkXCIsICFjLm5hdiB8fCBkKSwgYy5uYXYgJiYgKHRoaXMuX2NvbnRyb2xzLiRwcmV2aW91cy50b2dnbGVDbGFzcyhcImRpc2FibGVkXCIsICFmICYmIGUgPD0gdGhpcy5fY29yZS5taW5pbXVtKCEwKSksIHRoaXMuX2NvbnRyb2xzLiRuZXh0LnRvZ2dsZUNsYXNzKFwiZGlzYWJsZWRcIiwgIWYgJiYgZSA+PSB0aGlzLl9jb3JlLm1heGltdW0oITApKSksIHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS50b2dnbGVDbGFzcyhcImRpc2FibGVkXCIsICFjLmRvdHMgfHwgZCksIGMuZG90cyAmJiAoYiA9IHRoaXMuX3BhZ2VzLmxlbmd0aCAtIHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5jaGlsZHJlbigpLmxlbmd0aCwgYy5kb3RzRGF0YSAmJiAwICE9PSBiID8gdGhpcy5fY29udHJvbHMuJGFic29sdXRlLmh0bWwodGhpcy5fdGVtcGxhdGVzLmpvaW4oXCJcIikpIDogYiA+IDAgPyB0aGlzLl9jb250cm9scy4kYWJzb2x1dGUuYXBwZW5kKG5ldyBBcnJheShiICsgMSkuam9pbih0aGlzLl90ZW1wbGF0ZXNbMF0pKSA6IGIgPCAwICYmIHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5jaGlsZHJlbigpLnNsaWNlKGIpLnJlbW92ZSgpLCB0aGlzLl9jb250cm9scy4kYWJzb2x1dGUuZmluZChcIi5hY3RpdmVcIikucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIiksIHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5jaGlsZHJlbigpLmVxKGEuaW5BcnJheSh0aGlzLmN1cnJlbnQoKSwgdGhpcy5fcGFnZXMpKS5hZGRDbGFzcyhcImFjdGl2ZVwiKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUub25UcmlnZ2VyID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHZhciBjID0gdGhpcy5fY29yZS5zZXR0aW5ncztcbiAgICAgICAgICAgIGIucGFnZSA9IHtcbiAgICAgICAgICAgICAgICBpbmRleDogYS5pbkFycmF5KHRoaXMuY3VycmVudCgpLCB0aGlzLl9wYWdlcyksXG4gICAgICAgICAgICAgICAgY291bnQ6IHRoaXMuX3BhZ2VzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBzaXplOiBjICYmIChjLmNlbnRlciB8fCBjLmF1dG9XaWR0aCB8fCBjLmRvdHNEYXRhID8gMSA6IGMuZG90c0VhY2ggfHwgYy5pdGVtcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZS5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBiID0gdGhpcy5fY29yZS5yZWxhdGl2ZSh0aGlzLl9jb3JlLmN1cnJlbnQoKSk7XG4gICAgICAgICAgICByZXR1cm4gYS5ncmVwKHRoaXMuX3BhZ2VzLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGEuc3RhcnQgPD0gYiAmJiBhLmVuZCA+PSBiXG4gICAgICAgICAgICB9LCB0aGlzKSkucG9wKClcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuZ2V0UG9zaXRpb24gPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdmFyIGMsIGQsIGUgPSB0aGlzLl9jb3JlLnNldHRpbmdzO1xuICAgICAgICAgICAgcmV0dXJuIFwicGFnZVwiID09IGUuc2xpZGVCeSA/IChjID0gYS5pbkFycmF5KHRoaXMuY3VycmVudCgpLCB0aGlzLl9wYWdlcyksIGQgPSB0aGlzLl9wYWdlcy5sZW5ndGgsIGIgPyArK2MgOiAtLWMsIGMgPSB0aGlzLl9wYWdlc1soYyAlIGQgKyBkKSAlIGRdLnN0YXJ0KSA6IChjID0gdGhpcy5fY29yZS5yZWxhdGl2ZSh0aGlzLl9jb3JlLmN1cnJlbnQoKSksIGQgPSB0aGlzLl9jb3JlLml0ZW1zKCkubGVuZ3RoLCBiID8gYyArPSBlLnNsaWRlQnkgOiBjIC09IGUuc2xpZGVCeSksIGNcbiAgICAgICAgfSwgZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICBhLnByb3h5KHRoaXMuX292ZXJyaWRlcy50bywgdGhpcy5fY29yZSkodGhpcy5nZXRQb3NpdGlvbighMCksIGIpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgYS5wcm94eSh0aGlzLl9vdmVycmlkZXMudG8sIHRoaXMuX2NvcmUpKHRoaXMuZ2V0UG9zaXRpb24oITEpLCBiKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS50byA9IGZ1bmN0aW9uIChiLCBjLCBkKSB7XG4gICAgICAgICAgICB2YXIgZTtcbiAgICAgICAgICAgICFkICYmIHRoaXMuX3BhZ2VzLmxlbmd0aCA/IChlID0gdGhpcy5fcGFnZXMubGVuZ3RoLCBhLnByb3h5KHRoaXMuX292ZXJyaWRlcy50bywgdGhpcy5fY29yZSkodGhpcy5fcGFnZXNbKGIgJSBlICsgZSkgJSBlXS5zdGFydCwgYykpIDogYS5wcm94eSh0aGlzLl9vdmVycmlkZXMudG8sIHRoaXMuX2NvcmUpKGIsIGMpXG4gICAgICAgIH0sIGEuZm4uc2J5T3dsQ2Fyb3VzZWwuQ29uc3RydWN0b3IuUGx1Z2lucy5OYXZpZ2F0aW9uID0gZVxuICAgIH0od2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpLCBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgdmFyIGUgPSBmdW5jdGlvbiAoYykge1xuICAgICAgICAgICAgdGhpcy5fY29yZSA9IGMsIHRoaXMuX2hhc2hlcyA9IHt9LCB0aGlzLiRlbGVtZW50ID0gdGhpcy5fY29yZS4kZWxlbWVudCwgdGhpcy5faGFuZGxlcnMgPSB7XG4gICAgICAgICAgICAgICAgXCJpbml0aWFsaXplZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYykge1xuICAgICAgICAgICAgICAgICAgICBjLm5hbWVzcGFjZSAmJiBcIlVSTEhhc2hcIiA9PT0gdGhpcy5fY29yZS5zZXR0aW5ncy5zdGFydFBvc2l0aW9uICYmIGEoYikudHJpZ2dlcihcImhhc2hjaGFuZ2Uub3dsLm5hdmlnYXRpb25cIilcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJwcmVwYXJlZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYi5uYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYShiLmNvbnRlbnQpLmZpbmQoXCJbZGF0YS1oYXNoXVwiKS5hZGRCYWNrKFwiW2RhdGEtaGFzaF1cIikuYXR0cihcImRhdGEtaGFzaFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYykgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFzaGVzW2NdID0gYi5jb250ZW50XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJjaGFuZ2VkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjLm5hbWVzcGFjZSAmJiBcInBvc2l0aW9uXCIgPT09IGMucHJvcGVydHkubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLl9jb3JlLml0ZW1zKHRoaXMuX2NvcmUucmVsYXRpdmUodGhpcy5fY29yZS5jdXJyZW50KCkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGEubWFwKHRoaXMuX2hhc2hlcywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhID09PSBkID8gYiA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuam9pbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlIHx8IGIubG9jYXRpb24uaGFzaC5zbGljZSgxKSA9PT0gZSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgYi5sb2NhdGlvbi5oYXNoID0gZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdGhpcylcbiAgICAgICAgICAgIH0sIHRoaXMuX2NvcmUub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCB0aGlzLl9jb3JlLm9wdGlvbnMpLCB0aGlzLiRlbGVtZW50Lm9uKHRoaXMuX2hhbmRsZXJzKSwgYShiKS5vbihcImhhc2hjaGFuZ2Uub3dsLm5hdmlnYXRpb25cIiwgYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgIHZhciBjID0gYi5sb2NhdGlvbi5oYXNoLnN1YnN0cmluZygxKSwgZSA9IHRoaXMuX2NvcmUuJHN0YWdlLmNoaWxkcmVuKCksXG4gICAgICAgICAgICAgICAgICBmID0gdGhpcy5faGFzaGVzW2NdICYmIGUuaW5kZXgodGhpcy5faGFzaGVzW2NdKTtcbiAgICAgICAgICAgICAgICBmICE9PSBkICYmIGYgIT09IHRoaXMuX2NvcmUuY3VycmVudCgpICYmIHRoaXMuX2NvcmUudG8odGhpcy5fY29yZS5yZWxhdGl2ZShmKSwgITEsICEwKVxuICAgICAgICAgICAgfSwgdGhpcykpXG4gICAgICAgIH07XG4gICAgICAgIGUuRGVmYXVsdHMgPSB7VVJMaGFzaExpc3RlbmVyOiAhMX0sIGUucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYywgZDtcbiAgICAgICAgICAgIGEoYikub2ZmKFwiaGFzaGNoYW5nZS5vd2wubmF2aWdhdGlvblwiKTtcbiAgICAgICAgICAgIGZvciAoYyBpbiB0aGlzLl9oYW5kbGVycykgdGhpcy5fY29yZS4kZWxlbWVudC5vZmYoYywgdGhpcy5faGFuZGxlcnNbY10pO1xuICAgICAgICAgICAgZm9yIChkIGluIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKSBcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIHRoaXNbZF0gJiYgKHRoaXNbZF0gPSBudWxsKVxuICAgICAgICB9LCBhLmZuLnNieU93bENhcm91c2VsLkNvbnN0cnVjdG9yLlBsdWdpbnMuSGFzaCA9IGVcbiAgICB9KHdpbmRvdy5aZXB0byB8fCB3aW5kb3cualF1ZXJ5LCB3aW5kb3csIGRvY3VtZW50KSwgZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICAgICAgZnVuY3Rpb24gZShiLCBjKSB7XG4gICAgICAgICAgICB2YXIgZSA9ICExLCBmID0gYi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGIuc2xpY2UoMSk7XG4gICAgICAgICAgICByZXR1cm4gYS5lYWNoKChiICsgXCIgXCIgKyBoLmpvaW4oZiArIFwiIFwiKSArIGYpLnNwbGl0KFwiIFwiKSwgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZ1tiXSAhPT0gZCkgcmV0dXJuIGUgPSAhYyB8fCBiLCAhMVxuICAgICAgICAgICAgfSksIGVcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGYoYSkge1xuICAgICAgICAgICAgcmV0dXJuIGUoYSwgITApXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZyA9IGEoXCI8c3VwcG9ydD5cIikuZ2V0KDApLnN0eWxlLCBoID0gXCJXZWJraXQgTW96IE8gbXNcIi5zcGxpdChcIiBcIiksIGkgPSB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgZW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIFdlYmtpdFRyYW5zaXRpb246IFwid2Via2l0VHJhbnNpdGlvbkVuZFwiLFxuICAgICAgICAgICAgICAgICAgICBNb3pUcmFuc2l0aW9uOiBcInRyYW5zaXRpb25lbmRcIixcbiAgICAgICAgICAgICAgICAgICAgT1RyYW5zaXRpb246IFwib1RyYW5zaXRpb25FbmRcIixcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2l0aW9uZW5kXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYW5pbWF0aW9uOiB7XG4gICAgICAgICAgICAgICAgZW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIFdlYmtpdEFuaW1hdGlvbjogXCJ3ZWJraXRBbmltYXRpb25FbmRcIixcbiAgICAgICAgICAgICAgICAgICAgTW96QW5pbWF0aW9uOiBcImFuaW1hdGlvbmVuZFwiLFxuICAgICAgICAgICAgICAgICAgICBPQW5pbWF0aW9uOiBcIm9BbmltYXRpb25FbmRcIixcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBcImFuaW1hdGlvbmVuZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBqID0ge1xuICAgICAgICAgICAgY3NzdHJhbnNmb3JtczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIWUoXCJ0cmFuc2Zvcm1cIilcbiAgICAgICAgICAgIH0sIGNzc3RyYW5zZm9ybXMzZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIWUoXCJwZXJzcGVjdGl2ZVwiKVxuICAgICAgICAgICAgfSwgY3NzdHJhbnNpdGlvbnM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISFlKFwidHJhbnNpdGlvblwiKVxuICAgICAgICAgICAgfSwgY3NzYW5pbWF0aW9uczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIWUoXCJhbmltYXRpb25cIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgai5jc3N0cmFuc2l0aW9ucygpICYmIChhLnN1cHBvcnQudHJhbnNpdGlvbiA9IG5ldyBTdHJpbmcoZihcInRyYW5zaXRpb25cIikpLCBhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQgPSBpLnRyYW5zaXRpb24uZW5kW2Euc3VwcG9ydC50cmFuc2l0aW9uXSksIGouY3NzYW5pbWF0aW9ucygpICYmIChhLnN1cHBvcnQuYW5pbWF0aW9uID0gbmV3IFN0cmluZyhmKFwiYW5pbWF0aW9uXCIpKSwgYS5zdXBwb3J0LmFuaW1hdGlvbi5lbmQgPSBpLmFuaW1hdGlvbi5lbmRbYS5zdXBwb3J0LmFuaW1hdGlvbl0pLCBqLmNzc3RyYW5zZm9ybXMoKSAmJiAoYS5zdXBwb3J0LnRyYW5zZm9ybSA9IG5ldyBTdHJpbmcoZihcInRyYW5zZm9ybVwiKSksIGEuc3VwcG9ydC50cmFuc2Zvcm0zZCA9IGouY3NzdHJhbnNmb3JtczNkKCkpXG4gICAgfSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCk7XG5cbiAgICAvLyBUd28gUm93IENhcm91c2VsXG4gICAgOyhmdW5jdGlvbiAoJCwgd2luZG93LCBkb2N1bWVudCwgdW5kZWZpbmVkKSB7XG4gICAgICAgIE93bDJyb3cgPSBmdW5jdGlvbiAoc2NvcGUpIHtcbiAgICAgICAgICAgIHRoaXMub3dsID0gc2NvcGU7XG4gICAgICAgICAgICB0aGlzLm93bC5vcHRpb25zID0gJC5leHRlbmQoe30sIE93bDJyb3cuRGVmYXVsdHMsIHRoaXMub3dsLm9wdGlvbnMpO1xuICAgICAgICAgICAgLy9saW5rIGNhbGxiYWNrIGV2ZW50cyB3aXRoIG93bCBjYXJvdXNlbCBoZXJlXG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlcnMgPSB7XG4gICAgICAgICAgICAgICAgJ2luaXRpYWxpemUub3dsLmNhcm91c2VsJzogJC5wcm94eShmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vd2wuc2V0dGluZ3Mub3dsMnJvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZDJyb3codGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5vd2wuJGVsZW1lbnQub24odGhpcy5oYW5kbGVycyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgT3dsMnJvdy5EZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIG93bDJyb3c6IGZhbHNlLFxuICAgICAgICAgICAgb3dsMnJvd1RhcmdldDogJ3NieV9pdGVtJyxcbiAgICAgICAgICAgIG93bDJyb3dDb250YWluZXI6ICdzYnlfb3dsMnJvdy1pdGVtJyxcbiAgICAgICAgICAgIG93bDJyb3dEaXJlY3Rpb246ICd1dGQnIC8vIGx0clxuICAgICAgICB9O1xuXG4gICAgICAgIC8vbWVodG9kczpcbiAgICAgICAgT3dsMnJvdy5wcm90b3R5cGUuYnVpbGQycm93ID0gZnVuY3Rpb24gKHRoaXNTY29wZSkge1xuXG4gICAgICAgICAgICB2YXIgY2Fyb3VzZWwgPSAkKHRoaXNTY29wZS5vd2wuJGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIGNhcm91c2VsSXRlbXMgPSBjYXJvdXNlbC5maW5kKCcuJyArIHRoaXNTY29wZS5vd2wub3B0aW9ucy5vd2wycm93VGFyZ2V0KTtcblxuICAgICAgICAgICAgdmFyIGFFdmVuRWxlbWVudHMgPSBbXTtcbiAgICAgICAgICAgIHZhciBhT2RkRWxlbWVudHMgPSBbXTtcblxuICAgICAgICAgICAgJC5lYWNoKGNhcm91c2VsSXRlbXMsIGZ1bmN0aW9uIChpbmRleCwgaXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAlIDIgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYUV2ZW5FbGVtZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFPZGRFbGVtZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvL2Nhcm91c2VsLmVtcHR5KCk7XG5cbiAgICAgICAgICAgIHN3aXRjaCAodGhpc1Njb3BlLm93bC5vcHRpb25zLm93bDJyb3dEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdsdHInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzU2NvcGUubGVmdFRvcmlnaHQodGhpc1Njb3BlLCBjYXJvdXNlbCwgY2Fyb3VzZWxJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdCA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXNTY29wZS51cFRvZG93bih0aGlzU2NvcGUsIGFFdmVuRWxlbWVudHMsIGFPZGRFbGVtZW50cywgY2Fyb3VzZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH07XG5cbiAgICAgICAgT3dsMnJvdy5wcm90b3R5cGUubGVmdFRvcmlnaHQgPSBmdW5jdGlvbiAodGhpc1Njb3BlLCBjYXJvdXNlbCwgY2Fyb3VzZWxJdGVtcykge1xuXG4gICAgICAgICAgICB2YXIgbzJ3Q29udGFpbmVyQ2xhc3MgPSB0aGlzU2NvcGUub3dsLm9wdGlvbnMub3dsMnJvd0NvbnRhaW5lcjtcbiAgICAgICAgICAgIHZhciBvd2xNYXJnaW4gPSB0aGlzU2NvcGUub3dsLm9wdGlvbnMubWFyZ2luO1xuICAgICAgICAgICAgdmFyIGNhcm91c2VsSXRlbXNMZW5ndGggPSBjYXJvdXNlbEl0ZW1zLmxlbmd0aDtcbiAgICAgICAgICAgIHZhciBmaXJzQXJyID0gW107XG4gICAgICAgICAgICB2YXIgc2Vjb25kQXJyID0gW107XG5cbiAgICAgICAgICAgIGlmIChjYXJvdXNlbEl0ZW1zTGVuZ3RoICUgMiA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGNhcm91c2VsSXRlbXNMZW5ndGggPSAoKGNhcm91c2VsSXRlbXNMZW5ndGggLSAxKSAvIDIpICsgMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2Fyb3VzZWxJdGVtc0xlbmd0aCA9IGNhcm91c2VsSXRlbXNMZW5ndGggLyAyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkLmVhY2goY2Fyb3VzZWxJdGVtcywgZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7XG5cblxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IGNhcm91c2VsSXRlbXNMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc0Fyci5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlY29uZEFyci5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAkLmVhY2goZmlyc0FyciwgZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJvd0NvbnRhaW5lciA9ICQoJzxkaXYgY2xhc3M9XCInICsgbzJ3Q29udGFpbmVyQ2xhc3MgKyAnXCIvPicpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGZpcnN0Um93RWxlbWVudCA9IGZpcnNBcnJbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGZpcnN0Um93RWxlbWVudC5zdHlsZS5tYXJnaW5Cb3R0b20gPSBvd2xNYXJnaW4gKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgcm93Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAuYXBwZW5kKGZpcnN0Um93RWxlbWVudClcbiAgICAgICAgICAgICAgICAgIC5hcHBlbmQoc2Vjb25kQXJyW2luZGV4XSk7XG5cbiAgICAgICAgICAgICAgICBjYXJvdXNlbC5hcHBlbmQocm93Q29udGFpbmVyKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgT3dsMnJvdy5wcm90b3R5cGUudXBUb2Rvd24gPSBmdW5jdGlvbiAodGhpc1Njb3BlLCBhRXZlbkVsZW1lbnRzLCBhT2RkRWxlbWVudHMsIGNhcm91c2VsKSB7XG5cbiAgICAgICAgICAgIHZhciBvMndDb250YWluZXJDbGFzcyA9IHRoaXNTY29wZS5vd2wub3B0aW9ucy5vd2wycm93Q29udGFpbmVyO1xuICAgICAgICAgICAgdmFyIG93bE1hcmdpbiA9IHRoaXNTY29wZS5vd2wub3B0aW9ucy5tYXJnaW47XG5cbiAgICAgICAgICAgICQuZWFjaChhRXZlbkVsZW1lbnRzLCBmdW5jdGlvbiAoaW5kZXgsIGl0ZW0pIHtcblxuICAgICAgICAgICAgICAgIHZhciByb3dDb250YWluZXIgPSAkKCc8ZGl2IGNsYXNzPVwiJyArIG8yd0NvbnRhaW5lckNsYXNzICsgJ1wiLz4nKTtcbiAgICAgICAgICAgICAgICB2YXIgZXZlbkVsZW1lbnQgPSBhRXZlbkVsZW1lbnRzW2luZGV4XTtcblxuICAgICAgICAgICAgICAgIGV2ZW5FbGVtZW50LnN0eWxlLm1hcmdpbkJvdHRvbSA9IG93bE1hcmdpbiArICdweCc7XG5cbiAgICAgICAgICAgICAgICByb3dDb250YWluZXJcbiAgICAgICAgICAgICAgICAgIC5hcHBlbmQoZXZlbkVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAuYXBwZW5kKGFPZGRFbGVtZW50c1tpbmRleF0pO1xuXG4gICAgICAgICAgICAgICAgY2Fyb3VzZWwuYXBwZW5kKHJvd0NvbnRhaW5lcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogRGVzdHJveXMgdGhlIHBsdWdpbi5cbiAgICAgICAgICovXG4gICAgICAgIE93bDJyb3cucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaGFuZGxlciwgcHJvcGVydHk7XG4gICAgICAgIH07XG5cbiAgICAgICAgJC5mbi5zYnlPd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zWydvd2wycm93J10gPSBPd2wycm93O1xuICAgIH0pKHdpbmRvdy5aZXB0byB8fCB3aW5kb3cualF1ZXJ5LCB3aW5kb3csIGRvY3VtZW50KTtcblxuICAgIChmdW5jdGlvbigkKXtcblxuICAgICAgICBmdW5jdGlvbiBzYnlBZGRWaXNpYmlsaXR5TGlzdGVuZXIoKSB7XG4gICAgICAgICAgICAvKiBEZXRlY3Qgd2hlbiBlbGVtZW50IGJlY29tZXMgdmlzaWJsZS4gVXNlZCBmb3Igd2hlbiB0aGUgZmVlZCBpcyBpbml0aWFsbHkgaGlkZGVuLCBpbiBhIHRhYiBmb3IgZXhhbXBsZS4gaHR0cHM6Ly9naXRodWIuY29tL3NoYXVuYm93ZS9qcXVlcnkudmlzaWJpbGl0eUNoYW5nZWQgKi9cbiAgICAgICAgICAgICFmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHZhciBuID0ge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB9LCBydW5PbkxvYWQ6ICEwLCBmcmVxdWVuY3k6IDEwMCwgc2J5UHJldmlvdXNWaXNpYmlsaXR5OiBudWxsXG4gICAgICAgICAgICAgICAgfSwgYyA9IHt9O1xuICAgICAgICAgICAgICAgIGMuc2J5Q2hlY2tWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeS5jb250YWlucyhkb2N1bWVudCwgaVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5zYnlQcmV2aW91c1Zpc2liaWxpdHksIHQgPSBpLmlzKFwiOnZpc2libGVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBuLnNieVByZXZpb3VzVmlzaWJpbGl0eSA9IHQsIG51bGwgPT0gZSA/IG4ucnVuT25Mb2FkICYmIG4uY2FsbGJhY2soaSwgdCkgOiBlICE9PSB0ICYmIG4uY2FsbGJhY2soaSwgdCksIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuc2J5Q2hlY2tWaXNpYmlsaXR5KGksIG4pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmZyZXF1ZW5jeSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGkuZm4uc2J5VmlzaWJpbGl0eUNoYW5nZWQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGkuZXh0ZW5kKHt9LCBuLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLnNieUNoZWNrVmlzaWJpbGl0eShpKHRoaXMpLCB0KVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0oalF1ZXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIFNieSgpIHtcbiAgICAgICAgICAgIHRoaXMuZmVlZHMgPSB7fTtcbiAgICAgICAgICAgIHRoaXMuY3RhcyA9IHt9O1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gc2J5T3B0aW9ucztcbiAgICAgICAgICAgIHRoaXMuaXNUb3VjaCA9IHNieUlzVG91Y2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIFNieS5wcm90b3R5cGUgPSB7XG4gICAgICAgICAgICBjcmVhdGVQYWdlOiBmdW5jdGlvbiAoY3JlYXRlRmVlZHMsIGNyZWF0ZUZlZWRzQXJncykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93LnNieWFqYXh1cmwgPT09ICd1bmRlZmluZWQnIHx8IHdpbmRvdy5zYnlhamF4dXJsLmluZGV4T2Yod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieWFqYXh1cmwgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgKyAnL3dwLWFkbWluL2FkbWluLWFqYXgucGhwJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAkKCcuc2J5X25vX2pzX2Vycm9yX21lc3NhZ2UnKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAkKCcuc2J5X25vX2pzJykucmVtb3ZlQ2xhc3MoJ3NieV9ub19qcycpO1xuXG4gICAgICAgICAgICAgICAgY3JlYXRlRmVlZHMoY3JlYXRlRmVlZHNBcmdzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXliZUFkZFlUQVBJOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgeW91dHViZVNjcmlwdElkID0gXCJzYnkteW91dHViZS1hcGlcIjtcbiAgICAgICAgICAgICAgICB2YXIgeW91dHViZVNjcmlwdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHlvdXR1YmVTY3JpcHRJZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoeW91dHViZVNjcmlwdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0U2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgdGFnLnNyYyA9IFwiaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaVwiO1xuICAgICAgICAgICAgICAgICAgICB0YWcuaWQgPSB5b3V0dWJlU2NyaXB0SWQ7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0U2NyaXB0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRhZywgZmlyc3RTY3JpcHQpO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNyZWF0ZUxpZ2h0Ym94OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGJCdWlsZGVyID0gc2J5R2V0bGlnaHRib3hCdWlsZGVyKCk7XG4gICAgICAgICAgICAgICAgdmFyIHNieV9sYl9kZWxheSA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzYnlfdGltZXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHNieV9jYWxsYmFjaywgc2J5X21zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoc2J5X3RpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNieV90aW1lciA9IHNldFRpbWVvdXQoc2J5X2NhbGxiYWNrLCBzYnlfbXMpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzYnlfbGJfZGVsYXkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGJCdWlsZGVyLmFmdGVyUmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLyogTGlnaHRib3ggdjIuNy4xIGJ5IExva2VzaCBEaGFrYXIgLSBodHRwOi8vbG9rZXNoZGhha2FyLmNvbS9wcm9qZWN0cy9saWdodGJveDIvIC0gSGVhdmlseSBtb2RpZmllZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgcGx1Z2luICovXG4gICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGpRdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICBiID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZhZGVEdXJhdGlvbiA9IDUwMCwgdGhpcy5maXRJbWFnZXNJblZpZXdwb3J0ID0gITAsIHRoaXMucmVzaXplRHVyYXRpb24gPSA3MDAsIHRoaXMucG9zaXRpb25Gcm9tVG9wID0gNTAsIHRoaXMuc2hvd0ltYWdlTnVtYmVyTGFiZWwgPSAhMCwgdGhpcy5hbHdheXNTaG93TmF2T25Ub3VjaERldmljZXMgPSAhMSwgdGhpcy53cmFwQXJvdW5kID0gITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5wcm90b3R5cGUuYWxidW1MYWJlbCA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhICsgXCIgLyBcIiArIGJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYVxuICAgICAgICAgICAgICAgICAgICAgIH0oKSxcbiAgICAgICAgICAgICAgICAgICAgICBjID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gYSwgdGhpcy5hbGJ1bSA9IFtdLCB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID0gdm9pZCAwLCB0aGlzLmluaXQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZSgpLCB0aGlzLmJ1aWxkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKFwiYm9keVwiKS5vbihcImNsaWNrXCIsIFwiYVtkYXRhLXNieS1saWdodGJveF1cIiwgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnN0YXJ0KGEoYy5jdXJyZW50VGFyZ2V0KSksICExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5idWlsZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYShcIlwiK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYkJ1aWxkZXIudGVtcGxhdGUoKSkuYXBwZW5kVG8oYShcImJvZHlcIikpLCB0aGlzLiRsaWdodGJveCA9IGEoXCIjc2J5X2xpZ2h0Ym94XCIpLCB0aGlzLiRvdmVybGF5ID0gYShcIiNzYnlfbGlnaHRib3hPdmVybGF5XCIpLCB0aGlzLiRvdXRlckNvbnRhaW5lciA9IHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLW91dGVyQ29udGFpbmVyXCIpLCB0aGlzLiRjb250YWluZXIgPSB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1jb250YWluZXJcIiksIHRoaXMuY29udGFpbmVyVG9wUGFkZGluZyA9IHBhcnNlSW50KHRoaXMuJGNvbnRhaW5lci5jc3MoXCJwYWRkaW5nLXRvcFwiKSwgMTApLCB0aGlzLmNvbnRhaW5lclJpZ2h0UGFkZGluZyA9IHBhcnNlSW50KHRoaXMuJGNvbnRhaW5lci5jc3MoXCJwYWRkaW5nLXJpZ2h0XCIpLCAxMCksIHRoaXMuY29udGFpbmVyQm90dG9tUGFkZGluZyA9IHBhcnNlSW50KHRoaXMuJGNvbnRhaW5lci5jc3MoXCJwYWRkaW5nLWJvdHRvbVwiKSwgMTApLCB0aGlzLmNvbnRhaW5lckxlZnRQYWRkaW5nID0gcGFyc2VJbnQodGhpcy4kY29udGFpbmVyLmNzcyhcInBhZGRpbmctbGVmdFwiKSwgMTApLCB0aGlzLiRvdmVybGF5LmhpZGUoKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLmVuZCgpLCAhMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGpRdWVyeShkb2N1bWVudCkub24oJ2NsaWNrJywgZnVuY3Rpb24oZXZlbnQsIGIsIGMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0ZhZGUgb3V0IHRoZSBsaWdodGJveCBpZiBjbGljayBhbnl3aGVyZSBvdXRzaWRlIG9mIHRoZSB0d28gZWxlbWVudHMgZGVmaW5lZCBiZWxvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghalF1ZXJ5KGV2ZW50LnRhcmdldCkuY2xvc2VzdCgnLnNieV9sYi1vdXRlckNvbnRhaW5lcicpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWpRdWVyeShldmVudC50YXJnZXQpLmNsb3Nlc3QoJy5zYnlfbGItZGF0YUNvbnRhaW5lcicpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9GYWRlIG91dCBsaWdodGJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHRib3hPbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYkJ1aWxkZXIucGF1c2VQbGF5ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3NieV9saWdodGJveE92ZXJsYXksICNzYnlfbGlnaHRib3gnKS5mYWRlT3V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kbGlnaHRib3guaGlkZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzYnlfbGlnaHRib3hPdmVybGF5Jykub24oXCJjbGlja1wiLCBmdW5jdGlvbihjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYkJ1aWxkZXIucGF1c2VQbGF5ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLnNieV9nZHByX25vdGljZScpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwic2J5X2xpZ2h0Ym94XCIgPT09IGEoYy50YXJnZXQpLmF0dHIoXCJpZFwiKSAmJiBiLmVuZCgpLCAhMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kbGlnaHRib3guZmluZChcIi5zYnlfbGItcHJldlwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxiQnVpbGRlci5wYXVzZVBsYXllcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLnNieV9nZHByX25vdGljZScpLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuY2hhbmdlSW1hZ2UoMCA9PT0gYi5jdXJyZW50SW1hZ2VJbmRleCA/IGIuYWxidW0ubGVuZ3RoIC0gMSA6IGIuY3VycmVudEltYWdlSW5kZXggLSAxKSwgITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1jb250YWluZXJcIikub24oXCJzd2lwZXJpZ2h0XCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxiQnVpbGRlci5wYXVzZVBsYXllcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLnNieV9nZHByX25vdGljZScpLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuY2hhbmdlSW1hZ2UoMCA9PT0gYi5jdXJyZW50SW1hZ2VJbmRleCA/IGIuYWxidW0ubGVuZ3RoIC0gMSA6IGIuY3VycmVudEltYWdlSW5kZXggLSAxKSwgITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1uZXh0XCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGJCdWlsZGVyLnBhdXNlUGxheWVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuc2J5X2dkcHJfbm90aWNlJykucmVtb3ZlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5jaGFuZ2VJbWFnZShiLmN1cnJlbnRJbWFnZUluZGV4ID09PSBiLmFsYnVtLmxlbmd0aCAtIDEgPyAwIDogYi5jdXJyZW50SW1hZ2VJbmRleCArIDEpLCAhMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLWNvbnRhaW5lclwiKS5vbihcInN3aXBlbGVmdFwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYkJ1aWxkZXIucGF1c2VQbGF5ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJy5zYnlfZ2Rwcl9ub3RpY2UnKS5yZW1vdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLmNoYW5nZUltYWdlKGIuY3VycmVudEltYWdlSW5kZXggPT09IGIuYWxidW0ubGVuZ3RoIC0gMSA/IDAgOiBiLmN1cnJlbnRJbWFnZUluZGV4ICsgMSksICExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1sb2FkZXIsIC5zYnlfbGItY2xvc2VcIikub24oXCJjbGlja1wiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0Ym94T25DbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGJCdWlsZGVyLnBhdXNlUGxheWVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuZW5kKCksICExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuYWxidW0ucHVzaChsYkJ1aWxkZXIuZ2V0RGF0YShhKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGEod2luZG93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUub24oXCJyZXNpemVcIiwgYS5wcm94eSh0aGlzLnNpemVPdmVybGF5LCB0aGlzKSksIGEoXCJzZWxlY3QsIG9iamVjdCwgZW1iZWRcIikuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5zaXplT3ZlcmxheSgpLCB0aGlzLmFsYnVtID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiwgZyA9IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBiLmF0dHIoXCJkYXRhLXNieS1saWdodGJveFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGEoYi5wcm9wKFwidGFnTmFtZVwiKSArICdbZGF0YS1zYnktbGlnaHRib3g9XCInICsgaCArICdcIl0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGYubGVuZ3RoOyBpID0gKytpKSBjKGEoZltpXSkpLCBmW2ldID09PSBiWzBdICYmIChnID0gaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXCJsaWdodGJveFwiID09PSBiLmF0dHIoXCJyZWxcIikpIGMoYik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYShiLnByb3AoXCJ0YWdOYW1lXCIpICsgJ1tyZWw9XCInICsgYi5hdHRyKFwicmVsXCIpICsgJ1wiXScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZi5sZW5ndGg7IGogPSArK2opIGMoYShmW2pdKSksIGZbal0gPT09IGJbMF0gJiYgKGcgPSBqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBlLnNjcm9sbFRvcCgpICsgdGhpcy5vcHRpb25zLnBvc2l0aW9uRnJvbVRvcCAtIDUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZS5zY3JvbGxMZWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogayArIFwicHhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBsICsgXCJweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5mYWRlSW4odGhpcy5vcHRpb25zLmZhZGVEdXJhdGlvbiksIHRoaXMuY2hhbmdlSW1hZ2UoZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuY2hhbmdlSW1hZ2UgPSBmdW5jdGlvbihiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1pbWFnZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG92ZXJsYXkuZmFkZUluKHRoaXMub3B0aW9ucy5mYWRlRHVyYXRpb24pLCBhKFwiLnNieV9sYi1sb2FkZXJcIikuZmFkZUluKFwic2xvd1wiKSwgdGhpcy4kbGlnaHRib3guZmluZChcIi5zYnlfbGItaW1hZ2UsIC5zYnlfbGItbmF2LCAuc2J5X2xiLXByZXYsIC5zYnlfbGItbmV4dCwgLnNieV9sYi1kYXRhQ29udGFpbmVyLCAuc2J5X2xiLW51bWJlcnMsIC5zYnlfbGItY2FwdGlvblwiKS5oaWRlKCksIHRoaXMuJG91dGVyQ29udGFpbmVyLmFkZENsYXNzKFwiYW5pbWF0aW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcgSW1hZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmLCBnLCBoLCBpLCBqLCBrLCBsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzYnlBcnJvd1dpZHRoID0gMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuYXR0cihcInNyY1wiLCBjLmFsYnVtW2JdLmxpbmspLCBmID0gYShlKSwgZC53aWR0aChlLndpZHRoKSwgZC5oZWlnaHQoZS5oZWlnaHQpLCBjLm9wdGlvbnMuZml0SW1hZ2VzSW5WaWV3cG9ydCAmJiAobCA9IGEod2luZG93KS53aWR0aCgpLCBrID0gYSh3aW5kb3cpLmhlaWdodCgpLCBqID0gbCAtIGMuY29udGFpbmVyTGVmdFBhZGRpbmcgLSBjLmNvbnRhaW5lclJpZ2h0UGFkZGluZyAtIDIwIC0gc2J5QXJyb3dXaWR0aCwgaSA9IGsgLSBjLmNvbnRhaW5lclRvcFBhZGRpbmcgLSBjLmNvbnRhaW5lckJvdHRvbVBhZGRpbmcgLSAxNTAsIChlLndpZHRoID4gaiB8fCBlLmhlaWdodCA+IGkpICYmIChlLndpZHRoIC8gaiA+IGUuaGVpZ2h0IC8gaSA/IChoID0gaiwgZyA9IHBhcnNlSW50KGUuaGVpZ2h0IC8gKGUud2lkdGggLyBoKSwgMTApLCBkLndpZHRoKGgpLCBkLmhlaWdodChnKSkgOiAoZyA9IGksIGggPSBwYXJzZUludChlLndpZHRoIC8gKGUuaGVpZ2h0IC8gZyksIDEwKSwgZC53aWR0aChoKSwgZC5oZWlnaHQoZykpKSksIGMuc2l6ZUNvbnRhaW5lcihkLndpZHRoKCksIGQuaGVpZ2h0KCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnNyYyA9IHRoaXMuYWxidW1bYl0ubGluaywgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IGJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuc2l6ZU92ZXJsYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG92ZXJsYXkud2lkdGgoYSh3aW5kb3cpLndpZHRoKCkpLmhlaWdodChhKGRvY3VtZW50KS5oZWlnaHQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuc2l6ZUNvbnRhaW5lciA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC4kbGlnaHRib3guZmluZChcIi5zYnlfbGItZGF0YUNvbnRhaW5lclwiKS53aWR0aChnKSwgZC4kbGlnaHRib3guZmluZChcIi5zYnlfbGItcHJldkxpbmtcIikuaGVpZ2h0KGgpLCBkLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1uZXh0TGlua1wiKS5oZWlnaHQoaCksIGQuc2hvd0ltYWdlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuJG91dGVyQ29udGFpbmVyLm91dGVyV2lkdGgoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHRoaXMuJG91dGVyQ29udGFpbmVyLm91dGVySGVpZ2h0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBhICsgdGhpcy5jb250YWluZXJMZWZ0UGFkZGluZyArIHRoaXMuY29udGFpbmVyUmlnaHRQYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gYiArIHRoaXMuY29udGFpbmVyVG9wUGFkZGluZyArIHRoaXMuY29udGFpbmVyQm90dG9tUGFkZGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgIT09IGcgfHwgZiAhPT0gaCA/IHRoaXMuJG91dGVyQ29udGFpbmVyLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5vcHRpb25zLnJlc2l6ZUR1cmF0aW9uLCBcInN3aW5nXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBjKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuc2hvd0ltYWdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1sb2FkZXJcIikuaGlkZSgpLCB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1pbWFnZVwiKS5mYWRlSW4oXCJzbG93XCIpLCB0aGlzLnVwZGF0ZU5hdigpLCB0aGlzLnVwZGF0ZURldGFpbHMoKSwgdGhpcy5wcmVsb2FkTmVpZ2hib3JpbmdJbWFnZXMoKSwgdGhpcy5lbmFibGVLZXlib2FyZE5hdigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlLnVwZGF0ZU5hdiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAhMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJUb3VjaEV2ZW50XCIpLCBhID0gdGhpcy5vcHRpb25zLmFsd2F5c1Nob3dOYXZPblRvdWNoRGV2aWNlcyA/ICEwIDogITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGIpIHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1uYXZcIikuc2hvdygpLCB0aGlzLmFsYnVtLmxlbmd0aCA+IDEgJiYgKHRoaXMub3B0aW9ucy53cmFwQXJvdW5kID8gKGEgJiYgdGhpcy4kbGlnaHRib3guZmluZChcIi5zYnlfbGItcHJldiwgLnNieV9sYi1uZXh0XCIpLmNzcyhcIm9wYWNpdHlcIiwgXCIxXCIpLCB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1wcmV2LCAuc2J5X2xiLW5leHRcIikuc2hvdygpKSA6ICh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID4gMCAmJiAodGhpcy4kbGlnaHRib3guZmluZChcIi5zYnlfbGItcHJldlwiKS5zaG93KCksIGEgJiYgdGhpcy4kbGlnaHRib3guZmluZChcIi5zYnlfbGItcHJldlwiKS5jc3MoXCJvcGFjaXR5XCIsIFwiMVwiKSksIHRoaXMuY3VycmVudEltYWdlSW5kZXggPCB0aGlzLmFsYnVtLmxlbmd0aCAtIDEgJiYgKHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLW5leHRcIikuc2hvdygpLCBhICYmIHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLW5leHRcIikuY3NzKFwib3BhY2l0eVwiLCBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUudXBkYXRlRGV0YWlscyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogTkVXIFBIT1RPIEFDVElPTiAqKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGpRdWVyeSgnaWZyYW1lLnNieV9sYi1wbGF5ZXItbG9hZGVkJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuc2J5X2xiLXBsYXllci1wbGFjZWhvbGRlcicpLnJlcGxhY2VXaXRoKGpRdWVyeSgnaWZyYW1lLnNieV9sYi1wbGF5ZXItbG9hZGVkJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnaWZyYW1lLnNieV9sYi1wbGF5ZXItbG9hZGVkJykucmVtb3ZlQ2xhc3MoJ3NieV9sYi1wbGF5ZXItbG9hZGVkJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9Td2l0Y2ggdmlkZW8gd2hlbiBlaXRoZXIgYSBuZXcgcG9wdXAgb3IgbmF2aWdhdGluZyB0byBuZXcgb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmVlZCA9IHdpbmRvdy5zYnkuZmVlZHNbdGhpcy5hbGJ1bVt0aGlzLmN1cnJlbnRJbWFnZUluZGV4XS5mZWVkSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGJCdWlsZGVyLmJlZm9yZVBsYXllclNldHVwKHRoaXMuJGxpZ2h0Ym94LHRoaXMuYWxidW1bdGhpcy5jdXJyZW50SW1hZ2VJbmRleF0sdGhpcy5jdXJyZW50SW1hZ2VJbmRleCx0aGlzLmFsYnVtLGZlZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggc2J5X3N1cHBvcnRzX3ZpZGVvKCkgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzYnlfbGlnaHRib3gnKS5yZW1vdmVDbGFzcygnc2J5X3ZpZGVvX2xpZ2h0Ym94Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MuY29uc2VudEdpdmVuICYmIHRoaXMuYWxidW1bdGhpcy5jdXJyZW50SW1hZ2VJbmRleF0udmlkZW8ubGVuZ3RoKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuc2J5X2dkcHJfbm90aWNlJykucmVtb3ZlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllcklEID0gJ3NieV9sYi1wbGF5ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzYnlfbGlnaHRib3gnKS5hZGRDbGFzcygnc2J5X3ZpZGVvX2xpZ2h0Ym94Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISB3aW5kb3cuc2J5T3B0aW9ucy5pc1BybyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3NieV9saWdodGJveCcpLmFkZENsYXNzKCdzYnlfbGlnaHRib3hfZnJlZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvSUQgPSB0aGlzLmFsYnVtW3RoaXMuY3VycmVudEltYWdlSW5kZXhdLnZpZGVvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5ID0gc2J5T3B0aW9ucy5hdXRvcGxheTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuc2J5TGlnaHRib3hQbGF5ZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0OiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBmZWVkLmVtYmVkVVJMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyVmFyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rlc3RicmFuZGluZzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogYXV0b3BsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25TdGF0ZUNoYW5nZSc6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb0lEID0gZGF0YS50YXJnZXQuZ2V0VmlkZW9EYXRhKClbJ3ZpZGVvX2lkJ107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmFmdGVyU3RhdGVDaGFuZ2UocGxheWVySUQsdmlkZW9JRCxkYXRhLCQoJyMnICsgcGxheWVySUQpLmNsb3Nlc3QoJy5zYnlfdmlkZW9fdGh1bWJuYWlsX3dyYXAnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5tYXliZUFkZENUQShwbGF5ZXJJRCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnlMaWdodGJveFBsYXllciA9IG5ldyB3aW5kb3cuWVQuUGxheWVyKHBsYXllcklELCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnlMaWdodGJveFBsYXllci5sb2FkVmlkZW9CeUlkKHZpZGVvSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kb3V0ZXJDb250YWluZXIucmVtb3ZlQ2xhc3MoXCJhbmltYXRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLWRhdGFDb250YWluZXJcIikuZmFkZUluKHRoaXMub3B0aW9ucy5yZXNpemVEdXJhdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5zaXplT3ZlcmxheSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjc2J5X2xpZ2h0Ym94IC5zYnlfbGItcGxheWVyJykuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyA6ICQoJyNzYnlfbGlnaHRib3ggLnNieV9sYi1vdXRlckNvbnRhaW5lcicpLmhlaWdodCgpKydweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6ICQoJyNzYnlfbGlnaHRib3ggLnNieV9sYi1vdXRlckNvbnRhaW5lcicpLndpZHRoKCkrJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9wJzogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuJGxpZ2h0Ym94LmZpbmQoJ2lmcmFtZScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kbGlnaHRib3guZmluZCgnaWZyYW1lJykuYXR0cigndGl0bGUnLHRoaXMuYWxidW1bdGhpcy5jdXJyZW50SW1hZ2VJbmRleF0udmlkZW9UaXRsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZ1bGxJbWFnZSA9ICQoJy5zYnlfaXRlbVtkYXRhLXZpZGVvLWlkPScgKyB0aGlzLmFsYnVtW3RoaXMuY3VycmVudEltYWdlSW5kZXhdLnZpZGVvKyddJykuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLWZ1bGwtcmVzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5zYnlfbGItaW1hZ2UnKS5hdHRyKCdzcmMnLGZ1bGxJbWFnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG91dGVyQ29udGFpbmVyLnJlbW92ZUNsYXNzKFwiYW5pbWF0aW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1kYXRhQ29udGFpbmVyXCIpLmZhZGVJbih0aGlzLm9wdGlvbnMucmVzaXplRHVyYXRpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuc2l6ZU92ZXJsYXkoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiLnNieV9sYi1jb250YWluZXJcIikucHJlcGVuZCgnPGEgaHJlZj1cImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9Jyt0aGlzLmFsYnVtW3RoaXMuY3VycmVudEltYWdlSW5kZXhdLnZpZGVvKydcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3M9XCJzYnlfZ2Rwcl9ub3RpY2VcIj48c3ZnIHN0eWxlPVwiY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMSlcIiBjbGFzcz1cInN2Zy1pbmxpbmUtLWZhIGZhLXBsYXkgZmEtdy0xNCBzYnlfcGxheWJ0blwiIGFyaWEtbGFiZWw9XCJQbGF5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1mYS1wcm9jZXNzZWQ9XCJcIiBkYXRhLXByZWZpeD1cImZhXCIgZGF0YS1pY29uPVwicGxheVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA0NDggNTEyXCI+PHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNNDI0LjQgMjE0LjdMNzIuNCA2LjZDNDMuOC0xMC4zIDAgNi4xIDAgNDcuOVY0NjRjMCAzNy41IDQwLjcgNjAuMSA3Mi40IDQxLjNsMzUyLTIwOGMzMS40LTE4LjUgMzEuNS02NC4xIDAtODIuNnpcIj48L3BhdGg+PC9zdmc+PC9hPicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYkJ1aWxkZXIuYWZ0ZXJQbGF5ZXJTZXR1cCh0aGlzLiRsaWdodGJveCx0aGlzLmFsYnVtW3RoaXMuY3VycmVudEltYWdlSW5kZXhdLHRoaXMuY3VycmVudEltYWdlSW5kZXgsdGhpcy5hbGJ1bSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hbGJ1bS5sZW5ndGggPiAxICYmIHRoaXMub3B0aW9ucy5zaG93SW1hZ2VOdW1iZXJMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1udW1iZXJcIikudGV4dCh0aGlzLm9wdGlvbnMuYWxidW1MYWJlbCh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ICsgMSwgdGhpcy5hbGJ1bS5sZW5ndGgpKS5mYWRlSW4oXCJmYXN0XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLW51bWJlclwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlLnByZWxvYWROZWlnaGJvcmluZ0ltYWdlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWxidW0ubGVuZ3RoID4gdGhpcy5jdXJyZW50SW1hZ2VJbmRleCArIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG5ldyBJbWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnNyYyA9IHRoaXMuYWxidW1bdGhpcy5jdXJyZW50SW1hZ2VJbmRleCArIDFdLmxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gbmV3IEltYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuc3JjID0gdGhpcy5hbGJ1bVt0aGlzLmN1cnJlbnRJbWFnZUluZGV4IC0gMV0ubGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5lbmFibGVLZXlib2FyZE5hdiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYShkb2N1bWVudCkub24oXCJrZXl1cC5rZXlib2FyZFwiLCBhLnByb3h5KHRoaXMua2V5Ym9hcmRBY3Rpb24sIHRoaXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5kaXNhYmxlS2V5Ym9hcmROYXYgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEoZG9jdW1lbnQpLm9mZihcIi5rZXlib2FyZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5rZXlib2FyZEFjdGlvbiA9IGZ1bmN0aW9uKGEpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEtFWUNPREVfRVNDICAgICAgICA9IDI3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEtFWUNPREVfTEVGVEFSUk9XICA9IDM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEtFWUNPREVfUklHSFRBUlJPVyA9IDM5O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5Y29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ICAgICA9IFN0cmluZy5mcm9tQ2hhckNvZGUoa2V5Y29kZSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXljb2RlID09PSBLRVlDT0RFX0VTQyB8fCBrZXkubWF0Y2goL3h8b3xjLykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggc2J5X3N1cHBvcnRzX3ZpZGVvKCkgKSAkKCcjc2J5X2xpZ2h0Ym94IHZpZGVvLnNieV92aWRlbycpWzBdLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3NieV9saWdodGJveCBpZnJhbWUnKS5hdHRyKCdzcmMnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncCcgfHwga2V5Y29kZSA9PT0gS0VZQ09ERV9MRUZUQVJST1cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SW1hZ2VJbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUltYWdlKHRoaXMuY3VycmVudEltYWdlSW5kZXggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy53cmFwQXJvdW5kICYmIHRoaXMuYWxidW0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUltYWdlKHRoaXMuYWxidW0ubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHNieV9zdXBwb3J0c192aWRlbygpICkgJCgnI3NieV9saWdodGJveCB2aWRlby5zYnlfdmlkZW8nKVswXS5wYXVzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNzYnlfbGlnaHRib3ggaWZyYW1lJykuYXR0cignc3JjJywgJycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ24nIHx8IGtleWNvZGUgPT09IEtFWUNPREVfUklHSFRBUlJPVykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ICE9PSB0aGlzLmFsYnVtLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VJbWFnZSh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMud3JhcEFyb3VuZCAmJiB0aGlzLmFsYnVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VJbWFnZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGJCdWlsZGVyLnBhdXNlUGxheWVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpLCBhKHdpbmRvdykub2ZmKFwicmVzaXplXCIsIHRoaXMuc2l6ZU92ZXJsYXkpLCB0aGlzLiRsaWdodGJveC5mYWRlT3V0KHRoaXMub3B0aW9ucy5mYWRlRHVyYXRpb24pLCB0aGlzLiRvdmVybGF5LmZhZGVPdXQodGhpcy5vcHRpb25zLmZhZGVEdXJhdGlvbiksIGEoXCJzZWxlY3QsIG9iamVjdCwgZW1iZWRcIikuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcInZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYlxuICAgICAgICAgICAgICAgICAgICAgIH0oKTtcbiAgICAgICAgICAgICAgICAgICAgYShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG5ldyBiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBjKGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTGlnaHRib3ggaGlkZSBwaG90byBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5zYnlfbGlnaHRib3hfYWN0aW9uIGEnKS5vZmYoKS5vbignY2xpY2snLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLmZpbmQoJy5zYnlfbGlnaHRib3hfdG9vbHRpcCcpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgd2luZG93LnNieU9wdGlvbnMubGlnaHRib3hDcmVhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjcmVhdGVGZWVkczogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoICFzYnlPcHRpb25zLmlzQWRtaW4gJiYgc2J5T3B0aW9ucy5saWdodGJveENyZWF0ZWQgPT09IHVuZGVmaW5lZCApIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS5jcmVhdGVMaWdodGJveCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcmdzLndoZW5GZWVkc0NyZWF0ZWQoXG4gICAgICAgICAgICAgICAgICAkKCcuc2JfeW91dHViZScpLmVhY2goZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdkYXRhLXNieS1pbmRleCcsIGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuc2J5X3BsYXllcicpLnJlcGxhY2VXaXRoKCc8ZGl2IGlkPVwic2J5X3BsYXllcicraW5kZXgrJ1wiPjwvZGl2PicpO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHR5cGVvZiAkc2VsZi5hdHRyKCdkYXRhLXNieS1mbGFncycpICE9PSAndW5kZWZpbmVkJyA/ICRzZWxmLmF0dHIoJ2RhdGEtc2J5LWZsYWdzJykuc3BsaXQoJywnKSA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbCA9IHR5cGVvZiAkc2VsZi5hdHRyKCdkYXRhLW9wdGlvbnMnKSAhPT0gJ3VuZGVmaW5lZCcgPyBKU09OLnBhcnNlKCRzZWxmLmF0dHIoJ2RhdGEtb3B0aW9ucycpKSA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncy5pbmRleE9mKCd0ZXN0QWpheCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS50cmlnZ2VyZWRUZXN0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN1Ym1pdERhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nIDogJ3NieV9vbl9hamF4X3Rlc3RfdHJpZ2dlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2VzcyA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2RpZCB0ZXN0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2J5QWpheChzdWJtaXREYXRhLG9uU3VjY2VzcylcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGZlZWRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xzIDogJHNlbGYuYXR0cignZGF0YS1jb2xzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHNtb2JpbGUgOiAkc2VsZi5hdHRyKCdkYXRhLWNvbHNtb2JpbGUnKSAhPT0gJ3NhbWUnID8gJHNlbGYuYXR0cignZGF0YS1jb2xzbW9iaWxlJykgOiAkc2VsZi5hdHRyKCdkYXRhLWNvbHMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtIDogJHNlbGYuYXR0cignZGF0YS1udW0nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nUmVzIDogJHNlbGYuYXR0cignZGF0YS1yZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZElEIDogJHNlbGYuYXR0cignZGF0YS1mZWVkaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdElEIDogdHlwZW9mICRzZWxmLmF0dHIoICdkYXRhLXBvc3RpZCcgKSAhPT0gJ3VuZGVmaW5lZCcgPyAkc2VsZi5hdHRyKCAnZGF0YS1wb3N0aWQnICkgOiAndW5rbm93bicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0Q29kZUF0dHMgOiAkc2VsZi5hdHRyKCdkYXRhLXNob3J0Y29kZS1hdHRzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6aW5nRW5hYmxlZCA6IChmbGFncy5pbmRleE9mKCdyZXNpemVEaXNhYmxlJykgPT09IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VMb2FkRW5hYmxlZCA6IChmbGFncy5pbmRleE9mKCdpbWFnZUxvYWREaXNhYmxlJykgPT09IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdFbmFibGVkIDogKGZsYWdzLmluZGV4T2YoJ2RlYnVnJykgPiAtMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhdm9yTG9jYWwgOiAoZmxhZ3MuaW5kZXhPZignZmF2b3JMb2NhbCcpID4gLTEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4UG9zdExvYWQgOiAoZmxhZ3MuaW5kZXhPZignYWpheFBvc3RMb2FkJykgPiAtMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrV1BQb3N0cyA6IChmbGFncy5pbmRleE9mKCdjaGVja1dQUG9zdHMnKSA+IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlQ2hlY2tQb3N0cyA6IChmbGFncy5pbmRleE9mKCdzaW5nbGVDaGVja1Bvc3RzJykgPiAtMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hcnJvd1BsYXllciA6IChmbGFncy5pbmRleE9mKCduYXJyb3dQbGF5ZXInKSA+IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RwciA6IChmbGFncy5pbmRleE9mKCdnZHByJykgPiAtMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNlbnRHaXZlbiA6IChmbGFncy5pbmRleE9mKCdnZHByJykgPT09IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbm9DRE4gOiAoZmxhZ3MuaW5kZXhPZignZGlzYWJsZWNkbicpID4gLTEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0Nvb2tpZXM6IChmbGFncy5pbmRleE9mKCdhbGxvd2Nvb2tpZXMnKSA+IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHRib3hFbmFibGVkIDogdHlwZW9mICRzZWxmLmF0dHIoJ2RhdGEtc2J5LXN1cHBvcnRzLWxpZ2h0Ym94JykgIT09ICd1bmRlZmluZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdG9yIDogKGZsYWdzLmluZGV4T2YoJ2xvY2F0b3InKSA+IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b01pblJlcyA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWwgOiBnZW5lcmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVCYXJFbmFibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbaW5kZXhdID0gc2J5R2V0TmV3RmVlZCh0aGlzLCBpbmRleCwgZmVlZE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93LnNieUFQSVJlYWR5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzW2luZGV4XS5wbGF5ZXJBUElSZWFkeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbaW5kZXhdLnNldFJlc2l6ZWRJbWFnZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzW2luZGV4XS5pbml0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdzYnlhZnRlcmZlZWRjcmVhdGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICBldnQuZmVlZCA9IHdpbmRvdy5zYnkuZmVlZHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSh3aW5kb3cpLnRyaWdnZXIoZXZ0KTtcblxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVyRmVlZHNDcmVhdGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gZW5hYmxlIGhlYWRlciBob3ZlciBhY3Rpb25cbiAgICAgICAgICAgICAgICAkKCcuc2JfeW91dHViZV9oZWFkZXInKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICR0aGlzSGVhZGVyID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgJHRoaXNIZWFkZXIuZmluZCgnLnNieV9oZWFkZXJfbGluaycpLm9uKCdtb3VzZWVudGVyIG1vdXNlbGVhdmUnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goZS50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW91c2VlbnRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzSGVhZGVyLmZpbmQoJy5zYnlfaGVhZGVyX2ltZ19ob3ZlcicpLmFkZENsYXNzKCdzYnlfZmFkZV9pbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb3VzZWxlYXZlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXNIZWFkZXIuZmluZCgnLnNieV9oZWFkZXJfaW1nX2hvdmVyJykucmVtb3ZlQ2xhc3MoJ3NieV9mYWRlX2luJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuc2J5QVBJUmVhZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnc2J5ZmVlZGFuZHl0cmVhZHknKTtcbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykudHJpZ2dlcihldnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuY29kZUhUTUw6IGZ1bmN0aW9uKHJhdykge1xuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBwYXNzZWQgdmFyaWFibGUgaXMgZGVmaW5lZFxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmF3ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHJlcGxhY2UgZ3JlYXRlciB0aGFuIGFuZCBsZXNzIHRoYW4gc3ltYm9scyB3aXRoIGh0bWwgZW50aXR5IHRvIGRpc2FsbG93IGh0bWwgaW4gY29tbWVudHNcbiAgICAgICAgICAgICAgICB2YXIgZW5jb2RlZCA9IHJhdy5yZXBsYWNlKC8oPikvZywnJmd0OycpLFxuICAgICAgICAgICAgICAgICAgZW5jb2RlZCA9IGVuY29kZWQucmVwbGFjZSgvKDwpL2csJyZsdDsnKTtcbiAgICAgICAgICAgICAgICBlbmNvZGVkID0gZW5jb2RlZC5yZXBsYWNlKC8oJmx0O2JyXFwvJmd0OykvZywnPGJyPicpO1xuICAgICAgICAgICAgICAgIGVuY29kZWQgPSBlbmNvZGVkLnJlcGxhY2UoLygmbHQ7YnImZ3Q7KS9nLCc8YnI+Jyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cmxEZXRlY3Q6IGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgdXJsUmVnZXggPSAvaHR0cHM/OlxcL1xcLyh3d3dcXC4pP1stYS16QS1aMC05QDolLl9cXCt+Iz1dezIsMjU2fVxcLlthLXpdezIsNn1cXGIoWy1hLXpBLVowLTlAOiVfXFwrLn4jPyYvLz1dKikvZztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5tYXRjaCh1cmxSZWdleCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3RhRGV0ZWN0OiBmdW5jdGlvbih0ZXh0KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgY3RhTWF0Y2hlcyA9IHRleHQubWF0Y2goL3tMaW5rOiguKil9L2cpLFxuICAgICAgICAgICAgICAgICAgY3RhID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoY3RhTWF0Y2hlcyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdXJsTWF0Y2hlcyA9IHdpbmRvdy5zYnkudXJsRGV0ZWN0KGN0YU1hdGNoZXNbMF0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmxNYXRjaGVzICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gdXJsTWF0Y2hlc1swXS50cmltKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNieUJ1dHRvblRleHQgPSBjdGFNYXRjaGVzWzBdLnJlcGxhY2UoJ3tMaW5rOicsJycpLnJlcGxhY2UoJ30nLCcnKS5yZXBsYWNlKHVybCwnJykucmVwbGFjZSgnICAnLCcgJykudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3RhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAnbGluaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogc2J5QnV0dG9uVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDVEEgZm91bmQgYnV0IG5vIFVSTCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0YTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaHVmZmxlOiBmdW5jdGlvbihhcnJheSkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50SW5kZXggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICB0ZW1wb3JhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIHJhbmRvbUluZGV4O1xuXG4gICAgICAgICAgICAgICAgLy8gV2hpbGUgdGhlcmUgcmVtYWluIGVsZW1lbnRzIHRvIHNodWZmbGUuLi5cbiAgICAgICAgICAgICAgICB3aGlsZSAoMCAhPT0gY3VycmVudEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFBpY2sgYSByZW1haW5pbmcgZWxlbWVudC4uLlxuICAgICAgICAgICAgICAgICAgICByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCAtPSAxO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEFuZCBzd2FwIGl0IHdpdGggdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJ5VmFsdWUgPSBhcnJheVtjdXJyZW50SW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBhcnJheVtjdXJyZW50SW5kZXhdID0gYXJyYXlbcmFuZG9tSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBhcnJheVtyYW5kb21JbmRleF0gPSB0ZW1wb3JhcnlWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gU2J5RmVlZChlbCwgaW5kZXgsIHNldHRpbmdzKSB7XG4gICAgICAgICAgICB0aGlzLmVsID0gZWw7XG4gICAgICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyVVJMID0gd2luZG93LnNieS5vcHRpb25zLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLm5hcnJvd1BsYXllcikge1xuICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJVUkwgPSB3aW5kb3cuc2J5Lm9wdGlvbnMucGxhY2Vob2xkZXJOYXJyb3dcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGxheWVyQVBJUmVhZHkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY29uc2VudEdpdmVuID0gc2V0dGluZ3MuY29uc2VudEdpdmVuO1xuICAgICAgICAgICAgdGhpcy5wbGF5ZXJzID0ge307XG4gICAgICAgICAgICB0aGlzLm1pbkltYWdlV2lkdGggPSAwO1xuICAgICAgICAgICAgdGhpcy5pbWFnZVJlc29sdXRpb24gPSAxNTA7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZWRJbWFnZXMgPSB7fTtcbiAgICAgICAgICAgIHRoaXMubmVlZHNSZXNpemluZyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5vdXRPZlBhZ2VzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubW9zdFJlY2VudGx5TG9hZGVkUG9zdHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZW1iZWRVUkwgPSAnLy93d3cueW91dHViZS1ub2Nvb2tpZS5jb20nO1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLmFsbG93Q29va2llcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1iZWRVUkwgPSAnLy93d3cueW91dHViZS5jb20nXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIFNieUZlZWQucHJvdG90eXBlID0ge1xuICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGZlZWQuc2V0dGluZ3MuY29uc2VudEdpdmVuID0gZmVlZC5jaGVja0NvbnNlbnQoKTtcblxuICAgICAgICAgICAgICAgIGlmIChmZWVkLnNldHRpbmdzLmNvbnNlbnRHaXZlbikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5Lm1heWJlQWRkWVRBUEkoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZmVlZC5zZXR0aW5ncy5ub0NETiAmJiAhZmVlZC5zZXR0aW5ncy5jb25zZW50R2l2ZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcy5lbCkuZmluZCgnLnNiX3lvdXR1YmVfaGVhZGVyJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMuZWwpLmZpbmQoJy5zYl95b3V0dWJlX2hlYWRlcicpLmFkZENsYXNzKCdzYnlfbm9fY29uc2VudCcpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJCh0aGlzLmVsKS5wcmV2KCcuc2JfeW91dHViZV9oZWFkZXInKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcy5lbCkucHJldignLnNiX3lvdXR1YmVfaGVhZGVyJykuYWRkQ2xhc3MoJ3NieV9ub19jb25zZW50JylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzLmVsKS5maW5kKCcjc2J5X21vZF9lcnJvcicpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMuZWwpLnByZXBlbmQoJCh0aGlzLmVsKS5maW5kKCcjc2J5X21vZF9lcnJvcicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuYWpheFBvc3RMb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TmV3UG9zdFNldCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJJbml0aWFsSW1hZ2VzTG9hZGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vT25seSBjaGVjayB0aGUgd2lkdGggb25jZSB0aGUgcmVzaXplIGV2ZW50IGlzIG92ZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHNieV9kZWxheSA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzYnlfdGltZXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHNieV9jYWxsYmFjaywgc2J5X21zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoc2J5X3RpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNieV90aW1lciA9IHNldFRpbWVvdXQoc2J5X2NhbGxiYWNrLCBzYnlfbXMpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzYnlfZGVsYXkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hZnRlclJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbml0TGF5b3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRHYWxsZXJ5TGF5b3V0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5pdEdhbGxlcnlMYXlvdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfZ2FsbGVyeScpICYmICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXliZVJhaXNlU2luZ2xlSW1hZ2VSZXNvbHV0aW9uKCRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKSwgMCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgLnNieV92aWRlb190aHVtYm5haWwnKS5vZmYoKS5vbignY2xpY2snLGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCghZmVlZC5zZXR0aW5ncy5saWdodGJveEVuYWJsZWQgfHwgKGZlZWQuc2V0dGluZ3MubGlnaHRib3hFbmFibGVkICYmIGZlZWQuc2V0dGluZ3Mubm9DRE4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoZmVlZC5zZXR0aW5ncy5ub0NETiB8fCAhZmVlZC5zZXR0aW5ncy5jb25zZW50R2l2ZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuY2xvc2VzdCgnLnNieV9pdGVtJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0eXBlb2YgJCh0aGlzKS5jbG9zZXN0KCcuc2J5X2l0ZW0nKS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignaHJlZicsJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9JyskKHRoaXMpLmNsb3Nlc3QoJy5zYnlfaXRlbScpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkLm9uVGh1bWJuYWlsQ2xpY2soJCh0aGlzKSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZmlyc3QoKS5hZGRDbGFzcygnc2J5X2N1cnJlbnQnKTtcblxuICAgICAgICAgICAgICAgICAgICAkc2VsZi5vbignbW91c2VlbnRlcicsZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZlZWQuY2FuQ3JlYXRlUGxheWVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgaWZyYW1lJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuYWRkQ2xhc3MoJ3NieV9wbGF5ZXJfYWRkZWQnKS5maW5kKCcuc2J5X3BsYXllcl9vdXRlcl93cmFwJykuYWRkQ2xhc3MoJ3NieV9wbGF5ZXJfbG9hZGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgLnNieV92aWRlb190aHVtYm5haWwnKS5maW5kKCcuc2J5X2xvYWRlcicpLnNob3coKS5yZW1vdmVDbGFzcygnc2J5X2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuY3JlYXRlUGxheWVyKCdzYnlfcGxheWVyJytmZWVkLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZlZWQucGxheWVyID09PSAndW5kZWZpbmVkJyAmJiBmZWVkLnBsYXllckVhZ2VyTG9hZGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmNyZWF0ZVBsYXllcignc2J5X3BsYXllcicrZmVlZC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuc2J5U2VtaUVhZ2VyTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5jcmVhdGVQbGF5ZXIoJ3NieV9wbGF5ZXInK2ZlZWQuaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3Mubm9DRE4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzYnlfcGxheV9idG5cIj5cXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2J5X3BsYXlfYnRuX2JnXCI+PC9zcGFuPlxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCIgZGF0YS1wcmVmaXg9XCJmYWJcIiBkYXRhLWljb249XCJ5b3V0dWJlXCIgcm9sZT1cImltZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDU3NiA1MTJcIiBjbGFzcz1cInN2Zy1pbmxpbmUtLWZhIGZhLXlvdXR1YmUgZmEtdy0xOFwiPjxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTU0OS42NTUgMTI0LjA4M2MtNi4yODEtMjMuNjUtMjQuNzg3LTQyLjI3Ni00OC4yODQtNDguNTk3QzQ1OC43ODEgNjQgMjg4IDY0IDI4OCA2NFMxMTcuMjIgNjQgNzQuNjI5IDc1LjQ4NmMtMjMuNDk3IDYuMzIyLTQyLjAwMyAyNC45NDctNDguMjg0IDQ4LjU5Ny0xMS40MTIgNDIuODY3LTExLjQxMiAxMzIuMzA1LTExLjQxMiAxMzIuMzA1czAgODkuNDM4IDExLjQxMiAxMzIuMzA1YzYuMjgxIDIzLjY1IDI0Ljc4NyA0MS41IDQ4LjI4NCA0Ny44MjFDMTE3LjIyIDQ0OCAyODggNDQ4IDI4OCA0NDhzMTcwLjc4IDAgMjEzLjM3MS0xMS40ODZjMjMuNDk3LTYuMzIxIDQyLjAwMy0yNC4xNzEgNDguMjg0LTQ3LjgyMSAxMS40MTItNDIuODY3IDExLjQxMi0xMzIuMzA1IDExLjQxMi0xMzIuMzA1czAtODkuNDM4LTExLjQxMi0xMzIuMzA1em0tMzE3LjUxIDIxMy41MDhWMTc1LjE4NWwxNDIuNzM5IDgxLjIwNS0xNDIuNzM5IDgxLjIwMXpcIiBjbGFzcz1cIlwiPjwvcGF0aD48L3N2Zz4gICAgICAgICAgICAgICAgICAgIDwvZGl2PicpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3JlYXRlUGxheWVyOiBmdW5jdGlvbihwbGF5ZXJJRCx2aWRlb0lELGF1dG9wbGF5LGFyZ3MpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMuZWwpLFxuICAgICAgICAgICAgICAgICAgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmlkZW9JRCA9IHR5cGVvZiB2aWRlb0lEICE9PSAndW5kZWZpbmVkJyA/IHZpZGVvSUQgOiB0aGlzLmdldFZpZGVvSUQoJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZmlyc3QoKSk7XG4gICAgICAgICAgICAgICAgYXV0b3BsYXkgPSB0eXBlb2YgYXV0b3BsYXkgIT09ICd1bmRlZmluZWQnID8gYXV0b3BsYXkgOiAwO1xuXG4gICAgICAgICAgICAgICAgLy8gZG8gbm90IGNyZWF0ZSBwbGF5ZXIgaW4gY3VzdG9taXplciBwcmV2aWV3XG4gICAgICAgICAgICAgICAgaWYgKCBzYnlPcHRpb25zLmlzQ3VzdG9taXplciAhPT0gdW5kZWZpbmVkICYmIHNieU9wdGlvbnMuaXNDdXN0b21pemVyICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmdzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBhcmdzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaG9zdDogd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgZmVlZC5lbWJlZFVSTCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXJWYXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXN0YnJhbmRpbmc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBhdXRvcGxheVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3MuZXZlbnRzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBhcmdzLmV2ZW50cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdvblJlYWR5JzogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5yZW1vdmVDbGFzcygnc2J5X3BsYXllcl9sb2FkaW5nJykuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5jc3MoJ3otaW5kZXgnLCAtMSkuZmluZCgnLnNieV9sb2FkZXInKS5oaWRlKCkuYWRkQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCgnIycgKyBwbGF5ZXJJRCkubGVuZ3RoICYmICQoJyMnICsgcGxheWVySUQpLmNsb3Nlc3QoJy5zYnlfdmlkZW9fdGh1bWJuYWlsX3dyYXAnKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjJyArIHBsYXllcklEKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbF93cmFwJykuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5mYWRlVG8oMCwgJ3Nsb3cnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcygnei1pbmRleCcsIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9sb2FkZXInKS5oaWRlKCkuYWRkQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLnNieV9pdGVtJykucmVtb3ZlQ2xhc3MoJ3NieV9wbGF5ZXJfbG9hZGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnc2J5YWZ0ZXJwbGF5ZXJyZWFkeScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5mZWVkID0gZmVlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucGxheWVyID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkod2luZG93KS50cmlnZ2VyKGV2dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ29uU3RhdGVDaGFuZ2UnOiBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfb3V0ZXJfd3JhcCcpLnJlbW92ZUNsYXNzKCdzYnlfcGxheWVyX2xvYWRpbmcnKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmNzcygnei1pbmRleCcsIC0xKS5maW5kKCcuc2J5X2xvYWRlcicpLmhpZGUoKS5hZGRDbGFzcygnc2J5X2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJTdGF0ZUNoYW5nZShwbGF5ZXJJRCx2aWRlb0lELGRhdGEsJCgnIycgKyBwbGF5ZXJJRCkuY2xvc2VzdCgnLnNieV92aWRlb190aHVtYm5haWxfd3JhcCcpKTtcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YSAhPT0gMSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZlZWRJRDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZlZWQuZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcnRjb2RlQXR0ciA9IGZlZWQuZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXNob3J0Y29kZS1hdHRzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNob3J0Y29kZUF0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWRJRCA9IEpTT04ucGFyc2Uoc2hvcnRjb2RlQXR0cik/LmZlZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnc2J5LXZpZGVvLWludGVyYWN0aW9uJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSUQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkSUQ6IGZlZWRJRFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmZWVkLnBsYXllcnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbVZpZElEID0gZmVlZC5nZXRWaWRlb0lEKCQodGhpcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZmluZCgnaWZyYW1lJykubGVuZ3RoICYmIChpdGVtVmlkSUQgIT09IHZpZGVvSUQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmZWVkLnBsYXllcnNbaXRlbVZpZElEXSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGZlZWQucGxheWVyc1tpdGVtVmlkSURdLnBhdXNlVmlkZW8gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5wbGF5ZXJzW2l0ZW1WaWRJRF0ucGF1c2VWaWRlbygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuc2J5RWFnZXJMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdQbGF5ZXIgPSBZVC5nZXQocGxheWVySUQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdQbGF5ZXIgPSBuZXcgd2luZG93LllULlBsYXllcihwbGF5ZXJJRCwgYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5tYXliZUFkZENUQShwbGF5ZXJJRCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfbGlzdCcpICYmIHR5cGVvZiB0aGlzLnBsYXllcnNbdmlkZW9JRF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyc1t2aWRlb0lEXSA9IG5ld1BsYXllcjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnBsYXllciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIgPSBuZXdQbGF5ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnc2J5YWZ0ZXJwbGF5ZXJjcmVhdGVkJyk7XG4gICAgICAgICAgICAgICAgZXZ0LmZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGpRdWVyeSh3aW5kb3cpLnRyaWdnZXIoZXZ0KTtcblxuICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgLnNieV9wbGF5X2J0bicpLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld1BsYXllcjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlclN0YXRlQ2hhbmdlOiBmdW5jdGlvbihwbGF5ZXJJRCx2aWRlb0lELGRhdGEsJHBsYXllcikge1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVySW5pdGlhbEltYWdlc0xvYWRlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0TGF5b3V0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkTW9yZUJ1dHRvbkluaXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVFeHRyYUl0ZW1zRm9yV2lkdGgoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZU5ld0ltYWdlc1JldmVhbGVkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXZlYWxOZXdJbWFnZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyTmV3SW1hZ2VzUmV2ZWFsZWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyRmVlZFNldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZVBsYXllcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZUl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuY29uc2VudEdpdmVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlGdWxsRmVhdHVyZXMoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZlYXR1cmVzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVyUmVzaXplOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEltYWdlSGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbWFnZVJlc29sdXRpb24oKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1heWJlUmFpc2VJbWFnZVJlc29sdXRpb24oKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEltYWdlU2l6ZUNsYXNzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJMb2FkTW9yZUNsaWNrZWQ6IGZ1bmN0aW9uKCRidXR0b24pIHtcbiAgICAgICAgICAgICAgICAkYnV0dG9uLmZpbmQoJy5zYnlfbG9hZGVyJykucmVtb3ZlQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAkYnV0dG9uLmZpbmQoJy5zYnlfYnRuX3RleHQnKS5hZGRDbGFzcygnc2J5X2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICRidXR0b24uY2xvc2VzdCgnLnNiX3lvdXR1YmUnKS5maW5kKCcuc2J5X251bV9kaWZmX2hpZGUnKS5hZGRDbGFzcygnc2J5X3RyYW5zaXRpb24nKS5yZW1vdmVDbGFzcygnc2J5X251bV9kaWZmX2hpZGUnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlck5ld0ltYWdlc0xvYWRlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKSxcbiAgICAgICAgICAgICAgICAgIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlTmV3SW1hZ2VzUmV2ZWFsZWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJldmVhbE5ld0ltYWdlcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJOZXdJbWFnZXNSZXZlYWxlZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZVBsYXllcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZUl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vSGlkZSB0aGUgbG9hZGVyIGluIHRoZSBsb2FkIG1vcmUgYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfbG9hZGVyJykuYWRkQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9idG5fdGV4dCcpLnJlbW92ZUNsYXNzKCdzYnlfaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgICAgIGZlZWQubWF5YmVSYWlzZUltYWdlUmVzb2x1dGlvbigpO1xuICAgICAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmNvbnNlbnRHaXZlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5RnVsbEZlYXR1cmVzKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGZWF0dXJlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBiZWZvcmVOZXdJbWFnZXNSZXZlYWxlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbWFnZUhlaWdodCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWF5YmVSYWlzZUltYWdlUmVzb2x1dGlvbih0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEltYWdlU2l6ZUNsYXNzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJGZWVkU2V0OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNpemVQbGF5ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfZ2FsbGVyeScpKSB7XG4gICAgICAgICAgICAgICAgICAgICRwbGF5ZXJUaHVtYm5haWwgPSAkc2VsZi5maW5kKCcuc2J5X3BsYXllcl9pdGVtJykuZmluZCgnLnNieV9wbGF5ZXJfdmlkZW9fdGh1bWJuYWlsJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ZXJXaWR0aCA9ICRwbGF5ZXJUaHVtYm5haWwuaW5uZXJXaWR0aCgpLFxuICAgICAgICAgICAgICAgICAgICAgIG5ld1BsYXllckhlaWdodCA9IE1hdGguZmxvb3IocGxheWVyV2lkdGggKiA5IC8gMTYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmVlZC5zZXR0aW5ncy5uYXJyb3dQbGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BsYXllckhlaWdodCA9IE1hdGguZmxvb3IocGxheWVyV2lkdGggKiAzIC8gNCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgJHBsYXllclRodW1ibmFpbC5jc3MoJ2hlaWdodCcsbmV3UGxheWVySGVpZ2h0KydweCcpLmNzcygnb3ZlcmZsb3cnLCdoaWRkZW4nKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfbGlzdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmVhY2goZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICRwbGF5ZXJUaHVtYm5haWwgPSAkKHRoaXMpLmZpbmQoJy5zYnlfaXRlbV92aWRlb190aHVtYm5haWwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ZXJXaWR0aCA9ICRwbGF5ZXJUaHVtYm5haWwuaW5uZXJXaWR0aCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdQbGF5ZXJIZWlnaHQgPSBNYXRoLmZsb29yKHBsYXllcldpZHRoICogOSAvIDE2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZWVkLnNldHRpbmdzLm5hcnJvd1BsYXllcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BsYXllckhlaWdodCA9IE1hdGguZmxvb3IocGxheWVyV2lkdGggKiAzIC8gNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkcGxheWVyVGh1bWJuYWlsLmNzcygnaGVpZ2h0JyxuZXdQbGF5ZXJIZWlnaHQrJ3B4JykuY3NzKCdvdmVyZmxvdycsJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2l6ZUl0ZW1zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMuZWwpLFxuICAgICAgICAgICAgICAgICAgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCEkc2VsZi5oYXNDbGFzcygnc2J5X2xheW91dF9saXN0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCcpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnc2J5X2ltZ0xpcXVpZF9yZWFkeScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRodW1iV2lkdGggPSAkKHRoaXMpLmlubmVyV2lkdGgoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RodW1iSGVpZ2h0ID0gTWF0aC5mbG9vcih0aHVtYldpZHRoICogOSAvIDE2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcygnaGVpZ2h0JyxuZXdUaHVtYkhlaWdodCsncHgnKS5jc3MoJ292ZXJmbG93JywnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJldmVhbE5ld0ltYWdlczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKSxcbiAgICAgICAgICAgICAgICAgIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlJbWFnZUxpcXVpZCgpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2FsbCBDdXN0b20gSlMgaWYgaXQgZXhpc3RzXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzYnlDdXN0b21KUyA9PSAnZnVuY3Rpb24nKSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHNieUN1c3RvbUpTKCk7IH0sIDEwMCk7XG5cbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5LXNjcmVlbnJlYWRlcicpLmZpbmQoJ2ltZycpLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtLnNieV9uZXcnKS5lYWNoKGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSBqUXVlcnkodGhpcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy9QaG90byBsaW5rc1xuICAgICAgICAgICAgICAgICAgICAvL0lmIGxpZ2h0Ym94IGlzIGRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIHZpZGVvSUQgPSAkc2VsZi5hdHRyKCdkYXRhLXZpZGVvLWlkJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5zYnlFYWdlckxvYWRpbmcgJiYgZmVlZC5jYW5DcmVhdGVQbGF5ZXIoKSAmJiAkKCcjc2J5X3BsYXllcl8nK3ZpZGVvSUQpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyID0gbmV3IFlULlBsYXllcignc2J5X3BsYXllcl8nK3ZpZGVvSUQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0lkOiB2aWRlb0lELFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllclZhcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXN0YnJhbmRpbmc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXk6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25TdGF0ZUNoYW5nZSc6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb0lEID0gZGF0YS50YXJnZXQuZ2V0VmlkZW9EYXRhKClbJ3ZpZGVvX2lkJ107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhICE9PSAxKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KHZpZGVvSW50ZXJhY3Rpb25FdmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSUQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbVZpZElEID0galF1ZXJ5KHRoaXMpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkodGhpcykuZmluZCgnaWZyYW1lJykubGVuZ3RoICYmIGpRdWVyeShkYXRhLnRhcmdldC5hKS5hdHRyKCdpZCcpICE9PSBqUXVlcnkodGhpcykuZmluZCgnaWZyYW1lJykuYXR0cignaWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZVC5nZXQoJ3NieV9wbGF5ZXJfJytpdGVtVmlkSUQpLnBhdXNlVmlkZW8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5vbignbW91c2VlbnRlcicsZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkLm9uVGh1bWJuYWlsRW50ZXIoJCh0aGlzKSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfd3JhcCcpLm9uKCdtb3VzZWxlYXZlJyxmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQub25UaHVtYm5haWxMZWF2ZSgkKHRoaXMpLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvL2luaXQgY2xpY2tcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5vbignY2xpY2snLGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFmZWVkLnNldHRpbmdzLmxpZ2h0Ym94RW5hYmxlZCB8fCAoZmVlZC5zZXR0aW5ncy5saWdodGJveEVuYWJsZWQgJiYgZmVlZC5zZXR0aW5ncy5ub0NETikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmIChmZWVkLnNldHRpbmdzLm5vQ0ROIHx8ICFmZWVkLnNldHRpbmdzLmNvbnNlbnRHaXZlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5jbG9zZXN0KCcuc2J5X2l0ZW0nKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiAkKHRoaXMpLmNsb3Nlc3QoJy5zYnlfaXRlbScpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdocmVmJywnaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj0nKyQodGhpcykuY2xvc2VzdCgnLnNieV9pdGVtJykuYXR0cignZGF0YS12aWRlby1pZCcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQub25UaHVtYm5haWxDbGljaygkKHRoaXMpLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGxpZ2h0Ym94XG4gICAgICAgICAgICAgICAgICAgIGlmIChmZWVkLnNldHRpbmdzLmxpZ2h0Ym94RW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXNieS1saWdodGJveCcsZmVlZC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNieU9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBzYnlPcHRpb25zLmxpZ2h0Ym94UGxhY2Vob2xkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MubmFycm93UGxheWVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignaHJlZicsc2J5T3B0aW9ucy5saWdodGJveFBsYWNlaG9sZGVyTmFycm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2hyZWYnLHNieU9wdGlvbnMubGlnaHRib3hQbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJJdGVtUmV2ZWFsZWQoJHNlbGYpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIG5vIGluZm9cbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWxmLmZpbmQoJy5zYnlfaW5mb19pdGVtJykudGV4dCgpLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaW5mb19pdGVtJykuYWRkQ2xhc3MoJ3NieV9ub19zcGFjZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7IC8vRW5kIC5zYnlfaXRlbSBlYWNoXG5cbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X3BsYXllcl9pdGVtJykuZWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRzZWxmID0galF1ZXJ5KHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJJdGVtUmV2ZWFsZWQoJHNlbGYpO1xuICAgICAgICAgICAgICAgIH0pOyAvL0VuZCAuc2J5X2l0ZW0gZWFjaFxuXG4gICAgICAgICAgICAgICAgLy9SZW1vdmUgdGhlIG5ldyBjbGFzcyBhZnRlciA1MDBtcywgb25jZSB0aGUgc29ydGluZyBpcyBkb25lXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbS5zYnlfbmV3JykucmVtb3ZlQ2xhc3MoJ3NieV9uZXcnKTtcbiAgICAgICAgICAgICAgICAgICAgLy9Mb29wIHRocm91Z2ggaXRlbXMgYW5kIHJlbW92ZSBjbGFzcyB0byByZXZlYWwgdGhlbVxuICAgICAgICAgICAgICAgICAgICB2YXIgdGltZSA9IDEsXG4gICAgICAgICAgICAgICAgICAgICAgbnVtID0gJHNlbGYuZmluZCgnLnNieV90cmFuc2l0aW9uJykubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X3RyYW5zaXRpb24nKS5lYWNoKGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgJHNieV9pdGVtX3RyYW5zaXRpb25fZWwgPSBqUXVlcnkodGhpcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNieV9pdGVtX3RyYW5zaXRpb25fZWwucmVtb3ZlQ2xhc3MoJ3NieV90cmFuc2l0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGltZSArPSAxMDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgMSk7XG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlckl0ZW1SZXZlYWxlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlck5ld0ltYWdlc1JldmVhbGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbkZvclZpc2liaWxpdHlDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmROZWVkc1Jlc2l6aW5nVG9TZXJ2ZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRDaGVja1dQUG9zdHNUb1NlcnZlcigpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZXR0aW5ncy5pbWFnZUxvYWRFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICQoJy5zYnlfbm9fcmVzcmFpc2UnKS5yZW1vdmVDbGFzcygnc2J5X25vX3Jlc3JhaXNlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGV2dCA9ICQuRXZlbnQoJ3NieWFmdGVyaW1hZ2VzbG9hZGVkJyk7XG4gICAgICAgICAgICAgICAgZXZ0LmVsID0gJCh0aGlzLmVsKTtcbiAgICAgICAgICAgICAgICAkKHdpbmRvdykudHJpZ2dlcihldnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldFJlc2l6ZWRJbWFnZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzLmVsKS5maW5kKCcuc2J5X3Jlc2l6ZWRfaW1hZ2VfZGF0YScpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgJiYgdHlwZW9mICQodGhpcy5lbCkuZmluZCgnLnNieV9yZXNpemVkX2ltYWdlX2RhdGEnKS5hdHRyKCdkYXRhLXJlc2l6ZWQnKSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmICQodGhpcy5lbCkuZmluZCgnLnNieV9yZXNpemVkX2ltYWdlX2RhdGEnKS5hdHRyKCdkYXRhLXJlc2l6ZWQnKS5pbmRleE9mKCd7XCInKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZWRJbWFnZXMgPSBKU09OLnBhcnNlKCQodGhpcy5lbCkuZmluZCgnLnNieV9yZXNpemVkX2ltYWdlX2RhdGEnKS5hdHRyKCdkYXRhLXJlc2l6ZWQnKSk7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcy5lbCkuZmluZCgnLnNieV9yZXNpemVkX2ltYWdlX2RhdGEnKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VuZE5lZWRzUmVzaXppbmdUb1NlcnZlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmIChmZWVkLm5lZWRzUmVzaXppbmcubGVuZ3RoID4gMCAmJiBmZWVkLnNldHRpbmdzLnJlc2l6aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbU9mZnNldCA9ICQodGhpcy5lbCkuZmluZCgnLnNieV9pdGVtJykubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzdWJtaXREYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnc2J5X3Jlc2l6ZWRfaW1hZ2VzX3N1Ym1pdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkc19yZXNpemluZzogZmVlZC5uZWVkc1Jlc2l6aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBpdGVtT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZF9pZDogZmVlZC5zZXR0aW5ncy5mZWVkSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogZmVlZC5sb2NhdGlvbkd1ZXNzKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0X2lkOiBmZWVkLnNldHRpbmdzLnBvc3RJRCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHM6IGZlZWQuc2V0dGluZ3Muc2hvcnRDb2RlQXR0cyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9uU3VjY2VzcyA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnRyaW0oKS5pbmRleE9mKCd7JykgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZWVkLnNldHRpbmdzLmRlYnVnRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzYnlBamF4KHN1Ym1pdERhdGEsb25TdWNjZXNzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VuZENoZWNrV1BQb3N0c1RvU2VydmVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MuY2hlY2tXUFBvc3RzIHx8IGZlZWQuc2V0dGluZ3Muc2luZ2xlQ2hlY2tQb3N0cykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmVlZElEID0gdHlwZW9mIGZlZWQuc2V0dGluZ3MuZmVlZElEICE9PSAndW5kZWZpbmVkJyA/IGZlZWQuc2V0dGluZ3MuZmVlZElEIDogJ3NieV9zaW5nbGUnLFxuICAgICAgICAgICAgICAgICAgICAgIHBvc3RzID0gZmVlZC5tb3N0UmVjZW50bHlMb2FkZWRQb3N0cztcbiAgICAgICAgICAgICAgICAgICAgZmVlZC5tb3N0UmVjZW50bHlMb2FkZWRQb3N0cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3VibWl0RGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NieV9jaGVja193cF9zdWJtaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZF9pZDogZmVlZElELFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0czogZmVlZC5zZXR0aW5ncy5zaG9ydENvZGVBdHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IGZlZWQubG9jYXRpb25HdWVzcygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdF9pZDogZmVlZC5zZXR0aW5ncy5wb3N0SUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6ICEgJCh0aGlzLmVsKS5oYXNDbGFzcygnc2J5X2xheW91dF9jYXJvdXNlbCcpID8gJCh0aGlzLmVsKS5maW5kKCcuc2J5X2l0ZW0nKS5sZW5ndGggOiBNYXRoLmZsb29yKCgkKHRoaXMuZWwpLmZpbmQoJy5zYnlfaXRlbScpLmxlbmd0aCAvIDIpIC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RzOiBwb3N0c1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB2YXIgb25TdWNjZXNzID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEudHJpbSgpLmluZGV4T2YoJ3snKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MuZGVidWdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hZnRlclNlbmRDaGVja1dQUG9zdHNUb1NlcnZlcihyZXNwb25zZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2J5QWpheChzdWJtaXREYXRhLG9uU3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVyU2VuZENoZWNrV1BQb3N0c1RvU2VydmVyOiBmdW5jdGlvbiAocmVzcG9uc2UpIHtcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvYWRNb3JlQnV0dG9uSW5pdDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2Zvb3RlciAuc2J5X2xvYWRfYnRuJykub2ZmKCkub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBmZWVkLmFmdGVyTG9hZE1vcmVDbGlja2VkKGpRdWVyeSh0aGlzKSk7XG4gICAgICAgICAgICAgICAgICAgIGZlZWQuZ2V0TmV3UG9zdFNldCgpO1xuICAgICAgICAgICAgICAgIH0pOyAvL0VuZCBjbGljayBldmVudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldE5ld1Bvc3RTZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMuZWwpLFxuICAgICAgICAgICAgICAgICAgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1PZmZzZXQgPSAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICBzdWJtaXREYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NieV9sb2FkX21vcmVfY2xpY2tlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBpdGVtT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgIGZlZWRfaWQ6IGZlZWQuc2V0dGluZ3MuZmVlZElELFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHM6IGZlZWQuc2V0dGluZ3Muc2hvcnRDb2RlQXR0cyxcbiAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogZmVlZC5sb2NhdGlvbkd1ZXNzKCksXG4gICAgICAgICAgICAgICAgICAgICAgcG9zdF9pZDogZmVlZC5zZXR0aW5ncy5wb3N0SUQsXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9yZXNvbHV0aW9uOiBmZWVkLmltYWdlUmVzb2x1dGlvblxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB2YXIgb25TdWNjZXNzID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEudHJpbSgpLmluZGV4T2YoJ3snKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSlNPTi5wYXJzZShkYXRhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tXUFBvc3RzID0gdHlwZW9mIHJlc3BvbnNlLmZlZWRTdGF0dXMuY2hlY2tXUFBvc3RzICE9PSAndW5kZWZpbmVkJyA/IHJlc3BvbnNlLmZlZWRTdGF0dXMuY2hlY2tXUFBvc3RzIDogZmFsc2U7O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MuZGVidWdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrV1BQb3N0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuc2V0dGluZ3MuY2hlY2tXUFBvc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5zZXR0aW5ncy5jaGVja1dQUG9zdHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYXBwZW5kTmV3UG9zdHMocmVzcG9uc2UuaHRtbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmFkZFJlc2l6ZWRJbWFnZXMocmVzcG9uc2UucmVzaXplZEltYWdlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmVlZC5zZXR0aW5ncy5hamF4UG9zdExvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLnNldHRpbmdzLmFqYXhQb3N0TG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJJbml0aWFsSW1hZ2VzTG9hZGVkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJOZXdJbWFnZXNMb2FkZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5mZWVkU3RhdHVzLnNob3VsZFBhZ2luYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5vdXRPZlBhZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2xvYWRfYnRuJykuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLm91dE9mUGFnZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnNieV9ub19qcycpLnJlbW92ZUNsYXNzKCdzYnlfbm9fanMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5Db21tZW50cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHNieUFqYXgoc3VibWl0RGF0YSwgb25TdWNjZXNzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcHBlbmROZXdQb3N0czogZnVuY3Rpb24gKG5ld1Bvc3RzSHRtbCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuZmluZCgnLnNieV9pdGVtc193cmFwIC5zYnlfaXRlbScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAgLnNieV9pdGVtJykubGFzdCgpLmFmdGVyKG5ld1Bvc3RzSHRtbCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtc193cmFwJykuYXBwZW5kKG5ld1Bvc3RzSHRtbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZFJlc2l6ZWRJbWFnZXM6IGZ1bmN0aW9uIChyZXNpemVkSW1hZ2VzVG9BZGQpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpbWFnZUlEIGluIHJlc2l6ZWRJbWFnZXNUb0FkZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZWRJbWFnZXNbaW1hZ2VJRF0gPSByZXNpemVkSW1hZ2VzVG9BZGRbaW1hZ2VJRF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEltYWdlSGVpZ2h0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXliZVJhaXNlU2luZ2xlSW1hZ2VSZXNvbHV0aW9uOiBmdW5jdGlvbiAoJGl0ZW0sIGluZGV4LCBmb3JjZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIHZhciBmZWVkID0gdGhpcyxcbiAgICAgICAgICAgICAgICAgIGltZ1NyY1NldCA9IGZlZWQuZ2V0SW1hZ2VVcmxzKCRpdGVtKSxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRVcmwgPSAkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCA+IGltZycpLmF0dHIoJ3NyYycpLFxuICAgICAgICAgICAgICAgICAgY3VycmVudFJlcyA9IDE1MCxcbiAgICAgICAgICAgICAgICAgIGFzcGVjdFJhdGlvID0gMSwgLy8gYWxsIHRodW1ibmFpbHMgYXJlIG9yaWVudGVkIHRoZSBzYW1lIHNvIHRoZSBiZXN0IGNhbGN1bGF0aW9uIHVzZXMgMVxuICAgICAgICAgICAgICAgICAgZm9yY2VDaGFuZ2UgPSB0eXBlb2YgZm9yY2VDaGFuZ2UgIT09ICd1bmRlZmluZWQnID8gZm9yY2VDaGFuZ2UgOiBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmICgkaXRlbS5oYXNDbGFzcygnc2J5X25vX3Jlc3JhaXNlJykgICB8fFxuICAgICAgICAgICAgICAgICAgKCFmZWVkLnNldHRpbmdzLmNvbnNlbnRHaXZlbiAmJiBmZWVkLnNldHRpbmdzLm5vQ0ROKSApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICQuZWFjaChpbWdTcmNTZXQsIGZ1bmN0aW9uIChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBjdXJyZW50VXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVzID0gcGFyc2VJbnQoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhbHJlYWR5IGJlZW4gY2hhbmdlZCB0byBhbiBleGlzdGluZyByZWFsIHNvdXJjZSwgZG9uJ3QgZm9yY2UgdGhlIGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vSW1hZ2UgcmVzXG4gICAgICAgICAgICAgICAgdmFyIG5ld1JlcyA9IDY0MDtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGZlZWQuc2V0dGluZ3MuaW1nUmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RodW1iJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlcyA9IDEyMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVzID0gMzIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlcyA9IDQ4MDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdmdWxsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlcyA9IDY0MDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1pbkltYWdlV2lkdGggPSBNYXRoLm1heChmZWVkLnNldHRpbmdzLmF1dG9NaW5SZXMsJGl0ZW0uZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5pbm5lcldpZHRoKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzSW1hZ2VSZXBsYWNlID0gZmVlZC5nZXRCZXN0UmVzb2x1dGlvbkZvckF1dG8obWluSW1hZ2VXaWR0aCwgYXNwZWN0UmF0aW8sICQodGhpcy5lbCkuZmluZCgnc2J5X2l0ZW0nKS5maXJzdCgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpc0ltYWdlUmVwbGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDgwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZXMgPSA0ODA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzIwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZXMgPSAzMjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZXMgPSAxMjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1JlcyA+IGN1cnJlbnRSZXMgfHwgY3VycmVudFVybCA9PT0gZmVlZC5wbGFjZWhvbGRlclVSTCB8fCBmb3JjZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmVlZC5zZXR0aW5ncy5kZWJ1Z0VuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWFzb24gPSBjdXJyZW50VXJsID09PSBmZWVkLnBsYWNlaG9sZGVyVVJMID8gJ3dhcyBwbGFjZWhvbGRlcicgOiAndG9vIHNtYWxsJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyYWlzIHJlcyBmb3IgJyArIGN1cnJlbnRVcmwsIHJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1VybCA9IGltZ1NyY1NldFtuZXdSZXNdO1xuICAgICAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCA+IGltZycpLmF0dHIoJ3NyYycsIG5ld1VybCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmhhc0NsYXNzKCdzYnlfaW1nTGlxdWlkX3JlYWR5JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuY3NzKCdiYWNrZ3JvdW5kLWltYWdlJywgJ3VybChcIicgKyBuZXdVcmwgKyAnXCIpJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCdpbWcnKS5vbignZXJyb3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghJCh0aGlzKS5oYXNDbGFzcygnc2J5X2ltZ19lcnJvcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdzYnlfaW1nX2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc291cmNlRnJvbUFQSSA9ICgkKHRoaXMpLmF0dHIoJ3NyYycpLmluZGV4T2YoJ2kueXRpbWcuY29tJykgPiAtMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc291cmNlRnJvbUFQSSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgJCh0aGlzKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtZnVsbC1yZXMnKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAkKHRoaXMpLmNsb3Nlc3QoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS1mdWxsLXJlcycpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmNzcygnYmFja2dyb3VuZC1pbWFnZScsICd1cmwoJyArICQodGhpcykuY2xvc2VzdCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLWZ1bGwtcmVzJykgKyAnKScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJCh0aGlzKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2hyZWYnKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAkKHRoaXMpLmNsb3Nlc3QoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignaHJlZicpICsgJ21lZGlhP3NpemU9bCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuY3NzKCdiYWNrZ3JvdW5kLWltYWdlJywgJ3VybCgnICsgJCh0aGlzKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2hyZWYnKSArICdtZWRpYT9zaXplPWwpJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLnNldHRpbmdzLmZhdm9yTG9jYWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcmNTZXQgPSBmZWVkLmdldEltYWdlVXJscygkKHRoaXMpLmNsb3Nlc3QoJy5zYnlfaXRlbScpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNyY1NldFs2NDBdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ3NyYycsIHNyY1NldFs2NDBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmNzcygnYmFja2dyb3VuZC1pbWFnZScsICd1cmwoJyArIHNyY1NldFs2NDBdICsgJyknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJSZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndW5maXhlZCBlcnJvciAnICsgJCh0aGlzKS5hdHRyKCdzcmMnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXliZVJhaXNlSW1hZ2VSZXNvbHV0aW9uOiBmdW5jdGlvbiAoanVzdE5ldykge1xuICAgICAgICAgICAgICAgIHZhciBmZWVkID0gdGhpcyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zU2VsZWN0b3IgPSB0eXBlb2YganVzdE5ldyAhPT0gJ3VuZGVmaW5lZCcgJiYganVzdE5ldyA9PT0gdHJ1ZSA/ICcuc2J5X2l0ZW0uc2J5X25ldycgOiAnLnNieV9pdGVtJyxcbiAgICAgICAgICAgICAgICAgIGZvcmNlQ2hhbmdlID0gIWZlZWQuaXNJbml0aWFsaXplZCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAkKGZlZWQuZWwpLmZpbmQoaXRlbXNTZWxlY3RvcikuZWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmhhc0NsYXNzKCdzYnlfbnVtX2RpZmZfaGlkZScpXG4gICAgICAgICAgICAgICAgICAgICAgJiYgJCh0aGlzKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiAkKHRoaXMpLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS1pbWctc3JjLXNldCcpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5tYXliZVJhaXNlU2luZ2xlSW1hZ2VSZXNvbHV0aW9uKCQodGhpcyksaW5kZXgsZm9yY2VDaGFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7IC8vRW5kIC5zYnlfaXRlbSBlYWNoXG4gICAgICAgICAgICAgICAgZmVlZC5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRCZXN0UmVzb2x1dGlvbkZvckF1dG86IGZ1bmN0aW9uKGNvbFdpZHRoLCBhc3BlY3RSYXRpbywgJGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oYXNwZWN0UmF0aW8pIHx8IGFzcGVjdFJhdGlvIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICBhc3BlY3RSYXRpbyA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBiZXN0V2lkdGggPSBjb2xXaWR0aCAqIGFzcGVjdFJhdGlvLFxuICAgICAgICAgICAgICAgICAgYmVzdFdpZHRoUm91bmRlZCA9IE1hdGguY2VpbChiZXN0V2lkdGggLyAxMCkgKiAxMCxcbiAgICAgICAgICAgICAgICAgIGN1c3RvbVNpemVzID0gWzEyMCwgMzIwLCA0ODAsIDY0MF07XG5cbiAgICAgICAgICAgICAgICBpZiAoJGl0ZW0uaGFzQ2xhc3MoJ3NieV9oaWdobGlnaHRlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RXaWR0aFJvdW5kZWQgPSBiZXN0V2lkdGhSb3VuZGVkICoyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjdXN0b21TaXplcy5pbmRleE9mKHBhcnNlSW50KGJlc3RXaWR0aFJvdW5kZWQpKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgJC5lYWNoKGN1c3RvbVNpemVzLCBmdW5jdGlvbiAoaW5kZXgsIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtID4gcGFyc2VJbnQoYmVzdFdpZHRoUm91bmRlZCkgJiYgIWRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0V2lkdGhSb3VuZGVkID0gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJlc3RXaWR0aFJvdW5kZWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGlkZUV4dHJhSXRlbXNGb3JXaWR0aDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0ID09PSAnY2Fyb3VzZWwnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKSxcbiAgICAgICAgICAgICAgICAgIG51bSA9IHR5cGVvZiAkc2VsZi5hdHRyKCdkYXRhLW51bScpICE9PSAndW5kZWZpbmVkJyAmJiAkc2VsZi5hdHRyKCdkYXRhLW51bScpICE9PSAnJyA/IHBhcnNlSW50KCRzZWxmLmF0dHIoJ2RhdGEtbnVtJykpIDogMSxcbiAgICAgICAgICAgICAgICAgIG51bW1vYmlsZSA9IHR5cGVvZiAkc2VsZi5hdHRyKCdkYXRhLW51bW1vYmlsZScpICE9PSAndW5kZWZpbmVkJyAmJiAkc2VsZi5hdHRyKCdkYXRhLW51bW1vYmlsZScpICE9PSAnJyA/IHBhcnNlSW50KCRzZWxmLmF0dHIoJ2RhdGEtbnVtbW9iaWxlJykpIDogbnVtO1xuXG4gICAgICAgICAgICAgICAgaWYgKCEkc2VsZi5oYXNDbGFzcygnLnNieV9sYXlvdXRfY2Fyb3VzZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgPCA0ODApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudW1tb2JpbGUgPCAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5zbGljZShudW1tb2JpbGUgLSAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5sZW5ndGgpLmFkZENsYXNzKCdzYnlfbnVtX2RpZmZfaGlkZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bSA8ICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLnNsaWNlKG51bSAtICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmxlbmd0aCkuYWRkQ2xhc3MoJ3NieV9udW1fZGlmZl9oaWRlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRJbWFnZVNpemVDbGFzczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCk7XG4gICAgICAgICAgICAgICAgJHNlbGYucmVtb3ZlQ2xhc3MoJ3NieV9zbWFsbCBzYnlfbWVkaXVtJyk7XG4gICAgICAgICAgICAgICAgdmFyIGZlZWRXaWR0aCA9ICRzZWxmLmlubmVyV2lkdGgoKSxcbiAgICAgICAgICAgICAgICAgIHBob3RvUGFkZGluZyA9IHBhcnNlSW50KCgkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAnKS5vdXRlcldpZHRoKCkgLSAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAnKS53aWR0aCgpKSkgLyAyLFxuICAgICAgICAgICAgICAgICAgY29scyA9IHRoaXMuZ2V0Q29sdW1uQ291bnQoKSxcbiAgICAgICAgICAgICAgICAgIGZlZWRXaWR0aFNhbnNQYWRkaW5nID0gZmVlZFdpZHRoIC0gKHBob3RvUGFkZGluZyAqIChjb2xzKzIpKSxcbiAgICAgICAgICAgICAgICAgIGNvbFdpZHRoID0gKGZlZWRXaWR0aFNhbnNQYWRkaW5nIC8gY29scyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29sV2lkdGggPiAxNDAgJiYgY29sV2lkdGggPCAyNDApIHtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuYWRkQ2xhc3MoJ3NieV9tZWRpdW0nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbFdpZHRoIDw9IDE0MCkge1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5hZGRDbGFzcygnc2J5X3NtYWxsJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldE1pbkltYWdlV2lkdGg6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzLmVsKS5maW5kKCcuc2J5X2l0ZW0gLnNieV92aWRlb190aHVtYm5haWwnKS5maXJzdCgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbkltYWdlV2lkdGggPSAkKHRoaXMuZWwpLmZpbmQoJy5zYnlfaXRlbSAuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmZpcnN0KCkuaW5uZXJXaWR0aCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWluSW1hZ2VXaWR0aCA9IDE1MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0SW1hZ2VSZXNvbHV0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuaW1nUmVzID09PSAnYXV0bycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbWFnZVJlc29sdXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLnNldHRpbmdzLmltZ1Jlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGh1bWInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VSZXNvbHV0aW9uID0gMTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmltYWdlUmVzb2x1dGlvbiA9IDMyMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbWFnZVJlc29sdXRpb24gPSA2NDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0SW1hZ2VVcmxzOiBmdW5jdGlvbiAoJGl0ZW0pIHtcbiAgICAgICAgICAgICAgICB2YXIgc3JjU2V0ID0gSlNPTi5wYXJzZSgkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtaW1nLXNyYy1zZXQnKS5yZXBsYWNlKC9cXFxcXFwvL2csICcvJykpLFxuICAgICAgICAgICAgICAgICAgaWQgPSAkaXRlbS5hdHRyKCdpZCcpLnJlcGxhY2UoJ3NieV8nLCAnJykucmVwbGFjZSgncGxheWVyXycsJycpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmIHRoaXMucmVzaXplZEltYWdlc1tpZF0gIT09ICd2aWRlbydcbiAgICAgICAgICAgICAgICAgICYmIHRoaXMucmVzaXplZEltYWdlc1tpZF0gIT09ICdwZW5kaW5nJ1xuICAgICAgICAgICAgICAgICAgJiYgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXS5pZCAhPT0gJ2Vycm9yJ1xuICAgICAgICAgICAgICAgICAgJiYgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXS5pZCAhPT0gJ3ZpZGVvJ1xuICAgICAgICAgICAgICAgICAgJiYgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXS5pZCAhPT0gJ3BlbmRpbmcnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc2l6ZWRJbWFnZXNbaWRdWydzaXplcyddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kU2l6ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXVsnc2l6ZXMnXVsnZnVsbCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2l6ZXMucHVzaCg2NDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFs2NDBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnZnVsbC5qcGcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLmZpbmQoJy5zYnlfbGlua19hcmVhJykuYXR0ciggJ2hyZWYnLCBzYnlPcHRpb25zLnJlc2l6ZWRfdXJsICsgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXS5pZCArICdmdWxsLmpwZycgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoICdkYXRhLWZ1bGwtcmVzJywgc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnZnVsbC5qcGcnICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzaXplZEltYWdlc1tpZF1bJ3NpemVzJ11bJ2xvdyddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2l6ZXMucHVzaCgzMjApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFszMjBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnbG93LmpwZyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZmF2b3JMb2NhbCAmJiB0eXBlb2YgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXVsnc2l6ZXMnXVsnZnVsbCddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCcuc2J5X2xpbmtfYXJlYScpLmF0dHIoICdocmVmJywgc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnbG93LmpwZycgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW0uZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCAnZGF0YS1mdWxsLXJlcycsIHNieU9wdGlvbnMucmVzaXplZF91cmwgKyB0aGlzLnJlc2l6ZWRJbWFnZXNbaWRdLmlkICsgJ2xvdy5qcGcnICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc2l6ZWRJbWFnZXNbaWRdWydzaXplcyddWyd0aHVtYiddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2l6ZXMucHVzaCgxNTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFsxNTBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAndGh1bWIuanBnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmZhdm9yTG9jYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRTaXplcy5pbmRleE9mKDY0MCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZFNpemVzLmluZGV4T2YoMzIwKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNTZXRbNjQwXSA9IHNieU9wdGlvbnMucmVzaXplZF91cmwgKyB0aGlzLnJlc2l6ZWRJbWFnZXNbaWRdLmlkICsgJ2xvdy5qcGcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZFNpemVzLmluZGV4T2YoMzIwKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kU2l6ZXMuaW5kZXhPZig2NDApID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFszMjBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnZnVsbC5qcGcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kU2l6ZXMuaW5kZXhPZigxNTApID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFszMjBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAndGh1bWIuanBnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRTaXplcy5pbmRleE9mKDE1MCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZFNpemVzLmluZGV4T2YoMzIwKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNTZXRbMTUwXSA9IHNieU9wdGlvbnMucmVzaXplZF91cmwgKyB0aGlzLnJlc2l6ZWRJbWFnZXNbaWRdLmlkICsgJ2xvdy5qcGcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kU2l6ZXMuaW5kZXhPZig2NDApID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFsxNTBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnZnVsbC5qcGcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgIHx8ICh0eXBlb2YgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXVsnaWQnXSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXVsnaWQnXSAhPT0gJ3BlbmRpbmcnICYmIHRoaXMucmVzaXplZEltYWdlc1tpZF1bJ2lkJ10gIT09ICdlcnJvcicpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVG9OZWVkc1Jlc2l6aW5nKGlkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc3JjU2V0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFZpZGVvSUQ6IGZ1bmN0aW9uICgkZWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoJGVsLmhhc0NsYXNzKCdzYnlfaXRlbScpIHx8ICRlbC5oYXNDbGFzcygnc2J5X3BsYXllcl9pdGVtJykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkZWwuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGVsLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS12aWRlby1pZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZWwuY2xvc2VzdCgnc2J5X2l0ZW0nKS5sZW5ndGggfHwgJGVsLmNsb3Nlc3QoJ3NieV9wbGF5ZXJfaXRlbScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHRhcmdlRWwgPSAkZWwuY2xvc2VzdCgnc2J5X2l0ZW0nKS5sZW5ndGggPyAkZWwuY2xvc2VzdCgnc2J5X2l0ZW0nKSA6ICRlbC5jbG9zZXN0KCdzYnlfcGxheWVyX2l0ZW0nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkdGFyZ2VFbC5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGFyZ2VFbC5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGVsLmhhc0NsYXNzKCdzYl95b3V0dWJlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlbC5maW5kKCcuc2J5X2l0ZW0nKS5maXJzdCgpLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS12aWRlby1pZCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJCh0aGlzLmVsKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmZpcnN0KCkubGVuZ3RoICYmIHR5cGVvZiAkKHRoaXMuZWwpLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuZmlyc3QoKS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgIT09ICd1bmRlZmluZWQnKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQodGhpcy5lbCkuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5maXJzdCgpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldEF2YXRhclVybDogZnVuY3Rpb24gKHVzZXJuYW1lLGZhdm9yVHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh1c2VybmFtZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBhdmFpbGFibGVBdmF0YXJzID0gdGhpcy5zZXR0aW5ncy5nZW5lcmFsLmF2YXRhcnMsXG4gICAgICAgICAgICAgICAgICBmYXZvclR5cGUgPSB0eXBlb2YgZmF2b3JUeXBlICE9PSAndW5kZWZpbmVkJyA/IGZhdm9yVHlwZSA6ICdsb2NhbCc7XG5cbiAgICAgICAgICAgICAgICBpZiAoZmF2b3JUeXBlID09PSAnbG9jYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXZhaWxhYmxlQXZhdGFyc1snTENMJyt1c2VybmFtZV0gIT09ICd1bmRlZmluZWQnICYmIHBhcnNlSW50KGF2YWlsYWJsZUF2YXRhcnNbJ0xDTCcrdXNlcm5hbWVdKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNieU9wdGlvbnMucmVzaXplZF91cmwgKyB1c2VybmFtZSArICcuanBnJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXZhaWxhYmxlQXZhdGFyc1t1c2VybmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlQXZhdGFyc1t1c2VybmFtZV07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGF2YWlsYWJsZUF2YXRhcnNbdXNlcm5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUF2YXRhcnNbdXNlcm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhdmFpbGFibGVBdmF0YXJzWydMQ0wnK3VzZXJuYW1lXSAhPT0gJ3VuZGVmaW5lZCcgJiYgcGFyc2VJbnQoYXZhaWxhYmxlQXZhdGFyc1snTENMJyt1c2VybmFtZV0pID09PSAxKSAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNieU9wdGlvbnMucmVzaXplZF91cmwgKyB1c2VybmFtZSArICcuanBnJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZGRUb05lZWRzUmVzaXppbmc6IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5lZWRzUmVzaXppbmcuaW5kZXhPZihpZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmVlZHNSZXNpemluZy5wdXNoKGlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBwbHlJbWFnZUxpcXVpZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBzYnlBZGRJbWdMaXF1aWQoKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mICRzZWxmLmZpbmQoXCIuc2J5X3BsYXllcl9pdGVtXCIpLnNieV9pbWdMaXF1aWQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfaXRlbScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZChcIi5zYnlfcGxheWVyX2l0ZW0gLnNieV9wbGF5ZXJfdmlkZW9fdGh1bWJuYWlsXCIpLnNieV9pbWdMaXF1aWQoe2ZpbGw6IHRydWV9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKFwiLnNieV9pdGVtIC5zYnlfaXRlbV92aWRlb190aHVtYm5haWxcIikuc2J5X2ltZ0xpcXVpZCh7ZmlsbDogdHJ1ZX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaXN0ZW5Gb3JWaXNpYmlsaXR5Q2hhbmdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgc2J5QWRkVmlzaWJpbGl0eUxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkKHRoaXMuZWwpLmZpbHRlcignOmhpZGRlbicpLnNieVZpc2liaWxpdHlDaGFuZ2VkID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9JZiB0aGUgZmVlZCBpcyBpbml0aWFsbHkgaGlkZGVuIChpbiBhIHRhYiBmb3IgZXhhbXBsZSkgdGhlbiBjaGVjayBmb3Igd2hlbiBpdCBiZWNvbWVzIHZpc2libGUgYW5kIHNldCB0aGVuIHNldCB0aGUgaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICQodGhpcy5lbCkuZmlsdGVyKCc6aGlkZGVuJykuc2J5VmlzaWJpbGl0eUNoYW5nZWQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChlbGVtZW50LCB2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hZnRlclJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk9uTG9hZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENvbHVtbkNvdW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMuZWwpLFxuICAgICAgICAgICAgICAgICAgY29scyA9IHRoaXMuc2V0dGluZ3MuY29scyxcbiAgICAgICAgICAgICAgICAgIGNvbHNtb2JpbGUgPSB0aGlzLnNldHRpbmdzLmNvbHNtb2JpbGUsXG4gICAgICAgICAgICAgICAgICByZXR1cm5Db2xzID0gY29scztcblxuICAgICAgICAgICAgICAgIHNieVdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG5cbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9tb2JfY29sX2F1dG8nKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2J5V2luZG93V2lkdGggPCA2NDAgJiYgKHBhcnNlSW50KGNvbHMpID4gMiAmJiBwYXJzZUludChjb2xzKSA8IDcpKSByZXR1cm5Db2xzID0gMjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNieVdpbmRvd1dpZHRoIDwgNjQwICYmIChwYXJzZUludChjb2xzKSA+IDYgJiYgcGFyc2VJbnQoY29scykgPCAxMSkpIHJldHVybkNvbHMgPSA0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2J5V2luZG93V2lkdGggPD0gNDgwICYmIHBhcnNlSW50KGNvbHMpID4gMikgcmV0dXJuQ29scyA9IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzYnlXaW5kb3dXaWR0aCA8PSA0ODApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuQ29scyA9IGNvbHNtb2JpbGU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHJldHVybkNvbHMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVGh1bWJuYWlsQ2xpY2s6IGZ1bmN0aW9uKCRjbGlja2VkLGlzUGxheWVyLHZpZGVvSUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FuQ3JlYXRlUGxheWVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMuZWwpO1xuICAgICAgICAgICAgICAgIGlmICgkc2VsZi5oYXNDbGFzcygnc2J5X2xheW91dF9nYWxsZXJ5JykpIHtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9jdXJyZW50JykucmVtb3ZlQ2xhc3MoJ3NieV9jdXJyZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgICRjbGlja2VkLmNsb3Nlc3QoJy5zYnlfaXRlbScpLmFkZENsYXNzKCdzYnlfY3VycmVudCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICRjbGlja2VkLmNsb3Nlc3QoJy5zYnlfaXRlbScpLmFkZENsYXNzKCdzYnlfY3VycmVudCcpO1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5hZGRDbGFzcygnc2J5X3BsYXllcl9hZGRlZCcpLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5hZGRDbGFzcygnc2J5X3BsYXllcl9sb2FkaW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgLnNieV92aWRlb190aHVtYm5haWwnKS5maW5kKCcuc2J5X2xvYWRlcicpLnNob3coKS5yZW1vdmVDbGFzcygnc2J5X2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoISRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgaWZyYW1lJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQbGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBsYXllcignc2J5X3BsYXllcicrdGhpcy5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb0lEID0gdHlwZW9mIHZpZGVvSUQgPT09ICd1bmRlZmluZWQnID8gdGhpcy5nZXRWaWRlb0lEKCRjbGlja2VkLmNsb3Nlc3QoJy5zYnlfaXRlbScpKSA6IHZpZGVvSUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQbGF5ZXIoJ3NieV9wbGF5ZXInK3RoaXMuaW5kZXgsdmlkZW9JRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQbGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9JRCA9IHR5cGVvZiB2aWRlb0lEID09PSAndW5kZWZpbmVkJyA/IHRoaXMuZ2V0VmlkZW9JRCgkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5maXJzdCgpKSA6IHZpZGVvSUQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXlWaWRlb0luUGxheWVyKHZpZGVvSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9JRCA9IHR5cGVvZiB2aWRlb0lEID09PSAndW5kZWZpbmVkJyA/IHRoaXMuZ2V0VmlkZW9JRCgkY2xpY2tlZC5jbG9zZXN0KCcuc2J5X2l0ZW0nKSkgOiB2aWRlb0lEO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VQbGF5ZXJJbmZvKCRjbGlja2VkLmNsb3Nlc3QoJy5zYnlfaXRlbScpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXlWaWRlb0luUGxheWVyKHZpZGVvSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJWaWRlb0NoYW5nZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdhbGxlcnlQbGF5ZXJTdWJzY3JpYmVCdG4oJGNsaWNrZWQpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKHRoaXMuZWwpLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2dyaWQnKSB8fCAkKHRoaXMuZWwpLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2Nhcm91c2VsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRzYnlJdGVtID0gJGNsaWNrZWQuY2xvc2VzdCgnLnNieV9pdGVtJyksXG4gICAgICAgICAgICAgICAgICAgICAgdmlkZW9JRCA9IHR5cGVvZiB2aWRlb0lEID09PSAndW5kZWZpbmVkJyA/IHRoaXMuZ2V0VmlkZW9JRCgkc2J5SXRlbSkgOiB2aWRlb0lEO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXlWaWRlb0luUGxheWVyKHZpZGVvSUQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFmdGVyVmlkZW9DaGFuZ2VkKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKHRoaXMuZWwpLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2xpc3QnKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHNieUl0ZW0gPSAkY2xpY2tlZC5jbG9zZXN0KCcuc2J5X2l0ZW0nKSxcbiAgICAgICAgICAgICAgICAgICAgICB2aWRlb0lEID0gdHlwZW9mIHZpZGVvSUQgPT09ICd1bmRlZmluZWQnID8gdGhpcy5nZXRWaWRlb0lEKCRzYnlJdGVtKSA6IHZpZGVvSUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2J5SXRlbS5sZW5ndGggJiYgISRzYnlJdGVtLmZpbmQoJ2lmcmFtZScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNieUl0ZW0uZmluZCgnLnNieV9sb2FkZXInKS5zaG93KCkucmVtb3ZlQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzYnlJdGVtLmFkZENsYXNzKCdzYnlfcGxheWVyX2xvYWRpbmcgc2J5X3BsYXllcl9sb2FkZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGxheWVyKCdzYnlfcGxheWVyXycrdmlkZW9JRCx2aWRlb0lEKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheVZpZGVvSW5QbGF5ZXIodmlkZW9JRCwkc2J5SXRlbS5hdHRyKCdkYXRhLXZpZGVvLWlkJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZnRlclZpZGVvQ2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVGh1bWJuYWlsRW50ZXI6IGZ1bmN0aW9uKCRob3ZlcmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbkNyZWF0ZVBsYXllcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKTtcbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfbGlzdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkc2J5SXRlbSA9ICRob3ZlcmVkLmNsb3Nlc3QoJy5zYnlfaXRlbScpLFxuICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSUQgPSB0aGlzLmdldFZpZGVvSUQoJHNieUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoISRzYnlJdGVtLmZpbmQoJ2lmcmFtZScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNieUl0ZW0uZmluZCgnLnNieV9sb2FkZXInKS5zaG93KCkucmVtb3ZlQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzYnlJdGVtLmFkZENsYXNzKCdzYnlfcGxheWVyX2xvYWRpbmcgc2J5X3BsYXllcl9sb2FkZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGxheWVyKCdzYnlfcGxheWVyXycrdmlkZW9JRCx2aWRlb0lELDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVGh1bWJuYWlsTGVhdmU6IGZ1bmN0aW9uKCRob3ZlcmVkKSB7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2hhbmdlUGxheWVySW5mbzogZnVuY3Rpb24oJG5ld0l0ZW0pIHtcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYXllckVhZ2VyTG9hZGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucGxheWVyICE9PSAndW5kZWZpbmVkJyB8fCAkKHRoaXMuZWwpLmhhc0NsYXNzKCdzYnlfcGxheWVyX2xvYWRlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYW5DcmVhdGVQbGF5ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICgkKHRoaXMuZWwpLmZpbmQoJyNzYnlfYmxhbmsnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmNlbnRHaXZlbiA9IHRoaXMuc2V0dGluZ3MuY29uc2VudEdpdmVuXG5cbiAgICAgICAgICAgICAgICAvLyBGaXggZm9yIGVsZW1lbnRvciBidWlsZGVyIGZvciBsaXN0IHZpZXcuIFdoZXJlIHZpZGVvIHdvdWxkIG5vdCBsb2FkIG9uIGhvY2VyLlxuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRvckNoZWNrID0gd2luZG93LnNieS5mZWVkc1t0aGlzLmluZGV4XS5wbGF5ZXJBUElSZWFkeSAmJiBjb25jZW50R2l2ZW47XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wbGF5ZXJFYWdlckxvYWRlZCgpIHx8ICh0aGlzLnBsYXllckFQSVJlYWR5ICYmIGNvbmNlbnRHaXZlbikgfHwgKHdpbmRvdy5zYnlBUElSZWFkeSAmJiBjb25jZW50R2l2ZW4pIHx8IGVsZW1lbnRvckNoZWNrO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYXlWaWRlb0luUGxheWVyOiBmdW5jdGlvbih2aWRlb0lELHBsYXllcklEKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBsYXllciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHRoaXMucGxheWVyLmxvYWRWaWRlb0J5SWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLmxvYWRWaWRlb0J5SWQodmlkZW9JRCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93LnNieUxpZ2h0Ym94UGxheWVyICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgJiYgdHlwZW9mIHdpbmRvdy5zYnlMaWdodGJveFBsYXllci5sb2FkVmlkZW9CeUlkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5TGlnaHRib3hQbGF5ZXIubG9hZFZpZGVvQnlJZCh2aWRlb0lEKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwbGF5ZXJJRCAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiB0aGlzLnBsYXllcnMgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICAgICAgICAmJiB0eXBlb2YgdGhpcy5wbGF5ZXJzW3BsYXllcklEXSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiB0aGlzLnBsYXllcnNbcGxheWVySURdLmxvYWRWaWRlb0J5SWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyc1twbGF5ZXJJRF0ubG9hZFZpZGVvQnlJZCh2aWRlb0lEKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJWaWRlb0NoYW5nZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICgkKHRoaXMuZWwpLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2dhbGxlcnknKSkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMuZWwpLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5yZW1vdmVDbGFzcygnc2J5X3BsYXllcl9sb2FkaW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcy5lbCkuZmluZCgnLnNieV9wbGF5ZXJfb3V0ZXJfd3JhcCAuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmZpbmQoJy5zYnlfbG9hZGVyJykuaGlkZSgpLmFkZENsYXNzKCdzYnlfaGlkZGVuJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAkKHRoaXMuZWwpLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5vZmZzZXQoKS50b3BcbiAgICAgICAgICAgICAgICAgICAgfSwgMzAwKTtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGRhdGVHYWxsZXJ5UGxheWVyU3Vic2NyaWJlQnRuOiBmdW5jdGlvbigkY2xpY2tlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1VUkwgPSAkY2xpY2tlZC5hdHRyKCdocmVmJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSAvY2hhbm5lbFxcLyguKikkLztcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGl0ZW1VUkwubWF0Y2gocmVnZXgpO1xuICAgICAgICAgICAgICAgIGlmICggISBtYXRjaCApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjaGFubmVsSWQgPSBtYXRjaFsxXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpYmVCdG5VUkwgPSAnaHR0cDovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsLycrIGNoYW5uZWxJZCArJz9zdWJfY29uZmlybWF0aW9uPTEmZmVhdHVyZT1zdWJzY3JpYmUtZW1iZWQtY2xpY2snO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICQoJy5zYnktY2hhbm5lbC1zdWJzY3JpYmUtYnRuIGEnKS5hdHRyKCdocmVmJywgc3Vic2NyaWJlQnRuVVJMKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGVja0NvbnNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmNvbnNlbnRHaXZlbiB8fCAhdGhpcy5zZXR0aW5ncy5nZHByKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mubm9DRE4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQ0xJX0Nvb2tpZSAhPT0gXCJ1bmRlZmluZWRcIikgeyAvLyBHRFBSIENvb2tpZSBDb25zZW50IGJ5IFdlYlRvZmZlZVxuICAgICAgICAgICAgICAgICAgICBpZiAoQ0xJX0Nvb2tpZS5yZWFkKENMSV9BQ0NFUFRfQ09PS0lFX05BTUUpICE9PSBudWxsKSAge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZWJUb2ZmZWUgbm8gbG9uZ2VyIHVzZXMgdGhpcyBjb29raWUgYnV0IGJlaW5nIGxlZnQgaGVyZSB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENMSV9Db29raWUucmVhZCgnY29va2llbGF3aW5mby1jaGVja2JveC1ub24tbmVjZXNzYXJ5JykgIT09ICdudWxsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuY29uc2VudEdpdmVuID0gQ0xJX0Nvb2tpZS5yZWFkKCdjb29raWVsYXdpbmZvLWNoZWNrYm94LW5vbi1uZWNlc3NhcnknKSA9PT0gJ3llcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDTElfQ29va2llLnJlYWQoJ2Nvb2tpZWxhd2luZm8tY2hlY2tib3gtbmVjZXNzYXJ5JykgIT09ICdudWxsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuY29uc2VudEdpdmVuID0gQ0xJX0Nvb2tpZS5yZWFkKCdjb29raWVsYXdpbmZvLWNoZWNrYm94LW5lY2Vzc2FyeScpID09PSAneWVzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93LmNuQXJncyAhPT0gXCJ1bmRlZmluZWRcIikgeyAvLyBDb29raWUgTm90aWNlIGJ5IGRGYWN0b3J5XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IFwiOyBcIiArIGRvY3VtZW50LmNvb2tpZSxcbiAgICAgICAgICAgICAgICAgICAgICBwYXJ0cyA9IHZhbHVlLnNwbGl0KCAnOyBjb29raWVfbm90aWNlX2FjY2VwdGVkPScgKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIHBhcnRzLmxlbmd0aCA9PT0gMiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBwYXJ0cy5wb3AoKS5zcGxpdCggJzsnICkuc2hpZnQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5jb25zZW50R2l2ZW4gPSAodmFsID09PSAndHJ1ZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93LmNvbXBsaWFueiAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gQ29tcGxpYW56IGJ5IFJlYWxseSBTaW1wbGUgUGx1Z2luc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzLmNvbnNlbnRHaXZlbiA9ICggc2J5Q21wbHpHZXRDb29raWUoJ2NtcGx6X21hcmtldGluZycpID09PSAnYWxsb3cnIHx8IGpRdWVyeSgnYm9keScpLmhhc0NsYXNzKCdjbXBsei1zdGF0dXMtbWFya2V0aW5nJykgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cuQ29va2llYm90ICE9PSBcInVuZGVmaW5lZFwiKSB7IC8vIENvb2tpZWJvdCBieSBDeWJvdCBBL1NcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5jb25zZW50R2l2ZW4gPSBDb29raWVib3QuY29uc2VudGVkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdy5Cb3JsYWJzQ29va2llICE9PSAndW5kZWZpbmVkJykgeyAvLyBCb3JsYWJzIENvb2tpZSBieSBCb3JsYWJzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuY29uc2VudEdpdmVuID0gdHlwZW9mIHdpbmRvdy5Cb3JsYWJzQ29va2llLkNvbnNlbnRzICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5Cb3JsYWJzQ29va2llLkNvbnNlbnRzLmhhc0NvbnNlbnQoJ3lvdXR1YmUnKSA6IHdpbmRvdy5Cb3JsYWJzQ29va2llLmNoZWNrQ29va2llQ29uc2VudCgneW91dHViZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ3NieWNoZWNrY29uc2VudCcpO1xuICAgICAgICAgICAgICAgIGV2dC5mZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBqUXVlcnkod2luZG93KS50cmlnZ2VyKGV2dCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5jb25zZW50R2l2ZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5ub0NETiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmNvbnNlbnRHaXZlbjsgLy8gR0RQUiBub3QgZW5hYmxlZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVyQ29uc2VudFRvZ2dsZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrQ29uc2VudCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS5tYXliZUFkZFlUQVBJKCk7XG4gICAgICAgICAgICAgICAgICAgIGZlZWQubWF5YmVSYWlzZUltYWdlUmVzb2x1dGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBmZWVkLmFwcGx5RnVsbEZlYXR1cmVzKCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmFmdGVyUmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sNTAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVtb3ZlRmVhdHVyZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoZmVlZC5zZXR0aW5ncy5ub0NETikge1xuICAgICAgICAgICAgICAgICAgICAkKGZlZWQuZWwpLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQXR0cignZGF0YS1zYnktbGlnaHRib3gnKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFwcGx5RnVsbEZlYXR1cmVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmVlZCA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICAkKGZlZWQuZWwpLmZpbmQoJy5zYnlfaGVhZGVyX2ltZyBpbWcnKS5hdHRyKCdzcmMnLCQoZmVlZC5lbCkuZmluZCgnLnNieV9oZWFkZXJfaW1nJykuYXR0cignZGF0YS1hdmF0YXItdXJsJykpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgJChmZWVkLmVsKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmZpcnN0KCkuYXR0cignZGF0YS1zYnktbGlnaHRib3gnKSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmIGZlZWQuc2V0dGluZ3MubGlnaHRib3hFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICQoZmVlZC5lbCkuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdkYXRhLXNieS1saWdodGJveCcsZmVlZC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKGZlZWQuZWwpO1xuICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfbm9fY29uc2VudCcpLnJlbW92ZUNsYXNzKCdzYnlfbm9fY29uc2VudCcpO1xuICAgICAgICAgICAgICAgIGlmICgkc2VsZi5oYXNDbGFzcygnc2J5X2xheW91dF9nYWxsZXJ5JykgJiYgJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfb3V0ZXJfd3JhcCcpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heWJlUmFpc2VTaW5nbGVJbWFnZVJlc29sdXRpb24oJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfb3V0ZXJfd3JhcCcpLCAwLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZmlyc3QoKS5hZGRDbGFzcygnc2J5X2N1cnJlbnQnKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZlZWQuY2FuQ3JlYXRlUGxheWVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoISRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgaWZyYW1lJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmNyZWF0ZVBsYXllcignc2J5X3BsYXllcicrZmVlZC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2NhdGlvbkd1ZXNzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgJGZlZWQgPSAkKHRoaXMuZWwpLFxuICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSAnY29udGVudCc7XG5cbiAgICAgICAgICAgICAgICBpZiAoJGZlZWQuY2xvc2VzdCgnZm9vdGVyJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gJ2Zvb3Rlcic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmVlZC5jbG9zZXN0KCcuaGVhZGVyJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgICB8fCAkZmVlZC5jbG9zZXN0KCdoZWFkZXInKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSAnaGVhZGVyJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmZWVkLmNsb3Nlc3QoJy5zaWRlYmFyJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgICB8fCAkZmVlZC5jbG9zZXN0KCdhc2lkZScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiA9ICdzaWRlYmFyJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gU2J5RmVlZFBybyhlbCwgaW5kZXgsIHNldHRpbmdzKSB7XG4gICAgICAgICAgICBTYnlGZWVkLmNhbGwodGhpcywgZWwsIGluZGV4LCBzZXR0aW5ncyk7XG5cbiAgICAgICAgICAgIHRoaXMuQ1RBID0ge307XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdExheW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEdhbGxlcnlMYXlvdXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRHcmlkKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmluaXRDYXJvdXNlbHMoKTtcbiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdzYnlhZnRlcmxheW91dGluaXQnKTtcbiAgICAgICAgICAgICAgICBldnQuZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykudHJpZ2dlcihldnQpO1xuICAgICAgICAgICAgICAgIG9wZW5Db21tZW50cygpOyBcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdEdyaWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LnNieVNlbWlFYWdlckxvYWRpbmcgJiYgalF1ZXJ5KCcjc2J5X2xpZ2h0Ym94JykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgcGxheWVySUQgPSAnc2J5X2xiLXBsYXllcic7XG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3NieV9saWdodGJveCcpLmFkZENsYXNzKCdzYnlfdmlkZW9fbGlnaHRib3gnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCAhIHdpbmRvdy5zYnlPcHRpb25zLmlzUHJvICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjc2J5X2xpZ2h0Ym94JykuYWRkQ2xhc3MoJ3NieV9saWdodGJveF9mcmVlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9JRCA9ICQodGhpcy5lbCkuZmluZCgnc2J5X2l0ZW0nKS5maXJzdCgpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSxcbiAgICAgICAgICAgICAgICAgICAgICBhdXRvcGxheSA9IHNieU9wdGlvbnMuYXV0b3BsYXk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93LnNieUxpZ2h0Ym94UGxheWVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdDogd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgZmVlZC5lbWJlZFVSTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0lkOiB2aWRlb0lELFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllclZhcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXN0YnJhbmRpbmc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXk6IGF1dG9wbGF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uU3RhdGVDaGFuZ2UnOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvSUQgPSBkYXRhLnRhcmdldC5nZXRWaWRlb0RhdGEoKVsndmlkZW9faWQnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJTdGF0ZUNoYW5nZShwbGF5ZXJJRCwgdmlkZW9JRCwgZGF0YSwgJCgnIycgKyBwbGF5ZXJJRCkuY2xvc2VzdCgnLnNieV92aWRlb190aHVtYm5haWxfd3JhcCcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkLm1heWJlQWRkQ1RBKHBsYXllcklEKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieUxpZ2h0Ym94UGxheWVyID0gbmV3IHdpbmRvdy5ZVC5QbGF5ZXIocGxheWVySUQsIGFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5pbml0Q2Fyb3VzZWxzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZlZWQgPSB0aGlzLFxuICAgICAgICAgICAgICAgICAgJHNlbGYgPSAkKHRoaXMuZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNldHRpbmdzLmdlbmVyYWwuY2Fyb3VzZWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGNvbHMgPSB0aGlzLnNldHRpbmdzLmNvbHMsXG4gICAgICAgICAgICAgICAgICBjb2xzbW9iaWxlID0gdGhpcy5zZXR0aW5ncy5jb2xzbW9iaWxlO1xuXG4gICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtc193cmFwJykuYWRkQ2xhc3MoJ3NieV9jYXJvdXNlbCcpO1xuICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfbG9hZF9idG4nKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAncGFkZGluZy10b3AnIDogJHNlbGYuZmluZCgnLnNieV9pdGVtc193cmFwJykuY3NzKCdwYWRkaW5nLXRvcCcpLFxuICAgICAgICAgICAgICAgICAgICAncGFkZGluZy1yaWdodCcgOiAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAnKS5jc3MoJ3BhZGRpbmctdG9wJyksXG4gICAgICAgICAgICAgICAgICAgICdwYWRkaW5nLWJvdHRvbScgOiAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAnKS5jc3MoJ3BhZGRpbmctdG9wJyksXG4gICAgICAgICAgICAgICAgICAgICdwYWRkaW5nLWxlZnQnIDogJHNlbGYuZmluZCgnLnNieV9pdGVtc193cmFwJykuY3NzKCdwYWRkaW5nLXRvcCcpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzdHlsZScsJCh0aGlzKS5hdHRyKCdzdHlsZScpLnJlcGxhY2UoJ3BhZGRpbmc6ICcrJHNlbGYuZmluZCgnLnNieV9pdGVtc193cmFwJykuY3NzKCdwYWRkaW5nLXRvcCcpLCdwYWRkaW5nOiAnKyRzZWxmLmZpbmQoJy5zYnlfaXRlbXNfd3JhcCcpLmNzcygncGFkZGluZy10b3AnKSArICcgIWltcG9ydGFudCcpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHZhciBhcnJvd3MgPSBmZWVkLnNldHRpbmdzLmdlbmVyYWwuY2Fyb3VzZWxbMF0sXG4gICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uID0gZmVlZC5zZXR0aW5ncy5nZW5lcmFsLmNhcm91c2VsWzFdLFxuICAgICAgICAgICAgICAgICAgYXV0b3BsYXkgPSBmZWVkLnNldHRpbmdzLmdlbmVyYWwuY2Fyb3VzZWxbMl0sXG4gICAgICAgICAgICAgICAgICB0aW1lID0gZmVlZC5zZXR0aW5ncy5nZW5lcmFsLmNhcm91c2VsWzNdLFxuICAgICAgICAgICAgICAgICAgbG9vcCA9IGZlZWQuc2V0dGluZ3MuZ2VuZXJhbC5jYXJvdXNlbFs0XSxcbiAgICAgICAgICAgICAgICAgIHJvd3MgPSBmZWVkLnNldHRpbmdzLmdlbmVyYWwuY2Fyb3VzZWxbNV07XG4gICAgICAgICAgICAgICAgLy9Jbml0aWF0ZSBjYXJvdXNlbFxuICAgICAgICAgICAgICAgIGlmKCAhYXV0b3BsYXkgKSB0aW1lID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAvL1NldCBkZWZhdWx0cyBmb3IgcmVzcG9uc2l2ZSBicmVha3BvaW50c1xuICAgICAgICAgICAgICAgIHZhciBpdGVtc1RhYmxldFNtYWxsID0gY29scyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zTW9iaWxlID0gY29scyxcbiAgICAgICAgICAgICAgICAgIGFycm93cyA9IGFycm93cyA/ICdvbmhvdmVyJyA6ICdoaWRlJyxcbiAgICAgICAgICAgICAgICAgIGF1dG9wbGF5ID0gdGltZSAhPT0gZmFsc2UsXG4gICAgICAgICAgICAgICAgICBoYXMycm93cyA9IChyb3dzID09IDIpLFxuICAgICAgICAgICAgICAgICAgbG9vcCA9ICghbG9vcCksXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hZnRlclJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGFmdGVySW5pdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9IGpRdWVyeShmZWVkLmVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAuc2J5X2Nhcm91c2VsJykuZmFkZUluKCk7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAuc2J5X2Nhcm91c2VsIC5zYnlfaW5mbywgLnNieV9vd2wycm93LWl0ZW0sLnNieV9pdGVtc193cmFwLnNieV9jYXJvdXNlbCcpLmZhZGVJbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgfSwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyICRuYXZFbGVtZW50c1dyYXBwZXIgPSAkc2VsZi5maW5kKCcuc2J5LW93bC1uYXYnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFycm93cyA9PT0gJ29uaG92ZXInKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcnJvd3MgPT09ICdiZWxvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkZG90cyA9ICRzZWxmLmZpbmQoJy5zYnktb3dsLWRvdHMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByZXYgPSAkc2VsZi5maW5kKCcuc2J5LW93bC1wcmV2JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXh0ID0gJHNlbGYuZmluZCgnLnNieS1vd2wtbmV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmF2ID0gJHNlbGYuZmluZCgnLnNieS1vd2wtbmF2JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkb3QgPSAkc2VsZi5maW5kKCcuc2J5LW93bC1kb3QnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhEb3RzID0gJGRvdC5sZW5ndGggKiAkZG90LmlubmVyV2lkdGgoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGggPSAkc2VsZi5pbm5lcldpZHRoKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcmV2LmFmdGVyKCRkb3RzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hdi5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV4dC5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJykuY3NzKCd0b3AnLCAnLTZweCcpLmNzcygncmlnaHQnLCBNYXRoLm1heCgoLjUgKiAkbmF2LmlubmVyV2lkdGgoKSAtIC41ICogKHdpZHRoRG90cykgLSAkbmV4dC5pbm5lcldpZHRoKCkgLSA2KSwgMCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByZXYuY3NzKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpLmNzcygndG9wJywgJy02cHgnKS5jc3MoJ2xlZnQnLCBNYXRoLm1heCgoLjUgKiAkbmF2LmlubmVyV2lkdGgoKSAtIC41ICogKHdpZHRoRG90cykgLSAkcHJldi5pbm5lcldpZHRoKCkgLSA2KSwgMCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFycm93cyA9PT0gJ2hpZGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmF2RWxlbWVudHNXcmFwcGVyLmFkZENsYXNzKCdoaWRlJykuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvL0Rpc2FibGUgbW9iaWxlIGxheW91dFxuICAgICAgICAgICAgICAgIGlmKCAkc2VsZi5oYXNDbGFzcygnc2J5X21vYl9jb2xfYXV0bycpICkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtc1RhYmxldFNtYWxsID0gMjtcbiAgICAgICAgICAgICAgICAgICAgaWYoIHBhcnNlSW50KGNvbHMpICE9IDIgKSBpdGVtc01vYmlsZSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGlmKCBwYXJzZUludChjb2xzKSA9PSAyICkgaXRlbXNNb2JpbGUgPSAyOyAvL0lmIHRoZSBjb2xzIGFyZSBzZXQgdG8gMiB0aGVuIGRvbid0IGNoYW5nZSB0byAxIGNvbCBvbiBtb2JpbGVcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpdGVtc01vYmlsZSA9IGNvbHNtb2JpbGU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJvdXNlbEFyZ3MgPSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBjb2xzLFxuICAgICAgICAgICAgICAgICAgICBsb29wOiBsb29wLFxuICAgICAgICAgICAgICAgICAgICByZXdpbmQ6ICFsb29wLFxuICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogYXV0b3BsYXksXG4gICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5VGltZW91dDogTWF0aC5tYXgodGltZSwyMDAwKSxcbiAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXlIb3ZlclBhdXNlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBuYXY6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG5hdlRleHQ6IFsnPHN2ZyBjbGFzcz1cInN2Zy1pbmxpbmUtLWZhIGZhLWNoZXZyb24tbGVmdCBmYS13LTEwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1mYS1wcm9jZXNzZWQ9XCJcIiBkYXRhLXByZWZpeD1cImZhXCIgZGF0YS1pY29uPVwiY2hldnJvbi1sZWZ0XCIgcm9sZT1cInByZXNlbnRhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDMyMCA1MTJcIj48cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0zNC41MiAyMzkuMDNMMjI4Ljg3IDQ0LjY5YzkuMzctOS4zNyAyNC41Ny05LjM3IDMzLjk0IDBsMjIuNjcgMjIuNjdjOS4zNiA5LjM2IDkuMzcgMjQuNTIuMDQgMzMuOUwxMzEuNDkgMjU2bDE1NC4wMiAxNTQuNzVjOS4zNCA5LjM4IDkuMzIgMjQuNTQtLjA0IDMzLjlsLTIyLjY3IDIyLjY3Yy05LjM3IDkuMzctMjQuNTcgOS4zNy0zMy45NCAwTDM0LjUyIDI3Mi45N2MtOS4zNy05LjM3LTkuMzctMjQuNTcgMC0zMy45NHpcIj48L3BhdGg+PC9zdmc+JywgJzxzdmcgY2xhc3M9XCJzdmctaW5saW5lLS1mYSBmYS1jaGV2cm9uLXJpZ2h0IGZhLXctMTBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBkYXRhLWZhLXByb2Nlc3NlZD1cIlwiIGRhdGEtcHJlZml4PVwiZmFcIiBkYXRhLWljb249XCJjaGV2cm9uLXJpZ2h0XCIgcm9sZT1cInByZXNlbnRhdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDMyMCA1MTJcIj48cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0yODUuNDc2IDI3Mi45NzFMOTEuMTMyIDQ2Ny4zMTRjLTkuMzczIDkuMzczLTI0LjU2OSA5LjM3My0zMy45NDEgMGwtMjIuNjY3LTIyLjY2N2MtOS4zNTctOS4zNTctOS4zNzUtMjQuNTIyLS4wNC0zMy45MDFMMTg4LjUwNSAyNTYgMzQuNDg0IDEwMS4yNTVjLTkuMzM1LTkuMzc5LTkuMzE3LTI0LjU0NC4wNC0zMy45MDFsMjIuNjY3LTIyLjY2N2M5LjM3My05LjM3MyAyNC41NjktOS4zNzMgMzMuOTQxIDBMMjg1LjQ3NSAyMzkuMDNjOS4zNzMgOS4zNzIgOS4zNzMgMjQuNTY4LjAwMSAzMy45NDF6XCI+PC9wYXRoPjwvc3ZnPiddLFxuICAgICAgICAgICAgICAgICAgICBkb3RzOiBwYWdpbmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICBvd2wycm93OiBoYXMycm93cyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2l2ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgMDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBpdGVtc01vYmlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDQ4MDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBpdGVtc1RhYmxldFNtYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgNjQwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IGNvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICAgICAgICAgICAgICAgICAgICBvbkluaXRpYWxpemU6IGFmdGVySW5pdFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuc3RyaXBFbW9qaWh0bWwgPSBmdW5jdGlvbiAoJGVsKSB7XG4gICAgICAgICAgICAgICAgJGVsLmZpbmQoJy5lbW9qaScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykucmVwbGFjZVdpdGgoJCh0aGlzKS5hdHRyKCdhbHQnKSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJGVsLmh0bWwoKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJJdGVtUmV2ZWFsZWQgPSBmdW5jdGlvbigkaXRlbSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICgkaXRlbS5maW5kKCcuc2J5X2NhcHRpb24nKS5sZW5ndGggJiYgISAkaXRlbS5maW5kKCcuc2J5X2NhcHRpb24nKS5oYXNDbGFzcygnc2J5X2Z1bGxfY2FwdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vRXhwYW5kIHBvc3RcbiAgICAgICAgICAgICAgICAgICAgdmFyICRjYXB0aW9uID0gJGl0ZW0uZmluZCgnLnNieV9pdGVtX2NhcHRpb25fd3JhcCAuc2J5X2NhcHRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICAkaG92ZXJDYXB0aW9uID0gJGl0ZW0uZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCAuc2J5X2NhcHRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0X2xpbWl0ID0gdHlwZW9mIGZlZWQuc2V0dGluZ3MuZ2VuZXJhbC5kZXNjcmlwdGlvbmxlbmd0aCAhPT0gJ3VuZGVmaW5lZCcgPyBwYXJzZUludChmZWVkLnNldHRpbmdzLmdlbmVyYWwuZGVzY3JpcHRpb25sZW5ndGgpIDogMTUwO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGV4dF9saW1pdCA8IDEpIHRleHRfbGltaXQgPSA5OTk5OTtcbiAgICAgICAgICAgICAgICAgICAgLy9TZXQgdGhlIGZ1bGwgdGV4dCB0byBiZSB0aGUgY2FwdGlvbiAodXNlZCBpbiB0aGUgaW1hZ2UgYWx0KVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjYXB0aW9uVGV4dCA9IHRoaXMuc3RyaXBFbW9qaWh0bWwoJGl0ZW0uZmluZCgnLnNieV9jYXB0aW9uJykuZmlyc3QoKSksXG4gICAgICAgICAgICAgICAgICAgICAgYnJDb3VudCA9IChjYXB0aW9uVGV4dC5tYXRjaCgvPGJyPi9nKSB8fCBbXSkubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgIGJyQWRqdXN0ID0gKHR5cGVvZiBzYnlPcHRpb25zLmJyQWRqdXN0ID09PSAndW5kZWZpbmVkJyB8fCBzYnlPcHRpb25zLmJyQWRqdXN0ID09PSAnMScgfHwgc2J5T3B0aW9ucy5ickFkanVzdCA9PT0gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gY29tbWVudCBvdXQgdW5uZWNlc3NhcnkgY29kZSB0aGF0IHN0cmlwZXMgb3V0IHRleHQgbGltaXQgd2l0aCB3cm9uZyB0ZXh0IGxpbWl0XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlcGxhY2UgZW1vamkgd2l0aCBhbHQgZm9yIG1vcmUgYWNjdXJhdGUgc2hvcnRlbmluZ1xuLy8gICAgICAgICAgICAgICAgICAgICBpZiAoYnJBZGp1c3QgJiYgYnJDb3VudCA+IDAgJiYgY2FwdGlvblRleHQuaW5kZXhPZignPGJyPicpIDwgdGV4dF9saW1pdCkge1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgdmFyICRzaXppbmdDYXB0aW9uID0gJGl0ZW0uZmluZCgnLnNieV92aWRlb190aXRsZScpLmZpcnN0KCk7XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uV2lkdGggPSAkc2l6aW5nQ2FwdGlvbi53aWR0aCgpID4gMjAgPyAkc2l6aW5nQ2FwdGlvbi53aWR0aCgpIDogJGl0ZW0ud2lkdGgoKSxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemUgPSAkc2l6aW5nQ2FwdGlvbi5jc3MoJ2ZvbnQtc2l6ZScpLFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzUGVyTGluZSA9IGNhcHRpb25XaWR0aCAvIHBhcnNlSW50KGZvbnRTaXplKSAqIDEuODUsXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heENoYXJzUGVyTGluZSA9IE1hdGguZmxvb3IoY2hhcmFjdGVyc1BlckxpbmUpLFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0ZWRNYXhMaW5lcyA9IE1hdGguY2VpbCh0ZXh0X2xpbWl0IC8gY2hhcmFjdGVyc1BlckxpbmUpO1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNwbGl0Q2FwdGlvbiA9IGNhcHRpb25UZXh0LnNwbGl0KCc8YnI+JyksXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzQ29uc3VtZWQgPSAwLFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFRleHRMaW1pdCA9IDA7XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChzcGxpdENhcHRpb24sIGZ1bmN0aW9uICgpIHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGluZXNMZWZ0ID0gcHJvamVjdGVkTWF4TGluZXMgLSBsaW5lc0NvbnN1bWVkO1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lc0xlZnQgPiAwKSB7XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aGlzTGluZXNDb25zdW1lZCA9IE1hdGgubWF4KDEsIE1hdGguY2VpbCh0aGlzLmxlbmd0aCAvIGNoYXJhY3RlcnNQZXJMaW5lKSk7XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkanVzdGVkVGV4dExpbWl0ICs9IE1hdGgubWluKHRoaXMubGVuZ3RoICsgNCwgbGluZXNMZWZ0ICogbWF4Q2hhcnNQZXJMaW5lKTtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNDb25zdW1lZCArPSB0aGlzTGluZXNDb25zdW1lZDtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfbGltaXQgPSBhZGp1c3RlZFRleHRMaW1pdDtcbi8vICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgc2hvcnRfdGV4dCA9IGNhcHRpb25UZXh0LnN1YnN0cmluZygwLCB0ZXh0X2xpbWl0KTtcbiAgICAgICAgICAgICAgICAgICAgc2hvcnRfdGV4dCA9IGNhcHRpb25UZXh0Lmxlbmd0aCA+IHRleHRfbGltaXQgPyBzaG9ydF90ZXh0LnN1YnN0cigwLCBNYXRoLm1pbihzaG9ydF90ZXh0Lmxlbmd0aCwgc2hvcnRfdGV4dC5sYXN0SW5kZXhPZihcIiBcIikpKSA6IHNob3J0X3RleHQ7XG5cblxuICAgICAgICAgICAgICAgICAgICAvL0N1dCB0aGUgdGV4dCBiYXNlZCBvbiBsaW1pdHMgc2V0XG4gICAgICAgICAgICAgICAgICAgIGlmICgkY2FwdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRjYXB0aW9uLmh0bWwoc2J5TGlua2lmeShzaG9ydF90ZXh0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hvcnRfdGV4dCA9PT0gY2FwdGlvblRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2FwdGlvbi5uZXh0KCcuc2J5X2V4cGFuZCcpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgkaG92ZXJDYXB0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhvdmVyQ2FwdGlvblRleHQgPSBzaG9ydF90ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNob3J0X3RleHQgIT09IGNhcHRpb25UZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJDYXB0aW9uVGV4dCArPSAnPHNwYW4gY2xhc3M9XCJzYnlfbW9yZVwiPi4uLjwvc3Bhbj4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJGhvdmVyQ2FwdGlvbi5odG1sKGhvdmVyQ2FwdGlvblRleHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy9TaG93IHRoZSAnU2VlIE1vcmUnIGxpbmsgaWYgbmVlZGVkXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYXB0aW9uVGV4dC5sZW5ndGggPiB0ZXh0X2xpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCcuc2J5X2V4cGFuZCcpLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvL0NsaWNrIGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICRpdGVtLmZpbmQoJy5zYnlfZXhwYW5kIGEnKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkZXhwYW5kID0galF1ZXJ5KHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJGNhcHRpb24gPSB0eXBlb2YgJGNhcHRpb24gIT09ICd1bmRlZmluZWQnID8gJGNhcHRpb24gOiAkaXRlbS5maW5kKCcuc2J5X2luZm8gLnNieV9jYXB0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uVGV4dCA9IHR5cGVvZiBjYXB0aW9udGV4dCAhPT0gJ3VuZGVmaW5lZCcgPyBjYXB0aW9uVGV4dCA6IHNieUVuY29kZUlucHV0KCRpdGVtLmZpbmQoJy5zYnlfaXRlbV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXRpdGxlJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpdGVtLmhhc0NsYXNzKCdzYnlfY2FwdGlvbl9mdWxsJykgJiYgdHlwZW9mIHNob3J0X3RleHQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhcHRpb24uaHRtbChzaG9ydF90ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbS5yZW1vdmVDbGFzcygnc2J5X2NhcHRpb25fZnVsbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2FwdGlvbi5odG1sKHNieUxpbmtpZnkoY2FwdGlvblRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbS5hZGRDbGFzcygnc2J5X2NhcHRpb25fZnVsbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hZnRlclJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldFVwQ1RBKCRpdGVtKTtcblxuICAgICAgICAgICAgICAgIC8vUGhvdG8gbGlua3NcbiAgICAgICAgICAgICAgICAvL0lmIGxpZ2h0Ym94IGlzIGRpc2FibGVkXG4gICAgICAgICAgICAgICAgdmFyIGRpc2FibGVsaWdodGJveCA9IHR5cGVvZiBmZWVkLnNldHRpbmdzLmdlbmVyYWwuZGlzYWJsZWxpZ2h0Ym94ICE9PSAndW5kZWZpbmVkJyA/IGZlZWQuc2V0dGluZ3MuZ2VuZXJhbC5kaXNhYmxlbGlnaHRib3ggOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGNhcHRpb25saW5rcyA9IHR5cGVvZiBmZWVkLnNldHRpbmdzLmdlbmVyYWwuY2FwdGlvbmxpbmtzICE9PSAndW5kZWZpbmVkJyA/IGZlZWQuc2V0dGluZ3MuZ2VuZXJhbC5jYXB0aW9ubGlua3MgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiggZGlzYWJsZWxpZ2h0Ym94IHx8IGNhcHRpb25saW5rcyApe1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYXB0aW9ubGlua3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNieVVybERldGVjdCh0ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybFJlZ2V4ID0gL2h0dHBzPzpcXC9cXC8od3d3XFwuKT9bLWEtekEtWjAtOUA6JS5fXFwrfiM9XXsyLDI1Nn1cXC5bYS16XXsyLDZ9XFxiKFstYS16QS1aMC05QDolX1xcKy5+Iz8mLy89XSopL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQubWF0Y2godXJsUmVnZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2FwID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mICRpdGVtLmZpbmQoJ2ltZycpLmF0dHIoJ2FsdCcpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcCA9ICRpdGVtLmZpbmQoJ2ltZycpLmF0dHIoJ2FsdCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgJGl0ZW0uZmluZCgndmlkZW8nKS5hdHRyKCdhbHQnKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXAgPSAkaXRlbS5maW5kKCd2aWRlbycpLmF0dHIoJ2FsdCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gc2J5VXJsRGV0ZWN0KGNhcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCdhJykuYXR0cignaHJlZicsIHVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgJGl0ZW0uZmluZCgnLnNieV9saW5rJykuYWRkQ2xhc3MoJ3NieV9kaXNhYmxlX2xpZ2h0Ym94Jyk7XG4gICAgICAgICAgICAgICAgICAgIC8vSWYgbGlnaHRib3ggaXMgZW5hYmxlZCBhZGQgbGlnaHRib3ggbGlua3NcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciAkc2J5X3Bob3RvX3dyYXAgPSAkaXRlbS5maW5kKCcuc2J5X3Bob3RvX3dyYXAnKSxcbiAgICAgICAgICAgICAgICAgICAgICAkc2J5X2xpbmsgPSAkc2J5X3Bob3RvX3dyYXAuZmluZCgnLnNieV9saW5rJyk7XG4gICAgICAgICAgICAgICAgICAgIGZlZWRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZmZlY3Q6ICd0cnVlJ1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBpZihmZWVkT3B0aW9ucy5ob3ZlcmVmZmVjdCA9PSAnbm9uZScpe1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9sYXVuY2ggbGlnaHRib3ggb24gY2xpY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICRzYnlfbGluay5jc3MoJ2JhY2tncm91bmQnLCAnbm9uZScpLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzYnlfbGluay5maW5kKCcqJykuaGlkZSgpLmVuZCgpLmZpbmQoJy5zYnlfbGlua19hcmVhJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNieV9waG90b193cmFwLm9uKCdtb3VzZWVudGVyIG1vdXNlbGVhdmUnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGUudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb3VzZWVudGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLmFkZENsYXNzKCdzYnlfYW5pbWF0ZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vdXNlbGVhdmUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW0ucmVtb3ZlQ2xhc3MoJ3NieV9hbmltYXRlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgdmlkZW9JRCA9IHR5cGVvZiAkaXRlbS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgIT09ICd1bmRlZmluZWQnID8gJGl0ZW0uYXR0cignZGF0YS12aWRlby1pZCcpIDogJGl0ZW0uZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXZpZGVvLWlkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3N0UmVjZW50bHlMb2FkZWRQb3N0cy5wdXNoKHZpZGVvSUQpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5hZnRlckZlZWRTZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2Fyb3VzZWxBcmdzICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzLmVsKS5maW5kKCcuc2J5X2Nhcm91c2VsJykuc2J5T3dsQ2Fyb3VzZWwodGhpcy5jYXJvdXNlbEFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQodGhpcy5zZXR0aW5ncy5nZW5lcmFsLmNhcm91c2VsWzVdKSA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzLmVsKS5hZGRDbGFzcygnc2J5X2Nhcm91c2VsXzJfcm93Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuc2V0VXBDVEEgPSBmdW5jdGlvbigkaXRlbSx2aWRlb0lEKSB7XG4gICAgICAgICAgICAgICAgLy93aW5kb3cuc2J5LmN0YXNcblxuICAgICAgICAgICAgICAgIHZhciB2aWRlb0lEID0gdHlwZW9mIHZpZGVvSUQgIT09ICd1bmRlZmluZWQnID8gdmlkZW9JRCA6ICRpdGVtLmZpbmQoJy5zYnlfaXRlbV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXZpZGVvLWlkJyksXG4gICAgICAgICAgICAgICAgICB0ZXh0ID0gc2J5RW5jb2RlSW5wdXQodHlwZW9mICRpdGVtLmZpbmQoJy5zYnlfaXRlbV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXRpdGxlJykgIT09ICd1bmRlZmluZWQnID8gJGl0ZW0uZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdGl0bGUnKSA6ICcnKSxcbiAgICAgICAgICAgICAgICAgIGN0YUluQ2FwdGlvbiA9IHdpbmRvdy5zYnkuY3RhRGV0ZWN0KHRleHQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGN0YUluQ2FwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmN0YXNbdmlkZW9JRF0gPSBjdGFJbkNhcHRpb247XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS5jdGFzW3ZpZGVvSURdID0gdGhpcy5nZXREZWZhdWx0Q1RBKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5nZXREZWZhdWx0Q1RBID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2V0dGluZ3MuZ2VuZXJhbC5jdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc2V0dGluZ3MuZ2VuZXJhbC5jdGEudHlwZSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmdlbmVyYWwuY3RhLnR5cGUgPT09ICdsaW5rJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogJ2xpbmsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdGhpcy5zZXR0aW5ncy5nZW5lcmFsLmN0YS5kZWZhdWx0TGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnNldHRpbmdzLmdlbmVyYWwuY3RhLmRlZmF1bHRUZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogJ3JlbGF0ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWQ6IHRoaXMuc2V0dGluZ3MuZ2VuZXJhbC5jdGEuZGVmYXVsdFBvc3RzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5hZnRlclJlc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW1hZ2VIZWlnaHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEltYWdlUmVzb2x1dGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMubWF5YmVSYWlzZUltYWdlUmVzb2x1dGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW1hZ2VTaXplQ2xhc3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEFsbENUQURpbWVuc2lvbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNpemVQbGF5ZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNpemVJdGVtcygpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zZXRBbGxDVEFEaW1lbnNpb25zID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgJC5lYWNoKHRoaXMuQ1RBLCBmdW5jdGlvbihpbmRleCwgQ1RBT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChDVEFPYmouaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQ1RBT2JqLnNldENUQVN0eWxlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmFmdGVyU2VuZENoZWNrV1BQb3N0c1RvU2VydmVyID0gZnVuY3Rpb24ocmVzcG9uc2Upe1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCk7XG5cbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlWyAkKHRoaXMpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSBdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSByZXNwb25zZVsgJCh0aGlzKS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vc2J5X3ZpZXdzX2NvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5zYnlfdmlld19jb3VudCcpLnRleHQoZGF0YS5zYnlfdmlld19jb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5zYnlfY29tbWVudF9jb3VudCcpLnRleHQoZGF0YS5zYnlfY29tbWVudF9jb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5zYnlfbGlrZV9jb3VudCcpLnRleHQoZGF0YS5zYnlfbGlrZV9jb3VudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vU2V0IGZvciBhdHRyaWJ1dGVzIHRvby5cbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXZpZXdzJyxkYXRhLnNieV92aWV3X2NvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLWNvbW1lbnQtY291bnQnLCBkYXRhLnNieV9jb21tZW50X2NvdW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2J5X2xpdmVfYnJvYWRjYXN0LmJyb2FkY2FzdF90eXBlICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5zYnlfbHNfbWVzc2FnZScpLnRleHQoZGF0YS5zYnlfbGl2ZV9icm9hZGNhc3QubGl2ZV9zdHJlYW1pbmdfc3RyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5zYnlfZGF0ZScpLmh0bWwoZGF0YS5zYnlfbGl2ZV9icm9hZGNhc3QubGl2ZV9zdHJlYW1pbmdfZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuc2J5X2xpdmVfYnJvYWRjYXN0LmxpdmVfc3RyZWFtaW5nX3RpbWVzdGFtcCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2RhdGEtbGl2ZS1kYXRlJyxkYXRhLnNieV9saXZlX2Jyb2FkY2FzdC5saXZlX3N0cmVhbWluZ190aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLnNieV9kZXNjcmlwdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5zYnlfaXRlbV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXRpdGxlJywgc2J5RW5jb2RlSW5wdXQoZGF0YS5zYnlfZGVzY3JpcHRpb24pICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX2l0ZW0nKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlWyAkKHRoaXMpLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS12aWRlby1pZCcpIF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHJlc3BvbnNlWyAkKHRoaXMpLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS12aWRlby1pZCcpIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5zYnlfdmlld19jb3VudCcpLnRleHQoZGF0YS5zYnlfdmlld19jb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5zYnlfY29tbWVudF9jb3VudCcpLnRleHQoZGF0YS5zYnlfY29tbWVudF9jb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5zYnlfbGlrZV9jb3VudCcpLnRleHQoZGF0YS5zYnlfbGlrZV9jb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zYnlfbGl2ZV9icm9hZGNhc3QuYnJvYWRjYXN0X3R5cGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9sc19tZXNzYWdlJykudGV4dChkYXRhLnNieV9saXZlX2Jyb2FkY2FzdC5saXZlX3N0cmVhbWluZ19zdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9kYXRlJykuaHRtbChkYXRhLnNieV9saXZlX2Jyb2FkY2FzdC5saXZlX3N0cmVhbWluZ19kYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5zYnlfbGl2ZV9icm9hZGNhc3QubGl2ZV9zdHJlYW1pbmdfdGltZXN0YW1wICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignZGF0YS1saXZlLWRhdGUnLGRhdGEuc2J5X2xpdmVfYnJvYWRjYXN0LmxpdmVfc3RyZWFtaW5nX3RpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ3NieWFmdGVyY2hlY2twb3N0cycpO1xuICAgICAgICAgICAgICAgIGV2dC5mZWVkID0gd2luZG93LnNieS5mZWVkc1tpbmRleF07XG4gICAgICAgICAgICAgICAgZXZ0LnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykudHJpZ2dlcihldnQpO1xuXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmFmdGVyU3RhdGVDaGFuZ2UgPSBmdW5jdGlvbihwbGF5ZXJJRCx2aWRlb0lELGRhdGEsJHBsYXllcikge1xuICAgICAgICAgICAgICAgIHRoaXMuQ1RBW3BsYXllcklEXS50b2dnbGVDVEEodmlkZW9JRCxkYXRhLmRhdGEsJHBsYXllcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVBsYXllckluZm8gPSBmdW5jdGlvbigkbmV3SXRlbSkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCk7XG4gICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfaXRlbScpLmZpbmQoJy5zYnlfaW5mbycpLnJlcGxhY2VXaXRoKFxuICAgICAgICAgICAgICAgICAgJG5ld0l0ZW0uZmluZCgnLnNieV9pbmZvJykuY2xvbmUodHJ1ZSx0cnVlKVxuICAgICAgICAgICAgICAgICk7XG4gXG4gICAgICAgICAgICAgICAgY29uc3QgdmlkZW9UaXRsZSA9IGNoZWNrVmFsdWUoJG5ld0l0ZW0uYXR0cignZGF0YS12aWRlby10aXRsZScpKTtcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1B1Ymxpc2hEYXRhID0gY2hlY2tWYWx1ZSgkbmV3SXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtZm9ybWF0dGVkLXB1Ymxpc2hlZC1kYXRlJykpIDtcblxuICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnktcGxheWVyLWluZm8gLnNieS12aWRlby1oZWFkZXItaW5mbyAuc2J5LXZpZGVvLWluZm8taGVhZGVyIGg1JykudGV4dCggdmlkZW9UaXRsZSApO1xuICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnktcGxheWVyLWluZm8gLnNieS12aWRlby1oZWFkZXItbWV0YSAuc2J5LXZpZGVvLWRhdGUnKS50ZXh0KCB2aWRlb1B1Ymxpc2hEYXRhICk7XG5cbiAgICAgICAgICAgICAgICByZXNldENvbW1lbnRzKCRzZWxmKTtcbiAgICAgICAgICAgICAgICBvcGVuQ29tbWVudHMoKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMubWF5YmVBZGRDVEEgPSBmdW5jdGlvbihwbGF5ZXJJRCwkZWwpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuQ1RBW3BsYXllcklEXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DVEFbcGxheWVySURdID0gbmV3IFNieUNUQShwbGF5ZXJJRCx0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgU2J5RmVlZFByby5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNieUZlZWQucHJvdG90eXBlKTtcblxuICAgICAgICBmdW5jdGlvbiBTYnlMaWdodGJveEJ1aWxkZXIoKSB7fVxuXG4gICAgICAgIFNieUxpZ2h0Ym94QnVpbGRlci5wcm90b3R5cGUgPSB7XG4gICAgICAgICAgICBnZXREYXRhOiBmdW5jdGlvbihhKXtcbiAgICAgICAgICAgICAgICB2YXIgY2xvc2VzdEZlZWRJbmRleCA9IHBhcnNlSW50KGEuY2xvc2VzdCgnLnNiX3lvdXR1YmUnKS5hdHRyKCdkYXRhLXNieS1pbmRleCcpLTEpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGZlZWRJbmRleCA6IGNsb3Nlc3RGZWVkSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGxpbms6IGEuYXR0cihcImhyZWZcIiksXG4gICAgICAgICAgICAgICAgICAgIHZpZGVvVGl0bGU6IHR5cGVvZiBhLmF0dHIoXCJkYXRhLXZpZGVvLXRpdGxlXCIpICE9PSAndW5kZWZpbmVkJyA/IHNieUVuY29kZUlucHV0KGEuYXR0cihcImRhdGEtdmlkZW8tdGl0bGVcIikpIDogJ1lvdVR1YmUgVmlkZW8nLFxuICAgICAgICAgICAgICAgICAgICB2aWRlbzogYS5hdHRyKFwiZGF0YS12aWRlby1pZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbElEOiBhLmF0dHIoXCJkYXRhLWNoYW5uZWwtaWRcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGVtcGxhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCI8ZGl2IGlkPSdzYnlfbGlnaHRib3hPdmVybGF5JyBjbGFzcz0nc2J5X2xpZ2h0Ym94T3ZlcmxheSc+PC9kaXY+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgaWQ9J3NieV9saWdodGJveCcgY2xhc3M9J3NieV9saWdodGJveCc+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgY2xhc3M9J3NieV9sYi1vdXRlckNvbnRhaW5lcic+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgY2xhc3M9J3NieV9sYi1jb250YWluZXInPlwiK1xuICAgICAgICAgICAgICAgICAgXCI8aW1nIGNsYXNzPSdzYnlfbGItaW1hZ2UnIGFsdD0nTGlnaHRib3ggaW1hZ2UgcGxhY2Vob2xkZXInIHNyYz0nJyAvPlwiK1xuICAgICAgICAgICAgICAgICAgXCI8ZGl2IGNsYXNzPSdzYnlfbGItcGxheWVyIHNieV9sYi1wbGF5ZXItcGxhY2Vob2xkZXInIGlkPSdzYnlfbGItcGxheWVyJz48L2Rpdj5cIiArXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgY2xhc3M9J3NieV9sYi1uYXYnPjxhIGNsYXNzPSdzYnlfbGItcHJldicgaHJlZj0nIycgPjxwIGNsYXNzPSdzYnktc2NyZWVucmVhZGVyJz5QcmV2aW91cyBTbGlkZTwvcD48c3Bhbj48L3NwYW4+PC9hPjxhIGNsYXNzPSdzYnlfbGItbmV4dCcgaHJlZj0nIycgPjxwIGNsYXNzPSdzYnktc2NyZWVucmVhZGVyJz5OZXh0IFNsaWRlPC9wPjxzcGFuPjwvc3Bhbj48L2E+PC9kaXY+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgY2xhc3M9J3NieV9sYi1sb2FkZXInPjxhIGNsYXNzPSdzYnlfbGItY2FuY2VsJz48L2E+PC9kaXY+XCIrXG4gICAgICAgICAgICAgICAgICBcIjwvZGl2PlwiK1xuICAgICAgICAgICAgICAgICAgXCI8L2Rpdj5cIitcbiAgICAgICAgICAgICAgICAgIFwiPGRpdiBjbGFzcz0nc2J5X2xiLWRhdGFDb250YWluZXInPlwiK1xuICAgICAgICAgICAgICAgICAgXCI8ZGl2IGNsYXNzPSdzYnlfbGItZGF0YSc+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgY2xhc3M9J3NieV9sYi1kZXRhaWxzJz5cIitcbiAgICAgICAgICAgICAgICAgIFwiPGRpdiBjbGFzcz0nc2J5X2xiLWNhcHRpb24nPjwvZGl2PlwiK1xuICAgICAgICAgICAgICAgICAgXCI8ZGl2IGNsYXNzPSdzYnlfbGItaW5mbyc+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgY2xhc3M9J3NieV9sYi1udW1iZXInPjwvZGl2PlwiK1xuICAgICAgICAgICAgICAgICAgXCI8L2Rpdj5cIitcbiAgICAgICAgICAgICAgICAgIFwiPC9kaXY+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgY2xhc3M9J3NieV9sYi1jbG9zZUNvbnRhaW5lcic+PGEgY2xhc3M9J3NieV9sYi1jbG9zZSc+PC9hPjwvZGl2PlwiK1xuICAgICAgICAgICAgICAgICAgXCI8L2Rpdj5cIitcbiAgICAgICAgICAgICAgICAgIFwiPC9kaXY+XCIrXG4gICAgICAgICAgICAgICAgICBcIjwvZGl2PlwiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJlZm9yZVBsYXllclNldHVwOiBmdW5jdGlvbigkbGlnaHRib3gsZGF0YSxpbmRleCxhbGJ1bSxmZWVkKXtcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVyUGxheWVyU2V0dXA6IGZ1bmN0aW9uICgkbGlnaHRib3gsZGF0YSxpbmRleCxhbGJ1bSkge1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVyUmVzaXplOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHZhciBwbGF5ZXJIZWlnaHQgPSAkKCcjc2J5X2xpZ2h0Ym94IC5zYnlfbGItcGxheWVyJykuaGVpZ2h0KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAocGxheWVySGVpZ2h0ID4gMTAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHREaWYgPSAkKCcjc2J5X2xpZ2h0Ym94IC5zYnlfbGItb3V0ZXJDb250YWluZXInKS5oZWlnaHQoKSAtIHBsYXllckhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlaWdodERpZiA+IDEwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjc2J5X2xpZ2h0Ym94IC5zYnlfbGItcGxheWVyJykuY3NzKCd0b3AnLGhlaWdodERpZi8yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXVzZVBsYXllcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93LnNieUxpZ2h0Ym94UGxheWVyID09PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgJiYgdHlwZW9mIFlUID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgWVQuZ2V0KCdzYnlfbGItcGxheWVyJykgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICAgICAgICAmJiB0eXBlb2YgWVQuZ2V0KCdzYnlfbGItcGxheWVyJykucGF1c2VWaWRlbyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBZVC5nZXQoJ3NieV9sYi1wbGF5ZXInKS5wYXVzZVZpZGVvKClcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cuc2J5TGlnaHRib3hQbGF5ZXIgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICAgICAgICAmJiB0eXBlb2Ygd2luZG93LnNieUxpZ2h0Ym94UGxheWVyLnBhdXNlVmlkZW8gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieUxpZ2h0Ym94UGxheWVyLnBhdXNlVmlkZW8oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBTYnlMaWdodGJveEJ1aWxkZXJQcm8ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTYnlMaWdodGJveEJ1aWxkZXIucHJvdG90eXBlKTtcblxuICAgICAgICBmdW5jdGlvbiBTYnlMaWdodGJveEJ1aWxkZXJQcm8oKSB7XG4gICAgICAgICAgICBTYnlMaWdodGJveEJ1aWxkZXIuY2FsbCh0aGlzKTtcblxuICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSA9IGZ1bmN0aW9uKGEpe1xuICAgICAgICAgICAgICAgIGNvbnN0IGZlZWRQYXJlbnQgPSBhLmNsb3Nlc3QoJy5zYl95b3V0dWJlJyk7XG4gICAgICAgICAgICAgICAgdmFyIGNsb3Nlc3RGZWVkSW5kZXggPSBwYXJzZUludChmZWVkUGFyZW50LmF0dHIoJ2RhdGEtc2J5LWluZGV4JyktMSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3Vic2NyaWJlQnRuVGV4dCA9IGZlZWRQYXJlbnQuYXR0cignZGF0YS1zdWJzY3JpYmUtYnRuLXRleHQnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpYmVCdG4gPSBmZWVkUGFyZW50LmF0dHIoJ2RhdGEtc3Vic2NyaWJlLWJ0bicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yU2NoZW1lID0gZmVlZFBhcmVudC5oYXNDbGFzcygnc2J5X3BhbGV0dGVfZGFyaycpID8gJ2RhcmsnIDogJ2xpZ2h0JztcbiAgICAgICAgICAgICAgICBjb25zdCBhdHRzID0gZmVlZFBhcmVudC5hdHRyKCdkYXRhLXNob3J0Y29kZS1hdHRzJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGl2ZURhdGFBdHRyID0gYS5jbG9zZXN0KCcuc2J5X2l0ZW0nKS5hdHRyKCdkYXRhLWxpdmUtZGF0ZScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5uZWxIZWFkZXJDb2xvcnNBdHRyID0gZmVlZFBhcmVudC5hdHRyKCdkYXRhX2NoYW5uZWxfaGVhZGVyX2NvbG9ycycpID8gIEpTT04ucGFyc2UoZmVlZFBhcmVudC5hdHRyKCdkYXRhX2NoYW5uZWxfaGVhZGVyX2NvbG9ycycpKSA6ICcnO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZmVlZEluZGV4IDogY2xvc2VzdEZlZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbGluazogYS5hdHRyKFwiaHJlZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgdmlkZW86IGEuYXR0cihcImRhdGEtdmlkZW8taWRcIiksXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzYnlFbmNvZGVJbnB1dChhLmF0dHIoXCJkYXRhLXRpdGxlXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UaXRsZTogdHlwZW9mIGEuYXR0cihcImRhdGEtdmlkZW8tdGl0bGVcIikgIT09ICd1bmRlZmluZWQnID8gc2J5RW5jb2RlSW5wdXQoYS5hdHRyKFwiZGF0YS12aWRlby10aXRsZVwiKSkgOiAnWW91VHViZSBWaWRlbycsXG4gICAgICAgICAgICAgICAgICAgIGF2YXRhcjogYS5hdHRyKFwiZGF0YS1hdmF0YXJcIiksXG4gICAgICAgICAgICAgICAgICAgIHVzZXI6IHNieUVuY29kZUlucHV0KGEuYXR0cihcImRhdGEtdXNlclwiKSksXG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxVUkw6IGEuYXR0cihcImRhdGEtdXJsXCIpLFxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsSUQ6IGEuYXR0cihcImRhdGEtY2hhbm5lbC1pZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFN1YnNjcmliZXJzOiBhLmNsb3Nlc3QoJy5zYl95b3V0dWJlJykuYXR0cignZGF0YS1jaGFubmVsLXN1YnNjcmliZXJzJyksXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZUJ0bjogc3Vic2NyaWJlQnRuLFxuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVCdG5UZXh0OiBzdWJzY3JpYmVCdG5UZXh0LFxuICAgICAgICAgICAgICAgICAgICBjb2xvclNjaGVtZTogY29sb3JTY2hlbWUsXG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlZERhdGU6IGEuYXR0cihcImRhdGEtcHVibGlzaGVkLWRhdGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRDb3VudDogYS5hdHRyKFwiZGF0YS1jb21tZW50LWNvdW50XCIpLFxuICAgICAgICAgICAgICAgICAgICB2aWV3czogYS5hdHRyKFwiZGF0YS12aWV3c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgbGl2ZURhdGE6IGxpdmVEYXRhQXR0cixcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbEhlYWRlckNvbG9ycyA6IGNoYW5uZWxIZWFkZXJDb2xvcnNBdHRyLFxuICAgICAgICAgICAgICAgICAgICBhdHRzOiBhdHRzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICAgICAgPGRpdiBpZD0nc2J5X2xpZ2h0Ym94T3ZlcmxheScgY2xhc3M9J3NieV9saWdodGJveE92ZXJsYXknPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9J3NieV9saWdodGJveCcgY2xhc3M9J3NieV9saWdodGJveCc+XG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3NieV9sYi1oZWFkZXInPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nc2J5X2xiLW91dGVyQ29udGFpbmVyJz5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9J3NieV9sYi1jbG9zZSc+PC9hPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGItY29udGFpbmVyJz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGJfdmlkZW9fdGh1bWJuYWlsX3dyYXAnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9J3NieV9sYl92aWRlb190aHVtYm5haWwnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSdzYnlfbGItaW1hZ2UnIGFsdD0nTGlnaHRib3ggaW1hZ2UgcGxhY2Vob2xkZXInIHNyYz0nJyAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGItcGxheWVyJyBpZD0nc2J5X2xiLXBsYXllcic+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nc2J5X2xiLW5hdic+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0nc2J5X2xiLXByZXYnIGhyZWY9JyMnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0nc2J5LXNjcmVlbnJlYWRlcic+UHJldmlvdXMgU2xpZGU8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdzYnlfbGItbmV4dCcgaHJlZj0nIyc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSdzYnktc2NyZWVucmVhZGVyJz5OZXh0IFNsaWRlPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nc2J5X2xiLWxvYWRlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0nc2J5X2xiLWNhbmNlbCc+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nc2J5X2xiLWRhdGFDb250YWluZXInPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGItZGF0YSc+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nc2J5X2xiLWRldGFpbHMnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nc2J5X2xiLWNhcHRpb24nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGItaW5mbyc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3NieV9sYi1udW1iZXInPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuYmVmb3JlUGxheWVyU2V0dXAgPSBmdW5jdGlvbigkbGlnaHRib3gsZGF0YSxpbmRleCxhbGJ1bSxmZWVkKXtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAkKCdib2R5JykuY3NzKCdvdmVyZmxvdycsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICBpZiAoISRsaWdodGJveC5maW5kKCcuc2J5X2N0YV9pdGVtc193cmFwcycpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAkbGlnaHRib3guZmluZCgnLnNieV9sYl92aWRlb190aHVtYm5haWxfd3JhcCcpLmFwcGVuZCgkKGZlZWQuZWwpLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzJykuY2xvbmUoKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJGxpZ2h0Ym94LmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzJykucmVwbGFjZVdpdGgoJChmZWVkLmVsKS5maW5kKCcuc2J5X2N0YV9pdGVtc193cmFwcycpLmNsb25lKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJQbGF5ZXJTZXR1cCA9IGZ1bmN0aW9uKCRsaWdodGJveCxkYXRhLGluZGV4LGFsYnVtKSB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmF2YWlsYWJsZUF2YXRhclVybHMgPSB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpYmVTZWN0aW9uID0gZGF0YT8uc3Vic2NyaWJlQnRuID8gZGF0YS5zdWJzY3JpYmVCdG4gOiBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpYmVCdG5UZXh0ID0gZGF0YT8uc3Vic2NyaWJlQnRuVGV4dCA/IGRhdGEuc3Vic2NyaWJlQnRuVGV4dCA6ICcnO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzYnlMaWdodGJveEFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2J5TGlnaHRib3hBY3Rpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfSwxMDApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmKGRhdGE/LmNvbG9yU2NoZW1lICYmICdkYXJrJyA9PT0gZGF0YS5jb2xvclNjaGVtZSApIHtcbiAgICAgICAgICAgICAgICAgICAgTGlnaHRib3hDb2xvclNjaGVtZShkYXRhLmNvbG9yU2NoZW1lLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgYXZhdGFySW1hZ2UgPSAnJyxcblxuICAgICAgICAgICAgICAgIHN1YnNjcmliZUJ0biA9IHN1YnNjcmliZVNlY3Rpb24gPyAnPGEgY2xhc3M9XCJzYnktbGItc3Vic2NyaWJlLWJ0blwiIGhyZWY9XCJodHRwOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvJysgZGF0YS5jaGFubmVsSUQgKyc/c3ViX2NvbmZpcm1hdGlvbj0xJmZlYXR1cmU9c3Vic2NyaWJlLWVtYmVkLWNsaWNrXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPicrIGdldFN0YXRpY1NWRygneW91dHViZScpICsnIDxwPicgKyBzdWJzY3JpYmVCdG5UZXh0ICsnPC9wPjwvYT4nIDogJyc7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmF2YXRhciAhPT0gJ3VuZGVmaW5lZCcgJiYgZGF0YS5hdmF0YXIgIT09ICcnICYmIHR5cGVvZiBkYXRhLnVzZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGF2YXRhckltYWdlID0gKGRhdGEuYXZhdGFyICE9PSAndW5kZWZpbmVkJykgPyBkYXRhLmF2YXRhciA6ICcnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEudXNlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2god2luZG93LnNieS5mZWVkcywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXZhaWxhYmxlQXZhdGFyVXJscyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHRoaXMuYXZhaWxhYmxlQXZhdGFyVXJsc1tkYXRhLnVzZXJdICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmF2YWlsYWJsZUF2YXRhclVybHNbZGF0YS51c2VyXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmF0YXJJbWFnZSA9IHRoaXMuYXZhaWxhYmxlQXZhdGFyVXJsc1tkYXRhLnVzZXJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjaGFubmVsU3Vic2NyaWJlcnMgPSBkYXRhPy5jaGFubmVsU3Vic2NyaWJlcnMgPz8gJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgYXZhdGFySW1hZ2VIdG1sID0gYXZhdGFySW1hZ2UgPyAnPGltZyBzcmM9XCInKyBhdmF0YXJJbWFnZSArJ1wiIHJlZmVycmVyUG9saWN5PVwibm8tcmVmZXJyZXJcIi8+JyA6IGdldFN0YXRpY1NWRygncHJvZmlsZS1waWN0dXJlJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXNlckh0bWwgPSBzdWJzY3JpYmVTZWN0aW9uICYmIGF2YXRhckltYWdlID8gJzxkaXYgY2xhc3M9XCJzYnktbGItY2hhbm5lbC1oZWFkZXJcIj48YSBjbGFzcz1cInNieV9saWdodGJveF91c2VybmFtZVwiIGhyZWY9XCInKyBkYXRhLmNoYW5uZWxVUkwrJ1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCI+JysgYXZhdGFySW1hZ2VIdG1sICsgJzxwIGNsYXNzPVwic2J5LWxiLWNoYW5uZWwtbmFtZS13aXRoLXN1YnNcIj48c3Bhbj5AJytkYXRhLnVzZXIgKyAnPC9zcGFuPjxzcGFuPicgKyBjaGFubmVsU3Vic2NyaWJlcnMgKyc8L3NwYW4+PC9wPjwvYT4gJyArIHN1YnNjcmliZUJ0biArICc8L2Rpdj4nIDogJyc7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3Vic2NyaWJlQ2xhc3MgPSBzdWJzY3JpYmVTZWN0aW9uICYmIGF2YXRhckltYWdlID8gJ3NieV9sYi1jaGFubmVsLWluZm8nIDogJ3NieV9sYi1uby1jaGFubmVsLWluZm8nXG5cbiAgICAgICAgICAgICAgICBpZiggd2luZG93LnNieU9wdGlvbnMuaXNQcm8gKSB7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGRhdGE/LnRpdGxlID8gYWRkTGlua3NUb3RleHQoZGF0YS50aXRsZSkgOiAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBwdWJsaXNoZWREYXRlID0gZGF0YT8ucHVibGlzaGVkRGF0ZSA/IHRpbWVBZ28oY29udmVydFVuaXhUb01zKGRhdGEucHVibGlzaGVkRGF0ZSkpIDogJyc7XG4gICAgICAgICAgICAgICAgY29uc3Qgdmlld3MgPSBkYXRhPy52aWV3cyA/IGRhdGEudmlld3MgOiAnJztcblxuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvSGVhZGVyU2VjdGlvbiAgPSBgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYnlfbGItdmlkZW8taGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzPiR7ZGF0YS52aWRlb1RpdGxlfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2J5X2xiLXZpZGVvLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ke3ZpZXdzfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNieV9sYi1zcGFjZXJcIj7Ctzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ke3B1Ymxpc2hlZERhdGV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIGA7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb0Rlc2NyaXB0aW9uaHRtbCA9IGBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNieV9sYi12aWRlby1kZXNjcmlwdGlvbi13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2J5X2xiLWRlc2NyaXB0aW9uIHNieS1yZWFkLW1vcmUtdGFyZ2V0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNieV9sYi1tb3JlLWluZm8tYnRuIHNieS1yZWFkLW1vcmUtdHJpZ2dlclwiPkRlc2NyaXB0aW9uJHtnZXRTdGF0aWNTVkcoJ2FuZ2xlLWRvd24nKX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgYDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnRTZWN0aW9uSHRtbCA9IGBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNieS1jb21tZW50cy13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIGA7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb0Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gPyB2aWRlb0Rlc2NyaXB0aW9uaHRtbCA6ICcnO1xuXG4gICAgICAgICAgICAgICAgJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLWNhcHRpb25cIikuaHRtbCggYDxkaXYgY2xhc3M9XCJzYnlfbGItY2FwdGlvbi1pbm5lciAke3N1YnNjcmliZUNsYXNzfVwiPmAgKyB2aWRlb0hlYWRlclNlY3Rpb24gKyB1c2VySHRtbCArIHZpZGVvRGVzY3JpcHRpb24gKyBjb21tZW50U2VjdGlvbkh0bWwgKyBgPC9kaXY+YCApLmZhZGVJbihcImZhc3RcIik7XG5cbiAgICAgICAgICAgICAgICBpZiggZGF0YT8ubGl2ZURhdGEgJiYgJzAnID09PSBkYXRhLmxpdmVEYXRhICkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWRlb0lkID0gZGF0YT8udmlkZW8gPyBkYXRhLnZpZGVvIDogJyc7IFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRzID0gZGF0YT8uYXR0cyA/IGRhdGEuYXR0cyA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q29tbWVudENvdW50ID0gZGF0YT8uY29tbWVudENvdW50ID8gZGF0YS5jb21tZW50Q291bnQgOiAnJzsgXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9ICRsaWdodGJveC5maW5kKFwiLnNieS1jb21tZW50cy13cmFwXCIpO1xuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUNvbW1lbnRTZWN0aW9uKHZpZGVvSWQsIGF0dHMsIHRhcmdldCwgY3VycmVudENvbW1lbnRDb3VudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlUmVhZE1vcmUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiggZGF0YT8uY2hhbm5lbEhlYWRlckNvbG9ycyApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q29sb3JzVG9DaGFubmVsSGVhZGVyKGRhdGEuY2hhbm5lbEhlYWRlckNvbG9ycylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gU2J5Q1RBKHZpZGVvSUQsZmVlZCkge1xuICAgICAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnZpZGVvSUQgPSB2aWRlb0lEO1xuICAgICAgICAgICAgdGhpcy5jYWxsYmFjayA9IHRoaXMucmVsYXRlZDtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tBcmdzID0ge307XG4gICAgICAgICAgICB0aGlzLmZlZWRPYmpJbkNvbnRleHQgPSBmZWVkO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IDE7XG4gICAgICAgICAgICB0aGlzLm51bUl0ZW1zID0gNDtcbiAgICAgICAgICAgIHRoaXMubnVtSXRlbUNvbHVtbnMgPSAyO1xuICAgICAgICAgICAgdGhpcy4kcGxheWVyID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBTYnlDVEEucHJvdG90eXBlID0ge1xuICAgICAgICAgICAgdG9nZ2xlQ1RBOiBmdW5jdGlvbih2aWRlb0lELGRhdGFOdW0sJHBsYXllcil7XG4gICAgICAgICAgICAgICAgdGhpcy4kcGxheWVyID0gJHBsYXllci5sZW5ndGggPyAkcGxheWVyIDogJCgnLnNieV9sYi1jb250YWluZXInKTsgLy8gdXNlIHRoZSBsaWdodGJveCBjb250YWluZXIgaWYgbm8gcGxheWVyIGlzIHNldFxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBkYXRhTnVtO1xuICAgICAgICAgICAgICAgIHRoaXMudmlkZW9JRCA9IHZpZGVvSUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Q1RBKCk7XG5cbiAgICAgICAgICAgICAgICAvL2N0YURldGVjdFxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuc2J5LmN0YXNbdmlkZW9JRF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tBcmdzID0gd2luZG93LnNieS5jdGFzW3ZpZGVvSURdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLmNhbGxiYWNrQXJncy5jYWxsYmFjaztcblxuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjayA9PT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsbGJhY2sgPSB0aGlzLmxpbms7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYWxsYmFjayA9PT0gJ3JlbGF0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsbGJhY2sgPSB0aGlzLnJlbGF0ZWQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkYXRhTnVtID09PSAyIHx8IGRhdGFOdW0gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzJykuYWRkQ2xhc3MoJ3NieV9jdGFfaXNfb3BlbicpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICggZGF0YU51bSA9PT0gMiApe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzJykuYWRkQ2xhc3MoJ3NieV9jdGFfc3RhdGVfcGF1c2VkJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKS5hZGRDbGFzcygnc2J5X2N0YV9zdGF0ZV9lbmRlZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q1RBU3R5bGVzKCk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKS5yZW1vdmVDbGFzcygnc2J5X2N0YV9pc19vcGVuJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzJykuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdzYnlfY3RhX3N0YXRlX3BhdXNlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdzYnlfY3RhX3N0YXRlX2VuZGVkJylcbiAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NieV9jdGFfaXNfb3BlbicpO1xuICAgICAgICAgICAgICAgIH1cblxuXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWxhdGVkOiBmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN0YU9iaiA9IHRoaXMsXG4gICAgICAgICAgICAgICAgICBmZWVkT2JqSW5Db250ZXh0ID0gdGhpcy5mZWVkT2JqSW5Db250ZXh0LFxuICAgICAgICAgICAgICAgICAgcmVsYXRlZCA9IHdpbmRvdy5zYnkuc2h1ZmZsZSh0aGlzLmdldFJlbGF0ZWQoZmVlZE9iakluQ29udGV4dCkpLFxuICAgICAgICAgICAgICAgICAgYWRkZWQgPSAwLFxuICAgICAgICAgICAgICAgICAgY3VycmVudFZpZGVvSWQgPSB0aGlzLnZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAkcGxheWVyID0gdGhpcy4kcGxheWVyO1xuXG4gICAgICAgICAgICAgICAgdGhpcy4kcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzJylcbiAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2J5X2N0YV9jb2xzXycgKyB0aGlzLm51bUl0ZW1Db2x1bW5zKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubnVtSXRlbXMgPSA0O1xuICAgICAgICAgICAgICAgIHRoaXMubnVtSXRlbUNvbHVtbnMgPSAyO1xuXG4gICAgICAgICAgICAgICAgaWYgKCRwbGF5ZXIud2lkdGgoKSA8IDQ4MCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm51bUl0ZW1zID0gMTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1JdGVtQ29sdW1ucyA9IDFcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgbnVtSXRlbXMgPSB0aGlzLm51bUl0ZW1zO1xuXG4gICAgICAgICAgICAgICAgJC5lYWNoKHJlbGF0ZWQsIGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUudmlkZW9JRCAhPT0gY3VycmVudFZpZGVvSWQgJiYgYWRkZWQgPCBudW1JdGVtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHBsYXllci5maW5kKCcuc2J5X2N0YV9pdGVtc193cmFwcyAuc2J5X2N0YV9pbm5lcl93cmFwJykuYXBwZW5kKCc8ZGl2IGNsYXNzPVwic2J5X2N0YV9pdGVtXCI+PGRpdiBjbGFzcz1cInNieV92aWRlb190aHVtYm5haWxfd3JhcFwiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnPGEgY2xhc3M9XCJzYnlfdmlkZW9fdGh1bWJuYWlsXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiIGRhdGEtdmlkZW8taWQ9XCInK3ZhbHVlLnZpZGVvSUQrJ1wiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz1cInNieV90aHVtYm5haWxfaG92ZXJcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJzYnlfdGh1bWJuYWlsX2hvdmVyX2lubmVyXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cInNieV92aWRlb190aXRsZVwiPicrdmFsdWUudGl0bGUrJzwvc3Bhbj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cInNieS1zY3JlZW5yZWFkZXJcIj5QbGF5PC9zcGFuPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnPGltZyBzcmM9XCInK3ZhbHVlLnRodW1ibmFpbCsnXCIgYWx0PVwiJyt2YWx1ZS50aXRsZSsnXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cInNieV9sb2FkZXIgc2J5X2hpZGRlblwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1wiPjwvc3Bhbj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvYT4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRlZCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAkcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzIC5zYnlfdmlkZW9fdGh1bWJuYWlsJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5vZmYoKS5vbignY2xpY2snLGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXdWaWRlb0lEID0gJCh0aGlzKS5hdHRyKCdkYXRhLXZpZGVvLWlkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkT2JqSW5Db250ZXh0Lm9uVGh1bWJuYWlsQ2xpY2soJCh0aGlzKSx0cnVlLG5ld1ZpZGVvSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3RhT2JqLnZpZGVvSUQgPSBuZXdWaWRlb0lEO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFJlbGF0ZWQ6IGZ1bmN0aW9uKGZlZWRPYmpJbkNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZlZWRPYmpJbkNvbnRleHQuc2V0dGluZ3MuZ2VuZXJhbC5jdGEuZGVmYXVsdFBvc3RzWzBdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGZlZWRFbCA9ICQoZmVlZE9iakluQ29udGV4dC5lbCksXG4gICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFZpZHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgJGZlZWRFbC5maW5kKCcuc2J5X2l0ZW0nKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkKHRoaXMpLmZpbmQoJy5zYnlfaXRlbV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLWZ1bGwtcmVzJykgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXNWaWQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSUQ6ICQodGhpcykuYXR0cignZGF0YS12aWRlby1pZCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc2J5RW5jb2RlSW5wdXQoJCh0aGlzKS5hdHRyKCdkYXRhLXZpZGVvLXRpdGxlJykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHVtYm5haWw6ICQodGhpcykuZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtZnVsbC1yZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFZpZHMucHVzaCh0aGlzVmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWxhdGVkVmlkcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZlZWRPYmpJbkNvbnRleHQuc2V0dGluZ3MuZ2VuZXJhbC5jdGEuZGVmYXVsdFBvc3RzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHBsYXllciA9IHRoaXMuJHBsYXllcixcbiAgICAgICAgICAgICAgICAgIGZlZWRPYmpJbkNvbnRleHQgPSB0aGlzLmZlZWRPYmpJbkNvbnRleHQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKVxuICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdzYnlfY3RhX2NvbHNfJyArIHRoaXMubnVtSXRlbUNvbHVtbnMpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5udW1JdGVtcyA9IDE7XG4gICAgICAgICAgICAgICAgdGhpcy5udW1JdGVtQ29sdW1ucyA9IDE7XG5cbiAgICAgICAgICAgICAgICB2YXIgc3R5bGUgPSAnJyxcbiAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3MgPSAnJztcblxuICAgICAgICAgICAgICAgIGlmIChmZWVkT2JqSW5Db250ZXh0LnNldHRpbmdzLmdlbmVyYWwuY3RhLmNvbG9yICE9PSAnJyB8fCBmZWVkT2JqSW5Db250ZXh0LnNldHRpbmdzLmdlbmVyYWwuY3RhLnRleHRDb2xvciAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUgPSAnIHN0eWxlPVwiJztcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9ICcgc2J5X2N1c3RvbSc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWRPYmpJbkNvbnRleHQuc2V0dGluZ3MuZ2VuZXJhbC5jdGEuY29sb3IgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSArPSAnYmFja2dyb3VuZDogcmdiKCcgKyBmZWVkT2JqSW5Db250ZXh0LnNldHRpbmdzLmdlbmVyYWwuY3RhLmNvbG9yICsgJyk7JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZmVlZE9iakluQ29udGV4dC5zZXR0aW5ncy5nZW5lcmFsLmN0YS50ZXh0Q29sb3IgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSArPSAnY29sb3I6IHJnYignICsgZmVlZE9iakluQ29udGV4dC5zZXR0aW5ncy5nZW5lcmFsLmN0YS50ZXh0Q29sb3IgKyAnKTsnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlICs9ICdcIic7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIG9wZW5BdHRzID0gJyc7XG4gICAgICAgICAgICAgICAgaWYgKGZlZWRPYmpJbkNvbnRleHQuc2V0dGluZ3MuZ2VuZXJhbC5jdGEub3BlblR5cGUgPT09ICduZXd3aW5kb3cnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wZW5BdHRzID0gJyB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAkcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzIC5zYnlfY3RhX2lubmVyX3dyYXAnKS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzYnlfY3RhX2l0ZW1cIj4nICtcbiAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwic2J5X2J0bl93cmFwXCI+JyArXG4gICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz1cInNieV9idG4nK3N0eWxlQ2xhc3MrJ1wiPicgK1xuXG4gICAgICAgICAgICAgICAgICAnPGEgY2xhc3M9XCJzYnlfY3RhX2J1dHRvblwiIGhyZWY9XCInK3RoaXMuY2FsbGJhY2tBcmdzLnVybCsnXCInK29wZW5BdHRzKycgZGF0YS12aWRlby1pZD1cIicrdGhpcy52aWRlb0lEKydcIicrc3R5bGUrJz4nICtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tBcmdzLnRleHQgK1xuICAgICAgICAgICAgICAgICAgJzwvYT4nICtcbiAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICtcbiAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICtcblxuICAgICAgICAgICAgICAgICAgJzwvZGl2PidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldENUQVN0eWxlczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBsYXllclRvcEhlaWdodCA9IDYwLFxuICAgICAgICAgICAgICAgICAgcGxheWVyQm90dG9tSGVpZ2h0ID0gNDksXG4gICAgICAgICAgICAgICAgICBtaW5pbXVtSGVpZ2h0ID0gOTAsXG4gICAgICAgICAgICAgICAgICBjdGFPdmVybGF5SGVpZ2h0ID0gTWF0aC5tYXgobWluaW11bUhlaWdodCx0aGlzLiRwbGF5ZXIuaGVpZ2h0KCkgLSBwbGF5ZXJUb3BIZWlnaHQgLSBwbGF5ZXJCb3R0b21IZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy4kcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzJylcbiAgICAgICAgICAgICAgICAgIC5jc3MoJ2hlaWdodCcsY3RhT3ZlcmxheUhlaWdodCsncHgnKVxuICAgICAgICAgICAgICAgICAgLmNzcygnd2lkdGgnLCh0aGlzLiRwbGF5ZXIuZmluZCgnaWZyYW1lJykud2lkdGgoKS0yMCkrJ3B4JylcbiAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2J5X2N0YV9jb2xzXycgKyB0aGlzLm51bUl0ZW1Db2x1bW5zKTtcblxuICAgICAgICAgICAgICAgIHZhciBudW1Sb3dzID0gTWF0aC5tYXgoMSx0aGlzLm51bUl0ZW1zL3RoaXMubnVtSXRlbUNvbHVtbnMpLFxuICAgICAgICAgICAgICAgICAgdG90YWxWZXJ0aWNhbFBhZGRpbmcgPSBwYXJzZUludCh0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKS5jc3MoJ3BhZGRpbmctdG9wJykucmVwbGFjZSgncHgnLCcnKSkgKiAyLFxuICAgICAgICAgICAgICAgICAgbWF4Q1RBSXRlbUhlaWdodCA9IE1hdGgubWF4KG1pbmltdW1IZWlnaHQsKGN0YU92ZXJsYXlIZWlnaHQtdG90YWxWZXJ0aWNhbFBhZGRpbmcpL251bVJvd3MpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy4kcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW0nKS5jc3MoJ21heC1oZWlnaHQnLG1heENUQUl0ZW1IZWlnaHQrJ3B4JykuZmluZCgnaW1nJykuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgJ21heC1oZWlnaHQnOiBtYXhDVEFJdGVtSGVpZ2h0KydweCcsXG4gICAgICAgICAgICAgICAgICAgICd3aWR0aCc6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgJ21hcmdpbic6ICdhdXRvJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuJHBsYXllci5maW5kKCcuc2J5X2J0bl93cmFwJykuY3NzKCdoZWlnaHQnLG1heENUQUl0ZW1IZWlnaHQrJ3B4Jyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXRDVEE6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHBsYXllci5maW5kKCcuc2J5X2N0YV9pdGVtc193cmFwcyAuc2J5X2N0YV9pbm5lcl93cmFwJykuZW1wdHkoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgICAgIHdpbmRvdy5zYnlfaW5pdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgd2luZG93LnNieSA9IG5ldyBTYnkoKTtcbiAgICAgICAgICAgIHdpbmRvdy5zYnkuY3JlYXRlUGFnZSggd2luZG93LnNieS5jcmVhdGVGZWVkcywge3doZW5GZWVkc0NyZWF0ZWQ6IHdpbmRvdy5zYnkuYWZ0ZXJGZWVkc0NyZWF0ZWR9KTtcbiAgICAgICAgfTtcblxuXG5cbiAgICAgICAgd2luZG93LnNieV9jYXJvdXNlbF9pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnbG9nJyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBzYnlHZXROZXdGZWVkKGZlZWQsaW5kZXgsZmVlZE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2J5RmVlZFBybyhmZWVkLGluZGV4LGZlZWRPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNieUdldGxpZ2h0Ym94QnVpbGRlcigpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2J5TGlnaHRib3hCdWlsZGVyUHJvKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBzYnlJc1RvdWNoKCkge1xuICAgICAgICAgICAgaWYgKFwib250b3VjaHN0YXJ0XCIgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBzYnlDbXBsekdldENvb2tpZShjbmFtZSkge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBjbmFtZSArIFwiPVwiOyAvL0NyZWF0ZSB0aGUgY29va2llIG5hbWUgdmFyaWFibGUgd2l0aCBjb29raWUgbmFtZSBjb25jYXRlbmF0ZSB3aXRoID0gc2lnblxuICAgICAgICAgICAgdmFyIGNBcnIgPSB3aW5kb3cuZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7IC8vQ3JlYXRlIGNvb2tpZSBhcnJheSBieSBzcGxpdCB0aGUgY29va2llIGJ5ICc7J1xuXG4gICAgICAgICAgICAvL0xvb3AgdGhyb3VnaCB0aGUgY29va2llcyBhbmQgcmV0dXJuIHRoZSBjb29raWUgdmFsdWUgaWYgaXQgZmluZCB0aGUgY29va2llIG5hbWVcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY0Fyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBjID0gY0FycltpXS50cmltKCk7XG4gICAgICAgICAgICAgICAgLy9JZiB0aGUgbmFtZSBpcyB0aGUgY29va2llIHN0cmluZyBhdCBwb3NpdGlvbiAwLCB3ZSBmb3VuZCB0aGUgY29va2llIGFuZCByZXR1cm4gdGhlIGNvb2tpZSB2YWx1ZVxuICAgICAgICAgICAgICAgIGlmIChjLmluZGV4T2YobmFtZSkgPT0gMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWUubGVuZ3RoLCBjLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cblxuICAgIH0pKGpRdWVyeSk7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdy5zYnlFYWdlckxvYWRpbmcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHdpbmRvdy5zYnlFYWdlckxvYWRpbmcgPSB0eXBlb2Ygd2luZG93LnNieU9wdGlvbnMgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnNieU9wdGlvbnMuZWFnZXJsb2FkIDogZmFsc2U7XG4gICAgICAgIGlmIChqUXVlcnkoJy5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvJykubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YXIgc2V0dGluZ3MgPSB0eXBlb2YgalF1ZXJ5KCcuZWxlbWVudG9yLXdpZGdldC12aWRlbycpLmF0dHIoJ2RhdGEtc2V0dGluZ3MnKSAhPT0gJ3VuZGVmaW5lZCcgPyBKU09OLnBhcnNlKCBqUXVlcnkoJy5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvJykuYXR0cignZGF0YS1zZXR0aW5ncycpKSA6IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzICYmIHR5cGVvZiBzZXR0aW5ncy55b3V0dWJlX3VybCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2J5RWFnZXJMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChqUXVlcnkoJ2RpdltkYXRhLXZjLXZpZGVvLWJnXScpLmxlbmd0aCkge1xuICAgICAgICAgICAgd2luZG93LnNieUVhZ2VyTG9hZGluZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cuc2J5U2VtaUVhZ2VyTG9hZGluZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2luZG93LnNieVNlbWlFYWdlckxvYWRpbmcgPSB0eXBlb2Ygd2luZG93LnNieU9wdGlvbnMgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnNieU9wdGlvbnMuc2VtaUVhZ2VybG9hZCA6IGZhbHNlO1xuICAgICAgICBpZiAoalF1ZXJ5KCdkaXZbZGF0YS12Yy12aWRlby1iZ10nKS5sZW5ndGggfHwgd2luZG93LnNieUVhZ2VyTG9hZGluZykge1xuICAgICAgICAgICAgd2luZG93LnNieVNlbWlFYWdlckxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oJCkge1xuICAgICAgICBpZiAoIXdpbmRvdy5zYnlTZW1pRWFnZXJMb2FkaW5nKSB7XG4gICAgICAgICAgICBzYnlfaW5pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29va2llIE5vdGljZSBieSBkRmFjdG9yeVxuICAgICAgICAkKCcjY29va2llLW5vdGljZSBhJykub24oJ2NsaWNrJyxmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgJC5lYWNoKHdpbmRvdy5zYnkuZmVlZHMsZnVuY3Rpb24oaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLmFmdGVyQ29uc2VudFRvZ2dsZWQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sMTAwMCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENvb2tpZSBOb3RpY2UgYnkgZEZhY3RvcnlcbiAgICAgICAgJCgnI2Nvb2tpZS1sYXctaW5mby1iYXIgYScpLm9uKCdjbGljaycsZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICQuZWFjaCh3aW5kb3cuc2J5LmZlZWRzLGZ1bmN0aW9uKGluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS5mZWVkc1sgaW5kZXggXS5hZnRlckNvbnNlbnRUb2dnbGVkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LDEwMDApO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBHRFBSIENvb2tpZSBDb25zZW50IGJ5IFdlYlRvZmZlZVxuICAgICAgICAkKCcuY2xpLXVzZXItcHJlZmVyZW5jZS1jaGVja2JveCcpLm9uKCdjbGljaycsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgJC5lYWNoKHdpbmRvdy5zYnkuZmVlZHMsZnVuY3Rpb24oaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLnNldHRpbmdzLmNvbnNlbnRHaXZlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLmFmdGVyQ29uc2VudFRvZ2dsZWQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sMTAwMCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENvb2tpZWJvdFxuICAgICAgICAkKHdpbmRvdykub24oJ0Nvb2tpZWJvdE9uQWNjZXB0JywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAkLmVhY2god2luZG93LnNieS5mZWVkcyxmdW5jdGlvbihpbmRleCl7XG4gICAgICAgICAgICAgICAgd2luZG93LnNieS5mZWVkc1sgaW5kZXggXS5zZXR0aW5ncy5jb25zZW50R2l2ZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uYWZ0ZXJDb25zZW50VG9nZ2xlZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENvbXBsaWFueiBieSBSZWFsbHkgU2ltcGxlIFBsdWdpbnNcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY21wbHpfc3RhdHVzX2NoYW5nZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBpZiAoZS5kZXRhaWwuY2F0ZWdvcnkgPT09ICdtYXJrZXRpbmcnICYmIGUuZGV0YWlsLnZhbHVlPT09J2FsbG93Jykge1xuICAgICAgICAgICAgICAgICQuZWFjaCh3aW5kb3cuc2J5LmZlZWRzLGZ1bmN0aW9uKGluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS5mZWVkc1sgaW5kZXggXS5zZXR0aW5ncy5jb25zZW50R2l2ZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLmFmdGVyQ29uc2VudFRvZ2dsZWQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgJChkb2N1bWVudCkub24oJ2NtcGx6RmlyZUNhdGVnb3JpZXMnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGlmICggZXZlbnQuZGV0YWlsLmNhdGVnb3J5PT09J21hcmtldGluZycgKSB7XG4gICAgICAgICAgICAgICAgJC5lYWNoKHdpbmRvdy5zYnkuZmVlZHMsZnVuY3Rpb24oaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLnNldHRpbmdzLmNvbnNlbnRHaXZlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uYWZ0ZXJDb25zZW50VG9nZ2xlZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBCb3JsYWJzIENvb2tpZSBieSBCb3JsYWJzXG4gICAgICAgICQoZG9jdW1lbnQpLm9uKCdib3JsYWJzLWNvb2tpZS1jb25zZW50LXNhdmVkJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAkLmVhY2god2luZG93LnNieS5mZWVkcyxmdW5jdGlvbihpbmRleCl7XG4gICAgICAgICAgICAgICAgd2luZG93LnNieS5mZWVkc1sgaW5kZXggXS5zZXR0aW5ncy5jb25zZW50R2l2ZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLmFmdGVyQ29uc2VudFRvZ2dsZWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBoaWRlIG5vdGljZSBvbiBjbGljayBhbmQgc2VuZCBhamF4IHJlcXVlc3QgdG8gYmFja2VuZFxuICAgICAgICAkKCcjc2J5LWZyY2UtaGlkZS1saWNlbnNlLWVycm9yJykub24oJ2NsaWNrJyxmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICQoJyNzYnktZnItY2UtbGljZW5zZS1lcnJvcicpLnNsaWRlVXAoKTtcbiAgICAgICAgICAgIGpRdWVyeS5hamF4KHtcbiAgICAgICAgICAgICAgICB1cmw6IHNieU9wdGlvbnMuYWRtaW5BamF4VXJsLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdwb3N0JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NieV9oaWRlX2Zyb250ZW5kX2xpY2Vuc2VfZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICBub25jZTogc2J5T3B0aW9ucy5ub25jZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24obXNnKXtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobXNnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICB9KTtcblxufSAvLyBpZiBzYnlfanNfZXhpc3RzXG5cbmlmICh3aW5kb3cuc2J5U2VtaUVhZ2VyTG9hZGluZykge1xuICAgIHZhciBzYnlZU2NyaXB0SWQgPSBcInNieS15b3V0dWJlLWFwaVwiO1xuICAgIHZhciBzYnlZU2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2J5WVNjcmlwdElkKTtcblxuICAgIGlmIChzYnlZU2NyaXB0ID09PSBudWxsKSB7XG4gICAgICAgIHZhciB0YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICB2YXIgZmlyc3RTY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKVswXTtcblxuICAgICAgICB0YWcuc3JjID0gXCJodHRwczovL3d3dy55b3V0dWJlLmNvbS9pZnJhbWVfYXBpXCI7XG4gICAgICAgIHRhZy5pZCA9IHNieVlTY3JpcHRJZDtcbiAgICAgICAgZmlyc3RTY3JpcHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGFnLCBmaXJzdFNjcmlwdCk7XG5cbiAgICB9XG59XG5cbndpbmRvdy5vbllvdVR1YmVJZnJhbWVBUElSZWFkeSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBudW1GZWVkcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NiX3lvdXR1YmUnKS5sZW5ndGg7XG4gICAgaWYgKG51bUZlZWRzID4gMCkge1xuICAgICAgICBpZiAod2luZG93LnNieVNlbWlFYWdlckxvYWRpbmcpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93LnNieSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUZlZWRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS5mZWVkc1tpXS5wbGF5ZXJBUElSZWFkeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2J5QVBJUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2J5X2luaXQoKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgaWYgKHdpbmRvdy5zYnlFYWdlckxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmxhZ0xpZ2h0Ym94ID0gZmFsc2UsXG4gICAgICAgICAgICAgICAgICBhdXRvcGxheSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgalF1ZXJ5KCcuc2JfeW91dHViZScpLmVhY2goZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRzZWxmID0galF1ZXJ5KHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2VsZi5oYXNDbGFzcygnc2J5X2xheW91dF9saXN0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5hZGRDbGFzcygnc2J5X3BsYXllcl9sb2FkZWQnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0lEID0galF1ZXJ5KHRoaXMpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMuY3JlYXRlUGxheWVyKCx2aWRlb0lELDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllciA9IG5ldyBZVC5QbGF5ZXIoJ3NieV9wbGF5ZXJfJyt2aWRlb0lELCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9JZDogdmlkZW9JRCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyVmFyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXN0YnJhbmRpbmc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogYXV0b3BsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25TdGF0ZUNoYW5nZSc6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9JRCA9IGRhdGEudGFyZ2V0LmdldFZpZGVvRGF0YSgpWyd2aWRlb19pZCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEgIT09IDEpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbVZpZElEID0galF1ZXJ5KHRoaXMpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoalF1ZXJ5KHRoaXMpLmZpbmQoJ2lmcmFtZScpLmxlbmd0aCAmJiBqUXVlcnkoZGF0YS50YXJnZXQuYSkuYXR0cignaWQnKSAhPT0galF1ZXJ5KHRoaXMpLmZpbmQoJ2lmcmFtZScpLmF0dHIoJ2lkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlULmdldCgnc2J5X3BsYXllcl8nK2l0ZW1WaWRJRCkucGF1c2VWaWRlbygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfZ2FsbGVyeScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykuYWRkQ2xhc3MoJ3NieV9wbGF5ZXJfbG9hZGVkJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllciA9IG5ldyBZVC5QbGF5ZXIoJ3NieV9wbGF5ZXInK2luZGV4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9JZDogalF1ZXJ5KHRoaXMpLmZpbmQoJy5zYnlfaXRlbScpLmZpcnN0KCkuYXR0cignZGF0YS12aWRlby1pZCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllclZhcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXN0YnJhbmRpbmc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXk6IGF1dG9wbGF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uU3RhdGVDaGFuZ2UnOiBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9JRCA9IGRhdGEudGFyZ2V0LmdldFZpZGVvRGF0YSgpWyd2aWRlb19pZCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YSAhPT0gMSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbVZpZElEID0galF1ZXJ5KHRoaXMpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkodGhpcykuZmluZCgnaWZyYW1lJykubGVuZ3RoICYmIGpRdWVyeShkYXRhLnRhcmdldC5hKS5hdHRyKCdpZCcpICE9PSBqUXVlcnkodGhpcykuZmluZCgnaWZyYW1lJykuYXR0cignaWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZVC5nZXQoJ3NieV9wbGF5ZXJfJytpdGVtVmlkSUQpLnBhdXNlVmlkZW8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ0xpZ2h0Ym94ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cuc2J5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRmVlZHM7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzW2ldLnBsYXllckFQSVJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5zYnlBUElSZWFkeSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBqUXVlcnkoJy5zYl95b3V0dWJlJykuZWFjaChmdW5jdGlvbihpbmRleCkge1xuICAgICAgICAgICAgdmFyICRzZWxmID0galF1ZXJ5KHRoaXMpO1xuICAgICAgICAgICAgaWYgKCRzZWxmLmZpbmQoJy5zYnlfbGl2ZV9wbGF5ZXInKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwbGF5ZXIgPSBuZXcgWVQuUGxheWVyKCRzZWxmLmZpbmQoJy5zYnlfbGl2ZV9wbGF5ZXInKS5hdHRyKCdpZCcpLCB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ29uUmVhZHknOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9saXZlX3BsYXllcicpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9JRCA9IFlULmdldCgkc2VsZi5maW5kKCcuc2J5X2xpdmVfcGxheWVyJykuYXR0cignaWQnKSkuZ2V0VmlkZW9EYXRhKCkudmlkZW9faWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS12aWRlby1pZCcsdmlkZW9JRCkuY3NzKCd6LWluZGV4JywtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1PZmZzZXQgPSAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXREYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NieV9saXZlX3JldHJpZXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb19pZDogdmlkZW9JRCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkX2lkOiAkc2VsZi5hdHRyKCdkYXRhLWZlZWRpZCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHM6ICRzZWxmLmF0dHIoJ2RhdGEtc2hvcnRjb2RlLWF0dHMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9uU3VjY2VzcyA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnRyaW0oKS5pbmRleE9mKCd7JykgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmZWVkID0gd2luZG93LnNieS5mZWVkc1tpbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gSlNPTi5wYXJzZShkYXRhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tXUFBvc3RzID0gdHlwZW9mIHJlc3BvbnNlLmZlZWRTdGF0dXMuY2hlY2tXUFBvc3RzICE9PSAndW5kZWZpbmVkJyA/IHJlc3BvbnNlLmZlZWRTdGF0dXMuY2hlY2tXUFBvc3RzIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmVlZC5zZXR0aW5ncy5kZWJ1Z0VuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tXUFBvc3RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5zZXR0aW5ncy5jaGVja1dQUG9zdHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLnNldHRpbmdzLmNoZWNrV1BQb3N0cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hcHBlbmROZXdQb3N0cyhyZXNwb25zZS5odG1sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWRkUmVzaXplZEltYWdlcyhyZXNwb25zZS5yZXNpemVkSW1hZ2VzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hZnRlckluaXRpYWxJbWFnZXNMb2FkZWQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5mZWVkU3RhdHVzLnNob3VsZFBhZ2luYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5vdXRPZlBhZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2xvYWRfYnRuJykuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLm91dE9mUGFnZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuc2J5X25vX2pzJykucmVtb3ZlQ2xhc3MoJ3NieV9ub19qcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9saXZlX3BsYXllcicpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWxmLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2dhbGxlcnknKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuY3JlYXRlUGxheWVyKCdzYnlfcGxheWVyJytmZWVkLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX2l0ZW0nKS5jc3MoJ29wYWNpdHknLDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuY3NzKCdvcGFjaXR5JywxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX2xvYWRpbmcnKS5yZW1vdmVDbGFzcygnc2J5X3BsYXllcl9sb2FkaW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfbGlzdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCcpLm9uKCdtb3VzZWVudGVyJyxmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLmNzcygnei1pbmRleCcsLTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc2J5T3B0aW9ucy5hZG1pbkFqYXhVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdwb3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogc3VibWl0RGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzczogb25TdWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGZsYWdMaWdodGJveCkge1xuICAgICAgICAgICAgaWYgKCFqUXVlcnkoJyNzYnlfbGItcGxheWVyJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgalF1ZXJ5KCcuc2JfeW91dHViZScpLmZpcnN0KCkuYXBwZW5kKCc8ZGl2IGNsYXNzPVwic2J5X2xiLXBsYXllci1sb2FkZWQgc2J5X2xiLXBsYXllclwiIGlkPVwic2J5X2xiLXBsYXllclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXllciA9IG5ldyBZVC5QbGF5ZXIoJ3NieV9sYi1wbGF5ZXInLCB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCcsXG4gICAgICAgICAgICAgICAgdmlkZW9JZDogalF1ZXJ5KHRoaXMpLmZpbmQoJy5zYnlfaXRlbScpLmZpcnN0KCkuYXR0cignZGF0YS12aWRlby1pZCcpLFxuICAgICAgICAgICAgICAgIHBsYXllclZhcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZXN0YnJhbmRpbmc6IDEsIFxuICAgICAgICAgICAgICAgICAgICByZWw6IDAsXG4gICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBhdXRvcGxheVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgd2luZG93LnNieUxpZ2h0Ym94UGxheWVyID0gcGxheWVyO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdy5zYnkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ3NieWZlZWRhbmR5dHJlYWR5Jyk7XG4gICAgICAgIGpRdWVyeSh3aW5kb3cpLnRyaWdnZXIoZXZ0KTtcbiAgICB9XG5cbn07XG5cbi8qKlxuICogUmV0cmlldmVzIGEgc3BlY2lmaWMgYXR0cmlidXRlIHZhbHVlIGZyb20gdGhlIGdpdmVuIEFQSSBkYXRhIG9iamVjdC5cbiAqIFxuICogQHBhcmFtIHtPYmplY3R9IHJvb3RQYXRoXG4gKiBAcGFyYW0ge3N0cmluZ30gYXR0ck5hbWVcbiAqIFxuICogQHJldHVybnMge3N0cmluZ3xib29sZWFufVxuICovXG5cbmZ1bmN0aW9uIGdldFNpbmdsZUFwaURhdGEocm9vdFBhdGgsIGF0dHJOYW1lKSB7XG4gICAgc3dpdGNoKGF0dHJOYW1lKSB7XG4gICAgICAgIGNhc2UgJ2F1dGhvclByb2ZpbGVJbWFnZVVybCc6XG4gICAgICAgICAgICByZXR1cm4gcm9vdFBhdGg/LnNuaXBwZXQ/LmF1dGhvclByb2ZpbGVJbWFnZVVybCA/IHJvb3RQYXRoLnNuaXBwZXQuYXV0aG9yUHJvZmlsZUltYWdlVXJsIDogJyc7XG4gICAgICAgIGNhc2UgJ2F1dGhvckRpc3BsYXlOYW1lJzpcbiAgICAgICAgICAgIHJldHVybiByb290UGF0aD8uc25pcHBldD8uYXV0aG9yRGlzcGxheU5hbWUgPyByb290UGF0aC5zbmlwcGV0LmF1dGhvckRpc3BsYXlOYW1lIDogJyc7XG4gICAgICAgIGNhc2UgJ2F1dGhvckNoYW5uZWxVcmwnOlxuICAgICAgICAgICAgcmV0dXJuIHJvb3RQYXRoPy5zbmlwcGV0Py5hdXRob3JDaGFubmVsVXJsID8gcm9vdFBhdGguc25pcHBldC5hdXRob3JDaGFubmVsVXJsIDogJyc7XG4gICAgICAgIGNhc2UgJ3RleHREaXNwbGF5JzpcbiAgICAgICAgICAgIHJldHVybiByb290UGF0aD8uc25pcHBldD8udGV4dERpc3BsYXkgPyByb290UGF0aC5zbmlwcGV0LnRleHREaXNwbGF5IDogJyc7XG4gICAgICAgIGNhc2UgJ2xpa2VDb3VudCc6XG4gICAgICAgICAgICByZXR1cm4gcm9vdFBhdGg/LnNuaXBwZXQ/Lmxpa2VDb3VudCA/IHJvb3RQYXRoLnNuaXBwZXQubGlrZUNvdW50IDogJyc7XG4gICAgICAgIGNhc2UgJ3B1Ymxpc2hlZEF0JzpcbiAgICAgICAgICAgIHJldHVybiByb290UGF0aD8uc25pcHBldD8ucHVibGlzaGVkQXQgPyByb290UGF0aC5zbmlwcGV0LnB1Ymxpc2hlZEF0IDogJyc7XG4gICAgICAgIGNhc2UgJ3RvdGFsUmVwbHlDb3VudCc6XG4gICAgICAgICAgICByZXR1cm4gcm9vdFBhdGg/LnRvdGFsUmVwbHlDb3VudCA/IHJvb3RQYXRoLnRvdGFsUmVwbHlDb3VudCA6ICcnO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBzdGF0aWMgU1ZHIGltYWdlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgXG4gKiBAcmV0dXJucyB7c3RyaW5nfGJvb2xlYW59IFxuICovXG5mdW5jdGlvbiBnZXRTdGF0aWNTVkcobmFtZSkge1xuXG4gICAgc3dpdGNoKG5hbWUpIHtcbiAgICAgICAgY2FzZSAncHJvZmlsZS1waWN0dXJlJzpcbiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBmaWxsPVwiY3VycmVudENvbG9yXCIgd2lkdGg9XCI4MDBweFwiIGhlaWdodD1cIjgwMHB4XCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgaWQ9XCJfeDMwXzFcIiB2ZXJzaW9uPVwiMS4xXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCI+PHBhdGggZD1cIk0yNTYsMEMxMTQuNjE1LDAsMCwxMTQuNjE1LDAsMjU2czExNC42MTUsMjU2LDI1NiwyNTZzMjU2LTExNC42MTUsMjU2LTI1NlMzOTcuMzg1LDAsMjU2LDB6IE0yNTYsOTAgIGMzNy4wMiwwLDY3LjAzMSwzNS40NjgsNjcuMDMxLDc5LjIxOVMyOTMuMDIsMjQ4LjQzOCwyNTYsMjQ4LjQzOHMtNjcuMDMxLTM1LjQ2OC02Ny4wMzEtNzkuMjE5UzIxOC45OCw5MCwyNTYsOTB6IE0zNjkuNDYsNDAyICBIMTQyLjU0Yy0xMS4zNzgsMC0yMC42MDItOS4yMjQtMjAuNjAyLTIwLjYwMkMxMjEuOTM4LDMyOC4xNTksMTgxLjk1OSwyODUsMjU2LDI4NXMxMzQuMDYyLDQzLjE1OSwxMzQuMDYyLDk2LjM5OCAgQzM5MC4wNjIsMzkyLjc3NiwzODAuODM5LDQwMiwzNjkuNDYsNDAyelwiLz48L3N2Zz4nO1xuICAgICAgICBjYXNlICd0aHVtYnMtdXAnOlxuICAgICAgICAgICAgcmV0dXJuICc8c3ZnIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTUgMTNcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEzLjQxNTkgNC4xODAyN0MxMy43NjEgNC4xODAyNyAxNC4wNzc4IDQuMzIxNzcgMTQuMzY2NCA0LjYwNDc3QzE0LjY1NDkgNC44ODc3NyAxNC43OTkyIDUuMjA3MzggMTQuNzk5MiA1LjU2MzZWNi4yNzA2QzE0Ljc5OTIgNi4zNjQ3MSAxNC43OTAyIDYuNDUxODggMTQuNzcyMiA2LjUzMjFDMTQuNzU0MiA2LjYxMjMyIDE0LjcyNzIgNi42OTI2NiAxNC42OTEyIDYuNzczMUwxMi42ODQgMTEuNDkwOEMxMi41ODQ1IDExLjc0NDkgMTIuNDE4MSAxMS45NDg2IDEyLjE4NDkgMTIuMTAxOUMxMS45NTE3IDEyLjI1NTIgMTEuNjkgMTIuMzMxOCAxMS4zOTk5IDEyLjMzMThINS4xNTkzOEM0Ljc3MjgyIDEyLjMzMTggNC40NDU2NiAxMi4yMDA2IDQuMTc3ODggMTEuOTM4M0MzLjkwOTk5IDExLjY3NTkgMy43NzYwNCAxMS4zNDYgMy43NzYwNCAxMC45NDg0VjQuNzU2MUMzLjc3NjA0IDQuNTYyNzcgMy44MTMzMiA0LjM4MDQ5IDMuODg3ODggNC4yMDkyN0MzLjk2MjU0IDQuMDM4MDQgNC4wNjQ3NyAzLjg4NzU0IDQuMTk0NTQgMy43NTc3N0w3LjI4OTM4IDAuNjYyOTMyQzcuNTE4NiAwLjQzMTA0MyA3Ljc5NDI3IDAuMjgxMzIxIDguMTE2MzggMC4yMTM3NjVDOC40Mzg0OSAwLjE0NjMyMSA4LjcxNDE2IDAuMTc4OTg4IDguOTQzMzggMC4zMTE3NjVDOS4yMjU0OSAwLjQ2NDIxIDkuNDA5MzIgMC42OTU5MzIgOS40OTQ4OCAxLjAwNjkzQzkuNTgwMzIgMS4zMTc5MyA5LjU4OTk5IDEuNjI4MDQgOS41MjM4OCAxLjkzNzI3TDkuMDk1NTQgNC4xODAyN0gxMy40MTU5Wk0xLjM0NDA0IDEyLjMzMThDMS4wMTM5MyAxMi4zMzE4IDAuNzI2NzY3IDEyLjIwOTcgMC40ODI1NDQgMTEuOTY1NEMwLjIzODMyMiAxMS43MjEyIDAuMTE2MjExIDExLjQzNCAwLjExNjIxMSAxMS4xMDM5VjUuNDA4MjdDMC4xMTYyMTEgNS4wNzgwNCAwLjIzNjk4OSA0Ljc5MDgyIDAuNDc4NTQ0IDQuNTQ2NkMwLjcyMDEgNC4zMDIzOCAxLjAwNDY2IDQuMTgwMjcgMS4zMzIyMSA0LjE4MDI3SDEuMzQ4MDRDMS42NzgyNyA0LjE4MDI3IDEuOTY1NDkgNC4zMDIzOCAyLjIwOTcxIDQuNTQ2NkMyLjQ1MzkzIDQuNzkwODIgMi41NzYwNCA1LjA3ODA0IDIuNTc2MDQgNS40MDgyN1YxMS4xMDM5QzIuNTc2MDQgMTEuNDM0IDIuNDUzOTMgMTEuNzIxMiAyLjIwOTcxIDExLjk2NTRDMS45NjU0OSAxMi4yMDk3IDEuNjc4MjcgMTIuMzMxOCAxLjM0ODA0IDEyLjMzMThIMS4zNDQwNFpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPjwvc3ZnPic7XG4gICAgICAgIGNhc2UgJ2FuZ2xlLWRvd24nOlxuICAgICAgICAgICAgcmV0dXJuICc8c3ZnIHdpZHRoPVwiOFwiIGhlaWdodD1cIjZcIiB2aWV3Qm94PVwiMCAwIDggNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMC45NCAwLjcyNjY1NEw0IDMuNzc5OTlMNy4wNiAwLjcyNjY1NEw4IDEuNjY2NjVMNCA1LjY2NjY1TDAgMS42NjY2NUwwLjk0IDAuNzI2NjU0WlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+PC9zdmc+JztcbiAgICAgICAgY2FzZSAneW91dHViZSc6XG4gICAgICAgICAgICByZXR1cm4gJzxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxNCAxMVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNS42NjY3MSA3LjVMOS4xMjY3MSA1LjVMNS42NjY3MSAzLjVWNy41Wk0xMy4zNzM0IDIuMjhDMTMuNDYgMi41OTMzNCAxMy41MiAzLjAxMzM0IDEzLjU2IDMuNTQ2NjdDMTMuNjA2NyA0LjA4IDEzLjYyNjcgNC41NCAxMy42MjY3IDQuOTRMMTMuNjY2NyA1LjVDMTMuNjY2NyA2Ljk2IDEzLjU2IDguMDMzMzQgMTMuMzczNCA4LjcyQzEzLjIwNjcgOS4zMiAxMi44MiA5LjcwNjY3IDEyLjIyIDkuODczMzRDMTEuOTA2NyA5Ljk2IDExLjMzMzQgMTAuMDIgMTAuNDUzNCAxMC4wNkM5LjU4NjcxIDEwLjEwNjcgOC43OTMzNyAxMC4xMjY3IDguMDYwMDQgMTAuMTI2N0w3LjAwMDA0IDEwLjE2NjdDNC4yMDY3MSAxMC4xNjY3IDIuNDY2NzEgMTAuMDYgMS43ODAwNCA5Ljg3MzM0QzEuMTgwMDQgOS43MDY2NyAwLjc5MzM3NCA5LjMyIDAuNjI2NzA3IDguNzJDMC41NDAwNDEgOC40MDY2NyAwLjQ4MDA0MSA3Ljk4NjY3IDAuNDQwMDQxIDcuNDUzMzRDMC4zOTMzNzQgNi45MiAwLjM3MzM3NCA2LjQ2IDAuMzczMzc0IDYuMDZMMC4zMzMzNzQgNS41QzAuMzMzMzc0IDQuMDQgMC40NDAwNDEgMi45NjY2NyAwLjYyNjcwNyAyLjI4QzAuNzkzMzc0IDEuNjggMS4xODAwNCAxLjI5MzM0IDEuNzgwMDQgMS4xMjY2N0MyLjA5MzM3IDEuMDQgMi42NjY3MSAwLjk4MDAwMiAzLjU0NjcxIDAuOTQwMDAyQzQuNDEzMzcgMC44OTMzMzYgNS4yMDY3MSAwLjg3MzMzNiA1Ljk0MDA0IDAuODczMzM2TDcuMDAwMDQgMC44MzMzMzZDOS43OTMzNyAwLjgzMzMzNiAxMS41MzM0IDAuOTQwMDAzIDEyLjIyIDEuMTI2NjdDMTIuODIgMS4yOTMzNCAxMy4yMDY3IDEuNjggMTMuMzczNCAyLjI4WlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+PC9zdmc+JztcbiAgICAgICAgY2FzZSAnY3Jvc3MnOlxuICAgICAgICAgICAgcmV0dXJuICc8c3ZnIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTUgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTE0LjI1IDEuNDFMMTIuODQgMEw3LjI1IDUuNTlMMS42NiAwTDAuMjUgMS40MUw1Ljg0IDdMMC4yNSAxMi41OUwxLjY2IDE0TDcuMjUgOC40MUwxMi44NCAxNEwxNC4yNSAxMi41OUw4LjY2IDdMMTQuMjUgMS40MVpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPjwvc3ZnPic7XG4gICAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICAgICAgcmV0dXJuICc8c3ZnIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyNlwiIHZpZXdCb3g9XCIwIDAgMjggMjZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTMuMzMzNDEgMjJDMi42MDAwOCAyMiAxLjk3MjMgMjEuNzM4OSAxLjQ1MDA4IDIxLjIxNjdDMC45Mjc4NTkgMjAuNjk0NCAwLjY2Njc0OCAyMC4wNjY3IDAuNjY2NzQ4IDE5LjMzMzNWMy4zMzMzNEMwLjY2Njc0OCAyLjYgMC45Mjc4NTkgMS45NzIyMyAxLjQ1MDA4IDEuNDUwMDFDMS45NzIzIDAuOTI3NzgzIDIuNjAwMDggMC42NjY2NzIgMy4zMzM0MSAwLjY2NjY3MkgyNC42NjY3QzI1LjQwMDEgMC42NjY2NzIgMjYuMDI3OSAwLjkyNzc4MyAyNi41NTAxIDEuNDUwMDFDMjcuMDcyMyAxLjk3MjIzIDI3LjMzMzQgMi42IDI3LjMzMzQgMy4zMzMzNFYyNC4xQzI3LjMzMzQgMjQuNyAyNy4wNjEyIDI1LjExNjcgMjYuNTE2NyAyNS4zNUMyNS45NzIzIDI1LjU4MzMgMjUuNDg5IDI1LjQ4ODkgMjUuMDY2NyAyNS4wNjY3TDIyLjAwMDEgMjJIMy4zMzM0MVpNMjMuMTMzNCAxOS4zMzMzTDI0LjY2NjcgMjAuODMzM1YzLjMzMzM0SDMuMzMzNDFWMTkuMzMzM0gyMy4xMzM0WlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+PC9zdmc+JztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG59XG5cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIEhUTUwgdGVtcGxhdGUgZm9yIGEgc2luZ2xlIGNvbW1lbnQuXG4gKiBcbiAqIEBwYXJhbSB7c3RyaW5nfSBhdXRob3JQcm9maWxlSW1hZ2VVcmxcbiAqIEBwYXJhbSB7c3RyaW5nfSBhdXRob3JEaXNwbGF5TmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IGF1dGhvckNoYW5uZWxVcmxcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0RGlzcGxheVxuICogQHBhcmFtIHtudW1iZXJ9IGxpa2VDb3VudFxuICogQHBhcmFtIHtzdHJpbmd9IHB1Ymxpc2hlZEF0XG4gKiBAcGFyYW0ge251bWJlcn0gdG90YWxSZXBseUNvdW50XG4gKiBcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGNvbW1lbnRTaW5nbGVUZW1wbGF0ZShhdXRob3JQcm9maWxlSW1hZ2VVcmwsIGF1dGhvckRpc3BsYXlOYW1lLCBhdXRob3JDaGFubmVsVXJsLCB0ZXh0RGlzcGxheSwgbGlrZUNvdW50LCBwdWJsaXNoZWRBdCwgdG90YWxSZXBseUNvdW50KSB7XG5cbiAgICBjb25zdCBkdW1teVByb2ZpbGVQaWMgPSBhdXRob3JQcm9maWxlSW1hZ2VVcmwgPyBgPGltZyBzcmM9JHthdXRob3JQcm9maWxlSW1hZ2VVcmx9IGxvYWRpbmc9XCJsYXp5XCIgcmVmZXJyZXJQb2xpY3k9XCJuby1yZWZlcnJlclwiLz5gIDogZ2V0U3RhdGljU1ZHKCdwcm9maWxlLXBpY3R1cmUnKTtcbiAgICBjb25zdCByZXBsaWVzID0gdG90YWxSZXBseUNvdW50ID8gYDxidXR0b24gY2xhc3M9XCJzYnktcmVwbGllc1wiPiR7dG90YWxSZXBseUNvdW50ID8gdG90YWxSZXBseUNvdW50IDogMCB9IFJlcGxpZXMgJHtnZXRTdGF0aWNTVkcoJ2FuZ2xlLWRvd24nKX08L2J1dHRvbj5gIDogJyc7XG5cbiAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNieS1jb21tZW50LXByb2ZpbGUtcGljXCI+XG4gICAgICAgICAgICAgICAgJHtkdW1teVByb2ZpbGVQaWN9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYnktY29tbWVudC1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cIiR7YXV0aG9yQ2hhbm5lbFVybH1cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInNieS1jb21tZW50LXVzZXItbmFtZVwiPiR7YXV0aG9yRGlzcGxheU5hbWV9PC9hPlxuICAgICAgICAgICAgICAgIDxzcGFuPiR7dGltZUFnbyhwdWJsaXNoZWRBdCl9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNieS1jb21tZW50LXRleHRcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInNieS1yZWFkLW1vcmUtdGFyZ2V0XCI+JHt0ZXh0RGlzcGxheX08L3A+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNieS1yZWFkLW1vcmUtdHJpZ2dlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2J5LXJlYWQtbW9yZS10ZXh0XCI+UmVhZCBNb3JlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzYnktcmVhZC1sZXNzLXRleHRcIj5SZWFkIExlc3M8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYnktY29tbWVudC1ib3R0b21cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNieS1jb21tZW50LWxpa2VzXCI+XG4gICAgICAgICAgICAgICAgICAgICR7Z2V0U3RhdGljU1ZHKCd0aHVtYnMtdXAnKX0gJHtsaWtlQ291bnQgPyBmb3JtYXRMYXJnZU51bWJlcihsaWtlQ291bnQpIDogMCB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICR7cmVwbGllc31cbiAgICAgICAgICAgIDwvZGl2PlxuICAgIGA7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBIVE1MIHRlbXBsYXRlIHdoZW4gbm8gY29tbWVudHMgYXJlIGZvdW5kLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gbm9Db21tZW50c1RlbXBsYXRlKCkge1xuICAgIHJldHVybiBgXG4gICAgICAgIDxoNCBjbGFzcz1cInNieS1jb21tZW50cy1zdWItaGVhZGluZ1wiPkNvbW1lbnRzPC9oND5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNieS1uby1jb21tZW50c1wiPlxuICAgICAgICAgICAgJHtnZXRTdGF0aWNTVkcoJ21lc3NhZ2UnKX1cbiAgICAgICAgICAgIDxwPlRoZXJlIGFyZSBubyBjb21tZW50cyB0byBkaXNwbGF5PC9wPlxuICAgICAgICA8L2Rpdj5gO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgSFRNTCB0ZW1wbGF0ZSB3aGVuIHRoZXJlIGlzIGFuIGVycm9yIHJldHJpdmluZyBjb21tZW50cy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlcnJvckNvbW1lbnRUZW1wbGF0ZShlcnJvcikge1xuICAgIHJldHVybiBgXG4gICAgICAgIDxoNCBjbGFzcz1cInNieS1jb21tZW50cy1zdWItaGVhZGluZ1wiPkNvbW1lbnRzPC9oND5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNieS1uby1jb21tZW50c1wiPlxuICAgICAgICAgICAgPHA+JHtlcnJvcn08L3A+XG4gICAgICAgIDwvZGl2PmA7XG59XG5cbi8qKlxuICogRm9ybWF0IGRhdGUgYW5kIHRpbWUgZm9yIElTTyA4NjAxXG4gKiBcbiAqIEBwYXJhbSB0aW1lc3RhbXBcbiAqIFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gdGltZUFnbyh0aW1lc3RhbXApIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHBhc3QgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIGNvbnN0IGRpZmZNcyA9IG5vdyAtIHBhc3Q7XG5cbiAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGdldCB0aW1lIHVuaXRzXG4gICAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IoZGlmZk1zIC8gMTAwMCk7XG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IobWludXRlcyAvIDYwKTtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihob3VycyAvIDI0KTtcbiAgICBjb25zdCBtb250aHMgPSBNYXRoLmZsb29yKGRheXMgLyAzMCk7XG4gICAgY29uc3QgeWVhcnMgPSBNYXRoLmZsb29yKG1vbnRocyAvIDEyKTtcblxuICAgIC8vIERldGVybWluZSB0aGUgbGFyZ2VzdCB1bml0IG9mIHRpbWUgdGhhdCBhcHBsaWVzXG4gICAgaWYgKHllYXJzID4gMCkge1xuICAgICAgICByZXR1cm4gYCR7eWVhcnN9IHllYXIke3llYXJzID4gMSA/ICdzJyA6ICcnfSBhZ29gO1xuICAgIH1cbiAgICBpZiAobW9udGhzID4gMCkge1xuICAgICAgICByZXR1cm4gYCR7bW9udGhzfSBtb250aCR7bW9udGhzID4gMSA/ICdzJyA6ICcnfSBhZ29gO1xuICAgIH1cbiAgICBpZiAoZGF5cyA+IDApIHtcbiAgICAgICAgcmV0dXJuIGAke2RheXN9IGRheSR7ZGF5cyA+IDEgPyAncycgOiAnJ30gYWdvYDtcbiAgICB9XG4gICAgaWYgKGhvdXJzID4gMCkge1xuICAgICAgICByZXR1cm4gYCR7aG91cnN9IGhvdXIke2hvdXJzID4gMSA/ICdzJyA6ICcnfSBhZ29gO1xuICAgIH1cbiAgICBpZiAobWludXRlcyA+IDApIHtcbiAgICAgICAgcmV0dXJuIGAke21pbnV0ZXN9IG1pbnV0ZSR7bWludXRlcyA+IDEgPyAncycgOiAnJ30gYWdvYDtcbiAgICB9XG4gICAgaWYgKHNlY29uZHMgPiAwKSB7XG4gICAgICAgIHJldHVybiBgJHtzZWNvbmRzfSBzZWNvbmQke3NlY29uZHMgPiAxID8gJ3MnIDogJyd9IGFnb2A7XG4gICAgfVxuXG4gICAgcmV0dXJuICdqdXN0IG5vdyc7XG59XG5cbi8qKlxuICogQ29udmVydHMgcGxhaW4gdGV4dCBpbnRvIEhUTUwgd2l0aCBjbGlja2FibGUgbGlua3MuXG4gKiBcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gKiBcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFxuICovXG5mdW5jdGlvbiBhZGRMaW5rc1RvdGV4dCh0ZXh0KSB7XG4gICAgLy9BZGQgbGlua3MgdG8gdGhlIGNhcHRpb25cbiAgICBpZighdGV4dCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvKD4jKS9nLCc+ICMnKTtcblxuICAgIHJldHVybiBzYnlMaW5raWZ5KHRleHQpO1xufVxuXG4vKipcbiAqIENvbnZlcnQgVW5peCB0aW1lc3RhbXAgdG8gbWlsbGlzZWNvbmRzXG4gKiBAcGFyYW0gdGltZXN0YW1wXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGNvbnZlcnRVbml4VG9Ncyh0aW1lc3RhbXApIHtcblxuICAgIGlmKCAhIHRpbWVzdGFtcCApIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0ZShwYXJzZUludCh0aW1lc3RhbXApICogMTAwMCk7XG5cbn1cblxuLyoqXG4gKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIGFjY29yZGlvbiBzZWN0aW9ucyBiYXNlZCBvbiB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0XG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdHJpZ2dlciBcbiAqIFxuICogQHJldHVybnMge3ZvaWR9IFxuICovXG5mdW5jdGlvbiB0b2dnbGVBY2NvcmRpb24oY2xhc3NOYW1lLCB0YXJnZXQsIHBhcmVudCAsdHJpZ2dlciAgKSB7XG4gICAgalF1ZXJ5KHRyaWdnZXIpLmNzcygnZGlzcGxheScsICdub25lJyk7XG4gICAgalF1ZXJ5KHRhcmdldCkudW5iaW5kKCdjbGljaycpO1xuICAgIGpRdWVyeSh0YXJnZXQpLmNsaWNrKGZ1bmN0aW9uKCl7XG4gICAgICAgIGpRdWVyeSh0aGlzKS50b2dnbGVDbGFzcyhjbGFzc05hbWUgKyAnLXRyaWdnZXInKTtcbiAgICAgICAgalF1ZXJ5KHRoaXMpLmNsb3Nlc3QocGFyZW50KS5maW5kKHRyaWdnZXIpLnRvZ2dsZSgpO1xuICAgIH0pO1xufVxuLyoqXG4gKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIFwiUmVhZCBNb3JlXCIgYnV0dG9uc1xuICogXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gdG9nZ2xlUmVhZE1vcmUoKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0galF1ZXJ5KCcuc2J5LXJlYWQtbW9yZS10YXJnZXQnKTtcbiAgICBjb25zdCB0cmlnZ2VyQ2xhc3NOYW1lID0gJy5zYnktcmVhZC1tb3JlLXRyaWdnZXInO1xuXG4gICAgdGFyZ2V0LmVhY2goZnVuY3Rpb24oZSkge1xuICAgICAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0galF1ZXJ5KHRoaXMpWzBdO1xuXG4gICAgICAgIGNvbnN0IHBhcmFncmFwaEhlaWdodCA9IGN1cnJlbnRUYXJnZXQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICBjb25zdCBjbGllbnRIZWlnaHQgPSBjdXJyZW50VGFyZ2V0Lm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3QgaGFzTW9yZVRoYW5Gb3VyTGluZXMgPSBwYXJhZ3JhcGhIZWlnaHQgPiBjbGllbnRIZWlnaHQgJiYgcGFyYWdyYXBoSGVpZ2h0ID4gY2xpZW50SGVpZ2h0ICsgMTsgLy8gY2xpZW50SGVpZ2h0ICsgMSB0byBmaXggZmlyZWZveCBjbGllbnRIZWlnaHQgY2FsY3VsYXRlIGlzc3VlLlxuXG4gICAgICAgIGlmIChoYXNNb3JlVGhhbkZvdXJMaW5lcykge1xuICAgICAgICAgICAgY29uc3QgdHJpZ2dlciA9IGpRdWVyeSh0aGlzKS5wYXJlbnQoKS5maW5kKHRyaWdnZXJDbGFzc05hbWUpO1xuXG4gICAgICAgICAgICB0cmlnZ2VyLnVuYmluZCgnY2xpY2snKTtcbiAgICAgICAgICAgIHRyaWdnZXIuY2xpY2soZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLnRvZ2dsZUNsYXNzKCdzYnktcmVhZC1tb3JlLXRyaWdnZXItYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLnBhcmVudCgpLmZpbmQoJy5zYnktcmVhZC1tb3JlLXRhcmdldCcpLnRvZ2dsZUNsYXNzKCdzYnktcmVhZC1tb3JlLXRhcmdldC1hY3RpdmUnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLnBhcmVudCgpLmZpbmQodHJpZ2dlckNsYXNzTmFtZSkuaGlkZSgpO1xuICAgICAgICB9XG5cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgY29sb3Igc2NoZW1lIGNsYXNzIHRvIHRoZSBsaWdodGJveCBiYXNlZCBvbiB0aGUgZmxhZyBwcm92aWRlZC5cbiAqIFxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yU2NoZW1lIFxuICogQHBhcmFtIHtib29sZWFufSBmbGFnXG4gKi9cbmZ1bmN0aW9uIExpZ2h0Ym94Q29sb3JTY2hlbWUoY29sb3JTY2hlbWUsIGZsYWcpIHtcblxuICAgIGNvbnN0IGNvbW1lbnRXcmFwID0galF1ZXJ5KCcuc2J5X2xiLWNhcHRpb24nKTtcbiAgICBjb25zdCBjb2xvclNjaGVtZUNsYXNzTmFtZSA9ICdzYnktbGItZGFyay1zY2hlbWUnO1xuXG4gICAgaWYoIGZhbHNlID09PSBmbGFnKSB7XG4gICAgICAgIGNvbW1lbnRXcmFwLnJlbW92ZUNsYXNzKGNvbG9yU2NoZW1lQ2xhc3NOYW1lKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmKCAnZGFyaycgPT09IGNvbG9yU2NoZW1lICYmIHRydWUgPT09IGZsYWcpIHtcbiAgICAgICAgY29tbWVudFdyYXAuYWRkQ2xhc3MoY29sb3JTY2hlbWVDbGFzc05hbWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlc2V0cyB0aGUgYm9keSdzIG92ZXJmbG93IHN0eWxlIGFuZCB0aGUgbGlnaHRib3ggY29sb3Igc2NoZW1lIHdoZW4gdGhlIGxpZ2h0Ym94IGlzIGNsb3NlZC5cbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gbGlnaHRib3hPbkNsb3NlKCkge1xuICAgIGpRdWVyeSgnYm9keScpLmNzcygnb3ZlcmZsb3cnLCAnYXV0bycpO1xuICAgIExpZ2h0Ym94Q29sb3JTY2hlbWUoJycsIGZhbHNlKTtcbiAgICBqUXVlcnkoJy5zYnlfZ2Rwcl9ub3RpY2UnKS5yZW1vdmUoKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxheW91dCB0eXBlIG9mIHRoZSBjbG9zZXN0IGFuY2VzdG9yIGVsZW1lbnQgd2l0aCBhIHNwZWNpZmljIGxheW91dCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2pRdWVyeXxIVE1MRWxlbWVudH0gdGFyZ2V0XG4gKiBAcmV0dXJucyB7c3RyaW5nfGJvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGdldExheW91dCh0YXJnZXQpIHtcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gdGFyZ2V0LmNsb3Nlc3QoJy5zYl95b3V0dWJlJyk7XG5cbiAgICBpZiggY3VycmVudFRhcmdldC5oYXNDbGFzcygnc2J5X2xheW91dF9saXN0JykgKSB7XG4gICAgICAgIHJldHVybiAnbGlzdCdcbiAgICB9XG5cbiAgICBpZiggY3VycmVudFRhcmdldC5oYXNDbGFzcygnc2J5X2xheW91dF9ncmlkJykgKSB7XG4gICAgICAgIHJldHVybiAnZ3JpZCdcbiAgICB9XG5cbiAgICBpZiggY3VycmVudFRhcmdldC5oYXNDbGFzcygnc2J5X2xheW91dF9jYXJvdXNlbCcpICkge1xuICAgICAgICByZXR1cm4gJ2Nhcm91c2VsJ1xuICAgIH1cblxuICAgIGlmKCBjdXJyZW50VGFyZ2V0Lmhhc0NsYXNzKCdzYnlfbGF5b3V0X2dhbGxlcnknKSApIHtcbiAgICAgICAgcmV0dXJuICdnYWxsZXJ5J1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBPcGVucyBhbmQgZGlzcGxheXMgdGhlIGNvbW1lbnRzIHNlY3Rpb24gb24gdGhlIHBhZ2UuXG4gKiBcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBvcGVuQ29tbWVudHMoKSB7XG5cbiAgICBpZiggISB3aW5kb3cuc2J5T3B0aW9ucy5pc1BybyApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBvcGVuQ29tbWVudFRyaWdnZXIgPSBqUXVlcnkoJy5zYnktY29tbWVudHMtdHJpZ2dlcicpO1xuICAgIG9wZW5Db21tZW50VHJpZ2dlci51bmJpbmQoJ2NsaWNrJyk7XG4gICAgb3BlbkNvbW1lbnRUcmlnZ2VyLmNsaWNrKGZ1bmN0aW9uKCkge1xuICAgICAgICBjb25zdCBjb21tZW50V3JhcENsYXNzID0gJy5zYnktY29tbWVudHMtd3JhcCc7XG4gICAgICAgIGNvbnN0IGNvbW1lbnRTZWNpb25XcmFwID0galF1ZXJ5KHRoaXMpLmNsb3Nlc3QoJy5zYnktY29tbWVudC1jb250YWluZXInKTtcbiAgICAgICAgY29uc3QgY29tbWVudFNlY3Rpb24gPSAgY29tbWVudFNlY2lvbldyYXAuZmluZChjb21tZW50V3JhcENsYXNzKTtcbiAgICAgICAgY29uc3QgY3VycmVudExheW91dCA9ICBnZXRMYXlvdXQoalF1ZXJ5KHRoaXMpKTtcblxuICAgICAgICBpZiggY29tbWVudFNlY3Rpb24udGV4dCgpLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICBsZXQgY29tbWVudENvdW50O1xuICAgICAgICAgICAgbGV0IHZpZGVvSWQ7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0O1xuXG4gICAgICAgICAgICBpZiggJ2dhbGxlcnknID09PSBjdXJyZW50TGF5b3V0ICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFBhcmVudCA9IGpRdWVyeSh0aGlzKS5jbG9zZXN0KCcuc2JfeW91dHViZScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSB0YXJnZXRQYXJlbnQuZmluZCgnLnNieV9pdGVtLnNieV9jdXJyZW50Jyk7XG5cbiAgICAgICAgICAgICAgICBpZiggdGFyZ2V0UGFyZW50ICYmIGN1cnJlbnRUYXJnZXQgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvSWQgPSBjaGVja1ZhbHVlKGN1cnJlbnRUYXJnZXQuYXR0cignZGF0YS12aWRlby1pZCcpKTtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudENvdW50ID0gY2hlY2tWYWx1ZShjdXJyZW50VGFyZ2V0LmZpbmQoJ2EnKS5hdHRyKCdkYXRhLWNvbW1lbnQtY291bnQnKSk7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldFBhcmVudC5maW5kKGNvbW1lbnRXcmFwQ2xhc3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoICdsaXN0JyA9PT0gY3VycmVudExheW91dCApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0galF1ZXJ5KHRoaXMpLmNsb3Nlc3QoJy5zYnlfaXRlbScpO1xuXG4gICAgICAgICAgICAgICAgaWYoIGN1cnJlbnRUYXJnZXQgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvSWQgPSBjaGVja1ZhbHVlKGN1cnJlbnRUYXJnZXQuYXR0cignZGF0YS12aWRlby1pZCcpKTtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudENvdW50ID0gY2hlY2tWYWx1ZShjdXJyZW50VGFyZ2V0LmZpbmQoJ2EnKS5hdHRyKCdkYXRhLWNvbW1lbnQtY291bnQnKSk7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQuZmluZChjb21tZW50V3JhcENsYXNzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBSZXNldCBhbGwgb3RoZXIgY29tbWVudHMgb3BlbmVkIFxuICAgICAgICAgICAgICAgIHJlc2V0Q29tbWVudHMoalF1ZXJ5KHRoaXMpLmNsb3Nlc3QoJy5zYl95b3V0dWJlJykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBhdHRzID0gY2hlY2tWYWx1ZShqUXVlcnkodGhpcykuY2xvc2VzdCgnLnNiX3lvdXR1YmUnKS5hdHRyKCdkYXRhLXNob3J0Y29kZS1hdHRzJykpO1xuXG4gICAgICAgICAgICBnZW5lcmF0ZUNvbW1lbnRTZWN0aW9uKHZpZGVvSWQsIGF0dHMsIHRhcmdldCwgY29tbWVudENvdW50KTtcbiAgICAgICAgICAgIGNvbW1lbnRTZWN0aW9uLmFkZENsYXNzKCdzYnktY29tbWVudHMtYWN0aXZlJyk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbW1lbnRTZWN0aW9uLnRvZ2dsZSgpO1xuICAgICAgICAgICAgY29tbWVudFNlY3Rpb24udG9nZ2xlQ2xhc3MoJ3NieS1jb21tZW50cy1hY3RpdmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRUZXh0U3RhdGUgPSBjb21tZW50U2VjaW9uV3JhcC5maW5kKCcuc2J5LWNvbW1lbnRzLXRyaWdnZXIgcCcpO1xuXG4gICAgICAgIGlmKCBjdXJyZW50VGV4dFN0YXRlICkge1xuICAgICAgICAgICAgY2hhbmdlVGV4dE9uVG9nZ2xlKGN1cnJlbnRUZXh0U3RhdGUsICdTaG93IENvbW1lbnRzJywgJ0hpZGUgQ29tbWVudHMnKTtcbiAgICAgICAgfVxuXG4gICAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHZhbGlkIHZhbHVlIG9yIGFuIGVtcHR5IHN0cmluZyBiYXNlZCBvbiB0aGUgaW5wdXQuXG4gKiBAcGFyYW0geyp9IGVsZW1lbnQgXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBcbiAqL1xuZnVuY3Rpb24gY2hlY2tWYWx1ZShlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQgPyBlbGVtZW50IDogJyc7XG59XG5cbi8qKlxuICogU2VuZHMgYW4gQUpBWCByZXF1ZXN0IHdpdGggdGhlIHNwZWNpZmllZCBkYXRhIGFuZCBoYW5kbGVzIHRoZSByZXNwb25zZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdWJtaXREYXRhXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvblN1Y2Nlc3MgXG4gKiBcbiAqIEByZXR1cm5zIHt2b2lkfSBcbiAqL1xuZnVuY3Rpb24gc2J5QWpheChzdWJtaXREYXRhLG9uU3VjY2Vzcykge1xuICAgIGpRdWVyeS5hamF4KHtcbiAgICAgICAgdXJsOiBzYnlPcHRpb25zLmFkbWluQWpheFVybCxcbiAgICAgICAgdHlwZTogJ3Bvc3QnLFxuICAgICAgICBkYXRhOiBzdWJtaXREYXRhLFxuICAgICAgICBzdWNjZXNzOiBvblN1Y2Nlc3NcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBGZXRjaGVzIGFuZCBnZW5lcmF0ZXMgYSBjb21tZW50IHNlY3Rpb24gZm9yIGEgZ2l2ZW4gdmlkZW8uXG4gKiBcbiAqIEBwYXJhbSB7c3RyaW5nfSB2aWRlb0lkIFxuICogQHBhcmFtIHtPYmplY3R9IGF0dHNcbiAqIEBwYXJhbSB7alF1ZXJ5fSB0YXJnZXRcbiAqIFxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gZ2VuZXJhdGVDb21tZW50U2VjdGlvbih2aWRlb0lkLCBhdHRzLCB0YXJnZXQsIGNvbW1lbnRDb3VudCkge1xuXG4gICAgc3VibWl0RGF0YSA9IHtcbiAgICAgICAgYWN0aW9uOiAnc2J5X2dldF9jb21tZW50cycsXG4gICAgICAgIHZpZGVvX2lkOiB2aWRlb0lkLFxuICAgICAgICBhdHRzOiBhdHRzXG4gICAgfTtcblxuICAgIGxldCBvblN1Y2Nlc3MgPSBmdW5jdGlvbiAoZGF0YSkge1xuXG4gICAgICAgIGlmKCAhIGRhdGEgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiggZmFsc2UgPT09IGRhdGEuc3VjY2VzcyApIHtcbiAgICAgICAgICAgIHRhcmdldC5odG1sKGVycm9yQ29tbWVudFRlbXBsYXRlKGRhdGEuZGF0YSkpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tbWVudEpzb24gPSBKU09OLnBhcnNlKGRhdGEpO1xuXG4gICAgICAgIGlmKCAhIGNvbW1lbnRKc29uICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIGNvbW1lbnRKc29uPy5zdWNjZXNzICYmIGZhbHNlID09PSBjb21tZW50SnNvbi5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0YXJnZXQuaHRtbChlcnJvckNvbW1lbnRUZW1wbGF0ZShjb21tZW50SnNvbi5kYXRhKSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiggY29tbWVudEpzb24/LmVycm9yICYmIGNvbW1lbnRKc29uPy5lcnJvcj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9IGNvbW1lbnRKc29uLmVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICBpZiggZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdkaXNhYmxlZCBjb21tZW50cycpICkge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICdDb21tZW50cyBhcmUgdHVybmVkIG9mZidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldC5odG1sKGVycm9yQ29tbWVudFRlbXBsYXRlKGVycm9yTWVzc2FnZSkpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm9PZkl0ZW1zID0gY29tbWVudEpzb24/Lml0ZW1zICYmIGNvbW1lbnRKc29uPy5pdGVtcy5sZW5ndGggPyBjb21tZW50SnNvbi5pdGVtcy5sZW5ndGggOiAnJztcbiAgICAgICAgY29uc3QgdmlkZW9MaW5rID0gdmlkZW9JZCA/IGBodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PSR7dmlkZW9JZH1gIDogJyc7XG5cbiAgICAgICAgaWYoISBub09mSXRlbXMgKSB7XG4gICAgICAgICAgICB0YXJnZXQuaHRtbChub0NvbW1lbnRzVGVtcGxhdGUoKSk7XG4gICAgICAgICAgICB0b2dnbGVSZWFkTW9yZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudENvbW1lbnRDb3VudCA9IGNvbW1lbnRDb3VudCA/IGAoICR7Y29tbWVudENvdW50fSApYCA6ICcnO1xuXG4gICAgICAgIGxldCBjb21tZW50SHRtbCA9IGA8aDQgY2xhc3M9XCJzYnktY29tbWVudHMtc3ViLWhlYWRpbmdcIj5Db21tZW50cyAke2N1cnJlbnRDb21tZW50Q291bnR9PC9oND48dWwgY2xhc3M9XCJzYnktY29tbWVudHNcIj5gO1xuICAgICAgICBqUXVlcnkuZWFjaChjb21tZW50SnNvbi5pdGVtcywgZnVuY3Rpb24oaW5kZXgsIGNvbW1lbnQpIHtcblxuICAgICAgICAgICAgY29uc3QgdG9wTGV2ZWxDb21tZW50UGF0aCA9IGNvbW1lbnQ/LnNuaXBwZXQ/LnRvcExldmVsQ29tbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHRvcExldmVsQ29tbWVudFNuaXBwZXQgPSBjb21tZW50Py5zbmlwcGV0O1xuXG4gICAgICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgSFRNTCBmb3IgZWFjaCBjb21tZW50XG4gICAgICAgICAgICBjb21tZW50SHRtbCArPSBgPGxpIGNsYXNzPVwic2J5LWNvbW1lbnRcIj4ke2NvbW1lbnRTaW5nbGVUZW1wbGF0ZSggZ2V0U2luZ2xlQXBpRGF0YSh0b3BMZXZlbENvbW1lbnRQYXRoLCAnYXV0aG9yUHJvZmlsZUltYWdlVXJsJyksIGdldFNpbmdsZUFwaURhdGEodG9wTGV2ZWxDb21tZW50UGF0aCwgJ2F1dGhvckRpc3BsYXlOYW1lJyksIGdldFNpbmdsZUFwaURhdGEodG9wTGV2ZWxDb21tZW50UGF0aCwgJ2F1dGhvckNoYW5uZWxVcmwnKSwgZ2V0U2luZ2xlQXBpRGF0YSh0b3BMZXZlbENvbW1lbnRQYXRoLCAndGV4dERpc3BsYXknKSwgZ2V0U2luZ2xlQXBpRGF0YSh0b3BMZXZlbENvbW1lbnRQYXRoLCAnbGlrZUNvdW50JyksIGdldFNpbmdsZUFwaURhdGEodG9wTGV2ZWxDb21tZW50UGF0aCwgJ3B1Ymxpc2hlZEF0JyksIGdldFNpbmdsZUFwaURhdGEodG9wTGV2ZWxDb21tZW50U25pcHBldCwgJ3RvdGFsUmVwbHlDb3VudCcpKX1cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInNieS1yZXBseS1jb21tZW50c1wiPmA7XG5cbiAgICAgICAgICAgIGlmKCBjb21tZW50Py5yZXBsaWVzPy5jb21tZW50cyApIHtcbiAgICAgICAgICAgICAgICAvLyBVc2UgJC5lYWNoIHRvIGxvb3AgdGhyb3VnaCByZXBsaWVzXG4gICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goY29tbWVudC5yZXBsaWVzLmNvbW1lbnRzLCBmdW5jdGlvbihyZXBseUluZGV4LCByZXBseSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRIdG1sICs9IGA8bGkgY2xhc3M9XCJzYnktcmVwbHktY29tbWVudFwiID4ke2NvbW1lbnRTaW5nbGVUZW1wbGF0ZShnZXRTaW5nbGVBcGlEYXRhKHJlcGx5LCAnYXV0aG9yUHJvZmlsZUltYWdlVXJsJyksIGdldFNpbmdsZUFwaURhdGEocmVwbHksICdhdXRob3JEaXNwbGF5TmFtZScpLCBnZXRTaW5nbGVBcGlEYXRhKHJlcGx5LCAnYXV0aG9yQ2hhbm5lbFVybCcpLCBnZXRTaW5nbGVBcGlEYXRhKHJlcGx5LCAndGV4dERpc3BsYXknKSwgZ2V0U2luZ2xlQXBpRGF0YShyZXBseSwgJ2xpa2VDb3VudCcpLCBnZXRTaW5nbGVBcGlEYXRhKHJlcGx5LCAncHVibGlzaGVkQXQnKSl9PC9saT5gO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2xvc2UgdGhlIGNvbW1lbnQgY29udGFpbmVyXG4gICAgICAgICAgICBjb21tZW50SHRtbCArPSBgPC91bD48L2xpPmA7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21tZW50SHRtbCArPSBgPC91bD5gO1xuICAgICAgICBjb21tZW50SHRtbCArPSBgPGEgaHJlZj1cIiR7dmlkZW9MaW5rfVwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwic2J5LXZpZXctYWxsLWJ1dHRvbiBcIj5WaWV3IGFsbCBjb21tZW50cyBvbiBZb3VUdWJlPC9hPmA7XG5cbiAgICAgICAgdGFyZ2V0Lmh0bWwoY29tbWVudEh0bWwpLmZhZGVJbihcImZhc3RcIik7IFxuXG4gICAgICAgIHRvZ2dsZVJlYWRNb3JlKCk7XG4gICAgICAgIHRvZ2dsZUFjY29yZGlvbignc2J5LWFjdGl2ZScsJy5zYnktcmVwbGllcycsJy5zYnktY29tbWVudCcsJy5zYnktcmVwbHktY29tbWVudHMnKTtcbiAgICB9XG5cbiAgICB0b2dnbGVSZWFkTW9yZSgpO1xuICAgIHNieUFqYXgoc3VibWl0RGF0YSxvblN1Y2Nlc3MpXG5cbn1cblxuLyoqXG4gKiBUb2dnbGVzIHRoZSB0ZXh0IG9mIGFuIGVsZW1lbnQgYmFzZWQgb24gaXRzIGN1cnJlbnQgY29udGVudC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIHRleHQgb2YgYW4gZWxlbWVudCBpZiB0aGUgZWxlbWVudCdzIGN1cnJlbnQgdGV4dFxuICogbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGBjdXJyZW50VGV4dGAuIElmIGl0IG1hdGNoZXMsIHRoZSB0ZXh0IGlzIHJlcGxhY2VkIHdpdGhcbiAqIHRoZSBwcm92aWRlZCBgcmVwbGFjZW1lbnRUZXh0YC4gSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHRoZSB0ZXh0IHJlbWFpbnMgYXMgYGN1cnJlbnRUZXh0YC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY3VycmVudFN0YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudFRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXBsYWNlbWVudFRleHRcbiAqIFxuICogQHJldHVybnMge3ZvaWR9IFxuICovXG5cbmZ1bmN0aW9uIGNoYW5nZVRleHRPblRvZ2dsZShjdXJyZW50U3RhdGUsIGN1cnJlbnRUZXh0LCByZXBsYWNlbWVudFRleHQgKSB7XG5cbiAgICBpZiggY3VycmVudFN0YXRlICYmIGN1cnJlbnRUZXh0ICYmIHJlcGxhY2VtZW50VGV4dCApIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0YXRlVGV4dCA9IGN1cnJlbnRUZXh0ID09PSBjdXJyZW50U3RhdGUudGV4dCgpID8gcmVwbGFjZW1lbnRUZXh0IDogY3VycmVudFRleHQ7XG4gICAgICAgIGN1cnJlbnRTdGF0ZS50ZXh0KGN1cnJlbnRTdGF0ZVRleHQpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXNldHMgdGhlIGNvbW1lbnRzIG9mIGEgc3BlY2lmaWVkIHBhcmVudCBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSB7alF1ZXJ5fSBwYXJlbnRcbiAqXG4gKiBAcmV0dXJucyB7dm9pZH0gXG4gKi9cblxuZnVuY3Rpb24gcmVzZXRDb21tZW50cyhwYXJlbnQpIHtcbiAgICBpZiggJ2dhbGxlcnknID09PSBnZXRMYXlvdXQocGFyZW50KSB8fCAnbGlzdCcgPT09IGdldExheW91dChwYXJlbnQpICkge1xuICAgICAgICBjb25zdCB0cmlnZ2VyID0gcGFyZW50LmZpbmQoJy5zYnktY29tbWVudHMtdHJpZ2dlcicpO1xuICAgICAgICB0cmlnZ2VyLmZpbmQoJ3AnKS50ZXh0KCdTaG93IENvbW1lbnRzJyk7XG4gICAgICAgIHBhcmVudC5maW5kKCcuc2J5LWNvbW1lbnRzLXdyYXAnKS5odG1sKCcnKTtcbiAgICB9XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIGxhcmdlIG51bWJlciBpbnRvIGEgbW9yZSByZWFkYWJsZSBzdHJpbmcgd2l0aCBhIHN1ZmZpeC5cbiAqIFRoZSBmdW5jdGlvbiBjb252ZXJ0cyBsYXJnZSBudW1iZXJzIGludG8gYSBzdHJpbmcgd2l0aCBhIHN1ZmZpeCB0byBkZW5vdGUgdGhlIHNjYWxlIG9mIHRoZSBudW1iZXIuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG51bVxuICogXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGZvcm1hdExhcmdlTnVtYmVyKG51bSkge1xuICAgIGlmIChudW0gPj0gMWU5KSByZXR1cm4gKG51bSAvIDFlOSkudG9GaXhlZCgxKSArICdCJztcbiAgICBpZiAobnVtID49IDFlNikgcmV0dXJuIChudW0gLyAxZTYpLnRvRml4ZWQoMSkgKyAnTSc7XG4gICAgaWYgKG51bSA+PSAxZTMpIHJldHVybiAobnVtIC8gMWUzKS50b0ZpeGVkKDEpICsgJ0snO1xuXG4gICAgcmV0dXJuIG51bTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2V0IG9mIGNvbG9ycyB0byB0aGUgY2hhbm5lbCBoZWFkZXIuXG4gKiBcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb2xvckFycmF5IC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgY29sb3IgcHJvcGVydGllcyBmb3IgdGhlIGNoYW5uZWwgaGVhZGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yQXJyYXkuY2hhbm5lbE5hbWUgLSBUaGUgdGV4dCBjb2xvciBmb3IgdGhlIGNoYW5uZWwgbmFtZSBlbGVtZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yQXJyYXkuc3Vic2NyaWJlQ291bnQgLSBUaGUgdGV4dCBjb2xvciBmb3IgdGhlIHN1YnNjcmliZSBjb3VudCBlbGVtZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yQXJyYXkuYnV0dG9uQmFja2dyb3VuZCAtIFRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgYnV0dG9uIGVsZW1lbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sb3JBcnJheS5idXR0b25UZXh0IC0gVGhlIHRleHQgY29sb3IgZm9yIHRoZSBidXR0b24gZWxlbWVudC5cbiAqIFxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHNldENvbG9yc1RvQ2hhbm5lbEhlYWRlcihjb2xvckFycmF5KSB7XG4gICAgY29uc3Qge2NoYW5uZWxOYW1lLCBzdWJzY3JpYmVDb3VudCwgYnV0dG9uQmFja2dyb3VuZCwgYnV0dG9uVGV4dH0gPSBjb2xvckFycmF5O1xuICAgIGNvbnN0IHBhcmVudCA9IGpRdWVyeSgnLnNieV9sYi1kYXRhQ29udGFpbmVyIC5zYnktbGItY2hhbm5lbC1oZWFkZXInKTtcbiAgICBcbiAgICBpZiggISBwYXJlbnQgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiggY2hhbm5lbE5hbWUgKSB7XG4gICAgICAgIHBhcmVudC5maW5kKCcuc2J5LWxiLWNoYW5uZWwtbmFtZS13aXRoLXN1YnMgc3BhbjpmaXJzdC1jaGlsZCcpLmNzcygnY29sb3InLCBjaGFubmVsTmFtZSk7XG4gICAgfVxuXG4gICAgaWYoIHN1YnNjcmliZUNvdW50ICkge1xuICAgICAgICBwYXJlbnQuZmluZCgnLnNieS1sYi1jaGFubmVsLW5hbWUtd2l0aC1zdWJzIHNwYW46bnRoLWNoaWxkKDIpJykuY3NzKCdjb2xvcicsIHN1YnNjcmliZUNvdW50KTtcbiAgICB9XG5cbiAgICBpZiggYnV0dG9uQmFja2dyb3VuZCApIHtcbiAgICAgICAgcGFyZW50LmZpbmQoJy5zYnktbGItc3Vic2NyaWJlLWJ0bicpLmNzcygnYmFja2dyb3VuZCcsIGJ1dHRvbkJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIGlmKCBidXR0b25UZXh0ICkge1xuICAgICAgICBwYXJlbnQuZmluZCgnLnNieS1sYi1zdWJzY3JpYmUtYnRuJykuY3NzKCdjb2xvcicsIGJ1dHRvblRleHQpO1xuICAgIH1cbn0iXSwibmFtZXMiOlsiREVGQVVMVCIsInBhcnNlU3R5bGUiLCJpc051bGwiLCJvYmoiLCJGaWx0ZXJDU1MiLCJvcHRpb25zIiwicmV0IiwiaSIsInNoYWxsb3dDb3B5T2JqZWN0Iiwid2hpdGVMaXN0Iiwib25BdHRyIiwib25JZ25vcmVBdHRyIiwic2FmZUF0dHJWYWx1ZSIsInRoaXMiLCJwcm90b3R5cGUiLCJwcm9jZXNzIiwiY3NzIiwidG9TdHJpbmciLCJzb3VyY2VQb3NpdGlvbiIsInBvc2l0aW9uIiwibmFtZSIsInZhbHVlIiwic291cmNlIiwiY2hlY2siLCJpc1doaXRlIiwiUmVnRXhwIiwidGVzdCIsIm9wdHMiLCJtb2R1bGUiLCJleHBvcnRzIiwiZ2V0RGVmYXVsdFdoaXRlTGlzdCIsIlJFR0VYUF9VUkxfSkFWQVNDUklQVCIsImh0bWwiLCJ3aW5kb3ciLCJmaWx0ZXJDU1MiLCJfIiwidHJpbVJpZ2h0IiwibGVuZ3RoIiwiY3NzTGVuZ3RoIiwiaXNQYXJlbnRoZXNpc09wZW4iLCJsYXN0UG9zIiwicmV0Q1NTIiwiYWRkTmV3QXR0ciIsInRyaW0iLCJzbGljZSIsImoiLCJpbmRleE9mIiwiYyIsImFyciIsIml0ZW0iLCJBcnJheSIsImZvckVhY2giLCJmbiIsInNjb3BlIiwiY2FsbCIsInN0ciIsIlN0cmluZyIsInJlcGxhY2UiLCJnZXREZWZhdWx0Q1NTV2hpdGVMaXN0IiwiZGVmYXVsdENTU0ZpbHRlciIsImVzY2FwZUh0bWwiLCJSRUdFWFBfTFQiLCJSRUdFWFBfR1QiLCJSRUdFWFBfUVVPVEUiLCJSRUdFWFBfUVVPVEVfMiIsIlJFR0VYUF9BVFRSX1ZBTFVFXzEiLCJSRUdFWFBfQVRUUl9WQUxVRV9DT0xPTiIsIlJFR0VYUF9BVFRSX1ZBTFVFX05FV0xJTkUiLCJSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl80IiwiUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfNyIsIlJFR0VYUF9ERUZBVUxUX09OX1RBR19BVFRSXzgiLCJlc2NhcGVRdW90ZSIsInVuZXNjYXBlUXVvdGUiLCJlc2NhcGVIdG1sRW50aXRpZXMiLCJjb2RlIiwiZnJvbUNoYXJDb2RlIiwicGFyc2VJbnQiLCJzdWJzdHIiLCJlc2NhcGVEYW5nZXJIdG1sNUVudGl0aWVzIiwiY2xlYXJOb25QcmludGFibGVDaGFyYWN0ZXIiLCJzdHIyIiwibGVuIiwiY2hhckNvZGVBdCIsImNoYXJBdCIsImZyaWVuZGx5QXR0clZhbHVlIiwiZXNjYXBlQXR0clZhbHVlIiwiYSIsImFiYnIiLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJpZyIsImJsb2NrcXVvdGUiLCJiciIsImNhcHRpb24iLCJjZW50ZXIiLCJjaXRlIiwiY29sIiwiY29sZ3JvdXAiLCJkZCIsImRlbCIsImRldGFpbHMiLCJkaXYiLCJkbCIsImR0IiwiZW0iLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9udCIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImhyIiwiaW1nIiwiaW5zIiwia2JkIiwibGkiLCJtYXJrIiwibmF2Iiwib2wiLCJwIiwicHJlIiwicyIsInNlY3Rpb24iLCJzbWFsbCIsInNwYW4iLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwic3Ryb25nIiwic3RyaWtlIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidHIiLCJ0dCIsInUiLCJ1bCIsInZpZGVvIiwib25UYWciLCJ0YWciLCJvbklnbm9yZVRhZyIsIm9uVGFnQXR0ciIsIm9uSWdub3JlVGFnQXR0ciIsImNzc0ZpbHRlciIsImxhc3RJbmRleCIsIm9uSWdub3JlVGFnU3RyaXBBbGwiLCJTdHJpcFRhZ0JvZHkiLCJ0YWdzIiwibmV4dCIsImlzUmVtb3ZlQWxsVGFnIiwiaXNBcnJheSIsInJlbW92ZUxpc3QiLCJwb3NTdGFydCIsImlzUmVtb3ZlVGFnIiwiaXNDbG9zaW5nIiwiZW5kIiwicHVzaCIsInJlbW92ZSIsInJldGh0bWwiLCJwb3MiLCJzdHJpcENvbW1lbnRUYWciLCJyZXRIdG1sIiwic3RyaXBCbGFua0NoYXIiLCJjaGFycyIsInNwbGl0IiwiZmlsdGVyIiwiY2hhciIsImpvaW4iLCJhdHRyaWJ1dGVXcmFwU2lnbiIsInBhcnNlciIsIkZpbHRlclhTUyIsImZpbHRlclhTUyIsInNlbGYiLCJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSIsImdldFRhZ05hbWUiLCJ0YWdOYW1lIiwic3BhY2VJbmRleCIsInRvTG93ZXJDYXNlIiwiUkVHRVhQX0lMTEVHQUxfQVRUUl9OQU1FIiwiZmluZE5leHRFcXVhbCIsImZpbmROZXh0UXVvdGF0aW9uTWFyayIsImZpbmRCZWZvcmVFcXVhbCIsInN0cmlwUXVvdGVXcmFwIiwidGV4dCIsImlzUXVvdGVXcmFwU3RyaW5nIiwicGFyc2VUYWciLCJ0YWdTdGFydCIsInF1b3RlU3RhcnQiLCJjdXJyZW50UG9zIiwiY3VycmVudFRhZ05hbWUiLCJjdXJyZW50SHRtbCIsImNoYXJpdGVyYXRvciIsImljIiwicGFyc2VBdHRyIiwibGFzdE1hcmtQb3MiLCJyZXRBdHRycyIsInRtcE5hbWUiLCJhZGRBdHRyIiwibWF0Y2giLCJleGVjIiwiaW5kZXgiLCJzdHJpcElnbm9yZVRhZyIsImNvbnNvbGUiLCJlcnJvciIsImFsbG93TGlzdCIsIm1hcCIsImtleXNUb0xvd2VyQ2FzZSIsInNpbmdsZVF1b3RlZEF0dHJpYnV0ZVZhbHVlIiwibWUiLCJhbGxvd0NvbW1lbnRUYWciLCJzdHJpcElnbm9yZVRhZ0JvZHkiLCJpbmZvIiwiT2JqZWN0IiwiaGFzT3duUHJvcGVydHkiLCJhdHRycyIsImNsb3NpbmciLCJnZXRBdHRycyIsIndoaXRlQXR0ckxpc3QiLCJhdHRyc0h0bWwiLCJpc1doaXRlQXR0ciIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIiQiLCJlIiwiayIsImYiLCJtIiwibCIsImciLCJ4c3MiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwicmVxdWlyZSIsInNieV9qc19leGlzdHMiLCJzYnlFbmNvZGVJbnB1dCIsImlucHV0Iiwic2J5X3N1cHBvcnRzX3ZpZGVvIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2FuUGxheVR5cGUiLCJzYnlMaW5raWZ5IiwiY2FsbGJhY2siLCJxIiwicHVuY3RfcmVnZXhwIiwieiIsInciLCJ2IiwiQSIsIkUiLCJDIiwieSIsIkQiLCJCIiwiciIsIngiLCJ0IiwiRiIsImFwcGx5IiwiZCIsInNldHRpbmdzIiwiZXh0ZW5kIiwiRGVmYXVsdHMiLCIkZWxlbWVudCIsIl9oYW5kbGVycyIsIl9wbHVnaW5zIiwiX3N1cHJlc3MiLCJfY3VycmVudCIsIl9zcGVlZCIsIl9jb29yZGluYXRlcyIsIl9icmVha3BvaW50IiwiX3dpZHRoIiwiX2l0ZW1zIiwiX2Nsb25lcyIsIl9tZXJnZXJzIiwiX3dpZHRocyIsIl9pbnZhbGlkYXRlZCIsIl9waXBlIiwiX2RyYWciLCJ0aW1lIiwidGFyZ2V0IiwicG9pbnRlciIsInN0YWdlIiwic3RhcnQiLCJjdXJyZW50IiwiZGlyZWN0aW9uIiwiX3N0YXRlcyIsImluaXRpYWxpemluZyIsImFuaW1hdGluZyIsImRyYWdnaW5nIiwiZWFjaCIsInByb3h5IiwiUGx1Z2lucyIsIldvcmtlcnMiLCJydW4iLCJzZXR1cCIsImluaXRpYWxpemUiLCJpdGVtcyIsImxvb3AiLCJyZXdpbmQiLCJtb3VzZURyYWciLCJ0b3VjaERyYWciLCJwdWxsRHJhZyIsImZyZWVEcmFnIiwibWFyZ2luIiwic3RhZ2VQYWRkaW5nIiwibWVyZ2UiLCJtZXJnZUZpdCIsImF1dG9XaWR0aCIsInN0YXJ0UG9zaXRpb24iLCJydGwiLCJzbWFydFNwZWVkIiwiZmx1aWRTcGVlZCIsImRyYWdFbmRTcGVlZCIsInJlc3BvbnNpdmUiLCJyZXNwb25zaXZlUmVmcmVzaFJhdGUiLCJyZXNwb25zaXZlQmFzZUVsZW1lbnQiLCJmYWxsYmFja0Vhc2luZyIsIm5lc3RlZEl0ZW1TZWxlY3RvciIsIml0ZW1FbGVtZW50Iiwic3RhZ2VFbGVtZW50IiwicmVmcmVzaENsYXNzIiwibG9hZGVkQ2xhc3MiLCJsb2FkaW5nQ2xhc3MiLCJydGxDbGFzcyIsInJlc3BvbnNpdmVDbGFzcyIsImRyYWdDbGFzcyIsIml0ZW1DbGFzcyIsInN0YWdlQ2xhc3MiLCJzdGFnZU91dGVyQ2xhc3MiLCJncmFiQ2xhc3MiLCJXaWR0aCIsIkRlZmF1bHQiLCJJbm5lciIsIk91dGVyIiwiVHlwZSIsIkV2ZW50IiwiU3RhdGUiLCJ3aWR0aCIsInJlbGF0aXZlIiwiJHN0YWdlIiwiY2hpbGRyZW4iLCJ0b0ZpeGVkIiwiTWF0aCIsIm1pbiIsIm1heCIsImNlaWwiLCJoIiwibm9ybWFsaXplIiwib3V0ZXJIVE1MIiwiYWRkQ2xhc3MiLCJhcHBlbmRUbyIsInByZXBlbmRUbyIsImFicyIsImVxIiwicmVtb3ZlQXR0ciIsIm1pbmltdW0iLCJtYXhpbXVtIiwicmVzZXQiLCJhbmltYXRlIiwiY29vcmRpbmF0ZXMiLCJvcCIsInJlbW92ZUNsYXNzIiwiZW50ZXIiLCJ0cmlnZ2VyIiwidG9nZ2xlQ2xhc3MiLCJpcyIsImZpbmQiLCJwcmVsb2FkQXV0b1dpZHRoSW1hZ2VzIiwid3JhcCIsImFwcGVuZCIsInBhcmVudCIsIm5vdCIsInJlZnJlc2giLCJpbnZhbGlkYXRlIiwicmVnaXN0ZXJFdmVudEhhbmRsZXJzIiwibGVhdmUiLCJ2aWV3cG9ydCIsIk51bWJlciIsImF0dHIiLCJwcm9wZXJ0eSIsIm9wdGlvbnNMb2dpYyIsInByZXBhcmUiLCJjb250ZW50IiwiZGF0YSIsInVwZGF0ZSIsImFsbCIsImdyZXAiLCJvblRocm90dGxlZFJlc2l6ZSIsImNsZWFyVGltZW91dCIsInJlc2l6ZVRpbWVyIiwic2V0VGltZW91dCIsIm9uUmVzaXplIiwiaXNEZWZhdWx0UHJldmVudGVkIiwic3VwcG9ydCIsInRyYW5zaXRpb24iLCJvbiIsIm9uVHJhbnNpdGlvbkVuZCIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnRW5kIiwid2hpY2giLCJ0cmFuc2Zvcm0iLCJsZWZ0IiwidG9wIiwic3RvcCIsInR5cGUiLCJzcGVlZCIsIkRhdGUiLCJnZXRUaW1lIiwib25lIiwiZGlmZmVyZW5jZSIsIm9uRHJhZ01vdmUiLCJwcmV2ZW50RGVmYXVsdCIsIm9mZiIsImNsb3Nlc3QiLCJ0cmFuc2Zvcm0zZCIsInN1cHByZXNzIiwicmVsZWFzZSIsImlzTnVtZXJpYyIsIm1lcmdlcnMiLCJjbG9uZXMiLCJkdXJhdGlvbiIsInRvIiwicHJldiIsInN0b3BQcm9wYWdhdGlvbiIsInNyY0VsZW1lbnQiLCJvcmlnaW5hbFRhcmdldCIsImdldCIsImlubmVyV2lkdGgiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsIndhcm4iLCJlbXB0eSIsImpRdWVyeSIsIm5vZGVUeXBlIiwiYWRkQmFjayIsImFkZCIsImFmdGVyIiwiYmVmb3JlIiwic3BsaWNlIiwiSW1hZ2UiLCJzcmMiLCJkZXN0cm95IiwidW53cmFwIiwiY29udGVudHMiLCJyZW1vdmVEYXRhIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRldGFjaEV2ZW50IiwiY291bnQiLCJjYW1lbENhc2UiLCJyZWxhdGVkVGFyZ2V0Iiwib25UcmlnZ2VyIiwicmVnaXN0ZXIiLCJjb25jYXQiLCJldmVudCIsInNwZWNpYWwiLCJvd2wiLCJfZGVmYXVsdCIsIm5hbWVzcGFjZSIsImFyZ3VtZW50cyIsImluQXJyYXkiLCJvcmlnaW5hbEV2ZW50IiwidG91Y2hlcyIsImNoYW5nZWRUb3VjaGVzIiwicGFnZVgiLCJwYWdlWSIsImNsaWVudFgiLCJjbGllbnRZIiwiaXNOYU4iLCJwYXJzZUZsb2F0Iiwic2J5T3dsQ2Fyb3VzZWwiLCJfdHlwZW9mIiwiQ29uc3RydWN0b3IiLCJaZXB0byIsIl9jb3JlIiwiX2ludGVydmFsIiwiX3Zpc2libGUiLCJhdXRvUmVmcmVzaCIsIndhdGNoIiwiYXV0b1JlZnJlc2hJbnRlcnZhbCIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsImdldE93blByb3BlcnR5TmFtZXMiLCJBdXRvUmVmcmVzaCIsIl9sb2FkZWQiLCJsYXp5TG9hZCIsImxvYWQiLCJkZXZpY2VQaXhlbFJhdGlvIiwiZWxlbWVudCIsInVybCIsIm9ubG9hZCIsIm9wYWNpdHkiLCJoYW5kbGVycyIsIkxhenkiLCJhdXRvSGVpZ2h0IiwiYXV0b0hlaWdodENsYXNzIiwidG9BcnJheSIsImhlaWdodCIsIkF1dG9IZWlnaHQiLCJfdmlkZW9zIiwiX3BsYXlpbmciLCJpc0luRnVsbFNjcmVlbiIsImZldGNoIiwicGxheSIsInZpZGVvSGVpZ2h0IiwidmlkZW9XaWR0aCIsIkVycm9yIiwiaWQiLCJ0aHVtYm5haWwiLCJhamF4IiwianNvbnAiLCJkYXRhVHlwZSIsInN1Y2Nlc3MiLCJ0aHVtYm5haWxfbGFyZ2UiLCJmcmFtZWdyYWJfdXJsIiwiaW5zZXJ0QWZ0ZXIiLCJmdWxsc2NyZWVuRWxlbWVudCIsIm1vekZ1bGxTY3JlZW5FbGVtZW50Iiwid2Via2l0RnVsbHNjcmVlbkVsZW1lbnQiLCJoYXNDbGFzcyIsIlZpZGVvIiwiY29yZSIsInN3YXBwaW5nIiwicHJldmlvdXMiLCJhbmltYXRlT3V0IiwiYW5pbWF0ZUluIiwic3dhcCIsImFuaW1hdGlvbiIsImNsZWFyIiwiQW5pbWF0ZSIsIl90aW1lb3V0IiwiX3BhdXNlZCIsImF1dG9wbGF5IiwiX3NldEF1dG9QbGF5SW50ZXJ2YWwiLCJhdXRvcGxheUhvdmVyUGF1c2UiLCJwYXVzZSIsImF1dG9wbGF5VGltZW91dCIsImF1dG9wbGF5U3BlZWQiLCJfZ2V0TmV4dFRpbWVvdXQiLCJoaWRkZW4iLCJfaW5pdGlhbGl6ZWQiLCJfcGFnZXMiLCJfY29udHJvbHMiLCJfdGVtcGxhdGVzIiwiX292ZXJyaWRlcyIsImRvdHNEYXRhIiwiZG90Q2xhc3MiLCJwb3AiLCJkcmF3IiwibmF2VGV4dCIsIm5hdlNwZWVkIiwibmF2RWxlbWVudCIsIm5hdkNvbnRhaW5lciIsIm5hdkNvbnRhaW5lckNsYXNzIiwibmF2Q2xhc3MiLCJzbGlkZUJ5IiwiZG90c0NsYXNzIiwiZG90cyIsImRvdHNFYWNoIiwiZG90c1NwZWVkIiwiZG90c0NvbnRhaW5lciIsIiRyZWxhdGl2ZSIsIiRwcmV2aW91cyIsIiRuZXh0IiwicHJvcCIsIiRhYnNvbHV0ZSIsIm92ZXJpZGVzIiwicGFnZSIsInNpemUiLCJnZXRQb3NpdGlvbiIsIk5hdmlnYXRpb24iLCJfaGFzaGVzIiwibG9jYXRpb24iLCJoYXNoIiwic3Vic3RyaW5nIiwiVVJMaGFzaExpc3RlbmVyIiwiSGFzaCIsInRvVXBwZXJDYXNlIiwic3R5bGUiLCJXZWJraXRUcmFuc2l0aW9uIiwiTW96VHJhbnNpdGlvbiIsIk9UcmFuc2l0aW9uIiwiV2Via2l0QW5pbWF0aW9uIiwiTW96QW5pbWF0aW9uIiwiT0FuaW1hdGlvbiIsIk93bDJyb3ciLCJfT3dsMnJvdyIsIl94Iiwib3dsMnJvdyIsImJ1aWxkMnJvdyIsIm93bDJyb3dUYXJnZXQiLCJvd2wycm93Q29udGFpbmVyIiwib3dsMnJvd0RpcmVjdGlvbiIsInRoaXNTY29wZSIsImNhcm91c2VsIiwiY2Fyb3VzZWxJdGVtcyIsImFFdmVuRWxlbWVudHMiLCJhT2RkRWxlbWVudHMiLCJsZWZ0VG9yaWdodCIsInVwVG9kb3duIiwibzJ3Q29udGFpbmVyQ2xhc3MiLCJvd2xNYXJnaW4iLCJjYXJvdXNlbEl0ZW1zTGVuZ3RoIiwiZmlyc0FyciIsInNlY29uZEFyciIsInJvd0NvbnRhaW5lciIsImZpcnN0Um93RWxlbWVudCIsIm1hcmdpbkJvdHRvbSIsImV2ZW5FbGVtZW50IiwiU2J5IiwiZmVlZHMiLCJjdGFzIiwic2J5T3B0aW9ucyIsImlzVG91Y2giLCJTYnlGZWVkIiwiZWwiLCJwbGFjZWhvbGRlclVSTCIsInNieSIsInBsYWNlaG9sZGVyIiwibmFycm93UGxheWVyIiwicGxhY2Vob2xkZXJOYXJyb3ciLCJwbGF5ZXJBUElSZWFkeSIsImNvbnNlbnRHaXZlbiIsInBsYXllcnMiLCJtaW5JbWFnZVdpZHRoIiwiaW1hZ2VSZXNvbHV0aW9uIiwicmVzaXplZEltYWdlcyIsIm5lZWRzUmVzaXppbmciLCJvdXRPZlBhZ2VzIiwiaXNJbml0aWFsaXplZCIsIm1vc3RSZWNlbnRseUxvYWRlZFBvc3RzIiwiZW1iZWRVUkwiLCJhbGxvd0Nvb2tpZXMiLCJTYnlGZWVkUHJvIiwiQ1RBIiwiaW5pdExheW91dCIsImluaXRHYWxsZXJ5TGF5b3V0IiwiaW5pdEdyaWQiLCJpbml0Q2Fyb3VzZWxzIiwiZXZ0IiwiZmVlZCIsIm9wZW5Db21tZW50cyIsInNieVNlbWlFYWdlckxvYWRpbmciLCJwbGF5ZXJJRCIsImlzUHJvIiwidmlkZW9JRCIsImZpcnN0Iiwic2J5TGlnaHRib3hQbGF5ZXIiLCJhcmdzIiwiaG9zdCIsInByb3RvY29sIiwidmlkZW9JZCIsInBsYXllclZhcnMiLCJtb2Rlc3RicmFuZGluZyIsInJlbCIsImV2ZW50cyIsImdldFZpZGVvRGF0YSIsImFmdGVyU3RhdGVDaGFuZ2UiLCJtYXliZUFkZENUQSIsIllUIiwiUGxheWVyIiwiJHNlbGYiLCJnZW5lcmFsIiwiY29scyIsImNvbHNtb2JpbGUiLCJhcnJvd3MiLCJwYWdpbmF0aW9uIiwicm93cyIsIml0ZW1zVGFibGV0U21hbGwiLCJpdGVtc01vYmlsZSIsImhhczJyb3dzIiwiY2Fyb3VzZWxBcmdzIiwib25DaGFuZ2UiLCJhZnRlclJlc2l6ZSIsIm9uSW5pdGlhbGl6ZSIsImZhZGVJbiIsIiRuYXZFbGVtZW50c1dyYXBwZXIiLCIkZG90cyIsIiRwcmV2IiwiJG5hdiIsIiRkb3QiLCJ3aWR0aERvdHMiLCJoaWRlIiwic3RyaXBFbW9qaWh0bWwiLCIkZWwiLCJyZXBsYWNlV2l0aCIsImFmdGVySXRlbVJldmVhbGVkIiwiJGl0ZW0iLCIkY2FwdGlvbiIsIiRob3ZlckNhcHRpb24iLCJ0ZXh0X2xpbWl0IiwiZGVzY3JpcHRpb25sZW5ndGgiLCJjYXB0aW9uVGV4dCIsInNob3J0X3RleHQiLCJickFkanVzdCIsImxhc3RJbmRleE9mIiwiaG92ZXJDYXB0aW9uVGV4dCIsInNob3ciLCJjYXB0aW9udGV4dCIsInNldFVwQ1RBIiwiZGlzYWJsZWxpZ2h0Ym94IiwiY2FwdGlvbmxpbmtzIiwiY2FwIiwiJHNieV9waG90b193cmFwIiwiJHNieV9saW5rIiwiZmVlZE9wdGlvbnMiLCJob3ZlcmVmZmVjdCIsImFmdGVyRmVlZFNldCIsImN0YUluQ2FwdGlvbiIsImN0YURldGVjdCIsImdldERlZmF1bHRDVEEiLCJjdGEiLCJkZWZhdWx0TGluayIsImRlZmF1bHRUZXh0IiwicmVsYXRlZCIsImRlZmF1bHRQb3N0cyIsInNldEltYWdlSGVpZ2h0Iiwic2V0SW1hZ2VSZXNvbHV0aW9uIiwibWF5YmVSYWlzZUltYWdlUmVzb2x1dGlvbiIsInNldEltYWdlU2l6ZUNsYXNzIiwic2V0QWxsQ1RBRGltZW5zaW9ucyIsInNpemVQbGF5ZXIiLCJzaXplSXRlbXMiLCJDVEFPYmoiLCJzZXRDVEFTdHlsZXMiLCJhZnRlclNlbmRDaGVja1dQUG9zdHNUb1NlcnZlciIsInJlc3BvbnNlIiwic2J5X3ZpZXdfY291bnQiLCJzYnlfY29tbWVudF9jb3VudCIsInNieV9saWtlX2NvdW50Iiwic2J5X2xpdmVfYnJvYWRjYXN0IiwiYnJvYWRjYXN0X3R5cGUiLCJsaXZlX3N0cmVhbWluZ19zdHJpbmciLCJsaXZlX3N0cmVhbWluZ19kYXRlIiwibGl2ZV9zdHJlYW1pbmdfdGltZXN0YW1wIiwic2J5X2Rlc2NyaXB0aW9uIiwiJHBsYXllciIsInRvZ2dsZUNUQSIsImNoYW5nZVBsYXllckluZm8iLCIkbmV3SXRlbSIsImNsb25lIiwidmlkZW9UaXRsZSIsImNoZWNrVmFsdWUiLCJ2aWRlb1B1Ymxpc2hEYXRhIiwicmVzZXRDb21tZW50cyIsIlNieUNUQSIsIlNieUxpZ2h0Ym94QnVpbGRlciIsIlNieUxpZ2h0Ym94QnVpbGRlclBybyIsImdldERhdGEiLCJmZWVkUGFyZW50IiwiY2xvc2VzdEZlZWRJbmRleCIsInN1YnNjcmliZUJ0blRleHQiLCJzdWJzY3JpYmVCdG4iLCJjb2xvclNjaGVtZSIsImF0dHMiLCJsaXZlRGF0YUF0dHIiLCJjaGFubmVsSGVhZGVyQ29sb3JzQXR0ciIsIkpTT04iLCJwYXJzZSIsImZlZWRJbmRleCIsImxpbmsiLCJ0aXRsZSIsImF2YXRhciIsInVzZXIiLCJjaGFubmVsVVJMIiwiY2hhbm5lbElEIiwiY2hhbm5lbFN1YnNjcmliZXJzIiwicHVibGlzaGVkRGF0ZSIsImNvbW1lbnRDb3VudCIsInZpZXdzIiwibGl2ZURhdGEiLCJjaGFubmVsSGVhZGVyQ29sb3JzIiwidGVtcGxhdGUiLCJiZWZvcmVQbGF5ZXJTZXR1cCIsIiRsaWdodGJveCIsImFsYnVtIiwiYWZ0ZXJQbGF5ZXJTZXR1cCIsIl9kYXRhJGNoYW5uZWxTdWJzY3JpYiIsImF2YWlsYWJsZUF2YXRhclVybHMiLCJzdWJzY3JpYmVTZWN0aW9uIiwic2J5TGlnaHRib3hBY3Rpb24iLCJMaWdodGJveENvbG9yU2NoZW1lIiwiYXZhdGFySW1hZ2UiLCJnZXRTdGF0aWNTVkciLCJ0aW1lc3RhbXAiLCJhdmF0YXJJbWFnZUh0bWwiLCJ1c2VySHRtbCIsInN1YnNjcmliZUNsYXNzIiwiZGVzY3JpcHRpb24iLCJ0aW1lQWdvIiwidmlkZW9IZWFkZXJTZWN0aW9uIiwidmlkZW9EZXNjcmlwdGlvbmh0bWwiLCJ2aWRlb0Rlc2NyaXB0aW9uIiwiY3VycmVudENvbW1lbnRDb3VudCIsImdlbmVyYXRlQ29tbWVudFNlY3Rpb24iLCJ0b2dnbGVSZWFkTW9yZSIsImNvbG9yQXJyYXkiLCJjaGFubmVsTmFtZSIsInN1YnNjcmliZUNvdW50IiwiYnV0dG9uQmFja2dyb3VuZCIsImJ1dHRvblRleHQiLCJzZXRDb2xvcnNUb0NoYW5uZWxIZWFkZXIiLCJjYWxsYmFja0FyZ3MiLCJmZWVkT2JqSW5Db250ZXh0Iiwic3RhdGUiLCJudW1JdGVtcyIsIm51bUl0ZW1Db2x1bW5zIiwiY3JlYXRlUGFnZSIsImNyZWF0ZUZlZWRzIiwiY3JlYXRlRmVlZHNBcmdzIiwic2J5YWpheHVybCIsImhvc3RuYW1lIiwibWF5YmVBZGRZVEFQSSIsInlvdXR1YmVTY3JpcHRJZCIsImdldEVsZW1lbnRCeUlkIiwiZmlyc3RTY3JpcHQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInBhcmVudE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJjcmVhdGVMaWdodGJveCIsInNieV90aW1lciIsImxiQnVpbGRlciIsInNieV9sYl9kZWxheSIsInNieV9jYWxsYmFjayIsInNieV9tcyIsImZhZGVEdXJhdGlvbiIsImZpdEltYWdlc0luVmlld3BvcnQiLCJyZXNpemVEdXJhdGlvbiIsInBvc2l0aW9uRnJvbVRvcCIsInNob3dJbWFnZU51bWJlckxhYmVsIiwiYWx3YXlzU2hvd05hdk9uVG91Y2hEZXZpY2VzIiwid3JhcEFyb3VuZCIsImFsYnVtTGFiZWwiLCJjdXJyZW50SW1hZ2VJbmRleCIsImluaXQiLCJlbmFibGUiLCJidWlsZCIsImN1cnJlbnRUYXJnZXQiLCIkb3ZlcmxheSIsIiRvdXRlckNvbnRhaW5lciIsIiRjb250YWluZXIiLCJjb250YWluZXJUb3BQYWRkaW5nIiwiY29udGFpbmVyUmlnaHRQYWRkaW5nIiwiY29udGFpbmVyQm90dG9tUGFkZGluZyIsImNvbnRhaW5lckxlZnRQYWRkaW5nIiwibGlnaHRib3hPbkNsb3NlIiwicGF1c2VQbGF5ZXIiLCJmYWRlT3V0IiwiY2hhbmdlSW1hZ2UiLCJzaXplT3ZlcmxheSIsInZpc2liaWxpdHkiLCJzY3JvbGxUb3AiLCJzY3JvbGxMZWZ0IiwiZGlzYWJsZUtleWJvYXJkTmF2Iiwic2l6ZUNvbnRhaW5lciIsInNob3dJbWFnZSIsIm91dGVyV2lkdGgiLCJvdXRlckhlaWdodCIsInVwZGF0ZU5hdiIsInVwZGF0ZURldGFpbHMiLCJwcmVsb2FkTmVpZ2hib3JpbmdJbWFnZXMiLCJlbmFibGVLZXlib2FyZE5hdiIsImNyZWF0ZUV2ZW50IiwibG9hZFZpZGVvQnlJZCIsImZ1bGxJbWFnZSIsInByZXBlbmQiLCJrZXlib2FyZEFjdGlvbiIsImtleWNvZGUiLCJrZXlDb2RlIiwia2V5IiwidG9nZ2xlIiwibGlnaHRib3hDcmVhdGVkIiwiaXNBZG1pbiIsIndoZW5GZWVkc0NyZWF0ZWQiLCJmbGFncyIsInRyaWdnZXJlZFRlc3QiLCJzYnlBamF4IiwibG9nIiwibnVtIiwiaW1nUmVzIiwiZmVlZElEIiwicG9zdElEIiwic2hvcnRDb2RlQXR0cyIsInJlc2l6aW5nRW5hYmxlZCIsImltYWdlTG9hZEVuYWJsZWQiLCJkZWJ1Z0VuYWJsZWQiLCJmYXZvckxvY2FsIiwiYWpheFBvc3RMb2FkIiwiY2hlY2tXUFBvc3RzIiwic2luZ2xlQ2hlY2tQb3N0cyIsImdkcHIiLCJub0NETiIsImxpZ2h0Ym94RW5hYmxlZCIsImxvY2F0b3IiLCJhdXRvTWluUmVzIiwic3Vic2NyaWJlQmFyRW5hYmxlZCIsInNieUdldE5ld0ZlZWQiLCJzYnlBUElSZWFkeSIsInNldFJlc2l6ZWRJbWFnZXMiLCJhZnRlckZlZWRzQ3JlYXRlZCIsIiR0aGlzSGVhZGVyIiwiZW5jb2RlSFRNTCIsInJhdyIsInVybERldGVjdCIsImN0YU1hdGNoZXMiLCJ1cmxNYXRjaGVzIiwic2h1ZmZsZSIsImFycmF5IiwidGVtcG9yYXJ5VmFsdWUiLCJyYW5kb21JbmRleCIsImN1cnJlbnRJbmRleCIsImZsb29yIiwicmFuZG9tIiwiY2hlY2tDb25zZW50IiwiZ2V0TmV3UG9zdFNldCIsImFmdGVySW5pdGlhbEltYWdlc0xvYWRlZCIsInNieV9kZWxheSIsIm1heWJlUmFpc2VTaW5nbGVJbWFnZVJlc29sdXRpb24iLCJvblRodW1ibmFpbENsaWNrIiwiY2FuQ3JlYXRlUGxheWVyIiwicGxheWVyIiwicGxheWVyRWFnZXJMb2FkZWQiLCJjcmVhdGVQbGF5ZXIiLCJnZXRWaWRlb0lEIiwiaXNDdXN0b21pemVyIiwiZmFkZVRvIiwiX0pTT04kcGFyc2UiLCJzaG9ydGNvZGVBdHRyIiwiZ2V0QXR0cmlidXRlIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiaXRlbVZpZElEIiwicGF1c2VWaWRlbyIsInNieUVhZ2VyTG9hZGluZyIsIm5ld1BsYXllciIsImxvYWRNb3JlQnV0dG9uSW5pdCIsImhpZGVFeHRyYUl0ZW1zRm9yV2lkdGgiLCJiZWZvcmVOZXdJbWFnZXNSZXZlYWxlZCIsInJldmVhbE5ld0ltYWdlcyIsImFmdGVyTmV3SW1hZ2VzUmV2ZWFsZWQiLCJhcHBseUZ1bGxGZWF0dXJlcyIsInJlbW92ZUZlYXR1cmVzIiwiYWZ0ZXJMb2FkTW9yZUNsaWNrZWQiLCIkYnV0dG9uIiwiYWZ0ZXJOZXdJbWFnZXNMb2FkZWQiLCIkcGxheWVyVGh1bWJuYWlsIiwicGxheWVyV2lkdGgiLCJuZXdQbGF5ZXJIZWlnaHQiLCJ0aHVtYldpZHRoIiwibmV3VGh1bWJIZWlnaHQiLCJhcHBseUltYWdlTGlxdWlkIiwic2J5Q3VzdG9tSlMiLCJ2aWRlb0ludGVyYWN0aW9uRXZlbnQiLCJvblRodW1ibmFpbEVudGVyIiwib25UaHVtYm5haWxMZWF2ZSIsImxpZ2h0Ym94UGxhY2Vob2xkZXIiLCJsaWdodGJveFBsYWNlaG9sZGVyTmFycm93IiwiJHNieV9pdGVtX3RyYW5zaXRpb25fZWwiLCJsaXN0ZW5Gb3JWaXNpYmlsaXR5Q2hhbmdlIiwic2VuZE5lZWRzUmVzaXppbmdUb1NlcnZlciIsInNlbmRDaGVja1dQUG9zdHNUb1NlcnZlciIsIml0ZW1PZmZzZXQiLCJhY3Rpb24iLCJuZWVkc19yZXNpemluZyIsIm9mZnNldCIsImZlZWRfaWQiLCJsb2NhdGlvbkd1ZXNzIiwicG9zdF9pZCIsInBvc3RzIiwiY3VycmVudF9yZXNvbHV0aW9uIiwiZmVlZFN0YXR1cyIsImFwcGVuZE5ld1Bvc3RzIiwiYWRkUmVzaXplZEltYWdlcyIsInNob3VsZFBhZ2luYXRlIiwibmV3UG9zdHNIdG1sIiwibGFzdCIsInJlc2l6ZWRJbWFnZXNUb0FkZCIsImltYWdlSUQiLCJmb3JjZUNoYW5nZSIsImltZ1NyY1NldCIsImdldEltYWdlVXJscyIsImN1cnJlbnRVcmwiLCJjdXJyZW50UmVzIiwibmV3UmVzIiwiZ2V0QmVzdFJlc29sdXRpb25Gb3JBdXRvIiwicmVhc29uIiwibmV3VXJsIiwic3JjU2V0IiwianVzdE5ldyIsIml0ZW1zU2VsZWN0b3IiLCJjb2xXaWR0aCIsImFzcGVjdFJhdGlvIiwiYmVzdFdpZHRoIiwiYmVzdFdpZHRoUm91bmRlZCIsImN1c3RvbVNpemVzIiwiZG9uZSIsImxheW91dCIsIm51bW1vYmlsZSIsImZlZWRXaWR0aCIsInBob3RvUGFkZGluZyIsImdldENvbHVtbkNvdW50Iiwic2V0TWluSW1hZ2VXaWR0aCIsImZvdW5kU2l6ZXMiLCJyZXNpemVkX3VybCIsImFkZFRvTmVlZHNSZXNpemluZyIsIiR0YXJnZUVsIiwiZ2V0QXZhdGFyVXJsIiwidXNlcm5hbWUiLCJmYXZvclR5cGUiLCJhdmFpbGFibGVBdmF0YXJzIiwiYXZhdGFycyIsImhlYWQiLCJzYnlfaW1nTGlxdWlkIiwiVkVSIiwiYmdzX0F2YWlsYWJsZSIsImJnc19DaGVja1J1bm5lZCIsImRlZmF1bHRzIiwiZmlsbCIsInZlcnRpY2FsQWxpZ24iLCJob3Jpem9udGFsQWxpZ24iLCJ1c2VCYWNrZ3JvdW5kU2l6ZSIsInVzZURhdGFIdG1sQXR0ciIsImRlbGF5IiwiZmFkZUluVGltZSIsInJlbW92ZUJveEJhY2tncm91bmQiLCJoYXJkUGl4ZWxzIiwicmVzcG9uc2l2ZUNoZWNrVGltZSIsInRpbWVjaGVja3Zpc2liaWxpdHkiLCJvblN0YXJ0Iiwib25GaW5pc2giLCJvbkl0ZW1TdGFydCIsIm9uSXRlbUZpbmlzaCIsIm9uSXRlbUVycm9yIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImJhY2tncm91bmRTaXplIiwiYWN0dWFsU2l6ZSIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0Iiwic2l6ZU9sZCIsIm4iLCJvIiwiQm9vbGVhbiIsImlzSUUiLCJpZUZhZGVJbkRpc2FibGVkIiwiZW5jb2RlVVJJIiwiZGlzcGxheSIsIm92ZXJmbG93Iiwib25lcnJvciIsImNvbXBsZXRlIiwiaW5qZWN0Q3NzIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJhcHBlbmRDaGlsZCIsImNyZWF0ZVRleHROb2RlIiwic2J5QWRkSW1nTGlxdWlkIiwicnVuT25Mb2FkIiwiZnJlcXVlbmN5Iiwic2J5UHJldmlvdXNWaXNpYmlsaXR5IiwiY29udGFpbnMiLCJzYnlDaGVja1Zpc2liaWxpdHkiLCJzYnlWaXNpYmlsaXR5Q2hhbmdlZCIsInZpc2libGUiLCJyZXR1cm5Db2xzIiwic2J5V2luZG93V2lkdGgiLCIkY2xpY2tlZCIsImlzUGxheWVyIiwicGxheVZpZGVvSW5QbGF5ZXIiLCJhZnRlclZpZGVvQ2hhbmdlZCIsInVwZGF0ZUdhbGxlcnlQbGF5ZXJTdWJzY3JpYmVCdG4iLCIkc2J5SXRlbSIsIiRob3ZlcmVkIiwiY29uY2VudEdpdmVuIiwiZWxlbWVudG9yQ2hlY2siLCJzdWJzY3JpYmVCdG5VUkwiLCJDTElfQ29va2llIiwicmVhZCIsIkNMSV9BQ0NFUFRfQ09PS0lFX05BTUUiLCJjbkFyZ3MiLCJwYXJ0cyIsImNvb2tpZSIsInZhbCIsInNoaWZ0IiwiY29tcGxpYW56IiwiY25hbWUiLCJjQXJyIiwic2J5Q21wbHpHZXRDb29raWUiLCJDb29raWVib3QiLCJjb25zZW50ZWQiLCJCb3JsYWJzQ29va2llIiwiQ29uc2VudHMiLCJoYXNDb25zZW50IiwiY2hlY2tDb29raWVDb25zZW50IiwiYWZ0ZXJDb25zZW50VG9nZ2xlZCIsIiRmZWVkIiwiY3JlYXRlIiwicGxheWVySGVpZ2h0IiwiaGVpZ2h0RGlmIiwiZGF0YU51bSIsInJlc2V0Q1RBIiwiY3RhT2JqIiwiZ2V0UmVsYXRlZCIsImFkZGVkIiwiY3VycmVudFZpZGVvSWQiLCJuZXdWaWRlb0lEIiwiJGZlZWRFbCIsInJlbGF0ZWRWaWRzIiwidGhpc1ZpZCIsInN0eWxlQ2xhc3MiLCJjb2xvciIsInRleHRDb2xvciIsIm9wZW5BdHRzIiwib3BlblR5cGUiLCJjdGFPdmVybGF5SGVpZ2h0IiwibnVtUm93cyIsInRvdGFsVmVydGljYWxQYWRkaW5nIiwibWF4Q1RBSXRlbUhlaWdodCIsInNieV9pbml0Iiwic2J5X2Nhcm91c2VsX2luaXQiLCJlYWdlcmxvYWQiLCJ5b3V0dWJlX3VybCIsInNlbWlFYWdlcmxvYWQiLCJyZWFkeSIsImNhdGVnb3J5Iiwic2xpZGVVcCIsImFkbWluQWpheFVybCIsIm5vbmNlIiwibXNnIiwic2J5WVNjcmlwdElkIiwiZ2V0U2luZ2xlQXBpRGF0YSIsInJvb3RQYXRoIiwiYXR0ck5hbWUiLCJfcm9vdFBhdGgkc25pcHBldCIsIl9yb290UGF0aCRzbmlwcGV0MiIsIl9yb290UGF0aCRzbmlwcGV0MyIsIl9yb290UGF0aCRzbmlwcGV0NCIsIl9yb290UGF0aCRzbmlwcGV0NSIsIl9yb290UGF0aCRzbmlwcGV0NiIsInNuaXBwZXQiLCJhdXRob3JQcm9maWxlSW1hZ2VVcmwiLCJhdXRob3JEaXNwbGF5TmFtZSIsImF1dGhvckNoYW5uZWxVcmwiLCJ0ZXh0RGlzcGxheSIsImxpa2VDb3VudCIsInB1Ymxpc2hlZEF0IiwidG90YWxSZXBseUNvdW50IiwiY29tbWVudFNpbmdsZVRlbXBsYXRlIiwiZHVtbXlQcm9maWxlUGljIiwicmVwbGllcyIsImVycm9yQ29tbWVudFRlbXBsYXRlIiwiZGlmZk1zIiwic2Vjb25kcyIsIm1pbnV0ZXMiLCJob3VycyIsImRheXMiLCJtb250aHMiLCJ5ZWFycyIsInRyaWdnZXJDbGFzc05hbWUiLCJwYXJhZ3JhcGhIZWlnaHQiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJ1bmJpbmQiLCJjbGljayIsImZsYWciLCJjb21tZW50V3JhcCIsImNvbG9yU2NoZW1lQ2xhc3NOYW1lIiwiZ2V0TGF5b3V0Iiwib3BlbkNvbW1lbnRUcmlnZ2VyIiwiY29tbWVudFdyYXBDbGFzcyIsImNvbW1lbnRTZWNpb25XcmFwIiwiY29tbWVudFNlY3Rpb24iLCJjdXJyZW50TGF5b3V0IiwidGFyZ2V0UGFyZW50IiwiY3VycmVudFRleHRTdGF0ZSIsImN1cnJlbnRTdGF0ZSIsImN1cnJlbnRUZXh0IiwicmVwbGFjZW1lbnRUZXh0IiwiY3VycmVudFN0YXRlVGV4dCIsImNoYW5nZVRleHRPblRvZ2dsZSIsInN1Ym1pdERhdGEiLCJvblN1Y2Nlc3MiLCJ2aWRlb19pZCIsIl9jb21tZW50SnNvbiRlcnJvciIsImNvbW1lbnRKc29uIiwibWVzc2FnZSIsImVycm9yTWVzc2FnZSIsImluY2x1ZGVzIiwibm9PZkl0ZW1zIiwidmlkZW9MaW5rIiwiY29tbWVudEh0bWwiLCJjb21tZW50IiwiX2NvbW1lbnQkc25pcHBldCIsIl9jb21tZW50JHJlcGxpZXMiLCJ0b3BMZXZlbENvbW1lbnRQYXRoIiwidG9wTGV2ZWxDb21tZW50IiwidG9wTGV2ZWxDb21tZW50U25pcHBldCIsImNvbW1lbnRzIiwicmVwbHlJbmRleCIsInJlcGx5IiwiY2xhc3NOYW1lIiwidG9nZ2xlQWNjb3JkaW9uIiwib25Zb3VUdWJlSWZyYW1lQVBJUmVhZHkiLCJudW1GZWVkcyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJmbGFnTGlnaHRib3giXSwic291cmNlUm9vdCI6IiJ9