w-web-api 1.0.86 → 1.1.1
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/dist/index.tmp +1 -1
- package/dist/js/{chunk-vendors-legacy.91c000b8.js → chunk-vendors-legacy.196e9e9b.js} +1 -1
- package/dist/js/{chunk-vendors.91c000b8.js → chunk-vendors.196e9e9b.js} +1 -1
- package/dist/w-web-api.umd.js +2 -2
- package/dist/w-web-api.umd.js.map +1 -1
- package/docs/WWebApi.html +1 -1
- package/docs/index.html +1 -1
- package/docs/server_WWebApi.mjs.html +1 -1
- package/docs/src_components_Common_CheckYesNo.vue.html +1 -1
- package/package.json +12 -12
- package/tableTags-web-api.json +1 -1
package/dist/w-web-api.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* w-web-api v1.
|
|
2
|
+
* w-web-api v1.1.1
|
|
3
3
|
* (c) 2018-2021 yuda-lyu(semisphere)
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("http"),require("worker_threads"),require("url"),require("readline"),require("pino")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","http","worker_threads","url","readline","pino"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-api"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.http,e.require$$0$1,e.url,e.readline,e.pino)}(this,function(e,t,n,s,i,r,o,a,l,c){"use strict";var M="undefined"!=typeof document?document.currentScript:null,w=Array.isArray,u="object"==typeof global&&global&&global.Object===Object&&global,d="object"==typeof self&&self&&self.Object===Object&&self,L=u||d||Function("return this")(),y=L.Symbol,I=Object.prototype,D=I.hasOwnProperty,p=I.toString,m=y?y.toStringTag:void 0;var g=Object.prototype.toString;var f=y?y.toStringTag:void 0;function C(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":f&&f in Object(e)?function(e){var t=D.call(e,m),n=e[m];try{e[m]=void 0;var s=!0}catch(e){}var i=p.call(e);return s&&(t?e[m]=n:delete e[m]),i}(e):function(e){return g.call(e)}(e)}function h(e){return null!=e&&"object"==typeof e}function N(e){return"symbol"==typeof e||h(e)&&"[object Symbol]"==C(e)}var b=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,x=/^\w*$/;function T(e,t){if(w(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!N(e))||(x.test(e)||!b.test(e)||null!=t&&e in Object(t))}function S(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Z(e){if(!S(e))return!1;var t=C(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var A,X=L["__core-js_shared__"],E=(A=/[^.]+$/.exec(X&&X.keys&&X.keys.IE_PROTO||""))?"Symbol(src)_1."+A:"";var Y=Function.prototype.toString;function j(e){if(null!=e){try{return Y.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var z=/^\[object .+?Constructor\]$/,v=Function.prototype,G=Object.prototype,K=v.toString,W=G.hasOwnProperty,U=RegExp("^"+K.call(W).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Q(e){return!(!S(e)||(t=e,E&&E in t))&&(Z(e)?U:z).test(j(e));var t}function V(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return Q(n)?n:void 0}var k=V(Object,"create");var H=Object.prototype.hasOwnProperty;var J=Object.prototype.hasOwnProperty;function R(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}function P(e,t){return e===t||e!=e&&t!=t}function O(e,t){for(var n=e.length;n--;)if(P(e[n][0],t))return n;return-1}R.prototype.clear=function(){this.__data__=k?k(null):{},this.size=0},R.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},R.prototype.get=function(e){var t=this.__data__;if(k){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return H.call(t,e)?t[e]:void 0},R.prototype.has=function(e){var t=this.__data__;return k?void 0!==t[e]:J.call(t,e)},R.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=k&&void 0===t?"__lodash_hash_undefined__":t,this};var B=Array.prototype.splice;function F(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}F.prototype.clear=function(){this.__data__=[],this.size=0},F.prototype.delete=function(e){var t=this.__data__,n=O(t,e);return!(n<0)&&(n==t.length-1?t.pop():B.call(t,n,1),--this.size,!0)},F.prototype.get=function(e){var t=this.__data__,n=O(t,e);return n<0?void 0:t[n][1]},F.prototype.has=function(e){return O(this.__data__,e)>-1},F.prototype.set=function(e,t){var n=this.__data__,s=O(n,e);return s<0?(++this.size,n.push([e,t])):n[s][1]=t,this};var $=V(L,"Map");function _(e,t){var n,s,i=e.__data__;return("string"==(s=typeof(n=t))||"number"==s||"symbol"==s||"boolean"==s?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function q(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}q.prototype.clear=function(){this.size=0,this.__data__={hash:new R,map:new($||F),string:new R}},q.prototype.delete=function(e){var t=_(this,e).delete(e);return this.size-=t?1:0,t},q.prototype.get=function(e){return _(this,e).get(e)},q.prototype.has=function(e){return _(this,e).has(e)},q.prototype.set=function(e,t){var n=_(this,e),s=n.size;return n.set(e,t),this.size+=n.size==s?0:1,this};function ee(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var s=arguments,i=t?t.apply(this,s):s[0],r=n.cache;if(r.has(i))return r.get(i);var o=e.apply(this,s);return n.cache=r.set(i,o)||r,o};return n.cache=new(ee.Cache||q),n}ee.Cache=q;var te,ne,se,ie=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,re=/\\(\\)?/g,oe=(te=function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ie,function(e,n,s,i){t.push(s?i.replace(re,"$1"):n||e)}),t},ne=ee(te,function(e){return 500===se.size&&se.clear(),e}),se=ne.cache,ne),ae=oe;function le(e,t){for(var n=-1,s=null==e?0:e.length,i=Array(s);++n<s;)i[n]=t(e[n],n,e);return i}var ce=y?y.prototype:void 0,Me=ce?ce.toString:void 0;function we(e){if("string"==typeof e)return e;if(w(e))return le(e,we)+"";if(N(e))return Me?Me.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function ue(e){return null==e?"":we(e)}function de(e,t){return w(e)?e:T(e,t)?[e]:ae(ue(e))}function Le(e){if("string"==typeof e||N(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function ye(e,t){for(var n=0,s=(t=de(t,e)).length;null!=e&&n<s;)e=e[Le(t[n++])];return n&&n==s?e:void 0}function Ie(e,t,n){var s=null==e?void 0:ye(e,t);return void 0===s?n:s}function De(e,t){for(var n=-1,s=null==e?0:e.length;++n<s&&!1!==t(e[n],n,e););return e}var pe,me=function(e,t,n){for(var s=-1,i=Object(e),r=n(e),o=r.length;o--;){var a=r[pe?o:++s];if(!1===t(i[a],a,i))break}return e};function ge(e){return h(e)&&"[object Arguments]"==C(e)}var fe=Object.prototype,Ce=fe.hasOwnProperty,he=fe.propertyIsEnumerable,Ne=ge(function(){return arguments}())?ge:function(e){return h(e)&&Ce.call(e,"callee")&&!he.call(e,"callee")},be=Ne;var xe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Te=xe&&"object"==typeof module&&module&&!module.nodeType&&module,Se=Te&&Te.exports===xe?L.Buffer:void 0,Ze=(Se?Se.isBuffer:void 0)||function(){return!1},Ae=/^(?:0|[1-9]\d*)$/;function Xe(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&Ae.test(e))&&e>-1&&e%1==0&&e<t}function Ee(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Ye={};function je(e){return function(t){return e(t)}}Ye["[object Float32Array]"]=Ye["[object Float64Array]"]=Ye["[object Int8Array]"]=Ye["[object Int16Array]"]=Ye["[object Int32Array]"]=Ye["[object Uint8Array]"]=Ye["[object Uint8ClampedArray]"]=Ye["[object Uint16Array]"]=Ye["[object Uint32Array]"]=!0,Ye["[object Arguments]"]=Ye["[object Array]"]=Ye["[object ArrayBuffer]"]=Ye["[object Boolean]"]=Ye["[object DataView]"]=Ye["[object Date]"]=Ye["[object Error]"]=Ye["[object Function]"]=Ye["[object Map]"]=Ye["[object Number]"]=Ye["[object Object]"]=Ye["[object RegExp]"]=Ye["[object Set]"]=Ye["[object String]"]=Ye["[object WeakMap]"]=!1;var ze="object"==typeof exports&&exports&&!exports.nodeType&&exports,ve=ze&&"object"==typeof module&&module&&!module.nodeType&&module,Ge=ve&&ve.exports===ze&&u.process,Ke=function(){try{var e=ve&&ve.require&&ve.require("util").types;return e||Ge&&Ge.binding&&Ge.binding("util")}catch(e){}}(),We=Ke&&Ke.isTypedArray,Ue=We?je(We):function(e){return h(e)&&Ee(e.length)&&!!Ye[C(e)]},Qe=Object.prototype.hasOwnProperty;function Ve(e,t){var n=w(e),s=!n&&be(e),i=!n&&!s&&Ze(e),r=!n&&!s&&!i&&Ue(e),o=n||s||i||r,a=o?function(e,t){for(var n=-1,s=Array(e);++n<e;)s[n]=t(n);return s}(e.length,String):[],l=a.length;for(var c in e)!t&&!Qe.call(e,c)||o&&("length"==c||i&&("offset"==c||"parent"==c)||r&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Xe(c,l))||a.push(c);return a}var ke=Object.prototype;function He(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||ke)}function Je(e,t){return function(n){return e(t(n))}}var Re=Je(Object.keys,Object),Pe=Object.prototype.hasOwnProperty;function Oe(e){if(!He(e))return Re(e);var t=[];for(var n in Object(e))Pe.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Be(e){return null!=e&&Ee(e.length)&&!Z(e)}function Fe(e){return Be(e)?Ve(e):Oe(e)}var $e=function(e,t){return function(n,s){if(null==n)return n;if(!Be(n))return e(n,s);for(var i=n.length,r=t?i:-1,o=Object(n);(t?r--:++r<i)&&!1!==s(o[r],r,o););return n}}(function(e,t){return e&&me(e,t,Fe)}),_e=$e;function qe(e){return e}function et(e,t){var n;return(w(e)?De:_e)(e,"function"==typeof(n=t)?n:qe)}function tt(e){var t=this.__data__=new F(e);this.size=t.size}tt.prototype.clear=function(){this.__data__=new F,this.size=0},tt.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},tt.prototype.get=function(e){return this.__data__.get(e)},tt.prototype.has=function(e){return this.__data__.has(e)},tt.prototype.set=function(e,t){var n=this.__data__;if(n instanceof F){var s=n.__data__;if(!$||s.length<199)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new q(s)}return n.set(e,t),this.size=n.size,this};function nt(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new q;++t<n;)this.add(e[t])}function st(e,t){for(var n=-1,s=null==e?0:e.length;++n<s;)if(t(e[n],n,e))return!0;return!1}function it(e,t){return e.has(t)}nt.prototype.add=nt.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},nt.prototype.has=function(e){return this.__data__.has(e)};function rt(e,t,n,s,i,r){var o=1&n,a=e.length,l=t.length;if(a!=l&&!(o&&l>a))return!1;var c=r.get(e),M=r.get(t);if(c&&M)return c==t&&M==e;var w=-1,u=!0,d=2&n?new nt:void 0;for(r.set(e,t),r.set(t,e);++w<a;){var L=e[w],y=t[w];if(s)var I=o?s(y,L,w,t,e,r):s(L,y,w,e,t,r);if(void 0!==I){if(I)continue;u=!1;break}if(d){if(!st(t,function(e,t){if(!it(d,t)&&(L===e||i(L,e,n,s,r)))return d.push(t)})){u=!1;break}}else if(L!==y&&!i(L,y,n,s,r)){u=!1;break}}return r.delete(e),r.delete(t),u}var ot=L.Uint8Array;function at(e){var t=-1,n=Array(e.size);return e.forEach(function(e,s){n[++t]=[s,e]}),n}function lt(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var ct=y?y.prototype:void 0,Mt=ct?ct.valueOf:void 0;function wt(e,t){for(var n=-1,s=t.length,i=e.length;++n<s;)e[i+n]=t[n];return e}function ut(e,t,n){var s=t(e);return w(e)?s:wt(s,n(e))}function dt(e,t){for(var n=-1,s=null==e?0:e.length,i=0,r=[];++n<s;){var o=e[n];t(o,n,e)&&(r[i++]=o)}return r}function Lt(){return[]}var yt=Object.prototype.propertyIsEnumerable,It=Object.getOwnPropertySymbols,Dt=It?function(e){return null==e?[]:(e=Object(e),dt(It(e),function(t){return yt.call(e,t)}))}:Lt;function pt(e){return ut(e,Fe,Dt)}var mt=Object.prototype.hasOwnProperty;var gt=V(L,"DataView"),ft=V(L,"Promise"),Ct=V(L,"Set"),ht=V(L,"WeakMap"),Nt="[object Map]",bt="[object Promise]",xt="[object Set]",Tt="[object WeakMap]",St="[object DataView]",Zt=j(gt),At=j($),Xt=j(ft),Et=j(Ct),Yt=j(ht),jt=C;(gt&&jt(new gt(new ArrayBuffer(1)))!=St||$&&jt(new $)!=Nt||ft&&jt(ft.resolve())!=bt||Ct&&jt(new Ct)!=xt||ht&&jt(new ht)!=Tt)&&(jt=function(e){var t=C(e),n="[object Object]"==t?e.constructor:void 0,s=n?j(n):"";if(s)switch(s){case Zt:return St;case At:return Nt;case Xt:return bt;case Et:return xt;case Yt:return Tt}return t});var zt=jt,vt="[object Arguments]",Gt="[object Array]",Kt="[object Object]",Wt=Object.prototype.hasOwnProperty;function Ut(e,t,n,s,i,r){var o=w(e),a=w(t),l=o?Gt:zt(e),c=a?Gt:zt(t),M=(l=l==vt?Kt:l)==Kt,u=(c=c==vt?Kt:c)==Kt,d=l==c;if(d&&Ze(e)){if(!Ze(t))return!1;o=!0,M=!1}if(d&&!M)return r||(r=new tt),o||Ue(e)?rt(e,t,n,s,i,r):function(e,t,n,s,i,r,o){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!r(new ot(e),new ot(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return P(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=at;case"[object Set]":var l=1&s;if(a||(a=lt),e.size!=t.size&&!l)return!1;var c=o.get(e);if(c)return c==t;s|=2,o.set(e,t);var M=rt(a(e),a(t),s,i,r,o);return o.delete(e),M;case"[object Symbol]":if(Mt)return Mt.call(e)==Mt.call(t)}return!1}(e,t,l,n,s,i,r);if(!(1&n)){var L=M&&Wt.call(e,"__wrapped__"),y=u&&Wt.call(t,"__wrapped__");if(L||y){var I=L?e.value():e,D=y?t.value():t;return r||(r=new tt),i(I,D,n,s,r)}}return!!d&&(r||(r=new tt),function(e,t,n,s,i,r){var o=1&n,a=pt(e),l=a.length;if(l!=pt(t).length&&!o)return!1;for(var c=l;c--;){var M=a[c];if(!(o?M in t:mt.call(t,M)))return!1}var w=r.get(e),u=r.get(t);if(w&&u)return w==t&&u==e;var d=!0;r.set(e,t),r.set(t,e);for(var L=o;++c<l;){var y=e[M=a[c]],I=t[M];if(s)var D=o?s(I,y,M,t,e,r):s(y,I,M,e,t,r);if(!(void 0===D?y===I||i(y,I,n,s,r):D)){d=!1;break}L||(L="constructor"==M)}if(d&&!L){var p=e.constructor,m=t.constructor;p==m||!("constructor"in e)||!("constructor"in t)||"function"==typeof p&&p instanceof p&&"function"==typeof m&&m instanceof m||(d=!1)}return r.delete(e),r.delete(t),d}(e,t,n,s,i,r))}function Qt(e,t,n,s,i){return e===t||(null==e||null==t||!h(e)&&!h(t)?e!=e&&t!=t:Ut(e,t,n,s,Qt,i))}function Vt(e){return e==e&&!S(e)}function kt(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}function Ht(e){var t=function(e){for(var t=Fe(e),n=t.length;n--;){var s=t[n],i=e[s];t[n]=[s,i,Vt(i)]}return t}(e);return 1==t.length&&t[0][2]?kt(t[0][0],t[0][1]):function(n){return n===e||function(e,t,n,s){var i=n.length,r=i,o=!s;if(null==e)return!r;for(e=Object(e);i--;){var a=n[i];if(o&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++i<r;){var l=(a=n[i])[0],c=e[l],M=a[1];if(o&&a[2]){if(void 0===c&&!(l in e))return!1}else{var w=new tt;if(s)var u=s(c,M,l,e,t,w);if(!(void 0===u?Qt(M,c,3,s,w):u))return!1}}return!0}(n,e,t)}}function Jt(e,t){return null!=e&&t in Object(e)}function Rt(e,t){return null!=e&&function(e,t,n){for(var s=-1,i=(t=de(t,e)).length,r=!1;++s<i;){var o=Le(t[s]);if(!(r=null!=e&&n(e,o)))break;e=e[o]}return r||++s!=i?r:!!(i=null==e?0:e.length)&&Ee(i)&&Xe(o,i)&&(w(e)||be(e))}(e,t,Jt)}function Pt(e){return function(t){return null==t?void 0:t[e]}}function Ot(e){return T(e)?Pt(Le(e)):function(e){return function(t){return ye(t,e)}}(e)}function Bt(e){return"function"==typeof e?e:null==e?qe:"object"==typeof e?w(e)?function(e,t){return T(e)&&Vt(t)?kt(Le(e),t):function(n){var s=Ie(n,e);return void 0===s&&s===t?Rt(n,e):Qt(t,s,3)}}(e[0],e[1]):Ht(e):Ot(e)}function Ft(e,t){var n=-1,s=Be(e)?Array(e.length):[];return _e(e,function(e,i,r){s[++n]=t(e,i,r)}),s}function $t(e,t){return(w(e)?le:Ft)(e,Bt(t))}function _t(e){return!0===(t=e)||!1===t||h(t)&&"[object Boolean]"==C(t);var t}function qt(e){return"[object String]"===Object.prototype.toString.call(e)}function en(e){return!(!qt(e)||""===e)}function tn(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!en(e))return s("invalid v");let i={};try{i=JSON.parse(e)}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}function nn(e){return"[object Object]"===Object.prototype.toString.call(e)}function sn(e){if(nn(e)){for(let t in e)return!0;return!1}return!1}function rn(e){return"[object Array]"===Object.prototype.toString.call(e)}var on=/\s/;var an=/^\s+/;function ln(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&on.test(e.charAt(t)););return t}(e)+1).replace(an,""):e}var cn=/^[-+]0x[0-9a-f]+$/i,Mn=/^0b[01]+$/i,wn=/^0o[0-7]+$/i,un=parseInt;function dn(e){if("number"==typeof e)return e;if(N(e))return NaN;if(S(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=S(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=ln(e);var n=Mn.test(e);return n||wn.test(e)?un(e.slice(2),n?2:8):cn.test(e)?NaN:+e}var Ln=1/0;function yn(e){return e?(e=dn(e))===Ln||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function In(e){var t=yn(e),n=t%1;return t==t?n?t-n:t:0}function Dn(e){return e!=e}function pn(e){let t=!1;if(en(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(Dn(e))return!1;t=!0}return t}function mn(e){if(!pn(e))return 0;return yn(e)}function gn(e,t={}){let n=Ie(t,"useLimitSafe",null);return _t(n)||(n=!1),!!pn(e)&&(e=mn(e),n?Number.isSafeInteger(e):"number"==typeof(s=e)&&s==In(s));var s}var fn=L.isFinite,Cn=Math.min;var hn=function(e){var t=Math[e];return function(e,n){if(e=dn(e),(n=null==n?0:Cn(In(n),292))&&fn(e)){var s=(ue(e)+"e").split("e");return+((s=(ue(t(s[0]+"e"+(+s[1]+n)))+"e").split("e"))[0]+"e"+(+s[1]-n))}return t(e)}}("round"),Nn=hn;function bn(e,t={}){let n=Ie(t,"useClampSafe",null);_t(n)||(n=!1);let s=Ie(t,"useLimitSafe",null);_t(s)||(s=!1);let i=Ie(t,"returnWithStateAndMsg",null);_t(i)||(i=!1);let r=e=>i?{state:"success",msg:e}:e,o=e=>{if(i)return{state:"error",msg:e};throw new Error(e)};if(!pn(e))return r(0);let a=null;try{e=mn(e),a=Nn(e),n&&(a>Number.MAX_SAFE_INTEGER?a=Number.MAX_SAFE_INTEGER:a<Number.MIN_SAFE_INTEGER&&(a=Number.MIN_SAFE_INTEGER))}catch(e){return o(e.toString())}return s&&!Number.isSafeInteger(Number(a))?o(`v[${e}] is not a safe integer`):("0"===String(a)&&(a=0),r(a))}function xn(e,t={}){if(!gn(e,t))return!1;return bn(e)>0}var Tn=Je(Object.getPrototypeOf,Object),Sn=Function.prototype,Zn=Object.prototype,An=Sn.toString,Xn=Zn.hasOwnProperty,En=An.call(Object);function Yn(e){if(!h(e)||"[object Object]"!=C(e))return!1;var t=Tn(e);if(null===t)return!0;var n=Xn.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&An.call(n)==En}function jn(e){if(!h(e))return!1;var t=C(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Yn(e)}function zn(e){return jn(e)}function vn(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function Gn(e){let t,n=Object.prototype.toString.call(e);if(t="[object Promise]"===n,t)return!0;if("[object Function]"!==n)return!1;try{t="function"!=typeof e.subscribe&&"function"==typeof e.then}catch(e){}return t}function Kn(e,t={}){if(!gn(e,t))return!1;return bn(e)>=0}function Wn(e,t){return en(e)&&Kn(t)?0===(t=bn(t))?"":e.substring(0,t):""}function Un(e,t){if(!en(e))return"";if(!Kn(t))return"";if(0===(t=bn(t)))return"";let n=e.length-t;return n<0&&(n=0),e.substring(n,n+t)}function Qn(e,t){return en(e)&&Kn(t)?0===(t=bn(t))?e:Un(e,e.length-t):""}function Vn(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}let kn=function(e){if(!vn(e))throw new Error("fn is not a function");return function(){let t=Vn(),n=null,s=null;try{n=e.apply(this,arguments)}catch(e){s=e}return null!==s?t.resolve({state:"error",msg:s}):Gn(n)?n.then(e=>{t.resolve({state:"success",msg:e})}).catch(e=>{"cancelled"===Ie(e,"reason")?t.resolve({state:"cancelled",msg:""}):t.resolve({state:"error",msg:e})}):t.resolve({state:"success",msg:n}),t}};var Hn="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Jn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Rn(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){if(this instanceof e){var n=[null];return n.push.apply(n,arguments),new(Function.bind.apply(t,n))}return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}),n}var Pn={exports:{}};var On,Bn={exports:{}},Fn=Rn(Object.freeze({__proto__:null,default:{}}));function $n(){return On||(On=1,function(e){var t;e.exports=(t=t||function(e,t){var n;if("undefined"!=typeof window&&window.crypto&&(n=window.crypto),"undefined"!=typeof self&&self.crypto&&(n=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!=typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&void 0!==Hn&&Hn.crypto&&(n=Hn.crypto),!n)try{n=Fn}catch(e){}var s=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},i=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),r={},o=r.lib={},a=o.Base={extend:function(e){var t=i(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},l=o.WordArray=a.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||M).stringify(this)},concat:function(e){var t=this.words,n=e.words,s=this.sigBytes,i=e.sigBytes;if(this.clamp(),s%4)for(var r=0;r<i;r++){var o=n[r>>>2]>>>24-r%4*8&255;t[s+r>>>2]|=o<<24-(s+r)%4*8}else for(var a=0;a<i;a+=4)t[s+a>>>2]=n[a>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=a.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n<e;n+=4)t.push(s());return new l.init(t,e)}}),c=r.enc={},M=c.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],i=0;i<n;i++){var r=t[i>>>2]>>>24-i%4*8&255;s.push((r>>>4).toString(16)),s.push((15&r).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s+=2)n[s>>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new l.init(n,t/2)}},w=c.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],i=0;i<n;i++){var r=t[i>>>2]>>>24-i%4*8&255;s.push(String.fromCharCode(r))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s++)n[s>>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new l.init(n,t)}},u=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(w.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return w.parse(unescape(encodeURIComponent(e)))}},d=o.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=u.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n,s=this._data,i=s.words,r=s.sigBytes,o=this.blockSize,a=r/(4*o),c=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,M=e.min(4*c,r);if(c){for(var w=0;w<c;w+=o)this._doProcessBlock(i,w);n=i.splice(0,c),s.sigBytes-=M}return new l.init(n,M)},clone:function(){var e=a.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});o.Hasher=d.extend({cfg:a.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){d.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new L.HMAC.init(e,n).finalize(t)}}});var L=r.algo={};return r}(Math),t)}(Bn)),Bn.exports}!function(e){e.exports=$n().enc.Utf8}(Pn);var _n=Jn(Pn.exports),qn={exports:{}};!function(e){var t;e.exports=(t=$n(),function(){var e=t,n=e.lib.WordArray;function s(e,t,s){for(var i=[],r=0,o=0;o<t;o++)if(o%4){var a=s[e.charCodeAt(o-1)]<<o%4*2|s[e.charCodeAt(o)]>>>6-o%4*2;i[r>>>2]|=a<<24-r%4*8,r++}return n.create(i,r)}e.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,s=this._map;e.clamp();for(var i=[],r=0;r<n;r+=3)for(var o=(t[r>>>2]>>>24-r%4*8&255)<<16|(t[r+1>>>2]>>>24-(r+1)%4*8&255)<<8|t[r+2>>>2]>>>24-(r+2)%4*8&255,a=0;a<4&&r+.75*a<n;a++)i.push(s.charAt(o>>>6*(3-a)&63));var l=s.charAt(64);if(l)for(;i.length%4;)i.push(l);return i.join("")},parse:function(e){var t=e.length,n=this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var r=0;r<n.length;r++)i[n.charCodeAt(r)]=r}var o=n.charAt(64);if(o){var a=e.indexOf(o);-1!==a&&(t=a)}return s(e,t,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(qn);var es=Jn(qn.exports);function ts(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!en(e))return s("invalid b64");let i="";try{i=es.parse(e).toString(_n)}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}function ns(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function ss(e){if(nn(e)){for(let t in e)return!1;return!0}return!1}function is(e){return!!rn(e)&&0===e.length}function rs(e){return!!ns(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!ss(e)||(!!function(e){return!(!qt(e)||""!==e)}(e)||(!!is(e)||!!Dn(e)))))}function os(e){return!!rn(e)&&(0!==e.length&&(1!==e.length||!rs(e[0])))}function as(e,t,n=""){if(!os(t))return{};let s={};return et(t,function(t){s[t]=Ie(e,t,n)}),s}function ls(e,t={}){let n=Ie(t,"fs"),s=!1;try{n.statSync(e),s=!0}catch{s=!1}return s}function cs(e,t={}){let n=Ie(t,"fs");if(!ls(e,{fs:n}))return!1;let s=n.lstatSync(e);return!s.isFile()&&!s.isSymbolicLink()}function Ms(e){return cs(e,{fs:t})}function ws(e,t={}){let n=Ie(t,"fs");return!!ls(e,{fs:n})&&(!n.lstatSync(e).isDirectory()&&!n.lstatSync(e).isSymbolicLink())}function us(e){return ws(e,{fs:t})}function ds(e,t,n){if(!en(e))return"";if(!en(t))return"";if(!qt(n))return"";return String(e).replaceAll(t,n)}var Ls={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,n=36e5,s="millisecond",i="second",r="minute",o="hour",a="day",l="week",c="month",M="quarter",w="year",u="date",d="Invalid Date",L=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|YYYY|YY|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,I={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(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},D=function(e,t,n){var s=String(e);return!s||s.length>=t?e:""+Array(t+1-s.length).join(n)+e},p={s:D,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),s=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+D(s,2,"0")+":"+D(i,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var s=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(s,c),r=n-i<0,o=t.clone().add(s+(r?-1:1),c);return+(-(s+(n-i)/(r?i-o:o-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:c,y:w,w:l,d:a,D:u,h:o,m:r,s:i,ms:s,Q:M}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},m="en",g={};g[m]=I;var f="$isDayjsObject",C=function(e){return e instanceof x||!(!e||!e[f])},h=function e(t,n,s){var i;if(!t)return m;if("string"==typeof t){var r=t.toLowerCase();g[r]&&(i=r),n&&(g[r]=n,i=r);var o=t.split("-");if(!i&&o.length>1)return e(o[0])}else{var a=t.name;g[a]=t,i=a}return!s&&i&&(m=i),i||!s&&m},N=function(e,t){if(C(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new x(n)},b=p;b.l=h,b.i=C,b.w=function(e,t){return N(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var x=function(){function I(e){this.$L=h(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[f]=!0}var D=I.prototype;return D.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var s=t.match(L);if(s){var i=s[2]-1||0,r=(s[7]||"0").substring(0,3);return n?new Date(Date.UTC(s[1],i,s[3]||1,s[4]||0,s[5]||0,s[6]||0,r)):new Date(s[1],i,s[3]||1,s[4]||0,s[5]||0,s[6]||0,r)}}return new Date(t)}(e),this.init()},D.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},D.$utils=function(){return b},D.isValid=function(){return!(this.$d.toString()===d)},D.isSame=function(e,t){var n=N(e);return this.startOf(t)<=n&&n<=this.endOf(t)},D.isAfter=function(e,t){return N(e)<this.startOf(t)},D.isBefore=function(e,t){return this.endOf(t)<N(e)},D.$g=function(e,t,n){return b.u(e)?this[t]:this.set(n,e)},D.unix=function(){return Math.floor(this.valueOf()/1e3)},D.valueOf=function(){return this.$d.getTime()},D.startOf=function(e,t){var n=this,s=!!b.u(t)||t,M=b.p(e),d=function(e,t){var i=b.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return s?i:i.endOf(a)},L=function(e,t){return b.w(n.toDate()[e].apply(n.toDate("s"),(s?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},y=this.$W,I=this.$M,D=this.$D,p="set"+(this.$u?"UTC":"");switch(M){case w:return s?d(1,0):d(31,11);case c:return s?d(1,I):d(0,I+1);case l:var m=this.$locale().weekStart||0,g=(y<m?y+7:y)-m;return d(s?D-g:D+(6-g),I);case a:case u:return L(p+"Hours",0);case o:return L(p+"Minutes",1);case r:return L(p+"Seconds",2);case i:return L(p+"Milliseconds",3);default:return this.clone()}},D.endOf=function(e){return this.startOf(e,!1)},D.$set=function(e,t){var n,l=b.p(e),M="set"+(this.$u?"UTC":""),d=(n={},n[a]=M+"Date",n[u]=M+"Date",n[c]=M+"Month",n[w]=M+"FullYear",n[o]=M+"Hours",n[r]=M+"Minutes",n[i]=M+"Seconds",n[s]=M+"Milliseconds",n)[l],L=l===a?this.$D+(t-this.$W):t;if(l===c||l===w){var y=this.clone().set(u,1);y.$d[d](L),y.init(),this.$d=y.set(u,Math.min(this.$D,y.daysInMonth())).$d}else d&&this.$d[d](L);return this.init(),this},D.set=function(e,t){return this.clone().$set(e,t)},D.get=function(e){return this[b.p(e)]()},D.add=function(s,M){var u,d=this;s=Number(s);var L=b.p(M),y=function(e){var t=N(d);return b.w(t.date(t.date()+Math.round(e*s)),d)};if(L===c)return this.set(c,this.$M+s);if(L===w)return this.set(w,this.$y+s);if(L===a)return y(1);if(L===l)return y(7);var I=(u={},u[r]=t,u[o]=n,u[i]=e,u)[L]||1,D=this.$d.getTime()+s*I;return b.w(D,this)},D.subtract=function(e,t){return this.add(-1*e,t)},D.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||d;var s=e||"YYYY-MM-DDTHH:mm:ssZ",i=b.z(this),r=this.$H,o=this.$m,a=this.$M,l=n.weekdays,c=n.months,M=n.meridiem,w=function(e,n,i,r){return e&&(e[n]||e(t,s))||i[n].slice(0,r)},u=function(e){return b.s(r%12||12,e,"0")},L=M||function(e,t,n){var s=e<12?"AM":"PM";return n?s.toLowerCase():s};return s.replace(y,function(e,s){return s||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return b.s(t.$y,4,"0");case"M":return a+1;case"MM":return b.s(a+1,2,"0");case"MMM":return w(n.monthsShort,a,c,3);case"MMMM":return w(c,a);case"D":return t.$D;case"DD":return b.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return w(n.weekdaysMin,t.$W,l,2);case"ddd":return w(n.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(r);case"HH":return b.s(r,2,"0");case"h":return u(1);case"hh":return u(2);case"a":return L(r,o,!0);case"A":return L(r,o,!1);case"m":return String(o);case"mm":return b.s(o,2,"0");case"s":return String(t.$s);case"ss":return b.s(t.$s,2,"0");case"SSS":return b.s(t.$ms,3,"0");case"Z":return i}return null}(e)||i.replace(":","")})},D.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},D.diff=function(s,u,d){var L,y=this,I=b.p(u),D=N(s),p=(D.utcOffset()-this.utcOffset())*t,m=this-D,g=function(){return b.m(y,D)};switch(I){case w:L=g()/12;break;case c:L=g();break;case M:L=g()/3;break;case l:L=(m-p)/6048e5;break;case a:L=(m-p)/864e5;break;case o:L=m/n;break;case r:L=m/t;break;case i:L=m/e;break;default:L=m}return d?L:b.a(L)},D.daysInMonth=function(){return this.endOf(c).$D},D.$locale=function(){return g[this.$L]},D.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),s=h(e,t,!0);return s&&(n.$L=s),n},D.clone=function(){return b.w(this.$d,this)},D.toDate=function(){return new Date(this.valueOf())},D.toJSON=function(){return this.isValid()?this.toISOString():null},D.toISOString=function(){return this.$d.toISOString()},D.toString=function(){return this.$d.toUTCString()},I}(),T=x.prototype;return N.prototype=T,[["$ms",s],["$s",i],["$m",r],["$H",o],["$W",a],["$M",c],["$y",w],["$D",u]].forEach(function(e){T[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),N.extend=function(e,t){return e.$i||(e(t,x,N),e.$i=!0),N},N.locale=h,N.isDayjs=C,N.unix=function(e){return N(1e3*e)},N.en=g[m],N.Ls=g,N.p={},N}()}(Ls);var ys=Jn(Ls.exports);function Is(){if(!vn(ys))throw new Error("invalid dayjs");return ys().format("YYYY-MM-DDTHH:mm:ssZ")}let Ds="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),ps=Ds.length;function ms(e=32){let t=[];e=xn(e)?bn(e):32;for(let n=0;n<e;n++)t[n]=Ds[0|Math.random()*ps];return t.join("")}var gs={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0===--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,M=this._events[a],w=arguments.length;if(M.fn){switch(M.once&&this.removeListener(e,M.fn,void 0,!0),w){case 1:return M.fn.call(M.context),!0;case 2:return M.fn.call(M.context,t),!0;case 3:return M.fn.call(M.context,t,s),!0;case 4:return M.fn.call(M.context,t,s,i),!0;case 5:return M.fn.call(M.context,t,s,i,r),!0;case 6:return M.fn.call(M.context,t,s,i,r,o),!0}for(c=1,l=new Array(w-1);c<w;c++)l[c-1]=arguments[c];M.fn.apply(M.context,l)}else{var u,d=M.length;for(c=0;c<d;c++)switch(M[c].once&&this.removeListener(e,M[c].fn,void 0,!0),w){case 1:M[c].fn.call(M[c].context);break;case 2:M[c].fn.call(M[c].context,t);break;case 3:M[c].fn.call(M[c].context,t,s);break;case 4:M[c].fn.call(M[c].context,t,s,i);break;default:if(!l)for(u=1,l=new Array(w-1);u<w;u++)l[u-1]=arguments[u];M[c].fn.apply(M[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],M=a.length;l<M;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}(gs);var fs=Jn(gs.exports);function Cs(){return new fs}let hs=2147483647;async function Ns(e,t={}){let n=null,s=Vn();if(!vn(e))return s.reject("waitfunction需輸入函數f"),s;let i=async()=>{let t=e();return Gn(t)&&(t=await t),t};if(n=await i(),!0===n)return s.resolve(),s;let r=Ie(t,"attemptNum",null);xn(r)||(r=200);let o=Ie(t,"timeInterval",null);xn(o)||(o=1e3),o=Math.min(o,hs);let a=0,l=setInterval(async()=>{a+=1,n=await i(),!0===n&&(clearInterval(l),s.resolve()),a>r&&(clearInterval(l),s.reject(`exceeded attemptNum[${r}]`))},o);return s}function bs(e){return function(e,t={}){let n=Ie(t,"fs");if(cs(e,{fs:n}))return{success:"input folder is already exists: "+e};if(ls(e,{fs:n}))return{error:"input path already exists: "+e};try{n.mkdirSync(e,{recursive:!0})}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}function xs(e,t,n=[],s={}){let i=s.funSettle,r=s.tag||"evem",o=(t,...n)=>e.emit(t,...n);vn(s.funEmit)&&(o=s.funEmit);try{return o(t,...n)}catch(s){if(vn(i))try{i(s)}catch(e){}try{"error"!==t&&e.listenerCount("error")>0?o("error",{fun:"listener",name:t,msg:s,args:n}):console.error(`[wsemi ${r}] listener of '${String(t)}' threw:`,s)}catch(e){try{console.error(`[wsemi ${r}] listener of '${String(t)}' threw, and reporting it also threw:`,e,s)}catch(e){}}return!1}}function Ts(e){try{let t=e();return"string"==typeof t?t:""}catch(e){return""}}function Ss(e,t){try{let n=new WeakSet,s=[],i=JSON.stringify(e,function(e,i){for(;s.length>0&&s[s.length-1]!==this;)s.pop();if(s.length>=t)return"[Deep]";if("bigint"==typeof i)return String(i);if(null!==i&&"object"==typeof i){if(n.has(i))return"[Circular]";n.add(i),s.push(i)}return i});return"string"==typeof i?i:""}catch(e){return""}}function Zs(e){if(e.length>=2&&'"'===e[0]&&'"'===e[e.length-1]){let t=Ts(()=>JSON.parse(e));if(""!==t)return t}return e}function As(e,t){if(void 0===e)return"";if(null===e)return"null";let n=function(e){let t=typeof e;return"string"===t?e:null==e?"":"number"===t||"boolean"===t||"bigint"===t||"symbol"===t?String(e):""}(e);if(""!==n)return n;let s=Ss(e,t);if(""!==s&&"{}"!==s)return Zs(s);let i=Ts(()=>String(e));return""!==i&&"[object Object]"!==i?i:s}function Xs(e,t){let n=new WeakSet;null===e||"object"!=typeof e&&"function"!=typeof e||n.add(e);let s=e,i=[];for(let e=0;e<t.levelCauseMax;e++){let e=null;try{e=s.cause}catch(e){break}if(null==e)break;if("object"==typeof e||"function"==typeof e){if(n.has(e))break;n.add(e)}let r=Ys(e,{...t,useCause:!1,useAggregate:!1});""!==r&&i.push(r),s=e}return i.join(" <- ")}function Es(e,t){let n=null;try{n=e.errors}catch(e){return""}if(!Array.isArray(n)||0===n.length)return"";let s=[];for(let i=0;i<n.length&&i<t.levelCauseMax;i++){if(n[i]===e)continue;let r=Ys(n[i],{...t,useCause:!1,useAggregate:!1});""!==r&&s.push(r)}return s.join("; ")}function Ys(e,t){if("string"==typeof e)return e;if(null==e)return"";if("number"==typeof e)return Number.isNaN(e)?"":String(e);if("boolean"==typeof e||"bigint"==typeof e||"symbol"==typeof e)return String(e);let n=null,s=!1;try{n=e.message,s=!0}catch(e){s=!1}if(s&&"string"==typeof n){if(""!==n){let s=n;if(t.useCause){let n=Xs(e,t);""!==n&&(s=`${s} <- ${n}`)}if(t.useAggregate){let n=Es(e,t);""!==n&&(s=`${s} [${n}]`)}return s}let s=Xs(e,t);return""!==s?s:""}if(s){let e=As(n,t.levelJsonMax);if(""!==e)return e}let i=Xs(e,t);if(""!==i)return i;if(t.useAggregate){let n=Es(e,t);if(""!==n)return n}let r=Ss(e,t.levelJsonMax),o=Zs(r);if(""!==o&&"{}"!==o)return o;let a=Ts(()=>String(e));if(""!==a&&"[object Object]"!==a)return a;let l=Ts(()=>Object.prototype.toString.call(e));return""!==l&&"[object Object]"!==l?l:""!==r?r:""}function js(e,t={}){let n=Ie(t,"useCause",null);_t(n)||(n=!1);let s=Ie(t,"useAggregate",null);_t(s)||(s=!1);let i=Ie(t,"levelCauseMax",null);xn(i,{useLimitSafe:!0})||(i=8),i=bn(i);let r=Ie(t,"levelJsonMax",null);xn(r,{useLimitSafe:!0})||(r=6),r=bn(r);let o=Ie(t,"lengthMessageMax",null);xn(o,{useLimitSafe:!0})||(o=0),o=bn(o);let a={useCause:n,useAggregate:s,levelCauseMax:i,levelJsonMax:r,lengthMessageMax:o},l="";try{l=Ys(e,a)}catch(e){return l="",l}return en(l)?(a.lengthMessageMax>0&&l.length>a.lengthMessageMax&&(l=a.lengthMessageMax>3?l.slice(0,a.lengthMessageMax-3)+"...":l.slice(0,a.lengthMessageMax)),l):(l="",l)}function zs(e){if(!(en(e)||pn(e)||N(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}function vs(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!en(e))return s("invalid str");let i="";try{let t=_n.parse(e);i=es.stringify(t)}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}function Gs(e,t){return!!nn(e)&&(!(!en(t)&&!pn(t))&&t in e)}function Ks(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function Ws(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function Us(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function Qs(e){if(!(Ks(e)||(t=e,"[object Blob]"===Object.prototype.toString.call(t))||Ws(e)||Us(e)))return null;var t;try{if(pn(e.byteLength))return e.byteLength}catch(e){}try{if(pn(e.length))return e.length}catch(e){}try{if(pn(e.size))return e.size}catch(e){}return null}let Vs=/[\t\n\f\r ]/g,ks=/^[A-Za-z0-9+/]*={0,2}$/,Hs=/=+$/;function Js(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:new Uint8Array;if(!en(e))return s("invalid str");let i=null;try{let t=vs(e,{returnWithStateAndMsg:!0});if("error"===t.state)return s(`str2b64: ${t.msg}`);let n=function(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:new Uint8Array;if(!qt(e))return s("invalid b64");let i=e.replace(Vs,"");if(!ks.test(i))return s("invalid b64, contains characters outside the base64 alphabet or misplaced padding");let r=i.length-i.replace(Hs,"").length,o=(i.length-r)%4;if(0===r&&1===o)return s(`invalid b64, the last chunk has only 1 character[${i.length}]`);if(1===r&&3!==o)return s("invalid b64, malformed padding, 1 padding requires the last chunk to have 3 characters");if(2===r&&2!==o)return s("invalid b64, malformed padding, 2 paddings require the last chunk to have 2 characters");let a=null;try{let e=es.parse(i),t=e.words,n=e.sigBytes;a=new Uint8Array(n);for(let e=0;e<n;e++){let n=t[e>>>2]>>>24-e%4*8&255;a[e]=n}}catch(e){return s(e.toString())}return n?{state:"success",msg:a}:a}(t.msg,{returnWithStateAndMsg:!0});if("error"===n.state)return s(`b642u8arr: ${n.msg}`);i=n.msg}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}function Rs(e,t,n=0,s=!0,i=52,r=8){return function(e,t,n,s,i,r){if(!pn(e))return null;if(!Ws(t))return null;if(!gn(n))return null;if(!_t(s))return null;if(!gn(i))return null;if(!gn(r))return null;let o,a,l;e=mn(e);let c=8*r-i-1,M=(1<<c)-1,w=M>>1,u=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=s?r-1:0,L=s?-1:1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=M):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+w>=1?u/l:u*Math.pow(2,1-w))*l>=2&&(o++,l/=2),o+w>=M?(a=0,o=M):o+w>=1?(a=(e*l-1)*Math.pow(2,i),o+=w):(a=e*Math.pow(2,w-1)*Math.pow(2,i),o=0));i>=8;t[n+d]=255&a,d+=L,a/=256,i-=8);for(o=o<<i|a,c+=i;c>0;t[n+d]=255&o,d+=L,o/=256,c-=8);return t[n+d-L]|=128*y,null}(e,t,n,s,i,r)}function Ps(e){let t=0;et(e,e=>{t+=Qs(e)});let n=new Uint8Array(t),s=0;return et(e,e=>{let t=function(e){return Ks(e)?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0)}(e);n.set(t,s),s+=t.length}),n}function Os(e,t={}){let n=[],s=new Uint8Array,i=Ie(t,"returnWithStateAndMsg",null);_t(i)||(i=!1);let r=e=>i?{state:"error",msg:e}:new Uint8Array;if(!(o=e,rn(o)&&o.length>=1||sn(e)))return r("invalid data, data is not an effective object or a non-empty array");var o;let a=[],l=[];function c(e){a.push(Qs(e)),l.push(e)}try{let t=function(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{results:"",binarys:[]};if(!nn(e)&&!rn(e))return s("invalid data, data is not an object or array");if(ss(e)||is(e))return s("invalid data, data is an empty object or empty array");let i=/^(?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,r="",o=[];try{let t=-1;r=JSON.stringify(e,function(e,n){if(Ws(n)){t+=1;let e=`[BlazeForUint8Array]::${t}`;return o.push(n),e}if(Us(n)){t+=1;let e=`[BlazeForUint16Array]::${t}`;return o.push(n),e}if(Ks(n)){t+=1;let e=`[BlazeForArrayBuffer]::${t}`;return o.push(n),e}return jn(n)&&(n=n.toString()),en(n)&&91===n.charCodeAt(0)&&i.test(n)?"[BlazeForPreventEscape]"+n:n})}catch(e){return s(e.toString())}return n?{state:"success",msg:{results:r,binarys:o}}:{results:r,binarys:o}}(e,{returnWithStateAndMsg:!0});if("error"===t.state)return r(`obj2stru8arr: ${t.msg}`);let i=t.msg;c(Js(i.results)),et(i.binarys,e=>{c(e)});let o=a,M=Js(JSON.stringify(o)),w=new Uint8Array(8);Rs(Qs(M),w),n.push(w),n.push(M),et(l,e=>{n.push(e)}),s=Ps(n)}catch(e){return r(e.toString())}return i?{state:"success",msg:s}:s}function Bs(e,t=0,n=!0,s=52,i=8){return function(e,t,n,s,i){if(!Ws(e))return null;if(!gn(t))return null;if(!_t(n))return null;if(!gn(s))return null;if(!gn(i))return null;let r,o,a=8*i-s-1,l=(1<<a)-1,c=l>>1,M=-7,w=n?0:i-1,u=n?1:-1,d=e[t+w];for(w+=u,r=d&(1<<-M)-1,d>>=-M,M+=a;M>0;r=256*r+e[t+w],w+=u,M-=8);for(o=r&(1<<-M)-1,r>>=-M,M+=s;M>0;o=256*o+e[t+w],w+=u,M-=8);if(0===r)r=1-c;else{if(r===l)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,s),r-=c}return(d?-1:1)*o*Math.pow(2,r-s)}(e,t,n,s,i)}var Fs={exports:{}};!function(e){var t;e.exports=(t=$n(),function(){if("function"==typeof ArrayBuffer){var e=t.lib.WordArray,n=e.init,s=e.init=function(e){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(e instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)&&(e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),e instanceof Uint8Array){for(var t=e.byteLength,s=[],i=0;i<t;i++)s[i>>>2]|=e[i]<<24-i%4*8;n.call(this,s,t)}else n.apply(this,arguments)};s.prototype=e}}(),t.lib.WordArray)}(Fs);var $s=Jn(Fs.exports);function _s(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!Ws(e))return s("invalid u8a");let i="";try{let t=function(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!Ws(e))return s("invalid u8a");let i="";try{i=$s.create(e).toString(es)}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}(e,{returnWithStateAndMsg:!0});if("error"===t.state)return s(`u8arr2b64: ${t.msg}`);i=ts(t.msg)}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}function qs(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!sn(e))return s("invalid data");let i=null,r=null;try{i=e.results,r=e.binarys}catch(e){return s(e.toString())}if(!en(i))return s("invalid results");if(!rn(r))return s("invalid binarys");let o=/^\[BlazeFor(Uint8Array|Uint16Array|ArrayBuffer)\]::(\d+)$/,a=/^\[BlazeForPreventEscape\](?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,l={};try{l=JSON.parse(i,function(e,t){if(!en(t)||91!==t.charCodeAt(0))return t;let n=o.exec(t);if(null===n)return a.test(t)?t.slice(23):t;let s=Number(n[2]);if(s>=r.length)throw new Error(`binary index out of range[${s}], binarys.length[${r.length}]`);return((e,t,n)=>{if("Uint16Array"===e&&!Us(n)){if(!Ws(n))throw new Error(`binarys[${t}] can not be restored to Uint16Array`);if(n.byteLength%2!=0)throw new Error(`binarys[${t}] byteLength[${n.byteLength}] is not even, can not be restored to Uint16Array`);let e=0===n.byteOffset&&n.byteLength===n.buffer.byteLength?n:new Uint8Array(n);return new Uint16Array(e.buffer)}if("ArrayBuffer"===e&&!Ks(n)){if(!Ws(n))throw new Error(`binarys[${t}] can not be restored to ArrayBuffer`);return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)}return n})(n[1],s,r[s])})}catch(e){return s(e.toString())}return n?{state:"success",msg:l}:l}function ei(e,t={}){let n={},s=Ie(t,"returnWithStateAndMsg",null);_t(s)||(s=!1);let i=e=>s?{state:"error",msg:e}:{};if(!Ws(e))return i("invalid u8a");try{let t=8,s=e.slice(0,t),r=e.slice(t,Qs(e)),o=Bs(s),a=r.slice(0,o),l=r.slice(o,Qs(r)),c=_s(a,{returnWithStateAndMsg:!0});if("error"===c.state)return i(`u8arr2str: ${c.msg}`);let M=c.msg,w=function(e,t){let n=0,s=0,i=[];return et(t,t=>{s=n+t;let r=e.slice(n,s);n=s,i.push(r)}),i}(l,JSON.parse(M)),u=_s(w.shift(),{returnWithStateAndMsg:!0});if("error"===u.state)return i(`u8arr2str: ${u.msg}`);let d=qs({results:u.msg,binarys:w},{returnWithStateAndMsg:!0});if("error"===d.state)return i(`stru8arr2obj: ${d.msg}`);n=d.msg}catch(e){return i(e.toString())}return s?{state:"success",msg:n}:n}function ti(e){return function(e,t={}){let n=Ie(t,"fs");if(!ls(e,{fs:n}))return{success:"file does not exist: "+e};if(!ws(e,{fs:n}))return{error:"input path is not a file: "+e};try{n.unlinkSync(e)}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}function ni(e){return en(e)&&e.length<=128&&/^[A-Za-z0-9]+$/.test(e)}let si={permission:200,param:200,app:200,output:200,packet:200,internal:200},ii={main:{apiType:"main",api:"apiMain",authFrom:"header",statusOf:si},ulctr:{apiType:"upload-controller",api:"apiUploadCheck",authFrom:"header",statusOf:si},slc:{apiType:"upload-slice",api:"apiUploadSlice",authFrom:"header",statusOf:si},dwgfn:{apiType:"download-get-filename",api:"apiDownloadGetFilename",authFrom:"header",statusOf:si,fields:[{name:"streamRead"},{name:"filename"}]},dwgf:{apiType:"download-get-file",api:"apiDownloadGetFile",authFrom:"query",statusOf:{permission:403,param:400,app:404,output:500,packet:500,internal:500},fields:[{name:"streamRead"},{name:"fileSize"},{name:"fileType"},{name:"filename",optional:!0}]},dw:{apiType:"download",api:"apiDownload",authFrom:"header",statusOf:si,fields:[{name:"streamRead"},{name:"filename"},{name:"fileSize"},{name:"fileType"}]}};var ri=Pt("length"),oi=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function ai(e){return oi.test(e)}var li="\\ud800-\\udfff",ci="["+li+"]",Mi="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",wi="\\ud83c[\\udffb-\\udfff]",ui="[^"+li+"]",di="(?:\\ud83c[\\udde6-\\uddff]){2}",Li="[\\ud800-\\udbff][\\udc00-\\udfff]",yi="(?:"+Mi+"|"+wi+")"+"?",Ii="[\\ufe0e\\ufe0f]?",Di=Ii+yi+("(?:\\u200d(?:"+[ui,di,Li].join("|")+")"+Ii+yi+")*"),pi="(?:"+[ui+Mi+"?",Mi,di,Li,ci].join("|")+")",mi=RegExp(wi+"(?="+wi+")|"+pi+Di,"g");function gi(e){return ai(e)?function(e){for(var t=mi.lastIndex=0;mi.test(e);)++t;return t}(e):ri(e)}function fi(e){if(null==e)return 0;if(Be(e))return"string"==typeof(t=e)||!w(t)&&h(t)&&"[object String]"==C(t)?gi(e):e.length;var t,n=zt(e);return"[object Map]"==n||"[object Set]"==n?e.size:Oe(e).length}function Ci(e,t,n){var s=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var r=Array(i);++s<i;)r[s]=e[s+t];return r}function hi(e){return e!=e}function Ni(e,t,n){return t==t?function(e,t,n){for(var s=n-1,i=e.length;++s<i;)if(e[s]===t)return s;return-1}(e,t,n):function(e,t,n,s){for(var i=e.length,r=n+(s?1:-1);s?r--:++r<i;)if(t(e[r],r,e))return r;return-1}(e,hi,n)}var bi="\\ud800-\\udfff",xi="["+bi+"]",Ti="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Si="\\ud83c[\\udffb-\\udfff]",Zi="[^"+bi+"]",Ai="(?:\\ud83c[\\udde6-\\uddff]){2}",Xi="[\\ud800-\\udbff][\\udc00-\\udfff]",Ei="(?:"+Ti+"|"+Si+")"+"?",Yi="[\\ufe0e\\ufe0f]?",ji=Yi+Ei+("(?:\\u200d(?:"+[Zi,Ai,Xi].join("|")+")"+Yi+Ei+")*"),zi="(?:"+[Zi+Ti+"?",Ti,Ai,Xi,xi].join("|")+")",vi=RegExp(Si+"(?="+Si+")|"+zi+ji,"g");function Gi(e){return ai(e)?function(e){return e.match(vi)||[]}(e):function(e){return e.split("")}(e)}function Ki(e,t,n){if((e=ue(e))&&(n||void 0===t))return ln(e);if(!e||!(t=we(t)))return e;var s=Gi(e),i=Gi(t),r=function(e,t){for(var n=-1,s=e.length;++n<s&&Ni(t,e[n],0)>-1;);return n}(s,i),o=function(e,t){for(var n=e.length;n--&&Ni(t,e[n],0)>-1;);return n}(s,i)+1;return function(e,t,n){var s=e.length;return n=void 0===n?s:n,!t&&n>=s?e:Ci(e,t,n)}(s,r,o).join("")}function Wi(e,t){if(!en(e))return[];if(!en(t))return[];let n=function(e,t){return en(e)&&en(t)?e.split(t):[]}(e,t);n=$t(n,Ki);let s=[];return et(n,function(e){en(e)&&s.push(e)}),s}const Ui=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,1,127,96,3,127,127,127,0,96,2,127,127,0,96,1,127,1,127,96,3,127,127,126,1,126,96,3,126,127,127,1,126,96,2,127,126,0,96,1,127,1,126,3,11,10,0,0,2,1,3,4,5,6,1,7,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,251,22,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,3,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,0,32,1,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,0,32,1,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,137,235,208,208,7,107,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,207,140,162,142,6,106,54,2,0,11,195,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,4,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,5,32,5,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,40,2,0,32,4,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,12,106,34,3,32,3,40,2,0,32,4,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,16,106,34,3,32,3,40,2,0,32,4,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,20,106,34,3,32,3,40,2,0,32,4,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,5,32,0,65,20,106,40,2,0,33,7,3,64,32,2,32,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,5,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,7,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,7,32,8,32,1,65,4,106,34,1,79,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,5,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,4,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,255,3,2,3,126,1,127,32,0,32,1,106,33,6,32,1,65,32,79,4,126,32,6,65,32,107,33,6,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,6,32,0,65,8,106,34,0,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,134,2,0,32,1,32,2,106,33,2,3,64,32,2,32,1,65,8,106,79,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,0,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,0,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,77,0,32,0,65,8,106,32,1,66,214,235,130,238,234,253,137,245,224,0,124,55,3,0,32,0,65,16,106,32,1,66,177,169,172,193,173,184,212,166,61,125,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,249,234,208,208,231,201,161,228,225,0,124,55,3,0,11,244,4,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,16,106,34,3,32,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,24,106,34,3,32,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,32,106,34,3,32,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,6,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,9,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,2,32,1,65,8,106,34,1,79,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,188,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,1,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);async function Qi(e,t={}){let n=Ie(t,"fs"),s=Ie(t,"chunkSize");if(pn(s)||(s=67108864),s=mn(s),!ws(e,{fs:n}))return Promise.reject("fp is not a file");let i=Vn();try{let{create64:t}=await async function(){return function(e){const{exports:{mem:t,xxh32:n,xxh64:s,init32:i,update32:r,digest32:o,init64:a,update64:l,digest64:c}}=e;let M=new Uint8Array(t.buffer);function w(e,n){if(t.buffer.byteLength<e+n){const s=Math.ceil((e+n-t.buffer.byteLength)/65536);t.grow(s),M=new Uint8Array(t.buffer)}}function u(e,t,n,s,i,r){w(e);const o=new Uint8Array(e);return M.set(o),n(0,t),o.set(M.subarray(0,e)),{update(t){let n;return M.set(o),"string"==typeof t?(w(3*t.length,e),n=I.encodeInto(t,M.subarray(e)).written):(w(t.byteLength,e),M.set(t,e),n=t.byteLength),s(0,e,n),o.set(M.subarray(0,e)),this},digest:()=>(M.set(o),r(i(0)))}}function d(e){return e>>>0}const L=2n**64n-1n;function y(e){return e&L}const I=new TextEncoder;function D(e,t=0){return w(3*e.length,0),d(n(0,I.encodeInto(e,M).written,t))}function p(e,t=0n){return w(3*e.length,0),y(s(0,I.encodeInto(e,M).written,t))}return{h32:D,h32ToString:(e,t=0)=>D(e,t).toString(16).padStart(8,"0"),h32Raw:(e,t=0)=>(w(e.byteLength,0),M.set(e),d(n(0,e.byteLength,t))),create32:(e=0)=>u(48,e,i,r,o,d),h64:p,h64ToString:(e,t=0n)=>p(e,t).toString(16).padStart(16,"0"),h64Raw:(e,t=0n)=>(w(e.byteLength,0),M.set(e),y(s(0,e.byteLength,t))),create64:(e=0n)=>u(88,e,a,l,c,y)}}((await WebAssembly.instantiate(Ui)).instance)}(),r=t(),o=n.createReadStream(e,{highWaterMark:s});o.on("data",e=>{r.update(e)}),o.on("end",()=>{let e=r.digest().toString(16).padStart(16,"0");i.resolve(e)}),o.on("error",i.reject)}catch(e){i.reject(e.toString())}return i}var Vi={exports:{}};!function(e){var t,n;e.exports=(t=o,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,M=this._events[a],w=arguments.length;if(M.fn){switch(M.once&&this.removeListener(e,M.fn,void 0,!0),w){case 1:return M.fn.call(M.context),!0;case 2:return M.fn.call(M.context,t),!0;case 3:return M.fn.call(M.context,t,s),!0;case 4:return M.fn.call(M.context,t,s,i),!0;case 5:return M.fn.call(M.context,t,s,i,r),!0;case 6:return M.fn.call(M.context,t,s,i,r,o),!0}for(c=1,l=new Array(w-1);c<w;c++)l[c-1]=arguments[c];M.fn.apply(M.context,l)}else{var u,d=M.length;for(c=0;c<d;c++)switch(M[c].once&&this.removeListener(e,M[c].fn,void 0,!0),w){case 1:M[c].fn.call(M[c].context);break;case 2:M[c].fn.call(M[c].context,t);break;case 3:M[c].fn.call(M[c].context,t,s);break;case 4:M[c].fn.call(M[c].context,t,s,i);break;default:if(!l)for(u=1,l=new Array(w-1);u<w;u++)l[u-1]=arguments[u];M[c].fn.apply(M[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],M=a.length;l<M;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9cmVxdWlyZSgiZXZlbnRzIiksbj1BcnJheS5pc0FycmF5LGk9Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLG89Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZix1PWl8fG98fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksYT11LlN5bWJvbCxjPU9iamVjdC5wcm90b3R5cGUscz1jLmhhc093blByb3BlcnR5LGY9Yy50b1N0cmluZyxsPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgcD0iW29iamVjdCBOdWxsXSIseT0iW29iamVjdCBVbmRlZmluZWRdIix2PWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gZyh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P3k6cDp2JiZ2IGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgZT1zLmNhbGwodCxsKSxyPXRbbF07dHJ5e3RbbF09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgaT1mLmNhbGwodCk7cmV0dXJuIG4mJihlP3RbbF09cjpkZWxldGUgdFtsXSksaX0odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGguY2FsbCh0KX0odCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fXZhciBkPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIF8odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxiKHQpJiZnKHQpPT1kfXZhciBTPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLGo9L15cdyokLztmdW5jdGlvbiB3KHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PWV8fCJmdW5jdGlvbiI9PWUpfXZhciBtPSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixPPSJbb2JqZWN0IEZ1bmN0aW9uXSIsRT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLE49IltvYmplY3QgUHJveHldIjt2YXIgQSxSPXVbIl9fY29yZS1qc19zaGFyZWRfXyJdLCQ9KEE9L1teLl0rJC8uZXhlYyhSJiZSLmtleXMmJlIua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIHg9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBJPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHo9RnVuY3Rpb24ucHJvdG90eXBlLEY9T2JqZWN0LnByb3RvdHlwZSxMPXoudG9TdHJpbmcsUD1GLmhhc093blByb3BlcnR5LFQ9UmVnRXhwKCJeIitMLmNhbGwoUCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gTSh0KXtpZighdyh0KXx8KGU9dCwkJiYkIGluIGUpKXJldHVybiExO3ZhciBlLHI9ZnVuY3Rpb24odCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9Zyh0KTtyZXR1cm4gZT09T3x8ZT09RXx8ZT09bXx8ZT09Tn0odCk/VDpJO3JldHVybiByLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiB4LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSh0KSl9ZnVuY3Rpb24gayh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIE0ocik/cjp2b2lkIDB9dmFyIFU9ayhPYmplY3QsImNyZWF0ZSIpO3ZhciBDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIHEodCxlKXtmb3IodmFyIHIsbixpPXQubGVuZ3RoO2ktLTspaWYoKHI9dFtpXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gaTtyZXR1cm4tMX1XLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189VT9VKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxXLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LFcucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fO2lmKFUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gQy5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LFcucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiBVP3ZvaWQgMCE9PWVbdF06Ry5jYWxsKGUsdCl9LFcucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLHJbdF09VSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgWD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIEIodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19Qi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxCLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPXEoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6WC5jYWxsKGUsciwxKSwtLXRoaXMuc2l6ZSwhMCl9LEIucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9cShlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LEIucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gcSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxCLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49cShyLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLHIucHVzaChbdCxlXSkpOnJbbl1bMV09ZSx0aGlzfTt2YXIgRD1rKHUsIk1hcCIpO2Z1bmN0aW9uIEgodCxlKXt2YXIgcixuLGk9dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihyPWUpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1yOm51bGw9PT1yKT9pWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOmkubWFwfWZ1bmN0aW9uIEoodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19Si5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBXLG1hcDpuZXcoRHx8Qiksc3RyaW5nOm5ldyBXfX0sSi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPUgodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sSi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMsdCkuZ2V0KHQpfSxKLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEgodGhpcyx0KS5oYXModCl9LEoucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPUgodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIEs9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIFEodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihLKTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxpPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0sbz1yLmNhY2hlO2lmKG8uaGFzKGkpKXJldHVybiBvLmdldChpKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9by5zZXQoaSx1KXx8byx1fTtyZXR1cm4gci5jYWNoZT1uZXcoUS5DYWNoZXx8Sikscn1RLkNhY2hlPUo7dmFyIFYsWSxaLHR0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLGV0PS9cXChcXCk/L2cscnQ9KFY9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZSh0dCwoZnVuY3Rpb24odCxyLG4saSl7ZS5wdXNoKG4/aS5yZXBsYWNlKGV0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9UShWLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09Wi5zaXplJiZaLmNsZWFyKCksdH0pKSxaPVkuY2FjaGUsWSksbnQ9cnQ7dmFyIGl0PTEvMCxvdD1hP2EucHJvdG90eXBlOnZvaWQgMCx1dD1vdD9vdC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG4odCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9QXJyYXkobik7KytyPG47KWlbcl09ZSh0W3JdLHIsdCk7cmV0dXJuIGl9KHQsYXQpKyIiO2lmKF8odCkpcmV0dXJuIHV0P3V0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBjdCh0KXtyZXR1cm4gbnVsbD09dD8iIjphdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiBuKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihuKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFfKHQpKXx8ai50ZXN0KHQpfHwhUy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06bnQoY3QodCkpfXZhciBmdD0xLzA7ZnVuY3Rpb24gbHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxfKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1mdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbbHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufWZ1bmN0aW9uIHB0KHQsZT17fSl7bGV0IHI9aHQoZSwiZnMiKSxuPSExO3RyeXtyLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB5dCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7cmV0dXJuISFwdCh0LHtmczpyfSkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIHZ0KCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBidCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgZSBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGR0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIF90KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIFN0KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFidCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISghZHQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIWd0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIV90KHQpKSkpKX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4hKCFkdCh0KXx8IiI9PT10KX12YXIgd3Q9L1xzLzt2YXIgbXQ9L15ccysvO2Z1bmN0aW9uIE90KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZ3dC50ZXN0KHQuY2hhckF0KGUpKTspO3JldHVybiBlfSh0KSsxKS5yZXBsYWNlKG10LCIiKTp0fXZhciBFdD1OYU4sTnQ9L15bLStdMHhbMC05YS1mXSskL2ksQXQ9L14wYlswMV0rJC9pLFJ0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24geHQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKF8odCkpcmV0dXJuIEV0O2lmKHcodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PXcoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PU90KHQpO3ZhciByPUF0LnRlc3QodCk7cmV0dXJuIHJ8fFJ0LnRlc3QodCk/JHQodC5zbGljZSgyKSxyPzI6OCk6TnQudGVzdCh0KT9FdDordH12YXIgSXQ9MS8wLHp0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD14dCh0KSk9PT1JdHx8dD09PS1JdD8odDwwPy0xOjEpKnp0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBMdCh0KXt2YXIgZT1GdCh0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9dmFyIFB0PSJbb2JqZWN0IEJvb2xlYW5dIjtmdW5jdGlvbiBUdCh0KXtyZXR1cm4hMD09PShlPXQpfHwhMT09PWV8fGIoZSkmJmcoZSk9PVB0O3ZhciBlfWZ1bmN0aW9uIE10KHQpe2xldCBlPSExO2lmKGp0KHQpKWU9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKF90KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24ga3QodCl7aWYoIU10KHQpKXJldHVybiAwO3JldHVybiBGdCh0KX1mdW5jdGlvbiBVdCh0LGU9e30pe2xldCByPWh0KGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIFR0KHIpfHwocj0hMSksISFNdCh0KSYmKHQ9a3QodCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PUx0KG4pKTt2YXIgbn12YXIgQ3Q9dS5pc0Zpbml0ZSxHdD1NYXRoLm1pbjt2YXIgV3Q9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXh0KHQpLChyPW51bGw9PXI/MDpHdChMdChyKSwyOTIpKSYmQ3QodCkpe3ZhciBuPShjdCh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oY3QoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIikscXQ9V3Q7ZnVuY3Rpb24gWHQodCxlPXt9KXtsZXQgcj1odChlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO1R0KHIpfHwocj0hMSk7bGV0IG49aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTtUdChuKXx8KG49ITEpO2xldCBpPWh0KGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7VHQoaSl8fChpPSExKTtsZXQgbz10PT5pP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsdT10PT57aWYoaSlyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighTXQodCkpcmV0dXJuIG8oMCk7bGV0IGE9bnVsbDt0cnl7dD1rdCh0KSxhPXF0KHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gdSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT91KGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLG8oYSkpfWZ1bmN0aW9uIEJ0KHQsZT17fSl7aWYoIVV0KHQsZSkpcmV0dXJuITE7cmV0dXJuIFh0KHQpPj0wfWZ1bmN0aW9uIER0KHQsZSl7aWYoIWp0KHQpKXJldHVybiIiO2lmKCFCdChlKSlyZXR1cm4iIjtpZigwPT09KGU9WHQoZSkpKXJldHVybiIiO2xldCByPXQubGVuZ3RoLWU7cmV0dXJuIHI8MCYmKHI9MCksdC5zdWJzdHJpbmcocixyK2UpfWZ1bmN0aW9uIEh0KHQsZSl7cmV0dXJuIGp0KHQpJiZCdChlKT8wPT09KGU9WHQoZSkpP3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4ganQodCkmJkJ0KGUpPzA9PT0oZT1YdChlKSk/IiI6dC5zdWJzdHJpbmcoMCxlKToiIn0odCx0Lmxlbmd0aC1lKToiIn1mdW5jdGlvbiBKdCh0KXtpZighanQodCkpcmV0dXJue3BhdGg6IiIsaXNSb290OiExfTtmb3IoO3QuaW5kZXhPZigiXFxcXCIpPj0wOyl0PXQucmVwbGFjZSgiXFxcXCIsIlxcIik7Zm9yKDt0LmluZGV4T2YoIi8vIik+PTA7KXQ9dC5yZXBsYWNlKCIvLyIsIi8iKTtpZigiOiI9PT1EdCh0LDEpKXJldHVybntwYXRoOmAke3R9XFxgLGlzUm9vdDohMH07aWYoIlxcIj09PUR0KHQsMSkpe2xldCBlPUh0KHQsMSk7cmV0dXJuIjoiPT09RHQoZSwxKT97cGF0aDp0LGlzUm9vdDohMH06e3BhdGg6ZSxpc1Jvb3Q6ITF9fWlmKCIvIj09PUR0KHQsMSkpe2xldCBlPUh0KHQsMSk7cmV0dXJuIDA9PT1lLmxlbmd0aD97cGF0aDp0LGlzUm9vdDohMH06e3BhdGg6ZSxpc1Jvb3Q6ITF9fXJldHVybntwYXRoOnQsaXNSb290OiExfX1mdW5jdGlvbiBLdCh0KXtpZighanQodCkpcmV0dXJuIiI7bGV0IGU9SnQodCk7aWYoZS5pc1Jvb3QpcmV0dXJuIGUucGF0aDtsZXQgcj1lLnBhdGg7dHJ5e3I9ci5zcGxpdCgiXFwiKS5wb3AoKS5zcGxpdCgiLyIpLnBvcCgpfWNhdGNoKHQpe31yZXR1cm4gcn1mdW5jdGlvbiBRdCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7aWYoIXB0KHQse2ZzOnJ9KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBWdCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7aWYoIXB0KHQse2ZzOnJ9KSlyZXR1cm57c3VjY2VzczoiZmlsZSBkb2VzIG5vdCBleGlzdDogIit0fTtpZigheXQodCx7ZnM6cn0pKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBpcyBub3QgYSBmaWxlOiAiK3R9O3RyeXtyLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fXJldHVybntzdWNjZXNzOiJkb25lOiAiK3R9fWFzeW5jIGZ1bmN0aW9uIFl0KHQsZSxuPXt9KXtsZXQgaT0iIixvPWh0KG4sImZzIik7aWYoIWd0KHU9dCl8fDA9PT11Lmxlbmd0aHx8MT09PXUubGVuZ3RoJiZTdCh1WzBdKSl0aHJvdyBuZXcgRXJyb3IoImZwc0luIGluIG5vdCBhbiBlZmZlY3RpdmUgYXJyYXkiKTt2YXIgdTtsZXQgYT1mdW5jdGlvbih0KXtpZighanQodCkpcmV0dXJuIiI7bGV0IGU9SnQodCk7aWYoZS5pc1Jvb3QpcmV0dXJuIGUucGF0aDtsZXQgcj1LdCh0PWUucGF0aCk7aWYoIWp0KHIpKXJldHVybiB0O2xldCBuPUp0KHQ9SHQodCxyLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9KGUpLGM9aHQobiwiZm5PdXQiLCIiKTtqdChjKXx8KGM9S3QoZSkpLFF0KGEse2ZzOm99KXx8ZnVuY3Rpb24odCxlPXt9KXtsZXQgcj1odChlLCJmcyIpO2lmKFF0KHQse2ZzOnJ9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKHB0KHQse2ZzOnJ9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07dHJ5e3IubWtkaXJTeW5jKHQse3JlY3Vyc2l2ZTohMH0pfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX19KGEse2ZzOm99KTtsZXQgcz12dCgpO3MuY2F0Y2goKCgpPT57fSkpO2xldCBmPW51bGwsbD1udWxsLGg9dnQoKTtoLmNhdGNoKCgoKT0+e30pKTt0cnl7Zj1vLmNyZWF0ZVdyaXRlU3RyZWFtKGUpLGYub24oImVycm9yIiwodD0+e2w9dCxpPXQubWVzc2FnZSxoLnJlamVjdCh0KSxzLnJlamVjdChpKX0pKSxmLm9uKCJmaW5pc2giLCgoKT0+e2xldCB0PXtmaWxlbmFtZTpjLHBhdGg6ZX07cy5yZXNvbHZlKHQpfSkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtpZihudWxsIT09bCl0aHJvdyBsO2xldCBuPXRbZV07aWYoIXl0KG4se2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtufV0gaXMgbm90IGEgZmlsZWApO2xldCBpPWFzeW5jKCk9PntsZXQgdD1vLmNyZWF0ZVJlYWRTdHJlYW0obiksZT1udWxsO2ZvciBhd2FpdChsZXQgbiBvZiB0KXtpZihudWxsIT09bCl0aHJvdyBsO2xldCB0PSExLGk9bmV3IFByb21pc2UoKChlLHIpPT57dD0hZi53cml0ZShuLCh0PT57dD9yKHQpOmUoKX0pKX0pKTtpLmNhdGNoKCgoKT0+e30pKSxlPWksdCYmYXdhaXQgUHJvbWlzZS5yYWNlKFtyLm9uY2UoZiwiZHJhaW4iKSxoXSl9aWYobnVsbCE9PWUmJmF3YWl0IGUsbnVsbCE9PWwpdGhyb3cgbDtWdChuLHtmczpvfSl9O2F3YWl0IGkoKX1mLmVuZCgpfWNhdGNoKHQpe2k9aHQodCwibWVzc2FnZSIsU3RyaW5nKHQpKTt0cnl7Zi5kZXN0cm95KCl9Y2F0Y2godCl7fXMucmVqZWN0KGkpfXJldHVybiBzfWNvbnN0IFp0PW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIHRlKHQsZT17fSl7bGV0IHI9aHQoZSwiZnMiKSxuPWh0KGUsImNodW5rU2l6ZSIpO2lmKE10KG4pfHwobj02NzEwODg2NCksbj1rdChuKSwheXQodCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBpPXZ0KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOmksdXBkYXRlMzI6byxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6c319PXQ7bGV0IGY9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLGY9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBoKHQsZSxyLG4saSxvKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIGYuc2V0KHUpLHIoMCxlKSx1LnNldChmLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIGYuc2V0KHUpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Zy5lbmNvZGVJbnRvKGUsZi5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLGYuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLHUuc2V0KGYuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4oZi5zZXQodSksbyhpKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHk9Mm4qKjY0bi0xbjtmdW5jdGlvbiB2KHQpe3JldHVybiB0Jnl9Y29uc3QgZz1uZXcgVGV4dEVuY29kZXIsYj0wLGQ9MG47ZnVuY3Rpb24gXyh0LGU9Yil7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKHIoMCxnLmVuY29kZUludG8odCxmKS53cml0dGVuLGUpKX1mdW5jdGlvbiBTKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHYobigwLGcuZW5jb2RlSW50byh0LGYpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWIpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1iKT0+KGwodC5ieXRlTGVuZ3RoLDApLGYuc2V0KHQpLHAocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWIpPT5oKDQ4LHQsaSxvLHUscCksaDY0OlMsaDY0VG9TdHJpbmc6KHQsZT1kKT0+Uyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCksZi5zZXQodCksdihuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9ZCk9PmgoODgsdCxhLGMscyx2KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShadCkpLmluc3RhbmNlKX0oKSxvPWUoKSx1PXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTt1Lm9uKCJkYXRhIiwodD0+e28udXBkYXRlKHQpfSkpLHUub24oImVuZCIsKCgpPT57bGV0IHQ9by5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtpLnJlc29sdmUodCl9KSksdS5vbigiZXJyb3IiLGkucmVqZWN0KX1jYXRjaCh0KXtpLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBpfWxldCBtZXJnZVNsaWNlcz1hc3luYyhyLG4saSxvKT0+e2xldCB1PVtdO2ZvcihsZXQgbz0wO288bjtvKyspe2xldCBuPXQucmVzb2x2ZShpLGAke3J9XyR7b31gKTtpZigheXQobix7ZnM6ZX0pKXRocm93IG5ldyBFcnJvcihgZnBJblske259XSBpcyBub3QgYSBmaWxlYCk7dS5wdXNoKG4pfWxldCBhPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQscixuPXt9KXtyZXR1cm4gWXQodCxyLHtmczplLC4uLm59KX0odSxvKTtyZXR1cm57Li4uYSxoYXNoOmF3YWl0IGZ1bmN0aW9uKHQscj17fSl7cmV0dXJuIHRlKHQse2ZzOmUsLi4ucn0pfShvKX19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VTbGljZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VTbGljZXMKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuatpOS6jOebo+iBveacg+mYu+atok5vZGXpoJDoqK3nmoR3b3JrZXLntYLmraLooYzngrosIOS9v3dvcmtlcuW0qea9sOW+jOS7jeWtmOa0u+epuui9iSwKICAgIC8v5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOS6i+S7tiwgcGVuZGluZyBwcm9taXNl5rC45LmF5oe4572uLCDkuJTlrZjmtLvmrq3lsY13b3JrZXLmnIPku6Tlrr/kuLvnqIvluo/nhKHms5XpgIDlh7o7CiAgICAvL+enu+mZpOW+jHdvcmtlcuS+nemgkOioreihjOeCuuatu+S6oSwgZXJyb3Lkuovku7blgrPoh7PlpJblsaQsIOeUseWkluWxpOaVtOaJuXJlamVjdCBwZW5kaW5nCiAgICAvLyBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAvLyAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIC8vIH0pCiAgICAvLyBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgIC8vICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICAvLyB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQoKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i={},r=!1,o=!1;function a(e){for(let t in i){let n=i[t];delete i[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function l(e){r||(r=!0,a(e))}let c=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){l(e)}}(t);if(!c)return l("invalid worker"),null;function M(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(r)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}();i[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return c.postMessage(n),s.once(t,n=>{delete i[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return c.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),c.on("error",l),c.on("exit",e=>{o||l("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};c.postMessage(e)}([...arguments]),s.main=M,s.main=M,s.terminate=function(){c?(o=!0,c.terminate(),c=void 0):a("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(Vi);var ki=Jn(Vi.exports);let Hi=new Set,Ji=new Map,Ri=(t,n,s="")=>{let i=e.resolve(n,t);return{fp:i,fpm:`${i}.merging`,fpd:`${i}.done`,fpe:`${i}.error`,fpr:en(s)?`${i}.q${s}.ro`:""}},Pi=e=>{let t=ti(e);if(us(e))throw new Error(`can not remove ${e}: ${js(Ie(t,"error"))}`)},Oi=async(e,n)=>{Hi.add(n.fp);try{let s=await function(e,n={}){return Qi(e,{fs:t,...n})}(n.fp);if(s===e)return t.writeFileSync(n.fpd,"","utf8"),{state:"done"};let i=`merged file[${n.fp}] is incomplete: hash[${s}] != fileHash[${e}], merge was interrupted`;try{t.writeFileSync(n.fpe,i,"utf8")}catch(e){console.log(`can not write ${n.fpe}`,e)}return{state:"mismatch",reason:i}}catch(e){return{state:"error",reason:`verify merged file[${n.fp}] error: ${js(e)}`}}finally{Hi.delete(n.fp)}},Bi=async(e,n,s)=>{let i=`${function(){if(!vn(ys))throw new Error("invalid dayjs");return ys().format("YYYYMMDDHHmmss")}()}|${ms(6)}|${e}`,r=Ri(e,s);if(Hi.has(r.fp))return i;let o=us(r.fpe),a=us(r.fp);if(!o&&a){let t=await Oi(e,r);if("done"===t.state)return i;if("error"===t.state)throw new Error(t.reason)}return Pi(r.fpd),Pi(r.fpe),Hi.add(r.fp),setTimeout(()=>{ki(e,n,s,r.fpm).then(n=>{let s=Ie(n,"hash","");if(s!==e)throw new Error(`merged file hash[${s}] != fileHash[${e}]`);t.renameSync(r.fpm,r.fp),t.writeFileSync(r.fpd,"","utf8")}).catch(e=>{console.log(e),ti(r.fpm);let n=js(e);try{t.writeFileSync(r.fpe,n,"utf8")}catch(e){console.log(`can not write ${r.fpe}`,e)}}).finally(()=>{Hi.delete(r.fp)})},1),i},Fi=async(e,n,s={})=>{let i=Ie(s,"funConsume"),r=Ie(s,"funLog");vn(r)||(r=e=>{console.log(e)});let o=Wi(e,"|"),a=Ie(o,0,""),l=Ie(o,1,""),c=Ie(o,2,"");if(3!==fi(o)||!ni(a)||!ni(l)||!ni(c)){let t=`invalid queueId[${js(e)}]`;return console.log(t),{state:"error",msg:"invalid queueId",reason:t,path:""}}let M=Ri(c,n,`${a}${l}`);if(us(M.fpr)){let e=((e,n)=>{try{let s=ei(new Uint8Array(t.readFileSync(e.fpr)),{returnWithStateAndMsg:!0});if("success"!==Ie(s,"state"))return n(`stored result ${e.fpr} is corrupted, treat as not stored: ${Ie(s,"msg","unknown error")}`),{ok:!1};let i=s.msg;return nn(i)&&Gs(i,"ro")?{ok:!0,ro:i.ro}:(n(`stored result ${e.fpr} has no own 'ro' key, treat as not stored`),{ok:!1})}catch(t){return n(`can not read stored result ${e.fpr}: ${js(t)}`),{ok:!1}}})(M,r);if(e.ok)return{state:"success",msg:e.ro,path:M.fp,from:"stored"}}if(us(M.fpe)){let e="";try{e=t.readFileSync(M.fpe,"utf8")}catch(e){}return{state:"error",msg:"merge slices failed",reason:e,path:M.fp}}if(Hi.has(M.fp))return{state:"merging",msg:"",path:M.fp};let w=us(M.fp),u=us(M.fpd);if(w&&!u){let e=await Oi(c,M);if("done"!==e.state)return{state:"error",msg:"merge slices failed",reason:e.reason,path:M.fp};u=!0}if(w&&u){if(!vn(i))return{state:"success",msg:"",path:M.fp};let n=await((e,n,s,i)=>{let r=Ji.get(e);return r||(r=Promise.resolve().then(()=>s(n.fp)).then(e=>{e=void 0===e?null:e;try{let s=Os({ro:e},{returnWithStateAndMsg:!0});if("success"!==Ie(s,"state"))return e;t.writeFileSync(n.fpr,Buffer.from(s.msg));let i=ei(s.msg,{returnWithStateAndMsg:!0});if("success"===Ie(i,"state")&&nn(i.msg)&&Gs(i.msg,"ro"))return i.msg.ro}catch(e){i(`can not store consumed result to ${n.fpr}: ${js(e)}`)}return e}).finally(()=>{Ji.delete(e)}),Ji.set(e,r),r)})(e,M,i,r);return{state:"success",msg:n,path:M.fp,from:"consumed"}}return!w&&u?{state:"error",msg:"merged file already consumed",reason:`merged file[${M.fp}] no longer exists and no stored result for queueId[${e}]`,path:M.fp}:{state:"error",msg:"no merge task",reason:`no merge task for fileHash[${c}] (never pushed, or artifacts removed)`,path:M.fp}};var $i={exports:{}};!function(e){var t,n;e.exports=(t=o,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,M=this._events[a],w=arguments.length;if(M.fn){switch(M.once&&this.removeListener(e,M.fn,void 0,!0),w){case 1:return M.fn.call(M.context),!0;case 2:return M.fn.call(M.context,t),!0;case 3:return M.fn.call(M.context,t,s),!0;case 4:return M.fn.call(M.context,t,s,i),!0;case 5:return M.fn.call(M.context,t,s,i,r),!0;case 6:return M.fn.call(M.context,t,s,i,r,o),!0}for(c=1,l=new Array(w-1);c<w;c++)l[c-1]=arguments[c];M.fn.apply(M.context,l)}else{var u,d=M.length;for(c=0;c<d;c++)switch(M[c].once&&this.removeListener(e,M[c].fn,void 0,!0),w){case 1:M[c].fn.call(M[c].context);break;case 2:M[c].fn.call(M[c].context,t);break;case 3:M[c].fn.call(M[c].context,t,s);break;case 4:M[c].fn.call(M[c].context,t,s,i);break;default:if(!l)for(u=1,l=new Array(w-1);u<w;u++)l[u-1]=arguments[u];M[c].fn.apply(M[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],M=a.length;l<M;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLFM9XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sTz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsej1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsRT16JiZ6LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCx4PShFP0UuaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sRj05MDA3MTk5MjU0NzQwOTkxLE49L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uIGsodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/RjplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmTi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEk9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiAkKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1JfXZhciBMPXt9O0xbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUxbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUxbIltvYmplY3QgSW50OEFycmF5XSJdPUxbIltvYmplY3QgSW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IEludDMyQXJyYXldIl09TFsiW29iamVjdCBVaW50OEFycmF5XSJdPUxbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09TFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLExbIltvYmplY3QgQXJndW1lbnRzXSJdPUxbIltvYmplY3QgQXJyYXldIl09TFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1MWyJbb2JqZWN0IEJvb2xlYW5dIl09TFsiW29iamVjdCBEYXRhVmlld10iXT1MWyJbb2JqZWN0IERhdGVdIl09TFsiW29iamVjdCBFcnJvcl0iXT1MWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUxbIltvYmplY3QgTWFwXSJdPUxbIltvYmplY3QgTnVtYmVyXSJdPUxbIltvYmplY3QgT2JqZWN0XSJdPUxbIltvYmplY3QgUmVnRXhwXSJdPUxbIltvYmplY3QgU2V0XSJdPUxbIltvYmplY3QgU3RyaW5nXSJdPUxbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxQPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsVD1QJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsUj1UJiZULmV4cG9ydHM9PT1QJiZ1LnByb2Nlc3MsVT1mdW5jdGlvbigpe3RyeXt2YXIgdD1UJiZULnJlcXVpcmUmJlQucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxSJiZSLmJpbmRpbmcmJlIuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksQj1VJiZVLmlzVHlwZWRBcnJheSxEPUI/KE09QixmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiYkKHQubGVuZ3RoKSYmISFMW2QodCldfSxXPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gQyh0LGUpe3ZhciByPU8odCksbj0hciYmUyh0KSxvPSFyJiYhbiYmeCh0KSx1PSFyJiYhbiYmIW8mJkQodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIVcuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8ayhmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBHPU9iamVjdC5wcm90b3R5cGU7dmFyIHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLFY9cSxYPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxHKSlyZXR1cm4gVih0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlYLmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEoodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIEs9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFE9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFKKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVF8fGU9PVl8fGU9PUt8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJiQodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP0ModCk6SCh0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKE8odCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLFN0PV90KGEsIlNldCIpLE90PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix6dD0iW29iamVjdCBQcm9taXNlXSIsRXQ9IltvYmplY3QgU2V0XSIseHQ9IltvYmplY3QgV2Vha01hcF0iLEZ0PSJbb2JqZWN0IERhdGFWaWV3XSIsTnQ9bHQoanQpLGt0PWx0KG10KSxJdD1sdCh3dCksJHQ9bHQoU3QpLEx0PWx0KE90KSxNdD1kOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1GdHx8bXQmJk10KG5ldyBtdCkhPUF0fHx3dCYmTXQod3QucmVzb2x2ZSgpKSE9enR8fFN0JiZNdChuZXcgU3QpIT1FdHx8T3QmJk10KG5ldyBPdCkhPXh0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBOdDpyZXR1cm4gRnQ7Y2FzZSBrdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4genQ7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSBMdDpyZXR1cm4geHR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gUnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgVXQ9UnQoImxlbmd0aCIpLEJ0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gQnQudGVzdCh0KX12YXIgV3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsQ3Q9IlsiK1d0KyJdIixHdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLHF0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLFZ0PSJbXiIrV3QrIl0iLFh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixIdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsSnQ9Iig/OiIrR3QrInwiK3F0KyIpIisiPyIsS3Q9IltcXHVmZTBlXFx1ZmUwZl0/IixRdD1LdCtKdCsoIig/OlxcdTIwMGQoPzoiK1tWdCxYdCxIdF0uam9pbigifCIpKyIpIitLdCtKdCsiKSoiKSxZdD0iKD86IitbVnQrR3QrIj8iLEd0LFh0LEh0LEN0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChxdCsiKD89IitxdCsiKXwiK1l0K1F0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIER0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlV0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhTyhlKSYmZyhlKSYmZChlKT09VHQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1QdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkgodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLFNlPTIsT2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix6ZT0iW29iamVjdCBFcnJvcl0iLEVlPSJbb2JqZWN0IE1hcF0iLHhlPSJbb2JqZWN0IE51bWJlcl0iLEZlPSJbb2JqZWN0IFJlZ0V4cF0iLE5lPSJbb2JqZWN0IFNldF0iLGtlPSJbb2JqZWN0IFN0cmluZ10iLEllPSJbb2JqZWN0IFN5bWJvbF0iLCRlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsTGU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxQZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBUZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFJlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsVWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxCZT1VZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksVGUoVWUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBSZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBEZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIE8odCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LEJlKX12YXIgV2U9MSxDZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBHZT0xLHFlPSJbb2JqZWN0IEFyZ3VtZW50c10iLFZlPSJbb2JqZWN0IEFycmF5XSIsWGU9IltvYmplY3QgT2JqZWN0XSIsSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKZSh0LGUscixuLG8sdSl7dmFyIGk9Tyh0KSxhPU8oZSksYz1pP1ZlOlB0KHQpLGY9YT9WZTpQdChlKSxzPShjPWM9PXFlP1hlOmMpPT1YZSxsPShmPWY9PXFlP1hlOmYpPT1YZSxwPWM9PWY7aWYocCYmeCh0KSl7aWYoIXgoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEQodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIExlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSAkZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBPZTpjYXNlIEFlOmNhc2UgeGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHplOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBGZTpjYXNlIGtlOnJldHVybiB0PT1lKyIiO2Nhc2UgRWU6dmFyIGE9amU7Y2FzZSBOZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1TZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEllOmlmKFBlKXJldHVybiBQZS5jYWxsKHQpPT1QZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImR2UpKXt2YXIgaD1zJiZIZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZIZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJldlLGE9RGUodCksYz1hLmxlbmd0aDtpZihjIT1EZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpDZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIEtlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6SmUodCxlLHIsbixLZSxvKSl9dmFyIFFlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUoodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9LZShzLGYsUWV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihPKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihPKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIE8odCk/dDppcih0LGUpP1t0XTpwcihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJiQobykmJmsoaSxvKSYmKE8odCl8fFModCkpfSh0LGUsU3IpfXZhciBBcj0xLHpyPTI7ZnVuY3Rpb24gRXIodCl7cmV0dXJuIGlyKHQpP1J0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiB4cih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P08odCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP09yKHIsdCk6S2UoZSxuLEFyfHpyKX19KHRbMF0sdFsxXSk6ZXIodCk6RXIodCl9ZnVuY3Rpb24gRnIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIE5yKHQsZSl7cmV0dXJuKE8odCk/cmU6RnIpKHQseHIoZSkpfXZhciBrcj0vXHMvO3ZhciBJcj0vXlxzKy87ZnVuY3Rpb24gJHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJmtyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoSXIsIiIpOnR9ZnVuY3Rpb24gTHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gUHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFRyPSJcXHVkODAwLVxcdWRmZmYiLFJyPSJbIitUcisiXSIsVXI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixCcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixEcj0iW14iK1RyKyJdIixXcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsQ3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEdyPSIoPzoiK1VyKyJ8IitCcisiKSIrIj8iLHFyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsVnI9cXIrR3IrKCIoPzpcXHUyMDBkKD86IitbRHIsV3IsQ3JdLmpvaW4oInwiKSsiKSIrcXIrR3IrIikqIiksWHI9Iig/OiIrW0RyK1VyKyI/IixVcixXcixDcixScl0uam9pbigifCIpKyIpIixIcj1SZWdFeHAoQnIrIig/PSIrQnIrIil8IitYcitWciwiZyIpO2Z1bmN0aW9uIEpyKHQpe3JldHVybiBEdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChIcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIEtyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gJHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49SnIodCksbz1KcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlByKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZQcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBMcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gUXIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVFyKHQpKXJldHVybltdO2lmKCFRcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBRcih0KSYmUXIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPU5yKHIsS3IpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtRcih0KSYmbi5wdXNoKHQpfSkpLG59dmFyIFpyPU5hTix0bj0vXlstK10weFswLTlhLWZdKyQvaSxlbj0vXjBiWzAxXSskL2kscm49L14wb1swLTddKyQvaSxubj1wYXJzZUludDtmdW5jdGlvbiBvbih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIFpyO2lmKEoodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUooZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PSRyKHQpO3ZhciByPWVuLnRlc3QodCk7cmV0dXJuIHJ8fHJuLnRlc3QodCk/bm4odC5zbGljZSgyKSxyPzI6OCk6dG4udGVzdCh0KT9acjordH12YXIgdW49MS8wLGFuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBjbih0KXtyZXR1cm4gdD8odD1vbih0KSk9PT11bnx8dD09PS11bj8odDwwPy0xOjEpKmFuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBmbih0KXt2YXIgZT1jbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9dmFyIHNuPSJbb2JqZWN0IEJvb2xlYW5dIjtmdW5jdGlvbiBsbih0KXtyZXR1cm4hMD09PShlPXQpfHwhMT09PWV8fGcoZSkmJmQoZSk9PXNuO3ZhciBlfWZ1bmN0aW9uIHBuKHQpe2xldCBlPSExO2lmKFFyKHQpKWU9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0IT10fSh0KSlyZXR1cm4hMTtlPSEwfXJldHVybiBlfWZ1bmN0aW9uIGhuKHQpe2lmKCFwbih0KSlyZXR1cm4gMDtyZXR1cm4gY24odCl9ZnVuY3Rpb24gdm4odCxlPXt9KXtsZXQgcj13cihlLCJ1c2VMaW1pdFNhZmUiLG51bGwpO3JldHVybiBsbihyKXx8KHI9ITEpLCEhcG4odCkmJih0PWhuKHQpLHI/TnVtYmVyLmlzU2FmZUludGVnZXIodCk6Im51bWJlciI9PXR5cGVvZihuPXQpJiZuPT1mbihuKSk7dmFyIG59dmFyIHluPWEuaXNGaW5pdGUsYm49TWF0aC5taW47dmFyIGRuPWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGhbdF07cmV0dXJuIGZ1bmN0aW9uKHQscil7aWYodD1vbih0KSwocj1udWxsPT1yPzA6Ym4oZm4ociksMjkyKSkmJnluKHQpKXt2YXIgbj0oZHIodCkrImUiKS5zcGxpdCgiZSIpO3JldHVybisoKG49KGRyKGUoblswXSsiZSIrKCtuWzFdK3IpKSkrImUiKS5zcGxpdCgiZSIpKVswXSsiZSIrKCtuWzFdLXIpKX1yZXR1cm4gZSh0KX19KCJyb3VuZCIpLGduPWRuO2Z1bmN0aW9uIF9uKHQsZT17fSl7bGV0IHI9d3IoZSwidXNlQ2xhbXBTYWZlIixudWxsKTtsbihyKXx8KHI9ITEpO2xldCBuPXdyKGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7bG4obil8fChuPSExKTtsZXQgbz13cihlLCJyZXR1cm5XaXRoU3RhdGVBbmRNc2ciLG51bGwpO2xuKG8pfHwobz0hMSk7bGV0IHU9dD0+bz97c3RhdGU6InN1Y2Nlc3MiLG1zZzp0fTp0LGk9dD0+e2lmKG8pcmV0dXJue3N0YXRlOiJlcnJvciIsbXNnOnR9O3Rocm93IG5ldyBFcnJvcih0KX07aWYoIXBuKHQpKXJldHVybiB1KDApO2xldCBhPW51bGw7dHJ5e3Q9aG4odCksYT1nbih0KSxyJiYoYT5OdW1iZXIuTUFYX1NBRkVfSU5URUdFUj9hPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSOmE8TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVImJihhPU51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSl9Y2F0Y2godCl7cmV0dXJuIGkodC50b1N0cmluZygpKX1yZXR1cm4gbiYmIU51bWJlci5pc1NhZmVJbnRlZ2VyKE51bWJlcihhKSk/aShgdlske3R9XSBpcyBub3QgYSBzYWZlIGludGVnZXJgKTooIjAiPT09U3RyaW5nKGEpJiYoYT0wKSx1KGEpKX1mdW5jdGlvbiBqbih0LGU9e30pe2lmKCF2bih0LGUpKXJldHVybiExO3JldHVybiBfbih0KT49MH1mdW5jdGlvbiBtbih0LGU9e30pe2xldCByPXdyKGUsImZzIiksbj0hMTt0cnl7ci5zdGF0U3luYyh0KSxuPSEwfWNhdGNoe249ITF9cmV0dXJuIG59ZnVuY3Rpb24gd24odCxlPXt9KXtsZXQgcj13cihlLCJmcyIpO3JldHVybiEhbW4odCx7ZnM6cn0pJiYoIXIubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBTbih0KXtyZXR1cm4gd24odCx7ZnM6ZX0pfWZ1bmN0aW9uIE9uKHQsZSl7dmFyIHI9W107cmV0dXJuIG90KHQsKGZ1bmN0aW9uKHQsbixvKXtlKHQsbixvKSYmci5wdXNoKHQpfSkpLHJ9ZnVuY3Rpb24gQW4odCxlPXt9KXtsZXQgcj13cihlLCJmcyIpO2lmKCFtbih0LHtmczpyfSkpcmV0dXJuITE7bGV0IG49ci5sc3RhdFN5bmModCk7cmV0dXJuIW4uaXNGaWxlKCkmJiFuLmlzU3ltYm9saWNMaW5rKCl9ZnVuY3Rpb24gem4odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIUFuKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBudWxsIT09ZSYmZnVuY3Rpb24odCxlPXt9KXtyZXR1cm4hIXZuKHQsZSkmJl9uKHQpPjB9KGUpJiYoZT1fbihlKSk8MSYmKGU9MSksZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gQW4ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9ZnVuY3Rpb24gRW4odCxlPTEscj17fSl7bGV0IG49d3IociwicGF0aCIpLG89d3IociwiZnMiKTtpZighQW4odCx7ZnM6b30pKXRocm93IG5ldyBFcnJvcihgZmRbJHt0fV0gaXMgbm90IGEgZm9sZGVyYCk7bGV0IHU9W107dmFyIGksYTtyZXR1cm4gdT16bih0LGUse3BhdGg6bixmczpvfSksYT17aXNGb2xkZXI6ITF9LHU9KE8oaT11KT9UZTpPbikoaSx4cihhKSksdT1Ocih1LCh0PT4oZGVsZXRlIHQuaXNGb2xkZXIsdCkpKSx1fWNvbnN0IHhuPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIEZuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPXdyKGUsImNodW5rU2l6ZSIpO2lmKHBuKG4pfHwobj02NzEwODg2NCksbj1obihuKSwhd24odCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBvPWZ1bmN0aW9uKCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyx1LGksaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSx1PWUoKSxpPXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTtpLm9uKCJkYXRhIiwodD0+e3UudXBkYXRlKHQpfSkpLGkub24oImVuZCIsKCgpPT57bGV0IHQ9dS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtvLnJlc29sdmUodCl9KSksaS5vbigiZXJyb3IiLG8ucmVqZWN0KX1jYXRjaCh0KXtvLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBvfWxldCBjaGVja1RvdGFsSGFzaD1hc3luYyhyLG4sbyx1KT0+e2xldCBpPXQucmVzb2x2ZSh1LG8pLGE9ITE7aWYoYT1TbihpKSwham4ocix7dXNlTGltaXRTYWZlOiEwfSkpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlU2l6ZSBpbiBwYXlsb2FkIn19cj1fbihyKTtsZXQgYz0hMTtpZihhKXtsZXQgdD0tMTt0cnl7dD1lLnN0YXRTeW5jKGkpLnNpemV9Y2F0Y2godCl7Y29uc29sZS5sb2coImNoZWNrIHRvdGFsIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIixpLHQpfWM9cj09PXR9bGV0IGY9ITE7YSYmYyYmYXdhaXQgZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4gRm4odCx7ZnM6ZSwuLi5yfSl9KGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxTbihpKSksY29uc29sZS5sb2codCksZj0hMX0pKTtsZXQgcz1bXTtpZighZil7aXQoZnVuY3Rpb24ocixuPTEpe3JldHVybiBFbihyLG4se3BhdGg6dCxmczplfSl9KHUpLCh0PT57bGV0IHI9dC5uYW1lLnN0YXJ0c1dpdGgoYCR7b31fYCksdT0hMTt0cnl7bGV0IHI9ZS5zdGF0U3luYyh0LnBhdGgpO3U9ci5zaXplPjAmJnIuc2l6ZTw9bn1jYXRjaChlKXtjb25zb2xlLmxvZygiY2hlY2sgZWFjaCBmaWxlIHNpemU6IGZzLnN0YXRTeW5jKHBhdGhGaWxlKSIsdC5wYXRoLGUpfWlmKHImJnUpe2xldCBlPVlyKHQubmFtZSxgJHtvfV9gKSxyPShhPW51bGw9PShpPWUpPzA6aS5sZW5ndGgpP2lbYS0xXTp2b2lkIDA7aWYoIWpuKHIpKXJldHVybiB2b2lkIGNvbnNvbGUubG9nKGBza2lwIGZpbGVbJHt0Lm5hbWV9XTogY2FuIG5vdCBwYXJzZSBjaHVuayBpbmRleGApO3I9X24ocikscy5wdXNoKHIpfXZhciBpLGF9KSl9bGV0IGw9ZWUocyk+MDtyZXR1cm57cGF0aDppLGJBbGxFeGlzdDphLGJBbGxTaXplOmMsYkFsbEhhc2g6ZixiU2xzOmwsc2xrczpzfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1RvdGFsSGFzaAogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjaGVja1RvdGFsSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewoKICAgIC8v5YOF5LuldW5jYXVnaHRFeGNlcHRpb25Nb25pdG9y6KiY6YyELCDkuI3lj6/oqLvlhop1bmNhdWdodEV4Y2VwdGlvbuiIh3VuaGFuZGxlZFJlamVjdGlvbuebo+iBvToKICAgIC8v5pa8d29ya2Vy5YWn6Ki75YaK5q2k5LqM55uj6IG95pyD6Zi75q2iTm9kZemgkOioreeahHdvcmtlcue1guatouihjOeCuiwg5L2/d29ya2Vy5bSp5r2w5b6M5LuN5a2Y5rS756m66L2JLAogICAgLy/lpJblsaTmlLbkuI3liLBlcnJvci9leGl05LqL5Lu2LCBwZW5kaW5nIHByb21pc2XmsLjkuYXmh7jnva4sIOS4lOWtmOa0u+aureWxjXdvcmtlcuacg+S7pOWuv+S4u+eoi+W6j+eEoeazlemAgOWHujsKICAgIC8v56e76Zmk5b6Md29ya2Vy5L6d6aCQ6Kit6KGM54K65q275LqhLCBlcnJvcuS6i+S7tuWCs+iHs+WkluWxpCwg55Sx5aSW5bGk5pW05om5cmVqZWN0IHBlbmRpbmcKICAgIC8vIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgIC8vICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgLy8gfSkKICAgIC8vIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgLy8gICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIC8vIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCgp9CmNhdGNoKGVycil7fQoK",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i={},r=!1,o=!1;function a(e){for(let t in i){let n=i[t];delete i[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function l(e){r||(r=!0,a(e))}let c=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){l(e)}}(t);if(!c)return l("invalid worker"),null;function M(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(r)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}();i[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return c.postMessage(n),s.once(t,n=>{delete i[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return c.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),c.on("error",l),c.on("exit",e=>{o||l("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};c.postMessage(e)}([...arguments]),s.main=M,s.main=M,s.terminate=function(){c?(o=!0,c.terminate(),c=void 0):a("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}($i);var _i=Jn($i.exports),qi={exports:{}};!function(e){var t,n;e.exports=(t=o,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,M=this._events[a],w=arguments.length;if(M.fn){switch(M.once&&this.removeListener(e,M.fn,void 0,!0),w){case 1:return M.fn.call(M.context),!0;case 2:return M.fn.call(M.context,t),!0;case 3:return M.fn.call(M.context,t,s),!0;case 4:return M.fn.call(M.context,t,s,i),!0;case 5:return M.fn.call(M.context,t,s,i,r),!0;case 6:return M.fn.call(M.context,t,s,i,r,o),!0}for(c=1,l=new Array(w-1);c<w;c++)l[c-1]=arguments[c];M.fn.apply(M.context,l)}else{var u,d=M.length;for(c=0;c<d;c++)switch(M[c].once&&this.removeListener(e,M[c].fn,void 0,!0),w){case 1:M[c].fn.call(M[c].context);break;case 2:M[c].fn.call(M[c].context,t);break;case 3:M[c].fn.call(M[c].context,t,s);break;case 4:M[c].fn.call(M[c].context,t,s,i);break;default:if(!l)for(u=1,l=new Array(w-1);u<w;u++)l[u-1]=arguments[u];M[c].fn.apply(M[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],M=a.length;l<M;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxmPWEudG9TdHJpbmcscz11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIsdj11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHkodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6diYmdiBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9Yy5jYWxsKHQscykscj10W3NdO3RyeXt0W3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYoZT90W3NdPXI6ZGVsZXRlIHRbc10pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgZD0iW29iamVjdCBTeW1ib2xdIjtmdW5jdGlvbiBnKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Yih0KSYmeSh0KT09ZH12YXIgXz0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxqPS9eXHcqJC87ZnVuY3Rpb24gUyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgdz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsbT0iW29iamVjdCBGdW5jdGlvbl0iLE89IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixBPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gRSh0KXtpZighUyh0KSlyZXR1cm4hMTt2YXIgZT15KHQpO3JldHVybiBlPT1tfHxlPT1PfHxlPT13fHxlPT1BfXZhciBOLCQ9aVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sej0oTj0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrTjoiIjt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gRih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHguY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIEk9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sTT1GdW5jdGlvbi5wcm90b3R5cGUsUD1PYmplY3QucHJvdG90eXBlLFQ9TS50b1N0cmluZyxMPVAuaGFzT3duUHJvcGVydHksUj1SZWdFeHAoIl4iK1QuY2FsbChMKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBrKHQpe3JldHVybiEoIVModCl8fChlPXQseiYmeiBpbiBlKSkmJihFKHQpP1I6SSkudGVzdChGKHQpKTt2YXIgZX1mdW5jdGlvbiBCKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gayhyKT9yOnZvaWQgMH12YXIgVT1CKE9iamVjdCwiY3JlYXRlIik7dmFyIEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgRz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFcodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gSCh0LGUpe2Zvcih2YXIgcixuLG89dC5sZW5ndGg7by0tOylpZigocj10W29dWzBdKT09PShuPWUpfHxyIT1yJiZuIT1uKXJldHVybiBvO3JldHVybi0xfVcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1VP1UobnVsbCk6e30sdGhpcy5zaXplPTB9LFcucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sVy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoVSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBDLmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sVy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIFU/dm9pZCAwIT09ZVt0XTpHLmNhbGwoZSx0KX0sVy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1VJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBxPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gRCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1ELnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9SChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpxLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0sRC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1IKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sRC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMuX19kYXRhX18sdCk+LTF9LEQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1IKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBWPUIoaSwiTWFwIik7ZnVuY3Rpb24gWCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gWih0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1aLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IFcsbWFwOm5ldyhWfHxEKSxzdHJpbmc6bmV3IFd9fSxaLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9WCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxaLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIFgodGhpcyx0KS5nZXQodCl9LFoucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gWCh0aGlzLHQpLmhhcyh0KX0sWi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9WCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTt2YXIgSj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gSyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKEopO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMsbik6blswXSxpPXIuY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciB1PXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1pLnNldChvLHUpfHxpLHV9O3JldHVybiByLmNhY2hlPW5ldyhLLkNhY2hlfHxaKSxyfUsuQ2FjaGU9Wjt2YXIgUSxZLHR0LGV0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csbnQ9KFE9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShldCwoZnVuY3Rpb24odCxyLG4sbyl7ZS5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09dHQuc2l6ZSYmdHQuY2xlYXIoKSx0fSkpLHR0PVkuY2FjaGUsWSksb3Q9bnQ7dmFyIGl0PTEvMCx1dD11P3UucHJvdG90eXBlOnZvaWQgMCxhdD11dD91dC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gY3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHIodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99KHQsY3QpKyIiO2lmKGcodCkpcmV0dXJuIGF0P2F0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gbnVsbD09dD8iIjpjdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiByKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihyKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFnKHQpKXx8ai50ZXN0KHQpfHwhXy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06b3QoZnQodCkpfXZhciBsdD0xLzA7ZnVuY3Rpb24gcHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxnKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1sdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbcHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufXZhciB2dD1PYmplY3QucHJvdG90eXBlO3ZhciB5dD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksYnQ9eXQsZHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBndCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHx2dCkpcmV0dXJuIGJ0KHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKWR0LmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufXZhciBfdD1CKGksIkRhdGFWaWV3IiksanQ9QihpLCJQcm9taXNlIiksU3Q9QihpLCJTZXQiKSx3dD1CKGksIldlYWtNYXAiKSxtdD0iW29iamVjdCBNYXBdIixPdD0iW29iamVjdCBQcm9taXNlXSIsQXQ9IltvYmplY3QgU2V0XSIsRXQ9IltvYmplY3QgV2Vha01hcF0iLE50PSJbb2JqZWN0IERhdGFWaWV3XSIsJHQ9RihfdCksenQ9RihWKSx4dD1GKGp0KSxGdD1GKFN0KSxJdD1GKHd0KSxNdD15OyhfdCYmTXQobmV3IF90KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1OdHx8ViYmTXQobmV3IFYpIT1tdHx8anQmJk10KGp0LnJlc29sdmUoKSkhPU90fHxTdCYmTXQobmV3IFN0KSE9QXR8fHd0JiZNdChuZXcgd3QpIT1FdCkmJihNdD1mdW5jdGlvbih0KXt2YXIgZT15KHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0Yocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSAkdDpyZXR1cm4gTnQ7Y2FzZSB6dDpyZXR1cm4gbXQ7Y2FzZSB4dDpyZXR1cm4gT3Q7Y2FzZSBGdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4gRXR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PVR0fSh0Lmxlbmd0aCkmJiFFKHQpfXZhciBSdD0iW29iamVjdCBTdHJpbmddIjt2YXIga3QsQnQ9KGt0PSJsZW5ndGgiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2t0XX0pLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsR3Q9IlsiK0N0KyJdIixXdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLEh0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLHF0PSJbXiIrQ3QrIl0iLER0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixWdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsWHQ9Iig/OiIrV3QrInwiK0h0KyIpIisiPyIsWnQ9IltcXHVmZTBlXFx1ZmUwZl0/IixKdD1adCtYdCsoIig/OlxcdTIwMGQoPzoiK1txdCxEdCxWdF0uam9pbigifCIpKyIpIitadCtYdCsiKSoiKSxLdD0iKD86IitbcXQrV3QrIj8iLFd0LER0LFZ0LEd0XS5qb2luKCJ8IikrIikiLFF0PVJlZ0V4cChIdCsiKD89IitIdCsiKXwiK0t0K0p0LCJnIik7ZnVuY3Rpb24gWXQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVdC50ZXN0KHQpfSh0KT9mdW5jdGlvbih0KXtmb3IodmFyIGU9UXQubGFzdEluZGV4PTA7UXQudGVzdCh0KTspKytlO3JldHVybiBlfSh0KTpCdCh0KX1mdW5jdGlvbiB0ZSh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEx0KHQpKXJldHVybiJzdHJpbmciPT10eXBlb2YoZT10KXx8IXIoZSkmJmIoZSkmJnkoZSk9PVJ0P1l0KHQpOnQubGVuZ3RoO3ZhciBlLG49UHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PW58fCJbb2JqZWN0IFNldF0iPT1uP3Quc2l6ZTpndCh0KS5sZW5ndGh9dmFyIGVlPS9ccy87dmFyIHJlPS9eXHMrLztmdW5jdGlvbiBuZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmZWUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShyZSwiIik6dH12YXIgb2U9TmFOLGllPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHVlPS9eMGJbMDFdKyQvaSxhZT0vXjBvWzAtN10rJC9pLGNlPXBhcnNlSW50O2Z1bmN0aW9uIGZlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihnKHQpKXJldHVybiBvZTtpZihTKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1TKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1uZSh0KTt2YXIgcj11ZS50ZXN0KHQpO3JldHVybiByfHxhZS50ZXN0KHQpP2NlKHQuc2xpY2UoMikscj8yOjgpOmllLnRlc3QodCk/b2U6K3R9dmFyIHNlPTEvMCxsZT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQ/KHQ9ZmUodCkpPT09c2V8fHQ9PT0tc2U/KHQ8MD8tMToxKSpsZTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gaGUodCl7dmFyIGU9cGUodCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciB2ZT0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24geWUodCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxiKGUpJiZ5KGUpPT12ZTt2YXIgZX1mdW5jdGlvbiBiZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gZGUodCl7bGV0IGU9ITE7aWYoYmUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24gZ2UodCl7aWYoIWRlKHQpKXJldHVybiAwO3JldHVybiBwZSh0KX1mdW5jdGlvbiBfZSh0LGU9e30pe2xldCByPWh0KGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIHllKHIpfHwocj0hMSksISFkZSh0KSYmKHQ9Z2UodCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PWhlKG4pKTt2YXIgbn12YXIgamU9aS5pc0Zpbml0ZSxTZT1NYXRoLm1pbjt2YXIgd2U9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PWZlKHQpLChyPW51bGw9PXI/MDpTZShoZShyKSwyOTIpKSYmamUodCkpe3ZhciBuPShmdCh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZnQoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksbWU9d2U7ZnVuY3Rpb24gT2UodCxlPXt9KXtsZXQgcj1odChlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO3llKHIpfHwocj0hMSk7bGV0IG49aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTt5ZShuKXx8KG49ITEpO2xldCBvPWh0KGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7eWUobyl8fChvPSExKTtsZXQgaT10PT5vP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsdT10PT57aWYobylyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighZGUodCkpcmV0dXJuIGkoMCk7bGV0IGE9bnVsbDt0cnl7dD1nZSh0KSxhPW1lKHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gdSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT91KGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLGkoYSkpfWZ1bmN0aW9uIEFlKHQsZT17fSl7aWYoIV9lKHQsZSkpcmV0dXJuITE7cmV0dXJuIE9lKHQpPj0wfWNvbnN0IEVlPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIE5lKHQsZT17fSl7aWYocj10LCJbb2JqZWN0IEJsb2JdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSYmIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEZpbGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpcmV0dXJuIGNvbnNvbGUubG9nKCJpbnAiLHQpLFByb21pc2UucmVqZWN0KCJpbnAgaXMgbm90IGEgQmxvYiBvciBGaWxlIik7dmFyIHI7bGV0IG49aHQoZSwiY2h1bmtTaXplIik7ZGUobil8fChuPTY3MTA4ODY0KSxuPWdlKG4pO2xldHtjcmVhdGU2NDpvfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6aSxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyxpKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KHUpLHIoMCxlKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KHUpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQodSksaShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyxpLHUsaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShFZSkpLmluc3RhbmNlKX0oKSxpPW8oKSx1PTA7Zm9yKDt1PHQuc2l6ZTspe2xldCBlPXQuc2xpY2UodSx1K24pLHI9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO2kudXBkYXRlKG5ldyBVaW50OEFycmF5KHIpKSx1Kz1ufXJldHVybiBpLmRpZ2VzdCgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpfWxldCBjaGVja1NsaWNlc0hhc2g9YXN5bmMocixuLG8pPT57aWYoIShiZShpPW4pJiZpLmxlbmd0aDw9MTI4JiYvXltBLVphLXowLTldKyQvLnRlc3QoaSkpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZUhhc2gifX12YXIgaTtpZighQXJyYXkuaXNBcnJheShyKSl7cmV0dXJue2Vycm9yOiJpbnZhbGlkIGZpbGVTbGljZUhhc2hzIn19aWYoMD09PXRlKHIpKXtyZXR1cm57ZXJyb3I6Im5vIGZpbGVTbGljZUhhc2hzIn19bGV0IHU9YCR7bn1fYCxhPWUucmVhZGRpclN5bmMobyksYz1uZXcgU2V0O2ZvcihsZXQgdCBvZiBhKXtpZighdC5zdGFydHNXaXRoKHUpKWNvbnRpbnVlO2xldCBlPXQuc2xpY2UodS5sZW5ndGgpO0FlKGUpJiZTdHJpbmcoT2UoZSkpPT09ZSYmYy5hZGQoT2UoZSkpfWxldCBmPVtdLHM9bmV3IFNldDtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7bGV0IHU9cltpXSxhPWh0KHUsImkiKTtpZighQWUoYSkpY29udGludWU7aWYoYT1PZShhKSwhYy5oYXMoYSl8fHMuaGFzKGEpKWNvbnRpbnVlO3MuYWRkKGEpO2xldCBsPXQucmVzb2x2ZShvLGAke259XyR7YX1gKSxwPSIiO3RyeXtwPWF3YWl0IE5lKG5ldyBCbG9iKFtlLnJlYWRGaWxlU3luYyhsKV0pKX1jYXRjaCh0KXtjb250aW51ZX1odCh1LCJoIik9PT1wJiZmLnB1c2goYSl9cmV0dXJue3Nsa3M6Zn19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tTbGljZXNIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrU2xpY2VzSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewoKICAgIC8v5YOF5LuldW5jYXVnaHRFeGNlcHRpb25Nb25pdG9y6KiY6YyELCDkuI3lj6/oqLvlhop1bmNhdWdodEV4Y2VwdGlvbuiIh3VuaGFuZGxlZFJlamVjdGlvbuebo+iBvToKICAgIC8v5pa8d29ya2Vy5YWn6Ki75YaK5q2k5LqM55uj6IG95pyD6Zi75q2iTm9kZemgkOioreeahHdvcmtlcue1guatouihjOeCuiwg5L2/d29ya2Vy5bSp5r2w5b6M5LuN5a2Y5rS756m66L2JLAogICAgLy/lpJblsaTmlLbkuI3liLBlcnJvci9leGl05LqL5Lu2LCBwZW5kaW5nIHByb21pc2XmsLjkuYXmh7jnva4sIOS4lOWtmOa0u+aureWxjXdvcmtlcuacg+S7pOWuv+S4u+eoi+W6j+eEoeazlemAgOWHujsKICAgIC8v56e76Zmk5b6Md29ya2Vy5L6d6aCQ6Kit6KGM54K65q275LqhLCBlcnJvcuS6i+S7tuWCs+iHs+WkluWxpCwg55Sx5aSW5bGk5pW05om5cmVqZWN0IHBlbmRpbmcKICAgIC8vIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgIC8vICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgLy8gfSkKICAgIC8vIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgLy8gICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIC8vIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCgp9CmNhdGNoKGVycil7fQoK",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i={},r=!1,o=!1;function a(e){for(let t in i){let n=i[t];delete i[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function l(e){r||(r=!0,a(e))}let c=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){l(e)}}(t);if(!c)return l("invalid worker"),null;function M(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(r)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}();i[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return c.postMessage(n),s.once(t,n=>{delete i[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return c.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),c.on("error",l),c.on("exit",e=>{o||l("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};c.postMessage(e)}([...arguments]),s.main=M,s.main=M,s.terminate=function(){c?(o=!0,c.terminate(),c=void 0):a("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(qi);var er=Jn(qi.exports);function tr(e,t){try{return{ok:!0,value:t()}}catch(t){let n=js(t);return{ok:!1,stage:e,cause:en(n)?n:"unknown error"}}}function nr(e,t){try{return r.validateHeaderValue(e,t),!0}catch(e){return!1}}function sr(e,t,n,s={}){let r=!0===Ie(s,"forHead",!1);if(null==e)return{error:"invalid streamRead",reason:"streamRead is null or undefined"};let o=tr("identify streamRead",()=>e instanceof i.Readable?{isReadable:!0,objectMode:!0===e.readableObjectMode,done:!0===e.destroyed||!0===e.readableEnded}:{isReadable:!1});if(!o.ok)return{error:"invalid streamRead",reason:`${o.stage} failed: ${o.cause}`};if(o.value.isReadable){if(o.value.objectMode)return{error:"invalid streamRead",reason:"streamRead is in object mode"};if(o.value.done)return{error:"invalid streamRead",reason:"streamRead is already destroyed or ended (each download event must provide a new stream)"};if(r)return{source:e};let s=tr("setup pipeline",()=>{let s=0,r=!1,o=new i.Transform({transform(e,n,i){if(s+=e.length,s>t)return r=!0,void i(new Error(`streamRead sent more than fileSize[${t}] bytes`));i(null,e)},flush(e){if(s!==t)return r=!0,void e(new Error(`streamRead ended at ${s} bytes but fileSize is ${t}`));e()}});return i.pipeline(e,o,e=>{e&&r&&n(js(e))}),o});return s.ok?{source:s.value}:{error:"invalid streamRead",reason:`${s.stage} failed: ${s.cause}`}}let a=tr("materialize streamRead",()=>{if(Buffer.isBuffer(e))return{buf:e};if(e instanceof Uint8Array)return{buf:Buffer.from(e)};if(qt(e))return{buf:Buffer.from(e,"utf8")};if("number"==typeof e||_t(e)||"object"==typeof e&&!1===function(e){try{return vn(e.pipe)}catch(e){return null}}(e)){let t=null;try{t=JSON.stringify(e)}catch(e){return{unserializable:js(e)}}return"string"!=typeof t?{unserializable:""}:{buf:Buffer.from(t,"utf8")}}return{unsupported:!0}});if(!a.ok)return{error:"invalid streamRead",reason:`${a.stage} failed: ${a.cause}`};if(Gs(a.value,"unserializable")){let e=a.value.unserializable;return{error:"invalid streamRead",reason:en(e)?`streamRead can not be serialized: ${e}`:"streamRead can not be serialized"}}if(!0===a.value.unsupported)return{error:"invalid streamRead",reason:"streamRead must be a readable stream, buffer, string, number, boolean or plain object"};let l=a.value.buf;return l.length!==t?{error:"fileSize mismatch",reason:`streamRead has ${l.length} bytes but fileSize is ${t}`}:{source:l}}let ir=e=>"function"==typeof e.toWellFormed?e.toWellFormed():e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"�");function rr(e,t){let n=tr(`check field[${e}]`,()=>{if("fileSize"===e)return function(e){return Kn(e,{useLimitSafe:!0})}(t)?{ok:!0,value:bn(t)}:{ok:!1};if("filename"===e||"fileType"===e){if(!en(t))return{ok:!1};let n=zs(t);return en(n)?"fileType"===e?nr("Content-Type",n)?{ok:!0,value:n}:{ok:!1}:{ok:!0,value:ir(n)}:{ok:!1}}throw new Error(`unknown field[${e}]`)});return n.ok?{ok:n.value.ok,value:n.value.value,cause:""}:{ok:!1,value:void 0,cause:n.cause}}function or(e){try{e&&vn(e.pipe)&&vn(e.destroy)&&e.destroy()}catch(e){}}function ar(e){return void 0===e||vn(e)||"symbol"==typeof e?null:e}function lr(e,t,n={}){let s=new i.Readable;s._read=()=>{},s.push(t),s.push(null);let r=Ie(n,"returnType",""),o=Ie(n,"returnMsg",""),a=e.response(s).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",s.readableLength);return en(r)&&a.header("Return-Type",r),en(o)&&nr("Return-Msg",o)&&a.header("Return-Msg",o),a}function cr(r={}){let o={useLimitSafe:!0},a=Ie(r,"port");(!xn(a,o)||bn(a)>65535)&&(a=8080),a=bn(a);let l=Ie(r,"useInert");_t(l)||(l=!0);let c=Ie(r,"pathStaticFiles");en(c)||(c="dist");let M=Ie(r,"pathUploadTemp");en(M)||(M="./uploadTemp");let w="";if(!Ms(M)){let e=bs(M);Gs(e,"error")&&(w=js(e.error))}let u=Ie(r,"apiName");en(u)||(u="api");let d=Ie(r,"tokenType");en(d)||(d="Bearer");let L=Ie(r,"sizeSlice");xn(L,o)||(L=1048576),L=bn(L);let y=Ie(r,"sizeMsg");xn(y,o)||(y=104857600),y=bn(y);let I=Ie(r,"verifyConn");vn(I)||(I=()=>!0);let D=Ie(r,"corsOrigins",[]);os(D)||(D=["*"]);let p=Ie(r,"delayForSlice","");(!Kn(p,o)||bn(p)>2147483647)&&(p=100),p=bn(p);let m=null;m=Ie(r,"serverHapi")?r.serverHapi:n.server({port:a,routes:{timeout:{server:!1,socket:!1},cors:{origin:D,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}}});let g=Cs(),f={tag:"w-converhp"},C=(e,...t)=>xs(g,e,t,{...f,funSettle:()=>{let n=t[t.length-1];Gn(n)&&n.reject(`listener of event[${e}] error`)},funEmit:N}),h=(e,...t)=>function(e,t,n=[],s={}){let i=s.ms;return xn(i)||(i=1),i=bn(i),i=Math.min(i,hs),setTimeout(()=>{xs(e,t,n,s)},i)}(g,e,t,{...f,funEmit:N});function N(e,...t){if("error"===e&&sn(t[0])&&"listener"===t[0].fun){let e=Ie(t[0],"name",""),n=Ie(t[0],"msg");return console.log(`listener of event[${e}] error`,n),g.emit("error",`listener of event[${e}] error: ${js(n)}`)}return g.emit(e,...t)}en(w)&&h("error",`create pathUploadTemp[${M}] error: ${w}`);let b=(e,t,n)=>{let s=Vn(),i=Vn();return i.then(t=>{void 0===t&&(t=null);let i=typeof t;if("function"===i||"symbol"===i)return s.reject("output can not be serialized"),void C("error",`event[${e}] output can not be serialized: output is a ${i}`);s.resolve(vn(n)?n(t):t)}).catch(e=>{s.reject(e)}),function(e,t,n,s,i,r){if(0===e.listenerCount(n)){let e=`no listener for event[${n}]`;return i.reject(e),r(e),!1}t(n,...s,i)}(g,C,e,t,i,e=>{C("error",e)}),s};async function x(e){return b("upload",[e])}async function T(e){return b("download",[e])}let S=`${zs(d)} `,Z=(e,t)=>{let n=Ie(e,"headers");n=sn(n)?n:"";let s=Ie(e,"query");s=sn(s)?s:"";let i="",r="";return"query"===t.authFrom?(r=Ie(s,"token",""),r=en(r)?r:"",en(r)&&(i=`${d} ${r}`)):(i=Ie(n,"authorization",""),i=en(i)?i:"",r=i.startsWith(S)?i.slice(S.length):""),{headers:n,query:s,authorization:i,token:r}},A=(e,t)=>{let n=(n,s,i)=>function(e,t,n={}){en(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t="");let s=Ie(n,"retryable",!0),i={error:t};!1===s&&(i.retryable=!1);let r=lr(e,Os(i),{returnType:"error",returnMsg:t});return!1===s&&r.header("Return-Retryable","false"),r}(e,s,i).code(t.statusOf[n]);return{permission:()=>n("permission","permission denied"),param:e=>n("param",e,{retryable:!1}),app:e=>n("app",e),output:e=>n("output",e),packet:e=>n("packet",e),internal:e=>n("internal",e)}},X=async(e,t,n,s)=>!0!==await async function(e){let t=!1;try{t=I(e),Gn(t)&&(t=await t)}catch(n){t=!1,console.log(`verifyConn error for apiType[${Ie(e,"apiType","")}]`,n),C("error",`verifyConn error for apiType[${Ie(e,"apiType","")}]: ${js(n)}`)}return!0===t}({apiType:n.apiType,authorization:t.authorization,query:t.query,headers:t.headers,req:e})?s.permission():(C("handler",{api:n.api,headers:t.headers,query:t.query}),null),E=(e,t,n,s)=>{let i=function(e,t){let n={};for(let s of t){let t=tr(`read field[${s}]`,()=>Ie(e,s));if(!t.ok)return{ok:!1,field:s,cause:t.cause,fields:n};n[s]=t.value}return{ok:!0,fields:n}}(e,n.fields.map(e=>e.name));if(!i.ok)return or(Ie(i.fields,"streamRead")),C("error",`download fileId[${t}] output error: can not read field[${i.field}]: ${i.cause}`),{ok:!1,res:s.output("invalid streamRead")};let r={streamRead:i.fields.streamRead};for(let e of n.fields){if("streamRead"===e.name)continue;let n=rr(e.name,i.fields[e.name]);if(n.ok){r[e.name]=n.value;continue}if(!0===e.optional&&!en(n.cause)){r[e.name]="";continue}or(r.streamRead);let o="fileSize"===e.name?`[${js(i.fields.fileSize)}]`:"";return C("error",`download fileId[${t}] output error: invalid ${e.name}${o}${en(n.cause)?`: ${n.cause}`:""}`),{ok:!1,res:s.output(`invalid ${e.name}`)}}return{ok:!0,v:r}},Y=async(e,t,n,s)=>{let i={},r="";await n.then(e=>{i.success=e,r="success"}).catch(e=>{i.error=e,r="error"});let o=function(e,t){let n={};for(let t of Object.keys(e))n[t]=ar(e[t]);let s=Os(n,{returnWithStateAndMsg:!0});return"success"!==Ie(s,"state")?(t(Ie(s,"msg","unknown error")),null):s.msg}(i,e=>{C("error",`${s} output can not be serialized: ${e}`)});return null===o?t.internal("output can not be serialized"):lr(e,o,{returnType:r,returnMsg:"need to parse"})},j=e=>(t,n,s)=>{if(413===Ie(s,"output.statusCode"))throw s;return C("error",`invalid request packet for ${e.api}: ${js(s)}`),A(n,e).packet("invalid request packet").takeover()},z={path:`/${u}/main`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ii.main,s=A(t,n),r=Z(e,n),o=await X(e,r,n,s);if(o)return o;let a=null;try{a=await(()=>{let t=Vn(),n=[],s=0,r=!1,o=new i.Writable({write(e,t,i){if(s+=e.length,s>y)return n=[],r=!0,void i();n.push(e),i()}});return o.on("finish",()=>{}),e.payload.pipe(o),e.payload.on("end",()=>{if(r)return void t.reject("payload too large");let e=Buffer.concat(n);n=[],t.resolve(e)}),e.payload.on("close",()=>{}),e.payload.on("error",e=>{console.log("apiMain req.payload err",e),C("error",`receive payload error: ${js(e)}`),t.reject(`receive payload error: ${js(e)}`)}),t})()}catch(e){if("payload too large"===e)return t.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${y}`}).code(413);throw e}let l=ei(new Uint8Array(a),{returnWithStateAndMsg:!0});if("success"!==Ie(l,"state")||!sn(l.msg)){let e=js(Ie(l,"msg",""));return C("error",`invalid request packet for apiMain: ${en(e)?e:"not an effective object"}`),s.packet("invalid request packet")}let c=l.msg;return Y(t,s,async function(e){return b("execute",[Ie(e,"func",""),Ie(e,"input",null)],t=>(e.output=t,delete e.input,e))}(c),`execute func[${js(Ie(c,"func",""))}]`)}},v={path:`/${u}/ulctr`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:j(ii.ulctr)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ii.ulctr,s=A(t,n),i=Z(e,n),r=await X(e,i,n,s);if(r)return r;let o=Ie(e,"payload.mode","");if("check-total-hash"!==o&&"check-slices-hash"!==o&&"merge-slices-push"!==o&&"merge-slices-get"!==o)return s.param(`invalid mode[${js(o)}] in payload`);let a=Ie(e,"payload.fileHash","");if(!ni(a))return s.param("invalid fileHash in payload");let l=Ie(e,"payload.chunkTotal","");if("merge-slices-push"===o){if(!xn(l))return s.param("invalid chunkTotal in payload");l=bn(l)}let c=Ie(e,"payload.filename",""),w=function(e,t="unknown"){if(!en(e))return t;let n=e.replace(/\\/g,"/").split("/").filter(e=>""!==e&&"."!==e&&".."!==e).pop()||"";return n=n.replace(/[\x00-\x1f\x7f<>:"|?*]/g,"_"),n=n.replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$/i.test(n)&&(n=`_${n}`),""===n?t:n}(c,""),u=e=>sn(e)&&Gs(e,"error")?`${o}: ${zs(e.error)}`:"",d=async(e,t)=>{try{return await t()}catch(t){return C("error",`upload-controller mode[${o}] ${e} error: ${js(t)}`),Promise.reject(`${o} failed`)}};return Y(t,s,(async()=>{let t=null;if("check-total-hash"===o){let n=Ie(e,"payload.fileSize","");t=await d("check total hash",()=>_i(n,L,a,M));let s=u(t);if(en(s))return Promise.reject(s);if(t.bAllHash){let e={from:"check-total-hash",filename:c,filenameSafe:w,path:t.path},n=await x(e);t={...t,msg:n}}delete t.path,t.sizeSlice=L}else if("check-slices-hash"===o){let n=Ie(e,"payload.fileSliceHashs",[]);t=await d("check slices hash",()=>er(n,a,M));let s=u(t);if(en(s))return Promise.reject(s)}else if("merge-slices-push"===o){t={queueId:await d("push merge task",()=>Bi(a,l,M))}}else if("merge-slices-get"===o){let n=Ie(e,"payload.queueId",""),s=await Fi(n,M,{funConsume:async e=>await x({from:"merge-slices-get",filename:c,filenameSafe:w,path:e}),funLog:e=>{C("error",e)}});t={state:s.state,msg:s.msg,queueId:n,filename:c},"error"===s.state&&en(s.reason)&&C("error",`${s.msg} for fileHash[${a}]: ${s.reason}`)}return t})(),`upload-controller mode[${o}]`)}},G={path:`/${u}/slc`,method:"POST",options:{payload:{maxBytes:L,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(n,s){let i=ii.slc,r=A(s,i),o=Z(n,i),a=await X(n,o,i,r);if(a)return a;let l=Ie(o.headers,"chunk-index",""),c=Ie(o.headers,"chunk-total",""),w=Ie(o.headers,"package-id","");if(!Kn(l))return r.param("invalid chunkIndex in headers");if(l=bn(l),!Kn(c))return r.param("invalid chunkTotal in headers");if(c=bn(c),!ni(w))return r.param("invalid packageId in headers");let u=e.resolve(M,`${w}_${l}`),d=t.createWriteStream(u),y=()=>{let e=Vn(),t=0,s=!1,i=!1,r=!1,o=!1;d.on("error",t=>{i||s||r||(i=!0,n.payload.unpipe(d),n.payload.resume(),console.log(`apiUploadSlice streamWrite chunk[${l+1}/${c}] of packageId[${w}] err`,t),C("error",`write chunk[${l+1}/${c}] of packageId[${w}] error: ${js(t)}`),e.reject(`write chunk[${l+1}/${c}] of packageId[${w}] error`))}),d.on("close",()=>{s||i||r?ti(u):o&&!0===d.writableFinished&&setTimeout(()=>{e.resolve(`chunk[${l+1}/${c}] of packageId[${w}] done`)},p)}),n.payload.on("data",e=>{s||(t+=e.length,t>L&&(s=!0,n.payload.unpipe(d),n.payload.resume(),d.destroy()))}),n.payload.pipe(d),n.payload.on("end",()=>{o=!0,i||s&&e.reject("payload too large")});let a=t=>{r||o||i||(r=!0,d.destroy(),C("error",`receive chunk[${l+1}/${c}] of packageId[${w}] error: ${t}`),e.reject(`receive chunk[${l+1}/${c}] of packageId[${w}] error: ${t}`))};return n.payload.on("error",e=>{console.log(`apiUploadSlice req.payload chunk[${l+1}/${c}] of packageId[${w}] err`,e),a(js(e))}),n.payload.on("close",()=>{a("closed before end")}),e},I={},D="",m="";try{let e=await y();I.success=e,D="success",m="need to parse"}catch(e){if("payload too large"===e)return s.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${L}`}).code(413);I.error=e,D="error",m="need to parse"}return lr(s,Os(I),{returnType:D,returnMsg:m})}},K={path:`/${u}/dwgfn`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:j(ii.dwgfn)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ii.dwgfn,s=A(t,n),i=Z(e,n),r=await X(e,i,n,s);if(r)return r;let o=Ie(e,"payload.fileId","");if(!en(o))return s.param("invalid fileId in payload");let a={fileId:o,token:i.token},l={};if(await T(a).then(e=>{l.success=e}).catch(e=>{l.error=e}),Gs(l,"error"))return s.app("can not get file from fileId");let c=E(Ie(l,"success"),o,n,s);return c.ok?(or(c.v.streamRead),Y(t,s,Promise.resolve({filename:c.v.filename}),`download fileId[${o}]`)):c.res}},W={path:`/${u}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let n=ii.dwgf,s=A(t,n),i=Z(e,n),r=await X(e,i,n,s);if(r)return r;let o=Ie(i.query,"fileId","");if(o=en(o)?o:"",!en(o))return s.param("invalid fileId in query");let a={fileId:o,token:i.token},l={};if(await T(a).then(e=>{l.success=e}).catch(e=>{l.error=e}),Gs(l,"error"))return s.app("can not get file from fileId");let c=E(Ie(l,"success"),o,n,s);if(!c.ok)return c.res;let M=c.v.streamRead,w=c.v.fileSize,u=c.v.fileType,d=c.v.filename,L=sr(M,w,e=>{C("error",`download fileId[${o}] stream error: ${e}`)},{forHead:"head"===zs(Ie(e,"method","")).toLowerCase()});if(L.error)return or(M),C("error",`download fileId[${o}] output error: ${L.reason}`),s.output(L.error);let y=t.response(L.source).type(u).header("Content-Encoding","identity").header("Content-Length",w).header("Content-Disposition",en(d)?`attachment; filename*=UTF-8''${function(e){let t=Array.from(zs(e)),n="";for(let e of t){let t="";try{t=encodeURIComponent(e)}catch(e){t="%EF%BF%BD"}n+=t}return n.replace(/['()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}(d)}`:"attachment");return y}},U={path:`/${u}/dw`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:j(ii.dw)},timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let n=ii.dw,s=A(t,n),i=Z(e,n),r=await X(e,i,n,s);if(r)return r;let o=Ie(e,"payload.fileId","");if(!en(o))return s.param("invalid fileId in payload");let a={fileId:o,token:i.token},l={};if(await T(a).then(e=>{l.success=e}).catch(e=>{l.error=e}),Gs(l,"error"))return s.app("can not get file from fileId");let c=E(Ie(l,"success"),o,n,s);if(!c.ok)return c.res;let M=c.v.streamRead,w=vs(c.v.filename),u=c.v.fileSize,d=c.v.fileType,L=sr(M,u,e=>{C("error",`download fileId[${o}] stream error: ${e}`)},{forHead:"head"===zs(Ie(e,"method","")).toLowerCase()});return L.error?(or(M),C("error",`download fileId[${o}] output error: ${L.reason}`),s.output(L.error)):t.response(L.source).type(d).header("Content-Encoding","identity").header("Content-Disposition",`attachment; filename="${w}"`).header("Content-Length",u)}};let Q=null;if(Ie(r,"serverHapi"))try{m.route([z,v,G,K,W,U])}catch(e){console.log("register routes error",e),h("error",`register routes error: ${js(e)}`)}else Q=async function(){l&&await m.register(s);let e=[];if(l){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${c}/`}}};e=[...e,t]}e=[...e,z,v,G,K,W,U],m.route(e),await m.start(),console.log(`Server running at: ${m.info.uri}`)}().catch(e=>{console.log("start server error",e),h("error",`start server error: ${js(e)}`)});return g.stop=async()=>{try{Gn(Q)&&await Q,await m.stop()}catch(e){console.log("stop server error",e),C("error",`stop server error: ${js(e)}`)}},g}var Mr=function(){return L.Date.now()},wr=Math.max,ur=Math.min;function dr(e,t,n){var s,i,r,o,a,l,c=0,M=!1,w=!1,u=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function d(t){var n=s,r=i;return s=i=void 0,c=t,o=e.apply(r,n)}function L(e){var n=e-l;return void 0===l||n>=t||n<0||w&&e-c>=r}function y(){var e=Mr();if(L(e))return I(e);a=setTimeout(y,function(e){var n=t-(e-l);return w?ur(n,r-(e-c)):n}(e))}function I(e){return a=void 0,u&&s?d(e):(s=i=void 0,o)}function D(){var e=Mr(),n=L(e);if(s=arguments,i=this,l=e,n){if(void 0===a)return function(e){return c=e,a=setTimeout(y,t),M?d(e):o}(l);if(w)return clearTimeout(a),a=setTimeout(y,t),d(l)}return void 0===a&&(a=setTimeout(y,t)),o}return t=dn(t)||0,S(n)&&(M=!!n.leading,r=(w="maxWait"in n)?wr(dn(n.maxWait)||0,t):r,u="trailing"in n?!!n.trailing:u),D.cancel=function(){void 0!==a&&clearTimeout(a),c=0,s=l=i=a=void 0},D.flush=function(){return void 0===a?o:I(Mr())},D}var Lr=function(){try{var e=V(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),yr=Lr;function Ir(e,t,n){"__proto__"==t&&yr?yr(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Dr(e,t,n){(void 0!==n&&!P(e[t],n)||void 0===n&&!(t in e))&&Ir(e,t,n)}var pr="object"==typeof exports&&exports&&!exports.nodeType&&exports,mr=pr&&"object"==typeof module&&module&&!module.nodeType&&module,gr=mr&&mr.exports===pr?L.Buffer:void 0,fr=gr?gr.allocUnsafe:void 0;function Cr(e,t){if(t)return e.slice();var n=e.length,s=fr?fr(n):new e.constructor(n);return e.copy(s),s}function hr(e){var t=new e.constructor(e.byteLength);return new ot(t).set(new ot(e)),t}function Nr(e,t){var n=t?hr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function br(e,t){var n=-1,s=e.length;for(t||(t=Array(s));++n<s;)t[n]=e[n];return t}var xr=Object.create,Tr=function(){function e(){}return function(t){if(!S(t))return{};if(xr)return xr(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),Sr=Tr;function Zr(e){return"function"!=typeof e.constructor||He(e)?{}:Sr(Tn(e))}function Ar(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var Xr=Object.prototype.hasOwnProperty;function Er(e,t,n){var s=e[t];Xr.call(e,t)&&P(s,n)&&(void 0!==n||t in e)||Ir(e,t,n)}function Yr(e,t,n,s){var i=!n;n||(n={});for(var r=-1,o=t.length;++r<o;){var a=t[r],l=s?s(n[a],e[a],a,n,e):void 0;void 0===l&&(l=e[a]),i?Ir(n,a,l):Er(n,a,l)}return n}var jr=Object.prototype.hasOwnProperty;function zr(e){if(!S(e))return function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}(e);var t=He(e),n=[];for(var s in e)("constructor"!=s||!t&&jr.call(e,s))&&n.push(s);return n}function vr(e){return Be(e)?Ve(e,!0):zr(e)}function Gr(e,t,n,s,i,r,o){var a=Ar(e,n),l=Ar(t,n),c=o.get(l);if(c)Dr(e,n,c);else{var M,u=r?r(a,l,n+"",e,t,o):void 0,d=void 0===u;if(d){var L=w(l),y=!L&&Ze(l),I=!L&&!y&&Ue(l);u=l,L||y||I?w(a)?u=a:h(M=a)&&Be(M)?u=br(a):y?(d=!1,u=Cr(l,!0)):I?(d=!1,u=Nr(l,!0)):u=[]:Yn(l)||be(l)?(u=a,be(a)?u=function(e){return Yr(e,vr(e))}(a):S(a)&&!Z(a)||(u=Zr(l))):d=!1}d&&(o.set(l,u),i(u,l,s,r,o),o.delete(l)),Dr(e,n,u)}}function Kr(e,t,n,s,i){e!==t&&me(t,function(r,o){if(i||(i=new tt),S(r))Gr(e,t,o,n,Kr,s,i);else{var a=s?s(Ar(e,o),r,o+"",e,t,i):void 0;void 0===a&&(a=r),Dr(e,o,a)}},vr)}var Wr=Math.max;var Ur=yr?function(e,t){return yr(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:qe,Qr=Ur,Vr=Date.now;var kr=function(e){var t=0,n=0;return function(){var s=Vr(),i=16-(s-n);if(n=s,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Qr),Hr=kr;function Jr(e,t){return Hr(function(e,t,n){return t=Wr(void 0===t?e.length-1:t,0),function(){for(var s=arguments,i=-1,r=Wr(s.length-t,0),o=Array(r);++i<r;)o[i]=s[t+i];i=-1;for(var a=Array(t+1);++i<t;)a[i]=s[i];return a[t]=n(o),function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}(e,this,a)}}(e,t,qe),e+"")}var Rr,Pr=(Rr=function(e,t,n){Kr(e,t,n)},Jr(function(e,t){var n=-1,s=t.length,i=s>1?t[s-1]:void 0,r=s>2?t[2]:void 0;for(i=Rr.length>3&&"function"==typeof i?(s--,i):void 0,r&&function(e,t,n){if(!S(n))return!1;var s=typeof t;return!!("number"==s?Be(n)&&Xe(t,n.length):"string"==s&&t in n)&&P(n[t],e)}(t[0],t[1],r)&&(i=s<3?void 0:i,s=1),e=Object(e);++n<s;){var o=t[n];o&&Rr(e,o,n,i)}return e}));function Or(e,n={}){let s={};if(sn(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Cs()),!Gs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let i=Ie(n,"fpTableTags","");en(i)||(i="./tableTags.json");let r=Ie(n,"genTag");vn(r)||(r=()=>Is()+"|"+ms(6));let o=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)};function a(){let e={};try{if(t.existsSync(i)){let n=tn(t.readFileSync(i,"utf8"));sn(n)&&(e=n)}}catch(e){o("error",{msg:"readTableTags catch",err:e})}return e}function l(){try{let e=function(e,t=!1,n={}){let s=Ie(n,"returnWithStateAndMsg",null);_t(s)||(s=!1);let i=e=>s?{state:"error",msg:e}:"";if(ns(e))return i("invalid v");let r="";try{r=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){return i(e.toString())}return s?{state:"success",msg:r}:r}(s);t.writeFileSync(i,e,"utf8")}catch(e){o("error",{msg:"writeTableTags catch",err:e})}}let c=dr(()=>{l(),o("changeTableTags",s)},200);return e.readTableTags=a,e.writeTableTags=l,e.initTableTags=function(e={},t="useInputFirst"){if("useInputOnly"===t)s=e;else if("useStorageOnly"===t)s=a();else if("useInputFirst"===t)s=Pr(a(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);s=Pr(e,a())}l()},e.setTableTags=function(e={}){s=Pr(s,e),l()},e.getTableTags=function(){return s},e.updateTableTag=function(e){s[e]=r(),c()},e}var Br=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)wt(t,Dt(e)),e=Tn(e);return t}:Lt,Fr=Br;function $r(e){return ut(e,vr,Fr)}var _r=Object.prototype.hasOwnProperty;var qr=/\w*$/;var eo=y?y.prototype:void 0,to=eo?eo.valueOf:void 0;function no(e,t,n){var s,i=e.constructor;switch(t){case"[object ArrayBuffer]":return hr(e);case"[object Boolean]":case"[object Date]":return new i(+e);case"[object DataView]":return function(e,t){var n=t?hr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Nr(e,n);case"[object Map]":case"[object Set]":return new i;case"[object Number]":case"[object String]":return new i(e);case"[object RegExp]":return function(e){var t=new e.constructor(e.source,qr.exec(e));return t.lastIndex=e.lastIndex,t}(e);case"[object Symbol]":return s=e,to?Object(to.call(s)):{}}}var so=Ke&&Ke.isMap,io=so?je(so):function(e){return h(e)&&"[object Map]"==zt(e)};var ro=Ke&&Ke.isSet,oo=ro?je(ro):function(e){return h(e)&&"[object Set]"==zt(e)},ao="[object Arguments]",lo="[object Function]",co="[object Object]",Mo={};function wo(e,t,n,s,i,r){var o,a=1&t,l=2&t,c=4&t;if(n&&(o=i?n(e,s,i,r):n(e)),void 0!==o)return o;if(!S(e))return e;var M=w(e);if(M){if(o=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&_r.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!a)return br(e,o)}else{var u=zt(e),d=u==lo||"[object GeneratorFunction]"==u;if(Ze(e))return Cr(e,a);if(u==co||u==ao||d&&!i){if(o=l||d?{}:Zr(e),!a)return l?function(e,t){return Yr(e,Fr(e),t)}(e,function(e,t){return e&&Yr(t,vr(t),e)}(o,e)):function(e,t){return Yr(e,Dt(e),t)}(e,function(e,t){return e&&Yr(t,Fe(t),e)}(o,e))}else{if(!Mo[u])return i?e:{};o=no(e,u,a)}}r||(r=new tt);var L=r.get(e);if(L)return L;r.set(e,o),oo(e)?e.forEach(function(s){o.add(wo(s,t,n,s,e,r))}):io(e)&&e.forEach(function(s,i){o.set(i,wo(s,t,n,i,e,r))});var y=M?void 0:(c?l?$r:pt:l?vr:Fe)(e);return De(y||e,function(s,i){y&&(s=e[i=s]),Er(o,i,wo(s,t,n,i,e,r))}),o}Mo[ao]=Mo["[object Array]"]=Mo["[object ArrayBuffer]"]=Mo["[object DataView]"]=Mo["[object Boolean]"]=Mo["[object Date]"]=Mo["[object Float32Array]"]=Mo["[object Float64Array]"]=Mo["[object Int8Array]"]=Mo["[object Int16Array]"]=Mo["[object Int32Array]"]=Mo["[object Map]"]=Mo["[object Number]"]=Mo[co]=Mo["[object RegExp]"]=Mo["[object Set]"]=Mo["[object String]"]=Mo["[object Symbol]"]=Mo["[object Uint8Array]"]=Mo["[object Uint8ClampedArray]"]=Mo["[object Uint16Array]"]=Mo["[object Uint32Array]"]=!0,Mo["[object Error]"]=Mo[lo]=Mo["[object WeakMap]"]=!1;function uo(e){return wo(e,5)}function Lo(e={}){let t=Cs(),n={},s=null,i=Ie(e,"timeAlive");xn(i)||(i=1e4),i=bn(i),i=Math.min(i,hs);let r=Ie(e,"timeDetect");return xn(r)||(r=50),r=bn(r),r=Math.min(r,hs),t.trigger=function(e,o){en(e)?(Gs(n,e)||setTimeout(()=>{xs(t,"message",[{eventName:"enter",key:e,data:o,now:fi(n)}],{tag:"alive"})},1),n[e]={data:o,time:Date.now()},null===s&&(s=setInterval(()=>{et(n,(e,s)=>{if(Date.now()-e.time>i){let e=uo(n[s]);delete n[s],xs(t,"message",[{eventName:"leave",key:s,data:e.data,now:fi(n)}],{tag:"alive"})}}),sn(n)||(clearInterval(s),s=null)},r))):console.log("trigger need key")},t.get=function(){let e=[];return et(n,(t,n)=>{e.push({key:n,data:t.data})}),e=uo(e),e},t}function yo(e,t={}){let n={};if(sn(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Cs()),!Gs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let s=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)},i=Lo(),r=setInterval(()=>{let e=$t(i.get(),"key"),t={};et(e,e=>{t[e]=Ie(n,e,[])}),n=t},1e3);i.on("message",function({eventName:e,key:t,data:n,now:i}){"enter"===e?s("clientEnter",t,n):"leave"===e&&s("clientLeave",t,n),s("clientChange",i)}),e.on("execute",function(e,t,r){if("[sys:polling]"===e)try{let e=Ie(t,"clientId",""),s=Ie(n,e,[]);s=uo(s),n[e]=[],i.trigger(e,t),r.resolve(s)}catch(e){s("error",e),r.reject("[sys:polling] error")}});return e.getClients=i.get,e.getMessages=()=>uo(n),e.broadcast=e=>{if(!sn(n))return;let t={};et(n,(n,s)=>{n.push({mode:"broadcast",data:e}),t[s]=n}),n=t},e.clearBroadcast=()=>{clearInterval(r)},e}let Io=(e,t)=>{let n={};return et(e,e=>{let s=e,i=Ie(t,e,"");en(i)&&(n[s]=i)}),n};function Do(e,t,n,s={}){if(!sn(e))throw new Error("invalid instWConverServer");if(0===fi(t))return e;if(!sn(n))return e;let i=Ie(s,"genTag");vn(i)||(i=()=>Is()+"|"+ms(6));let r={};return et(t,e=>{r[e]=i()}),e.initTableTags(r,"useInputOnly"),et(t,t=>{let s=n[t];if(!s)throw new Error(`invalid kpOrm[${t}]`);try{s.on("change",()=>{e.updateTableTag(t)})}catch(e){throw new Error(`kpOrm[${t}] can not listen to change events`)}}),e.on("changeTableTags",n=>{e.broadcast({mode:"syncKpTable",data:Io(t,n)})}),e}function po(e,t,n,s){for(var i=n-1,r=e.length;++i<r;)if(s(e[i],t))return i;return-1}var mo=Array.prototype.splice;function go(e,t){return e&&e.length&&t&&t.length?function(e,t,n,s){var i=s?po:Ni,r=-1,o=t.length,a=e;for(e===t&&(t=br(t)),n&&(a=le(e,je(n)));++r<o;)for(var l=0,c=t[r],M=n?n(c):c;(l=i(a,M,l,s))>-1;)a!==e&&mo.call(a,l,1),mo.call(e,l,1);return e}(e,t):e}function fo(e,t={}){if(!sn(e))throw new Error("invalid instWConverServer");let n=Ie(t,"getUserIdByToken",null);vn(n)||(n=async()=>"");let s=Ie(t,"useDbOrm",null);_t(s)||(s=!1);let i=null;if(s&&(i=Ie(t,"operOrm",null),!vn(i)))throw new Error("invalid opt.operOrm when useDbOrm=true");let r=[];if(s&&(r=Ie(t,"tableNames",null),!rn(r)))throw new Error("invalid opt.tableNames when useDbOrm=true");let o=[];s&&(o=Ie(t,"methods",null),rn(o)||(o=["select","insert","save","del"]));let a=Ie(t,"kpFunExt",null);let l={};async function c(e,t,s){if(!en(e))return s.resolve({state:"error",msg:"invalid func"}),s;let i="";if(!Gs(t,"__sysToken__"))return s.resolve({state:"error",msg:"invalid token"}),s;if(i=zs(t.__sysToken__),!Gs(t,"__sysInputArgs__"))return s.resolve({state:"error",msg:"invalid input"}),s;t=t.__sysInputArgs__;let r="";if(r=n(i),Gn(r)&&(r=await r),en(r)||(r=""),"[sys:getFuncList]"===e){let e=Fe(l);e=function(e,t){if(!os(e))return[];if((nn(t)||pn(t)||qt(t)||_t(t))&&(t=[t]),!os(t))return e;let n=uo(e);return go(n,t),n}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return s.resolve(t),s}if(!Gs(l,e))return s.resolve({state:"error",msg:`invalid func[${e}]`}),s;let o=l[e];try{let e=await kn(o)(r,...t);s.resolve(e)}catch(t){s.resolve({state:"error",msg:`call func[${e}] has an error: ${t.message}`})}return s}return s&&(r=uo(r),l=function(e,t,n){let s={};return et(e,e=>{et(t,t=>{s[`${e}.${t}`]=async function(s,i){return await n(s,e,t,i)}})}),s}(r,o,i)),sn(a)&&et(a,(e,t)=>{l[t]=e}),e.on("execute",async function(t,n,s){await c(t,n,s).catch(n=>{e.emit("error",n),s.resolve({state:"error",msg:`execFun func[${t}] has an error: ${n.message}`})})}),e}function Co(e,t={}){if(sn(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Cs()),!Gs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=Ie(t,"fpTableTags",null);en(n)||(n="./tableTags.json");let s=Ie(t,"genTag");vn(s)||(s=()=>Is()+"|"+ms(6)),e=new yo(e=new Or(e,{fpTableTags:n,genTag:s}));let i=Ie(t,"useDbOrm",null);_t(i)||(i=!0);let r=Ie(t,"kpOrm",null),o=Ie(t,"operOrm",null),a=Ie(t,"tableNamesExec",null),l=Ie(t,"methodsExec",null),c=Ie(t,"tableNamesSync",null),M=Ie(t,"getUserIdByToken",null),w=Ie(t,"kpFunExt",null);if(sn(w)||(w={}),w={...w,"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:Io(c,t)}}},e=new fo(e,{getUserIdByToken:M,useDbOrm:i,operOrm:o,tableNames:a,methods:l,kpFunExt:w}),i){if(!nn(r))return e.emit("error","invalid opt.kpOrm when useDbOrm=true"),e;e=new Do(e,c,r,{genTag:s})}return e}function ho(e={}){let t=Cs(),i=null,r=null,o=Ie(e,"port");gn(o)||(o=8080);let a=Ie(e,"corsOrigins",[]);os(a)||(a=["http://localhost"]);let l=Ie(e,"delayForSlice","");Kn(l)||(l=100),l=bn(l);let c=Ie(e,"useInert");_t(c)||(c=!0);let M=Ie(e,"pathStaticFiles");en(M)||(M="dist");let w=Ie(e,"apis");os(w)||(w=[]);let u=Ie(e,"apiName");en(u)||(u="api");let d=Ie(e,"pathUploadTemp");en(d)||(d="./uploadTemp"),Ms(d)||bs(d);let L=Ie(e,"tokenType");en(L)||(L="Bearer");let y=Ie(e,"sizeSlice");xn(y)||(y=1048576);let I=Ie(e,"sizeMsg");xn(I)||(I=104857600);let D=Ie(e,"verifyConn");vn(D)||(D=()=>!0);let p=Ie(e,"getUserIdByToken",null),m=Ie(e,"useDbOrm",null);_t(m)||(m=!0);let g=Ie(e,"kpOrm",null),f=Ie(e,"operOrm",null),C=Ie(e,"tableNamesExec",null),h=Ie(e,"methodsExec",null),N=Ie(e,"tableNamesSync",null),b=Ie(e,"kpFunExt",null),x=Ie(e,"fpTableTags",null);en(x)||(x=Ie(e,"fnTableTags",null));let T=Ie(e,"genTag");vn(T)||(T=()=>Is()+"|"+ms(6));let S=Ie(e,"useShowLog");_t(S)||(S=!0);(async()=>{await(async()=>{i=new n.Server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:a,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}}}),c&&await i.register(s);let e=[];c&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${M}/`}}}]),e=[...e,...w],i.route(e)})(),await(async()=>{r=new cr({serverHapi:i,apiName:u,pathUploadTemp:d,tokenType:L,sizeSlice:y,sizeMsg:I,verifyConn:D,corsOrigins:a,delayForSlice:l}),r.on("clientChange",function(e){S&&console.log(`Server[port:${o}]: now clients: ${e}`)})})(),await(async()=>{r=new Co(r,{getUserIdByToken:p,useDbOrm:m,kpOrm:g,operOrm:f,tableNamesExec:C,tableNamesSync:N,methodsExec:h,kpFunExt:b,fpTableTags:x,genTag:T}),r.on("error",e=>{t.emit("error",e)})})(),await i.start(),S&&console.log(`Server running at: ${i.info.uri}`)})().catch(e=>{t.emit("error",e)}),process.on("unhandledRejection",e=>{console.log("unhandledRejection",e),t.emit("error",{mode:"unhandledRejection",err:e})}),process.on("uncaughtException",e=>{console.log("uncaughtException",e),t.emit("error",{mode:"uncaughtException",err:e})});return t.getServer=async()=>(await Ns(()=>null!==i),i),t.getInstWConverServer=async()=>(await Ns(()=>null!==r),r),t}function No(e,t){let n=Vn();if(!rn(e)&&!nn(e))return n.reject("rs is not an array or object"),n;let s=!1;if(nn(e)){s=!0;let t=[];et(e,(e,n)=>{t.push({k:n,v:e})}),e=t}vn(t)||(t=function(e){return e});let i=-1,r=[];return e.reduce(function(e,n){return e.then(function(e){r.push(e),i+=1;let o=i,a=n;return s&&(o=n.k,a=n.v),vn(t)?t(a,o):a})},Promise.resolve()).then(function(e){var t,s,i,o;r.push(e),o=null==(t=r)?0:t.length,r=o?Ci(t,(s=i||void 0===s?1:In(s))<0?0:s,o):[],n.resolve(r)}).catch(function(e){n.reject(e)}),n}let bo={backup:async function(e){return await No(e,async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()}))},recover:async function(e,n,s,i=!1){if(!us(e))throw console.log("fp",e),new Error("fp is not exist");if(!sn(n))throw console.log("woItems",n),new Error("invalid woItems");vn(s)||(s=null),_t(i)||(i=!1);let r=t.readFileSync(e,"utf8");r=Ki(r);let o=tn(r);vn(s)&&s(),await No(o,async e=>{console.log("recover...",e.name),i&&(console.log("needCreateStorage"),await n[e.name].createStorage());let t=null;return fi(e.data)>0&&(t=await n[e.name].insert(e.data)),t})}};function xo(){if(!vn(ys))throw new Error("invalid dayjs");return ys().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}var To={exports:{}},So={},Zo={exports:{}},Ao={};function Xo(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var Eo=/javascript\s*\:/gim;Ao.whiteList=Xo(),Ao.getDefaultWhiteList=Xo,Ao.onAttr=function(e,t,n){},Ao.onIgnoreAttr=function(e,t,n){},Ao.safeAttrValue=function(e,t){return Eo.test(t)?"":t};var Yo={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,i;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,i=e.length;s<i;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}};var jo=function(e,t){";"!==(e=Yo.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,s=!1,i=0,r=0,o="";function a(){if(!s){var n=Yo.trim(e.slice(i,r)),a=n.indexOf(":");if(-1!==a){var l=Yo.trim(n.slice(0,a)),c=Yo.trim(n.slice(a+1));if(l){var M=t(i,o.length,l,c,n);M&&(o+=M+"; ")}}}i=r+1}for(;r<n;r++){var l=e[r];if("/"===l&&"*"===e[r+1]){var c=e.indexOf("*/",r+2);if(-1===c)break;i=(r=c+1)+1,s=!1}else"("===l?s=!0:")"===l?s=!1:";"===l?s||a():"\n"===l&&a()}return Yo.trim(o)},zo=Ao,vo=jo;function Go(e){return null==e}function Ko(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||zo.whiteList,e.onAttr=e.onAttr||zo.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||zo.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||zo.safeAttrValue,this.options=e}Ko.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,s=t.onAttr,i=t.onIgnoreAttr,r=t.safeAttrValue;return vo(e,function(e,t,o,a,l){var c=n[o],M=!1;if(!0===c?M=c:"function"==typeof c?M=c(a):c instanceof RegExp&&(M=c.test(a)),!0!==M&&(M=!1),a=r(o,a)){var w,u={position:t,sourcePosition:e,source:l,isWhite:M};return M?Go(w=s(o,a,u))?o+":"+a:w:Go(w=i(o,a,u))?void 0:w}})};var Wo=Ko;!function(e,t){var n=Ao,s=Wo;for(var i in(t=e.exports=function(e,t){return new s(t).process(e)}).FilterCSS=s,n)t[i]=n[i];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(Zo,Zo.exports);var Uo=Zo.exports,Qo={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,i;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,i=e.length;s<i;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}},Vo=Uo.FilterCSS,ko=Uo.getDefaultWhiteList,Ho=Qo;function Jo(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var Ro=new Vo;function Po(e){return e.replace(Oo,"<").replace(Bo,">")}var Oo=/</g,Bo=/>/g,Fo=/"/g,$o=/"/g,_o=/&#([a-zA-Z0-9]*);?/gim,qo=/:?/gim,ea=/&newline;?/gim,ta=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,na=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,sa=/u\s*r\s*l\s*\(.*/gi;function ia(e){return e.replace(Fo,""")}function ra(e){return e.replace($o,'"')}function oa(e){return e.replace(_o,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function aa(e){return e.replace(qo,":").replace(ea," ")}function la(e){for(var t="",n=0,s=e.length;n<s;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return Ho.trim(t)}function ca(e){return e=la(e=aa(e=oa(e=ra(e))))}function Ma(e){return e=Po(e=ia(e))}So.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},So.getDefaultWhiteList=Jo,So.onTag=function(e,t,n){},So.onIgnoreTag=function(e,t,n){},So.onTagAttr=function(e,t,n){},So.onIgnoreTagAttr=function(e,t,n){},So.safeAttrValue=function(e,t,n,s){if(n=ca(n),"href"===t||"src"===t){if("#"===(n=Ho.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"data:image/"!==n.substr(0,11)&&"ftp://"!==n.substr(0,6)&&"./"!==n.substr(0,2)&&"../"!==n.substr(0,3)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(ta.lastIndex=0,ta.test(n))return""}else if("style"===t){if(na.lastIndex=0,na.test(n))return"";if(sa.lastIndex=0,sa.test(n)&&(ta.lastIndex=0,ta.test(n)))return"";!1!==s&&(n=(s=s||Ro).process(n))}return n=Ma(n)},So.escapeHtml=Po,So.escapeQuote=ia,So.unescapeQuote=ra,So.escapeHtmlEntities=oa,So.escapeDangerHtml5Entities=aa,So.clearNonPrintableCharacter=la,So.friendlyAttrValue=ca,So.escapeAttrValue=Ma,So.onIgnoreTagStripAll=function(){return""},So.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),s=[],i=!1;return{onIgnoreTag:function(r,o,a){if(function(t){return!!n||-1!==Ho.indexOf(e,t)}(r)){if(a.isClosing){var l="[/removed]",c=a.position+10;return s.push([!1!==i?i:a.position,c]),i=!1,l}return i||(i=a.position),"[removed]"}return t(r,o,a)},remove:function(e){var t="",n=0;return Ho.forEach(s,function(s){t+=e.slice(n,s[0]),n=s[1]}),t+=e.slice(n)}}},So.stripCommentTag=function(e){for(var t="",n=0;n<e.length;){var s=e.indexOf("\x3c!--",n);if(-1===s){t+=e.slice(n);break}t+=e.slice(n,s);var i=e.indexOf("--\x3e",s);if(-1===i)break;n=i+3}return t},So.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))})).join("")},So.attributeWrapSign='"',So.cssFilter=Ro,So.getDefaultCSSWhiteList=ko;var wa={},ua=Qo;function da(e){var t,n=ua.spaceIndex(e);return t=-1===n?e.slice(1,-1):e.slice(1,n+1),"/"===(t=ua.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function La(e){return"</"===e.slice(0,2)}var ya=/[^a-zA-Z0-9\\_:.-]/gim;function Ia(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function Da(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"'"===n||'"'===n?t:-1}}function pa(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function ma(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}wa.parseTag=function(e,t,n){var s="",i=0,r=!1,o=!1,a=0,l=e.length,c="",M="";e:for(a=0;a<l;a++){var w=e.charAt(a);if(!1===r){if("<"===w){r=a;continue}}else if(!1===o){if("<"===w){s+=n(e.slice(i,a)),r=a,i=a;continue}if(">"===w||a===l-1){s+=n(e.slice(i,r)),c=da(M=e.slice(r,a+1)),s+=t(r,s.length,c,M,La(M)),i=a+1,r=!1;continue}if('"'===w||"'"===w)for(var u=1,d=e.charAt(a-u);""===d.trim()||"="===d;){if("="===d){o=w;continue e}d=e.charAt(a-++u)}}else if(w===o){o=!1;continue}}return i<l&&(s+=n(e.substr(i))),s},wa.parseAttr=function(e,t){var n=0,s=0,i=[],r=!1,o=e.length;function a(e,n){if(!((e=(e=ua.trim(e)).replace(ya,"").toLowerCase()).length<1)){var s=t(e,n||"");s&&i.push(s)}}for(var l=0;l<o;l++){var c,M=e.charAt(l);if(!1!==r||"="!==M)if(!1===r||l!==s)if(/\s|\n|\t/.test(M)){if(e=e.replace(/\s|\n|\t/g," "),!1===r){if(-1===(c=Ia(e,l))){a(ua.trim(e.slice(n,l))),r=!1,n=l+1;continue}l=c-1;continue}if(-1===(c=pa(e,l-1))){a(r,ma(ua.trim(e.slice(n,l)))),r=!1,n=l+1;continue}}else;else{if(-1===(c=e.indexOf(M,l+1)))break;a(r,ua.trim(e.slice(s+1,c))),r=!1,n=(l=c)+1}else r=e.slice(n,l),n=l+1,s='"'===e.charAt(n)||"'"===e.charAt(n)?n:Da(e,l+1)}return n<e.length&&(!1===r?a(e.slice(n)):a(r,ma(ua.trim(e.slice(n))))),ua.trim(i.join(" "))};var ga=Uo.FilterCSS,fa=So,Ca=wa,ha=Ca.parseTag,Na=Ca.parseAttr,ba=Qo;function xa(e){return null==e}function Ta(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=fa.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var n in e)Array.isArray(e[n])?t[n.toLowerCase()]=e[n].map(function(e){return e.toLowerCase()}):t[n.toLowerCase()]=e[n];return t}(e.whiteList||e.allowList):e.whiteList=fa.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":fa.attributeWrapSign,e.onTag=e.onTag||fa.onTag,e.onTagAttr=e.onTagAttr||fa.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||fa.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||fa.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||fa.safeAttrValue,e.escapeHtml=e.escapeHtml||fa.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new ga(e.css))}Ta.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,n=t.options,s=n.whiteList,i=n.onTag,r=n.onIgnoreTag,o=n.onTagAttr,a=n.onIgnoreTagAttr,l=n.safeAttrValue,c=n.escapeHtml,M=t.attributeWrapSign,w=t.cssFilter;n.stripBlankChar&&(e=fa.stripBlankChar(e)),n.allowCommentTag||(e=fa.stripCommentTag(e));var u=!1;n.stripIgnoreTagBody&&(u=fa.StripTagBody(n.stripIgnoreTagBody,r),r=u.onIgnoreTag);var d=ha(e,function(e,t,n,u,d){var L={sourcePosition:e,position:t,isClosing:d,isWhite:Object.prototype.hasOwnProperty.call(s,n)},y=i(n,u,L);if(!xa(y))return y;if(L.isWhite){if(L.isClosing)return"</"+n+">";var I=function(e){var t=ba.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=ba.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=ba.trim(e.slice(0,-1))),{html:e,closing:n}}(u),D=s[n],p=Na(I.html,function(e,t){var s=-1!==ba.indexOf(D,e),i=o(n,e,t,s);return xa(i)?s?(t=l(n,e,t,w))?e+"="+M+t+M:e:xa(i=a(n,e,t,s))?void 0:i:i});return u="<"+n,p&&(u+=" "+p),I.closing&&(u+=" /"),u+=">"}return xa(y=r(n,u,L))?c(u):y},c);return u&&(d=u.remove(d)),d};var Sa=Ta;!function(e,t){var n=So,s=wa,i=Sa;function r(e,t){return new i(t).process(e)}(t=e.exports=r).filterXSS=r,t.FilterXSS=i,function(){for(var e in n)t[e]=n[e];for(var i in s)t[i]=s[i]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(To,To.exports);var Za=Jn(To.exports);function Aa(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}function Xa(e){let t=function(){let e=Aa();return Za||e.xss}();let n=function e(n){return rn(n)||nn(n)?(et(n,function(t,s){n[s]=e(t)}),n):en(n)?t(n,{onIgnoreTagAttr:function(e,n,s,i){if("style"===n)return n+'="'+t.escapeAttrValue(s)+'"'}}):n}(uo(e));return n}let Ea=null,Ya=null;function ja(e,t,n,s="save"){if(!sn(Ea))throw console.log("ds",Ea),new Error("invalid ds");let i=Ea[e].keys,r=!1;rn(n)||(r=!0,n=[n]);let o=xo();return s.indexOf("insert")>=0&&(i.indexOf("userId")>=0&&et(n,(e,s)=>{n[s].userId=t}),i.indexOf("timeCreate")>=0&&et(n,(e,t)=>{n[t].timeCreate=o}),i.indexOf("userIdUpdate")>=0&&et(n,(e,s)=>{n[s].userIdUpdate=t}),i.indexOf("timeUpdate")>=0&&et(n,(e,t)=>{n[t].timeUpdate=o})),(s.indexOf("insert")>=0||s.indexOf("save")>=0)&&(i.indexOf("userIdUpdate")>=0&&et(n,(e,s)=>{n[s].userIdUpdate=t}),i.indexOf("timeUpdate")>=0&&et(n,(e,t)=>{n[t].timeUpdate=o})),n=$t(n,(e,t)=>{let n={};return et(e,(e,t)=>{e=Xa(e),n[t]=e}),n}),n=r?n[0]:n}async function za(e,t,n,s){let i,r=null;if(!sn(Ya))return Promise.reject("無有效woItems");let o=Ie(Ya,t,null);if(null===o)return Promise.reject(`ORM找不到表名稱: ${t}`);if("select"===n){if(i=await o.select(s).catch(e=>{console.log(`${t}.select catch`,e),r="取得資料失敗"}),en(r))return Promise.reject(r)}else if("insert"===n||"save"===n){try{s=ja(t,e,s,n)}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if("insert"===n?i=await o.insert(s).catch(e=>{console.log(`${t}.save catch`,e),r="新增資料失敗"}):"save"===n&&(i=await o.save(s).catch(e=>{console.log(`${t}.save catch`,e),r="儲存資料失敗"})),en(r))return Promise.reject(r);i=rn(s)?$t(s,e=>({id:e.id})):{id:s.id}}else if("del"===n)i=await o.del(s).catch(e=>{console.log(`${t}.del catch`,e),r="刪除資料失敗"});else if("delAll"===n)i=await o.delAll(s).catch(e=>{console.log(`${t}.delAll catch`,e),r="刪除資料失敗"});else if("mix"===n){if(!sn(s))return Promise.reject("mix僅支援輸入ltdtDiffByKey結果物件");let n;i=[];let a=Ie(s,"add",[]);if(fi(a)>0){try{a=ja(t,e,a,"insert+save")}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.insert(a).catch(e=>{console.log(`${t}.save catch`,e),r="新增資料失敗"}),en(r))return Promise.reject(r);n=$t(a,e=>({id:e.id})),i=[...i,...n]}let l=Ie(s,"del",[]);if(fi(l)>0){if(await o.del(l).catch(e=>{console.log(`${t}.save catch`,e),r="刪除資料失敗"}),en(r))return Promise.reject(r);n=$t(l,e=>({id:e.id})),i=[...i,...n]}let c=Ie(s,"diff",[]);if(fi(c)>0){try{c=ja(t,e,c)}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.save(c).catch(e=>{console.log(`${t}.save catch`,e),r="變更資料失敗"}),en(r))return Promise.reject(r);n=$t(c,e=>({id:e.id})),i=[...i,...n]}}else r=`invalid mode: ${n}`;return en(r)?Promise.reject(r):i}function va(e,t){return Ea=e,Ya=t,za}function Ga(e,t){var n=[];return _e(e,function(e,s,i){t(e,s,i)&&n.push(e)}),n}function Ka(e,t){return(w(e)?dt:Ga)(e,Bt(t))}function Wa(e,t=null){if(!rn(e)){let e=Vn();return e.reject("pms is not an array"),e}return e.reduce((e,t)=>e.then(t),Promise.resolve(t))}let Ua=[],Qa=[],Va=[],ka=null,Ha=null,Ja=!0,Ra=!0;function Pa(e){setTimeout(()=>{Ua.push(e)},1)}function Oa(e){setTimeout(()=>{Qa.push(e)},1)}function Ba(e){setTimeout(()=>{Va.push(e)},1)}async function Fa(e,t,n,s){if(!vn(ka))return Promise.reject("invalid mapOrm");if(Ja&&!en(e))return console.log("userId",e),console.log("找不到使用者主鍵"),Promise.reject("找不到使用者主鍵");let i="n";if(Ja){if(!vn(Ha))return Promise.reject("invalid getUserById");let t=await Ha(e);if(!t)return console.log("userId",e),console.log("找不到使用者資訊"),Promise.reject("找不到使用者資訊");i=Ie(t,"isAdmin"),"y"!==i&&"n"!==i&&(i="n");let n=Ie(t,"isActive");if("y"!==n&&"n"!==n&&(n="n"),"y"!==n)return console.log("userId",e),console.log("oSelf",t),console.log("使用者被停權或無有效使用者資訊"),Promise.reject("使用者被停權或無有效使用者資訊")}if(await No(Ua,r=>r({woName:t,userId:e,isAdmin:i,mode:n,input:s})),fi(Qa)>0){let r={woName:t,userId:e,isAdmin:i,mode:n,input:s},o=await Wa(Qa,r);s=o.input}let r=await ka(e,t,n,s);return Ra&&"n"===i&&"select"===n&&rn(r)&&(r=Ka(r,e=>!Gs(e,"isActive")||!("n"===e.isActive))),fi(Va)>0&&(r=await Wa(Va,{woName:t,userId:e,isAdmin:i,mode:n,input:s,output:r})),r}function $a(e,t,n,s,i={}){let r=function(e,t,n,s){if(!sn(e))throw console.log("ds",e),new Error("invalid ds");if(!vn(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!en(n))throw console.log("url",n),new Error("invalid url");if(!en(s))throw console.log("db",s),new Error("invalid db");let i={};return et(Fe(e),e=>{let r=new t({url:n,db:s,cl:e});i[e]=r}),i}(e,t,n,s),o=function(e,t={}){return vn(e)?(ka=e,Ja=Ie(t,"useCheckUser"),_t(Ja)||(Ja=!0),Ha=Ie(t,"getUserById"),Ra=Ie(t,"useExcludeWhenNotAdmin"),_t(Ra)||(Ra=!0),{addFunCheck:Pa,addFunPreProcessing:Oa,addFunPostProcessing:Ba,procOrm:Fa}):Promise.reject("invalid mapOrm")}(va(e,r),i);return{...bo,woItems:r,closeAll:async()=>{await No(r,async e=>{e&&vn(e.close)&&await e.close()})},...o}}let _a={csIng:{eng:"Connecting...",cht:"連線中..."},csLogin:{eng:"Logged in",cht:"已登入"},csLogout:{eng:"Logged out",cht:"已登出"},csErrConn:{eng:"Unable to connect",cht:"無法連線"},csErrLogin:{eng:"Login denied",cht:"拒絕登入"},systemMessage:{eng:"System message",cht:"系統確認訊息"},ok:{eng:"OK",cht:"確認"},treeRootAll:{eng:"All",cht:"全部"},no:{eng:"No",cht:"取消"},yes:{eng:"Yes",cht:"確定"},empty:{eng:"Empty",cht:"無"},waitingData:{eng:"Waiting data...",cht:"等待數據中..."},id:{eng:"Id",cht:"主鍵"},save:{eng:"Save",cht:"儲存"},close:{eng:"Close",cht:"關閉"},delete:{eng:"Delete",cht:"刪除"},cancel:{eng:"Cancel",cht:"取消"},processing:{eng:"Processing...",cht:"處理中請稍後..."},anUnexpectedErrorOccurred:{eng:"An unexpected error occurred, please contact the administrator",cht:"發生非預期錯誤,請洽管理員"},username:{eng:"Username",cht:"使用者姓名"},email:{eng:"Email",cht:"電子郵件"},name:{eng:"Name",cht:"名稱"},description:{eng:"Description",cht:"說明"},menuTreeShow:{eng:"Show API list",cht:"顯示API清單"},menuTreeHide:{eng:"Hide API list",cht:"隱藏API清單"},noSelectApi:{eng:"No Select",cht:"尚未選擇API"},tokens:{eng:"Tokens",cht:"授權金鑰"},apiUrl:{eng:"API url",cht:"API網址"},version:{eng:"Version",cht:"版本"},levels:{eng:"Levels",cht:"所屬階層"},keywords:{eng:"Keywords",cht:"關鍵字"},state:{eng:"State",cht:"狀態"},timeCreate:{eng:"Create time",cht:"創建時間"},timeUpdate:{eng:"Update time",cht:"更新時間"},creator:{eng:"Creator",cht:"API創建者"},dataSource:{eng:"Source",cht:"資料提供者"},isActive:{eng:"Active",cht:"有效"},mdInputParams:{eng:"Input",cht:"輸入參數資訊或結構"},inputExample:{eng:"Input example",cht:"輸入範例"},mdOutputParams:{eng:"Output",cht:"回傳數據結構"},outputExample:{eng:"Output example",cht:"回傳數據範例"},docInput:{eng:"Input",cht:"輸入參數"},docOutputFields:{eng:"Output fields",cht:"回傳欄位"},docRequest:{eng:"Request",cht:"請求"},tabDocs:{eng:"Docs",cht:"文件"},tabEdit:{eng:"Edit",cht:"編輯"},tabTest:{eng:"Test",cht:"測試"},mmApi:{eng:"API",cht:"API"},mmStaInfor:{eng:"Statistics",cht:"統計資訊"},statisticsInformation:{eng:"Statistics Information",cht:"統計資訊"},statisticsInformationDescription:{eng:"Frequency of backend logged events (APIs, kpFunExt, connection verification).",cht:"後端各事件(API、kpFunExt、連線驗證)之發生頻率統計。"},eventStatsTable:{eng:"Event Statistics",cht:"事件統計表"},colEvent:{eng:"Event",cht:"事件"},colRecent1day:{eng:"Last 1 day",cht:"最近1日"},colRecent8hr:{eng:"Last 8 hr",cht:"最近8時"},colRecent4hr:{eng:"Last 4 hr",cht:"最近4時"},colRecent1hr:{eng:"Last 1 hr",cht:"最近1時"},timeRange:{eng:"Time range",cht:"時間範圍"},selectItem1hr:{eng:"1 hour",cht:"1小時"},selectItem4hr:{eng:"4 hours",cht:"4小時"},selectItem8hr:{eng:"8 hours",cht:"8小時"},selectItem1day:{eng:"1 day",cht:"1天"},noStaData:{eng:"No statistics data",cht:"尚無統計資料"},getDataError:{eng:"Failed to get data",cht:"取得資料失敗"},addApi:{eng:"New API",cht:"新增API"},confirmDeleteApi:{eng:"Are you sure you want to delete this API?",cht:"確定要刪除此API?"},saveSuccess:{eng:"Saved",cht:"已儲存"},deleteSuccess:{eng:"Deleted",cht:"已刪除"},searchApiPlaceholder:{eng:"Search API...",cht:"搜尋API..."},fieldMethod:{eng:"Method",cht:"方法"},fieldGroup:{eng:"Group",cht:"群組"},fieldOrder:{eng:"Order",cht:"順序"},fieldTestBaseUrl:{eng:"Test base URL",cht:"測試基底網址"},fieldAuthType:{eng:"Auth type",cht:"認證類型"},fieldAuthConfigJson:{eng:"Auth config (JSON)",cht:"認證設定(JSON)"},fieldDefaultHeadersJson:{eng:"Default headers (JSON)",cht:"預設標頭(JSON)"},fieldDefaultQueryJson:{eng:"Default query (JSON)",cht:"預設查詢參數(JSON)"},fieldDefaultBodyJson:{eng:"Default body (JSON)",cht:"預設請求內容(JSON)"},fieldContentType:{eng:"Content type",cht:"內容類型"},hintTestBaseUrl:{eng:"Fallback request URL, used only when API url is empty. e.g. https://api.example.com",cht:"送請求的後備網址:「API url」有填則優先,留空時才用此值。範例:https://api.example.com"},hintAuthType:{eng:"Auth auto-applied when sending. none = none; bearer / apikey / basic are built from the Auth config below.",cht:"送出時自動帶入的認證方式。none=不帶;bearer / apikey / basic 依下方「認證設定(JSON)」組出。"},hintAuthConfigJson:{eng:'JSON by auth type:\nbearer → {"token":"your-token"}\napikey → {"name":"X-API-Key","value":"your-key","in":"header"} (in: header or query)\nbasic → {"username":"user","password":"pass"}',cht:'依認證類型填 JSON:\nbearer → {"token":"你的token"}(留空則退用上方 tokens 欄第一個)\napikey → {"name":"X-API-Key","value":"你的key","in":"header"}(in 可為 header 或 query)\nbasic → {"username":"帳號","password":"密碼"}'},hintDefaultHeadersJson:{eng:'Default request headers, a JSON object. e.g. {"Accept":"application/json"}',cht:'預設請求標頭,JSON 物件。範例:{"Accept":"application/json"}'},hintDefaultQueryJson:{eng:'Default query params, a JSON object. e.g. {"page":"1","size":"20"}',cht:'預設查詢參數,JSON 物件。範例:{"page":"1","size":"20"}'},hintDefaultBodyJson:{eng:'Default request body (for POST/PUT); falls back to Input example if empty. e.g. {"name":"foo"}',cht:'預設請求內容(POST/PUT 用),留空則退用「輸入範例」。範例:{"name":"小明"}'},hintContentType:{eng:"Request content type, added as a Content-Type header. e.g. application/json",cht:"請求內容類型,會帶成 Content-Type 標頭。範例:application/json"},authNone:{eng:"None",cht:"無"},authBearer:{eng:"Bearer token",cht:"Bearer token"},authApikey:{eng:"API key",cht:"API key"},authBasic:{eng:"Basic",cht:"Basic"},secBasic:{eng:"Basic",cht:"基本資訊"},secDocs:{eng:"Documentation",cht:"文件說明"},secTest:{eng:"Test settings",cht:"測試設定"},reqSend:{eng:"Send",cht:"送出請求"},reqUrlPlaceholder:{eng:"Request URL",cht:"請求網址"},reqQuery:{eng:"Query params",cht:"查詢參數"},reqHeaders:{eng:"Headers",cht:"標頭"},reqBody:{eng:"Body",cht:"請求內容"},reqAddRow:{eng:"Add",cht:"新增一列"},colKey:{eng:"Key",cht:"鍵"},colValue:{eng:"Value",cht:"值"},colOn:{eng:"On",cht:"啟用"},resTitle:{eng:"Response",cht:"回應"},resTime:{eng:"Time",cht:"耗時"},resHeaders:{eng:"Response headers",cht:"回應標頭"},resBody:{eng:"Response body",cht:"回應內容"},resEmpty:{eng:"No response yet. Click Send to test.",cht:"尚無回應,點擊送出請求進行測試。"},valRequired:{eng:"This field is required",cht:"此欄位必填"},valInvalidJson:{eng:"Invalid JSON format",cht:"JSON格式錯誤"},errReqUrlInvalid:{eng:"The request URL is invalid (must start with http:// or https://)",cht:"請求網址無效(須以 http:// 或 https:// 開頭)"},errReqTargetNotAllowed:{eng:"The target address is not allowed",cht:"目標位址不被允許"},errProxyRequestFailed:{eng:"The request failed to send",cht:"請求發送失敗"},errApiRowInvalid:{eng:"Invalid API data",cht:"API 資料無效"},errApiIdInvalid:{eng:"Invalid API id",cht:"API id 無效"},errUserIdMissing:{eng:"Unable to get user id",cht:"無法取得使用者 id"},errUserEmailMissing:{eng:"Unable to get user email",cht:"無法取得使用者 email"},errUserNameMissing:{eng:"Unable to get user name",cht:"無法取得使用者名稱"},errUserRoleMissing:{eng:"Unable to get user role",cht:"無法取得使用者權限"},errUserNoPermission:{eng:"User does not have permission",cht:"使用者沒有權限"},errUserNotFound:{eng:"Unable to find user from token",cht:"無法依 token 找到使用者"},errPayloadInvalid:{eng:"Invalid request payload",cht:"請求內容無效"},errGroupInvalid:{eng:"Invalid group",cht:"群組無效"},errRowsInvalid:{eng:"Invalid rows",cht:"資料列無效"},errRowInvalid:{eng:"Invalid row data (each row must be an object with name and url)",cht:"列資料無效(每列須為物件且 name 與 url 必填)"},errTokenNoPermission:{eng:"Token does not have permission",cht:"token 沒有權限"},errKeyTableInvalid:{eng:"Invalid table",cht:"資料表無效"},errTimeLengthInvalid:{eng:"Invalid time length",cht:"時間長度無效"}},qa=(e={})=>{let t=Ie(e,"kpLangExt");sn(t)||(t={});let n=Ie(e,"webName");sn(n)||(n={});let s=Ie(e,"webDescription");sn(s)||(s={});let i={};i={...i,..._a},sn(t)&&(i={...i,...t}),sn(n)&&(i={...i,webName:{...n}}),sn(s)&&(i={...i,webDescription:{...s}});let r={};return et(["eng","cht"],e=>{let t={};et(i,(n,s)=>{t[s]=n[e]}),r[e]=t}),r},el=["host","content-length","connection","keep-alive","transfer-encoding","te","trailer","upgrade","proxy-connection"],tl=[301,302,303,307,308],nl=["content-encoding","content-language","content-location","content-type"];function sl(e){let t=[];if(rn(e)){for(let n of e)rn(n)&&en(n[0])&&t.push([n[0],String(n[1])]);return t}if(nn(e))for(let n of Object.keys(e)){let s=rn(e[n])?e[n]:[e[n]];for(let e of s)t.push([n,String(e)])}return t}function il(e={}){let{woItems:t,procOrm:n,ds:s}=e,i=new function(){let e=new Map,t=new Map;return async(n,s)=>{let i=(e.get(n)||Promise.resolve()).then(async()=>await s(),async()=>await s());e.set(n,i.catch(()=>{})),t.set(n,(t.get(n)||0)+1);try{return await i}finally{let s=t.get(n)-1;s<=0?(t.delete(n),e.delete(n)):t.set(n,s)}}};return{getApisList:async e=>await n(e,"apis","select",{}),saveApi:async(e,t)=>{if(!sn(t))return Promise.reject("errApiRowInvalid");let r=en(t.id)?`saveApi:${t.id}`:`saveApi:new:${String(t.name||"")}`;return i(r,async()=>{let i=s.apis.funNew(t);return en(t.id)&&(i.id=t.id,en(t.timeCreate)&&(i.timeCreate=t.timeCreate)),await n(e,"apis","save",[i])})},deleteApi:async(e,t)=>en(t)?i(`deleteApi:${t}`,async()=>await n(e,"apis","del",{id:t})):Promise.reject("errApiIdInvalid")}}function rl(n,s=1){return function(e,t=1,n={}){let s=1,i=Ie(n,"path"),r=Ie(n,"fs");if(!cs(e,{fs:r}))throw new Error(`fd[${e}] is not a folder`);return null!==t&&xn(t)&&(t=bn(t))<1&&(t=1),function e(n){let o=[];return cs(n,{fs:r})?(et(r.readdirSync(n),function(a){let l=i.resolve(n,a),c=null;try{c=r.statSync(l)}catch(e){}c&&c.isDirectory()?(o.push({isFolder:!0,level:s,path:l,name:i.basename(l)}),s+=1,(s<=t||null===t)&&(o=o.concat(e(l))),s-=1):o.push({isFolder:!1,level:s,path:l,name:i.basename(l)})}),o):o}(e)}(n,s,{path:e,fs:t})}let ol=new Map,al=new Map;function ll(e,n,s){let i=rl(e);i=i.filter(e=>!Ie(e,"isFolder",!1)),i=function(e,t,n){let s=t.format(n);return Ka(e,e=>{let t=Ie(e,"name","").replace(/\.log$/,"");return!/^\d{4}-\d{2}-\d{2}/.test(t)||t>=s.slice(0,t.length)})}(i,n,s);let r=[];for(let e of i)try{let n=t.statSync(e.path);if(!n.isFile())continue;r.push({path:e.path,name:e.name,size:n.size,mtimeMs:n.mtimeMs})}catch(e){}return r}function cl(e){let t=new Map;return n=>{let s=Math.floor(n/6e4),i=t.get(s);return void 0===i&&(i=ys(6e4*s).format(e),t.set(s,i)),i}}async function Ml(e,n,s,i=null){vn(i)||(i=cl(s));let r={minTimeMs:null,ev:{}};return await function(e,n){return new Promise((s,i)=>{let r=null,o=t.createReadStream(e,{encoding:"utf8"}),a=l.createInterface({input:o,crlfDelay:1/0});a.on("line",n);let c=e=>{r=e,a.close()};o.on("error",c),a.on("error",c),o.on("close",()=>{r?i(r):s()})})}(e,e=>{let t=null;try{t=JSON.parse(e)}catch(e){return}if(null===t||"object"!=typeof t)return;let s=t.event;if(!en(s))return;let o=function(e){return"number"==typeof e?e:en(e)?ys(e).valueOf():NaN}(t.time);if(Number.isNaN(o))return;if((null===r.minTimeMs||o<r.minTimeMs)&&(r.minTimeMs=o),!(o>n))return;let a=i(o),l=r.ev[a];void 0===l&&(l={count:0,kp:{}},r.ev[a]=l),l.count+=1,l.kp[s]=(l.kp[s]||0)+1}),r}async function wl(e,t,n){let s=cl(n),i=[];for(let r of e)try{let e=await Ml(r.path,t,n,s);i.push({name:r.name,ok:!0,agg:e})}catch(e){i.push({name:r.name,ok:!1,err:String(Ie(e,"message",e))})}return i}function ul(e,t){for(let n in t.ev){let s=t.ev[n],i=e[n];void 0===i&&(i={count:0,kp:{}},e[n]=i),i.count+=s.count;for(let e in s.kp)i.kp[e]=(i.kp[e]||0)+s.kp[e]}return e}async function dl(t,n={}){let s=!1!==Ie(n,"useCache"),i=Ie(n,"scanFiles");vn(i)||(i=wl);let r=Ie(n,"srLog",null),o=ll(t.fdLog,t.tStart,t.fmt),a=function(e){let t=ol.get(e);return t||(t=new Map,ol.set(e,t)),t}((l=t.fdLog,c=t.fmt,`${e.resolve(l)}|${c}`));var l,c;let M=[],w={};for(let e of o){let n=s?a.get(e.name):void 0;void 0!==n&&n.size===e.size&&n.mtimeMs===e.mtimeMs&&(null===n.minTimeMs||n.minTimeMs>n.scanTStartMs&&n.minTimeMs>t.tStartMs)?w[e.name]=n.agg:M.push(e)}if(s){let e=new Set(o.map(e=>e.name));for(let t of a.keys())e.has(t)||a.delete(t)}let u=[];if(M.length>0){let e=await i(M.map(e=>({path:e.path,name:e.name})),t.tStartMs,t.fmt),n={};for(let t of e)n[t.name]=t;for(let e of M){let i=n[e.name];if(i&&i.ok)w[e.name]=i.agg,s&&a.set(e.name,{size:e.size,mtimeMs:e.mtimeMs,minTimeMs:i.agg.minTimeMs,scanTStartMs:t.tStartMs,agg:i.agg});else{let t=Ie(i,"err","no result");u.push({name:e.name,err:t}),s&&a.delete(e.name),r&&vn(r.warn)&&r.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:t})}}}let d={};for(let e of o){let t=w[e.name];t&&ul(d,t)}let L=function(e,t){let n={};for(let e of t)n[e]={count:0};for(let t in e){let s=e[t];n[t]={count:s.count,...s.kp}}return Object.keys(n).sort().map(e=>({time:e,data:n[e]}))}(d,t.kpTime);return{rs:L,stat:{nFiles:o.length,nScanned:M.length,nCached:o.length-M.length,errors:u}}}function Ll(t=7,n="hr",s={}){let i;try{i=function(e=7,t="hr",n={}){let s=Ie(n,"fdLog");en(s)||(s="./logs");let i=function(e){return"day"===e?"day":"hr"}(t),r="day"===i?"YYYY-MM-DD":"YYYY-MM-DDTHH",o="day"===i?"day":"hour",a=Ie(n,"timeNow"),l="number"==typeof a?ys(a):ys();if(!Number.isInteger(e)||e<0||e>3650)throw new Error("errTimeLengthInvalid");let c=l.subtract(e,"day"),M=c.valueOf(),w=c.startOf(o),u=l.startOf(o),d=[];for(;!w.isAfter(u);)d.push(w.format(r)),w=w.add(1,o);return{fdLog:s,timeInterval:i,fmt:r,unit:o,tStart:c,tStartMs:M,kpTime:d,timeNow:l.valueOf()}}(t,n,s)}catch(e){return Promise.reject(Ie(e,"message","errTimeLengthInvalid"))}let r=JSON.stringify([e.resolve(i.fdLog),t,i.timeInterval,Ie(s,"timeNow",null)]);if(al.has(r))return al.get(r);let o=dl(i,s).finally(()=>{al.delete(r)});return al.set(r,o),o}let yl=a.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(gl).href:"undefined"==typeof document?location.href:M&&"SCRIPT"===M.tagName.toUpperCase()&&M.src||new URL("w-web-api.umd.js",document.baseURI).href),Il=e.dirname(yl),Dl=e.resolve(Il,"staLogsCore.shellWorker.mjs");async function pl(e,t,n){return 0===e.length?[]:function(e,t=Dl){let n=Vn(),s=new o.Worker(t),i=!1,r=(e,t)=>{i||(i=!0,e(t));try{s.terminate()}catch(e){}};return s.on("message",e=>{"done"===e.mode?r(n.resolve,e.payload):"error"===e.mode&&r(n.reject,e.payload)}),s.on("error",e=>{r(n.reject,e)}),s.on("exit",e=>{r(n.reject,new Error(`staLogs worker exited without result, code=${e}`))}),s.postMessage(e),n}({files:e,tStartMs:t,fmt:n})}async function ml(e=7,t="hr",n={}){let s=await function(e=7,t="hr",n={}){return Ll(e,t,{...n,scanFiles:pl})}(e,t,n);return s.rs}let gl=a.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(gl).href:"undefined"==typeof document?location.href:M&&"SCRIPT"===M.tagName.toUpperCase()&&M.src||new URL("w-web-api.umd.js",document.baseURI).href),fl=e.dirname(gl);let Cl=(n={})=>{let s=Ie(n,"logFd","");en(s)||(s="./logs");let i=Ie(n,"logInterval","");en(i)||(i="hr");let r=Ie(n,"logNumKeep",null),o={fdLog:s,interval:i};if(null!=r&&""!==r){if(!xn(r))throw new Error(`invalid logNumKeep[${r}], must be positive integer`);o.numKeep=bn(r)}let a=function(n={}){let s=Cs(),i=Ie(n,"timeZone",null),r=Ie(n,"fdLog");en(r)||(r="./_logs");let o=Ie(n,"interval");"day"!==o&&"hr"!==o&&(o="day");let a=Ie(n,"numKeep");xn(a)||(a="day"===o?365:8760),a=bn(a);let l=c.transport({targets:[{level:"info",target:e.resolve(fl,"./formatter.mjs"),options:{interval:o,fdLog:r,timeZone:i}}]}),M=c(l),w=()=>{try{if(!Ms(r))return;let n="hr"===o?/^\d{4}-\d{2}-\d{2}T\d{2}\.log$/:/^\d{4}-\d{2}-\d{2}\.log$/,i=t.readdirSync(r).filter(e=>n.test(e));i.sort();let l=i.length-a;if(l<=0)return;let c=i.slice(0,l);for(let n of c){let i=e.join(r,n);try{t.unlinkSync(i),s.emit("delete",{fp:i,fn:n})}catch(e){}}}catch(e){console.error("WSyslog cleanLogs error:",e)}};w();let u=setInterval(w,36e5);u.unref();let d=null,L=e=>{let t=M[e].bind(M);return(...n)=>{try{s.emit(e,{args:n})}catch(e){}t(...n)}};return s.fatal=L("fatal"),s.error=L("error"),s.warn=L("warn"),s.info=L("info"),s.debug=L("debug"),s.trace=L("trace"),s.cleanLogs=w,s.clear=(e={})=>{if(null!==d)return d;let t=Ie(e,"timeLimit");xn(t)||(t=6e4),d=Vn();let n=!1,s=()=>{n||(n=!0,clearInterval(u),d.resolve())},i=setTimeout(()=>{try{l.worker.terminate()}catch(e){}s()},t);try{M.flush(e=>{if(e||l.closed)return clearTimeout(i),void s();l.once("close",()=>{clearTimeout(i),s()}),l.end()})}catch(e){clearTimeout(i),s()}return d},s}(o);return a};const hl=[];for(let e=0;e<256;++e)hl.push((e+256).toString(16).slice(1));const Nl=new Uint8Array(16);function bl(){return crypto.getRandomValues(Nl)}const xl={};function Tl(e,t,n){let s;if(e)s=Sl(e.random??e.rng?.()??bl(),e.msecs,e.seq,t,n);else{const e=Date.now(),i=bl();!function(e,t,n){e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=Zl(n),e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++)}(xl,e,i),s=Sl(i,xl.msecs,xl.seq,t,n)}return t??function(e,t=0){return(hl[e[t+0]]+hl[e[t+1]]+hl[e[t+2]]+hl[e[t+3]]+"-"+hl[e[t+4]]+hl[e[t+5]]+"-"+hl[e[t+6]]+hl[e[t+7]]+"-"+hl[e[t+8]]+hl[e[t+9]]+"-"+hl[e[t+10]]+hl[e[t+11]]+hl[e[t+12]]+hl[e[t+13]]+hl[e[t+14]]+hl[e[t+15]]).toLowerCase()}(s)}function Sl(e,t,n,s,i=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(s){if(i<0||i+16>s.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`)}else s=new Uint8Array(16),i=0;return t??=Date.now(),n??=Zl(e),s[i++]=t/1099511627776&255,s[i++]=t/4294967296&255,s[i++]=t/16777216&255,s[i++]=t/65536&255,s[i++]=t/256&255,s[i++]=255&t,s[i++]=112|n>>>28&15,s[i++]=n>>>20&255,s[i++]=128|n>>>14&63,s[i++]=n>>>6&255,s[i++]=n<<2&255|3&e[10],s[i++]=e[11],s[i++]=e[12],s[i++]=e[13],s[i++]=e[14],s[i++]=e[15],s}function Zl(e){return(127&e[6])<<24|e[7]<<16|e[8]<<8|e[9]}function Al(e){return e.indexOf("\\\\")>=0?"```"+e+"```":e}let Xl={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},url:{name:"網址",type:"STRING"},method:{name:"方法",type:"STRING"},version:{name:"版本",type:"STRING"},group:{name:"群組",type:"STRING"},levels:{name:"階層群組",type:"STRING"},keywords:{name:"關鍵字",type:"STRING"},state:{name:"狀態",type:"STRING"},creator:{name:"創建者",type:"STRING"},dataSource:{name:"資料提供者",type:"STRING"},tokens:{name:"金鑰",type:"TEXT"},mdInputParams:{name:"輸入參數md說明",type:"STRING"},inputExample:{name:"輸入範例",type:"STRING"},mdOutputParams:{name:"輸出資料md說明",type:"STRING"},outputExample:{name:"輸出範例",type:"STRING"},testBaseUrl:{name:"測試基底網址",type:"STRING"},authType:{name:"認證類型",type:"STRING"},authConfigJson:{name:"認證設定JSON",type:"TEXT"},defaultHeadersJson:{name:"預設標頭JSON",type:"TEXT"},defaultQueryJson:{name:"預設查詢參數JSON",type:"TEXT"},defaultBodyJson:{name:"預設請求內容JSON",type:"TEXT"},contentType:{name:"內容類型",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},El=(e={})=>{let t=as(e,Fe(Xl));return t.id=`${Tl()}`,t.timeCreate=xo(),t.timeUpdate=t.timeCreate,t.isActive="y",t.authType=en(t.authType)?t.authType:"none",t.contentType=en(t.contentType)?t.contentType:"application/json",t},Yl={keyTable:"apis",tableNameCht:"APIs",tableNameEng:"APIs",settings:Xl,funNew:El,funTest:()=>{let e=$t([{id:"id-for-apis-sys-1",name:"取得API清單",description:"API管理中心取得API清單資訊",url:"http://localhost:11005/getAPIsList",method:"get",version:"v1",group:"全部",levels:"API",keywords:"API;center",state:"ok",creator:"apis-system",dataSource:"apis-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-1",name:"取得寵物清單",description:"寵物管理中心取得寵物清單資訊",url:"http://localhost:11005/getPetsList",method:"get",version:"v1",group:"寵物",levels:"寵物",keywords:"pets",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-dogs-1",name:"取得狗狗清單",description:"取得狗狗清單資訊",url:"http://localhost:11005/getDogsList",method:"get",version:"v1",group:"寵物",levels:"寵物.狗狗",keywords:"pets;dogs",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-dogs-2",name:"新增狗狗資訊",description:"新增狗狗資訊",url:"http://localhost:11005/addDog",method:"post",version:"v1",group:"寵物",levels:"寵物.狗狗",keywords:"pets;dogs",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### POST參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-dogs-3",name:"變更狗狗資訊",description:"變更狗狗資訊",url:"http://localhost:11005/updateDog",method:"put",version:"v1",group:"寵物",levels:"寵物.狗狗",keywords:"pets;dogs",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-dogs-4",name:"刪除狗狗資訊",description:"刪除狗狗資訊",url:"http://localhost:11005/deleteDog",method:"del",version:"v1",group:"寵物",levels:"寵物.狗狗",keywords:"pets;dogs",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-cats-1",name:"取得貓咪清單",description:"取得貓咪清單資訊",url:"http://localhost:11005/getCatsList",method:"get",version:"v1",group:"寵物",levels:"寵物.貓咪",keywords:"pets;cats",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-cats-2",name:"新增貓咪資訊",description:"新增貓咪資訊",url:"http://localhost:11005/addCat",method:"post",version:"v1",group:"寵物",levels:"寵物.貓咪",keywords:"pets;cats",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### POST參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-cats-3",name:"變更貓咪資訊",description:"變更貓咪資訊",url:"http://localhost:11005/updateCat",method:"put",version:"v1",group:"寵物",levels:"寵物.貓咪",keywords:"pets;cats",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-cats-4",name:"刪除貓咪資訊",description:"刪除貓咪資訊",url:"http://localhost:11005/deleteCat",method:"del",version:"v1",group:"寵物",levels:"寵物.貓咪",keywords:"pets;cats",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-vehicles-cars-1",name:"取得汽車清單",description:"取得汽車清單資訊",url:"http://localhost:11005/getcarsList",method:"get",version:"v1",group:"寵物",levels:"交通工具.汽車",keywords:"vehicles;cars",state:"ok",creator:"vehicles-system",dataSource:"vehicles-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-vehicles-cars-2",name:"新增汽車資訊",description:"新增汽車資訊",url:"http://localhost:11005/addDog",method:"post",version:"v1",group:"寵物",levels:"交通工具.汽車",keywords:"vehicles;cars",state:"ok",creator:"vehicles-system",dataSource:"vehicles-data",mdInputParams:"### POST參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-vehicles-cars-3",name:"變更汽車資訊",description:"變更汽車資訊",url:"http://localhost:11005/updateDog",method:"put",version:"v1",group:"寵物",levels:"交通工具.汽車",keywords:"vehicles;cars",state:"ok",creator:"vehicles-system",dataSource:"vehicles-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-vehicles-cars-4",name:"刪除汽車資訊",description:"刪除汽車資訊",url:"http://localhost:11005/deleteDog",method:"del",version:"v1",group:"寵物",levels:"交通工具.汽車",keywords:"vehicles;cars",state:"ok",creator:"vehicles-system",dataSource:"vehicles-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '}],(e,t)=>{let n=El({...e,order:t});return en(e.timeUpdate)&&(n.timeUpdate=e.timeUpdate),n=function(e,t){if(!nn(e))return{};if(!os(t))return{};let n={};return et(t,function(t){Gs(e,t)&&(n[t]=Ie(e,t))}),n}(n,Fe(Xl)),n});return console.log("已產生: {keyTable} 測試資料",e),e}};function jl(e,t={}){let n=Ie(t,"useCreateStorage");_t(n)||(n=!1);let{keyTable:s,tableNameCht:i,tableNameEng:r,settings:o,parser:a,funNew:l,funTest:c,ext:M}=e;if(!en(s))throw new Error(`invalid keyTable[${s}]`);if(en(i)||(i=s),en(r)||(r=s),!sn(o))throw new Error("invalid settings");sn(M)||(M=null),sn(a)||(a=null),vn(l)||(l=null);let w=null;vn(c)&&(w=async e=>{if(!sn(e))throw new Error("invalid wo");if(!Gs(e,s))throw console.log(e),new Error(`keyTable[${s}] is not in wo`);let t=[];try{t=c(),Gn(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${s}] funTest catch`,e),new Error(e)}if(0!==fi(t))return n&&await e[s].createStorage(),await e[s].save(t),t});let u={},d={};return et(Fe(o),e=>{let t=Ie(o,`${e}.name`,"");en(t)&&(u[e]=t);let n=Ie(o,`${e}.type`,"");en(n)&&(d[e]=n)}),{...e,keyTable:s,tableNameCht:i,tableNameEng:r,settings:o,keys:Fe(o),kpType:d,kpHead:u,parser:a,funNew:l,funTest:c,funTestAndSave:w,ext:M}}let zl={apis:Yl},vl={};for(let e in zl)vl[e]=jl(zl[e],{useCreateStorage:!1});return function(n,s,i,r,o,a,l={}){let c=null;if(!vn(n))throw console.log("invalid WOrm",n),new Error("invalid WOrm");if(!en(s))throw console.log("invalid url",s),new Error("invalid url");if(!en(i))throw console.log("invalid db",i),new Error("invalid db");if(!vn(r))throw console.log("invalid getUserByToken",r),new Error("invalid getUserByToken");if(!vn(o))throw console.log("invalid verifyClientUser",o),new Error("invalid verifyClientUser");if(!vn(a))throw console.log("invalid verifyAppUser",a),new Error("invalid verifyAppUser");let M=Ie(l,"serverPort");xn(M)||(M=11005),M=bn(M);let w=Ie(l,"useCheckUser",!1),u=Ie(l,"getUserById",null),d=Ie(l,"useExcludeWhenNotAdmin",!1),L=Ie(l,"webName",{}),y=Ie(l,"webDescription",{}),I=Ie(l,"webLogo",""),D=Ie(l,"subfolder","");var p,m;en(D)&&("/"===Un(D,1)&&(m=1,D=en(p=D)&&Kn(m)?0===(m=bn(m))?p:Wn(p,p.length-m):""),"/"!==Wn(D,1)&&(D=`/${D}`));let g=Ie(l,"urlRedirect",""),f=Ie(l,"showLanguage","y"),C=Ie(l,"language","eng"),h=Ie(l,"logFd","./logs"),N=Ie(l,"isAllowTarget",null),b=Ie(l,"kpLangExt",{}),x=qa({kpLangExt:b,webName:L,webDescription:y}),T={useCheckUser:w,getUserById:u,useExcludeWhenNotAdmin:d},S={};try{S=$a(vl,n,s,i,T)}catch(e){throw console.log("WServOrm init failed",e),e}let{woItems:Z,procOrm:A}=S,X=Cl(l),E=e=>rn(e)?e.map(E):en(e)?Wn(e,4)+"***":e,Y=e=>{if(!nn(e))return e;let t={...e};for(let e of Object.keys(t))"token"===e.toLowerCase()&&(t[e]=E(t[e]));return t},j=(e,t)=>{let n="kpfun-"+e;return async(...e)=>{try{let s=await t(...e);return X.info({event:n}),s}catch(e){return X.error({event:n,err:e}),Promise.reject(e)}}},z=(e,t)=>async(...n)=>{try{return await t(...n)}catch(t){throw X.error({event:e,err:t}),t}},{proxyRequest:v}=function(e={}){let t=Ie(e,"srLog",null),n=Ie(e,"isAllowTarget",null),s=e=>"function"!=typeof n||!1!==n(e);return{proxyRequest:async(e={})=>{let n=Ie(e,"method","GET");en(n)||(n="GET"),n=n.toUpperCase();let i=Ie(e,"url","");if(!en(i))return Promise.reject("errReqUrlInvalid");if(!i.startsWith("http://")&&!i.startsWith("https://"))return Promise.reject("errReqUrlInvalid");if(!s(i))return Promise.reject("errReqTargetNotAllowed");let r=new Headers;try{for(let[t,n]of sl(Ie(e,"headers",{})))el.includes(t.toLowerCase())||r.append(t,n)}catch(e){return t&&t.error({event:"proxyRequest-headers",msg:Ie(e,"message",String(e))}),Promise.reject("errProxyRequestFailed")}let o,a=r.has("content-type");try{o=new URL(i)}catch(e){return Promise.reject("errReqUrlInvalid")}for(let[t,n]of sl(Ie(e,"query",null)))o.searchParams.append(t,n);let l,c=Ie(e,"body",void 0);"GET"!==n&&"HEAD"!==n&&(en(c)?l=(new TextEncoder).encode(c):(nn(c)||rn(c))&&(l=(new TextEncoder).encode(JSON.stringify(c)),a||r.set("Content-Type","application/json")));let M,w=Ie(e,"timeout",3e4);("number"!=typeof w||w<=0)&&(w=3e4);let u=Date.now();try{let e,t=AbortSignal.timeout(w),i=o,a=n,c=l,d=0;for(;e=await fetch(i,{method:a,headers:r,body:c,signal:t,redirect:"manual"}),tl.includes(e.status);){let t,n=e.headers.get("location");if(null===n)break;if(e.body&&await e.body.cancel(),d+=1,d>20)throw Object.assign(new Error(`too many redirects (> 20), last: ${i.href}`),{errKey:"errProxyRequestFailed"});try{t=new URL(n,i)}catch(e){throw Object.assign(new Error(`invalid redirect location: ${n}`),{errKey:"errProxyRequestFailed"})}if("http:"!==t.protocol&&"https:"!==t.protocol)throw Object.assign(new Error(`unsupported redirect protocol: ${t.href}`),{errKey:"errProxyRequestFailed"});if(!s(t.href))throw Object.assign(new Error(`redirect target not allowed: ${t.href}`),{errKey:"errReqTargetNotAllowed"});if(303===e.status&&"GET"!==a&&"HEAD"!==a||(301===e.status||302===e.status)&&"POST"===a){a="GET",c=void 0;for(let e of nl)r.delete(e)}t.origin!==i.origin&&r.delete("authorization"),i=t}let L=await e.text(),y=L;if(en(L))try{y=JSON.parse(L)}catch(e){y=L}let I={};e.headers.forEach((e,t)=>{I[t]=e});let D=e.headers.getSetCookie();D.length>0&&(I["set-cookie"]=D);let p=Date.now()-u;M={status:e.status,statusText:e.statusText,headers:I,data:y,durationMs:p}}catch(e){let n=Ie(e,"errKey","");return en(n)?(t&&t.error({event:"proxyRequest-redirect",err:n,msg:Ie(e,"message","")}),Promise.reject(n)):(t&&t.error({event:"proxyRequest-fetch",msg:Ie(e,"message",String(e)),cause:Ie(e,"cause.message","")}),Promise.reject("errProxyRequestFailed"))}return M}}}({srLog:X,isAllowTarget:N}),{getApisList:G,saveApi:K,deleteApi:W}=il({woItems:Z,procOrm:A,ds:vl}),U=async e=>{if(!en(Ie(e,"id","")))return console.log("user",e),console.log("can not get the userId"),Promise.reject("errUserIdMissing");if(!en(Ie(e,"email","")))return console.log("user",e),console.log("can not get the email of user"),Promise.reject("errUserEmailMissing");if(!en(Ie(e,"name","")))return console.log("user",e),console.log("can not get userName"),Promise.reject("errUserNameMissing");let t=Ie(e,"isAdmin","");return"y"===t||"n"===t||(console.log("user",e),console.log("user.isAdmin is not y or n",e.isAdmin),console.log("can not get the role of user"),Promise.reject("errUserRoleMissing"))},Q=async e=>{let t=await r(e);return await U(t),!0},V=async(e,t="")=>{let n=await(async e=>{let t=r(e);return Gn(t)&&(t=await t),await U(t),t})(e),s=o(n,t);return Gn(s)&&(s=await s),s?(X.info({event:"verifyClientUser",from:t,userId:Ie(n,"id","")}),n):(console.log("user",n),console.log("user does not have permission"),Promise.reject("errUserNoPermission"))},k={apis:["name","url"]},H=async(e,t,n)=>{let s=Ie(t,"group","");if(!en(s))return console.log("inp",t),console.log("group",s),console.log("invalid group"),Promise.reject("errGroupInvalid");let i=Ie(t,"rows",[]);if(!rn(i)||0===i.length)return console.log("inp",t),console.log("keyTable",n),Promise.reject("errRowsInvalid");let r=(e,t)=>(X.error({event:"syncAndReplaceTabs",err:"errRowInvalid",keyTable:n,group:s,index:e,field:t}),console.log(`[API]syncAndReplaceTabs/check rows[${e}]: invalid row (field: ${t})`),Promise.reject("errRowInvalid"));for(let e=0;e<i.length;e++)if(!sn(i[e]))return r(e,"(row)");i=$t(i,(e,t)=>(e.group=s,e)),"apis"===n&&et(i,(e,t)=>{et(e,(e,n)=>{en(e)&&"base64:"===Wn(e,7)&&(e=ts(e=Qn(e,7)),i[t][n]=e)})});let o=Ie(k,n,[]);for(let e=0;e<i.length;e++){let t=o.find(t=>!en(i[e][t]));if(en(t))return r(e,t)}return i=function(e,t,n=""){return os(e)&&os(t)?$t(e,e=>as(e,t,n)):[]}(i,vl[n].keys),await Z[n].delAll({group:s}),await A(e,n,"insert",i)},J="dist",R="./node_modules/w-web-api/dist";Ms(R)&&(J=R);let P="index.html";try{let n=e.resolve(J,"index.tmp");if(us(n)||(n=e.resolve(J,P)),!us(n))throw console.log("fpEntryIn",n),new Error("invalid fpEntryIn");let s=e.resolve(J,P),i=t.readFileSync(n,"utf8");i=ds(i,"/mapi/","{sfd}/"),i=ds(i,"{sfd}",D),i=ds(i,"{urlRedirect}",g),i=ds(i,"{language}",C),t.writeFileSync(s,i,"utf8")}catch(e){console.log(e),console.log(`can not generate ${P}`)}let O=[{method:"GET",path:"/api/getUserByToken",handler:async function(e,t){let n=await kn(z("api/getUserByToken",async function(){let t=Ie(e,"query.token","");if(!en(t))return console.log("req.query",Y(Ie(e,"query"))),console.log("token",E(t)),console.log("[API]getUserByToken/check token: invalid token"),Promise.reject("errTokenNoPermission");let n=await V(t,"getUserByToken");return sn(n)?(X.info({event:"api/getUserByToken",userId:Ie(n,"id","")}),n):(console.log("token",E(t)),console.log("[API]getUserByToken/check user: invalid user"),Promise.reject("errTokenNoPermission"))}))();return zn(n.msg)&&(n.msg=n.msg.message),n}},{method:"POST",path:"/syncAndReplaceTabs",handler:async function(e,t){let n=await kn(z("api/syncAndReplaceTabs",async function(){let t=Ie(e,"query.token","");if(!en(t))return console.log("req.query",Y(Ie(e,"query"))),console.log("token",E(t)),console.log("[API]syncAndReplaceTabs/check token: invalid token"),Promise.reject("errTokenNoPermission");let n=Ie(e,"query.keyTable","");if(!en(n))return console.log("req.query",Y(Ie(e,"query"))),console.log("keyTable",n),console.log("[API]syncAndReplaceTabs/check keyTable: invalid keyTable"),Promise.reject("errKeyTableInvalid");if(!["apis"].includes(n))return console.log("[API]syncAndReplaceTabs/check keyTable: unexpected keyTable",n),Promise.reject("errKeyTableInvalid");let s=await(async(e,t="")=>{let n=null;if(en(e)&&(n=r(e),Gn(n)&&(n=await n)),!sn(n))return console.log("token",E(e)),console.log("can not find the user from token"),Promise.reject("errUserNotFound");let s=a(n,t);return Gn(s)&&(s=await s),s?(X.info({event:"verifyAppUser",from:t,userId:Ie(n,"id","")}),n):(console.log("user",n),console.log("user does not have permission"),Promise.reject("errUserNoPermission"))})(t,"syncAndReplaceTabs");if(!sn(s))return console.log("token",E(t)),console.log("[API]syncAndReplaceTabs/check user: invalid user"),Promise.reject("errTokenNoPermission");let i=Ie(s,"id","");if(!en(i))return console.log("token",E(t)),console.log("user",s),console.log("[API]syncAndReplaceTabs/check userId: invalid userId"),Promise.reject("errTokenNoPermission");let o=await(async e=>{let t=Ie(e,"payload");if(en(t)&&(t=tn(t)),!sn(t))return console.log("payload",t),console.log("invalid payload in req"),Promise.reject("errPayloadInvalid");let n=Ie(t,"group","");if(!en(n))return console.log("payload",t),console.log("invalid group in payload"),Promise.reject("errGroupInvalid");let s=Ie(t,"rows",[]);return rn(s)&&0!==s.length?{group:n,rows:s}:(console.log("payload",t),console.log("invalid rows in payload"),Promise.reject("errRowsInvalid"))})(e),l=await H(i,o,n);return X.info({event:"api/syncAndReplaceTabs",userId:i,keyTable:n}),l}))();return zn(n.msg)&&(n.msg=n.msg.message),n}}],B=Fe(vl);return c=new ho({port:M,pathStaticFiles:J,apiName:"api",apis:O,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:n,headers:s,req:i})=>{let r,o=Qn(t,7);if(!en(o))return console.log("apiType",e),console.log("authorization",E(t)),console.log("invalid token"),X.error({event:"verifyConn",err:"errTokenNoPermission",apiType:e}),!1;try{r=await Q(o)}catch(t){throw X.error({event:"verifyConn",err:t,apiType:e}),t}return X.info({event:"verifyConn",apiType:e}),r},getUserIdByToken:async e=>{if(!en(e))return"";return Ie(await r(e),"id","")},useDbOrm:!0,kpOrm:Z,operOrm:A,tableNamesExec:B,methodsExec:["select","insert","save","del"],tableNamesSync:B,kpFunExt:{getWebInfor:j("getWebInfor",e=>({webLogo:I,showLanguage:f,language:C,kpLang:x})),proxyRequest:j("proxyRequest",(e,t)=>v(t)),getApisList:j("getApisList",e=>G(e)),saveApi:j("saveApi",(e,t)=>K(e,t)),deleteApi:j("deleteApi",(e,t)=>W(e,t)),getStaEvent:j("getStaEvent",(e,t=7,n="hr")=>ml(t,n,{fdLog:h,srLog:X}))},fpTableTags:"tableTags-web-api.json"}),c}});
|
|
6
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("http"),require("worker_threads"),require("url"),require("readline"),require("pino")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","http","worker_threads","url","readline","pino"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-api"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.http,e.require$$0$1,e.url,e.readline,e.pino)}(this,function(e,t,n,s,i,r,o,a,l,c){"use strict";var M="undefined"!=typeof document?document.currentScript:null,w=Array.isArray,u="object"==typeof global&&global&&global.Object===Object&&global,d="object"==typeof self&&self&&self.Object===Object&&self,L=u||d||Function("return this")(),y=L.Symbol,I=Object.prototype,D=I.hasOwnProperty,p=I.toString,m=y?y.toStringTag:void 0;var g=Object.prototype.toString;var f=y?y.toStringTag:void 0;function C(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":f&&f in Object(e)?function(e){var t=D.call(e,m),n=e[m];try{e[m]=void 0;var s=!0}catch(e){}var i=p.call(e);return s&&(t?e[m]=n:delete e[m]),i}(e):function(e){return g.call(e)}(e)}function h(e){return null!=e&&"object"==typeof e}function N(e){return"symbol"==typeof e||h(e)&&"[object Symbol]"==C(e)}var b=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,x=/^\w*$/;function T(e,t){if(w(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!N(e))||(x.test(e)||!b.test(e)||null!=t&&e in Object(t))}function S(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Z(e){if(!S(e))return!1;var t=C(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var A,E=L["__core-js_shared__"],X=(A=/[^.]+$/.exec(E&&E.keys&&E.keys.IE_PROTO||""))?"Symbol(src)_1."+A:"";var Y=Function.prototype.toString;function j(e){if(null!=e){try{return Y.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var z=/^\[object .+?Constructor\]$/,v=Function.prototype,G=Object.prototype,K=v.toString,W=G.hasOwnProperty,U=RegExp("^"+K.call(W).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function k(e){return!(!S(e)||(t=e,X&&X in t))&&(Z(e)?U:z).test(j(e));var t}function V(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return k(n)?n:void 0}var Q=V(Object,"create");var H=Object.prototype.hasOwnProperty;var J=Object.prototype.hasOwnProperty;function R(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}function P(e,t){return e===t||e!=e&&t!=t}function O(e,t){for(var n=e.length;n--;)if(P(e[n][0],t))return n;return-1}R.prototype.clear=function(){this.__data__=Q?Q(null):{},this.size=0},R.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},R.prototype.get=function(e){var t=this.__data__;if(Q){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return H.call(t,e)?t[e]:void 0},R.prototype.has=function(e){var t=this.__data__;return Q?void 0!==t[e]:J.call(t,e)},R.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=Q&&void 0===t?"__lodash_hash_undefined__":t,this};var B=Array.prototype.splice;function F(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}F.prototype.clear=function(){this.__data__=[],this.size=0},F.prototype.delete=function(e){var t=this.__data__,n=O(t,e);return!(n<0)&&(n==t.length-1?t.pop():B.call(t,n,1),--this.size,!0)},F.prototype.get=function(e){var t=this.__data__,n=O(t,e);return n<0?void 0:t[n][1]},F.prototype.has=function(e){return O(this.__data__,e)>-1},F.prototype.set=function(e,t){var n=this.__data__,s=O(n,e);return s<0?(++this.size,n.push([e,t])):n[s][1]=t,this};var $=V(L,"Map");function _(e,t){var n,s,i=e.__data__;return("string"==(s=typeof(n=t))||"number"==s||"symbol"==s||"boolean"==s?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function q(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}q.prototype.clear=function(){this.size=0,this.__data__={hash:new R,map:new($||F),string:new R}},q.prototype.delete=function(e){var t=_(this,e).delete(e);return this.size-=t?1:0,t},q.prototype.get=function(e){return _(this,e).get(e)},q.prototype.has=function(e){return _(this,e).has(e)},q.prototype.set=function(e,t){var n=_(this,e),s=n.size;return n.set(e,t),this.size+=n.size==s?0:1,this};function ee(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var s=arguments,i=t?t.apply(this,s):s[0],r=n.cache;if(r.has(i))return r.get(i);var o=e.apply(this,s);return n.cache=r.set(i,o)||r,o};return n.cache=new(ee.Cache||q),n}ee.Cache=q;var te,ne,se,ie=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,re=/\\(\\)?/g,oe=(te=function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ie,function(e,n,s,i){t.push(s?i.replace(re,"$1"):n||e)}),t},ne=ee(te,function(e){return 500===se.size&&se.clear(),e}),se=ne.cache,ne),ae=oe;function le(e,t){for(var n=-1,s=null==e?0:e.length,i=Array(s);++n<s;)i[n]=t(e[n],n,e);return i}var ce=y?y.prototype:void 0,Me=ce?ce.toString:void 0;function we(e){if("string"==typeof e)return e;if(w(e))return le(e,we)+"";if(N(e))return Me?Me.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function ue(e){return null==e?"":we(e)}function de(e,t){return w(e)?e:T(e,t)?[e]:ae(ue(e))}function Le(e){if("string"==typeof e||N(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function ye(e,t){for(var n=0,s=(t=de(t,e)).length;null!=e&&n<s;)e=e[Le(t[n++])];return n&&n==s?e:void 0}function Ie(e,t,n){var s=null==e?void 0:ye(e,t);return void 0===s?n:s}function De(e,t){for(var n=-1,s=null==e?0:e.length;++n<s&&!1!==t(e[n],n,e););return e}var pe,me=function(e,t,n){for(var s=-1,i=Object(e),r=n(e),o=r.length;o--;){var a=r[pe?o:++s];if(!1===t(i[a],a,i))break}return e};function ge(e){return h(e)&&"[object Arguments]"==C(e)}var fe=Object.prototype,Ce=fe.hasOwnProperty,he=fe.propertyIsEnumerable,Ne=ge(function(){return arguments}())?ge:function(e){return h(e)&&Ce.call(e,"callee")&&!he.call(e,"callee")},be=Ne;var xe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Te=xe&&"object"==typeof module&&module&&!module.nodeType&&module,Se=Te&&Te.exports===xe?L.Buffer:void 0,Ze=(Se?Se.isBuffer:void 0)||function(){return!1},Ae=/^(?:0|[1-9]\d*)$/;function Ee(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&Ae.test(e))&&e>-1&&e%1==0&&e<t}function Xe(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Ye={};function je(e){return function(t){return e(t)}}Ye["[object Float32Array]"]=Ye["[object Float64Array]"]=Ye["[object Int8Array]"]=Ye["[object Int16Array]"]=Ye["[object Int32Array]"]=Ye["[object Uint8Array]"]=Ye["[object Uint8ClampedArray]"]=Ye["[object Uint16Array]"]=Ye["[object Uint32Array]"]=!0,Ye["[object Arguments]"]=Ye["[object Array]"]=Ye["[object ArrayBuffer]"]=Ye["[object Boolean]"]=Ye["[object DataView]"]=Ye["[object Date]"]=Ye["[object Error]"]=Ye["[object Function]"]=Ye["[object Map]"]=Ye["[object Number]"]=Ye["[object Object]"]=Ye["[object RegExp]"]=Ye["[object Set]"]=Ye["[object String]"]=Ye["[object WeakMap]"]=!1;var ze="object"==typeof exports&&exports&&!exports.nodeType&&exports,ve=ze&&"object"==typeof module&&module&&!module.nodeType&&module,Ge=ve&&ve.exports===ze&&u.process,Ke=function(){try{var e=ve&&ve.require&&ve.require("util").types;return e||Ge&&Ge.binding&&Ge.binding("util")}catch(e){}}(),We=Ke&&Ke.isTypedArray,Ue=We?je(We):function(e){return h(e)&&Xe(e.length)&&!!Ye[C(e)]},ke=Object.prototype.hasOwnProperty;function Ve(e,t){var n=w(e),s=!n&&be(e),i=!n&&!s&&Ze(e),r=!n&&!s&&!i&&Ue(e),o=n||s||i||r,a=o?function(e,t){for(var n=-1,s=Array(e);++n<e;)s[n]=t(n);return s}(e.length,String):[],l=a.length;for(var c in e)!t&&!ke.call(e,c)||o&&("length"==c||i&&("offset"==c||"parent"==c)||r&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Ee(c,l))||a.push(c);return a}var Qe=Object.prototype;function He(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Qe)}function Je(e,t){return function(n){return e(t(n))}}var Re=Je(Object.keys,Object),Pe=Object.prototype.hasOwnProperty;function Oe(e){if(!He(e))return Re(e);var t=[];for(var n in Object(e))Pe.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Be(e){return null!=e&&Xe(e.length)&&!Z(e)}function Fe(e){return Be(e)?Ve(e):Oe(e)}var $e=function(e,t){return function(n,s){if(null==n)return n;if(!Be(n))return e(n,s);for(var i=n.length,r=t?i:-1,o=Object(n);(t?r--:++r<i)&&!1!==s(o[r],r,o););return n}}(function(e,t){return e&&me(e,t,Fe)}),_e=$e;function qe(e){return e}function et(e,t){var n;return(w(e)?De:_e)(e,"function"==typeof(n=t)?n:qe)}function tt(e){var t=this.__data__=new F(e);this.size=t.size}tt.prototype.clear=function(){this.__data__=new F,this.size=0},tt.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},tt.prototype.get=function(e){return this.__data__.get(e)},tt.prototype.has=function(e){return this.__data__.has(e)},tt.prototype.set=function(e,t){var n=this.__data__;if(n instanceof F){var s=n.__data__;if(!$||s.length<199)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new q(s)}return n.set(e,t),this.size=n.size,this};function nt(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new q;++t<n;)this.add(e[t])}function st(e,t){for(var n=-1,s=null==e?0:e.length;++n<s;)if(t(e[n],n,e))return!0;return!1}function it(e,t){return e.has(t)}nt.prototype.add=nt.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},nt.prototype.has=function(e){return this.__data__.has(e)};function rt(e,t,n,s,i,r){var o=1&n,a=e.length,l=t.length;if(a!=l&&!(o&&l>a))return!1;var c=r.get(e),M=r.get(t);if(c&&M)return c==t&&M==e;var w=-1,u=!0,d=2&n?new nt:void 0;for(r.set(e,t),r.set(t,e);++w<a;){var L=e[w],y=t[w];if(s)var I=o?s(y,L,w,t,e,r):s(L,y,w,e,t,r);if(void 0!==I){if(I)continue;u=!1;break}if(d){if(!st(t,function(e,t){if(!it(d,t)&&(L===e||i(L,e,n,s,r)))return d.push(t)})){u=!1;break}}else if(L!==y&&!i(L,y,n,s,r)){u=!1;break}}return r.delete(e),r.delete(t),u}var ot=L.Uint8Array;function at(e){var t=-1,n=Array(e.size);return e.forEach(function(e,s){n[++t]=[s,e]}),n}function lt(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var ct=y?y.prototype:void 0,Mt=ct?ct.valueOf:void 0;function wt(e,t){for(var n=-1,s=t.length,i=e.length;++n<s;)e[i+n]=t[n];return e}function ut(e,t,n){var s=t(e);return w(e)?s:wt(s,n(e))}function dt(e,t){for(var n=-1,s=null==e?0:e.length,i=0,r=[];++n<s;){var o=e[n];t(o,n,e)&&(r[i++]=o)}return r}function Lt(){return[]}var yt=Object.prototype.propertyIsEnumerable,It=Object.getOwnPropertySymbols,Dt=It?function(e){return null==e?[]:(e=Object(e),dt(It(e),function(t){return yt.call(e,t)}))}:Lt;function pt(e){return ut(e,Fe,Dt)}var mt=Object.prototype.hasOwnProperty;var gt=V(L,"DataView"),ft=V(L,"Promise"),Ct=V(L,"Set"),ht=V(L,"WeakMap"),Nt="[object Map]",bt="[object Promise]",xt="[object Set]",Tt="[object WeakMap]",St="[object DataView]",Zt=j(gt),At=j($),Et=j(ft),Xt=j(Ct),Yt=j(ht),jt=C;(gt&&jt(new gt(new ArrayBuffer(1)))!=St||$&&jt(new $)!=Nt||ft&&jt(ft.resolve())!=bt||Ct&&jt(new Ct)!=xt||ht&&jt(new ht)!=Tt)&&(jt=function(e){var t=C(e),n="[object Object]"==t?e.constructor:void 0,s=n?j(n):"";if(s)switch(s){case Zt:return St;case At:return Nt;case Et:return bt;case Xt:return xt;case Yt:return Tt}return t});var zt=jt,vt="[object Arguments]",Gt="[object Array]",Kt="[object Object]",Wt=Object.prototype.hasOwnProperty;function Ut(e,t,n,s,i,r){var o=w(e),a=w(t),l=o?Gt:zt(e),c=a?Gt:zt(t),M=(l=l==vt?Kt:l)==Kt,u=(c=c==vt?Kt:c)==Kt,d=l==c;if(d&&Ze(e)){if(!Ze(t))return!1;o=!0,M=!1}if(d&&!M)return r||(r=new tt),o||Ue(e)?rt(e,t,n,s,i,r):function(e,t,n,s,i,r,o){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!r(new ot(e),new ot(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return P(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=at;case"[object Set]":var l=1&s;if(a||(a=lt),e.size!=t.size&&!l)return!1;var c=o.get(e);if(c)return c==t;s|=2,o.set(e,t);var M=rt(a(e),a(t),s,i,r,o);return o.delete(e),M;case"[object Symbol]":if(Mt)return Mt.call(e)==Mt.call(t)}return!1}(e,t,l,n,s,i,r);if(!(1&n)){var L=M&&Wt.call(e,"__wrapped__"),y=u&&Wt.call(t,"__wrapped__");if(L||y){var I=L?e.value():e,D=y?t.value():t;return r||(r=new tt),i(I,D,n,s,r)}}return!!d&&(r||(r=new tt),function(e,t,n,s,i,r){var o=1&n,a=pt(e),l=a.length;if(l!=pt(t).length&&!o)return!1;for(var c=l;c--;){var M=a[c];if(!(o?M in t:mt.call(t,M)))return!1}var w=r.get(e),u=r.get(t);if(w&&u)return w==t&&u==e;var d=!0;r.set(e,t),r.set(t,e);for(var L=o;++c<l;){var y=e[M=a[c]],I=t[M];if(s)var D=o?s(I,y,M,t,e,r):s(y,I,M,e,t,r);if(!(void 0===D?y===I||i(y,I,n,s,r):D)){d=!1;break}L||(L="constructor"==M)}if(d&&!L){var p=e.constructor,m=t.constructor;p==m||!("constructor"in e)||!("constructor"in t)||"function"==typeof p&&p instanceof p&&"function"==typeof m&&m instanceof m||(d=!1)}return r.delete(e),r.delete(t),d}(e,t,n,s,i,r))}function kt(e,t,n,s,i){return e===t||(null==e||null==t||!h(e)&&!h(t)?e!=e&&t!=t:Ut(e,t,n,s,kt,i))}function Vt(e){return e==e&&!S(e)}function Qt(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}function Ht(e){var t=function(e){for(var t=Fe(e),n=t.length;n--;){var s=t[n],i=e[s];t[n]=[s,i,Vt(i)]}return t}(e);return 1==t.length&&t[0][2]?Qt(t[0][0],t[0][1]):function(n){return n===e||function(e,t,n,s){var i=n.length,r=i,o=!s;if(null==e)return!r;for(e=Object(e);i--;){var a=n[i];if(o&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++i<r;){var l=(a=n[i])[0],c=e[l],M=a[1];if(o&&a[2]){if(void 0===c&&!(l in e))return!1}else{var w=new tt;if(s)var u=s(c,M,l,e,t,w);if(!(void 0===u?kt(M,c,3,s,w):u))return!1}}return!0}(n,e,t)}}function Jt(e,t){return null!=e&&t in Object(e)}function Rt(e,t){return null!=e&&function(e,t,n){for(var s=-1,i=(t=de(t,e)).length,r=!1;++s<i;){var o=Le(t[s]);if(!(r=null!=e&&n(e,o)))break;e=e[o]}return r||++s!=i?r:!!(i=null==e?0:e.length)&&Xe(i)&&Ee(o,i)&&(w(e)||be(e))}(e,t,Jt)}function Pt(e){return function(t){return null==t?void 0:t[e]}}function Ot(e){return T(e)?Pt(Le(e)):function(e){return function(t){return ye(t,e)}}(e)}function Bt(e){return"function"==typeof e?e:null==e?qe:"object"==typeof e?w(e)?function(e,t){return T(e)&&Vt(t)?Qt(Le(e),t):function(n){var s=Ie(n,e);return void 0===s&&s===t?Rt(n,e):kt(t,s,3)}}(e[0],e[1]):Ht(e):Ot(e)}function Ft(e,t){var n=-1,s=Be(e)?Array(e.length):[];return _e(e,function(e,i,r){s[++n]=t(e,i,r)}),s}function $t(e,t){return(w(e)?le:Ft)(e,Bt(t))}function _t(e){return!0===(t=e)||!1===t||h(t)&&"[object Boolean]"==C(t);var t}function qt(e){return"[object String]"===Object.prototype.toString.call(e)}function en(e){return!(!qt(e)||""===e)}function tn(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!en(e))return s("invalid v");let i={};try{i=JSON.parse(e)}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}function nn(e){return"[object Object]"===Object.prototype.toString.call(e)}function sn(e){if(nn(e)){for(let t in e)return!0;return!1}return!1}function rn(e){return"[object Array]"===Object.prototype.toString.call(e)}var on=/\s/;var an=/^\s+/;function ln(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&on.test(e.charAt(t)););return t}(e)+1).replace(an,""):e}var cn=/^[-+]0x[0-9a-f]+$/i,Mn=/^0b[01]+$/i,wn=/^0o[0-7]+$/i,un=parseInt;function dn(e){if("number"==typeof e)return e;if(N(e))return NaN;if(S(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=S(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=ln(e);var n=Mn.test(e);return n||wn.test(e)?un(e.slice(2),n?2:8):cn.test(e)?NaN:+e}var Ln=1/0;function yn(e){return e?(e=dn(e))===Ln||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function In(e){var t=yn(e),n=t%1;return t==t?n?t-n:t:0}function Dn(e){return e!=e}function pn(e){let t=!1;if(en(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(Dn(e))return!1;t=!0}return t}function mn(e){if(!pn(e))return 0;return yn(e)}function gn(e,t={}){let n=Ie(t,"useLimitSafe",null);return _t(n)||(n=!1),!!pn(e)&&(e=mn(e),n?Number.isSafeInteger(e):"number"==typeof(s=e)&&s==In(s));var s}var fn=L.isFinite,Cn=Math.min;var hn=function(e){var t=Math[e];return function(e,n){if(e=dn(e),(n=null==n?0:Cn(In(n),292))&&fn(e)){var s=(ue(e)+"e").split("e");return+((s=(ue(t(s[0]+"e"+(+s[1]+n)))+"e").split("e"))[0]+"e"+(+s[1]-n))}return t(e)}}("round"),Nn=hn;function bn(e,t={}){let n=Ie(t,"useClampSafe",null);_t(n)||(n=!1);let s=Ie(t,"useLimitSafe",null);_t(s)||(s=!1);let i=Ie(t,"returnWithStateAndMsg",null);_t(i)||(i=!1);let r=e=>i?{state:"success",msg:e}:e,o=e=>{if(i)return{state:"error",msg:e};throw new Error(e)};if(!pn(e))return r(0);let a=null;try{e=mn(e),a=Nn(e),n&&(a>Number.MAX_SAFE_INTEGER?a=Number.MAX_SAFE_INTEGER:a<Number.MIN_SAFE_INTEGER&&(a=Number.MIN_SAFE_INTEGER))}catch(e){return o(e.toString())}return s&&!Number.isSafeInteger(Number(a))?o(`v[${e}] is not a safe integer`):("0"===String(a)&&(a=0),r(a))}function xn(e,t={}){if(!gn(e,t))return!1;return bn(e)>0}var Tn=Je(Object.getPrototypeOf,Object),Sn=Function.prototype,Zn=Object.prototype,An=Sn.toString,En=Zn.hasOwnProperty,Xn=An.call(Object);function Yn(e){if(!h(e)||"[object Object]"!=C(e))return!1;var t=Tn(e);if(null===t)return!0;var n=En.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&An.call(n)==Xn}function jn(e){if(!h(e))return!1;var t=C(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Yn(e)}function zn(e){return jn(e)}function vn(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function Gn(e){let t,n=Object.prototype.toString.call(e);if(t="[object Promise]"===n,t)return!0;if("[object Function]"!==n)return!1;try{t="function"!=typeof e.subscribe&&"function"==typeof e.then}catch(e){}return t}function Kn(e,t={}){if(!gn(e,t))return!1;return bn(e)>=0}function Wn(e,t){return en(e)&&Kn(t)?0===(t=bn(t))?"":e.substring(0,t):""}function Un(e,t){if(!en(e))return"";if(!Kn(t))return"";if(0===(t=bn(t)))return"";let n=e.length-t;return n<0&&(n=0),e.substring(n,n+t)}function kn(e,t){return en(e)&&Kn(t)?0===(t=bn(t))?e:Un(e,e.length-t):""}function Vn(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}let Qn=function(e){if(!vn(e))throw new Error("fn is not a function");return function(){let t=Vn(),n=null,s=null;try{n=e.apply(this,arguments)}catch(e){s=e}return null!==s?t.resolve({state:"error",msg:s}):Gn(n)?n.then(e=>{t.resolve({state:"success",msg:e})}).catch(e=>{"cancelled"===Ie(e,"reason")?t.resolve({state:"cancelled",msg:""}):t.resolve({state:"error",msg:e})}):t.resolve({state:"success",msg:n}),t}};var Hn="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Jn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Rn(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){if(this instanceof e){var n=[null];return n.push.apply(n,arguments),new(Function.bind.apply(t,n))}return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}),n}var Pn={exports:{}};var On,Bn={exports:{}},Fn=Rn(Object.freeze({__proto__:null,default:{}}));function $n(){return On||(On=1,function(e){var t;e.exports=(t=t||function(e,t){var n;if("undefined"!=typeof window&&window.crypto&&(n=window.crypto),"undefined"!=typeof self&&self.crypto&&(n=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!=typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&void 0!==Hn&&Hn.crypto&&(n=Hn.crypto),!n)try{n=Fn}catch(e){}var s=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},i=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),r={},o=r.lib={},a=o.Base={extend:function(e){var t=i(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},l=o.WordArray=a.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||M).stringify(this)},concat:function(e){var t=this.words,n=e.words,s=this.sigBytes,i=e.sigBytes;if(this.clamp(),s%4)for(var r=0;r<i;r++){var o=n[r>>>2]>>>24-r%4*8&255;t[s+r>>>2]|=o<<24-(s+r)%4*8}else for(var a=0;a<i;a+=4)t[s+a>>>2]=n[a>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=a.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n<e;n+=4)t.push(s());return new l.init(t,e)}}),c=r.enc={},M=c.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],i=0;i<n;i++){var r=t[i>>>2]>>>24-i%4*8&255;s.push((r>>>4).toString(16)),s.push((15&r).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s+=2)n[s>>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new l.init(n,t/2)}},w=c.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],i=0;i<n;i++){var r=t[i>>>2]>>>24-i%4*8&255;s.push(String.fromCharCode(r))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s++)n[s>>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new l.init(n,t)}},u=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(w.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return w.parse(unescape(encodeURIComponent(e)))}},d=o.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=u.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n,s=this._data,i=s.words,r=s.sigBytes,o=this.blockSize,a=r/(4*o),c=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,M=e.min(4*c,r);if(c){for(var w=0;w<c;w+=o)this._doProcessBlock(i,w);n=i.splice(0,c),s.sigBytes-=M}return new l.init(n,M)},clone:function(){var e=a.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});o.Hasher=d.extend({cfg:a.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){d.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new L.HMAC.init(e,n).finalize(t)}}});var L=r.algo={};return r}(Math),t)}(Bn)),Bn.exports}!function(e){e.exports=$n().enc.Utf8}(Pn);var _n=Jn(Pn.exports),qn={exports:{}};!function(e){var t;e.exports=(t=$n(),function(){var e=t,n=e.lib.WordArray;function s(e,t,s){for(var i=[],r=0,o=0;o<t;o++)if(o%4){var a=s[e.charCodeAt(o-1)]<<o%4*2|s[e.charCodeAt(o)]>>>6-o%4*2;i[r>>>2]|=a<<24-r%4*8,r++}return n.create(i,r)}e.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,s=this._map;e.clamp();for(var i=[],r=0;r<n;r+=3)for(var o=(t[r>>>2]>>>24-r%4*8&255)<<16|(t[r+1>>>2]>>>24-(r+1)%4*8&255)<<8|t[r+2>>>2]>>>24-(r+2)%4*8&255,a=0;a<4&&r+.75*a<n;a++)i.push(s.charAt(o>>>6*(3-a)&63));var l=s.charAt(64);if(l)for(;i.length%4;)i.push(l);return i.join("")},parse:function(e){var t=e.length,n=this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var r=0;r<n.length;r++)i[n.charCodeAt(r)]=r}var o=n.charAt(64);if(o){var a=e.indexOf(o);-1!==a&&(t=a)}return s(e,t,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(qn);var es=Jn(qn.exports);function ts(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!en(e))return s("invalid b64");let i="";try{i=es.parse(e).toString(_n)}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}function ns(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function ss(e){if(nn(e)){for(let t in e)return!1;return!0}return!1}function is(e){return!!rn(e)&&0===e.length}function rs(e){return!!ns(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!ss(e)||(!!function(e){return!(!qt(e)||""!==e)}(e)||(!!is(e)||!!Dn(e)))))}function os(e){return!!rn(e)&&(0!==e.length&&(1!==e.length||!rs(e[0])))}function as(e,t,n=""){if(!os(t))return{};let s={};return et(t,function(t){s[t]=Ie(e,t,n)}),s}function ls(e,t={}){let n=Ie(t,"fs"),s=!1;try{n.statSync(e),s=!0}catch{s=!1}return s}function cs(e,t={}){let n=Ie(t,"fs");if(!ls(e,{fs:n}))return!1;let s=n.lstatSync(e);return!s.isFile()&&!s.isSymbolicLink()}function Ms(e){return cs(e,{fs:t})}function ws(e,t={}){let n=Ie(t,"fs");return!!ls(e,{fs:n})&&(!n.lstatSync(e).isDirectory()&&!n.lstatSync(e).isSymbolicLink())}function us(e){return ws(e,{fs:t})}function ds(e,t,n){if(!en(e))return"";if(!en(t))return"";if(!qt(n))return"";return String(e).replaceAll(t,n)}var Ls={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,n=36e5,s="millisecond",i="second",r="minute",o="hour",a="day",l="week",c="month",M="quarter",w="year",u="date",d="Invalid Date",L=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|YYYY|YY|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,I={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(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},D=function(e,t,n){var s=String(e);return!s||s.length>=t?e:""+Array(t+1-s.length).join(n)+e},p={s:D,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),s=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+D(s,2,"0")+":"+D(i,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var s=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(s,c),r=n-i<0,o=t.clone().add(s+(r?-1:1),c);return+(-(s+(n-i)/(r?i-o:o-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:c,y:w,w:l,d:a,D:u,h:o,m:r,s:i,ms:s,Q:M}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},m="en",g={};g[m]=I;var f="$isDayjsObject",C=function(e){return e instanceof x||!(!e||!e[f])},h=function e(t,n,s){var i;if(!t)return m;if("string"==typeof t){var r=t.toLowerCase();g[r]&&(i=r),n&&(g[r]=n,i=r);var o=t.split("-");if(!i&&o.length>1)return e(o[0])}else{var a=t.name;g[a]=t,i=a}return!s&&i&&(m=i),i||!s&&m},N=function(e,t){if(C(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new x(n)},b=p;b.l=h,b.i=C,b.w=function(e,t){return N(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var x=function(){function I(e){this.$L=h(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[f]=!0}var D=I.prototype;return D.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var s=t.match(L);if(s){var i=s[2]-1||0,r=(s[7]||"0").substring(0,3);return n?new Date(Date.UTC(s[1],i,s[3]||1,s[4]||0,s[5]||0,s[6]||0,r)):new Date(s[1],i,s[3]||1,s[4]||0,s[5]||0,s[6]||0,r)}}return new Date(t)}(e),this.init()},D.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},D.$utils=function(){return b},D.isValid=function(){return!(this.$d.toString()===d)},D.isSame=function(e,t){var n=N(e);return this.startOf(t)<=n&&n<=this.endOf(t)},D.isAfter=function(e,t){return N(e)<this.startOf(t)},D.isBefore=function(e,t){return this.endOf(t)<N(e)},D.$g=function(e,t,n){return b.u(e)?this[t]:this.set(n,e)},D.unix=function(){return Math.floor(this.valueOf()/1e3)},D.valueOf=function(){return this.$d.getTime()},D.startOf=function(e,t){var n=this,s=!!b.u(t)||t,M=b.p(e),d=function(e,t){var i=b.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return s?i:i.endOf(a)},L=function(e,t){return b.w(n.toDate()[e].apply(n.toDate("s"),(s?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},y=this.$W,I=this.$M,D=this.$D,p="set"+(this.$u?"UTC":"");switch(M){case w:return s?d(1,0):d(31,11);case c:return s?d(1,I):d(0,I+1);case l:var m=this.$locale().weekStart||0,g=(y<m?y+7:y)-m;return d(s?D-g:D+(6-g),I);case a:case u:return L(p+"Hours",0);case o:return L(p+"Minutes",1);case r:return L(p+"Seconds",2);case i:return L(p+"Milliseconds",3);default:return this.clone()}},D.endOf=function(e){return this.startOf(e,!1)},D.$set=function(e,t){var n,l=b.p(e),M="set"+(this.$u?"UTC":""),d=(n={},n[a]=M+"Date",n[u]=M+"Date",n[c]=M+"Month",n[w]=M+"FullYear",n[o]=M+"Hours",n[r]=M+"Minutes",n[i]=M+"Seconds",n[s]=M+"Milliseconds",n)[l],L=l===a?this.$D+(t-this.$W):t;if(l===c||l===w){var y=this.clone().set(u,1);y.$d[d](L),y.init(),this.$d=y.set(u,Math.min(this.$D,y.daysInMonth())).$d}else d&&this.$d[d](L);return this.init(),this},D.set=function(e,t){return this.clone().$set(e,t)},D.get=function(e){return this[b.p(e)]()},D.add=function(s,M){var u,d=this;s=Number(s);var L=b.p(M),y=function(e){var t=N(d);return b.w(t.date(t.date()+Math.round(e*s)),d)};if(L===c)return this.set(c,this.$M+s);if(L===w)return this.set(w,this.$y+s);if(L===a)return y(1);if(L===l)return y(7);var I=(u={},u[r]=t,u[o]=n,u[i]=e,u)[L]||1,D=this.$d.getTime()+s*I;return b.w(D,this)},D.subtract=function(e,t){return this.add(-1*e,t)},D.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||d;var s=e||"YYYY-MM-DDTHH:mm:ssZ",i=b.z(this),r=this.$H,o=this.$m,a=this.$M,l=n.weekdays,c=n.months,M=n.meridiem,w=function(e,n,i,r){return e&&(e[n]||e(t,s))||i[n].slice(0,r)},u=function(e){return b.s(r%12||12,e,"0")},L=M||function(e,t,n){var s=e<12?"AM":"PM";return n?s.toLowerCase():s};return s.replace(y,function(e,s){return s||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return b.s(t.$y,4,"0");case"M":return a+1;case"MM":return b.s(a+1,2,"0");case"MMM":return w(n.monthsShort,a,c,3);case"MMMM":return w(c,a);case"D":return t.$D;case"DD":return b.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return w(n.weekdaysMin,t.$W,l,2);case"ddd":return w(n.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(r);case"HH":return b.s(r,2,"0");case"h":return u(1);case"hh":return u(2);case"a":return L(r,o,!0);case"A":return L(r,o,!1);case"m":return String(o);case"mm":return b.s(o,2,"0");case"s":return String(t.$s);case"ss":return b.s(t.$s,2,"0");case"SSS":return b.s(t.$ms,3,"0");case"Z":return i}return null}(e)||i.replace(":","")})},D.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},D.diff=function(s,u,d){var L,y=this,I=b.p(u),D=N(s),p=(D.utcOffset()-this.utcOffset())*t,m=this-D,g=function(){return b.m(y,D)};switch(I){case w:L=g()/12;break;case c:L=g();break;case M:L=g()/3;break;case l:L=(m-p)/6048e5;break;case a:L=(m-p)/864e5;break;case o:L=m/n;break;case r:L=m/t;break;case i:L=m/e;break;default:L=m}return d?L:b.a(L)},D.daysInMonth=function(){return this.endOf(c).$D},D.$locale=function(){return g[this.$L]},D.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),s=h(e,t,!0);return s&&(n.$L=s),n},D.clone=function(){return b.w(this.$d,this)},D.toDate=function(){return new Date(this.valueOf())},D.toJSON=function(){return this.isValid()?this.toISOString():null},D.toISOString=function(){return this.$d.toISOString()},D.toString=function(){return this.$d.toUTCString()},I}(),T=x.prototype;return N.prototype=T,[["$ms",s],["$s",i],["$m",r],["$H",o],["$W",a],["$M",c],["$y",w],["$D",u]].forEach(function(e){T[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),N.extend=function(e,t){return e.$i||(e(t,x,N),e.$i=!0),N},N.locale=h,N.isDayjs=C,N.unix=function(e){return N(1e3*e)},N.en=g[m],N.Ls=g,N.p={},N}()}(Ls);var ys=Jn(Ls.exports);function Is(){if(!vn(ys))throw new Error("invalid dayjs");return ys().format("YYYY-MM-DDTHH:mm:ssZ")}let Ds="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),ps=Ds.length;function ms(e=32){let t=[];e=xn(e)?bn(e):32;for(let n=0;n<e;n++)t[n]=Ds[0|Math.random()*ps];return t.join("")}var gs={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0===--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,M=this._events[a],w=arguments.length;if(M.fn){switch(M.once&&this.removeListener(e,M.fn,void 0,!0),w){case 1:return M.fn.call(M.context),!0;case 2:return M.fn.call(M.context,t),!0;case 3:return M.fn.call(M.context,t,s),!0;case 4:return M.fn.call(M.context,t,s,i),!0;case 5:return M.fn.call(M.context,t,s,i,r),!0;case 6:return M.fn.call(M.context,t,s,i,r,o),!0}for(c=1,l=new Array(w-1);c<w;c++)l[c-1]=arguments[c];M.fn.apply(M.context,l)}else{var u,d=M.length;for(c=0;c<d;c++)switch(M[c].once&&this.removeListener(e,M[c].fn,void 0,!0),w){case 1:M[c].fn.call(M[c].context);break;case 2:M[c].fn.call(M[c].context,t);break;case 3:M[c].fn.call(M[c].context,t,s);break;case 4:M[c].fn.call(M[c].context,t,s,i);break;default:if(!l)for(u=1,l=new Array(w-1);u<w;u++)l[u-1]=arguments[u];M[c].fn.apply(M[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],M=a.length;l<M;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}(gs);var fs=Jn(gs.exports);function Cs(){return new fs}let hs=2147483647;async function Ns(e,t={}){let n=null,s=Vn();if(!vn(e))return s.reject("waitfunction需輸入函數f"),s;let i=async()=>{let t=e();return Gn(t)&&(t=await t),t};if(n=await i(),!0===n)return s.resolve(),s;let r=Ie(t,"attemptNum",null);xn(r)||(r=200);let o=Ie(t,"timeInterval",null);xn(o)||(o=1e3),o=Math.min(o,hs);let a=0,l=setInterval(async()=>{a+=1,n=await i(),!0===n&&(clearInterval(l),s.resolve()),a>r&&(clearInterval(l),s.reject(`exceeded attemptNum[${r}]`))},o);return s}function bs(e){return function(e,t={}){let n=Ie(t,"fs");if(cs(e,{fs:n}))return{success:"input folder is already exists: "+e};if(ls(e,{fs:n}))return{error:"input path already exists: "+e};try{n.mkdirSync(e,{recursive:!0})}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}function xs(e,t,n=[],s={}){let i=s.funSettle,r=s.tag||"evem",o=(t,...n)=>e.emit(t,...n);vn(s.funEmit)&&(o=s.funEmit);try{return o(t,...n)}catch(s){if(vn(i))try{i(s)}catch(e){}try{"error"!==t&&e.listenerCount("error")>0?o("error",{fun:"listener",name:t,msg:s,args:n}):console.error(`[wsemi ${r}] listener of '${String(t)}' threw:`,s)}catch(e){try{console.error(`[wsemi ${r}] listener of '${String(t)}' threw, and reporting it also threw:`,e,s)}catch(e){}}return!1}}function Ts(e){try{let t=e();return"string"==typeof t?t:""}catch(e){return""}}function Ss(e,t){try{let n=new WeakSet,s=[],i=JSON.stringify(e,function(e,i){for(;s.length>0&&s[s.length-1]!==this;)s.pop();if(s.length>=t)return"[Deep]";if("bigint"==typeof i)return String(i);if(null!==i&&"object"==typeof i){if(n.has(i))return"[Circular]";n.add(i),s.push(i)}return i});return"string"==typeof i?i:""}catch(e){return""}}function Zs(e){if(e.length>=2&&'"'===e[0]&&'"'===e[e.length-1]){let t=Ts(()=>JSON.parse(e));if(""!==t)return t}return e}function As(e,t){if(void 0===e)return"";if(null===e)return"null";let n=function(e){let t=typeof e;return"string"===t?e:null==e?"":"number"===t||"boolean"===t||"bigint"===t||"symbol"===t?String(e):""}(e);if(""!==n)return n;let s=Ss(e,t);if(""!==s&&"{}"!==s)return Zs(s);let i=Ts(()=>String(e));return""!==i&&"[object Object]"!==i?i:s}function Es(e,t){let n=new WeakSet;null===e||"object"!=typeof e&&"function"!=typeof e||n.add(e);let s=e,i=[];for(let e=0;e<t.levelCauseMax;e++){let e=null;try{e=s.cause}catch(e){break}if(null==e)break;if("object"==typeof e||"function"==typeof e){if(n.has(e))break;n.add(e)}let r=Ys(e,{...t,useCause:!1,useAggregate:!1});""!==r&&i.push(r),s=e}return i.join(" <- ")}function Xs(e,t){let n=null;try{n=e.errors}catch(e){return""}if(!Array.isArray(n)||0===n.length)return"";let s=[];for(let i=0;i<n.length&&i<t.levelCauseMax;i++){if(n[i]===e)continue;let r=Ys(n[i],{...t,useCause:!1,useAggregate:!1});""!==r&&s.push(r)}return s.join("; ")}function Ys(e,t){if("string"==typeof e)return e;if(null==e)return"";if("number"==typeof e)return Number.isNaN(e)?"":String(e);if("boolean"==typeof e||"bigint"==typeof e||"symbol"==typeof e)return String(e);let n=null,s=!1;try{n=e.message,s=!0}catch(e){s=!1}if(s&&"string"==typeof n){if(""!==n){let s=n;if(t.useCause){let n=Es(e,t);""!==n&&(s=`${s} <- ${n}`)}if(t.useAggregate){let n=Xs(e,t);""!==n&&(s=`${s} [${n}]`)}return s}let s=Es(e,t);return""!==s?s:""}if(s){let e=As(n,t.levelJsonMax);if(""!==e)return e}let i=Es(e,t);if(""!==i)return i;if(t.useAggregate){let n=Xs(e,t);if(""!==n)return n}let r=Ss(e,t.levelJsonMax),o=Zs(r);if(""!==o&&"{}"!==o)return o;let a=Ts(()=>String(e));if(""!==a&&"[object Object]"!==a)return a;let l=Ts(()=>Object.prototype.toString.call(e));return""!==l&&"[object Object]"!==l?l:""!==r?r:""}function js(e,t={}){let n=Ie(t,"useCause",null);_t(n)||(n=!1);let s=Ie(t,"useAggregate",null);_t(s)||(s=!1);let i=Ie(t,"levelCauseMax",null);xn(i,{useLimitSafe:!0})||(i=8),i=bn(i);let r=Ie(t,"levelJsonMax",null);xn(r,{useLimitSafe:!0})||(r=6),r=bn(r);let o=Ie(t,"lengthMessageMax",null);xn(o,{useLimitSafe:!0})||(o=0),o=bn(o);let a={useCause:n,useAggregate:s,levelCauseMax:i,levelJsonMax:r,lengthMessageMax:o},l="";try{l=Ys(e,a)}catch(e){return l="",l}return en(l)?(a.lengthMessageMax>0&&l.length>a.lengthMessageMax&&(l=a.lengthMessageMax>3?l.slice(0,a.lengthMessageMax-3)+"...":l.slice(0,a.lengthMessageMax)),l):(l="",l)}function zs(e){if(!(en(e)||pn(e)||N(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}function vs(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!en(e))return s("invalid str");let i="";try{let t=_n.parse(e);i=es.stringify(t)}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}function Gs(e,t){return!!nn(e)&&(!(!en(t)&&!pn(t))&&t in e)}function Ks(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function Ws(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function Us(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function ks(e){if(!(Ks(e)||function(e){let t=Object.prototype.toString.call(e);if("[object Blob]"===t||"[object File]"===t)return!0;try{if("undefined"!=typeof Blob&&e instanceof Blob)return!0}catch(e){}return!1}(e)||Ws(e)||Us(e)))return null;try{if(pn(e.byteLength))return e.byteLength}catch(e){}try{if(pn(e.length))return e.length}catch(e){}try{if(pn(e.size))return e.size}catch(e){}return null}let Vs=/[\t\n\f\r ]/g,Qs=/^[A-Za-z0-9+/]*={0,2}$/,Hs=/=+$/;function Js(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:new Uint8Array;if(!en(e))return s("invalid str");let i=null;try{let t=vs(e,{returnWithStateAndMsg:!0});if("error"===t.state)return s(`str2b64: ${t.msg}`);let n=function(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:new Uint8Array;if(!qt(e))return s("invalid b64");let i=e.replace(Vs,"");if(!Qs.test(i))return s("invalid b64, contains characters outside the base64 alphabet or misplaced padding");let r=i.length-i.replace(Hs,"").length,o=(i.length-r)%4;if(0===r&&1===o)return s(`invalid b64, the last chunk has only 1 character[${i.length}]`);if(1===r&&3!==o)return s("invalid b64, malformed padding, 1 padding requires the last chunk to have 3 characters");if(2===r&&2!==o)return s("invalid b64, malformed padding, 2 paddings require the last chunk to have 2 characters");let a=null;try{let e=es.parse(i),t=e.words,n=e.sigBytes;a=new Uint8Array(n);for(let e=0;e<n;e++){let n=t[e>>>2]>>>24-e%4*8&255;a[e]=n}}catch(e){return s(e.toString())}return n?{state:"success",msg:a}:a}(t.msg,{returnWithStateAndMsg:!0});if("error"===n.state)return s(`b642u8arr: ${n.msg}`);i=n.msg}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}function Rs(e,t,n=0,s=!0,i=52,r=8){return function(e,t,n,s,i,r){if(!pn(e))return null;if(!Ws(t))return null;if(!gn(n))return null;if(!_t(s))return null;if(!gn(i))return null;if(!gn(r))return null;let o,a,l;e=mn(e);let c=8*r-i-1,M=(1<<c)-1,w=M>>1,u=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=s?r-1:0,L=s?-1:1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=M):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+w>=1?u/l:u*Math.pow(2,1-w))*l>=2&&(o++,l/=2),o+w>=M?(a=0,o=M):o+w>=1?(a=(e*l-1)*Math.pow(2,i),o+=w):(a=e*Math.pow(2,w-1)*Math.pow(2,i),o=0));i>=8;t[n+d]=255&a,d+=L,a/=256,i-=8);for(o=o<<i|a,c+=i;c>0;t[n+d]=255&o,d+=L,o/=256,c-=8);return t[n+d-L]|=128*y,null}(e,t,n,s,i,r)}function Ps(e){let t=0;et(e,e=>{t+=ks(e)});let n=new Uint8Array(t),s=0;return et(e,e=>{let t=function(e){return Ks(e)?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0)}(e);n.set(t,s),s+=t.length}),n}function Os(e,t={}){let n=[],s=new Uint8Array,i=Ie(t,"returnWithStateAndMsg",null);_t(i)||(i=!1);let r=e=>i?{state:"error",msg:e}:new Uint8Array;if(!(o=e,rn(o)&&o.length>=1||sn(e)))return r("invalid data, data is not an effective object or a non-empty array");var o;let a=[],l=[];function c(e){a.push(ks(e)),l.push(e)}try{let t=function(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{results:"",binarys:[]};if(!nn(e)&&!rn(e))return s("invalid data, data is not an object or array");if(ss(e)||is(e))return s("invalid data, data is an empty object or empty array");let i=/^(?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,r="",o=[];try{let t=-1;r=JSON.stringify(e,function(e,n){if(Ws(n)){t+=1;let e=`[BlazeForUint8Array]::${t}`;return o.push(n),e}if(Us(n)){t+=1;let e=`[BlazeForUint16Array]::${t}`;return o.push(n),e}if(Ks(n)){t+=1;let e=`[BlazeForArrayBuffer]::${t}`;return o.push(n),e}return jn(n)&&(n=n.toString()),en(n)&&91===n.charCodeAt(0)&&i.test(n)?"[BlazeForPreventEscape]"+n:n})}catch(e){return s(e.toString())}return n?{state:"success",msg:{results:r,binarys:o}}:{results:r,binarys:o}}(e,{returnWithStateAndMsg:!0});if("error"===t.state)return r(`obj2stru8arr: ${t.msg}`);let i=t.msg;c(Js(i.results)),et(i.binarys,e=>{c(e)});let o=a,M=Js(JSON.stringify(o)),w=new Uint8Array(8);Rs(ks(M),w),n.push(w),n.push(M),et(l,e=>{n.push(e)}),s=Ps(n)}catch(e){return r(e.toString())}return i?{state:"success",msg:s}:s}function Bs(e,t=0,n=!0,s=52,i=8){return function(e,t,n,s,i){if(!Ws(e))return null;if(!gn(t))return null;if(!_t(n))return null;if(!gn(s))return null;if(!gn(i))return null;let r,o,a=8*i-s-1,l=(1<<a)-1,c=l>>1,M=-7,w=n?0:i-1,u=n?1:-1,d=e[t+w];for(w+=u,r=d&(1<<-M)-1,d>>=-M,M+=a;M>0;r=256*r+e[t+w],w+=u,M-=8);for(o=r&(1<<-M)-1,r>>=-M,M+=s;M>0;o=256*o+e[t+w],w+=u,M-=8);if(0===r)r=1-c;else{if(r===l)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,s),r-=c}return(d?-1:1)*o*Math.pow(2,r-s)}(e,t,n,s,i)}var Fs={exports:{}};!function(e){var t;e.exports=(t=$n(),function(){if("function"==typeof ArrayBuffer){var e=t.lib.WordArray,n=e.init,s=e.init=function(e){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(e instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)&&(e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),e instanceof Uint8Array){for(var t=e.byteLength,s=[],i=0;i<t;i++)s[i>>>2]|=e[i]<<24-i%4*8;n.call(this,s,t)}else n.apply(this,arguments)};s.prototype=e}}(),t.lib.WordArray)}(Fs);var $s=Jn(Fs.exports);function _s(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!Ws(e))return s("invalid u8a");let i="";try{let t=function(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(!Ws(e))return s("invalid u8a");let i="";try{i=$s.create(e).toString(es)}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}(e,{returnWithStateAndMsg:!0});if("error"===t.state)return s(`u8arr2b64: ${t.msg}`);i=ts(t.msg)}catch(e){return s(e.toString())}return n?{state:"success",msg:i}:i}function qs(e,t={}){let n=Ie(t,"returnWithStateAndMsg",null);_t(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!sn(e))return s("invalid data");let i=null,r=null;try{i=e.results,r=e.binarys}catch(e){return s(e.toString())}if(!en(i))return s("invalid results");if(!rn(r))return s("invalid binarys");let o=/^\[BlazeFor(Uint8Array|Uint16Array|ArrayBuffer)\]::(\d+)$/,a=/^\[BlazeForPreventEscape\](?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,l={};try{l=JSON.parse(i,function(e,t){if(!en(t)||91!==t.charCodeAt(0))return t;let n=o.exec(t);if(null===n)return a.test(t)?t.slice(23):t;let s=Number(n[2]);if(s>=r.length)throw new Error(`binary index out of range[${s}], binarys.length[${r.length}]`);return((e,t,n)=>{if("Uint16Array"===e&&!Us(n)){if(!Ws(n))throw new Error(`binarys[${t}] can not be restored to Uint16Array`);if(n.byteLength%2!=0)throw new Error(`binarys[${t}] byteLength[${n.byteLength}] is not even, can not be restored to Uint16Array`);let e=0===n.byteOffset&&n.byteLength===n.buffer.byteLength?n:new Uint8Array(n);return new Uint16Array(e.buffer)}if("ArrayBuffer"===e&&!Ks(n)){if(!Ws(n))throw new Error(`binarys[${t}] can not be restored to ArrayBuffer`);return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)}return n})(n[1],s,r[s])})}catch(e){return s(e.toString())}return n?{state:"success",msg:l}:l}function ei(e,t={}){let n={},s=Ie(t,"returnWithStateAndMsg",null);_t(s)||(s=!1);let i=e=>s?{state:"error",msg:e}:{};if(!Ws(e))return i("invalid u8a");try{let t=8,s=e.slice(0,t),r=e.slice(t,ks(e)),o=Bs(s),a=r.slice(0,o),l=r.slice(o,ks(r)),c=_s(a,{returnWithStateAndMsg:!0});if("error"===c.state)return i(`u8arr2str: ${c.msg}`);let M=c.msg,w=function(e,t){let n=0,s=0,i=[];return et(t,t=>{s=n+t;let r=e.slice(n,s);n=s,i.push(r)}),i}(l,JSON.parse(M)),u=_s(w.shift(),{returnWithStateAndMsg:!0});if("error"===u.state)return i(`u8arr2str: ${u.msg}`);let d=qs({results:u.msg,binarys:w},{returnWithStateAndMsg:!0});if("error"===d.state)return i(`stru8arr2obj: ${d.msg}`);n=d.msg}catch(e){return i(e.toString())}return s?{state:"success",msg:n}:n}function ti(e){return function(e,t={}){let n=Ie(t,"fs");if(!ls(e,{fs:n}))return{success:"file does not exist: "+e};if(!ws(e,{fs:n}))return{error:"input path is not a file: "+e};try{n.unlinkSync(e)}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}function ni(e){return en(e)&&e.length<=128&&/^[A-Za-z0-9]+$/.test(e)}let si={permission:200,param:200,app:200,output:200,packet:200,internal:200},ii={main:{apiType:"main",api:"apiMain",authFrom:"header",statusOf:si},ulctr:{apiType:"upload-controller",api:"apiUploadCheck",authFrom:"header",statusOf:si},slc:{apiType:"upload-slice",api:"apiUploadSlice",authFrom:"header",statusOf:si},dwgfn:{apiType:"download-get-filename",api:"apiDownloadGetFilename",authFrom:"header",statusOf:si,fields:[{name:"streamRead"},{name:"filename"}]},dwgf:{apiType:"download-get-file",api:"apiDownloadGetFile",authFrom:"query",statusOf:{permission:403,param:400,app:404,output:500,packet:500,internal:500},fields:[{name:"streamRead"},{name:"fileSize"},{name:"fileType"},{name:"filename",optional:!0}]},dw:{apiType:"download",api:"apiDownload",authFrom:"header",statusOf:si,fields:[{name:"streamRead"},{name:"filename"},{name:"fileSize"},{name:"fileType"}]}};var ri=Pt("length"),oi=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function ai(e){return oi.test(e)}var li="\\ud800-\\udfff",ci="["+li+"]",Mi="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",wi="\\ud83c[\\udffb-\\udfff]",ui="[^"+li+"]",di="(?:\\ud83c[\\udde6-\\uddff]){2}",Li="[\\ud800-\\udbff][\\udc00-\\udfff]",yi="(?:"+Mi+"|"+wi+")"+"?",Ii="[\\ufe0e\\ufe0f]?",Di=Ii+yi+("(?:\\u200d(?:"+[ui,di,Li].join("|")+")"+Ii+yi+")*"),pi="(?:"+[ui+Mi+"?",Mi,di,Li,ci].join("|")+")",mi=RegExp(wi+"(?="+wi+")|"+pi+Di,"g");function gi(e){return ai(e)?function(e){for(var t=mi.lastIndex=0;mi.test(e);)++t;return t}(e):ri(e)}function fi(e){if(null==e)return 0;if(Be(e))return"string"==typeof(t=e)||!w(t)&&h(t)&&"[object String]"==C(t)?gi(e):e.length;var t,n=zt(e);return"[object Map]"==n||"[object Set]"==n?e.size:Oe(e).length}function Ci(e,t,n){var s=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var r=Array(i);++s<i;)r[s]=e[s+t];return r}function hi(e){return e!=e}function Ni(e,t,n){return t==t?function(e,t,n){for(var s=n-1,i=e.length;++s<i;)if(e[s]===t)return s;return-1}(e,t,n):function(e,t,n,s){for(var i=e.length,r=n+(s?1:-1);s?r--:++r<i;)if(t(e[r],r,e))return r;return-1}(e,hi,n)}var bi="\\ud800-\\udfff",xi="["+bi+"]",Ti="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Si="\\ud83c[\\udffb-\\udfff]",Zi="[^"+bi+"]",Ai="(?:\\ud83c[\\udde6-\\uddff]){2}",Ei="[\\ud800-\\udbff][\\udc00-\\udfff]",Xi="(?:"+Ti+"|"+Si+")"+"?",Yi="[\\ufe0e\\ufe0f]?",ji=Yi+Xi+("(?:\\u200d(?:"+[Zi,Ai,Ei].join("|")+")"+Yi+Xi+")*"),zi="(?:"+[Zi+Ti+"?",Ti,Ai,Ei,xi].join("|")+")",vi=RegExp(Si+"(?="+Si+")|"+zi+ji,"g");function Gi(e){return ai(e)?function(e){return e.match(vi)||[]}(e):function(e){return e.split("")}(e)}function Ki(e,t,n){if((e=ue(e))&&(n||void 0===t))return ln(e);if(!e||!(t=we(t)))return e;var s=Gi(e),i=Gi(t),r=function(e,t){for(var n=-1,s=e.length;++n<s&&Ni(t,e[n],0)>-1;);return n}(s,i),o=function(e,t){for(var n=e.length;n--&&Ni(t,e[n],0)>-1;);return n}(s,i)+1;return function(e,t,n){var s=e.length;return n=void 0===n?s:n,!t&&n>=s?e:Ci(e,t,n)}(s,r,o).join("")}function Wi(e,t){if(!en(e))return[];if(!en(t))return[];let n=function(e,t){return en(e)&&en(t)?e.split(t):[]}(e,t);n=$t(n,Ki);let s=[];return et(n,function(e){en(e)&&s.push(e)}),s}const Ui=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,1,127,96,3,127,127,127,0,96,2,127,127,0,96,1,127,1,127,96,3,127,127,126,1,126,96,3,126,127,127,1,126,96,2,127,126,0,96,1,127,1,126,3,11,10,0,0,2,1,3,4,5,6,1,7,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,251,22,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,3,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,0,32,1,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,0,32,1,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,137,235,208,208,7,107,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,207,140,162,142,6,106,54,2,0,11,195,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,4,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,5,32,5,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,40,2,0,32,4,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,12,106,34,3,32,3,40,2,0,32,4,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,16,106,34,3,32,3,40,2,0,32,4,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,20,106,34,3,32,3,40,2,0,32,4,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,5,32,0,65,20,106,40,2,0,33,7,3,64,32,2,32,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,5,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,7,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,7,32,8,32,1,65,4,106,34,1,79,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,5,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,4,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,255,3,2,3,126,1,127,32,0,32,1,106,33,6,32,1,65,32,79,4,126,32,6,65,32,107,33,6,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,6,32,0,65,8,106,34,0,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,134,2,0,32,1,32,2,106,33,2,3,64,32,2,32,1,65,8,106,79,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,0,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,0,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,77,0,32,0,65,8,106,32,1,66,214,235,130,238,234,253,137,245,224,0,124,55,3,0,32,0,65,16,106,32,1,66,177,169,172,193,173,184,212,166,61,125,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,249,234,208,208,231,201,161,228,225,0,124,55,3,0,11,244,4,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,16,106,34,3,32,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,24,106,34,3,32,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,32,106,34,3,32,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,6,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,9,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,2,32,1,65,8,106,34,1,79,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,188,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,1,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);async function ki(e,t={}){let n=Ie(t,"fs"),s=Ie(t,"chunkSize");if(pn(s)||(s=67108864),s=mn(s),!ws(e,{fs:n}))return Promise.reject("fp is not a file");let i=Vn();try{let{create64:t}=await async function(){return function(e){const{exports:{mem:t,xxh32:n,xxh64:s,init32:i,update32:r,digest32:o,init64:a,update64:l,digest64:c}}=e;let M=new Uint8Array(t.buffer);function w(e,n){if(t.buffer.byteLength<e+n){const s=Math.ceil((e+n-t.buffer.byteLength)/65536);t.grow(s),M=new Uint8Array(t.buffer)}}function u(e,t,n,s,i,r){w(e);const o=new Uint8Array(e);return M.set(o),n(0,t),o.set(M.subarray(0,e)),{update(t){let n;return M.set(o),"string"==typeof t?(w(3*t.length,e),n=I.encodeInto(t,M.subarray(e)).written):(w(t.byteLength,e),M.set(t,e),n=t.byteLength),s(0,e,n),o.set(M.subarray(0,e)),this},digest:()=>(M.set(o),r(i(0)))}}function d(e){return e>>>0}const L=2n**64n-1n;function y(e){return e&L}const I=new TextEncoder;function D(e,t=0){return w(3*e.length,0),d(n(0,I.encodeInto(e,M).written,t))}function p(e,t=0n){return w(3*e.length,0),y(s(0,I.encodeInto(e,M).written,t))}return{h32:D,h32ToString:(e,t=0)=>D(e,t).toString(16).padStart(8,"0"),h32Raw:(e,t=0)=>(w(e.byteLength,0),M.set(e),d(n(0,e.byteLength,t))),create32:(e=0)=>u(48,e,i,r,o,d),h64:p,h64ToString:(e,t=0n)=>p(e,t).toString(16).padStart(16,"0"),h64Raw:(e,t=0n)=>(w(e.byteLength,0),M.set(e),y(s(0,e.byteLength,t))),create64:(e=0n)=>u(88,e,a,l,c,y)}}((await WebAssembly.instantiate(Ui)).instance)}(),r=t(),o=n.createReadStream(e,{highWaterMark:s});o.on("data",e=>{r.update(e)}),o.on("end",()=>{let e=r.digest().toString(16).padStart(16,"0");i.resolve(e)}),o.on("error",i.reject)}catch(e){i.reject(e.toString())}return i}var Vi={exports:{}};!function(e){var t,n;e.exports=(t=o,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,M=this._events[a],w=arguments.length;if(M.fn){switch(M.once&&this.removeListener(e,M.fn,void 0,!0),w){case 1:return M.fn.call(M.context),!0;case 2:return M.fn.call(M.context,t),!0;case 3:return M.fn.call(M.context,t,s),!0;case 4:return M.fn.call(M.context,t,s,i),!0;case 5:return M.fn.call(M.context,t,s,i,r),!0;case 6:return M.fn.call(M.context,t,s,i,r,o),!0}for(c=1,l=new Array(w-1);c<w;c++)l[c-1]=arguments[c];M.fn.apply(M.context,l)}else{var u,d=M.length;for(c=0;c<d;c++)switch(M[c].once&&this.removeListener(e,M[c].fn,void 0,!0),w){case 1:M[c].fn.call(M[c].context);break;case 2:M[c].fn.call(M[c].context,t);break;case 3:M[c].fn.call(M[c].context,t,s);break;case 4:M[c].fn.call(M[c].context,t,s,i);break;default:if(!l)for(u=1,l=new Array(w-1);u<w;u++)l[u-1]=arguments[u];M[c].fn.apply(M[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],M=a.length;l<M;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9cmVxdWlyZSgiZXZlbnRzIiksbj1BcnJheS5pc0FycmF5LGk9Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLG89Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZix1PWl8fG98fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksYT11LlN5bWJvbCxjPU9iamVjdC5wcm90b3R5cGUscz1jLmhhc093blByb3BlcnR5LGY9Yy50b1N0cmluZyxsPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgcD0iW29iamVjdCBOdWxsXSIseT0iW29iamVjdCBVbmRlZmluZWRdIix2PWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gZyh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P3k6cDp2JiZ2IGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgZT1zLmNhbGwodCxsKSxyPXRbbF07dHJ5e3RbbF09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgaT1mLmNhbGwodCk7cmV0dXJuIG4mJihlP3RbbF09cjpkZWxldGUgdFtsXSksaX0odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGguY2FsbCh0KX0odCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fXZhciBkPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIF8odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxiKHQpJiZnKHQpPT1kfXZhciBTPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLGo9L15cdyokLztmdW5jdGlvbiB3KHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PWV8fCJmdW5jdGlvbiI9PWUpfXZhciBtPSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixPPSJbb2JqZWN0IEZ1bmN0aW9uXSIsRT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLE49IltvYmplY3QgUHJveHldIjt2YXIgQSxSPXVbIl9fY29yZS1qc19zaGFyZWRfXyJdLCQ9KEE9L1teLl0rJC8uZXhlYyhSJiZSLmtleXMmJlIua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIHg9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBJPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHo9RnVuY3Rpb24ucHJvdG90eXBlLEY9T2JqZWN0LnByb3RvdHlwZSxMPXoudG9TdHJpbmcsUD1GLmhhc093blByb3BlcnR5LFQ9UmVnRXhwKCJeIitMLmNhbGwoUCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gTSh0KXtpZighdyh0KXx8KGU9dCwkJiYkIGluIGUpKXJldHVybiExO3ZhciBlLHI9ZnVuY3Rpb24odCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9Zyh0KTtyZXR1cm4gZT09T3x8ZT09RXx8ZT09bXx8ZT09Tn0odCk/VDpJO3JldHVybiByLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiB4LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSh0KSl9ZnVuY3Rpb24gayh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIE0ocik/cjp2b2lkIDB9dmFyIFU9ayhPYmplY3QsImNyZWF0ZSIpO3ZhciBDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIHEodCxlKXtmb3IodmFyIHIsbixpPXQubGVuZ3RoO2ktLTspaWYoKHI9dFtpXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gaTtyZXR1cm4tMX1XLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189VT9VKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxXLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LFcucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fO2lmKFUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gQy5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LFcucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiBVP3ZvaWQgMCE9PWVbdF06Ry5jYWxsKGUsdCl9LFcucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLHJbdF09VSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgWD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIEIodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19Qi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxCLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPXEoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6WC5jYWxsKGUsciwxKSwtLXRoaXMuc2l6ZSwhMCl9LEIucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9cShlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LEIucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gcSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxCLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49cShyLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLHIucHVzaChbdCxlXSkpOnJbbl1bMV09ZSx0aGlzfTt2YXIgRD1rKHUsIk1hcCIpO2Z1bmN0aW9uIEgodCxlKXt2YXIgcixuLGk9dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihyPWUpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1yOm51bGw9PT1yKT9pWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOmkubWFwfWZ1bmN0aW9uIEoodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19Si5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBXLG1hcDpuZXcoRHx8Qiksc3RyaW5nOm5ldyBXfX0sSi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPUgodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sSi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMsdCkuZ2V0KHQpfSxKLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEgodGhpcyx0KS5oYXModCl9LEoucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPUgodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIEs9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIFEodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihLKTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxpPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0sbz1yLmNhY2hlO2lmKG8uaGFzKGkpKXJldHVybiBvLmdldChpKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9by5zZXQoaSx1KXx8byx1fTtyZXR1cm4gci5jYWNoZT1uZXcoUS5DYWNoZXx8Sikscn1RLkNhY2hlPUo7dmFyIFYsWSxaLHR0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLGV0PS9cXChcXCk/L2cscnQ9KFY9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZSh0dCwoZnVuY3Rpb24odCxyLG4saSl7ZS5wdXNoKG4/aS5yZXBsYWNlKGV0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9UShWLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09Wi5zaXplJiZaLmNsZWFyKCksdH0pKSxaPVkuY2FjaGUsWSksbnQ9cnQ7dmFyIGl0PTEvMCxvdD1hP2EucHJvdG90eXBlOnZvaWQgMCx1dD1vdD9vdC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG4odCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9QXJyYXkobik7KytyPG47KWlbcl09ZSh0W3JdLHIsdCk7cmV0dXJuIGl9KHQsYXQpKyIiO2lmKF8odCkpcmV0dXJuIHV0P3V0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBjdCh0KXtyZXR1cm4gbnVsbD09dD8iIjphdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiBuKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihuKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFfKHQpKXx8ai50ZXN0KHQpfHwhUy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06bnQoY3QodCkpfXZhciBmdD0xLzA7ZnVuY3Rpb24gbHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxfKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1mdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbbHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufWZ1bmN0aW9uIHB0KHQsZT17fSl7bGV0IHI9aHQoZSwiZnMiKSxuPSExO3RyeXtyLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB5dCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7cmV0dXJuISFwdCh0LHtmczpyfSkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIHZ0KCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBidCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgZSBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGR0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIF90KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIFN0KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFidCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISghZHQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIWd0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIV90KHQpKSkpKX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4hKCFkdCh0KXx8IiI9PT10KX12YXIgd3Q9L1xzLzt2YXIgbXQ9L15ccysvO2Z1bmN0aW9uIE90KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZ3dC50ZXN0KHQuY2hhckF0KGUpKTspO3JldHVybiBlfSh0KSsxKS5yZXBsYWNlKG10LCIiKTp0fXZhciBFdD1OYU4sTnQ9L15bLStdMHhbMC05YS1mXSskL2ksQXQ9L14wYlswMV0rJC9pLFJ0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24geHQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKF8odCkpcmV0dXJuIEV0O2lmKHcodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PXcoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PU90KHQpO3ZhciByPUF0LnRlc3QodCk7cmV0dXJuIHJ8fFJ0LnRlc3QodCk/JHQodC5zbGljZSgyKSxyPzI6OCk6TnQudGVzdCh0KT9FdDordH12YXIgSXQ9MS8wLHp0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD14dCh0KSk9PT1JdHx8dD09PS1JdD8odDwwPy0xOjEpKnp0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBMdCh0KXt2YXIgZT1GdCh0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9dmFyIFB0PSJbb2JqZWN0IEJvb2xlYW5dIjtmdW5jdGlvbiBUdCh0KXtyZXR1cm4hMD09PShlPXQpfHwhMT09PWV8fGIoZSkmJmcoZSk9PVB0O3ZhciBlfWZ1bmN0aW9uIE10KHQpe2xldCBlPSExO2lmKGp0KHQpKWU9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKF90KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24ga3QodCl7aWYoIU10KHQpKXJldHVybiAwO3JldHVybiBGdCh0KX1mdW5jdGlvbiBVdCh0LGU9e30pe2xldCByPWh0KGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIFR0KHIpfHwocj0hMSksISFNdCh0KSYmKHQ9a3QodCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PUx0KG4pKTt2YXIgbn12YXIgQ3Q9dS5pc0Zpbml0ZSxHdD1NYXRoLm1pbjt2YXIgV3Q9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXh0KHQpLChyPW51bGw9PXI/MDpHdChMdChyKSwyOTIpKSYmQ3QodCkpe3ZhciBuPShjdCh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oY3QoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIikscXQ9V3Q7ZnVuY3Rpb24gWHQodCxlPXt9KXtsZXQgcj1odChlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO1R0KHIpfHwocj0hMSk7bGV0IG49aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTtUdChuKXx8KG49ITEpO2xldCBpPWh0KGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7VHQoaSl8fChpPSExKTtsZXQgbz10PT5pP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsdT10PT57aWYoaSlyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighTXQodCkpcmV0dXJuIG8oMCk7bGV0IGE9bnVsbDt0cnl7dD1rdCh0KSxhPXF0KHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gdSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT91KGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLG8oYSkpfWZ1bmN0aW9uIEJ0KHQsZT17fSl7aWYoIVV0KHQsZSkpcmV0dXJuITE7cmV0dXJuIFh0KHQpPj0wfWZ1bmN0aW9uIER0KHQsZSl7aWYoIWp0KHQpKXJldHVybiIiO2lmKCFCdChlKSlyZXR1cm4iIjtpZigwPT09KGU9WHQoZSkpKXJldHVybiIiO2xldCByPXQubGVuZ3RoLWU7cmV0dXJuIHI8MCYmKHI9MCksdC5zdWJzdHJpbmcocixyK2UpfWZ1bmN0aW9uIEh0KHQsZSl7cmV0dXJuIGp0KHQpJiZCdChlKT8wPT09KGU9WHQoZSkpP3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4ganQodCkmJkJ0KGUpPzA9PT0oZT1YdChlKSk/IiI6dC5zdWJzdHJpbmcoMCxlKToiIn0odCx0Lmxlbmd0aC1lKToiIn1mdW5jdGlvbiBKdCh0KXtpZighanQodCkpcmV0dXJue3BhdGg6IiIsaXNSb290OiExfTtmb3IoO3QuaW5kZXhPZigiXFxcXCIpPj0wOyl0PXQucmVwbGFjZSgiXFxcXCIsIlxcIik7Zm9yKDt0LmluZGV4T2YoIi8vIik+PTA7KXQ9dC5yZXBsYWNlKCIvLyIsIi8iKTtpZigiOiI9PT1EdCh0LDEpKXJldHVybntwYXRoOmAke3R9XFxgLGlzUm9vdDohMH07aWYoIlxcIj09PUR0KHQsMSkpe2xldCBlPUh0KHQsMSk7cmV0dXJuIjoiPT09RHQoZSwxKT97cGF0aDp0LGlzUm9vdDohMH06e3BhdGg6ZSxpc1Jvb3Q6ITF9fWlmKCIvIj09PUR0KHQsMSkpe2xldCBlPUh0KHQsMSk7cmV0dXJuIDA9PT1lLmxlbmd0aD97cGF0aDp0LGlzUm9vdDohMH06e3BhdGg6ZSxpc1Jvb3Q6ITF9fXJldHVybntwYXRoOnQsaXNSb290OiExfX1mdW5jdGlvbiBLdCh0KXtpZighanQodCkpcmV0dXJuIiI7bGV0IGU9SnQodCk7aWYoZS5pc1Jvb3QpcmV0dXJuIGUucGF0aDtsZXQgcj1lLnBhdGg7dHJ5e3I9ci5zcGxpdCgiXFwiKS5wb3AoKS5zcGxpdCgiLyIpLnBvcCgpfWNhdGNoKHQpe31yZXR1cm4gcn1mdW5jdGlvbiBRdCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7aWYoIXB0KHQse2ZzOnJ9KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBWdCh0LGU9e30pe2xldCByPWh0KGUsImZzIik7aWYoIXB0KHQse2ZzOnJ9KSlyZXR1cm57c3VjY2VzczoiZmlsZSBkb2VzIG5vdCBleGlzdDogIit0fTtpZigheXQodCx7ZnM6cn0pKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBpcyBub3QgYSBmaWxlOiAiK3R9O3RyeXtyLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fXJldHVybntzdWNjZXNzOiJkb25lOiAiK3R9fWFzeW5jIGZ1bmN0aW9uIFl0KHQsZSxuPXt9KXtsZXQgaT0iIixvPWh0KG4sImZzIik7aWYoIWd0KHU9dCl8fDA9PT11Lmxlbmd0aHx8MT09PXUubGVuZ3RoJiZTdCh1WzBdKSl0aHJvdyBuZXcgRXJyb3IoImZwc0luIGluIG5vdCBhbiBlZmZlY3RpdmUgYXJyYXkiKTt2YXIgdTtsZXQgYT1mdW5jdGlvbih0KXtpZighanQodCkpcmV0dXJuIiI7bGV0IGU9SnQodCk7aWYoZS5pc1Jvb3QpcmV0dXJuIGUucGF0aDtsZXQgcj1LdCh0PWUucGF0aCk7aWYoIWp0KHIpKXJldHVybiB0O2xldCBuPUp0KHQ9SHQodCxyLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9KGUpLGM9aHQobiwiZm5PdXQiLCIiKTtqdChjKXx8KGM9S3QoZSkpLFF0KGEse2ZzOm99KXx8ZnVuY3Rpb24odCxlPXt9KXtsZXQgcj1odChlLCJmcyIpO2lmKFF0KHQse2ZzOnJ9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKHB0KHQse2ZzOnJ9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07dHJ5e3IubWtkaXJTeW5jKHQse3JlY3Vyc2l2ZTohMH0pfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX19KGEse2ZzOm99KTtsZXQgcz12dCgpO3MuY2F0Y2goKCgpPT57fSkpO2xldCBmPW51bGwsbD1udWxsLGg9dnQoKTtoLmNhdGNoKCgoKT0+e30pKTt0cnl7Zj1vLmNyZWF0ZVdyaXRlU3RyZWFtKGUpLGYub24oImVycm9yIiwodD0+e2w9dCxpPXQubWVzc2FnZSxoLnJlamVjdCh0KSxzLnJlamVjdChpKX0pKSxmLm9uKCJmaW5pc2giLCgoKT0+e2xldCB0PXtmaWxlbmFtZTpjLHBhdGg6ZX07cy5yZXNvbHZlKHQpfSkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtpZihudWxsIT09bCl0aHJvdyBsO2xldCBuPXRbZV07aWYoIXl0KG4se2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtufV0gaXMgbm90IGEgZmlsZWApO2xldCBpPWFzeW5jKCk9PntsZXQgdD1vLmNyZWF0ZVJlYWRTdHJlYW0obiksZT1udWxsO2ZvciBhd2FpdChsZXQgbiBvZiB0KXtpZihudWxsIT09bCl0aHJvdyBsO2xldCB0PSExLGk9bmV3IFByb21pc2UoKChlLHIpPT57dD0hZi53cml0ZShuLCh0PT57dD9yKHQpOmUoKX0pKX0pKTtpLmNhdGNoKCgoKT0+e30pKSxlPWksdCYmYXdhaXQgUHJvbWlzZS5yYWNlKFtyLm9uY2UoZiwiZHJhaW4iKSxoXSl9aWYobnVsbCE9PWUmJmF3YWl0IGUsbnVsbCE9PWwpdGhyb3cgbDtWdChuLHtmczpvfSl9O2F3YWl0IGkoKX1mLmVuZCgpfWNhdGNoKHQpe2k9aHQodCwibWVzc2FnZSIsU3RyaW5nKHQpKTt0cnl7Zi5kZXN0cm95KCl9Y2F0Y2godCl7fXMucmVqZWN0KGkpfXJldHVybiBzfWNvbnN0IFp0PW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIHRlKHQsZT17fSl7bGV0IHI9aHQoZSwiZnMiKSxuPWh0KGUsImNodW5rU2l6ZSIpO2lmKE10KG4pfHwobj02NzEwODg2NCksbj1rdChuKSwheXQodCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBpPXZ0KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOmksdXBkYXRlMzI6byxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6c319PXQ7bGV0IGY9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLGY9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBoKHQsZSxyLG4saSxvKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIGYuc2V0KHUpLHIoMCxlKSx1LnNldChmLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIGYuc2V0KHUpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Zy5lbmNvZGVJbnRvKGUsZi5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLGYuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLHUuc2V0KGYuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4oZi5zZXQodSksbyhpKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHk9Mm4qKjY0bi0xbjtmdW5jdGlvbiB2KHQpe3JldHVybiB0Jnl9Y29uc3QgZz1uZXcgVGV4dEVuY29kZXIsYj0wLGQ9MG47ZnVuY3Rpb24gXyh0LGU9Yil7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKHIoMCxnLmVuY29kZUludG8odCxmKS53cml0dGVuLGUpKX1mdW5jdGlvbiBTKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHYobigwLGcuZW5jb2RlSW50byh0LGYpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWIpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1iKT0+KGwodC5ieXRlTGVuZ3RoLDApLGYuc2V0KHQpLHAocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWIpPT5oKDQ4LHQsaSxvLHUscCksaDY0OlMsaDY0VG9TdHJpbmc6KHQsZT1kKT0+Uyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCksZi5zZXQodCksdihuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9ZCk9PmgoODgsdCxhLGMscyx2KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShadCkpLmluc3RhbmNlKX0oKSxvPWUoKSx1PXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTt1Lm9uKCJkYXRhIiwodD0+e28udXBkYXRlKHQpfSkpLHUub24oImVuZCIsKCgpPT57bGV0IHQ9by5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtpLnJlc29sdmUodCl9KSksdS5vbigiZXJyb3IiLGkucmVqZWN0KX1jYXRjaCh0KXtpLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBpfWxldCBtZXJnZVNsaWNlcz1hc3luYyhyLG4saSxvKT0+e2xldCB1PVtdO2ZvcihsZXQgbz0wO288bjtvKyspe2xldCBuPXQucmVzb2x2ZShpLGAke3J9XyR7b31gKTtpZigheXQobix7ZnM6ZX0pKXRocm93IG5ldyBFcnJvcihgZnBJblske259XSBpcyBub3QgYSBmaWxlYCk7dS5wdXNoKG4pfWxldCBhPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQscixuPXt9KXtyZXR1cm4gWXQodCxyLHtmczplLC4uLm59KX0odSxvKTtyZXR1cm57Li4uYSxoYXNoOmF3YWl0IGZ1bmN0aW9uKHQscj17fSl7cmV0dXJuIHRlKHQse2ZzOmUsLi4ucn0pfShvKX19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VTbGljZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VTbGljZXMKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuatpOS6jOebo+iBveacg+mYu+atok5vZGXpoJDoqK3nmoR3b3JrZXLntYLmraLooYzngrosIOS9v3dvcmtlcuW0qea9sOW+jOS7jeWtmOa0u+epuui9iSwKICAgIC8v5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOS6i+S7tiwgcGVuZGluZyBwcm9taXNl5rC45LmF5oe4572uLCDkuJTlrZjmtLvmrq3lsY13b3JrZXLmnIPku6Tlrr/kuLvnqIvluo/nhKHms5XpgIDlh7o7CiAgICAvL+enu+mZpOW+jHdvcmtlcuS+nemgkOioreihjOeCuuatu+S6oSwgZXJyb3Lkuovku7blgrPoh7PlpJblsaQsIOeUseWkluWxpOaVtOaJuXJlamVjdCBwZW5kaW5nCiAgICAvLyBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAvLyAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIC8vIH0pCiAgICAvLyBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgIC8vICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICAvLyB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQoKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i={},r=!1,o=!1;function a(e){for(let t in i){let n=i[t];delete i[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function l(e){r||(r=!0,a(e))}let c=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){l(e)}}(t);if(!c)return l("invalid worker"),null;function M(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(r)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}();i[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return c.postMessage(n),s.once(t,n=>{delete i[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return c.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),c.on("error",l),c.on("exit",e=>{o||l("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};c.postMessage(e)}([...arguments]),s.main=M,s.main=M,s.terminate=function(){c?(o=!0,c.terminate(),c=void 0):a("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(Vi);var Qi=Jn(Vi.exports);let Hi=new Set,Ji=new Map,Ri=(t,n,s="")=>{let i=e.resolve(n,t);return{fp:i,fpm:`${i}.merging`,fpd:`${i}.done`,fpe:`${i}.error`,fpr:en(s)?`${i}.q${s}.ro`:""}},Pi=e=>{let t=ti(e);if(us(e))throw new Error(`can not remove ${e}: ${js(Ie(t,"error"))}`)},Oi=async(e,n)=>{Hi.add(n.fp);try{let s=await function(e,n={}){return ki(e,{fs:t,...n})}(n.fp);if(s===e)return t.writeFileSync(n.fpd,"","utf8"),{state:"done"};let i=`merged file[${n.fp}] is incomplete: hash[${s}] != fileHash[${e}], merge was interrupted`;try{t.writeFileSync(n.fpe,i,"utf8")}catch(e){console.log(`can not write ${n.fpe}`,e)}return{state:"mismatch",reason:i}}catch(e){return{state:"error",reason:`verify merged file[${n.fp}] error: ${js(e)}`}}finally{Hi.delete(n.fp)}},Bi=async(e,n,s)=>{let i=`${function(){if(!vn(ys))throw new Error("invalid dayjs");return ys().format("YYYYMMDDHHmmss")}()}|${ms(6)}|${e}`,r=Ri(e,s);if(Hi.has(r.fp))return i;let o=us(r.fpe),a=us(r.fp);if(!o&&a){let t=await Oi(e,r);if("done"===t.state)return i;if("error"===t.state)throw new Error(t.reason)}return Pi(r.fpd),Pi(r.fpe),Hi.add(r.fp),setTimeout(()=>{Qi(e,n,s,r.fpm).then(n=>{let s=Ie(n,"hash","");if(s!==e)throw new Error(`merged file hash[${s}] != fileHash[${e}]`);t.renameSync(r.fpm,r.fp),t.writeFileSync(r.fpd,"","utf8")}).catch(e=>{console.log(e),ti(r.fpm);let n=js(e);try{t.writeFileSync(r.fpe,n,"utf8")}catch(e){console.log(`can not write ${r.fpe}`,e)}}).finally(()=>{Hi.delete(r.fp)})},1),i},Fi=async(e,n,s={})=>{let i=Ie(s,"funConsume"),r=Ie(s,"funLog");vn(r)||(r=e=>{console.log(e)});let o=Wi(e,"|"),a=Ie(o,0,""),l=Ie(o,1,""),c=Ie(o,2,"");if(3!==fi(o)||!ni(a)||!ni(l)||!ni(c)){let t=`invalid queueId[${js(e)}]`;return console.log(t),{state:"error",msg:"invalid queueId",reason:t,path:""}}let M=Ri(c,n,`${a}${l}`);if(us(M.fpr)){let e=((e,n)=>{try{let s=ei(new Uint8Array(t.readFileSync(e.fpr)),{returnWithStateAndMsg:!0});if("success"!==Ie(s,"state"))return n(`stored result ${e.fpr} is corrupted, treat as not stored: ${Ie(s,"msg","unknown error")}`),{ok:!1};let i=s.msg;return nn(i)&&Gs(i,"ro")?{ok:!0,ro:i.ro}:(n(`stored result ${e.fpr} has no own 'ro' key, treat as not stored`),{ok:!1})}catch(t){return n(`can not read stored result ${e.fpr}: ${js(t)}`),{ok:!1}}})(M,r);if(e.ok)return{state:"success",msg:e.ro,path:M.fp,from:"stored"}}if(us(M.fpe)){let e="";try{e=t.readFileSync(M.fpe,"utf8")}catch(e){}return{state:"error",msg:"merge slices failed",reason:e,path:M.fp}}if(Hi.has(M.fp))return{state:"merging",msg:"",path:M.fp};let w=us(M.fp),u=us(M.fpd);if(w&&!u){let e=await Oi(c,M);if("done"!==e.state)return{state:"error",msg:"merge slices failed",reason:e.reason,path:M.fp};u=!0}if(w&&u){if(!vn(i))return{state:"success",msg:"",path:M.fp};let n=await((e,n,s,i)=>{let r=Ji.get(e);return r||(r=Promise.resolve().then(()=>s(n.fp)).then(e=>{e=void 0===e?null:e;try{let s=Os({ro:e},{returnWithStateAndMsg:!0});if("success"!==Ie(s,"state"))return e;t.writeFileSync(n.fpr,Buffer.from(s.msg));let i=ei(s.msg,{returnWithStateAndMsg:!0});if("success"===Ie(i,"state")&&nn(i.msg)&&Gs(i.msg,"ro"))return i.msg.ro}catch(e){i(`can not store consumed result to ${n.fpr}: ${js(e)}`)}return e}).finally(()=>{Ji.delete(e)}),Ji.set(e,r),r)})(e,M,i,r);return{state:"success",msg:n,path:M.fp,from:"consumed"}}return!w&&u?{state:"error",msg:"merged file already consumed",reason:`merged file[${M.fp}] no longer exists and no stored result for queueId[${e}]`,path:M.fp}:{state:"error",msg:"no merge task",reason:`no merge task for fileHash[${c}] (never pushed, or artifacts removed)`,path:M.fp}};var $i={exports:{}};!function(e){var t,n;e.exports=(t=o,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,M=this._events[a],w=arguments.length;if(M.fn){switch(M.once&&this.removeListener(e,M.fn,void 0,!0),w){case 1:return M.fn.call(M.context),!0;case 2:return M.fn.call(M.context,t),!0;case 3:return M.fn.call(M.context,t,s),!0;case 4:return M.fn.call(M.context,t,s,i),!0;case 5:return M.fn.call(M.context,t,s,i,r),!0;case 6:return M.fn.call(M.context,t,s,i,r,o),!0}for(c=1,l=new Array(w-1);c<w;c++)l[c-1]=arguments[c];M.fn.apply(M.context,l)}else{var u,d=M.length;for(c=0;c<d;c++)switch(M[c].once&&this.removeListener(e,M[c].fn,void 0,!0),w){case 1:M[c].fn.call(M[c].context);break;case 2:M[c].fn.call(M[c].context,t);break;case 3:M[c].fn.call(M[c].context,t,s);break;case 4:M[c].fn.call(M[c].context,t,s,i);break;default:if(!l)for(u=1,l=new Array(w-1);u<w;u++)l[u-1]=arguments[u];M[c].fn.apply(M[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],M=a.length;l<M;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLFM9XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sTz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsej1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsRT16JiZ6LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCx4PShFP0UuaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sRj05MDA3MTk5MjU0NzQwOTkxLE49L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uIGsodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/RjplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmTi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEk9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiAkKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1JfXZhciBMPXt9O0xbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUxbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUxbIltvYmplY3QgSW50OEFycmF5XSJdPUxbIltvYmplY3QgSW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IEludDMyQXJyYXldIl09TFsiW29iamVjdCBVaW50OEFycmF5XSJdPUxbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09TFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLExbIltvYmplY3QgQXJndW1lbnRzXSJdPUxbIltvYmplY3QgQXJyYXldIl09TFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1MWyJbb2JqZWN0IEJvb2xlYW5dIl09TFsiW29iamVjdCBEYXRhVmlld10iXT1MWyJbb2JqZWN0IERhdGVdIl09TFsiW29iamVjdCBFcnJvcl0iXT1MWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUxbIltvYmplY3QgTWFwXSJdPUxbIltvYmplY3QgTnVtYmVyXSJdPUxbIltvYmplY3QgT2JqZWN0XSJdPUxbIltvYmplY3QgUmVnRXhwXSJdPUxbIltvYmplY3QgU2V0XSJdPUxbIltvYmplY3QgU3RyaW5nXSJdPUxbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxQPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsVD1QJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsUj1UJiZULmV4cG9ydHM9PT1QJiZ1LnByb2Nlc3MsVT1mdW5jdGlvbigpe3RyeXt2YXIgdD1UJiZULnJlcXVpcmUmJlQucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxSJiZSLmJpbmRpbmcmJlIuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksQj1VJiZVLmlzVHlwZWRBcnJheSxEPUI/KE09QixmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiYkKHQubGVuZ3RoKSYmISFMW2QodCldfSxXPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gQyh0LGUpe3ZhciByPU8odCksbj0hciYmUyh0KSxvPSFyJiYhbiYmeCh0KSx1PSFyJiYhbiYmIW8mJkQodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIVcuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8ayhmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBHPU9iamVjdC5wcm90b3R5cGU7dmFyIHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLFY9cSxYPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxHKSlyZXR1cm4gVih0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlYLmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEoodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIEs9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFE9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFKKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVF8fGU9PVl8fGU9PUt8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJiQodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP0ModCk6SCh0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKE8odCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLFN0PV90KGEsIlNldCIpLE90PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix6dD0iW29iamVjdCBQcm9taXNlXSIsRXQ9IltvYmplY3QgU2V0XSIseHQ9IltvYmplY3QgV2Vha01hcF0iLEZ0PSJbb2JqZWN0IERhdGFWaWV3XSIsTnQ9bHQoanQpLGt0PWx0KG10KSxJdD1sdCh3dCksJHQ9bHQoU3QpLEx0PWx0KE90KSxNdD1kOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1GdHx8bXQmJk10KG5ldyBtdCkhPUF0fHx3dCYmTXQod3QucmVzb2x2ZSgpKSE9enR8fFN0JiZNdChuZXcgU3QpIT1FdHx8T3QmJk10KG5ldyBPdCkhPXh0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBOdDpyZXR1cm4gRnQ7Y2FzZSBrdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4genQ7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSBMdDpyZXR1cm4geHR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gUnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgVXQ9UnQoImxlbmd0aCIpLEJ0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gQnQudGVzdCh0KX12YXIgV3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsQ3Q9IlsiK1d0KyJdIixHdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLHF0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLFZ0PSJbXiIrV3QrIl0iLFh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixIdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsSnQ9Iig/OiIrR3QrInwiK3F0KyIpIisiPyIsS3Q9IltcXHVmZTBlXFx1ZmUwZl0/IixRdD1LdCtKdCsoIig/OlxcdTIwMGQoPzoiK1tWdCxYdCxIdF0uam9pbigifCIpKyIpIitLdCtKdCsiKSoiKSxZdD0iKD86IitbVnQrR3QrIj8iLEd0LFh0LEh0LEN0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChxdCsiKD89IitxdCsiKXwiK1l0K1F0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIER0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlV0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhTyhlKSYmZyhlKSYmZChlKT09VHQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1QdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkgodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLFNlPTIsT2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix6ZT0iW29iamVjdCBFcnJvcl0iLEVlPSJbb2JqZWN0IE1hcF0iLHhlPSJbb2JqZWN0IE51bWJlcl0iLEZlPSJbb2JqZWN0IFJlZ0V4cF0iLE5lPSJbb2JqZWN0IFNldF0iLGtlPSJbb2JqZWN0IFN0cmluZ10iLEllPSJbb2JqZWN0IFN5bWJvbF0iLCRlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsTGU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxQZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBUZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFJlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsVWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxCZT1VZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksVGUoVWUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBSZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBEZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIE8odCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LEJlKX12YXIgV2U9MSxDZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBHZT0xLHFlPSJbb2JqZWN0IEFyZ3VtZW50c10iLFZlPSJbb2JqZWN0IEFycmF5XSIsWGU9IltvYmplY3QgT2JqZWN0XSIsSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKZSh0LGUscixuLG8sdSl7dmFyIGk9Tyh0KSxhPU8oZSksYz1pP1ZlOlB0KHQpLGY9YT9WZTpQdChlKSxzPShjPWM9PXFlP1hlOmMpPT1YZSxsPShmPWY9PXFlP1hlOmYpPT1YZSxwPWM9PWY7aWYocCYmeCh0KSl7aWYoIXgoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEQodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIExlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSAkZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBPZTpjYXNlIEFlOmNhc2UgeGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHplOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBGZTpjYXNlIGtlOnJldHVybiB0PT1lKyIiO2Nhc2UgRWU6dmFyIGE9amU7Y2FzZSBOZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1TZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEllOmlmKFBlKXJldHVybiBQZS5jYWxsKHQpPT1QZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImR2UpKXt2YXIgaD1zJiZIZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZIZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJldlLGE9RGUodCksYz1hLmxlbmd0aDtpZihjIT1EZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpDZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIEtlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6SmUodCxlLHIsbixLZSxvKSl9dmFyIFFlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUoodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9LZShzLGYsUWV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihPKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihPKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIE8odCk/dDppcih0LGUpP1t0XTpwcihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJiQobykmJmsoaSxvKSYmKE8odCl8fFModCkpfSh0LGUsU3IpfXZhciBBcj0xLHpyPTI7ZnVuY3Rpb24gRXIodCl7cmV0dXJuIGlyKHQpP1J0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiB4cih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P08odCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP09yKHIsdCk6S2UoZSxuLEFyfHpyKX19KHRbMF0sdFsxXSk6ZXIodCk6RXIodCl9ZnVuY3Rpb24gRnIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIE5yKHQsZSl7cmV0dXJuKE8odCk/cmU6RnIpKHQseHIoZSkpfXZhciBrcj0vXHMvO3ZhciBJcj0vXlxzKy87ZnVuY3Rpb24gJHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJmtyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoSXIsIiIpOnR9ZnVuY3Rpb24gTHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gUHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFRyPSJcXHVkODAwLVxcdWRmZmYiLFJyPSJbIitUcisiXSIsVXI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixCcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixEcj0iW14iK1RyKyJdIixXcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsQ3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEdyPSIoPzoiK1VyKyJ8IitCcisiKSIrIj8iLHFyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsVnI9cXIrR3IrKCIoPzpcXHUyMDBkKD86IitbRHIsV3IsQ3JdLmpvaW4oInwiKSsiKSIrcXIrR3IrIikqIiksWHI9Iig/OiIrW0RyK1VyKyI/IixVcixXcixDcixScl0uam9pbigifCIpKyIpIixIcj1SZWdFeHAoQnIrIig/PSIrQnIrIil8IitYcitWciwiZyIpO2Z1bmN0aW9uIEpyKHQpe3JldHVybiBEdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChIcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIEtyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gJHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49SnIodCksbz1KcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlByKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZQcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBMcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gUXIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVFyKHQpKXJldHVybltdO2lmKCFRcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBRcih0KSYmUXIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPU5yKHIsS3IpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtRcih0KSYmbi5wdXNoKHQpfSkpLG59dmFyIFpyPU5hTix0bj0vXlstK10weFswLTlhLWZdKyQvaSxlbj0vXjBiWzAxXSskL2kscm49L14wb1swLTddKyQvaSxubj1wYXJzZUludDtmdW5jdGlvbiBvbih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIFpyO2lmKEoodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUooZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PSRyKHQpO3ZhciByPWVuLnRlc3QodCk7cmV0dXJuIHJ8fHJuLnRlc3QodCk/bm4odC5zbGljZSgyKSxyPzI6OCk6dG4udGVzdCh0KT9acjordH12YXIgdW49MS8wLGFuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBjbih0KXtyZXR1cm4gdD8odD1vbih0KSk9PT11bnx8dD09PS11bj8odDwwPy0xOjEpKmFuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBmbih0KXt2YXIgZT1jbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9dmFyIHNuPSJbb2JqZWN0IEJvb2xlYW5dIjtmdW5jdGlvbiBsbih0KXtyZXR1cm4hMD09PShlPXQpfHwhMT09PWV8fGcoZSkmJmQoZSk9PXNuO3ZhciBlfWZ1bmN0aW9uIHBuKHQpe2xldCBlPSExO2lmKFFyKHQpKWU9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0IT10fSh0KSlyZXR1cm4hMTtlPSEwfXJldHVybiBlfWZ1bmN0aW9uIGhuKHQpe2lmKCFwbih0KSlyZXR1cm4gMDtyZXR1cm4gY24odCl9ZnVuY3Rpb24gdm4odCxlPXt9KXtsZXQgcj13cihlLCJ1c2VMaW1pdFNhZmUiLG51bGwpO3JldHVybiBsbihyKXx8KHI9ITEpLCEhcG4odCkmJih0PWhuKHQpLHI/TnVtYmVyLmlzU2FmZUludGVnZXIodCk6Im51bWJlciI9PXR5cGVvZihuPXQpJiZuPT1mbihuKSk7dmFyIG59dmFyIHluPWEuaXNGaW5pdGUsYm49TWF0aC5taW47dmFyIGRuPWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGhbdF07cmV0dXJuIGZ1bmN0aW9uKHQscil7aWYodD1vbih0KSwocj1udWxsPT1yPzA6Ym4oZm4ociksMjkyKSkmJnluKHQpKXt2YXIgbj0oZHIodCkrImUiKS5zcGxpdCgiZSIpO3JldHVybisoKG49KGRyKGUoblswXSsiZSIrKCtuWzFdK3IpKSkrImUiKS5zcGxpdCgiZSIpKVswXSsiZSIrKCtuWzFdLXIpKX1yZXR1cm4gZSh0KX19KCJyb3VuZCIpLGduPWRuO2Z1bmN0aW9uIF9uKHQsZT17fSl7bGV0IHI9d3IoZSwidXNlQ2xhbXBTYWZlIixudWxsKTtsbihyKXx8KHI9ITEpO2xldCBuPXdyKGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7bG4obil8fChuPSExKTtsZXQgbz13cihlLCJyZXR1cm5XaXRoU3RhdGVBbmRNc2ciLG51bGwpO2xuKG8pfHwobz0hMSk7bGV0IHU9dD0+bz97c3RhdGU6InN1Y2Nlc3MiLG1zZzp0fTp0LGk9dD0+e2lmKG8pcmV0dXJue3N0YXRlOiJlcnJvciIsbXNnOnR9O3Rocm93IG5ldyBFcnJvcih0KX07aWYoIXBuKHQpKXJldHVybiB1KDApO2xldCBhPW51bGw7dHJ5e3Q9aG4odCksYT1nbih0KSxyJiYoYT5OdW1iZXIuTUFYX1NBRkVfSU5URUdFUj9hPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSOmE8TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVImJihhPU51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSl9Y2F0Y2godCl7cmV0dXJuIGkodC50b1N0cmluZygpKX1yZXR1cm4gbiYmIU51bWJlci5pc1NhZmVJbnRlZ2VyKE51bWJlcihhKSk/aShgdlske3R9XSBpcyBub3QgYSBzYWZlIGludGVnZXJgKTooIjAiPT09U3RyaW5nKGEpJiYoYT0wKSx1KGEpKX1mdW5jdGlvbiBqbih0LGU9e30pe2lmKCF2bih0LGUpKXJldHVybiExO3JldHVybiBfbih0KT49MH1mdW5jdGlvbiBtbih0LGU9e30pe2xldCByPXdyKGUsImZzIiksbj0hMTt0cnl7ci5zdGF0U3luYyh0KSxuPSEwfWNhdGNoe249ITF9cmV0dXJuIG59ZnVuY3Rpb24gd24odCxlPXt9KXtsZXQgcj13cihlLCJmcyIpO3JldHVybiEhbW4odCx7ZnM6cn0pJiYoIXIubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBTbih0KXtyZXR1cm4gd24odCx7ZnM6ZX0pfWZ1bmN0aW9uIE9uKHQsZSl7dmFyIHI9W107cmV0dXJuIG90KHQsKGZ1bmN0aW9uKHQsbixvKXtlKHQsbixvKSYmci5wdXNoKHQpfSkpLHJ9ZnVuY3Rpb24gQW4odCxlPXt9KXtsZXQgcj13cihlLCJmcyIpO2lmKCFtbih0LHtmczpyfSkpcmV0dXJuITE7bGV0IG49ci5sc3RhdFN5bmModCk7cmV0dXJuIW4uaXNGaWxlKCkmJiFuLmlzU3ltYm9saWNMaW5rKCl9ZnVuY3Rpb24gem4odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIUFuKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBudWxsIT09ZSYmZnVuY3Rpb24odCxlPXt9KXtyZXR1cm4hIXZuKHQsZSkmJl9uKHQpPjB9KGUpJiYoZT1fbihlKSk8MSYmKGU9MSksZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gQW4ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9ZnVuY3Rpb24gRW4odCxlPTEscj17fSl7bGV0IG49d3IociwicGF0aCIpLG89d3IociwiZnMiKTtpZighQW4odCx7ZnM6b30pKXRocm93IG5ldyBFcnJvcihgZmRbJHt0fV0gaXMgbm90IGEgZm9sZGVyYCk7bGV0IHU9W107dmFyIGksYTtyZXR1cm4gdT16bih0LGUse3BhdGg6bixmczpvfSksYT17aXNGb2xkZXI6ITF9LHU9KE8oaT11KT9UZTpPbikoaSx4cihhKSksdT1Ocih1LCh0PT4oZGVsZXRlIHQuaXNGb2xkZXIsdCkpKSx1fWNvbnN0IHhuPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIEZuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPXdyKGUsImNodW5rU2l6ZSIpO2lmKHBuKG4pfHwobj02NzEwODg2NCksbj1obihuKSwhd24odCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBvPWZ1bmN0aW9uKCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyx1LGksaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSx1PWUoKSxpPXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTtpLm9uKCJkYXRhIiwodD0+e3UudXBkYXRlKHQpfSkpLGkub24oImVuZCIsKCgpPT57bGV0IHQ9dS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtvLnJlc29sdmUodCl9KSksaS5vbigiZXJyb3IiLG8ucmVqZWN0KX1jYXRjaCh0KXtvLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBvfWxldCBjaGVja1RvdGFsSGFzaD1hc3luYyhyLG4sbyx1KT0+e2xldCBpPXQucmVzb2x2ZSh1LG8pLGE9ITE7aWYoYT1TbihpKSwham4ocix7dXNlTGltaXRTYWZlOiEwfSkpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlU2l6ZSBpbiBwYXlsb2FkIn19cj1fbihyKTtsZXQgYz0hMTtpZihhKXtsZXQgdD0tMTt0cnl7dD1lLnN0YXRTeW5jKGkpLnNpemV9Y2F0Y2godCl7Y29uc29sZS5sb2coImNoZWNrIHRvdGFsIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIixpLHQpfWM9cj09PXR9bGV0IGY9ITE7YSYmYyYmYXdhaXQgZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4gRm4odCx7ZnM6ZSwuLi5yfSl9KGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxTbihpKSksY29uc29sZS5sb2codCksZj0hMX0pKTtsZXQgcz1bXTtpZighZil7aXQoZnVuY3Rpb24ocixuPTEpe3JldHVybiBFbihyLG4se3BhdGg6dCxmczplfSl9KHUpLCh0PT57bGV0IHI9dC5uYW1lLnN0YXJ0c1dpdGgoYCR7b31fYCksdT0hMTt0cnl7bGV0IHI9ZS5zdGF0U3luYyh0LnBhdGgpO3U9ci5zaXplPjAmJnIuc2l6ZTw9bn1jYXRjaChlKXtjb25zb2xlLmxvZygiY2hlY2sgZWFjaCBmaWxlIHNpemU6IGZzLnN0YXRTeW5jKHBhdGhGaWxlKSIsdC5wYXRoLGUpfWlmKHImJnUpe2xldCBlPVlyKHQubmFtZSxgJHtvfV9gKSxyPShhPW51bGw9PShpPWUpPzA6aS5sZW5ndGgpP2lbYS0xXTp2b2lkIDA7aWYoIWpuKHIpKXJldHVybiB2b2lkIGNvbnNvbGUubG9nKGBza2lwIGZpbGVbJHt0Lm5hbWV9XTogY2FuIG5vdCBwYXJzZSBjaHVuayBpbmRleGApO3I9X24ocikscy5wdXNoKHIpfXZhciBpLGF9KSl9bGV0IGw9ZWUocyk+MDtyZXR1cm57cGF0aDppLGJBbGxFeGlzdDphLGJBbGxTaXplOmMsYkFsbEhhc2g6ZixiU2xzOmwsc2xrczpzfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1RvdGFsSGFzaAogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjaGVja1RvdGFsSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewoKICAgIC8v5YOF5LuldW5jYXVnaHRFeGNlcHRpb25Nb25pdG9y6KiY6YyELCDkuI3lj6/oqLvlhop1bmNhdWdodEV4Y2VwdGlvbuiIh3VuaGFuZGxlZFJlamVjdGlvbuebo+iBvToKICAgIC8v5pa8d29ya2Vy5YWn6Ki75YaK5q2k5LqM55uj6IG95pyD6Zi75q2iTm9kZemgkOioreeahHdvcmtlcue1guatouihjOeCuiwg5L2/d29ya2Vy5bSp5r2w5b6M5LuN5a2Y5rS756m66L2JLAogICAgLy/lpJblsaTmlLbkuI3liLBlcnJvci9leGl05LqL5Lu2LCBwZW5kaW5nIHByb21pc2XmsLjkuYXmh7jnva4sIOS4lOWtmOa0u+aureWxjXdvcmtlcuacg+S7pOWuv+S4u+eoi+W6j+eEoeazlemAgOWHujsKICAgIC8v56e76Zmk5b6Md29ya2Vy5L6d6aCQ6Kit6KGM54K65q275LqhLCBlcnJvcuS6i+S7tuWCs+iHs+WkluWxpCwg55Sx5aSW5bGk5pW05om5cmVqZWN0IHBlbmRpbmcKICAgIC8vIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgIC8vICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgLy8gfSkKICAgIC8vIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgLy8gICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIC8vIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCgp9CmNhdGNoKGVycil7fQoK",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i={},r=!1,o=!1;function a(e){for(let t in i){let n=i[t];delete i[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function l(e){r||(r=!0,a(e))}let c=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){l(e)}}(t);if(!c)return l("invalid worker"),null;function M(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(r)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}();i[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return c.postMessage(n),s.once(t,n=>{delete i[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return c.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),c.on("error",l),c.on("exit",e=>{o||l("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};c.postMessage(e)}([...arguments]),s.main=M,s.main=M,s.terminate=function(){c?(o=!0,c.terminate(),c=void 0):a("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}($i);var _i=Jn($i.exports),qi={exports:{}};!function(e){var t,n;e.exports=(t=o,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,M=this._events[a],w=arguments.length;if(M.fn){switch(M.once&&this.removeListener(e,M.fn,void 0,!0),w){case 1:return M.fn.call(M.context),!0;case 2:return M.fn.call(M.context,t),!0;case 3:return M.fn.call(M.context,t,s),!0;case 4:return M.fn.call(M.context,t,s,i),!0;case 5:return M.fn.call(M.context,t,s,i,r),!0;case 6:return M.fn.call(M.context,t,s,i,r,o),!0}for(c=1,l=new Array(w-1);c<w;c++)l[c-1]=arguments[c];M.fn.apply(M.context,l)}else{var u,d=M.length;for(c=0;c<d;c++)switch(M[c].once&&this.removeListener(e,M[c].fn,void 0,!0),w){case 1:M[c].fn.call(M[c].context);break;case 2:M[c].fn.call(M[c].context,t);break;case 3:M[c].fn.call(M[c].context,t,s);break;case 4:M[c].fn.call(M[c].context,t,s,i);break;default:if(!l)for(u=1,l=new Array(w-1);u<w;u++)l[u-1]=arguments[u];M[c].fn.apply(M[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],M=a.length;l<M;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxmPWEudG9TdHJpbmcscz11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9Yy5jYWxsKHQscykscj10W3NdO3RyeXt0W3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYoZT90W3NdPXI6ZGVsZXRlIHRbc10pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgZD0iW29iamVjdCBTeW1ib2xdIjtmdW5jdGlvbiBnKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Yih0KSYmdih0KT09ZH12YXIgXz0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxqPS9eXHcqJC87ZnVuY3Rpb24gUyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgdz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsbT0iW29iamVjdCBGdW5jdGlvbl0iLE89IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixBPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gRSh0KXtpZighUyh0KSlyZXR1cm4hMTt2YXIgZT12KHQpO3JldHVybiBlPT1tfHxlPT1PfHxlPT13fHxlPT1BfXZhciBOLCQ9aVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sej0oTj0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrTjoiIjt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gRih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHguY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIEk9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sTT1GdW5jdGlvbi5wcm90b3R5cGUsUD1PYmplY3QucHJvdG90eXBlLFQ9TS50b1N0cmluZyxMPVAuaGFzT3duUHJvcGVydHksUj1SZWdFeHAoIl4iK1QuY2FsbChMKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBCKHQpe3JldHVybiEoIVModCl8fChlPXQseiYmeiBpbiBlKSkmJihFKHQpP1I6SSkudGVzdChGKHQpKTt2YXIgZX1mdW5jdGlvbiBrKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gQihyKT9yOnZvaWQgMH12YXIgVT1rKE9iamVjdCwiY3JlYXRlIik7dmFyIEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgRz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFcodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gSCh0LGUpe2Zvcih2YXIgcixuLG89dC5sZW5ndGg7by0tOylpZigocj10W29dWzBdKT09PShuPWUpfHxyIT1yJiZuIT1uKXJldHVybiBvO3JldHVybi0xfVcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1VP1UobnVsbCk6e30sdGhpcy5zaXplPTB9LFcucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sVy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoVSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBDLmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sVy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIFU/dm9pZCAwIT09ZVt0XTpHLmNhbGwoZSx0KX0sVy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1VJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBxPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gRCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1ELnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9SChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpxLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0sRC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1IKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sRC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMuX19kYXRhX18sdCk+LTF9LEQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1IKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBWPWsoaSwiTWFwIik7ZnVuY3Rpb24gWCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gWih0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1aLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IFcsbWFwOm5ldyhWfHxEKSxzdHJpbmc6bmV3IFd9fSxaLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9WCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxaLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIFgodGhpcyx0KS5nZXQodCl9LFoucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gWCh0aGlzLHQpLmhhcyh0KX0sWi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9WCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTt2YXIgSj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gSyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKEopO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMsbik6blswXSxpPXIuY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciB1PXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1pLnNldChvLHUpfHxpLHV9O3JldHVybiByLmNhY2hlPW5ldyhLLkNhY2hlfHxaKSxyfUsuQ2FjaGU9Wjt2YXIgUSxZLHR0LGV0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csbnQ9KFE9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShldCwoZnVuY3Rpb24odCxyLG4sbyl7ZS5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09dHQuc2l6ZSYmdHQuY2xlYXIoKSx0fSkpLHR0PVkuY2FjaGUsWSksb3Q9bnQ7dmFyIGl0PTEvMCx1dD11P3UucHJvdG90eXBlOnZvaWQgMCxhdD11dD91dC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gY3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHIodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99KHQsY3QpKyIiO2lmKGcodCkpcmV0dXJuIGF0P2F0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gbnVsbD09dD8iIjpjdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiByKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihyKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFnKHQpKXx8ai50ZXN0KHQpfHwhXy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06b3QoZnQodCkpfXZhciBsdD0xLzA7ZnVuY3Rpb24gcHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxnKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1sdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbcHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufXZhciB5dD1PYmplY3QucHJvdG90eXBlO3ZhciB2dD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksYnQ9dnQsZHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBndCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHx5dCkpcmV0dXJuIGJ0KHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKWR0LmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufXZhciBfdD1rKGksIkRhdGFWaWV3IiksanQ9ayhpLCJQcm9taXNlIiksU3Q9ayhpLCJTZXQiKSx3dD1rKGksIldlYWtNYXAiKSxtdD0iW29iamVjdCBNYXBdIixPdD0iW29iamVjdCBQcm9taXNlXSIsQXQ9IltvYmplY3QgU2V0XSIsRXQ9IltvYmplY3QgV2Vha01hcF0iLE50PSJbb2JqZWN0IERhdGFWaWV3XSIsJHQ9RihfdCksenQ9RihWKSx4dD1GKGp0KSxGdD1GKFN0KSxJdD1GKHd0KSxNdD12OyhfdCYmTXQobmV3IF90KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1OdHx8ViYmTXQobmV3IFYpIT1tdHx8anQmJk10KGp0LnJlc29sdmUoKSkhPU90fHxTdCYmTXQobmV3IFN0KSE9QXR8fHd0JiZNdChuZXcgd3QpIT1FdCkmJihNdD1mdW5jdGlvbih0KXt2YXIgZT12KHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0Yocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSAkdDpyZXR1cm4gTnQ7Y2FzZSB6dDpyZXR1cm4gbXQ7Y2FzZSB4dDpyZXR1cm4gT3Q7Y2FzZSBGdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4gRXR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PVR0fSh0Lmxlbmd0aCkmJiFFKHQpfXZhciBSdD0iW29iamVjdCBTdHJpbmddIjt2YXIgQnQsa3Q9KEJ0PSJsZW5ndGgiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W0J0XX0pLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsR3Q9IlsiK0N0KyJdIixXdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLEh0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLHF0PSJbXiIrQ3QrIl0iLER0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixWdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsWHQ9Iig/OiIrV3QrInwiK0h0KyIpIisiPyIsWnQ9IltcXHVmZTBlXFx1ZmUwZl0/IixKdD1adCtYdCsoIig/OlxcdTIwMGQoPzoiK1txdCxEdCxWdF0uam9pbigifCIpKyIpIitadCtYdCsiKSoiKSxLdD0iKD86IitbcXQrV3QrIj8iLFd0LER0LFZ0LEd0XS5qb2luKCJ8IikrIikiLFF0PVJlZ0V4cChIdCsiKD89IitIdCsiKXwiK0t0K0p0LCJnIik7ZnVuY3Rpb24gWXQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVdC50ZXN0KHQpfSh0KT9mdW5jdGlvbih0KXtmb3IodmFyIGU9UXQubGFzdEluZGV4PTA7UXQudGVzdCh0KTspKytlO3JldHVybiBlfSh0KTprdCh0KX1mdW5jdGlvbiB0ZSh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEx0KHQpKXJldHVybiJzdHJpbmciPT10eXBlb2YoZT10KXx8IXIoZSkmJmIoZSkmJnYoZSk9PVJ0P1l0KHQpOnQubGVuZ3RoO3ZhciBlLG49UHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PW58fCJbb2JqZWN0IFNldF0iPT1uP3Quc2l6ZTpndCh0KS5sZW5ndGh9dmFyIGVlPS9ccy87dmFyIHJlPS9eXHMrLztmdW5jdGlvbiBuZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmZWUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShyZSwiIik6dH12YXIgb2U9TmFOLGllPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHVlPS9eMGJbMDFdKyQvaSxhZT0vXjBvWzAtN10rJC9pLGNlPXBhcnNlSW50O2Z1bmN0aW9uIGZlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihnKHQpKXJldHVybiBvZTtpZihTKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1TKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1uZSh0KTt2YXIgcj11ZS50ZXN0KHQpO3JldHVybiByfHxhZS50ZXN0KHQpP2NlKHQuc2xpY2UoMikscj8yOjgpOmllLnRlc3QodCk/b2U6K3R9dmFyIHNlPTEvMCxsZT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQ/KHQ9ZmUodCkpPT09c2V8fHQ9PT0tc2U/KHQ8MD8tMToxKSpsZTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gaGUodCl7dmFyIGU9cGUodCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciB5ZT0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24gdmUodCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxiKGUpJiZ2KGUpPT15ZTt2YXIgZX1mdW5jdGlvbiBiZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gZGUodCl7bGV0IGU9ITE7aWYoYmUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24gZ2UodCl7aWYoIWRlKHQpKXJldHVybiAwO3JldHVybiBwZSh0KX1mdW5jdGlvbiBfZSh0LGU9e30pe2xldCByPWh0KGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIHZlKHIpfHwocj0hMSksISFkZSh0KSYmKHQ9Z2UodCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PWhlKG4pKTt2YXIgbn12YXIgamU9aS5pc0Zpbml0ZSxTZT1NYXRoLm1pbjt2YXIgd2U9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PWZlKHQpLChyPW51bGw9PXI/MDpTZShoZShyKSwyOTIpKSYmamUodCkpe3ZhciBuPShmdCh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZnQoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksbWU9d2U7ZnVuY3Rpb24gT2UodCxlPXt9KXtsZXQgcj1odChlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO3ZlKHIpfHwocj0hMSk7bGV0IG49aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTt2ZShuKXx8KG49ITEpO2xldCBvPWh0KGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7dmUobyl8fChvPSExKTtsZXQgaT10PT5vP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsdT10PT57aWYobylyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighZGUodCkpcmV0dXJuIGkoMCk7bGV0IGE9bnVsbDt0cnl7dD1nZSh0KSxhPW1lKHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gdSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT91KGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLGkoYSkpfWZ1bmN0aW9uIEFlKHQsZT17fSl7aWYoIV9lKHQsZSkpcmV0dXJuITE7cmV0dXJuIE9lKHQpPj0wfWNvbnN0IEVlPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIE5lKHQsZT17fSl7aWYoIWZ1bmN0aW9uKHQpe2xldCBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KTtpZigiW29iamVjdCBCbG9iXSI9PT1lfHwiW29iamVjdCBGaWxlXSI9PT1lKXJldHVybiEwO3RyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEJsb2ImJnQgaW5zdGFuY2VvZiBCbG9iKXJldHVybiEwfWNhdGNoKHQpe31yZXR1cm4hMX0odCkmJihyPXQsIltvYmplY3QgRmlsZV0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpKSlyZXR1cm4gY29uc29sZS5sb2coImlucCIsdCksUHJvbWlzZS5yZWplY3QoImlucCBpcyBub3QgYSBCbG9iIG9yIEZpbGUiKTt2YXIgcjtsZXQgbj1odChlLCJjaHVua1NpemUiKTtkZShuKXx8KG49NjcxMDg4NjQpLG49Z2Uobik7bGV0e2NyZWF0ZTY0Om99PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjppLGRpZ2VzdDMyOnUsaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLGkpe2wodCk7Y29uc3QgdT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQodSkscigwLGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQodSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1iLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldCh1KSxpKG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3QgeT0ybioqNjRuLTFuO2Z1bmN0aW9uIHYodCl7cmV0dXJuIHQmeX1jb25zdCBiPW5ldyBUZXh0RW5jb2RlcixkPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksdihuKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9ZCk9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9ZCk9PnAoNDgsdCxvLGksdSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx2KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHYpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKEVlKSkuaW5zdGFuY2UpfSgpLGk9bygpLHU9MDtmb3IoO3U8dC5zaXplOyl7bGV0IGU9dC5zbGljZSh1LHUrbikscj1hd2FpdCBlLmFycmF5QnVmZmVyKCk7aS51cGRhdGUobmV3IFVpbnQ4QXJyYXkocikpLHUrPW59cmV0dXJuIGkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIil9bGV0IGNoZWNrU2xpY2VzSGFzaD1hc3luYyhyLG4sbyk9PntpZighKGJlKGk9bikmJmkubGVuZ3RoPD0xMjgmJi9eW0EtWmEtejAtOV0rJC8udGVzdChpKSkpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlSGFzaCJ9fXZhciBpO2lmKCFBcnJheS5pc0FycmF5KHIpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNsaWNlSGFzaHMifX1pZigwPT09dGUocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgdT1gJHtufV9gLGE9ZS5yZWFkZGlyU3luYyhvKSxjPW5ldyBTZXQ7Zm9yKGxldCB0IG9mIGEpe2lmKCF0LnN0YXJ0c1dpdGgodSkpY29udGludWU7bGV0IGU9dC5zbGljZSh1Lmxlbmd0aCk7QWUoZSkmJlN0cmluZyhPZShlKSk9PT1lJiZjLmFkZChPZShlKSl9bGV0IGY9W10scz1uZXcgU2V0O2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtsZXQgdT1yW2ldLGE9aHQodSwiaSIpO2lmKCFBZShhKSljb250aW51ZTtpZihhPU9lKGEpLCFjLmhhcyhhKXx8cy5oYXMoYSkpY29udGludWU7cy5hZGQoYSk7bGV0IGw9dC5yZXNvbHZlKG8sYCR7bn1fJHthfWApLHA9IiI7dHJ5e3A9YXdhaXQgTmUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGwpXSkpfWNhdGNoKHQpe2NvbnRpbnVlfWh0KHUsImgiKT09PXAmJmYucHVzaChhKX1yZXR1cm57c2xrczpmfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1NsaWNlc0hhc2gKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY2hlY2tTbGljZXNIYXNoCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgCgp0cnl7CgogICAgLy/lg4Xku6V1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3LoqJjpjIQsIOS4jeWPr+iou+WGinVuY2F1Z2h0RXhjZXB0aW9u6IiHdW5oYW5kbGVkUmVqZWN0aW9u55uj6IG9OgogICAgLy/mlrx3b3JrZXLlhafoqLvlhormraTkuoznm6Pogb3mnIPpmLvmraJOb2Rl6aCQ6Kit55qEd29ya2Vy57WC5q2i6KGM54K6LCDkvb93b3JrZXLltKnmvbDlvozku43lrZjmtLvnqbrovYksCiAgICAvL+WkluWxpOaUtuS4jeWIsGVycm9yL2V4aXTkuovku7YsIHBlbmRpbmcgcHJvbWlzZeawuOS5heaHuOe9riwg5LiU5a2Y5rS75q6t5bGNd29ya2Vy5pyD5Luk5a6/5Li756iL5bqP54Sh5rOV6YCA5Ye6OwogICAgLy/np7vpmaTlvox3b3JrZXLkvp3poJDoqK3ooYzngrrmrbvkuqEsIGVycm9y5LqL5Lu25YKz6Iez5aSW5bGkLCDnlLHlpJblsaTmlbTmiblyZWplY3QgcGVuZGluZwogICAgLy8gcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgLy8gICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICAvLyB9KQogICAgLy8gcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAvLyAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgLy8gfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i={},r=!1,o=!1;function a(e){for(let t in i){let n=i[t];delete i[t],s.removeAllListeners(t),n.reject(e)}s.emit("error",e)}function l(e){r||(r=!0,a(e))}let c=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){l(e)}}(t);if(!c)return l("invalid worker"),null;function M(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}();if(r)return e.reject("worker is dead"),e;let t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}();i[t]=e;let n={mode:"call",id:t,fun:"main",input:[...arguments]};return c.postMessage(n),s.once(t,n=>{delete i[t],"success"===n.state?e.resolve(n.msg):e.reject(n.msg)}),e}return c.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),c.on("error",l),c.on("exit",e=>{o||l("worker exit, code["+e+"]")}),function(){let e={mode:"init",type:"function",input:[...arguments]};c.postMessage(e)}([...arguments]),s.main=M,s.main=M,s.terminate=function(){c?(o=!0,c.terminate(),c=void 0):a("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(qi);var er=Jn(qi.exports);function tr(e,t){try{return{ok:!0,value:t()}}catch(t){let n=js(t);return{ok:!1,stage:e,cause:en(n)?n:"unknown error"}}}function nr(e,t){try{return r.validateHeaderValue(e,t),!0}catch(e){return!1}}function sr(e,t,n,s={}){let r=!0===Ie(s,"forHead",!1);if(null==e)return{error:"invalid streamRead",reason:"streamRead is null or undefined"};let o=tr("identify streamRead",()=>e instanceof i.Readable?{isReadable:!0,objectMode:!0===e.readableObjectMode,done:!0===e.destroyed||!0===e.readableEnded}:{isReadable:!1});if(!o.ok)return{error:"invalid streamRead",reason:`${o.stage} failed: ${o.cause}`};if(o.value.isReadable){if(o.value.objectMode)return{error:"invalid streamRead",reason:"streamRead is in object mode"};if(o.value.done)return{error:"invalid streamRead",reason:"streamRead is already destroyed or ended (each download event must provide a new stream)"};if(r)return{source:e};let s=tr("setup pipeline",()=>{let s=0,r=!1,o=new i.Transform({transform(e,n,i){if(s+=e.length,s>t)return r=!0,void i(new Error(`streamRead sent more than fileSize[${t}] bytes`));i(null,e)},flush(e){if(s!==t)return r=!0,void e(new Error(`streamRead ended at ${s} bytes but fileSize is ${t}`));e()}});return i.pipeline(e,o,e=>{e&&r&&n(js(e))}),o});return s.ok?{source:s.value}:{error:"invalid streamRead",reason:`${s.stage} failed: ${s.cause}`}}let a=tr("materialize streamRead",()=>{if(Buffer.isBuffer(e))return{buf:e};if(e instanceof Uint8Array)return{buf:Buffer.from(e)};if(qt(e))return{buf:Buffer.from(e,"utf8")};if("number"==typeof e||_t(e)||"object"==typeof e&&!1===function(e){try{return vn(e.pipe)}catch(e){return null}}(e)){let t=null;try{t=JSON.stringify(e)}catch(e){return{unserializable:js(e)}}return"string"!=typeof t?{unserializable:""}:{buf:Buffer.from(t,"utf8")}}return{unsupported:!0}});if(!a.ok)return{error:"invalid streamRead",reason:`${a.stage} failed: ${a.cause}`};if(Gs(a.value,"unserializable")){let e=a.value.unserializable;return{error:"invalid streamRead",reason:en(e)?`streamRead can not be serialized: ${e}`:"streamRead can not be serialized"}}if(!0===a.value.unsupported)return{error:"invalid streamRead",reason:"streamRead must be a readable stream, buffer, string, number, boolean or plain object"};let l=a.value.buf;return l.length!==t?{error:"fileSize mismatch",reason:`streamRead has ${l.length} bytes but fileSize is ${t}`}:{source:l}}let ir=e=>"function"==typeof e.toWellFormed?e.toWellFormed():e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"�");function rr(e,t){let n=tr(`check field[${e}]`,()=>{if("fileSize"===e)return function(e){return Kn(e,{useLimitSafe:!0})}(t)?{ok:!0,value:bn(t)}:{ok:!1};if("filename"===e||"fileType"===e){if(!en(t))return{ok:!1};let n=zs(t);return en(n)?"fileType"===e?nr("Content-Type",n)?{ok:!0,value:n}:{ok:!1}:{ok:!0,value:ir(n)}:{ok:!1}}throw new Error(`unknown field[${e}]`)});return n.ok?{ok:n.value.ok,value:n.value.value,cause:""}:{ok:!1,value:void 0,cause:n.cause}}function or(e){try{e&&vn(e.pipe)&&vn(e.destroy)&&e.destroy()}catch(e){}}function ar(e){return void 0===e||vn(e)||"symbol"==typeof e?null:e}function lr(e,t,n={}){let s=new i.Readable;s._read=()=>{},s.push(t),s.push(null);let r=Ie(n,"returnType",""),o=Ie(n,"returnMsg",""),a=e.response(s).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",s.readableLength);return en(r)&&a.header("Return-Type",r),en(o)&&nr("Return-Msg",o)&&a.header("Return-Msg",o),a}function cr(r={}){let o={useLimitSafe:!0},a=Ie(r,"port");(!xn(a,o)||bn(a)>65535)&&(a=8080),a=bn(a);let l=Ie(r,"useInert");_t(l)||(l=!0);let c=Ie(r,"pathStaticFiles");en(c)||(c="dist");let M=Ie(r,"pathUploadTemp");en(M)||(M="./uploadTemp");let w="";if(!Ms(M)){let e=bs(M);Gs(e,"error")&&(w=js(e.error))}let u=Ie(r,"apiName");en(u)||(u="api");let d=Ie(r,"tokenType");en(d)||(d="Bearer");let L=Ie(r,"sizeSlice");xn(L,o)||(L=1048576),L=bn(L);let y=Ie(r,"sizeMsg");xn(y,o)||(y=104857600),y=bn(y);let I=Ie(r,"verifyConn");vn(I)||(I=()=>!0);let D=Ie(r,"corsOrigins",[]);os(D)||(D=["*"]);let p=Ie(r,"delayForSlice","");(!Kn(p,o)||bn(p)>2147483647)&&(p=100),p=bn(p);let m=null;m=Ie(r,"serverHapi")?r.serverHapi:n.server({port:a,routes:{timeout:{server:!1,socket:!1},cors:{origin:D,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}}});let g=Cs(),f={tag:"w-converhp"},C=(e,...t)=>xs(g,e,t,{...f,funSettle:()=>{let n=t[t.length-1];Gn(n)&&n.reject(`listener of event[${e}] error`)},funEmit:N}),h=(e,...t)=>function(e,t,n=[],s={}){let i=s.ms;return xn(i)||(i=1),i=bn(i),i=Math.min(i,hs),setTimeout(()=>{xs(e,t,n,s)},i)}(g,e,t,{...f,funEmit:N});function N(e,...t){if("error"===e&&sn(t[0])&&"listener"===t[0].fun){let e=Ie(t[0],"name",""),n=Ie(t[0],"msg");return console.log(`listener of event[${e}] error`,n),g.emit("error",`listener of event[${e}] error: ${js(n)}`)}return g.emit(e,...t)}en(w)&&h("error",`create pathUploadTemp[${M}] error: ${w}`);let b=(e,t,n)=>{let s=Vn(),i=Vn();return i.then(t=>{void 0===t&&(t=null);let i=typeof t;if("function"===i||"symbol"===i)return s.reject("output can not be serialized"),void C("error",`event[${e}] output can not be serialized: output is a ${i}`);s.resolve(vn(n)?n(t):t)}).catch(e=>{s.reject(e)}),function(e,t,n,s,i,r){if(0===e.listenerCount(n)){let e=`no listener for event[${n}]`;return i.reject(e),r(e),!1}t(n,...s,i)}(g,C,e,t,i,e=>{C("error",e)}),s};async function x(e){return b("upload",[e])}async function T(e){return b("download",[e])}let S=`${zs(d)} `,Z=(e,t)=>{let n=Ie(e,"headers");n=sn(n)?n:"";let s=Ie(e,"query");s=sn(s)?s:"";let i="",r="";return"query"===t.authFrom?(r=Ie(s,"token",""),r=en(r)?r:"",en(r)&&(i=`${d} ${r}`)):(i=Ie(n,"authorization",""),i=en(i)?i:"",r=i.startsWith(S)?i.slice(S.length):""),{headers:n,query:s,authorization:i,token:r}},A=(e,t)=>{let n=(n,s,i)=>function(e,t,n={}){en(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t="");let s=Ie(n,"retryable",!0),i={error:t};!1===s&&(i.retryable=!1);let r=lr(e,Os(i),{returnType:"error",returnMsg:t});return!1===s&&r.header("Return-Retryable","false"),r}(e,s,i).code(t.statusOf[n]);return{permission:()=>n("permission","permission denied"),param:e=>n("param",e,{retryable:!1}),app:e=>n("app",e),output:e=>n("output",e),packet:e=>n("packet",e),internal:e=>n("internal",e)}},E=async(e,t,n,s)=>!0!==await async function(e){let t=!1;try{t=I(e),Gn(t)&&(t=await t)}catch(n){t=!1,console.log(`verifyConn error for apiType[${Ie(e,"apiType","")}]`,n),C("error",`verifyConn error for apiType[${Ie(e,"apiType","")}]: ${js(n)}`)}return!0===t}({apiType:n.apiType,authorization:t.authorization,query:t.query,headers:t.headers,req:e})?s.permission():(C("handler",{api:n.api,headers:t.headers,query:t.query}),null),X=(e,t,n,s)=>{let i=function(e,t){let n={};for(let s of t){let t=tr(`read field[${s}]`,()=>Ie(e,s));if(!t.ok)return{ok:!1,field:s,cause:t.cause,fields:n};n[s]=t.value}return{ok:!0,fields:n}}(e,n.fields.map(e=>e.name));if(!i.ok)return or(Ie(i.fields,"streamRead")),C("error",`download fileId[${t}] output error: can not read field[${i.field}]: ${i.cause}`),{ok:!1,res:s.output("invalid streamRead")};let r={streamRead:i.fields.streamRead};for(let e of n.fields){if("streamRead"===e.name)continue;let n=rr(e.name,i.fields[e.name]);if(n.ok){r[e.name]=n.value;continue}if(!0===e.optional&&!en(n.cause)){r[e.name]="";continue}or(r.streamRead);let o="fileSize"===e.name?`[${js(i.fields.fileSize)}]`:"";return C("error",`download fileId[${t}] output error: invalid ${e.name}${o}${en(n.cause)?`: ${n.cause}`:""}`),{ok:!1,res:s.output(`invalid ${e.name}`)}}return{ok:!0,v:r}},Y=async(e,t,n,s)=>{let i={},r="";await n.then(e=>{i.success=e,r="success"}).catch(e=>{i.error=e,r="error"});let o=function(e,t){let n={};for(let t of Object.keys(e))n[t]=ar(e[t]);let s=Os(n,{returnWithStateAndMsg:!0});return"success"!==Ie(s,"state")?(t(Ie(s,"msg","unknown error")),null):s.msg}(i,e=>{C("error",`${s} output can not be serialized: ${e}`)});return null===o?t.internal("output can not be serialized"):lr(e,o,{returnType:r,returnMsg:"need to parse"})},j=e=>(t,n,s)=>{if(413===Ie(s,"output.statusCode"))throw s;return C("error",`invalid request packet for ${e.api}: ${js(s)}`),A(n,e).packet("invalid request packet").takeover()},z={path:`/${u}/main`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ii.main,s=A(t,n),r=Z(e,n),o=await E(e,r,n,s);if(o)return o;let a=null;try{a=await(()=>{let t=Vn(),n=[],s=0,r=!1,o=new i.Writable({write(e,t,i){if(s+=e.length,s>y)return n=[],r=!0,void i();n.push(e),i()}});return o.on("finish",()=>{}),e.payload.pipe(o),e.payload.on("end",()=>{if(r)return void t.reject("payload too large");let e=Buffer.concat(n);n=[],t.resolve(e)}),e.payload.on("close",()=>{}),e.payload.on("error",e=>{console.log("apiMain req.payload err",e),C("error",`receive payload error: ${js(e)}`),t.reject(`receive payload error: ${js(e)}`)}),t})()}catch(e){if("payload too large"===e)return t.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${y}`}).code(413);throw e}let l=ei(new Uint8Array(a),{returnWithStateAndMsg:!0});if("success"!==Ie(l,"state")||!sn(l.msg)){let e=js(Ie(l,"msg",""));return C("error",`invalid request packet for apiMain: ${en(e)?e:"not an effective object"}`),s.packet("invalid request packet")}let c=l.msg;return Y(t,s,async function(e){return b("execute",[Ie(e,"func",""),Ie(e,"input",null)],t=>(e.output=t,delete e.input,e))}(c),`execute func[${js(Ie(c,"func",""))}]`)}},v={path:`/${u}/ulctr`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:j(ii.ulctr)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ii.ulctr,s=A(t,n),i=Z(e,n),r=await E(e,i,n,s);if(r)return r;let o=Ie(e,"payload.mode","");if("check-total-hash"!==o&&"check-slices-hash"!==o&&"merge-slices-push"!==o&&"merge-slices-get"!==o)return s.param(`invalid mode[${js(o)}] in payload`);let a=Ie(e,"payload.fileHash","");if(!ni(a))return s.param("invalid fileHash in payload");let l=Ie(e,"payload.chunkTotal","");if("merge-slices-push"===o){if(!xn(l))return s.param("invalid chunkTotal in payload");l=bn(l)}let c=Ie(e,"payload.filename",""),w=function(e,t="unknown"){if(!en(e))return t;let n=e.replace(/\\/g,"/").split("/").filter(e=>""!==e&&"."!==e&&".."!==e).pop()||"";return n=n.replace(/[\x00-\x1f\x7f<>:"|?*]/g,"_"),n=n.replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$/i.test(n)&&(n=`_${n}`),""===n?t:n}(c,""),u=e=>sn(e)&&Gs(e,"error")?`${o}: ${zs(e.error)}`:"",d=async(e,t)=>{try{return await t()}catch(t){return C("error",`upload-controller mode[${o}] ${e} error: ${js(t)}`),Promise.reject(`${o} failed`)}};return Y(t,s,(async()=>{let t=null;if("check-total-hash"===o){let n=Ie(e,"payload.fileSize","");t=await d("check total hash",()=>_i(n,L,a,M));let s=u(t);if(en(s))return Promise.reject(s);if(t.bAllHash){let e={from:"check-total-hash",filename:c,filenameSafe:w,path:t.path},n=await x(e);t={...t,msg:n}}delete t.path,t.sizeSlice=L}else if("check-slices-hash"===o){let n=Ie(e,"payload.fileSliceHashs",[]);t=await d("check slices hash",()=>er(n,a,M));let s=u(t);if(en(s))return Promise.reject(s)}else if("merge-slices-push"===o){t={queueId:await d("push merge task",()=>Bi(a,l,M))}}else if("merge-slices-get"===o){let n=Ie(e,"payload.queueId",""),s=await Fi(n,M,{funConsume:async e=>await x({from:"merge-slices-get",filename:c,filenameSafe:w,path:e}),funLog:e=>{C("error",e)}});t={state:s.state,msg:s.msg,queueId:n,filename:c},"error"===s.state&&en(s.reason)&&C("error",`${s.msg} for fileHash[${a}]: ${s.reason}`)}return t})(),`upload-controller mode[${o}]`)}},G={path:`/${u}/slc`,method:"POST",options:{payload:{maxBytes:L,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(n,s){let i=ii.slc,r=A(s,i),o=Z(n,i),a=await E(n,o,i,r);if(a)return a;let l=Ie(o.headers,"chunk-index",""),c=Ie(o.headers,"chunk-total",""),w=Ie(o.headers,"package-id","");if(!Kn(l))return r.param("invalid chunkIndex in headers");if(l=bn(l),!Kn(c))return r.param("invalid chunkTotal in headers");if(c=bn(c),!ni(w))return r.param("invalid packageId in headers");let u=e.resolve(M,`${w}_${l}`),d=t.createWriteStream(u),y=()=>{let e=Vn(),t=0,s=!1,i=!1,r=!1,o=!1;d.on("error",t=>{i||s||r||(i=!0,n.payload.unpipe(d),n.payload.resume(),console.log(`apiUploadSlice streamWrite chunk[${l+1}/${c}] of packageId[${w}] err`,t),C("error",`write chunk[${l+1}/${c}] of packageId[${w}] error: ${js(t)}`),e.reject(`write chunk[${l+1}/${c}] of packageId[${w}] error`))}),d.on("close",()=>{s||i||r?ti(u):o&&!0===d.writableFinished&&setTimeout(()=>{e.resolve(`chunk[${l+1}/${c}] of packageId[${w}] done`)},p)}),n.payload.on("data",e=>{s||(t+=e.length,t>L&&(s=!0,n.payload.unpipe(d),n.payload.resume(),d.destroy()))}),n.payload.pipe(d),n.payload.on("end",()=>{o=!0,i||s&&e.reject("payload too large")});let a=t=>{r||o||i||(r=!0,d.destroy(),C("error",`receive chunk[${l+1}/${c}] of packageId[${w}] error: ${t}`),e.reject(`receive chunk[${l+1}/${c}] of packageId[${w}] error: ${t}`))};return n.payload.on("error",e=>{console.log(`apiUploadSlice req.payload chunk[${l+1}/${c}] of packageId[${w}] err`,e),a(js(e))}),n.payload.on("close",()=>{a("closed before end")}),e},I={},D="",m="";try{let e=await y();I.success=e,D="success",m="need to parse"}catch(e){if("payload too large"===e)return s.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${L}`}).code(413);I.error=e,D="error",m="need to parse"}return lr(s,Os(I),{returnType:D,returnMsg:m})}},K={path:`/${u}/dwgfn`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:j(ii.dwgfn)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=ii.dwgfn,s=A(t,n),i=Z(e,n),r=await E(e,i,n,s);if(r)return r;let o=Ie(e,"payload.fileId","");if(!en(o))return s.param("invalid fileId in payload");let a={fileId:o,token:i.token},l={};if(await T(a).then(e=>{l.success=e}).catch(e=>{l.error=e}),Gs(l,"error"))return s.app("can not get file from fileId");let c=X(Ie(l,"success"),o,n,s);return c.ok?(or(c.v.streamRead),Y(t,s,Promise.resolve({filename:c.v.filename}),`download fileId[${o}]`)):c.res}},W={path:`/${u}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let n=ii.dwgf,s=A(t,n),i=Z(e,n),r=await E(e,i,n,s);if(r)return r;let o=Ie(i.query,"fileId","");if(o=en(o)?o:"",!en(o))return s.param("invalid fileId in query");let a={fileId:o,token:i.token},l={};if(await T(a).then(e=>{l.success=e}).catch(e=>{l.error=e}),Gs(l,"error"))return s.app("can not get file from fileId");let c=X(Ie(l,"success"),o,n,s);if(!c.ok)return c.res;let M=c.v.streamRead,w=c.v.fileSize,u=c.v.fileType,d=c.v.filename,L=sr(M,w,e=>{C("error",`download fileId[${o}] stream error: ${e}`)},{forHead:"head"===zs(Ie(e,"method","")).toLowerCase()});if(L.error)return or(M),C("error",`download fileId[${o}] output error: ${L.reason}`),s.output(L.error);let y=t.response(L.source).type(u).header("Content-Encoding","identity").header("Content-Length",w).header("Content-Disposition",en(d)?`attachment; filename*=UTF-8''${function(e){let t=Array.from(zs(e)),n="";for(let e of t){let t="";try{t=encodeURIComponent(e)}catch(e){t="%EF%BF%BD"}n+=t}return n.replace(/['()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}(d)}`:"attachment");return y}},U={path:`/${u}/dw`,method:"POST",options:{payload:{maxBytes:y,maxParts:1e9,timeout:!1,parse:!0,failAction:j(ii.dw)},timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let n=ii.dw,s=A(t,n),i=Z(e,n),r=await E(e,i,n,s);if(r)return r;let o=Ie(e,"payload.fileId","");if(!en(o))return s.param("invalid fileId in payload");let a={fileId:o,token:i.token},l={};if(await T(a).then(e=>{l.success=e}).catch(e=>{l.error=e}),Gs(l,"error"))return s.app("can not get file from fileId");let c=X(Ie(l,"success"),o,n,s);if(!c.ok)return c.res;let M=c.v.streamRead,w=vs(c.v.filename),u=c.v.fileSize,d=c.v.fileType,L=sr(M,u,e=>{C("error",`download fileId[${o}] stream error: ${e}`)},{forHead:"head"===zs(Ie(e,"method","")).toLowerCase()});return L.error?(or(M),C("error",`download fileId[${o}] output error: ${L.reason}`),s.output(L.error)):t.response(L.source).type(d).header("Content-Encoding","identity").header("Content-Disposition",`attachment; filename="${w}"`).header("Content-Length",u)}};let k=null;if(Ie(r,"serverHapi"))try{m.route([z,v,G,K,W,U])}catch(e){console.log("register routes error",e),h("error",`register routes error: ${js(e)}`)}else k=async function(){l&&await m.register(s);let e=[];if(l){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${c}/`}}};e=[...e,t]}e=[...e,z,v,G,K,W,U],m.route(e),await m.start(),console.log(`Server running at: ${m.info.uri}`)}().catch(e=>{console.log("start server error",e),h("error",`start server error: ${js(e)}`)});return g.stop=async()=>{try{Gn(k)&&await k,await m.stop()}catch(e){console.log("stop server error",e),C("error",`stop server error: ${js(e)}`)}},g}var Mr=function(){return L.Date.now()},wr=Math.max,ur=Math.min;function dr(e,t,n){var s,i,r,o,a,l,c=0,M=!1,w=!1,u=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function d(t){var n=s,r=i;return s=i=void 0,c=t,o=e.apply(r,n)}function L(e){var n=e-l;return void 0===l||n>=t||n<0||w&&e-c>=r}function y(){var e=Mr();if(L(e))return I(e);a=setTimeout(y,function(e){var n=t-(e-l);return w?ur(n,r-(e-c)):n}(e))}function I(e){return a=void 0,u&&s?d(e):(s=i=void 0,o)}function D(){var e=Mr(),n=L(e);if(s=arguments,i=this,l=e,n){if(void 0===a)return function(e){return c=e,a=setTimeout(y,t),M?d(e):o}(l);if(w)return clearTimeout(a),a=setTimeout(y,t),d(l)}return void 0===a&&(a=setTimeout(y,t)),o}return t=dn(t)||0,S(n)&&(M=!!n.leading,r=(w="maxWait"in n)?wr(dn(n.maxWait)||0,t):r,u="trailing"in n?!!n.trailing:u),D.cancel=function(){void 0!==a&&clearTimeout(a),c=0,s=l=i=a=void 0},D.flush=function(){return void 0===a?o:I(Mr())},D}var Lr=function(){try{var e=V(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),yr=Lr;function Ir(e,t,n){"__proto__"==t&&yr?yr(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Dr(e,t,n){(void 0!==n&&!P(e[t],n)||void 0===n&&!(t in e))&&Ir(e,t,n)}var pr="object"==typeof exports&&exports&&!exports.nodeType&&exports,mr=pr&&"object"==typeof module&&module&&!module.nodeType&&module,gr=mr&&mr.exports===pr?L.Buffer:void 0,fr=gr?gr.allocUnsafe:void 0;function Cr(e,t){if(t)return e.slice();var n=e.length,s=fr?fr(n):new e.constructor(n);return e.copy(s),s}function hr(e){var t=new e.constructor(e.byteLength);return new ot(t).set(new ot(e)),t}function Nr(e,t){var n=t?hr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function br(e,t){var n=-1,s=e.length;for(t||(t=Array(s));++n<s;)t[n]=e[n];return t}var xr=Object.create,Tr=function(){function e(){}return function(t){if(!S(t))return{};if(xr)return xr(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),Sr=Tr;function Zr(e){return"function"!=typeof e.constructor||He(e)?{}:Sr(Tn(e))}function Ar(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var Er=Object.prototype.hasOwnProperty;function Xr(e,t,n){var s=e[t];Er.call(e,t)&&P(s,n)&&(void 0!==n||t in e)||Ir(e,t,n)}function Yr(e,t,n,s){var i=!n;n||(n={});for(var r=-1,o=t.length;++r<o;){var a=t[r],l=s?s(n[a],e[a],a,n,e):void 0;void 0===l&&(l=e[a]),i?Ir(n,a,l):Xr(n,a,l)}return n}var jr=Object.prototype.hasOwnProperty;function zr(e){if(!S(e))return function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}(e);var t=He(e),n=[];for(var s in e)("constructor"!=s||!t&&jr.call(e,s))&&n.push(s);return n}function vr(e){return Be(e)?Ve(e,!0):zr(e)}function Gr(e,t,n,s,i,r,o){var a=Ar(e,n),l=Ar(t,n),c=o.get(l);if(c)Dr(e,n,c);else{var M,u=r?r(a,l,n+"",e,t,o):void 0,d=void 0===u;if(d){var L=w(l),y=!L&&Ze(l),I=!L&&!y&&Ue(l);u=l,L||y||I?w(a)?u=a:h(M=a)&&Be(M)?u=br(a):y?(d=!1,u=Cr(l,!0)):I?(d=!1,u=Nr(l,!0)):u=[]:Yn(l)||be(l)?(u=a,be(a)?u=function(e){return Yr(e,vr(e))}(a):S(a)&&!Z(a)||(u=Zr(l))):d=!1}d&&(o.set(l,u),i(u,l,s,r,o),o.delete(l)),Dr(e,n,u)}}function Kr(e,t,n,s,i){e!==t&&me(t,function(r,o){if(i||(i=new tt),S(r))Gr(e,t,o,n,Kr,s,i);else{var a=s?s(Ar(e,o),r,o+"",e,t,i):void 0;void 0===a&&(a=r),Dr(e,o,a)}},vr)}var Wr=Math.max;var Ur=yr?function(e,t){return yr(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:qe,kr=Ur,Vr=Date.now;var Qr=function(e){var t=0,n=0;return function(){var s=Vr(),i=16-(s-n);if(n=s,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(kr),Hr=Qr;function Jr(e,t){return Hr(function(e,t,n){return t=Wr(void 0===t?e.length-1:t,0),function(){for(var s=arguments,i=-1,r=Wr(s.length-t,0),o=Array(r);++i<r;)o[i]=s[t+i];i=-1;for(var a=Array(t+1);++i<t;)a[i]=s[i];return a[t]=n(o),function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}(e,this,a)}}(e,t,qe),e+"")}var Rr,Pr=(Rr=function(e,t,n){Kr(e,t,n)},Jr(function(e,t){var n=-1,s=t.length,i=s>1?t[s-1]:void 0,r=s>2?t[2]:void 0;for(i=Rr.length>3&&"function"==typeof i?(s--,i):void 0,r&&function(e,t,n){if(!S(n))return!1;var s=typeof t;return!!("number"==s?Be(n)&&Ee(t,n.length):"string"==s&&t in n)&&P(n[t],e)}(t[0],t[1],r)&&(i=s<3?void 0:i,s=1),e=Object(e);++n<s;){var o=t[n];o&&Rr(e,o,n,i)}return e}));function Or(e,n={}){let s={};if(sn(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Cs()),!Gs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let i=Ie(n,"fpTableTags","");en(i)||(i="./tableTags.json");let r=Ie(n,"genTag");vn(r)||(r=()=>Is()+"|"+ms(6));let o=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)};function a(){let e={};try{if(t.existsSync(i)){let n=tn(t.readFileSync(i,"utf8"));sn(n)&&(e=n)}}catch(e){o("error",{msg:"readTableTags catch",err:e})}return e}function l(){try{let e=function(e,t=!1,n={}){let s=Ie(n,"returnWithStateAndMsg",null);_t(s)||(s=!1);let i=e=>s?{state:"error",msg:e}:"";if(ns(e))return i("invalid v");let r="";try{r=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){return i(e.toString())}return s?{state:"success",msg:r}:r}(s);t.writeFileSync(i,e,"utf8")}catch(e){o("error",{msg:"writeTableTags catch",err:e})}}let c=dr(()=>{l(),o("changeTableTags",s)},200);return e.readTableTags=a,e.writeTableTags=l,e.initTableTags=function(e={},t="useInputFirst"){if("useInputOnly"===t)s=e;else if("useStorageOnly"===t)s=a();else if("useInputFirst"===t)s=Pr(a(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);s=Pr(e,a())}l()},e.setTableTags=function(e={}){s=Pr(s,e),l()},e.getTableTags=function(){return s},e.updateTableTag=function(e){s[e]=r(),c()},e}var Br=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)wt(t,Dt(e)),e=Tn(e);return t}:Lt,Fr=Br;function $r(e){return ut(e,vr,Fr)}var _r=Object.prototype.hasOwnProperty;var qr=/\w*$/;var eo=y?y.prototype:void 0,to=eo?eo.valueOf:void 0;function no(e,t,n){var s,i=e.constructor;switch(t){case"[object ArrayBuffer]":return hr(e);case"[object Boolean]":case"[object Date]":return new i(+e);case"[object DataView]":return function(e,t){var n=t?hr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Nr(e,n);case"[object Map]":case"[object Set]":return new i;case"[object Number]":case"[object String]":return new i(e);case"[object RegExp]":return function(e){var t=new e.constructor(e.source,qr.exec(e));return t.lastIndex=e.lastIndex,t}(e);case"[object Symbol]":return s=e,to?Object(to.call(s)):{}}}var so=Ke&&Ke.isMap,io=so?je(so):function(e){return h(e)&&"[object Map]"==zt(e)};var ro=Ke&&Ke.isSet,oo=ro?je(ro):function(e){return h(e)&&"[object Set]"==zt(e)},ao="[object Arguments]",lo="[object Function]",co="[object Object]",Mo={};function wo(e,t,n,s,i,r){var o,a=1&t,l=2&t,c=4&t;if(n&&(o=i?n(e,s,i,r):n(e)),void 0!==o)return o;if(!S(e))return e;var M=w(e);if(M){if(o=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&_r.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!a)return br(e,o)}else{var u=zt(e),d=u==lo||"[object GeneratorFunction]"==u;if(Ze(e))return Cr(e,a);if(u==co||u==ao||d&&!i){if(o=l||d?{}:Zr(e),!a)return l?function(e,t){return Yr(e,Fr(e),t)}(e,function(e,t){return e&&Yr(t,vr(t),e)}(o,e)):function(e,t){return Yr(e,Dt(e),t)}(e,function(e,t){return e&&Yr(t,Fe(t),e)}(o,e))}else{if(!Mo[u])return i?e:{};o=no(e,u,a)}}r||(r=new tt);var L=r.get(e);if(L)return L;r.set(e,o),oo(e)?e.forEach(function(s){o.add(wo(s,t,n,s,e,r))}):io(e)&&e.forEach(function(s,i){o.set(i,wo(s,t,n,i,e,r))});var y=M?void 0:(c?l?$r:pt:l?vr:Fe)(e);return De(y||e,function(s,i){y&&(s=e[i=s]),Xr(o,i,wo(s,t,n,i,e,r))}),o}Mo[ao]=Mo["[object Array]"]=Mo["[object ArrayBuffer]"]=Mo["[object DataView]"]=Mo["[object Boolean]"]=Mo["[object Date]"]=Mo["[object Float32Array]"]=Mo["[object Float64Array]"]=Mo["[object Int8Array]"]=Mo["[object Int16Array]"]=Mo["[object Int32Array]"]=Mo["[object Map]"]=Mo["[object Number]"]=Mo[co]=Mo["[object RegExp]"]=Mo["[object Set]"]=Mo["[object String]"]=Mo["[object Symbol]"]=Mo["[object Uint8Array]"]=Mo["[object Uint8ClampedArray]"]=Mo["[object Uint16Array]"]=Mo["[object Uint32Array]"]=!0,Mo["[object Error]"]=Mo[lo]=Mo["[object WeakMap]"]=!1;function uo(e){return wo(e,5)}function Lo(e={}){let t=Cs(),n={},s=null,i=Ie(e,"timeAlive");xn(i)||(i=1e4),i=bn(i),i=Math.min(i,hs);let r=Ie(e,"timeDetect");return xn(r)||(r=50),r=bn(r),r=Math.min(r,hs),t.trigger=function(e,o){en(e)?(Gs(n,e)||setTimeout(()=>{xs(t,"message",[{eventName:"enter",key:e,data:o,now:fi(n)}],{tag:"alive"})},1),n[e]={data:o,time:Date.now()},null===s&&(s=setInterval(()=>{et(n,(e,s)=>{if(Date.now()-e.time>i){let e=uo(n[s]);delete n[s],xs(t,"message",[{eventName:"leave",key:s,data:e.data,now:fi(n)}],{tag:"alive"})}}),sn(n)||(clearInterval(s),s=null)},r))):console.log("trigger need key")},t.get=function(){let e=[];return et(n,(t,n)=>{e.push({key:n,data:t.data})}),e=uo(e),e},t}function yo(e,t={}){let n={};if(sn(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Cs()),!Gs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let s=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)},i=Lo(),r=setInterval(()=>{let e=$t(i.get(),"key"),t={};et(e,e=>{t[e]=Ie(n,e,[])}),n=t},1e3);i.on("message",function({eventName:e,key:t,data:n,now:i}){"enter"===e?s("clientEnter",t,n):"leave"===e&&s("clientLeave",t,n),s("clientChange",i)}),e.on("execute",function(e,t,r){if("[sys:polling]"===e)try{let e=Ie(t,"clientId",""),s=Ie(n,e,[]);s=uo(s),n[e]=[],i.trigger(e,t),r.resolve(s)}catch(e){s("error",e),r.reject("[sys:polling] error")}});return e.getClients=i.get,e.getMessages=()=>uo(n),e.broadcast=e=>{if(!sn(n))return;let t={};et(n,(n,s)=>{n.push({mode:"broadcast",data:e}),t[s]=n}),n=t},e.clearBroadcast=()=>{clearInterval(r)},e}let Io=(e,t)=>{let n={};return et(e,e=>{let s=e,i=Ie(t,e,"");en(i)&&(n[s]=i)}),n};function Do(e,t,n,s={}){if(!sn(e))throw new Error("invalid instWConverServer");if(0===fi(t))return e;if(!sn(n))return e;let i=Ie(s,"genTag");vn(i)||(i=()=>Is()+"|"+ms(6));let r={};return et(t,e=>{r[e]=i()}),e.initTableTags(r,"useInputOnly"),et(t,t=>{let s=n[t];if(!s)throw new Error(`invalid kpOrm[${t}]`);try{s.on("change",()=>{e.updateTableTag(t)})}catch(e){throw new Error(`kpOrm[${t}] can not listen to change events`)}}),e.on("changeTableTags",n=>{e.broadcast({mode:"syncKpTable",data:Io(t,n)})}),e}function po(e,t,n,s){for(var i=n-1,r=e.length;++i<r;)if(s(e[i],t))return i;return-1}var mo=Array.prototype.splice;function go(e,t){return e&&e.length&&t&&t.length?function(e,t,n,s){var i=s?po:Ni,r=-1,o=t.length,a=e;for(e===t&&(t=br(t)),n&&(a=le(e,je(n)));++r<o;)for(var l=0,c=t[r],M=n?n(c):c;(l=i(a,M,l,s))>-1;)a!==e&&mo.call(a,l,1),mo.call(e,l,1);return e}(e,t):e}function fo(e,t={}){if(!sn(e))throw new Error("invalid instWConverServer");let n=Ie(t,"getUserIdByToken",null);vn(n)||(n=async()=>"");let s=Ie(t,"useDbOrm",null);_t(s)||(s=!1);let i=null;if(s&&(i=Ie(t,"operOrm",null),!vn(i)))throw new Error("invalid opt.operOrm when useDbOrm=true");let r=[];if(s&&(r=Ie(t,"tableNames",null),!rn(r)))throw new Error("invalid opt.tableNames when useDbOrm=true");let o=[];s&&(o=Ie(t,"methods",null),rn(o)||(o=["select","insert","save","del"]));let a=Ie(t,"kpFunExt",null);let l={};async function c(e,t,s){if(!en(e))return s.resolve({state:"error",msg:"invalid func"}),s;let i="";if(!Gs(t,"__sysToken__"))return s.resolve({state:"error",msg:"invalid token"}),s;if(i=zs(t.__sysToken__),!Gs(t,"__sysInputArgs__"))return s.resolve({state:"error",msg:"invalid input"}),s;t=t.__sysInputArgs__;let r="";if(r=n(i),Gn(r)&&(r=await r),en(r)||(r=""),"[sys:getFuncList]"===e){let e=Fe(l);e=function(e,t){if(!os(e))return[];if((nn(t)||pn(t)||qt(t)||_t(t))&&(t=[t]),!os(t))return e;let n=uo(e);return go(n,t),n}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return s.resolve(t),s}if(!Gs(l,e))return s.resolve({state:"error",msg:`invalid func[${e}]`}),s;let o=l[e];try{let e=await Qn(o)(r,...t);s.resolve(e)}catch(t){s.resolve({state:"error",msg:`call func[${e}] has an error: ${t.message}`})}return s}return s&&(r=uo(r),l=function(e,t,n){let s={};return et(e,e=>{et(t,t=>{s[`${e}.${t}`]=async function(s,i){return await n(s,e,t,i)}})}),s}(r,o,i)),sn(a)&&et(a,(e,t)=>{l[t]=e}),e.on("execute",async function(t,n,s){await c(t,n,s).catch(n=>{e.emit("error",n),s.resolve({state:"error",msg:`execFun func[${t}] has an error: ${n.message}`})})}),e}function Co(e,t={}){if(sn(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=Cs()),!Gs(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=Ie(t,"fpTableTags",null);en(n)||(n="./tableTags.json");let s=Ie(t,"genTag");vn(s)||(s=()=>Is()+"|"+ms(6)),e=new yo(e=new Or(e,{fpTableTags:n,genTag:s}));let i=Ie(t,"useDbOrm",null);_t(i)||(i=!0);let r=Ie(t,"kpOrm",null),o=Ie(t,"operOrm",null),a=Ie(t,"tableNamesExec",null),l=Ie(t,"methodsExec",null),c=Ie(t,"tableNamesSync",null),M=Ie(t,"getUserIdByToken",null),w=Ie(t,"kpFunExt",null);if(sn(w)||(w={}),w={...w,"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:Io(c,t)}}},e=new fo(e,{getUserIdByToken:M,useDbOrm:i,operOrm:o,tableNames:a,methods:l,kpFunExt:w}),i){if(!nn(r))return e.emit("error","invalid opt.kpOrm when useDbOrm=true"),e;e=new Do(e,c,r,{genTag:s})}return e}function ho(e={}){let t=Cs(),i=null,r=null,o=Ie(e,"port");gn(o)||(o=8080);let a=Ie(e,"corsOrigins",[]);os(a)||(a=["http://localhost"]);let l=Ie(e,"delayForSlice","");Kn(l)||(l=100),l=bn(l);let c=Ie(e,"useInert");_t(c)||(c=!0);let M=Ie(e,"pathStaticFiles");en(M)||(M="dist");let w=Ie(e,"apis");os(w)||(w=[]);let u=Ie(e,"apiName");en(u)||(u="api");let d=Ie(e,"pathUploadTemp");en(d)||(d="./uploadTemp"),Ms(d)||bs(d);let L=Ie(e,"tokenType");en(L)||(L="Bearer");let y=Ie(e,"sizeSlice");xn(y)||(y=1048576);let I=Ie(e,"sizeMsg");xn(I)||(I=104857600);let D=Ie(e,"verifyConn");vn(D)||(D=()=>!0);let p=Ie(e,"getUserIdByToken",null),m=Ie(e,"useDbOrm",null);_t(m)||(m=!0);let g=Ie(e,"kpOrm",null),f=Ie(e,"operOrm",null),C=Ie(e,"tableNamesExec",null),h=Ie(e,"methodsExec",null),N=Ie(e,"tableNamesSync",null),b=Ie(e,"kpFunExt",null),x=Ie(e,"fpTableTags",null);en(x)||(x=Ie(e,"fnTableTags",null));let T=Ie(e,"genTag");vn(T)||(T=()=>Is()+"|"+ms(6));let S=Ie(e,"useShowLog");_t(S)||(S=!0);(async()=>{await(async()=>{i=new n.Server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:a,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}}}),c&&await i.register(s);let e=[];c&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${M}/`}}}]),e=[...e,...w],i.route(e)})(),await(async()=>{r=new cr({serverHapi:i,apiName:u,pathUploadTemp:d,tokenType:L,sizeSlice:y,sizeMsg:I,verifyConn:D,corsOrigins:a,delayForSlice:l}),r.on("clientChange",function(e){S&&console.log(`Server[port:${o}]: now clients: ${e}`)})})(),await(async()=>{r=new Co(r,{getUserIdByToken:p,useDbOrm:m,kpOrm:g,operOrm:f,tableNamesExec:C,tableNamesSync:N,methodsExec:h,kpFunExt:b,fpTableTags:x,genTag:T}),r.on("error",e=>{t.emit("error",e)})})(),await i.start(),S&&console.log(`Server running at: ${i.info.uri}`)})().catch(e=>{t.emit("error",e)}),process.on("unhandledRejection",e=>{console.log("unhandledRejection",e),t.emit("error",{mode:"unhandledRejection",err:e})}),process.on("uncaughtException",e=>{console.log("uncaughtException",e),t.emit("error",{mode:"uncaughtException",err:e})});return t.getServer=async()=>(await Ns(()=>null!==i),i),t.getInstWConverServer=async()=>(await Ns(()=>null!==r),r),t}function No(e,t){let n=Vn();if(!rn(e)&&!nn(e))return n.reject("rs is not an array or object"),n;let s=!1;if(nn(e)){s=!0;let t=[];et(e,(e,n)=>{t.push({k:n,v:e})}),e=t}vn(t)||(t=function(e){return e});let i=-1,r=[];return e.reduce(function(e,n){return e.then(function(e){r.push(e),i+=1;let o=i,a=n;return s&&(o=n.k,a=n.v),vn(t)?t(a,o):a})},Promise.resolve()).then(function(e){var t,s,i,o;r.push(e),o=null==(t=r)?0:t.length,r=o?Ci(t,(s=i||void 0===s?1:In(s))<0?0:s,o):[],n.resolve(r)}).catch(function(e){n.reject(e)}),n}let bo={backup:async function(e){return await No(e,async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()}))},recover:async function(e,n,s,i=!1){if(!us(e))throw console.log("fp",e),new Error("fp is not exist");if(!sn(n))throw console.log("woItems",n),new Error("invalid woItems");vn(s)||(s=null),_t(i)||(i=!1);let r=t.readFileSync(e,"utf8");r=Ki(r);let o=tn(r);vn(s)&&s(),await No(o,async e=>{console.log("recover...",e.name),i&&(console.log("needCreateStorage"),await n[e.name].createStorage());let t=null;return fi(e.data)>0&&(t=await n[e.name].insert(e.data)),t})}};function xo(){if(!vn(ys))throw new Error("invalid dayjs");return ys().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}var To={exports:{}},So={},Zo={exports:{}},Ao={};function Eo(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var Xo=/javascript\s*\:/gim;Ao.whiteList=Eo(),Ao.getDefaultWhiteList=Eo,Ao.onAttr=function(e,t,n){},Ao.onIgnoreAttr=function(e,t,n){},Ao.safeAttrValue=function(e,t){return Xo.test(t)?"":t};var Yo={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,i;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,i=e.length;s<i;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}};var jo=function(e,t){";"!==(e=Yo.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,s=!1,i=0,r=0,o="";function a(){if(!s){var n=Yo.trim(e.slice(i,r)),a=n.indexOf(":");if(-1!==a){var l=Yo.trim(n.slice(0,a)),c=Yo.trim(n.slice(a+1));if(l){var M=t(i,o.length,l,c,n);M&&(o+=M+"; ")}}}i=r+1}for(;r<n;r++){var l=e[r];if("/"===l&&"*"===e[r+1]){var c=e.indexOf("*/",r+2);if(-1===c)break;i=(r=c+1)+1,s=!1}else"("===l?s=!0:")"===l?s=!1:";"===l?s||a():"\n"===l&&a()}return Yo.trim(o)},zo=Ao,vo=jo;function Go(e){return null==e}function Ko(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||zo.whiteList,e.onAttr=e.onAttr||zo.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||zo.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||zo.safeAttrValue,this.options=e}Ko.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,s=t.onAttr,i=t.onIgnoreAttr,r=t.safeAttrValue;return vo(e,function(e,t,o,a,l){var c=n[o],M=!1;if(!0===c?M=c:"function"==typeof c?M=c(a):c instanceof RegExp&&(M=c.test(a)),!0!==M&&(M=!1),a=r(o,a)){var w,u={position:t,sourcePosition:e,source:l,isWhite:M};return M?Go(w=s(o,a,u))?o+":"+a:w:Go(w=i(o,a,u))?void 0:w}})};var Wo=Ko;!function(e,t){var n=Ao,s=Wo;for(var i in(t=e.exports=function(e,t){return new s(t).process(e)}).FilterCSS=s,n)t[i]=n[i];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(Zo,Zo.exports);var Uo=Zo.exports,ko={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,i;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,i=e.length;s<i;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}},Vo=Uo.FilterCSS,Qo=Uo.getDefaultWhiteList,Ho=ko;function Jo(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var Ro=new Vo;function Po(e){return e.replace(Oo,"<").replace(Bo,">")}var Oo=/</g,Bo=/>/g,Fo=/"/g,$o=/"/g,_o=/&#([a-zA-Z0-9]*);?/gim,qo=/:?/gim,ea=/&newline;?/gim,ta=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,na=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,sa=/u\s*r\s*l\s*\(.*/gi;function ia(e){return e.replace(Fo,""")}function ra(e){return e.replace($o,'"')}function oa(e){return e.replace(_o,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function aa(e){return e.replace(qo,":").replace(ea," ")}function la(e){for(var t="",n=0,s=e.length;n<s;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return Ho.trim(t)}function ca(e){return e=la(e=aa(e=oa(e=ra(e))))}function Ma(e){return e=Po(e=ia(e))}So.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},So.getDefaultWhiteList=Jo,So.onTag=function(e,t,n){},So.onIgnoreTag=function(e,t,n){},So.onTagAttr=function(e,t,n){},So.onIgnoreTagAttr=function(e,t,n){},So.safeAttrValue=function(e,t,n,s){if(n=ca(n),"href"===t||"src"===t){if("#"===(n=Ho.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"data:image/"!==n.substr(0,11)&&"ftp://"!==n.substr(0,6)&&"./"!==n.substr(0,2)&&"../"!==n.substr(0,3)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(ta.lastIndex=0,ta.test(n))return""}else if("style"===t){if(na.lastIndex=0,na.test(n))return"";if(sa.lastIndex=0,sa.test(n)&&(ta.lastIndex=0,ta.test(n)))return"";!1!==s&&(n=(s=s||Ro).process(n))}return n=Ma(n)},So.escapeHtml=Po,So.escapeQuote=ia,So.unescapeQuote=ra,So.escapeHtmlEntities=oa,So.escapeDangerHtml5Entities=aa,So.clearNonPrintableCharacter=la,So.friendlyAttrValue=ca,So.escapeAttrValue=Ma,So.onIgnoreTagStripAll=function(){return""},So.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),s=[],i=!1;return{onIgnoreTag:function(r,o,a){if(function(t){return!!n||-1!==Ho.indexOf(e,t)}(r)){if(a.isClosing){var l="[/removed]",c=a.position+10;return s.push([!1!==i?i:a.position,c]),i=!1,l}return i||(i=a.position),"[removed]"}return t(r,o,a)},remove:function(e){var t="",n=0;return Ho.forEach(s,function(s){t+=e.slice(n,s[0]),n=s[1]}),t+=e.slice(n)}}},So.stripCommentTag=function(e){for(var t="",n=0;n<e.length;){var s=e.indexOf("\x3c!--",n);if(-1===s){t+=e.slice(n);break}t+=e.slice(n,s);var i=e.indexOf("--\x3e",s);if(-1===i)break;n=i+3}return t},So.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))})).join("")},So.attributeWrapSign='"',So.cssFilter=Ro,So.getDefaultCSSWhiteList=Qo;var wa={},ua=ko;function da(e){var t,n=ua.spaceIndex(e);return t=-1===n?e.slice(1,-1):e.slice(1,n+1),"/"===(t=ua.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function La(e){return"</"===e.slice(0,2)}var ya=/[^a-zA-Z0-9\\_:.-]/gim;function Ia(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function Da(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"'"===n||'"'===n?t:-1}}function pa(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function ma(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}wa.parseTag=function(e,t,n){var s="",i=0,r=!1,o=!1,a=0,l=e.length,c="",M="";e:for(a=0;a<l;a++){var w=e.charAt(a);if(!1===r){if("<"===w){r=a;continue}}else if(!1===o){if("<"===w){s+=n(e.slice(i,a)),r=a,i=a;continue}if(">"===w||a===l-1){s+=n(e.slice(i,r)),c=da(M=e.slice(r,a+1)),s+=t(r,s.length,c,M,La(M)),i=a+1,r=!1;continue}if('"'===w||"'"===w)for(var u=1,d=e.charAt(a-u);""===d.trim()||"="===d;){if("="===d){o=w;continue e}d=e.charAt(a-++u)}}else if(w===o){o=!1;continue}}return i<l&&(s+=n(e.substr(i))),s},wa.parseAttr=function(e,t){var n=0,s=0,i=[],r=!1,o=e.length;function a(e,n){if(!((e=(e=ua.trim(e)).replace(ya,"").toLowerCase()).length<1)){var s=t(e,n||"");s&&i.push(s)}}for(var l=0;l<o;l++){var c,M=e.charAt(l);if(!1!==r||"="!==M)if(!1===r||l!==s)if(/\s|\n|\t/.test(M)){if(e=e.replace(/\s|\n|\t/g," "),!1===r){if(-1===(c=Ia(e,l))){a(ua.trim(e.slice(n,l))),r=!1,n=l+1;continue}l=c-1;continue}if(-1===(c=pa(e,l-1))){a(r,ma(ua.trim(e.slice(n,l)))),r=!1,n=l+1;continue}}else;else{if(-1===(c=e.indexOf(M,l+1)))break;a(r,ua.trim(e.slice(s+1,c))),r=!1,n=(l=c)+1}else r=e.slice(n,l),n=l+1,s='"'===e.charAt(n)||"'"===e.charAt(n)?n:Da(e,l+1)}return n<e.length&&(!1===r?a(e.slice(n)):a(r,ma(ua.trim(e.slice(n))))),ua.trim(i.join(" "))};var ga=Uo.FilterCSS,fa=So,Ca=wa,ha=Ca.parseTag,Na=Ca.parseAttr,ba=ko;function xa(e){return null==e}function Ta(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=fa.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var n in e)Array.isArray(e[n])?t[n.toLowerCase()]=e[n].map(function(e){return e.toLowerCase()}):t[n.toLowerCase()]=e[n];return t}(e.whiteList||e.allowList):e.whiteList=fa.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":fa.attributeWrapSign,e.onTag=e.onTag||fa.onTag,e.onTagAttr=e.onTagAttr||fa.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||fa.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||fa.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||fa.safeAttrValue,e.escapeHtml=e.escapeHtml||fa.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new ga(e.css))}Ta.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,n=t.options,s=n.whiteList,i=n.onTag,r=n.onIgnoreTag,o=n.onTagAttr,a=n.onIgnoreTagAttr,l=n.safeAttrValue,c=n.escapeHtml,M=t.attributeWrapSign,w=t.cssFilter;n.stripBlankChar&&(e=fa.stripBlankChar(e)),n.allowCommentTag||(e=fa.stripCommentTag(e));var u=!1;n.stripIgnoreTagBody&&(u=fa.StripTagBody(n.stripIgnoreTagBody,r),r=u.onIgnoreTag);var d=ha(e,function(e,t,n,u,d){var L={sourcePosition:e,position:t,isClosing:d,isWhite:Object.prototype.hasOwnProperty.call(s,n)},y=i(n,u,L);if(!xa(y))return y;if(L.isWhite){if(L.isClosing)return"</"+n+">";var I=function(e){var t=ba.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=ba.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=ba.trim(e.slice(0,-1))),{html:e,closing:n}}(u),D=s[n],p=Na(I.html,function(e,t){var s=-1!==ba.indexOf(D,e),i=o(n,e,t,s);return xa(i)?s?(t=l(n,e,t,w))?e+"="+M+t+M:e:xa(i=a(n,e,t,s))?void 0:i:i});return u="<"+n,p&&(u+=" "+p),I.closing&&(u+=" /"),u+=">"}return xa(y=r(n,u,L))?c(u):y},c);return u&&(d=u.remove(d)),d};var Sa=Ta;!function(e,t){var n=So,s=wa,i=Sa;function r(e,t){return new i(t).process(e)}(t=e.exports=r).filterXSS=r,t.FilterXSS=i,function(){for(var e in n)t[e]=n[e];for(var i in s)t[i]=s[i]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(To,To.exports);var Za=Jn(To.exports);function Aa(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}function Ea(e){let t=function(){let e=Aa();return Za||e.xss}();let n=function e(n){return rn(n)||nn(n)?(et(n,function(t,s){n[s]=e(t)}),n):en(n)?t(n,{onIgnoreTagAttr:function(e,n,s,i){if("style"===n)return n+'="'+t.escapeAttrValue(s)+'"'}}):n}(uo(e));return n}let Xa=null,Ya=null;function ja(e,t,n,s="save"){if(!sn(Xa))throw console.log("ds",Xa),new Error("invalid ds");let i=Xa[e].keys,r=!1;rn(n)||(r=!0,n=[n]);let o=xo();return s.indexOf("insert")>=0&&(i.indexOf("userId")>=0&&et(n,(e,s)=>{n[s].userId=t}),i.indexOf("timeCreate")>=0&&et(n,(e,t)=>{n[t].timeCreate=o}),i.indexOf("userIdUpdate")>=0&&et(n,(e,s)=>{n[s].userIdUpdate=t}),i.indexOf("timeUpdate")>=0&&et(n,(e,t)=>{n[t].timeUpdate=o})),(s.indexOf("insert")>=0||s.indexOf("save")>=0)&&(i.indexOf("userIdUpdate")>=0&&et(n,(e,s)=>{n[s].userIdUpdate=t}),i.indexOf("timeUpdate")>=0&&et(n,(e,t)=>{n[t].timeUpdate=o})),n=$t(n,(e,t)=>{let n={};return et(e,(e,t)=>{e=Ea(e),n[t]=e}),n}),n=r?n[0]:n}async function za(e,t,n,s){let i,r=null;if(!sn(Ya))return Promise.reject("無有效woItems");let o=Ie(Ya,t,null);if(null===o)return Promise.reject(`ORM找不到表名稱: ${t}`);if("select"===n){if(i=await o.select(s).catch(e=>{console.log(`${t}.select catch`,e),r="取得資料失敗"}),en(r))return Promise.reject(r)}else if("insert"===n||"save"===n){try{s=ja(t,e,s,n)}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if("insert"===n?i=await o.insert(s).catch(e=>{console.log(`${t}.save catch`,e),r="新增資料失敗"}):"save"===n&&(i=await o.save(s).catch(e=>{console.log(`${t}.save catch`,e),r="儲存資料失敗"})),en(r))return Promise.reject(r);i=rn(s)?$t(s,e=>({id:e.id})):{id:s.id}}else if("del"===n)i=await o.del(s).catch(e=>{console.log(`${t}.del catch`,e),r="刪除資料失敗"});else if("delAll"===n)i=await o.delAll(s).catch(e=>{console.log(`${t}.delAll catch`,e),r="刪除資料失敗"});else if("mix"===n){if(!sn(s))return Promise.reject("mix僅支援輸入ltdtDiffByKey結果物件");let n;i=[];let a=Ie(s,"add",[]);if(fi(a)>0){try{a=ja(t,e,a,"insert+save")}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.insert(a).catch(e=>{console.log(`${t}.save catch`,e),r="新增資料失敗"}),en(r))return Promise.reject(r);n=$t(a,e=>({id:e.id})),i=[...i,...n]}let l=Ie(s,"del",[]);if(fi(l)>0){if(await o.del(l).catch(e=>{console.log(`${t}.save catch`,e),r="刪除資料失敗"}),en(r))return Promise.reject(r);n=$t(l,e=>({id:e.id})),i=[...i,...n]}let c=Ie(s,"diff",[]);if(fi(c)>0){try{c=ja(t,e,c)}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.save(c).catch(e=>{console.log(`${t}.save catch`,e),r="變更資料失敗"}),en(r))return Promise.reject(r);n=$t(c,e=>({id:e.id})),i=[...i,...n]}}else r=`invalid mode: ${n}`;return en(r)?Promise.reject(r):i}function va(e,t){return Xa=e,Ya=t,za}function Ga(e,t){var n=[];return _e(e,function(e,s,i){t(e,s,i)&&n.push(e)}),n}function Ka(e,t){return(w(e)?dt:Ga)(e,Bt(t))}function Wa(e,t=null){if(!rn(e)){let e=Vn();return e.reject("pms is not an array"),e}return e.reduce((e,t)=>e.then(t),Promise.resolve(t))}let Ua=[],ka=[],Va=[],Qa=null,Ha=null,Ja=!0,Ra=!0;function Pa(e){setTimeout(()=>{Ua.push(e)},1)}function Oa(e){setTimeout(()=>{ka.push(e)},1)}function Ba(e){setTimeout(()=>{Va.push(e)},1)}async function Fa(e,t,n,s){if(!vn(Qa))return Promise.reject("invalid mapOrm");if(Ja&&!en(e))return console.log("userId",e),console.log("找不到使用者主鍵"),Promise.reject("找不到使用者主鍵");let i="n";if(Ja){if(!vn(Ha))return Promise.reject("invalid getUserById");let t=await Ha(e);if(!t)return console.log("userId",e),console.log("找不到使用者資訊"),Promise.reject("找不到使用者資訊");i=Ie(t,"isAdmin"),"y"!==i&&"n"!==i&&(i="n");let n=Ie(t,"isActive");if("y"!==n&&"n"!==n&&(n="n"),"y"!==n)return console.log("userId",e),console.log("oSelf",t),console.log("使用者被停權或無有效使用者資訊"),Promise.reject("使用者被停權或無有效使用者資訊")}if(await No(Ua,r=>r({woName:t,userId:e,isAdmin:i,mode:n,input:s})),fi(ka)>0){let r={woName:t,userId:e,isAdmin:i,mode:n,input:s},o=await Wa(ka,r);s=o.input}let r=await Qa(e,t,n,s);return Ra&&"n"===i&&"select"===n&&rn(r)&&(r=Ka(r,e=>!Gs(e,"isActive")||!("n"===e.isActive))),fi(Va)>0&&(r=await Wa(Va,{woName:t,userId:e,isAdmin:i,mode:n,input:s,output:r})),r}function $a(e,t,n,s,i={}){let r=function(e,t,n,s){if(!sn(e))throw console.log("ds",e),new Error("invalid ds");if(!vn(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!en(n))throw console.log("url",n),new Error("invalid url");if(!en(s))throw console.log("db",s),new Error("invalid db");let i={};return et(Fe(e),e=>{let r=new t({url:n,db:s,cl:e});i[e]=r}),i}(e,t,n,s),o=function(e,t={}){return vn(e)?(Qa=e,Ja=Ie(t,"useCheckUser"),_t(Ja)||(Ja=!0),Ha=Ie(t,"getUserById"),Ra=Ie(t,"useExcludeWhenNotAdmin"),_t(Ra)||(Ra=!0),{addFunCheck:Pa,addFunPreProcessing:Oa,addFunPostProcessing:Ba,procOrm:Fa}):Promise.reject("invalid mapOrm")}(va(e,r),i);return{...bo,woItems:r,closeAll:async()=>{await No(r,async e=>{e&&vn(e.close)&&await e.close()})},...o}}let _a={csIng:{eng:"Connecting...",cht:"連線中..."},csLogin:{eng:"Logged in",cht:"已登入"},csLogout:{eng:"Logged out",cht:"已登出"},csErrConn:{eng:"Unable to connect",cht:"無法連線"},csErrLogin:{eng:"Login denied",cht:"拒絕登入"},systemMessage:{eng:"System message",cht:"系統確認訊息"},ok:{eng:"OK",cht:"確認"},treeRootAll:{eng:"All",cht:"全部"},no:{eng:"No",cht:"取消"},yes:{eng:"Yes",cht:"確定"},empty:{eng:"Empty",cht:"無"},waitingData:{eng:"Waiting data...",cht:"等待數據中..."},id:{eng:"Id",cht:"主鍵"},save:{eng:"Save",cht:"儲存"},close:{eng:"Close",cht:"關閉"},delete:{eng:"Delete",cht:"刪除"},cancel:{eng:"Cancel",cht:"取消"},processing:{eng:"Processing...",cht:"處理中請稍後..."},anUnexpectedErrorOccurred:{eng:"An unexpected error occurred, please contact the administrator",cht:"發生非預期錯誤,請洽管理員"},username:{eng:"Username",cht:"使用者姓名"},email:{eng:"Email",cht:"電子郵件"},name:{eng:"Name",cht:"名稱"},description:{eng:"Description",cht:"說明"},menuTreeShow:{eng:"Show API list",cht:"顯示API清單"},menuTreeHide:{eng:"Hide API list",cht:"隱藏API清單"},noSelectApi:{eng:"No Select",cht:"尚未選擇API"},tokens:{eng:"Tokens",cht:"授權金鑰"},apiUrl:{eng:"API url",cht:"API網址"},version:{eng:"Version",cht:"版本"},levels:{eng:"Levels",cht:"所屬階層"},keywords:{eng:"Keywords",cht:"關鍵字"},state:{eng:"State",cht:"狀態"},timeCreate:{eng:"Create time",cht:"創建時間"},timeUpdate:{eng:"Update time",cht:"更新時間"},creator:{eng:"Creator",cht:"API創建者"},dataSource:{eng:"Source",cht:"資料提供者"},isActive:{eng:"Active",cht:"有效"},mdInputParams:{eng:"Input",cht:"輸入參數資訊或結構"},inputExample:{eng:"Input example",cht:"輸入範例"},mdOutputParams:{eng:"Output",cht:"回傳數據結構"},outputExample:{eng:"Output example",cht:"回傳數據範例"},docInput:{eng:"Input",cht:"輸入參數"},docOutputFields:{eng:"Output fields",cht:"回傳欄位"},docRequest:{eng:"Request",cht:"請求"},tabDocs:{eng:"Docs",cht:"文件"},tabEdit:{eng:"Edit",cht:"編輯"},tabTest:{eng:"Test",cht:"測試"},mmApi:{eng:"API",cht:"API"},mmStaInfor:{eng:"Statistics",cht:"統計資訊"},statisticsInformation:{eng:"Statistics Information",cht:"統計資訊"},statisticsInformationDescription:{eng:"Frequency of backend logged events (APIs, kpFunExt, connection verification).",cht:"後端各事件(API、kpFunExt、連線驗證)之發生頻率統計。"},eventStatsTable:{eng:"Event Statistics",cht:"事件統計表"},colEvent:{eng:"Event",cht:"事件"},colRecent1day:{eng:"Last 1 day",cht:"最近1日"},colRecent8hr:{eng:"Last 8 hr",cht:"最近8時"},colRecent4hr:{eng:"Last 4 hr",cht:"最近4時"},colRecent1hr:{eng:"Last 1 hr",cht:"最近1時"},timeRange:{eng:"Time range",cht:"時間範圍"},selectItem1hr:{eng:"1 hour",cht:"1小時"},selectItem4hr:{eng:"4 hours",cht:"4小時"},selectItem8hr:{eng:"8 hours",cht:"8小時"},selectItem1day:{eng:"1 day",cht:"1天"},noStaData:{eng:"No statistics data",cht:"尚無統計資料"},getDataError:{eng:"Failed to get data",cht:"取得資料失敗"},addApi:{eng:"New API",cht:"新增API"},confirmDeleteApi:{eng:"Are you sure you want to delete this API?",cht:"確定要刪除此API?"},saveSuccess:{eng:"Saved",cht:"已儲存"},deleteSuccess:{eng:"Deleted",cht:"已刪除"},searchApiPlaceholder:{eng:"Search API...",cht:"搜尋API..."},fieldMethod:{eng:"Method",cht:"方法"},fieldGroup:{eng:"Group",cht:"群組"},fieldOrder:{eng:"Order",cht:"順序"},fieldTestBaseUrl:{eng:"Test base URL",cht:"測試基底網址"},fieldAuthType:{eng:"Auth type",cht:"認證類型"},fieldAuthConfigJson:{eng:"Auth config (JSON)",cht:"認證設定(JSON)"},fieldDefaultHeadersJson:{eng:"Default headers (JSON)",cht:"預設標頭(JSON)"},fieldDefaultQueryJson:{eng:"Default query (JSON)",cht:"預設查詢參數(JSON)"},fieldDefaultBodyJson:{eng:"Default body (JSON)",cht:"預設請求內容(JSON)"},fieldContentType:{eng:"Content type",cht:"內容類型"},hintTestBaseUrl:{eng:"Fallback request URL, used only when API url is empty. e.g. https://api.example.com",cht:"送請求的後備網址:「API url」有填則優先,留空時才用此值。範例:https://api.example.com"},hintAuthType:{eng:"Auth auto-applied when sending. none = none; bearer / apikey / basic are built from the Auth config below.",cht:"送出時自動帶入的認證方式。none=不帶;bearer / apikey / basic 依下方「認證設定(JSON)」組出。"},hintAuthConfigJson:{eng:'JSON by auth type:\nbearer → {"token":"your-token"}\napikey → {"name":"X-API-Key","value":"your-key","in":"header"} (in: header or query)\nbasic → {"username":"user","password":"pass"}',cht:'依認證類型填 JSON:\nbearer → {"token":"你的token"}(留空則退用上方 tokens 欄第一個)\napikey → {"name":"X-API-Key","value":"你的key","in":"header"}(in 可為 header 或 query)\nbasic → {"username":"帳號","password":"密碼"}'},hintDefaultHeadersJson:{eng:'Default request headers, a JSON object. e.g. {"Accept":"application/json"}',cht:'預設請求標頭,JSON 物件。範例:{"Accept":"application/json"}'},hintDefaultQueryJson:{eng:'Default query params, a JSON object. e.g. {"page":"1","size":"20"}',cht:'預設查詢參數,JSON 物件。範例:{"page":"1","size":"20"}'},hintDefaultBodyJson:{eng:'Default request body (for POST/PUT); falls back to Input example if empty. e.g. {"name":"foo"}',cht:'預設請求內容(POST/PUT 用),留空則退用「輸入範例」。範例:{"name":"小明"}'},hintContentType:{eng:"Request content type, added as a Content-Type header. e.g. application/json",cht:"請求內容類型,會帶成 Content-Type 標頭。範例:application/json"},authNone:{eng:"None",cht:"無"},authBearer:{eng:"Bearer token",cht:"Bearer token"},authApikey:{eng:"API key",cht:"API key"},authBasic:{eng:"Basic",cht:"Basic"},secBasic:{eng:"Basic",cht:"基本資訊"},secDocs:{eng:"Documentation",cht:"文件說明"},secTest:{eng:"Test settings",cht:"測試設定"},reqSend:{eng:"Send",cht:"送出請求"},reqUrlPlaceholder:{eng:"Request URL",cht:"請求網址"},reqQuery:{eng:"Query params",cht:"查詢參數"},reqHeaders:{eng:"Headers",cht:"標頭"},reqBody:{eng:"Body",cht:"請求內容"},reqAddRow:{eng:"Add",cht:"新增一列"},colKey:{eng:"Key",cht:"鍵"},colValue:{eng:"Value",cht:"值"},colOn:{eng:"On",cht:"啟用"},resTitle:{eng:"Response",cht:"回應"},resTime:{eng:"Time",cht:"耗時"},resHeaders:{eng:"Response headers",cht:"回應標頭"},resBody:{eng:"Response body",cht:"回應內容"},resEmpty:{eng:"No response yet. Click Send to test.",cht:"尚無回應,點擊送出請求進行測試。"},valRequired:{eng:"This field is required",cht:"此欄位必填"},valInvalidJson:{eng:"Invalid JSON format",cht:"JSON格式錯誤"},errReqUrlInvalid:{eng:"The request URL is invalid (must start with http:// or https://)",cht:"請求網址無效(須以 http:// 或 https:// 開頭)"},errReqTargetNotAllowed:{eng:"The target address is not allowed",cht:"目標位址不被允許"},errProxyRequestFailed:{eng:"The request failed to send",cht:"請求發送失敗"},errApiRowInvalid:{eng:"Invalid API data",cht:"API 資料無效"},errApiIdInvalid:{eng:"Invalid API id",cht:"API id 無效"},errUserIdMissing:{eng:"Unable to get user id",cht:"無法取得使用者 id"},errUserEmailMissing:{eng:"Unable to get user email",cht:"無法取得使用者 email"},errUserNameMissing:{eng:"Unable to get user name",cht:"無法取得使用者名稱"},errUserRoleMissing:{eng:"Unable to get user role",cht:"無法取得使用者權限"},errUserNoPermission:{eng:"User does not have permission",cht:"使用者沒有權限"},errUserNotFound:{eng:"Unable to find user from token",cht:"無法依 token 找到使用者"},errPayloadInvalid:{eng:"Invalid request payload",cht:"請求內容無效"},errGroupInvalid:{eng:"Invalid group",cht:"群組無效"},errRowsInvalid:{eng:"Invalid rows",cht:"資料列無效"},errRowInvalid:{eng:"Invalid row data (each row must be an object with name and url)",cht:"列資料無效(每列須為物件且 name 與 url 必填)"},errTokenNoPermission:{eng:"Token does not have permission",cht:"token 沒有權限"},errKeyTableInvalid:{eng:"Invalid table",cht:"資料表無效"},errTimeLengthInvalid:{eng:"Invalid time length",cht:"時間長度無效"}},qa=(e={})=>{let t=Ie(e,"kpLangExt");sn(t)||(t={});let n=Ie(e,"webName");sn(n)||(n={});let s=Ie(e,"webDescription");sn(s)||(s={});let i={};i={...i,..._a},sn(t)&&(i={...i,...t}),sn(n)&&(i={...i,webName:{...n}}),sn(s)&&(i={...i,webDescription:{...s}});let r={};return et(["eng","cht"],e=>{let t={};et(i,(n,s)=>{t[s]=n[e]}),r[e]=t}),r},el=["host","content-length","connection","keep-alive","transfer-encoding","te","trailer","upgrade","proxy-connection"],tl=[301,302,303,307,308],nl=["content-encoding","content-language","content-location","content-type"];function sl(e){let t=[];if(rn(e)){for(let n of e)rn(n)&&en(n[0])&&t.push([n[0],String(n[1])]);return t}if(nn(e))for(let n of Object.keys(e)){let s=rn(e[n])?e[n]:[e[n]];for(let e of s)t.push([n,String(e)])}return t}function il(e={}){let{woItems:t,procOrm:n,ds:s}=e,i=new function(){let e=new Map,t=new Map;return async(n,s)=>{let i=(e.get(n)||Promise.resolve()).then(async()=>await s(),async()=>await s());e.set(n,i.catch(()=>{})),t.set(n,(t.get(n)||0)+1);try{return await i}finally{let s=t.get(n)-1;s<=0?(t.delete(n),e.delete(n)):t.set(n,s)}}};return{getApisList:async e=>await n(e,"apis","select",{}),saveApi:async(e,t)=>{if(!sn(t))return Promise.reject("errApiRowInvalid");let r=en(t.id)?`saveApi:${t.id}`:`saveApi:new:${String(t.name||"")}`;return i(r,async()=>{let i=s.apis.funNew(t);return en(t.id)&&(i.id=t.id,en(t.timeCreate)&&(i.timeCreate=t.timeCreate)),await n(e,"apis","save",[i])})},deleteApi:async(e,t)=>en(t)?i(`deleteApi:${t}`,async()=>await n(e,"apis","del",{id:t})):Promise.reject("errApiIdInvalid")}}function rl(n,s=1){return function(e,t=1,n={}){let s=1,i=Ie(n,"path"),r=Ie(n,"fs");if(!cs(e,{fs:r}))throw new Error(`fd[${e}] is not a folder`);return null!==t&&xn(t)&&(t=bn(t))<1&&(t=1),function e(n){let o=[];return cs(n,{fs:r})?(et(r.readdirSync(n),function(a){let l=i.resolve(n,a),c=null;try{c=r.statSync(l)}catch(e){}c&&c.isDirectory()?(o.push({isFolder:!0,level:s,path:l,name:i.basename(l)}),s+=1,(s<=t||null===t)&&(o=o.concat(e(l))),s-=1):o.push({isFolder:!1,level:s,path:l,name:i.basename(l)})}),o):o}(e)}(n,s,{path:e,fs:t})}let ol=new Map,al=new Map;function ll(e,n,s){let i=rl(e);i=i.filter(e=>!Ie(e,"isFolder",!1)),i=function(e,t,n){let s=t.format(n);return Ka(e,e=>{let t=Ie(e,"name","").replace(/\.log$/,"");return!/^\d{4}-\d{2}-\d{2}/.test(t)||t>=s.slice(0,t.length)})}(i,n,s);let r=[];for(let e of i)try{let n=t.statSync(e.path);if(!n.isFile())continue;r.push({path:e.path,name:e.name,size:n.size,mtimeMs:n.mtimeMs})}catch(e){}return r}function cl(e){let t=new Map;return n=>{let s=Math.floor(n/6e4),i=t.get(s);return void 0===i&&(i=ys(6e4*s).format(e),t.set(s,i)),i}}async function Ml(e,n,s,i=null){vn(i)||(i=cl(s));let r={minTimeMs:null,ev:{}};return await function(e,n){return new Promise((s,i)=>{let r=null,o=t.createReadStream(e,{encoding:"utf8"}),a=l.createInterface({input:o,crlfDelay:1/0});a.on("line",n);let c=e=>{r=e,a.close()};o.on("error",c),a.on("error",c),o.on("close",()=>{r?i(r):s()})})}(e,e=>{let t=null;try{t=JSON.parse(e)}catch(e){return}if(null===t||"object"!=typeof t)return;let s=t.event;if(!en(s))return;let o=function(e){return"number"==typeof e?e:en(e)?ys(e).valueOf():NaN}(t.time);if(Number.isNaN(o))return;if((null===r.minTimeMs||o<r.minTimeMs)&&(r.minTimeMs=o),!(o>n))return;let a=i(o),l=r.ev[a];void 0===l&&(l={count:0,kp:{}},r.ev[a]=l),l.count+=1,l.kp[s]=(l.kp[s]||0)+1}),r}async function wl(e,t,n){let s=cl(n),i=[];for(let r of e)try{let e=await Ml(r.path,t,n,s);i.push({name:r.name,ok:!0,agg:e})}catch(e){i.push({name:r.name,ok:!1,err:String(Ie(e,"message",e))})}return i}function ul(e,t){for(let n in t.ev){let s=t.ev[n],i=e[n];void 0===i&&(i={count:0,kp:{}},e[n]=i),i.count+=s.count;for(let e in s.kp)i.kp[e]=(i.kp[e]||0)+s.kp[e]}return e}async function dl(t,n={}){let s=!1!==Ie(n,"useCache"),i=Ie(n,"scanFiles");vn(i)||(i=wl);let r=Ie(n,"srLog",null),o=ll(t.fdLog,t.tStart,t.fmt),a=function(e){let t=ol.get(e);return t||(t=new Map,ol.set(e,t)),t}((l=t.fdLog,c=t.fmt,`${e.resolve(l)}|${c}`));var l,c;let M=[],w={};for(let e of o){let n=s?a.get(e.name):void 0;void 0!==n&&n.size===e.size&&n.mtimeMs===e.mtimeMs&&(null===n.minTimeMs||n.minTimeMs>n.scanTStartMs&&n.minTimeMs>t.tStartMs)?w[e.name]=n.agg:M.push(e)}if(s){let e=new Set(o.map(e=>e.name));for(let t of a.keys())e.has(t)||a.delete(t)}let u=[];if(M.length>0){let e=await i(M.map(e=>({path:e.path,name:e.name})),t.tStartMs,t.fmt),n={};for(let t of e)n[t.name]=t;for(let e of M){let i=n[e.name];if(i&&i.ok)w[e.name]=i.agg,s&&a.set(e.name,{size:e.size,mtimeMs:e.mtimeMs,minTimeMs:i.agg.minTimeMs,scanTStartMs:t.tStartMs,agg:i.agg});else{let t=Ie(i,"err","no result");u.push({name:e.name,err:t}),s&&a.delete(e.name),r&&vn(r.warn)&&r.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:t})}}}let d={};for(let e of o){let t=w[e.name];t&&ul(d,t)}let L=function(e,t){let n={};for(let e of t)n[e]={count:0};for(let t in e){let s=e[t];n[t]={count:s.count,...s.kp}}return Object.keys(n).sort().map(e=>({time:e,data:n[e]}))}(d,t.kpTime);return{rs:L,stat:{nFiles:o.length,nScanned:M.length,nCached:o.length-M.length,errors:u}}}function Ll(t=7,n="hr",s={}){let i;try{i=function(e=7,t="hr",n={}){let s=Ie(n,"fdLog");en(s)||(s="./logs");let i=function(e){return"day"===e?"day":"hr"}(t),r="day"===i?"YYYY-MM-DD":"YYYY-MM-DDTHH",o="day"===i?"day":"hour",a=Ie(n,"timeNow"),l="number"==typeof a?ys(a):ys();if(!Number.isInteger(e)||e<0||e>3650)throw new Error("errTimeLengthInvalid");let c=l.subtract(e,"day"),M=c.valueOf(),w=c.startOf(o),u=l.startOf(o),d=[];for(;!w.isAfter(u);)d.push(w.format(r)),w=w.add(1,o);return{fdLog:s,timeInterval:i,fmt:r,unit:o,tStart:c,tStartMs:M,kpTime:d,timeNow:l.valueOf()}}(t,n,s)}catch(e){return Promise.reject(Ie(e,"message","errTimeLengthInvalid"))}let r=JSON.stringify([e.resolve(i.fdLog),t,i.timeInterval,Ie(s,"timeNow",null)]);if(al.has(r))return al.get(r);let o=dl(i,s).finally(()=>{al.delete(r)});return al.set(r,o),o}let yl=a.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(gl).href:"undefined"==typeof document?location.href:M&&"SCRIPT"===M.tagName.toUpperCase()&&M.src||new URL("w-web-api.umd.js",document.baseURI).href),Il=e.dirname(yl),Dl=e.resolve(Il,"staLogsCore.shellWorker.mjs");async function pl(e,t,n){return 0===e.length?[]:function(e,t=Dl){let n=Vn(),s=new o.Worker(t),i=!1,r=(e,t)=>{i||(i=!0,e(t));try{s.terminate()}catch(e){}};return s.on("message",e=>{"done"===e.mode?r(n.resolve,e.payload):"error"===e.mode&&r(n.reject,e.payload)}),s.on("error",e=>{r(n.reject,e)}),s.on("exit",e=>{r(n.reject,new Error(`staLogs worker exited without result, code=${e}`))}),s.postMessage(e),n}({files:e,tStartMs:t,fmt:n})}async function ml(e=7,t="hr",n={}){let s=await function(e=7,t="hr",n={}){return Ll(e,t,{...n,scanFiles:pl})}(e,t,n);return s.rs}let gl=a.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(gl).href:"undefined"==typeof document?location.href:M&&"SCRIPT"===M.tagName.toUpperCase()&&M.src||new URL("w-web-api.umd.js",document.baseURI).href),fl=e.dirname(gl);let Cl=(n={})=>{let s=Ie(n,"logFd","");en(s)||(s="./logs");let i=Ie(n,"logInterval","");en(i)||(i="hr");let r=Ie(n,"logNumKeep",null),o={fdLog:s,interval:i};if(null!=r&&""!==r){if(!xn(r))throw new Error(`invalid logNumKeep[${r}], must be positive integer`);o.numKeep=bn(r)}let a=function(n={}){let s=Cs(),i=Ie(n,"timeZone",null),r=Ie(n,"fdLog");en(r)||(r="./_logs");let o=Ie(n,"interval");"day"!==o&&"hr"!==o&&(o="day");let a=Ie(n,"numKeep");xn(a)||(a="day"===o?365:8760),a=bn(a);let l=c.transport({targets:[{level:"info",target:e.resolve(fl,"./formatter.mjs"),options:{interval:o,fdLog:r,timeZone:i}}]}),M=c(l),w=()=>{try{if(!Ms(r))return;let n="hr"===o?/^\d{4}-\d{2}-\d{2}T\d{2}\.log$/:/^\d{4}-\d{2}-\d{2}\.log$/,i=t.readdirSync(r).filter(e=>n.test(e));i.sort();let l=i.length-a;if(l<=0)return;let c=i.slice(0,l);for(let n of c){let i=e.join(r,n);try{t.unlinkSync(i),s.emit("delete",{fp:i,fn:n})}catch(e){}}}catch(e){console.error("WSyslog cleanLogs error:",e)}};w();let u=setInterval(w,36e5);u.unref();let d=null,L=e=>{let t=M[e].bind(M);return(...n)=>{try{s.emit(e,{args:n})}catch(e){}t(...n)}};return s.fatal=L("fatal"),s.error=L("error"),s.warn=L("warn"),s.info=L("info"),s.debug=L("debug"),s.trace=L("trace"),s.cleanLogs=w,s.clear=(e={})=>{if(null!==d)return d;let t=Ie(e,"timeLimit");xn(t)||(t=6e4),d=Vn();let n=!1,s=()=>{n||(n=!0,clearInterval(u),d.resolve())},i=setTimeout(()=>{try{l.worker.terminate()}catch(e){}s()},t);try{M.flush(e=>{if(e||l.closed)return clearTimeout(i),void s();l.once("close",()=>{clearTimeout(i),s()}),l.end()})}catch(e){clearTimeout(i),s()}return d},s}(o);return a};const hl=[];for(let e=0;e<256;++e)hl.push((e+256).toString(16).slice(1));const Nl=new Uint8Array(16);function bl(){return crypto.getRandomValues(Nl)}const xl={};function Tl(e,t,n){let s;if(e)s=Sl(e.random??e.rng?.()??bl(),e.msecs,e.seq,t,n);else{const e=Date.now(),i=bl();!function(e,t,n){e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=Zl(n),e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++)}(xl,e,i),s=Sl(i,xl.msecs,xl.seq,t,n)}return t??function(e,t=0){return(hl[e[t+0]]+hl[e[t+1]]+hl[e[t+2]]+hl[e[t+3]]+"-"+hl[e[t+4]]+hl[e[t+5]]+"-"+hl[e[t+6]]+hl[e[t+7]]+"-"+hl[e[t+8]]+hl[e[t+9]]+"-"+hl[e[t+10]]+hl[e[t+11]]+hl[e[t+12]]+hl[e[t+13]]+hl[e[t+14]]+hl[e[t+15]]).toLowerCase()}(s)}function Sl(e,t,n,s,i=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(s){if(i<0||i+16>s.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`)}else s=new Uint8Array(16),i=0;return t??=Date.now(),n??=Zl(e),s[i++]=t/1099511627776&255,s[i++]=t/4294967296&255,s[i++]=t/16777216&255,s[i++]=t/65536&255,s[i++]=t/256&255,s[i++]=255&t,s[i++]=112|n>>>28&15,s[i++]=n>>>20&255,s[i++]=128|n>>>14&63,s[i++]=n>>>6&255,s[i++]=n<<2&255|3&e[10],s[i++]=e[11],s[i++]=e[12],s[i++]=e[13],s[i++]=e[14],s[i++]=e[15],s}function Zl(e){return(127&e[6])<<24|e[7]<<16|e[8]<<8|e[9]}function Al(e){return e.indexOf("\\\\")>=0?"```"+e+"```":e}let El={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},url:{name:"網址",type:"STRING"},method:{name:"方法",type:"STRING"},version:{name:"版本",type:"STRING"},group:{name:"群組",type:"STRING"},levels:{name:"階層群組",type:"STRING"},keywords:{name:"關鍵字",type:"STRING"},state:{name:"狀態",type:"STRING"},creator:{name:"創建者",type:"STRING"},dataSource:{name:"資料提供者",type:"STRING"},tokens:{name:"金鑰",type:"TEXT"},mdInputParams:{name:"輸入參數md說明",type:"STRING"},inputExample:{name:"輸入範例",type:"STRING"},mdOutputParams:{name:"輸出資料md說明",type:"STRING"},outputExample:{name:"輸出範例",type:"STRING"},testBaseUrl:{name:"測試基底網址",type:"STRING"},authType:{name:"認證類型",type:"STRING"},authConfigJson:{name:"認證設定JSON",type:"TEXT"},defaultHeadersJson:{name:"預設標頭JSON",type:"TEXT"},defaultQueryJson:{name:"預設查詢參數JSON",type:"TEXT"},defaultBodyJson:{name:"預設請求內容JSON",type:"TEXT"},contentType:{name:"內容類型",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},Xl=(e={})=>{let t=as(e,Fe(El));return t.id=`${Tl()}`,t.timeCreate=xo(),t.timeUpdate=t.timeCreate,t.isActive="y",t.authType=en(t.authType)?t.authType:"none",t.contentType=en(t.contentType)?t.contentType:"application/json",t},Yl={keyTable:"apis",tableNameCht:"APIs",tableNameEng:"APIs",settings:El,funNew:Xl,funTest:()=>{let e=$t([{id:"id-for-apis-sys-1",name:"取得API清單",description:"API管理中心取得API清單資訊",url:"http://localhost:11005/getAPIsList",method:"get",version:"v1",group:"全部",levels:"API",keywords:"API;center",state:"ok",creator:"apis-system",dataSource:"apis-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-1",name:"取得寵物清單",description:"寵物管理中心取得寵物清單資訊",url:"http://localhost:11005/getPetsList",method:"get",version:"v1",group:"寵物",levels:"寵物",keywords:"pets",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-dogs-1",name:"取得狗狗清單",description:"取得狗狗清單資訊",url:"http://localhost:11005/getDogsList",method:"get",version:"v1",group:"寵物",levels:"寵物.狗狗",keywords:"pets;dogs",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-dogs-2",name:"新增狗狗資訊",description:"新增狗狗資訊",url:"http://localhost:11005/addDog",method:"post",version:"v1",group:"寵物",levels:"寵物.狗狗",keywords:"pets;dogs",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### POST參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-dogs-3",name:"變更狗狗資訊",description:"變更狗狗資訊",url:"http://localhost:11005/updateDog",method:"put",version:"v1",group:"寵物",levels:"寵物.狗狗",keywords:"pets;dogs",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-dogs-4",name:"刪除狗狗資訊",description:"刪除狗狗資訊",url:"http://localhost:11005/deleteDog",method:"del",version:"v1",group:"寵物",levels:"寵物.狗狗",keywords:"pets;dogs",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-cats-1",name:"取得貓咪清單",description:"取得貓咪清單資訊",url:"http://localhost:11005/getCatsList",method:"get",version:"v1",group:"寵物",levels:"寵物.貓咪",keywords:"pets;cats",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-cats-2",name:"新增貓咪資訊",description:"新增貓咪資訊",url:"http://localhost:11005/addCat",method:"post",version:"v1",group:"寵物",levels:"寵物.貓咪",keywords:"pets;cats",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### POST參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-cats-3",name:"變更貓咪資訊",description:"變更貓咪資訊",url:"http://localhost:11005/updateCat",method:"put",version:"v1",group:"寵物",levels:"寵物.貓咪",keywords:"pets;cats",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-pets-cats-4",name:"刪除貓咪資訊",description:"刪除貓咪資訊",url:"http://localhost:11005/deleteCat",method:"del",version:"v1",group:"寵物",levels:"寵物.貓咪",keywords:"pets;cats",state:"ok",creator:"pets-system",dataSource:"pets-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-vehicles-cars-1",name:"取得汽車清單",description:"取得汽車清單資訊",url:"http://localhost:11005/getcarsList",method:"get",version:"v1",group:"寵物",levels:"交通工具.汽車",keywords:"vehicles;cars",state:"ok",creator:"vehicles-system",dataSource:"vehicles-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-vehicles-cars-2",name:"新增汽車資訊",description:"新增汽車資訊",url:"http://localhost:11005/addDog",method:"post",version:"v1",group:"寵物",levels:"交通工具.汽車",keywords:"vehicles;cars",state:"ok",creator:"vehicles-system",dataSource:"vehicles-data",mdInputParams:"### POST參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-vehicles-cars-3",name:"變更汽車資訊",description:"變更汽車資訊",url:"http://localhost:11005/updateDog",method:"put",version:"v1",group:"寵物",levels:"交通工具.汽車",keywords:"vehicles;cars",state:"ok",creator:"vehicles-system",dataSource:"vehicles-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '},{id:"id-for-apis-vehicles-cars-4",name:"刪除汽車資訊",description:"刪除汽車資訊",url:"http://localhost:11005/deleteDog",method:"del",version:"v1",group:"寵物",levels:"交通工具.汽車",keywords:"vehicles;cars",state:"ok",creator:"vehicles-system",dataSource:"vehicles-data",mdInputParams:"### GET網址參數\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| token | STRING | key-for-token |\n| id | STRING | id-for-test |\n| paramA | INTEGER | 123 |\n| paramB | DOUBLE | 123.456 |\n ",inputExample:"http://localhost:11005/getAPIsList?token={token}&id={id}¶mA=123¶mB=123.456",mdOutputParams:`### 回傳數據欄位: Array of objects\n| 參數 | 型別 | 範例 |\n| -- | -- | -- |\n| id | STRING | id-for-test |\n| weight | DOUBLE | 12.3 |\n| color | STRING | #f26 |\n| paramA | INTEGER | 321 |\n| paramB | DOUBLE | 654.321 |\n| paramC | STRING | ${Al("C:\\\\pj\\abc\\filename.pdf")} |\n `,outputExample:'\n[\n {\n "id": "id-for-test-1",\n "weight": 12.3,\n "color": "#f26",\n "paramA": 101,\n "paramB": 0.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename1.pdf"\n },\n {\n "id": "id-for-test-2",\n "weight": 22.3,\n "color": "#2f6",\n "paramA": 102,\n "paramB": 1.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename2.pdf"\n },\n {\n "id": "id-for-test-3",\n "weight": 32.3,\n "color": "#26f",\n "paramA": 103,\n "paramB": 2.01,\n "paramC": "C:\\\\\\\\pj\\\\abc\\\\filename3.pdf"\n }\n]\n '}],(e,t)=>{let n=Xl({...e,order:t});return en(e.timeUpdate)&&(n.timeUpdate=e.timeUpdate),n=function(e,t){if(!nn(e))return{};if(!os(t))return{};let n={};return et(t,function(t){Gs(e,t)&&(n[t]=Ie(e,t))}),n}(n,Fe(El)),n});return console.log("已產生: {keyTable} 測試資料",e),e}};function jl(e,t={}){let n=Ie(t,"useCreateStorage");_t(n)||(n=!1);let{keyTable:s,tableNameCht:i,tableNameEng:r,settings:o,parser:a,funNew:l,funTest:c,ext:M}=e;if(!en(s))throw new Error(`invalid keyTable[${s}]`);if(en(i)||(i=s),en(r)||(r=s),!sn(o))throw new Error("invalid settings");sn(M)||(M=null),sn(a)||(a=null),vn(l)||(l=null);let w=null;vn(c)&&(w=async e=>{if(!sn(e))throw new Error("invalid wo");if(!Gs(e,s))throw console.log(e),new Error(`keyTable[${s}] is not in wo`);let t=[];try{t=c(),Gn(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${s}] funTest catch`,e),new Error(e)}if(0!==fi(t))return n&&await e[s].createStorage(),await e[s].save(t),t});let u={},d={};return et(Fe(o),e=>{let t=Ie(o,`${e}.name`,"");en(t)&&(u[e]=t);let n=Ie(o,`${e}.type`,"");en(n)&&(d[e]=n)}),{...e,keyTable:s,tableNameCht:i,tableNameEng:r,settings:o,keys:Fe(o),kpType:d,kpHead:u,parser:a,funNew:l,funTest:c,funTestAndSave:w,ext:M}}let zl={apis:Yl},vl={};for(let e in zl)vl[e]=jl(zl[e],{useCreateStorage:!1});return function(n,s,i,r,o,a,l={}){let c=null;if(!vn(n))throw console.log("invalid WOrm",n),new Error("invalid WOrm");if(!en(s))throw console.log("invalid url",s),new Error("invalid url");if(!en(i))throw console.log("invalid db",i),new Error("invalid db");if(!vn(r))throw console.log("invalid getUserByToken",r),new Error("invalid getUserByToken");if(!vn(o))throw console.log("invalid verifyClientUser",o),new Error("invalid verifyClientUser");if(!vn(a))throw console.log("invalid verifyAppUser",a),new Error("invalid verifyAppUser");let M=Ie(l,"serverPort");xn(M)||(M=11005),M=bn(M);let w=Ie(l,"useCheckUser",!1),u=Ie(l,"getUserById",null),d=Ie(l,"useExcludeWhenNotAdmin",!1),L=Ie(l,"webName",{}),y=Ie(l,"webDescription",{}),I=Ie(l,"webLogo",""),D=Ie(l,"subfolder","");var p,m;en(D)&&("/"===Un(D,1)&&(m=1,D=en(p=D)&&Kn(m)?0===(m=bn(m))?p:Wn(p,p.length-m):""),"/"!==Wn(D,1)&&(D=`/${D}`));let g=Ie(l,"urlRedirect",""),f=Ie(l,"showLanguage","y"),C=Ie(l,"language","eng"),h=Ie(l,"logFd","./logs"),N=Ie(l,"isAllowTarget",null),b=Ie(l,"kpLangExt",{}),x=qa({kpLangExt:b,webName:L,webDescription:y}),T={useCheckUser:w,getUserById:u,useExcludeWhenNotAdmin:d},S={};try{S=$a(vl,n,s,i,T)}catch(e){throw console.log("WServOrm init failed",e),e}let{woItems:Z,procOrm:A}=S,E=Cl(l),X=e=>rn(e)?e.map(X):en(e)?Wn(e,4)+"***":e,Y=e=>{if(!nn(e))return e;let t={...e};for(let e of Object.keys(t))"token"===e.toLowerCase()&&(t[e]=X(t[e]));return t},j=(e,t)=>{let n="kpfun-"+e;return async(...e)=>{try{let s=await t(...e);return E.info({event:n}),s}catch(e){return E.error({event:n,err:e}),Promise.reject(e)}}},z=(e,t)=>async(...n)=>{try{return await t(...n)}catch(t){throw E.error({event:e,err:t}),t}},{proxyRequest:v}=function(e={}){let t=Ie(e,"srLog",null),n=Ie(e,"isAllowTarget",null),s=e=>"function"!=typeof n||!1!==n(e);return{proxyRequest:async(e={})=>{let n=Ie(e,"method","GET");en(n)||(n="GET"),n=n.toUpperCase();let i=Ie(e,"url","");if(!en(i))return Promise.reject("errReqUrlInvalid");if(!i.startsWith("http://")&&!i.startsWith("https://"))return Promise.reject("errReqUrlInvalid");if(!s(i))return Promise.reject("errReqTargetNotAllowed");let r=new Headers;try{for(let[t,n]of sl(Ie(e,"headers",{})))el.includes(t.toLowerCase())||r.append(t,n)}catch(e){return t&&t.error({event:"proxyRequest-headers",msg:Ie(e,"message",String(e))}),Promise.reject("errProxyRequestFailed")}let o,a=r.has("content-type");try{o=new URL(i)}catch(e){return Promise.reject("errReqUrlInvalid")}for(let[t,n]of sl(Ie(e,"query",null)))o.searchParams.append(t,n);let l,c=Ie(e,"body",void 0);"GET"!==n&&"HEAD"!==n&&(en(c)?l=(new TextEncoder).encode(c):(nn(c)||rn(c))&&(l=(new TextEncoder).encode(JSON.stringify(c)),a||r.set("Content-Type","application/json")));let M,w=Ie(e,"timeout",3e4);("number"!=typeof w||w<=0)&&(w=3e4);let u=Date.now();try{let e,t=AbortSignal.timeout(w),i=o,a=n,c=l,d=0;for(;e=await fetch(i,{method:a,headers:r,body:c,signal:t,redirect:"manual"}),tl.includes(e.status);){let t,n=e.headers.get("location");if(null===n)break;if(e.body&&await e.body.cancel(),d+=1,d>20)throw Object.assign(new Error(`too many redirects (> 20), last: ${i.href}`),{errKey:"errProxyRequestFailed"});try{t=new URL(n,i)}catch(e){throw Object.assign(new Error(`invalid redirect location: ${n}`),{errKey:"errProxyRequestFailed"})}if("http:"!==t.protocol&&"https:"!==t.protocol)throw Object.assign(new Error(`unsupported redirect protocol: ${t.href}`),{errKey:"errProxyRequestFailed"});if(!s(t.href))throw Object.assign(new Error(`redirect target not allowed: ${t.href}`),{errKey:"errReqTargetNotAllowed"});if(303===e.status&&"GET"!==a&&"HEAD"!==a||(301===e.status||302===e.status)&&"POST"===a){a="GET",c=void 0;for(let e of nl)r.delete(e)}t.origin!==i.origin&&r.delete("authorization"),i=t}let L=await e.text(),y=L;if(en(L))try{y=JSON.parse(L)}catch(e){y=L}let I={};e.headers.forEach((e,t)=>{I[t]=e});let D=e.headers.getSetCookie();D.length>0&&(I["set-cookie"]=D);let p=Date.now()-u;M={status:e.status,statusText:e.statusText,headers:I,data:y,durationMs:p}}catch(e){let n=Ie(e,"errKey","");return en(n)?(t&&t.error({event:"proxyRequest-redirect",err:n,msg:Ie(e,"message","")}),Promise.reject(n)):(t&&t.error({event:"proxyRequest-fetch",msg:Ie(e,"message",String(e)),cause:Ie(e,"cause.message","")}),Promise.reject("errProxyRequestFailed"))}return M}}}({srLog:E,isAllowTarget:N}),{getApisList:G,saveApi:K,deleteApi:W}=il({woItems:Z,procOrm:A,ds:vl}),U=async e=>{if(!en(Ie(e,"id","")))return console.log("user",e),console.log("can not get the userId"),Promise.reject("errUserIdMissing");if(!en(Ie(e,"email","")))return console.log("user",e),console.log("can not get the email of user"),Promise.reject("errUserEmailMissing");if(!en(Ie(e,"name","")))return console.log("user",e),console.log("can not get userName"),Promise.reject("errUserNameMissing");let t=Ie(e,"isAdmin","");return"y"===t||"n"===t||(console.log("user",e),console.log("user.isAdmin is not y or n",e.isAdmin),console.log("can not get the role of user"),Promise.reject("errUserRoleMissing"))},k=async e=>{let t=await r(e);return await U(t),!0},V=async(e,t="")=>{let n=await(async e=>{let t=r(e);return Gn(t)&&(t=await t),await U(t),t})(e),s=o(n,t);return Gn(s)&&(s=await s),s?(E.info({event:"verifyClientUser",from:t,userId:Ie(n,"id","")}),n):(console.log("user",n),console.log("user does not have permission"),Promise.reject("errUserNoPermission"))},Q={apis:["name","url"]},H=async(e,t,n)=>{let s=Ie(t,"group","");if(!en(s))return console.log("inp",t),console.log("group",s),console.log("invalid group"),Promise.reject("errGroupInvalid");let i=Ie(t,"rows",[]);if(!rn(i)||0===i.length)return console.log("inp",t),console.log("keyTable",n),Promise.reject("errRowsInvalid");let r=(e,t)=>(E.error({event:"syncAndReplaceTabs",err:"errRowInvalid",keyTable:n,group:s,index:e,field:t}),console.log(`[API]syncAndReplaceTabs/check rows[${e}]: invalid row (field: ${t})`),Promise.reject("errRowInvalid"));for(let e=0;e<i.length;e++)if(!sn(i[e]))return r(e,"(row)");i=$t(i,(e,t)=>(e.group=s,e)),"apis"===n&&et(i,(e,t)=>{et(e,(e,n)=>{en(e)&&"base64:"===Wn(e,7)&&(e=ts(e=kn(e,7)),i[t][n]=e)})});let o=Ie(Q,n,[]);for(let e=0;e<i.length;e++){let t=o.find(t=>!en(i[e][t]));if(en(t))return r(e,t)}return i=function(e,t,n=""){return os(e)&&os(t)?$t(e,e=>as(e,t,n)):[]}(i,vl[n].keys),await Z[n].delAll({group:s}),await A(e,n,"insert",i)},J="dist",R="./node_modules/w-web-api/dist";Ms(R)&&(J=R);let P="index.html";try{let n=e.resolve(J,"index.tmp");if(us(n)||(n=e.resolve(J,P)),!us(n))throw console.log("fpEntryIn",n),new Error("invalid fpEntryIn");let s=e.resolve(J,P),i=t.readFileSync(n,"utf8");i=ds(i,"/mapi/","{sfd}/"),i=ds(i,"{sfd}",D),i=ds(i,"{urlRedirect}",g),i=ds(i,"{language}",C),t.writeFileSync(s,i,"utf8")}catch(e){console.log(e),console.log(`can not generate ${P}`)}let O=[{method:"GET",path:"/api/getUserByToken",handler:async function(e,t){let n=await Qn(z("api/getUserByToken",async function(){let t=Ie(e,"query.token","");if(!en(t))return console.log("req.query",Y(Ie(e,"query"))),console.log("token",X(t)),console.log("[API]getUserByToken/check token: invalid token"),Promise.reject("errTokenNoPermission");let n=await V(t,"getUserByToken");return sn(n)?(E.info({event:"api/getUserByToken",userId:Ie(n,"id","")}),n):(console.log("token",X(t)),console.log("[API]getUserByToken/check user: invalid user"),Promise.reject("errTokenNoPermission"))}))();return zn(n.msg)&&(n.msg=n.msg.message),n}},{method:"POST",path:"/syncAndReplaceTabs",handler:async function(e,t){let n=await Qn(z("api/syncAndReplaceTabs",async function(){let t=Ie(e,"query.token","");if(!en(t))return console.log("req.query",Y(Ie(e,"query"))),console.log("token",X(t)),console.log("[API]syncAndReplaceTabs/check token: invalid token"),Promise.reject("errTokenNoPermission");let n=Ie(e,"query.keyTable","");if(!en(n))return console.log("req.query",Y(Ie(e,"query"))),console.log("keyTable",n),console.log("[API]syncAndReplaceTabs/check keyTable: invalid keyTable"),Promise.reject("errKeyTableInvalid");if(!["apis"].includes(n))return console.log("[API]syncAndReplaceTabs/check keyTable: unexpected keyTable",n),Promise.reject("errKeyTableInvalid");let s=await(async(e,t="")=>{let n=null;if(en(e)&&(n=r(e),Gn(n)&&(n=await n)),!sn(n))return console.log("token",X(e)),console.log("can not find the user from token"),Promise.reject("errUserNotFound");let s=a(n,t);return Gn(s)&&(s=await s),s?(E.info({event:"verifyAppUser",from:t,userId:Ie(n,"id","")}),n):(console.log("user",n),console.log("user does not have permission"),Promise.reject("errUserNoPermission"))})(t,"syncAndReplaceTabs");if(!sn(s))return console.log("token",X(t)),console.log("[API]syncAndReplaceTabs/check user: invalid user"),Promise.reject("errTokenNoPermission");let i=Ie(s,"id","");if(!en(i))return console.log("token",X(t)),console.log("user",s),console.log("[API]syncAndReplaceTabs/check userId: invalid userId"),Promise.reject("errTokenNoPermission");let o=await(async e=>{let t=Ie(e,"payload");if(en(t)&&(t=tn(t)),!sn(t))return console.log("payload",t),console.log("invalid payload in req"),Promise.reject("errPayloadInvalid");let n=Ie(t,"group","");if(!en(n))return console.log("payload",t),console.log("invalid group in payload"),Promise.reject("errGroupInvalid");let s=Ie(t,"rows",[]);return rn(s)&&0!==s.length?{group:n,rows:s}:(console.log("payload",t),console.log("invalid rows in payload"),Promise.reject("errRowsInvalid"))})(e),l=await H(i,o,n);return E.info({event:"api/syncAndReplaceTabs",userId:i,keyTable:n}),l}))();return zn(n.msg)&&(n.msg=n.msg.message),n}}],B=Fe(vl);return c=new ho({port:M,pathStaticFiles:J,apiName:"api",apis:O,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:n,headers:s,req:i})=>{let r,o=kn(t,7);if(!en(o))return console.log("apiType",e),console.log("authorization",X(t)),console.log("invalid token"),E.error({event:"verifyConn",err:"errTokenNoPermission",apiType:e}),!1;try{r=await k(o)}catch(t){throw E.error({event:"verifyConn",err:t,apiType:e}),t}return E.info({event:"verifyConn",apiType:e}),r},getUserIdByToken:async e=>{if(!en(e))return"";return Ie(await r(e),"id","")},useDbOrm:!0,kpOrm:Z,operOrm:A,tableNamesExec:B,methodsExec:["select","insert","save","del"],tableNamesSync:B,kpFunExt:{getWebInfor:j("getWebInfor",e=>({webLogo:I,showLanguage:f,language:C,kpLang:x})),proxyRequest:j("proxyRequest",(e,t)=>v(t)),getApisList:j("getApisList",e=>G(e)),saveApi:j("saveApi",(e,t)=>K(e,t)),deleteApi:j("deleteApi",(e,t)=>W(e,t)),getStaEvent:j("getStaEvent",(e,t=7,n="hr")=>ml(t,n,{fdLog:h,srLog:E}))},fpTableTags:"tableTags-web-api.json"}),c}});
|
|
7
7
|
//# sourceMappingURL=w-web-api.umd.js.map
|