w-converhp 2.0.45 → 2.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/w-converhp-client.umd.js +2 -2
- package/dist/w-converhp-client.umd.js.map +1 -1
- package/dist/w-converhp-server.umd.js +2 -2
- package/dist/w-converhp-server.umd.js.map +1 -1
- package/docs/WConverhpClient.html +1 -1
- package/docs/WConverhpClient.mjs.html +72 -23
- package/docs/WConverhpServer.html +1 -1
- package/docs/WConverhpServer.mjs.html +12 -1
- package/docs/index.html +1 -1
- package/package.json +4 -4
- package/src/WConverhpClient.mjs +71 -22
- package/src/WConverhpServer.mjs +11 -0
- package/src/checkSlicesHash.wk.umd.js +1 -1
- package/src/checkTotalHash.wk.umd.js +1 -1
- package/src/mergeSlices.wk.umd.js +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* w-converhp-server v2.0.
|
|
2
|
+
* w-converhp-server v2.0.46
|
|
3
3
|
* (c) 2018-2021 yuda-lyu(semisphere)
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
!function(s,M){"object"==typeof exports&&"undefined"!=typeof module?module.exports=M(require("path"),require("fs"),require("stream"),require("@hapi/hapi"),require("@hapi/inert"),require("worker_threads")):"function"==typeof define&&define.amd?define(["path","fs","stream","@hapi/hapi","@hapi/inert","worker_threads"],M):(s="undefined"!=typeof globalThis?globalThis:s||self)["w-converhp-server"]=M(s.path,s.fs,s.stream,s["@hapi/hapi"],s["@hapi/inert"],s.require$$0)}(this,(function(s,M,i,I,w,L){"use strict";function t(s){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&"function"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},t(s)}function c(s){var M=function(s,M){if("object"!==t(s)||null===s)return s;var i=s[Symbol.toPrimitive];if(void 0!==i){var I=i.call(s,M||"default");if("object"!==t(I))return I;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===M?String:Number)(s)}(s,"string");return"symbol"===t(M)?M:String(M)}function d(s,M,i){return(M=c(M))in s?Object.defineProperty(s,M,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[M]=i,s}var l=Array.isArray,n="object"==typeof global&&global&&global.Object===Object&&global,e="object"==typeof self&&self&&self.Object===Object&&self,y=n||e||Function("return this")(),D=y.Symbol,C=Object.prototype,o=C.hasOwnProperty,m=C.toString,Z=D?D.toStringTag:void 0;var N=Object.prototype.toString;var u="[object Null]",b="[object Undefined]",g=D?D.toStringTag:void 0;function x(s){return null==s?void 0===s?b:u:g&&g in Object(s)?function(s){var M=o.call(s,Z),i=s[Z];try{s[Z]=void 0;var I=!0}catch(s){}var w=m.call(s);return I&&(M?s[Z]=i:delete s[Z]),w}(s):function(s){return N.call(s)}(s)}function X(s){return null!=s&&"object"==typeof s}var r="[object Symbol]";function p(s){return"symbol"==typeof s||X(s)&&x(s)==r}var T=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;function Y(s,M){if(l(s))return!1;var i=typeof s;return!("number"!=i&&"symbol"!=i&&"boolean"!=i&&null!=s&&!p(s))||(a.test(s)||!T.test(s)||null!=M&&s in Object(M))}function h(s){var M=typeof s;return null!=s&&("object"==M||"function"==M)}var S="[object AsyncFunction]",A="[object Function]",G="[object GeneratorFunction]",K="[object Proxy]";function z(s){if(!h(s))return!1;var M=x(s);return M==A||M==G||M==S||M==K}var E,j=y["__core-js_shared__"],W=(E=/[^.]+$/.exec(j&&j.keys&&j.keys.IE_PROTO||""))?"Symbol(src)_1."+E:"";var V=Function.prototype.toString;function H(s){if(null!=s){try{return V.call(s)}catch(s){}try{return s+""}catch(s){}}return""}var f=/^\[object .+?Constructor\]$/,Q=Function.prototype,U=Object.prototype,J=Q.toString,v=U.hasOwnProperty,R=RegExp("^"+J.call(v).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function P(s){return!(!h(s)||(M=s,W&&W in M))&&(z(s)?R:f).test(H(s));var M}function B(s,M){var i=function(s,M){return null==s?void 0:s[M]}(s,M);return P(i)?i:void 0}var k=B(Object,"create");var F=Object.prototype.hasOwnProperty;var O=Object.prototype.hasOwnProperty;function _(s){var M=-1,i=null==s?0:s.length;for(this.clear();++M<i;){var I=s[M];this.set(I[0],I[1])}}function q(s,M){return s===M||s!=s&&M!=M}function $(s,M){for(var i=s.length;i--;)if(q(s[i][0],M))return i;return-1}_.prototype.clear=function(){this.__data__=k?k(null):{},this.size=0},_.prototype.delete=function(s){var M=this.has(s)&&delete this.__data__[s];return this.size-=M?1:0,M},_.prototype.get=function(s){var M=this.__data__;if(k){var i=M[s];return"__lodash_hash_undefined__"===i?void 0:i}return F.call(M,s)?M[s]:void 0},_.prototype.has=function(s){var M=this.__data__;return k?void 0!==M[s]:O.call(M,s)},_.prototype.set=function(s,M){var i=this.__data__;return this.size+=this.has(s)?0:1,i[s]=k&&void 0===M?"__lodash_hash_undefined__":M,this};var ss=Array.prototype.splice;function Ms(s){var M=-1,i=null==s?0:s.length;for(this.clear();++M<i;){var I=s[M];this.set(I[0],I[1])}}Ms.prototype.clear=function(){this.__data__=[],this.size=0},Ms.prototype.delete=function(s){var M=this.__data__,i=$(M,s);return!(i<0)&&(i==M.length-1?M.pop():ss.call(M,i,1),--this.size,!0)},Ms.prototype.get=function(s){var M=this.__data__,i=$(M,s);return i<0?void 0:M[i][1]},Ms.prototype.has=function(s){return $(this.__data__,s)>-1},Ms.prototype.set=function(s,M){var i=this.__data__,I=$(i,s);return I<0?(++this.size,i.push([s,M])):i[I][1]=M,this};var is=B(y,"Map");function Is(s,M){var i,I,w=s.__data__;return("string"==(I=typeof(i=M))||"number"==I||"symbol"==I||"boolean"==I?"__proto__"!==i:null===i)?w["string"==typeof M?"string":"hash"]:w.map}function ws(s){var M=-1,i=null==s?0:s.length;for(this.clear();++M<i;){var I=s[M];this.set(I[0],I[1])}}ws.prototype.clear=function(){this.size=0,this.__data__={hash:new _,map:new(is||Ms),string:new _}},ws.prototype.delete=function(s){var M=Is(this,s).delete(s);return this.size-=M?1:0,M},ws.prototype.get=function(s){return Is(this,s).get(s)},ws.prototype.has=function(s){return Is(this,s).has(s)},ws.prototype.set=function(s,M){var i=Is(this,s),I=i.size;return i.set(s,M),this.size+=i.size==I?0:1,this};var Ls="Expected a function";function ts(s,M){if("function"!=typeof s||null!=M&&"function"!=typeof M)throw new TypeError(Ls);var i=function(){var I=arguments,w=M?M.apply(this,I):I[0],L=i.cache;if(L.has(w))return L.get(w);var t=s.apply(this,I);return i.cache=L.set(w,t)||L,t};return i.cache=new(ts.Cache||ws),i}ts.Cache=ws;var cs,ds,ls,ns=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,es=/\\(\\)?/g,ys=(cs=function(s){var M=[];return 46===s.charCodeAt(0)&&M.push(""),s.replace(ns,(function(s,i,I,w){M.push(I?w.replace(es,"$1"):i||s)})),M},ds=ts(cs,(function(s){return 500===ls.size&&ls.clear(),s})),ls=ds.cache,ds),Ds=ys;function Cs(s,M){for(var i=-1,I=null==s?0:s.length,w=Array(I);++i<I;)w[i]=M(s[i],i,s);return w}var os=1/0,ms=D?D.prototype:void 0,Zs=ms?ms.toString:void 0;function Ns(s){if("string"==typeof s)return s;if(l(s))return Cs(s,Ns)+"";if(p(s))return Zs?Zs.call(s):"";var M=s+"";return"0"==M&&1/s==-os?"-0":M}function us(s){return null==s?"":Ns(s)}function bs(s,M){return l(s)?s:Y(s,M)?[s]:Ds(us(s))}var gs=1/0;function xs(s){if("string"==typeof s||p(s))return s;var M=s+"";return"0"==M&&1/s==-gs?"-0":M}function Xs(s,M){for(var i=0,I=(M=bs(M,s)).length;null!=s&&i<I;)s=s[xs(M[i++])];return i&&i==I?s:void 0}function rs(s,M,i){var I=null==s?void 0:Xs(s,M);return void 0===I?i:I}var ps="[object Number]";function Ts(s){return"number"==typeof s||X(s)&&x(s)==ps}function as(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}var Ys="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},hs={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return hs},set exports(s){hs=s}});var Ss=hs;function As(s){return"[object Object]"===Object.prototype.toString.call(s)}function Gs(s){if(As(s)){for(let M in s)return!0;return!1}return!1}function Ks(s){return"[object String]"===Object.prototype.toString.call(s)}function zs(s){return!(!Ks(s)||""===s)}var Es=/\s/;var js=/^\s+/;function Ws(s){return s?s.slice(0,function(s){for(var M=s.length;M--&&Es.test(s.charAt(M)););return M}(s)+1).replace(js,""):s}var Vs=NaN,Hs=/^[-+]0x[0-9a-f]+$/i,fs=/^0b[01]+$/i,Qs=/^0o[0-7]+$/i,Us=parseInt;function Js(s){if("number"==typeof s)return s;if(p(s))return Vs;if(h(s)){var M="function"==typeof s.valueOf?s.valueOf():s;s=h(M)?M+"":M}if("string"!=typeof s)return 0===s?s:+s;s=Ws(s);var i=fs.test(s);return i||Qs.test(s)?Us(s.slice(2),i?2:8):Hs.test(s)?Vs:+s}var vs=1/0,Rs=17976931348623157e292;function Ps(s){return s?(s=Js(s))===vs||s===-vs?(s<0?-1:1)*Rs:s==s?s:0:0===s?s:0}function Bs(s){var M=Ps(s),i=M%1;return M==M?i?M-i:M:0}function ks(s){return s!=s}function Fs(s){let M=!1;if(zs(s))M=!isNaN(Number(s));else if(function(s){return"[object Number]"===Object.prototype.toString.call(s)}(s)){if(ks(s))return!1;M=!0}return M}function Os(s){if(!Fs(s))return 0;return Ps(s)}function _s(s){return!!Fs(s)&&(s=Os(s),"number"==typeof(M=s)&&M==Bs(M));var M}var qs=y.isFinite,$s=Math.min;var sM=function(s){var M=Math[s];return function(s,i){if(s=Js(s),(i=null==i?0:$s(Bs(i),292))&&qs(s)){var I=(us(s)+"e").split("e");return+((I=(us(M(I[0]+"e"+(+I[1]+i)))+"e").split("e"))[0]+"e"+(+I[1]-i))}return M(s)}}("round"),MM=sM;function iM(s){if(!Fs(s))return 0;s=Os(s);let M=MM(s);return"0"===String(M)?0:M}function IM(s){if(!_s(s))return!1;return iM(s)>=0}function wM(s){if(!_s(s))return!1;return iM(s)>0}function LM(s){return"[object Array]"===Object.prototype.toString.call(s)}function tM(s){if(As(s)){for(let M in s)return!1;return!0}return!1}function cM(s){return!!function(s){return"[object Undefined]"===Object.prototype.toString.call(s)}(s)||(!!function(s){return"[object Null]"===Object.prototype.toString.call(s)}(s)||(!!tM(s)||(!!function(s){return!(!Ks(s)||""!==s)}(s)||(!!function(s){return!!LM(s)&&0===s.length}(s)||!!ks(s)))))}function dM(s){return!!LM(s)&&(0!==s.length&&(1!==s.length||!cM(s[0])))}var lM="[object Boolean]";function nM(s){return!0===(M=s)||!1===M||X(M)&&x(M)==lM;var M}function eM(s){let M=Object.prototype.toString.call(s);return"[object Function]"===M||"[object AsyncFunction]"===M}function yM(s){let M,i=Object.prototype.toString.call(s);if(M="[object Promise]"===i,M)return!0;if("[object Function]"!==i)return!1;try{M="function"!=typeof s.subscribe&&"function"==typeof s.then}catch(s){}return M}function DM(s){if(!zs(s)&&!Fs(s)&&!p(s))return"";let M="";try{M=String(s)}catch(s){}try{M=s.toString()}catch(s){}return M}var CM={};var oM,mM={},ZM={get exports(){return mM},set exports(s){mM=s}};function NM(){return oM||(oM=1,function(s,M){var i;s.exports=(i=i||function(s,M){var i;if("undefined"!=typeof window&&window.crypto&&(i=window.crypto),"undefined"!=typeof self&&self.crypto&&(i=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(i=globalThis.crypto),!i&&"undefined"!=typeof window&&window.msCrypto&&(i=window.msCrypto),!i&&void 0!==Ys&&Ys.crypto&&(i=Ys.crypto),!i)try{i=require("crypto")}catch(s){}var I=function(){if(i){if("function"==typeof i.getRandomValues)try{return i.getRandomValues(new Uint32Array(1))[0]}catch(s){}if("function"==typeof i.randomBytes)try{return i.randomBytes(4).readInt32LE()}catch(s){}}throw new Error("Native crypto module could not be used to get secure random number.")},w=Object.create||function(){function s(){}return function(M){var i;return s.prototype=M,i=new s,s.prototype=null,i}}(),L={},t=L.lib={},c=t.Base={extend:function(s){var M=w(this);return s&&M.mixIn(s),M.hasOwnProperty("init")&&this.init!==M.init||(M.init=function(){M.$super.init.apply(this,arguments)}),M.init.prototype=M,M.$super=this,M},create:function(){var s=this.extend();return s.init.apply(s,arguments),s},init:function(){},mixIn:function(s){for(var M in s)s.hasOwnProperty(M)&&(this[M]=s[M]);s.hasOwnProperty("toString")&&(this.toString=s.toString)},clone:function(){return this.init.prototype.extend(this)}},d=t.WordArray=c.extend({init:function(s,i){s=this.words=s||[],this.sigBytes=i!=M?i:4*s.length},toString:function(s){return(s||n).stringify(this)},concat:function(s){var M=this.words,i=s.words,I=this.sigBytes,w=s.sigBytes;if(this.clamp(),I%4)for(var L=0;L<w;L++){var t=i[L>>>2]>>>24-L%4*8&255;M[I+L>>>2]|=t<<24-(I+L)%4*8}else for(var c=0;c<w;c+=4)M[I+c>>>2]=i[c>>>2];return this.sigBytes+=w,this},clamp:function(){var M=this.words,i=this.sigBytes;M[i>>>2]&=4294967295<<32-i%4*8,M.length=s.ceil(i/4)},clone:function(){var s=c.clone.call(this);return s.words=this.words.slice(0),s},random:function(s){for(var M=[],i=0;i<s;i+=4)M.push(I());return new d.init(M,s)}}),l=L.enc={},n=l.Hex={stringify:function(s){for(var M=s.words,i=s.sigBytes,I=[],w=0;w<i;w++){var L=M[w>>>2]>>>24-w%4*8&255;I.push((L>>>4).toString(16)),I.push((15&L).toString(16))}return I.join("")},parse:function(s){for(var M=s.length,i=[],I=0;I<M;I+=2)i[I>>>3]|=parseInt(s.substr(I,2),16)<<24-I%8*4;return new d.init(i,M/2)}},e=l.Latin1={stringify:function(s){for(var M=s.words,i=s.sigBytes,I=[],w=0;w<i;w++){var L=M[w>>>2]>>>24-w%4*8&255;I.push(String.fromCharCode(L))}return I.join("")},parse:function(s){for(var M=s.length,i=[],I=0;I<M;I++)i[I>>>2]|=(255&s.charCodeAt(I))<<24-I%4*8;return new d.init(i,M)}},y=l.Utf8={stringify:function(s){try{return decodeURIComponent(escape(e.stringify(s)))}catch(s){throw new Error("Malformed UTF-8 data")}},parse:function(s){return e.parse(unescape(encodeURIComponent(s)))}},D=t.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(s){"string"==typeof s&&(s=y.parse(s)),this._data.concat(s),this._nDataBytes+=s.sigBytes},_process:function(M){var i,I=this._data,w=I.words,L=I.sigBytes,t=this.blockSize,c=L/(4*t),l=(c=M?s.ceil(c):s.max((0|c)-this._minBufferSize,0))*t,n=s.min(4*l,L);if(l){for(var e=0;e<l;e+=t)this._doProcessBlock(w,e);i=w.splice(0,l),I.sigBytes-=n}return new d.init(i,n)},clone:function(){var s=c.clone.call(this);return s._data=this._data.clone(),s},_minBufferSize:0});t.Hasher=D.extend({cfg:c.extend(),init:function(s){this.cfg=this.cfg.extend(s),this.reset()},reset:function(){D.reset.call(this),this._doReset()},update:function(s){return this._append(s),this._process(),this},finalize:function(s){return s&&this._append(s),this._doFinalize()},blockSize:16,_createHelper:function(s){return function(M,i){return new s.init(i).finalize(M)}},_createHmacHelper:function(s){return function(M,i){return new C.HMAC.init(s,i).finalize(M)}}});var C=L.algo={};return L}(Math),i)}(ZM)),mM}!function(s,M){s.exports=NM().enc.Utf8}({get exports(){return CM},set exports(s){CM=s}});var uM=CM,bM={};!function(s,M){var i;s.exports=(i=NM(),function(){var s=i,M=s.lib.WordArray;function I(s,i,I){for(var w=[],L=0,t=0;t<i;t++)if(t%4){var c=I[s.charCodeAt(t-1)]<<t%4*2|I[s.charCodeAt(t)]>>>6-t%4*2;w[L>>>2]|=c<<24-L%4*8,L++}return M.create(w,L)}s.enc.Base64={stringify:function(s){var M=s.words,i=s.sigBytes,I=this._map;s.clamp();for(var w=[],L=0;L<i;L+=3)for(var t=(M[L>>>2]>>>24-L%4*8&255)<<16|(M[L+1>>>2]>>>24-(L+1)%4*8&255)<<8|M[L+2>>>2]>>>24-(L+2)%4*8&255,c=0;c<4&&L+.75*c<i;c++)w.push(I.charAt(t>>>6*(3-c)&63));var d=I.charAt(64);if(d)for(;w.length%4;)w.push(d);return w.join("")},parse:function(s){var M=s.length,i=this._map,w=this._reverseMap;if(!w){w=this._reverseMap=[];for(var L=0;L<i.length;L++)w[i.charCodeAt(L)]=L}var t=i.charAt(64);if(t){var c=s.indexOf(t);-1!==c&&(M=c)}return I(s,M,w)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),i.enc.Base64)}({get exports(){return bM},set exports(s){bM=s}});var gM=bM;function xM(s){if(!zs(s))return"";let M=uM.parse(s);return gM.stringify(M)}function XM(s,M){return!!As(s)&&(!(!zs(M)&&!Fs(M))&&M in s)}function rM(s,M){for(var i=-1,I=null==s?0:s.length;++i<I&&!1!==M(s[i],i,s););return s}var pM,TM=function(s,M,i){for(var I=-1,w=Object(s),L=i(s),t=L.length;t--;){var c=L[pM?t:++I];if(!1===M(w[c],c,w))break}return s};function aM(s){return X(s)&&"[object Arguments]"==x(s)}var YM=Object.prototype,hM=YM.hasOwnProperty,SM=YM.propertyIsEnumerable,AM=aM(function(){return arguments}())?aM:function(s){return X(s)&&hM.call(s,"callee")&&!SM.call(s,"callee")},GM=AM;var KM="object"==typeof exports&&exports&&!exports.nodeType&&exports,zM=KM&&"object"==typeof module&&module&&!module.nodeType&&module,EM=zM&&zM.exports===KM?y.Buffer:void 0,jM=(EM?EM.isBuffer:void 0)||function(){return!1},WM=9007199254740991,VM=/^(?:0|[1-9]\d*)$/;function HM(s,M){var i=typeof s;return!!(M=null==M?WM:M)&&("number"==i||"symbol"!=i&&VM.test(s))&&s>-1&&s%1==0&&s<M}var fM=9007199254740991;function QM(s){return"number"==typeof s&&s>-1&&s%1==0&&s<=fM}var UM={};UM["[object Float32Array]"]=UM["[object Float64Array]"]=UM["[object Int8Array]"]=UM["[object Int16Array]"]=UM["[object Int32Array]"]=UM["[object Uint8Array]"]=UM["[object Uint8ClampedArray]"]=UM["[object Uint16Array]"]=UM["[object Uint32Array]"]=!0,UM["[object Arguments]"]=UM["[object Array]"]=UM["[object ArrayBuffer]"]=UM["[object Boolean]"]=UM["[object DataView]"]=UM["[object Date]"]=UM["[object Error]"]=UM["[object Function]"]=UM["[object Map]"]=UM["[object Number]"]=UM["[object Object]"]=UM["[object RegExp]"]=UM["[object Set]"]=UM["[object String]"]=UM["[object WeakMap]"]=!1;var JM="object"==typeof exports&&exports&&!exports.nodeType&&exports,vM=JM&&"object"==typeof module&&module&&!module.nodeType&&module,RM=vM&&vM.exports===JM&&n.process,PM=function(){try{var s=vM&&vM.require&&vM.require("util").types;return s||RM&&RM.binding&&RM.binding("util")}catch(s){}}(),BM=PM&&PM.isTypedArray,kM=BM?function(s){return function(M){return s(M)}}(BM):function(s){return X(s)&&QM(s.length)&&!!UM[x(s)]},FM=kM,OM=Object.prototype.hasOwnProperty;function _M(s,M){var i=l(s),I=!i&&GM(s),w=!i&&!I&&jM(s),L=!i&&!I&&!w&&FM(s),t=i||I||w||L,c=t?function(s,M){for(var i=-1,I=Array(s);++i<s;)I[i]=M(i);return I}(s.length,String):[],d=c.length;for(var n in s)!M&&!OM.call(s,n)||t&&("length"==n||w&&("offset"==n||"parent"==n)||L&&("buffer"==n||"byteLength"==n||"byteOffset"==n)||HM(n,d))||c.push(n);return c}var qM=Object.prototype;function $M(s,M){return function(i){return s(M(i))}}var si=$M(Object.keys,Object),Mi=Object.prototype.hasOwnProperty;function ii(s){if(i=(M=s)&&M.constructor,M!==("function"==typeof i&&i.prototype||qM))return si(s);var M,i,I=[];for(var w in Object(s))Mi.call(s,w)&&"constructor"!=w&&I.push(w);return I}function Ii(s){return null!=s&&QM(s.length)&&!z(s)}function wi(s){return Ii(s)?_M(s):ii(s)}var Li=function(s,M){return function(i,I){if(null==i)return i;if(!Ii(i))return s(i,I);for(var w=i.length,L=M?w:-1,t=Object(i);(M?L--:++L<w)&&!1!==I(t[L],L,t););return i}}((function(s,M){return s&&TM(s,M,wi)})),ti=Li;function ci(s){return s}function di(s,M){var i;return(l(s)?rM:ti)(s,"function"==typeof(i=M)?i:ci)}function li(s){return"[object ArrayBuffer]"===Object.prototype.toString.call(s)}function ni(s){return"[object Uint8Array]"===Object.prototype.toString.call(s)}function ei(s){return"[object Uint16Array]"===Object.prototype.toString.call(s)}function yi(s){if(!(li(s)||(M=s,"[object Blob]"===Object.prototype.toString.call(M))||ni(s)||ei(s)))return null;var M;try{if(s.byteLength)return s.byteLength}catch(s){}try{if(s.length)return s.length}catch(s){}try{if(s.size)return s.size}catch(s){}return null}var Di=$M(Object.getPrototypeOf,Object),Ci="[object Object]",oi=Function.prototype,mi=Object.prototype,Zi=oi.toString,Ni=mi.hasOwnProperty,ui=Zi.call(Object);var bi="[object DOMException]",gi="[object Error]";function xi(s){if(!X(s))return!1;var M=x(s);return M==gi||M==bi||"string"==typeof s.message&&"string"==typeof s.name&&!function(s){if(!X(s)||x(s)!=Ci)return!1;var M=Di(s);if(null===M)return!0;var i=Ni.call(M,"constructor")&&M.constructor;return"function"==typeof i&&i instanceof i&&Zi.call(i)==ui}(s)}function Xi(s){if(!zs(s))return new Uint8Array;let M;try{M=function(s){if(!Ks(s))return new Uint8Array;let M=gM.parse(s),i=M.words,I=M.sigBytes,w=new Uint8Array(I);for(let s=0;s<I;s++){let M=i[s>>>2]>>>24-s%4*8&255;w[s]=M}return w}(xM(s))}catch(s){return new Uint8Array}return M}function ri(s,M){return function(s,M,i,I,w,L){if(!Fs(s))return null;if(!ni(M))return null;if(!_s(i))return null;if(!nM(I))return null;if(!_s(w))return null;if(!_s(L))return null;let t,c,d;s=Os(s);let l=8*L-w-1,n=(1<<l)-1,e=n>>1,y=23===w?Math.pow(2,-24)-Math.pow(2,-77):0,D=I?L-1:0,C=I?-1:1,o=s<0||0===s&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(c=isNaN(s)?1:0,t=n):(t=Math.floor(Math.log(s)/Math.LN2),s*(d=Math.pow(2,-t))<1&&(t--,d*=2),(s+=t+e>=1?y/d:y*Math.pow(2,1-e))*d>=2&&(t++,d/=2),t+e>=n?(c=0,t=n):t+e>=1?(c=(s*d-1)*Math.pow(2,w),t+=e):(c=s*Math.pow(2,e-1)*Math.pow(2,w),t=0));w>=8;M[i+D]=255&c,D+=C,c/=256,w-=8);for(t=t<<w|c,l+=w;l>0;M[i+D]=255&t,D+=C,t/=256,l-=8);return M[i+D-C]|=128*o,null}(s,M,arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,!(arguments.length>3&&void 0!==arguments[3])||arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:52,arguments.length>5&&void 0!==arguments[5]?arguments[5]:8)}function pi(s){let M=[],i=[];if(!dM(s)&&!Gs(s))return null;let I=[],w=[];function L(s){I.push(yi(s)),w.push(s)}try{let t=function(s){if(!As(s))return{results:"",binarys:[]};if(tM(s))return{results:"",binarys:[]};let M="",i=[];try{let I=-1;M=JSON.stringify(s,(function(s,M){if(ni(M)){I+=1;let s=`[Uint8Array]::${I}`;return i.push(M),s}if(ei(M)){I+=1;let s=`[Uint16Array]::${I}`;return i.push(M),s}if(li(M)){I+=1;let s=`[ArrayBuffer]::${I}`;return i.push(M),s}return xi(M)&&(M=M.toString()),M}))}catch(s){}return{results:M,binarys:i}}(s);L(Xi(t.results)),di(t.binarys,(s=>{L(s)}));let c=I,d=Xi(JSON.stringify(c)),l=new Uint8Array(8);ri(yi(d),l),M.push(l),M.push(d),di(w,(s=>{M.push(s)})),di(M,(s=>{i=function(s,M){let i=yi(s),I=yi(M),w=new Uint8Array(i+I);return w.set(new Uint8Array(s),0),w.set(new Uint8Array(M),i),w}(i,s)}))}catch(s){return null}return i}function Ti(s){return function(s,M,i,I,w){if(!ni(s))return null;if(!_s(M))return null;if(!nM(i))return null;if(!_s(I))return null;if(!_s(w))return null;let L,t,c=8*w-I-1,d=(1<<c)-1,l=d>>1,n=-7,e=i?0:w-1,y=i?1:-1,D=s[M+e];for(e+=y,L=D&(1<<-n)-1,D>>=-n,n+=c;n>0;L=256*L+s[M+e],e+=y,n-=8);for(t=L&(1<<-n)-1,L>>=-n,n+=I;n>0;t=256*t+s[M+e],e+=y,n-=8);if(0===L)L=1-l;else{if(L===d)return t?NaN:1/0*(D?-1:1);t+=Math.pow(2,I),L-=l}return(D?-1:1)*t*Math.pow(2,L-I)}(s,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,!(arguments.length>2&&void 0!==arguments[2])||arguments[2],arguments.length>3&&void 0!==arguments[3]?arguments[3]:52,arguments.length>4&&void 0!==arguments[4]?arguments[4]:8)}var ai={};!function(s,M){var i;s.exports=(i=NM(),function(){if("function"==typeof ArrayBuffer){var s=i.lib.WordArray,M=s.init,I=s.init=function(s){if(s instanceof ArrayBuffer&&(s=new Uint8Array(s)),(s instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&s instanceof Uint8ClampedArray||s instanceof Int16Array||s instanceof Uint16Array||s instanceof Int32Array||s instanceof Uint32Array||s instanceof Float32Array||s instanceof Float64Array)&&(s=new Uint8Array(s.buffer,s.byteOffset,s.byteLength)),s instanceof Uint8Array){for(var i=s.byteLength,I=[],w=0;w<i;w++)I[w>>>2]|=s[w]<<24-w%4*8;M.call(this,I,i)}else M.apply(this,arguments)};I.prototype=s}}(),i.lib.WordArray)}({get exports(){return ai},set exports(s){ai=s}});var Yi=ai;function hi(s){if(!ni(s))return"";let M;try{i=function(s){return ni(s)?Yi.create(s).toString(gM):""}(s),M=zs(i)?gM.parse(i).toString(uM):""}catch(s){return""}var i;return M}function Si(s){let M=null;if(!ni(s))return null;try{let i=8,I=s.slice(0,i),w=s.slice(i,yi(s)),L=Ti(I),t=w.slice(0,L),c=w.slice(L,yi(w)),d=hi(t),l=function(s,M){let i=0,I=0,w=[];return di(M,(M=>{I=i+M;let L=s.slice(i,I);i=I,w.push(L)})),w}(c,JSON.parse(d));M=function(s){if(!Gs(s))return{};let{results:M,binarys:i}=s;if(!zs(M))return{};if(!LM(i))return{};let I={};try{I=JSON.parse(M,(function(s,M){if(zs(M)){if(M.indexOf("[Uint8Array]::")>=0){let s=iM(M.replace("[Uint8Array]::",""));return i[s]}if(M.indexOf("[Uint16Array]::")>=0){let s=iM(M.replace("[Uint16Array]::",""));return i[s]}if(M.indexOf("[ArrayBuffer]::")>=0){let s=iM(M.replace("[ArrayBuffer]::",""));return i[s]}}return M}))}catch(s){}return I}({results:hi(l.shift()),binarys:l})}catch(s){}return M}function Ai(s){let M=rs(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(!M.existsSync(s))return!1;let i=M.lstatSync(s);return!i.isFile()&&!i.isSymbolicLink()}function Gi(s){return function(s){let M=rs(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(Ai(s,{fs:M}))return{success:"input folder is already exists: "+s};if(M.existsSync(s))return{error:"input path already exists: "+s};try{M.mkdirSync(s,{recursive:!0})}catch(s){return{error:s}}return{success:"done: "+s}}(s,{fs:M})}var Ki={};!function(s,M){s.exports=function(){var s=1e3,M=6e4,i=36e5,I="millisecond",w="second",L="minute",t="hour",c="day",d="week",l="month",n="quarter",e="year",y="date",D="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,o=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(s){var M=["th","st","nd","rd"],i=s%100;return"["+s+(M[(i-20)%10]||M[i]||M[0])+"]"}},Z=function(s,M,i){var I=String(s);return!I||I.length>=M?s:""+Array(M+1-I.length).join(i)+s},N={s:Z,z:function(s){var M=-s.utcOffset(),i=Math.abs(M),I=Math.floor(i/60),w=i%60;return(M<=0?"+":"-")+Z(I,2,"0")+":"+Z(w,2,"0")},m:function s(M,i){if(M.date()<i.date())return-s(i,M);var I=12*(i.year()-M.year())+(i.month()-M.month()),w=M.clone().add(I,l),L=i-w<0,t=M.clone().add(I+(L?-1:1),l);return+(-(I+(i-w)/(L?w-t:t-w))||0)},a:function(s){return s<0?Math.ceil(s)||0:Math.floor(s)},p:function(s){return{M:l,y:e,w:d,d:c,D:y,h:t,m:L,s:w,ms:I,Q:n}[s]||String(s||"").toLowerCase().replace(/s$/,"")},u:function(s){return void 0===s}},u="en",b={};b[u]=m;var g="$isDayjsObject",x=function(s){return s instanceof T||!(!s||!s[g])},X=function s(M,i,I){var w;if(!M)return u;if("string"==typeof M){var L=M.toLowerCase();b[L]&&(w=L),i&&(b[L]=i,w=L);var t=M.split("-");if(!w&&t.length>1)return s(t[0])}else{var c=M.name;b[c]=M,w=c}return!I&&w&&(u=w),w||!I&&u},r=function(s,M){if(x(s))return s.clone();var i="object"==typeof M?M:{};return i.date=s,i.args=arguments,new T(i)},p=N;p.l=X,p.i=x,p.w=function(s,M){return r(s,{locale:M.$L,utc:M.$u,x:M.$x,$offset:M.$offset})};var T=function(){function m(s){this.$L=X(s.locale,null,!0),this.parse(s),this.$x=this.$x||s.x||{},this[g]=!0}var Z=m.prototype;return Z.parse=function(s){this.$d=function(s){var M=s.date,i=s.utc;if(null===M)return new Date(NaN);if(p.u(M))return new Date;if(M instanceof Date)return new Date(M);if("string"==typeof M&&!/Z$/i.test(M)){var I=M.match(C);if(I){var w=I[2]-1||0,L=(I[7]||"0").substring(0,3);return i?new Date(Date.UTC(I[1],w,I[3]||1,I[4]||0,I[5]||0,I[6]||0,L)):new Date(I[1],w,I[3]||1,I[4]||0,I[5]||0,I[6]||0,L)}}return new Date(M)}(s),this.init()},Z.init=function(){var s=this.$d;this.$y=s.getFullYear(),this.$M=s.getMonth(),this.$D=s.getDate(),this.$W=s.getDay(),this.$H=s.getHours(),this.$m=s.getMinutes(),this.$s=s.getSeconds(),this.$ms=s.getMilliseconds()},Z.$utils=function(){return p},Z.isValid=function(){return!(this.$d.toString()===D)},Z.isSame=function(s,M){var i=r(s);return this.startOf(M)<=i&&i<=this.endOf(M)},Z.isAfter=function(s,M){return r(s)<this.startOf(M)},Z.isBefore=function(s,M){return this.endOf(M)<r(s)},Z.$g=function(s,M,i){return p.u(s)?this[M]:this.set(i,s)},Z.unix=function(){return Math.floor(this.valueOf()/1e3)},Z.valueOf=function(){return this.$d.getTime()},Z.startOf=function(s,M){var i=this,I=!!p.u(M)||M,n=p.p(s),D=function(s,M){var w=p.w(i.$u?Date.UTC(i.$y,M,s):new Date(i.$y,M,s),i);return I?w:w.endOf(c)},C=function(s,M){return p.w(i.toDate()[s].apply(i.toDate("s"),(I?[0,0,0,0]:[23,59,59,999]).slice(M)),i)},o=this.$W,m=this.$M,Z=this.$D,N="set"+(this.$u?"UTC":"");switch(n){case e:return I?D(1,0):D(31,11);case l:return I?D(1,m):D(0,m+1);case d:var u=this.$locale().weekStart||0,b=(o<u?o+7:o)-u;return D(I?Z-b:Z+(6-b),m);case c:case y:return C(N+"Hours",0);case t:return C(N+"Minutes",1);case L:return C(N+"Seconds",2);case w:return C(N+"Milliseconds",3);default:return this.clone()}},Z.endOf=function(s){return this.startOf(s,!1)},Z.$set=function(s,M){var i,d=p.p(s),n="set"+(this.$u?"UTC":""),D=(i={},i[c]=n+"Date",i[y]=n+"Date",i[l]=n+"Month",i[e]=n+"FullYear",i[t]=n+"Hours",i[L]=n+"Minutes",i[w]=n+"Seconds",i[I]=n+"Milliseconds",i)[d],C=d===c?this.$D+(M-this.$W):M;if(d===l||d===e){var o=this.clone().set(y,1);o.$d[D](C),o.init(),this.$d=o.set(y,Math.min(this.$D,o.daysInMonth())).$d}else D&&this.$d[D](C);return this.init(),this},Z.set=function(s,M){return this.clone().$set(s,M)},Z.get=function(s){return this[p.p(s)]()},Z.add=function(I,n){var y,D=this;I=Number(I);var C=p.p(n),o=function(s){var M=r(D);return p.w(M.date(M.date()+Math.round(s*I)),D)};if(C===l)return this.set(l,this.$M+I);if(C===e)return this.set(e,this.$y+I);if(C===c)return o(1);if(C===d)return o(7);var m=(y={},y[L]=M,y[t]=i,y[w]=s,y)[C]||1,Z=this.$d.getTime()+I*m;return p.w(Z,this)},Z.subtract=function(s,M){return this.add(-1*s,M)},Z.format=function(s){var M=this,i=this.$locale();if(!this.isValid())return i.invalidDate||D;var I=s||"YYYY-MM-DDTHH:mm:ssZ",w=p.z(this),L=this.$H,t=this.$m,c=this.$M,d=i.weekdays,l=i.months,n=i.meridiem,e=function(s,i,w,L){return s&&(s[i]||s(M,I))||w[i].slice(0,L)},y=function(s){return p.s(L%12||12,s,"0")},C=n||function(s,M,i){var I=s<12?"AM":"PM";return i?I.toLowerCase():I};return I.replace(o,(function(s,I){return I||function(s){switch(s){case"YY":return String(M.$y).slice(-2);case"YYYY":return p.s(M.$y,4,"0");case"M":return c+1;case"MM":return p.s(c+1,2,"0");case"MMM":return e(i.monthsShort,c,l,3);case"MMMM":return e(l,c);case"D":return M.$D;case"DD":return p.s(M.$D,2,"0");case"d":return String(M.$W);case"dd":return e(i.weekdaysMin,M.$W,d,2);case"ddd":return e(i.weekdaysShort,M.$W,d,3);case"dddd":return d[M.$W];case"H":return String(L);case"HH":return p.s(L,2,"0");case"h":return y(1);case"hh":return y(2);case"a":return C(L,t,!0);case"A":return C(L,t,!1);case"m":return String(t);case"mm":return p.s(t,2,"0");case"s":return String(M.$s);case"ss":return p.s(M.$s,2,"0");case"SSS":return p.s(M.$ms,3,"0");case"Z":return w}return null}(s)||w.replace(":","")}))},Z.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},Z.diff=function(I,y,D){var C,o=this,m=p.p(y),Z=r(I),N=(Z.utcOffset()-this.utcOffset())*M,u=this-Z,b=function(){return p.m(o,Z)};switch(m){case e:C=b()/12;break;case l:C=b();break;case n:C=b()/3;break;case d:C=(u-N)/6048e5;break;case c:C=(u-N)/864e5;break;case t:C=u/i;break;case L:C=u/M;break;case w:C=u/s;break;default:C=u}return D?C:p.a(C)},Z.daysInMonth=function(){return this.endOf(l).$D},Z.$locale=function(){return b[this.$L]},Z.locale=function(s,M){if(!s)return this.$L;var i=this.clone(),I=X(s,M,!0);return I&&(i.$L=I),i},Z.clone=function(){return p.w(this.$d,this)},Z.toDate=function(){return new Date(this.valueOf())},Z.toJSON=function(){return this.isValid()?this.toISOString():null},Z.toISOString=function(){return this.$d.toISOString()},Z.toString=function(){return this.$d.toUTCString()},m}(),a=T.prototype;return r.prototype=a,[["$ms",I],["$s",w],["$m",L],["$H",t],["$W",c],["$M",l],["$y",e],["$D",y]].forEach((function(s){a[s[1]]=function(M){return this.$g(M,s[0],s[1])}})),r.extend=function(s,M){return s.$i||(s(M,T,r),s.$i=!0),r},r.locale=X,r.isDayjs=x,r.unix=function(s){return r(1e3*s)},r.en=b[u],r.Ls=b,r.p={},r}()}({get exports(){return Ki},set exports(s){Ki=s}});var zi=Ki;let Ei="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),ji=Ei.length;function Wi(s){var M=this.__data__=new Ms(s);this.size=M.size}Wi.prototype.clear=function(){this.__data__=new Ms,this.size=0},Wi.prototype.delete=function(s){var M=this.__data__,i=M.delete(s);return this.size=M.size,i},Wi.prototype.get=function(s){return this.__data__.get(s)},Wi.prototype.has=function(s){return this.__data__.has(s)},Wi.prototype.set=function(s,M){var i=this.__data__;if(i instanceof Ms){var I=i.__data__;if(!is||I.length<199)return I.push([s,M]),this.size=++i.size,this;i=this.__data__=new ws(I)}return i.set(s,M),this.size=i.size,this};function Vi(s){var M=-1,i=null==s?0:s.length;for(this.__data__=new ws;++M<i;)this.add(s[M])}function Hi(s,M){for(var i=-1,I=null==s?0:s.length;++i<I;)if(M(s[i],i,s))return!0;return!1}function fi(s,M){return s.has(M)}Vi.prototype.add=Vi.prototype.push=function(s){return this.__data__.set(s,"__lodash_hash_undefined__"),this},Vi.prototype.has=function(s){return this.__data__.has(s)};var Qi=1,Ui=2;function Ji(s,M,i,I,w,L){var t=i&Qi,c=s.length,d=M.length;if(c!=d&&!(t&&d>c))return!1;var l=L.get(s),n=L.get(M);if(l&&n)return l==M&&n==s;var e=-1,y=!0,D=i&Ui?new Vi:void 0;for(L.set(s,M),L.set(M,s);++e<c;){var C=s[e],o=M[e];if(I)var m=t?I(o,C,e,M,s,L):I(C,o,e,s,M,L);if(void 0!==m){if(m)continue;y=!1;break}if(D){if(!Hi(M,(function(s,M){if(!fi(D,M)&&(C===s||w(C,s,i,I,L)))return D.push(M)}))){y=!1;break}}else if(C!==o&&!w(C,o,i,I,L)){y=!1;break}}return L.delete(s),L.delete(M),y}var vi=y.Uint8Array;function Ri(s){var M=-1,i=Array(s.size);return s.forEach((function(s,I){i[++M]=[I,s]})),i}function Pi(s){var M=-1,i=Array(s.size);return s.forEach((function(s){i[++M]=s})),i}var Bi=1,ki=2,Fi="[object Boolean]",Oi="[object Date]",_i="[object Error]",qi="[object Map]",$i="[object Number]",sI="[object RegExp]",MI="[object Set]",iI="[object String]",II="[object Symbol]",wI="[object ArrayBuffer]",LI="[object DataView]",tI=D?D.prototype:void 0,cI=tI?tI.valueOf:void 0;var dI=Object.prototype.propertyIsEnumerable,lI=Object.getOwnPropertySymbols,nI=lI?function(s){return null==s?[]:(s=Object(s),function(s,M){for(var i=-1,I=null==s?0:s.length,w=0,L=[];++i<I;){var t=s[i];M(t,i,s)&&(L[w++]=t)}return L}(lI(s),(function(M){return dI.call(s,M)})))}:function(){return[]},eI=nI;function yI(s){return function(s,M,i){var I=M(s);return l(s)?I:function(s,M){for(var i=-1,I=M.length,w=s.length;++i<I;)s[w+i]=M[i];return s}(I,i(s))}(s,wi,eI)}var DI=1,CI=Object.prototype.hasOwnProperty;var oI=B(y,"DataView"),mI=B(y,"Promise"),ZI=B(y,"Set"),NI=B(y,"WeakMap"),uI="[object Map]",bI="[object Promise]",gI="[object Set]",xI="[object WeakMap]",XI="[object DataView]",rI=H(oI),pI=H(is),TI=H(mI),aI=H(ZI),YI=H(NI),hI=x;(oI&&hI(new oI(new ArrayBuffer(1)))!=XI||is&&hI(new is)!=uI||mI&&hI(mI.resolve())!=bI||ZI&&hI(new ZI)!=gI||NI&&hI(new NI)!=xI)&&(hI=function(s){var M=x(s),i="[object Object]"==M?s.constructor:void 0,I=i?H(i):"";if(I)switch(I){case rI:return XI;case pI:return uI;case TI:return bI;case aI:return gI;case YI:return xI}return M});var SI=hI,AI=1,GI="[object Arguments]",KI="[object Array]",zI="[object Object]",EI=Object.prototype.hasOwnProperty;function jI(s,M,i,I,w,L){var t=l(s),c=l(M),d=t?KI:SI(s),n=c?KI:SI(M),e=(d=d==GI?zI:d)==zI,y=(n=n==GI?zI:n)==zI,D=d==n;if(D&&jM(s)){if(!jM(M))return!1;t=!0,e=!1}if(D&&!e)return L||(L=new Wi),t||FM(s)?Ji(s,M,i,I,w,L):function(s,M,i,I,w,L,t){switch(i){case LI:if(s.byteLength!=M.byteLength||s.byteOffset!=M.byteOffset)return!1;s=s.buffer,M=M.buffer;case wI:return!(s.byteLength!=M.byteLength||!L(new vi(s),new vi(M)));case Fi:case Oi:case $i:return q(+s,+M);case _i:return s.name==M.name&&s.message==M.message;case sI:case iI:return s==M+"";case qi:var c=Ri;case MI:var d=I&Bi;if(c||(c=Pi),s.size!=M.size&&!d)return!1;var l=t.get(s);if(l)return l==M;I|=ki,t.set(s,M);var n=Ji(c(s),c(M),I,w,L,t);return t.delete(s),n;case II:if(cI)return cI.call(s)==cI.call(M)}return!1}(s,M,d,i,I,w,L);if(!(i&AI)){var C=e&&EI.call(s,"__wrapped__"),o=y&&EI.call(M,"__wrapped__");if(C||o){var m=C?s.value():s,Z=o?M.value():M;return L||(L=new Wi),w(m,Z,i,I,L)}}return!!D&&(L||(L=new Wi),function(s,M,i,I,w,L){var t=i&DI,c=yI(s),d=c.length;if(d!=yI(M).length&&!t)return!1;for(var l=d;l--;){var n=c[l];if(!(t?n in M:CI.call(M,n)))return!1}var e=L.get(s),y=L.get(M);if(e&&y)return e==M&&y==s;var D=!0;L.set(s,M),L.set(M,s);for(var C=t;++l<d;){var o=s[n=c[l]],m=M[n];if(I)var Z=t?I(m,o,n,M,s,L):I(o,m,n,s,M,L);if(!(void 0===Z?o===m||w(o,m,i,I,L):Z)){D=!1;break}C||(C="constructor"==n)}if(D&&!C){var N=s.constructor,u=M.constructor;N==u||!("constructor"in s)||!("constructor"in M)||"function"==typeof N&&N instanceof N&&"function"==typeof u&&u instanceof u||(D=!1)}return L.delete(s),L.delete(M),D}(s,M,i,I,w,L))}function WI(s,M,i,I,w){return s===M||(null==s||null==M||!X(s)&&!X(M)?s!=s&&M!=M:jI(s,M,i,I,WI,w))}var VI=1,HI=2;function fI(s){return s==s&&!h(s)}function QI(s,M){return function(i){return null!=i&&(i[s]===M&&(void 0!==M||s in Object(i)))}}function UI(s){var M=function(s){for(var M=wi(s),i=M.length;i--;){var I=M[i],w=s[I];M[i]=[I,w,fI(w)]}return M}(s);return 1==M.length&&M[0][2]?QI(M[0][0],M[0][1]):function(i){return i===s||function(s,M,i,I){var w=i.length,L=w,t=!I;if(null==s)return!L;for(s=Object(s);w--;){var c=i[w];if(t&&c[2]?c[1]!==s[c[0]]:!(c[0]in s))return!1}for(;++w<L;){var d=(c=i[w])[0],l=s[d],n=c[1];if(t&&c[2]){if(void 0===l&&!(d in s))return!1}else{var e=new Wi;if(I)var y=I(l,n,d,s,M,e);if(!(void 0===y?WI(n,l,VI|HI,I,e):y))return!1}}return!0}(i,s,M)}}function JI(s,M){return null!=s&&M in Object(s)}function vI(s,M){return null!=s&&function(s,M,i){for(var I=-1,w=(M=bs(M,s)).length,L=!1;++I<w;){var t=xs(M[I]);if(!(L=null!=s&&i(s,t)))break;s=s[t]}return L||++I!=w?L:!!(w=null==s?0:s.length)&&QM(w)&&HM(t,w)&&(l(s)||GM(s))}(s,M,JI)}var RI=1,PI=2;function BI(s){return Y(s)?(M=xs(s),function(s){return null==s?void 0:s[M]}):function(s){return function(M){return Xs(M,s)}}(s);var M}function kI(s){return"function"==typeof s?s:null==s?ci:"object"==typeof s?l(s)?function(s,M){return Y(s)&&fI(M)?QI(xs(s),M):function(i){var I=rs(i,s);return void 0===I&&I===M?vI(i,s):WI(M,I,RI|PI)}}(s[0],s[1]):UI(s):BI(s)}function FI(s,M){var i=-1,I=Ii(s)?Array(s.length):[];return ti(s,(function(s,w,L){I[++i]=M(s,w,L)})),I}function OI(s,M,i){var I=s.length;return i=void 0===i?I:i,!M&&i>=I?s:function(s,M,i){var I=-1,w=s.length;M<0&&(M=-M>w?0:w+M),(i=i>w?w:i)<0&&(i+=w),w=M>i?0:i-M>>>0,M>>>=0;for(var L=Array(w);++I<w;)L[I]=s[I+M];return L}(s,M,i)}function _I(s){return s!=s}function qI(s,M,i){return M==M?function(s,M,i){for(var I=i-1,w=s.length;++I<w;)if(s[I]===M)return I;return-1}(s,M,i):function(s,M,i,I){for(var w=s.length,L=i+(I?1:-1);I?L--:++L<w;)if(M(s[L],L,s))return L;return-1}(s,_I,i)}var $I=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var sw="\\ud800-\\udfff",Mw="["+sw+"]",iw="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Iw="\\ud83c[\\udffb-\\udfff]",ww="[^"+sw+"]",Lw="(?:\\ud83c[\\udde6-\\uddff]){2}",tw="[\\ud800-\\udbff][\\udc00-\\udfff]",cw="(?:"+iw+"|"+Iw+")"+"?",dw="[\\ufe0e\\ufe0f]?",lw=dw+cw+("(?:\\u200d(?:"+[ww,Lw,tw].join("|")+")"+dw+cw+")*"),nw="(?:"+[ww+iw+"?",iw,Lw,tw,Mw].join("|")+")",ew=RegExp(Iw+"(?="+Iw+")|"+nw+lw,"g");function yw(s){return function(s){return $I.test(s)}(s)?function(s){return s.match(ew)||[]}(s):function(s){return s.split("")}(s)}function Dw(s,M,i){if((s=us(s))&&(i||void 0===M))return Ws(s);if(!s||!(M=Ns(M)))return s;var I=yw(s),w=yw(M),L=function(s,M){for(var i=-1,I=s.length;++i<I&&qI(M,s[i],0)>-1;);return i}(I,w),t=function(s,M){for(var i=s.length;i--&&qI(M,s[i],0)>-1;);return i}(I,w)+1;return OI(I,L,t).join("")}function Cw(s,M){if(!zs(s))return[];if(!zs(M))return[];let i=function(s,M){return zs(s)&&zs(M)?s.split(M):[]}(s,M);var I,w;w=Dw,i=(l(I=i)?Cs:FI)(I,kI(w));let L=[];return di(i,(function(s){zs(s)&&L.push(s)})),L}function ow(s){let M=rs(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");return!!M.existsSync(s)&&(!M.lstatSync(s).isDirectory()&&!M.lstatSync(s).isSymbolicLink())}function mw(s){return ow(s,{fs:M})}function Zw(s){return function(s){let M=rs(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(!M.existsSync(s))return{success:"file does not exist: "+s};if(!ow(s,{fs:M}))return{error:"input path is not a file: "+s};try{M.unlinkSync(s)}catch(s){return{error:s}}return{success:"done: "+s}}(s,{fs:M})}var Nw={};!function(s,M){s.exports=function(s){var M={};!function(M,i){M.exports=function(s){var M={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return M},set exports(s){M=s}});var i=M;let I;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let M=(w="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5Xnt6jora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5Xnt6jora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5Xnt6jora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxzPWEudG9TdHJpbmcsZj11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIHI9Yy5jYWxsKHQsZiksZT10W2ZdO3RyeXt0W2ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89cy5jYWxsKHQpO3JldHVybiBuJiYocj90W2ZdPWU6ZGVsZXRlIHRbZl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfXZhciBfPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIGQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmdih0KT09X312YXIgYj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxnPS9eXHcqJC87ZnVuY3Rpb24gaih0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1yfHwiZnVuY3Rpb24iPT1yKX12YXIgUz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsTz0iW29iamVjdCBGdW5jdGlvbl0iLG09IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix3PSJbb2JqZWN0IFByb3h5XSI7dmFyICQseD1pWyJfX2NvcmUtanNfc2hhcmVkX18iXSxSPSgkPS9bXi5dKyQvLmV4ZWMoeCYmeC5rZXlzJiZ4LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIiskOiIiO3ZhciB6PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxBPUZ1bmN0aW9uLnByb3RvdHlwZSxOPU9iamVjdC5wcm90b3R5cGUsUD1BLnRvU3RyaW5nLGs9Ti5oYXNPd25Qcm9wZXJ0eSxFPVJlZ0V4cCgiXiIrUC5jYWxsKGspLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO2Z1bmN0aW9uIEModCl7aWYoIWoodCl8fChyPXQsUiYmUiBpbiByKSlyZXR1cm4hMTt2YXIgcixlPWZ1bmN0aW9uKHQpe2lmKCFqKHQpKXJldHVybiExO3ZhciByPXYodCk7cmV0dXJuIHI9PU98fHI9PW18fHI9PVN8fHI9PXd9KHQpP0U6RjtyZXR1cm4gZS50ZXN0KGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gei5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0odCkpfWZ1bmN0aW9uIEkodCxyKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W3JdfSh0LHIpO3JldHVybiBDKGUpP2U6dm9pZCAwfXZhciBUPUkoT2JqZWN0LCJjcmVhdGUiKTt2YXIgTT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gTCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBVKHQscil7Zm9yKHZhciBlLG4sbz10Lmxlbmd0aDtvLS07KWlmKChlPXRbb11bMF0pPT09KG49cil8fGUhPWUmJm4hPW4pcmV0dXJuIG87cmV0dXJuLTF9TC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVQ/VChudWxsKTp7fSx0aGlzLnNpemU9MH0sTC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxMLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihUKXt2YXIgZT1yW3RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PWU/dm9pZCAwOmV9cmV0dXJuIE0uY2FsbChyLHQpP3JbdF06dm9pZCAwfSxMLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gVD92b2lkIDAhPT1yW3RdOnEuY2FsbChyLHQpfSxMLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPVQmJnZvaWQgMD09PXI/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnIsdGhpc307dmFyIEQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBHKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sRy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1VKHIsdCk7cmV0dXJuIShlPDApJiYoZT09ci5sZW5ndGgtMT9yLnBvcCgpOkQuY2FsbChyLGUsMSksLS10aGlzLnNpemUsITApfSxHLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVUocix0KTtyZXR1cm4gZTwwP3ZvaWQgMDpyW2VdWzFdfSxHLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFUodGhpcy5fX2RhdGFfXyx0KT4tMX0sRy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPVUoZSx0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxlLnB1c2goW3Qscl0pKTplW25dWzFdPXIsdGhpc307dmFyIFc9SShpLCJNYXAiKTtmdW5jdGlvbiBCKHQscil7dmFyIGUsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2YoZT1yKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09ZTpudWxsPT09ZSk/b1sic3RyaW5nIj09dHlwZW9mIHI/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBIKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUgucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgTCxtYXA6bmV3KFd8fEcpLHN0cmluZzpuZXcgTH19LEgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj1CKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gQih0aGlzLHQpLmdldCh0KX0sSC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBCKHRoaXMsdCkuaGFzKHQpfSxILnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT1CKHRoaXMsdCksbj1lLnNpemU7cmV0dXJuIGUuc2V0KHQsciksdGhpcy5zaXplKz1lLnNpemU9PW4/MDoxLHRoaXN9O3ZhciBKPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBLKHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoSik7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1yP3IuYXBwbHkodGhpcyxuKTpuWzBdLGk9ZS5jYWNoZTtpZihpLmhhcyhvKSlyZXR1cm4gaS5nZXQobyk7dmFyIHU9dC5hcHBseSh0aGlzLG4pO3JldHVybiBlLmNhY2hlPWkuc2V0KG8sdSl8fGksdX07cmV0dXJuIGUuY2FjaGU9bmV3KEsuQ2FjaGV8fEgpLGV9Sy5DYWNoZT1IO3ZhciBRLFYsWCxZPS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLFo9L1xcKFxcKT8vZyx0dD0oUT1mdW5jdGlvbih0KXt2YXIgcj1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJnIucHVzaCgiIiksdC5yZXBsYWNlKFksKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShaLCIkMSIpOmV8fHQpfSkpLHJ9LFY9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09WC5zaXplJiZYLmNsZWFyKCksdH0pKSxYPVYuY2FjaGUsVikscnQ9dHQ7dmFyIGV0PTEvMCxudD11P3UucHJvdG90eXBlOnZvaWQgMCxvdD1udD9udC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gaXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGUodCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsaXQpKyIiO2lmKGQodCkpcmV0dXJuIG90P290LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LWV0PyItMCI6cn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4gbnVsbD09dD8iIjppdCh0KX1mdW5jdGlvbiBhdCh0LHIpe3JldHVybiBlKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihlKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFkKHQpKXx8Zy50ZXN0KHQpfHwhYi50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06cnQodXQodCkpfXZhciBjdD0xLzA7ZnVuY3Rpb24gc3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxkKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1jdD8iLTAiOnJ9ZnVuY3Rpb24gZnQodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1hdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbc3QocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIGx0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBodCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHl0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIF90KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFodCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISgheXQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIXB0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIXZ0KHQpKSkpKX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4hKCF5dCh0KXx8IiI9PT10KX12YXIgYnQ9L1xzLzt2YXIgZ3Q9L15ccysvO2Z1bmN0aW9uIGp0KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZidC50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSh0KSsxKS5yZXBsYWNlKGd0LCIiKTp0fXZhciBTdD1OYU4sT3Q9L15bLStdMHhbMC05YS1mXSskL2ksbXQ9L14wYlswMV0rJC9pLHd0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24geHQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGQodCkpcmV0dXJuIFN0O2lmKGoodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWoocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PWp0KHQpO3ZhciBlPW10LnRlc3QodCk7cmV0dXJuIGV8fHd0LnRlc3QodCk/JHQodC5zbGljZSgyKSxlPzI6OCk6T3QudGVzdCh0KT9TdDordH12YXIgUnQ9MS8wLHp0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD14dCh0KSk9PT1SdHx8dD09PS1SdD8odDwwPy0xOjEpKnp0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBBdCh0KXt2YXIgcj1GdCh0KSxlPXIlMTtyZXR1cm4gcj09cj9lP3ItZTpyOjB9ZnVuY3Rpb24gTnQodCl7bGV0IHI9ITE7aWYoZHQodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYodnQodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBQdCh0KXtpZighTnQodCkpcmV0dXJuIDA7cmV0dXJuIEZ0KHQpfWZ1bmN0aW9uIGt0KHQpe3JldHVybiEhTnQodCkmJih0PVB0KHQpLCJudW1iZXIiPT10eXBlb2Yocj10KSYmcj09QXQocikpO3ZhciByfXZhciBFdD1pLmlzRmluaXRlLEN0PU1hdGgubWluO3ZhciBJdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9eHQodCksKGU9bnVsbD09ZT8wOkN0KEF0KGUpLDI5MikpJiZFdCh0KSl7dmFyIG49KHV0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPSh1dChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxUdD1JdDtmdW5jdGlvbiBNdCh0KXtpZighTnQodCkpcmV0dXJuIDA7dD1QdCh0KTtsZXQgcj1UdCh0KTtyZXR1cm4iMCI9PT1TdHJpbmcocik/MDpyfWZ1bmN0aW9uIHF0KHQpe2lmKCFrdCh0KSlyZXR1cm4hMTtyZXR1cm4gTXQodCk+PTB9ZnVuY3Rpb24gTHQodCxyKXtpZighZHQodCkpcmV0dXJuIiI7aWYoIXF0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1NdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gVXQodCxyKXtyZXR1cm4gZHQodCkmJnF0KHIpPzA9PT0ocj1NdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBkdCh0KSYmcXQocik/MD09PShyPU10KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIER0KHQpe2lmKCFkdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUx0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4iOiI9PT1MdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEd0KHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPWZ1bmN0aW9uKHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfSh0PXIucGF0aCk7aWYoIWR0KGUpKXJldHVybiB0O2xldCBuPUR0KHQ9VXQodCxlLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9ZnVuY3Rpb24gV3QodCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO2lmKCFlLmV4aXN0c1N5bmModCkpcmV0dXJuITE7bGV0IG49ZS5sc3RhdFN5bmModCk7cmV0dXJuIW4uaXNGaWxlKCkmJiFuLmlzU3ltYm9saWNMaW5rKCl9ZnVuY3Rpb24gQnQodCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO3JldHVybiEhZS5leGlzdHNTeW5jKHQpJiYoIWUubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFlLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBIdCh0LHI9e30pe2xldCBlPWZ0KHIsImZzIik7aWYoIWUuZXhpc3RzU3luYyh0KSlyZXR1cm57c3VjY2VzczoiZmlsZSBkb2VzIG5vdCBleGlzdDogIit0fTtpZighQnQodCx7ZnM6ZX0pKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBpcyBub3QgYSBmaWxlOiAiK3R9O3RyeXtlLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fXJldHVybntzdWNjZXNzOiJkb25lOiAiK3R9fWFzeW5jIGZ1bmN0aW9uIEp0KHQscixlLG49e30pe2xldCBvPSIiLGk9ZnQobiwiZnMiKTtpZighcHQodT1yKXx8MD09PXUubGVuZ3RofHwxPT09dS5sZW5ndGgmJl90KHVbMF0pKXRocm93IG5ldyBFcnJvcigiZnBzSW4gaW4gbm90IGFuIGVmZmVjdGl2ZSBhcnJheSIpO3ZhciB1O2xldCBhPUd0KGUpO1d0KGEse2ZzOml9KXx8ZnVuY3Rpb24odCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO2lmKFd0KHQse2ZzOmV9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKGUuZXhpc3RzU3luYyh0KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07dHJ5e2UubWtkaXJTeW5jKHQse3JlY3Vyc2l2ZTohMH0pfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX19KGEse2ZzOml9KTtsZXQgYz1sdCgpO3RyeXtsZXQgbj1pLmNyZWF0ZVdyaXRlU3RyZWFtKGUpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtsZXQgZT1yW3RdO2lmKCFCdChlLHtmczppfSkpdGhyb3cgbmV3IEVycm9yKGBmcEluWyR7ZX1dIGlzIG5vdCBhIGZpbGVgKTtsZXQgdT0oKT0+e2xldCB0PWx0KCkscj1pLmNyZWF0ZVJlYWRTdHJlYW0oZSk7cmV0dXJuIHIub24oImVycm9yIiwocj0+e289ci5tZXNzYWdlLHQucmVqZWN0KHIpfSkpLHIub24oImVuZCIsKCgpPT57SHQoZSx7ZnM6aX0pLHQucmVzb2x2ZSgpfSkpLHIucGlwZShuLHtlbmQ6ITF9KSx0fTthd2FpdCB1KCl9bi5lbmQoKSxuLm9uKCJlcnJvciIsKHQ9PntvPXQubWVzc2FnZSxjLnJlamVjdChvKX0pKSxuLm9uKCJmaW5pc2giLCgoKT0+e2xldCByPXtmaWxlbmFtZTp0LHBhdGg6ZX07Yy5yZXNvbHZlKHIpfSkpfWNhdGNoKHQpe289dC5tZXNzYWdlLGMucmVqZWN0KG8pfXJldHVybiBjfWxldCBtZXJnZVNsaWNlcz1hc3luYyhlLG4sbyk9PntsZXQgaT1bXTtmb3IobGV0IHI9MDtyPG47cisrKXtsZXQgbj10LmpvaW4obyxgJHtlfV8ke3J9YCk7aS5wdXNoKG4pfWxldCB1PXQuam9pbihvLGUpLGE9YXdhaXQgYXN5bmMgZnVuY3Rpb24odCxlLG4pe3JldHVybiBKdCh0LGUsbix7ZnM6cn0pfShlLGksdSk7cmV0dXJuIHIud3JpdGVGaWxlU3luYyhgJHt1fS5kb25lYCwiIiwidXRmOCIpLGF9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VTbGljZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VTbGljZXMKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(w,"base64").toString("utf8"));var w;function L(){let I=new i,w=function(M){try{return new s.Worker(M,{eval:!0})}catch(s){t(s)}}(M);if(!w)return t("invalid worker"),null;function L(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),M=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),i={mode:"call",id:M,fun:"main",input:[...arguments]};return w.postMessage(i),I.once(M,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function t(s){I.emit("error",s)}return w.on("message",(function(s){let M=s,i=M.mode;"emit"!==i&&"return"!==i||("emit"===i&&I.emit(M.evName,M.msg),"return"===i&&I.emit(M.id,M))})),w.on("error",t),w.on("exit",(s=>{1!==s&&t("exit code["+s+"] !== 1")})),function(){let s={mode:"init",type:"function",input:[...arguments]};w.postMessage(s)}([...arguments]),I.main=L,I.main=L,I.terminate=function(){w?(w.terminate(),w=void 0):t("worker has been terminated")},I}I=async function(){let s=[...arguments],M=L();return await M.main(...s).finally((()=>{M.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return I}(s)}({get exports(){return M},set exports(s){M=s}});var i=M,I={};!function(s,M){s.exports=function(){const s="function"==typeof Buffer,M="function"==typeof TextDecoder?new TextDecoder:void 0,i=(s=>{let M={};return s.forEach(((s,i)=>M[s]=i)),M})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),I=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,w=String.fromCharCode.bind(String),L="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):s=>new Uint8Array(Array.prototype.slice.call(s,0)),t=s=>s.replace(/[^A-Za-z0-9\+\/]/g,""),c=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,d=s=>{switch(s.length){case 4:var M=((7&s.charCodeAt(0))<<18|(63&s.charCodeAt(1))<<12|(63&s.charCodeAt(2))<<6|63&s.charCodeAt(3))-65536;return w(55296+(M>>>10))+w(56320+(1023&M));case 3:return w((15&s.charCodeAt(0))<<12|(63&s.charCodeAt(1))<<6|63&s.charCodeAt(2));default:return w((31&s.charCodeAt(0))<<6|63&s.charCodeAt(1))}},l=s=>s.replace(c,d),n=s=>{if(s=s.replace(/\s+/g,""),!I.test(s))throw new TypeError("malformed base64.");s+="==".slice(2-(3&s.length));let M,L,t,c="";for(let I=0;I<s.length;)M=i[s.charAt(I++)]<<18|i[s.charAt(I++)]<<12|(L=i[s.charAt(I++)])<<6|(t=i[s.charAt(I++)]),c+=64===L?w(M>>16&255):64===t?w(M>>16&255,M>>8&255):w(M>>16&255,M>>8&255,255&M);return c},e="function"==typeof atob?s=>atob(t(s)):s?s=>Buffer.from(s,"base64").toString("binary"):n,y=s?s=>L(Buffer.from(s,"base64")):s=>L(e(s).split("").map((s=>s.charCodeAt(0)))),D=s?s=>Buffer.from(s,"base64").toString("utf8"):M?s=>M.decode(y(s)):s=>l(e(s)),C=s=>t(s.replace(/[-_]/g,(s=>"-"==s?"+":"/"))),o=s=>D(C(s)),m=o;var Z={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return Z},set exports(s){Z=s}});var N=Z;let u;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let s=m("CgoKInVzZSBzdHJpY3QiO3ZhciB0PXJlcXVpcmUoInBhdGgiKSxyPXJlcXVpcmUoImZzIiksZT1BcnJheS5pc0FycmF5LG49Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLG89Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixpPW58fG98fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksdT1pLlN5bWJvbCxhPU9iamVjdC5wcm90b3R5cGUsYz1hLmhhc093blByb3BlcnR5LHM9YS50b1N0cmluZyxmPXU/dS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGw9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgcD0iW29iamVjdCBOdWxsXSIsaD0iW29iamVjdCBVbmRlZmluZWRdIix5PXU/dS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gdih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P2g6cDp5JiZ5IGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgcj1jLmNhbGwodCxmKSxlPXRbZl07dHJ5e3RbZl09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz1zLmNhbGwodCk7cmV0dXJuIG4mJihyP3RbZl09ZTpkZWxldGUgdFtmXSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGwuY2FsbCh0KX0odCl9dmFyIF89IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24gZCh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9KHQpJiZ2KHQpPT1ffXZhciBiPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLGc9L15cdyokLztmdW5jdGlvbiBqKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfXZhciBTPSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixPPSJbb2JqZWN0IEZ1bmN0aW9uXSIsbT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLHc9IltvYmplY3QgUHJveHldIjt2YXIgJCx4PWlbIl9fY29yZS1qc19zaGFyZWRfXyJdLFI9KCQ9L1teLl0rJC8uZXhlYyh4JiZ4LmtleXMmJngua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iKyQ6IiI7dmFyIHo9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBGPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEE9RnVuY3Rpb24ucHJvdG90eXBlLE49T2JqZWN0LnByb3RvdHlwZSxQPUEudG9TdHJpbmcsaz1OLmhhc093blByb3BlcnR5LEU9UmVnRXhwKCJeIitQLmNhbGwoaykucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gQyh0KXtpZighaih0KXx8KHI9dCxSJiZSIGluIHIpKXJldHVybiExO3ZhciByLGU9ZnVuY3Rpb24odCl7aWYoIWoodCkpcmV0dXJuITE7dmFyIHI9dih0KTtyZXR1cm4gcj09T3x8cj09bXx8cj09U3x8cj09d30odCk/RTpGO3JldHVybiBlLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiB6LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSh0KSl9ZnVuY3Rpb24gSSh0LHIpe3ZhciBlPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbcl19KHQscik7cmV0dXJuIEMoZSk/ZTp2b2lkIDB9dmFyIFQ9SShPYmplY3QsImNyZWF0ZSIpO3ZhciBNPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIHE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBMKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIFUodCxyKXtmb3IodmFyIGUsbixvPXQubGVuZ3RoO28tLTspaWYoKGU9dFtvXVswXSk9PT0obj1yKXx8ZSE9ZSYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1MLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189VD9UKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxMLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEwucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKFQpe3ZhciBlPXJbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09ZT92b2lkIDA6ZX1yZXR1cm4gTS5jYWxsKHIsdCk/clt0XTp2b2lkIDB9LEwucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiBUP3ZvaWQgMCE9PXJbdF06cS5jYWxsKHIsdCl9LEwucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLGVbdF09VCYmdm9pZCAwPT09cj8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6cix0aGlzfTt2YXIgRD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIEcodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19Ry5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxHLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVUocix0KTtyZXR1cm4hKGU8MCkmJihlPT1yLmxlbmd0aC0xP3IucG9wKCk6RC5jYWxsKHIsZSwxKSwtLXRoaXMuc2l6ZSwhMCl9LEcucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9VShyLHQpO3JldHVybiBlPDA/dm9pZCAwOnJbZV1bMV19LEcucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gVSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxHLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fLG49VShlLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLGUucHVzaChbdCxyXSkpOmVbbl1bMV09cix0aGlzfTt2YXIgVz1JKGksIk1hcCIpO2Z1bmN0aW9uIEIodCxyKXt2YXIgZSxuLG89dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihlPXIpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1lOm51bGw9PT1lKT9vWyJzdHJpbmciPT10eXBlb2Ygcj8ic3RyaW5nIjoiaGFzaCJdOm8ubWFwfWZ1bmN0aW9uIEgodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19SC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBMLG1hcDpuZXcoV3x8Ryksc3RyaW5nOm5ldyBMfX0sSC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPUIodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0sSC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBCKHRoaXMsdCkuZ2V0KHQpfSxILnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEIodGhpcyx0KS5oYXModCl9LEgucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPUIodGhpcyx0KSxuPWUuc2l6ZTtyZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemUrPWUuc2l6ZT09bj8wOjEsdGhpc307dmFyIEo9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIEsodCxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcihKKTt2YXIgZT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPXI/ci5hcHBseSh0aGlzLG4pOm5bMF0saT1lLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIGUuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gZS5jYWNoZT1uZXcoSy5DYWNoZXx8SCksZX1LLkNhY2hlPUg7dmFyIFEsVixYLFk9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csWj0vXFwoXFwpPy9nLHR0PShRPWZ1bmN0aW9uKHQpe3ZhciByPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmci5wdXNoKCIiKSx0LnJlcGxhY2UoWSwoZnVuY3Rpb24odCxlLG4sbyl7ci5wdXNoKG4/by5yZXBsYWNlKFosIiQxIik6ZXx8dCl9KSkscn0sVj1LKFEsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1YLnNpemUmJlguY2xlYXIoKSx0fSkpLFg9Vi5jYWNoZSxWKSxydD10dDt2YXIgZXQ9MS8wLG50PXU/dS5wcm90b3R5cGU6dm9pZCAwLG90PW50P250LnRvU3RyaW5nOnZvaWQgMDtmdW5jdGlvbiBpdCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoZSh0KSlyZXR1cm4gZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK2U8bjspb1tlXT1yKHRbZV0sZSx0KTtyZXR1cm4gb30odCxpdCkrIiI7aWYoZCh0KSlyZXR1cm4gb3Q/b3QuY2FsbCh0KToiIjt2YXIgcj10KyIiO3JldHVybiIwIj09ciYmMS90PT0tZXQ/Ii0wIjpyfWZ1bmN0aW9uIHV0KHQpe3JldHVybiBudWxsPT10PyIiOml0KHQpfWZ1bmN0aW9uIGF0KHQscil7cmV0dXJuIGUodCk/dDpmdW5jdGlvbih0LHIpe2lmKGUodCkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9dCYmIWQodCkpfHxnLnRlc3QodCl8fCFiLnRlc3QodCl8fG51bGwhPXImJnQgaW4gT2JqZWN0KHIpfSh0LHIpP1t0XTpydCh1dCh0KSl9dmFyIGN0PTEvMDtmdW5jdGlvbiBzdCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fGQodCkpcmV0dXJuIHQ7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LWN0PyItMCI6cn1mdW5jdGlvbiBmdCh0LHIsZSl7dmFyIG49bnVsbD09dD92b2lkIDA6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9MCxuPShyPWF0KHIsdCkpLmxlbmd0aDtudWxsIT10JiZlPG47KXQ9dFtzdChyW2UrK10pXTtyZXR1cm4gZSYmZT09bj90OnZvaWQgMH0odCxyKTtyZXR1cm4gdm9pZCAwPT09bj9lOm59ZnVuY3Rpb24gbHQoKXtsZXQgdCxyLGU9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0scj1hcmd1bWVudHNbMV19KSk7cmV0dXJuIGUucmVzb2x2ZT10LGUucmVqZWN0PXIsZX1mdW5jdGlvbiBwdCh0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIGh0KHQpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7Zm9yKGxldCByIGluIHQpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24geXQodCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gdnQodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gX3QodCl7cmV0dXJuISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBVbmRlZmluZWRdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bGxdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCghIWh0KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hKCF5dCh0KXx8IiIhPT10KX0odCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiEhcHQodCkmJjA9PT10Lmxlbmd0aH0odCl8fCEhdnQodCkpKSkpfWZ1bmN0aW9uIGR0KHQpe3JldHVybiEoIXl0KHQpfHwiIj09PXQpfXZhciBidD0vXHMvO3ZhciBndD0vXlxzKy87ZnVuY3Rpb24ganQodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJmJ0LnRlc3QodC5jaGFyQXQocikpOyk7cmV0dXJuIHJ9KHQpKzEpLnJlcGxhY2UoZ3QsIiIpOnR9dmFyIFN0PU5hTixPdD0vXlstK10weFswLTlhLWZdKyQvaSxtdD0vXjBiWzAxXSskL2ksd3Q9L14wb1swLTddKyQvaSwkdD1wYXJzZUludDtmdW5jdGlvbiB4dCh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoZCh0KSlyZXR1cm4gU3Q7aWYoaih0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9aihyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9anQodCk7dmFyIGU9bXQudGVzdCh0KTtyZXR1cm4gZXx8d3QudGVzdCh0KT8kdCh0LnNsaWNlKDIpLGU/Mjo4KTpPdC50ZXN0KHQpP1N0Oit0fXZhciBSdD0xLzAsenQ9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIEZ0KHQpe3JldHVybiB0Pyh0PXh0KHQpKT09PVJ0fHx0PT09LVJ0Pyh0PDA/LTE6MSkqenQ6dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIEF0KHQpe3ZhciByPUZ0KHQpLGU9ciUxO3JldHVybiByPT1yP2U/ci1lOnI6MH1mdW5jdGlvbiBOdCh0KXtsZXQgcj0hMTtpZihkdCh0KSlyPSFpc05hTihOdW1iZXIodCkpO2Vsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZih2dCh0KSlyZXR1cm4hMTtyPSEwfXJldHVybiByfWZ1bmN0aW9uIFB0KHQpe2lmKCFOdCh0KSlyZXR1cm4gMDtyZXR1cm4gRnQodCl9ZnVuY3Rpb24ga3QodCl7cmV0dXJuISFOdCh0KSYmKHQ9UHQodCksIm51bWJlciI9PXR5cGVvZihyPXQpJiZyPT1BdChyKSk7dmFyIHJ9dmFyIEV0PWkuaXNGaW5pdGUsQ3Q9TWF0aC5taW47dmFyIEl0PWZ1bmN0aW9uKHQpe3ZhciByPU1hdGhbdF07cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYodD14dCh0KSwoZT1udWxsPT1lPzA6Q3QoQXQoZSksMjkyKSkmJkV0KHQpKXt2YXIgbj0odXQodCkrImUiKS5zcGxpdCgiZSIpO3JldHVybisoKG49KHV0KHIoblswXSsiZSIrKCtuWzFdK2UpKSkrImUiKS5zcGxpdCgiZSIpKVswXSsiZSIrKCtuWzFdLWUpKX1yZXR1cm4gcih0KX19KCJyb3VuZCIpLFR0PUl0O2Z1bmN0aW9uIE10KHQpe2lmKCFOdCh0KSlyZXR1cm4gMDt0PVB0KHQpO2xldCByPVR0KHQpO3JldHVybiIwIj09PVN0cmluZyhyKT8wOnJ9ZnVuY3Rpb24gcXQodCl7aWYoIWt0KHQpKXJldHVybiExO3JldHVybiBNdCh0KT49MH1mdW5jdGlvbiBMdCh0LHIpe2lmKCFkdCh0KSlyZXR1cm4iIjtpZighcXQocikpcmV0dXJuIiI7aWYoMD09PShyPU10KHIpKSlyZXR1cm4iIjtsZXQgZT10Lmxlbmd0aC1yO3JldHVybiBlPDAmJihlPTApLHQuc3Vic3RyaW5nKGUsZStyKX1mdW5jdGlvbiBVdCh0LHIpe3JldHVybiBkdCh0KSYmcXQocik/MD09PShyPU10KHIpKT90OmZ1bmN0aW9uKHQscil7cmV0dXJuIGR0KHQpJiZxdChyKT8wPT09KHI9TXQocikpPyIiOnQuc3Vic3RyaW5nKDAscik6IiJ9KHQsdC5sZW5ndGgtcik6IiJ9ZnVuY3Rpb24gRHQodCl7aWYoIWR0KHQpKXJldHVybntwYXRoOiIiLGlzUm9vdDohMX07Zm9yKDt0LmluZGV4T2YoIlxcXFwiKT49MDspdD10LnJlcGxhY2UoIlxcXFwiLCJcXCIpO2Zvcig7dC5pbmRleE9mKCIvLyIpPj0wOyl0PXQucmVwbGFjZSgiLy8iLCIvIik7aWYoIjoiPT09THQodCwxKSlyZXR1cm57cGF0aDpgJHt0fVxcYCxpc1Jvb3Q6ITB9O2lmKCJcXCI9PT1MdCh0LDEpKXtsZXQgcj1VdCh0LDEpO3JldHVybiI6Ij09PUx0KHIsMSk/e3BhdGg6dCxpc1Jvb3Q6ITB9OntwYXRoOnIsaXNSb290OiExfX1pZigiLyI9PT1MdCh0LDEpKXtsZXQgcj1VdCh0LDEpO3JldHVybiAwPT09ci5sZW5ndGg/e3BhdGg6dCxpc1Jvb3Q6ITB9OntwYXRoOnIsaXNSb290OiExfX1yZXR1cm57cGF0aDp0LGlzUm9vdDohMX19ZnVuY3Rpb24gR3QodCl7aWYoIWR0KHQpKXJldHVybiIiO2xldCByPUR0KHQpO2lmKHIuaXNSb290KXJldHVybiByLnBhdGg7bGV0IGU9ZnVuY3Rpb24odCl7aWYoIWR0KHQpKXJldHVybiIiO2xldCByPUR0KHQpO2lmKHIuaXNSb290KXJldHVybiByLnBhdGg7bGV0IGU9ci5wYXRoO3RyeXtlPWUuc3BsaXQoIlxcIikucG9wKCkuc3BsaXQoIi8iKS5wb3AoKX1jYXRjaCh0KXt9cmV0dXJuIGV9KHQ9ci5wYXRoKTtpZighZHQoZSkpcmV0dXJuIHQ7bGV0IG49RHQodD1VdCh0LGUubGVuZ3RoKSk7cmV0dXJuIG4uaXNSb290LG4ucGF0aH1mdW5jdGlvbiBXdCh0LHI9e30pe2xldCBlPWZ0KHIsImZzIik7aWYoIWUuZXhpc3RzU3luYyh0KSlyZXR1cm4hMTtsZXQgbj1lLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBCdCh0LHI9e30pe2xldCBlPWZ0KHIsImZzIik7cmV0dXJuISFlLmV4aXN0c1N5bmModCkmJighZS5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIWUubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIEh0KHQscj17fSl7bGV0IGU9ZnQociwiZnMiKTtpZighZS5leGlzdHNTeW5jKHQpKXJldHVybntzdWNjZXNzOiJmaWxlIGRvZXMgbm90IGV4aXN0OiAiK3R9O2lmKCFCdCh0LHtmczplfSkpcmV0dXJue2Vycm9yOiJpbnB1dCBwYXRoIGlzIG5vdCBhIGZpbGU6ICIrdH07dHJ5e2UudW5saW5rU3luYyh0KX1jYXRjaCh0KXtyZXR1cm57ZXJyb3I6dH19cmV0dXJue3N1Y2Nlc3M6ImRvbmU6ICIrdH19YXN5bmMgZnVuY3Rpb24gSnQodCxyLGUsbj17fSl7bGV0IG89IiIsaT1mdChuLCJmcyIpO2lmKCFwdCh1PXIpfHwwPT09dS5sZW5ndGh8fDE9PT11Lmxlbmd0aCYmX3QodVswXSkpdGhyb3cgbmV3IEVycm9yKCJmcHNJbiBpbiBub3QgYW4gZWZmZWN0aXZlIGFycmF5Iik7dmFyIHU7bGV0IGE9R3QoZSk7V3QoYSx7ZnM6aX0pfHxmdW5jdGlvbih0LHI9e30pe2xldCBlPWZ0KHIsImZzIik7aWYoV3QodCx7ZnM6ZX0pKXJldHVybntzdWNjZXNzOiJpbnB1dCBmb2xkZXIgaXMgYWxyZWFkeSBleGlzdHM6ICIrdH07aWYoZS5leGlzdHNTeW5jKHQpKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBhbHJlYWR5IGV4aXN0czogIit0fTt0cnl7ZS5ta2RpclN5bmModCx7cmVjdXJzaXZlOiEwfSl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fX0oYSx7ZnM6aX0pO2xldCBjPWx0KCk7dHJ5e2xldCBuPWkuY3JlYXRlV3JpdGVTdHJlYW0oZSk7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kyspe2xldCBlPXJbdF07aWYoIUJ0KGUse2ZzOml9KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtlfV0gaXMgbm90IGEgZmlsZWApO2xldCB1PSgpPT57bGV0IHQ9bHQoKSxyPWkuY3JlYXRlUmVhZFN0cmVhbShlKTtyZXR1cm4gci5vbigiZXJyb3IiLChyPT57bz1yLm1lc3NhZ2UsdC5yZWplY3Qocil9KSksci5vbigiZW5kIiwoKCk9PntIdChlLHtmczppfSksdC5yZXNvbHZlKCl9KSksci5waXBlKG4se2VuZDohMX0pLHR9O2F3YWl0IHUoKX1uLmVuZCgpLG4ub24oImVycm9yIiwodD0+e289dC5tZXNzYWdlLGMucmVqZWN0KG8pfSkpLG4ub24oImZpbmlzaCIsKCgpPT57bGV0IHI9e2ZpbGVuYW1lOnQscGF0aDplfTtjLnJlc29sdmUocil9KSl9Y2F0Y2godCl7bz10Lm1lc3NhZ2UsYy5yZWplY3Qobyl9cmV0dXJuIGN9bGV0IG1lcmdlU2xpY2VzPWFzeW5jKGUsbixvKT0+e2xldCBpPVtdO2ZvcihsZXQgcj0wO3I8bjtyKyspe2xldCBuPXQuam9pbihvLGAke2V9XyR7cn1gKTtpLnB1c2gobil9bGV0IHU9dC5qb2luKG8sZSksYT1hd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsbil7cmV0dXJuIEp0KHQsZSxuLHtmczpyfSl9KGUsaSx1KTtyZXR1cm4gci53cml0ZUZpbGVTeW5jKGAke3V9LmRvbmVgLCIiLCJ1dGY4IiksYX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZXJnZVNsaWNlcwogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZXJnZVNsaWNlcwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZWN2TWVzc2FnZShlLmRhdGEpCiAgICAgICAgfQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==");function M(){let M=new N,i=function(s){try{let M=new Blob([s]),i=window.URL||window.webkitURL;return new Worker(i.createObjectURL(M))}catch(s){w(s)}}(s);if(!i)return w("invalid worker"),null;function I(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),I=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),w={mode:"call",id:I,fun:"main",input:[...arguments]};return i.postMessage(w),M.once(I,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function w(s){M.emit("error",s)}return i.onmessage=function(s){!function(s){let i=s,I=i.mode;"emit"!==I&&"return"!==I||("emit"===I&&M.emit(i.evName,i.msg),"return"===I&&M.emit(i.id,i))}(s.data)},i.onerror=w,i.onmessageerror=function(s){w(s.data)},function(){let s={mode:"init",type:"function",input:[...arguments]};i.postMessage(s)}([...arguments]),M.main=I,M.main=I,M.terminate=function(){i?(i.terminate(),i=void 0):w("worker has been terminated")},M}u=async function(){let s=[...arguments],i=M();return await i.main(...s).finally((()=>{i.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return u}()}({get exports(){return I},set exports(s){I=s}});var w=I;let L;return L="undefined"!=typeof window&&void 0!==window.document?w:i,L}(L)}({get exports(){return Nw},set exports(s){Nw=s}});var uw=Nw;let bw=(s,M,i)=>{let I=`${function(){if(!eM(zi))throw new Error("invalid dayjs");return zi().format("YYYYMMDDHHmmss")}()}|${function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:32,M=[];s=wM(s)?iM(s):32;for(let i=0;i<s;i++)M[i]=Ei[0|Math.random()*ji];return M.join("")}(6)}|${s}`;return setTimeout((()=>{uw(s,M,i).catch((s=>{console.log(s)}))}),1),I},gw=(M,i)=>{let I="";if(!zs(M))return I=`invalid id[${M}]`,console.log(I),{state:"error",msg:I,path:""};let w=rs(Cw(M,"|"),2,"");if(!zs(w))return I=`can not find fileHash in id[${M}]`,console.log(I),{state:"error",msg:I,path:""};let L=s.resolve(i,w),t=s.resolve(i,`${w}.done`),c=mw(L),d=mw(t),l=c&&d;return!c&&d&&Zw(t),{state:l?"success":"merging",msg:"",path:L}};var xw={};!function(s,M){s.exports=function(s){var M={};!function(M,i){M.exports=function(s){var M={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return M},set exports(s){M=s}});var i=M;let I;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let M=(w="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5Xnt6jora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5Xnt6jora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5Xnt6jora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLE89XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sUz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMseD1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsej14JiZ4LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCxQPSh6P3ouaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sRT05MDA3MTk5MjU0NzQwOTkxLGs9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uICQodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/RTplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmay50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEY9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1GfXZhciBUPXt9O1RbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPVRbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPVRbIltvYmplY3QgSW50OEFycmF5XSJdPVRbIltvYmplY3QgSW50MTZBcnJheV0iXT1UWyJbb2JqZWN0IEludDMyQXJyYXldIl09VFsiW29iamVjdCBVaW50OEFycmF5XSJdPVRbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09VFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLFRbIltvYmplY3QgQXJndW1lbnRzXSJdPVRbIltvYmplY3QgQXJyYXldIl09VFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1UWyJbb2JqZWN0IEJvb2xlYW5dIl09VFsiW29iamVjdCBEYXRhVmlld10iXT1UWyJbb2JqZWN0IERhdGVdIl09VFsiW29iamVjdCBFcnJvcl0iXT1UWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPVRbIltvYmplY3QgTWFwXSJdPVRbIltvYmplY3QgTnVtYmVyXSJdPVRbIltvYmplY3QgT2JqZWN0XSJdPVRbIltvYmplY3QgUmVnRXhwXSJdPVRbIltvYmplY3QgU2V0XSJdPVRbIltvYmplY3QgU3RyaW5nXSJdPVRbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgRCxJPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsTT1JJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsTj1NJiZNLmV4cG9ydHM9PT1JJiZ1LnByb2Nlc3MsUj1mdW5jdGlvbigpe3RyeXt2YXIgdD1NJiZNLnJlcXVpcmUmJk0ucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxOJiZOLmJpbmRpbmcmJk4uYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksVT1SJiZSLmlzVHlwZWRBcnJheSxCPVU/KEQ9VSxmdW5jdGlvbih0KXtyZXR1cm4gRCh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiZMKHQubGVuZ3RoKSYmISFUW2QodCldfSxDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVyh0LGUpe3ZhciByPVModCksbj0hciYmTyh0KSxvPSFyJiYhbiYmUCh0KSx1PSFyJiYhbiYmIW8mJkIodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIUMuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8JChmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBxPU9iamVjdC5wcm90b3R5cGU7dmFyIFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLEc9VixIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSih0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxxKSlyZXR1cm4gRyh0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlILmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEsodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFE9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFg9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFLKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVh8fGU9PVl8fGU9PVF8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJkwodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP1codCk6Sih0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKFModCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSyh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLE90PV90KGEsIlNldCIpLFN0PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix4dD0iW29iamVjdCBQcm9taXNlXSIsenQ9IltvYmplY3QgU2V0XSIsUHQ9IltvYmplY3QgV2Vha01hcF0iLEV0PSJbb2JqZWN0IERhdGFWaWV3XSIsa3Q9bHQoanQpLCR0PWx0KG10KSxGdD1sdCh3dCksTHQ9bHQoT3QpLFR0PWx0KFN0KSxEdD1kOyhqdCYmRHQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1FdHx8bXQmJkR0KG5ldyBtdCkhPUF0fHx3dCYmRHQod3QucmVzb2x2ZSgpKSE9eHR8fE90JiZEdChuZXcgT3QpIT16dHx8U3QmJkR0KG5ldyBTdCkhPVB0KSYmKER0PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBrdDpyZXR1cm4gRXQ7Y2FzZSAkdDpyZXR1cm4gQXQ7Y2FzZSBGdDpyZXR1cm4geHQ7Y2FzZSBMdDpyZXR1cm4genQ7Y2FzZSBUdDpyZXR1cm4gUHR9cmV0dXJuIGV9KTt2YXIgSXQ9RHQsTXQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gTnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgUnQ9TnQoImxlbmd0aCIpLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBCdCh0KXtyZXR1cm4gVXQudGVzdCh0KX12YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsV3Q9IlsiK0N0KyJdIixxdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFZ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEd0PSJbXiIrQ3QrIl0iLEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixKdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsS3Q9Iig/OiIrcXQrInwiK1Z0KyIpIisiPyIsUXQ9IltcXHVmZTBlXFx1ZmUwZl0/IixYdD1RdCtLdCsoIig/OlxcdTIwMGQoPzoiK1tHdCxIdCxKdF0uam9pbigifCIpKyIpIitRdCtLdCsiKSoiKSxZdD0iKD86IitbR3QrcXQrIj8iLHF0LEh0LEp0LFd0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChWdCsiKD89IitWdCsiKXwiK1l0K1h0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlJ0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhUyhlKSYmZyhlKSYmZChlKT09TXQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1JdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkoodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLE9lPTIsU2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix4ZT0iW29iamVjdCBFcnJvcl0iLHplPSJbb2JqZWN0IE1hcF0iLFBlPSJbb2JqZWN0IE51bWJlcl0iLEVlPSJbb2JqZWN0IFJlZ0V4cF0iLGtlPSJbb2JqZWN0IFNldF0iLCRlPSJbb2JqZWN0IFN0cmluZ10iLEZlPSJbb2JqZWN0IFN5bWJvbF0iLExlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsVGU9IltvYmplY3QgRGF0YVZpZXddIixEZT1jP2MucHJvdG90eXBlOnZvaWQgMCxJZT1EZT9EZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBNZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIE5lPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsUmU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxVZT1SZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksTWUoUmUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBOZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBCZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIFModCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LFVlKX12YXIgQ2U9MSxXZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxZT0xLFZlPSJbb2JqZWN0IEFyZ3VtZW50c10iLEdlPSJbb2JqZWN0IEFycmF5XSIsSGU9IltvYmplY3QgT2JqZWN0XSIsSmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBLZSh0LGUscixuLG8sdSl7dmFyIGk9Uyh0KSxhPVMoZSksYz1pP0dlOkl0KHQpLGY9YT9HZTpJdChlKSxzPShjPWM9PVZlP0hlOmMpPT1IZSxsPShmPWY9PVZlP0hlOmYpPT1IZSxwPWM9PWY7aWYocCYmUCh0KSl7aWYoIVAoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEIodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIFRlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBTZTpjYXNlIEFlOmNhc2UgUGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHhlOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBFZTpjYXNlICRlOnJldHVybiB0PT1lKyIiO2Nhc2UgemU6dmFyIGE9amU7Y2FzZSBrZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1PZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEZlOmlmKEllKXJldHVybiBJZS5jYWxsKHQpPT1JZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImcWUpKXt2YXIgaD1zJiZKZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZKZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJkNlLGE9QmUodCksYz1hLmxlbmd0aDtpZihjIT1CZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpXZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIFFlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6S2UodCxlLHIsbixRZSxvKSl9dmFyIFhlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUsodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9RZShzLGYsWGV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihTKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihTKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIFModCk/dDppcih0LGUpP1t0XTpwcihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJkwobykmJiQoaSxvKSYmKFModCl8fE8odCkpfSh0LGUsT3IpfXZhciBBcj0xLHhyPTI7ZnVuY3Rpb24genIodCl7cmV0dXJuIGlyKHQpP050KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiBQcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P1ModCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP1NyKHIsdCk6UWUoZSxuLEFyfHhyKX19KHRbMF0sdFsxXSk6ZXIodCk6enIodCl9ZnVuY3Rpb24gRXIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIGtyKHQsZSl7cmV0dXJuKFModCk/cmU6RXIpKHQsUHIoZSkpfXZhciAkcj0vXHMvO3ZhciBGcj0vXlxzKy87ZnVuY3Rpb24gTHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJiRyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoRnIsIiIpOnR9ZnVuY3Rpb24gVHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gRHIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gSXIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsRHIscil9dmFyIE1yPSJcXHVkODAwLVxcdWRmZmYiLE5yPSJbIitNcisiXSIsUnI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixVcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixCcj0iW14iK01yKyJdIixDcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsV3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHFyPSIoPzoiK1JyKyJ8IitVcisiKSIrIj8iLFZyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsR3I9VnIrcXIrKCIoPzpcXHUyMDBkKD86IitbQnIsQ3IsV3JdLmpvaW4oInwiKSsiKSIrVnIrcXIrIikqIiksSHI9Iig/OiIrW0JyK1JyKyI/IixScixDcixXcixOcl0uam9pbigifCIpKyIpIixKcj1SZWdFeHAoVXIrIig/PSIrVXIrIil8IitIcitHciwiZyIpO2Z1bmN0aW9uIEtyKHQpe3JldHVybiBCdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChKcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIFFyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gTHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49S3IodCksbz1LcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJklyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZJcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBUcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gWHIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVhyKHQpKXJldHVybltdO2lmKCFYcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBYcih0KSYmWHIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPWtyKHIsUXIpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtYcih0KSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gWnIodCl7bGV0IGU9ITE7aWYoWHIodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHRuPU5hTixlbj0vXlstK10weFswLTlhLWZdKyQvaSxybj0vXjBiWzAxXSskL2ksbm49L14wb1swLTddKyQvaSxvbj1wYXJzZUludDtmdW5jdGlvbiB1bih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIHRuO2lmKEsodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUsoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUxyKHQpO3ZhciByPXJuLnRlc3QodCk7cmV0dXJuIHJ8fG5uLnRlc3QodCk/b24odC5zbGljZSgyKSxyPzI6OCk6ZW4udGVzdCh0KT90bjordH12YXIgYW49MS8wLGNuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBmbih0KXtyZXR1cm4gdD8odD11bih0KSk9PT1hbnx8dD09PS1hbj8odDwwPy0xOjEpKmNuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBzbih0KXt2YXIgZT1mbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9ZnVuY3Rpb24gbG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3JldHVybiBmbih0KX1mdW5jdGlvbiBwbih0KXtyZXR1cm4hIVpyKHQpJiYodD1sbih0KSwibnVtYmVyIj09dHlwZW9mKGU9dCkmJmU9PXNuKGUpKTt2YXIgZX12YXIgaG49YS5pc0Zpbml0ZSx2bj1NYXRoLm1pbjt2YXIgeW49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXVuKHQpLChyPW51bGw9PXI/MDp2bihzbihyKSwyOTIpKSYmaG4odCkpe3ZhciBuPShkcih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZHIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksYm49eW47ZnVuY3Rpb24gZG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3Q9bG4odCk7bGV0IGU9Ym4odCk7cmV0dXJuIjAiPT09U3RyaW5nKGUpPzA6ZX1mdW5jdGlvbiBnbih0LGU9e30pe2xldCByPXdyKGUsImZzIik7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIF9uKHQpe3JldHVybiBnbih0LHtmczplfSl9ZnVuY3Rpb24gam4odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiBtbih0LGU9e30pe2xldCByPXdyKGUsImZzIik7aWYoIXIuZXhpc3RzU3luYyh0KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiB3bih0LGU9MSxyPXt9KXtsZXQgbj13cihyLCJwYXRoIiksbz13cihyLCJmcyIpO2lmKCFtbih0LHtmczpvfSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtsZXQgdT1bXTt2YXIgaSxhO3JldHVybiB1PWZ1bmN0aW9uKHQsZT0xLHI9e30pe2xldCBuPTEsbz13cihyLCJwYXRoIiksdT13cihyLCJmcyIpO2lmKCFtbih0LHtmczp1fSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtyZXR1cm4gZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gbW4ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9KHQsZSx7cGF0aDpuLGZzOm99KSxhPXtpc0ZvbGRlcjohMX0sdT0oUyhpPXUpP01lOmpuKShpLFByKGEpKSx1PWtyKHUsKHQ9PihkZWxldGUgdC5pc0ZvbGRlcix0KSkpLHV9ZnVuY3Rpb24gT24odCl7cmV0dXJuIE9uPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxPbih0KX1mdW5jdGlvbiBTbih0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09T24odCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09T24obikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PU9uKGUpP2U6U3RyaW5nKGUpfWZ1bmN0aW9uIEFuKHQsZSxyKXtyZXR1cm4oZT1TbihlKSlpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPXIsdH1jb25zdCB4bj1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTthc3luYyBmdW5jdGlvbiB6bih0LGU9e30pe2xldCByPXdyKGUsImZzIiksbj13cihlLCJjaHVua1NpemUiKTtpZihacihuKXx8KG49NjcxMDg4NjQpLG49bG4obiksIWduKHQse2ZzOnJ9KSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKTtsZXQgbz1mdW5jdGlvbigpe2xldCB0LGUscj1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oKXt0PWFyZ3VtZW50c1swXSxlPWFyZ3VtZW50c1sxXX0pKTtyZXR1cm4gci5yZXNvbHZlPXQsci5yZWplY3Q9ZSxyfSgpO3RyeXtsZXR7Y3JlYXRlNjQ6ZX09YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3R7ZXhwb3J0czp7bWVtOmUseHhoMzI6cix4eGg2NDpuLGluaXQzMjpvLHVwZGF0ZTMyOnUsZGlnZXN0MzI6aSxpbml0NjQ6YSx1cGRhdGU2NDpjLGRpZ2VzdDY0OmZ9fT10O2xldCBzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKTtmdW5jdGlvbiBsKHQscil7aWYoZS5idWZmZXIuYnl0ZUxlbmd0aDx0K3Ipe2NvbnN0IG49TWF0aC5jZWlsKCh0K3ItZS5idWZmZXIuYnl0ZUxlbmd0aCkvNjU1MzYpO2UuZ3JvdyhuKSxzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKX19ZnVuY3Rpb24gcCh0LGUscixuLG8sdSl7bCh0KTtjb25zdCBpPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzLnNldChpKSxyKDAsZSksaS5zZXQocy5zdWJhcnJheSgwLHQpKSx7dXBkYXRlKGUpe2xldCByO3JldHVybiBzLnNldChpKSwic3RyaW5nIj09dHlwZW9mIGU/KGwoMyplLmxlbmd0aCx0KSxyPWIuZW5jb2RlSW50byhlLHMuc3ViYXJyYXkodCkpLndyaXR0ZW4pOihsKGUuYnl0ZUxlbmd0aCx0KSxzLnNldChlLHQpLHI9ZS5ieXRlTGVuZ3RoKSxuKDAsdCxyKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHRoaXN9LGRpZ2VzdDooKT0+KHMuc2V0KGkpLHUobygwKSkpfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0Pj4+MH1jb25zdCB2PTJuKio2NG4tMW47ZnVuY3Rpb24geSh0KXtyZXR1cm4gdCZ2fWNvbnN0IGI9bmV3IFRleHRFbmNvZGVyLGQ9MCxnPTBuO2Z1bmN0aW9uIF8odCxlPWQpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksaChyKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9ZnVuY3Rpb24gaih0LGU9Zyl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSx5KG4oMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1yZXR1cm57aDMyOl8saDMyVG9TdHJpbmc6KHQsZT1kKT0+Xyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIiksaDMyUmF3Oih0LGU9ZCk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxoKHIoMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGUzMjoodD1kKT0+cCg0OCx0LG8sdSxpLGgpLGg2NDpqLGg2NFRvU3RyaW5nOih0LGU9Zyk9PmoodCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKSxoNjRSYXc6KHQsZT1nKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHkobigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTY0Oih0PWcpPT5wKDg4LHQsYSxjLGYseSl9fSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoeG4pKS5pbnN0YW5jZSl9KCksdT1lKCksaT1yLmNyZWF0ZVJlYWRTdHJlYW0odCx7aGlnaFdhdGVyTWFyazpufSk7aS5vbigiZGF0YSIsKHQ9Pnt1LnVwZGF0ZSh0KX0pKSxpLm9uKCJlbmQiLCgoKT0+e2xldCB0PXUuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7by5yZXNvbHZlKHQpfSkpLGkub24oImVycm9yIixvLnJlamVjdCl9Y2F0Y2godCl7by5yZWplY3QodC50b1N0cmluZygpKX1yZXR1cm4gb31mdW5jdGlvbiBQbih0LGUpe3ZhciByPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gRW4odCxyPXt9KXtyZXR1cm4gem4odCxmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgcj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9QbihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe0FuKHQsZSxyW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpQbihPYmplY3QocikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpKX0pKX1yZXR1cm4gdH0oe2ZzOmV9LHIpKX1sZXQgY2hlY2tUb3RhbEhhc2g9YXN5bmMocixuLG8sdSk9PntsZXQgaT10LmpvaW4odSxvKSxhPSExO2lmKGE9X24oaSksIVpyKHIpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNpemUgaW4gcGF5bG9hZCJ9fWxldCBjPSExO2lmKGEpe2M9cj09PWUuc3RhdFN5bmMoaSkuc2l6ZX1sZXQgZj0hMTthJiZjJiZhd2FpdCBFbihpKS50aGVuKCh0PT57Zj1vPT09dH0pKS5jYXRjaCgodD0+e2NvbnNvbGUubG9nKCJmc0lzRmlsZShwYXRoRmlsZSkiLGksX24oaSkpLGNvbnNvbGUubG9nKHQpLGY9ITF9KSk7bGV0IHM9ZnVuY3Rpb24ocixuPTEpe3JldHVybiB3bihyLG4se3BhdGg6dCxmczplfSl9KHUpLGw9W107aXQocywodD0+e2xldCByPXQubmFtZS5pbmRleE9mKGAke299X2ApPj0wLHU9ZS5zdGF0U3luYyh0LnBhdGgpLnNpemU9PT1uO2lmKHImJnUpe2xldCBlPVlyKHQubmFtZSxgJHtvfV9gKSxyPShhPW51bGw9PShpPWUpPzA6aS5sZW5ndGgpP2lbYS0xXTp2b2lkIDA7aWYoIWZ1bmN0aW9uKHQpe3JldHVybiEhcG4odCkmJmRuKHQpPj0wfShyKSl0aHJvdyBjb25zb2xlLmxvZygidi5uYW1lIix0Lm5hbWUpLGNvbnNvbGUubG9nKCJzIixlKSxuZXcgRXJyb3IoYGNhbiBub3QgcGFyc2UgaW5kZXggaW4gdi5uYW1lWyR7dC5uYW1lfV1gKTtyPWRuKHIpLGwucHVzaChyKX12YXIgaSxhfSkpO2xldCBwPWVlKGwpPjA7cmV0dXJue3BhdGg6aSxiQWxsRXhpc3Q6YSxiQWxsU2l6ZTpjLGJBbGxIYXNoOmYsYlNsczpwLHNsa3M6bH19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tUb3RhbEhhc2gKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY2hlY2tUb3RhbEhhc2gKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(w,"base64").toString("utf8"));var w;function L(){let I=new i,w=function(M){try{return new s.Worker(M,{eval:!0})}catch(s){t(s)}}(M);if(!w)return t("invalid worker"),null;function L(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),M=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),i={mode:"call",id:M,fun:"main",input:[...arguments]};return w.postMessage(i),I.once(M,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function t(s){I.emit("error",s)}return w.on("message",(function(s){let M=s,i=M.mode;"emit"!==i&&"return"!==i||("emit"===i&&I.emit(M.evName,M.msg),"return"===i&&I.emit(M.id,M))})),w.on("error",t),w.on("exit",(s=>{1!==s&&t("exit code["+s+"] !== 1")})),function(){let s={mode:"init",type:"function",input:[...arguments]};w.postMessage(s)}([...arguments]),I.main=L,I.main=L,I.terminate=function(){w?(w.terminate(),w=void 0):t("worker has been terminated")},I}I=async function(){let s=[...arguments],M=L();return await M.main(...s).finally((()=>{M.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return I}(s)}({get exports(){return M},set exports(s){M=s}});var i=M,I={};!function(s,M){s.exports=function(){const s="function"==typeof Buffer,M="function"==typeof TextDecoder?new TextDecoder:void 0,i=(s=>{let M={};return s.forEach(((s,i)=>M[s]=i)),M})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),I=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,w=String.fromCharCode.bind(String),L="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):s=>new Uint8Array(Array.prototype.slice.call(s,0)),t=s=>s.replace(/[^A-Za-z0-9\+\/]/g,""),c=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,d=s=>{switch(s.length){case 4:var M=((7&s.charCodeAt(0))<<18|(63&s.charCodeAt(1))<<12|(63&s.charCodeAt(2))<<6|63&s.charCodeAt(3))-65536;return w(55296+(M>>>10))+w(56320+(1023&M));case 3:return w((15&s.charCodeAt(0))<<12|(63&s.charCodeAt(1))<<6|63&s.charCodeAt(2));default:return w((31&s.charCodeAt(0))<<6|63&s.charCodeAt(1))}},l=s=>s.replace(c,d),n=s=>{if(s=s.replace(/\s+/g,""),!I.test(s))throw new TypeError("malformed base64.");s+="==".slice(2-(3&s.length));let M,L,t,c="";for(let I=0;I<s.length;)M=i[s.charAt(I++)]<<18|i[s.charAt(I++)]<<12|(L=i[s.charAt(I++)])<<6|(t=i[s.charAt(I++)]),c+=64===L?w(M>>16&255):64===t?w(M>>16&255,M>>8&255):w(M>>16&255,M>>8&255,255&M);return c},e="function"==typeof atob?s=>atob(t(s)):s?s=>Buffer.from(s,"base64").toString("binary"):n,y=s?s=>L(Buffer.from(s,"base64")):s=>L(e(s).split("").map((s=>s.charCodeAt(0)))),D=s?s=>Buffer.from(s,"base64").toString("utf8"):M?s=>M.decode(y(s)):s=>l(e(s)),C=s=>t(s.replace(/[-_]/g,(s=>"-"==s?"+":"/"))),o=s=>D(C(s)),m=o;var Z={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return Z},set exports(s){Z=s}});var N=Z;let u;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let s=m("CgoKInVzZSBzdHJpY3QiO3ZhciB0PXJlcXVpcmUoInBhdGgiKSxlPXJlcXVpcmUoImZzIik7ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8biYmITEhPT1lKHRbcl0scix0KTspO3JldHVybiB0fXZhciBuLG89ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbz0tMSx1PU9iamVjdCh0KSxpPXIodCksYT1pLmxlbmd0aDthLS07KXt2YXIgYz1pW24/YTorK29dO2lmKCExPT09ZSh1W2NdLGMsdSkpYnJlYWt9cmV0dXJuIHR9O3ZhciB1PSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxpPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsYT11fHxpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGM9YS5TeW1ib2wsZj1PYmplY3QucHJvdG90eXBlLHM9Zi5oYXNPd25Qcm9wZXJ0eSxsPWYudG9TdHJpbmcscD1jP2MudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHY9IltvYmplY3QgTnVsbF0iLHk9IltvYmplY3QgVW5kZWZpbmVkXSIsYj1jP2MudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGQodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD95OnY6YiYmYiBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9cy5jYWxsKHQscCkscj10W3BdO3RyeXt0W3BdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89bC5jYWxsKHQpO3JldHVybiBuJiYoZT90W3BdPXI6ZGVsZXRlIHRbcF0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBoLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGcodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH1mdW5jdGlvbiBfKHQpe3JldHVybiBnKHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09ZCh0KX12YXIgaj1PYmplY3QucHJvdG90eXBlLG09ai5oYXNPd25Qcm9wZXJ0eSx3PWoucHJvcGVydHlJc0VudW1lcmFibGUsTz1fKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/XzpmdW5jdGlvbih0KXtyZXR1cm4gZyh0KSYmbS5jYWxsKHQsImNhbGxlZSIpJiYhdy5jYWxsKHQsImNhbGxlZSIpfSxTPUFycmF5LmlzQXJyYXk7dmFyIEE9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyx4PUEmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSx6PXgmJnguZXhwb3J0cz09PUE/YS5CdWZmZXI6dm9pZCAwLFA9KHo/ei5pc0J1ZmZlcjp2b2lkIDApfHxmdW5jdGlvbigpe3JldHVybiExfSxFPTkwMDcxOTkyNTQ3NDA5OTEsaz0vXig/OjB8WzEtOV1cZCopJC87ZnVuY3Rpb24gJCh0LGUpe3ZhciByPXR5cGVvZiB0O3JldHVybiEhKGU9bnVsbD09ZT9FOmUpJiYoIm51bWJlciI9PXJ8fCJzeW1ib2wiIT1yJiZrLnRlc3QodCkpJiZ0Pi0xJiZ0JTE9PTAmJnQ8ZX12YXIgRj05MDA3MTk5MjU0NzQwOTkxO2Z1bmN0aW9uIEwodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PUZ9dmFyIFQ9e307VFsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09VFsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09VFsiW29iamVjdCBJbnQ4QXJyYXldIl09VFsiW29iamVjdCBJbnQxNkFycmF5XSJdPVRbIltvYmplY3QgSW50MzJBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09VFsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPVRbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsVFsiW29iamVjdCBBcmd1bWVudHNdIl09VFsiW29iamVjdCBBcnJheV0iXT1UWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPVRbIltvYmplY3QgQm9vbGVhbl0iXT1UWyJbb2JqZWN0IERhdGFWaWV3XSJdPVRbIltvYmplY3QgRGF0ZV0iXT1UWyJbb2JqZWN0IEVycm9yXSJdPVRbIltvYmplY3QgRnVuY3Rpb25dIl09VFsiW29iamVjdCBNYXBdIl09VFsiW29iamVjdCBOdW1iZXJdIl09VFsiW29iamVjdCBPYmplY3RdIl09VFsiW29iamVjdCBSZWdFeHBdIl09VFsiW29iamVjdCBTZXRdIl09VFsiW29iamVjdCBTdHJpbmddIl09VFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBELEk9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyxNPUkmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxOPU0mJk0uZXhwb3J0cz09PUkmJnUucHJvY2VzcyxSPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PU0mJk0ucmVxdWlyZSYmTS5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIHR8fE4mJk4uYmluZGluZyYmTi5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKSxVPVImJlIuaXNUeXBlZEFycmF5LEI9VT8oRD1VLGZ1bmN0aW9uKHQpe3JldHVybiBEKHQpfSk6ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJkwodC5sZW5ndGgpJiYhIVRbZCh0KV19LEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQsZSl7dmFyIHI9Uyh0KSxuPSFyJiZPKHQpLG89IXImJiFuJiZQKHQpLHU9IXImJiFuJiYhbyYmQih0KSxpPXJ8fG58fG98fHUsYT1pP2Z1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49QXJyYXkodCk7KytyPHQ7KW5bcl09ZShyKTtyZXR1cm4gbn0odC5sZW5ndGgsU3RyaW5nKTpbXSxjPWEubGVuZ3RoO2Zvcih2YXIgZiBpbiB0KSFlJiYhQy5jYWxsKHQsZil8fGkmJigibGVuZ3RoIj09Znx8byYmKCJvZmZzZXQiPT1mfHwicGFyZW50Ij09Zil8fHUmJigiYnVmZmVyIj09Znx8ImJ5dGVMZW5ndGgiPT1mfHwiYnl0ZU9mZnNldCI9PWYpfHwkKGYsYykpfHxhLnB1c2goZik7cmV0dXJuIGF9dmFyIHE9T2JqZWN0LnByb3RvdHlwZTt2YXIgVj1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksRz1WLEg9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKKHQpe2lmKHI9KGU9dCkmJmUuY29uc3RydWN0b3IsZSE9PSgiZnVuY3Rpb24iPT10eXBlb2YgciYmci5wcm90b3R5cGV8fHEpKXJldHVybiBHKHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKUguY2FsbCh0LG8pJiYiY29uc3RydWN0b3IiIT1vJiZuLnB1c2gobyk7cmV0dXJuIG59ZnVuY3Rpb24gSyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgUT0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsWD0iW29iamVjdCBGdW5jdGlvbl0iLFk9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixaPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gdHQodCl7aWYoIUsodCkpcmV0dXJuITE7dmFyIGU9ZCh0KTtyZXR1cm4gZT09WHx8ZT09WXx8ZT09UXx8ZT09Wn1mdW5jdGlvbiBldCh0KXtyZXR1cm4gbnVsbCE9dCYmTCh0Lmxlbmd0aCkmJiF0dCh0KX1mdW5jdGlvbiBydCh0KXtyZXR1cm4gZXQodCk/Vyh0KTpKKHQpfXZhciBudD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyLG4pe2lmKG51bGw9PXIpcmV0dXJuIHI7aWYoIWV0KHIpKXJldHVybiB0KHIsbik7Zm9yKHZhciBvPXIubGVuZ3RoLHU9ZT9vOi0xLGk9T2JqZWN0KHIpOyhlP3UtLTorK3U8bykmJiExIT09bihpW3VdLHUsaSk7KTtyZXR1cm4gcn19KChmdW5jdGlvbih0LGUpe3JldHVybiB0JiZvKHQsZSxydCl9KSksb3Q9bnQ7ZnVuY3Rpb24gdXQodCl7cmV0dXJuIHR9ZnVuY3Rpb24gaXQodCxlKXt2YXIgbjtyZXR1cm4oUyh0KT9yOm90KSh0LCJmdW5jdGlvbiI9PXR5cGVvZihuPWUpP246dXQpfXZhciBhdCxjdD1hWyJfX2NvcmUtanNfc2hhcmVkX18iXSxmdD0oYXQ9L1teLl0rJC8uZXhlYyhjdCYmY3Qua2V5cyYmY3Qua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK2F0OiIiO3ZhciBzdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbHQodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBzdC5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn12YXIgcHQ9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8saHQ9RnVuY3Rpb24ucHJvdG90eXBlLHZ0PU9iamVjdC5wcm90b3R5cGUseXQ9aHQudG9TdHJpbmcsYnQ9dnQuaGFzT3duUHJvcGVydHksZHQ9UmVnRXhwKCJeIit5dC5jYWxsKGJ0KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBndCh0KXtyZXR1cm4hKCFLKHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIWZ0JiZmdCBpbiB0fSh0KSkmJih0dCh0KT9kdDpwdCkudGVzdChsdCh0KSl9ZnVuY3Rpb24gX3QodCxlKXt2YXIgcj1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfSh0LGUpO3JldHVybiBndChyKT9yOnZvaWQgMH12YXIganQ9X3QoYSwiRGF0YVZpZXciKSxtdD1fdChhLCJNYXAiKSx3dD1fdChhLCJQcm9taXNlIiksT3Q9X3QoYSwiU2V0IiksU3Q9X3QoYSwiV2Vha01hcCIpLEF0PSJbb2JqZWN0IE1hcF0iLHh0PSJbb2JqZWN0IFByb21pc2VdIix6dD0iW29iamVjdCBTZXRdIixQdD0iW29iamVjdCBXZWFrTWFwXSIsRXQ9IltvYmplY3QgRGF0YVZpZXddIixrdD1sdChqdCksJHQ9bHQobXQpLEZ0PWx0KHd0KSxMdD1sdChPdCksVHQ9bHQoU3QpLER0PWQ7KGp0JiZEdChuZXcganQobmV3IEFycmF5QnVmZmVyKDEpKSkhPUV0fHxtdCYmRHQobmV3IG10KSE9QXR8fHd0JiZEdCh3dC5yZXNvbHZlKCkpIT14dHx8T3QmJkR0KG5ldyBPdCkhPXp0fHxTdCYmRHQobmV3IFN0KSE9UHQpJiYoRHQ9ZnVuY3Rpb24odCl7dmFyIGU9ZCh0KSxyPSJbb2JqZWN0IE9iamVjdF0iPT1lP3QuY29uc3RydWN0b3I6dm9pZCAwLG49cj9sdChyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGt0OnJldHVybiBFdDtjYXNlICR0OnJldHVybiBBdDtjYXNlIEZ0OnJldHVybiB4dDtjYXNlIEx0OnJldHVybiB6dDtjYXNlIFR0OnJldHVybiBQdH1yZXR1cm4gZX0pO3ZhciBJdD1EdCxNdD0iW29iamVjdCBTdHJpbmddIjtmdW5jdGlvbiBOdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fXZhciBSdD1OdCgibGVuZ3RoIiksVXQ9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO2Z1bmN0aW9uIEJ0KHQpe3JldHVybiBVdC50ZXN0KHQpfXZhciBDdD0iXFx1ZDgwMC1cXHVkZmZmIixXdD0iWyIrQ3QrIl0iLHF0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIsVnQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsR3Q9IlteIitDdCsiXSIsSHQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLEp0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixLdD0iKD86IitxdCsifCIrVnQrIikiKyI/IixRdD0iW1xcdWZlMGVcXHVmZTBmXT8iLFh0PVF0K0t0KygiKD86XFx1MjAwZCg/OiIrW0d0LEh0LEp0XS5qb2luKCJ8IikrIikiK1F0K0t0KyIpKiIpLFl0PSIoPzoiK1tHdCtxdCsiPyIscXQsSHQsSnQsV3RdLmpvaW4oInwiKSsiKSIsWnQ9UmVnRXhwKFZ0KyIoPz0iK1Z0KyIpfCIrWXQrWHQsImciKTtmdW5jdGlvbiB0ZSh0KXtyZXR1cm4gQnQodCk/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVp0Lmxhc3RJbmRleD0wO1p0LnRlc3QodCk7KSsrZTtyZXR1cm4gZX0odCk6UnQodCl9ZnVuY3Rpb24gZWUodCl7aWYobnVsbD09dClyZXR1cm4gMDtpZihldCh0KSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mKGU9dCl8fCFTKGUpJiZnKGUpJiZkKGUpPT1NdD90ZSh0KTp0Lmxlbmd0aDt2YXIgZSxyPUl0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6Sih0KS5sZW5ndGh9ZnVuY3Rpb24gcmUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb31mdW5jdGlvbiBuZSh0LGUpe3JldHVybiB0PT09ZXx8dCE9dCYmZSE9ZX1mdW5jdGlvbiBvZSh0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS07KWlmKG5lKHRbcl1bMF0sZSkpcmV0dXJuIHI7cmV0dXJuLTF9dmFyIHVlPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gaWUodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19aWUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0saWUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6dWUuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxpZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1vZShlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LGllLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIG9lKHRoaXMuX19kYXRhX18sdCk+LTF9LGllLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49b2Uocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc307dmFyIGFlPV90KE9iamVjdCwiY3JlYXRlIik7dmFyIGNlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGZlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gc2UodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gbGUodCxlKXt2YXIgcixuLG89dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihyPWUpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1yOm51bGw9PT1yKT9vWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOm8ubWFwfWZ1bmN0aW9uIHBlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXNlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189YWU/YWUobnVsbCk6e30sdGhpcy5zaXplPTB9LHNlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LHNlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihhZSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBjZS5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LHNlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztyZXR1cm4gYWU/dm9pZCAwIT09ZVt0XTpmZS5jYWxsKGUsdCl9LHNlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxyW3RdPWFlJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9LHBlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IHNlLG1hcDpuZXcobXR8fGllKSxzdHJpbmc6bmV3IHNlfX0scGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT1sZSh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxwZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBsZSh0aGlzLHQpLmdldCh0KX0scGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5oYXModCl9LHBlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1sZSh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTtmdW5jdGlvbiBoZSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fPW5ldyBpZSh0KTt0aGlzLnNpemU9ZS5zaXplfWhlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189bmV3IGllLHRoaXMuc2l6ZT0wfSxoZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxyfSxoZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX0saGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LGhlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBpZSl7dmFyIG49ci5fX2RhdGFfXztpZighbXR8fG4ubGVuZ3RoPDE5OSlyZXR1cm4gbi5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytyLnNpemUsdGhpcztyPXRoaXMuX19kYXRhX189bmV3IHBlKG4pfXJldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc307ZnVuY3Rpb24gdmUodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IHBlOysrZTxyOyl0aGlzLmFkZCh0W2VdKX1mdW5jdGlvbiB5ZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8bjspaWYoZSh0W3JdLHIsdCkpcmV0dXJuITA7cmV0dXJuITF9dmUucHJvdG90eXBlLmFkZD12ZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LHZlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTt2YXIgYmU9MSxkZT0yO2Z1bmN0aW9uIGdlKHQsZSxyLG4sbyx1KXt2YXIgaT1yJmJlLGE9dC5sZW5ndGgsYz1lLmxlbmd0aDtpZihhIT1jJiYhKGkmJmM+YSkpcmV0dXJuITE7dmFyIGY9dS5nZXQodCkscz11LmdldChlKTtpZihmJiZzKXJldHVybiBmPT1lJiZzPT10O3ZhciBsPS0xLHA9ITAsaD1yJmRlP25ldyB2ZTp2b2lkIDA7Zm9yKHUuc2V0KHQsZSksdS5zZXQoZSx0KTsrK2w8YTspe3ZhciB2PXRbbF0seT1lW2xdO2lmKG4pdmFyIGI9aT9uKHksdixsLGUsdCx1KTpuKHYseSxsLHQsZSx1KTtpZih2b2lkIDAhPT1iKXtpZihiKWNvbnRpbnVlO3A9ITE7YnJlYWt9aWYoaCl7aWYoIXllKGUsKGZ1bmN0aW9uKHQsZSl7aWYoaT1lLCFoLmhhcyhpKSYmKHY9PT10fHxvKHYsdCxyLG4sdSkpKXJldHVybiBoLnB1c2goZSk7dmFyIGl9KSkpe3A9ITE7YnJlYWt9fWVsc2UgaWYodiE9PXkmJiFvKHYseSxyLG4sdSkpe3A9ITE7YnJlYWt9fXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxwfXZhciBfZT1hLlVpbnQ4QXJyYXk7ZnVuY3Rpb24gamUodCl7dmFyIGU9LTEscj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsbil7clsrK2VdPVtuLHRdfSkpLHJ9ZnVuY3Rpb24gbWUodCl7dmFyIGU9LTEscj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JbKytlXT10fSkpLHJ9dmFyIHdlPTEsT2U9MixTZT0iW29iamVjdCBCb29sZWFuXSIsQWU9IltvYmplY3QgRGF0ZV0iLHhlPSJbb2JqZWN0IEVycm9yXSIsemU9IltvYmplY3QgTWFwXSIsUGU9IltvYmplY3QgTnVtYmVyXSIsRWU9IltvYmplY3QgUmVnRXhwXSIsa2U9IltvYmplY3QgU2V0XSIsJGU9IltvYmplY3QgU3RyaW5nXSIsRmU9IltvYmplY3QgU3ltYm9sXSIsTGU9IltvYmplY3QgQXJyYXlCdWZmZXJdIixUZT0iW29iamVjdCBEYXRhVmlld10iLERlPWM/Yy5wcm90b3R5cGU6dm9pZCAwLEllPURlP0RlLnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIE1lKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89MCx1PVtdOysrcjxuOyl7dmFyIGk9dFtyXTtlKGkscix0KSYmKHVbbysrXT1pKX1yZXR1cm4gdX12YXIgTmU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxSZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFVlPVJlP2Z1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOih0PU9iamVjdCh0KSxNZShSZSh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIE5lLmNhbGwodCxlKX0pKSl9OmZ1bmN0aW9uKCl7cmV0dXJuW119O2Z1bmN0aW9uIEJlKHQpe3JldHVybiBmdW5jdGlvbih0LGUscil7dmFyIG49ZSh0KTtyZXR1cm4gUyh0KT9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49ZS5sZW5ndGgsbz10Lmxlbmd0aDsrK3I8bjspdFtvK3JdPWVbcl07cmV0dXJuIHR9KG4scih0KSl9KHQscnQsVWUpfXZhciBDZT0xLFdlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIHFlPTEsVmU9IltvYmplY3QgQXJndW1lbnRzXSIsR2U9IltvYmplY3QgQXJyYXldIixIZT0iW29iamVjdCBPYmplY3RdIixKZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEtlKHQsZSxyLG4sbyx1KXt2YXIgaT1TKHQpLGE9UyhlKSxjPWk/R2U6SXQodCksZj1hP0dlOkl0KGUpLHM9KGM9Yz09VmU/SGU6Yyk9PUhlLGw9KGY9Zj09VmU/SGU6Zik9PUhlLHA9Yz09ZjtpZihwJiZQKHQpKXtpZighUChlKSlyZXR1cm4hMTtpPSEwLHM9ITF9aWYocCYmIXMpcmV0dXJuIHV8fCh1PW5ldyBoZSksaXx8Qih0KT9nZSh0LGUscixuLG8sdSk6ZnVuY3Rpb24odCxlLHIsbixvLHUsaSl7c3dpdGNoKHIpe2Nhc2UgVGU6aWYodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9ZS5ieXRlT2Zmc2V0KXJldHVybiExO3Q9dC5idWZmZXIsZT1lLmJ1ZmZlcjtjYXNlIExlOnJldHVybiEodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fCF1KG5ldyBfZSh0KSxuZXcgX2UoZSkpKTtjYXNlIFNlOmNhc2UgQWU6Y2FzZSBQZTpyZXR1cm4gbmUoK3QsK2UpO2Nhc2UgeGU6cmV0dXJuIHQubmFtZT09ZS5uYW1lJiZ0Lm1lc3NhZ2U9PWUubWVzc2FnZTtjYXNlIEVlOmNhc2UgJGU6cmV0dXJuIHQ9PWUrIiI7Y2FzZSB6ZTp2YXIgYT1qZTtjYXNlIGtlOnZhciBjPW4md2U7aWYoYXx8KGE9bWUpLHQuc2l6ZSE9ZS5zaXplJiYhYylyZXR1cm4hMTt2YXIgZj1pLmdldCh0KTtpZihmKXJldHVybiBmPT1lO258PU9lLGkuc2V0KHQsZSk7dmFyIHM9Z2UoYSh0KSxhKGUpLG4sbyx1LGkpO3JldHVybiBpLmRlbGV0ZSh0KSxzO2Nhc2UgRmU6aWYoSWUpcmV0dXJuIEllLmNhbGwodCk9PUllLmNhbGwoZSl9cmV0dXJuITF9KHQsZSxjLHIsbixvLHUpO2lmKCEociZxZSkpe3ZhciBoPXMmJkplLmNhbGwodCwiX193cmFwcGVkX18iKSx2PWwmJkplLmNhbGwoZSwiX193cmFwcGVkX18iKTtpZihofHx2KXt2YXIgeT1oP3QudmFsdWUoKTp0LGI9dj9lLnZhbHVlKCk6ZTtyZXR1cm4gdXx8KHU9bmV3IGhlKSxvKHksYixyLG4sdSl9fXJldHVybiEhcCYmKHV8fCh1PW5ldyBoZSksZnVuY3Rpb24odCxlLHIsbixvLHUpe3ZhciBpPXImQ2UsYT1CZSh0KSxjPWEubGVuZ3RoO2lmKGMhPUJlKGUpLmxlbmd0aCYmIWkpcmV0dXJuITE7Zm9yKHZhciBmPWM7Zi0tOyl7dmFyIHM9YVtmXTtpZighKGk/cyBpbiBlOldlLmNhbGwoZSxzKSkpcmV0dXJuITF9dmFyIGw9dS5nZXQodCkscD11LmdldChlKTtpZihsJiZwKXJldHVybiBsPT1lJiZwPT10O3ZhciBoPSEwO3Uuc2V0KHQsZSksdS5zZXQoZSx0KTtmb3IodmFyIHY9aTsrK2Y8Yzspe3ZhciB5PXRbcz1hW2ZdXSxiPWVbc107aWYobil2YXIgZD1pP24oYix5LHMsZSx0LHUpOm4oeSxiLHMsdCxlLHUpO2lmKCEodm9pZCAwPT09ZD95PT09Ynx8byh5LGIscixuLHUpOmQpKXtoPSExO2JyZWFrfXZ8fCh2PSJjb25zdHJ1Y3RvciI9PXMpfWlmKGgmJiF2KXt2YXIgZz10LmNvbnN0cnVjdG9yLF89ZS5jb25zdHJ1Y3RvcjtnPT1ffHwhKCJjb25zdHJ1Y3RvciJpbiB0KXx8ISgiY29uc3RydWN0b3IiaW4gZSl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnJiZnIGluc3RhbmNlb2YgZyYmImZ1bmN0aW9uIj09dHlwZW9mIF8mJl8gaW5zdGFuY2VvZiBffHwoaD0hMSl9cmV0dXJuIHUuZGVsZXRlKHQpLHUuZGVsZXRlKGUpLGh9KHQsZSxyLG4sbyx1KSl9ZnVuY3Rpb24gUWUodCxlLHIsbixvKXtyZXR1cm4gdD09PWV8fChudWxsPT10fHxudWxsPT1lfHwhZyh0KSYmIWcoZSk/dCE9dCYmZSE9ZTpLZSh0LGUscixuLFFlLG8pKX12YXIgWGU9MSxZZT0yO2Z1bmN0aW9uIFplKHQpe3JldHVybiB0PT10JiYhSyh0KX1mdW5jdGlvbiB0cih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbnVsbCE9ciYmKHJbdF09PT1lJiYodm9pZCAwIT09ZXx8dCBpbiBPYmplY3QocikpKX19ZnVuY3Rpb24gZXIodCl7dmFyIGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXJ0KHQpLHI9ZS5sZW5ndGg7ci0tOyl7dmFyIG49ZVtyXSxvPXRbbl07ZVtyXT1bbixvLFplKG8pXX1yZXR1cm4gZX0odCk7cmV0dXJuIDE9PWUubGVuZ3RoJiZlWzBdWzJdP3RyKGVbMF1bMF0sZVswXVsxXSk6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT10fHxmdW5jdGlvbih0LGUscixuKXt2YXIgbz1yLmxlbmd0aCx1PW8saT0hbjtpZihudWxsPT10KXJldHVybiF1O2Zvcih0PU9iamVjdCh0KTtvLS07KXt2YXIgYT1yW29dO2lmKGkmJmFbMl0/YVsxXSE9PXRbYVswXV06IShhWzBdaW4gdCkpcmV0dXJuITF9Zm9yKDsrK288dTspe3ZhciBjPShhPXJbb10pWzBdLGY9dFtjXSxzPWFbMV07aWYoaSYmYVsyXSl7aWYodm9pZCAwPT09ZiYmIShjIGluIHQpKXJldHVybiExfWVsc2V7dmFyIGw9bmV3IGhlO2lmKG4pdmFyIHA9bihmLHMsYyx0LGUsbCk7aWYoISh2b2lkIDA9PT1wP1FlKHMsZixYZXxZZSxuLGwpOnApKXJldHVybiExfX1yZXR1cm4hMH0ocix0LGUpfX12YXIgcnI9IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24gbnIodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxnKHQpJiZkKHQpPT1ycn12YXIgb3I9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sdXI9L15cdyokLztmdW5jdGlvbiBpcih0LGUpe2lmKFModCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIW5yKHQpKXx8KHVyLnRlc3QodCl8fCFvci50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKSl9dmFyIGFyPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBjcih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKGFyKTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0sdT1yLmNhY2hlO2lmKHUuaGFzKG8pKXJldHVybiB1LmdldChvKTt2YXIgaT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9dS5zZXQobyxpKXx8dSxpfTtyZXR1cm4gci5jYWNoZT1uZXcoY3IuQ2FjaGV8fHBlKSxyfWNyLkNhY2hlPXBlO3ZhciBmcj0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxzcj0vXFwoXFwpPy9nLGxyPWZ1bmN0aW9uKHQpe3ZhciBlPWNyKHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoZnIsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShzciwiJDEiKTpyfHx0KX0pKSxlfSkpLHByPWxyLGhyPTEvMCx2cj1jP2MucHJvdG90eXBlOnZvaWQgMCx5cj12cj92ci50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYnIodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKFModCkpcmV0dXJuIHJlKHQsYnIpKyIiO2lmKG5yKHQpKXJldHVybiB5cj95ci5jYWxsKHQpOiIiO3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1ocj8iLTAiOmV9ZnVuY3Rpb24gZHIodCl7cmV0dXJuIG51bGw9PXQ/IiI6YnIodCl9ZnVuY3Rpb24gZ3IodCxlKXtyZXR1cm4gUyh0KT90OmlyKHQsZSk/W3RdOnByKGRyKHQpKX12YXIgX3I9MS8wO2Z1bmN0aW9uIGpyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8bnIodCkpcmV0dXJuIHQ7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LV9yPyItMCI6ZX1mdW5jdGlvbiBtcih0LGUpe2Zvcih2YXIgcj0wLG49KGU9Z3IoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W2pyKGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfWZ1bmN0aW9uIHdyKHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDptcih0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBPcih0LGUpe3JldHVybiBudWxsIT10JiZlIGluIE9iamVjdCh0KX1mdW5jdGlvbiBTcih0LGUpe3JldHVybiBudWxsIT10JiZmdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPS0xLG89KGU9Z3IoZSx0KSkubGVuZ3RoLHU9ITE7KytuPG87KXt2YXIgaT1qcihlW25dKTtpZighKHU9bnVsbCE9dCYmcih0LGkpKSlicmVhazt0PXRbaV19cmV0dXJuIHV8fCsrbiE9bz91OiEhKG89bnVsbD09dD8wOnQubGVuZ3RoKSYmTChvKSYmJChpLG8pJiYoUyh0KXx8Tyh0KSl9KHQsZSxPcil9dmFyIEFyPTEseHI9MjtmdW5jdGlvbiB6cih0KXtyZXR1cm4gaXIodCk/TnQoanIodCkpOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbXIoZSx0KX19KHQpfWZ1bmN0aW9uIFByKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bnVsbD09dD91dDoib2JqZWN0Ij09dHlwZW9mIHQ/Uyh0KT9mdW5jdGlvbih0LGUpe3JldHVybiBpcih0KSYmWmUoZSk/dHIoanIodCksZSk6ZnVuY3Rpb24ocil7dmFyIG49d3Iocix0KTtyZXR1cm4gdm9pZCAwPT09biYmbj09PWU/U3Iocix0KTpRZShlLG4sQXJ8eHIpfX0odFswXSx0WzFdKTplcih0KTp6cih0KX1mdW5jdGlvbiBFcih0LGUpe3ZhciByPS0xLG49ZXQodCk/QXJyYXkodC5sZW5ndGgpOltdO3JldHVybiBvdCh0LChmdW5jdGlvbih0LG8sdSl7blsrK3JdPWUodCxvLHUpfSkpLG59ZnVuY3Rpb24ga3IodCxlKXtyZXR1cm4oUyh0KT9yZTpFcikodCxQcihlKSl9dmFyICRyPS9ccy87dmFyIEZyPS9eXHMrLztmdW5jdGlvbiBMcih0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmJHIudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShGciwiIik6dH1mdW5jdGlvbiBUcih0LGUscil7dmFyIG49dC5sZW5ndGg7cmV0dXJuIHI9dm9pZCAwPT09cj9uOnIsIWUmJnI+PW4/dDpmdW5jdGlvbih0LGUscil7dmFyIG49LTEsbz10Lmxlbmd0aDtlPDAmJihlPS1lPm8/MDpvK2UpLChyPXI+bz9vOnIpPDAmJihyKz1vKSxvPWU+cj8wOnItZT4+PjAsZT4+Pj0wO2Zvcih2YXIgdT1BcnJheShvKTsrK248bzspdVtuXT10W24rZV07cmV0dXJuIHV9KHQsZSxyKX1mdW5jdGlvbiBEcih0KXtyZXR1cm4gdCE9dH1mdW5jdGlvbiBJcih0LGUscil7cmV0dXJuIGU9PWU/ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1yLTEsbz10Lmxlbmd0aDsrK248bzspaWYodFtuXT09PWUpcmV0dXJuIG47cmV0dXJuLTF9KHQsZSxyKTpmdW5jdGlvbih0LGUscixuKXtmb3IodmFyIG89dC5sZW5ndGgsdT1yKyhuPzE6LTEpO24/dS0tOisrdTxvOylpZihlKHRbdV0sdSx0KSlyZXR1cm4gdTtyZXR1cm4tMX0odCxEcixyKX12YXIgTXI9IlxcdWQ4MDAtXFx1ZGZmZiIsTnI9IlsiK01yKyJdIixScj0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFVyPSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEJyPSJbXiIrTXIrIl0iLENyPSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixXcj0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIscXI9Iig/OiIrUnIrInwiK1VyKyIpIisiPyIsVnI9IltcXHVmZTBlXFx1ZmUwZl0/IixHcj1WcitxcisoIig/OlxcdTIwMGQoPzoiK1tCcixDcixXcl0uam9pbigifCIpKyIpIitWcitxcisiKSoiKSxIcj0iKD86IitbQnIrUnIrIj8iLFJyLENyLFdyLE5yXS5qb2luKCJ8IikrIikiLEpyPVJlZ0V4cChVcisiKD89IitVcisiKXwiK0hyK0dyLCJnIik7ZnVuY3Rpb24gS3IodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoKEpyKXx8W119KHQpOmZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KCIiKX0odCl9ZnVuY3Rpb24gUXIodCxlLHIpe2lmKCh0PWRyKHQpKSYmKHJ8fHZvaWQgMD09PWUpKXJldHVybiBMcih0KTtpZighdHx8IShlPWJyKGUpKSlyZXR1cm4gdDt2YXIgbj1Lcih0KSxvPUtyKGUpLHU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj10Lmxlbmd0aDsrK3I8biYmSXIoZSx0W3JdLDApPi0xOyk7cmV0dXJuIHJ9KG4sbyksaT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJklyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pKzE7cmV0dXJuIFRyKG4sdSxpKS5qb2luKCIiKX1mdW5jdGlvbiBYcih0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gWXIodCxlKXtpZighWHIodCkpcmV0dXJuW107aWYoIVhyKGUpKXJldHVybltdO2xldCByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFhyKHQpJiZYcihlKT90LnNwbGl0KGUpOltdfSh0LGUpO3I9a3IocixRcik7bGV0IG49W107cmV0dXJuIGl0KHIsKGZ1bmN0aW9uKHQpe1hyKHQpJiZuLnB1c2godCl9KSksbn1mdW5jdGlvbiBacih0KXtsZXQgZT0hMTtpZihYcih0KSllPSFpc05hTihOdW1iZXIodCkpO2Vsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCE9dH0odCkpcmV0dXJuITE7ZT0hMH1yZXR1cm4gZX12YXIgdG49TmFOLGVuPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHJuPS9eMGJbMDFdKyQvaSxubj0vXjBvWzAtN10rJC9pLG9uPXBhcnNlSW50O2Z1bmN0aW9uIHVuKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihucih0KSlyZXR1cm4gdG47aWYoSyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9SyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9THIodCk7dmFyIHI9cm4udGVzdCh0KTtyZXR1cm4gcnx8bm4udGVzdCh0KT9vbih0LnNsaWNlKDIpLHI/Mjo4KTplbi50ZXN0KHQpP3RuOit0fXZhciBhbj0xLzAsY249MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIGZuKHQpe3JldHVybiB0Pyh0PXVuKHQpKT09PWFufHx0PT09LWFuPyh0PDA/LTE6MSkqY246dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIHNuKHQpe3ZhciBlPWZuKHQpLHI9ZSUxO3JldHVybiBlPT1lP3I/ZS1yOmU6MH1mdW5jdGlvbiBsbih0KXtpZighWnIodCkpcmV0dXJuIDA7cmV0dXJuIGZuKHQpfWZ1bmN0aW9uIHBuKHQpe3JldHVybiEhWnIodCkmJih0PWxuKHQpLCJudW1iZXIiPT10eXBlb2YoZT10KSYmZT09c24oZSkpO3ZhciBlfXZhciBobj1hLmlzRmluaXRlLHZuPU1hdGgubWluO3ZhciB5bj1mdW5jdGlvbih0KXt2YXIgZT1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LHIpe2lmKHQ9dW4odCksKHI9bnVsbD09cj8wOnZuKHNuKHIpLDI5MikpJiZobih0KSl7dmFyIG49KGRyKHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShkcihlKG5bMF0rImUiKygrblsxXStyKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1yKSl9cmV0dXJuIGUodCl9fSgicm91bmQiKSxibj15bjtmdW5jdGlvbiBkbih0KXtpZighWnIodCkpcmV0dXJuIDA7dD1sbih0KTtsZXQgZT1ibih0KTtyZXR1cm4iMCI9PT1TdHJpbmcoZSk/MDplfWZ1bmN0aW9uIGduKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKTtyZXR1cm4hIXIuZXhpc3RzU3luYyh0KSYmKCFyLmxzdGF0U3luYyh0KS5pc0RpcmVjdG9yeSgpJiYhci5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKSl9ZnVuY3Rpb24gX24odCl7cmV0dXJuIGduKHQse2ZzOmV9KX1mdW5jdGlvbiBqbih0LGUpe3ZhciByPVtdO3JldHVybiBvdCh0LChmdW5jdGlvbih0LG4sbyl7ZSh0LG4sbykmJnIucHVzaCh0KX0pKSxyfWZ1bmN0aW9uIG1uKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKTtpZighci5leGlzdHNTeW5jKHQpKXJldHVybiExO2xldCBuPXIubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIHduKHQsZT0xLHI9e30pe2xldCBuPXdyKHIsInBhdGgiKSxvPXdyKHIsImZzIik7aWYoIW1uKHQse2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO2xldCB1PVtdO3ZhciBpLGE7cmV0dXJuIHU9ZnVuY3Rpb24odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIW1uKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBmdW5jdGlvbiB0KHIpe2xldCBpPVtdO3JldHVybiBtbihyLHtmczp1fSk/KGl0KHUucmVhZGRpclN5bmMociksKGZ1bmN0aW9uKGEpe2xldCBjPW8ucmVzb2x2ZShyLGEpLGY9bnVsbDt0cnl7Zj11LnN0YXRTeW5jKGMpfWNhdGNoKHQpe31mJiZmLmlzRGlyZWN0b3J5KCk/KGkucHVzaCh7aXNGb2xkZXI6ITAsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSksbis9MSwobjw9ZXx8bnVsbD09PWUpJiYoaT1pLmNvbmNhdCh0KGMpKSksbi09MSk6aS5wdXNoKHtpc0ZvbGRlcjohMSxsZXZlbDpuLHBhdGg6YyxuYW1lOm8uYmFzZW5hbWUoYyl9KX0pKSxpKTppfSh0KX0odCxlLHtwYXRoOm4sZnM6b30pLGE9e2lzRm9sZGVyOiExfSx1PShTKGk9dSk/TWU6am4pKGksUHIoYSkpLHU9a3IodSwodD0+KGRlbGV0ZSB0LmlzRm9sZGVyLHQpKSksdX1mdW5jdGlvbiBPbih0KXtyZXR1cm4gT249ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LE9uKHQpfWZ1bmN0aW9uIFNuKHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPT1Pbih0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LGV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1PbihuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09T24oZSk/ZTpTdHJpbmcoZSl9ZnVuY3Rpb24gQW4odCxlLHIpe3JldHVybihlPVNuKGUpKWluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fWNvbnN0IHhuPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIHpuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPXdyKGUsImNodW5rU2l6ZSIpO2lmKFpyKG4pfHwobj02NzEwODg2NCksbj1sbihuKSwhZ24odCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBvPWZ1bmN0aW9uKCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyx1LGksaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSx1PWUoKSxpPXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTtpLm9uKCJkYXRhIiwodD0+e3UudXBkYXRlKHQpfSkpLGkub24oImVuZCIsKCgpPT57bGV0IHQ9dS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtvLnJlc29sdmUodCl9KSksaS5vbigiZXJyb3IiLG8ucmVqZWN0KX1jYXRjaCh0KXtvLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBvfWZ1bmN0aW9uIFBuKHQsZSl7dmFyIHI9T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYobj1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBFbih0LHI9e30pe3JldHVybiB6bih0LGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1tlXT9hcmd1bWVudHNbZV06e307ZSUyP1BuKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7QW4odCxlLHJbZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOlBuKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSkpfXJldHVybiB0fSh7ZnM6ZX0scikpfWxldCBjaGVja1RvdGFsSGFzaD1hc3luYyhyLG4sbyx1KT0+e2xldCBpPXQuam9pbih1LG8pLGE9ITE7aWYoYT1fbihpKSwhWnIocikpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlU2l6ZSBpbiBwYXlsb2FkIn19bGV0IGM9ITE7aWYoYSl7Yz1yPT09ZS5zdGF0U3luYyhpKS5zaXplfWxldCBmPSExO2EmJmMmJmF3YWl0IEVuKGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxfbihpKSksY29uc29sZS5sb2codCksZj0hMX0pKTtsZXQgcz1mdW5jdGlvbihyLG49MSl7cmV0dXJuIHduKHIsbix7cGF0aDp0LGZzOmV9KX0odSksbD1bXTtpdChzLCh0PT57bGV0IHI9dC5uYW1lLmluZGV4T2YoYCR7b31fYCk+PTAsdT1lLnN0YXRTeW5jKHQucGF0aCkuc2l6ZT09PW47aWYociYmdSl7bGV0IGU9WXIodC5uYW1lLGAke299X2ApLHI9KGE9bnVsbD09KGk9ZSk/MDppLmxlbmd0aCk/aVthLTFdOnZvaWQgMDtpZighZnVuY3Rpb24odCl7cmV0dXJuISFwbih0KSYmZG4odCk+PTB9KHIpKXRocm93IGNvbnNvbGUubG9nKCJ2Lm5hbWUiLHQubmFtZSksY29uc29sZS5sb2coInMiLGUpLG5ldyBFcnJvcihgY2FuIG5vdCBwYXJzZSBpbmRleCBpbiB2Lm5hbWVbJHt0Lm5hbWV9XWApO3I9ZG4ociksbC5wdXNoKHIpfXZhciBpLGF9KSk7bGV0IHA9ZWUobCk+MDtyZXR1cm57cGF0aDppLGJBbGxFeGlzdDphLGJBbGxTaXplOmMsYkFsbEhhc2g6ZixiU2xzOnAsc2xrczpsfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1RvdGFsSGFzaAogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjaGVja1RvdGFsSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZWN2TWVzc2FnZShlLmRhdGEpCiAgICAgICAgfQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==");function M(){let M=new N,i=function(s){try{let M=new Blob([s]),i=window.URL||window.webkitURL;return new Worker(i.createObjectURL(M))}catch(s){w(s)}}(s);if(!i)return w("invalid worker"),null;function I(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),I=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),w={mode:"call",id:I,fun:"main",input:[...arguments]};return i.postMessage(w),M.once(I,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function w(s){M.emit("error",s)}return i.onmessage=function(s){!function(s){let i=s,I=i.mode;"emit"!==I&&"return"!==I||("emit"===I&&M.emit(i.evName,i.msg),"return"===I&&M.emit(i.id,i))}(s.data)},i.onerror=w,i.onmessageerror=function(s){w(s.data)},function(){let s={mode:"init",type:"function",input:[...arguments]};i.postMessage(s)}([...arguments]),M.main=I,M.main=I,M.terminate=function(){i?(i.terminate(),i=void 0):w("worker has been terminated")},M}u=async function(){let s=[...arguments],i=M();return await i.main(...s).finally((()=>{i.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return u}()}({get exports(){return I},set exports(s){I=s}});var w=I;let L;return L="undefined"!=typeof window&&void 0!==window.document?w:i,L}(L)}({get exports(){return xw},set exports(s){xw=s}});var Xw=xw,rw={};!function(s,M){s.exports=function(s){var M={};!function(M,i){M.exports=function(s){var M={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return M},set exports(s){M=s}});var i=M;let I;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let M=(w="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5Xnt6jora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5Xnt6jora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5Xnt6jora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9T2JqZWN0LnByb3RvdHlwZTt2YXIgbixvLGk9KG49T2JqZWN0LmtleXMsbz1PYmplY3QsZnVuY3Rpb24odCl7cmV0dXJuIG4obyh0KSl9KSx1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYSh0KXtpZihuPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvdG90eXBlfHxyKSlyZXR1cm4gaSh0KTt2YXIgZSxuLG89W107Zm9yKHZhciBhIGluIE9iamVjdCh0KSl1LmNhbGwodCxhKSYmImNvbnN0cnVjdG9yIiE9YSYmby5wdXNoKGEpO3JldHVybiBvfXZhciBjPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxmPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYscz1jfHxmfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGw9cy5TeW1ib2wscD1PYmplY3QucHJvdG90eXBlLGg9cC5oYXNPd25Qcm9wZXJ0eSx5PXAudG9TdHJpbmcsdj1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIGQ9IltvYmplY3QgTnVsbF0iLGc9IltvYmplY3QgVW5kZWZpbmVkXSIsXz1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGoodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9nOmQ6XyYmXyBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9aC5jYWxsKHQsdikscj10W3ZdO3RyeXt0W3ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89eS5jYWxsKHQpO3JldHVybiBuJiYoZT90W3ZdPXI6ZGVsZXRlIHRbdl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBiLmNhbGwodCl9KHQpfWZ1bmN0aW9uIHcodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFM9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLE89IltvYmplY3QgRnVuY3Rpb25dIixtPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIseD0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHoodCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9aih0KTtyZXR1cm4gZT09T3x8ZT09bXx8ZT09U3x8ZT09eH12YXIgQSwkPXNbIl9fY29yZS1qc19zaGFyZWRfXyJdLEY9KEE9L1teLl0rJC8uZXhlYygkJiYkLmtleXMmJiQua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIFA9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIEwodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBQLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifXZhciBrPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEU9RnVuY3Rpb24ucHJvdG90eXBlLEk9T2JqZWN0LnByb3RvdHlwZSxOPUUudG9TdHJpbmcsVD1JLmhhc093blByb3BlcnR5LE09UmVnRXhwKCJeIitOLmNhbGwoVCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gUih0KXtyZXR1cm4hKCF3KHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIUYmJkYgaW4gdH0odCkpJiYoeih0KT9NOmspLnRlc3QoTCh0KSl9ZnVuY3Rpb24gVSh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIFIocik/cjp2b2lkIDB9dmFyIEI9VShzLCJEYXRhVmlldyIpLEM9VShzLCJNYXAiKSxEPVUocywiUHJvbWlzZSIpLFc9VShzLCJTZXQiKSxxPVUocywiV2Vha01hcCIpLFY9IltvYmplY3QgTWFwXSIsRz0iW29iamVjdCBQcm9taXNlXSIsSD0iW29iamVjdCBTZXRdIixKPSJbb2JqZWN0IFdlYWtNYXBdIixLPSJbb2JqZWN0IERhdGFWaWV3XSIsUT1MKEIpLFg9TChDKSxZPUwoRCksWj1MKFcpLHR0PUwocSksZXQ9ajsoQiYmZXQobmV3IEIobmV3IEFycmF5QnVmZmVyKDEpKSkhPUt8fEMmJmV0KG5ldyBDKSE9Vnx8RCYmZXQoRC5yZXNvbHZlKCkpIT1HfHxXJiZldChuZXcgVykhPUh8fHEmJmV0KG5ldyBxKSE9SikmJihldD1mdW5jdGlvbih0KXt2YXIgZT1qKHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0wocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBROnJldHVybiBLO2Nhc2UgWDpyZXR1cm4gVjtjYXNlIFk6cmV0dXJuIEc7Y2FzZSBaOnJldHVybiBIO2Nhc2UgdHQ6cmV0dXJuIEp9cmV0dXJuIGV9KTt2YXIgcnQ9ZXQsbnQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBvdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PW50fSh0Lmxlbmd0aCkmJiF6KHQpfXZhciBpdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHV0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9dmFyIGF0PSJbb2JqZWN0IFN0cmluZ10iO3ZhciBjdCxmdD0oY3Q9Imxlbmd0aCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbY3RdfSksc3Q9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBsdD0iXFx1ZDgwMC1cXHVkZmZmIixwdD0iWyIrbHQrIl0iLGh0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIseXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsdnQ9IlteIitsdCsiXSIsYnQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLGR0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixndD0iKD86IitodCsifCIreXQrIikiKyI/IixfdD0iW1xcdWZlMGVcXHVmZTBmXT8iLGp0PV90K2d0KygiKD86XFx1MjAwZCg/OiIrW3Z0LGJ0LGR0XS5qb2luKCJ8IikrIikiK190K2d0KyIpKiIpLHd0PSIoPzoiK1t2dCtodCsiPyIsaHQsYnQsZHQscHRdLmpvaW4oInwiKSsiKSIsU3Q9UmVnRXhwKHl0KyIoPz0iK3l0KyIpfCIrd3QranQsImciKTtmdW5jdGlvbiBPdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHN0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1TdC5sYXN0SW5kZXg9MDtTdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOmZ0KHQpfWZ1bmN0aW9uIG10KHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYob3QodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhaXQoZSkmJnV0KGUpJiZqKGUpPT1hdD9PdCh0KTp0Lmxlbmd0aDt2YXIgZSxyPXJ0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6YSh0KS5sZW5ndGh9dmFyIHh0PSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIHp0KHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8dXQodCkmJmoodCk9PXh0fXZhciBBdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywkdD0vXlx3KiQvO3ZhciBGdD1VKE9iamVjdCwiY3JlYXRlIik7dmFyIFB0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEx0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24ga3QodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gRXQodCxlKXtmb3IodmFyIHIsbixvPXQubGVuZ3RoO28tLTspaWYoKHI9dFtvXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1rdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPUZ0P0Z0KG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxrdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxrdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoRnQpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gUHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxrdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEZ0P3ZvaWQgMCE9PWVbdF06THQuY2FsbChlLHQpfSxrdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1GdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgSXQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBOdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBUdCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gTXQodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19TnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sTnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9RXQoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6SXQuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxOdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1FdChlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LE50LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEV0KHRoaXMuX19kYXRhX18sdCk+LTF9LE50LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49RXQocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc30sTXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcga3QsbWFwOm5ldyhDfHxOdCksc3RyaW5nOm5ldyBrdH19LE10LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9VHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sTXQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gVHQodGhpcyx0KS5nZXQodCl9LE10LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFR0KHRoaXMsdCkuaGFzKHQpfSxNdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9VHQodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIFJ0PSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBVdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFJ0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0saT1yLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gci5jYWNoZT1uZXcoVXQuQ2FjaGV8fE10KSxyfVV0LkNhY2hlPU10O3ZhciBCdD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxDdD0vXFwoXFwpPy9nLER0PWZ1bmN0aW9uKHQpe3ZhciBlPVV0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoQnQsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShDdCwiJDEiKTpyfHx0KX0pKSxlfSkpLFd0PUR0O3ZhciBxdD0xLzAsVnQ9bD9sLnByb3RvdHlwZTp2b2lkIDAsR3Q9VnQ/VnQudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIEh0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihpdCh0KSlyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb30odCxIdCkrIiI7aWYoenQodCkpcmV0dXJuIEd0P0d0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LXF0PyItMCI6ZX1mdW5jdGlvbiBKdCh0LGUpe3JldHVybiBpdCh0KT90OmZ1bmN0aW9uKHQsZSl7aWYoaXQodCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIXp0KHQpKXx8JHQudGVzdCh0KXx8IUF0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpfSh0LGUpP1t0XTpXdChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjpIdCh0KX0odCkpfXZhciBLdD0xLzA7ZnVuY3Rpb24gUXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHx6dCh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tS3Q/Ii0wIjplfWZ1bmN0aW9uIFh0KHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49KGU9SnQoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W1F0KGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfSh0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gZnVuY3Rpb24odCxlPXt9KXtsZXQgcj1YdChlLCJmcyIpO3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYhci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCl9KHQse2ZzOmV9KX1jb25zdCBadD1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTtmdW5jdGlvbiB0ZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gZWUodCl7bGV0IGU9ITE7aWYodGUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHJlPS9ccy87dmFyIG5lPS9eXHMrLztmdW5jdGlvbiBvZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmcmUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShuZSwiIik6dH12YXIgaWU9TmFOLHVlPS9eWy0rXTB4WzAtOWEtZl0rJC9pLGFlPS9eMGJbMDFdKyQvaSxjZT0vXjBvWzAtN10rJC9pLGZlPXBhcnNlSW50O3ZhciBzZT0xLzAsbGU9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIHBlKHQpe3JldHVybiB0Pyh0PWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZih6dCh0KSlyZXR1cm4gaWU7aWYodyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9dyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9b2UodCk7dmFyIHI9YWUudGVzdCh0KTtyZXR1cm4gcnx8Y2UudGVzdCh0KT9mZSh0LnNsaWNlKDIpLHI/Mjo4KTp1ZS50ZXN0KHQpP2llOit0fSh0KSk9PT1zZXx8dD09PS1zZT8odDwwPy0xOjEpKmxlOnQ9PXQ/dDowOjA9PT10P3Q6MH1hc3luYyBmdW5jdGlvbiBoZSh0LGU9e30pe2lmKHI9dCwiW29iamVjdCBCbG9iXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikmJiFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXJldHVybiBjb25zb2xlLmxvZygiaW5wIix0KSxQcm9taXNlLnJlamVjdCgiaW5wIGlzIG5vdCBhIEJsb2Igb3IgRmlsZSIpO3ZhciByO2xldCBuPVh0KGUsImNodW5rU2l6ZSIpO2VlKG4pfHwobj02NzEwODg2NCksbj1mdW5jdGlvbih0KXtyZXR1cm4gZWUodCk/cGUodCk6MH0obik7bGV0e2NyZWF0ZTY0Om99PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjppLGRpZ2VzdDMyOnUsaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLGkpe2wodCk7Y29uc3QgdT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQodSkscigwLGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQodSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1iLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldCh1KSxpKG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3QgeT0ybioqNjRuLTFuO2Z1bmN0aW9uIHYodCl7cmV0dXJuIHQmeX1jb25zdCBiPW5ldyBUZXh0RW5jb2RlcixkPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksdihuKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9ZCk9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9ZCk9PnAoNDgsdCxvLGksdSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx2KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHYpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKFp0KSkuaW5zdGFuY2UpfSgpLGk9bygpLHU9MDtmb3IoO3U8dC5zaXplOyl7bGV0IGU9dC5zbGljZSh1LHUrbikscj1hd2FpdCBlLmFycmF5QnVmZmVyKCk7aS51cGRhdGUobmV3IFVpbnQ4QXJyYXkocikpLHUrPW59cmV0dXJuIGkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIil9bGV0IGNoZWNrU2xpY2VzSGFzaD1hc3luYyhyLG4sbyk9PntpZigwPT09bXQocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgaT1bXTtmb3IobGV0IHU9MDt1PHIubGVuZ3RoO3UrKyl7bGV0IGE9clt1XSxjPXQuam9pbihvLGAke259XyR7YS5pfWApLGY9IiI7YXdhaXQgaGUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGMpXSkpLnRoZW4oKHQ9PntmPXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZygiZnNJc0ZpbGUoX3BhdGhGaWxlKSIsYyxZdChjKSksY29uc29sZS5sb2codCl9KSksYS5oPT09ZiYmaS5wdXNoKGEuaSl9cmV0dXJue3Nsa3M6aX19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tTbGljZXNIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrU2xpY2VzSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(w,"base64").toString("utf8"));var w;function L(){let I=new i,w=function(M){try{return new s.Worker(M,{eval:!0})}catch(s){t(s)}}(M);if(!w)return t("invalid worker"),null;function L(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),M=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),i={mode:"call",id:M,fun:"main",input:[...arguments]};return w.postMessage(i),I.once(M,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function t(s){I.emit("error",s)}return w.on("message",(function(s){let M=s,i=M.mode;"emit"!==i&&"return"!==i||("emit"===i&&I.emit(M.evName,M.msg),"return"===i&&I.emit(M.id,M))})),w.on("error",t),w.on("exit",(s=>{1!==s&&t("exit code["+s+"] !== 1")})),function(){let s={mode:"init",type:"function",input:[...arguments]};w.postMessage(s)}([...arguments]),I.main=L,I.main=L,I.terminate=function(){w?(w.terminate(),w=void 0):t("worker has been terminated")},I}I=async function(){let s=[...arguments],M=L();return await M.main(...s).finally((()=>{M.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return I}(s)}({get exports(){return M},set exports(s){M=s}});var i=M,I={};!function(s,M){s.exports=function(){const s="function"==typeof Buffer,M="function"==typeof TextDecoder?new TextDecoder:void 0,i=(s=>{let M={};return s.forEach(((s,i)=>M[s]=i)),M})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),I=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,w=String.fromCharCode.bind(String),L="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):s=>new Uint8Array(Array.prototype.slice.call(s,0)),t=s=>s.replace(/[^A-Za-z0-9\+\/]/g,""),c=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,d=s=>{switch(s.length){case 4:var M=((7&s.charCodeAt(0))<<18|(63&s.charCodeAt(1))<<12|(63&s.charCodeAt(2))<<6|63&s.charCodeAt(3))-65536;return w(55296+(M>>>10))+w(56320+(1023&M));case 3:return w((15&s.charCodeAt(0))<<12|(63&s.charCodeAt(1))<<6|63&s.charCodeAt(2));default:return w((31&s.charCodeAt(0))<<6|63&s.charCodeAt(1))}},l=s=>s.replace(c,d),n=s=>{if(s=s.replace(/\s+/g,""),!I.test(s))throw new TypeError("malformed base64.");s+="==".slice(2-(3&s.length));let M,L,t,c="";for(let I=0;I<s.length;)M=i[s.charAt(I++)]<<18|i[s.charAt(I++)]<<12|(L=i[s.charAt(I++)])<<6|(t=i[s.charAt(I++)]),c+=64===L?w(M>>16&255):64===t?w(M>>16&255,M>>8&255):w(M>>16&255,M>>8&255,255&M);return c},e="function"==typeof atob?s=>atob(t(s)):s?s=>Buffer.from(s,"base64").toString("binary"):n,y=s?s=>L(Buffer.from(s,"base64")):s=>L(e(s).split("").map((s=>s.charCodeAt(0)))),D=s?s=>Buffer.from(s,"base64").toString("utf8"):M?s=>M.decode(y(s)):s=>l(e(s)),C=s=>t(s.replace(/[-_]/g,(s=>"-"==s?"+":"/"))),o=s=>D(C(s)),m=o;var Z={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return Z},set exports(s){Z=s}});var N=Z;let u;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let s=m("CgoKInVzZSBzdHJpY3QiO3ZhciB0PXJlcXVpcmUoInBhdGgiKSxlPXJlcXVpcmUoImZzIikscj1PYmplY3QucHJvdG90eXBlO3ZhciBuLG8saT0obj1PYmplY3Qua2V5cyxvPU9iamVjdCxmdW5jdGlvbih0KXtyZXR1cm4gbihvKHQpKX0pLHU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBhKHQpe2lmKG49KGU9dCkmJmUuY29uc3RydWN0b3IsZSE9PSgiZnVuY3Rpb24iPT10eXBlb2YgbiYmbi5wcm90b3R5cGV8fHIpKXJldHVybiBpKHQpO3ZhciBlLG4sbz1bXTtmb3IodmFyIGEgaW4gT2JqZWN0KHQpKXUuY2FsbCh0LGEpJiYiY29uc3RydWN0b3IiIT1hJiZvLnB1c2goYSk7cmV0dXJuIG99dmFyIGM9Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLGY9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixzPWN8fGZ8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksbD1zLlN5bWJvbCxwPU9iamVjdC5wcm90b3R5cGUsaD1wLmhhc093blByb3BlcnR5LHk9cC50b1N0cmluZyx2PWw/bC50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgZD0iW29iamVjdCBOdWxsXSIsZz0iW29iamVjdCBVbmRlZmluZWRdIixfPWw/bC50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gaih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P2c6ZDpfJiZfIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgZT1oLmNhbGwodCx2KSxyPXRbdl07dHJ5e3Rbdl09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz15LmNhbGwodCk7cmV0dXJuIG4mJihlP3Rbdl09cjpkZWxldGUgdFt2XSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGIuY2FsbCh0KX0odCl9ZnVuY3Rpb24gdyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgUz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsTz0iW29iamVjdCBGdW5jdGlvbl0iLG09IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix4PSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24geih0KXtpZighdyh0KSlyZXR1cm4hMTt2YXIgZT1qKHQpO3JldHVybiBlPT1PfHxlPT1tfHxlPT1TfHxlPT14fXZhciBBLCQ9c1siX19jb3JlLWpzX3NoYXJlZF9fIl0sRj0oQT0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrQToiIjt2YXIgUD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gTCh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIFAuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIGs9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sRT1GdW5jdGlvbi5wcm90b3R5cGUsST1PYmplY3QucHJvdG90eXBlLE49RS50b1N0cmluZyxUPUkuaGFzT3duUHJvcGVydHksTT1SZWdFeHAoIl4iK04uY2FsbChUKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBSKHQpe3JldHVybiEoIXcodCl8fGZ1bmN0aW9uKHQpe3JldHVybiEhRiYmRiBpbiB0fSh0KSkmJih6KHQpP006aykudGVzdChMKHQpKX1mdW5jdGlvbiBVKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gUihyKT9yOnZvaWQgMH12YXIgQj1VKHMsIkRhdGFWaWV3IiksQz1VKHMsIk1hcCIpLEQ9VShzLCJQcm9taXNlIiksVz1VKHMsIlNldCIpLHE9VShzLCJXZWFrTWFwIiksVj0iW29iamVjdCBNYXBdIixHPSJbb2JqZWN0IFByb21pc2VdIixIPSJbb2JqZWN0IFNldF0iLEo9IltvYmplY3QgV2Vha01hcF0iLEs9IltvYmplY3QgRGF0YVZpZXddIixRPUwoQiksWD1MKEMpLFk9TChEKSxaPUwoVyksdHQ9TChxKSxldD1qOyhCJiZldChuZXcgQihuZXcgQXJyYXlCdWZmZXIoMSkpKSE9S3x8QyYmZXQobmV3IEMpIT1WfHxEJiZldChELnJlc29sdmUoKSkhPUd8fFcmJmV0KG5ldyBXKSE9SHx8cSYmZXQobmV3IHEpIT1KKSYmKGV0PWZ1bmN0aW9uKHQpe3ZhciBlPWoodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/TChyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIFE6cmV0dXJuIEs7Y2FzZSBYOnJldHVybiBWO2Nhc2UgWTpyZXR1cm4gRztjYXNlIFo6cmV0dXJuIEg7Y2FzZSB0dDpyZXR1cm4gSn1yZXR1cm4gZX0pO3ZhciBydD1ldCxudD05MDA3MTk5MjU0NzQwOTkxO2Z1bmN0aW9uIG90KHQpe3JldHVybiBudWxsIT10JiZmdW5jdGlvbih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+LTEmJnQlMT09MCYmdDw9bnR9KHQubGVuZ3RoKSYmIXoodCl9dmFyIGl0PUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gdXQodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgYXQ9IltvYmplY3QgU3RyaW5nXSI7dmFyIGN0LGZ0PShjdD0ibGVuZ3RoIixmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtjdF19KSxzdD1SZWdFeHAoIltcXHUyMDBkXFx1ZDgwMC1cXHVkZmZmXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXFx1ZmUwZVxcdWZlMGZdIik7dmFyIGx0PSJcXHVkODAwLVxcdWRmZmYiLHB0PSJbIitsdCsiXSIsaHQ9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIix5dD0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIix2dD0iW14iK2x0KyJdIixidD0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsZHQ9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLGd0PSIoPzoiK2h0KyJ8Iit5dCsiKSIrIj8iLF90PSJbXFx1ZmUwZVxcdWZlMGZdPyIsanQ9X3QrZ3QrKCIoPzpcXHUyMDBkKD86IitbdnQsYnQsZHRdLmpvaW4oInwiKSsiKSIrX3QrZ3QrIikqIiksd3Q9Iig/OiIrW3Z0K2h0KyI/IixodCxidCxkdCxwdF0uam9pbigifCIpKyIpIixTdD1SZWdFeHAoeXQrIig/PSIreXQrIil8Iit3dCtqdCwiZyIpO2Z1bmN0aW9uIE90KHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gc3QudGVzdCh0KX0odCk/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVN0Lmxhc3RJbmRleD0wO1N0LnRlc3QodCk7KSsrZTtyZXR1cm4gZX0odCk6ZnQodCl9ZnVuY3Rpb24gbXQodCl7aWYobnVsbD09dClyZXR1cm4gMDtpZihvdCh0KSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mKGU9dCl8fCFpdChlKSYmdXQoZSkmJmooZSk9PWF0P090KHQpOnQubGVuZ3RoO3ZhciBlLHI9cnQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PXJ8fCJbb2JqZWN0IFNldF0iPT1yP3Quc2l6ZTphKHQpLmxlbmd0aH12YXIgeHQ9IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24genQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHx1dCh0KSYmaih0KT09eHR9dmFyIEF0PS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLCR0PS9eXHcqJC87dmFyIEZ0PVUoT2JqZWN0LCJjcmVhdGUiKTt2YXIgUHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgTHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBrdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBFdCh0LGUpe2Zvcih2YXIgcixuLG89dC5sZW5ndGg7by0tOylpZigocj10W29dWzBdKT09PShuPWUpfHxyIT1yJiZuIT1uKXJldHVybiBvO3JldHVybi0xfWt0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189RnQ/RnQobnVsbCk6e30sdGhpcy5zaXplPTB9LGt0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LGt0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihGdCl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBQdC5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LGt0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztyZXR1cm4gRnQ/dm9pZCAwIT09ZVt0XTpMdC5jYWxsKGUsdCl9LGt0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxyW3RdPUZ0JiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBJdD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIE50KHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIFR0KHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBNdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1OdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxOdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1FdChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpJdC5jYWxsKGUsciwxKSwtLXRoaXMuc2l6ZSwhMCl9LE50LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPUV0KGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sTnQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gRXQodGhpcy5fX2RhdGFfXyx0KT4tMX0sTnQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1FdChyLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLHIucHVzaChbdCxlXSkpOnJbbl1bMV09ZSx0aGlzfSxNdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBrdCxtYXA6bmV3KEN8fE50KSxzdHJpbmc6bmV3IGt0fX0sTXQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT1UdCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxNdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBUdCh0aGlzLHQpLmdldCh0KX0sTXQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gVHQodGhpcyx0KS5oYXModCl9LE10LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1UdCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTt2YXIgUnQ9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIFV0KHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoUnQpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMsbik6blswXSxpPXIuY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciB1PXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1pLnNldChvLHUpfHxpLHV9O3JldHVybiByLmNhY2hlPW5ldyhVdC5DYWNoZXx8TXQpLHJ9VXQuQ2FjaGU9TXQ7dmFyIEJ0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLEN0PS9cXChcXCk/L2csRHQ9ZnVuY3Rpb24odCl7dmFyIGU9VXQodCwoZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PXIuc2l6ZSYmci5jbGVhcigpLHR9KSkscj1lLmNhY2hlO3JldHVybiBlfSgoZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShCdCwoZnVuY3Rpb24odCxyLG4sbyl7ZS5wdXNoKG4/by5yZXBsYWNlKEN0LCIkMSIpOnJ8fHQpfSkpLGV9KSksV3Q9RHQ7dmFyIHF0PTEvMCxWdD1sP2wucHJvdG90eXBlOnZvaWQgMCxHdD1WdD9WdC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gSHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGl0KHQpKXJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPUFycmF5KG4pOysrcjxuOylvW3JdPWUodFtyXSxyLHQpO3JldHVybiBvfSh0LEh0KSsiIjtpZih6dCh0KSlyZXR1cm4gR3Q/R3QuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tcXQ/Ii0wIjplfWZ1bmN0aW9uIEp0KHQsZSl7cmV0dXJuIGl0KHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihpdCh0KSlyZXR1cm4hMTt2YXIgcj10eXBlb2YgdDtyZXR1cm4hKCJudW1iZXIiIT1yJiYic3ltYm9sIiE9ciYmImJvb2xlYW4iIT1yJiZudWxsIT10JiYhenQodCkpfHwkdC50ZXN0KHQpfHwhQXQudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSl9KHQsZSk/W3RdOld0KGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10PyIiOkh0KHQpfSh0KSl9dmFyIEt0PTEvMDtmdW5jdGlvbiBRdCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fHp0KHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1LdD8iLTAiOmV9ZnVuY3Rpb24gWHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1KdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbUXQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufWZ1bmN0aW9uIFl0KHQpe3JldHVybiBmdW5jdGlvbih0LGU9e30pe2xldCByPVh0KGUsImZzIik7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJiFyLmxzdGF0U3luYyh0KS5pc0RpcmVjdG9yeSgpJiYhci5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKX0odCx7ZnM6ZX0pfWNvbnN0IFp0PW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2Z1bmN0aW9uIHRlKHQpe3JldHVybiEoIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8IiI9PT10KX1mdW5jdGlvbiBlZSh0KXtsZXQgZT0hMTtpZih0ZSh0KSllPSFpc05hTihOdW1iZXIodCkpO2Vsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCE9dH0odCkpcmV0dXJuITE7ZT0hMH1yZXR1cm4gZX12YXIgcmU9L1xzLzt2YXIgbmU9L15ccysvO2Z1bmN0aW9uIG9lKHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZyZS50ZXN0KHQuY2hhckF0KGUpKTspO3JldHVybiBlfSh0KSsxKS5yZXBsYWNlKG5lLCIiKTp0fXZhciBpZT1OYU4sdWU9L15bLStdMHhbMC05YS1mXSskL2ksYWU9L14wYlswMV0rJC9pLGNlPS9eMG9bMC03XSskL2ksZmU9cGFyc2VJbnQ7dmFyIHNlPTEvMCxsZT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQ/KHQ9ZnVuY3Rpb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHp0KHQpKXJldHVybiBpZTtpZih3KHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD13KGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1vZSh0KTt2YXIgcj1hZS50ZXN0KHQpO3JldHVybiByfHxjZS50ZXN0KHQpP2ZlKHQuc2xpY2UoMikscj8yOjgpOnVlLnRlc3QodCk/aWU6K3R9KHQpKT09PXNlfHx0PT09LXNlPyh0PDA/LTE6MSkqbGU6dD09dD90OjA6MD09PXQ/dDowfWFzeW5jIGZ1bmN0aW9uIGhlKHQsZT17fSl7aWYocj10LCJbb2JqZWN0IEJsb2JdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSYmIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEZpbGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpcmV0dXJuIGNvbnNvbGUubG9nKCJpbnAiLHQpLFByb21pc2UucmVqZWN0KCJpbnAgaXMgbm90IGEgQmxvYiBvciBGaWxlIik7dmFyIHI7bGV0IG49WHQoZSwiY2h1bmtTaXplIik7ZWUobil8fChuPTY3MTA4ODY0KSxuPWZ1bmN0aW9uKHQpe3JldHVybiBlZSh0KT9wZSh0KTowfShuKTtsZXR7Y3JlYXRlNjQ6b309YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3R7ZXhwb3J0czp7bWVtOmUseHhoMzI6cix4eGg2NDpuLGluaXQzMjpvLHVwZGF0ZTMyOmksZGlnZXN0MzI6dSxpbml0NjQ6YSx1cGRhdGU2NDpjLGRpZ2VzdDY0OmZ9fT10O2xldCBzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKTtmdW5jdGlvbiBsKHQscil7aWYoZS5idWZmZXIuYnl0ZUxlbmd0aDx0K3Ipe2NvbnN0IG49TWF0aC5jZWlsKCh0K3ItZS5idWZmZXIuYnl0ZUxlbmd0aCkvNjU1MzYpO2UuZ3JvdyhuKSxzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKX19ZnVuY3Rpb24gcCh0LGUscixuLG8saSl7bCh0KTtjb25zdCB1PW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzLnNldCh1KSxyKDAsZSksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx7dXBkYXRlKGUpe2xldCByO3JldHVybiBzLnNldCh1KSwic3RyaW5nIj09dHlwZW9mIGU/KGwoMyplLmxlbmd0aCx0KSxyPWIuZW5jb2RlSW50byhlLHMuc3ViYXJyYXkodCkpLndyaXR0ZW4pOihsKGUuYnl0ZUxlbmd0aCx0KSxzLnNldChlLHQpLHI9ZS5ieXRlTGVuZ3RoKSxuKDAsdCxyKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHRoaXN9LGRpZ2VzdDooKT0+KHMuc2V0KHUpLGkobygwKSkpfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0Pj4+MH1jb25zdCB5PTJuKio2NG4tMW47ZnVuY3Rpb24gdih0KXtyZXR1cm4gdCZ5fWNvbnN0IGI9bmV3IFRleHRFbmNvZGVyLGQ9MCxnPTBuO2Z1bmN0aW9uIF8odCxlPWQpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksaChyKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9ZnVuY3Rpb24gaih0LGU9Zyl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSx2KG4oMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1yZXR1cm57aDMyOl8saDMyVG9TdHJpbmc6KHQsZT1kKT0+Xyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIiksaDMyUmF3Oih0LGU9ZCk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxoKHIoMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGUzMjoodD1kKT0+cCg0OCx0LG8saSx1LGgpLGg2NDpqLGg2NFRvU3RyaW5nOih0LGU9Zyk9PmoodCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKSxoNjRSYXc6KHQsZT1nKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHYobigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTY0Oih0PWcpPT5wKDg4LHQsYSxjLGYsdil9fSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoWnQpKS5pbnN0YW5jZSl9KCksaT1vKCksdT0wO2Zvcig7dTx0LnNpemU7KXtsZXQgZT10LnNsaWNlKHUsdStuKSxyPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtpLnVwZGF0ZShuZXcgVWludDhBcnJheShyKSksdSs9bn1yZXR1cm4gaS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKX1sZXQgY2hlY2tTbGljZXNIYXNoPWFzeW5jKHIsbixvKT0+e2lmKDA9PT1tdChyKSl7cmV0dXJue2Vycm9yOiJubyBmaWxlU2xpY2VIYXNocyJ9fWxldCBpPVtdO2ZvcihsZXQgdT0wO3U8ci5sZW5ndGg7dSsrKXtsZXQgYT1yW3VdLGM9dC5qb2luKG8sYCR7bn1fJHthLml9YCksZj0iIjthd2FpdCBoZShuZXcgQmxvYihbZS5yZWFkRmlsZVN5bmMoYyldKSkudGhlbigodD0+e2Y9dH0pKS5jYXRjaCgodD0+e2NvbnNvbGUubG9nKCJmc0lzRmlsZShfcGF0aEZpbGUpIixjLFl0KGMpKSxjb25zb2xlLmxvZyh0KX0pKSxhLmg9PT1mJiZpLnB1c2goYS5pKX1yZXR1cm57c2xrczppfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1NsaWNlc0hhc2gKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY2hlY2tTbGljZXNIYXNoCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHJlY3ZNZXNzYWdlKGUuZGF0YSkKICAgICAgICB9CiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK");function M(){let M=new N,i=function(s){try{let M=new Blob([s]),i=window.URL||window.webkitURL;return new Worker(i.createObjectURL(M))}catch(s){w(s)}}(s);if(!i)return w("invalid worker"),null;function I(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),I=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),w={mode:"call",id:I,fun:"main",input:[...arguments]};return i.postMessage(w),M.once(I,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function w(s){M.emit("error",s)}return i.onmessage=function(s){!function(s){let i=s,I=i.mode;"emit"!==I&&"return"!==I||("emit"===I&&M.emit(i.evName,i.msg),"return"===I&&M.emit(i.id,i))}(s.data)},i.onerror=w,i.onmessageerror=function(s){w(s.data)},function(){let s={mode:"init",type:"function",input:[...arguments]};i.postMessage(s)}([...arguments]),M.main=I,M.main=I,M.terminate=function(){i?(i.terminate(),i=void 0):w("worker has been terminated")},M}u=async function(){let s=[...arguments],i=M();return await i.main(...s).finally((()=>{i.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return u}()}({get exports(){return I},set exports(s){I=s}});var w=I;let L;return L="undefined"!=typeof window&&void 0!==window.document?w:i,L}(L)}({get exports(){return rw},set exports(s){rw=s}});var pw=rw;function Tw(s,M){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var I=Object.getOwnPropertySymbols(s);M&&(I=I.filter((function(M){return Object.getOwnPropertyDescriptor(s,M).enumerable}))),i.push.apply(i,I)}return i}function aw(s){for(var M=1;M<arguments.length;M++){var i=null!=arguments[M]?arguments[M]:{};M%2?Tw(Object(i),!0).forEach((function(M){d(s,M,i[M])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):Tw(Object(i)).forEach((function(M){Object.defineProperty(s,M,Object.getOwnPropertyDescriptor(i,M))}))}return s}return function(){let L=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=rs(L,"port");wM(t)||(t=8080);let c=rs(L,"useInert");nM(c)||(c=!0);let d=rs(L,"pathStaticFiles");zs(d)||(d="dist");let l=rs(L,"apiName");zs(l)||(l="api");let n=rs(L,"pathUploadTemp");zs(n)||(n="./uploadTemp"),Ai(n,{fs:M})||Gi(n);let e=rs(L,"tokenType");zs(e)||(e="Bearer");let y=rs(L,"sizeSlice");wM(y)||(y=1048576);let D=rs(L,"verifyConn");eM(D)||(D=()=>!0);let C=rs(L,"corsOrigins",[]);dM(C)||(C=["*"]);let o=rs(L,"delayForSlice","");IM(o)||(o=100),o=iM(o);let m=null;m=rs(L,"serverHapi")?L.serverHapi:I.server({port:t,routes:{timeout:{server:!1,socket:!1},cors:{origin:C,credentials:!1}}});let Z=new Ss,N=function(s){for(var M=arguments.length,i=new Array(M>1?M-1:0),I=1;I<M;I++)i[I-1]=arguments[I];setTimeout((()=>{Z.emit(s,...i)}),1)};async function u(s){let M=as(),i=as();return i.then((s=>{M.resolve(s)})).catch((s=>{M.reject(s)})),N("upload",s,i),M}async function b(s){let M=as(),i=as();return i.then((s=>{M.resolve(s)})).catch((s=>{M.reject(s)})),N("download",s,i),M}function g(s,M){let I=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},w=new i.Readable;w._read=()=>{},w.push(M),w.push(null);let L=rs(I,"returnType",""),t=rs(I,"returnMsg",""),c=s.response(w).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",w.readableLength);return zs(L)&&c.header("Return-Type",L),zs(t)&&c.header("Return-Msg",t),c}function x(s,M){return zs(M)||(console.log("msg",M),console.log("msg is not an effective string, set msg=''"),M=""),g(s,pi({error:M}),{returnType:"error",returnMsg:M})}let X={path:`/${l}`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(s,M){let I=rs(s,"headers");I=Gs(I)?I:"";let w=rs(s,"query");w=Gs(w)?w:"";let L=rs(I,"authorization","");L=zs(L)?L:"";{let s=D({apiType:"main",authorization:L,headers:I,query:w});if(yM(s)&&(s=await s),!0!==s)return x(M,"permission denied")}N("handler",{api:"apiMain",headers:I,query:w});let t=await(()=>{let M=as(),I=[],w=new i.Writable({write(s,M,i){I.push(s),i()}});return w.on("finish",(()=>{})),s.payload.pipe(w),s.payload.on("end",(()=>{let s=Buffer.concat(I);I=[],M.resolve(s)})),s.payload.on("close",(()=>{})),s.payload.on("error",(s=>{N("error","receive payload err"),M.reject(s.message)})),M})(),c=Si(new Uint8Array(t)),d={},l="",n="";return await async function(s){let M=as(),i=as();i.then((i=>{s.output=i,delete s.input,M.resolve(s)})).catch((s=>{M.reject(s)}));{let M=rs(s,"func",""),I=rs(s,"input",null);N("execute",M,I,i)}return M}(c).then((s=>{d.success=s,l="success",n="need to parse"})).catch((s=>{d.error=s,l="error",n="need to parse"})),g(M,pi(d),{returnType:l,returnMsg:n})}},r={path:`/${l}ulctr`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(s,M){let i=rs(s,"headers");i=Gs(i)?i:"";let I=rs(s,"query");I=Gs(I)?I:"";let w=rs(i,"authorization","");w=zs(w)?w:"";{let s=D({apiType:"upload-controller",authorization:w,headers:i,query:I});if(yM(s)&&(s=await s),!0!==s)return x(M,"permission denied")}N("handler",{api:"apiUploadCheck",headers:i,query:I});let L=rs(s,"payload.mode","");if("check-total-hash"!==L&&"check-slices-hash"!==L&&"merge-slices-push"!==L&&"merge-slices-get"!==L)return x(M,`invalid mode[${L}] in payload`);let t=rs(s,"payload.fileHash","");if(!zs(t))return x(M,"invalid fileHash in payload");let c={},d="",l="";return await(async()=>{let M=null;if("check-total-hash"===L){let i=rs(s,"payload.filename",""),I=rs(s,"payload.fileSize","");if(M=await Xw(I,y,t,n),M.bAllHash){let s={filename:i,path:M.path},I=await u(s);M=aw(aw({},M),I)}}else if("check-slices-hash"===L){let i=rs(s,"payload.fileSliceHashs",[]);M=await pw(i,t,n)}else if("merge-slices-push"===L){let i=rs(s,"payload.chunkTotal","");M={queueId:bw(t,i,n)}}else if("merge-slices-get"===L){let i=rs(s,"payload.filename",""),I=rs(s,"payload.queueId",""),w=gw(I,n);if(M={state:w.state,msg:w.msg,queueId:I,filename:i,path:w.path},"success"===w.state){let s={filename:i,path:w.path},I=await u(s);M=aw(aw({},M),{},{msg:I})}}return M})().then((s=>{c.success=s,d="success",l="need to parse"})).catch((s=>{c.error=s,d="error",l="need to parse"})),g(M,pi(c),{returnType:d,returnMsg:l})}},p={path:`/${l}slc`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(i,I){let w=rs(i,"headers");w=Gs(w)?w:"";let L=rs(i,"query");L=Gs(L)?L:"";let t=rs(w,"authorization","");t=zs(t)?t:"";{let s=D({apiType:"upload-slice",authorization:t,headers:w,query:L});if(yM(s)&&(s=await s),!0!==s)return x(I,"permission denied")}N("handler",{api:"apiUploadSlice",headers:w,query:L});let c=rs(w,"chunk-index",""),d=rs(w,"chunk-total",""),l=rs(w,"package-id","");if(!IM(c))return x(I,"invalid chunkIndex in headers");if(c=iM(c),!IM(d))return x(I,"invalid chunkTotal in headers");if(d=iM(d),!zs(l))return x(I,"invalid packageId in headers");let e=s.join(n,`${l}_${c}`),y=M.createWriteStream(e),C={},m="",Z="";return await(()=>{let s=as();return i.payload.pipe(y),i.payload.on("end",(()=>{setTimeout((()=>{s.resolve(`chunk[${c}/${d}] of packageId[${l}] done`)}),o)})),i.payload.on("error",(M=>{N("error",`receive chunk[${c}/${d}] of packageId[${l}] err`),s.reject(`apiUploadSlice receive error: ${M.message}`)})),s})().then((s=>{C.success=s,m="success",Z="need to parse"})).catch((s=>{C.error=s,m="error",Z="need to parse",N("error",s)})),g(I,pi(C),{returnType:m,returnMsg:Z})}},T={path:`/${l}dwgfn`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(s,M){let i=rs(s,"headers");i=Gs(i)?i:"";let I=rs(s,"query");I=Gs(I)?I:"";let w=rs(i,"authorization","");w=zs(w)?w:"";{let s=D({apiType:"download-get-filename",authorization:w,headers:i,query:I});if(yM(s)&&(s=await s),!0!==s)return x(M,"permission denied")}N("handler",{api:"apiDownloadGetFilename",headers:i,query:I});let L=rs(s,"payload.fileId","");if(!zs(L))return x(M,"invalid fileId in payload");let t={fileId:L},c={},d="",l="";await b(t).then((s=>{c.success=s,d="success",l="need to parse"})).catch((s=>{c.error=s,d="error",l="need to parse"}));let n=rs(c,"success"),e=rs(n,"streamRead");try{e.destroy()}catch(s){}let y=rs(n,"filename");return zs(y)?(c={success:{filename:y}},g(M,pi(c),{returnType:d,returnMsg:l})):x(M,"invalid filename")}},a={path:`/${l}dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1}},handler:async function(s,M){let i=rs(s,"headers");i=Gs(i)?i:"";let I=rs(s,"query");I=Gs(I)?I:"";let w=rs(I,"token","");w=zs(w)?w:"";let L="";zs(w)&&(L=`${e} ${w}`);{let s=D({apiType:"download-get-file",authorization:L,headers:i,query:I});if(yM(s)&&(s=await s),!0!==s)return x(M,"permission denied")}N("handler",{api:"apiDownloadGetFilename",headers:i,query:I});let t=rs(I,"fileId","");if(t=zs(t)?t:"",!zs(t))return x(M,"invalid fileId in query");let c={fileId:t},d={};if(await b(c).then((s=>{d.success=s})).catch((s=>{d.error=s})),XM(d,"error"))return x(M,"can not get file from fileId");let l=rs(d,"success"),n=rs(l,"streamRead"),y=rs(l,"fileSize");if(!Ts(y)){try{n.destroy()}catch(s){}return x(M,"invalid fileSize")}let C=rs(l,"fileType");if(!zs(C)){try{n.destroy()}catch(s){}return x(M,"invalid fileType")}return C=DM(C),M.response(n).type(C).header("Content-Length",y)}},Y={path:`/${l}dw`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(s,M){let i=rs(s,"headers");i=Gs(i)?i:"";let I=rs(s,"query");I=Gs(I)?I:"";let w=rs(i,"authorization","");w=zs(w)?w:"";{let s=D({apiType:"download",authorization:w,headers:i,query:I});if(yM(s)&&(s=await s),!0!==s)return x(M,"permission denied")}N("handler",{api:"apiDownload",headers:i,query:I});let L=rs(s,"payload.fileId","");if(!zs(L))return x(M,"invalid fileId in payload");let t={fileId:L},c={};if(await b(t).then((s=>{c.success=s})).catch((s=>{c.error=s})),XM(c,"error"))return x(M,"can not get file from fileId");let d=rs(c,"success"),l=rs(d,"streamRead"),n=rs(d,"filename");if(!zs(n)){try{l.destroy()}catch(s){}return x(M,"invalid filename")}n=xM(n);let e=rs(d,"fileSize");if(!Ts(e)){try{l.destroy()}catch(s){}return x(M,"invalid fileSize")}let y=rs(d,"fileType");if(!zs(y)){try{l.destroy()}catch(s){}return x(M,"invalid fileType")}return y=DM(y),M.response(l).type(y).header("Content-Disposition",`attachment; filename="${n}"`).header("Content-Length",e)}};return rs(L,"serverHapi")?m.route([X,r,p,T,a,Y]):async function(){c&&await m.register(w);let s=[];if(c){let M={method:"GET",path:"/{file*}",handler:{directory:{path:`${d}/`}}};s=[...s,M]}s=[...s,X,r,p,T,a,Y],m.route(s),await m.start(),console.log(`Server running at: ${m.info.uri}`)}(),Z.stop=()=>{m.stop()},Z}}));
|
|
6
|
+
!function(s,M){"object"==typeof exports&&"undefined"!=typeof module?module.exports=M(require("path"),require("fs"),require("stream"),require("@hapi/hapi"),require("@hapi/inert"),require("worker_threads")):"function"==typeof define&&define.amd?define(["path","fs","stream","@hapi/hapi","@hapi/inert","worker_threads"],M):(s="undefined"!=typeof globalThis?globalThis:s||self)["w-converhp-server"]=M(s.path,s.fs,s.stream,s["@hapi/hapi"],s["@hapi/inert"],s.require$$0)}(this,(function(s,M,i,I,w,L){"use strict";function t(s){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&"function"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},t(s)}function c(s){var M=function(s,M){if("object"!==t(s)||null===s)return s;var i=s[Symbol.toPrimitive];if(void 0!==i){var I=i.call(s,M||"default");if("object"!==t(I))return I;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===M?String:Number)(s)}(s,"string");return"symbol"===t(M)?M:String(M)}function d(s,M,i){return(M=c(M))in s?Object.defineProperty(s,M,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[M]=i,s}var l=Array.isArray,n="object"==typeof global&&global&&global.Object===Object&&global,e="object"==typeof self&&self&&self.Object===Object&&self,y=n||e||Function("return this")(),D=y.Symbol,C=Object.prototype,o=C.hasOwnProperty,m=C.toString,Z=D?D.toStringTag:void 0;var N=Object.prototype.toString;var u="[object Null]",b="[object Undefined]",g=D?D.toStringTag:void 0;function x(s){return null==s?void 0===s?b:u:g&&g in Object(s)?function(s){var M=o.call(s,Z),i=s[Z];try{s[Z]=void 0;var I=!0}catch(s){}var w=m.call(s);return I&&(M?s[Z]=i:delete s[Z]),w}(s):function(s){return N.call(s)}(s)}function X(s){return null!=s&&"object"==typeof s}var r="[object Symbol]";function p(s){return"symbol"==typeof s||X(s)&&x(s)==r}var T=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;function Y(s,M){if(l(s))return!1;var i=typeof s;return!("number"!=i&&"symbol"!=i&&"boolean"!=i&&null!=s&&!p(s))||(a.test(s)||!T.test(s)||null!=M&&s in Object(M))}function h(s){var M=typeof s;return null!=s&&("object"==M||"function"==M)}var S="[object AsyncFunction]",A="[object Function]",G="[object GeneratorFunction]",K="[object Proxy]";function z(s){if(!h(s))return!1;var M=x(s);return M==A||M==G||M==S||M==K}var E,W=y["__core-js_shared__"],j=(E=/[^.]+$/.exec(W&&W.keys&&W.keys.IE_PROTO||""))?"Symbol(src)_1."+E:"";var V=Function.prototype.toString;function H(s){if(null!=s){try{return V.call(s)}catch(s){}try{return s+""}catch(s){}}return""}var f=/^\[object .+?Constructor\]$/,Q=Function.prototype,U=Object.prototype,J=Q.toString,v=U.hasOwnProperty,R=RegExp("^"+J.call(v).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function P(s){return!(!h(s)||(M=s,j&&j in M))&&(z(s)?R:f).test(H(s));var M}function B(s,M){var i=function(s,M){return null==s?void 0:s[M]}(s,M);return P(i)?i:void 0}var k=B(Object,"create");var F=Object.prototype.hasOwnProperty;var O=Object.prototype.hasOwnProperty;function _(s){var M=-1,i=null==s?0:s.length;for(this.clear();++M<i;){var I=s[M];this.set(I[0],I[1])}}function q(s,M){return s===M||s!=s&&M!=M}function $(s,M){for(var i=s.length;i--;)if(q(s[i][0],M))return i;return-1}_.prototype.clear=function(){this.__data__=k?k(null):{},this.size=0},_.prototype.delete=function(s){var M=this.has(s)&&delete this.__data__[s];return this.size-=M?1:0,M},_.prototype.get=function(s){var M=this.__data__;if(k){var i=M[s];return"__lodash_hash_undefined__"===i?void 0:i}return F.call(M,s)?M[s]:void 0},_.prototype.has=function(s){var M=this.__data__;return k?void 0!==M[s]:O.call(M,s)},_.prototype.set=function(s,M){var i=this.__data__;return this.size+=this.has(s)?0:1,i[s]=k&&void 0===M?"__lodash_hash_undefined__":M,this};var ss=Array.prototype.splice;function Ms(s){var M=-1,i=null==s?0:s.length;for(this.clear();++M<i;){var I=s[M];this.set(I[0],I[1])}}Ms.prototype.clear=function(){this.__data__=[],this.size=0},Ms.prototype.delete=function(s){var M=this.__data__,i=$(M,s);return!(i<0)&&(i==M.length-1?M.pop():ss.call(M,i,1),--this.size,!0)},Ms.prototype.get=function(s){var M=this.__data__,i=$(M,s);return i<0?void 0:M[i][1]},Ms.prototype.has=function(s){return $(this.__data__,s)>-1},Ms.prototype.set=function(s,M){var i=this.__data__,I=$(i,s);return I<0?(++this.size,i.push([s,M])):i[I][1]=M,this};var is=B(y,"Map");function Is(s,M){var i,I,w=s.__data__;return("string"==(I=typeof(i=M))||"number"==I||"symbol"==I||"boolean"==I?"__proto__"!==i:null===i)?w["string"==typeof M?"string":"hash"]:w.map}function ws(s){var M=-1,i=null==s?0:s.length;for(this.clear();++M<i;){var I=s[M];this.set(I[0],I[1])}}ws.prototype.clear=function(){this.size=0,this.__data__={hash:new _,map:new(is||Ms),string:new _}},ws.prototype.delete=function(s){var M=Is(this,s).delete(s);return this.size-=M?1:0,M},ws.prototype.get=function(s){return Is(this,s).get(s)},ws.prototype.has=function(s){return Is(this,s).has(s)},ws.prototype.set=function(s,M){var i=Is(this,s),I=i.size;return i.set(s,M),this.size+=i.size==I?0:1,this};var Ls="Expected a function";function ts(s,M){if("function"!=typeof s||null!=M&&"function"!=typeof M)throw new TypeError(Ls);var i=function(){var I=arguments,w=M?M.apply(this,I):I[0],L=i.cache;if(L.has(w))return L.get(w);var t=s.apply(this,I);return i.cache=L.set(w,t)||L,t};return i.cache=new(ts.Cache||ws),i}ts.Cache=ws;var cs,ds,ls,ns=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,es=/\\(\\)?/g,ys=(cs=function(s){var M=[];return 46===s.charCodeAt(0)&&M.push(""),s.replace(ns,(function(s,i,I,w){M.push(I?w.replace(es,"$1"):i||s)})),M},ds=ts(cs,(function(s){return 500===ls.size&&ls.clear(),s})),ls=ds.cache,ds),Ds=ys;function Cs(s,M){for(var i=-1,I=null==s?0:s.length,w=Array(I);++i<I;)w[i]=M(s[i],i,s);return w}var os=1/0,ms=D?D.prototype:void 0,Zs=ms?ms.toString:void 0;function Ns(s){if("string"==typeof s)return s;if(l(s))return Cs(s,Ns)+"";if(p(s))return Zs?Zs.call(s):"";var M=s+"";return"0"==M&&1/s==-os?"-0":M}function us(s){return null==s?"":Ns(s)}function bs(s,M){return l(s)?s:Y(s,M)?[s]:Ds(us(s))}var gs=1/0;function xs(s){if("string"==typeof s||p(s))return s;var M=s+"";return"0"==M&&1/s==-gs?"-0":M}function Xs(s,M){for(var i=0,I=(M=bs(M,s)).length;null!=s&&i<I;)s=s[xs(M[i++])];return i&&i==I?s:void 0}function rs(s,M,i){var I=null==s?void 0:Xs(s,M);return void 0===I?i:I}var ps="[object Number]";function Ts(s){return"number"==typeof s||X(s)&&x(s)==ps}function as(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}var Ys="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},hs={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return hs},set exports(s){hs=s}});var Ss=hs;function As(s){return"[object Object]"===Object.prototype.toString.call(s)}function Gs(s){if(As(s)){for(let M in s)return!0;return!1}return!1}function Ks(s){return"[object String]"===Object.prototype.toString.call(s)}function zs(s){return!(!Ks(s)||""===s)}var Es=/\s/;var Ws=/^\s+/;function js(s){return s?s.slice(0,function(s){for(var M=s.length;M--&&Es.test(s.charAt(M)););return M}(s)+1).replace(Ws,""):s}var Vs=NaN,Hs=/^[-+]0x[0-9a-f]+$/i,fs=/^0b[01]+$/i,Qs=/^0o[0-7]+$/i,Us=parseInt;function Js(s){if("number"==typeof s)return s;if(p(s))return Vs;if(h(s)){var M="function"==typeof s.valueOf?s.valueOf():s;s=h(M)?M+"":M}if("string"!=typeof s)return 0===s?s:+s;s=js(s);var i=fs.test(s);return i||Qs.test(s)?Us(s.slice(2),i?2:8):Hs.test(s)?Vs:+s}var vs=1/0,Rs=17976931348623157e292;function Ps(s){return s?(s=Js(s))===vs||s===-vs?(s<0?-1:1)*Rs:s==s?s:0:0===s?s:0}function Bs(s){var M=Ps(s),i=M%1;return M==M?i?M-i:M:0}function ks(s){return s!=s}function Fs(s){let M=!1;if(zs(s))M=!isNaN(Number(s));else if(function(s){return"[object Number]"===Object.prototype.toString.call(s)}(s)){if(ks(s))return!1;M=!0}return M}function Os(s){if(!Fs(s))return 0;return Ps(s)}function _s(s){return!!Fs(s)&&(s=Os(s),"number"==typeof(M=s)&&M==Bs(M));var M}var qs=y.isFinite,$s=Math.min;var sM=function(s){var M=Math[s];return function(s,i){if(s=Js(s),(i=null==i?0:$s(Bs(i),292))&&qs(s)){var I=(us(s)+"e").split("e");return+((I=(us(M(I[0]+"e"+(+I[1]+i)))+"e").split("e"))[0]+"e"+(+I[1]-i))}return M(s)}}("round"),MM=sM;function iM(s){if(!Fs(s))return 0;s=Os(s);let M=MM(s);return"0"===String(M)?0:M}function IM(s){if(!_s(s))return!1;return iM(s)>=0}function wM(s){if(!_s(s))return!1;return iM(s)>0}function LM(s){return"[object Array]"===Object.prototype.toString.call(s)}function tM(s){if(As(s)){for(let M in s)return!1;return!0}return!1}function cM(s){return!!function(s){return"[object Undefined]"===Object.prototype.toString.call(s)}(s)||(!!function(s){return"[object Null]"===Object.prototype.toString.call(s)}(s)||(!!tM(s)||(!!function(s){return!(!Ks(s)||""!==s)}(s)||(!!function(s){return!!LM(s)&&0===s.length}(s)||!!ks(s)))))}function dM(s){return!!LM(s)&&(0!==s.length&&(1!==s.length||!cM(s[0])))}var lM="[object Boolean]";function nM(s){return!0===(M=s)||!1===M||X(M)&&x(M)==lM;var M}function eM(s){let M=Object.prototype.toString.call(s);return"[object Function]"===M||"[object AsyncFunction]"===M}function yM(s){let M,i=Object.prototype.toString.call(s);if(M="[object Promise]"===i,M)return!0;if("[object Function]"!==i)return!1;try{M="function"!=typeof s.subscribe&&"function"==typeof s.then}catch(s){}return M}function DM(s){if(!zs(s)&&!Fs(s)&&!p(s))return"";let M="";try{M=String(s)}catch(s){}try{M=s.toString()}catch(s){}return M}var CM={};var oM,mM={},ZM={get exports(){return mM},set exports(s){mM=s}};function NM(){return oM||(oM=1,function(s,M){var i;s.exports=(i=i||function(s,M){var i;if("undefined"!=typeof window&&window.crypto&&(i=window.crypto),"undefined"!=typeof self&&self.crypto&&(i=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(i=globalThis.crypto),!i&&"undefined"!=typeof window&&window.msCrypto&&(i=window.msCrypto),!i&&void 0!==Ys&&Ys.crypto&&(i=Ys.crypto),!i)try{i=require("crypto")}catch(s){}var I=function(){if(i){if("function"==typeof i.getRandomValues)try{return i.getRandomValues(new Uint32Array(1))[0]}catch(s){}if("function"==typeof i.randomBytes)try{return i.randomBytes(4).readInt32LE()}catch(s){}}throw new Error("Native crypto module could not be used to get secure random number.")},w=Object.create||function(){function s(){}return function(M){var i;return s.prototype=M,i=new s,s.prototype=null,i}}(),L={},t=L.lib={},c=t.Base={extend:function(s){var M=w(this);return s&&M.mixIn(s),M.hasOwnProperty("init")&&this.init!==M.init||(M.init=function(){M.$super.init.apply(this,arguments)}),M.init.prototype=M,M.$super=this,M},create:function(){var s=this.extend();return s.init.apply(s,arguments),s},init:function(){},mixIn:function(s){for(var M in s)s.hasOwnProperty(M)&&(this[M]=s[M]);s.hasOwnProperty("toString")&&(this.toString=s.toString)},clone:function(){return this.init.prototype.extend(this)}},d=t.WordArray=c.extend({init:function(s,i){s=this.words=s||[],this.sigBytes=i!=M?i:4*s.length},toString:function(s){return(s||n).stringify(this)},concat:function(s){var M=this.words,i=s.words,I=this.sigBytes,w=s.sigBytes;if(this.clamp(),I%4)for(var L=0;L<w;L++){var t=i[L>>>2]>>>24-L%4*8&255;M[I+L>>>2]|=t<<24-(I+L)%4*8}else for(var c=0;c<w;c+=4)M[I+c>>>2]=i[c>>>2];return this.sigBytes+=w,this},clamp:function(){var M=this.words,i=this.sigBytes;M[i>>>2]&=4294967295<<32-i%4*8,M.length=s.ceil(i/4)},clone:function(){var s=c.clone.call(this);return s.words=this.words.slice(0),s},random:function(s){for(var M=[],i=0;i<s;i+=4)M.push(I());return new d.init(M,s)}}),l=L.enc={},n=l.Hex={stringify:function(s){for(var M=s.words,i=s.sigBytes,I=[],w=0;w<i;w++){var L=M[w>>>2]>>>24-w%4*8&255;I.push((L>>>4).toString(16)),I.push((15&L).toString(16))}return I.join("")},parse:function(s){for(var M=s.length,i=[],I=0;I<M;I+=2)i[I>>>3]|=parseInt(s.substr(I,2),16)<<24-I%8*4;return new d.init(i,M/2)}},e=l.Latin1={stringify:function(s){for(var M=s.words,i=s.sigBytes,I=[],w=0;w<i;w++){var L=M[w>>>2]>>>24-w%4*8&255;I.push(String.fromCharCode(L))}return I.join("")},parse:function(s){for(var M=s.length,i=[],I=0;I<M;I++)i[I>>>2]|=(255&s.charCodeAt(I))<<24-I%4*8;return new d.init(i,M)}},y=l.Utf8={stringify:function(s){try{return decodeURIComponent(escape(e.stringify(s)))}catch(s){throw new Error("Malformed UTF-8 data")}},parse:function(s){return e.parse(unescape(encodeURIComponent(s)))}},D=t.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(s){"string"==typeof s&&(s=y.parse(s)),this._data.concat(s),this._nDataBytes+=s.sigBytes},_process:function(M){var i,I=this._data,w=I.words,L=I.sigBytes,t=this.blockSize,c=L/(4*t),l=(c=M?s.ceil(c):s.max((0|c)-this._minBufferSize,0))*t,n=s.min(4*l,L);if(l){for(var e=0;e<l;e+=t)this._doProcessBlock(w,e);i=w.splice(0,l),I.sigBytes-=n}return new d.init(i,n)},clone:function(){var s=c.clone.call(this);return s._data=this._data.clone(),s},_minBufferSize:0});t.Hasher=D.extend({cfg:c.extend(),init:function(s){this.cfg=this.cfg.extend(s),this.reset()},reset:function(){D.reset.call(this),this._doReset()},update:function(s){return this._append(s),this._process(),this},finalize:function(s){return s&&this._append(s),this._doFinalize()},blockSize:16,_createHelper:function(s){return function(M,i){return new s.init(i).finalize(M)}},_createHmacHelper:function(s){return function(M,i){return new C.HMAC.init(s,i).finalize(M)}}});var C=L.algo={};return L}(Math),i)}(ZM)),mM}!function(s,M){s.exports=NM().enc.Utf8}({get exports(){return CM},set exports(s){CM=s}});var uM=CM,bM={};!function(s,M){var i;s.exports=(i=NM(),function(){var s=i,M=s.lib.WordArray;function I(s,i,I){for(var w=[],L=0,t=0;t<i;t++)if(t%4){var c=I[s.charCodeAt(t-1)]<<t%4*2|I[s.charCodeAt(t)]>>>6-t%4*2;w[L>>>2]|=c<<24-L%4*8,L++}return M.create(w,L)}s.enc.Base64={stringify:function(s){var M=s.words,i=s.sigBytes,I=this._map;s.clamp();for(var w=[],L=0;L<i;L+=3)for(var t=(M[L>>>2]>>>24-L%4*8&255)<<16|(M[L+1>>>2]>>>24-(L+1)%4*8&255)<<8|M[L+2>>>2]>>>24-(L+2)%4*8&255,c=0;c<4&&L+.75*c<i;c++)w.push(I.charAt(t>>>6*(3-c)&63));var d=I.charAt(64);if(d)for(;w.length%4;)w.push(d);return w.join("")},parse:function(s){var M=s.length,i=this._map,w=this._reverseMap;if(!w){w=this._reverseMap=[];for(var L=0;L<i.length;L++)w[i.charCodeAt(L)]=L}var t=i.charAt(64);if(t){var c=s.indexOf(t);-1!==c&&(M=c)}return I(s,M,w)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),i.enc.Base64)}({get exports(){return bM},set exports(s){bM=s}});var gM=bM;function xM(s){if(!zs(s))return"";let M=uM.parse(s);return gM.stringify(M)}function XM(s,M){return!!As(s)&&(!(!zs(M)&&!Fs(M))&&M in s)}function rM(s,M){for(var i=-1,I=null==s?0:s.length;++i<I&&!1!==M(s[i],i,s););return s}var pM,TM=function(s,M,i){for(var I=-1,w=Object(s),L=i(s),t=L.length;t--;){var c=L[pM?t:++I];if(!1===M(w[c],c,w))break}return s};function aM(s){return X(s)&&"[object Arguments]"==x(s)}var YM=Object.prototype,hM=YM.hasOwnProperty,SM=YM.propertyIsEnumerable,AM=aM(function(){return arguments}())?aM:function(s){return X(s)&&hM.call(s,"callee")&&!SM.call(s,"callee")},GM=AM;var KM="object"==typeof exports&&exports&&!exports.nodeType&&exports,zM=KM&&"object"==typeof module&&module&&!module.nodeType&&module,EM=zM&&zM.exports===KM?y.Buffer:void 0,WM=(EM?EM.isBuffer:void 0)||function(){return!1},jM=9007199254740991,VM=/^(?:0|[1-9]\d*)$/;function HM(s,M){var i=typeof s;return!!(M=null==M?jM:M)&&("number"==i||"symbol"!=i&&VM.test(s))&&s>-1&&s%1==0&&s<M}var fM=9007199254740991;function QM(s){return"number"==typeof s&&s>-1&&s%1==0&&s<=fM}var UM={};UM["[object Float32Array]"]=UM["[object Float64Array]"]=UM["[object Int8Array]"]=UM["[object Int16Array]"]=UM["[object Int32Array]"]=UM["[object Uint8Array]"]=UM["[object Uint8ClampedArray]"]=UM["[object Uint16Array]"]=UM["[object Uint32Array]"]=!0,UM["[object Arguments]"]=UM["[object Array]"]=UM["[object ArrayBuffer]"]=UM["[object Boolean]"]=UM["[object DataView]"]=UM["[object Date]"]=UM["[object Error]"]=UM["[object Function]"]=UM["[object Map]"]=UM["[object Number]"]=UM["[object Object]"]=UM["[object RegExp]"]=UM["[object Set]"]=UM["[object String]"]=UM["[object WeakMap]"]=!1;var JM="object"==typeof exports&&exports&&!exports.nodeType&&exports,vM=JM&&"object"==typeof module&&module&&!module.nodeType&&module,RM=vM&&vM.exports===JM&&n.process,PM=function(){try{var s=vM&&vM.require&&vM.require("util").types;return s||RM&&RM.binding&&RM.binding("util")}catch(s){}}(),BM=PM&&PM.isTypedArray,kM=BM?function(s){return function(M){return s(M)}}(BM):function(s){return X(s)&&QM(s.length)&&!!UM[x(s)]},FM=kM,OM=Object.prototype.hasOwnProperty;function _M(s,M){var i=l(s),I=!i&&GM(s),w=!i&&!I&&WM(s),L=!i&&!I&&!w&&FM(s),t=i||I||w||L,c=t?function(s,M){for(var i=-1,I=Array(s);++i<s;)I[i]=M(i);return I}(s.length,String):[],d=c.length;for(var n in s)!M&&!OM.call(s,n)||t&&("length"==n||w&&("offset"==n||"parent"==n)||L&&("buffer"==n||"byteLength"==n||"byteOffset"==n)||HM(n,d))||c.push(n);return c}var qM=Object.prototype;function $M(s,M){return function(i){return s(M(i))}}var si=$M(Object.keys,Object),Mi=Object.prototype.hasOwnProperty;function ii(s){if(i=(M=s)&&M.constructor,M!==("function"==typeof i&&i.prototype||qM))return si(s);var M,i,I=[];for(var w in Object(s))Mi.call(s,w)&&"constructor"!=w&&I.push(w);return I}function Ii(s){return null!=s&&QM(s.length)&&!z(s)}function wi(s){return Ii(s)?_M(s):ii(s)}var Li=function(s,M){return function(i,I){if(null==i)return i;if(!Ii(i))return s(i,I);for(var w=i.length,L=M?w:-1,t=Object(i);(M?L--:++L<w)&&!1!==I(t[L],L,t););return i}}((function(s,M){return s&&TM(s,M,wi)})),ti=Li;function ci(s){return s}function di(s,M){var i;return(l(s)?rM:ti)(s,"function"==typeof(i=M)?i:ci)}function li(s){return"[object ArrayBuffer]"===Object.prototype.toString.call(s)}function ni(s){return"[object Uint8Array]"===Object.prototype.toString.call(s)}function ei(s){return"[object Uint16Array]"===Object.prototype.toString.call(s)}function yi(s){if(!(li(s)||(M=s,"[object Blob]"===Object.prototype.toString.call(M))||ni(s)||ei(s)))return null;var M;try{if(s.byteLength)return s.byteLength}catch(s){}try{if(s.length)return s.length}catch(s){}try{if(s.size)return s.size}catch(s){}return null}var Di=$M(Object.getPrototypeOf,Object),Ci="[object Object]",oi=Function.prototype,mi=Object.prototype,Zi=oi.toString,Ni=mi.hasOwnProperty,ui=Zi.call(Object);var bi="[object DOMException]",gi="[object Error]";function xi(s){if(!X(s))return!1;var M=x(s);return M==gi||M==bi||"string"==typeof s.message&&"string"==typeof s.name&&!function(s){if(!X(s)||x(s)!=Ci)return!1;var M=Di(s);if(null===M)return!0;var i=Ni.call(M,"constructor")&&M.constructor;return"function"==typeof i&&i instanceof i&&Zi.call(i)==ui}(s)}function Xi(s){if(!zs(s))return new Uint8Array;let M;try{M=function(s){if(!Ks(s))return new Uint8Array;let M=gM.parse(s),i=M.words,I=M.sigBytes,w=new Uint8Array(I);for(let s=0;s<I;s++){let M=i[s>>>2]>>>24-s%4*8&255;w[s]=M}return w}(xM(s))}catch(s){return new Uint8Array}return M}function ri(s,M){return function(s,M,i,I,w,L){if(!Fs(s))return null;if(!ni(M))return null;if(!_s(i))return null;if(!nM(I))return null;if(!_s(w))return null;if(!_s(L))return null;let t,c,d;s=Os(s);let l=8*L-w-1,n=(1<<l)-1,e=n>>1,y=23===w?Math.pow(2,-24)-Math.pow(2,-77):0,D=I?L-1:0,C=I?-1:1,o=s<0||0===s&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(c=isNaN(s)?1:0,t=n):(t=Math.floor(Math.log(s)/Math.LN2),s*(d=Math.pow(2,-t))<1&&(t--,d*=2),(s+=t+e>=1?y/d:y*Math.pow(2,1-e))*d>=2&&(t++,d/=2),t+e>=n?(c=0,t=n):t+e>=1?(c=(s*d-1)*Math.pow(2,w),t+=e):(c=s*Math.pow(2,e-1)*Math.pow(2,w),t=0));w>=8;M[i+D]=255&c,D+=C,c/=256,w-=8);for(t=t<<w|c,l+=w;l>0;M[i+D]=255&t,D+=C,t/=256,l-=8);return M[i+D-C]|=128*o,null}(s,M,arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,!(arguments.length>3&&void 0!==arguments[3])||arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:52,arguments.length>5&&void 0!==arguments[5]?arguments[5]:8)}function pi(s){let M=[],i=[];if(!dM(s)&&!Gs(s))return null;let I=[],w=[];function L(s){I.push(yi(s)),w.push(s)}try{let t=function(s){if(!As(s))return{results:"",binarys:[]};if(tM(s))return{results:"",binarys:[]};let M="",i=[];try{let I=-1;M=JSON.stringify(s,(function(s,M){if(ni(M)){I+=1;let s=`[Uint8Array]::${I}`;return i.push(M),s}if(ei(M)){I+=1;let s=`[Uint16Array]::${I}`;return i.push(M),s}if(li(M)){I+=1;let s=`[ArrayBuffer]::${I}`;return i.push(M),s}return xi(M)&&(M=M.toString()),M}))}catch(s){}return{results:M,binarys:i}}(s);L(Xi(t.results)),di(t.binarys,(s=>{L(s)}));let c=I,d=Xi(JSON.stringify(c)),l=new Uint8Array(8);ri(yi(d),l),M.push(l),M.push(d),di(w,(s=>{M.push(s)})),di(M,(s=>{i=function(s,M){let i=yi(s),I=yi(M),w=new Uint8Array(i+I);return w.set(new Uint8Array(s),0),w.set(new Uint8Array(M),i),w}(i,s)}))}catch(s){return null}return i}function Ti(s){return function(s,M,i,I,w){if(!ni(s))return null;if(!_s(M))return null;if(!nM(i))return null;if(!_s(I))return null;if(!_s(w))return null;let L,t,c=8*w-I-1,d=(1<<c)-1,l=d>>1,n=-7,e=i?0:w-1,y=i?1:-1,D=s[M+e];for(e+=y,L=D&(1<<-n)-1,D>>=-n,n+=c;n>0;L=256*L+s[M+e],e+=y,n-=8);for(t=L&(1<<-n)-1,L>>=-n,n+=I;n>0;t=256*t+s[M+e],e+=y,n-=8);if(0===L)L=1-l;else{if(L===d)return t?NaN:1/0*(D?-1:1);t+=Math.pow(2,I),L-=l}return(D?-1:1)*t*Math.pow(2,L-I)}(s,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,!(arguments.length>2&&void 0!==arguments[2])||arguments[2],arguments.length>3&&void 0!==arguments[3]?arguments[3]:52,arguments.length>4&&void 0!==arguments[4]?arguments[4]:8)}var ai={};!function(s,M){var i;s.exports=(i=NM(),function(){if("function"==typeof ArrayBuffer){var s=i.lib.WordArray,M=s.init,I=s.init=function(s){if(s instanceof ArrayBuffer&&(s=new Uint8Array(s)),(s instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&s instanceof Uint8ClampedArray||s instanceof Int16Array||s instanceof Uint16Array||s instanceof Int32Array||s instanceof Uint32Array||s instanceof Float32Array||s instanceof Float64Array)&&(s=new Uint8Array(s.buffer,s.byteOffset,s.byteLength)),s instanceof Uint8Array){for(var i=s.byteLength,I=[],w=0;w<i;w++)I[w>>>2]|=s[w]<<24-w%4*8;M.call(this,I,i)}else M.apply(this,arguments)};I.prototype=s}}(),i.lib.WordArray)}({get exports(){return ai},set exports(s){ai=s}});var Yi=ai;function hi(s){if(!ni(s))return"";let M;try{i=function(s){return ni(s)?Yi.create(s).toString(gM):""}(s),M=zs(i)?gM.parse(i).toString(uM):""}catch(s){return""}var i;return M}function Si(s){let M=null;if(!ni(s))return null;try{let i=8,I=s.slice(0,i),w=s.slice(i,yi(s)),L=Ti(I),t=w.slice(0,L),c=w.slice(L,yi(w)),d=hi(t),l=function(s,M){let i=0,I=0,w=[];return di(M,(M=>{I=i+M;let L=s.slice(i,I);i=I,w.push(L)})),w}(c,JSON.parse(d));M=function(s){if(!Gs(s))return{};let{results:M,binarys:i}=s;if(!zs(M))return{};if(!LM(i))return{};let I={};try{I=JSON.parse(M,(function(s,M){if(zs(M)){if(M.indexOf("[Uint8Array]::")>=0){let s=iM(M.replace("[Uint8Array]::",""));return i[s]}if(M.indexOf("[Uint16Array]::")>=0){let s=iM(M.replace("[Uint16Array]::",""));return i[s]}if(M.indexOf("[ArrayBuffer]::")>=0){let s=iM(M.replace("[ArrayBuffer]::",""));return i[s]}}return M}))}catch(s){}return I}({results:hi(l.shift()),binarys:l})}catch(s){}return M}function Ai(s){let M=rs(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(!M.existsSync(s))return!1;let i=M.lstatSync(s);return!i.isFile()&&!i.isSymbolicLink()}function Gi(s){return function(s){let M=rs(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(Ai(s,{fs:M}))return{success:"input folder is already exists: "+s};if(M.existsSync(s))return{error:"input path already exists: "+s};try{M.mkdirSync(s,{recursive:!0})}catch(s){return{error:s}}return{success:"done: "+s}}(s,{fs:M})}var Ki={};!function(s,M){s.exports=function(){var s=1e3,M=6e4,i=36e5,I="millisecond",w="second",L="minute",t="hour",c="day",d="week",l="month",n="quarter",e="year",y="date",D="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,o=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(s){var M=["th","st","nd","rd"],i=s%100;return"["+s+(M[(i-20)%10]||M[i]||M[0])+"]"}},Z=function(s,M,i){var I=String(s);return!I||I.length>=M?s:""+Array(M+1-I.length).join(i)+s},N={s:Z,z:function(s){var M=-s.utcOffset(),i=Math.abs(M),I=Math.floor(i/60),w=i%60;return(M<=0?"+":"-")+Z(I,2,"0")+":"+Z(w,2,"0")},m:function s(M,i){if(M.date()<i.date())return-s(i,M);var I=12*(i.year()-M.year())+(i.month()-M.month()),w=M.clone().add(I,l),L=i-w<0,t=M.clone().add(I+(L?-1:1),l);return+(-(I+(i-w)/(L?w-t:t-w))||0)},a:function(s){return s<0?Math.ceil(s)||0:Math.floor(s)},p:function(s){return{M:l,y:e,w:d,d:c,D:y,h:t,m:L,s:w,ms:I,Q:n}[s]||String(s||"").toLowerCase().replace(/s$/,"")},u:function(s){return void 0===s}},u="en",b={};b[u]=m;var g="$isDayjsObject",x=function(s){return s instanceof T||!(!s||!s[g])},X=function s(M,i,I){var w;if(!M)return u;if("string"==typeof M){var L=M.toLowerCase();b[L]&&(w=L),i&&(b[L]=i,w=L);var t=M.split("-");if(!w&&t.length>1)return s(t[0])}else{var c=M.name;b[c]=M,w=c}return!I&&w&&(u=w),w||!I&&u},r=function(s,M){if(x(s))return s.clone();var i="object"==typeof M?M:{};return i.date=s,i.args=arguments,new T(i)},p=N;p.l=X,p.i=x,p.w=function(s,M){return r(s,{locale:M.$L,utc:M.$u,x:M.$x,$offset:M.$offset})};var T=function(){function m(s){this.$L=X(s.locale,null,!0),this.parse(s),this.$x=this.$x||s.x||{},this[g]=!0}var Z=m.prototype;return Z.parse=function(s){this.$d=function(s){var M=s.date,i=s.utc;if(null===M)return new Date(NaN);if(p.u(M))return new Date;if(M instanceof Date)return new Date(M);if("string"==typeof M&&!/Z$/i.test(M)){var I=M.match(C);if(I){var w=I[2]-1||0,L=(I[7]||"0").substring(0,3);return i?new Date(Date.UTC(I[1],w,I[3]||1,I[4]||0,I[5]||0,I[6]||0,L)):new Date(I[1],w,I[3]||1,I[4]||0,I[5]||0,I[6]||0,L)}}return new Date(M)}(s),this.init()},Z.init=function(){var s=this.$d;this.$y=s.getFullYear(),this.$M=s.getMonth(),this.$D=s.getDate(),this.$W=s.getDay(),this.$H=s.getHours(),this.$m=s.getMinutes(),this.$s=s.getSeconds(),this.$ms=s.getMilliseconds()},Z.$utils=function(){return p},Z.isValid=function(){return!(this.$d.toString()===D)},Z.isSame=function(s,M){var i=r(s);return this.startOf(M)<=i&&i<=this.endOf(M)},Z.isAfter=function(s,M){return r(s)<this.startOf(M)},Z.isBefore=function(s,M){return this.endOf(M)<r(s)},Z.$g=function(s,M,i){return p.u(s)?this[M]:this.set(i,s)},Z.unix=function(){return Math.floor(this.valueOf()/1e3)},Z.valueOf=function(){return this.$d.getTime()},Z.startOf=function(s,M){var i=this,I=!!p.u(M)||M,n=p.p(s),D=function(s,M){var w=p.w(i.$u?Date.UTC(i.$y,M,s):new Date(i.$y,M,s),i);return I?w:w.endOf(c)},C=function(s,M){return p.w(i.toDate()[s].apply(i.toDate("s"),(I?[0,0,0,0]:[23,59,59,999]).slice(M)),i)},o=this.$W,m=this.$M,Z=this.$D,N="set"+(this.$u?"UTC":"");switch(n){case e:return I?D(1,0):D(31,11);case l:return I?D(1,m):D(0,m+1);case d:var u=this.$locale().weekStart||0,b=(o<u?o+7:o)-u;return D(I?Z-b:Z+(6-b),m);case c:case y:return C(N+"Hours",0);case t:return C(N+"Minutes",1);case L:return C(N+"Seconds",2);case w:return C(N+"Milliseconds",3);default:return this.clone()}},Z.endOf=function(s){return this.startOf(s,!1)},Z.$set=function(s,M){var i,d=p.p(s),n="set"+(this.$u?"UTC":""),D=(i={},i[c]=n+"Date",i[y]=n+"Date",i[l]=n+"Month",i[e]=n+"FullYear",i[t]=n+"Hours",i[L]=n+"Minutes",i[w]=n+"Seconds",i[I]=n+"Milliseconds",i)[d],C=d===c?this.$D+(M-this.$W):M;if(d===l||d===e){var o=this.clone().set(y,1);o.$d[D](C),o.init(),this.$d=o.set(y,Math.min(this.$D,o.daysInMonth())).$d}else D&&this.$d[D](C);return this.init(),this},Z.set=function(s,M){return this.clone().$set(s,M)},Z.get=function(s){return this[p.p(s)]()},Z.add=function(I,n){var y,D=this;I=Number(I);var C=p.p(n),o=function(s){var M=r(D);return p.w(M.date(M.date()+Math.round(s*I)),D)};if(C===l)return this.set(l,this.$M+I);if(C===e)return this.set(e,this.$y+I);if(C===c)return o(1);if(C===d)return o(7);var m=(y={},y[L]=M,y[t]=i,y[w]=s,y)[C]||1,Z=this.$d.getTime()+I*m;return p.w(Z,this)},Z.subtract=function(s,M){return this.add(-1*s,M)},Z.format=function(s){var M=this,i=this.$locale();if(!this.isValid())return i.invalidDate||D;var I=s||"YYYY-MM-DDTHH:mm:ssZ",w=p.z(this),L=this.$H,t=this.$m,c=this.$M,d=i.weekdays,l=i.months,n=i.meridiem,e=function(s,i,w,L){return s&&(s[i]||s(M,I))||w[i].slice(0,L)},y=function(s){return p.s(L%12||12,s,"0")},C=n||function(s,M,i){var I=s<12?"AM":"PM";return i?I.toLowerCase():I};return I.replace(o,(function(s,I){return I||function(s){switch(s){case"YY":return String(M.$y).slice(-2);case"YYYY":return p.s(M.$y,4,"0");case"M":return c+1;case"MM":return p.s(c+1,2,"0");case"MMM":return e(i.monthsShort,c,l,3);case"MMMM":return e(l,c);case"D":return M.$D;case"DD":return p.s(M.$D,2,"0");case"d":return String(M.$W);case"dd":return e(i.weekdaysMin,M.$W,d,2);case"ddd":return e(i.weekdaysShort,M.$W,d,3);case"dddd":return d[M.$W];case"H":return String(L);case"HH":return p.s(L,2,"0");case"h":return y(1);case"hh":return y(2);case"a":return C(L,t,!0);case"A":return C(L,t,!1);case"m":return String(t);case"mm":return p.s(t,2,"0");case"s":return String(M.$s);case"ss":return p.s(M.$s,2,"0");case"SSS":return p.s(M.$ms,3,"0");case"Z":return w}return null}(s)||w.replace(":","")}))},Z.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},Z.diff=function(I,y,D){var C,o=this,m=p.p(y),Z=r(I),N=(Z.utcOffset()-this.utcOffset())*M,u=this-Z,b=function(){return p.m(o,Z)};switch(m){case e:C=b()/12;break;case l:C=b();break;case n:C=b()/3;break;case d:C=(u-N)/6048e5;break;case c:C=(u-N)/864e5;break;case t:C=u/i;break;case L:C=u/M;break;case w:C=u/s;break;default:C=u}return D?C:p.a(C)},Z.daysInMonth=function(){return this.endOf(l).$D},Z.$locale=function(){return b[this.$L]},Z.locale=function(s,M){if(!s)return this.$L;var i=this.clone(),I=X(s,M,!0);return I&&(i.$L=I),i},Z.clone=function(){return p.w(this.$d,this)},Z.toDate=function(){return new Date(this.valueOf())},Z.toJSON=function(){return this.isValid()?this.toISOString():null},Z.toISOString=function(){return this.$d.toISOString()},Z.toString=function(){return this.$d.toUTCString()},m}(),a=T.prototype;return r.prototype=a,[["$ms",I],["$s",w],["$m",L],["$H",t],["$W",c],["$M",l],["$y",e],["$D",y]].forEach((function(s){a[s[1]]=function(M){return this.$g(M,s[0],s[1])}})),r.extend=function(s,M){return s.$i||(s(M,T,r),s.$i=!0),r},r.locale=X,r.isDayjs=x,r.unix=function(s){return r(1e3*s)},r.en=b[u],r.Ls=b,r.p={},r}()}({get exports(){return Ki},set exports(s){Ki=s}});var zi=Ki;let Ei="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),Wi=Ei.length;function ji(s){var M=this.__data__=new Ms(s);this.size=M.size}ji.prototype.clear=function(){this.__data__=new Ms,this.size=0},ji.prototype.delete=function(s){var M=this.__data__,i=M.delete(s);return this.size=M.size,i},ji.prototype.get=function(s){return this.__data__.get(s)},ji.prototype.has=function(s){return this.__data__.has(s)},ji.prototype.set=function(s,M){var i=this.__data__;if(i instanceof Ms){var I=i.__data__;if(!is||I.length<199)return I.push([s,M]),this.size=++i.size,this;i=this.__data__=new ws(I)}return i.set(s,M),this.size=i.size,this};function Vi(s){var M=-1,i=null==s?0:s.length;for(this.__data__=new ws;++M<i;)this.add(s[M])}function Hi(s,M){for(var i=-1,I=null==s?0:s.length;++i<I;)if(M(s[i],i,s))return!0;return!1}function fi(s,M){return s.has(M)}Vi.prototype.add=Vi.prototype.push=function(s){return this.__data__.set(s,"__lodash_hash_undefined__"),this},Vi.prototype.has=function(s){return this.__data__.has(s)};var Qi=1,Ui=2;function Ji(s,M,i,I,w,L){var t=i&Qi,c=s.length,d=M.length;if(c!=d&&!(t&&d>c))return!1;var l=L.get(s),n=L.get(M);if(l&&n)return l==M&&n==s;var e=-1,y=!0,D=i&Ui?new Vi:void 0;for(L.set(s,M),L.set(M,s);++e<c;){var C=s[e],o=M[e];if(I)var m=t?I(o,C,e,M,s,L):I(C,o,e,s,M,L);if(void 0!==m){if(m)continue;y=!1;break}if(D){if(!Hi(M,(function(s,M){if(!fi(D,M)&&(C===s||w(C,s,i,I,L)))return D.push(M)}))){y=!1;break}}else if(C!==o&&!w(C,o,i,I,L)){y=!1;break}}return L.delete(s),L.delete(M),y}var vi=y.Uint8Array;function Ri(s){var M=-1,i=Array(s.size);return s.forEach((function(s,I){i[++M]=[I,s]})),i}function Pi(s){var M=-1,i=Array(s.size);return s.forEach((function(s){i[++M]=s})),i}var Bi=1,ki=2,Fi="[object Boolean]",Oi="[object Date]",_i="[object Error]",qi="[object Map]",$i="[object Number]",sI="[object RegExp]",MI="[object Set]",iI="[object String]",II="[object Symbol]",wI="[object ArrayBuffer]",LI="[object DataView]",tI=D?D.prototype:void 0,cI=tI?tI.valueOf:void 0;var dI=Object.prototype.propertyIsEnumerable,lI=Object.getOwnPropertySymbols,nI=lI?function(s){return null==s?[]:(s=Object(s),function(s,M){for(var i=-1,I=null==s?0:s.length,w=0,L=[];++i<I;){var t=s[i];M(t,i,s)&&(L[w++]=t)}return L}(lI(s),(function(M){return dI.call(s,M)})))}:function(){return[]},eI=nI;function yI(s){return function(s,M,i){var I=M(s);return l(s)?I:function(s,M){for(var i=-1,I=M.length,w=s.length;++i<I;)s[w+i]=M[i];return s}(I,i(s))}(s,wi,eI)}var DI=1,CI=Object.prototype.hasOwnProperty;var oI=B(y,"DataView"),mI=B(y,"Promise"),ZI=B(y,"Set"),NI=B(y,"WeakMap"),uI="[object Map]",bI="[object Promise]",gI="[object Set]",xI="[object WeakMap]",XI="[object DataView]",rI=H(oI),pI=H(is),TI=H(mI),aI=H(ZI),YI=H(NI),hI=x;(oI&&hI(new oI(new ArrayBuffer(1)))!=XI||is&&hI(new is)!=uI||mI&&hI(mI.resolve())!=bI||ZI&&hI(new ZI)!=gI||NI&&hI(new NI)!=xI)&&(hI=function(s){var M=x(s),i="[object Object]"==M?s.constructor:void 0,I=i?H(i):"";if(I)switch(I){case rI:return XI;case pI:return uI;case TI:return bI;case aI:return gI;case YI:return xI}return M});var SI=hI,AI=1,GI="[object Arguments]",KI="[object Array]",zI="[object Object]",EI=Object.prototype.hasOwnProperty;function WI(s,M,i,I,w,L){var t=l(s),c=l(M),d=t?KI:SI(s),n=c?KI:SI(M),e=(d=d==GI?zI:d)==zI,y=(n=n==GI?zI:n)==zI,D=d==n;if(D&&WM(s)){if(!WM(M))return!1;t=!0,e=!1}if(D&&!e)return L||(L=new ji),t||FM(s)?Ji(s,M,i,I,w,L):function(s,M,i,I,w,L,t){switch(i){case LI:if(s.byteLength!=M.byteLength||s.byteOffset!=M.byteOffset)return!1;s=s.buffer,M=M.buffer;case wI:return!(s.byteLength!=M.byteLength||!L(new vi(s),new vi(M)));case Fi:case Oi:case $i:return q(+s,+M);case _i:return s.name==M.name&&s.message==M.message;case sI:case iI:return s==M+"";case qi:var c=Ri;case MI:var d=I&Bi;if(c||(c=Pi),s.size!=M.size&&!d)return!1;var l=t.get(s);if(l)return l==M;I|=ki,t.set(s,M);var n=Ji(c(s),c(M),I,w,L,t);return t.delete(s),n;case II:if(cI)return cI.call(s)==cI.call(M)}return!1}(s,M,d,i,I,w,L);if(!(i&AI)){var C=e&&EI.call(s,"__wrapped__"),o=y&&EI.call(M,"__wrapped__");if(C||o){var m=C?s.value():s,Z=o?M.value():M;return L||(L=new ji),w(m,Z,i,I,L)}}return!!D&&(L||(L=new ji),function(s,M,i,I,w,L){var t=i&DI,c=yI(s),d=c.length;if(d!=yI(M).length&&!t)return!1;for(var l=d;l--;){var n=c[l];if(!(t?n in M:CI.call(M,n)))return!1}var e=L.get(s),y=L.get(M);if(e&&y)return e==M&&y==s;var D=!0;L.set(s,M),L.set(M,s);for(var C=t;++l<d;){var o=s[n=c[l]],m=M[n];if(I)var Z=t?I(m,o,n,M,s,L):I(o,m,n,s,M,L);if(!(void 0===Z?o===m||w(o,m,i,I,L):Z)){D=!1;break}C||(C="constructor"==n)}if(D&&!C){var N=s.constructor,u=M.constructor;N==u||!("constructor"in s)||!("constructor"in M)||"function"==typeof N&&N instanceof N&&"function"==typeof u&&u instanceof u||(D=!1)}return L.delete(s),L.delete(M),D}(s,M,i,I,w,L))}function jI(s,M,i,I,w){return s===M||(null==s||null==M||!X(s)&&!X(M)?s!=s&&M!=M:WI(s,M,i,I,jI,w))}var VI=1,HI=2;function fI(s){return s==s&&!h(s)}function QI(s,M){return function(i){return null!=i&&(i[s]===M&&(void 0!==M||s in Object(i)))}}function UI(s){var M=function(s){for(var M=wi(s),i=M.length;i--;){var I=M[i],w=s[I];M[i]=[I,w,fI(w)]}return M}(s);return 1==M.length&&M[0][2]?QI(M[0][0],M[0][1]):function(i){return i===s||function(s,M,i,I){var w=i.length,L=w,t=!I;if(null==s)return!L;for(s=Object(s);w--;){var c=i[w];if(t&&c[2]?c[1]!==s[c[0]]:!(c[0]in s))return!1}for(;++w<L;){var d=(c=i[w])[0],l=s[d],n=c[1];if(t&&c[2]){if(void 0===l&&!(d in s))return!1}else{var e=new ji;if(I)var y=I(l,n,d,s,M,e);if(!(void 0===y?jI(n,l,VI|HI,I,e):y))return!1}}return!0}(i,s,M)}}function JI(s,M){return null!=s&&M in Object(s)}function vI(s,M){return null!=s&&function(s,M,i){for(var I=-1,w=(M=bs(M,s)).length,L=!1;++I<w;){var t=xs(M[I]);if(!(L=null!=s&&i(s,t)))break;s=s[t]}return L||++I!=w?L:!!(w=null==s?0:s.length)&&QM(w)&&HM(t,w)&&(l(s)||GM(s))}(s,M,JI)}var RI=1,PI=2;function BI(s){return Y(s)?(M=xs(s),function(s){return null==s?void 0:s[M]}):function(s){return function(M){return Xs(M,s)}}(s);var M}function kI(s){return"function"==typeof s?s:null==s?ci:"object"==typeof s?l(s)?function(s,M){return Y(s)&&fI(M)?QI(xs(s),M):function(i){var I=rs(i,s);return void 0===I&&I===M?vI(i,s):jI(M,I,RI|PI)}}(s[0],s[1]):UI(s):BI(s)}function FI(s,M){var i=-1,I=Ii(s)?Array(s.length):[];return ti(s,(function(s,w,L){I[++i]=M(s,w,L)})),I}function OI(s,M,i){var I=s.length;return i=void 0===i?I:i,!M&&i>=I?s:function(s,M,i){var I=-1,w=s.length;M<0&&(M=-M>w?0:w+M),(i=i>w?w:i)<0&&(i+=w),w=M>i?0:i-M>>>0,M>>>=0;for(var L=Array(w);++I<w;)L[I]=s[I+M];return L}(s,M,i)}function _I(s){return s!=s}function qI(s,M,i){return M==M?function(s,M,i){for(var I=i-1,w=s.length;++I<w;)if(s[I]===M)return I;return-1}(s,M,i):function(s,M,i,I){for(var w=s.length,L=i+(I?1:-1);I?L--:++L<w;)if(M(s[L],L,s))return L;return-1}(s,_I,i)}var $I=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var sw="\\ud800-\\udfff",Mw="["+sw+"]",iw="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Iw="\\ud83c[\\udffb-\\udfff]",ww="[^"+sw+"]",Lw="(?:\\ud83c[\\udde6-\\uddff]){2}",tw="[\\ud800-\\udbff][\\udc00-\\udfff]",cw="(?:"+iw+"|"+Iw+")"+"?",dw="[\\ufe0e\\ufe0f]?",lw=dw+cw+("(?:\\u200d(?:"+[ww,Lw,tw].join("|")+")"+dw+cw+")*"),nw="(?:"+[ww+iw+"?",iw,Lw,tw,Mw].join("|")+")",ew=RegExp(Iw+"(?="+Iw+")|"+nw+lw,"g");function yw(s){return function(s){return $I.test(s)}(s)?function(s){return s.match(ew)||[]}(s):function(s){return s.split("")}(s)}function Dw(s,M,i){if((s=us(s))&&(i||void 0===M))return js(s);if(!s||!(M=Ns(M)))return s;var I=yw(s),w=yw(M),L=function(s,M){for(var i=-1,I=s.length;++i<I&&qI(M,s[i],0)>-1;);return i}(I,w),t=function(s,M){for(var i=s.length;i--&&qI(M,s[i],0)>-1;);return i}(I,w)+1;return OI(I,L,t).join("")}function Cw(s,M){if(!zs(s))return[];if(!zs(M))return[];let i=function(s,M){return zs(s)&&zs(M)?s.split(M):[]}(s,M);var I,w;w=Dw,i=(l(I=i)?Cs:FI)(I,kI(w));let L=[];return di(i,(function(s){zs(s)&&L.push(s)})),L}function ow(s){let M=rs(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");return!!M.existsSync(s)&&(!M.lstatSync(s).isDirectory()&&!M.lstatSync(s).isSymbolicLink())}function mw(s){return ow(s,{fs:M})}function Zw(s){return function(s){let M=rs(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(!M.existsSync(s))return{success:"file does not exist: "+s};if(!ow(s,{fs:M}))return{error:"input path is not a file: "+s};try{M.unlinkSync(s)}catch(s){return{error:s}}return{success:"done: "+s}}(s,{fs:M})}var Nw={};!function(s,M){s.exports=function(s){var M={};!function(M,i){M.exports=function(s){var M={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return M},set exports(s){M=s}});var i=M;let I;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let M=(w="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxzPWEudG9TdHJpbmcsZj11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIHI9Yy5jYWxsKHQsZiksZT10W2ZdO3RyeXt0W2ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89cy5jYWxsKHQpO3JldHVybiBuJiYocj90W2ZdPWU6ZGVsZXRlIHRbZl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfXZhciBfPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIGQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmdih0KT09X312YXIgYj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxnPS9eXHcqJC87ZnVuY3Rpb24gaih0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1yfHwiZnVuY3Rpb24iPT1yKX12YXIgUz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsTz0iW29iamVjdCBGdW5jdGlvbl0iLG09IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix3PSJbb2JqZWN0IFByb3h5XSI7dmFyICQseD1pWyJfX2NvcmUtanNfc2hhcmVkX18iXSxSPSgkPS9bXi5dKyQvLmV4ZWMoeCYmeC5rZXlzJiZ4LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIiskOiIiO3ZhciB6PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxBPUZ1bmN0aW9uLnByb3RvdHlwZSxOPU9iamVjdC5wcm90b3R5cGUsUD1BLnRvU3RyaW5nLGs9Ti5oYXNPd25Qcm9wZXJ0eSxFPVJlZ0V4cCgiXiIrUC5jYWxsKGspLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO2Z1bmN0aW9uIEModCl7aWYoIWoodCl8fChyPXQsUiYmUiBpbiByKSlyZXR1cm4hMTt2YXIgcixlPWZ1bmN0aW9uKHQpe2lmKCFqKHQpKXJldHVybiExO3ZhciByPXYodCk7cmV0dXJuIHI9PU98fHI9PW18fHI9PVN8fHI9PXd9KHQpP0U6RjtyZXR1cm4gZS50ZXN0KGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gei5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0odCkpfWZ1bmN0aW9uIEkodCxyKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W3JdfSh0LHIpO3JldHVybiBDKGUpP2U6dm9pZCAwfXZhciBUPUkoT2JqZWN0LCJjcmVhdGUiKTt2YXIgTT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gTCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBVKHQscil7Zm9yKHZhciBlLG4sbz10Lmxlbmd0aDtvLS07KWlmKChlPXRbb11bMF0pPT09KG49cil8fGUhPWUmJm4hPW4pcmV0dXJuIG87cmV0dXJuLTF9TC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVQ/VChudWxsKTp7fSx0aGlzLnNpemU9MH0sTC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxMLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihUKXt2YXIgZT1yW3RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PWU/dm9pZCAwOmV9cmV0dXJuIE0uY2FsbChyLHQpP3JbdF06dm9pZCAwfSxMLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gVD92b2lkIDAhPT1yW3RdOnEuY2FsbChyLHQpfSxMLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPVQmJnZvaWQgMD09PXI/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnIsdGhpc307dmFyIEQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBHKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sRy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1VKHIsdCk7cmV0dXJuIShlPDApJiYoZT09ci5sZW5ndGgtMT9yLnBvcCgpOkQuY2FsbChyLGUsMSksLS10aGlzLnNpemUsITApfSxHLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVUocix0KTtyZXR1cm4gZTwwP3ZvaWQgMDpyW2VdWzFdfSxHLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFUodGhpcy5fX2RhdGFfXyx0KT4tMX0sRy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPVUoZSx0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxlLnB1c2goW3Qscl0pKTplW25dWzFdPXIsdGhpc307dmFyIFc9SShpLCJNYXAiKTtmdW5jdGlvbiBCKHQscil7dmFyIGUsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2YoZT1yKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09ZTpudWxsPT09ZSk/b1sic3RyaW5nIj09dHlwZW9mIHI/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBIKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUgucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgTCxtYXA6bmV3KFd8fEcpLHN0cmluZzpuZXcgTH19LEgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj1CKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gQih0aGlzLHQpLmdldCh0KX0sSC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBCKHRoaXMsdCkuaGFzKHQpfSxILnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT1CKHRoaXMsdCksbj1lLnNpemU7cmV0dXJuIGUuc2V0KHQsciksdGhpcy5zaXplKz1lLnNpemU9PW4/MDoxLHRoaXN9O3ZhciBKPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBLKHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoSik7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1yP3IuYXBwbHkodGhpcyxuKTpuWzBdLGk9ZS5jYWNoZTtpZihpLmhhcyhvKSlyZXR1cm4gaS5nZXQobyk7dmFyIHU9dC5hcHBseSh0aGlzLG4pO3JldHVybiBlLmNhY2hlPWkuc2V0KG8sdSl8fGksdX07cmV0dXJuIGUuY2FjaGU9bmV3KEsuQ2FjaGV8fEgpLGV9Sy5DYWNoZT1IO3ZhciBRLFYsWCxZPS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLFo9L1xcKFxcKT8vZyx0dD0oUT1mdW5jdGlvbih0KXt2YXIgcj1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJnIucHVzaCgiIiksdC5yZXBsYWNlKFksKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShaLCIkMSIpOmV8fHQpfSkpLHJ9LFY9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09WC5zaXplJiZYLmNsZWFyKCksdH0pKSxYPVYuY2FjaGUsVikscnQ9dHQ7dmFyIGV0PTEvMCxudD11P3UucHJvdG90eXBlOnZvaWQgMCxvdD1udD9udC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gaXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGUodCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsaXQpKyIiO2lmKGQodCkpcmV0dXJuIG90P290LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LWV0PyItMCI6cn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4gbnVsbD09dD8iIjppdCh0KX1mdW5jdGlvbiBhdCh0LHIpe3JldHVybiBlKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihlKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFkKHQpKXx8Zy50ZXN0KHQpfHwhYi50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06cnQodXQodCkpfXZhciBjdD0xLzA7ZnVuY3Rpb24gc3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxkKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1jdD8iLTAiOnJ9ZnVuY3Rpb24gZnQodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1hdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbc3QocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIGx0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBodCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHl0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIF90KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFodCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISgheXQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIXB0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIXZ0KHQpKSkpKX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4hKCF5dCh0KXx8IiI9PT10KX12YXIgYnQ9L1xzLzt2YXIgZ3Q9L15ccysvO2Z1bmN0aW9uIGp0KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZidC50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSh0KSsxKS5yZXBsYWNlKGd0LCIiKTp0fXZhciBTdD1OYU4sT3Q9L15bLStdMHhbMC05YS1mXSskL2ksbXQ9L14wYlswMV0rJC9pLHd0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24geHQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGQodCkpcmV0dXJuIFN0O2lmKGoodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWoocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PWp0KHQpO3ZhciBlPW10LnRlc3QodCk7cmV0dXJuIGV8fHd0LnRlc3QodCk/JHQodC5zbGljZSgyKSxlPzI6OCk6T3QudGVzdCh0KT9TdDordH12YXIgUnQ9MS8wLHp0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD14dCh0KSk9PT1SdHx8dD09PS1SdD8odDwwPy0xOjEpKnp0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBBdCh0KXt2YXIgcj1GdCh0KSxlPXIlMTtyZXR1cm4gcj09cj9lP3ItZTpyOjB9ZnVuY3Rpb24gTnQodCl7bGV0IHI9ITE7aWYoZHQodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYodnQodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBQdCh0KXtpZighTnQodCkpcmV0dXJuIDA7cmV0dXJuIEZ0KHQpfWZ1bmN0aW9uIGt0KHQpe3JldHVybiEhTnQodCkmJih0PVB0KHQpLCJudW1iZXIiPT10eXBlb2Yocj10KSYmcj09QXQocikpO3ZhciByfXZhciBFdD1pLmlzRmluaXRlLEN0PU1hdGgubWluO3ZhciBJdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9eHQodCksKGU9bnVsbD09ZT8wOkN0KEF0KGUpLDI5MikpJiZFdCh0KSl7dmFyIG49KHV0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPSh1dChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxUdD1JdDtmdW5jdGlvbiBNdCh0KXtpZighTnQodCkpcmV0dXJuIDA7dD1QdCh0KTtsZXQgcj1UdCh0KTtyZXR1cm4iMCI9PT1TdHJpbmcocik/MDpyfWZ1bmN0aW9uIHF0KHQpe2lmKCFrdCh0KSlyZXR1cm4hMTtyZXR1cm4gTXQodCk+PTB9ZnVuY3Rpb24gTHQodCxyKXtpZighZHQodCkpcmV0dXJuIiI7aWYoIXF0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1NdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gVXQodCxyKXtyZXR1cm4gZHQodCkmJnF0KHIpPzA9PT0ocj1NdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBkdCh0KSYmcXQocik/MD09PShyPU10KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIER0KHQpe2lmKCFkdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUx0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4iOiI9PT1MdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEd0KHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPWZ1bmN0aW9uKHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfSh0PXIucGF0aCk7aWYoIWR0KGUpKXJldHVybiB0O2xldCBuPUR0KHQ9VXQodCxlLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9ZnVuY3Rpb24gV3QodCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO2lmKCFlLmV4aXN0c1N5bmModCkpcmV0dXJuITE7bGV0IG49ZS5sc3RhdFN5bmModCk7cmV0dXJuIW4uaXNGaWxlKCkmJiFuLmlzU3ltYm9saWNMaW5rKCl9ZnVuY3Rpb24gQnQodCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO3JldHVybiEhZS5leGlzdHNTeW5jKHQpJiYoIWUubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFlLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBIdCh0LHI9e30pe2xldCBlPWZ0KHIsImZzIik7aWYoIWUuZXhpc3RzU3luYyh0KSlyZXR1cm57c3VjY2VzczoiZmlsZSBkb2VzIG5vdCBleGlzdDogIit0fTtpZighQnQodCx7ZnM6ZX0pKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBpcyBub3QgYSBmaWxlOiAiK3R9O3RyeXtlLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fXJldHVybntzdWNjZXNzOiJkb25lOiAiK3R9fWFzeW5jIGZ1bmN0aW9uIEp0KHQscixlLG49e30pe2xldCBvPSIiLGk9ZnQobiwiZnMiKTtpZighcHQodT1yKXx8MD09PXUubGVuZ3RofHwxPT09dS5sZW5ndGgmJl90KHVbMF0pKXRocm93IG5ldyBFcnJvcigiZnBzSW4gaW4gbm90IGFuIGVmZmVjdGl2ZSBhcnJheSIpO3ZhciB1O2xldCBhPUd0KGUpO1d0KGEse2ZzOml9KXx8ZnVuY3Rpb24odCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO2lmKFd0KHQse2ZzOmV9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKGUuZXhpc3RzU3luYyh0KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07dHJ5e2UubWtkaXJTeW5jKHQse3JlY3Vyc2l2ZTohMH0pfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX19KGEse2ZzOml9KTtsZXQgYz1sdCgpO3RyeXtsZXQgbj1pLmNyZWF0ZVdyaXRlU3RyZWFtKGUpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtsZXQgZT1yW3RdO2lmKCFCdChlLHtmczppfSkpdGhyb3cgbmV3IEVycm9yKGBmcEluWyR7ZX1dIGlzIG5vdCBhIGZpbGVgKTtsZXQgdT0oKT0+e2xldCB0PWx0KCkscj1pLmNyZWF0ZVJlYWRTdHJlYW0oZSk7cmV0dXJuIHIub24oImVycm9yIiwocj0+e289ci5tZXNzYWdlLHQucmVqZWN0KHIpfSkpLHIub24oImVuZCIsKCgpPT57SHQoZSx7ZnM6aX0pLHQucmVzb2x2ZSgpfSkpLHIucGlwZShuLHtlbmQ6ITF9KSx0fTthd2FpdCB1KCl9bi5lbmQoKSxuLm9uKCJlcnJvciIsKHQ9PntvPXQubWVzc2FnZSxjLnJlamVjdChvKX0pKSxuLm9uKCJmaW5pc2giLCgoKT0+e2xldCByPXtmaWxlbmFtZTp0LHBhdGg6ZX07Yy5yZXNvbHZlKHIpfSkpfWNhdGNoKHQpe289dC5tZXNzYWdlLGMucmVqZWN0KG8pfXJldHVybiBjfWxldCBtZXJnZVNsaWNlcz1hc3luYyhlLG4sbyk9PntsZXQgaT1bXTtmb3IobGV0IHI9MDtyPG47cisrKXtsZXQgbj10LmpvaW4obyxgJHtlfV8ke3J9YCk7aS5wdXNoKG4pfWxldCB1PXQuam9pbihvLGUpLGE9YXdhaXQgYXN5bmMgZnVuY3Rpb24odCxlLG4pe3JldHVybiBKdCh0LGUsbix7ZnM6cn0pfShlLGksdSk7cmV0dXJuIHIud3JpdGVGaWxlU3luYyhgJHt1fS5kb25lYCwiIiwidXRmOCIpLGF9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VTbGljZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VTbGljZXMKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(w,"base64").toString("utf8"));var w;function L(){let I=new i,w=function(M){try{return new s.Worker(M,{eval:!0})}catch(s){t(s)}}(M);if(!w)return t("invalid worker"),null;function L(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),M=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),i={mode:"call",id:M,fun:"main",input:[...arguments]};return w.postMessage(i),I.once(M,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function t(s){I.emit("error",s)}return w.on("message",(function(s){let M=s,i=M.mode;"emit"!==i&&"return"!==i||("emit"===i&&I.emit(M.evName,M.msg),"return"===i&&I.emit(M.id,M))})),w.on("error",t),w.on("exit",(s=>{1!==s&&t("exit code["+s+"] !== 1")})),function(){let s={mode:"init",type:"function",input:[...arguments]};w.postMessage(s)}([...arguments]),I.main=L,I.main=L,I.terminate=function(){w?(w.terminate(),w=void 0):t("worker has been terminated")},I}I=async function(){let s=[...arguments],M=L();return await M.main(...s).finally((()=>{M.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return I}(s)}({get exports(){return M},set exports(s){M=s}});var i=M,I={};!function(s,M){s.exports=function(){const s="function"==typeof Buffer,M="function"==typeof TextDecoder?new TextDecoder:void 0,i=(s=>{let M={};return s.forEach(((s,i)=>M[s]=i)),M})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),I=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,w=String.fromCharCode.bind(String),L="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):s=>new Uint8Array(Array.prototype.slice.call(s,0)),t=s=>s.replace(/[^A-Za-z0-9\+\/]/g,""),c=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,d=s=>{switch(s.length){case 4:var M=((7&s.charCodeAt(0))<<18|(63&s.charCodeAt(1))<<12|(63&s.charCodeAt(2))<<6|63&s.charCodeAt(3))-65536;return w(55296+(M>>>10))+w(56320+(1023&M));case 3:return w((15&s.charCodeAt(0))<<12|(63&s.charCodeAt(1))<<6|63&s.charCodeAt(2));default:return w((31&s.charCodeAt(0))<<6|63&s.charCodeAt(1))}},l=s=>s.replace(c,d),n=s=>{if(s=s.replace(/\s+/g,""),!I.test(s))throw new TypeError("malformed base64.");s+="==".slice(2-(3&s.length));let M,L,t,c="";for(let I=0;I<s.length;)M=i[s.charAt(I++)]<<18|i[s.charAt(I++)]<<12|(L=i[s.charAt(I++)])<<6|(t=i[s.charAt(I++)]),c+=64===L?w(M>>16&255):64===t?w(M>>16&255,M>>8&255):w(M>>16&255,M>>8&255,255&M);return c},e="function"==typeof atob?s=>atob(t(s)):s?s=>Buffer.from(s,"base64").toString("binary"):n,y=s?s=>L(Buffer.from(s,"base64")):s=>L(e(s).split("").map((s=>s.charCodeAt(0)))),D=s?s=>Buffer.from(s,"base64").toString("utf8"):M?s=>M.decode(y(s)):s=>l(e(s)),C=s=>t(s.replace(/[-_]/g,(s=>"-"==s?"+":"/"))),o=s=>D(C(s)),m=o;var Z={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return Z},set exports(s){Z=s}});var N=Z;let u;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let s=m("CgoKInVzZSBzdHJpY3QiO3ZhciB0PXJlcXVpcmUoInBhdGgiKSxyPXJlcXVpcmUoImZzIiksZT1BcnJheS5pc0FycmF5LG49Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLG89Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixpPW58fG98fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksdT1pLlN5bWJvbCxhPU9iamVjdC5wcm90b3R5cGUsYz1hLmhhc093blByb3BlcnR5LHM9YS50b1N0cmluZyxmPXU/dS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGw9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgcD0iW29iamVjdCBOdWxsXSIsaD0iW29iamVjdCBVbmRlZmluZWRdIix5PXU/dS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gdih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P2g6cDp5JiZ5IGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgcj1jLmNhbGwodCxmKSxlPXRbZl07dHJ5e3RbZl09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz1zLmNhbGwodCk7cmV0dXJuIG4mJihyP3RbZl09ZTpkZWxldGUgdFtmXSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGwuY2FsbCh0KX0odCl9dmFyIF89IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24gZCh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9KHQpJiZ2KHQpPT1ffXZhciBiPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLGc9L15cdyokLztmdW5jdGlvbiBqKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfXZhciBTPSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixPPSJbb2JqZWN0IEZ1bmN0aW9uXSIsbT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLHc9IltvYmplY3QgUHJveHldIjt2YXIgJCx4PWlbIl9fY29yZS1qc19zaGFyZWRfXyJdLFI9KCQ9L1teLl0rJC8uZXhlYyh4JiZ4LmtleXMmJngua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iKyQ6IiI7dmFyIHo9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBGPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEE9RnVuY3Rpb24ucHJvdG90eXBlLE49T2JqZWN0LnByb3RvdHlwZSxQPUEudG9TdHJpbmcsaz1OLmhhc093blByb3BlcnR5LEU9UmVnRXhwKCJeIitQLmNhbGwoaykucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gQyh0KXtpZighaih0KXx8KHI9dCxSJiZSIGluIHIpKXJldHVybiExO3ZhciByLGU9ZnVuY3Rpb24odCl7aWYoIWoodCkpcmV0dXJuITE7dmFyIHI9dih0KTtyZXR1cm4gcj09T3x8cj09bXx8cj09U3x8cj09d30odCk/RTpGO3JldHVybiBlLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiB6LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSh0KSl9ZnVuY3Rpb24gSSh0LHIpe3ZhciBlPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbcl19KHQscik7cmV0dXJuIEMoZSk/ZTp2b2lkIDB9dmFyIFQ9SShPYmplY3QsImNyZWF0ZSIpO3ZhciBNPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIHE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBMKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIFUodCxyKXtmb3IodmFyIGUsbixvPXQubGVuZ3RoO28tLTspaWYoKGU9dFtvXVswXSk9PT0obj1yKXx8ZSE9ZSYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1MLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189VD9UKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxMLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEwucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKFQpe3ZhciBlPXJbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09ZT92b2lkIDA6ZX1yZXR1cm4gTS5jYWxsKHIsdCk/clt0XTp2b2lkIDB9LEwucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiBUP3ZvaWQgMCE9PXJbdF06cS5jYWxsKHIsdCl9LEwucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLGVbdF09VCYmdm9pZCAwPT09cj8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6cix0aGlzfTt2YXIgRD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIEcodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19Ry5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxHLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVUocix0KTtyZXR1cm4hKGU8MCkmJihlPT1yLmxlbmd0aC0xP3IucG9wKCk6RC5jYWxsKHIsZSwxKSwtLXRoaXMuc2l6ZSwhMCl9LEcucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9VShyLHQpO3JldHVybiBlPDA/dm9pZCAwOnJbZV1bMV19LEcucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gVSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxHLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fLG49VShlLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLGUucHVzaChbdCxyXSkpOmVbbl1bMV09cix0aGlzfTt2YXIgVz1JKGksIk1hcCIpO2Z1bmN0aW9uIEIodCxyKXt2YXIgZSxuLG89dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihlPXIpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1lOm51bGw9PT1lKT9vWyJzdHJpbmciPT10eXBlb2Ygcj8ic3RyaW5nIjoiaGFzaCJdOm8ubWFwfWZ1bmN0aW9uIEgodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19SC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBMLG1hcDpuZXcoV3x8Ryksc3RyaW5nOm5ldyBMfX0sSC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPUIodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0sSC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBCKHRoaXMsdCkuZ2V0KHQpfSxILnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEIodGhpcyx0KS5oYXModCl9LEgucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPUIodGhpcyx0KSxuPWUuc2l6ZTtyZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemUrPWUuc2l6ZT09bj8wOjEsdGhpc307dmFyIEo9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIEsodCxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcihKKTt2YXIgZT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPXI/ci5hcHBseSh0aGlzLG4pOm5bMF0saT1lLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIGUuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gZS5jYWNoZT1uZXcoSy5DYWNoZXx8SCksZX1LLkNhY2hlPUg7dmFyIFEsVixYLFk9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csWj0vXFwoXFwpPy9nLHR0PShRPWZ1bmN0aW9uKHQpe3ZhciByPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmci5wdXNoKCIiKSx0LnJlcGxhY2UoWSwoZnVuY3Rpb24odCxlLG4sbyl7ci5wdXNoKG4/by5yZXBsYWNlKFosIiQxIik6ZXx8dCl9KSkscn0sVj1LKFEsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1YLnNpemUmJlguY2xlYXIoKSx0fSkpLFg9Vi5jYWNoZSxWKSxydD10dDt2YXIgZXQ9MS8wLG50PXU/dS5wcm90b3R5cGU6dm9pZCAwLG90PW50P250LnRvU3RyaW5nOnZvaWQgMDtmdW5jdGlvbiBpdCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoZSh0KSlyZXR1cm4gZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK2U8bjspb1tlXT1yKHRbZV0sZSx0KTtyZXR1cm4gb30odCxpdCkrIiI7aWYoZCh0KSlyZXR1cm4gb3Q/b3QuY2FsbCh0KToiIjt2YXIgcj10KyIiO3JldHVybiIwIj09ciYmMS90PT0tZXQ/Ii0wIjpyfWZ1bmN0aW9uIHV0KHQpe3JldHVybiBudWxsPT10PyIiOml0KHQpfWZ1bmN0aW9uIGF0KHQscil7cmV0dXJuIGUodCk/dDpmdW5jdGlvbih0LHIpe2lmKGUodCkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9dCYmIWQodCkpfHxnLnRlc3QodCl8fCFiLnRlc3QodCl8fG51bGwhPXImJnQgaW4gT2JqZWN0KHIpfSh0LHIpP1t0XTpydCh1dCh0KSl9dmFyIGN0PTEvMDtmdW5jdGlvbiBzdCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fGQodCkpcmV0dXJuIHQ7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LWN0PyItMCI6cn1mdW5jdGlvbiBmdCh0LHIsZSl7dmFyIG49bnVsbD09dD92b2lkIDA6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9MCxuPShyPWF0KHIsdCkpLmxlbmd0aDtudWxsIT10JiZlPG47KXQ9dFtzdChyW2UrK10pXTtyZXR1cm4gZSYmZT09bj90OnZvaWQgMH0odCxyKTtyZXR1cm4gdm9pZCAwPT09bj9lOm59ZnVuY3Rpb24gbHQoKXtsZXQgdCxyLGU9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0scj1hcmd1bWVudHNbMV19KSk7cmV0dXJuIGUucmVzb2x2ZT10LGUucmVqZWN0PXIsZX1mdW5jdGlvbiBwdCh0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIGh0KHQpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7Zm9yKGxldCByIGluIHQpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24geXQodCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gdnQodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gX3QodCl7cmV0dXJuISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBVbmRlZmluZWRdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bGxdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCghIWh0KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hKCF5dCh0KXx8IiIhPT10KX0odCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiEhcHQodCkmJjA9PT10Lmxlbmd0aH0odCl8fCEhdnQodCkpKSkpfWZ1bmN0aW9uIGR0KHQpe3JldHVybiEoIXl0KHQpfHwiIj09PXQpfXZhciBidD0vXHMvO3ZhciBndD0vXlxzKy87ZnVuY3Rpb24ganQodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJmJ0LnRlc3QodC5jaGFyQXQocikpOyk7cmV0dXJuIHJ9KHQpKzEpLnJlcGxhY2UoZ3QsIiIpOnR9dmFyIFN0PU5hTixPdD0vXlstK10weFswLTlhLWZdKyQvaSxtdD0vXjBiWzAxXSskL2ksd3Q9L14wb1swLTddKyQvaSwkdD1wYXJzZUludDtmdW5jdGlvbiB4dCh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoZCh0KSlyZXR1cm4gU3Q7aWYoaih0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9aihyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9anQodCk7dmFyIGU9bXQudGVzdCh0KTtyZXR1cm4gZXx8d3QudGVzdCh0KT8kdCh0LnNsaWNlKDIpLGU/Mjo4KTpPdC50ZXN0KHQpP1N0Oit0fXZhciBSdD0xLzAsenQ9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIEZ0KHQpe3JldHVybiB0Pyh0PXh0KHQpKT09PVJ0fHx0PT09LVJ0Pyh0PDA/LTE6MSkqenQ6dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIEF0KHQpe3ZhciByPUZ0KHQpLGU9ciUxO3JldHVybiByPT1yP2U/ci1lOnI6MH1mdW5jdGlvbiBOdCh0KXtsZXQgcj0hMTtpZihkdCh0KSlyPSFpc05hTihOdW1iZXIodCkpO2Vsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZih2dCh0KSlyZXR1cm4hMTtyPSEwfXJldHVybiByfWZ1bmN0aW9uIFB0KHQpe2lmKCFOdCh0KSlyZXR1cm4gMDtyZXR1cm4gRnQodCl9ZnVuY3Rpb24ga3QodCl7cmV0dXJuISFOdCh0KSYmKHQ9UHQodCksIm51bWJlciI9PXR5cGVvZihyPXQpJiZyPT1BdChyKSk7dmFyIHJ9dmFyIEV0PWkuaXNGaW5pdGUsQ3Q9TWF0aC5taW47dmFyIEl0PWZ1bmN0aW9uKHQpe3ZhciByPU1hdGhbdF07cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYodD14dCh0KSwoZT1udWxsPT1lPzA6Q3QoQXQoZSksMjkyKSkmJkV0KHQpKXt2YXIgbj0odXQodCkrImUiKS5zcGxpdCgiZSIpO3JldHVybisoKG49KHV0KHIoblswXSsiZSIrKCtuWzFdK2UpKSkrImUiKS5zcGxpdCgiZSIpKVswXSsiZSIrKCtuWzFdLWUpKX1yZXR1cm4gcih0KX19KCJyb3VuZCIpLFR0PUl0O2Z1bmN0aW9uIE10KHQpe2lmKCFOdCh0KSlyZXR1cm4gMDt0PVB0KHQpO2xldCByPVR0KHQpO3JldHVybiIwIj09PVN0cmluZyhyKT8wOnJ9ZnVuY3Rpb24gcXQodCl7aWYoIWt0KHQpKXJldHVybiExO3JldHVybiBNdCh0KT49MH1mdW5jdGlvbiBMdCh0LHIpe2lmKCFkdCh0KSlyZXR1cm4iIjtpZighcXQocikpcmV0dXJuIiI7aWYoMD09PShyPU10KHIpKSlyZXR1cm4iIjtsZXQgZT10Lmxlbmd0aC1yO3JldHVybiBlPDAmJihlPTApLHQuc3Vic3RyaW5nKGUsZStyKX1mdW5jdGlvbiBVdCh0LHIpe3JldHVybiBkdCh0KSYmcXQocik/MD09PShyPU10KHIpKT90OmZ1bmN0aW9uKHQscil7cmV0dXJuIGR0KHQpJiZxdChyKT8wPT09KHI9TXQocikpPyIiOnQuc3Vic3RyaW5nKDAscik6IiJ9KHQsdC5sZW5ndGgtcik6IiJ9ZnVuY3Rpb24gRHQodCl7aWYoIWR0KHQpKXJldHVybntwYXRoOiIiLGlzUm9vdDohMX07Zm9yKDt0LmluZGV4T2YoIlxcXFwiKT49MDspdD10LnJlcGxhY2UoIlxcXFwiLCJcXCIpO2Zvcig7dC5pbmRleE9mKCIvLyIpPj0wOyl0PXQucmVwbGFjZSgiLy8iLCIvIik7aWYoIjoiPT09THQodCwxKSlyZXR1cm57cGF0aDpgJHt0fVxcYCxpc1Jvb3Q6ITB9O2lmKCJcXCI9PT1MdCh0LDEpKXtsZXQgcj1VdCh0LDEpO3JldHVybiI6Ij09PUx0KHIsMSk/e3BhdGg6dCxpc1Jvb3Q6ITB9OntwYXRoOnIsaXNSb290OiExfX1pZigiLyI9PT1MdCh0LDEpKXtsZXQgcj1VdCh0LDEpO3JldHVybiAwPT09ci5sZW5ndGg/e3BhdGg6dCxpc1Jvb3Q6ITB9OntwYXRoOnIsaXNSb290OiExfX1yZXR1cm57cGF0aDp0LGlzUm9vdDohMX19ZnVuY3Rpb24gR3QodCl7aWYoIWR0KHQpKXJldHVybiIiO2xldCByPUR0KHQpO2lmKHIuaXNSb290KXJldHVybiByLnBhdGg7bGV0IGU9ZnVuY3Rpb24odCl7aWYoIWR0KHQpKXJldHVybiIiO2xldCByPUR0KHQpO2lmKHIuaXNSb290KXJldHVybiByLnBhdGg7bGV0IGU9ci5wYXRoO3RyeXtlPWUuc3BsaXQoIlxcIikucG9wKCkuc3BsaXQoIi8iKS5wb3AoKX1jYXRjaCh0KXt9cmV0dXJuIGV9KHQ9ci5wYXRoKTtpZighZHQoZSkpcmV0dXJuIHQ7bGV0IG49RHQodD1VdCh0LGUubGVuZ3RoKSk7cmV0dXJuIG4uaXNSb290LG4ucGF0aH1mdW5jdGlvbiBXdCh0LHI9e30pe2xldCBlPWZ0KHIsImZzIik7aWYoIWUuZXhpc3RzU3luYyh0KSlyZXR1cm4hMTtsZXQgbj1lLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBCdCh0LHI9e30pe2xldCBlPWZ0KHIsImZzIik7cmV0dXJuISFlLmV4aXN0c1N5bmModCkmJighZS5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIWUubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIEh0KHQscj17fSl7bGV0IGU9ZnQociwiZnMiKTtpZighZS5leGlzdHNTeW5jKHQpKXJldHVybntzdWNjZXNzOiJmaWxlIGRvZXMgbm90IGV4aXN0OiAiK3R9O2lmKCFCdCh0LHtmczplfSkpcmV0dXJue2Vycm9yOiJpbnB1dCBwYXRoIGlzIG5vdCBhIGZpbGU6ICIrdH07dHJ5e2UudW5saW5rU3luYyh0KX1jYXRjaCh0KXtyZXR1cm57ZXJyb3I6dH19cmV0dXJue3N1Y2Nlc3M6ImRvbmU6ICIrdH19YXN5bmMgZnVuY3Rpb24gSnQodCxyLGUsbj17fSl7bGV0IG89IiIsaT1mdChuLCJmcyIpO2lmKCFwdCh1PXIpfHwwPT09dS5sZW5ndGh8fDE9PT11Lmxlbmd0aCYmX3QodVswXSkpdGhyb3cgbmV3IEVycm9yKCJmcHNJbiBpbiBub3QgYW4gZWZmZWN0aXZlIGFycmF5Iik7dmFyIHU7bGV0IGE9R3QoZSk7V3QoYSx7ZnM6aX0pfHxmdW5jdGlvbih0LHI9e30pe2xldCBlPWZ0KHIsImZzIik7aWYoV3QodCx7ZnM6ZX0pKXJldHVybntzdWNjZXNzOiJpbnB1dCBmb2xkZXIgaXMgYWxyZWFkeSBleGlzdHM6ICIrdH07aWYoZS5leGlzdHNTeW5jKHQpKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBhbHJlYWR5IGV4aXN0czogIit0fTt0cnl7ZS5ta2RpclN5bmModCx7cmVjdXJzaXZlOiEwfSl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fX0oYSx7ZnM6aX0pO2xldCBjPWx0KCk7dHJ5e2xldCBuPWkuY3JlYXRlV3JpdGVTdHJlYW0oZSk7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kyspe2xldCBlPXJbdF07aWYoIUJ0KGUse2ZzOml9KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtlfV0gaXMgbm90IGEgZmlsZWApO2xldCB1PSgpPT57bGV0IHQ9bHQoKSxyPWkuY3JlYXRlUmVhZFN0cmVhbShlKTtyZXR1cm4gci5vbigiZXJyb3IiLChyPT57bz1yLm1lc3NhZ2UsdC5yZWplY3Qocil9KSksci5vbigiZW5kIiwoKCk9PntIdChlLHtmczppfSksdC5yZXNvbHZlKCl9KSksci5waXBlKG4se2VuZDohMX0pLHR9O2F3YWl0IHUoKX1uLmVuZCgpLG4ub24oImVycm9yIiwodD0+e289dC5tZXNzYWdlLGMucmVqZWN0KG8pfSkpLG4ub24oImZpbmlzaCIsKCgpPT57bGV0IHI9e2ZpbGVuYW1lOnQscGF0aDplfTtjLnJlc29sdmUocil9KSl9Y2F0Y2godCl7bz10Lm1lc3NhZ2UsYy5yZWplY3Qobyl9cmV0dXJuIGN9bGV0IG1lcmdlU2xpY2VzPWFzeW5jKGUsbixvKT0+e2xldCBpPVtdO2ZvcihsZXQgcj0wO3I8bjtyKyspe2xldCBuPXQuam9pbihvLGAke2V9XyR7cn1gKTtpLnB1c2gobil9bGV0IHU9dC5qb2luKG8sZSksYT1hd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsbil7cmV0dXJuIEp0KHQsZSxuLHtmczpyfSl9KGUsaSx1KTtyZXR1cm4gci53cml0ZUZpbGVTeW5jKGAke3V9LmRvbmVgLCIiLCJ1dGY4IiksYX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZXJnZVNsaWNlcwogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZXJnZVNsaWNlcwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZWN2TWVzc2FnZShlLmRhdGEpCiAgICAgICAgfQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==");function M(){let M=new N,i=function(s){try{let M=new Blob([s]),i=window.URL||window.webkitURL;return new Worker(i.createObjectURL(M))}catch(s){w(s)}}(s);if(!i)return w("invalid worker"),null;function I(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),I=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),w={mode:"call",id:I,fun:"main",input:[...arguments]};return i.postMessage(w),M.once(I,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function w(s){M.emit("error",s)}return i.onmessage=function(s){!function(s){let i=s,I=i.mode;"emit"!==I&&"return"!==I||("emit"===I&&M.emit(i.evName,i.msg),"return"===I&&M.emit(i.id,i))}(s.data)},i.onerror=w,i.onmessageerror=function(s){w(s.data)},function(){let s={mode:"init",type:"function",input:[...arguments]};i.postMessage(s)}([...arguments]),M.main=I,M.main=I,M.terminate=function(){i?(i.terminate(),i=void 0):w("worker has been terminated")},M}u=async function(){let s=[...arguments],i=M();return await i.main(...s).finally((()=>{i.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return u}()}({get exports(){return I},set exports(s){I=s}});var w=I;let L;return L="undefined"!=typeof window&&void 0!==window.document?w:i,L}(L)}({get exports(){return Nw},set exports(s){Nw=s}});var uw=Nw;let bw=(s,M,i)=>{let I=`${function(){if(!eM(zi))throw new Error("invalid dayjs");return zi().format("YYYYMMDDHHmmss")}()}|${function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:32,M=[];s=wM(s)?iM(s):32;for(let i=0;i<s;i++)M[i]=Ei[0|Math.random()*Wi];return M.join("")}(6)}|${s}`;return setTimeout((()=>{uw(s,M,i).catch((s=>{console.log(s)}))}),1),I},gw=(M,i)=>{let I="";if(!zs(M))return I=`invalid id[${M}]`,console.log(I),{state:"error",msg:I,path:""};let w=rs(Cw(M,"|"),2,"");if(!zs(w))return I=`can not find fileHash in id[${M}]`,console.log(I),{state:"error",msg:I,path:""};let L=s.resolve(i,w),t=s.resolve(i,`${w}.done`),c=mw(L),d=mw(t),l=c&&d;return!c&&d&&Zw(t),{state:l?"success":"merging",msg:"",path:L}};var xw={};!function(s,M){s.exports=function(s){var M={};!function(M,i){M.exports=function(s){var M={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return M},set exports(s){M=s}});var i=M;let I;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let M=(w="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLE89XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sUz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMseD1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsej14JiZ4LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCxQPSh6P3ouaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sRT05MDA3MTk5MjU0NzQwOTkxLGs9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uICQodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/RTplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmay50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEY9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1GfXZhciBUPXt9O1RbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPVRbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPVRbIltvYmplY3QgSW50OEFycmF5XSJdPVRbIltvYmplY3QgSW50MTZBcnJheV0iXT1UWyJbb2JqZWN0IEludDMyQXJyYXldIl09VFsiW29iamVjdCBVaW50OEFycmF5XSJdPVRbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09VFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLFRbIltvYmplY3QgQXJndW1lbnRzXSJdPVRbIltvYmplY3QgQXJyYXldIl09VFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1UWyJbb2JqZWN0IEJvb2xlYW5dIl09VFsiW29iamVjdCBEYXRhVmlld10iXT1UWyJbb2JqZWN0IERhdGVdIl09VFsiW29iamVjdCBFcnJvcl0iXT1UWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPVRbIltvYmplY3QgTWFwXSJdPVRbIltvYmplY3QgTnVtYmVyXSJdPVRbIltvYmplY3QgT2JqZWN0XSJdPVRbIltvYmplY3QgUmVnRXhwXSJdPVRbIltvYmplY3QgU2V0XSJdPVRbIltvYmplY3QgU3RyaW5nXSJdPVRbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgRCxJPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsTT1JJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsTj1NJiZNLmV4cG9ydHM9PT1JJiZ1LnByb2Nlc3MsUj1mdW5jdGlvbigpe3RyeXt2YXIgdD1NJiZNLnJlcXVpcmUmJk0ucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxOJiZOLmJpbmRpbmcmJk4uYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksVT1SJiZSLmlzVHlwZWRBcnJheSxCPVU/KEQ9VSxmdW5jdGlvbih0KXtyZXR1cm4gRCh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiZMKHQubGVuZ3RoKSYmISFUW2QodCldfSxDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVyh0LGUpe3ZhciByPVModCksbj0hciYmTyh0KSxvPSFyJiYhbiYmUCh0KSx1PSFyJiYhbiYmIW8mJkIodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIUMuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8JChmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBxPU9iamVjdC5wcm90b3R5cGU7dmFyIFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLEc9VixIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSih0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxxKSlyZXR1cm4gRyh0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlILmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEsodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFE9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFg9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFLKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVh8fGU9PVl8fGU9PVF8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJkwodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP1codCk6Sih0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKFModCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSyh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLE90PV90KGEsIlNldCIpLFN0PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix4dD0iW29iamVjdCBQcm9taXNlXSIsenQ9IltvYmplY3QgU2V0XSIsUHQ9IltvYmplY3QgV2Vha01hcF0iLEV0PSJbb2JqZWN0IERhdGFWaWV3XSIsa3Q9bHQoanQpLCR0PWx0KG10KSxGdD1sdCh3dCksTHQ9bHQoT3QpLFR0PWx0KFN0KSxEdD1kOyhqdCYmRHQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1FdHx8bXQmJkR0KG5ldyBtdCkhPUF0fHx3dCYmRHQod3QucmVzb2x2ZSgpKSE9eHR8fE90JiZEdChuZXcgT3QpIT16dHx8U3QmJkR0KG5ldyBTdCkhPVB0KSYmKER0PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBrdDpyZXR1cm4gRXQ7Y2FzZSAkdDpyZXR1cm4gQXQ7Y2FzZSBGdDpyZXR1cm4geHQ7Y2FzZSBMdDpyZXR1cm4genQ7Y2FzZSBUdDpyZXR1cm4gUHR9cmV0dXJuIGV9KTt2YXIgSXQ9RHQsTXQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gTnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgUnQ9TnQoImxlbmd0aCIpLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBCdCh0KXtyZXR1cm4gVXQudGVzdCh0KX12YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsV3Q9IlsiK0N0KyJdIixxdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFZ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEd0PSJbXiIrQ3QrIl0iLEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixKdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsS3Q9Iig/OiIrcXQrInwiK1Z0KyIpIisiPyIsUXQ9IltcXHVmZTBlXFx1ZmUwZl0/IixYdD1RdCtLdCsoIig/OlxcdTIwMGQoPzoiK1tHdCxIdCxKdF0uam9pbigifCIpKyIpIitRdCtLdCsiKSoiKSxZdD0iKD86IitbR3QrcXQrIj8iLHF0LEh0LEp0LFd0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChWdCsiKD89IitWdCsiKXwiK1l0K1h0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlJ0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhUyhlKSYmZyhlKSYmZChlKT09TXQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1JdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkoodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLE9lPTIsU2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix4ZT0iW29iamVjdCBFcnJvcl0iLHplPSJbb2JqZWN0IE1hcF0iLFBlPSJbb2JqZWN0IE51bWJlcl0iLEVlPSJbb2JqZWN0IFJlZ0V4cF0iLGtlPSJbb2JqZWN0IFNldF0iLCRlPSJbb2JqZWN0IFN0cmluZ10iLEZlPSJbb2JqZWN0IFN5bWJvbF0iLExlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsVGU9IltvYmplY3QgRGF0YVZpZXddIixEZT1jP2MucHJvdG90eXBlOnZvaWQgMCxJZT1EZT9EZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBNZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIE5lPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsUmU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxVZT1SZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksTWUoUmUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBOZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBCZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIFModCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LFVlKX12YXIgQ2U9MSxXZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxZT0xLFZlPSJbb2JqZWN0IEFyZ3VtZW50c10iLEdlPSJbb2JqZWN0IEFycmF5XSIsSGU9IltvYmplY3QgT2JqZWN0XSIsSmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBLZSh0LGUscixuLG8sdSl7dmFyIGk9Uyh0KSxhPVMoZSksYz1pP0dlOkl0KHQpLGY9YT9HZTpJdChlKSxzPShjPWM9PVZlP0hlOmMpPT1IZSxsPShmPWY9PVZlP0hlOmYpPT1IZSxwPWM9PWY7aWYocCYmUCh0KSl7aWYoIVAoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEIodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIFRlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBTZTpjYXNlIEFlOmNhc2UgUGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHhlOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBFZTpjYXNlICRlOnJldHVybiB0PT1lKyIiO2Nhc2UgemU6dmFyIGE9amU7Y2FzZSBrZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1PZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEZlOmlmKEllKXJldHVybiBJZS5jYWxsKHQpPT1JZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImcWUpKXt2YXIgaD1zJiZKZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZKZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJkNlLGE9QmUodCksYz1hLmxlbmd0aDtpZihjIT1CZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpXZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIFFlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6S2UodCxlLHIsbixRZSxvKSl9dmFyIFhlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUsodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9RZShzLGYsWGV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihTKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihTKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIFModCk/dDppcih0LGUpP1t0XTpwcihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJkwobykmJiQoaSxvKSYmKFModCl8fE8odCkpfSh0LGUsT3IpfXZhciBBcj0xLHhyPTI7ZnVuY3Rpb24genIodCl7cmV0dXJuIGlyKHQpP050KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiBQcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P1ModCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP1NyKHIsdCk6UWUoZSxuLEFyfHhyKX19KHRbMF0sdFsxXSk6ZXIodCk6enIodCl9ZnVuY3Rpb24gRXIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIGtyKHQsZSl7cmV0dXJuKFModCk/cmU6RXIpKHQsUHIoZSkpfXZhciAkcj0vXHMvO3ZhciBGcj0vXlxzKy87ZnVuY3Rpb24gTHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJiRyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoRnIsIiIpOnR9ZnVuY3Rpb24gVHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gRHIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gSXIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsRHIscil9dmFyIE1yPSJcXHVkODAwLVxcdWRmZmYiLE5yPSJbIitNcisiXSIsUnI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixVcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixCcj0iW14iK01yKyJdIixDcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsV3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHFyPSIoPzoiK1JyKyJ8IitVcisiKSIrIj8iLFZyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsR3I9VnIrcXIrKCIoPzpcXHUyMDBkKD86IitbQnIsQ3IsV3JdLmpvaW4oInwiKSsiKSIrVnIrcXIrIikqIiksSHI9Iig/OiIrW0JyK1JyKyI/IixScixDcixXcixOcl0uam9pbigifCIpKyIpIixKcj1SZWdFeHAoVXIrIig/PSIrVXIrIil8IitIcitHciwiZyIpO2Z1bmN0aW9uIEtyKHQpe3JldHVybiBCdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChKcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIFFyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gTHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49S3IodCksbz1LcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJklyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZJcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBUcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gWHIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVhyKHQpKXJldHVybltdO2lmKCFYcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBYcih0KSYmWHIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPWtyKHIsUXIpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtYcih0KSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gWnIodCl7bGV0IGU9ITE7aWYoWHIodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHRuPU5hTixlbj0vXlstK10weFswLTlhLWZdKyQvaSxybj0vXjBiWzAxXSskL2ksbm49L14wb1swLTddKyQvaSxvbj1wYXJzZUludDtmdW5jdGlvbiB1bih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIHRuO2lmKEsodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUsoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUxyKHQpO3ZhciByPXJuLnRlc3QodCk7cmV0dXJuIHJ8fG5uLnRlc3QodCk/b24odC5zbGljZSgyKSxyPzI6OCk6ZW4udGVzdCh0KT90bjordH12YXIgYW49MS8wLGNuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBmbih0KXtyZXR1cm4gdD8odD11bih0KSk9PT1hbnx8dD09PS1hbj8odDwwPy0xOjEpKmNuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBzbih0KXt2YXIgZT1mbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9ZnVuY3Rpb24gbG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3JldHVybiBmbih0KX1mdW5jdGlvbiBwbih0KXtyZXR1cm4hIVpyKHQpJiYodD1sbih0KSwibnVtYmVyIj09dHlwZW9mKGU9dCkmJmU9PXNuKGUpKTt2YXIgZX12YXIgaG49YS5pc0Zpbml0ZSx2bj1NYXRoLm1pbjt2YXIgeW49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXVuKHQpLChyPW51bGw9PXI/MDp2bihzbihyKSwyOTIpKSYmaG4odCkpe3ZhciBuPShkcih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZHIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksYm49eW47ZnVuY3Rpb24gZG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3Q9bG4odCk7bGV0IGU9Ym4odCk7cmV0dXJuIjAiPT09U3RyaW5nKGUpPzA6ZX1mdW5jdGlvbiBnbih0LGU9e30pe2xldCByPXdyKGUsImZzIik7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIF9uKHQpe3JldHVybiBnbih0LHtmczplfSl9ZnVuY3Rpb24gam4odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiBtbih0LGU9e30pe2xldCByPXdyKGUsImZzIik7aWYoIXIuZXhpc3RzU3luYyh0KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiB3bih0LGU9MSxyPXt9KXtsZXQgbj13cihyLCJwYXRoIiksbz13cihyLCJmcyIpO2lmKCFtbih0LHtmczpvfSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtsZXQgdT1bXTt2YXIgaSxhO3JldHVybiB1PWZ1bmN0aW9uKHQsZT0xLHI9e30pe2xldCBuPTEsbz13cihyLCJwYXRoIiksdT13cihyLCJmcyIpO2lmKCFtbih0LHtmczp1fSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtyZXR1cm4gZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gbW4ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9KHQsZSx7cGF0aDpuLGZzOm99KSxhPXtpc0ZvbGRlcjohMX0sdT0oUyhpPXUpP01lOmpuKShpLFByKGEpKSx1PWtyKHUsKHQ9PihkZWxldGUgdC5pc0ZvbGRlcix0KSkpLHV9ZnVuY3Rpb24gT24odCl7cmV0dXJuIE9uPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxPbih0KX1mdW5jdGlvbiBTbih0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09T24odCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09T24obikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PU9uKGUpP2U6U3RyaW5nKGUpfWZ1bmN0aW9uIEFuKHQsZSxyKXtyZXR1cm4oZT1TbihlKSlpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPXIsdH1jb25zdCB4bj1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTthc3luYyBmdW5jdGlvbiB6bih0LGU9e30pe2xldCByPXdyKGUsImZzIiksbj13cihlLCJjaHVua1NpemUiKTtpZihacihuKXx8KG49NjcxMDg4NjQpLG49bG4obiksIWduKHQse2ZzOnJ9KSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKTtsZXQgbz1mdW5jdGlvbigpe2xldCB0LGUscj1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oKXt0PWFyZ3VtZW50c1swXSxlPWFyZ3VtZW50c1sxXX0pKTtyZXR1cm4gci5yZXNvbHZlPXQsci5yZWplY3Q9ZSxyfSgpO3RyeXtsZXR7Y3JlYXRlNjQ6ZX09YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3R7ZXhwb3J0czp7bWVtOmUseHhoMzI6cix4eGg2NDpuLGluaXQzMjpvLHVwZGF0ZTMyOnUsZGlnZXN0MzI6aSxpbml0NjQ6YSx1cGRhdGU2NDpjLGRpZ2VzdDY0OmZ9fT10O2xldCBzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKTtmdW5jdGlvbiBsKHQscil7aWYoZS5idWZmZXIuYnl0ZUxlbmd0aDx0K3Ipe2NvbnN0IG49TWF0aC5jZWlsKCh0K3ItZS5idWZmZXIuYnl0ZUxlbmd0aCkvNjU1MzYpO2UuZ3JvdyhuKSxzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKX19ZnVuY3Rpb24gcCh0LGUscixuLG8sdSl7bCh0KTtjb25zdCBpPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzLnNldChpKSxyKDAsZSksaS5zZXQocy5zdWJhcnJheSgwLHQpKSx7dXBkYXRlKGUpe2xldCByO3JldHVybiBzLnNldChpKSwic3RyaW5nIj09dHlwZW9mIGU/KGwoMyplLmxlbmd0aCx0KSxyPWIuZW5jb2RlSW50byhlLHMuc3ViYXJyYXkodCkpLndyaXR0ZW4pOihsKGUuYnl0ZUxlbmd0aCx0KSxzLnNldChlLHQpLHI9ZS5ieXRlTGVuZ3RoKSxuKDAsdCxyKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHRoaXN9LGRpZ2VzdDooKT0+KHMuc2V0KGkpLHUobygwKSkpfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0Pj4+MH1jb25zdCB2PTJuKio2NG4tMW47ZnVuY3Rpb24geSh0KXtyZXR1cm4gdCZ2fWNvbnN0IGI9bmV3IFRleHRFbmNvZGVyLGQ9MCxnPTBuO2Z1bmN0aW9uIF8odCxlPWQpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksaChyKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9ZnVuY3Rpb24gaih0LGU9Zyl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSx5KG4oMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1yZXR1cm57aDMyOl8saDMyVG9TdHJpbmc6KHQsZT1kKT0+Xyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIiksaDMyUmF3Oih0LGU9ZCk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxoKHIoMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGUzMjoodD1kKT0+cCg0OCx0LG8sdSxpLGgpLGg2NDpqLGg2NFRvU3RyaW5nOih0LGU9Zyk9PmoodCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKSxoNjRSYXc6KHQsZT1nKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHkobigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTY0Oih0PWcpPT5wKDg4LHQsYSxjLGYseSl9fSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoeG4pKS5pbnN0YW5jZSl9KCksdT1lKCksaT1yLmNyZWF0ZVJlYWRTdHJlYW0odCx7aGlnaFdhdGVyTWFyazpufSk7aS5vbigiZGF0YSIsKHQ9Pnt1LnVwZGF0ZSh0KX0pKSxpLm9uKCJlbmQiLCgoKT0+e2xldCB0PXUuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7by5yZXNvbHZlKHQpfSkpLGkub24oImVycm9yIixvLnJlamVjdCl9Y2F0Y2godCl7by5yZWplY3QodC50b1N0cmluZygpKX1yZXR1cm4gb31mdW5jdGlvbiBQbih0LGUpe3ZhciByPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gRW4odCxyPXt9KXtyZXR1cm4gem4odCxmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgcj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9QbihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe0FuKHQsZSxyW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpQbihPYmplY3QocikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpKX0pKX1yZXR1cm4gdH0oe2ZzOmV9LHIpKX1sZXQgY2hlY2tUb3RhbEhhc2g9YXN5bmMocixuLG8sdSk9PntsZXQgaT10LmpvaW4odSxvKSxhPSExO2lmKGE9X24oaSksIVpyKHIpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNpemUgaW4gcGF5bG9hZCJ9fWxldCBjPSExO2lmKGEpe2M9cj09PWUuc3RhdFN5bmMoaSkuc2l6ZX1sZXQgZj0hMTthJiZjJiZhd2FpdCBFbihpKS50aGVuKCh0PT57Zj1vPT09dH0pKS5jYXRjaCgodD0+e2NvbnNvbGUubG9nKCJmc0lzRmlsZShwYXRoRmlsZSkiLGksX24oaSkpLGNvbnNvbGUubG9nKHQpLGY9ITF9KSk7bGV0IHM9ZnVuY3Rpb24ocixuPTEpe3JldHVybiB3bihyLG4se3BhdGg6dCxmczplfSl9KHUpLGw9W107aXQocywodD0+e2xldCByPXQubmFtZS5pbmRleE9mKGAke299X2ApPj0wLHU9ZS5zdGF0U3luYyh0LnBhdGgpLnNpemU9PT1uO2lmKHImJnUpe2xldCBlPVlyKHQubmFtZSxgJHtvfV9gKSxyPShhPW51bGw9PShpPWUpPzA6aS5sZW5ndGgpP2lbYS0xXTp2b2lkIDA7aWYoIWZ1bmN0aW9uKHQpe3JldHVybiEhcG4odCkmJmRuKHQpPj0wfShyKSl0aHJvdyBjb25zb2xlLmxvZygidi5uYW1lIix0Lm5hbWUpLGNvbnNvbGUubG9nKCJzIixlKSxuZXcgRXJyb3IoYGNhbiBub3QgcGFyc2UgaW5kZXggaW4gdi5uYW1lWyR7dC5uYW1lfV1gKTtyPWRuKHIpLGwucHVzaChyKX12YXIgaSxhfSkpO2xldCBwPWVlKGwpPjA7cmV0dXJue3BhdGg6aSxiQWxsRXhpc3Q6YSxiQWxsU2l6ZTpjLGJBbGxIYXNoOmYsYlNsczpwLHNsa3M6bH19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tUb3RhbEhhc2gKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY2hlY2tUb3RhbEhhc2gKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(w,"base64").toString("utf8"));var w;function L(){let I=new i,w=function(M){try{return new s.Worker(M,{eval:!0})}catch(s){t(s)}}(M);if(!w)return t("invalid worker"),null;function L(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),M=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),i={mode:"call",id:M,fun:"main",input:[...arguments]};return w.postMessage(i),I.once(M,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function t(s){I.emit("error",s)}return w.on("message",(function(s){let M=s,i=M.mode;"emit"!==i&&"return"!==i||("emit"===i&&I.emit(M.evName,M.msg),"return"===i&&I.emit(M.id,M))})),w.on("error",t),w.on("exit",(s=>{1!==s&&t("exit code["+s+"] !== 1")})),function(){let s={mode:"init",type:"function",input:[...arguments]};w.postMessage(s)}([...arguments]),I.main=L,I.main=L,I.terminate=function(){w?(w.terminate(),w=void 0):t("worker has been terminated")},I}I=async function(){let s=[...arguments],M=L();return await M.main(...s).finally((()=>{M.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return I}(s)}({get exports(){return M},set exports(s){M=s}});var i=M,I={};!function(s,M){s.exports=function(){const s="function"==typeof Buffer,M="function"==typeof TextDecoder?new TextDecoder:void 0,i=(s=>{let M={};return s.forEach(((s,i)=>M[s]=i)),M})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),I=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,w=String.fromCharCode.bind(String),L="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):s=>new Uint8Array(Array.prototype.slice.call(s,0)),t=s=>s.replace(/[^A-Za-z0-9\+\/]/g,""),c=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,d=s=>{switch(s.length){case 4:var M=((7&s.charCodeAt(0))<<18|(63&s.charCodeAt(1))<<12|(63&s.charCodeAt(2))<<6|63&s.charCodeAt(3))-65536;return w(55296+(M>>>10))+w(56320+(1023&M));case 3:return w((15&s.charCodeAt(0))<<12|(63&s.charCodeAt(1))<<6|63&s.charCodeAt(2));default:return w((31&s.charCodeAt(0))<<6|63&s.charCodeAt(1))}},l=s=>s.replace(c,d),n=s=>{if(s=s.replace(/\s+/g,""),!I.test(s))throw new TypeError("malformed base64.");s+="==".slice(2-(3&s.length));let M,L,t,c="";for(let I=0;I<s.length;)M=i[s.charAt(I++)]<<18|i[s.charAt(I++)]<<12|(L=i[s.charAt(I++)])<<6|(t=i[s.charAt(I++)]),c+=64===L?w(M>>16&255):64===t?w(M>>16&255,M>>8&255):w(M>>16&255,M>>8&255,255&M);return c},e="function"==typeof atob?s=>atob(t(s)):s?s=>Buffer.from(s,"base64").toString("binary"):n,y=s?s=>L(Buffer.from(s,"base64")):s=>L(e(s).split("").map((s=>s.charCodeAt(0)))),D=s?s=>Buffer.from(s,"base64").toString("utf8"):M?s=>M.decode(y(s)):s=>l(e(s)),C=s=>t(s.replace(/[-_]/g,(s=>"-"==s?"+":"/"))),o=s=>D(C(s)),m=o;var Z={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return Z},set exports(s){Z=s}});var N=Z;let u;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let s=m("CgoKInVzZSBzdHJpY3QiO3ZhciB0PXJlcXVpcmUoInBhdGgiKSxlPXJlcXVpcmUoImZzIik7ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8biYmITEhPT1lKHRbcl0scix0KTspO3JldHVybiB0fXZhciBuLG89ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbz0tMSx1PU9iamVjdCh0KSxpPXIodCksYT1pLmxlbmd0aDthLS07KXt2YXIgYz1pW24/YTorK29dO2lmKCExPT09ZSh1W2NdLGMsdSkpYnJlYWt9cmV0dXJuIHR9O3ZhciB1PSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxpPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsYT11fHxpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGM9YS5TeW1ib2wsZj1PYmplY3QucHJvdG90eXBlLHM9Zi5oYXNPd25Qcm9wZXJ0eSxsPWYudG9TdHJpbmcscD1jP2MudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHY9IltvYmplY3QgTnVsbF0iLHk9IltvYmplY3QgVW5kZWZpbmVkXSIsYj1jP2MudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGQodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD95OnY6YiYmYiBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9cy5jYWxsKHQscCkscj10W3BdO3RyeXt0W3BdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89bC5jYWxsKHQpO3JldHVybiBuJiYoZT90W3BdPXI6ZGVsZXRlIHRbcF0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBoLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGcodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH1mdW5jdGlvbiBfKHQpe3JldHVybiBnKHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09ZCh0KX12YXIgaj1PYmplY3QucHJvdG90eXBlLG09ai5oYXNPd25Qcm9wZXJ0eSx3PWoucHJvcGVydHlJc0VudW1lcmFibGUsTz1fKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/XzpmdW5jdGlvbih0KXtyZXR1cm4gZyh0KSYmbS5jYWxsKHQsImNhbGxlZSIpJiYhdy5jYWxsKHQsImNhbGxlZSIpfSxTPUFycmF5LmlzQXJyYXk7dmFyIEE9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyx4PUEmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSx6PXgmJnguZXhwb3J0cz09PUE/YS5CdWZmZXI6dm9pZCAwLFA9KHo/ei5pc0J1ZmZlcjp2b2lkIDApfHxmdW5jdGlvbigpe3JldHVybiExfSxFPTkwMDcxOTkyNTQ3NDA5OTEsaz0vXig/OjB8WzEtOV1cZCopJC87ZnVuY3Rpb24gJCh0LGUpe3ZhciByPXR5cGVvZiB0O3JldHVybiEhKGU9bnVsbD09ZT9FOmUpJiYoIm51bWJlciI9PXJ8fCJzeW1ib2wiIT1yJiZrLnRlc3QodCkpJiZ0Pi0xJiZ0JTE9PTAmJnQ8ZX12YXIgRj05MDA3MTk5MjU0NzQwOTkxO2Z1bmN0aW9uIEwodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PUZ9dmFyIFQ9e307VFsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09VFsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09VFsiW29iamVjdCBJbnQ4QXJyYXldIl09VFsiW29iamVjdCBJbnQxNkFycmF5XSJdPVRbIltvYmplY3QgSW50MzJBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09VFsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPVRbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsVFsiW29iamVjdCBBcmd1bWVudHNdIl09VFsiW29iamVjdCBBcnJheV0iXT1UWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPVRbIltvYmplY3QgQm9vbGVhbl0iXT1UWyJbb2JqZWN0IERhdGFWaWV3XSJdPVRbIltvYmplY3QgRGF0ZV0iXT1UWyJbb2JqZWN0IEVycm9yXSJdPVRbIltvYmplY3QgRnVuY3Rpb25dIl09VFsiW29iamVjdCBNYXBdIl09VFsiW29iamVjdCBOdW1iZXJdIl09VFsiW29iamVjdCBPYmplY3RdIl09VFsiW29iamVjdCBSZWdFeHBdIl09VFsiW29iamVjdCBTZXRdIl09VFsiW29iamVjdCBTdHJpbmddIl09VFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBELEk9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyxNPUkmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxOPU0mJk0uZXhwb3J0cz09PUkmJnUucHJvY2VzcyxSPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PU0mJk0ucmVxdWlyZSYmTS5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIHR8fE4mJk4uYmluZGluZyYmTi5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKSxVPVImJlIuaXNUeXBlZEFycmF5LEI9VT8oRD1VLGZ1bmN0aW9uKHQpe3JldHVybiBEKHQpfSk6ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJkwodC5sZW5ndGgpJiYhIVRbZCh0KV19LEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQsZSl7dmFyIHI9Uyh0KSxuPSFyJiZPKHQpLG89IXImJiFuJiZQKHQpLHU9IXImJiFuJiYhbyYmQih0KSxpPXJ8fG58fG98fHUsYT1pP2Z1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49QXJyYXkodCk7KytyPHQ7KW5bcl09ZShyKTtyZXR1cm4gbn0odC5sZW5ndGgsU3RyaW5nKTpbXSxjPWEubGVuZ3RoO2Zvcih2YXIgZiBpbiB0KSFlJiYhQy5jYWxsKHQsZil8fGkmJigibGVuZ3RoIj09Znx8byYmKCJvZmZzZXQiPT1mfHwicGFyZW50Ij09Zil8fHUmJigiYnVmZmVyIj09Znx8ImJ5dGVMZW5ndGgiPT1mfHwiYnl0ZU9mZnNldCI9PWYpfHwkKGYsYykpfHxhLnB1c2goZik7cmV0dXJuIGF9dmFyIHE9T2JqZWN0LnByb3RvdHlwZTt2YXIgVj1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksRz1WLEg9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKKHQpe2lmKHI9KGU9dCkmJmUuY29uc3RydWN0b3IsZSE9PSgiZnVuY3Rpb24iPT10eXBlb2YgciYmci5wcm90b3R5cGV8fHEpKXJldHVybiBHKHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKUguY2FsbCh0LG8pJiYiY29uc3RydWN0b3IiIT1vJiZuLnB1c2gobyk7cmV0dXJuIG59ZnVuY3Rpb24gSyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgUT0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsWD0iW29iamVjdCBGdW5jdGlvbl0iLFk9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixaPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gdHQodCl7aWYoIUsodCkpcmV0dXJuITE7dmFyIGU9ZCh0KTtyZXR1cm4gZT09WHx8ZT09WXx8ZT09UXx8ZT09Wn1mdW5jdGlvbiBldCh0KXtyZXR1cm4gbnVsbCE9dCYmTCh0Lmxlbmd0aCkmJiF0dCh0KX1mdW5jdGlvbiBydCh0KXtyZXR1cm4gZXQodCk/Vyh0KTpKKHQpfXZhciBudD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyLG4pe2lmKG51bGw9PXIpcmV0dXJuIHI7aWYoIWV0KHIpKXJldHVybiB0KHIsbik7Zm9yKHZhciBvPXIubGVuZ3RoLHU9ZT9vOi0xLGk9T2JqZWN0KHIpOyhlP3UtLTorK3U8bykmJiExIT09bihpW3VdLHUsaSk7KTtyZXR1cm4gcn19KChmdW5jdGlvbih0LGUpe3JldHVybiB0JiZvKHQsZSxydCl9KSksb3Q9bnQ7ZnVuY3Rpb24gdXQodCl7cmV0dXJuIHR9ZnVuY3Rpb24gaXQodCxlKXt2YXIgbjtyZXR1cm4oUyh0KT9yOm90KSh0LCJmdW5jdGlvbiI9PXR5cGVvZihuPWUpP246dXQpfXZhciBhdCxjdD1hWyJfX2NvcmUtanNfc2hhcmVkX18iXSxmdD0oYXQ9L1teLl0rJC8uZXhlYyhjdCYmY3Qua2V5cyYmY3Qua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK2F0OiIiO3ZhciBzdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbHQodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBzdC5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn12YXIgcHQ9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8saHQ9RnVuY3Rpb24ucHJvdG90eXBlLHZ0PU9iamVjdC5wcm90b3R5cGUseXQ9aHQudG9TdHJpbmcsYnQ9dnQuaGFzT3duUHJvcGVydHksZHQ9UmVnRXhwKCJeIit5dC5jYWxsKGJ0KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBndCh0KXtyZXR1cm4hKCFLKHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIWZ0JiZmdCBpbiB0fSh0KSkmJih0dCh0KT9kdDpwdCkudGVzdChsdCh0KSl9ZnVuY3Rpb24gX3QodCxlKXt2YXIgcj1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfSh0LGUpO3JldHVybiBndChyKT9yOnZvaWQgMH12YXIganQ9X3QoYSwiRGF0YVZpZXciKSxtdD1fdChhLCJNYXAiKSx3dD1fdChhLCJQcm9taXNlIiksT3Q9X3QoYSwiU2V0IiksU3Q9X3QoYSwiV2Vha01hcCIpLEF0PSJbb2JqZWN0IE1hcF0iLHh0PSJbb2JqZWN0IFByb21pc2VdIix6dD0iW29iamVjdCBTZXRdIixQdD0iW29iamVjdCBXZWFrTWFwXSIsRXQ9IltvYmplY3QgRGF0YVZpZXddIixrdD1sdChqdCksJHQ9bHQobXQpLEZ0PWx0KHd0KSxMdD1sdChPdCksVHQ9bHQoU3QpLER0PWQ7KGp0JiZEdChuZXcganQobmV3IEFycmF5QnVmZmVyKDEpKSkhPUV0fHxtdCYmRHQobmV3IG10KSE9QXR8fHd0JiZEdCh3dC5yZXNvbHZlKCkpIT14dHx8T3QmJkR0KG5ldyBPdCkhPXp0fHxTdCYmRHQobmV3IFN0KSE9UHQpJiYoRHQ9ZnVuY3Rpb24odCl7dmFyIGU9ZCh0KSxyPSJbb2JqZWN0IE9iamVjdF0iPT1lP3QuY29uc3RydWN0b3I6dm9pZCAwLG49cj9sdChyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGt0OnJldHVybiBFdDtjYXNlICR0OnJldHVybiBBdDtjYXNlIEZ0OnJldHVybiB4dDtjYXNlIEx0OnJldHVybiB6dDtjYXNlIFR0OnJldHVybiBQdH1yZXR1cm4gZX0pO3ZhciBJdD1EdCxNdD0iW29iamVjdCBTdHJpbmddIjtmdW5jdGlvbiBOdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fXZhciBSdD1OdCgibGVuZ3RoIiksVXQ9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO2Z1bmN0aW9uIEJ0KHQpe3JldHVybiBVdC50ZXN0KHQpfXZhciBDdD0iXFx1ZDgwMC1cXHVkZmZmIixXdD0iWyIrQ3QrIl0iLHF0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIsVnQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsR3Q9IlteIitDdCsiXSIsSHQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLEp0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixLdD0iKD86IitxdCsifCIrVnQrIikiKyI/IixRdD0iW1xcdWZlMGVcXHVmZTBmXT8iLFh0PVF0K0t0KygiKD86XFx1MjAwZCg/OiIrW0d0LEh0LEp0XS5qb2luKCJ8IikrIikiK1F0K0t0KyIpKiIpLFl0PSIoPzoiK1tHdCtxdCsiPyIscXQsSHQsSnQsV3RdLmpvaW4oInwiKSsiKSIsWnQ9UmVnRXhwKFZ0KyIoPz0iK1Z0KyIpfCIrWXQrWHQsImciKTtmdW5jdGlvbiB0ZSh0KXtyZXR1cm4gQnQodCk/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVp0Lmxhc3RJbmRleD0wO1p0LnRlc3QodCk7KSsrZTtyZXR1cm4gZX0odCk6UnQodCl9ZnVuY3Rpb24gZWUodCl7aWYobnVsbD09dClyZXR1cm4gMDtpZihldCh0KSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mKGU9dCl8fCFTKGUpJiZnKGUpJiZkKGUpPT1NdD90ZSh0KTp0Lmxlbmd0aDt2YXIgZSxyPUl0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6Sih0KS5sZW5ndGh9ZnVuY3Rpb24gcmUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb31mdW5jdGlvbiBuZSh0LGUpe3JldHVybiB0PT09ZXx8dCE9dCYmZSE9ZX1mdW5jdGlvbiBvZSh0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS07KWlmKG5lKHRbcl1bMF0sZSkpcmV0dXJuIHI7cmV0dXJuLTF9dmFyIHVlPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gaWUodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19aWUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0saWUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6dWUuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxpZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1vZShlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LGllLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIG9lKHRoaXMuX19kYXRhX18sdCk+LTF9LGllLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49b2Uocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc307dmFyIGFlPV90KE9iamVjdCwiY3JlYXRlIik7dmFyIGNlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGZlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gc2UodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gbGUodCxlKXt2YXIgcixuLG89dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihyPWUpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1yOm51bGw9PT1yKT9vWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOm8ubWFwfWZ1bmN0aW9uIHBlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXNlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189YWU/YWUobnVsbCk6e30sdGhpcy5zaXplPTB9LHNlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LHNlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihhZSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBjZS5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LHNlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztyZXR1cm4gYWU/dm9pZCAwIT09ZVt0XTpmZS5jYWxsKGUsdCl9LHNlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxyW3RdPWFlJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9LHBlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IHNlLG1hcDpuZXcobXR8fGllKSxzdHJpbmc6bmV3IHNlfX0scGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT1sZSh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxwZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBsZSh0aGlzLHQpLmdldCh0KX0scGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5oYXModCl9LHBlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1sZSh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTtmdW5jdGlvbiBoZSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fPW5ldyBpZSh0KTt0aGlzLnNpemU9ZS5zaXplfWhlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189bmV3IGllLHRoaXMuc2l6ZT0wfSxoZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxyfSxoZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX0saGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LGhlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBpZSl7dmFyIG49ci5fX2RhdGFfXztpZighbXR8fG4ubGVuZ3RoPDE5OSlyZXR1cm4gbi5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytyLnNpemUsdGhpcztyPXRoaXMuX19kYXRhX189bmV3IHBlKG4pfXJldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc307ZnVuY3Rpb24gdmUodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IHBlOysrZTxyOyl0aGlzLmFkZCh0W2VdKX1mdW5jdGlvbiB5ZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8bjspaWYoZSh0W3JdLHIsdCkpcmV0dXJuITA7cmV0dXJuITF9dmUucHJvdG90eXBlLmFkZD12ZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LHZlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTt2YXIgYmU9MSxkZT0yO2Z1bmN0aW9uIGdlKHQsZSxyLG4sbyx1KXt2YXIgaT1yJmJlLGE9dC5sZW5ndGgsYz1lLmxlbmd0aDtpZihhIT1jJiYhKGkmJmM+YSkpcmV0dXJuITE7dmFyIGY9dS5nZXQodCkscz11LmdldChlKTtpZihmJiZzKXJldHVybiBmPT1lJiZzPT10O3ZhciBsPS0xLHA9ITAsaD1yJmRlP25ldyB2ZTp2b2lkIDA7Zm9yKHUuc2V0KHQsZSksdS5zZXQoZSx0KTsrK2w8YTspe3ZhciB2PXRbbF0seT1lW2xdO2lmKG4pdmFyIGI9aT9uKHksdixsLGUsdCx1KTpuKHYseSxsLHQsZSx1KTtpZih2b2lkIDAhPT1iKXtpZihiKWNvbnRpbnVlO3A9ITE7YnJlYWt9aWYoaCl7aWYoIXllKGUsKGZ1bmN0aW9uKHQsZSl7aWYoaT1lLCFoLmhhcyhpKSYmKHY9PT10fHxvKHYsdCxyLG4sdSkpKXJldHVybiBoLnB1c2goZSk7dmFyIGl9KSkpe3A9ITE7YnJlYWt9fWVsc2UgaWYodiE9PXkmJiFvKHYseSxyLG4sdSkpe3A9ITE7YnJlYWt9fXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxwfXZhciBfZT1hLlVpbnQ4QXJyYXk7ZnVuY3Rpb24gamUodCl7dmFyIGU9LTEscj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsbil7clsrK2VdPVtuLHRdfSkpLHJ9ZnVuY3Rpb24gbWUodCl7dmFyIGU9LTEscj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JbKytlXT10fSkpLHJ9dmFyIHdlPTEsT2U9MixTZT0iW29iamVjdCBCb29sZWFuXSIsQWU9IltvYmplY3QgRGF0ZV0iLHhlPSJbb2JqZWN0IEVycm9yXSIsemU9IltvYmplY3QgTWFwXSIsUGU9IltvYmplY3QgTnVtYmVyXSIsRWU9IltvYmplY3QgUmVnRXhwXSIsa2U9IltvYmplY3QgU2V0XSIsJGU9IltvYmplY3QgU3RyaW5nXSIsRmU9IltvYmplY3QgU3ltYm9sXSIsTGU9IltvYmplY3QgQXJyYXlCdWZmZXJdIixUZT0iW29iamVjdCBEYXRhVmlld10iLERlPWM/Yy5wcm90b3R5cGU6dm9pZCAwLEllPURlP0RlLnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIE1lKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89MCx1PVtdOysrcjxuOyl7dmFyIGk9dFtyXTtlKGkscix0KSYmKHVbbysrXT1pKX1yZXR1cm4gdX12YXIgTmU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxSZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFVlPVJlP2Z1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOih0PU9iamVjdCh0KSxNZShSZSh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIE5lLmNhbGwodCxlKX0pKSl9OmZ1bmN0aW9uKCl7cmV0dXJuW119O2Z1bmN0aW9uIEJlKHQpe3JldHVybiBmdW5jdGlvbih0LGUscil7dmFyIG49ZSh0KTtyZXR1cm4gUyh0KT9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49ZS5sZW5ndGgsbz10Lmxlbmd0aDsrK3I8bjspdFtvK3JdPWVbcl07cmV0dXJuIHR9KG4scih0KSl9KHQscnQsVWUpfXZhciBDZT0xLFdlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIHFlPTEsVmU9IltvYmplY3QgQXJndW1lbnRzXSIsR2U9IltvYmplY3QgQXJyYXldIixIZT0iW29iamVjdCBPYmplY3RdIixKZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEtlKHQsZSxyLG4sbyx1KXt2YXIgaT1TKHQpLGE9UyhlKSxjPWk/R2U6SXQodCksZj1hP0dlOkl0KGUpLHM9KGM9Yz09VmU/SGU6Yyk9PUhlLGw9KGY9Zj09VmU/SGU6Zik9PUhlLHA9Yz09ZjtpZihwJiZQKHQpKXtpZighUChlKSlyZXR1cm4hMTtpPSEwLHM9ITF9aWYocCYmIXMpcmV0dXJuIHV8fCh1PW5ldyBoZSksaXx8Qih0KT9nZSh0LGUscixuLG8sdSk6ZnVuY3Rpb24odCxlLHIsbixvLHUsaSl7c3dpdGNoKHIpe2Nhc2UgVGU6aWYodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9ZS5ieXRlT2Zmc2V0KXJldHVybiExO3Q9dC5idWZmZXIsZT1lLmJ1ZmZlcjtjYXNlIExlOnJldHVybiEodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fCF1KG5ldyBfZSh0KSxuZXcgX2UoZSkpKTtjYXNlIFNlOmNhc2UgQWU6Y2FzZSBQZTpyZXR1cm4gbmUoK3QsK2UpO2Nhc2UgeGU6cmV0dXJuIHQubmFtZT09ZS5uYW1lJiZ0Lm1lc3NhZ2U9PWUubWVzc2FnZTtjYXNlIEVlOmNhc2UgJGU6cmV0dXJuIHQ9PWUrIiI7Y2FzZSB6ZTp2YXIgYT1qZTtjYXNlIGtlOnZhciBjPW4md2U7aWYoYXx8KGE9bWUpLHQuc2l6ZSE9ZS5zaXplJiYhYylyZXR1cm4hMTt2YXIgZj1pLmdldCh0KTtpZihmKXJldHVybiBmPT1lO258PU9lLGkuc2V0KHQsZSk7dmFyIHM9Z2UoYSh0KSxhKGUpLG4sbyx1LGkpO3JldHVybiBpLmRlbGV0ZSh0KSxzO2Nhc2UgRmU6aWYoSWUpcmV0dXJuIEllLmNhbGwodCk9PUllLmNhbGwoZSl9cmV0dXJuITF9KHQsZSxjLHIsbixvLHUpO2lmKCEociZxZSkpe3ZhciBoPXMmJkplLmNhbGwodCwiX193cmFwcGVkX18iKSx2PWwmJkplLmNhbGwoZSwiX193cmFwcGVkX18iKTtpZihofHx2KXt2YXIgeT1oP3QudmFsdWUoKTp0LGI9dj9lLnZhbHVlKCk6ZTtyZXR1cm4gdXx8KHU9bmV3IGhlKSxvKHksYixyLG4sdSl9fXJldHVybiEhcCYmKHV8fCh1PW5ldyBoZSksZnVuY3Rpb24odCxlLHIsbixvLHUpe3ZhciBpPXImQ2UsYT1CZSh0KSxjPWEubGVuZ3RoO2lmKGMhPUJlKGUpLmxlbmd0aCYmIWkpcmV0dXJuITE7Zm9yKHZhciBmPWM7Zi0tOyl7dmFyIHM9YVtmXTtpZighKGk/cyBpbiBlOldlLmNhbGwoZSxzKSkpcmV0dXJuITF9dmFyIGw9dS5nZXQodCkscD11LmdldChlKTtpZihsJiZwKXJldHVybiBsPT1lJiZwPT10O3ZhciBoPSEwO3Uuc2V0KHQsZSksdS5zZXQoZSx0KTtmb3IodmFyIHY9aTsrK2Y8Yzspe3ZhciB5PXRbcz1hW2ZdXSxiPWVbc107aWYobil2YXIgZD1pP24oYix5LHMsZSx0LHUpOm4oeSxiLHMsdCxlLHUpO2lmKCEodm9pZCAwPT09ZD95PT09Ynx8byh5LGIscixuLHUpOmQpKXtoPSExO2JyZWFrfXZ8fCh2PSJjb25zdHJ1Y3RvciI9PXMpfWlmKGgmJiF2KXt2YXIgZz10LmNvbnN0cnVjdG9yLF89ZS5jb25zdHJ1Y3RvcjtnPT1ffHwhKCJjb25zdHJ1Y3RvciJpbiB0KXx8ISgiY29uc3RydWN0b3IiaW4gZSl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnJiZnIGluc3RhbmNlb2YgZyYmImZ1bmN0aW9uIj09dHlwZW9mIF8mJl8gaW5zdGFuY2VvZiBffHwoaD0hMSl9cmV0dXJuIHUuZGVsZXRlKHQpLHUuZGVsZXRlKGUpLGh9KHQsZSxyLG4sbyx1KSl9ZnVuY3Rpb24gUWUodCxlLHIsbixvKXtyZXR1cm4gdD09PWV8fChudWxsPT10fHxudWxsPT1lfHwhZyh0KSYmIWcoZSk/dCE9dCYmZSE9ZTpLZSh0LGUscixuLFFlLG8pKX12YXIgWGU9MSxZZT0yO2Z1bmN0aW9uIFplKHQpe3JldHVybiB0PT10JiYhSyh0KX1mdW5jdGlvbiB0cih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbnVsbCE9ciYmKHJbdF09PT1lJiYodm9pZCAwIT09ZXx8dCBpbiBPYmplY3QocikpKX19ZnVuY3Rpb24gZXIodCl7dmFyIGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXJ0KHQpLHI9ZS5sZW5ndGg7ci0tOyl7dmFyIG49ZVtyXSxvPXRbbl07ZVtyXT1bbixvLFplKG8pXX1yZXR1cm4gZX0odCk7cmV0dXJuIDE9PWUubGVuZ3RoJiZlWzBdWzJdP3RyKGVbMF1bMF0sZVswXVsxXSk6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT10fHxmdW5jdGlvbih0LGUscixuKXt2YXIgbz1yLmxlbmd0aCx1PW8saT0hbjtpZihudWxsPT10KXJldHVybiF1O2Zvcih0PU9iamVjdCh0KTtvLS07KXt2YXIgYT1yW29dO2lmKGkmJmFbMl0/YVsxXSE9PXRbYVswXV06IShhWzBdaW4gdCkpcmV0dXJuITF9Zm9yKDsrK288dTspe3ZhciBjPShhPXJbb10pWzBdLGY9dFtjXSxzPWFbMV07aWYoaSYmYVsyXSl7aWYodm9pZCAwPT09ZiYmIShjIGluIHQpKXJldHVybiExfWVsc2V7dmFyIGw9bmV3IGhlO2lmKG4pdmFyIHA9bihmLHMsYyx0LGUsbCk7aWYoISh2b2lkIDA9PT1wP1FlKHMsZixYZXxZZSxuLGwpOnApKXJldHVybiExfX1yZXR1cm4hMH0ocix0LGUpfX12YXIgcnI9IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24gbnIodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxnKHQpJiZkKHQpPT1ycn12YXIgb3I9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sdXI9L15cdyokLztmdW5jdGlvbiBpcih0LGUpe2lmKFModCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIW5yKHQpKXx8KHVyLnRlc3QodCl8fCFvci50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKSl9dmFyIGFyPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBjcih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKGFyKTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0sdT1yLmNhY2hlO2lmKHUuaGFzKG8pKXJldHVybiB1LmdldChvKTt2YXIgaT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9dS5zZXQobyxpKXx8dSxpfTtyZXR1cm4gci5jYWNoZT1uZXcoY3IuQ2FjaGV8fHBlKSxyfWNyLkNhY2hlPXBlO3ZhciBmcj0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxzcj0vXFwoXFwpPy9nLGxyPWZ1bmN0aW9uKHQpe3ZhciBlPWNyKHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoZnIsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShzciwiJDEiKTpyfHx0KX0pKSxlfSkpLHByPWxyLGhyPTEvMCx2cj1jP2MucHJvdG90eXBlOnZvaWQgMCx5cj12cj92ci50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYnIodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKFModCkpcmV0dXJuIHJlKHQsYnIpKyIiO2lmKG5yKHQpKXJldHVybiB5cj95ci5jYWxsKHQpOiIiO3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1ocj8iLTAiOmV9ZnVuY3Rpb24gZHIodCl7cmV0dXJuIG51bGw9PXQ/IiI6YnIodCl9ZnVuY3Rpb24gZ3IodCxlKXtyZXR1cm4gUyh0KT90OmlyKHQsZSk/W3RdOnByKGRyKHQpKX12YXIgX3I9MS8wO2Z1bmN0aW9uIGpyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8bnIodCkpcmV0dXJuIHQ7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LV9yPyItMCI6ZX1mdW5jdGlvbiBtcih0LGUpe2Zvcih2YXIgcj0wLG49KGU9Z3IoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W2pyKGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfWZ1bmN0aW9uIHdyKHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDptcih0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBPcih0LGUpe3JldHVybiBudWxsIT10JiZlIGluIE9iamVjdCh0KX1mdW5jdGlvbiBTcih0LGUpe3JldHVybiBudWxsIT10JiZmdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPS0xLG89KGU9Z3IoZSx0KSkubGVuZ3RoLHU9ITE7KytuPG87KXt2YXIgaT1qcihlW25dKTtpZighKHU9bnVsbCE9dCYmcih0LGkpKSlicmVhazt0PXRbaV19cmV0dXJuIHV8fCsrbiE9bz91OiEhKG89bnVsbD09dD8wOnQubGVuZ3RoKSYmTChvKSYmJChpLG8pJiYoUyh0KXx8Tyh0KSl9KHQsZSxPcil9dmFyIEFyPTEseHI9MjtmdW5jdGlvbiB6cih0KXtyZXR1cm4gaXIodCk/TnQoanIodCkpOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbXIoZSx0KX19KHQpfWZ1bmN0aW9uIFByKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bnVsbD09dD91dDoib2JqZWN0Ij09dHlwZW9mIHQ/Uyh0KT9mdW5jdGlvbih0LGUpe3JldHVybiBpcih0KSYmWmUoZSk/dHIoanIodCksZSk6ZnVuY3Rpb24ocil7dmFyIG49d3Iocix0KTtyZXR1cm4gdm9pZCAwPT09biYmbj09PWU/U3Iocix0KTpRZShlLG4sQXJ8eHIpfX0odFswXSx0WzFdKTplcih0KTp6cih0KX1mdW5jdGlvbiBFcih0LGUpe3ZhciByPS0xLG49ZXQodCk/QXJyYXkodC5sZW5ndGgpOltdO3JldHVybiBvdCh0LChmdW5jdGlvbih0LG8sdSl7blsrK3JdPWUodCxvLHUpfSkpLG59ZnVuY3Rpb24ga3IodCxlKXtyZXR1cm4oUyh0KT9yZTpFcikodCxQcihlKSl9dmFyICRyPS9ccy87dmFyIEZyPS9eXHMrLztmdW5jdGlvbiBMcih0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmJHIudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShGciwiIik6dH1mdW5jdGlvbiBUcih0LGUscil7dmFyIG49dC5sZW5ndGg7cmV0dXJuIHI9dm9pZCAwPT09cj9uOnIsIWUmJnI+PW4/dDpmdW5jdGlvbih0LGUscil7dmFyIG49LTEsbz10Lmxlbmd0aDtlPDAmJihlPS1lPm8/MDpvK2UpLChyPXI+bz9vOnIpPDAmJihyKz1vKSxvPWU+cj8wOnItZT4+PjAsZT4+Pj0wO2Zvcih2YXIgdT1BcnJheShvKTsrK248bzspdVtuXT10W24rZV07cmV0dXJuIHV9KHQsZSxyKX1mdW5jdGlvbiBEcih0KXtyZXR1cm4gdCE9dH1mdW5jdGlvbiBJcih0LGUscil7cmV0dXJuIGU9PWU/ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1yLTEsbz10Lmxlbmd0aDsrK248bzspaWYodFtuXT09PWUpcmV0dXJuIG47cmV0dXJuLTF9KHQsZSxyKTpmdW5jdGlvbih0LGUscixuKXtmb3IodmFyIG89dC5sZW5ndGgsdT1yKyhuPzE6LTEpO24/dS0tOisrdTxvOylpZihlKHRbdV0sdSx0KSlyZXR1cm4gdTtyZXR1cm4tMX0odCxEcixyKX12YXIgTXI9IlxcdWQ4MDAtXFx1ZGZmZiIsTnI9IlsiK01yKyJdIixScj0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFVyPSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEJyPSJbXiIrTXIrIl0iLENyPSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixXcj0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIscXI9Iig/OiIrUnIrInwiK1VyKyIpIisiPyIsVnI9IltcXHVmZTBlXFx1ZmUwZl0/IixHcj1WcitxcisoIig/OlxcdTIwMGQoPzoiK1tCcixDcixXcl0uam9pbigifCIpKyIpIitWcitxcisiKSoiKSxIcj0iKD86IitbQnIrUnIrIj8iLFJyLENyLFdyLE5yXS5qb2luKCJ8IikrIikiLEpyPVJlZ0V4cChVcisiKD89IitVcisiKXwiK0hyK0dyLCJnIik7ZnVuY3Rpb24gS3IodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoKEpyKXx8W119KHQpOmZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KCIiKX0odCl9ZnVuY3Rpb24gUXIodCxlLHIpe2lmKCh0PWRyKHQpKSYmKHJ8fHZvaWQgMD09PWUpKXJldHVybiBMcih0KTtpZighdHx8IShlPWJyKGUpKSlyZXR1cm4gdDt2YXIgbj1Lcih0KSxvPUtyKGUpLHU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj10Lmxlbmd0aDsrK3I8biYmSXIoZSx0W3JdLDApPi0xOyk7cmV0dXJuIHJ9KG4sbyksaT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJklyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pKzE7cmV0dXJuIFRyKG4sdSxpKS5qb2luKCIiKX1mdW5jdGlvbiBYcih0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gWXIodCxlKXtpZighWHIodCkpcmV0dXJuW107aWYoIVhyKGUpKXJldHVybltdO2xldCByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFhyKHQpJiZYcihlKT90LnNwbGl0KGUpOltdfSh0LGUpO3I9a3IocixRcik7bGV0IG49W107cmV0dXJuIGl0KHIsKGZ1bmN0aW9uKHQpe1hyKHQpJiZuLnB1c2godCl9KSksbn1mdW5jdGlvbiBacih0KXtsZXQgZT0hMTtpZihYcih0KSllPSFpc05hTihOdW1iZXIodCkpO2Vsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCE9dH0odCkpcmV0dXJuITE7ZT0hMH1yZXR1cm4gZX12YXIgdG49TmFOLGVuPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHJuPS9eMGJbMDFdKyQvaSxubj0vXjBvWzAtN10rJC9pLG9uPXBhcnNlSW50O2Z1bmN0aW9uIHVuKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihucih0KSlyZXR1cm4gdG47aWYoSyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9SyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9THIodCk7dmFyIHI9cm4udGVzdCh0KTtyZXR1cm4gcnx8bm4udGVzdCh0KT9vbih0LnNsaWNlKDIpLHI/Mjo4KTplbi50ZXN0KHQpP3RuOit0fXZhciBhbj0xLzAsY249MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIGZuKHQpe3JldHVybiB0Pyh0PXVuKHQpKT09PWFufHx0PT09LWFuPyh0PDA/LTE6MSkqY246dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIHNuKHQpe3ZhciBlPWZuKHQpLHI9ZSUxO3JldHVybiBlPT1lP3I/ZS1yOmU6MH1mdW5jdGlvbiBsbih0KXtpZighWnIodCkpcmV0dXJuIDA7cmV0dXJuIGZuKHQpfWZ1bmN0aW9uIHBuKHQpe3JldHVybiEhWnIodCkmJih0PWxuKHQpLCJudW1iZXIiPT10eXBlb2YoZT10KSYmZT09c24oZSkpO3ZhciBlfXZhciBobj1hLmlzRmluaXRlLHZuPU1hdGgubWluO3ZhciB5bj1mdW5jdGlvbih0KXt2YXIgZT1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LHIpe2lmKHQ9dW4odCksKHI9bnVsbD09cj8wOnZuKHNuKHIpLDI5MikpJiZobih0KSl7dmFyIG49KGRyKHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShkcihlKG5bMF0rImUiKygrblsxXStyKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1yKSl9cmV0dXJuIGUodCl9fSgicm91bmQiKSxibj15bjtmdW5jdGlvbiBkbih0KXtpZighWnIodCkpcmV0dXJuIDA7dD1sbih0KTtsZXQgZT1ibih0KTtyZXR1cm4iMCI9PT1TdHJpbmcoZSk/MDplfWZ1bmN0aW9uIGduKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKTtyZXR1cm4hIXIuZXhpc3RzU3luYyh0KSYmKCFyLmxzdGF0U3luYyh0KS5pc0RpcmVjdG9yeSgpJiYhci5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKSl9ZnVuY3Rpb24gX24odCl7cmV0dXJuIGduKHQse2ZzOmV9KX1mdW5jdGlvbiBqbih0LGUpe3ZhciByPVtdO3JldHVybiBvdCh0LChmdW5jdGlvbih0LG4sbyl7ZSh0LG4sbykmJnIucHVzaCh0KX0pKSxyfWZ1bmN0aW9uIG1uKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKTtpZighci5leGlzdHNTeW5jKHQpKXJldHVybiExO2xldCBuPXIubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIHduKHQsZT0xLHI9e30pe2xldCBuPXdyKHIsInBhdGgiKSxvPXdyKHIsImZzIik7aWYoIW1uKHQse2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO2xldCB1PVtdO3ZhciBpLGE7cmV0dXJuIHU9ZnVuY3Rpb24odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIW1uKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBmdW5jdGlvbiB0KHIpe2xldCBpPVtdO3JldHVybiBtbihyLHtmczp1fSk/KGl0KHUucmVhZGRpclN5bmMociksKGZ1bmN0aW9uKGEpe2xldCBjPW8ucmVzb2x2ZShyLGEpLGY9bnVsbDt0cnl7Zj11LnN0YXRTeW5jKGMpfWNhdGNoKHQpe31mJiZmLmlzRGlyZWN0b3J5KCk/KGkucHVzaCh7aXNGb2xkZXI6ITAsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSksbis9MSwobjw9ZXx8bnVsbD09PWUpJiYoaT1pLmNvbmNhdCh0KGMpKSksbi09MSk6aS5wdXNoKHtpc0ZvbGRlcjohMSxsZXZlbDpuLHBhdGg6YyxuYW1lOm8uYmFzZW5hbWUoYyl9KX0pKSxpKTppfSh0KX0odCxlLHtwYXRoOm4sZnM6b30pLGE9e2lzRm9sZGVyOiExfSx1PShTKGk9dSk/TWU6am4pKGksUHIoYSkpLHU9a3IodSwodD0+KGRlbGV0ZSB0LmlzRm9sZGVyLHQpKSksdX1mdW5jdGlvbiBPbih0KXtyZXR1cm4gT249ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LE9uKHQpfWZ1bmN0aW9uIFNuKHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPT1Pbih0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LGV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1PbihuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09T24oZSk/ZTpTdHJpbmcoZSl9ZnVuY3Rpb24gQW4odCxlLHIpe3JldHVybihlPVNuKGUpKWluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fWNvbnN0IHhuPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIHpuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPXdyKGUsImNodW5rU2l6ZSIpO2lmKFpyKG4pfHwobj02NzEwODg2NCksbj1sbihuKSwhZ24odCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBvPWZ1bmN0aW9uKCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyx1LGksaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSx1PWUoKSxpPXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTtpLm9uKCJkYXRhIiwodD0+e3UudXBkYXRlKHQpfSkpLGkub24oImVuZCIsKCgpPT57bGV0IHQ9dS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtvLnJlc29sdmUodCl9KSksaS5vbigiZXJyb3IiLG8ucmVqZWN0KX1jYXRjaCh0KXtvLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBvfWZ1bmN0aW9uIFBuKHQsZSl7dmFyIHI9T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYobj1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBFbih0LHI9e30pe3JldHVybiB6bih0LGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1tlXT9hcmd1bWVudHNbZV06e307ZSUyP1BuKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7QW4odCxlLHJbZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOlBuKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSkpfXJldHVybiB0fSh7ZnM6ZX0scikpfWxldCBjaGVja1RvdGFsSGFzaD1hc3luYyhyLG4sbyx1KT0+e2xldCBpPXQuam9pbih1LG8pLGE9ITE7aWYoYT1fbihpKSwhWnIocikpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlU2l6ZSBpbiBwYXlsb2FkIn19bGV0IGM9ITE7aWYoYSl7Yz1yPT09ZS5zdGF0U3luYyhpKS5zaXplfWxldCBmPSExO2EmJmMmJmF3YWl0IEVuKGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxfbihpKSksY29uc29sZS5sb2codCksZj0hMX0pKTtsZXQgcz1mdW5jdGlvbihyLG49MSl7cmV0dXJuIHduKHIsbix7cGF0aDp0LGZzOmV9KX0odSksbD1bXTtpdChzLCh0PT57bGV0IHI9dC5uYW1lLmluZGV4T2YoYCR7b31fYCk+PTAsdT1lLnN0YXRTeW5jKHQucGF0aCkuc2l6ZT09PW47aWYociYmdSl7bGV0IGU9WXIodC5uYW1lLGAke299X2ApLHI9KGE9bnVsbD09KGk9ZSk/MDppLmxlbmd0aCk/aVthLTFdOnZvaWQgMDtpZighZnVuY3Rpb24odCl7cmV0dXJuISFwbih0KSYmZG4odCk+PTB9KHIpKXRocm93IGNvbnNvbGUubG9nKCJ2Lm5hbWUiLHQubmFtZSksY29uc29sZS5sb2coInMiLGUpLG5ldyBFcnJvcihgY2FuIG5vdCBwYXJzZSBpbmRleCBpbiB2Lm5hbWVbJHt0Lm5hbWV9XWApO3I9ZG4ociksbC5wdXNoKHIpfXZhciBpLGF9KSk7bGV0IHA9ZWUobCk+MDtyZXR1cm57cGF0aDppLGJBbGxFeGlzdDphLGJBbGxTaXplOmMsYkFsbEhhc2g6ZixiU2xzOnAsc2xrczpsfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1RvdGFsSGFzaAogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjaGVja1RvdGFsSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZWN2TWVzc2FnZShlLmRhdGEpCiAgICAgICAgfQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==");function M(){let M=new N,i=function(s){try{let M=new Blob([s]),i=window.URL||window.webkitURL;return new Worker(i.createObjectURL(M))}catch(s){w(s)}}(s);if(!i)return w("invalid worker"),null;function I(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),I=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),w={mode:"call",id:I,fun:"main",input:[...arguments]};return i.postMessage(w),M.once(I,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function w(s){M.emit("error",s)}return i.onmessage=function(s){!function(s){let i=s,I=i.mode;"emit"!==I&&"return"!==I||("emit"===I&&M.emit(i.evName,i.msg),"return"===I&&M.emit(i.id,i))}(s.data)},i.onerror=w,i.onmessageerror=function(s){w(s.data)},function(){let s={mode:"init",type:"function",input:[...arguments]};i.postMessage(s)}([...arguments]),M.main=I,M.main=I,M.terminate=function(){i?(i.terminate(),i=void 0):w("worker has been terminated")},M}u=async function(){let s=[...arguments],i=M();return await i.main(...s).finally((()=>{i.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return u}()}({get exports(){return I},set exports(s){I=s}});var w=I;let L;return L="undefined"!=typeof window&&void 0!==window.document?w:i,L}(L)}({get exports(){return xw},set exports(s){xw=s}});var Xw=xw,rw={};!function(s,M){s.exports=function(s){var M={};!function(M,i){M.exports=function(s){var M={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return M},set exports(s){M=s}});var i=M;let I;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let M=(w="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9T2JqZWN0LnByb3RvdHlwZTt2YXIgbixvLGk9KG49T2JqZWN0LmtleXMsbz1PYmplY3QsZnVuY3Rpb24odCl7cmV0dXJuIG4obyh0KSl9KSx1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYSh0KXtpZihuPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvdG90eXBlfHxyKSlyZXR1cm4gaSh0KTt2YXIgZSxuLG89W107Zm9yKHZhciBhIGluIE9iamVjdCh0KSl1LmNhbGwodCxhKSYmImNvbnN0cnVjdG9yIiE9YSYmby5wdXNoKGEpO3JldHVybiBvfXZhciBjPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxmPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYscz1jfHxmfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGw9cy5TeW1ib2wscD1PYmplY3QucHJvdG90eXBlLGg9cC5oYXNPd25Qcm9wZXJ0eSx5PXAudG9TdHJpbmcsdj1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIGQ9IltvYmplY3QgTnVsbF0iLGc9IltvYmplY3QgVW5kZWZpbmVkXSIsXz1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGoodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9nOmQ6XyYmXyBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9aC5jYWxsKHQsdikscj10W3ZdO3RyeXt0W3ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89eS5jYWxsKHQpO3JldHVybiBuJiYoZT90W3ZdPXI6ZGVsZXRlIHRbdl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBiLmNhbGwodCl9KHQpfWZ1bmN0aW9uIHcodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFM9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLE89IltvYmplY3QgRnVuY3Rpb25dIixtPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIseD0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHoodCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9aih0KTtyZXR1cm4gZT09T3x8ZT09bXx8ZT09U3x8ZT09eH12YXIgQSwkPXNbIl9fY29yZS1qc19zaGFyZWRfXyJdLEY9KEE9L1teLl0rJC8uZXhlYygkJiYkLmtleXMmJiQua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIFA9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIEwodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBQLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifXZhciBrPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEU9RnVuY3Rpb24ucHJvdG90eXBlLEk9T2JqZWN0LnByb3RvdHlwZSxOPUUudG9TdHJpbmcsVD1JLmhhc093blByb3BlcnR5LE09UmVnRXhwKCJeIitOLmNhbGwoVCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gUih0KXtyZXR1cm4hKCF3KHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIUYmJkYgaW4gdH0odCkpJiYoeih0KT9NOmspLnRlc3QoTCh0KSl9ZnVuY3Rpb24gVSh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIFIocik/cjp2b2lkIDB9dmFyIEI9VShzLCJEYXRhVmlldyIpLEM9VShzLCJNYXAiKSxEPVUocywiUHJvbWlzZSIpLFc9VShzLCJTZXQiKSxxPVUocywiV2Vha01hcCIpLFY9IltvYmplY3QgTWFwXSIsRz0iW29iamVjdCBQcm9taXNlXSIsSD0iW29iamVjdCBTZXRdIixKPSJbb2JqZWN0IFdlYWtNYXBdIixLPSJbb2JqZWN0IERhdGFWaWV3XSIsUT1MKEIpLFg9TChDKSxZPUwoRCksWj1MKFcpLHR0PUwocSksZXQ9ajsoQiYmZXQobmV3IEIobmV3IEFycmF5QnVmZmVyKDEpKSkhPUt8fEMmJmV0KG5ldyBDKSE9Vnx8RCYmZXQoRC5yZXNvbHZlKCkpIT1HfHxXJiZldChuZXcgVykhPUh8fHEmJmV0KG5ldyBxKSE9SikmJihldD1mdW5jdGlvbih0KXt2YXIgZT1qKHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0wocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBROnJldHVybiBLO2Nhc2UgWDpyZXR1cm4gVjtjYXNlIFk6cmV0dXJuIEc7Y2FzZSBaOnJldHVybiBIO2Nhc2UgdHQ6cmV0dXJuIEp9cmV0dXJuIGV9KTt2YXIgcnQ9ZXQsbnQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBvdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PW50fSh0Lmxlbmd0aCkmJiF6KHQpfXZhciBpdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHV0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9dmFyIGF0PSJbb2JqZWN0IFN0cmluZ10iO3ZhciBjdCxmdD0oY3Q9Imxlbmd0aCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbY3RdfSksc3Q9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBsdD0iXFx1ZDgwMC1cXHVkZmZmIixwdD0iWyIrbHQrIl0iLGh0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIseXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsdnQ9IlteIitsdCsiXSIsYnQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLGR0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixndD0iKD86IitodCsifCIreXQrIikiKyI/IixfdD0iW1xcdWZlMGVcXHVmZTBmXT8iLGp0PV90K2d0KygiKD86XFx1MjAwZCg/OiIrW3Z0LGJ0LGR0XS5qb2luKCJ8IikrIikiK190K2d0KyIpKiIpLHd0PSIoPzoiK1t2dCtodCsiPyIsaHQsYnQsZHQscHRdLmpvaW4oInwiKSsiKSIsU3Q9UmVnRXhwKHl0KyIoPz0iK3l0KyIpfCIrd3QranQsImciKTtmdW5jdGlvbiBPdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHN0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1TdC5sYXN0SW5kZXg9MDtTdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOmZ0KHQpfWZ1bmN0aW9uIG10KHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYob3QodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhaXQoZSkmJnV0KGUpJiZqKGUpPT1hdD9PdCh0KTp0Lmxlbmd0aDt2YXIgZSxyPXJ0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6YSh0KS5sZW5ndGh9dmFyIHh0PSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIHp0KHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8dXQodCkmJmoodCk9PXh0fXZhciBBdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywkdD0vXlx3KiQvO3ZhciBGdD1VKE9iamVjdCwiY3JlYXRlIik7dmFyIFB0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEx0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24ga3QodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gRXQodCxlKXtmb3IodmFyIHIsbixvPXQubGVuZ3RoO28tLTspaWYoKHI9dFtvXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1rdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPUZ0P0Z0KG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxrdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxrdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoRnQpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gUHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxrdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEZ0P3ZvaWQgMCE9PWVbdF06THQuY2FsbChlLHQpfSxrdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1GdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgSXQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBOdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBUdCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gTXQodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19TnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sTnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9RXQoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6SXQuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxOdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1FdChlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LE50LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEV0KHRoaXMuX19kYXRhX18sdCk+LTF9LE50LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49RXQocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc30sTXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcga3QsbWFwOm5ldyhDfHxOdCksc3RyaW5nOm5ldyBrdH19LE10LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9VHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sTXQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gVHQodGhpcyx0KS5nZXQodCl9LE10LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFR0KHRoaXMsdCkuaGFzKHQpfSxNdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9VHQodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIFJ0PSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBVdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFJ0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0saT1yLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gci5jYWNoZT1uZXcoVXQuQ2FjaGV8fE10KSxyfVV0LkNhY2hlPU10O3ZhciBCdD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxDdD0vXFwoXFwpPy9nLER0PWZ1bmN0aW9uKHQpe3ZhciBlPVV0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoQnQsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShDdCwiJDEiKTpyfHx0KX0pKSxlfSkpLFd0PUR0O3ZhciBxdD0xLzAsVnQ9bD9sLnByb3RvdHlwZTp2b2lkIDAsR3Q9VnQ/VnQudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIEh0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihpdCh0KSlyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb30odCxIdCkrIiI7aWYoenQodCkpcmV0dXJuIEd0P0d0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LXF0PyItMCI6ZX1mdW5jdGlvbiBKdCh0LGUpe3JldHVybiBpdCh0KT90OmZ1bmN0aW9uKHQsZSl7aWYoaXQodCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIXp0KHQpKXx8JHQudGVzdCh0KXx8IUF0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpfSh0LGUpP1t0XTpXdChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjpIdCh0KX0odCkpfXZhciBLdD0xLzA7ZnVuY3Rpb24gUXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHx6dCh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tS3Q/Ii0wIjplfWZ1bmN0aW9uIFh0KHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49KGU9SnQoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W1F0KGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfSh0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gZnVuY3Rpb24odCxlPXt9KXtsZXQgcj1YdChlLCJmcyIpO3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYhci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCl9KHQse2ZzOmV9KX1jb25zdCBadD1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTtmdW5jdGlvbiB0ZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gZWUodCl7bGV0IGU9ITE7aWYodGUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHJlPS9ccy87dmFyIG5lPS9eXHMrLztmdW5jdGlvbiBvZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmcmUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShuZSwiIik6dH12YXIgaWU9TmFOLHVlPS9eWy0rXTB4WzAtOWEtZl0rJC9pLGFlPS9eMGJbMDFdKyQvaSxjZT0vXjBvWzAtN10rJC9pLGZlPXBhcnNlSW50O3ZhciBzZT0xLzAsbGU9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIHBlKHQpe3JldHVybiB0Pyh0PWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZih6dCh0KSlyZXR1cm4gaWU7aWYodyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9dyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9b2UodCk7dmFyIHI9YWUudGVzdCh0KTtyZXR1cm4gcnx8Y2UudGVzdCh0KT9mZSh0LnNsaWNlKDIpLHI/Mjo4KTp1ZS50ZXN0KHQpP2llOit0fSh0KSk9PT1zZXx8dD09PS1zZT8odDwwPy0xOjEpKmxlOnQ9PXQ/dDowOjA9PT10P3Q6MH1hc3luYyBmdW5jdGlvbiBoZSh0LGU9e30pe2lmKHI9dCwiW29iamVjdCBCbG9iXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikmJiFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXJldHVybiBjb25zb2xlLmxvZygiaW5wIix0KSxQcm9taXNlLnJlamVjdCgiaW5wIGlzIG5vdCBhIEJsb2Igb3IgRmlsZSIpO3ZhciByO2xldCBuPVh0KGUsImNodW5rU2l6ZSIpO2VlKG4pfHwobj02NzEwODg2NCksbj1mdW5jdGlvbih0KXtyZXR1cm4gZWUodCk/cGUodCk6MH0obik7bGV0e2NyZWF0ZTY0Om99PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjppLGRpZ2VzdDMyOnUsaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLGkpe2wodCk7Y29uc3QgdT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQodSkscigwLGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQodSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1iLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldCh1KSxpKG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3QgeT0ybioqNjRuLTFuO2Z1bmN0aW9uIHYodCl7cmV0dXJuIHQmeX1jb25zdCBiPW5ldyBUZXh0RW5jb2RlcixkPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksdihuKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9ZCk9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9ZCk9PnAoNDgsdCxvLGksdSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx2KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHYpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKFp0KSkuaW5zdGFuY2UpfSgpLGk9bygpLHU9MDtmb3IoO3U8dC5zaXplOyl7bGV0IGU9dC5zbGljZSh1LHUrbikscj1hd2FpdCBlLmFycmF5QnVmZmVyKCk7aS51cGRhdGUobmV3IFVpbnQ4QXJyYXkocikpLHUrPW59cmV0dXJuIGkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIil9bGV0IGNoZWNrU2xpY2VzSGFzaD1hc3luYyhyLG4sbyk9PntpZigwPT09bXQocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgaT1bXTtmb3IobGV0IHU9MDt1PHIubGVuZ3RoO3UrKyl7bGV0IGE9clt1XSxjPXQuam9pbihvLGAke259XyR7YS5pfWApLGY9IiI7YXdhaXQgaGUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGMpXSkpLnRoZW4oKHQ9PntmPXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZygiZnNJc0ZpbGUoX3BhdGhGaWxlKSIsYyxZdChjKSksY29uc29sZS5sb2codCl9KSksYS5oPT09ZiYmaS5wdXNoKGEuaSl9cmV0dXJue3Nsa3M6aX19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tTbGljZXNIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrU2xpY2VzSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(w,"base64").toString("utf8"));var w;function L(){let I=new i,w=function(M){try{return new s.Worker(M,{eval:!0})}catch(s){t(s)}}(M);if(!w)return t("invalid worker"),null;function L(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),M=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),i={mode:"call",id:M,fun:"main",input:[...arguments]};return w.postMessage(i),I.once(M,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function t(s){I.emit("error",s)}return w.on("message",(function(s){let M=s,i=M.mode;"emit"!==i&&"return"!==i||("emit"===i&&I.emit(M.evName,M.msg),"return"===i&&I.emit(M.id,M))})),w.on("error",t),w.on("exit",(s=>{1!==s&&t("exit code["+s+"] !== 1")})),function(){let s={mode:"init",type:"function",input:[...arguments]};w.postMessage(s)}([...arguments]),I.main=L,I.main=L,I.terminate=function(){w?(w.terminate(),w=void 0):t("worker has been terminated")},I}I=async function(){let s=[...arguments],M=L();return await M.main(...s).finally((()=>{M.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return I}(s)}({get exports(){return M},set exports(s){M=s}});var i=M,I={};!function(s,M){s.exports=function(){const s="function"==typeof Buffer,M="function"==typeof TextDecoder?new TextDecoder:void 0,i=(s=>{let M={};return s.forEach(((s,i)=>M[s]=i)),M})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),I=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,w=String.fromCharCode.bind(String),L="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):s=>new Uint8Array(Array.prototype.slice.call(s,0)),t=s=>s.replace(/[^A-Za-z0-9\+\/]/g,""),c=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,d=s=>{switch(s.length){case 4:var M=((7&s.charCodeAt(0))<<18|(63&s.charCodeAt(1))<<12|(63&s.charCodeAt(2))<<6|63&s.charCodeAt(3))-65536;return w(55296+(M>>>10))+w(56320+(1023&M));case 3:return w((15&s.charCodeAt(0))<<12|(63&s.charCodeAt(1))<<6|63&s.charCodeAt(2));default:return w((31&s.charCodeAt(0))<<6|63&s.charCodeAt(1))}},l=s=>s.replace(c,d),n=s=>{if(s=s.replace(/\s+/g,""),!I.test(s))throw new TypeError("malformed base64.");s+="==".slice(2-(3&s.length));let M,L,t,c="";for(let I=0;I<s.length;)M=i[s.charAt(I++)]<<18|i[s.charAt(I++)]<<12|(L=i[s.charAt(I++)])<<6|(t=i[s.charAt(I++)]),c+=64===L?w(M>>16&255):64===t?w(M>>16&255,M>>8&255):w(M>>16&255,M>>8&255,255&M);return c},e="function"==typeof atob?s=>atob(t(s)):s?s=>Buffer.from(s,"base64").toString("binary"):n,y=s?s=>L(Buffer.from(s,"base64")):s=>L(e(s).split("").map((s=>s.charCodeAt(0)))),D=s?s=>Buffer.from(s,"base64").toString("utf8"):M?s=>M.decode(y(s)):s=>l(e(s)),C=s=>t(s.replace(/[-_]/g,(s=>"-"==s?"+":"/"))),o=s=>D(C(s)),m=o;var Z={};!function(s){var M=Object.prototype.hasOwnProperty,i="~";function I(){}function w(s,M,i){this.fn=s,this.context=M,this.once=i||!1}function L(s,M,I,L,t){if("function"!=typeof I)throw new TypeError("The listener must be a function");var c=new w(I,L||s,t),d=i?i+M:M;return s._events[d]?s._events[d].fn?s._events[d]=[s._events[d],c]:s._events[d].push(c):(s._events[d]=c,s._eventsCount++),s}function t(s,M){0==--s._eventsCount?s._events=new I:delete s._events[M]}function c(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(i=!1)),c.prototype.eventNames=function(){var s,I,w=[];if(0===this._eventsCount)return w;for(I in s=this._events)M.call(s,I)&&w.push(i?I.slice(1):I);return Object.getOwnPropertySymbols?w.concat(Object.getOwnPropertySymbols(s)):w},c.prototype.listeners=function(s){var M=i?i+s:s,I=this._events[M];if(!I)return[];if(I.fn)return[I.fn];for(var w=0,L=I.length,t=new Array(L);w<L;w++)t[w]=I[w].fn;return t},c.prototype.listenerCount=function(s){var M=i?i+s:s,I=this._events[M];return I?I.fn?1:I.length:0},c.prototype.emit=function(s,M,I,w,L,t){var c=i?i+s:s;if(!this._events[c])return!1;var d,l,n=this._events[c],e=arguments.length;if(n.fn){switch(n.once&&this.removeListener(s,n.fn,void 0,!0),e){case 1:return n.fn.call(n.context),!0;case 2:return n.fn.call(n.context,M),!0;case 3:return n.fn.call(n.context,M,I),!0;case 4:return n.fn.call(n.context,M,I,w),!0;case 5:return n.fn.call(n.context,M,I,w,L),!0;case 6:return n.fn.call(n.context,M,I,w,L,t),!0}for(l=1,d=new Array(e-1);l<e;l++)d[l-1]=arguments[l];n.fn.apply(n.context,d)}else{var y,D=n.length;for(l=0;l<D;l++)switch(n[l].once&&this.removeListener(s,n[l].fn,void 0,!0),e){case 1:n[l].fn.call(n[l].context);break;case 2:n[l].fn.call(n[l].context,M);break;case 3:n[l].fn.call(n[l].context,M,I);break;case 4:n[l].fn.call(n[l].context,M,I,w);break;default:if(!d)for(y=1,d=new Array(e-1);y<e;y++)d[y-1]=arguments[y];n[l].fn.apply(n[l].context,d)}}return!0},c.prototype.on=function(s,M,i){return L(this,s,M,i,!1)},c.prototype.once=function(s,M,i){return L(this,s,M,i,!0)},c.prototype.removeListener=function(s,M,I,w){var L=i?i+s:s;if(!this._events[L])return this;if(!M)return t(this,L),this;var c=this._events[L];if(c.fn)c.fn!==M||w&&!c.once||I&&c.context!==I||t(this,L);else{for(var d=0,l=[],n=c.length;d<n;d++)(c[d].fn!==M||w&&!c[d].once||I&&c[d].context!==I)&&l.push(c[d]);l.length?this._events[L]=1===l.length?l[0]:l:t(this,L)}return this},c.prototype.removeAllListeners=function(s){var M;return s?(M=i?i+s:s,this._events[M]&&t(this,M)):(this._events=new I,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=i,c.EventEmitter=c,s.exports=c}({get exports(){return Z},set exports(s){Z=s}});var N=Z;let u;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let s=m("CgoKInVzZSBzdHJpY3QiO3ZhciB0PXJlcXVpcmUoInBhdGgiKSxlPXJlcXVpcmUoImZzIikscj1PYmplY3QucHJvdG90eXBlO3ZhciBuLG8saT0obj1PYmplY3Qua2V5cyxvPU9iamVjdCxmdW5jdGlvbih0KXtyZXR1cm4gbihvKHQpKX0pLHU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBhKHQpe2lmKG49KGU9dCkmJmUuY29uc3RydWN0b3IsZSE9PSgiZnVuY3Rpb24iPT10eXBlb2YgbiYmbi5wcm90b3R5cGV8fHIpKXJldHVybiBpKHQpO3ZhciBlLG4sbz1bXTtmb3IodmFyIGEgaW4gT2JqZWN0KHQpKXUuY2FsbCh0LGEpJiYiY29uc3RydWN0b3IiIT1hJiZvLnB1c2goYSk7cmV0dXJuIG99dmFyIGM9Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLGY9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixzPWN8fGZ8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksbD1zLlN5bWJvbCxwPU9iamVjdC5wcm90b3R5cGUsaD1wLmhhc093blByb3BlcnR5LHk9cC50b1N0cmluZyx2PWw/bC50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgZD0iW29iamVjdCBOdWxsXSIsZz0iW29iamVjdCBVbmRlZmluZWRdIixfPWw/bC50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gaih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P2c6ZDpfJiZfIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgZT1oLmNhbGwodCx2KSxyPXRbdl07dHJ5e3Rbdl09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz15LmNhbGwodCk7cmV0dXJuIG4mJihlP3Rbdl09cjpkZWxldGUgdFt2XSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGIuY2FsbCh0KX0odCl9ZnVuY3Rpb24gdyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgUz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsTz0iW29iamVjdCBGdW5jdGlvbl0iLG09IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix4PSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24geih0KXtpZighdyh0KSlyZXR1cm4hMTt2YXIgZT1qKHQpO3JldHVybiBlPT1PfHxlPT1tfHxlPT1TfHxlPT14fXZhciBBLCQ9c1siX19jb3JlLWpzX3NoYXJlZF9fIl0sRj0oQT0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrQToiIjt2YXIgUD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gTCh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIFAuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIGs9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sRT1GdW5jdGlvbi5wcm90b3R5cGUsST1PYmplY3QucHJvdG90eXBlLE49RS50b1N0cmluZyxUPUkuaGFzT3duUHJvcGVydHksTT1SZWdFeHAoIl4iK04uY2FsbChUKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBSKHQpe3JldHVybiEoIXcodCl8fGZ1bmN0aW9uKHQpe3JldHVybiEhRiYmRiBpbiB0fSh0KSkmJih6KHQpP006aykudGVzdChMKHQpKX1mdW5jdGlvbiBVKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gUihyKT9yOnZvaWQgMH12YXIgQj1VKHMsIkRhdGFWaWV3IiksQz1VKHMsIk1hcCIpLEQ9VShzLCJQcm9taXNlIiksVz1VKHMsIlNldCIpLHE9VShzLCJXZWFrTWFwIiksVj0iW29iamVjdCBNYXBdIixHPSJbb2JqZWN0IFByb21pc2VdIixIPSJbb2JqZWN0IFNldF0iLEo9IltvYmplY3QgV2Vha01hcF0iLEs9IltvYmplY3QgRGF0YVZpZXddIixRPUwoQiksWD1MKEMpLFk9TChEKSxaPUwoVyksdHQ9TChxKSxldD1qOyhCJiZldChuZXcgQihuZXcgQXJyYXlCdWZmZXIoMSkpKSE9S3x8QyYmZXQobmV3IEMpIT1WfHxEJiZldChELnJlc29sdmUoKSkhPUd8fFcmJmV0KG5ldyBXKSE9SHx8cSYmZXQobmV3IHEpIT1KKSYmKGV0PWZ1bmN0aW9uKHQpe3ZhciBlPWoodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/TChyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIFE6cmV0dXJuIEs7Y2FzZSBYOnJldHVybiBWO2Nhc2UgWTpyZXR1cm4gRztjYXNlIFo6cmV0dXJuIEg7Y2FzZSB0dDpyZXR1cm4gSn1yZXR1cm4gZX0pO3ZhciBydD1ldCxudD05MDA3MTk5MjU0NzQwOTkxO2Z1bmN0aW9uIG90KHQpe3JldHVybiBudWxsIT10JiZmdW5jdGlvbih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+LTEmJnQlMT09MCYmdDw9bnR9KHQubGVuZ3RoKSYmIXoodCl9dmFyIGl0PUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gdXQodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgYXQ9IltvYmplY3QgU3RyaW5nXSI7dmFyIGN0LGZ0PShjdD0ibGVuZ3RoIixmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtjdF19KSxzdD1SZWdFeHAoIltcXHUyMDBkXFx1ZDgwMC1cXHVkZmZmXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXFx1ZmUwZVxcdWZlMGZdIik7dmFyIGx0PSJcXHVkODAwLVxcdWRmZmYiLHB0PSJbIitsdCsiXSIsaHQ9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIix5dD0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIix2dD0iW14iK2x0KyJdIixidD0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsZHQ9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLGd0PSIoPzoiK2h0KyJ8Iit5dCsiKSIrIj8iLF90PSJbXFx1ZmUwZVxcdWZlMGZdPyIsanQ9X3QrZ3QrKCIoPzpcXHUyMDBkKD86IitbdnQsYnQsZHRdLmpvaW4oInwiKSsiKSIrX3QrZ3QrIikqIiksd3Q9Iig/OiIrW3Z0K2h0KyI/IixodCxidCxkdCxwdF0uam9pbigifCIpKyIpIixTdD1SZWdFeHAoeXQrIig/PSIreXQrIil8Iit3dCtqdCwiZyIpO2Z1bmN0aW9uIE90KHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gc3QudGVzdCh0KX0odCk/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVN0Lmxhc3RJbmRleD0wO1N0LnRlc3QodCk7KSsrZTtyZXR1cm4gZX0odCk6ZnQodCl9ZnVuY3Rpb24gbXQodCl7aWYobnVsbD09dClyZXR1cm4gMDtpZihvdCh0KSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mKGU9dCl8fCFpdChlKSYmdXQoZSkmJmooZSk9PWF0P090KHQpOnQubGVuZ3RoO3ZhciBlLHI9cnQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PXJ8fCJbb2JqZWN0IFNldF0iPT1yP3Quc2l6ZTphKHQpLmxlbmd0aH12YXIgeHQ9IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24genQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHx1dCh0KSYmaih0KT09eHR9dmFyIEF0PS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLCR0PS9eXHcqJC87dmFyIEZ0PVUoT2JqZWN0LCJjcmVhdGUiKTt2YXIgUHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgTHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBrdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBFdCh0LGUpe2Zvcih2YXIgcixuLG89dC5sZW5ndGg7by0tOylpZigocj10W29dWzBdKT09PShuPWUpfHxyIT1yJiZuIT1uKXJldHVybiBvO3JldHVybi0xfWt0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189RnQ/RnQobnVsbCk6e30sdGhpcy5zaXplPTB9LGt0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LGt0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihGdCl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBQdC5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LGt0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztyZXR1cm4gRnQ/dm9pZCAwIT09ZVt0XTpMdC5jYWxsKGUsdCl9LGt0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxyW3RdPUZ0JiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBJdD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIE50KHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIFR0KHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBNdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1OdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxOdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1FdChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpJdC5jYWxsKGUsciwxKSwtLXRoaXMuc2l6ZSwhMCl9LE50LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPUV0KGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sTnQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gRXQodGhpcy5fX2RhdGFfXyx0KT4tMX0sTnQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1FdChyLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLHIucHVzaChbdCxlXSkpOnJbbl1bMV09ZSx0aGlzfSxNdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBrdCxtYXA6bmV3KEN8fE50KSxzdHJpbmc6bmV3IGt0fX0sTXQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT1UdCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxNdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBUdCh0aGlzLHQpLmdldCh0KX0sTXQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gVHQodGhpcyx0KS5oYXModCl9LE10LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1UdCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTt2YXIgUnQ9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIFV0KHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoUnQpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMsbik6blswXSxpPXIuY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciB1PXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1pLnNldChvLHUpfHxpLHV9O3JldHVybiByLmNhY2hlPW5ldyhVdC5DYWNoZXx8TXQpLHJ9VXQuQ2FjaGU9TXQ7dmFyIEJ0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLEN0PS9cXChcXCk/L2csRHQ9ZnVuY3Rpb24odCl7dmFyIGU9VXQodCwoZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PXIuc2l6ZSYmci5jbGVhcigpLHR9KSkscj1lLmNhY2hlO3JldHVybiBlfSgoZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShCdCwoZnVuY3Rpb24odCxyLG4sbyl7ZS5wdXNoKG4/by5yZXBsYWNlKEN0LCIkMSIpOnJ8fHQpfSkpLGV9KSksV3Q9RHQ7dmFyIHF0PTEvMCxWdD1sP2wucHJvdG90eXBlOnZvaWQgMCxHdD1WdD9WdC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gSHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGl0KHQpKXJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPUFycmF5KG4pOysrcjxuOylvW3JdPWUodFtyXSxyLHQpO3JldHVybiBvfSh0LEh0KSsiIjtpZih6dCh0KSlyZXR1cm4gR3Q/R3QuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tcXQ/Ii0wIjplfWZ1bmN0aW9uIEp0KHQsZSl7cmV0dXJuIGl0KHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihpdCh0KSlyZXR1cm4hMTt2YXIgcj10eXBlb2YgdDtyZXR1cm4hKCJudW1iZXIiIT1yJiYic3ltYm9sIiE9ciYmImJvb2xlYW4iIT1yJiZudWxsIT10JiYhenQodCkpfHwkdC50ZXN0KHQpfHwhQXQudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSl9KHQsZSk/W3RdOld0KGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10PyIiOkh0KHQpfSh0KSl9dmFyIEt0PTEvMDtmdW5jdGlvbiBRdCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fHp0KHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1LdD8iLTAiOmV9ZnVuY3Rpb24gWHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1KdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbUXQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufWZ1bmN0aW9uIFl0KHQpe3JldHVybiBmdW5jdGlvbih0LGU9e30pe2xldCByPVh0KGUsImZzIik7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJiFyLmxzdGF0U3luYyh0KS5pc0RpcmVjdG9yeSgpJiYhci5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKX0odCx7ZnM6ZX0pfWNvbnN0IFp0PW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2Z1bmN0aW9uIHRlKHQpe3JldHVybiEoIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8IiI9PT10KX1mdW5jdGlvbiBlZSh0KXtsZXQgZT0hMTtpZih0ZSh0KSllPSFpc05hTihOdW1iZXIodCkpO2Vsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCE9dH0odCkpcmV0dXJuITE7ZT0hMH1yZXR1cm4gZX12YXIgcmU9L1xzLzt2YXIgbmU9L15ccysvO2Z1bmN0aW9uIG9lKHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZyZS50ZXN0KHQuY2hhckF0KGUpKTspO3JldHVybiBlfSh0KSsxKS5yZXBsYWNlKG5lLCIiKTp0fXZhciBpZT1OYU4sdWU9L15bLStdMHhbMC05YS1mXSskL2ksYWU9L14wYlswMV0rJC9pLGNlPS9eMG9bMC03XSskL2ksZmU9cGFyc2VJbnQ7dmFyIHNlPTEvMCxsZT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQ/KHQ9ZnVuY3Rpb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHp0KHQpKXJldHVybiBpZTtpZih3KHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD13KGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1vZSh0KTt2YXIgcj1hZS50ZXN0KHQpO3JldHVybiByfHxjZS50ZXN0KHQpP2ZlKHQuc2xpY2UoMikscj8yOjgpOnVlLnRlc3QodCk/aWU6K3R9KHQpKT09PXNlfHx0PT09LXNlPyh0PDA/LTE6MSkqbGU6dD09dD90OjA6MD09PXQ/dDowfWFzeW5jIGZ1bmN0aW9uIGhlKHQsZT17fSl7aWYocj10LCJbb2JqZWN0IEJsb2JdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSYmIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEZpbGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpcmV0dXJuIGNvbnNvbGUubG9nKCJpbnAiLHQpLFByb21pc2UucmVqZWN0KCJpbnAgaXMgbm90IGEgQmxvYiBvciBGaWxlIik7dmFyIHI7bGV0IG49WHQoZSwiY2h1bmtTaXplIik7ZWUobil8fChuPTY3MTA4ODY0KSxuPWZ1bmN0aW9uKHQpe3JldHVybiBlZSh0KT9wZSh0KTowfShuKTtsZXR7Y3JlYXRlNjQ6b309YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3R7ZXhwb3J0czp7bWVtOmUseHhoMzI6cix4eGg2NDpuLGluaXQzMjpvLHVwZGF0ZTMyOmksZGlnZXN0MzI6dSxpbml0NjQ6YSx1cGRhdGU2NDpjLGRpZ2VzdDY0OmZ9fT10O2xldCBzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKTtmdW5jdGlvbiBsKHQscil7aWYoZS5idWZmZXIuYnl0ZUxlbmd0aDx0K3Ipe2NvbnN0IG49TWF0aC5jZWlsKCh0K3ItZS5idWZmZXIuYnl0ZUxlbmd0aCkvNjU1MzYpO2UuZ3JvdyhuKSxzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKX19ZnVuY3Rpb24gcCh0LGUscixuLG8saSl7bCh0KTtjb25zdCB1PW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzLnNldCh1KSxyKDAsZSksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx7dXBkYXRlKGUpe2xldCByO3JldHVybiBzLnNldCh1KSwic3RyaW5nIj09dHlwZW9mIGU/KGwoMyplLmxlbmd0aCx0KSxyPWIuZW5jb2RlSW50byhlLHMuc3ViYXJyYXkodCkpLndyaXR0ZW4pOihsKGUuYnl0ZUxlbmd0aCx0KSxzLnNldChlLHQpLHI9ZS5ieXRlTGVuZ3RoKSxuKDAsdCxyKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHRoaXN9LGRpZ2VzdDooKT0+KHMuc2V0KHUpLGkobygwKSkpfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0Pj4+MH1jb25zdCB5PTJuKio2NG4tMW47ZnVuY3Rpb24gdih0KXtyZXR1cm4gdCZ5fWNvbnN0IGI9bmV3IFRleHRFbmNvZGVyLGQ9MCxnPTBuO2Z1bmN0aW9uIF8odCxlPWQpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksaChyKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9ZnVuY3Rpb24gaih0LGU9Zyl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSx2KG4oMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1yZXR1cm57aDMyOl8saDMyVG9TdHJpbmc6KHQsZT1kKT0+Xyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIiksaDMyUmF3Oih0LGU9ZCk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxoKHIoMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGUzMjoodD1kKT0+cCg0OCx0LG8saSx1LGgpLGg2NDpqLGg2NFRvU3RyaW5nOih0LGU9Zyk9PmoodCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKSxoNjRSYXc6KHQsZT1nKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHYobigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTY0Oih0PWcpPT5wKDg4LHQsYSxjLGYsdil9fSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoWnQpKS5pbnN0YW5jZSl9KCksaT1vKCksdT0wO2Zvcig7dTx0LnNpemU7KXtsZXQgZT10LnNsaWNlKHUsdStuKSxyPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtpLnVwZGF0ZShuZXcgVWludDhBcnJheShyKSksdSs9bn1yZXR1cm4gaS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKX1sZXQgY2hlY2tTbGljZXNIYXNoPWFzeW5jKHIsbixvKT0+e2lmKDA9PT1tdChyKSl7cmV0dXJue2Vycm9yOiJubyBmaWxlU2xpY2VIYXNocyJ9fWxldCBpPVtdO2ZvcihsZXQgdT0wO3U8ci5sZW5ndGg7dSsrKXtsZXQgYT1yW3VdLGM9dC5qb2luKG8sYCR7bn1fJHthLml9YCksZj0iIjthd2FpdCBoZShuZXcgQmxvYihbZS5yZWFkRmlsZVN5bmMoYyldKSkudGhlbigodD0+e2Y9dH0pKS5jYXRjaCgodD0+e2NvbnNvbGUubG9nKCJmc0lzRmlsZShfcGF0aEZpbGUpIixjLFl0KGMpKSxjb25zb2xlLmxvZyh0KX0pKSxhLmg9PT1mJiZpLnB1c2goYS5pKX1yZXR1cm57c2xrczppfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1NsaWNlc0hhc2gKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY2hlY2tTbGljZXNIYXNoCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHJlY3ZNZXNzYWdlKGUuZGF0YSkKICAgICAgICB9CiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK");function M(){let M=new N,i=function(s){try{let M=new Blob([s]),i=window.URL||window.webkitURL;return new Worker(i.createObjectURL(M))}catch(s){w(s)}}(s);if(!i)return w("invalid worker"),null;function I(){let s=function(){let s,M,i=new Promise((function(){s=arguments[0],M=arguments[1]}));return i.resolve=s,i.reject=M,i}(),I=function(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,M=[],i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=i.length;for(let w=0;w<s;w++)M[w]=i[0|Math.random()*I];return M.join("")}(),w={mode:"call",id:I,fun:"main",input:[...arguments]};return i.postMessage(w),M.once(I,(M=>{"success"===M.state?s.resolve(M.msg):s.reject(M.msg)})),s}function w(s){M.emit("error",s)}return i.onmessage=function(s){!function(s){let i=s,I=i.mode;"emit"!==I&&"return"!==I||("emit"===I&&M.emit(i.evName,i.msg),"return"===I&&M.emit(i.id,i))}(s.data)},i.onerror=w,i.onmessageerror=function(s){w(s.data)},function(){let s={mode:"init",type:"function",input:[...arguments]};i.postMessage(s)}([...arguments]),M.main=I,M.main=I,M.terminate=function(){i?(i.terminate(),i=void 0):w("worker has been terminated")},M}u=async function(){let s=[...arguments],i=M();return await i.main(...s).finally((()=>{i.terminate()}))}}();try{process.on("unhandledRejection",(s=>{console.log("outer:unhandledRejection",s)})),process.on("uncaughtException",(s=>{console.log("outer:uncaughtException",s)})),process.on("uncaughtExceptionMonitor",(s=>{console.log("outer:uncaughtExceptionMonitor",s)}))}catch(s){}return u}()}({get exports(){return I},set exports(s){I=s}});var w=I;let L;return L="undefined"!=typeof window&&void 0!==window.document?w:i,L}(L)}({get exports(){return rw},set exports(s){rw=s}});var pw=rw;function Tw(s,M){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var I=Object.getOwnPropertySymbols(s);M&&(I=I.filter((function(M){return Object.getOwnPropertyDescriptor(s,M).enumerable}))),i.push.apply(i,I)}return i}function aw(s){for(var M=1;M<arguments.length;M++){var i=null!=arguments[M]?arguments[M]:{};M%2?Tw(Object(i),!0).forEach((function(M){d(s,M,i[M])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):Tw(Object(i)).forEach((function(M){Object.defineProperty(s,M,Object.getOwnPropertyDescriptor(i,M))}))}return s}return function(){let L=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=rs(L,"port");wM(t)||(t=8080);let c=rs(L,"useInert");nM(c)||(c=!0);let d=rs(L,"pathStaticFiles");zs(d)||(d="dist");let l=rs(L,"apiName");zs(l)||(l="api");let n=rs(L,"pathUploadTemp");zs(n)||(n="./uploadTemp"),Ai(n,{fs:M})||Gi(n);let e=rs(L,"tokenType");zs(e)||(e="Bearer");let y=rs(L,"sizeSlice");wM(y)||(y=1048576);let D=rs(L,"verifyConn");eM(D)||(D=()=>!0);let C=rs(L,"corsOrigins",[]);dM(C)||(C=["*"]);let o=rs(L,"delayForSlice","");IM(o)||(o=100),o=iM(o);let m=null;m=rs(L,"serverHapi")?L.serverHapi:I.server({port:t,routes:{timeout:{server:!1,socket:!1},cors:{origin:C,credentials:!1}}});let Z=new Ss,N=function(s){for(var M=arguments.length,i=new Array(M>1?M-1:0),I=1;I<M;I++)i[I-1]=arguments[I];setTimeout((()=>{Z.emit(s,...i)}),1)};async function u(s){let M=as(),i=as();return i.then((s=>{M.resolve(s)})).catch((s=>{M.reject(s)})),N("upload",s,i),M}async function b(s){let M=as(),i=as();return i.then((s=>{M.resolve(s)})).catch((s=>{M.reject(s)})),N("download",s,i),M}function g(s,M){let I=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},w=new i.Readable;w._read=()=>{},w.push(M),w.push(null);let L=rs(I,"returnType",""),t=rs(I,"returnMsg",""),c=s.response(w).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",w.readableLength);return zs(L)&&c.header("Return-Type",L),zs(t)&&c.header("Return-Msg",t),c}function x(s,M){return zs(M)||(console.log("msg",M),console.log("msg is not an effective string, set msg=''"),M=""),g(s,pi({error:M}),{returnType:"error",returnMsg:M})}let X={path:`/${l}`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(s,M){let I=rs(s,"headers");I=Gs(I)?I:"";let w=rs(s,"query");w=Gs(w)?w:"";let L=rs(I,"authorization","");L=zs(L)?L:"";{let s=D({apiType:"main",authorization:L,headers:I,query:w});if(yM(s)&&(s=await s),!0!==s)return x(M,"permission denied")}N("handler",{api:"apiMain",headers:I,query:w});let t=await(()=>{let M=as(),I=[],w=new i.Writable({write(s,M,i){I.push(s),i()}});return w.on("finish",(()=>{})),s.payload.pipe(w),s.payload.on("end",(()=>{let s=Buffer.concat(I);I=[],M.resolve(s)})),s.payload.on("close",(()=>{})),s.payload.on("error",(s=>{N("error","receive payload err"),M.reject(s.message)})),M})(),c=Si(new Uint8Array(t)),d={},l="",n="";return await async function(s){let M=as(),i=as();i.then((i=>{s.output=i,delete s.input,M.resolve(s)})).catch((s=>{M.reject(s)}));{let M=rs(s,"func",""),I=rs(s,"input",null);N("execute",M,I,i)}return M}(c).then((s=>{d.success=s,l="success",n="need to parse"})).catch((s=>{d.error=s,l="error",n="need to parse"})),g(M,pi(d),{returnType:l,returnMsg:n})}},r={path:`/${l}ulctr`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(s,M){let i=rs(s,"headers");i=Gs(i)?i:"";let I=rs(s,"query");I=Gs(I)?I:"";let w=rs(i,"authorization","");w=zs(w)?w:"";{let s=D({apiType:"upload-controller",authorization:w,headers:i,query:I});if(yM(s)&&(s=await s),!0!==s)return x(M,"permission denied")}N("handler",{api:"apiUploadCheck",headers:i,query:I});let L=rs(s,"payload.mode","");if("check-total-hash"!==L&&"check-slices-hash"!==L&&"merge-slices-push"!==L&&"merge-slices-get"!==L)return x(M,`invalid mode[${L}] in payload`);let t=rs(s,"payload.fileHash","");if(!zs(t))return x(M,"invalid fileHash in payload");let c={},d="",l="";return await(async()=>{let M=null;if("check-total-hash"===L){let i=rs(s,"payload.filename",""),I=rs(s,"payload.fileSize","");if(M=await Xw(I,y,t,n),M.bAllHash){let s={filename:i,path:M.path},I=await u(s);M=aw(aw({},M),I)}}else if("check-slices-hash"===L){let i=rs(s,"payload.fileSliceHashs",[]);M=await pw(i,t,n)}else if("merge-slices-push"===L){let i=rs(s,"payload.chunkTotal","");M={queueId:bw(t,i,n)}}else if("merge-slices-get"===L){let i=rs(s,"payload.filename",""),I=rs(s,"payload.queueId",""),w=gw(I,n);if(M={state:w.state,msg:w.msg,queueId:I,filename:i,path:w.path},"success"===w.state){let s={filename:i,path:w.path},I=await u(s);M=aw(aw({},M),{},{msg:I})}}return M})().then((s=>{c.success=s,d="success",l="need to parse"})).catch((s=>{c.error=s,d="error",l="need to parse"})),g(M,pi(c),{returnType:d,returnMsg:l})}},p={path:`/${l}slc`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(i,I){let w=rs(i,"headers");w=Gs(w)?w:"";let L=rs(i,"query");L=Gs(L)?L:"";let t=rs(w,"authorization","");t=zs(t)?t:"";{let s=D({apiType:"upload-slice",authorization:t,headers:w,query:L});if(yM(s)&&(s=await s),!0!==s)return x(I,"permission denied")}N("handler",{api:"apiUploadSlice",headers:w,query:L});let c=rs(w,"chunk-index",""),d=rs(w,"chunk-total",""),l=rs(w,"package-id","");if(!IM(c))return x(I,"invalid chunkIndex in headers");if(c=iM(c),!IM(d))return x(I,"invalid chunkTotal in headers");if(d=iM(d),!zs(l))return x(I,"invalid packageId in headers");let e=s.join(n,`${l}_${c}`),y=M.createWriteStream(e),C={},m="",Z="";return await(()=>{let s=as();return i.payload.pipe(y),i.payload.on("end",(()=>{setTimeout((()=>{s.resolve(`chunk[${c}/${d}] of packageId[${l}] done`)}),o)})),i.payload.on("error",(M=>{N("error",`receive chunk[${c}/${d}] of packageId[${l}] err`),s.reject(`apiUploadSlice receive error: ${M.message}`)})),s})().then((s=>{C.success=s,m="success",Z="need to parse"})).catch((s=>{C.error=s,m="error",Z="need to parse",N("error",s)})),g(I,pi(C),{returnType:m,returnMsg:Z})}},T={path:`/${l}dwgfn`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(s,M){let i=rs(s,"headers");i=Gs(i)?i:"";let I=rs(s,"query");I=Gs(I)?I:"";let w=rs(i,"authorization","");w=zs(w)?w:"";{let s=D({apiType:"download-get-filename",authorization:w,headers:i,query:I});if(yM(s)&&(s=await s),!0!==s)return x(M,"permission denied")}N("handler",{api:"apiDownloadGetFilename",headers:i,query:I});let L=rs(s,"payload.fileId","");if(!zs(L))return x(M,"invalid fileId in payload");let t={fileId:L},c={},d="",l="";await b(t).then((s=>{c.success=s,d="success",l="need to parse"})).catch((s=>{c.error=s,d="error",l="need to parse"}));let n=rs(c,"success"),e=rs(n,"streamRead");try{e.destroy()}catch(s){}let y=rs(n,"filename");return zs(y)?(c={success:{filename:y}},g(M,pi(c),{returnType:d,returnMsg:l})):x(M,"invalid filename")}},a={path:`/${l}dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1}},handler:async function(s,M){let i=rs(s,"headers");i=Gs(i)?i:"";let I=rs(s,"query");I=Gs(I)?I:"";let w=rs(I,"token","");w=zs(w)?w:"";let L="";zs(w)&&(L=`${e} ${w}`);{let s=D({apiType:"download-get-file",authorization:L,headers:i,query:I});if(yM(s)&&(s=await s),!0!==s)return x(M,"permission denied")}N("handler",{api:"apiDownloadGetFilename",headers:i,query:I});let t=rs(I,"fileId","");if(t=zs(t)?t:"",!zs(t))return x(M,"invalid fileId in query");let c={fileId:t},d={};if(await b(c).then((s=>{d.success=s})).catch((s=>{d.error=s})),XM(d,"error"))return x(M,"can not get file from fileId");let l=rs(d,"success"),n=rs(l,"streamRead"),y=rs(l,"fileSize");if(!Ts(y)){try{n.destroy()}catch(s){}return x(M,"invalid fileSize")}let C=rs(l,"fileType");if(!zs(C)){try{n.destroy()}catch(s){}return x(M,"invalid fileType")}return C=DM(C),M.response(n).type(C).header("Content-Length",y)}},Y={path:`/${l}dw`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(s,M){let i=rs(s,"headers");i=Gs(i)?i:"";let I=rs(s,"query");I=Gs(I)?I:"";let w=rs(i,"authorization","");w=zs(w)?w:"";{let s=D({apiType:"download",authorization:w,headers:i,query:I});if(yM(s)&&(s=await s),!0!==s)return x(M,"permission denied")}N("handler",{api:"apiDownload",headers:i,query:I});let L=rs(s,"payload.fileId","");if(!zs(L))return x(M,"invalid fileId in payload");let t={fileId:L},c={};if(await b(t).then((s=>{c.success=s})).catch((s=>{c.error=s})),XM(c,"error"))return x(M,"can not get file from fileId");let d=rs(c,"success"),l=rs(d,"streamRead"),n=rs(d,"filename");if(!zs(n)){try{l.destroy()}catch(s){}return x(M,"invalid filename")}n=xM(n);let e=rs(d,"fileSize");if(!Ts(e)){try{l.destroy()}catch(s){}return x(M,"invalid fileSize")}let y=rs(d,"fileType");if(!zs(y)){try{l.destroy()}catch(s){}return x(M,"invalid fileType")}return y=DM(y),M.response(l).type(y).header("Content-Disposition",`attachment; filename="${n}"`).header("Content-Length",e)}};return rs(L,"serverHapi")?m.route([X,r,p,T,a,Y]):async function(){c&&await m.register(w);let s=[];if(c){let M={method:"GET",path:"/{file*}",handler:{directory:{path:`${d}/`}}};s=[...s,M]}s=[...s,X,r,p,T,a,Y],m.route(s),await m.start(),console.log(`Server running at: ${m.info.uri}`)}(),Z.stop=()=>{m.stop()},Z}}));
|
|
7
7
|
//# sourceMappingURL=w-converhp-server.umd.js.map
|