| Server IP : 167.99.224.18 / Your IP : 216.73.216.136 Web Server : Apache/2.4.41 (Ubuntu) System : Linux wordpress-ubuntu-s-1vcpu-1gb-nyc1-01 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.0.25 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/wp-content/plugins-old/plausible-analytics/assets/dist/js/ |
Upload File : |
document.addEventListener("DOMContentLoaded",(()=>{if(!document.location.href.includes("plausible_analytics"))return;let e={nonceElem:document.getElementById("_wpnonce"),nonce:"",showWizardElem:document.getElementById("show_wizard"),domainNameElem:document.getElementById("domain_name"),apiTokenElem:document.getElementById("api_token"),createAPITokenElems:document.getElementsByClassName("plausible-create-api-token"),buttonElems:document.getElementsByClassName("plausible-analytics-button"),stepElems:document.getElementsByClassName("plausible-analytics-wizard-next-step"),init:function(){if(""===document.location.hash&&null!==document.getElementById("plausible-analytics-wizard")&&(document.location.hash="#welcome_slide"),null!==this.nonceElem&&(this.nonce=this.nonceElem.value),this.toggleWizardStep(),window.addEventListener("hashchange",this.toggleWizardStep),null!==this.showWizardElem&&this.showWizardElem.addEventListener("click",this.showWizard),null!==this.domainNameElem&&this.domainNameElem.addEventListener("keyup",this.disableConnectButton),null!==this.apiTokenElem&&this.apiTokenElem.addEventListener("keyup",this.disableConnectButton),this.createAPITokenElems.length>0)for(let e=0;e<this.createAPITokenElems.length;e++)this.createAPITokenElems[e].addEventListener("click",this.createAPIToken);if(this.buttonElems.length>0)for(let e=0;e<this.buttonElems.length;e++)this.buttonElems[e].addEventListener("click",this.saveOption);if(document.addEventListener("click",this.toggleOption),this.stepElems.length>0)for(let e=0;e<this.stepElems.length;e++)this.stepElems[e].addEventListener("click",this.saveOptionOnNext);this.showMessages()},toggleOption:function(t){if(null===t.target.classList||!t.target.classList.contains("plausible-analytics-toggle"))return;const n=t.target.closest("button");let s,a;s="submit"===t.target.type?n.querySelector("span"):t.target.closest("span"),n.classList.contains("bg-indigo-600")?(n.classList.replace("bg-indigo-600","bg-gray-200"),s.classList.replace("translate-x-5","translate-x-0"),a=""):(n.classList.replace("bg-gray-200","bg-indigo-600"),s.classList.replace("translate-x-0","translate-x-5"),a="on");const i=new FormData;i.append("action","plausible_analytics_toggle_option"),i.append("option_name",n.name),i.append("option_value",n.value),i.append("option_label",n.nextElementSibling.innerHTML),i.append("toggle_status",a),i.append("is_list",n.dataset.list),i.append("_nonce",e.nonce),e.ajax(i)},saveOption:function(t){const n=t.target,s=n.closest(".plausible-analytics-section").querySelectorAll("input, textarea"),a=new FormData,i=[];s.forEach((function(e){i.push({name:e.name,value:e.value})})),a.append("action","plausible_analytics_save_options"),a.append("options",JSON.stringify(i)),a.append("_nonce",e.nonce),n.children.length>0&&n.children[0].classList.remove("hidden"),n.setAttribute("disabled","disabled"),e.ajax(a,n)},saveOptionOnNext:function(t){let n=document.location.hash.replace("#","");if("api_token_slide"!==n&&"domain_name_slide"!==n)return;let s=t.target.closest(".plausible-analytics-wizard-step-section").getElementsByTagName("INPUT"),a=[];for(let e of s)a.push({name:e.name,value:e.value});let i=new FormData;i.append("action","plausible_analytics_save_options"),i.append("options",JSON.stringify(a)),i.append("_nonce",e.nonce),e.ajax(i).then((e=>{"api_token_slide"===n&&!0===e.success&&document.getElementById("enable_analytics_dashboard_view_stats_in_wordpress").removeAttribute("disabled")}))},disableConnectButton:function(e){let t=e.target,n=document.getElementById("connect_plausible_analytics"),s=!1;if(null===n){let e=document.location.hash;n=document.querySelector(e+" .plausible-analytics-wizard-next-step"),s=!0}null!==n&&(""===t.value?s?(n.classList+=" pointer-events-none",n.classList.replace("bg-indigo-600","bg-gray-200")):(n.disabled=!0,n.innerHTML=n.innerHTML.replace("Connected","Connect")):s?(n.classList.remove("pointer-events-none"),n.classList.replace("bg-gray-200","bg-indigo-600")):n.disabled=!1)},createAPIToken:function(e){e.preventDefault();let t=document.getElementById("domain_name").value;t=t.replace("/","%2F"),window.open(`${plausible_analytics_hosted_domain}/${t}/settings/integrations?new_token=WordPress`,"_blank","location=yes,height=768,width=1024,scrollbars=yes,status=no")},showWizard:function(t){let n=new FormData;n.append("action","plausible_analytics_show_wizard"),n.append("_nonce",t.target.dataset.nonce),e.ajax(n)},toggleWizardStep:function(){if(null===document.getElementById("plausible-analytics-wizard"))return;const e=document.location.hash.substring(1).replace("_slide","");let t=document.querySelectorAll(".plausible-analytics-wizard-step"),n=document.querySelectorAll(".plausible-analytics-wizard-active-step"),s=document.querySelectorAll(".plausible-analytics-wizard-completed-step");for(let e=0;e<t.length;e++)t[e].classList.remove("hidden");for(let e=0;e<n.length;e++)n[e].classList+=" hidden";for(let e=0;e<s.length;e++)s[e].classList+=" hidden";let a=document.getElementById("active-step-"+e),i=document.getElementById("step-"+e);a.classList.remove("hidden"),i.classList+=" hidden";let l=a.dataset.completedSteps.split(",");l=l.filter((e=>e)),l.length<1||l.forEach((function(e){let t=document.getElementById("completed-step-"+e),n=document.getElementById("step-"+e);t.classList.remove("hidden"),n.classList+=" hidden"}))},ajax:function(t,n=null,s=!0){return fetch(ajaxurl,{method:"POST",body:t}).then((e=>(n&&(n.children.length>0&&(n.children[0].classList+=" hidden"),"connect_plausible_analytics"===n.id&&200===e.status?n.innerText=plausible_analytics_i18n.connected:n.removeAttribute("disabled")),200===e.status&&e.json()))).then((t=>{!0===s&&e.showMessages();let n=new CustomEvent("plausibleAjaxDone",{detail:t});return document.dispatchEvent(n),void 0!==t.data?t.data:t}))},showMessages:function(){e.fetchMessages().then((function(t){!1!==t.error?e.showMessage(t.error,"error"):!1!==t.notice?e.showMessage(t.notice,"notice"):!1!==t.success&&e.showMessage(t.success,"success"),0!==t.additional.length&&null===document.getElementById("plausible-analytics-wizard")&&(void 0!==t.additional.id&&t.additional.message?e.showAdditionalMessage(t.additional.message,t.additional.id):void 0!==t.additional.id&&""===t.additional.message&&e.removeAdditionalMessage(t.additional.id))}))},fetchMessages:function(){let t=new FormData;return t.append("action","plausible_analytics_messages"),e.ajax(t,null,!1).then((function(e){return e}))},showMessage:function(e,t="success"){"error"===t?(document.getElementById("icon-error").classList.remove("hidden"),document.getElementById("icon-success").classList.add("hidden"),document.getElementById("icon-notice").classList.add("hidden")):"notice"===t?(document.getElementById("icon-notice").classList.remove("hidden"),document.getElementById("icon-error").classList.add("hidden"),document.getElementById("icon-success").classList.add("hidden")):(document.getElementById("icon-success").classList.remove("hidden"),document.getElementById("icon-error").classList.add("hidden"),document.getElementById("icon-notice").classList.add("hidden"));let n=document.getElementById("plausible-analytics-notice");document.getElementById("plausible-analytics-notice-text").innerHTML=e,n.classList.remove("hidden"),setTimeout((function(){n.classList.replace("opacity-0","opacity-100")}),200),"error"!==t&&setTimeout((function(){n.classList.replace("opacity-100","opacity-0"),setTimeout((function(){n.classList+=" hidden"}),200)}),2e3)},showAdditionalMessage:function(e,t){document.querySelector(`[name='${t}']`).closest(".plausible-analytics-group").innerHTML+=e},removeAdditionalMessage:function(e){let t,n=document.querySelector(`[name="${e}"]`).closest(".plausible-analytics-group");if(n.children.length>0)for(let e=0;e<n.children.length;e++)if(n.children[e].classList.contains("plausible-analytics-hook")){t=n.children[e];break}void 0!==t&&n.removeChild(t)}};e.init()}));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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b3VyY2VzIjpbIndlYnBhY2s6Ly9wbGF1c2libGUtYW5hbHl0aWNzLy4vYXNzZXRzL3NyYy9qcy9hZG1pbi9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGxhdXNpYmxlIEFuYWx5dGljc1xuICpcbiAqIEFkbWluIEpTXG4gKi9cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG5cdGlmICghZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmNsdWRlcygncGxhdXNpYmxlX2FuYWx5dGljcycpKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0bGV0IHBsYXVzaWJsZSA9IHtcblx0XHQvKipcblx0XHQgKiBQcm9wZXJ0aWVzXG5cdFx0ICovXG5cdFx0bm9uY2VFbGVtOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX3dwbm9uY2UnKSxcblx0XHRub25jZTogJycsXG5cdFx0c2hvd1dpemFyZEVsZW06IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG93X3dpemFyZCcpLFxuXHRcdGRvbWFpbk5hbWVFbGVtOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9tYWluX25hbWUnKSxcblx0XHRhcGlUb2tlbkVsZW06IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcGlfdG9rZW4nKSxcblx0XHRjcmVhdGVBUElUb2tlbkVsZW1zOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwbGF1c2libGUtY3JlYXRlLWFwaS10b2tlbicpLFxuXHRcdGJ1dHRvbkVsZW1zOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwbGF1c2libGUtYW5hbHl0aWNzLWJ1dHRvbicpLFxuXHRcdHN0ZXBFbGVtczogZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGxhdXNpYmxlLWFuYWx5dGljcy13aXphcmQtbmV4dC1zdGVwJyksXG5cblx0XHQvKipcblx0XHQgKiBCaW5kIGV2ZW50cy5cblx0XHQgKi9cblx0XHRpbml0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gJycgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsYXVzaWJsZS1hbmFseXRpY3Mtd2l6YXJkJykgIT09IG51bGwpIHtcblx0XHRcdFx0ZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICcjd2VsY29tZV9zbGlkZSc7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLm5vbmNlRWxlbSAhPT0gbnVsbCkge1xuXHRcdFx0XHR0aGlzLm5vbmNlID0gdGhpcy5ub25jZUVsZW0udmFsdWU7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMudG9nZ2xlV2l6YXJkU3RlcCgpO1xuXG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsIHRoaXMudG9nZ2xlV2l6YXJkU3RlcCk7XG5cblx0XHRcdGlmICh0aGlzLnNob3dXaXphcmRFbGVtICE9PSBudWxsKSB7XG5cdFx0XHRcdHRoaXMuc2hvd1dpemFyZEVsZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnNob3dXaXphcmQpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5kb21haW5OYW1lRWxlbSAhPT0gbnVsbCkge1xuXHRcdFx0XHR0aGlzLmRvbWFpbk5hbWVFbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5kaXNhYmxlQ29ubmVjdEJ1dHRvbik7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLmFwaVRva2VuRWxlbSAhPT0gbnVsbCkge1xuXHRcdFx0XHR0aGlzLmFwaVRva2VuRWxlbS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuZGlzYWJsZUNvbm5lY3RCdXR0b24pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5jcmVhdGVBUElUb2tlbkVsZW1zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNyZWF0ZUFQSVRva2VuRWxlbXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR0aGlzLmNyZWF0ZUFQSVRva2VuRWxlbXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNyZWF0ZUFQSVRva2VuKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5idXR0b25FbGVtcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5idXR0b25FbGVtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHRoaXMuYnV0dG9uRWxlbXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnNhdmVPcHRpb24pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8qKlxuXHRcdFx0ICogRHVlIHRvIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRvZ2dsZXMsIGFueSBldmVudHMgYm91bmQgdG8gdGhlbSB3b3VsZCBiZSB0cmlnZ2VyZWQgdHdpY2UsIHRoYXQncyB3aHkgd2UgYmluZCBpdCB0byB0aGUgZG9jdW1lbnRzJyBjbGljaydcblx0XHRcdCAqIGV2ZW50LlxuXHRcdFx0ICovXG5cdFx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMudG9nZ2xlT3B0aW9uKTtcblxuXHRcdFx0aWYgKHRoaXMuc3RlcEVsZW1zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0ZXBFbGVtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHRoaXMuc3RlcEVsZW1zW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5zYXZlT3B0aW9uT25OZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvKipcblx0XHRcdCAqIFJ1biBvbmNlIG9uIHBhZ2Vsb2FkLlxuXHRcdFx0ICovXG5cdFx0XHR0aGlzLnNob3dNZXNzYWdlcygpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBUb2dnbGUgT3B0aW9uIGFuZCBzdG9yZSBpbiBEQi5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSBlXG5cdFx0ICovXG5cdFx0dG9nZ2xlT3B0aW9uOiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBNYWtlIHN1cmUgZXZlbnQgdGFyZ2V0IGlzIGEgdG9nZ2xlLlxuXHRcdFx0ICovXG5cdFx0XHRpZiAoZS50YXJnZXQuY2xhc3NMaXN0ID09PSBudWxsIHx8ICFlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3BsYXVzaWJsZS1hbmFseXRpY3MtdG9nZ2xlJykpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBidXR0b24gPSBlLnRhcmdldC5jbG9zZXN0KCdidXR0b24nKTtcblx0XHRcdGxldCB0b2dnbGU7XG5cblx0XHRcdC8vIFRoZSBidXR0b24gZWxlbWVudCBpcyBjbGlja2VkLlxuXHRcdFx0aWYgKGUudGFyZ2V0LnR5cGUgPT09ICdzdWJtaXQnKSB7XG5cdFx0XHRcdHRvZ2dsZSA9IGJ1dHRvbi5xdWVyeVNlbGVjdG9yKCdzcGFuJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGUgc3BhbiBlbGVtZW50IGlzIGNsaWNrZWQuXG5cdFx0XHRcdHRvZ2dsZSA9IGUudGFyZ2V0LmNsb3Nlc3QoJ3NwYW4nKTtcblx0XHRcdH1cblxuXHRcdFx0bGV0IHRvZ2dsZVN0YXR1cztcblxuXHRcdFx0aWYgKGJ1dHRvbi5jbGFzc0xpc3QuY29udGFpbnMoJ2JnLWluZGlnby02MDAnKSkge1xuXHRcdFx0XHQvLyBUb2dnbGU6IG9mZlxuXHRcdFx0XHRidXR0b24uY2xhc3NMaXN0LnJlcGxhY2UoJ2JnLWluZGlnby02MDAnLCAnYmctZ3JheS0yMDAnKTtcblx0XHRcdFx0dG9nZ2xlLmNsYXNzTGlzdC5yZXBsYWNlKCd0cmFuc2xhdGUteC01JywgJ3RyYW5zbGF0ZS14LTAnKTtcblx0XHRcdFx0dG9nZ2xlU3RhdHVzID0gJyc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUb2dnbGU6IG9uXG5cdFx0XHRcdGJ1dHRvbi5jbGFzc0xpc3QucmVwbGFjZSgnYmctZ3JheS0yMDAnLCAnYmctaW5kaWdvLTYwMCcpO1xuXHRcdFx0XHR0b2dnbGUuY2xhc3NMaXN0LnJlcGxhY2UoJ3RyYW5zbGF0ZS14LTAnLCAndHJhbnNsYXRlLXgtNScpO1xuXHRcdFx0XHR0b2dnbGVTdGF0dXMgPSAnb24nO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmb3JtID0gbmV3IEZvcm1EYXRhKCk7XG5cdFx0XHRmb3JtLmFwcGVuZCgnYWN0aW9uJywgJ3BsYXVzaWJsZV9hbmFseXRpY3NfdG9nZ2xlX29wdGlvbicpO1xuXHRcdFx0Zm9ybS5hcHBlbmQoJ29wdGlvbl9uYW1lJywgYnV0dG9uLm5hbWUpO1xuXHRcdFx0Zm9ybS5hcHBlbmQoJ29wdGlvbl92YWx1ZScsIGJ1dHRvbi52YWx1ZSk7XG5cdFx0XHRmb3JtLmFwcGVuZCgnb3B0aW9uX2xhYmVsJywgYnV0dG9uLm5leHRFbGVtZW50U2libGluZy5pbm5lckhUTUwpO1xuXHRcdFx0Zm9ybS5hcHBlbmQoJ3RvZ2dsZV9zdGF0dXMnLCB0b2dnbGVTdGF0dXMpO1xuXHRcdFx0Zm9ybS5hcHBlbmQoJ2lzX2xpc3QnLCBidXR0b24uZGF0YXNldC5saXN0KTtcblx0XHRcdGZvcm0uYXBwZW5kKCdfbm9uY2UnLCBwbGF1c2libGUubm9uY2UpO1xuXG5cdFx0XHRwbGF1c2libGUuYWpheChmb3JtKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2F2ZSB2YWx1ZSBvZiBpbnB1dCBvciB0ZXh0IGFyZWEgdG8gREIuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0gZVxuXHRcdCAqL1xuXHRcdHNhdmVPcHRpb246IGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRjb25zdCBidXR0b24gPSBlLnRhcmdldDtcblx0XHRcdGNvbnN0IHNlY3Rpb24gPSBidXR0b24uY2xvc2VzdCgnLnBsYXVzaWJsZS1hbmFseXRpY3Mtc2VjdGlvbicpO1xuXHRcdFx0Y29uc3QgaW5wdXRzID0gc2VjdGlvbi5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCwgdGV4dGFyZWEnKTtcblx0XHRcdGNvbnN0IGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcblx0XHRcdGNvbnN0IG9wdGlvbnMgPSBbXTtcblxuXHRcdFx0aW5wdXRzLmZvckVhY2goZnVuY3Rpb24gKGlucHV0KSB7XG5cdFx0XHRcdG9wdGlvbnMucHVzaCh7bmFtZTogaW5wdXQubmFtZSwgdmFsdWU6IGlucHV0LnZhbHVlfSk7XG5cdFx0XHR9KTtcblxuXHRcdFx0Zm9ybS5hcHBlbmQoJ2FjdGlvbicsICdwbGF1c2libGVfYW5hbHl0aWNzX3NhdmVfb3B0aW9ucycpO1xuXHRcdFx0Zm9ybS5hcHBlbmQoJ29wdGlvbnMnLCBKU09OLnN0cmluZ2lmeShvcHRpb25zKSk7XG5cdFx0XHRmb3JtLmFwcGVuZCgnX25vbmNlJywgcGxhdXNpYmxlLm5vbmNlKTtcblxuXHRcdFx0aWYgKGJ1dHRvbi5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGJ1dHRvbi5jaGlsZHJlblswXS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcblx0XHRcdH1cblxuXHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcblxuXHRcdFx0cGxhdXNpYmxlLmFqYXgoZm9ybSwgYnV0dG9uKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2F2ZSBPcHRpb25zIG9uIE5leHQgY2xpY2sgZm9yIEFQSSBUb2tlbiBhbmQgRG9tYWluIE5hbWUgc2xpZGVzLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIGVcblx0XHQgKi9cblx0XHRzYXZlT3B0aW9uT25OZXh0OiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0bGV0IGhhc2ggPSBkb2N1bWVudC5sb2NhdGlvbi5oYXNoLnJlcGxhY2UoJyMnLCAnJyk7XG5cblx0XHRcdGlmIChoYXNoICE9PSAnYXBpX3Rva2VuX3NsaWRlJyAmJiBoYXNoICE9PSAnZG9tYWluX25hbWVfc2xpZGUnKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0bGV0IGZvcm0gPSBlLnRhcmdldC5jbG9zZXN0KCcucGxhdXNpYmxlLWFuYWx5dGljcy13aXphcmQtc3RlcC1zZWN0aW9uJyk7XG5cdFx0XHRsZXQgaW5wdXRzID0gZm9ybS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnSU5QVVQnKTtcblx0XHRcdGxldCBvcHRpb25zID0gW107XG5cblx0XHRcdGZvciAobGV0IGlucHV0IG9mIGlucHV0cykge1xuXHRcdFx0XHRvcHRpb25zLnB1c2goe25hbWU6IGlucHV0Lm5hbWUsIHZhbHVlOiBpbnB1dC52YWx1ZX0pO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG5cdFx0XHRkYXRhLmFwcGVuZCgnYWN0aW9uJywgJ3BsYXVzaWJsZV9hbmFseXRpY3Nfc2F2ZV9vcHRpb25zJyk7XG5cdFx0XHRkYXRhLmFwcGVuZCgnb3B0aW9ucycsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcblx0XHRcdGRhdGEuYXBwZW5kKCdfbm9uY2UnLCBwbGF1c2libGUubm9uY2UpO1xuXG5cdFx0XHRwbGF1c2libGUuYWpheChkYXRhKS50aGVuKHJlc3BvbnNlID0+IHtcblx0XHRcdFx0LyoqXG5cdFx0XHRcdCAqIERpc2FibGUgVmlldyBTdGF0cyBidXR0b24sIGlmIEFQSSB0b2tlbiBpcyBlbnRlcmVkIGFuZCB2YWxpZC5cblx0XHRcdFx0ICovXG5cdFx0XHRcdGlmIChoYXNoID09PSAnYXBpX3Rva2VuX3NsaWRlJyAmJiByZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0bGV0IHN0YXRzX2J1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbmFibGVfYW5hbHl0aWNzX2Rhc2hib2FyZF92aWV3X3N0YXRzX2luX3dvcmRwcmVzcycpO1xuXG5cdFx0XHRcdFx0c3RhdHNfYnV0dG9uLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIERpc2FibGUgQ29ubmVjdCBidXR0b24gaWYgRG9tYWluIE5hbWUgb3IgQVBJIFRva2VuIGZpZWxkIGlzIGVtcHR5LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIGVcblx0XHQgKi9cblx0XHRkaXNhYmxlQ29ubmVjdEJ1dHRvbjogZnVuY3Rpb24gKGUpIHtcblx0XHRcdGxldCB0YXJnZXQgPSBlLnRhcmdldDtcblx0XHRcdGxldCBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29ubmVjdF9wbGF1c2libGVfYW5hbHl0aWNzJyk7XG5cdFx0XHRsZXQgYnV0dG9uSXNIcmVmID0gZmFsc2U7XG5cblx0XHRcdGlmIChidXR0b24gPT09IG51bGwpIHtcblx0XHRcdFx0bGV0IHNsaWRlX2lkID0gZG9jdW1lbnQubG9jYXRpb24uaGFzaDtcblx0XHRcdFx0YnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzbGlkZV9pZCArICcgLnBsYXVzaWJsZS1hbmFseXRpY3Mtd2l6YXJkLW5leHQtc3RlcCcpO1xuXHRcdFx0XHRidXR0b25Jc0hyZWYgPSB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoYnV0dG9uID09PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRhcmdldC52YWx1ZSAhPT0gJycpIHtcblx0XHRcdFx0aWYgKCFidXR0b25Jc0hyZWYpIHtcblx0XHRcdFx0XHRidXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRidXR0b24uY2xhc3NMaXN0LnJlbW92ZSgncG9pbnRlci1ldmVudHMtbm9uZScpO1xuXHRcdFx0XHRcdGJ1dHRvbi5jbGFzc0xpc3QucmVwbGFjZSgnYmctZ3JheS0yMDAnLCAnYmctaW5kaWdvLTYwMCcpXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICghYnV0dG9uSXNIcmVmKSB7XG5cdFx0XHRcdGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdGJ1dHRvbi5pbm5lckhUTUwgPSBidXR0b24uaW5uZXJIVE1MLnJlcGxhY2UoJ0Nvbm5lY3RlZCcsICdDb25uZWN0Jyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRidXR0b24uY2xhc3NMaXN0ICs9ICcgcG9pbnRlci1ldmVudHMtbm9uZSc7XG5cdFx0XHRcdGJ1dHRvbi5jbGFzc0xpc3QucmVwbGFjZSgnYmctaW5kaWdvLTYwMCcsICdiZy1ncmF5LTIwMCcpXG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIE9wZW4gY3JlYXRlIEFQSSB0b2tlbiBkaWFsb2cuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0gZVxuXHRcdCAqL1xuXHRcdGNyZWF0ZUFQSVRva2VuOiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0XHRsZXQgZG9tYWluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RvbWFpbl9uYW1lJykudmFsdWU7XG5cdFx0XHRkb21haW4gPSBkb21haW4ucmVwbGFjZSgnLycsICclMkYnKTtcblxuXHRcdFx0d2luZG93Lm9wZW4oYCR7cGxhdXNpYmxlX2FuYWx5dGljc19ob3N0ZWRfZG9tYWlufS8ke2RvbWFpbn0vc2V0dGluZ3MvaW50ZWdyYXRpb25zP25ld190b2tlbj1Xb3JkUHJlc3NgLCAnX2JsYW5rJywgJ2xvY2F0aW9uPXllcyxoZWlnaHQ9NzY4LHdpZHRoPTEwMjQsc2Nyb2xsYmFycz15ZXMsc3RhdHVzPW5vJyk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNob3cgd2l6YXJkLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIGVcblx0XHQgKi9cblx0XHRzaG93V2l6YXJkOiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0bGV0IGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcblx0XHRcdGRhdGEuYXBwZW5kKCdhY3Rpb24nLCAncGxhdXNpYmxlX2FuYWx5dGljc19zaG93X3dpemFyZCcpO1xuXHRcdFx0ZGF0YS5hcHBlbmQoJ19ub25jZScsIGUudGFyZ2V0LmRhdGFzZXQubm9uY2UpO1xuXG5cdFx0XHRwbGF1c2libGUuYWpheChkYXRhKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogVG9nZ2xlcyB0aGUgYWN0aXZlL2luYWN0aXZlL2N1cnJlbnQgc3RhdGUgb2YgdGhlIHN0ZXBzLlxuXHRcdCAqL1xuXHRcdHRvZ2dsZVdpemFyZFN0ZXA6IGZ1bmN0aW9uICgpIHtcblx0XHRcdGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGxhdXNpYmxlLWFuYWx5dGljcy13aXphcmQnKSA9PT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGhhc2ggPSBkb2N1bWVudC5sb2NhdGlvbi5oYXNoLnN1YnN0cmluZygxKS5yZXBsYWNlKCdfc2xpZGUnLCAnJyk7XG5cblx0XHRcdC8qKlxuXHRcdFx0ICogUmVzZXQgYWxsIHN0ZXBzIHRvIGluYWN0aXZlLlxuXHRcdFx0ICovXG5cdFx0XHRsZXQgYWxsU3RlcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGxhdXNpYmxlLWFuYWx5dGljcy13aXphcmQtc3RlcCcpO1xuXHRcdFx0bGV0IGFjdGl2ZVN0ZXBzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBsYXVzaWJsZS1hbmFseXRpY3Mtd2l6YXJkLWFjdGl2ZS1zdGVwJyk7XG5cdFx0XHRsZXQgY29tcGxldGVkU3RlcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGxhdXNpYmxlLWFuYWx5dGljcy13aXphcmQtY29tcGxldGVkLXN0ZXAnKTtcblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhbGxTdGVwcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRhbGxTdGVwc1tpXS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmVTdGVwcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRhY3RpdmVTdGVwc1tpXS5jbGFzc0xpc3QgKz0gJyBoaWRkZW4nO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBsZXRlZFN0ZXBzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbXBsZXRlZFN0ZXBzW2ldLmNsYXNzTGlzdCArPSAnIGhpZGRlbic7XG5cdFx0XHR9XG5cblx0XHRcdC8qKlxuXHRcdFx0ICogTWFyayBjdXJyZW50IHN0ZXAgYXMgYWN0aXZlLlxuXHRcdFx0ICovXG5cdFx0XHRsZXQgY3VycmVudFN0ZXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0aXZlLXN0ZXAtJyArIGhhc2gpO1xuXHRcdFx0bGV0IGluYWN0aXZlQ3VycmVudFN0ZXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcC0nICsgaGFzaCk7XG5cblx0XHRcdGN1cnJlbnRTdGVwLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuXHRcdFx0aW5hY3RpdmVDdXJyZW50U3RlcC5jbGFzc0xpc3QgKz0gJyBoaWRkZW4nO1xuXG5cdFx0XHQvKipcblx0XHRcdCAqIE1hcmsgc3RlcHMgYXMgY29tcGxldGVkLlxuXHRcdFx0ICpcblx0XHRcdCAqIEB0eXBlIHtzdHJpbmdbXX1cblx0XHRcdCAqL1xuXHRcdFx0bGV0IGN1cnJlbnRseUNvbXBsZXRlZFN0ZXBzID0gY3VycmVudFN0ZXAuZGF0YXNldC5jb21wbGV0ZWRTdGVwcy5zcGxpdCgnLCcpO1xuXG5cdFx0XHQvKipcblx0XHRcdCAqIEZpbHRlciBlbXB0eSBhcnJheSBlbGVtZW50cy5cblx0XHRcdCAqIEB0eXBlIHtzdHJpbmdbXX1cblx0XHRcdCAqL1xuXHRcdFx0Y3VycmVudGx5Q29tcGxldGVkU3RlcHMgPSBjdXJyZW50bHlDb21wbGV0ZWRTdGVwcy5maWx0ZXIobiA9PiBuKTtcblxuXHRcdFx0aWYgKGN1cnJlbnRseUNvbXBsZXRlZFN0ZXBzLmxlbmd0aCA8IDEpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjdXJyZW50bHlDb21wbGV0ZWRTdGVwcy5mb3JFYWNoKGZ1bmN0aW9uIChzdGVwKSB7XG5cdFx0XHRcdGxldCBjb21wbGV0ZWRTdGVwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbXBsZXRlZC1zdGVwLScgKyBzdGVwKTtcblx0XHRcdFx0bGV0IGluYWN0aXZlU3RlcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVwLScgKyBzdGVwKTtcblxuXHRcdFx0XHRjb21wbGV0ZWRTdGVwLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuXHRcdFx0XHRpbmFjdGl2ZVN0ZXAuY2xhc3NMaXN0ICs9ICcgaGlkZGVuJztcblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBEbyBBSkFYIHJlcXVlc3QuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0gZGF0YVxuXHRcdCAqIEBwYXJhbSBidXR0b25cblx0XHQgKiBAcGFyYW0gc2hvd01lc3NhZ2VzXG5cdFx0ICpcblx0XHQgKiBAcmV0dXJuIG9iamVjdFxuXHRcdCAqL1xuXHRcdGFqYXg6IGZ1bmN0aW9uIChkYXRhLCBidXR0b24gPSBudWxsLCBzaG93TWVzc2FnZXMgPSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gZmV0Y2goXG5cdFx0XHRcdGFqYXh1cmwsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcblx0XHRcdFx0XHRib2R5OiBkYXRhLFxuXHRcdFx0XHR9XG5cdFx0XHQpLnRoZW4ocmVzcG9uc2UgPT4ge1xuXHRcdFx0XHRpZiAoYnV0dG9uKSB7XG5cdFx0XHRcdFx0aWYgKGJ1dHRvbi5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRidXR0b24uY2hpbGRyZW5bMF0uY2xhc3NMaXN0ICs9ICcgaGlkZGVuJztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoYnV0dG9uLmlkID09PSAnY29ubmVjdF9wbGF1c2libGVfYW5hbHl0aWNzJyAmJiByZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0YnV0dG9uLmlubmVyVGV4dCA9IHBsYXVzaWJsZV9hbmFseXRpY3NfaTE4bi5jb25uZWN0ZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGJ1dHRvbi5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuXHRcdFx0XHRpZiAoc2hvd01lc3NhZ2VzID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0cGxhdXNpYmxlLnNob3dNZXNzYWdlcygpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IGV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdwbGF1c2libGVBamF4RG9uZScsIHtkZXRhaWw6IHJlc3BvbnNlfSk7XG5cblx0XHRcdFx0ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG5cblx0XHRcdFx0aWYgKHJlc3BvbnNlLmRhdGEgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHJldHVybiByZXNwb25zZS5kYXRhO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiByZXNwb25zZTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNob3cgbWVzc2FnZXMgb24gc2NyZWVuLlxuXHRcdCAqL1xuXHRcdHNob3dNZXNzYWdlczogZnVuY3Rpb24gKCkge1xuXHRcdFx0bGV0IG1lc3NhZ2VzID0gcGxhdXNpYmxlLmZldGNoTWVzc2FnZXMoKTtcblxuXHRcdFx0bWVzc2FnZXMudGhlbihmdW5jdGlvbiAobWVzc2FnZXMpIHtcblx0XHRcdFx0aWYgKG1lc3NhZ2VzLmVycm9yICE9PSBmYWxzZSkge1xuXHRcdFx0XHRcdHBsYXVzaWJsZS5zaG93TWVzc2FnZShtZXNzYWdlcy5lcnJvciwgJ2Vycm9yJyk7XG5cdFx0XHRcdH0gZWxzZSBpZiAobWVzc2FnZXMubm90aWNlICE9PSBmYWxzZSkge1xuXHRcdFx0XHRcdHBsYXVzaWJsZS5zaG93TWVzc2FnZShtZXNzYWdlcy5ub3RpY2UsICdub3RpY2UnKTtcblx0XHRcdFx0fSBlbHNlIGlmIChtZXNzYWdlcy5zdWNjZXNzICE9PSBmYWxzZSkge1xuXHRcdFx0XHRcdHBsYXVzaWJsZS5zaG93TWVzc2FnZShtZXNzYWdlcy5zdWNjZXNzLCAnc3VjY2VzcycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKG1lc3NhZ2VzLmFkZGl0aW9uYWwubGVuZ3RoID09PSAwIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbGF1c2libGUtYW5hbHl0aWNzLXdpemFyZCcpICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKG1lc3NhZ2VzLmFkZGl0aW9uYWwuaWQgIT09IHVuZGVmaW5lZCAmJiBtZXNzYWdlcy5hZGRpdGlvbmFsLm1lc3NhZ2UpIHtcblx0XHRcdFx0XHRwbGF1c2libGUuc2hvd0FkZGl0aW9uYWxNZXNzYWdlKG1lc3NhZ2VzLmFkZGl0aW9uYWwubWVzc2FnZSwgbWVzc2FnZXMuYWRkaXRpb25hbC5pZCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAobWVzc2FnZXMuYWRkaXRpb25hbC5pZCAhPT0gdW5kZWZpbmVkICYmIG1lc3NhZ2VzLmFkZGl0aW9uYWwubWVzc2FnZSA9PT0gJycpIHtcblx0XHRcdFx0XHRwbGF1c2libGUucmVtb3ZlQWRkaXRpb25hbE1lc3NhZ2UobWVzc2FnZXMuYWRkaXRpb25hbC5pZCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBGZXRjaCB0aGUgbWVzc2FnZXMgZm9yIGRpc3BsYXkuXG5cdFx0ICovXG5cdFx0ZmV0Y2hNZXNzYWdlczogZnVuY3Rpb24gKCkge1xuXHRcdFx0bGV0IGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcblx0XHRcdGRhdGEuYXBwZW5kKCdhY3Rpb24nLCAncGxhdXNpYmxlX2FuYWx5dGljc19tZXNzYWdlcycpO1xuXG5cdFx0XHRsZXQgcmVzdWx0ID0gcGxhdXNpYmxlLmFqYXgoZGF0YSwgbnVsbCwgZmFsc2UpO1xuXG5cdFx0XHRyZXR1cm4gcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBEaXNwbGF5cyBhIG5vdGljZSBvciBlcnJvciBtZXNzYWdlLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIG1lc3NhZ2Vcblx0XHQgKiBAcGFyYW0gdHlwZSBlcnJvcnx3YXJuaW5nfHN1Y2Nlc3MgRGVmYXVsdHMgdG8gc3VjY2Vzcy5cblx0XHQgKi9cblx0XHRzaG93TWVzc2FnZTogZnVuY3Rpb24gKG1lc3NhZ2UsIHR5cGUgPSAnc3VjY2VzcycpIHtcblx0XHRcdGlmICh0eXBlID09PSAnZXJyb3InKSB7XG5cdFx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpY29uLWVycm9yJykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG5cdFx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpY29uLXN1Y2Nlc3MnKS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcblx0XHRcdFx0ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ljb24tbm90aWNlJykuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGUgPT09ICdub3RpY2UnKSB7XG5cdFx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpY29uLW5vdGljZScpLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuXHRcdFx0XHRkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWNvbi1lcnJvcicpLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuXHRcdFx0XHRkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWNvbi1zdWNjZXNzJykuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWNvbi1zdWNjZXNzJykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG5cdFx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpY29uLWVycm9yJykuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG5cdFx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpY29uLW5vdGljZScpLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgbm90aWNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsYXVzaWJsZS1hbmFseXRpY3Mtbm90aWNlJyk7XG5cblx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbGF1c2libGUtYW5hbHl0aWNzLW5vdGljZS10ZXh0JykuaW5uZXJIVE1MID0gbWVzc2FnZTtcblxuXHRcdFx0bm90aWNlLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuXG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0bm90aWNlLmNsYXNzTGlzdC5yZXBsYWNlKCdvcGFjaXR5LTAnLCAnb3BhY2l0eS0xMDAnKTtcblx0XHRcdH0sIDIwMClcblxuXHRcdFx0aWYgKHR5cGUgIT09ICdlcnJvcicpIHtcblx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0bm90aWNlLmNsYXNzTGlzdC5yZXBsYWNlKCdvcGFjaXR5LTEwMCcsICdvcGFjaXR5LTAnKTtcblx0XHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdG5vdGljZS5jbGFzc0xpc3QgKz0gJyBoaWRkZW4nO1xuXHRcdFx0XHRcdH0sIDIwMClcblx0XHRcdFx0fSwgMjAwMCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBSZW5kZXJzIGEgSFRNTCBib3ggY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlbmFibGVkIG9wdGlvbi5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSBodG1sXG5cdFx0ICogQHBhcmFtIHRhcmdldFxuXHRcdCAqL1xuXHRcdHNob3dBZGRpdGlvbmFsTWVzc2FnZTogZnVuY3Rpb24gKGh0bWwsIHRhcmdldCkge1xuXHRcdFx0bGV0IHRhcmdldEVsZW0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbbmFtZT0nJHt0YXJnZXR9J11gKTtcblx0XHRcdGxldCBjb250YWluZXIgPSB0YXJnZXRFbGVtLmNsb3Nlc3QoJy5wbGF1c2libGUtYW5hbHl0aWNzLWdyb3VwJyk7XG5cblx0XHRcdGNvbnRhaW5lci5pbm5lckhUTUwgKz0gaHRtbDtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogUmVtb3ZlcyB0aGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBib3ggd2hlbiB0aGUgb3B0aW9uIGlzIGRpc2FibGVkLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHRhcmdldFxuXHRcdCAqL1xuXHRcdHJlbW92ZUFkZGl0aW9uYWxNZXNzYWdlOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG5cdFx0XHRsZXQgdGFyZ2V0RWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPVwiJHt0YXJnZXR9XCJdYCk7XG5cdFx0XHRsZXQgY29udGFpbmVyID0gdGFyZ2V0RWxlbS5jbG9zZXN0KCcucGxhdXNpYmxlLWFuYWx5dGljcy1ncm91cCcpO1xuXHRcdFx0bGV0IGFkZGl0aW9uYWxNZXNzYWdlO1xuXG5cdFx0XHRpZiAoY29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb250YWluZXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRpZiAoY29udGFpbmVyLmNoaWxkcmVuW2ldLmNsYXNzTGlzdC5jb250YWlucygncGxhdXNpYmxlLWFuYWx5dGljcy1ob29rJykpIHtcblx0XHRcdFx0XHRcdGFkZGl0aW9uYWxNZXNzYWdlID0gY29udGFpbmVyLmNoaWxkcmVuW2ldO1xuXG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKGFkZGl0aW9uYWxNZXNzYWdlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29udGFpbmVyLnJlbW92ZUNoaWxkKGFkZGl0aW9uYWxNZXNzYWdlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwbGF1c2libGUuaW5pdCgpO1xufSk7XG4iXSwibmFtZXMiOlsiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwibG9jYXRpb24iLCJocmVmIiwiaW5jbHVkZXMiLCJwbGF1c2libGUiLCJub25jZUVsZW0iLCJnZXRFbGVtZW50QnlJZCIsIm5vbmNlIiwic2hvd1dpemFyZEVsZW0iLCJkb21haW5OYW1lRWxlbSIsImFwaVRva2VuRWxlbSIsImNyZWF0ZUFQSVRva2VuRWxlbXMiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiYnV0dG9uRWxlbXMiLCJzdGVwRWxlbXMiLCJpbml0IiwiaGFzaCIsInRoaXMiLCJ2YWx1ZSIsInRvZ2dsZVdpemFyZFN0ZXAiLCJ3aW5kb3ciLCJzaG93V2l6YXJkIiwiZGlzYWJsZUNvbm5lY3RCdXR0b24iLCJsZW5ndGgiLCJpIiwiY3JlYXRlQVBJVG9rZW4iLCJzYXZlT3B0aW9uIiwidG9nZ2xlT3B0aW9uIiwic2F2ZU9wdGlvbk9uTmV4dCIsInNob3dNZXNzYWdlcyIsImUiLCJ0YXJnZXQiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsImJ1dHRvbiIsImNsb3Nlc3QiLCJ0b2dnbGUiLCJ0b2dnbGVTdGF0dXMiLCJ0eXBlIiwicXVlcnlTZWxlY3RvciIsInJlcGxhY2UiLCJmb3JtIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJuYW1lIiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiaW5uZXJIVE1MIiwiZGF0YXNldCIsImxpc3QiLCJhamF4IiwiaW5wdXRzIiwicXVlcnlTZWxlY3RvckFsbCIsIm9wdGlvbnMiLCJmb3JFYWNoIiwiaW5wdXQiLCJwdXNoIiwiSlNPTiIsInN0cmluZ2lmeSIsImNoaWxkcmVuIiwicmVtb3ZlIiwic2V0QXR0cmlidXRlIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJkYXRhIiwidGhlbiIsInJlc3BvbnNlIiwic3VjY2VzcyIsInJlbW92ZUF0dHJpYnV0ZSIsImJ1dHRvbklzSHJlZiIsInNsaWRlX2lkIiwiZGlzYWJsZWQiLCJwcmV2ZW50RGVmYXVsdCIsImRvbWFpbiIsIm9wZW4iLCJwbGF1c2libGVfYW5hbHl0aWNzX2hvc3RlZF9kb21haW4iLCJzdWJzdHJpbmciLCJhbGxTdGVwcyIsImFjdGl2ZVN0ZXBzIiwiY29tcGxldGVkU3RlcHMiLCJjdXJyZW50U3RlcCIsImluYWN0aXZlQ3VycmVudFN0ZXAiLCJjdXJyZW50bHlDb21wbGV0ZWRTdGVwcyIsInNwbGl0IiwiZmlsdGVyIiwibiIsInN0ZXAiLCJjb21wbGV0ZWRTdGVwIiwiaW5hY3RpdmVTdGVwIiwiZmV0Y2giLCJhamF4dXJsIiwibWV0aG9kIiwiYm9keSIsImlkIiwic3RhdHVzIiwiaW5uZXJUZXh0IiwicGxhdXNpYmxlX2FuYWx5dGljc19pMThuIiwiY29ubmVjdGVkIiwianNvbiIsImV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJkaXNwYXRjaEV2ZW50IiwidW5kZWZpbmVkIiwiZmV0Y2hNZXNzYWdlcyIsIm1lc3NhZ2VzIiwiZXJyb3IiLCJzaG93TWVzc2FnZSIsIm5vdGljZSIsImFkZGl0aW9uYWwiLCJtZXNzYWdlIiwic2hvd0FkZGl0aW9uYWxNZXNzYWdlIiwicmVtb3ZlQWRkaXRpb25hbE1lc3NhZ2UiLCJhZGQiLCJzZXRUaW1lb3V0IiwiaHRtbCIsImFkZGl0aW9uYWxNZXNzYWdlIiwiY29udGFpbmVyIiwicmVtb3ZlQ2hpbGQiXSwic291cmNlUm9vdCI6IiJ9