1document.addEventListener("DOMContentLoaded",function(){window.dataLayer=window.dataLayer||[];try{var e=document.querySelectorAll(".ek-main-nav__row a");e&&e.forEach(function(a){a.addEventListener("click",function(){var b=a.textContent.trim(),c=a.getAttribute("href");b&&c&&window.dataLayer.push({event:"topmainnav",click_text:b,link_url:c})})})}catch(a){console.error("DataLayer error: topmainnav",a)}try{var g=document.querySelectorAll(".ek-top-links a");g&&g.forEach(function(a){a.addEventListener("click", 2function(){var b=a.textContent.trim(),c=a.getAttribute("href");b&&c&&window.dataLayer.push({event:"topnavicon",click_text:b,link_url:c})})})}catch(a){console.error("DataLayer error: topnavicon",a)}try{var h=document.querySelector(".ek-information-message-container");h&&h.querySelectorAll("a").forEach(function(a){a.addEventListener("click",function(){var b=a.textContent.trim(),c=a.getAttribute("href");b&&c&&window.dataLayer.push({event:"infobar",click_text:b,link_url:c})})})}catch(a){console.error("DataLayer error: infobar", 3a)}try{var k=document.querySelector("footer");k&&k.addEventListener("click",function(a){a=a.target.closest("a");var b=a.textContent.trim(),c=a.getAttribute("href");a&&b&&c&&window.dataLayer.push({event:"footer",click_text:b,link_url:c})})}catch(a){console.error("DataLayer error: footer",a)}try{var d=document.querySelector(".ek-search-form");if(d){var n=new URLSearchParams(window.location.search),f=(d.querySelector('input[type\x3d"text"]').value.trim()||n.get("query")||"").trim();if(f){var l=document.querySelector(".ek-search-form__suggestion-result"), 4m=l?l.querySelectorAll("strong"):[],p=2<=m.length?parseInt(m[1].textContent.trim(),10):0;window.dataLayer.push({event:"search_query",search_keyword:f,search_results_count:p});d.querySelectorAll("li.sv-search-hit").forEach(function(a,b){var c=a.querySelector("a.ek-heading-3"),d=c.textContent.trim(),e=c.getAttribute("href");c&&d&&e&&c.addEventListener("click",function(){window.dataLayer.push({event:"search_click",search_keyword:f,click_text:d,link_url:e,link_position:b+1})})})}}}catch(a){console.error("DataLayer error: search tracking", 5a)}try{document.body.addEventListener("click",function(a){if((a=a.target.closest("a"))&&("external"===a.getAttribute("rel")||!a.href.includes("ekero.se"))){a=a.href;var b=window.location.href;a&&b&&window.dataLayer.push({event:"external_links",link_url:a,page_url:b})}})}catch(a){console.error("DataLayer error: external_link",a)}}); 6!function(e){var t=window.webpackHotUpdate;window.webpackHotUpdate=function(e,n){!function(e,t){if(!j[e]||!b[e])return;for(var n in b[e]=!1,t)Object.prototype.hasOwnProperty.call(t,n)&&(v[n]=t[n]);0==--g&&0===k&&C()}(e,n),t&&t(e,n)};var n,s=!0,r="23b75409f519e931affa",i=1e4,a={},o=[],l=[];function d(e){var t=x[e];if(!t)return O;var s=function(s){return t.hot.active?(x[s]?-1===x[s].parents.indexOf(e)&&x[s].parents.push(e):(o=[e],n=s),-1===t.children.indexOf(s)&&t.children.push(s)):(console.warn("[HMR] unexpected require("+s+") from disposed module "+e),o=[]),O(s)},r=function(e){return{configurable:!0,enumerable:!0,get:function(){return O[e]},set:function(t){O[e]=t}}};for(var i in O)Object.prototype.hasOwnProperty.call(O,i)&&"e"!==i&&"t"!==i&&Object.defineProperty(s,i,r(i));return s.e=function(e){return"ready"===f&&p("prepare"),k++,O.e(e).then(t,(function(e){throw t(),e}));function t(){k--,"prepare"===f&&(_[e]||q(e),0===k&&0===g&&C())}},s.t=function(e,t){return 1&t&&(e=s(e)),O.t(e,-2&t)},s}function c(e){var t={_acceptedDependencies:{},_declinedDependencies:{},_selfAccepted:!1,_selfDeclined:!1,_disposeHandlers:[],_main:n!==e,active:!0,accept:function(e,n){if(void 0===e)t._selfAccepted=!0;else if("function"==typeof e)t._selfAccepted=e;else if("object"==typeof e)for(var s=0;s<e.length;s++)t._acceptedDependencies[e[s]]=n||function(){};else t._acceptedDependencies[e]=n||function(){}},decline:function(e){if(void 0===e)t._selfDeclined=!0;else if("object"==typeof e)for(var n=0;n<e.length;n++)t._declinedDependencies[e[n]]=!0;else t._declinedDependencies[e]=!0},dispose:function(e){t._disposeHandlers.push(e)},addDisposeHandler:function(e){t._disposeHandlers.push(e)},removeDisposeHandler:function(e){var n=t._disposeHandlers.indexOf(e);n>=0&&t._disposeHandlers.splice(n,1)},check:w,apply:$,status:function(e){if(!e)return f;u.push(e)},addStatusHandler:function(e){u.push(e)},removeStatusHandler:function(e){var t=u.indexOf(e);t>=0&&u.splice(t,1)},data:a[e]};return n=void 0,t}var u=[],f="idle";function p(e){f=e;for(var t=0;t<u.length;t++)u[t].call(null,e)}var h,v,m,g=0,k=0,_={},b={},j={};function y(e){return+e+""===e?+e:e}function w(e){if("idle"!==f)throw new Error("check() is only allowed in idle status");return s=e,p("check"),(t=i,t=t||1e4,new Promise((function(e,n){if("undefined"==typeof XMLHttpRequest)return n(new Error("No browser support"));try{var s=new XMLHttpRequest,i=O.p+""+r+".hot-update.json";s.open("GET",i,!0),s.timeout=t,s.send(null)}catch(e){return n(e)}s.onreadystatechange=function(){if(4===s.readyState)if(0===s.status)n(new Error("Manifest request to "+i+" timed out."));else if(404===s.status)e();else if(200!==s.status&&304!==s.status)n(new Error("Manifest request to "+i+" failed."));else{try{var t=JSON.parse(s.responseText)}catch(e){return void n(e)}e(t)}}}))).then((function(e){if(!e)return p("idle"),null;b={},_={},j=e.c,m=e.h,p("prepare");var t=new Promise((function(e,t){h={resolve:e,reject:t}}));v={};return q(0),"prepare"===f&&0===k&&0===g&&C(),t}));var t}function q(e){j[e]?(b[e]=!0,g++,function(e){var t=document.createElement("script");t.charset="utf-8",t.src=O.p+""+e+"."+r+".hot-update.js",document.head.appendChild(t)}(e)):_[e]=!0}function C(){p("ready");var e=h;if(h=null,e)if(s)Promise.resolve().then((function(){return $(s)})).then((function(t){e.resolve(t)}),(function(t){e.reject(t)}));else{var t=[];
vendor: 4,130 bytes, line 6
6for(var n in v)Object.prototype.hasOwnProperty.call(v,n)&&t.push(y(n));e.resolve(t)}}function $(t){if("ready"!==f)throw new Error("apply() is only allowed in ready status");var n,s,i,l,d;function c(e){for(var t=[e],n={},s=t.map((function(e){return{chain:[e],id:e}}));s.length>0;){var r=s.pop(),i=r.id,a=r.chain;if((l=x[i])&&!l.hot._selfAccepted){if(l.hot._selfDeclined)return{type:"self-declined",chain:a,moduleId:i};if(l.hot._main)return{type:"unaccepted",chain:a,moduleId:i};for(var o=0;o<l.parents.length;o++){var d=l.parents[o],c=x[d];if(c){if(c.hot._declinedDependencies[i])return{type:"declined",chain:a.concat([d]),moduleId:i,parentId:d};-1===t.indexOf(d)&&(c.hot._acceptedDependencies[i]?(n[d]||(n[d]=[]),u(n[d],[i])):(delete n[d],t.push(d),s.push({chain:a.concat([d]),id:d})))}}}}return{type:"accepted",moduleId:e,outdatedModules:t,outdatedDependencies:n}}function u(e,t){for(var n=0;n<t.length;n++){var s=t[n];-1===e.indexOf(s)&&e.push(s)}}t=t||{};var h={},g=[],k={},_=function(){console.warn("[HMR] unexpected require("+w.moduleId+") to disposed module")};for(var b in v)if(Object.prototype.hasOwnProperty.call(v,b)){var w;d=y(b);var q=!1,C=!1,$=!1,D="";switch((w=v[b]?c(d):{type:"disposed",moduleId:b}).chain&&(D="\nUpdate propagation: "+w.chain.join(" -> ")),w.type){case"self-declined":t.onDeclined&&t.onDeclined(w),t.ignoreDeclined||(q=new Error("Aborted because of self decline: "+w.moduleId+D));break;case"declined":t.onDeclined&&t.onDeclined(w),t.ignoreDeclined||(q=new Error("Aborted because of declined dependency: "+w.moduleId+" in "+w.parentId+D));break;case"unaccepted":t.onUnaccepted&&t.onUnaccepted(w),t.ignoreUnaccepted||(q=new Error("Aborted because "+d+" is not accepted"+D));break;case"accepted":t.onAccepted&&t.onAccepted(w),C=!0;break;case"disposed":t.onDisposed&&t.onDisposed(w),$=!0;break;default:throw new Error("Unexception type "+w.type)}if(q)return p("abort"),Promise.reject(q);if(C)for(d in k[d]=v[d],u(g,w.outdatedModules),w.outdatedDependencies)Object.prototype.hasOwnProperty.call(w.outdatedDependencies,d)&&(h[d]||(h[d]=[]),u(h[d],w.outdatedDependencies[d]));$&&(u(g,[w.moduleId]),k[d]=_)}var E,A=[];for(s=0;s<g.length;s++)d=g[s],x[d]&&x[d].hot._selfAccepted&&k[d]!==_&&A.push({module:d,errorHandler:x[d].hot._selfAccepted});p("dispose"),Object.keys(j).forEach((function(e){!1===j[e]&&function(e){delete installedChunks[e]}(e)}));for(var H,S,P=g.slice();P.length>0;)if(d=P.pop(),l=x[d]){var I={},T=l.hot._disposeHandlers;for(i=0;i<T.length;i++)(n=T[i])(I);for(a[d]=I,l.hot.active=!1,delete x[d],delete h[d],i=0;i<l.children.length;i++){var L=x[l.children[i]];L&&((E=L.parents.indexOf(d))>=0&&L.parents.splice(E,1))}}for(d in h)if(Object.prototype.hasOwnProperty.call(h,d)&&(l=x[d]))for(S=h[d],i=0;i<S.length;i++)H=S[i],(E=l.children.indexOf(H))>=0&&l.children.splice(E,1);for(d in p("apply"),r=m,k)Object.prototype.hasOwnProperty.call(k,d)&&(e[d]=k[d]);var M=null;for(d in h)if(Object.prototype.hasOwnProperty.call(h,d)&&(l=x[d])){S=h[d];var N=[];for(s=0;s<S.length;s++)if(H=S[s],n=l.hot._acceptedDependencies[H]){if(-1!==N.indexOf(n))continue;N.push(n)}for(s=0;s<N.length;s++){n=N[s];try{n(S)}catch(e){t.onErrored&&t.onErrored({type:"accept-errored",moduleId:d,dependencyId:S[s],error:e}),t.ignoreErrored||M||(M=e)}}}for(s=0;s<A.length;s++){var R=A[s];d=R.module,o=[d];try{O(d)}catch(e){if("function"==typeof R.errorHandler)try{R.errorHandler(e)}catch(n){t.onErrored&&t.onErrored({type:"self-accept-error-handler-errored",moduleId:d,error:n,originalError:e}),t.ignoreErrored||M||(M=n),M||(M=e)}else t.onErrored&&t.onErrored({type:"self-accept-errored",moduleId:d,error:e}),t.ignoreErrored||M||(M=e)}}return M?(p("fail"),Promise.reject(M)):(p("idle"),new Promise((function(e){e(g)})))}var x={};function O(t){if(x[t])return x[t].exports;var n=x[t]={i:t,l:!1,exports:{},hot:c(t),parents:(l=o,o=[],l),children:[]};return e[t].call(n.exports,n,n.exports,d(t)),n.l=!0,n.exports}O.m=e,O.c=x,O.d=function(e,t,n){O.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},O.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}
6),Object.defineProperty(e,"__esModule",{value:!0})},O.t=function(e,t){if(1&t&&(e=O(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(O.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)O.d(n,s,function(t){return e[t]}.bind(null,s));return n},O.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return O.d(t,"a",t),t},O.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},O.p="/",O.h=function(){return r},d(2)(O.s=2)}([function(e,t,n){"use strict"; 7/*! 8 * Accordion v2.8.0 9 * Simple accordion created in pure Javascript. 10 * https://github.com/michu2k/Accordion 11 * 12 * Copyright 2017-2019 MichaÅ Strumpf 13 * Published under MIT License 14 */!function(t){function n(e,r){var i=this,a={init:function(){if(Array.isArray(e))return e.length&&e.map((function(e){return new n(e,r)})),!1;this.options=d({duration:600,itemNumber:0,aria:!0,closeOthers:!0,showItem:!1,elementClass:"ac",questionClass:"ac-q",answerClass:"ac-a",targetClass:"ac-target",onToggle:function(){}},r),this.container=document.querySelector(e),this.elements=this.container.querySelectorAll("."+this.options.elementClass);var t=this.options,s=t.aria,a=t.showItem,o=t.itemNumber;s&&this.container.setAttribute("role","tablist");for(var l=0;l<this.elements.length;l++){var c=this.elements[l];c.classList.add("js-enabled"),this.hideElement(c),this.setTransition(c),this.generateID(c),s&&this.setARIA(c)}if(a){var u=this.elements[0];"number"==typeof o&&o<this.elements.length&&(u=this.elements[o]),this.toggleElement(u,!1)}i.attachEvents()},setTransition:function(e){var t=this.options,n=t.duration,s=t.answerClass,r=e.querySelector("."+s),i=o("transition");r.style[i]=n+"ms"},generateID:function(e){e.setAttribute("id","ac-".concat(s)),s++},setARIA:function(e){var t=this.options,n=t.questionClass,s=t.answerClass,r=e.querySelector("."+n),i=e.querySelector("."+s);r.setAttribute("role","tab"),r.setAttribute("aria-expanded","false"),i.setAttribute("role","tabpanel")},updateARIA:function(e,t){var n=this.options.questionClass;e.querySelector("."+n).setAttribute("aria-expanded",t)},callSpecificElement:function(e){for(var t=e.target,n=this.options,s=n.questionClass,r=n.targetClass,i=n.closeOthers,a=0;a<this.elements.length;a++)if(this.elements[a].contains(t)){(t.className.match(s)||t.className.match(r))&&(e.preventDefault(),i&&this.closeAllElements(a),this.toggleElement(this.elements[a]));break}},hideElement:function(e){var t=this.options.answerClass;e.querySelector("."+t).style.height=0},toggleElement:function(e,t){var n,s=!(1<arguments.length&&void 0!==t)||t,r=this.options,i=r.answerClass,a=r.aria,o=r.onToggle,l=e.querySelector("."+i),d=l.scrollHeight;e.classList.toggle("is-active"),s||(l.style.height="auto"),0<parseInt(l.style.height)?(n=!1,requestAnimationFrame((function(){l.style.height=0}))):(n=!0,requestAnimationFrame((function(){l.style.height=d+"px"}))),a&&this.updateARIA(e,n),s&&o(e,this.elements)},closeAllElements:function(e){for(var t=this.options.aria,n=this.elements.length,s=0;s<n;s++)if(s!=e){var r=this.elements[s];r.classList.contains("is-active")&&r.classList.remove("is-active"),t&&this.updateARIA(r,!1),this.hideElement(r)}},resizeHandler:function(){for(var e,t,n=this.options,s=n.elementClass,r=n.answerClass,i=this.container.querySelectorAll("."+s+".is-active"),a=0;a<i.length;a++)t=i[a].querySelector("."+r),requestAnimationFrame((function(){t.style.height="auto",e=t.offsetHeight,requestAnimationFrame((function(){t.style.height=e+"px"}))}))},clickHandler:function(e){this.callSpecificElement(e)},keydownHandler:function(e){13===e.keyCode&&this.callSpecificElement(e)}};this.attachEvents=function(){var e=a;e.clickHandler=e.clickHandler.bind(e),e.keydownHandler=e.keydownHandler.bind(e),e.resizeHandler=e.resizeHandler.bind(e),e.container.addEventListener("click",e.clickHandler),e.container.addEventListener("keydown",e.keydownHandler),t.addEventListener("resize",e.resizeHandler)},this.detachEvents=function(){var e=a;e.container.removeEventListener("click",e.clickHandler),e.container.removeEventListener("keydown",e.keydownHandler),t.removeEventListener("resize",e.resizeHandler)};var o=function(e){return"string"==typeof document.documentElement.style[e]?e:(e=l(e),e="webkit".concat(e))},l=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},d=function(e,t){for(var n in t)e[n]=t[n];return e};t.requestAnimationFrame=t.requestAnimationFrame||t.webkitRequestAnimationFrame||function(e){t.setTimeout(e,1e3/60)},a.init()}var s=0;void 0!==e.exports?e.exports=n:t.Accordion=n}(window)},function(e,t,n){},function(e,t,n){"use strict";n.r(t);n(1);var s=n(0),r=n.n(s);var i={elemSelector:".js-ek-filter-dropdown",elemSelectWrapperSelector:".ek-filter-dropdown__select",elemSelectSelector:".js-ek-filter-dropdown-select",elemOpenClass:"ek-filter-dropdown--open",elemDisabledClass:"ek-filter-dropdown--disabled",$elem:null,init(){var e=this._handleKeyDown.bind(this);this.$elem=$svjq(this.elemSelector),$svjq(".ek-news-listing-filter__item__dropdown__outer").each((t,n)=>{n.addEventListener("keydown",e,!1)}),this.$elemSelectWrapper=$svjq(this.elemSelectWrapperSelector),0!==this.$elem.length&&(this.$elem.each((e,t)=>{let n=$svjq(t);this._createList(n),this._disableSelect(n)}
14),this.$elem.on("keydown",e=>{$svjq(e.target.parentNode).hasClass(this.elemOpenClass)||38!==e.keyCode&&40!==e.keyCode||$svjq(e.target).hasClass("ek-filter-dropdown__list__option")||this._listClickHandler($svjq(e.currentTarget))}),this.$elem.on("mousedown",e=>{if(e.preventDefault(),e.stopPropagation(),e.target.className.indexOf("blocker")<=0){var t=e.target.getBoundingClientRect().left+parseInt(getComputedStyle(e.target).width.replace("px",""));if(e.clientX>=t-64)return}$svjq(e.target).hasClass("ek-filter-dropdown__list__option")||this._listClickHandler($svjq(e.currentTarget))}),this.$elemSelectWrapper.on("keydown",e=>{32===e.keyCode&&this._listClickHandler($svjq(e.currentTarget.parentNode))}),this.$elemSelectWrapper.on("focusin",e=>{$svjq(e.target.parentNode).hasClass("ek-filter-dropdown__list__option"),$svjq(e.target).addClass("ek-filter-dropdown--focused"),e.stopImmediatePropagation(),e.stopPropagation()}),this.$elemSelectWrapper.on("focusout",e=>{$svjq(e.target.parentNode).hasClass("ek-filter-dropdown--open")&&$svjq(e.target).hasClass("ek-filter-dropdown--focused"),$svjq(e.target).hasClass("ek-filter-dropdown--focused")&&$svjq(e.target).removeClass("ek-filter-dropdown--focused"),e.stopImmediatePropagation(),e.stopPropagation()}))},_handleKeyDown(e){var t=$svjq(this.$elem);if(!this.$elem.hasClass(this.elemOpenClass)||40!==e.keyCode&&38!==e.keyCode)if(9===e.keyCode)if(window.event.shiftKey&&this.$elem.hasClass(this.elemOpenClass)){var n=this.$elem.prev();t.removeClass(this.elemOpenClass),n.length>0?n.find(".js-ek-filter-dropdown-select").focus():t.focus()}else t.removeClass(this.elemOpenClass);else 32===e.keyCode&&$svjq(e.target.parentNode).hasClass("js-ek-filter-dropdown")&&(e.preventDefault(),e.stopPropagation());else if(e.preventDefault(),e.stopPropagation(),0===t.find("li.js--focus").length)t.find("li").first().addClass("js--focus").find("button").focus();else{t.find("li.js--focus").length>1&&t.find("li").first().addClass("js--focus").find("button").focus();var s=t.find(".js--focus");38===e.keyCode?(t.find("li").removeClass("js--focus"),0==s.prev().length?s.siblings().last().addClass("js--focus").find("button").focus():s.prev().addClass("js--focus").find("button").focus()):40===e.keyCode&&(t.find("li").removeClass("js--focus"),0==s.next().length?s.siblings().first().addClass("js--focus").find("button").focus():s.next().addClass("js--focus").find("button").focus())}},_listClickHandler(e){if(!this._isDisabled(e)){var t=e.hasClass(this.elemOpenClass);this.$elem=e,t&&e.find("li").removeClass("js--focus"),e.siblings().removeClass("ek-filter-dropdown--open"),e.toggleClass(this.elemOpenClass,!t)}},_optionClickHandler(e){let t=e.closest(this.elemSelector),n=$svjq("select",t);t.removeClass(this.elemOpenClass),t.find(".ek-filter-dropdown__list").find("li").removeClass("js--focus"),n.trigger("change")},_disableSelect(e){this._addBlocker(e)},_createList(e){var t=this;$svjq(this.elemSelectSelector,e);e.find(".ek-filter-dropdown__list").length>0&&$svjq("button",e).on("click",e=>{e.preventDefault(),e.stopPropagation(),t._optionClickHandler($svjq(e.currentTarget))})},_addBlocker(e){0==e.find(".ek-filter-dropdown__select__blocker").length&&$svjq(".ek-filter-dropdown__select",e).append('<div class="ek-filter-dropdown__select__blocker" />')},_isDisabled(e){return e.hasClass(this.elemDisabledClass)}};$svjq(document).ready((function(){window.dropDown=i,i.init(),$svjq(".ek-accordion").each((function(e,t){$svjq(t).addClass("accordion-"+e),new r.a(".accordion-"+e,{elementClass:"ek-accordion__faq",questionClass:"ek-accordion__faq-heading",answerClass:"ek-accordion__faq-content",closeOthers:!1})})),$svjq("body").on("keydown",(function(e){"9"==(e.keyCode||e.which)&&$svjq("body").addClass("using-keyboard")})),$svjq("body").on("mousedown",(function(){$svjq("body").removeClass("using-keyboard")}));var e=$svjq(".ek-mobile-nav"),t=$svjq(".ek-header__toggle-wrapper"),n=$svjq(".ek-header__toggle-menu"),s=$svjq(".ek-header");(e.attr("aria-hidden","true"),t.on("click",(function(){s.toggleClass("ek-header-toggle"),n.toggleClass("ek-header__toggle-menu--close"),e.toggleClass("ek-mobile-nav--expanded"),"false"===n.attr("aria-expanded")?n.attr("aria-expanded","true"):n.attr("aria-expanded","fal
14se"),"true"===e.attr("aria-hidden")?e.attr("aria-hidden","false"):e.attr("aria-hidden","true")})),t=$svjq(".ek-mobile-nav__toggle"))&&(t.on("click",(function(){$svjq(this).toggleClass("ek-mobile-nav__toggle--close"),$svjq(this).prev().toggleClass("ek-mobile-nav__menu-item--expanded"),$svjq(this).next().toggleClass("ek-mobile-nav__menu--visible"),"false"===$svjq(this).attr("aria-expanded")?$svjq(this).attr("aria-expanded","true"):$svjq(this).attr("aria-expanded","false"),"true"===$svjq(this).next().attr("aria-hidden")?$svjq(this).next().attr("aria-hidden","false"):$svjq(this).next().attr("aria-hidden","true")})),(e=$svjq(".ek-mobile-nav")).each((function(e,t){var n=$svjq(t).find(".ek-mobile-nav__menu--visible").first().find(".ek-mobile-nav__menu--visible");n.length<1&&(n=$svjq(t).find(".ek-mobile-nav__menu-item--current")),n.each((function(e,t){$svjq(t).parents().siblings(".ek-mobile-nav__toggle").each((function(e,t){var n=$svjq(t),s=n.siblings(".ek-mobile-nav__menu").first(),r=n.siblings(".ek-mobile-nav__link").first();s.addClass("ek-mobile-nav__menu--visible"),s.attr("aria-hidden","false"),r.addClass("ek-mobile-nav__menu-item--expanded"),n.addClass("ek-mobile-nav__toggle--close"),n.attr("aria-expanded","true"),n.attr("aria-haspopup","true")}))}))})));var a=$svjq(".ek-side-nav__toggle");a&&(a.on("click",(function(){$svjq(this).toggleClass("ek-side-nav__toggle--close"),$svjq(this).prev().toggleClass("ek-side-nav__menu-item--expanded"),$svjq(this).next().toggleClass("ek-side-nav__menu--visible"),"false"===$svjq(this).attr("aria-expanded")?$svjq(this).attr("aria-expanded","true"):$svjq(this).attr("aria-expanded","false"),"true"===$svjq(this).next().attr("aria-hidden")?$svjq(this).next().attr("aria-hidden","false"):$svjq(this).next().attr("aria-hidden","true")})),$svjq(".ek-side-nav").each((function(e,t){var n=$svjq(t).find(".ek-side-nav__menu--visible");n.length<1&&(n=$svjq(t).find(".ek-side-nav__menu-item--current")),n.each((function(e,t){$svjq(t).parents().siblings(".ek-side-nav__toggle").each((function(e,t){var n=$svjq(t),s=n.siblings(".ek-side-nav__menu").first(),r=n.siblings(".ek-side-nav__link").first();s.addClass("ek-side-nav__menu--visible"),s.attr("aria-hidden","false"),r.addClass("ek-side-nav__menu-item--expanded"),n.addClass("ek-side-nav__toggle--close"),n.attr("aria-expanded","true"),n.attr("aria-haspopup","true")}))}))})));var o=$svjq(".ek-scroll-down__button"),l=$svjq(".ek-main");if(o&&o.on("click",(function(){$svjq("html, body").animate({scrollTop:l.offset().top},500)})),$svjq(".ek-hero-search-bar")&&$svjq("body").addClass("has-hero-search-bar"),$svjq(".ek-feedback")){var d=$svjq(".ek-feedback__button"),c=$svjq(".ek-feedback__button--positive"),u=$svjq(".ek-feedback__button--negative"),f=$svjq(".ek-feedback__form"),p=$svjq(".ek-feedback__message");c.on("click",(function(e){return e.preventDefault(),p.addClass("ek-feedback__message--visible"),d.attr("disabled","true"),"true"===p.attr("aria-hidden")?(p.attr("aria-hidden",!1),c.attr("aria-expanded",!0)):(p.attr("aria-hidden",!0),c.attr("aria-expanded",!1))})),u.on("click",(function(e){return e.preventDefault(),f.addClass("ek-feedback__form--visible"),d.attr("disabled","true"),"true"===f.attr("aria-hidden")?(f.attr("aria-hidden",!1),u.attr("aria-expanded",!0)):(f.attr("aria-hidden",!0),u.attr("aria-expanded",!1))})),window.location.href.indexOf("state=create")>-1&&u.trigger("click")}function h(e){var t=new Date;t=new Date(t.getTime()+864e5),document.cookie="vmastate="+e+";path=/;expires="+t.toGMTString(),console.log(v("vmastate"))}function v(e){for(var t=e+"=",n=decodeURIComponent(document.cookie).split(";"),s=0;s<n.length;s++){for(var r=n[s];" "==r.charAt(0);)r=r.substring(1);if(0==r.indexOf(t)){var i=r.substring(t.length,r.length);return"true"==i.toLowerCase()||"false"!=i.toLowerCase()&&r.substring(t.length,r.length)}}return""}$svjq(".ek-important-message__toggle,.ek-important-message-closed__toggle").on("click",(function(){var e=$svjq(".ek-important-message");if(e.length>0){var t=e.find(".ek-important-message__text-show");t.length>0&&(t.is(":visible")?v("acceptcookie")&&h("closed"):v("acceptcookie")&&h("opened"),e.toggleClass("ek-important-message-closed"),t.slideToggle())}})),$svjq(".ek-cookie-prompt__close").on("click",(function(){var e=new Date;e=new Date(e.getTime()+31536e6),document.cookie="acceptcookie=true;path=/;expires="+e.toGMTString(),location.reload()}));var m=v("acceptcookie");if(document.getElementById("cookiePrompt")){var g=$svjq(".ek-important-message"),k=$svjq(".ek-important-message__text-show");if(m){var _=v("vmastate");$svjq(".ek-important-message-closed__outer"),$svjq(".ek-important-message__outer");_&&_.length>0&&"opened"!=_&&""!=_&&_?(k.hide(),g.addClass("ek-important-message-closed")):(k.show(),g.removeClass("ek-important-message-closed")),$svjq("#cookiePrompt").hide()}else $svjq("#cookiePrompt").show(),k.show()}if(s=$svjq(".ek-header")){var b=s[0].offsetTop;window.pageYOffset>b?s.addClass("ek-header-sticky"):s.removeClass("ek-header-sticky"),$svjq(window).on("scroll",(function(e){window.pageYOffset>b?s.addClass("ek-header-sticky"):s.removeClass("ek-header-sticky")}))}}))}]); 15//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FjY29yZGlvbi1qcy9kaXN0L2FjY29yZGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FwcC9jb21wb25lbnRzL2MtZmlsdGVyLWRyb3Bkb3duL2MtZmlsdGVyLWRyb3Bkb3duLmpzIiwid2VicGFjazovLy8uL3NyYy9hcHAuanMiXSwibmFtZXMiOlsicGFyZW50SG90VXBkYXRlQ2FsbGJhY2siLCJ3aW5kb3ciLCJ
15jaHVua0lkIiwibW9yZU1vZHVsZXMiLCJob3RBdmFpbGFibGVGaWxlc01hcCIsImhvdFJlcXVlc3RlZEZpbGVzTWFwIiwibW9kdWxlSWQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJob3RVcGRhdGUiLCJob3RXYWl0aW5nRmlsZXMiLCJob3RDaHVua3NMb2FkaW5nIiwiaG90VXBkYXRlRG93bmxvYWRlZCIsImhvdEFkZFVwZGF0ZUNodW5rIiwiaG90Q3VycmVudENoaWxkTW9kdWxlIiwiaG90QXBwbHlPblVwZGF0ZSIsImhvdEN1cnJlbnRIYXNoIiwiaG90UmVxdWVzdFRpbWVvdXQiLCJob3RDdXJyZW50TW9kdWxlRGF0YSIsImhvdEN1cnJlbnRQYXJlbnRzIiwiaG90Q3VycmVudFBhcmVudHNUZW1wIiwiaG90Q3JlYXRlUmVxdWlyZSIsIm1lIiwiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJmbiIsInJlcXVlc3QiLCJob3QiLCJhY3RpdmUiLCJwYXJlbnRzIiwiaW5kZXhPZiIsInB1c2giLCJjaGlsZHJlbiIsImNvbnNvbGUiLCJ3YXJuIiwiT2JqZWN0RmFjdG9yeSIsIm5hbWUiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwic2V0IiwidmFsdWUiLCJkZWZpbmVQcm9wZXJ0eSIsImUiLCJob3RTdGF0dXMiLCJob3RTZXRTdGF0dXMiLCJ0aGVuIiwiZmluaXNoQ2h1bmtMb2FkaW5nIiwiZXJyIiwiaG90V2FpdGluZ0ZpbGVzTWFwIiwiaG90RW5zdXJlVXBkYXRlQ2h1bmsiLCJ0IiwibW9kZSIsImhvdENyZWF0ZU1vZHVsZSIsIl9hY2NlcHRlZERlcGVuZGVuY2llcyIsIl9kZWNsaW5lZERlcGVuZGVuY2llcyIsIl9zZWxmQWNjZXB0ZWQiLCJfc2VsZkRlY2xpbmVkIiwiX2Rpc3Bvc2VIYW5kbGVycyIsIl9tYWluIiwiYWNjZXB0IiwiZGVwIiwiY2FsbGJhY2siLCJ1bmRlZmluZWQiLCJpIiwibGVuZ3RoIiwiZGVjbGluZSIsImRpc3Bvc2UiLCJhZGREaXNwb3NlSGFuZGxlciIsInJlbW92ZURpc3Bvc2VIYW5kbGVyIiwiaWR4Iiwic3BsaWNlIiwiY2hlY2siLCJob3RDaGVjayIsImFwcGx5IiwiaG90QXBwbHkiLCJzdGF0dXMiLCJsIiwiaG90U3RhdHVzSGFuZGxlcnMiLCJhZGRTdGF0dXNIYW5kbGVyIiwicmVtb3ZlU3RhdHVzSGFuZGxlciIsImRhdGEiLCJuZXdTdGF0dXMiLCJob3REZWZlcnJlZCIsImhvdFVwZGF0ZU5ld0hhc2giLCJ0b01vZHVsZUlkIiwiaWQiLCJFcnJvciIsInJlcXVlc3RUaW1lb3V0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJYTUxIdHRwUmVxdWVzdCIsInJlcXVlc3RQYXRoIiwicCIsIm9wZW4iLCJ0aW1lb3V0Iiwic2VuZCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJ1cGRhdGUiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJjIiwiaCIsInByb21pc2UiLCJzY3JpcHQiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjaGFyc2V0Iiwic3JjIiwiaGVhZCIsImFwcGVuZENoaWxkIiwiaG90RG93bmxvYWRVcGRhdGVDaHVuayIsImRlZmVycmVkIiwicmVzdWx0Iiwib3V0ZGF0ZWRNb2R1bGVzIiwib3B0aW9ucyIsImNiIiwiaiIsIm1vZHVsZSIsImdldEFmZmVjdGVkU3R1ZmYiLCJ1cGRhdGVNb2R1bGVJZCIsIm91dGRhdGVkRGVwZW5kZW5jaWVzIiwicXVldWUiLCJtYXAiLCJjaGFpbiIsInF1ZXVlSXRlbSIsInBvcCIsInR5cGUiLCJwYXJlbnRJZCIsInBhcmVudCIsImNvbmNhdCIsImFkZEFsbFRvU2V0IiwiYSIsImIiLCJpdGVtIiwiYXBwbGllZFVwZGF0ZSIsIndhcm5VbmV4cGVjdGVkUmVxdWlyZSIsImFib3J0RXJyb3IiLCJkb0FwcGx5IiwiZG9EaXNwb3NlIiwiY2hhaW5JbmZvIiwiam9pbiIsIm9uRGVjbGluZWQiLCJpZ25vcmVEZWNsaW5lZCIsIm9uVW5hY2NlcHRlZCIsImlnbm9yZVVuYWNjZXB0ZWQiLCJvbkFjY2VwdGVkIiwib25EaXNwb3NlZCIsIm91dGRhdGVkU2VsZkFjY2VwdGVkTW9kdWxlcyIsImVycm9ySGFuZGxlciIsImtleXMiLCJmb3JFYWNoIiwiaW5zdGFsbGVkQ2h1bmtzIiwiaG90RGlzcG9zZUNodW5rIiwiZGVwZW5kZW5jeSIsIm1vZHVsZU91dGRhdGVkRGVwZW5kZW5jaWVzIiwic2xpY2UiLCJkaXNwb3NlSGFuZGxlcnMiLCJjaGlsZCIsIm1vZHVsZXMiLCJlcnJvciIsImNhbGxiYWNrcyIsIm9uRXJyb3JlZCIsImRlcGVuZGVuY3lJZCIsImlnbm9yZUVycm9yZWQiLCJlcnIyIiwib3JpZ2luYWxFcnJvciIsImV4cG9ydHMiLCJtIiwiZCIsImdldHRlciIsIm8iLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicyIsInUiLCJ0aGlzIiwiaW5pdCIsIkFycmF5IiwiaXNBcnJheSIsImR1cmF0aW9uIiwiaXRlbU51bWJlciIsImFyaWEiLCJjbG9zZU90aGVycyIsInNob3dJdGVtIiwiZWxlbWVudENsYXNzIiwicXVlc3Rpb25DbGFzcyIsImFuc3dlckNsYXNzIiwidGFyZ2V0Q2xhc3MiLCJvblRvZ2dsZSIsImNvbnRhaW5lciIsInF1ZXJ5U2VsZWN0b3IiLCJlbGVtZW50cyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJzZXRBdHRyaWJ1dGUiLCJjbGFzc0xpc3QiLCJhZGQiLCJoaWRlRWxlbWVudCIsInNldFRyYW5zaXRpb24iLCJnZW5lcmF0ZUlEIiwic2V0QVJJQSIsInRvZ2dsZUVsZW1lbnQiLCJhdHRhY2hFdmVudHMiLCJzdHlsZSIsInVwZGF0ZUFSSUEiLCJjYWxsU3BlY2lmaWNFbGVtZW50IiwidGFyZ2V0IiwiY29udGFpbnMiLCJjbGFzc05hbWUiLCJtYXRjaCIsInByZXZlbnREZWZhdWx0IiwiY2xvc2VBbGxFbGVtZW50cyIsImhlaWdodCIsImFyZ3VtZW50cyIsInNjcm9sbEhlaWdodCIsInRvZ2dsZSIsInBhcnNlSW50IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicmVtb3ZlIiwicmVzaXplSGFuZGxlciIsIm9mZnNldEhlaWdodCIsImNsaWNrSGFuZGxlciIsImtleWRvd25IYW5kbGVyIiwia2V5Q29kZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJkZXRhY2hFdmVudHMiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZG9jdW1lbnRFbGVtZW50IiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJ3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXRUaW1lb3V0IiwiQWNjb3JkaW9uIiwiZWxlbVNlbGVjdG9yIiwiZWxlbVNlbGVjdFdyYXBwZXJTZWxlY3RvciIsImVsZW1TZWxlY3RTZWxlY3RvciIsImVsZW1PcGVuQ2xhc3MiLCJlbGVtRGlzYWJsZWRDbGFzcyIsIiRlbGVtIiwid2luZG93S2V5ZG93biIsIl9oYW5kbGVLZXlEb3duIiwiJHN2anEiLCJlYWNoIiwiZWxlbSIsIiRlbGVtU2VsZWN0V3JhcHBlciIsIl9jcmVhdGVMaXN0IiwiX2Rpc2FibGVTZWxlY3QiLCJvbiIsInBhcmVudE5vZGUiLCJoYXNDbGFzcyIsIl9saXN0Q2xpY2tIYW5kbGVyIiwiY3VycmVudFRhcmdldCIsInN0b3BQcm9wYWdhdGlvbiIsImVsZW1SaWdodFgiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJsZWZ0IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIndpZHRoIiwicmVwbGFjZSIsImNsaWVudFgiLCJhZGRDbGFzcyIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsInJlbW92ZUNsYXNzIiwiZXZlbnQiLCIkZSIsInNoaWZ0S2V5IiwicHJldkVsZW1lbnQiLCJwcmV2IiwiZmluZCIsImZvY3VzIiwiZmlyc3QiLCJzZWxlY3RlZCIsInNpYmxpbmdzIiwibGFzdCIsIm5leHQiLCJfaXNEaXNhYmxlZCIsImlzT3BlbiIsInRvZ2dsZUNsYXNzIiwiJG9wdGlvbiIsIiRjb21wIiwiY2xvc2VzdCIsIiRzZWxlY3QiLCJ0cmlnZ2VyIiwiX2FkZEJsb2NrZXIiLCIkdGhpcyIsIl9vcHRpb25DbGlja0hhbmRsZXIiLCJhcHBlbmQiLCJyZWFkeSIsImRyb3BEb3duIiwiaW5kZXgiLCJlbGVtZW50Iiwid2hpY2giLCJtb2JpbGVOYXYiLCJtb2JpbGVOYXZUb2dnbGUiLCJtb2JpbGVOYXZJY29uIiwiaGVhZGVyIiwiYXR0ciIsIm9wZW5lZEVsZW1lbnRzIiwibmF2VG9nZ2xlIiwibmF2TWVudSIsIm5hdkxpbmsiLCJzaWRlTmF2VG9nZ2xlIiwic2Nyb2xsQnV0dG9uIiwibWFpbiIsImFuaW1hdGUiLCJzY3JvbGxUb3AiLCJvZmZzZXQiLCJ0b3AiLCJmZWVkYmFja0J1dHRvbiIsImZlZWRiYWNrUG9zaXRpdmUiLCJmZWVkYmFja05lZ2F0aXZlIiwiZmVlZGJhY2tGb3JtIiwiZmVlZGJhY2tNZXNzYWdlIiwibG9jYXRpb24iLCJocmVmIiwiU2V0Vm1hU3RhdGUiLCJzdGF0ZSIsIkRhdGUiLCJnZXRUaW1lIiwiY29va2llIiwidG9HTVRTdHJpbmciLCJsb2ciLCJnZXRDb29raWUiLCJjbmFtZSIsImNhIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwic3BsaXQiLCJzdWJzdHJpbmciLCJ0b0xvd2VyQ2FzZSIsInZtYSIsInNob3dEaXYiLCJpcyIsInNsaWRlVG9nZ2xlIiwicmVsb2FkIiwiaGF2ZUNvb2tpZSIsImdldEVsZW1lbnRCeUlkIiwidm1hU2hvd0RpdiIsInZtYXN0YXRlIiwiaGlkZSIsInNob3ciLCJzdGlja3kiLCJvZmZzZXRUb3AiLCJwYWdlWU9mZnNldCIsImV2dCJdLCJtYXBwaW5ncyI6ImFBR0UsSUFBSUEsRUFBMEJDLE9BQXlCLGlCQUN2REEsT0FBeUIsaUJBQ3pCLFNBQWtDQyxFQUFTQyxJQWdSM0MsU0FBMkJELEVBQVNDLEdBQ25DLElBQUtDLEVBQXFCRixLQUFhRyxFQUFxQkgsR0FDM0QsT0FFRCxJQUFLL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kIsTUFBTTlQLFFBQVFvUSxHQU
15FHLFVBQVMsU0FBU2dHLEdBQzNCcFcsT0FBT21XLFlBQWNGLEVBRXJCN0MsRUFBT25DLFNBQVMsb0JBRWhCbUMsRUFBT2pDLFlBQVkiLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdGZ1bmN0aW9uIGhvdERpc3Bvc2VDaHVuayhjaHVua0lkKSB7XG4gXHRcdGRlbGV0ZSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG4gXHR9XG4gXHR2YXIgcGFyZW50SG90VXBkYXRlQ2FsbGJhY2sgPSB3aW5kb3dbXCJ3ZWJwYWNrSG90VXBkYXRlXCJdO1xuIFx0d2luZG93W1wid2VicGFja0hvdFVwZGF0ZVwiXSA9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuIFx0ZnVuY3Rpb24gd2VicGFja0hvdFVwZGF0ZUNhbGxiYWNrKGNodW5rSWQsIG1vcmVNb2R1bGVzKSB7XG4gXHRcdGhvdEFkZFVwZGF0ZUNodW5rKGNodW5rSWQsIG1vcmVNb2R1bGVzKTtcbiBcdFx0aWYgKHBhcmVudEhvdFVwZGF0ZUNhbGxiYWNrKSBwYXJlbnRIb3RVcGRhdGVDYWxsYmFjayhjaHVua0lkLCBtb3JlTW9kdWxlcyk7XG4gXHR9IDtcblxuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHRmdW5jdGlvbiBob3REb3dubG9hZFVwZGF0ZUNodW5rKGNodW5rSWQpIHtcbiBcdFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gXHRcdHNjcmlwdC5jaGFyc2V0ID0gXCJ1dGYtOFwiO1xuIFx0XHRzY3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgXCJcIiArIGNodW5rSWQgKyBcIi5cIiArIGhvdEN1cnJlbnRIYXNoICsgXCIuaG90LXVwZGF0ZS5qc1wiO1xuIFx0XHRpZiAobnVsbCkgc2NyaXB0LmNyb3NzT3JpZ2luID0gbnVsbDtcbiBcdFx0ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuIFx0fVxuXG4gXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiBcdGZ1bmN0aW9uIGhvdERvd25sb2FkTWFuaWZlc3QocmVxdWVzdFRpbWVvdXQpIHtcbiBcdFx0cmVxdWVzdFRpbWVvdXQgPSByZXF1ZXN0VGltZW91dCB8fCAxMDAwMDtcbiBcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuIFx0XHRcdGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgPT09IFwidW5kZWZpbmVkXCIpIHtcbiBcdFx0XHRcdHJldHVybiByZWplY3QobmV3IEVycm9yKFwiTm8gYnJvd3NlciBzdXBwb3J0XCIpKTtcbiBcdFx0XHR9XG4gXHRcdFx0dHJ5IHtcbiBcdFx0XHRcdHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1
15ZXN0KCk7XG4gXHRcdFx0XHR2YXIgcmVxdWVzdFBhdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBcIlwiICsgaG90Q3VycmVudEhhc2ggKyBcIi5ob3QtdXBkYXRlLmpzb25cIjtcbiBcdFx0XHRcdHJlcXVlc3Qub3BlbihcIkdFVFwiLCByZXF1ZXN0UGF0aCwgdHJ1ZSk7XG4gXHRcdFx0XHRyZXF1ZXN0LnRpbWVvdXQgPSByZXF1ZXN0VGltZW91dDtcbiBcdFx0XHRcdHJlcXVlc3Quc2VuZChudWxsKTtcbiBcdFx0XHR9IGNhdGNoIChlcnIpIHtcbiBcdFx0XHRcdHJldHVybiByZWplY3QoZXJyKTtcbiBcdFx0XHR9XG4gXHRcdFx0cmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiBcdFx0XHRcdGlmIChyZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHJldHVybjtcbiBcdFx0XHRcdGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMCkge1xuIFx0XHRcdFx0XHQvLyB0aW1lb3V0XG4gXHRcdFx0XHRcdHJlamVjdChcbiBcdFx0XHRcdFx0XHRuZXcgRXJyb3IoXCJNYW5pZmVzdCByZXF1ZXN0IHRvIFwiICsgcmVxdWVzdFBhdGggKyBcIiB0aW1lZCBvdXQuXCIpXG4gXHRcdFx0XHRcdCk7XG4gXHRcdFx0XHR9IGVsc2UgaWYgKHJlcXVlc3Quc3RhdHVzID09PSA0MDQpIHtcbiBcdFx0XHRcdFx0Ly8gbm8gdXBkYXRlIGF2YWlsYWJsZVxuIFx0XHRcdFx0XHRyZXNvbHZlKCk7XG4gXHRcdFx0XHR9IGVsc2UgaWYgKHJlcXVlc3Quc3RhdHVzICE9PSAyMDAgJiYgcmVxdWVzdC5zdGF0dXMgIT09IDMwNCkge1xuIFx0XHRcdFx0XHQvLyBvdGhlciBmYWlsdXJlXG4gXHRcdFx0XHRcdHJlamVjdChuZXcgRXJyb3IoXCJNYW5pZmVzdCByZXF1ZXN0IHRvIFwiICsgcmVxdWVzdFBhdGggKyBcIiBmYWlsZWQuXCIpKTtcbiBcdFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRcdC8vIHN1Y2Nlc3NcbiBcdFx0XHRcdFx0dHJ5IHtcbiBcdFx0XHRcdFx0XHR2YXIgdXBkYXRlID0gSlNPTi5wYXJzZShyZXF1
15ZXN0LnJlc3BvbnNlVGV4dCk7XG4gXHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcbiBcdFx0XHRcdFx0XHRyZWplY3QoZSk7XG4gXHRcdFx0XHRcdFx0cmV0dXJuO1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdHJlc29sdmUodXBkYXRlKTtcbiBcdFx0XHRcdH1cbiBcdFx0XHR9O1xuIFx0XHR9KTtcbiBcdH1cblxuIFx0dmFyIGhvdEFwcGx5T25VcGRhdGUgPSB0cnVlO1xuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHR2YXIgaG90Q3VycmVudEhhc2ggPSBcIjIzYjc1NDA5ZjUxOWU5MzFhZmZhXCI7XG4gXHR2YXIgaG90UmVxdWVzdFRpbWVvdXQgPSAxMDAwMDtcbiBcdHZhciBob3RDdXJyZW50TW9kdWxlRGF0YSA9IHt9O1xuIFx0dmFyIGhvdEN1cnJlbnRDaGlsZE1vZHVsZTtcbiBcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuIFx0dmFyIGhvdEN1cnJlbnRQYXJlbnRzID0gW107XG4gXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiBcdHZhciBob3RDdXJyZW50UGFyZW50c1RlbXAgPSBbXTtcblxuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHRmdW5jdGlvbiBob3RDcmVhdGVSZXF1aXJlKG1vZHVsZUlkKSB7XG4gXHRcdHZhciBtZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRpZiAoIW1lKSByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXztcbiBcdFx0dmFyIGZuID0gZnVuY3Rpb24ocmVxdWVzdCkge1xuIFx0XHRcdGlmIChtZS5ob3QuYWN0aXZlKSB7XG4gXHRcdFx0XHRpZiAoaW5zdGFsbGVkTW9kdWxlc1tyZXF1ZXN0XSkge1xuIFx0XHRcdFx0XHRpZiAoaW5zdGFsbGVkTW9kdWxlc1tyZXF1ZXN0XS5wYXJlbnRzLmluZGV4T2YobW9kdWxlSWQpID09PSAtMSkge1xuIFx0XHRcdFx0XHRcdGluc3RhbGxlZE1vZHVsZXNbcmVxdWVzdF0ucGFyZW50cy5wdXNoKG1vZHVsZUlkKTtcbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdFx0aG90Q3VycmVudFBhcmVudHMgPSBbbW9kdWxlSWRdO1xuIFx0XHRcdFx0XHRob3RDdXJyZW50Q2hpbGRNb2R1bGUgPSByZXF1ZXN0O1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0aWYgKG1lLmNoaWxkcmVuLmluZGV4T2YocmVxdWVzdCkgPT09IC0xKSB7XG4gXHRcdFx0XHRcdG1lLmNoaWxkcmVuLnB1c2gocmVxdWVzdCk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdGNvbnNvbGUud2Fybihcbi
15BcdFx0XHRcdFx0XCJbSE1SXSB1bmV4cGVjdGVkIHJlcXVpcmUoXCIgK1xuIFx0XHRcdFx0XHRcdHJlcXVlc3QgK1xuIFx0XHRcdFx0XHRcdFwiKSBmcm9tIGRpc3Bvc2VkIG1vZHVsZSBcIiArXG4gXHRcdFx0XHRcdFx0bW9kdWxlSWRcbiBcdFx0XHRcdCk7XG4gXHRcdFx0XHRob3RDdXJyZW50UGFyZW50cyA9IFtdO1xuIFx0XHRcdH1cbiBcdFx0XHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhyZXF1ZXN0KTtcbiBcdFx0fTtcbiBcdFx0dmFyIE9iamVjdEZhY3RvcnkgPSBmdW5jdGlvbiBPYmplY3RGYWN0b3J5KG5hbWUpIHtcbiBcdFx0XHRyZXR1cm4ge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG4gXHRcdFx0XHRcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fW25hbWVdO1xuIFx0XHRcdFx0fSxcbiBcdFx0XHRcdHNldDogZnVuY3Rpb24odmFsdWUpIHtcbiBcdFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfX1tuYW1lXSA9IHZhbHVlO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH07XG4gXHRcdH07XG4gXHRcdGZvciAodmFyIG5hbWUgaW4gX193ZWJwYWNrX3JlcXVpcmVfXykge1xuIFx0XHRcdGlmIChcbiBcdFx0XHRcdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfX3dlYnBhY2tfcmVxdWlyZV9fLCBuYW1lKSAmJlxuIFx0XHRcdFx0bmFtZSAhPT0gXCJlXCIgJiZcbiBcdFx0XHRcdG5hbWUgIT09IFwidFwiXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sIG5hbWUsIE9iamVjdEZhY3RvcnkobmFtZSkpO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRmbi5lID0gZnVuY3Rpb24oY2h1bmtJZCkge1xuIFx0XHRcdGlmIChob3RTdGF0dXMgPT09IFwicmVhZHlcIikgaG90U2V0U3RhdHVzKFwicHJlcGFyZVwiKTtcbiBcdFx0XHRob3RDaHVua3NMb2FkaW5nKys7XG4gXHRcdFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZShjaHVua0lkKS50aGVuKGZpbmlzaENodW5rTG9hZGluZywgZnVuY3Rpb24oZXJyKSB7XG4gXHRcdFx0XHRmaW5pc2hDaHVua0xvYWRpbmcoKTtcbiBcdFx0XHRcdHRocm93IGVycjtcbiBcdFx0XHR9KTtcblxuIFx0XHRcdGZ1bmN0aW9uIGZpbmlzaENodW5rTG9hZGluZygpIHtcbiBcdFx0XHRcdGhvdENodW5rc0xvYWRpbmctLTtcbiBcdFx0XHRcdGlmIChob3RTdGF0dXMgPT09IFwicHJlcGFyZVwiKSB7XG4gXHRcdFx0XHRcdGlmICghaG90V2FpdGluZ0ZpbGVzTWFwW2NodW5rSWRdKSB7XG4gXHRcdFx0XHRcdFx0aG90RW5zdXJlVXBkYXRlQ2h1bmsoY2h1bmtJZCk7XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdFx0aWYgKGhvdENodW5rc0xvYWRpbmcgPT09IDAgJiYgaG90V2FpdGluZ0ZpbGVzID09PSAwKSB7XG4gXHRcdFx0XHRcdFx0aG90VXBkYXRlRG93bmxvYWRlZCgpO1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHR9O1xuIFx0XHRmbi50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0XHRpZiAobW9kZSAmIDEpIHZhbHVlID0gZm4odmFsdWUpO1xuIFx0XHRcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLnQodmFsdWUsIG1vZGUgJiB+MSk7XG4gXHRcdH07XG4gXHRcdHJldHVybiBmbjtcbiBcdH1cblxuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHRmdW5jdGlvbiBob3RDcmVhdGVNb2R1bGUobW9kdWxlSWQpIHtcbiBcdFx0dmFyIGhvdCA9IHtcbiBcdFx0XHQvLyBwcml2YXRlIHN0dWZmXG4gXHRcdFx0X2FjY2VwdGVkRGVwZW5kZW5jaWVzOiB7fSxcbiBcdFx0XHRfZGVjbGluZWREZXBlbmRlbmNpZXM6IHt9LFxuIFx0XHRcdF9zZWxmQWNjZXB0ZWQ6IGZhbHNlLFxuIFx0XHRcdF9zZWxmRGVjbGluZWQ6IGZhbHNlLFxuIFx0XHRcdF9kaXNwb3NlSGFuZGxlcnM6IFtdLFxuIFx0XHRcdF9tYWluOiBob3RDdXJyZW50Q2hpbGRNb2R1bGUgIT09IG1vZHVsZUlkLFxuXG4gXHRcdFx0Ly8gTW9kdWxlIEFQSVxuIFx0XHRcdGFjdGl2ZTogdHJ1ZSxcbiBcdFx0XHRhY2NlcHQ6IGZ1bmN0aW9uKGRlcCwgY2FsbGJhY2spIHtcbiBcdFx0XHRcdGlmIChkZXAgPT09IHVuZGVmaW5lZCkgaG90Ll9zZWxmQWNjZXB0ZWQgPSB0cnVlO1xuIFx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIGRlcCA9PT0gXCJmdW5jdGlvblwiKSBob3QuX3NlbGZBY2NlcHRlZCA9IGRlcDtcbiBcdFx0XHRcdGVsc2UgaWYgKHR5cGVvZiBkZXAgPT09IFwib2JqZWN0XCIpXG4gXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZGVwLmxlbmd0aDsgaSsrKVxuIFx0XHRcdFx0XHRcdGhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwW2ldXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307XG4gXHRcdFx0XHRlbHNlIGhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307XG4gXHRcdFx0fSxcbiBcdFx0XHRkZWNsaW5lOiBmdW5jdGlvbihkZXApIHtcbiBcdFx0XHRcdGlmIChkZXAgPT09IHVuZGVmaW5lZCkgaG90Ll9zZWxmRGVjbGluZWQgPSB0cnVlO1xuIFx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIGRlcCA9PT0gXCJvYmplY3RcIilcbiBcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZXAubGVuZ3RoOyBpKyspXG4gXHRcdFx0XHRcdFx0aG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1tkZXBbaV1dID0gdHJ1ZTtcbiBcdFx0XHRcdGVsc2UgaG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1tkZXBdID0gdHJ1ZTtcbiBcdFx0XHR9LFxuIFx0XHRcdGRpc3Bvc2U6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gXHRcdFx0XHRob3QuX2Rpc3Bvc2VIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTtcbiBcdFx0XHR9LFxuIFx0XHRcdGFkZERpc3Bvc2VIYW5kbGVyOiBmdW5jdGlvbihjYWxsYmFjaykge1xuIFx0XHRcdFx0aG90Ll9kaXNwb3NlSGFuZGxlcnMucHVzaChjYWxsYmFjayk7XG4gXHRcdFx0fSxcbiBcdFx0XHRyZW1vdmVEaXNwb3NlSGFuZGxlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiBcdFx0XHRcdHZhciBpZHggPSBob3QuX2Rpc3Bvc2VIYW5kbGVycy5pbmRleE9mKGNhbGxiYWNrKTtcbiBcdFx0XHRcdGlmIChpZHggPj0gMCkgaG90Ll9kaXNwb3NlSGFuZGxlcnMuc3BsaWNlKGlkeCwgMSk7XG4gXHRcdFx0fSxcblxuIFx0XHRcdC8vIE1hbmFnZW1lbnQgQVBJXG4gXHRcdFx0Y2hlY2s6IGhvdENoZWNrLFxuIFx0XHRcdGFwcGx5OiBob3RBcHBseSxcbiBcdFx0XHRzdGF0dXM6IGZ1bmN0aW9uKGwp
15IHtcbiBcdFx0XHRcdGlmICghbCkgcmV0dXJuIGhvdFN0YXR1cztcbiBcdFx0XHRcdGhvdFN0YXR1c0hhbmRsZXJzLnB1c2gobCk7XG4gXHRcdFx0fSxcbiBcdFx0XHRhZGRTdGF0dXNIYW5kbGVyOiBmdW5jdGlvbihsKSB7XG4gXHRcdFx0XHRob3RTdGF0dXNIYW5kbGVycy5wdXNoKGwpO1xuIFx0XHRcdH0sXG4gXHRcdFx0cmVtb3ZlU3RhdHVzSGFuZGxlcjogZnVuY3Rpb24obCkge1xuIFx0XHRcdFx0dmFyIGlkeCA9IGhvdFN0YXR1c0hhbmRsZXJzLmluZGV4T2YobCk7XG4gXHRcdFx0XHRpZiAoaWR4ID49IDApIGhvdFN0YXR1c0hhbmRsZXJzLnNwbGljZShpZHgsIDEpO1xuIFx0XHRcdH0sXG5cbiBcdFx0XHQvL2luaGVyaXQgZnJvbSBwcmV2aW91cyBkaXNwb3NlIGNhbGxcbiBcdFx0XHRkYXRhOiBob3RDdXJyZW50TW9kdWxlRGF0YVttb2R1bGVJZF1cbiBcdFx0fTtcbiBcdFx0aG90Q3VycmVudENoaWxkTW9kdWxlID0gdW5kZWZpbmVkO1xuIFx0XHRyZXR1cm4gaG90O1xuIFx0fVxuXG4gXHR2YXIgaG90U3RhdHVzSGFuZGxlcnMgPSBbXTtcbiBcdHZhciBob3RTdGF0dXMgPSBcImlkbGVcIjtcblxuIFx0ZnVuY3Rpb24gaG90U2V0U3RhdHVzKG5ld1N0YXR1cykge1xuIFx0XHRob3RTdGF0dXMgPSBuZXdTdGF0dXM7XG4gXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgaG90U3RhdHVzSGFuZGxlcnMubGVuZ3RoOyBpKyspXG4gXHRcdFx0aG90U3RhdHVzSGFuZGxlcnNbaV0uY2FsbChudWxsLCBuZXdTdGF0dXMpO1xuIFx0fVxuXG4gXHQvLyB3aGlsZSBkb3dubG9hZGluZ1xuIFx0dmFyIGhvdFdhaXRpbmdGaWxlcyA9IDA7XG4gXHR2YXIgaG90Q2h1bmtzTG9hZGluZyA9IDA7XG4gXHR2YXIgaG90V2FpdGluZ0ZpbGVzTWFwID0ge307XG4gXHR2YXIgaG90UmVxdWVzdGVkRmlsZXNNYXAgPSB7fTtcbiBcdHZhciBob3RBdmFpbGFibGVGaWxlc01hcCA9IHt9O1xuIFx0dmFyIGhvdERlZmVycmVkO1xuXG4gXHQvLyBUaGUgdXBkYXRlIGluZm9cbiBcdHZhciBob3RVcGRhdGUsIGhvdFVwZGF0ZU5ld0hhc2g7XG5cbiBcdGZ1bmN0aW9uIHRvTW9kdWxlSWQoaWQpIHtcbiBcdFx0dmFyIGlzTnVtYmVyID0gK2lkICsgXCJcIiA9PT0gaWQ7XG4gXHRcdHJldHVybiBpc051bWJlciA/ICtpZCA6IGlkO1xuIFx0fVxuXG4gXHRmdW5jdGlvbiBob3RDaGVjayhhcHBseSkge1xuIFx0XHRpZiAoaG90U3RhdHVzICE9PSBcImlkbGVcIikge1xuIFx0XHRcdHRocm93IG5ldyBFcnJvcihcImNoZWNrKCkgaXMgb25seSBhbGxvd2VkIGluIGlkbGUgc3RhdHVzXCIpO1xuIFx0XHR9XG4gXHRcdGhvdEFwcGx5T25VcGRhdGUgPSBhcHBseTtcbiBcdFx0aG90U2V0U3RhdHVzKFwiY2hlY2tcIik7XG4gXHRcdHJldHVybiBob3REb3dubG9hZE1hbmlmZXN0KGhvdFJlcXVlc3RUaW1lb3V0KS50aGVuKGZ1bmN0aW9uKHVwZGF0ZSkge1xuIFx0XHRcdGlmICghdXBkYXRlKSB7XG4gXHRcdFx0XHRob3RTZXRTdGF0dXMoXCJpZGxlXCIpO1xuIFx0XHRcdFx0cmV0dXJuIG51bGw7XG4gXHRcdFx0fVxuIFx0XHRcdGhvdFJlcXVlc3RlZEZpbGVzTWFwID0ge307XG4gXHRcdFx0aG90V2FpdGluZ0ZpbGVzTWFwID0ge307XG4gXHRcdFx0aG90QXZhaWxhYmxlRmlsZXNNYXAgPSB1cGRhdGUuYztcbiBcdFx0XHRob3RVcGRhdGVOZXdIYXNoID0gdXBkYXRlLmg7XG5cbiBcdFx0XHRob3RTZXRTdGF0dXMoXCJwcmVwYXJlXCIpO1xuIFx0XHRcdHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gXHRcdFx0XHRob3REZWZlcnJlZCA9IHtcbiBcdFx0XHRcdFx0cmVzb2x2ZTogcmVzb2x2ZSxcbiBcdFx0XHRcdFx0cmVqZWN0OiByZWplY3RcbiBcdFx0XHRcdH07XG4gXHRcdFx0fSk7XG4gXHRcdFx0aG90VXBkYXRlID0ge307XG4gXHRcdFx0dmFyIGNodW5rSWQgPSAwO1xuIFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb25lLWJsb2Nrc1xuIFx0XHRcdHtcbiBcdFx0XHRcdC8qZ2xvYmFscyBjaHVua0lkICovXG4gXHRcdFx0XHRob3RFbnN1cmVVcGRhdGVDaHVuayhjaHVua0lkKTtcbiBcdFx0XHR9XG4gXHRcdFx0aWYgKFxuIFx0XHRcdFx0aG90U3RhdHVzID09PSBcInByZXBhcmVcIiAmJlxuIFx0XHRcdFx0aG90Q2h1bmtzTG9hZGluZyA9PT0gMCAmJlxuIFx0XHRcdFx0aG90V2FpdGluZ0ZpbGVzID09PSAwXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRob3RVcGRhdGVEb3dubG9hZGVkKCk7XG4gXHRcdFx0fVxuIFx0XHRcdHJldHVybiBwcm9taXNlO1xuIFx0XHR9KTtcbiBcdH1cblxuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHRmdW5jdGlvbiBob3RBZGRVcGRhdGVDaHVuayhjaHVua0lkLCBtb3JlTW9kdWxlcykge1xuIFx0XHRpZiAoIWhvdEF2YWlsYWJsZUZpbGVzTWFwW2NodW5rSWRdIHx8ICFob3RSZXF1ZXN0ZWRGaWxlc01hcFtjaHVua0lkXSlcbiBcdFx0XHRyZXR1cm47XG4gXHRcdGhvdFJlcXVlc3RlZEZpbGVzTWFwW2NodW5rSWRdID0gZmFsc2U7XG4gXHRcdGZvciAodmFyIG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4gXHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG4gXHRcdFx0XHRob3RVcGRhdGVbbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRpZiAoLS1ob3RXYWl0aW5nRmlsZXMgPT09IDAgJiYgaG90Q2h1bmtzTG9hZGluZyA9PT0gMCkge1xuIFx0XHRcdGhvdFVwZGF0ZURvd25sb2FkZWQoKTtcbiBcdFx0fVxuIFx0fVxuXG4gXHRmdW5jdGlvbiBob3RFbnN1cmVVcGRhdGVDaHVuayhjaHVua0lkKSB7XG4gXHRcdGlmICghaG90QXZhaWxhYmxlRmlsZXNNYXBbY2h1bmtJZF0pIHtcbiBcdFx0XHRob3RXYWl0aW5nRmlsZXNNYXBbY2h1bmtJZF0gPSB0cnVlO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGhvdFJlcXVlc3RlZEZpbGVzTWFwW2NodW5rSWRdID0gdHJ1ZTtcbiBcdFx0XHRob3RXYWl0aW5nRmlsZXMrKztcbiBcdFx0XHRob3REb3dubG9hZFVwZGF0ZUNodW5rKGNodW5rSWQpO1xuIFx0XHR9XG4gXHR9XG5cbiBcdGZ1bmN0aW9uIGhvdFVwZGF0ZURvd25sb2FkZWQoKSB7XG4gXHRcdGhvdFNldFN0YXR1cy
15hcInJlYWR5XCIpO1xuIFx0XHR2YXIgZGVmZXJyZWQgPSBob3REZWZlcnJlZDtcbiBcdFx0aG90RGVmZXJyZWQgPSBudWxsO1xuIFx0XHRpZiAoIWRlZmVycmVkKSByZXR1cm47XG4gXHRcdGlmIChob3RBcHBseU9uVXBkYXRlKSB7XG4gXHRcdFx0Ly8gV3JhcCBkZWZlcnJlZCBvYmplY3QgaW4gUHJvbWlzZSB0byBtYXJrIGl0IGFzIGEgd2VsbC1oYW5kbGVkIFByb21pc2UgdG9cbiBcdFx0XHQvLyBhdm9pZCB0cmlnZ2VyaW5nIHVuY2F1Z2h0IGV4Y2VwdGlvbiB3YXJuaW5nIGluIENocm9tZS5cbiBcdFx0XHQvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDY1NjY2XG4gXHRcdFx0UHJvbWlzZS5yZXNvbHZlKClcbiBcdFx0XHRcdC50aGVuKGZ1bmN0aW9uKCkge1xuIFx0XHRcdFx0XHRyZXR1cm4gaG90QXBwbHkoaG90QXBwbHlPblVwZGF0ZSk7XG4gXHRcdFx0XHR9KVxuIFx0XHRcdFx0LnRoZW4oXG4gXHRcdFx0XHRcdGZ1bmN0aW9uKHJlc3VsdCkge1xuIFx0XHRcdFx0XHRcdGRlZmVycmVkLnJlc29sdmUocmVzdWx0KTtcbiBcdFx0XHRcdFx0fSxcbiBcdFx0XHRcdFx0ZnVuY3Rpb24oZXJyKSB7XG4gXHRcdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0KGVycik7XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdCk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0dmFyIG91dGRhdGVkTW9kdWxlcyA9IFtdO1xuIFx0XHRcdGZvciAodmFyIGlkIGluIGhvdFVwZGF0ZSkge1xuIFx0XHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChob3RVcGRhdGUsIGlkKSkge1xuIFx0XHRcdFx0XHRvdXRkYXRlZE1vZHVsZXMucHVzaCh0b01vZHVsZUlkKGlkKSk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHRcdGRlZmVycmVkLnJlc29sdmUob3V0ZGF0ZWRNb2R1bGVzKTtcbiBcdFx0fVxuIFx0fVxuXG4gXHRmdW5jdGlvbiBob3RBcHBseShvcHRpb25zKSB7XG4gXHRcdGlmIChob3RTdGF0dXMgIT09IFwicmVhZHlcIilcbiBcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJhcHBseSgpIGlzIG9ubHkgYWxsb3dlZCBpbiByZWFkeSBzdGF0dXNcIik7XG4gXHRcdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gXHRcdHZhciBjYjtcbiBcdFx0dmFyIGk7XG4gXHRcdHZhciBqO1xuIFx0XHR2YXIgbW9kdWxlO1xuIFx0XHR2YXIgbW9kdWxlSWQ7XG5cbiBcdFx0ZnVuY3Rpb24gZ2V0QWZmZWN0ZWRTdHVmZih1cGRhdGVNb2R1bGVJZCkge1xuIFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbdXBkYXRlTW9kdWxlSWRdO1xuIFx0XHRcdHZhciBvdXRkYXRlZERlcGVuZGVuY2llcyA9IHt9O1xuXG4gXHRcdFx0dmFyIHF1ZXVlID0gb3V0ZGF0ZWRNb2R1bGVzLm1hcChmdW5jdGlvbihpZCkge1xuIFx0XHRcdFx0cmV0dXJuIHtcbiBcdFx0XHRcdFx0Y2hhaW46IFtpZF0sXG4gXHRcdFx0XHRcdGlkOiBpZFxuIFx0XHRcdFx0fTtcbiBcdFx0XHR9KTtcbiBcdFx0XHR3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuIFx0XHRcdFx0dmFyIHF1ZXVlSXRlbSA9IHF1ZXVlLnBvcCgpO1xuIFx0XHRcdFx0dmFyIG1vZHVsZUlkID0gcXVldWVJdGVtLmlkO1xuIFx0XHRcdFx0dmFyIGNoYWluID0gcXVldWVJdGVtLmNoYWluO1xuIFx0XHRcdFx0bW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XG4gXHRcdFx0XHRpZiAoIW1vZHVsZSB8fCBtb2R1bGUuaG90Ll9zZWxmQWNjZXB0ZWQpIGNvbnRpbnVlO1xuIFx0XHRcdFx0aWYgKG1vZHVsZS5ob3QuX3NlbGZEZWNsaW5lZCkge1xuIFx0XHRcdFx0XHRyZXR1cm4ge1xuIFx0XHRcdFx0XHRcdHR5cGU6IFwic2VsZi1kZWNsaW5lZFwiLFxuIFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbixcbiBcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWRcbiBcdFx0XHRcdFx0fTtcbiBcdFx0XHRcdH1cbiBcdFx0XHRcdGlmIChtb2R1bGUuaG90Ll9tYWluKSB7XG4gXHRcdFx0XHRcdHJldHVybiB7XG4gXHRcdFx0XHRcdFx0dHlwZTogXCJ1bmFjY2VwdGVkXCIsXG4gXHRcdFx0XHRcdFx0Y2hhaW46IGNoYWluLFxuIFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBtb2R1bGVJZFxuIFx0XHRcdFx0XHR9O1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBtb2R1bGUucGFyZW50cy5sZW5ndGg7IGkrKykge1xuIFx0XHRcdFx0XHR2YXIgcGFyZW50SWQgPSBtb2R1bGUucGFyZW50c1tpXTtcbiBcdFx0XHRcdFx0dmFyIHBhcmVudCA9IGluc3RhbGxlZE1vZHVsZXNbcGFyZW50SWRdO1xuIFx0XHRcdFx0XHRpZiAoIXBhcmVudCkgY29udGludWU7XG4gXHRcdFx0XHRcdGlmIChwYXJlbnQuaG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRcdFx0XHRyZXR1cm4ge1xuIFx0XHRcdFx0XHRcdFx0dHlwZTogXCJkZWNsaW5lZFwiLFxuIFx0XHRcdFx0XHRcdFx0Y2hhaW46IGNoYWluLmNvbmNhdChbcGFyZW50SWRdKSxcbiBcdFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBtb2R1bGVJZCxcbiBcdFx0XHRcdFx0XHRcdHBhcmVudElkOiBwYXJlbnRJZFxuIFx0XHRcdFx0XHRcdH07XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdFx0aWYgKG91dGRhdGVkTW9kdWxlcy5pbmRleE9mKHBhcmVudElkKSAhPT0gLTEpIGNvbnRpbnVlO1xuIFx0XHRcdFx0XHRpZiAocGFyZW50LmhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0XHRcdFx0aWYgKCFvdXRkYXRlZERlcGVuZGVuY2llc1twYXJlbnRJZF0pXG4gXHRcdFx0XHRcdFx0XHRvdXRkYXRlZERlcGVuZGVuY2llc1twYXJlbnRJZF0gPSBbXTtcbiBcdFx0XHRcdFx0XHRhZGRBbGxUb1NldChvdXRkYXRlZERlcGVuZGVuY2llc1twYXJlbnRJZF0sIFttb2R1bGVJZF0pO1xuIFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdGRlbGV0ZSBvdXRkYXRlZERlcGVuZGVuY2llc1twYXJlbnRJZF07XG4gXHRcdFx0XHRcdG91dGRhdGVkTW9kdWxlcy5wdXNoKHBhcmVudElkKTtcbiBcdFx0XHRcdFx0cXVldWUucHVzaCh7XG4gXHRcdFx0XHRcdFx0Y2hhaW46IGNoYWluLmNvbmNhdChbcGFyZW50SWRdKSxcbiBcdFx0XHRcdFx0XHRpZDogcGFyZW50SWRcbiBcdFx0XHRcdFx0fSk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuXG4gXHRcdFx0cmV0dXJuIHtcbiBcdFx0XHRcdHR5cGU6IFwiYWNjZXB0ZWRcIixcbi
15BcdFx0XHRcdG1vZHVsZUlkOiB1cGRhdGVNb2R1bGVJZCxcbiBcdFx0XHRcdG91dGRhdGVkTW9kdWxlczogb3V0ZGF0ZWRNb2R1bGVzLFxuIFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXM6IG91dGRhdGVkRGVwZW5kZW5jaWVzXG4gXHRcdFx0fTtcbiBcdFx0fVxuXG4gXHRcdGZ1bmN0aW9uIGFkZEFsbFRvU2V0KGEsIGIpIHtcbiBcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRcdHZhciBpdGVtID0gYltpXTtcbiBcdFx0XHRcdGlmIChhLmluZGV4T2YoaXRlbSkgPT09IC0xKSBhLnB1c2goaXRlbSk7XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gYXQgYmVnaW4gYWxsIHVwZGF0ZXMgbW9kdWxlcyBhcmUgb3V0ZGF0ZWRcbiBcdFx0Ly8gdGhlIFwib3V0ZGF0ZWRcIiBzdGF0dXMgY2FuIHByb3BhZ2F0ZSB0byBwYXJlbnRzIGlmIHRoZXkgZG9uJ3QgYWNjZXB0IHRoZSBjaGlsZHJlblxuIFx0XHR2YXIgb3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSB7fTtcbiBcdFx0dmFyIG91dGRhdGVkTW9kdWxlcyA9IFtdO1xuIFx0XHR2YXIgYXBwbGllZFVwZGF0ZSA9IHt9O1xuXG4gXHRcdHZhciB3YXJuVW5leHBlY3RlZFJlcXVpcmUgPSBmdW5jdGlvbiB3YXJuVW5leHBlY3RlZFJlcXVpcmUoKSB7XG4gXHRcdFx0Y29uc29sZS53YXJuKFxuIFx0XHRcdFx0XCJbSE1SXSB1bmV4cGVjdGVkIHJlcXVpcmUoXCIgKyByZXN1bHQubW9kdWxlSWQgKyBcIikgdG8gZGlzcG9zZWQgbW9kdWxlXCJcbiBcdFx0XHQpO1xuIFx0XHR9O1xuXG4gXHRcdGZvciAodmFyIGlkIGluIGhvdFVwZGF0ZSkge1xuIFx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaG90VXBkYXRlLCBpZCkpIHtcbiBcdFx0XHRcdG1vZHVsZUlkID0gdG9Nb2R1bGVJZChpZCk7XG4gXHRcdFx0XHQvKiogQHR5cGUge1RPRE99ICovXG4gXHRcdFx0XHR2YXIgcmVzdWx0O1xuIFx0XHRcdFx0aWYgKGhvdFVwZGF0ZVtpZF0pIHtcbiBcdFx0XHRcdFx0cmVzdWx0ID0gZ2V0QWZmZWN0ZWRTdHVmZihtb2R1bGVJZCk7XG4gXHRcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0XHRyZXN1bHQgPSB7XG4gXHRcdFx0XHRcdFx0dHlwZTogXCJkaXNwb3NlZFwiLFxuIFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBpZFxuIFx0XHRcdFx0XHR9O1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0LyoqIEB0eXBlIHtFcnJvcnxmYWxzZX0gKi9cbiBcdFx0XHRcdHZhciBhYm9ydEVycm9yID0gZmFsc2U7XG4gXHRcdFx0XHR2YXIgZG9BcHBseSA9IGZhbHNlO1xuIFx0XHRcdFx0dmFyIGRvRGlzcG9zZSA9IGZhbHNlO1xuIFx0XHRcdFx0dmFyIGNoYWluSW5mbyA9IFwiXCI7XG4gXHRcdFx0XHRpZiAocmVzdWx0LmNoYWluKSB7XG4gXHRcdFx0XHRcdGNoYWluSW5mbyA9IFwiXFxuVXBkYXRlIHByb3BhZ2F0aW9uOiBcIiArIHJlc3VsdC5jaGFpbi5qb2luKFwiIC0+IFwiKTtcbiBcdFx0XHRcdH1cbiBcdFx0XHRcdHN3aXRjaCAocmVzdWx0LnR5cGUpIHtcbiBcdFx0XHRcdFx0Y2FzZSBcInNlbGYtZGVjbGluZWRcIjpcbiBcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkRlY2xpbmVkKSBvcHRpb25zLm9uRGVjbGluZWQocmVzdWx0KTtcbiBcdFx0XHRcdFx0XHRpZiAoIW9wdGlvbnMuaWdub3JlRGVjbGluZWQpXG4gXHRcdFx0XHRcdFx0XHRhYm9ydEVycm9yID0gbmV3IEVycm9yKFxuIFx0XHRcdFx0XHRcdFx0XHRcIkFib3J0ZWQgYmVjYXVzZSBvZiBzZWxmIGRlY2xpbmU6IFwiICtcbiBcdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQubW9kdWxlSWQgK1xuIFx0XHRcdFx0XHRcdFx0XHRcdGNoYWluSW5mb1xuIFx0XHRcdFx0XHRcdFx0KTtcbiBcdFx0XHRcdFx0XHRicmVhaztcbiBcdFx0XHRcdFx0Y2FzZSBcImRlY2xpbmVkXCI6XG4gXHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25EZWNsaW5lZCkgb3B0aW9ucy5vbkRlY2xpbmVkKHJlc3VsdCk7XG4gXHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZURlY2xpbmVkKVxuIFx0XHRcdFx0XHRcdFx0YWJvcnRFcnJvciA9IG5ldyBFcnJvcihcbiBcdFx0XHRcdFx0XHRcdFx0XCJBYm9ydGVkIGJlY2F1c2Ugb2YgZGVjbGluZWQgZGVwZW5kZW5jeTogXCIgK1xuIFx0XHRcdFx0XHRcdFx0XHRcdHJlc3VsdC5tb2R1bGVJZCArXG4gXHRcdFx0XHRcdFx0XHRcdFx0XCIgaW4gXCIgK1xuIFx0XHRcdFx0XHRcdFx0XHRcdHJlc3VsdC5wYXJlbnRJZCArXG4gXHRcdFx0XHRcdFx0XHRcdFx0Y2hhaW5JbmZvXG4gXHRcdFx0XHRcdFx0XHQpO1xuIFx0XHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdFx0XHRjYXNlIFwidW5hY2NlcHRlZFwiOlxuIFx0XHRcdFx0XHRcdGlmIChvcHRpb25zLm9uVW5hY2NlcHRlZCkgb3B0aW9ucy5vblVuYWNjZXB0ZWQocmVzdWx0KTtcbiBcdFx0XHRcdFx0XHRpZiAoIW9wdGlvbnMuaWdub3JlVW5hY2NlcHRlZClcbiBcdFx0XHRcdFx0XHRcdGFib3J0RXJyb3IgPSBuZXcgRXJyb3IoXG4gXHRcdFx0XHRcdFx0XHRcdFwiQWJvcnRlZCBiZWNhdXNlIFwiICsgbW9kdWxlSWQgKyBcIiBpcyBub3QgYWNjZXB0ZWRcIiArIGNoYWluSW5mb1xuIFx0XHRcdFx0XHRcdFx0KTtcbiBcdFx0XHRcdFx0XHRicmVhaztcbiBcdFx0XHRcdFx0Y2FzZSBcImFjY2VwdGVkXCI6XG4gXHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25BY2NlcHRlZCkgb3B0aW9ucy5vbkFjY2VwdGVkKHJlc3VsdCk7XG4gXHRcdFx0XHRcdFx0ZG9BcHBseSA9IHRydWU7XG4gXHRcdFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0XHRcdGNhc2UgXCJkaXNwb3NlZFwiOlxuIFx0XHRcdFx0XHRcdGlmIChvcHRpb25zLm9uRGlzcG9zZWQpIG9wdGlvbnMub25EaXNwb3NlZChyZXN1bHQpO1xuIFx0XHRcdFx0XHRcdGRvRGlzcG9zZSA9IHRydWU7XG4gXHRcdFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0XHRcdGRlZmF1bHQ6XG4gXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5leGNlcHRpb24gdHlwZSBcIiArIHJlc3VsdC50eXBlKTtcbiBcdFx0XHRcdH1cbiBcdFx0XHRcdGlmIChhYm9ydEVycm9yKSB7XG4gXHRcdFx0XHRcdGhvdFNldFN0YXR1cyhcImFib3J0XCIpO1xuIFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoYWJvcnRFcnJvcik7XG4gXHRcdFx0XHR9XG4gXHRcdFx0XHRpZiAoZG9BcHBseSkge1xuIFx0XHRcdFx0XHRhcHBsaWVkVXBkYXRlW21vZHVsZUlkXSA9IGhvdFVwZGF0ZVttb2R1bGVJZF07XG4gXHRcdFx0XHRcdGFkZEFsbFRvU2V0KG91dGRhdGVkTW9kdWxlcywgcmVzdWx0Lm91dGRhdGVkTW9kdWxlcyk7XG4gXHRcdFx0XHRcdGZvciAobW9kdWxlSWQgaW4gcmVzdWx0Lm91dGRhdGVkRGVwZW5kZW5jaWVzKSB7XG4gXHRcdFx0XHRcdFx0aWYgKFxuIFx0XHRcdFx0XHRcdFx0T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFxuIFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQub3V0ZGF0ZWREZXBlbmRlbmNpZXMsXG4gXHRcdFx0XHRcdFx0XHRcdG1vZHVsZUlkXG4gXHRcdFx0XHRcdFx0XHQpXG4gXHRcdFx0XHRcdFx0KSB7XG4gXHRcdFx0XHRcdFx0XHRpZiAoIW91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSlcbiBcdFx0XHRcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdID0gW107XG4gXHRcdFx0XHRcdFx0XHRhZGRBbGxUb1NldChcbiBcdFx0XHRcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdLFxuIFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQub3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdXG4gXHRcdFx0XHRcdFx0XHQpO1xuIFx0XHRcdFx0XHRcdH1cbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0fVxuIFx0XHRcdFx0aWYgKGRvRGlzcG9zZSkge1xuIFx0XHRcdFx0XHRhZGRBbGxUb1NldChvdXRkYXRlZE1vZHVsZXMsIFtyZXN1bHQubW9kdWxlSWRdKTtcbiBcdFx0XHRcdFx0YXBwbGllZFVwZGF0ZVttb2R1bGVJZF0gPSB3YXJuVW5leHBlY3RlZFJlcXVpcmU7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gU3RvcmUgc2VsZiBhY2NlcHRlZCBvdXRkYXRlZCBtb2R1bGVzIHRvIHJlcXVpcmUgdGhlbSBsYXRlciBieSB0aGUgbW9kdWxlIHN5c3RlbV
15xuIFx0XHR2YXIgb3V0ZGF0ZWRTZWxmQWNjZXB0ZWRNb2R1bGVzID0gW107XG4gXHRcdGZvciAoaSA9IDA7IGkgPCBvdXRkYXRlZE1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRtb2R1bGVJZCA9IG91dGRhdGVkTW9kdWxlc1tpXTtcbiBcdFx0XHRpZiAoXG4gXHRcdFx0XHRpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSAmJlxuIFx0XHRcdFx0aW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uaG90Ll9zZWxmQWNjZXB0ZWQgJiZcbiBcdFx0XHRcdC8vIHJlbW92ZWQgc2VsZi1hY2NlcHRlZCBtb2R1bGVzIHNob3VsZCBub3QgYmUgcmVxdWlyZWRcbiBcdFx0XHRcdGFwcGxpZWRVcGRhdGVbbW9kdWxlSWRdICE9PSB3YXJuVW5leHBlY3RlZFJlcXVpcmVcbiBcdFx0XHQpIHtcbiBcdFx0XHRcdG91dGRhdGVkU2VsZkFjY2VwdGVkTW9kdWxlcy5wdXNoKHtcbiBcdFx0XHRcdFx0bW9kdWxlOiBtb2R1bGVJZCxcbiBcdFx0XHRcdFx0ZXJyb3JIYW5kbGVyOiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5ob3QuX3NlbGZBY2NlcHRlZFxuIFx0XHRcdFx0fSk7XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gTm93IGluIFwiZGlzcG9zZVwiIHBoYXNlXG4gXHRcdGhvdFNldFN0YXR1cyhcImRpc3Bvc2VcIik7XG4gXHRcdE9iamVjdC5rZXlzKGhvdEF2YWlsYWJsZUZpbGVzTWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGNodW5rSWQpIHtcbiBcdFx0XHRpZiAoaG90QXZhaWxhYmxlRmlsZXNNYXBbY2h1bmtJZF0gPT09IGZhbHNlKSB7XG4gXHRcdFx0XHRob3REaXNwb3NlQ2h1bmsoY2h1bmtJZCk7XG4gXHRcdFx0fVxuIFx0XHR9KTtcblxuIFx0XHR2YXIgaWR4O1xuIFx0XHR2YXIgcXVldWUgPSBvdXRkYXRlZE1vZHVsZXMuc2xpY2UoKTtcbiBcdFx0d2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDApIHtcbiBcdFx0XHRtb2R1bGVJZCA9IHF1ZXVlLnBvcCgpO1xuIFx0XHRcdG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRcdGlmICghbW9kdWxlKSBjb250aW51ZTtcblxuIFx0XHRcdHZhciBkYXRhID0ge307XG5cbiBcdFx0XHQvLyBDYWxsIGRpc3Bvc2UgaGFuZGxlcnNcbiBcdFx0XHR2YXIgZGlzcG9zZUhhbmRsZXJzID0gbW9kdWxlLmhvdC5fZGlzcG9zZUhhbmRsZXJzO1xuIFx0XHRcdGZvciAoaiA9IDA7IGogPCBkaXNwb3NlSGFuZGxlcnMubGVuZ3RoOyBqKyspIHtcbiBcdFx0XHRcdGNiID0gZGlzcG9zZUhhbmRsZXJzW2pdO1xuIFx0XHRcdFx0Y2IoZGF0YSk7XG4gXHRcdFx0fVxuIFx0XHRcdGhvdEN1cnJlbnRNb2R1bGVEYXRhW21vZHVsZUlkXSA9IGRhdGE7XG5cbiBcdFx0XHQvLyBkaXNhYmxlIG1vZHVsZSAodGhpcyBkaXNhYmxlcyByZXF1aXJlcyBmcm9tIHRoaXMgbW9kdWxlKVxuIFx0XHRcdG1vZHVsZS5ob3QuYWN0aXZlID0gZmFsc2U7XG5cbiBcdFx0XHQvLyByZW1vdmUgbW9kdWxlIGZyb20gY2FjaGVcbiBcdFx0XHRkZWxldGUgaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XG5cbiBcdFx0XHQvLyB3aGVuIGRpc3Bvc2luZyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgZGlzcG9zZSBoYW5kbGVyXG4gXHRcdFx0ZGVsZXRlIG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXTtcblxuIFx0XHRcdC8vIHJlbW92ZSBcInBhcmVudHNcIiByZWZlcmVuY2VzIGZyb20gYWxsIGNoaWxkcmVuXG4gXHRcdFx0Zm9yIChqID0gMDsgaiA8IG1vZHVsZS5jaGlsZHJlbi5sZW5ndGg7IGorKykge1xuIFx0XHRcdFx0dmFyIGNoaWxkID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGUuY2hpbGRyZW5bal1dO1xuIFx0XHRcdFx0aWYgKCFjaGlsZCkgY29udGludWU7XG4gXHRcdFx0XHRpZHggPSBjaGlsZC5wYXJlbnRzLmluZGV4T2YobW9kdWxlSWQpO1xuIFx0XHRcdFx0aWYgKGlkeCA+PSAwKSB7XG4gXHRcdFx0XHRcdGNoaWxkLnBhcmVudHMuc3BsaWNlKGlkeCwgMSk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gcmVtb3ZlIG91dGRhdGVkIGRlcGVuZGVuY3kgZnJvbSBtb2R1bGUgY2hpbGRyZW5cbiBcdFx0dmFyIGRlcGVuZGVuY3k7XG4gXHRcdHZhciBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcztcbiBcdFx0Zm9yIChtb2R1bGVJZCBpbiBvdXRkYXRlZERlcGVuZGVuY2llcykge1xuIFx0XHRcdGlmIChcbiBcdFx0XHRcdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvdXRkYXRlZERlcGVuZGVuY2llcywgbW9kdWxlSWQpXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHRcdGlmIChtb2R1bGUpIHtcbiBcdFx0XHRcdFx0bW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSBvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF07XG4gXHRcdFx0XHRcdGZvciAoaiA9IDA7IGogPCBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcy5sZW5ndGg7IGorKykge1xuIFx0XHRcdFx0XHRcdGRlcGVuZGVuY3kgPSBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llc1tqXTtcbiBcdFx0XHRcdFx0XHRpZHggPSBtb2R1bGUuY2hpbGRyZW4uaW5kZXhPZihkZXBlbmRlbmN5KTtcbiBcdFx0XHRcdFx0XHRpZiAoaWR4ID49IDApIG1vZHVsZS5jaGlsZHJlbi5zcGxpY2UoaWR4LCAxKTtcbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0fVxuXG4gXHRcdC8vIE5vdyBpbiBcImFwcGx5XCIgcGhhc2VcbiBcdFx0aG90U2V0U3RhdHVzKFwiYXBwbHlcIik7XG5cbiBcdFx0aG90Q3VycmVudEhhc2ggPSBob3RVcGRhdGVOZXdIYXNoO1xuXG4gXHRcdC8vIGluc2VydCBuZXcgY29kZVxuIFx0XHRmb3IgKG1vZHVsZUlkIGluIGFwcGxpZWRVcGRhdGUpIHtcbiBcdFx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFwcGxpZWRVcGRhdGUsIG1vZHVsZUlkKSkge1xuIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBhcHBsaWVkVXBkYXRlW21vZHVsZUlkXTtcbiBcdFx0XHR9XG4gXHRcdH1cblxuIFx0XHQvLyBjYWxsIGFjY2VwdCBoYW5kbGVyc1xuIFx0XHR2YXIgZXJyb3IgPSBudWxsO1xuIFx0XHRmb3IgKG1vZHVsZUlkIGluIG91dGRhdGVkRGVwZW5kZW5jaWVzKSB7XG4gXHRcdFx0aWYgKFxuIFx0XHRcdFx0T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG91dGRhdGVkRGVwZW5kZW5jaWVzLCBtb2R1bGVJZClcbiBcdFx0XHQpIHtcbiBcdFx0XHRcdG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRcdFx0aWYgKG1vZHVsZSkge1xuIFx0XHRcdFx0XHRtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcyA9IG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXTtcbiBcdFx0XHRcdFx0dmFyIGNhbGxiYWNrcyA9IFtdO1xuIFx0XHRcdFx0XHRmb3IgKGkgPSAwOyBpIDwgbW9k
15dWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRcdFx0XHRkZXBlbmRlbmN5ID0gbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXNbaV07XG4gXHRcdFx0XHRcdFx0Y2IgPSBtb2R1bGUuaG90Ll9hY2NlcHRlZERlcGVuZGVuY2llc1tkZXBlbmRlbmN5XTtcbiBcdFx0XHRcdFx0XHRpZiAoY2IpIHtcbiBcdFx0XHRcdFx0XHRcdGlmIChjYWxsYmFja3MuaW5kZXhPZihjYikgIT09IC0xKSBjb250aW51ZTtcbiBcdFx0XHRcdFx0XHRcdGNhbGxiYWNrcy5wdXNoKGNiKTtcbiBcdFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuIFx0XHRcdFx0XHRcdGNiID0gY2FsbGJhY2tzW2ldO1xuIFx0XHRcdFx0XHRcdHRyeSB7XG4gXHRcdFx0XHRcdFx0XHRjYihtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcyk7XG4gXHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG4gXHRcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkVycm9yZWQpIHtcbiBcdFx0XHRcdFx0XHRcdFx0b3B0aW9ucy5vbkVycm9yZWQoe1xuIFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6IFwiYWNjZXB0LWVycm9yZWRcIixcbiBcdFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWQsXG4gXHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW5jeUlkOiBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llc1tpXSxcbiBcdFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyXG4gXHRcdFx0XHRcdFx0XHRcdH0pO1xuIFx0XHRcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcbiBcdFx0XHRcdFx0XHRcdFx0aWYgKCFlcnJvcikgZXJyb3IgPSBlcnI7XG4gXHRcdFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gTG9hZCBzZWxmIGFjY2VwdGVkIG1vZHVsZXNcbiBcdFx0Zm9yIChpID0gMDsgaSA8IG91dGRhdGVkU2VsZkFjY2VwdGVkTW9kdWxlcy5sZW5ndGg7IGkrKykge1xuIFx0XHRcdHZhciBpdGVtID0gb3V0ZGF0ZWRTZWxmQWNjZXB0ZWRNb2R1bGVzW2ldO1xuIFx0XHRcdG1vZHVsZUlkID0gaXRlbS5tb2R1bGU7XG4gXHRcdFx0aG90Q3VycmVudFBhcmVudHMgPSBbbW9kdWxlSWRdO1xuIFx0XHRcdHRyeSB7XG4gXHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKTtcbiBcdFx0XHR9IGNhdGNoIChlcnIpIHtcbiBcdFx0XHRcdGlmICh0eXBlb2YgaXRlbS5lcnJvckhhbmRsZXIgPT09IFwiZnVuY3Rpb25cIikge1xuIFx0XHRcdFx0XHR0cnkge1xuIFx0XHRcdFx0XHRcdGl0ZW0uZXJyb3JIYW5kbGVyKGVycik7XG4gXHRcdFx0XHRcdH0gY2F0Y2ggKGVycjIpIHtcbiBcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkVycm9yZWQpIHtcbiBcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcbiBcdFx0XHRcdFx0XHRcdFx0dHlwZTogXCJzZWxmLWFjY2VwdC1lcnJvci1oYW5kbGVyLWVycm9yZWRcIixcbiBcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuIFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyMixcbiBcdFx0XHRcdFx0XHRcdFx0b3JpZ2luYWxFcnJvcjogZXJyXG4gXHRcdFx0XHRcdFx0XHR9KTtcbiBcdFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcbiBcdFx0XHRcdFx0XHRcdGlmICghZXJyb3IpIGVycm9yID0gZXJyMjtcbiBcdFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdFx0aWYgKCFlcnJvcikgZXJyb3IgPSBlcnI7XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRcdGlmIChvcHRpb25zLm9uRXJyb3JlZCkge1xuIFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcbiBcdFx0XHRcdFx0XHRcdHR5cGU6IFwic2VsZi1hY2NlcHQtZXJyb3JlZFwiLFxuIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuIFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGVyclxuIFx0XHRcdFx0XHRcdH0pO1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdGlmICghb3B0aW9ucy5pZ25vcmVFcnJvcmVkKSB7XG4gXHRcdFx0XHRcdFx0aWYgKCFlcnJvcikgZXJyb3IgPSBlcnI7XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdH1cbiBcdFx0XHR9XG4gXHRcdH1cblxuIFx0XHQvLyBoYW5kbGUgZXJyb3JzIGluIGFjY2VwdCBoYW5kbGVycyBhbmQgc2VsZiBhY2NlcHRlZCBtb2R1bGUgbG9hZFxuIFx0XHRpZiAoZXJyb3IpIHtcbiBcdFx0XHRob3RTZXRTdGF0dXMoXCJmYWlsXCIpO1xuIFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gXHRcdH1cblxuIFx0XHRob3RTZXRTdGF0dXMoXCJpZGxlXCIpO1xuIFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xuIFx0XHRcdHJlc29sdmUob3V0ZGF0ZWRNb2R1bGVzKTtcbiBcdFx0fSk7XG4gXHR9XG5cbiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9LFxuIFx0XHRcdGhvdDogaG90Q3JlYXRlTW9kdWxlKG1vZHVsZUlkKSxcbiBcdFx0XHRwYXJlbnRzOiAoaG90Q3VycmVudFBhcmVudHNUZW1wID0gaG90Q3VycmVudFBhcmVudHMsIGhvdEN1cnJlbnRQYXJlbnRzID0gW10sIGhvdEN1cnJlbnRQYXJlbnRzVGVtcCksXG4gXHRcdFx0Y2hpbGRyZW46IFtdXG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIGhvdENyZWF0ZVJlcXVpcmUobW9kdWxlSWQpKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbW
15UsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9cIjtcblxuIFx0Ly8gX193ZWJwYWNrX2hhc2hfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5oID0gZnVuY3Rpb24oKSB7IHJldHVybiBob3RDdXJyZW50SGFzaDsgfTtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBob3RDcmVhdGVSZXF1aXJlKDIpKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDIpO1xuIiwiLyohXHJcbiAqIEFjY29yZGlvbiB2Mi44LjBcclxuICogU2ltcGxlIGFjY29yZGlvbiBjcmVhdGVkIGluIHB1cmUgSmF2YXNjcmlwdC5cclxuICogaHR0cHM6Ly9naXRodWIuY29tL21pY2h1MmsvQWNjb3JkaW9uXHJcbiAqXHJcbiAqIENvcHlyaWdodCAyMDE3LTIwMTkgTWljaGHFgiBTdHJ1bXBmXHJcbiAqIFB1Ymxpc2hlZCB1bmRlciBNSVQgTGljZW5zZVxyXG4gKi9cclxuXCJ1c2Ugc3RyaWN0XCI7IWZ1bmN0aW9uKGkpe2Z1bmN0aW9uIHUobyxsKXt2YXIgYz10aGlzLHQ9e2luaXQ6ZnVuY3Rpb24oKXtpZihBcnJheS5pc0FycmF5KG8pKXJldHVybiBvLmxlbmd0aCYmby5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB1KGUsbCl9KSwhMTt0aGlzLm9wdGlvbnM9aCh7ZHVyYXRpb246NjAwLGl0ZW1OdW1iZXI6MCxhcmlhOiEwLGNsb3NlT3RoZXJzOiEwLHNob3dJdGVtOiExLGVsZW1lbnRDbGFzczpcImFjXCIscXVlc3Rpb25DbGFzczpcImFjLXFcIixhbnN3ZXJDbGFzczpcImFjLWFcIix0YXJnZXRDbGFzczpcImFjLXRhcmdldFwiLG9uVG9nZ2xlOmZ1bmN0aW9uKCl7fX0sbCksdGhpcy5jb250YWluZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvKSx0aGlzLmVsZW1lbnRzPXRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuXCIrdGhpcy5vcHRpb25zLmVsZW1lbnRDbGFzcyk7dmFyIGU9dGhpcy5vcHRpb25zLHQ9ZS5hcmlhLG49ZS5zaG93SXRlbSxpPWUuaXRlbU51bWJlcjt0JiZ0aGlzLmNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJ0YWJsaXN0XCIpO2Zvcih2YXIgcz0wO3M8dGhpcy5lbGVtZW50cy5sZW5ndGg7cysrKXt2YXIgcj10aGlzLmVsZW1lbnRzW3NdO3IuY2xhc3NMaXN0LmFkZChcImpzLWVuYWJsZWRcIiksdGhpcy5oaWRlRWxlbWVudChyKSx0aGlzLnNldFRyYW5zaXRpb24ociksdGhpcy5nZW5lcmF0ZUlEKHIpLHQmJnRoaXMuc2V0QVJJQShyKX1pZihuKXt2YXIgYT10aGlzLmVsZW1lbnRzWzBdO1wibnVtYmVyXCI9PXR5cGVvZiBpJiZpPHRoaXMuZWxlbWVudHMubGVuZ3RoJiYoYT10aGlzLmVsZW1lbnRzW2ldKSx0aGlzLnRvZ2dsZUVsZW1lbnQoYSwhMSl9Yy5hdHRhY2hFdmVudHMoKX0sc2V0VHJhbnNpdGlvbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm9wdGlvbnMsbj10LmR1cmF0aW9uLGk9dC5hbnN3ZXJDbGFzcyxzPWUucXVlcnlTZWxlY3RvcihcIi5cIitpKSxyPWEoXCJ0cmFuc2l0aW9uXCIpO3Muc3R5bGVbcl09bitcIm1zXCJ9LGdlbmVyYXRlSUQ6ZnVuY3Rpb24oZSl7ZS5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiYWMtXCIuY29uY2F0KHMpKSxzKyt9LHNldEFSSUE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5vcHRpb25zLG49dC5xdWVzdGlvbkNsYXNzLGk9dC5hbnN3ZXJDbGFzcyxzPWUucXVlcnlTZWxlY3RvcihcIi5cIituKSxyPWUucXVlcnlTZWxlY3RvcihcIi5cIitpKTtzLnNldEF0dHJpYnV0ZShcInJvbGVcIixcInRhYlwiKSxzLnNldEF0dHJpYnV0ZShcImFyaWEtZXhwYW5kZWRcIixcImZhbHNlXCIpLHIuc2
15V0QXR0cmlidXRlKFwicm9sZVwiLFwidGFicGFuZWxcIil9LHVwZGF0ZUFSSUE6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLm9wdGlvbnMucXVlc3Rpb25DbGFzcztlLnF1ZXJ5U2VsZWN0b3IoXCIuXCIrbikuc2V0QXR0cmlidXRlKFwiYXJpYS1leHBhbmRlZFwiLHQpfSxjYWxsU3BlY2lmaWNFbGVtZW50OmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnRhcmdldCxuPXRoaXMub3B0aW9ucyxpPW4ucXVlc3Rpb25DbGFzcyxzPW4udGFyZ2V0Q2xhc3Mscj1uLmNsb3NlT3RoZXJzLGE9MDthPHRoaXMuZWxlbWVudHMubGVuZ3RoO2ErKylpZih0aGlzLmVsZW1lbnRzW2FdLmNvbnRhaW5zKHQpKXsodC5jbGFzc05hbWUubWF0Y2goaSl8fHQuY2xhc3NOYW1lLm1hdGNoKHMpKSYmKGUucHJldmVudERlZmF1bHQoKSxyJiZ0aGlzLmNsb3NlQWxsRWxlbWVudHMoYSksdGhpcy50b2dnbGVFbGVtZW50KHRoaXMuZWxlbWVudHNbYV0pKTticmVha319LGhpZGVFbGVtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucy5hbnN3ZXJDbGFzcztlLnF1ZXJ5U2VsZWN0b3IoXCIuXCIrdCkuc3R5bGUuaGVpZ2h0PTB9LHRvZ2dsZUVsZW1lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixpPSEoMTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT10KXx8dCxzPXRoaXMub3B0aW9ucyxyPXMuYW5zd2VyQ2xhc3MsYT1zLmFyaWEsbz1zLm9uVG9nZ2xlLGw9ZS5xdWVyeVNlbGVjdG9yKFwiLlwiK3IpLGM9bC5zY3JvbGxIZWlnaHQ7ZS5jbGFzc0xpc3QudG9nZ2xlKFwiaXMtYWN0aXZlXCIpLGl8fChsLnN0eWxlLmhlaWdodD1cImF1dG9cIiksMDxwYXJzZUludChsLnN0eWxlLmhlaWdodCk/KG49ITEscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7bC5zdHlsZS5oZWlnaHQ9MH0pKToobj0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtsLnN0eWxlLmhlaWdodD1jK1wicHhcIn0pKSxhJiZ0aGlzLnVwZGF0ZUFSSUEoZSxuKSxpJiZvKGUsdGhpcy5lbGVtZW50cyl9LGNsb3NlQWxsRWxlbWVudHM6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMub3B0aW9ucy5hcmlhLG49dGhpcy5lbGVtZW50cy5sZW5ndGgsaT0wO2k8bjtpKyspaWYoaSE9ZSl7dmFyIHM9dGhpcy5lbGVtZW50c1tpXTtzLmNsYXNzTGlzdC5jb250YWlucyhcImlzLWFjdGl2ZVwiKSYmcy5jbGFzc0xpc3QucmVtb3ZlKFwiaXMtYWN0aXZlXCIpLHQmJnRoaXMudXBkYXRlQVJJQShzLCExKSx0aGlzLmhpZGVFbGVtZW50KHMpfX0scmVzaXplSGFuZGxlcjpmdW5jdGlvbigpe2Zvcih2YXIgZSx0LG49dGhpcy5vcHRpb25zLGk9bi5lbGVtZW50Q2xhc3Mscz1uLmFuc3dlckNsYXNzLHI9dGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcIi5cIitpK1wiLmlzLWFjdGl2ZVwiKSxhPTA7YTxyLmxlbmd0aDthKyspdD1yW2FdLnF1ZXJ5U2VsZWN0b3IoXCIuXCIrcykscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7dC5zdHlsZS5oZWlnaHQ9XCJhdXRvXCIsZT10Lm9mZnNldEhlaWdodCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt0LnN0eWxlLmhlaWdodD1lK1wicHhcIn0pfSl9LGNsaWNrSGFuZGxlcjpmdW5jdGlvbihlKXt0aGlzLmNhbGxTcGVjaWZpY0VsZW1lbnQoZSl9LGtleWRvd25IYW5kbGVyOmZ1bmN0aW9uKGUpezEzPT09ZS5rZXlDb2RlJiZ0aGlzLmNhbGxTcGVjaWZpY0VsZW1lbnQoZSl9fTt0aGlzLmF0dGFjaEV2ZW50cz1mdW5jdGlvbigpe3ZhciBlPXQ7ZS5jbGlja0hhbmRsZXI9ZS5jbGlja0hhbmRsZXIuYmluZChlKSxlLmtleWRvd25IYW5kbGVyPWUua2V5ZG93bkhhbmRsZXIuYmluZChlKSxlLnJlc2l6ZUhhbmRsZXI9ZS5yZXNpemVIYW5kbGVyLmJpbmQoZSksZS5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZS5jbGlja0hhbmRsZXIpLGUuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsZS5rZXlkb3duSGFuZGxlciksaS5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsZS5yZXNpemVIYW5kbGVyKX0sdGhpcy5kZXRhY2hFdmVudHM9ZnVuY3Rpb24oKXt2YXIgZT10O2UuY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGUuY2xpY2tIYW5kbGVyKSxlLmNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGUua2V5ZG93bkhhbmRsZXIpLGkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLGUucmVzaXplSGFuZGxlcil9O3ZhciBhPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGVbZV0/ZTooZT1uKGUpLGU9XCJ3ZWJraXRcIi5jb25jYXQoZSkpfSxuPWZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSl9LGg9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl07cmV0dXJuIGV9O2kucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWkucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxpLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZXx8ZnVuY3Rpb24oZSl7aS5zZXRUaW1lb3V0KGUsMWUzLzYwKX0sdC5pbml0KCl9dmFyIHM9MDtcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlJiZ2b2lkIDAhPT1tb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz11OmkuQWNjb3JkaW9uPXV9KHdpbmRvdyk7IiwiXHJcbmxldCBEcm9wZG93biA9IHtcclxuICAgIGVsZW1TZWxlY3RvcjogJy5qcy1lay1maWx0ZXItZHJvcGRvd24nLFxyXG4gICAgZWxlbVNlbGVjdFdyYXBwZXJTZWxlY3RvcjogJy5lay1maWx0ZXItZHJvcGRvd25fX3NlbGVjdCcsXHJcbiAgICBlbGVtU2VsZWN0U2VsZWN0b3I6ICcuanMtZWstZmlsdGVyLWRyb3Bkb3duLXNlbGVjdCcsXHJcbiAgICBlbGVtT3BlbkNsYXNzOiAnZWstZmlsdGVyLWRyb3Bkb3duLS1vcGVuJyxcclxuICAgIGVsZW1EaXNhYmxlZENsYXNzOiAnZWstZmlsdGVyLWRyb3Bkb3duLS1kaXNhYmxlZCcsXHJcbiAgICAkZWxlbTogbnVsbCxcclxuXHJcbiAgICBpbml0KCkge1xyXG4gICAgICAgIHZhciB3aW5kb3dLZXlkb3duID0gdGhpcy5faGFuZGxlS2V5RG93bi5iaW5kKHRoaXMpO1xyXG4gICAgICAgI
15HRoaXMuJGVsZW0gPSAkc3ZqcSh0aGlzLmVsZW1TZWxlY3Rvcik7XHJcbiAgICAgICAgdmFyIG91dGVycyA9ICRzdmpxKCcuZWstbmV3cy1saXN0aW5nLWZpbHRlcl9faXRlbV9fZHJvcGRvd25fX291dGVyJyk7XHJcbiAgICAgICAgb3V0ZXJzLmVhY2goKGksIGVsZW0pID0+IHtcclxuICAgICAgICAgICAgZWxlbS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgd2luZG93S2V5ZG93biwgZmFsc2UpXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuJGVsZW1TZWxlY3RXcmFwcGVyID0gJHN2anEodGhpcy5lbGVtU2VsZWN0V3JhcHBlclNlbGVjdG9yKTtcclxuXHJcbiAgICAgICAgaWYodGhpcy4kZWxlbS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuJGVsZW0uZWFjaCgoaSwgZWxlbSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgJGVsZW0gPSAkc3ZqcShlbGVtKTtcclxuICAgICAgICAgICAgLy9lbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB3aW5kb3dLZXlkb3duLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUxpc3QoJGVsZW0pO1xyXG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlU2VsZWN0KCRlbGVtKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy4kZWxlbS5vbigna2V5ZG93bicsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKCEkc3ZqcShlLnRhcmdldC5wYXJlbnROb2RlKS5oYXNDbGFzcyh0aGlzLmVsZW1PcGVuQ2xhc3MpICYmIChlLmtleUNvZGUgPT09IDM4IHx8IGUua2V5Q29kZSA9PT0gNDApKXtcclxuICAgICAgICAgICAgICAgIGlmICghJHN2anEoZS50YXJnZXQpLmhhc0NsYXNzKCdlay1maWx0ZXItZHJvcGRvd25fX2xpc3RfX29wdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGlzdENsaWNrSGFuZGxlcigkc3ZqcShlLmN1cnJlbnRUYXJnZXQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuJGVsZW0ub24oJ21vdXNlZG93bicsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCdibG9ja2VyJykgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHZpZXdwb3J0T2Zmc2V0ID0gZS50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB2Y
15XIgZWxlbVggPSB2aWV3cG9ydE9mZnNldC5sZWZ0O1xyXG4gICAgICAgICAgICAgICAgdmFyIGVsZW1XaWR0aCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZS50YXJnZXQpLndpZHRoLnJlcGxhY2UoJ3B4JywgJycpKTtcclxuICAgICAgICAgICAgICAgIHZhciBlbGVtUmlnaHRYID0gZWxlbVggKyBlbGVtV2lkdGg7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2xpY2tYID0gZS5jbGllbnRYO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIFdlIHdpbGwgbm90XHJcbiAgICAgICAgICAgICAgICAgKiBkbyBhbnl0aGluZyBpZiB0aGUgY2xpY2sgd2FzICc2NCcgcGl4ZWxzIGZyb20gdGhlIHJpZ2h0IHNpZGVcclxuICAgICAgICAgICAgICAgICAqIHRvd2FyZHMgdGhlIGxlZnQgc2lkZS5cclxuICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsaWNrWCA+PSAoZWxlbVJpZ2h0WCAtIDY0KSkgeyByZXR1cm47IH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoISRzdmpxKGUudGFyZ2V0KS5oYXNDbGFzcygnZWstZmlsdGVyLWRyb3Bkb3duX19saXN0X19vcHRpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbGlzdENsaWNrSGFuZGxlcigkc3ZqcShlLmN1cnJlbnRUYXJnZXQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuJGVsZW1TZWxlY3RXcmFwcGVyLm9uKCdrZXlkb3duJywgKGUpPT57XHJcbiAgICAgICAgICAgIGlmKGUua2V5Q29kZSA9PT0gMzIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbGlzdENsaWNrSGFuZGxlcigkc3ZqcShlLmN1cnJlbnRUYXJnZXQucGFyZW50Tm9kZSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0pOyBcclxuXHJcbiAgICAgICAgdGhpcy4kZWxlbVNlbGVjdFdyYXBwZXIub24oJ2ZvY3VzaW4nLCAoZSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghJHN2anEoZS50YXJnZXQucGFyZW50Tm9kZSkuaGFzQ2xhc3MoJ2VrLWZpbHRlci1kcm9wZG93bl9fbGlzdF9fb3B0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuX2xpc3RDbGlja0hhbmRsZXIoJHN2anEoZS5jdXJyZW50VGFyZ2V0LnBhcmVudE5vZGUpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICRzdmpxKGUudGFyZ2V0KS5hZGRDbGFzcygnZWstZmlsdGVyLWRyb3Bkb3duLS1mb2N1c2VkJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuJGVsZW1TZWxlY3RXcmFwcGVyLm9uKCdmb2N1c291dCcsIChlKSA9PiB7XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIGlmICgkc3ZqcShlLnRhcmdldC5wYXJlbnROb2RlKS5oYXNDbGFzcygnZWstZmlsdGVyLWRyb3Bkb3duLS1vcGVuJykgJiYgISgkc3ZqcShlLnRhcmdldCkuaGFzQ2xhc3MoJ2VrLWZpbHRlci1kcm9wZG93bi0tZm9jdXNlZCcpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5fbGlzdENsaWNrSGFuZGxlcigkc3ZqcShlLmN1cnJlbnRUYXJnZXQucGFyZW50Tm9kZSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCRzdmpxKGUudGFyZ2V0KS5oYXNDbGFzcygnZWstZmlsdGVyLWRyb3Bkb3duLS1mb2N1c2VkJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAkc3ZqcShlLnRhcmdldCkucmVtb3ZlQ2xhc3MoJ2VrLWZpbHRlci1kcm9wZG93bi0tZm9jdXNlZCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgfSxcclxuICAgIF9oYW5kbGVLZXlEb3duKGV2ZW50KSB7XHJcbiAgICAgICAgdmFyICRlID0gJHN2anEodGhpcy4kZWxlbSk7XHJcbiAgICAgIGlmKHRoaXMuJGVsZW0uaGFzQ2xhc3ModGhpcy5lbGVtT3BlbkNsYXNzKSAmJiAoZXZlbnQua2V5Q29kZT09PTQwfHxldmVudC5rZXlDb2RlPT09MzgpKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBpZigkZS5maW5kKCdsaS5qcy0tZm9jdXMnKS5sZW5ndGggPT09IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgJGUuZmluZCgnbGknKS5maXJzdCgpLmFkZENsYXNzKCdqcy0tZm9jdXMnKVxyXG4gICAgICAgICAgICAgICAgLmZpbmQoJ2J1dHRvbicpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZigkZS5maW5kKCdsaS5qcy0tZm9jdXMnKS5sZW5ndGggPiAxKXtcclxuICAgICAgICAgICAgICAgICAgICAkZS5maW5kKCdsaScpLmZpcnN0KCkuYWRkQ2xhc3MoJ2pzLS1mb2N1cycpXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2J1dHRvbicpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2Y
15XIgc2VsZWN0ZWQgPSAkZS5maW5kKCcuanMtLWZvY3VzJyk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYoZXZlbnQua2V5Q29kZT09PTM4KSB7IC8vIGtleVVwICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkZS5maW5kKCdsaScpLnJlbW92ZUNsYXNzKCdqcy0tZm9jdXMnKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyBlbGVtZW50IGJlZm9yZSB0aGUgc2VsZWN0ZWQgb25lLCB3ZSBzZWxlY3QgdGhlIGxhc3Qgb25lXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkLnByZXYoKS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC5zaWJsaW5ncygpLmxhc3QoKS5hZGRDbGFzcygnanMtLWZvY3VzJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2J1dHRvbicpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gb3RoZXJ3aXNlIHdlIGp1c3Qgc2VsZWN0IHRoZSBuZXh0IG9uZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC5wcmV2KCkuYWRkQ2xhc3MoJ2pzLS1mb2N1cycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdidXR0b24nKS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoZXZlbnQua2V5Q29kZT09PTQwKSB7IC8vIGtleURvd25cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkZS5maW5kKCdsaScpLnJlbW92ZUNsYXNzKCdqcy0tZm9jdXMnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gZWxlbWVudCBhZnRlciB0aGUgc2VsZWN0ZWQgb25lLCB3ZSBzZWxlY3QgdGhlIGZpcnN0IG9uZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZC5uZXh0KCkubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQuc2libGluZ3MoKS5maXJzdCgpLmFkZENsYXNzKCdqcy0tZm9jdXMnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnYnV0dG9uJykuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2Ugd2UganVzdCBzZWxlY3QgdGhlIHByZXYgb25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLm5leHQoKS5hZGRDbGFzcygnanMtLWZvY3VzJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2J1dHRvbicpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgfWVsc2UgaWYoZXZlbnQua2V5Q29kZT09PTkpe1xyXG4gICAgICAgIGlmKCEhd2luZG93LmV2ZW50LnNoaWZ0S2V5ICYmIHRoaXMuJGVsZW0uaGFzQ2xhc3ModGhpcy5lbGVtT3BlbkNsYXNzKSl7XHJcbiAgICAgICAgICAgIHZhciBwcmV2RWxlbWVudCA9IHRoaXMuJGVsZW0ucHJldigpO1xyXG4gICAgICAgICAgICAkZS5yZW1vdmVDbGFzcyh0aGlzLmVsZW1PcGVuQ2xhc3MpO1xyXG4gICAgICAgICAgICBpZihwcmV2RWxlbWVudC5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgIHByZXZFbGVtZW50LmZpbmQoJy5qcy1lay1maWx0ZXItZHJvcGRvd24tc2VsZWN0JykuZm9jdXMoKTtcclxuXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgJGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAkZS5yZW1vdmVDbGFzcyh0aGlzLmVsZW1PcGVuQ2xhc3MpO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgXHJcbiAgICAgIH1lbHNlIGlmKGV2ZW50LmtleUNvZGUgPT09IDMyICYmICRzdmpxKGV2ZW50LnRhcmdldC5wYXJlbnROb2RlKS5oYXNDbGFzcygnanMtZWstZmlsdGVyLWRyb3Bkb3duJykpe1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgX2xpc3RDbGlja0hhbmRsZXIoJGVsZW0pIHtcclxuIFxyXG4gICAgICAgIGlmICh0aGlzLl9pc0Rpc2FibGVkKCRlbGVtKSkgcmV0dXJuO1xyXG4gICAgICAgIHZhciBpc09wZW4gPSAkZWxlbS5oYXNDbGFzcyh0aGlzLmVsZW1PcGVuQ2xhc3MpO1xyXG4gICAgICAgIHRoaXMuJGVsZW0gPSAkZWxlbTtcclxuICAgICAgICBpZihpc09wZW4peyAvLyB3ZSB3aWxsIGNsb3NlXHJcbiAgICAgICAgICAkZWxlbS5maW5kKCdsaScpLnJlbW92ZUNsYXNzKCdqcy0tZm9jdXMnKTsgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgJGVsZW0uc2libGluZ3MoKS5yZW1vdmVDbGFzcygnZWstZmlsdGVyLWRyb3Bkb3duLS1vcGVuJyk7XHJcblxyXG4gICAgICAgICRlbGVtLnRvZ2dsZUNsYXNzKHRoaXMuZWxlbU9wZW5DbGFzcywgIWlzT3Blbik7XHJcblxyXG4gICAgfSxcclxuICAgIF9vcHRpb25DbGlja0hhbmRsZXIoJG9wdGlvbikge1xyXG5cclxuICAgICAgICBsZXQgJGNvbXAgPSAkb3B0aW9uLm
15Nsb3Nlc3QodGhpcy5lbGVtU2VsZWN0b3IpO1xyXG4gICAgICAgIGxldCAkc2VsZWN0ID0gJHN2anEoJ3NlbGVjdCcsICRjb21wKTtcclxuICAgICAgICBsZXQgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgICAgICRjb21wLnJlbW92ZUNsYXNzKHNlbGYuZWxlbU9wZW5DbGFzcyk7XHJcblxyXG4gICAgICAgIC8vJG9wdGlvbi50b2dnbGVDbGFzcygnZWstZmlsdGVyLWRyb3Bkb3duX19saXN0X19vcHRpb24tLXNlbGVjdGVkJyk7XHJcblxyXG4gICAgICAgICRjb21wLmZpbmQoJy5lay1maWx0ZXItZHJvcGRvd25fX2xpc3QnKS5maW5kKCdsaScpLnJlbW92ZUNsYXNzKCdqcy0tZm9jdXMnKTtcclxuXHJcblxyXG4gICAgICAgICRzZWxlY3QudHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICB9LFxyXG4gICAgX2Rpc2FibGVTZWxlY3QoJGVsZW0pIHtcclxuICAgICAgICB0aGlzLl9hZGRCbG9ja2VyKCRlbGVtKTtcclxuICAgIH0sXHJcbiAgICBfY3JlYXRlTGlzdCgkZWxlbSkge1xyXG4gICAgICAgIHZhciAkdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIHZhciBjdXJyZW50ID0gZmFsc2U7XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIGxldCAkc2VsZWN0RWxlbSA9ICRzdmpxKHRoaXMuZWxlbVNlbGVjdFNlbGVjdG9yLCAkZWxlbSk7XHJcbiAgICAgICAgaWYoY3VycmVudCAhPSBmYWxzZSl7XHJcbiAgICAgICAgICAgICRzZWxlY3RFbGVtLnZhbChjdXJyZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKCRlbGVtLmZpbmQoJy5lay1maWx0ZXItZHJvcGRvd25fX2xpc3QnKS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgJHN2anEoJ2J1dHRvbicsICRlbGVtKS5vbignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICR0aGlzLl9vcHRpb25DbGlja0hhbmRsZXIoJHN2anEoZS5jdXJyZW50VGFyZ2V0KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gXHJcbiAgICB9LFxyXG4gICAgX2FkZEJsb2NrZXIoJGVsZW0pIHtcclxuICAgICAgICBpZigkZWxlbS5maW5kKCcuZWstZmlsdGVyLWRyb3Bkb3duX19zZWxlY3RfX2Jsb2NrZXInKS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAgICRzdmpxKCcuZWstZmlsdGVyLWRyb3Bkb3duX19zZWxlY3QnLCAkZWxlbSkuYXBwZW5kKCc8ZGl2IGNsYXNzPVwiZWstZmlsdGVyLWRyb3Bkb3duX19zZWxlY3RfX2Jsb2NrZXJcIiAvPicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgIH0sXHJcbiAgICBfaXNEaXNhYmxlZCgkZWxlbSkge1xyXG4gICAgICAgIHJldHVybiAkZWxlbS5oYXNDbGFzcyh0aGlzLmVsZW1EaXNhYmxlZENsYXNzKTtcclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duOyIsImltcG9ydCAnLi9hcHAuc2Nzcyc7XHJcblxyXG5pbXBvcnQgQWNjb3JkaW9uIGZyb20gJ2FjY29yZGlvbi1qcyc7XHJcbmltcG9ydCBEcm9wZG93biBmcm9tICcuL2FwcC9jb21wb25lbnRzL2MtZmlsdGVyLWRyb3Bkb3duL2MtZmlsdGVyLWRyb3Bkb3duLmpzJztcclxuXHJcbiRzdmpxKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XHJcbiAgICB3aW5kb3cuZHJvcERvd24gPSBEcm9wZG93bjtcclxuICAgIERyb3Bkb3duLmluaXQoKTtcclxuICAgICRzdmpxKCcuZWstYWNjb3JkaW9uJykuZWFjaChmdW5jdGlvbiAoaW5kZXgsIGVsZW1lbnQpIHtcclxuICAgICAgICAkc3ZqcShlbGVtZW50KS5hZGRDbGFzcygnYWNjb3JkaW9uLScgKyBpbmRleCk7XHJcbiAgICAgICAgbmV3IEFjY29yZGlvbignLmFjY29yZGlvbi0nICsgaW5kZXgsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRDbGFzczogJ2VrLWFjY29yZGlvbl9fZmFxJyxcclxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uQ2xhc3M6ICdlay1hY2NvcmRpb25fX2ZhcS1oZWFkaW5nJyxcclxuICAgICAgICAgICAgICAgIGFuc3dlckNsYXNzOiAnZWstYWNjb3JkaW9uX19mYXEtY29udGVudCcsXHJcbiAgICAgICAgICAgICAgICBjbG9zZU90aGVyczogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIFxyXG5cclxuICAgIC8vIEFkZCBib2R5IGNsYXNzIHdoZW4gdXNpbmcga2V5Ym9hcmRcclxuICAgICRzdmpxKCdib2R5Jykub24oJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGxldCAkc3ZqcWNvZGUgPSBlLmtleUNvZGUgfHwgZS53aGljaDtcclxuXHJcbiAgICAgICAgaWYgKCRzdmpxY29kZSA9PSAnOScpIHtcclxuICAgICAgICAgICAgJHN2anEoJ2JvZHknKS5hZGRDbGFzcygndXNpbmcta2V5Ym9hcmQnKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAkc3ZqcSgnYm9keScpLm9uKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgJHN2anEoJ2JvZHknKS5yZW1vdmVDbGFzcygndXNpbmcta2V5Ym9hcmQnKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIE1vYmlsZSBuYXZpZ2F0aW9uXHJcbiAgICB2YXIgbW9iaWxlTmF2ID0gJHN2anEoJy5lay1tb2JpbGUtbmF2Jyk7XHJcbiAgICB2YXIgbW9iaWxlTmF2VG9nZ2xlID0gJHN2anEoJy5lay1oZWFkZXJfX3RvZ2dsZS13cmFwcGVyJyk7XHJcbiAgICB2YXIgbW9iaWxlTmF2SWNvbiA9ICRzdmpxKCcuZWstaGVhZGVyX190b2dnbGUtbWVudScpO1xyXG4gICAgdmFyIGhlYWRlciA9ICRzdmpxKCcuZWstaGVhZGVyJyk7XHJcbiAgICBtb2JpbGVOYXYuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xyXG5cclxuICAgIG1vYmlsZU5hdlRvZ2dsZS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaGVhZGVyLnRvZ2dsZUNsYXNzKCdlay1oZWFkZXItdG9nZ2xlJyk7XHJcbiAgICAgICAgbW9iaWxlTmF2SWNvbi50b2dnbGVDbGFzcygnZWstaGVhZGVyX190b2dnbGUtbWVudS0tY2xvc2UnKTtcclxuICAgICAgICBtb2JpbGVOYXYudG9nZ2xlQ2xhc3MoJ2VrLW1vYmlsZS1uYXYtLWV4cGFuZGVkJyk7XHJcbiAgICAgICAgLy8kc3ZqcSgnYm9keScpLnRvZ2dsZUNsYXNzKCduby1zY3JvbGwnKTtcclxuXHJcbiAgICAgICAgaWYgKG1vYmlsZU5hdkljb24uYXR0cignYXJpYS1leHBhbmRlZCcpID09PSAnZmFsc2UnKSB7XHJcbiAgICAgICAgICAgIG1vYmlsZU5hdkljb24uYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbW9iaWxlTmF2SWNvbi5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobW9iaWxlTmF2LmF0dHIoJ2FyaWEtaGlkZGVuJykgPT09ICd0cnVlJykge1xyXG4gICAgICAgICAgICBtb2JpbGVOYXYuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtb2JpbGVOYXYuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xyXG4gICAgICAgI
15H1cclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvLyBtb2JpbGUgbmF2aWdhdGlvblxyXG4gICAgdmFyIG1vYmlsZU5hdlRvZ2dsZSA9ICRzdmpxKCcuZWstbW9iaWxlLW5hdl9fdG9nZ2xlJyk7XHJcblxyXG4gICAgaWYgKG1vYmlsZU5hdlRvZ2dsZSkge1xyXG4gICAgICAgIG1vYmlsZU5hdlRvZ2dsZS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICRzdmpxKHRoaXMpLnRvZ2dsZUNsYXNzKCdlay1tb2JpbGUtbmF2X190b2dnbGUtLWNsb3NlJyk7XHJcbiAgICAgICAgICAgICRzdmpxKHRoaXMpLnByZXYoKS50b2dnbGVDbGFzcygnZWstbW9iaWxlLW5hdl9fbWVudS1pdGVtLS1leHBhbmRlZCcpO1xyXG4gICAgICAgICAgICAkc3ZqcSh0aGlzKS5uZXh0KCkudG9nZ2xlQ2xhc3MoJ2VrLW1vYmlsZS1uYXZfX21lbnUtLXZpc2libGUnKTtcclxuXHJcbiAgICAgICAgICAgIGlmICgkc3ZqcSh0aGlzKS5hdHRyKCdhcmlhLWV4cGFuZGVkJykgPT09ICdmYWxzZScpIHtcclxuICAgICAgICAgICAgICAgICRzdmpxKHRoaXMpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgJHN2anEodGhpcykuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoJHN2anEodGhpcykubmV4dCgpLmF0dHIoJ2FyaWEtaGlkZGVuJykgPT09ICd0cnVlJykge1xyXG4gICAgICAgICAgICAgICAgJHN2anEodGhpcykubmV4dCgpLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAkc3ZqcSh0aGlzKS5uZXh0KCkuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHZhciBtb2JpbGVOYXYgPSAkc3ZqcSgnLmVrLW1vYmlsZS1uYXYnKTtcclxuICAgICAgICBtb2JpbGVOYXYuZWFjaChmdW5jdGlvbiAoaW5kZXgsIGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdmFyIG9wZW5lZEVsZW1lbnRzID0gJHN2anEoZWxlbWVudCkuZmluZCgnLmVrLW1vYmlsZS1uYXZfX21lbnUtLXZpc2libGUnKS5maXJzdCgpLmZpbmQoJy5lay1tb2JpbGUtbmF2X19tZW51LS12aXNpYmxlJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAob3BlbmVkRWxlbWVudHMubGVuZ3RoIDwgMSkge1xyXG4gICAgICAgICAgICAgICAgb3BlbmVkRWxlbWVudHMgPSAkc3ZqcShlbGVtZW50KS5maW5kKCcuZWstbW9iaWxlLW5hdl9fbWVudS1pdGVtLS1jdXJyZW50Jyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIG9wZW5lZEVsZW1lbnRzLmVhY2goZnVuY3Rpb24gKGluZGV4LCBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2Y
15XIgdG9nZ2xlRWxlbWVudHMgPSAkc3ZqcShlbGVtZW50KS5wYXJlbnRzKCkuc2libGluZ3MoJy5lay1tb2JpbGUtbmF2X190b2dnbGUnKTtcclxuICAgICAgICAgICAgICAgIHRvZ2dsZUVsZW1lbnRzLmVhY2goZnVuY3Rpb24gKGluZGV4LCBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5hdlRvZ2dsZSA9ICRzdmpxKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuYXZNZW51ID0gbmF2VG9nZ2xlLnNpYmxpbmdzKCcuZWstbW9iaWxlLW5hdl9fbWVudScpLmZpcnN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5hdkxpbmsgPSBuYXZUb2dnbGUuc2libGluZ3MoJy5lay1tb2JpbGUtbmF2X19saW5rJykuZmlyc3QoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2TWVudS5hZGRDbGFzcygnZWstbW9iaWxlLW5hdl9fbWVudS0tdmlzaWJsZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5hdk1lbnUuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2TGluay5hZGRDbGFzcygnZWstbW9iaWxlLW5hdl9fbWVudS1pdGVtLS1leHBhbmRlZCcpO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2VG9nZ2xlLmFkZENsYXNzKCdlay1tb2JpbGUtbmF2X190b2dnbGUtLWNsb3NlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmF2VG9nZ2xlLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2VG9nZ2xlLmF0dHIoJ2FyaWEtaGFzcG9wdXAnLCAndHJ1ZScpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTaWRlIG5hdmlnYXRpb25cclxuICAgIHZhciBzaWRlTmF2VG9nZ2xlID0gJHN2anEoJy5lay1zaWRlLW5hdl9fdG9nZ2xlJyk7XHJcblxyXG4gICAgaWYgKHNpZGVOYXZUb2dnbGUpIHtcclxuICAgICAgICBzaWRlTmF2VG9nZ2xlLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgJHN2anEodGhpcykudG9nZ2xlQ2xhc3MoJ2VrLXNpZGUtbmF2X190b2dnbGUtLWNsb3NlJyk7XHJcbiAgICAgICAgICAgICRzdmpxKHRoaXMpLnByZXYoKS50b2dnbGVDbGFzcygnZWstc2lkZS1uYXZfX21lbnUtaXRlbS0tZXhwYW5kZWQnKTtcclxuICAgICAgICAgICAgJHN2anEodGhpcykubmV4dCgpLnRvZ2dsZUNsYXNzKCdlay1zaWRlLW5hdl9fbWVudS0tdmlzaWJsZScpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCRzdmpxKHRoaXMpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnKSA9PT0gJ2ZhbHNlJykge1xyXG4gICAgICAgICAgICAgICAgJHN2anEodGhpcykuYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAkc3ZqcSh0aGlzKS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICgkc3ZqcSh0aGlzKS5uZXh0KCkuYXR0cignYXJpYS1oaWRkZW4nKSA9PT0gJ3RydWUnKSB7XHJcbiAgICAgICAgICAgICAgICAkc3ZqcSh0aGlzKS5uZXh0KCkuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICRzdmpxKHRoaXMpLm5leHQoKS5hdHRyKCdhcmlhLWh
15pZGRlbicsICd0cnVlJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdmFyIHNpZGVOYXYgPSAkc3ZqcSgnLmVrLXNpZGUtbmF2Jyk7XHJcbiAgICAgICAgc2lkZU5hdi5lYWNoKGZ1bmN0aW9uIChpbmRleCwgZWxlbWVudCkge1xyXG4gICAgICAgICAgICB2YXIgb3BlbmVkRWxlbWVudHMgPSAkc3ZqcShlbGVtZW50KS5maW5kKCcuZWstc2lkZS1uYXZfX21lbnUtLXZpc2libGUnKTtcclxuICAgICAgICAgICAgaWYgKG9wZW5lZEVsZW1lbnRzLmxlbmd0aCA8IDEpIHtcclxuICAgICAgICAgICAgICAgIG9wZW5lZEVsZW1lbnRzID0gJHN2anEoZWxlbWVudCkuZmluZCgnLmVrLXNpZGUtbmF2X19tZW51LWl0ZW0tLWN1cnJlbnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcGVuZWRFbGVtZW50cy5lYWNoKGZ1bmN0aW9uIChpbmRleCwgZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRvZ2dsZUVsZW1lbnRzID0gJHN2anEoZWxlbWVudCkucGFyZW50cygpLnNpYmxpbmdzKCcuZWstc2lkZS1uYXZfX3RvZ2dsZScpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRvZ2dsZUVsZW1lbnRzLmVhY2goZnVuY3Rpb24gKGluZGV4LCBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5hdlRvZ2dsZSA9ICRzdmpxKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuYXZNZW51ID0gbmF2VG9nZ2xlLnNpYmxpbmdzKCcuZWstc2lkZS1uYXZfX21lbnUnKS5maXJzdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuYXZMaW5rID0gbmF2VG9nZ2xlLnNpYmxpbmdzKCcuZWstc2lkZS1uYXZfX2xpbmsnKS5maXJzdCgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBuYXZNZW51LmFkZENsYXNzKCdlay1zaWRlLW5hdl9fbWVudS0tdmlzaWJsZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5hdk1lbnUuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2TGluay5hZGRDbGFzcygnZWstc2lkZS1uYXZfX21lbnUtaXRlbS0tZXhwYW5kZWQnKTtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIG5hdlRvZ2dsZS5hZGRDbGFzcygnZWstc2lkZS1uYXZfX3RvZ2dsZS0tY2xvc2UnKTtcclxuICAgICAgICAgICAgICAgICAgICBuYXZUb2dnbGUuYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJylcclxuICAgICAgICAgICAgICAgICAgICBuYXZUb2dnbGUuYXR0cignYXJpYS1oYXNwb3B1cCcsICd0cnVlJyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNjcm9sbCBkb3duIGJ1dHRvblxyXG4gICAgdmFyIHNjcm9sbEJ1dHRvbiA9ICRzdmpxKCcuZWstc2Nyb2xsLWRvd25fX2J1dHRvbicpO1xyXG4gICAgdmFyIG1haW4gPSAkc3ZqcSgnLmVrLW1haW4nKTtcclxuXHJcbiAgICBpZiAoc2Nyb2xsQnV0dG9uKSB7XHJcbiAgICAgICAgc2Nyb2xsQnV0dG9uLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgJHN2anEoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHsgc2Nyb2xsVG9wOiBtYWluLm9mZnNldCgpLnRvcCB9LCA1MDApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhlcm8gc2VhcmNoIGJhciBhdXRvY29tcGxldGVcclxuICAgIHZhciBoZXJvU2VhcmNoQmFyID0gJHN2anEoJy5lay1oZXJvLXNlYXJjaC1iYXInKTtcclxuXHJcbiAgICBpZiAoaGVyb1NlYXJjaEJhcikge1xyXG4gICAgICAgICRzdmpxKCdib2R5JykuYWRkQ2xhc3MoJ2hhcy1oZXJvLXNlYXJjaC1iYXInKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEZlZWRiYWNrIGZvcm1cclxuICAgIHZhciBmZWVkYmFjayA9ICRzdmpxKCcuZWstZmVlZGJhY2snKTtcclxuXHJcbiAgICBpZiAoZmVlZGJhY2spIHtcclxuICAgICAgICB2Y
15XIgZmVlZGJhY2tCdXR0b24gPSAkc3ZqcSgnLmVrLWZlZWRiYWNrX19idXR0b24nKTtcclxuICAgICAgICB2YXIgZmVlZGJhY2tQb3NpdGl2ZSA9ICRzdmpxKCcuZWstZmVlZGJhY2tfX2J1dHRvbi0tcG9zaXRpdmUnKTtcclxuICAgICAgICB2YXIgZmVlZGJhY2tOZWdhdGl2ZSA9ICRzdmpxKCcuZWstZmVlZGJhY2tfX2J1dHRvbi0tbmVnYXRpdmUnKTtcclxuICAgICAgICB2YXIgZmVlZGJhY2tGb3JtID0gJHN2anEoJy5lay1mZWVkYmFja19fZm9ybScpO1xyXG4gICAgICAgIHZhciBmZWVkYmFja01lc3NhZ2UgPSAkc3ZqcSgnLmVrLWZlZWRiYWNrX19tZXNzYWdlJyk7XHJcblxyXG4gICAgICAgIGZlZWRiYWNrUG9zaXRpdmUub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBmZWVkYmFja01lc3NhZ2UuYWRkQ2xhc3MoJ2VrLWZlZWRiYWNrX19tZXNzYWdlLS12aXNpYmxlJyk7XHJcbiAgICAgICAgICAgIGZlZWRiYWNrQnV0dG9uLmF0dHIoJ2Rpc2FibGVkJywgJ3RydWUnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChmZWVkYmFja01lc3NhZ2UuYXR0cignYXJpYS1oaWRkZW4nKSA9PT0gJ3RydWUnKSB7XHJcbiAgICAgICAgICAgICAgICBmZWVkYmFja01lc3NhZ2UuYXR0cignYXJpYS1oaWRkZW4nLCBmYWxzZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmZWVkYmFja1Bvc2l0aXZlLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tNZXNzYWdlLmF0dHIoJ2FyaWEtaGlkZGVuJywgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmZWVkYmFja1Bvc2l0aXZlLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBmZWVkYmFja05lZ2F0aXZlLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZmVlZGJhY2tGb3JtLmFkZENsYXNzKCdlay1mZWVkYmFja19fZm9ybS0tdmlzaWJsZScpO1xyXG4gICAgICAgICAgICBmZWVkYmFja0J1dHRvbi5hdHRyKCdkaXNhYmxlZCcsICd0cnVlJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZmVlZGJhY2tGb3JtLmF0dHIoJ2FyaWEtaGlkZGVuJykgPT09ICd0cnVlJykge1xyXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tGb3JtLmF0dHIoJ2FyaWEtaGlkZGVuJywgZmFsc2UpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmVlZGJhY2tOZWdhdGl2ZS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgdHJ1ZSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZlZWRiYWNrRm9ybS5hdHRyKCdhcmlhLWh
15pZGRlbicsIHRydWUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmVlZGJhY2tOZWdhdGl2ZS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgZmFsc2UpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoXCJzdGF0ZT1jcmVhdGVcIikgPiAtMSkge1xyXG4gICAgICAgICAgICBmZWVkYmFja05lZ2F0aXZlLnRyaWdnZXIoXCJjbGlja1wiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgICRzdmpxKCcuZWstaW1wb3J0YW50LW1lc3NhZ2VfX3RvZ2dsZSwuZWstaW1wb3J0YW50LW1lc3NhZ2UtY2xvc2VkX190b2dnbGUnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHZtYSA9ICRzdmpxKCcuZWstaW1wb3J0YW50LW1lc3NhZ2UnKTtcclxuICAgICAgICBpZiAodm1hLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdmFyIHNob3dEaXYgPSB2bWEuZmluZCgnLmVrLWltcG9ydGFudC1tZXNzYWdlX190ZXh0LXNob3cnKTtcclxuICAgICAgICAgICAgaWYgKHNob3dEaXYubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNob3dEaXYuaXMoXCI6dmlzaWJsZVwiKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRDb29raWUoJ2FjY2VwdGNvb2tpZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNldFZtYVN0YXRlKCdjbG9zZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRDb29raWUoJ2FjY2VwdGNvb2tpZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNldFZtYVN0YXRlKCdvcGVuZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2bWEudG9nZ2xlQ2xhc3MoJ2VrLWltcG9ydGFudC1tZXNzYWdlLWNsb3NlZCcpO1xyXG4gICAgICAgICAgICAgICAgc2hvd0Rpdi5zbGlkZVRvZ2dsZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gU2V0Vm1hU3RhdGUoc3RhdGUpIHtcclxuICAgICAgICB2Y
15XIgZCA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgdmFyIGV4ZGF5cyA9IDE7XHJcbiAgICAgICAgZCA9IG5ldyBEYXRlKGQuZ2V0VGltZSgpICsgKGV4ZGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDApKTtcclxuICAgICAgICBkb2N1bWVudC5jb29raWUgPSBcInZtYXN0YXRlPVwiICsgc3RhdGUgKyBcIjtwYXRoPS87ZXhwaXJlcz1cIiArIGQudG9HTVRTdHJpbmcoKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhnZXRDb29raWUoJ3ZtYXN0YXRlJykpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAkc3ZqcSgnLmVrLWNvb2tpZS1wcm9tcHRfX2Nsb3NlJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBkID0gbmV3IERhdGUoKTtcclxuICAgICAgICBkID0gbmV3IERhdGUoZC5nZXRUaW1lKCkgKyAxMDAwICogNjAgKiA2MCAqIDI0ICogMzY1KTtcclxuICAgICAgICBkb2N1bWVudC5jb29raWUgPSBcImFjY2VwdGNvb2tpZT10cnVlO3BhdGg9LztleHBpcmVzPVwiICsgZC50b0dNVFN0cmluZygpO1xyXG4gICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Q29va2llKGNuYW1lKSB7XHJcbiAgICAgICAgdmFyIG5hbWUgPSBjbmFtZSArIFwiPVwiO1xyXG4gICAgICAgIHZhciBkZWNvZGVkQ29va2llID0gZGVjb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LmNvb2tpZSk7XHJcbiAgICAgICAgdmFyIGNhID0gZGVjb2RlZENvb2tpZS5zcGxpdCgnOycpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2EubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGMgPSBjYVtpXTtcclxuICAgICAgICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09ICcgJykge1xyXG4gICAgICAgICAgICAgICAgYyA9IGMuc3Vic3RyaW5nKDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjLmluZGV4T2YobmFtZSkgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gYy5zdWJzdHJpbmcobmFtZS5sZW5ndGgsIGMubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUudG9Mb3dlckNhc2UoKSA9PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUudG9Mb3dlckNhc2UoKSA9PSAnZmFsc2UnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWUubGVuZ3RoLCBjLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGhhdmVDb29raWUgPSBnZXRDb29raWUoJ2FjY2VwdGNvb2tpZScpO1xyXG4gICAgdmFyIGNvb2tpZVByb21wdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29va2llUHJvbXB0XCIpO1xyXG4gICAgaWYgKGNvb2tpZVByb21wdCkge1xyXG4gICAgICAgIHZhciB2bWEgPSAkc3ZqcSgnLmVrLWltcG9ydGFudC1tZXNzYWdlJyk7XHJcbiAgICAgICAgdmFyIHZtYVNob3dEaXYgPSAkc3ZqcSgnLmVrLWltcG9ydGFudC1tZXNzYWdlX190ZXh0LXNob3cnKTtcclxuICAgICAgICBpZiAoIWhhdmVDb29raWUpIHtcclxuICAgICAgICAgICAgJHN2anEoXCIjY29va2llUHJvbXB0XCIpLnNob3coKTtcclxuICAgICAgICAgICAgdm1hU2hvd0Rpdi5zaG93KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2Y
15XIgdm1hc3RhdGUgPSBnZXRDb29raWUoJ3ZtYXN0YXRlJyk7XHJcbiAgICAgICAgICAgIHZhciBjbG9zZWQgPSAkc3ZqcSgnLmVrLWltcG9ydGFudC1tZXNzYWdlLWNsb3NlZF9fb3V0ZXInKTtcclxuICAgICAgICAgICAgdmFyIG91dGVyID0gJHN2anEoJy5lay1pbXBvcnRhbnQtbWVzc2FnZV9fb3V0ZXInKTtcclxuICAgICAgICAgICAgaWYgKHZtYXN0YXRlICYmIHZtYXN0YXRlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGlmICh2bWFzdGF0ZSA9PSAnb3BlbmVkJyB8fCB2bWFzdGF0ZSA9PSAnJyB8fCAhdm1hc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB2bWFTaG93RGl2LnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICB2bWEucmVtb3ZlQ2xhc3MoJ2VrLWltcG9ydGFudC1tZXNzYWdlLWNsb3NlZCcpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2bWFTaG93RGl2LmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB2bWEuYWRkQ2xhc3MoJ2VrLWltcG9ydGFudC1tZXNzYWdlLWNsb3NlZCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdm1hU2hvd0Rpdi5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICB2bWEucmVtb3ZlQ2xhc3MoJ2VrLWltcG9ydGFudC1tZXNzYWdlLWNsb3NlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICRzdmpxKFwiI2Nvb2tpZVByb21wdFwiKS5oaWRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhciBoZWFkZXIgPSAkc3ZqcSgnLmVrLWhlYWRlcicpO1xyXG5cclxuICAgIGlmKGhlYWRlcil7XHJcbiAgICAgICAgdmFyIHN0aWNreSA9IGhlYWRlclswXS5vZmZzZXRUb3A7XHJcblxyXG4gICAgICAgIGlmICh3aW5kb3cucGFnZVlPZmZzZXQgPiBzdGlja3kpIHtcclxuICAgICAgICAgICAgaGVhZGVyLmFkZENsYXNzKFwiZWstaGVhZGVyLXN0aWNreVwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBoZWFkZXIucmVtb3ZlQ2xhc3MoXCJlay1oZWFkZXItc3RpY2t5XCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAkc3ZqcSh3aW5kb3cpLm9uKCdzY3JvbGwnLGZ1bmN0aW9uKGV2dCl7XHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cucGFnZVlPZmZzZXQgPiBzdGlja3kpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBoZWFkZXIuYWRkQ2xhc3MoXCJlay1oZWFkZXItc3RpY2t5XCIpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXIucmVtb3ZlQ2xhc3MoXCJlay1oZWFkZXItc3RpY2t5XCIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSk7XHJcbiJdLCJzb3VyY2VSb290IjoiIn0= 16var $=$svjq;$(document).ready(function(){$(".ek-landingpage-news-list__preamble").each(function(a){$(this).contents().wrapAll("\x3cp\x3e\x3c/p\x3e")});$(".ek-news__preamble").each(function(a){$(this).contents().wrapAll("\x3cp\x3e\x3c/p\x3e")})}); 17svDocReady(function(){$svjq("button.ek-header__toggle--menu").click(function(){$svjq(".ek-mobile-nav").toggleClass("active");$svjq(".ek-mobile-nav").toggleClass("ek-mobile-nav--expanded");$svjq("button.ek-header__toggle--menu").toggleClass("changed");$svjq(".ek-search-box").removeClass("changed");$svjq("button.ek-search-icon-button").removeClass("changed");$svjq(".ek-grid-1240.sv-fluid-grid .sv-push-3").removeClass("changed");$svjq(".ek-button-container").removeClass("changed")})}); 18svDocReady(function(){$svjq("button.hiq-search-icon-button").click(function(a){if(!$svjq("html").hasClass("sv-template-startmall")&&!$svjq("html").hasClass("sv-template-mall-utan-sokruta"))a.preventDefault(),$svjq(".ek-search-box").toggleClass("changed"),$svjq(".ek-search-box input").get(0).focus(),$svjq("button.hiq-search-icon-button").toggleClass("changed"),$svjq(".ek-grid-1240.sv-fluid-grid .sv-push-3").toggleClass("changed"),$svjq(".ek-button-container").toggleClass("changed"),$svjq("button.ek-header__toggle--menu").removeClass("changed"), 19$svjq(".ek-mobile-nav").removeClass("active"),$svjq(".ek-mobile-nav").removeClass("ek-mobile-nav--expanded"),$svjq("button.hiq-search-icon-button").attr("aria-expanded",function(a,b){return"true"===b?"false":"true"}),$svjq("#uxHeaderSearch").attr("aria-expanded",function(a,b){return"true"===b?"false":"true"});else if($svjq("html").hasClass("sv-template-startmall")||$svjq("html").hasClass("sv-template-mall-utan-sokruta"))a.preventDefault(),$svjq(".ek-search-bar-class input").get(0).focus(),$svjq("button.ek-header__toggle--menu").removeClass("changed"), 20$svjq(".ek-mobile-nav").removeClass("active"),$svjq(".ek-mobile-nav").removeClass("ek-mobile-nav--expanded")})}); 21var collapseClassNameHeader=".env-collapse-header",collapseClassNameContent=".sv-collapsible-content";svDocReady(function(){var a=getRawHashFromPageUrl();a&&scrollToElementWhenPageLoads(a);a=getLinkWithHashToThisPage();0<a.length&&a.forEach(function(a){a.on("click",function(){scrollToElementThenClickt(a)})})}); 22function scrollToElementWhenPageLoads(a){var c=!1,b=isAccordionsOnPage(collapseClassNameHeader),d=void 0,d=getHashAsText(a);b&&(c=expandPanelById(d));0==c&&(a=$(a),scrollToElement({element:a}))}function scrollToElementThenClickt(a){var c=isAccordionsOnPage(collapseClassNameHeader);a=a.attr("href");a=getRawHashFromUrl(a);var b=getHashAsText(a),d=void 0,d=!1;c&&(d=expandPanelById(b));0==d&&(d=$(a),scrollToElement({element:d}))} 23function getLinkWithHashToThisPage(){var a=[],c=$(location).attr("pathname"),c=c.trim();$(".pagecontent a").each(function(b){b=$(this).attr("href");1==isHashInUrl(b)&&(b=getUrlIfHash(b),0!=b&&(b=b.trim()),b==c&&a.push($(this)))});return 0==a.length||void 0==a.length?!1:a}function isInMobileMode(){innerWidth=window.innerWidth;mobileWidth=1023;return innerWidth>mobileWidth?!1:!0} 24function expandPanelById(a){if(!a)return!1;object=$("#"+a).closest(collapseClassNameContent);numberOfObject=object.length;if(0==numberOfObject)return!1;exandPanelHeader(object);exandPanelContent(object);return!0}function setAriaExpandedTrue(a){if(!a)return!1;a.attr("aria-expanded","true")}function exandPanelHeader(a){a=a.find(collapseClassNameHeader);a.addClass("env-collapse--expanded");setAriaExpandedTrue(a);scrollToElement({element:a,offset:!0})} 25function exandPanelContent(a){a.find(".env-collapse").addClass("env-collapse--show")}function scrollToElement(a){if(!a.element)return!1;var c=a.element,b=0;!0===a.offset&&(b=c.height());1==isInMobileMode()&&(b=b+$("header").height()+40);$([document.documentElement,document.body]).animate({scrollTop:c.offset().top-b},1E3)}function isHashInUrl(a){if(!a)return!1;a.split("#");return a[1]?!0:!1}function getUrlIfHash(a){if(!a)return!1;a=a.split("#");return a[1]?a[0]:!1} 26function getHashAsText(a){return a?a.substring(1):!1}function getRawHashFromPageUrl(){return $(location).attr("hash")}function getRawHashFromUrl(a){if(!a)return!1;a=a.split("#");return a[1]?a="#"+a[1]:!1}function isAccordionsOnPage(a){return 0<$(a).length?!0:!1}; 27svDocReady(function(){var a=document.querySelector(".ek-compact-news-startpage");a.addEventListener("click",function(){var b=a.querySelector(".ek-heading-3 a");window.location.href=b.getAttribute("href")})});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.