-
-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
I am taking "the extension may have been corrupted" warnings #47
Comments
I haven't seen those errors and so it'll be super helpful if you could share them with me. Probably the easiest way to do this would be to post screenshots of errors/warnings into a comment here. Thank you! |
I attached the screenshots and an example about the issue. I hope that it will be beneficial for you. Thanks. The example issue; Context: https://www.sinemalar.com/filmleri/36471/nursel-kose Stack Trace; contentscript.js:1 (anonymous function) 1 '+t+n+" "}):a=''+o.escape_html(e)+" ";const l=r.a[n];return l&&i.show_from_lang&&(a+=\n <div class="from_lang ${s}">\n <strong>translated from:</strong>\n <span> ${l.label}</span>\n </div>\n ),a},escape_html:function(e){return e.replace(XRegExp("(<|>|&)","g"),function(e,t){switch(t){case"<":return"<";case">":return">";case"&":return"&"}})},regexp_escape:function(e){return e.replace(/[-/\^$+?.()|[]{}]/g,"\$&")}};t.a=o},,function(e,t,n){"use strict";n.r(t);var r=n(2),o=n(1);const i=n(5)("transover");let a,s;function l(e){const t=$.grep(e.except_urls,function(e){return RegExp(e).test(window.location.href)}).length>0,n=$.grep(e.only_urls,function(e){return RegExp(e).test(window.location.href)}).length>0||0===e.only_urls.length;return t||!n}function c(e){return document.documentElement.appendChild(d[f[e]]),$("<"+e+">")}function u(e){$(e).each(function(){const e=this;$(this.shadowRoot.querySelector("main")).fadeOut("fast",function(){e.remove()})}),$("#"+f[e]).remove()}const d={},f={"transover-popup":"transover-popup-template","transover-type-and-translate-popup":"transover-tat-popup-template"};function p(e){const t=e+".html",n=e+".js",r=new XMLHttpRequest;r.open("GET",chrome.extension.getURL(t),!0),r.responseType="document",r.onload=function(e){const t=e.target.response.querySelector("template");d[t.id]=t},r.send();const o=document.createElement("script");o.type="text/javascript",o.src=chrome.extension.getURL(n),o.async=!0,document.head.appendChild(o)}let h;function m(e,t){u("transover-type-and-translate-popup");const n=c("transover-popup");$("body").append(n),n.on("transover-popup_content_updated",function(){const t=function(e,t,n){const r={},o=Number(n.attr("outer-width")),i=Number(n.attr("outer-height"));if(e+10+o+5<$(window).width())r.x=e+10;else if(e-10-o-5>0)r.x=e-10-o;else if(o+10<$(window).width())r.x=5;else{const e=o-Number(n.attr("content-width"));n.attr("content-width",$(window).width()-10-e),n.attr("content-height",Number(n.attr("content-height"))+4),r.x=5}t-10-i-5>0?r.y=t-10-i:t+10+i+5<$(window).height()?r.y=t+10:r.y=5;return r}(e.clientX,e.clientY,n);n.each(function(){$(this.shadowRoot.querySelector("main")).hide()}).attr({top:t.y,left:t.x}).each(function(){$(this.shadowRoot.querySelector("main")).fadeIn("fast")})}),n.attr("content",t)}function g(e){function t(e){const t=$(document.elementFromPoint(e.clientX,e.clientY)),n="\p{L}+(?:['’]\p{L}+)",o={"line-height":t.css("line-height"),"font-size":"1em","font-family":t.css("font-family")},a=t.contents().filter(function(){return this.nodeType==Node.TEXT_NODE&&XRegExp(n).test(this.nodeValue)});if(0==a.length)return i("no text"),"";const s=function(e,t){$(a).wrap("");let n=document.elementFromPoint(t.clientX,t.clientY);return"TRANSBLOCK"!=n.nodeName?($(a).unwrap(),null):(n=n.childNodes[0],$(a).unwrap(),n)}(0,e);return s?function(e,t){$(e).wrap("");const n=t(e);return $("transwrapper").replaceWith(r.a.escape_html($("transwrapper").text())),n}(s,function(){let t="";const a=function t(o,a){if(i("getHitText: '"+o.textContent+"'"),XRegExp(n).test(o.textContent)){$(o).replaceWith(function(){return this.textContent.replace(XRegExp("^(.{"+Math.round(o.textContent.length/2)+"}(?:\p{L}|'’))(.)","s"),function(e,t,n){return""+r.a.escape_html(t)+""+r.a.escape_html(n)+""})}),$("transblock").css(a);const n=document.elementFromPoint(e.clientX,e.clientY).childNodes[0];return n.textContent==o.textContent?n:t(n,a)}return null}(s,o);if(a){$(a).replaceWith(function(){return this.textContent.replace(XRegExp("(<|>|&|"+n+")","gs"),function(e,t){switch(t){case"<":return"<";case">":return">";case"&":return"&";default:return""+t+""}})}),$("transover").css(o);const r=document.elementFromPoint(e.clientX,e.clientY);"TRANSOVER"!=r.nodeName?i("missed!"):(t=$(r).text(),i("got it: '"+t+"'"))}return t}):(i("hit between lines"),"")}const n=window.getSelection(),s=document.elementFromPoint(e.clientX,e.clientY);if(!s)return;if(/INPUT|TEXTAREA/.test(s.nodeName)||s.isContentEditable||$(s).parents().filter(function(){return this.isContentEditable}).length>0)return;let l="";if(n.toString()){if(a.selection_key_only)return void i('Skip because "selection_key_only"');i("Got selection: "+n.toString());let r=n.getRangeAt(0).commonAncestorContainer;for(;r.nodeType!=Node.ELEMENT_NODE;)r=r.parentNode;($(s).is(r)||$.contains(r,s))&&n.containsNode(s,!0)?l=n.toString():"point"==a.translate_by&&(l=t(e))}else l=t(e);""!=l&&chrome.extension.sendRequest({handler:"translate",word:l},function(t){i("response: ",t);const n=r.a.deserialize(t.translation);n?(h=n,m(e,r.a.formatTranslation(n,o.a[t.tl].direction,t.sl,a))):i("skipping empty translation")})}function y(e,t){if(a.target_lang){if(a.word_key_only&&!b)return;if(s)return;t()}}chrome.extension.sendRequest({handler:"get_options"},function(e){a=JSON.parse(e.options),s=l(a),chrome.extension.sendRequest({handler:"setIcon",disabled:s})}),document.addEventListener("visibilitychange",function(){document.hidden||chrome.extension.sendRequest({handler:"get_options"},function(e){a=JSON.parse(e.options),s=l(a),chrome.extension.sendRequest({handler:"setIcon",disabled:s})})},!1),$(document).on("mousestop",function(e){y(0,function(){window.getSelection().toString()?a.selection_key_only||g(e):"point"==a.translate_by&&g(e)})}),$(document).click(function(e){return y(0,function(){"click"==a.translate_by&&($(e.target).closest("a").length>0||g(e))}),!0});let C,b=!1;$(document).keydown(function(e){if(r.a.modifierKeys[e.keyCode]==a.popup_show_trigger){b=!0;const e=window.getSelection().toString();a.selection_key_only&&e&&(i("Got selection_key_only"),chrome.extension.sendRequest({handler:"translate",word:e},function(e){i("response: ",e);const t=r.a.deserialize(e.translation);if(!t)return void i("skipping empty translation");const n={clientX:w.x,clientY:w.y};h=t,m(n,r.a.formatTranslation(t,o.a[e.tl].direction,e.sl,a))}))}!e.originalEvent.repeat&&r.a.modifierKeys[e.keyCode]==a.tts_key&&a.tts&&$("transover-popup").length>0&&(i("tts"),chrome.extension.sendRequest({handler:"tts"})),27==e.keyCode&&u("transover-type-and-translate-popup")}).keyup(function(e){r.a.modifierKeys[e.keyCode]==a.popup_show_trigger&&(b=!1)}),$(document).mousemove(function(e){if(function(e){const t=parseInt(w.x)-5,n=parseInt(w.x)+5,r=parseInt(w.y)-5,o=parseInt(w.y)+5;return e.clientX>n||e.clientX<t||e.clientY>o||e.clientY<r}(e)){const t=new $.Event("mousemove_without_noise");t.clientX=e.clientX,t.clientY=e.clientY,$(document).trigger(t)}});const w={x:0,y:0};$(document).scroll(function(){u("transover-popup")}),$(document).on("mousemove_without_noise",function(e){if(u("transover-popup"),clearTimeout(C),a){let t=a.delay;window.getSelection().toString()?a.selection_key_only&&(t=200):a.word_key_only&&(t=200),C=setTimeout(function(){const t=new $.Event("mousestop");w.x=t.clientX=e.clientX,w.y=t.clientY=e.clientY,$(document).trigger(t)},t)}}),chrome.runtime.onMessage.addListener(function(e){if(window==window.top)if("open_type_and_translate"==e)0==$("transover-type-and-translate-popup").length?chrome.extension.sendRequest({handler:"get_last_tat_sl_tl"},function(e){const t=c("transover-type-and-translate-popup"),n=$.extend({},o.a);e.sl&&(n[e.sl].selected_sl=!0),n[e.tast_tl||a.target_lang].selected_tl=!0,t.attr("data-languages",JSON.stringify(n)),t.attr("data-disable_on_this_page",s),$("body").append(t),t.each(function(){$(this.shadowRoot.querySelector("main")).hide().fadeIn("fast")})}):u("transover-type-and-translate-popup");else if("copy-translation-to-clipboard"==e&&(i("received copy-translation-to-clipboard"),$("transover-popup").length>0)){let e;(function(e){const t=document.createElement("input");t.style.position="fixed",t.style.opacity=0,t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)})(e=Array.isArray(h)?h.map(e=>{let t="";return e.pos&&(t=e.pos+": "),t+=e.meanings.slice(0,5).join(", ")}).join("; "):h)}}),$(function(){p("popup"),p("tat_popup")}),window.addEventListener("message",function(e){e.source==window&&("transoverTranslate"==e.data.type?chrome.extension.sendRequest({handler:"translate",word:e.data.text,sl:e.data.sl,tl:e.data.tl},function(e){i("tat response: ",e);const t=r.a.deserialize(e.translation);if(!t)return void i("tat skipping empty translation");const n={clientX:$(window).width(),clientY:0};h=t,m(n,r.a.formatTranslation(t,o.a[e.tl].direction,e.sl,a))}):"toggle_disable_on_this_page"===e.data.type?(s=e.data.disable_on_this_page,chrome.extension.sendRequest({handler:"toggle_disable_on_this_page",disable_on_this_page:s,current_url:window.location.origin}),chrome.extension.sendRequest({handler:"setIcon",disabled:s}),u("transover-type-and-translate-popup")):"tat_close"===e.data.type&&u("transover-type-and-translate-popup"))})},function(e,t,n){(function(r){t.log=function(...e){return"object"==typeof console&&console.log&&console.log(...e)},t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,o=0;t[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(r++,"%c"===e&&(o=r))}),t.splice(o,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==r&&"env"in r&&(e=r.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.exports=n(7)(t);const{formatters:o}=e.exports;o.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}).call(this,n(6))},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var l,c=[],u=!1,d=-1;function f(){u&&l&&(u=!1,l.length?c=l.concat(c):d=-1,c.length&&p())}function p(){if(!u){var e=s(f);u=!0;for(var t=c.length;t;){for(l=c,c=[];++d<t;)l&&l[d].run();d=-1,t=c.length}l=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function m(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new h(e,t)),1!==c.length||u||s(p)},h.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=m,o.addListener=m,o.once=m,o.off=m,o.removeListener=m,o.removeAllListeners=m,o.emit=m,o.prependListener=m,o.prependOnceListener=m,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t,n){e.exports=function(e){function t(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return r.colors[Math.abs(t)%r.colors.length]}function r(e){let n;function a(...e){if(!a.enabled)return;const t=a,o=Number(new Date),i=o-(n||o);t.diff=i,t.prev=n,t.curr=o,n=o,e[0]=r.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let s=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(n,o)=>{if("%%"===n)return n;s++;const i=r.formatters[o];if("function"==typeof i){const r=e[s];n=i.call(t,r),e.splice(s,1),s--}return n}),r.formatArgs.call(t,e),(t.log||r.log).apply(t,e)}return a.namespace=e,a.enabled=r.enabled(e),a.useColors=r.useColors(),a.color=t(e),a.destroy=o,a.extend=i,"function"==typeof r.init&&r.init(a),r.instances.push(a),a}function o(){const e=r.instances.indexOf(this);return-1!==e&&(r.instances.splice(e,1),!0)}function i(e,t){const n=r(this.namespace+(void 0===t?":":t)+e);return n.log=this.log,n}function a(e){return e.toString().substring(2,e.toString().length-2).replace(/.*?$/,"")}return r.debug=r,r.default=r,r.coerce=function(e){return e instanceof Error?e.stack||e.message:e},r.disable=function(){const e=[...r.names.map(a),...r.skips.map(a).map(e=>"-"+e)].join(",");return r.enable(""),e},r.enable=function(e){let t;r.save(e),r.names=[],r.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(t=0;t<o;t++)n[t]&&("-"===(e=n[t].replace(/*/g,".?"))[0]?r.skips.push(new RegExp("^"+e.substr(1)+"$")):r.names.push(new RegExp("^"+e+"$")));for(t=0;t<r.instances.length;t++){const e=r.instances[t];e.enabled=r.enabled(e.namespace)}},r.enabled=function(e){if(""===e[e.length-1])return!0;let t,n;for(t=0,n=r.skips.length;t<n;t++)if(r.skips[t].test(e))return!1;for(t=0,n=r.names.length;t<n;t++)if(r.names[t].test(e))return!0;return!1},r.humanize=n(8),Object.keys(e).forEach(t=>{r[t]=e[t]}),r.instances=[],r.names=[],r.skips=[],r.formatters={},r.selectColor=t,r.enable(r.load()),r}},function(e,t){var n=1e3,r=60n,o=60r,i=24o,a=7i,s=365.25i;function l(e,t,n,r){var o=t>=1.5n;return Math.round(e/n)+" "+r+(o?"s":"")}e.exports=function(e,t){t=t||{};var c=typeof e;if("string"===c&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?-?\d?.?\d+) (milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var l=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return ls;case"weeks":case"week":case"w":return la;case"days":case"day":case"d":return li;case"hours":case"hour":case"hrs":case"hr":case"h":return lo;case"minutes":case"minute":case"mins":case"min":case"m":return lr;case"seconds":case"second":case"secs":case"sec":case"s":return ln;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return l;default:return}}(e);if("number"===c&&!1===isNaN(e))return t.long?function(e){var t=Math.abs(e);if(t>=i)return l(e,t,i,"day");if(t>=o)return l(e,t,o,"hour");if(t>=r)return l(e,t,r,"minute");if(t>=n)return l(e,t,n,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=i)return Math.round(e/i)+"d";if(t>=o)return Math.round(e/o)+"h";if(t>=r)return Math.round(e/r)+"m";if(t>=n)return Math.round(e/n)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}}]);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2xhbmd1YWdlcy5qcyIsIndlYnBhY2s6Ly8vLi9saWIvdHJhbnNvdmVyX3V0aWxzLmpzIiwid2VicGFjazovLy8uL2NvbnRlbnRzY3JpcHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9icm93c2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21zL2luZGV4LmpzIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsImFmIiwibGFiZWwiLCJkaXJlY3Rpb24iLCJzcSIsImFyIiwiaHkiLCJheiIsImV1IiwiYmUiLCJibiIsImJnIiwiY2EiLCJ6aC1DTiIsInpoLVRXIiwiaHIiLCJjcyIsImRhIiwibmwiLCJlbiIsImVvIiwiZXQiLCJ0bCIsImZpIiwiZnIiLCJnbCIsImthIiwiZGUiLCJlbCIsImd1IiwiaHQiLCJpdyIsImhpIiwiaHUiLCJpcyIsImlkIiwiZ2EiLCJpdCIsImphIiwia24iLCJrbyIsImxhIiwibHYiLCJsdCIsIm1rIiwibXMiLCJtdCIsIm5vIiwiZmEiLCJwbCIsInB0Iiwicm8iLCJydSIsInNyIiwic2siLCJzbCIsImVzIiwic3ciLCJzdiIsInRhIiwidGUiLCJ0aCIsInRyIiwidWsiLCJ1ciIsInZpIiwiY3kiLCJ5aSIsIl9sYW5ndWFnZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIlRyYW5zT3ZlciIsIjE2IiwiMTciLCIxOCIsIjIyNCIsIjkxIiwiOTMiLCIxMyIsInRleHQiLCJyZXMiLCJKU09OIiwicGFyc2UiLCJlIiwidG9TdHJpbmciLCJtYXRjaCIsInRyYW5zbGF0aW9uIiwidGV4dERpcmVjdGlvbiIsImZyb21fbGFuZyIsIm9wdGlvbnMiLCJmb3JtYXR0ZWRfdHJhbnNsYXRpb24iLCJydGwiLCJBcnJheSIsImZvckVhY2giLCJwb3NfYmxvY2siLCJmb3JtYXR0ZWRfcG9zIiwicG9zIiwiZm9ybWF0dGVkX21lYW5pbmdzIiwibWVhbmluZ3MiLCJzbGljZSIsImpvaW4iLCJsZW5ndGgiLCJlc2NhcGVfaHRtbCIsImZyb21MYW5nIiwiVHJhbnNPdmVyTGFuZ3VhZ2VzIiwic2hvd19mcm9tX2xhbmciLCJyZXBsYWNlIiwiWFJlZ0V4cCIsIiQwIiwiJDEiLCJfbGliX3RyYW5zb3Zlcl91dGlsc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX2xpYl9sYW5ndWFnZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsImRlYnVnIiwicmVxdWlyZSIsImRpc2FibGVfb25fdGhpc19wYWdlIiwiaWdub3JlVGhpc1BhZ2UiLCJpc0JsYWNrbGlzdGVkIiwiJCIsImdyZXAiLCJleGNlcHRfdXJscyIsInVybCIsIlJlZ0V4cCIsInRlc3QiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJpc1doaXRlbGlzdGVkIiwib25seV91cmxzIiwiY3JlYXRlUG9wdXAiLCJub2RlVHlwZSIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiYXBwZW5kQ2hpbGQiLCJ0ZW1wbGF0ZXMiLCJ0ZW1wbGF0ZUlkcyIsInJlbW92ZVBvcHVwIiwiZWFjaCIsInNlbGYiLCJ0aGlzIiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJmYWRlT3V0IiwicmVtb3ZlIiwidHJhbnNvdmVyLXBvcHVwIiwidHJhbnNvdmVyLXR5cGUtYW5kLXRyYW5zbGF0ZS1wb3B1cCIsInJlZ2lzdGVyVHJhbnNvdmVyQ29tcG9uZW50IiwiY29tcG9uZW50IiwiaHRtbCIsInNjcmlwdCIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsImNocm9tZSIsImV4dGVuc2lvbiIsImdldFVSTCIsInJlc3BvbnNlVHlwZSIsIm9ubG9hZCIsInRlbXBsYXRlIiwidGFyZ2V0IiwicmVzcG9uc2UiLCJzZW5kIiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJzcmMiLCJhc3luYyIsImhlYWQiLCJsYXN0X3RyYW5zbGF0aW9uIiwic2hvd1BvcHVwIiwiY29udGVudCIsIiRwb3B1cCIsImFwcGVuZCIsIm9uIiwieCIsInkiLCJvdXRlcldpZHRoIiwiTnVtYmVyIiwiYXR0ciIsIm91dGVySGVpZ2h0Iiwid2lkdGgiLCJtYXJnaW4iLCJub25fY29udGVudF94IiwiaGVpZ2h0IiwiY2FsY3VsYXRlUG9zaXRpb24iLCJjbGllbnRYIiwiY2xpZW50WSIsImhpZGUiLCJ0b3AiLCJsZWZ0IiwiZmFkZUluIiwicHJvY2VzcyIsImdldEhpdFdvcmQiLCJoaXRfZWxlbSIsImVsZW1lbnRGcm9tUG9pbnQiLCJ3b3JkX3JlIiwicGFyZW50X2ZvbnRfc3R5bGUiLCJsaW5lLWhlaWdodCIsImNzcyIsImZvbnQtc2l6ZSIsImZvbnQtZmFtaWx5IiwidGV4dF9ub2RlcyIsImNvbnRlbnRzIiwiZmlsdGVyIiwiTm9kZSIsIlRFWFRfTk9ERSIsIm5vZGVWYWx1ZSIsImhpdF90ZXh0X25vZGUiLCJub2RlcyIsIndyYXAiLCJub2RlTmFtZSIsInVud3JhcCIsImNoaWxkTm9kZXMiLCJnZXRFeGFjdFRleHROb2RlIiwibm9kZSIsImRvX3N0dWZmIiwicmVwbGFjZVdpdGgiLCJyZXN0b3JhYmxlIiwiaHciLCJtaW5pbWFsX3RleHRfbm9kZSIsImdldEhpdFRleHQiLCJ0ZXh0Q29udGVudCIsIk1hdGgiLCJyb3VuZCIsIiQyIiwibmV4dF9ub2RlIiwiaGl0X3dvcmRfZWxlbSIsInNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsImlzQ29udGVudEVkaXRhYmxlIiwicGFyZW50cyIsIndvcmQiLCJzZWxlY3Rpb25fa2V5X29ubHkiLCJzZWxfY29udGFpbmVyIiwiZ2V0UmFuZ2VBdCIsImNvbW1vbkFuY2VzdG9yQ29udGFpbmVyIiwiRUxFTUVOVF9OT0RFIiwicGFyZW50Tm9kZSIsImNvbnRhaW5zIiwiY29udGFpbnNOb2RlIiwidHJhbnNsYXRlX2J5Iiwic2VuZFJlcXVlc3QiLCJoYW5kbGVyIiwiZGVzZXJpYWxpemUiLCJmb3JtYXRUcmFuc2xhdGlvbiIsIndpdGhPcHRpb25zU2F0aXNmaWVkIiwidGFyZ2V0X2xhbmciLCJ3b3JkX2tleV9vbmx5Iiwic2hvd19wb3B1cF9rZXlfcHJlc3NlZCIsImRpc2FibGVkIiwiYWRkRXZlbnRMaXN0ZW5lciIsImhpZGRlbiIsImNsaWNrIiwiY2xvc2VzdCIsInRpbWVyMjUiLCJrZXlkb3duIiwibW9kaWZpZXJLZXlzIiwia2V5Q29kZSIsInBvcHVwX3Nob3dfdHJpZ2dlciIsInh5IiwibGFzdF9tb3VzZV9zdG9wIiwib3JpZ2luYWxFdmVudCIsInJlcGVhdCIsInR0c19rZXkiLCJ0dHMiLCJrZXl1cCIsIm1vdXNlbW92ZSIsImxlZnRfYm91bmRyeSIsInBhcnNlSW50IiwicmlnaHRfYm91bmRyeSIsInRvcF9ib3VuZHJ5IiwiYm90dG9tX2JvdW5kcnkiLCJoYXNNb3VzZVJlYWxseU1vdmVkIiwibW91c2Vtb3ZlX3dpdGhvdXRfbm9pc2UiLCJFdmVudCIsInRyaWdnZXIiLCJzY3JvbGwiLCJjbGVhclRpbWVvdXQiLCJkZWxheSIsInNldFRpbWVvdXQiLCJtb3VzZXN0b3AiLCJydW50aW1lIiwib25NZXNzYWdlIiwiYWRkTGlzdGVuZXIiLCJyZXF1ZXN0IiwibGFuZ3VhZ2VzIiwiZXh0ZW5kIiwic2VsZWN0ZWRfc2wiLCJ0YXN0X3RsIiwic2VsZWN0ZWRfdGwiLCJzdHJpbmdpZnkiLCJ0b0NsaXBib2FyZCIsImlucHV0Iiwic3R5bGUiLCJwb3NpdGlvbiIsIm9wYWNpdHkiLCJib2R5Iiwic2VsZWN0IiwiZXhlY0NvbW1hbmQiLCJyZW1vdmVDaGlsZCIsImNvcHlUb0NsaXBib2FyZCIsImlzQXJyYXkiLCJtYXAiLCJsaW5lIiwic291cmNlIiwiZGF0YSIsImN1cnJlbnRfdXJsIiwib3JpZ2luIiwibG9nIiwiYXJncyIsImNvbnNvbGUiLCJmb3JtYXRBcmdzIiwidXNlQ29sb3JzIiwibmFtZXNwYWNlIiwiaHVtYW5pemUiLCJkaWZmIiwiY29sb3IiLCJzcGxpY2UiLCJpbmRleCIsImxhc3RDIiwic2F2ZSIsIm5hbWVzcGFjZXMiLCJzdG9yYWdlIiwic2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJlcnJvciIsImxvYWQiLCJnZXRJdGVtIiwiZW52IiwiREVCVUciLCJfX253anMiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJ0b0xvd2VyQ2FzZSIsIldlYmtpdEFwcGVhcmFuY2UiLCJmaXJlYnVnIiwiZXhjZXB0aW9uIiwidGFibGUiLCJsb2NhbFN0b3JhZ2UiLCJsb2NhbHN0b3JhZ2UiLCJjb2xvcnMiLCJmb3JtYXR0ZXJzIiwiaiIsInYiLCJtZXNzYWdlIiwiY2FjaGVkU2V0VGltZW91dCIsImNhY2hlZENsZWFyVGltZW91dCIsImRlZmF1bHRTZXRUaW1vdXQiLCJFcnJvciIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwiY3VycmVudFF1ZXVlIiwicXVldWUiLCJkcmFpbmluZyIsInF1ZXVlSW5kZXgiLCJjbGVhblVwTmV4dFRpY2siLCJjb25jYXQiLCJkcmFpblF1ZXVlIiwidGltZW91dCIsImxlbiIsInJ1biIsIm1hcmtlciIsInJ1bkNsZWFyVGltZW91dCIsIkl0ZW0iLCJhcnJheSIsIm5vb3AiLCJuZXh0VGljayIsImFyZ3VtZW50cyIsInB1c2giLCJhcHBseSIsInRpdGxlIiwiYnJvd3NlciIsImFyZ3YiLCJ2ZXJzaW9uIiwidmVyc2lvbnMiLCJvbmNlIiwib2ZmIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJlbWl0IiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsImxpc3RlbmVycyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsImRpciIsInVtYXNrIiwic2VsZWN0Q29sb3IiLCJoYXNoIiwiY2hhckNvZGVBdCIsImNyZWF0ZURlYnVnIiwiYWJzIiwicHJldlRpbWUiLCJlbmFibGVkIiwiY3VyciIsIkRhdGUiLCJwcmV2IiwiY29lcmNlIiwidW5zaGlmdCIsImZvcm1hdCIsImZvcm1hdHRlciIsInZhbCIsImRlc3Ryb3kiLCJpbml0IiwiaW5zdGFuY2VzIiwiaW5kZXhPZiIsImRlbGltaXRlciIsIm5ld0RlYnVnIiwidG9OYW1lc3BhY2UiLCJyZWdleHAiLCJzdWJzdHJpbmciLCJkZWZhdWx0Iiwic3RhY2siLCJkaXNhYmxlIiwibmFtZXMiLCJza2lwcyIsImVuYWJsZSIsInNwbGl0Iiwic3Vic3RyIiwiaW5zdGFuY2UiLCJrZXlzIiwiaCIsInciLCJwbHVyYWwiLCJtc0FicyIsImlzUGx1cmFsIiwic3RyIiwiU3RyaW5nIiwiZXhlYyIsInBhcnNlRmxvYXQiLCJpc05hTiIsImxvbmciLCJmbXRMb25nIiwiZm10U2hvcnQiXSwibWFwcGluZ3MiOiJhQUNBLElBQUFBLEVBQUEsR0FHQSxTQUFBQyxFQUFBQyxHQUdBLEdBQUFGLEVBQUFFLEdBQ0EsT0FBQUYsRUFBQUUsR0FBQUMsUUFHQSxJQUFBQyxFQUFBSixFQUFBRSxHQUFBLENBQ0FHLEVBQUFILEVBQ0FJLEdBQUEsRUFDQUgsUUFBQSxJQVVBLE9BTkFJLEVBQUFMLEdBQUFNLEtBQUFKLEVBQUFELFFBQUFDLElBQUFELFFBQUFGLEdBR0FHLEVBQUFFLEdB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cmlwdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA0KTtcbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgJ2FmJzogeyBsYWJlbDogJ0FmcmlrYWFucycsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ3NxJzogeyBsYWJlbDogJ0FsYmFuaWFuJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnYXInOiB7IGxhYmVsOiAnQXJhYmljJywgZGlyZWN0aW9uOiAncnRsJyB9LFxuICAnaHknOiB7IGxhYmVsOiAnQXJtZW5pYW4nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdheic6IHsgbGFiZWw6ICdBemVyYmFpamFuaScsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ2V1JzogeyBsYWJlbDogJ0Jhc3F1ZScsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ2JlJzogeyBsYWJlbDogJ0JlbGFydXNpYW4nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdibic6IHsgbGFiZWw6ICdCZW5nYWxpJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnYmcnOiB7IGxhYmVsOiAnQnVsZ2FyaWFuJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnY2EnOiB7IGxhYmVsOiAnQ2F0YWxhbicsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ3poLUNOJzogeyBsYWJlbDogJ0NoaW5lc2UgKFNpbXBsaWZpZWQpJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnemgtVFcnOiB7IGxhYmVsOiAnQ2hpbmVzZSAoVHJhZGl0aW9uYWwpJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnaHInOiB7IGxhYmVsOiAnQ3JvYXRpYW4nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdjcyc6IHsgbGFiZWw6ICdDemVjaCcsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ2RhJzogeyBsYWJlbDogJ0RhbmlzaCcsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ25sJzogeyBsYWJlbDogJ0R1dGNoJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnZW4nOiB7IGxhYmVsOiAnRW5nbGlzaCcsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ2VvJzogeyBsYWJlbDogJ0VzcGVyYW50bycsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ2V0JzogeyBsYWJlbDogJ0VzdG9uaWFuJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAndGwnOiB7IGxhYmVsOiAnRmlsaXBpbm8nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdmaSc6IHsgbGFiZWw6ICdGaW5uaXNoJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnZnInOiB7IGxhYmVsOiAnRnJlbmNoJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnZ2wnOiB7IGxhYmVsOiAnR2FsaWNpYW4nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdrYSc6IHsgbGFiZWw6ICdHZW9yZ2lhbicsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ2RlJzogeyBsYWJlbDogJ0dlcm1hbicsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ2VsJzogeyBsYWJlbDogJ0dyZWVrJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnZ3UnOiB7IGxhYmVsOiAnR3VqYXJhdGknLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdodCc6IHsgbGFiZWw6ICdIYWl0aWFuIChDcmVvbGUpJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnaXcnOiB7IGxhYmVsOiAnSGVicmV3JywgZGlyZWN0aW9uOiAncnRsJyB9LFxuICAnaGknOiB7IGxhYmVsOiAnSGluZGknLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdodSc6IHsgbGFiZWw6ICdIdW5nYXJpYW4nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdpcyc6IHsgbGFiZWw6ICdJY2VsYW5kaWMnLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdpZCc6IHsgbGFiZWw6ICdJbmRvbmVzaWFuJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnZ2EnOiB7IGxhYmVsOiAnSXJpc2gnLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdpdCc6IHsgbGFiZWw6ICdJdGFsaWFuJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnamEnOiB7IGxhYmVsOiAnSmFwYW5lc2UnLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdrbic6IHsgbGFiZWw6ICdLYW5uYWRhJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAna28nOiB7IGxhYmVsOiAnS29yZWFuJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnbGEnOiB7IGxhYmVsOiAnTGF0aW4nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdsdic6IHsgbGFiZWw6ICdMYXR2aWFuJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnbHQnOiB7IGxhYmVsOiAnTGl0aHVhbmlhbicsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ21rJzogeyBsYWJlbDogJ01hY2Vkb25pYW4nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdtcyc6IHsgbGFiZWw6ICdNYWxheScsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ210JzogeyBsYWJlbDogJ01hbHRlc2UnLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdubyc6IHsgbGFiZWw6ICdOb3J3ZWdpYW4nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdmYSc6IHsgbGFiZWw6ICdQZXJzaWFuJywgZGlyZWN0aW9uOiAncnRsJyB9LFxuICAncGwnOiB7IGxhYmVsOiAnUG9saXNoJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAncHQnOiB7IGxhYmVsOiAnUG9ydHVndWVzZScsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ3JvJzogeyBsYWJlbDogJ1JvbWFuaWFuJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAncnUnOiB7IGxhYmVsOiAnUnVzc2lhbicsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ3NyJzogeyBsYWJlbDogJ1NlcmJpYW4nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdzayc6IHsgbGFiZWw6ICdTbG92YWsnLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdzbCc6IHsgbGFiZWw6ICdTbG92ZW5pYW4nLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdlcyc6IHsgbGFiZWw6ICdTcGFuaXNoJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAnc3cnOiB7IGxhYmVsOiAnU3dhaGlsaScsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ3N2JzogeyBsYWJlbDogJ1N3ZWRpc2gnLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICd0YSc6IHsgbGFiZWw6ICdUYW1pbCcsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ3RlJzogeyBsYWJlbDogJ1RlbHVndScsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ3RoJzogeyBsYWJlbDogJ1RoYWknLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICd0cic6IHsgbGFiZWw6ICdUdXJraXNoJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAndWsnOiB7IGxhYmVsOiAnVWtyYWluaWFuJywgZGlyZWN0aW9uOiAnbHRyJyB9LFxuICAndXInOiB7IGxhYmVsOiAnVXJkdScsIGRpcmVjdGlvbjogJ3J0bCcgfSxcbiAgJ3ZpJzogeyBsYWJlbDogJ1ZpZXRuYW1lc2UnLCBkaXJlY3Rpb246ICdsdHInIH0sXG4gICdjeSc6IHsgbGFiZWw6ICdXZWxzaCcsIGRpcmVjdGlvbjogJ2x0cicgfSxcbiAgJ3lpJzogeyBsYWJlbDogJ1lpZGRpc2gnLCBkaXJlY3Rpb246ICdydGwnIH1cbn1cbiIsImltcG9ydCBUcmFuc092ZXJMYW5ndWFnZXMgZnJvbSAnLi9sYW5ndWFnZXMnXG5cbmNvbnN0IFRyYW5zT3ZlciA9IHt9XG5cblRyYW5zT3Zlci5tb2RpZmllcktleXMgPSB7XG4gIDE2OiAnc2hpZnQnLCAxNzogJ2N0cmwnLCAxODogJ2FsdCcsIDIyNDogJ21ldGEnLCA5MTogJ2NvbW1hbmQnLCA5MzogJ2NvbW1hbmQnLCAxMzogJ1JldHVybidcbn1cblxuVHJhbnNPdmVyLmRlc2VyaWFsaXplID0gZnVuY3Rpb24odGV4dCkge1xuICBsZXQgcmVzXG5cbiAgdHJ5IHtcbiAgICByZXMgPSBKU09OLnBhcnNlKHRleHQpXG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICAvLyB0aGF0IG1lYW5zIHRleHQgaXMgYSBzdHJpbmcgKGluY2x1ZGluZyBcIlwiKSBhcyBvcHBvc2VkIHRvIGEgc2VyaWFsaXplZCBvYmplY3RcbiAgICBpZiAoZS50b1N0cmluZygpLm1hdGNoKC9TeW50YXhFcnJvci8pKSB7XG4gICAgICByZXMgPSB0ZXh0XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cblRyYW5zT3Zlci5mb3JtYXRUcmFuc2xhdGlvbiA9IGZ1bmN0aW9uKHRyYW5zbGF0aW9uLCB0ZXh0RGlyZWN0aW9uLCBmcm9tX2xhbmcsIG9wdGlvbnMpIHtcbiAgbGV0IGZvcm1hdHRlZF90cmFuc2xhdGlvbiA9ICcnLFxuICAgIHJ0bCA9ICcnXG5cbiAgaWYgKHRleHREaXJlY3Rpb24gPT0gJ3J0bCcpIHtcbiAgICBydGwgPSAnIHJ0bCdcbiAgfVxuXG4gIGlmICh0cmFuc2xhdGlvbiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgdHJhbnNsYXRpb24uZm9yRWFjaChmdW5jdGlvbihwb3NfYmxvY2spIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZF9wb3MgPSBwb3NfYmxvY2sucG9zID8gJzxzdHJvbmc+Jytwb3NfYmxvY2sucG9zKyc8L3N0cm9uZz46ICcgOiAnJ1xuICAgICAgY29uc3QgZm9ybWF0dGVkX21lYW5pbmdzID0gcG9zX2Jsb2NrLm1lYW5pbmdzLnNsaWNlKDAsNSkuam9pbignLCAnKSArICggcG9zX2Jsb2NrLm1lYW5pbmdzLmxlbmd0aCA+IDUgPyAnLi4uJyA6ICcnIClcbiAgICAgIGZvcm1hdHRlZF90cmFuc2xhdGlvbiA9IGZvcm1hdHRlZF90cmFuc2xhdGlvbiArICc8ZGl2IGNsYXNzPVwicG9zX3RyYW5zbGF0aW9uICcgKyBydGwgKyAnXCI+JyArIGZvcm1hdHRlZF9wb3MgKyBmb3JtYXR0ZWRfbWVhbmluZ3MgKyAnPC9kaXY+J1xuICAgIH0pXG4gIH1cbiAgZWxzZSB7XG4gICAgZm9ybWF0dGVkX3RyYW5zbGF0aW9uID0gJzxkaXYgY2xhc3M9XCJwb3NfdHJhbnNsYXRpb24gJyArIHJ0bCArICdcIj4nICsgVHJhbnNPdmVyLmVzY2FwZV9odG1sKHRyYW5zbGF0aW9uKSArICc8L2Rpdj4nXG4gIH1cblxuICBjb25zdCBmcm9tTGFuZyA9IFRyYW5zT3Zlckxhbmd1YWdlc1tmcm9tX2xhbmddXG4gIGlmIChmcm9tTGFuZyAmJiBvcHRpb25zLnNob3dfZnJvbV9sYW5nKSB7XG4gICAgZm9ybWF0dGVkX3RyYW5zbGF0aW9uICs9IGBcbiAgICAgIDxkaXYgY2xhc3M9XCJmcm9tX2xhbmcgJHtydGx9XCI+XG4gICAgICAgIDxzdHJvbmc+dHJhbnNsYXRlZCBmcm9tOjwvc3Ryb25nPlxuICAgICAgICA8c3Bhbj4gJHtmcm9tTGFuZy5sYWJlbH08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICBgXG4gIH1cblxuICByZXR1cm4gZm9ybWF0dGVkX3RyYW5zbGF0aW9uXG59XG5cblRyYW5zT3Zlci5lc2NhcGVfaHRtbCA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZShYUmVnRXhwKCcoPHw+fCYpJywgJ2cnKSwgZnVuY3Rpb24gKCQwLCAkMSkge1xuICAgIHN3aXRjaCAoJDEpIHtcbiAgICBjYXNlICc8JzogcmV0dXJuICcmbHQ7J1xuICAgIGNhc2UgJz4nOiByZXR1cm4gJyZndDsnXG4gICAgY2FzZSAnJic6IHJldHVybiAnJmFtcDsnXG4gICAgfVxuICB9KVxufVxuXG5UcmFuc092ZXIucmVnZXhwX2VzY2FwZSA9IGZ1bmN0aW9uKHMpIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvWy0vXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpXG59XG5cbmV4cG9ydCBkZWZhdWx0IFRyYW5zT3ZlclxuIiwiaW1wb3J0IFRyYW5zT3ZlciBmcm9tICcuL2xpYi90cmFuc292ZXJfdXRpbHMnXG5pbXBvcnQgVHJhbnNPdmVyTGFuZ3VhZ2VzIGZyb20gJy4vbGliL2xhbmd1YWdlcydcbmNvbnN0IGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgndHJhbnNvdmVyJylcblxubGV0IG9wdGlvbnNcbmxldCBkaXNhYmxlX29uX3RoaXNfcGFnZVxuXG5mdW5jdGlvbiBjb3B5VG9DbGlwYm9hcmQodGV4dCkge1xuICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcbiAgaW5wdXQuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnXG4gIGlucHV0LnN0eWxlLm9wYWNpdHkgPSAwXG4gIGlucHV0LnZhbHVlID0gdGV4dFxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucHV0KVxuICBpbnB1dC5zZWxlY3QoKVxuICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpXG4gIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaW5wdXQpXG59XG5cbmZ1bmN0aW9uIGlnbm9yZVRoaXNQYWdlKG9wdGlvbnMpIHtcbiAgY29uc3QgaXNCbGFja2xpc3RlZCA9ICQuZ3JlcChvcHRpb25zLmV4Y2VwdF91cmxzLCBmdW5jdGlvbih1cmwpIHsgcmV0dXJuIFJlZ0V4cCh1cmwpLnRlc3Qod2luZG93LmxvY2F0aW9uLmhyZWYpIH0pLmxlbmd0aCA+IDBcbiAgY29uc3QgaXNXaGl0ZWxpc3RlZCA9ICQuZ3JlcChvcHRpb25zLm9ubHlfdXJscywgZnVuY3Rpb24odXJsKSB7IHJldHVybiBSZWdFeHAodXJsKS50ZXN0KHdpbmRvdy5sb2NhdGlvbi5ocmVmKSB9KS5sZW5ndGggPiAwIHx8XG4gICAgb3B0aW9ucy5vbmx5X3VybHMubGVuZ3RoID09PSAwXG5cbiAgcmV0dXJuIGlzQmxhY2tsaXN0ZWQgfHwgIWlzV2hpdGVsaXN0ZWRcbn1cblxuZnVuY3Rpb24gY3JlYXRlUG9wdXAobm9kZVR5cGUpIHtcbiAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRlbXBsYXRlc1t0ZW1wbGF0ZUlkc1tub2RlVHlwZV1dKVxuICByZXR1cm4gJCgnPCcrbm9kZVR5cGUrJz4nKVxufVxuXG5mdW5jdGlvbiByZW1vdmVQb3B1cChub2RlVHlwZSkge1xuICAkKG5vZGVUeXBlKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzXG4gICAgJCh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignbWFpbicpKS5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7IHNlbGYucmVtb3ZlKCkgfSlcbiAgfSlcbiAgJCgnIycrdGVtcGxhdGVJZHNbbm9kZVR5cGVdKS5yZW1vdmUoKVxufVxuXG5jb25zdCB0ZW1wbGF0ZXMgPSB7fVxuY29uc3QgdGVtcGxhdGVJZHMgPSB7XG4gICd0cmFuc292ZXItcG9wdXAnOiAndHJhbnNvdmVyLXBvcHVwLXRlbXBsYXRlJyxcbiAgJ3RyYW5zb3Zlci10eXBlLWFuZC10cmFuc2xhdGUtcG9wdXAnOiAndHJhbnNvdmVyLXRhdC1wb3B1cC10ZW1wbGF0ZSdcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJUcmFuc292ZXJDb21wb25lbnQoY29tcG9uZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBjb21wb25lbnQgKyAnLmh0bWwnXG4gIGNvbnN0IHNjcmlwdCA9IGNvbXBvbmVudCArICcuanMnXG5cbiAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcbiAgeGhyLm9wZW4oJ0dFVCcsIGNocm9tZS5leHRlbnNpb24uZ2V0VVJMKGh0bWwpLCB0cnVlKVxuICB4aHIucmVzcG9uc2VUeXBlID0gJ2RvY3VtZW50J1xuICB4aHIub25sb2FkID0gZnVuY3Rpb24oZSkge1xuICAgIGNvbnN0IGRvYyA9IGUudGFyZ2V0LnJlc3BvbnNlXG4gICAgY29uc3QgdGVtcGxhdGUgPSBkb2MucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKVxuICAgIHRlbXBsYXRlc1t0ZW1wbGF0ZS5pZF0gPSB0ZW1wbGF0ZVxuICB9XG4gIHhoci5zZW5kKClcblxuICBjb25zdCBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JylcbiAgcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCdcbiAgcy5zcmMgPSBjaHJvbWUuZXh0ZW5zaW9uLmdldFVSTChzY3JpcHQpXG4gIHMuYXN5bmMgPSB0cnVlXG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocylcbn1cblxubGV0IGxhc3RfdHJhbnNsYXRpb25cblxuZnVuY3Rpb24gc2hvd1BvcHVwKGUsIGNvbnRlbnQpIHtcbiAgcmVtb3ZlUG9wdXAoJ3RyYW5zb3Zlci10eXBlLWFuZC10cmFuc2xhdGUtcG9wdXAnKVxuXG4gIGNvbnN0ICRwb3B1cCA9IGNyZWF0ZVBvcHVwKCd0cmFuc292ZXItcG9wdXAnKVxuICAkKCdib2R5JykuYXBwZW5kKCRwb3B1cClcblxuICAkcG9wdXAub24oJ3RyYW5zb3Zlci1wb3B1cF9jb250ZW50X3VwZGF0ZWQnLCBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBwb3MgPSBjYWxjdWxhdGVQb3NpdGlvbihlLmNsaWVudFgsIGUuY2xpZW50WSwgJHBvcHVwKVxuICAgICRwb3B1cFxuICAgICAgLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICQodGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ21haW4nKSkuaGlkZSgpXG4gICAgICB9KVxuICAgICAgLmF0dHIoeyB0b3A6IHBvcy55LCBsZWZ0OiBwb3MueCB9KVxuICAgICAgLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICQodGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ21haW4nKSkuZmFkZUluKCdmYXN0JylcbiAgICAgIH0pXG4gIH0pXG4gICRwb3B1cC5hdHRyKCdjb250ZW50JywgY29udGVudClcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUG9zaXRpb24oeCwgeSwgJHBvcHVwKSB7XG4gIGNvbnN0IHBvcyA9IHt9XG4gIGNvbnN0IG1hcmdpbiA9IDVcbiAgY29uc3QgYW5jaG9yID0gMTBcbiAgY29uc3Qgb3V0ZXJXaWR0aCA9IE51bWJlcigkcG9wdXAuYXR0cignb3V0ZXItd2lkdGgnKSlcbiAgY29uc3Qgb3V0ZXJIZWlnaHQgPSBOdW1iZXIoJHBvcHVwLmF0dHIoJ291dGVyLWhlaWdodCcpKVxuXG4gIC8vIHNob3cgcG9wdXAgdG8gdGhlIHJpZ2h0IG9mIHRoZSB3b3JkIGlmIGl0IGZpdHMgaW50byB3aW5kb3cgdGhpcyB3YXlcbiAgaWYgKHggKyBhbmNob3IgKyBvdXRlcldpZHRoICsgbWFyZ2luIDwgJCh3aW5kb3cpLndpZHRoKCkpIHtcbiAgICBwb3MueCA9IHggKyBhbmNob3JcbiAgfVxuICAvLyBzaG93IHBvcHVwIHRvIHRoZSBsZWZ0IG9mIHRoZSB3b3JkIGlmIGl0IGZpdHMgaW50byB3aW5kb3cgdGhpcyB3YXlcbiAgZWxzZSBpZiAoeCAtIGFuY2hvciAtIG91dGVyV2lkdGggLSBtYXJnaW4gPiAwKSB7XG4gICAgcG9zLnggPSB4IC0gYW5jaG9yIC0gb3V0ZXJXaWR0aFxuICB9XG4gIC8vIHNob3cgcG9wdXAgYXQgdGhlIHZlcnkgbGVmdCBpZiBpdCBpcyBub3Qgd2lkZXIgdGhhbiB3aW5kb3dcbiAgZWxzZSBpZiAob3V0ZXJXaWR0aCArIG1hcmdpbioyIDwgJCh3aW5kb3cpLndpZHRoKCkpIHtcbiAgICBwb3MueCA9IG1hcmdpblxuICB9XG4gIC8vIHJlc2l6ZSBwb3B1cCB3aWR0aCB0byBmaXQgaW50byB3aW5kb3cgYW5kIHBvc2l0aW9uIGl0IHRoZSB2ZXJ5IGxlZnQgb2YgdGhlIHdpbmRvd1xuICBlbHNlIHtcbiAgICBjb25zdCBub25fY29udGVudF94ID0gb3V0ZXJXaWR0aCAtIE51bWJlcigkcG9wdXAuYXR0cignY29udGVudC13aWR0aCcpKVxuXG4gICAgJHBvcHVwLmF0dHIoJ2NvbnRlbnQtd2lkdGgnLCAkKHdpbmRvdykud2lkdGgoKSAtIG1hcmdpbioyIC0gbm9uX2NvbnRlbnRfeCApXG4gICAgJHBvcHVwLmF0dHIoJ2NvbnRlbnQtaGVpZ2h0JywgTnVtYmVyKCRwb3B1cC5hdHRyKCdjb250ZW50LWhlaWdodCcpKSArIDQpXG5cbiAgICBwb3MueCA9IG1hcmdpblxuICB9XG5cbiAgLy8gc2hvdyBwb3B1cCBhYm92ZSB0aGUgd29yZCBpZiBpdCBmaXRzIGludG8gd2luZG93IHRoaXMgd2F5XG4gIGlmICh5IC0gYW5jaG9yIC0gb3V0ZXJIZWlnaHQgLSBtYXJnaW4gPiAwKSB7XG4gICAgcG9zLnkgPSB5IC0gYW5jaG9yIC0gb3V0ZXJIZWlnaHRcbiAgfVxuICAvLyBzaG93IHBvcHVwIGJlbG93IHRoZSB3b3JkIGlmIGl0IGZpdHMgaW50byB3aW5kb3cgdGhpcyB3YXlcbiAgZWxzZSBpZiAoeSArIGFuY2hvciArIG91dGVySGVpZ2h0ICsgbWFyZ2luIDwgJCh3aW5kb3cpLmhlaWdodCgpKSB7XG4gICAgcG9zLnkgPSB5ICsgYW5jaG9yXG4gIH1cbiAgLy8gc2hvdyBwb3B1cCBhdCB0aGUgdmVyeSB0b3Agb2YgdGhlIHdpbmRvd1xuICBlbHNlIHtcbiAgICBwb3MueSA9IG1hcmdpblxuICB9XG5cbiAgcmV0dXJuIHBvc1xufVxuXG5jaHJvbWUuZXh0ZW5zaW9uLnNlbmRSZXF1ZXN0KHtoYW5kbGVyOiAnZ2V0X29wdGlvbnMnfSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgb3B0aW9ucyA9IEpTT04ucGFyc2UoIHJlc3BvbnNlLm9wdGlvbnMgKVxuICBkaXNhYmxlX29uX3RoaXNfcGFnZSA9IGlnbm9yZVRoaXNQYWdlKG9wdGlvbnMpXG4gIGNocm9tZS5leHRlbnNpb24uc2VuZFJlcXVlc3Qoe2hhbmRsZXI6ICdzZXRJY29uJywgZGlzYWJsZWQ6IGRpc2FibGVfb25fdGhpc19wYWdlfSlcbn0pXG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gIGlmICghZG9jdW1lbnQuaGlkZGVuKSB7XG4gICAgY2hyb21lLmV4dGVuc2lvbi5zZW5kUmVxdWVzdCh7aGFuZGxlcjogJ2dldF9vcHRpb25zJ30sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICBvcHRpb25zID0gSlNPTi5wYXJzZSggcmVzcG9uc2Uub3B0aW9ucyApXG4gICAgICBkaXNhYmxlX29uX3RoaXNfcGFnZSA9IGlnbm9yZVRoaXNQYWdlKG9wdGlvbnMpXG4gICAgICBjaHJvbWUuZXh0ZW5zaW9uLnNlbmRSZXF1ZXN0KHtoYW5kbGVyOiAnc2V0SWNvbicsIGRpc2FibGVkOiBkaXNhYmxlX29uX3RoaXNfcGFnZX0pXG4gICAgfSlcbiAgfVxufSwgZmFsc2UpXG5cbmZ1bmN0aW9uIHByb2Nlc3MoZSkge1xuXG4gIGZ1bmN0aW9uIGdldEhpdFdvcmQoZSkge1xuXG4gICAgZnVuY3Rpb24gcmVzdG9yYWJsZShub2RlLCBkb19zdHVmZikge1xuICAgICAgJChub2RlKS53cmFwKCc8dHJhbnN3cmFwcGVyIC8+JylcbiAgICAgIGNvbnN0IHJlcyA9IGRvX3N0dWZmKG5vZGUpXG4gICAgICAkKCd0cmFuc3dyYXBwZXInKS5yZXBsYWNlV2l0aChUcmFuc092ZXIuZXNjYXBlX2h0bWwoICQoJ3RyYW5zd3JhcHBlcicpLnRleHQoKSApKVxuICAgICAgcmV0dXJuIHJlc1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEV4YWN0VGV4dE5vZGUobm9kZXMsIGUpIHtcbiAgICAgICQodGV4dF9ub2Rlcykud3JhcCgnPHRyYW5zYmxvY2sgLz4nKVxuICAgICAgbGV0IGhpdF90ZXh0X25vZGUgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUuY2xpZW50WCwgZS5jbGllbnRZKVxuXG4gICAgICAvL21lYW5zIHdlIGhpdCBiZXR3ZWVuIHRoZSBsaW5lc1xuICAgICAgaWYgKGhpdF90ZXh0X25vZGUubm9kZU5hbWUgIT0gJ1RSQU5TQkxPQ0snKSB7XG4gICAgICAgICQodGV4dF9ub2RlcykudW53cmFwKClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgaGl0X3RleHRfbm9kZSA9IGhpdF90ZXh0X25vZGUuY2hpbGROb2Rlc1swXVxuXG4gICAgICAkKHRleHRfbm9kZXMpLnVud3JhcCgpXG5cbiAgICAgIHJldHVybiBoaXRfdGV4dF9ub2RlXG4gICAgfVxuXG4gICAgY29uc3QgaGl0X2VsZW0gPSAkKGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpKVxuICAgIGNvbnN0IHdvcmRfcmUgPSAnXFxcXHB7TH0rKD86W1xcJ+KAmV1cXFxccHtMfSspKidcbiAgICBjb25zdCBwYXJlbnRfZm9udF9zdHlsZSA9IHtcbiAgICAgICdsaW5lLWhlaWdodCc6IGhpdF9lbGVtLmNzcygnbGluZS1oZWlnaHQnKSxcbiAgICAgICdmb250LXNpemUnOiAnMWVtJyxcbiAgICAgICdmb250LWZhbWlseSc6IGhpdF9lbGVtLmNzcygnZm9udC1mYW1pbHknKVxuICAgIH1cblxuICAgIGNvbnN0IHRleHRfbm9kZXMgPSBoaXRfZWxlbS5jb250ZW50cygpLmZpbHRlcihmdW5jdGlvbigpe1xuICAgICAgcmV0dXJuIHRoaXMubm9kZVR5cGUgPT0gTm9kZS5URVhUX05PREUgJiYgWFJlZ0V4cCh3b3JkX3JlKS50ZXN0KCB0aGlzLm5vZGVWYWx1ZSApXG4gICAgfSlcblxuICAgIGlmICh0ZXh0X25vZGVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICBkZWJ1Zygnbm8gdGV4dCcpXG4gICAgICByZXR1cm4gJydcbiAgICB9XG5cbiAgICBjb25zdCBoaXRfdGV4dF9ub2RlID0gZ2V0RXhhY3RUZXh0Tm9kZSh0ZXh0X25vZGVzLCBlKVxuICAgIGlmICghaGl0X3RleHRfbm9kZSkge1xuICAgICAgZGVidWcoJ2hpdCBiZXR3ZWVuIGxpbmVzJylcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cblxuICAgIGNvbnN0IGhpdF93b3JkID0gcmVzdG9yYWJsZShoaXRfdGV4dF9ub2RlLCBmdW5jdGlvbigpIHtcbiAgICAgIGxldCBodyA9ICcnXG5cbiAgICAgIGZ1bmN0aW9uIGdldEhpdFRleHQobm9kZSwgcGFyZW50X2ZvbnRfc3R5bGUpIHtcbiAgICAgICAgZGVidWcoJ2dldEhpdFRleHQ6IFxcJycgKyBub2RlLnRleHRDb250ZW50ICsgJ1xcJycpXG5cbiAgICAgICAgaWYgKFhSZWdFeHAod29yZF9yZSkudGVzdCggbm9kZS50ZXh0Q29udGVudCApKSB7XG4gICAgICAgICAgJChub2RlKS5yZXBsYWNlV2l0aChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHRDb250ZW50LnJlcGxhY2UoWFJlZ0V4cCgnXigueycrTWF0aC5yb3VuZCggbm9kZS50ZXh0Q29udGVudC5sZW5ndGgvMiApKyd9KD86XFxcXHB7TH18W1xcJ+KAmV0oPz1cXFxccHtMfSkpKikoLiopJywgJ3MnKSwgZnVuY3Rpb24oJDAsICQxLCAkMikge1xuICAgICAgICAgICAgICByZXR1cm4gJzx0cmFuc2Jsb2NrPicrVHJhbnNPdmVyLmVzY2FwZV9odG1sKCQxKSsnPC90cmFuc2Jsb2NrPjx0cmFuc2Jsb2NrPicrVHJhbnNPdmVyLmVzY2FwZV9odG1sKCQyKSsnPC90cmFuc2Jsb2NrPidcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcblxuICAgICAgICAgICQoJ3RyYW5zYmxvY2snKS5jc3MocGFyZW50X2ZvbnRfc3R5bGUpXG5cbiAgICAgICAgICBjb25zdCBuZXh0X25vZGUgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUuY2xpZW50WCwgZS5jbGllbnRZKS5jaGlsZE5vZGVzWzBdXG5cbiAgICAgICAgICBpZiAobmV4dF9ub2RlLnRleHRDb250ZW50ID09IG5vZGUudGV4dENvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0X25vZGVcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0SGl0VGV4dChuZXh0X25vZGUsIHBhcmVudF9mb250X3N0eWxlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1pbmltYWxfdGV4dF9ub2RlID0gZ2V0SGl0VGV4dChoaXRfdGV4dF9ub2RlLCBwYXJlbnRfZm9udF9zdHlsZSlcblxuICAgICAgaWYgKG1pbmltYWxfdGV4dF9ub2RlKSB7XG4gICAgICAgIC8vd3JhcCB3b3JkcyBpbnNpZGUgdGV4dCBub2RlIGludG8gPHRyYW5zb3Zlcj4gZWxlbWVudFxuICAgICAgICAkKG1pbmltYWxfdGV4dF9ub2RlKS5yZXBsYWNlV2l0aChmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0Q29udGVudC5yZXBsYWNlKFhSZWdFeHAoJyg8fD58JnwnK3dvcmRfcmUrJyknLCAnZ3MnKSwgZnVuY3Rpb24gKCQwLCAkMSkge1xuICAgICAgICAgICAgc3dpdGNoICgkMSkge1xuICAgICAgICAgICAgY2FzZSAnPCc6IHJldHVybiAnJmx0OydcbiAgICAgICAgICAgIGNhc2UgJz4nOiByZXR1cm4gJyZndDsnXG4gICAgICAgICAgICBjYXNlICcmJzogcmV0dXJuICcmYW1wOydcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAnPHRyYW5zb3Zlcj4nKyQxKyc8L3RyYW5zb3Zlcj4nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcblxuICAgICAgICAkKCd0cmFuc292ZXInKS5jc3MocGFyZW50X2ZvbnRfc3R5bGUpXG5cbiAgICAgICAgLy9nZXQgdGhlIGV4YWN0IHdvcmQgdW5kZXIgY3Vyc29yXG4gICAgICAgIGNvbnN0IGhpdF93b3JkX2VsZW0gPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUuY2xpZW50WCwgZS5jbGllbnRZKVxuXG4gICAgICAgIC8vbm8gd29yZCB1bmRlciBjdXJzb3I/IHdlIGFyZSBkb25lXG4gICAgICAgIGlmIChoaXRfd29yZF9lbGVtLm5vZGVOYW1lICE9ICdUUkFOU09WRVInKSB7XG4gICAgICAgICAgZGVidWcoJ21pc3NlZCEnKVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgIHtcbiAgICAgICAgICBodyA9ICQoaGl0X3dvcmRfZWxlbSkudGV4dCgpXG4gICAgICAgICAgZGVidWcoJ2dvdCBpdDogXFwnJytodysnXFwnJylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaHdcbiAgICB9KVxuXG4gICAgcmV0dXJuIGhpdF93b3JkXG4gIH1cblxuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgY29uc3QgaGl0X2VsZW0gPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUuY2xpZW50WCwgZS5jbGllbnRZKVxuXG4gIC8vIGhhcHBlbnMgc29tZXRpbWVzIG9uIHBhZ2UgcmVzaXplIChJIHRoaW5rKVxuICBpZiAoIWhpdF9lbGVtKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvL3NraXAgaW5wdXRzIGFuZCBlZGl0YWJsZSBkaXZzXG4gIGlmICgvSU5QVVR8VEVYVEFSRUEvLnRlc3QoIGhpdF9lbGVtLm5vZGVOYW1lICkgfHwgaGl0X2VsZW0uaXNDb250ZW50RWRpdGFibGVcbiAgICAgIHx8ICQoaGl0X2VsZW0pLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLmlzQ29udGVudEVkaXRhYmxlIH0pLmxlbmd0aCA+IDApIHtcblxuICAgIHJldHVyblxuICB9XG5cbiAgbGV0IHdvcmQgPSAnJ1xuICBpZiAoc2VsZWN0aW9uLnRvU3RyaW5nKCkpIHtcblxuICAgIGlmIChvcHRpb25zLnNlbGVjdGlvbl9rZXlfb25seSkge1xuICAgICAgZGVidWcoJ1NraXAgYmVjYXVzZSBcInNlbGVjdGlvbl9rZXlfb25seVwiJylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGRlYnVnKCdHb3Qgc2VsZWN0aW9uOiAnICsgc2VsZWN0aW9uLnRvU3RyaW5nKCkpXG5cbiAgICBsZXQgc2VsX2NvbnRhaW5lciA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyXG5cbiAgICB3aGlsZSAoc2VsX2NvbnRhaW5lci5ub2RlVHlwZSAhPSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgc2VsX2NvbnRhaW5lciA9IHNlbF9jb250YWluZXIucGFyZW50Tm9kZVxuICAgIH1cblxuICAgIGlmIChcbiAgICAvLyBvbmx5IGNob29zZSBzZWxlY3Rpb24gaWYgbW91c2Ugc3RvcHBlZCB3aXRoaW4gaW1tZWRpYXRlIHBhcmVudCBvZiBzZWxlY3Rpb25cbiAgICAgICggJChoaXRfZWxlbSkuaXMoc2VsX2NvbnRhaW5lcikgfHwgJC5jb250YWlucyhzZWxfY29udGFpbmVyLCBoaXRfZWxlbSkgKVxuICAgICAgICAvLyBhbmQgc2luY2UgaXQgY2FuIHN0aWxsIGJlIHF1aXRlIGEgbGFyZ2UgYXJlYVxuICAgICAgICAvLyBuYXJyb3cgaXQgZG93biBieSBvbmx5IGNob29zaW5nIHNlbGVjdGlvbiBpZiBtb3VzZSBwb2ludHMgYXQgdGhlIGVsZW1lbnQgdGhhdCBpcyAocGFydGlhbGx5KSBpbnNpZGUgc2VsZWN0aW9uXG4gICAgICAgICYmIHNlbGVjdGlvbi5jb250YWluc05vZGUoaGl0X2VsZW0sIHRydWUpXG4gICAgICAgIC8vIEJ1dCB3aGF0IGlzIHRoZSBwb2ludCBmb3IgdGhlIGZpcnN0IHBhcnQgb2YgY29uZGl0aW9uPyBXZWxsLCB3aXRob3V0IGl0LCBwb2ludGluZyBhdCBib2R5IGZvciBpbnN0YW5jZSB3b3VsZCBhbHNvIHNhdGlzZnkgdGhlIHNlY29uZCBwYXJ0XG4gICAgICAgIC8vIHJlc3VsdGluZyBpbiBzZWxlY3Rpb24gdHJhbnNsYXRpb24gc2hvd2luZyB1cCBpbiByYW5kb20gcGxhY2VzXG4gICAgKSB7XG4gICAgICB3b3JkID0gc2VsZWN0aW9uLnRvU3RyaW5nKClcbiAgICB9XG4gICAgZWxzZSBpZiAob3B0aW9ucy50cmFuc2xhdGVfYnkgPT0gJ3BvaW50Jykge1xuICAgICAgd29yZCA9IGdldEhpdFdvcmQoZSlcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgd29yZCA9IGdldEhpdFdvcmQoZSlcbiAgfVxuICBpZiAod29yZCAhPSAnJykge1xuICAgIGNocm9tZS5leHRlbnNpb24uc2VuZFJlcXVlc3Qoe2hhbmRsZXI6ICd0cmFuc2xhdGUnLCB3b3JkOiB3b3JkfSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgIGRlYnVnKCdyZXNwb25zZTogJywgcmVzcG9uc2UpXG5cbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gVHJhbnNPdmVyLmRlc2VyaWFsaXplKHJlc3BvbnNlLnRyYW5zbGF0aW9uKVxuXG4gICAgICBpZiAoIXRyYW5zbGF0aW9uKSB7XG4gICAgICAgIGRlYnVnKCdza2lwcGluZyBlbXB0eSB0cmFuc2xhdGlvbicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsYXN0X3RyYW5zbGF0aW9uID0gdHJhbnNsYXRpb25cbiAgICAgIHNob3dQb3B1cChlLCBUcmFuc092ZXIuZm9ybWF0VHJhbnNsYXRpb24odHJhbnNsYXRpb24sIFRyYW5zT3Zlckxhbmd1YWdlc1tyZXNwb25zZS50bF0uZGlyZWN0aW9uLCByZXNwb25zZS5zbCwgb3B0aW9ucykpXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiB3aXRoT3B0aW9uc1NhdGlzZmllZChlLCBkb19zdHVmZikge1xuICBpZiAob3B0aW9ucy50YXJnZXRfbGFuZykge1xuICAgIC8vcmVzcGVjdCAndHJhbnNsYXRlIG9ubHkgd2hlbiBhbHQgcHJlc3NlZCcgb3B0aW9uXG4gICAgaWYgKG9wdGlvbnMud29yZF9rZXlfb25seSAmJiAhc2hvd19wb3B1cF9rZXlfcHJlc3NlZCkgcmV0dXJuXG5cbiAgICAvL3Jlc3BlY3QgXCJkb24ndCB0cmFuc2xhdGUgdGhlc2Ugc2l0ZXNcIlxuICAgIGlmIChkaXNhYmxlX29uX3RoaXNfcGFnZSkgcmV0dXJuXG5cbiAgICBkb19zdHVmZigpXG4gIH1cbn1cblxuJChkb2N1bWVudCkub24oJ21vdXNlc3RvcCcsIGZ1bmN0aW9uKGUpIHtcbiAgd2l0aE9wdGlvbnNTYXRpc2ZpZWQoZSwgZnVuY3Rpb24oKSB7XG4gICAgLy8gdHJhbnNsYXRlIHNlbGVjdGlvbiB1bmxlc3MgJ3RyYW5zbGF0ZSBzZWxlY3Rpb24gb24gYWx0IG9ubHknIGlzIHNldFxuICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSkge1xuICAgICAgaWYgKCFvcHRpb25zLnNlbGVjdGlvbl9rZXlfb25seSkge1xuICAgICAgICBwcm9jZXNzKGUpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcHRpb25zLnRyYW5zbGF0ZV9ieSA9PSAncG9pbnQnKSB7XG4gICAgICAgIHByb2Nlc3MoZSlcbiAgICAgIH1cbiAgICB9XG4gIH0pXG59KVxuXG4kKGRvY3VtZW50KS5jbGljayhmdW5jdGlvbihlKSB7XG4gIHdpdGhPcHRpb25zU2F0aXNmaWVkKGUsIGZ1bmN0aW9uKCkge1xuICAgIGlmIChvcHRpb25zLnRyYW5zbGF0ZV9ieSAhPSAnY2xpY2snKVxuICAgICAgcmV0dXJuXG4gICAgaWYgKCQoZS50YXJnZXQpLmNsb3Nlc3QoJ2EnKS5sZW5ndGggPiAwKVxuICAgICAgcmV0dXJuXG5cbiAgICBwcm9jZXNzKGUpXG4gIH0pXG4gIHJldHVybiB0cnVlXG59KVxuXG5sZXQgc2hvd19wb3B1cF9rZXlfcHJlc3NlZCA9IGZhbHNlXG4kKGRvY3VtZW50KS5rZXlkb3duKGZ1bmN0aW9uKGUpIHtcbiAgaWYgKFRyYW5zT3Zlci5tb2RpZmllcktleXNbZS5rZXlDb2RlXSA9PSBvcHRpb25zLnBvcHVwX3Nob3dfdHJpZ2dlcikge1xuICAgIHNob3dfcG9wdXBfa2V5X3ByZXNzZWQgPSB0cnVlXG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKVxuXG4gICAgaWYgKG9wdGlvbnMuc2VsZWN0aW9uX2tleV9vbmx5ICYmIHNlbGVjdGlvbikge1xuICAgICAgZGVidWcoJ0dvdCBzZWxlY3Rpb25fa2V5X29ubHknKVxuXG4gICAgICBjaHJvbWUuZXh0ZW5zaW9uLnNlbmRSZXF1ZXN0KHtoYW5kbGVyOiAndHJhbnNsYXRlJywgd29yZDogc2VsZWN0aW9ufSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgZGVidWcoJ3Jlc3BvbnNlOiAnLCByZXNwb25zZSlcblxuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IFRyYW5zT3Zlci5kZXNlcmlhbGl6ZShyZXNwb25zZS50cmFuc2xhdGlvbilcblxuICAgICAgICBpZiAoIXRyYW5zbGF0aW9uKSB7XG4gICAgICAgICAgZGVidWcoJ3NraXBwaW5nIGVtcHR5IHRyYW5zbGF0aW9uJylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHh5ID0geyBjbGllbnRYOiBsYXN0X21vdXNlX3N0b3AueCwgY2xpZW50WTogbGFzdF9tb3VzZV9zdG9wLnkgfVxuICAgICAgICBsYXN0X3RyYW5zbGF0aW9uID0gdHJhbnNsYXRpb25cbiAgICAgICAgc2hvd1BvcHVwKHh5LCBUcmFuc092ZXIuZm9ybWF0VHJhbnNsYXRpb24odHJhbnNsYXRpb24sIFRyYW5zT3Zlckxhbmd1YWdlc1tyZXNwb25zZS50bF0uZGlyZWN0aW9uLCByZXNwb25zZS5zbCwgb3B0aW9ucykpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIHRleHQtdG8tc3BlZWNoIG9uIGN0cmwgcHJlc3NcbiAgaWYgKCFlLm9yaWdpbmFsRXZlbnQucmVwZWF0ICYmIFRyYW5zT3Zlci5tb2RpZmllcktleXNbZS5rZXlDb2RlXSA9PSBvcHRpb25zLnR0c19rZXkgJiYgb3B0aW9ucy50dHMgJiYgJCgndHJhbnNvdmVyLXBvcHVwJykubGVuZ3RoID4gMCkge1xuICAgIGRlYnVnKCd0dHMnKVxuICAgIGNocm9tZS5leHRlbnNpb24uc2VuZFJlcXVlc3Qoe2hhbmRsZXI6ICd0dHMnfSlcbiAgfVxuXG4gIC8vIEhpZGUgdGF0IHBvcHVwIG9uIGVzY2FwZVxuICBpZiAoZS5rZXlDb2RlID09IDI3KSB7XG4gICAgcmVtb3ZlUG9wdXAoJ3RyYW5zb3Zlci10eXBlLWFuZC10cmFuc2xhdGUtcG9wdXAnKVxuICB9XG59KS5rZXl1cChmdW5jdGlvbihlKSB7XG4gIGlmIChUcmFuc092ZXIubW9kaWZpZXJLZXlzW2Uua2V5Q29kZV0gPT0gb3B0aW9ucy5wb3B1cF9zaG93X3RyaWdnZXIpIHtcbiAgICBzaG93X3BvcHVwX2tleV9wcmVzc2VkID0gZmFsc2VcbiAgfVxufSlcblxuZnVuY3Rpb24gaGFzTW91c2VSZWFsbHlNb3ZlZChlKSB7IC8vb3IgaXMgaXQgYSB0cmVtb3I/XG4gIGNvbnN0IGxlZnRfYm91bmRyeSA9IHBhcnNlSW50KGxhc3RfbW91c2Vfc3RvcC54KSAtIDUsXG4gICAgcmlnaHRfYm91bmRyeSAgPSBwYXJzZUludChsYXN0X21vdXNlX3N0b3AueCkgKyA1LFxuICAgIHRvcF9ib3VuZHJ5ICAgID0gcGFyc2VJbnQobGFzdF9tb3VzZV9zdG9wLnkpIC0gNSxcbiAgICBib3R0b21fYm91bmRyeSA9IHBhcnNlSW50KGxhc3RfbW91c2Vfc3RvcC55KSArIDVcblxuICByZXR1cm4gZS5jbGllbnRYID4gcmlnaHRfYm91bmRyeSB8fCBlLmNsaWVudFggPCBsZWZ0X2JvdW5kcnkgfHwgZS5jbGllbnRZID4gYm90dG9tX2JvdW5kcnkgfHwgZS5jbGllbnRZIDwgdG9wX2JvdW5kcnlcbn1cblxuJChkb2N1bWVudCkubW91c2Vtb3ZlKGZ1bmN0aW9uKGUpIHtcbiAgaWYgKGhhc01vdXNlUmVhbGx5TW92ZWQoZSkpIHtcbiAgICBjb25zdCBtb3VzZW1vdmVfd2l0aG91dF9ub2lzZSA9IG5ldyAkLkV2ZW50KCdtb3VzZW1vdmVfd2l0aG91dF9ub2lzZScpXG4gICAgbW91c2Vtb3ZlX3dpdGhvdXRfbm9pc2UuY2xpZW50WCA9IGUuY2xpZW50WFxuICAgIG1vdXNlbW92ZV93aXRob3V0X25vaXNlLmNsaWVudFkgPSBlLmNsaWVudFlcblxuICAgICQoZG9jdW1lbnQpLnRyaWdnZXIobW91c2Vtb3ZlX3dpdGhvdXRfbm9pc2UpXG4gIH1cbn0pXG5cbmxldCB0aW1lcjI1XG5jb25zdCBsYXN0X21vdXNlX3N0b3AgPSB7eDogMCwgeTogMH1cblxuJChkb2N1bWVudCkuc2Nyb2xsKGZ1bmN0aW9uKCkge1xuICByZW1vdmVQb3B1cCgndHJhbnNvdmVyLXBvcHVwJylcbn0pXG5cbi8vIHNldHVwIG1vdXNlc3RvcCBldmVudFxuJChkb2N1bWVudCkub24oJ21vdXNlbW92ZV93aXRob3V0X25vaXNlJywgZnVuY3Rpb24oZSl7XG4gIHJlbW92ZVBvcHVwKCd0cmFuc292ZXItcG9wdXAnKVxuXG4gIGNsZWFyVGltZW91dCh0aW1lcjI1KVxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgbGV0IGRlbGF5ID0gb3B0aW9ucy5kZWxheVxuXG4gICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpKSB7XG4gICAgICBpZiAob3B0aW9ucy5zZWxlY3Rpb25fa2V5X29ubHkpIHtcbiAgICAgICAgZGVsYXkgPSAyMDBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdGlvbnMud29yZF9rZXlfb25seSkge1xuICAgICAgICBkZWxheSA9IDIwMFxuICAgICAgfVxuICAgIH1cblxuICAgIHRpbWVyMjUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgY29uc3QgbW91c2VzdG9wID0gbmV3ICQuRXZlbnQoJ21vdXNlc3RvcCcpXG4gICAgICBsYXN0X21vdXNlX3N0b3AueCA9IG1vdXNlc3RvcC5jbGllbnRYID0gZS5jbGllbnRYXG4gICAgICBsYXN0X21vdXNlX3N0b3AueSA9IG1vdXNlc3RvcC5jbGllbnRZID0gZS5jbGllbnRZXG5cbiAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIobW91c2VzdG9wKVxuICAgIH0sIGRlbGF5KVxuICB9XG59KVxuXG5jaHJvbWUucnVudGltZS5vbk1lc3NhZ2UuYWRkTGlzdGVuZXIoXG4gIGZ1bmN0aW9uKHJlcXVlc3QpIHtcbiAgICBpZiAod2luZG93ICE9IHdpbmRvdy50b3ApIHJldHVyblxuXG4gICAgaWYgKHJlcXVlc3QgPT0gJ29wZW5fdHlwZV9hbmRfdHJhbnNsYXRlJykge1xuICAgICAgaWYgKCQoJ3RyYW5zb3Zlci10eXBlLWFuZC10cmFuc2xhdGUtcG9wdXAnKS5sZW5ndGggPT0gMCkge1xuICAgICAgICBjaHJvbWUuZXh0ZW5zaW9uLnNlbmRSZXF1ZXN0KHtoYW5kbGVyOiAnZ2V0X2xhc3RfdGF0X3NsX3RsJ30sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgJHBvcHVwID0gY3JlYXRlUG9wdXAoJ3RyYW5zb3Zlci10eXBlLWFuZC10cmFuc2xhdGUtcG9wdXAnKVxuICAgICAgICAgIGNvbnN0IGxhbmd1YWdlcyA9ICQuZXh0ZW5kKHt9LCBUcmFuc092ZXJMYW5ndWFnZXMpXG5cbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc2wpIHtcbiAgICAgICAgICAgIGxhbmd1YWdlc1tyZXNwb25zZS5zbF0uc2VsZWN0ZWRfc2wgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGxhbmd1YWdlc1tyZXNwb25zZS50YXN0X3RsIHx8IG9wdGlvbnMudGFyZ2V0X2xhbmddLnNlbGVjdGVkX3RsID0gdHJ1ZVxuXG4gICAgICAgICAgJHBvcHVwLmF0dHIoJ2RhdGEtbGFuZ3VhZ2VzJywgSlNPTi5zdHJpbmdpZnkobGFuZ3VhZ2VzKSlcbiAgICAgICAgICAkcG9wdXAuYXR0cignZGF0YS1kaXNhYmxlX29uX3RoaXNfcGFnZScsIGRpc2FibGVfb25fdGhpc19wYWdlKVxuICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoJHBvcHVwKVxuICAgICAgICAgICRwb3B1cC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgJCh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignbWFpbicpKS5oaWRlKCkuZmFkZUluKCdmYXN0JylcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJlbW92ZVBvcHVwKCd0cmFuc292ZXItdHlwZS1hbmQtdHJhbnNsYXRlLXBvcHVwJylcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlcXVlc3QgPT0gJ2NvcHktdHJhbnNsYXRpb24tdG8tY2xpcGJvYXJkJykge1xuICAgICAgZGVidWcoJ3JlY2VpdmVkIGNvcHktdHJhbnNsYXRpb24tdG8tY2xpcGJvYXJkJylcbiAgICAgIGlmICgkKCd0cmFuc292ZXItcG9wdXAnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCB0b0NsaXBib2FyZFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsYXN0X3RyYW5zbGF0aW9uKSkge1xuICAgICAgICAgIHRvQ2xpcGJvYXJkID0gbGFzdF90cmFuc2xhdGlvbi5tYXAodCA9PiB7XG4gICAgICAgICAgICBsZXQgbGluZSA9ICcnXG4gICAgICAgICAgICBpZiAodC5wb3MpIHtcbiAgICAgICAgICAgICAgbGluZSA9IHQucG9zICsgJzogJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZSA9IGxpbmUgKyB0Lm1lYW5pbmdzLnNsaWNlKDAsNSkuam9pbignLCAnKVxuICAgICAgICAgICAgcmV0dXJuIGxpbmVcbiAgICAgICAgICB9KS5qb2luKCc7ICcpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG9DbGlwYm9hcmQgPSBsYXN0X3RyYW5zbGF0aW9uXG4gICAgICAgIH1cbiAgICAgICAgY29weVRvQ2xpcGJvYXJkKHRvQ2xpcGJvYXJkKVxuICAgICAgfVxuICAgIH1cbiAgfVxuKVxuXG4kKGZ1bmN0aW9uKCkge1xuICByZWdpc3RlclRyYW5zb3ZlckNvbXBvbmVudCgncG9wdXAnKVxuICByZWdpc3RlclRyYW5zb3ZlckNvbXBvbmVudCgndGF0X3BvcHVwJylcbn0pXG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZSkge1xuICAvLyBXZSBvbmx5IGFjY2VwdCBtZXNzYWdlcyBmcm9tIG91cnNlbHZlc1xuICBpZiAoZS5zb3VyY2UgIT0gd2luZG93KVxuICAgIHJldHVyblxuXG4gIGlmIChlLmRhdGEudHlwZSA9PSAndHJhbnNvdmVyVHJhbnNsYXRlJykge1xuICAgIGNocm9tZS5leHRlbnNpb24uc2VuZFJlcXVlc3Qoe2hhbmRsZXI6ICd0cmFuc2xhdGUnLCB3b3JkOiBlLmRhdGEudGV4dCwgc2w6IGUuZGF0YS5zbCwgdGw6IGUuZGF0YS50bH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICBkZWJ1ZygndGF0IHJlc3BvbnNlOiAnLCByZXNwb25zZSlcblxuICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSBUcmFuc092ZXIuZGVzZXJpYWxpemUocmVzcG9uc2UudHJhbnNsYXRpb24pXG5cbiAgICAgIGlmICghdHJhbnNsYXRpb24pIHtcbiAgICAgICAgZGVidWcoJ3RhdCBza2lwcGluZyBlbXB0eSB0cmFuc2xhdGlvbicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBlID0geyBjbGllbnRYOiAkKHdpbmRvdykud2lkdGgoKSwgY2xpZW50WTogMCB9XG4gICAgICBsYXN0X3RyYW5zbGF0aW9uID0gdHJhbnNsYXRpb25cbiAgICAgIHNob3dQb3B1cChlLCBUcmFuc092ZXIuZm9ybWF0VHJhbnNsYXRpb24odHJhbnNsYXRpb24sIFRyYW5zT3Zlckxhbmd1YWdlc1tyZXNwb25zZS50bF0uZGlyZWN0aW9uLCByZXNwb25zZS5zbCwgb3B0aW9ucykpXG4gICAgfSlcbiAgfSBlbHNlIGlmIChlLmRhdGEudHlwZSA9PT0gJ3RvZ2dsZV9kaXNhYmxlX29uX3RoaXNfcGFnZScpIHtcbiAgICBkaXNhYmxlX29uX3RoaXNfcGFnZSA9IGUuZGF0YS5kaXNhYmxlX29uX3RoaXNfcGFnZVxuICAgIGNocm9tZS5leHRlbnNpb24uc2VuZFJlcXVlc3Qoe1xuICAgICAgaGFuZGxlcjogJ3RvZ2dsZV9kaXNhYmxlX29uX3RoaXNfcGFnZScsXG4gICAgICBkaXNhYmxlX29uX3RoaXNfcGFnZSxcbiAgICAgIGN1cnJlbnRfdXJsOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICAgfSlcbiAgICBjaHJvbWUuZXh0ZW5zaW9uLnNlbmRSZXF1ZXN0KHtoYW5kbGVyOiAnc2V0SWNvbicsIGRpc2FibGVkOiBkaXNhYmxlX29uX3RoaXNfcGFnZX0pXG4gICAgcmVtb3ZlUG9wdXAoJ3RyYW5zb3Zlci10eXBlLWFuZC10cmFuc2xhdGUtcG9wdXAnKVxuICB9IGVsc2UgaWYgKGUuZGF0YS50eXBlID09PSAndGF0X2Nsb3NlJykge1xuICAgIHJlbW92ZVBvcHVwKCd0cmFuc292ZXItdHlwZS1hbmQtdHJhbnNsYXRlLXBvcHVwJylcbiAgfVxufSlcbiIsIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG4vKipcbiAqIFRoaXMgaXMgdGhlIHdlYiBicm93c2VyIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqL1xuXG5leHBvcnRzLmxvZyA9IGxvZztcbmV4cG9ydHMuZm9ybWF0QXJncyA9IGZvcm1hdEFyZ3M7XG5leHBvcnRzLnNhdmUgPSBzYXZlO1xuZXhwb3J0cy5sb2FkID0gbG9hZDtcbmV4cG9ydHMudXNlQ29sb3JzID0gdXNlQ29sb3JzO1xuZXhwb3J0cy5zdG9yYWdlID0gbG9jYWxzdG9yYWdlKCk7XG5cbi8qKlxuICogQ29sb3JzLlxuICovXG5cbmV4cG9ydHMuY29sb3JzID0gW1xuXHQnIzAwMDBDQycsXG5cdCcjMDAwMEZGJyxcblx0JyMwMDMzQ0MnLFxuXHQnIzAwMzNGRicsXG5cdCcjMDA2NkNDJyxcblx0JyMwMDY2RkYnLFxuXHQnIzAwOTlDQycsXG5cdCcjMDA5OUZGJyxcblx0JyMwMENDMDAnLFxuXHQnIzAwQ0MzMycsXG5cdCcjMDBDQzY2Jyxcblx0JyMwMENDOTknLFxuXHQnIzAwQ0NDQycsXG5cdCcjMDBDQ0ZGJyxcblx0JyMzMzAwQ0MnLFxuXHQnIzMzMDBGRicsXG5cdCcjMzMzM0NDJyxcblx0JyMzMzMzRkYnLFxuXHQnIzMzNjZDQycsXG5cdCcjMzM2NkZGJyxcblx0JyMzMzk5Q0MnLFxuXHQnIzMzOTlGRicsXG5cdCcjMzNDQzAwJyxcblx0JyMzM0NDMzMnLFxuXHQnIzMzQ0M2NicsXG5cdCcjMzNDQzk5Jyxcblx0JyMzM0NDQ0MnLFxuXHQnIzMzQ0NGRicsXG5cdCcjNjYwMENDJyxcblx0JyM2NjAwRkYnLFxuXHQnIzY2MzNDQycsXG5cdCcjNjYzM0ZGJyxcblx0JyM2NkNDMDAnLFxuXHQnIzY2Q0MzMycsXG5cdCcjOTkwMENDJyxcblx0JyM5OTAwRkYnLFxuXHQnIzk5MzNDQycsXG5cdCcjOTkzM0ZGJyxcblx0JyM5OUNDMDAnLFxuXHQnIzk5Q0MzMycsXG5cdCcjQ0MwMDAwJyxcblx0JyNDQzAwMzMnLFxuXHQnI0NDMDA2NicsXG5cdCcjQ0MwMDk5Jyxcblx0JyNDQzAwQ0MnLFxuXHQnI0NDMDBGRicsXG5cdCcjQ0MzMzAwJyxcblx0JyNDQzMzMzMnLFxuXHQnI0NDMzM2NicsXG5cdCcjQ0MzMzk5Jyxcblx0JyNDQzMzQ0MnLFxuXHQnI0NDMzNGRicsXG5cdCcjQ0M2NjAwJyxcblx0JyNDQzY2MzMnLFxuXHQnI0NDOTkwMCcsXG5cdCcjQ0M5OTMzJyxcblx0JyNDQ0NDMDAnLFxuXHQnI0NDQ0MzMycsXG5cdCcjRkYwMDAwJyxcblx0JyNGRjAwMzMnLFxuXHQnI0ZGMDA2NicsXG5cdCcjRkYwMDk5Jyxcblx0JyNGRjAwQ0MnLFxuXHQnI0ZGMDBGRicsXG5cdCcjRkYzMzAwJyxcblx0JyNGRjMzMzMnLFxuXHQnI0ZGMzM2NicsXG5cdCcjRkYzMzk5Jyxcblx0JyNGRjMzQ0MnLFxuXHQnI0ZGMzNGRicsXG5cdCcjRkY2NjAwJyxcblx0JyNGRjY2MzMnLFxuXHQnI0ZGOTkwMCcsXG5cdCcjRkY5OTMzJyxcblx0JyNGRkNDMDAnLFxuXHQnI0ZGQ0MzMydcbl07XG5cbi8qKlxuICogQ3VycmVudGx5IG9ubHkgV2ViS2l0LWJhc2VkIFdlYiBJbnNwZWN0b3JzLCBGaXJlZm94ID49IHYzMSxcbiAqIGFuZCB0aGUgRmlyZWJ1ZyBleHRlbnNpb24gKGFueSBGaXJlZm94IHZlcnNpb24pIGFyZSBrbm93blxuICogdG8gc3VwcG9ydCBcIiVjXCIgQ1NTIGN1c3RvbWl6YXRpb25zLlxuICpcbiAqIFRPRE86IGFkZCBhIGBsb2NhbFN0b3JhZ2VgIHZhcmlhYmxlIHRvIGV4cGxpY2l0bHkgZW5hYmxlL2Rpc2FibGUgY29sb3JzXG4gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmZ1bmN0aW9uIHVzZUNvbG9ycygpIHtcblx0Ly8gTkI6IEluIGFuIEVsZWN0cm9uIHByZWxvYWQgc2NyaXB0LCBkb2N1bWVudCB3aWxsIGJlIGRlZmluZWQgYnV0IG5vdCBmdWxseVxuXHQvLyBpbml0aWFsaXplZC4gU2luY2Ugd2Uga25vdyB3ZSdyZSBpbiBDaHJvbWUsIHdlJ2xsIGp1c3QgZGV0ZWN0IHRoaXMgY2FzZVxuXHQvLyBleHBsaWNpdGx5XG5cdGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucHJvY2VzcyAmJiAod2luZG93LnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJyB8fCB3aW5kb3cucHJvY2Vzcy5fX253anMpKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvLyBJbnRlcm5ldCBFeHBsb3JlciBhbmQgRWRnZSBkbyBub3Qgc3VwcG9ydCBjb2xvcnMuXG5cdGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvKGVkZ2V8dHJpZGVudClcXC8oXFxkKykvKSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8vIElzIHdlYmtpdD8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTY0NTk2MDYvMzc2NzczXG5cdC8vIGRvY3VtZW50IGlzIHVuZGVmaW5lZCBpbiByZWFjdC1uYXRpdmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC1uYXRpdmUvcHVsbC8xNjMyXG5cdHJldHVybiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5XZWJraXRBcHBlYXJhbmNlKSB8fFxuXHRcdC8vIElzIGZpcmVidWc/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM5ODEyMC8zNzY3NzNcblx0XHQodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmNvbnNvbGUgJiYgKHdpbmRvdy5jb25zb2xlLmZpcmVidWcgfHwgKHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiAmJiB3aW5kb3cuY29uc29sZS50YWJsZSkpKSB8fFxuXHRcdC8vIElzIGZpcmVmb3ggPj0gdjMxP1xuXHRcdC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvVG9vbHMvV2ViX0NvbnNvbGUjU3R5bGluZ19tZXNzYWdlc1xuXHRcdCh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pICYmIHBhcnNlSW50KFJlZ0V4cC4kMSwgMTApID49IDMxKSB8fFxuXHRcdC8vIERvdWJsZSBjaGVjayB3ZWJraXQgaW4gdXNlckFnZW50IGp1c3QgaW4gY2FzZSB3ZSBhcmUgaW4gYSB3b3JrZXJcblx0XHQodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2FwcGxld2Via2l0XFwvKFxcZCspLykpO1xufVxuXG4vKipcbiAqIENvbG9yaXplIGxvZyBhcmd1bWVudHMgaWYgZW5hYmxlZC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZvcm1hdEFyZ3MoYXJncykge1xuXHRhcmdzWzBdID0gKHRoaXMudXNlQ29sb3JzID8gJyVjJyA6ICcnKSArXG5cdFx0dGhpcy5uYW1lc3BhY2UgK1xuXHRcdCh0aGlzLnVzZUNvbG9ycyA/ICcgJWMnIDogJyAnKSArXG5cdFx0YXJnc1swXSArXG5cdFx0KHRoaXMudXNlQ29sb3JzID8gJyVjICcgOiAnICcpICtcblx0XHQnKycgKyBtb2R1bGUuZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpO1xuXG5cdGlmICghdGhpcy51c2VDb2xvcnMpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBjID0gJ2NvbG9yOiAnICsgdGhpcy5jb2xvcjtcblx0YXJncy5zcGxpY2UoMSwgMCwgYywgJ2NvbG9yOiBpbmhlcml0Jyk7XG5cblx0Ly8gVGhlIGZpbmFsIFwiJWNcIiBpcyBzb21ld2hhdCB0cmlja3ksIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb3RoZXJcblx0Ly8gYXJndW1lbnRzIHBhc3NlZCBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSAlYywgc28gd2UgbmVlZCB0b1xuXHQvLyBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IGluZGV4IHRvIGluc2VydCB0aGUgQ1NTIGludG9cblx0bGV0IGluZGV4ID0gMDtcblx0bGV0IGxhc3RDID0gMDtcblx0YXJnc1swXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csIG1hdGNoID0+IHtcblx0XHRpZiAobWF0Y2ggPT09ICclJScpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aW5kZXgrKztcblx0XHRpZiAobWF0Y2ggPT09ICclYycpIHtcblx0XHRcdC8vIFdlIG9ubHkgYXJlIGludGVyZXN0ZWQgaW4gdGhlICpsYXN0KiAlY1xuXHRcdFx0Ly8gKHRoZSB1c2VyIG1heSBoYXZlIHByb3ZpZGVkIHRoZWlyIG93bilcblx0XHRcdGxhc3RDID0gaW5kZXg7XG5cdFx0fVxuXHR9KTtcblxuXHRhcmdzLnNwbGljZShsYXN0QywgMCwgYyk7XG59XG5cbi8qKlxuICogSW52b2tlcyBgY29uc29sZS5sb2coKWAgd2hlbiBhdmFpbGFibGUuXG4gKiBOby1vcCB3aGVuIGBjb25zb2xlLmxvZ2AgaXMgbm90IGEgXCJmdW5jdGlvblwiLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cbmZ1bmN0aW9uIGxvZyguLi5hcmdzKSB7XG5cdC8vIFRoaXMgaGFja2VyeSBpcyByZXF1aXJlZCBmb3IgSUU4LzksIHdoZXJlXG5cdC8vIHRoZSBgY29uc29sZS5sb2dgIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSAnYXBwbHknXG5cdHJldHVybiB0eXBlb2YgY29uc29sZSA9PT0gJ29iamVjdCcgJiZcblx0XHRjb25zb2xlLmxvZyAmJlxuXHRcdGNvbnNvbGUubG9nKC4uLmFyZ3MpO1xufVxuXG4vKipcbiAqIFNhdmUgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gc2F2ZShuYW1lc3BhY2VzKSB7XG5cdHRyeSB7XG5cdFx0aWYgKG5hbWVzcGFjZXMpIHtcblx0XHRcdGV4cG9ydHMuc3RvcmFnZS5zZXRJdGVtKCdkZWJ1ZycsIG5hbWVzcGFjZXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRleHBvcnRzLnN0b3JhZ2UucmVtb3ZlSXRlbSgnZGVidWcnKTtcblx0XHR9XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0Ly8gU3dhbGxvd1xuXHRcdC8vIFhYWCAoQFFpeC0pIHNob3VsZCB3ZSBiZSBsb2dnaW5nIHRoZXNlP1xuXHR9XG59XG5cbi8qKlxuICogTG9hZCBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHJldHVybiB7U3RyaW5nfSByZXR1cm5zIHRoZSBwcmV2aW91c2x5IHBlcnNpc3RlZCBkZWJ1ZyBtb2Rlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGxvYWQoKSB7XG5cdGxldCByO1xuXHR0cnkge1xuXHRcdHIgPSBleHBvcnRzLnN0b3JhZ2UuZ2V0SXRlbSgnZGVidWcnKTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHQvLyBTd2FsbG93XG5cdFx0Ly8gWFhYIChAUWl4LSkgc2hvdWxkIHdlIGJlIGxvZ2dpbmcgdGhlc2U/XG5cdH1cblxuXHQvLyBJZiBkZWJ1ZyBpc24ndCBzZXQgaW4gTFMsIGFuZCB3ZSdyZSBpbiBFbGVjdHJvbiwgdHJ5IHRvIGxvYWQgJERFQlVHXG5cdGlmICghciAmJiB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ2VudicgaW4gcHJvY2Vzcykge1xuXHRcdHIgPSBwcm9jZXNzLmVudi5ERUJVRztcblx0fVxuXG5cdHJldHVybiByO1xufVxuXG4vKipcbiAqIExvY2Fsc3RvcmFnZSBhdHRlbXB0cyB0byByZXR1cm4gdGhlIGxvY2Fsc3RvcmFnZS5cbiAqXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHNhZmFyaSB0aHJvd3NcbiAqIHdoZW4gYSB1c2VyIGRpc2FibGVzIGNvb2tpZXMvbG9jYWxzdG9yYWdlXG4gKiBhbmQgeW91IGF0dGVtcHQgdG8gYWNjZXNzIGl0LlxuICpcbiAqIEByZXR1cm4ge0xvY2FsU3RvcmFnZX1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvY2Fsc3RvcmFnZSgpIHtcblx0dHJ5IHtcblx0XHQvLyBUVk1MS2l0IChBcHBsZSBUViBKUyBSdW50aW1lKSBkb2VzIG5vdCBoYXZlIGEgd2luZG93IG9iamVjdCwganVzdCBsb2NhbFN0b3JhZ2UgaW4gdGhlIGdsb2JhbCBjb250ZXh0XG5cdFx0Ly8gVGhlIEJyb3dzZXIgYWxzbyBoYXMgbG9jYWxTdG9yYWdlIGluIHRoZSBnbG9iYWwgY29udGV4dC5cblx0XHRyZXR1cm4gbG9jYWxTdG9yYWdlO1xuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdC8vIFN3YWxsb3dcblx0XHQvLyBYWFggKEBRaXgtKSBzaG91bGQgd2UgYmUgbG9nZ2luZyB0aGVzZT9cblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY29tbW9uJykoZXhwb3J0cyk7XG5cbmNvbnN0IHtmb3JtYXR0ZXJzfSA9IG1vZHVsZS5leHBvcnRzO1xuXG4vKipcbiAqIE1hcCAlaiB0byBgSlNPTi5zdHJpbmdpZnkoKWAsIHNpbmNlIG5vIFdlYiBJbnNwZWN0b3JzIGRvIHRoYXQgYnkgZGVmYXVsdC5cbiAqL1xuXG5mb3JtYXR0ZXJzLmogPSBmdW5jdGlvbiAodikge1xuXHR0cnkge1xuXHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh2KTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRyZXR1cm4gJ1tVbmV4cGVjdGVkSlNPTlBhcnNlRXJyb3JdOiAnICsgZXJyb3IubWVzc2FnZTtcblx0fVxufTtcbiIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iLCJcbi8qKlxuICogVGhpcyBpcyB0aGUgY29tbW9uIGxvZ2ljIGZvciBib3RoIHRoZSBOb2RlLmpzIGFuZCB3ZWIgYnJvd3NlclxuICogaW1wbGVtZW50YXRpb25zIG9mIGBkZWJ1ZygpYC5cbiAqL1xuXG5mdW5jdGlvbiBzZXR1cChlbnYpIHtcblx0Y3JlYXRlRGVidWcuZGVidWcgPSBjcmVhdGVEZWJ1Zztcblx0Y3JlYXRlRGVidWcuZGVmYXVsdCA9IGNyZWF0ZURlYnVnO1xuXHRjcmVhdGVEZWJ1Zy5jb2VyY2UgPSBjb2VyY2U7XG5cdGNyZWF0ZURlYnVnLmRpc2FibGUgPSBkaXNhYmxlO1xuXHRjcmVhdGVEZWJ1Zy5lbmFibGUgPSBlbmFibGU7XG5cdGNyZWF0ZURlYnVnLmVuYWJsZWQgPSBlbmFibGVkO1xuXHRjcmVhdGVEZWJ1Zy5odW1hbml6ZSA9IHJlcXVpcmUoJ21zJyk7XG5cblx0T2JqZWN0LmtleXMoZW52KS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0Y3JlYXRlRGVidWdba2V5XSA9IGVudltrZXldO1xuXHR9KTtcblxuXHQvKipcblx0KiBBY3RpdmUgYGRlYnVnYCBpbnN0YW5jZXMuXG5cdCovXG5cdGNyZWF0ZURlYnVnLmluc3RhbmNlcyA9IFtdO1xuXG5cdC8qKlxuXHQqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGRlYnVnIG1vZGUgbmFtZXMsIGFuZCBuYW1lcyB0byBza2lwLlxuXHQqL1xuXG5cdGNyZWF0ZURlYnVnLm5hbWVzID0gW107XG5cdGNyZWF0ZURlYnVnLnNraXBzID0gW107XG5cblx0LyoqXG5cdCogTWFwIG9mIHNwZWNpYWwgXCIlblwiIGhhbmRsaW5nIGZ1bmN0aW9ucywgZm9yIHRoZSBkZWJ1ZyBcImZvcm1hdFwiIGFyZ3VtZW50LlxuXHQqXG5cdCogVmFsaWQga2V5IG5hbWVzIGFyZSBhIHNpbmdsZSwgbG93ZXIgb3IgdXBwZXItY2FzZSBsZXR0ZXIsIGkuZS4gXCJuXCIgYW5kIFwiTlwiLlxuXHQqL1xuXHRjcmVhdGVEZWJ1Zy5mb3JtYXR0ZXJzID0ge307XG5cblx0LyoqXG5cdCogU2VsZWN0cyBhIGNvbG9yIGZvciBhIGRlYnVnIG5hbWVzcGFjZVxuXHQqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2UgVGhlIG5hbWVzcGFjZSBzdHJpbmcgZm9yIHRoZSBmb3IgdGhlIGRlYnVnIGluc3RhbmNlIHRvIGJlIGNvbG9yZWRcblx0KiBAcmV0dXJuIHtOdW1iZXJ8U3RyaW5nfSBBbiBBTlNJIGNvbG9yIGNvZGUgZm9yIHRoZSBnaXZlbiBuYW1lc3BhY2Vcblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gc2VsZWN0Q29sb3IobmFtZXNwYWNlKSB7XG5cdFx0bGV0IGhhc2ggPSAwO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lc3BhY2UubGVuZ3RoOyBpKyspIHtcblx0XHRcdGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIG5hbWVzcGFjZS5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0aGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcblx0XHR9XG5cblx0XHRyZXR1cm4gY3JlYXRlRGVidWcuY29sb3JzW01hdGguYWJzKGhhc2gpICUgY3JlYXRlRGVidWcuY29sb3JzLmxlbmd0aF07XG5cdH1cblx0Y3JlYXRlRGVidWcuc2VsZWN0Q29sb3IgPSBzZWxlY3RDb2xvcjtcblxuXHQvKipcblx0KiBDcmVhdGUgYSBkZWJ1Z2dlciB3aXRoIHRoZSBnaXZlbiBgbmFtZXNwYWNlYC5cblx0KlxuXHQqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2Vcblx0KiBAcmV0dXJuIHtGdW5jdGlvbn1cblx0KiBAYXBpIHB1YmxpY1xuXHQqL1xuXHRmdW5jdGlvbiBjcmVhdGVEZWJ1ZyhuYW1lc3BhY2UpIHtcblx0XHRsZXQgcHJldlRpbWU7XG5cblx0XHRmdW5jdGlvbiBkZWJ1ZyguLi5hcmdzKSB7XG5cdFx0XHQvLyBEaXNhYmxlZD9cblx0XHRcdGlmICghZGVidWcuZW5hYmxlZCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHNlbGYgPSBkZWJ1ZztcblxuXHRcdFx0Ly8gU2V0IGBkaWZmYCB0aW1lc3RhbXBcblx0XHRcdGNvbnN0IGN1cnIgPSBOdW1iZXIobmV3IERhdGUoKSk7XG5cdFx0XHRjb25zdCBtcyA9IGN1cnIgLSAocHJldlRpbWUgfHwgY3Vycik7XG5cdFx0XHRzZWxmLmRpZmYgPSBtcztcblx0XHRcdHNlbGYucHJldiA9IHByZXZUaW1lO1xuXHRcdFx0c2VsZi5jdXJyID0gY3Vycjtcblx0XHRcdHByZXZUaW1lID0gY3VycjtcblxuXHRcdFx0YXJnc1swXSA9IGNyZWF0ZURlYnVnLmNvZXJjZShhcmdzWzBdKTtcblxuXHRcdFx0aWYgKHR5cGVvZiBhcmdzWzBdICE9PSAnc3RyaW5nJykge1xuXHRcdFx0XHQvLyBBbnl0aGluZyBlbHNlIGxldCdzIGluc3BlY3Qgd2l0aCAlT1xuXHRcdFx0XHRhcmdzLnVuc2hpZnQoJyVPJyk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFwcGx5IGFueSBgZm9ybWF0dGVyc2AgdHJhbnNmb3JtYXRpb25zXG5cdFx0XHRsZXQgaW5kZXggPSAwO1xuXHRcdFx0YXJnc1swXSA9IGFyZ3NbMF0ucmVwbGFjZSgvJShbYS16QS1aJV0pL2csIChtYXRjaCwgZm9ybWF0KSA9PiB7XG5cdFx0XHRcdC8vIElmIHdlIGVuY291bnRlciBhbiBlc2NhcGVkICUgdGhlbiBkb24ndCBpbmNyZWFzZSB0aGUgYXJyYXkgaW5kZXhcblx0XHRcdFx0aWYgKG1hdGNoID09PSAnJSUnKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGluZGV4Kys7XG5cdFx0XHRcdGNvbnN0IGZvcm1hdHRlciA9IGNyZWF0ZURlYnVnLmZvcm1hdHRlcnNbZm9ybWF0XTtcblx0XHRcdFx0aWYgKHR5cGVvZiBmb3JtYXR0ZXIgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRjb25zdCB2YWwgPSBhcmdzW2luZGV4XTtcblx0XHRcdFx0XHRtYXRjaCA9IGZvcm1hdHRlci5jYWxsKHNlbGYsIHZhbCk7XG5cblx0XHRcdFx0XHQvLyBOb3cgd2UgbmVlZCB0byByZW1vdmUgYGFyZ3NbaW5kZXhdYCBzaW5jZSBpdCdzIGlubGluZWQgaW4gdGhlIGBmb3JtYXRgXG5cdFx0XHRcdFx0YXJncy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0XHRcdGluZGV4LS07XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG1hdGNoO1xuXHRcdFx0fSk7XG5cblx0XHRcdC8vIEFwcGx5IGVudi1zcGVjaWZpYyBmb3JtYXR0aW5nIChjb2xvcnMsIGV0Yy4pXG5cdFx0XHRjcmVhdGVEZWJ1Zy5mb3JtYXRBcmdzLmNhbGwoc2VsZiwgYXJncyk7XG5cblx0XHRcdGNvbnN0IGxvZ0ZuID0gc2VsZi5sb2cgfHwgY3JlYXRlRGVidWcubG9nO1xuXHRcdFx0bG9nRm4uYXBwbHkoc2VsZiwgYXJncyk7XG5cdFx0fVxuXG5cdFx0ZGVidWcubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuXHRcdGRlYnVnLmVuYWJsZWQgPSBjcmVhdGVEZWJ1Zy5lbmFibGVkKG5hbWVzcGFjZSk7XG5cdFx0ZGVidWcudXNlQ29sb3JzID0gY3JlYXRlRGVidWcudXNlQ29sb3JzKCk7XG5cdFx0ZGVidWcuY29sb3IgPSBzZWxlY3RDb2xvcihuYW1lc3BhY2UpO1xuXHRcdGRlYnVnLmRlc3Ryb3kgPSBkZXN0cm95O1xuXHRcdGRlYnVnLmV4dGVuZCA9IGV4dGVuZDtcblx0XHQvLyBEZWJ1Zy5mb3JtYXRBcmdzID0gZm9ybWF0QXJncztcblx0XHQvLyBkZWJ1Zy5yYXdMb2cgPSByYXdMb2c7XG5cblx0XHQvLyBlbnYtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIGRlYnVnIGluc3RhbmNlc1xuXHRcdGlmICh0eXBlb2YgY3JlYXRlRGVidWcuaW5pdCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Y3JlYXRlRGVidWcuaW5pdChkZWJ1Zyk7XG5cdFx0fVxuXG5cdFx0Y3JlYXRlRGVidWcuaW5zdGFuY2VzLnB1c2goZGVidWcpO1xuXG5cdFx0cmV0dXJuIGRlYnVnO1xuXHR9XG5cblx0ZnVuY3Rpb24gZGVzdHJveSgpIHtcblx0XHRjb25zdCBpbmRleCA9IGNyZWF0ZURlYnVnLmluc3RhbmNlcy5pbmRleE9mKHRoaXMpO1xuXHRcdGlmIChpbmRleCAhPT0gLTEpIHtcblx0XHRcdGNyZWF0ZURlYnVnLmluc3RhbmNlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGZ1bmN0aW9uIGV4dGVuZChuYW1lc3BhY2UsIGRlbGltaXRlcikge1xuXHRcdGNvbnN0IG5ld0RlYnVnID0gY3JlYXRlRGVidWcodGhpcy5uYW1lc3BhY2UgKyAodHlwZW9mIGRlbGltaXRlciA9PT0gJ3VuZGVmaW5lZCcgPyAnOicgOiBkZWxpbWl0ZXIpICsgbmFtZXNwYWNlKTtcblx0XHRuZXdEZWJ1Zy5sb2cgPSB0aGlzLmxvZztcblx0XHRyZXR1cm4gbmV3RGVidWc7XG5cdH1cblxuXHQvKipcblx0KiBFbmFibGVzIGEgZGVidWcgbW9kZSBieSBuYW1lc3BhY2VzLiBUaGlzIGNhbiBpbmNsdWRlIG1vZGVzXG5cdCogc2VwYXJhdGVkIGJ5IGEgY29sb24gYW5kIHdpbGRjYXJkcy5cblx0KlxuXHQqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG5cdCogQGFwaSBwdWJsaWNcblx0Ki9cblx0ZnVuY3Rpb24gZW5hYmxlKG5hbWVzcGFjZXMpIHtcblx0XHRjcmVhdGVEZWJ1Zy5zYXZlKG5hbWVzcGFjZXMpO1xuXG5cdFx0Y3JlYXRlRGVidWcubmFtZXMgPSBbXTtcblx0XHRjcmVhdGVEZWJ1Zy5za2lwcyA9IFtdO1xuXG5cdFx0bGV0IGk7XG5cdFx0Y29uc3Qgc3BsaXQgPSAodHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnID8gbmFtZXNwYWNlcyA6ICcnKS5zcGxpdCgvW1xccyxdKy8pO1xuXHRcdGNvbnN0IGxlbiA9IHNwbGl0Lmxlbmd0aDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0aWYgKCFzcGxpdFtpXSkge1xuXHRcdFx0XHQvLyBpZ25vcmUgZW1wdHkgc3RyaW5nc1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0bmFtZXNwYWNlcyA9IHNwbGl0W2ldLnJlcGxhY2UoL1xcKi9nLCAnLio/Jyk7XG5cblx0XHRcdGlmIChuYW1lc3BhY2VzWzBdID09PSAnLScpIHtcblx0XHRcdFx0Y3JlYXRlRGVidWcuc2tpcHMucHVzaChuZXcgUmVnRXhwKCdeJyArIG5hbWVzcGFjZXMuc3Vic3RyKDEpICsgJyQnKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjcmVhdGVEZWJ1Zy5uYW1lcy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgbmFtZXNwYWNlcyArICckJykpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZvciAoaSA9IDA7IGkgPCBjcmVhdGVEZWJ1Zy5pbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGluc3RhbmNlID0gY3JlYXRlRGVidWcuaW5zdGFuY2VzW2ldO1xuXHRcdFx0aW5zdGFuY2UuZW5hYmxlZCA9IGNyZWF0ZURlYnVnLmVuYWJsZWQoaW5zdGFuY2UubmFtZXNwYWNlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0KiBEaXNhYmxlIGRlYnVnIG91dHB1dC5cblx0KlxuXHQqIEByZXR1cm4ge1N0cmluZ30gbmFtZXNwYWNlc1xuXHQqIEBhcGkgcHVibGljXG5cdCovXG5cdGZ1bmN0aW9uIGRpc2FibGUoKSB7XG5cdFx0Y29uc3QgbmFtZXNwYWNlcyA9IFtcblx0XHRcdC4uLmNyZWF0ZURlYnVnLm5hbWVzLm1hcCh0b05hbWVzcGFjZSksXG5cdFx0XHQuLi5jcmVhdGVEZWJ1Zy5za2lwcy5tYXAodG9OYW1lc3BhY2UpLm1hcChuYW1lc3BhY2UgPT4gJy0nICsgbmFtZXNwYWNlKVxuXHRcdF0uam9pbignLCcpO1xuXHRcdGNyZWF0ZURlYnVnLmVuYWJsZSgnJyk7XG5cdFx0cmV0dXJuIG5hbWVzcGFjZXM7XG5cdH1cblxuXHQvKipcblx0KiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIG1vZGUgbmFtZSBpcyBlbmFibGVkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCpcblx0KiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuXHQqIEByZXR1cm4ge0Jvb2xlYW59XG5cdCogQGFwaSBwdWJsaWNcblx0Ki9cblx0ZnVuY3Rpb24gZW5hYmxlZChuYW1lKSB7XG5cdFx0aWYgKG5hbWVbbmFtZS5sZW5ndGggLSAxXSA9PT0gJyonKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRsZXQgaTtcblx0XHRsZXQgbGVuO1xuXG5cdFx0Zm9yIChpID0gMCwgbGVuID0gY3JlYXRlRGVidWcuc2tpcHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGlmIChjcmVhdGVEZWJ1Zy5za2lwc1tpXS50ZXN0KG5hbWUpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwLCBsZW4gPSBjcmVhdGVEZWJ1Zy5uYW1lcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0aWYgKGNyZWF0ZURlYnVnLm5hbWVzW2ldLnRlc3QobmFtZSkpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCogQ29udmVydCByZWdleHAgdG8gbmFtZXNwYWNlXG5cdCpcblx0KiBAcGFyYW0ge1JlZ0V4cH0gcmVneGVwXG5cdCogQHJldHVybiB7U3RyaW5nfSBuYW1lc3BhY2Vcblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gdG9OYW1lc3BhY2UocmVnZXhwKSB7XG5cdFx0cmV0dXJuIHJlZ2V4cC50b1N0cmluZygpXG5cdFx0XHQuc3Vic3RyaW5nKDIsIHJlZ2V4cC50b1N0cmluZygpLmxlbmd0aCAtIDIpXG5cdFx0XHQucmVwbGFjZSgvXFwuXFwqXFw/JC8sICcqJyk7XG5cdH1cblxuXHQvKipcblx0KiBDb2VyY2UgYHZhbGAuXG5cdCpcblx0KiBAcGFyYW0ge01peGVkfSB2YWxcblx0KiBAcmV0dXJuIHtNaXhlZH1cblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gY29lcmNlKHZhbCkge1xuXHRcdGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdFx0cmV0dXJuIHZhbC5zdGFjayB8fCB2YWwubWVzc2FnZTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbDtcblx0fVxuXG5cdGNyZWF0ZURlYnVnLmVuYWJsZShjcmVhdGVEZWJ1Zy5sb2FkKCkpO1xuXG5cdHJldHVybiBjcmVhdGVEZWJ1Zztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXR1cDtcbiIsIi8qKlxuICogSGVscGVycy5cbiAqL1xuXG52YXIgcyA9IDEwMDA7XG52YXIgbSA9IHMgKiA2MDtcbnZhciBoID0gbSAqIDYwO1xudmFyIGQgPSBoICogMjQ7XG52YXIgdyA9IGQgKiA3O1xudmFyIHkgPSBkICogMzY1LjI1O1xuXG4vKipcbiAqIFBhcnNlIG9yIGZvcm1hdCB0aGUgZ2l2ZW4gYHZhbGAuXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAgLSBgbG9uZ2AgdmVyYm9zZSBmb3JtYXR0aW5nIFtmYWxzZV1cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IHZhbFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICogQHRocm93cyB7RXJyb3J9IHRocm93IGFuIGVycm9yIGlmIHZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgbnVtYmVyXG4gKiBAcmV0dXJuIHtTdHJpbmd8TnVtYmVyfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHZhbCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsO1xuICBpZiAodHlwZSA9PT0gJ3N0cmluZycgJiYgdmFsLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2UodmFsKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWwpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBvcHRpb25zLmxvbmcgPyBmbXRMb25nKHZhbCkgOiBmbXRTaG9ydCh2YWwpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAndmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSB2YWxpZCBudW1iZXIuIHZhbD0nICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KHZhbClcbiAgKTtcbn07XG5cbi8qKlxuICogUGFyc2UgdGhlIGdpdmVuIGBzdHJgIGFuZCByZXR1cm4gbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlKHN0cikge1xuICBzdHIgPSBTdHJpbmcoc3RyKTtcbiAgaWYgKHN0ci5sZW5ndGggPiAxMDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG1hdGNoID0gL14oKD86XFxkKyk/XFwtP1xcZD9cXC4/XFxkKykgKihtaWxsaXNlY29uZHM/fG1zZWNzP3xtc3xzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHdlZWtzP3x3fHllYXJzP3x5cnM/fHkpPyQvaS5leGVjKFxuICAgIHN0clxuICApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XG4gIHZhciB0eXBlID0gKG1hdGNoWzJdIHx8ICdtcycpLnRvTG93ZXJDYXNlKCk7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3llYXJzJzpcbiAgICBjYXNlICd5ZWFyJzpcbiAgICBjYXNlICd5cnMnOlxuICAgIGNhc2UgJ3lyJzpcbiAgICBjYXNlICd5JzpcbiAgICAgIHJldHVybiBuICogeTtcbiAgICBjYXNlICd3ZWVrcyc6XG4gICAgY2FzZSAnd2Vlayc6XG4gICAgY2FzZSAndyc6XG4gICAgICByZXR1cm4gbiAqIHc7XG4gICAgY2FzZSAnZGF5cyc6XG4gICAgY2FzZSAnZGF5JzpcbiAgICBjYXNlICdkJzpcbiAgICAgIHJldHVybiBuICogZDtcbiAgICBjYXNlICdob3Vycyc6XG4gICAgY2FzZSAnaG91cic6XG4gICAgY2FzZSAnaHJzJzpcbiAgICBjYXNlICdocic6XG4gICAgY2FzZSAnaCc6XG4gICAgICByZXR1cm4gbiAqIGg7XG4gICAgY2FzZSAnbWludXRlcyc6XG4gICAgY2FzZSAnbWludXRlJzpcbiAgICBjYXNlICdtaW5zJzpcbiAgICBjYXNlICdtaW4nOlxuICAgIGNhc2UgJ20nOlxuICAgICAgcmV0dXJuIG4gKiBtO1xuICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgY2FzZSAnc2Vjcyc6XG4gICAgY2FzZSAnc2VjJzpcbiAgICBjYXNlICdzJzpcbiAgICAgIHJldHVybiBuICogcztcbiAgICBjYXNlICdtaWxsaXNlY29uZHMnOlxuICAgIGNhc2UgJ21pbGxpc2Vjb25kJzpcbiAgICBjYXNlICdtc2Vjcyc6XG4gICAgY2FzZSAnbXNlYyc6XG4gICAgY2FzZSAnbXMnOlxuICAgICAgcmV0dXJuIG47XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBTaG9ydCBmb3JtYXQgZm9yIGBtc2AuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG1zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBmbXRTaG9ydChtcykge1xuICB2YXIgbXNBYnMgPSBNYXRoLmFicyhtcyk7XG4gIGlmIChtc0FicyA+PSBkKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBkKSArICdkJztcbiAgfVxuICBpZiAobXNBYnMgPj0gaCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gaCkgKyAnaCc7XG4gIH1cbiAgaWYgKG1zQWJzID49IG0pIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIG0pICsgJ20nO1xuICB9XG4gIGlmIChtc0FicyA+PSBzKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBzKSArICdzJztcbiAgfVxuICByZXR1cm4gbXMgKyAnbXMnO1xufVxuXG4vKipcbiAqIExvbmcgZm9ybWF0IGZvciBgbXNgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZm10TG9uZyhtcykge1xuICB2YXIgbXNBYnMgPSBNYXRoLmFicyhtcyk7XG4gIGlmIChtc0FicyA+PSBkKSB7XG4gICAgcmV0dXJuIHBsdXJhbChtcywgbXNBYnMsIGQsICdkYXknKTtcbiAgfVxuICBpZiAobXNBYnMgPj0gaCkge1xuICAgIHJldHVybiBwbHVyYWwobXMsIG1zQWJzLCBoLCAnaG91cicpO1xuICB9XG4gIGlmIChtc0FicyA+PSBtKSB7XG4gICAgcmV0dXJuIHBsdXJhbChtcywgbXNBYnMsIG0sICdtaW51dGUnKTtcbiAgfVxuICBpZiAobXNBYnMgPj0gcykge1xuICAgIHJldHVybiBwbHVyYWwobXMsIG1zQWJzLCBzLCAnc2Vjb25kJyk7XG4gIH1cbiAgcmV0dXJuIG1zICsgJyBtcyc7XG59XG5cbi8qKlxuICogUGx1cmFsaXphdGlvbiBoZWxwZXIuXG4gKi9cblxuZnVuY3Rpb24gcGx1cmFsKG1zLCBtc0FicywgbiwgbmFtZSkge1xuICB2YXIgaXNQbHVyYWwgPSBtc0FicyA+PSBuICogMS41O1xuICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIG4pICsgJyAnICsgbmFtZSArIChpc1BsdXJhbCA/ICdzJyA6ICcnKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= |
Another example may be helpful for you; Uncaught TypeError: Cannot read property 'popup_show_trigger' of undefined https://www.nsaneforums.com/forum/75-giveaways/ contentscript.js:1 (anonymous function) Can also this problem be related to other extensions? If so, how can I find the culprit? |
This appears to be a Chrome bug - https://bugs.chromium.org/p/chromium/issues/detail?id=995436. It seems to be affecting a number of other extensions too. It's marked as "fixed" and hopefully will get released soon. |
@artemave Thank you for your attention. I hope that it will be fixed as soon as possible as you said because this issue affects my many extensions. |
These are not Transover errors - it doesn't make requests to api.github.com |
Hi, I am taking "the extension may have been corrupted" warnings on Chrome nowadays. I activated the "collect errors" option on the extension page. How can I share these errors with you? I do not know it because I am just a basic pc user. Thanks.
The text was updated successfully, but these errors were encountered: