w-web-api 1.0.37 → 1.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/db/wapis/apis/data.mdb +0 -0
- package/db/wapis/apis/lock.mdb +0 -0
- package/dist/index.tmp +1 -1
- package/dist/js/{app.659b941b.js → app-legacy.f7e293ef.js} +2 -2
- package/dist/js/app-legacy.f7e293ef.js.map +1 -0
- package/dist/js/{app-legacy.659b941b.js → app.f7e293ef.js} +2 -2
- package/dist/js/app.f7e293ef.js.map +1 -0
- package/dist/js/{chunk-vendors.787c32b5.js → chunk-vendors-legacy.767ef893.js} +2 -2
- package/dist/js/chunk-vendors-legacy.767ef893.js.map +1 -0
- package/dist/js/{chunk-vendors-legacy.787c32b5.js → chunk-vendors.767ef893.js} +2 -2
- package/dist/js/chunk-vendors.767ef893.js.map +1 -0
- package/dist/w-web-api.umd.js +2 -2
- package/dist/w-web-api.umd.js.map +1 -1
- package/docs/WWebApi.html +5 -5
- package/docs/WWebApi.mjs.html +15 -15
- package/docs/index.html +1 -1
- package/g.getSettings.mjs +6 -4
- package/g.mOrm.mjs +2 -2
- package/package.json +4 -4
- package/server/WWebApi.mjs +14 -14
- package/src/main.js +3 -4
- package/srv.mjs +5 -5
- package/tableTags.json +1 -1
- package/dist/js/app-legacy.659b941b.js.map +0 -1
- package/dist/js/app.659b941b.js.map +0 -1
- package/dist/js/chunk-vendors-legacy.787c32b5.js.map +0 -1
- package/dist/js/chunk-vendors.787c32b5.js.map +0 -1
package/dist/w-web-api.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* w-web-api v1.0.
|
|
2
|
+
* w-web-api v1.0.39
|
|
3
3
|
* (c) 2018-2021 yuda-lyu(semisphere)
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("worker_threads")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","worker_threads"],e):(t="undefined"!=typeof globalThis?globalThis:t||self)["w-web-api"]=e(t.path,t.fs,t["@hapi/hapi"],t["@hapi/inert"],t.stream,t.require$$0)}(this,(function(t,e,n,i,s,r){"use strict";var o=Array.isArray,c="object"==typeof global&&global&&global.Object===Object&&global,l="object"==typeof self&&self&&self.Object===Object&&self,a=c||l||Function("return this")(),d=a.Symbol,u=Object.prototype,M=u.hasOwnProperty,w=u.toString,I=d?d.toStringTag:void 0;var y=Object.prototype.toString;var p="[object Null]",m="[object Undefined]",L=d?d.toStringTag:void 0;function g(t){return null==t?void 0===t?m:p:L&&L in Object(t)?function(t){var e=M.call(t,I),n=t[I];try{t[I]=void 0;var i=!0}catch(t){}var s=w.call(t);return i&&(e?t[I]=n:delete t[I]),s}(t):function(t){return y.call(t)}(t)}function C(t){return null!=t&&"object"==typeof t}var D="[object Symbol]";function f(t){return"symbol"==typeof t||C(t)&&g(t)==D}var h=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,b=/^\w*$/;function N(t,e){if(o(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!f(t))||(b.test(t)||!h.test(t)||null!=e&&t in Object(e))}function x(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}var Z="[object AsyncFunction]",T="[object Function]",X="[object GeneratorFunction]",S="[object Proxy]";function A(t){if(!x(t))return!1;var e=g(t);return e==T||e==X||e==Z||e==S}var Y,v=a["__core-js_shared__"],G=(Y=/[^.]+$/.exec(v&&v.keys&&v.keys.IE_PROTO||""))?"Symbol(src)_1."+Y:"";var E=Function.prototype.toString;function j(t){if(null!=t){try{return E.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var z=/^\[object .+?Constructor\]$/,K=Function.prototype,W=Object.prototype,V=K.toString,H=W.hasOwnProperty,Q=RegExp("^"+V.call(H).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function U(t){return!(!x(t)||(e=t,G&&G in e))&&(A(t)?Q:z).test(j(t));var e}function k(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return U(n)?n:void 0}var J=k(Object,"create");var R=Object.prototype.hasOwnProperty;var P=Object.prototype.hasOwnProperty;function B(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}function O(t,e){return t===e||t!=t&&e!=e}function F(t,e){for(var n=t.length;n--;)if(O(t[n][0],e))return n;return-1}B.prototype.clear=function(){this.__data__=J?J(null):{},this.size=0},B.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},B.prototype.get=function(t){var e=this.__data__;if(J){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return R.call(e,t)?e[t]:void 0},B.prototype.has=function(t){var e=this.__data__;return J?void 0!==e[t]:P.call(e,t)},B.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=J&&void 0===e?"__lodash_hash_undefined__":e,this};var _=Array.prototype.splice;function $(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}$.prototype.clear=function(){this.__data__=[],this.size=0},$.prototype.delete=function(t){var e=this.__data__,n=F(e,t);return!(n<0)&&(n==e.length-1?e.pop():_.call(e,n,1),--this.size,!0)},$.prototype.get=function(t){var e=this.__data__,n=F(e,t);return n<0?void 0:e[n][1]},$.prototype.has=function(t){return F(this.__data__,t)>-1},$.prototype.set=function(t,e){var n=this.__data__,i=F(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};var q=k(a,"Map");function tt(t,e){var n,i,s=t.__data__;return("string"==(i=typeof(n=e))||"number"==i||"symbol"==i||"boolean"==i?"__proto__"!==n:null===n)?s["string"==typeof e?"string":"hash"]:s.map}function et(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}et.prototype.clear=function(){this.size=0,this.__data__={hash:new B,map:new(q||$),string:new B}},et.prototype.delete=function(t){var e=tt(this,t).delete(t);return this.size-=e?1:0,e},et.prototype.get=function(t){return tt(this,t).get(t)},et.prototype.has=function(t){return tt(this,t).has(t)},et.prototype.set=function(t,e){var n=tt(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this};var nt="Expected a function";function it(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError(nt);var n=function(){var i=arguments,s=e?e.apply(this,i):i[0],r=n.cache;if(r.has(s))return r.get(s);var o=t.apply(this,i);return n.cache=r.set(s,o)||r,o};return n.cache=new(it.Cache||et),n}it.Cache=et;var st,rt,ot,ct=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,lt=/\\(\\)?/g,at=(st=function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(ct,(function(t,n,i,s){e.push(i?s.replace(lt,"$1"):n||t)})),e},rt=it(st,(function(t){return 500===ot.size&&ot.clear(),t})),ot=rt.cache,rt),dt=at;function ut(t,e){for(var n=-1,i=null==t?0:t.length,s=Array(i);++n<i;)s[n]=e(t[n],n,t);return s}var Mt=1/0,wt=d?d.prototype:void 0,It=wt?wt.toString:void 0;function yt(t){if("string"==typeof t)return t;if(o(t))return ut(t,yt)+"";if(f(t))return It?It.call(t):"";var e=t+"";return"0"==e&&1/t==-Mt?"-0":e}function pt(t){return null==t?"":yt(t)}function mt(t,e){return o(t)?t:N(t,e)?[t]:dt(pt(t))}var Lt=1/0;function gt(t){if("string"==typeof t||f(t))return t;var e=t+"";return"0"==e&&1/t==-Lt?"-0":e}function Ct(t,e){for(var n=0,i=(e=mt(e,t)).length;null!=t&&n<i;)t=t[gt(e[n++])];return n&&n==i?t:void 0}function Dt(t,e,n){var i=null==t?void 0:Ct(t,e);return void 0===i?n:i}function ft(t,e){for(var n=-1,i=null==t?0:t.length;++n<i&&!1!==e(t[n],n,t););return t}var ht,bt=function(t,e,n){for(var i=-1,s=Object(t),r=n(t),o=r.length;o--;){var c=r[ht?o:++i];if(!1===e(s[c],c,s))break}return t};function Nt(t){return C(t)&&"[object Arguments]"==g(t)}var xt=Object.prototype,Zt=xt.hasOwnProperty,Tt=xt.propertyIsEnumerable,Xt=Nt(function(){return arguments}())?Nt:function(t){return C(t)&&Zt.call(t,"callee")&&!Tt.call(t,"callee")},St=Xt;var At="object"==typeof exports&&exports&&!exports.nodeType&&exports,Yt=At&&"object"==typeof module&&module&&!module.nodeType&&module,vt=Yt&&Yt.exports===At?a.Buffer:void 0,Gt=(vt?vt.isBuffer:void 0)||function(){return!1},Et=9007199254740991,jt=/^(?:0|[1-9]\d*)$/;function zt(t,e){var n=typeof t;return!!(e=null==e?Et:e)&&("number"==n||"symbol"!=n&&jt.test(t))&&t>-1&&t%1==0&&t<e}var Kt=9007199254740991;function Wt(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Kt}var Vt={};function Ht(t){return function(e){return t(e)}}Vt["[object Float32Array]"]=Vt["[object Float64Array]"]=Vt["[object Int8Array]"]=Vt["[object Int16Array]"]=Vt["[object Int32Array]"]=Vt["[object Uint8Array]"]=Vt["[object Uint8ClampedArray]"]=Vt["[object Uint16Array]"]=Vt["[object Uint32Array]"]=!0,Vt["[object Arguments]"]=Vt["[object Array]"]=Vt["[object ArrayBuffer]"]=Vt["[object Boolean]"]=Vt["[object DataView]"]=Vt["[object Date]"]=Vt["[object Error]"]=Vt["[object Function]"]=Vt["[object Map]"]=Vt["[object Number]"]=Vt["[object Object]"]=Vt["[object RegExp]"]=Vt["[object Set]"]=Vt["[object String]"]=Vt["[object WeakMap]"]=!1;var Qt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ut=Qt&&"object"==typeof module&&module&&!module.nodeType&&module,kt=Ut&&Ut.exports===Qt&&c.process,Jt=function(){try{var t=Ut&&Ut.require&&Ut.require("util").types;return t||kt&&kt.binding&&kt.binding("util")}catch(t){}}(),Rt=Jt&&Jt.isTypedArray,Pt=Rt?Ht(Rt):function(t){return C(t)&&Wt(t.length)&&!!Vt[g(t)]},Bt=Object.prototype.hasOwnProperty;function Ot(t,e){var n=o(t),i=!n&&St(t),s=!n&&!i&&Gt(t),r=!n&&!i&&!s&&Pt(t),c=n||i||s||r,l=c?function(t,e){for(var n=-1,i=Array(t);++n<t;)i[n]=e(n);return i}(t.length,String):[],a=l.length;for(var d in t)!e&&!Bt.call(t,d)||c&&("length"==d||s&&("offset"==d||"parent"==d)||r&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||zt(d,a))||l.push(d);return l}var Ft=Object.prototype;function _t(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Ft)}function $t(t,e){return function(n){return t(e(n))}}var qt=$t(Object.keys,Object),te=Object.prototype.hasOwnProperty;function ee(t){if(!_t(t))return qt(t);var e=[];for(var n in Object(t))te.call(t,n)&&"constructor"!=n&&e.push(n);return e}function ne(t){return null!=t&&Wt(t.length)&&!A(t)}function ie(t){return ne(t)?Ot(t):ee(t)}var se=function(t,e){return function(n,i){if(null==n)return n;if(!ne(n))return t(n,i);for(var s=n.length,r=e?s:-1,o=Object(n);(e?r--:++r<s)&&!1!==i(o[r],r,o););return n}}((function(t,e){return t&&bt(t,e,ie)})),re=se;function oe(t){return t}function ce(t,e){var n;return(o(t)?ft:re)(t,"function"==typeof(n=e)?n:oe)}function le(t){return"[object String]"===Object.prototype.toString.call(t)}function ae(t){return!(!le(t)||""===t)}function de(t){if(!ae(t))return{};let e={};try{e=JSON.parse(t)}catch(t){e={}}return e}function ue(t){return"[object Object]"===Object.prototype.toString.call(t)}function Me(t){if(ue(t)){for(let e in t)return!0;return!1}return!1}function we(t){return"[object Array]"===Object.prototype.toString.call(t)}function Ie(t){return"[object Undefined]"===Object.prototype.toString.call(t)}function ye(t){if(ue(t)){for(let e in t)return!1;return!0}return!1}function pe(t){return t!=t}function me(t){return!!Ie(t)||(!!function(t){return"[object Null]"===Object.prototype.toString.call(t)}(t)||(!!ye(t)||(!!function(t){return!(!le(t)||""!==t)}(t)||(!!function(t){return!!we(t)&&0===t.length}(t)||!!pe(t)))))}function Le(t){return!!we(t)&&(0!==t.length&&(1!==t.length||!me(t[0])))}var ge=/\s/;var Ce=/^\s+/;function De(t){return t?t.slice(0,function(t){for(var e=t.length;e--&&ge.test(t.charAt(e)););return e}(t)+1).replace(Ce,""):t}var fe=NaN,he=/^[-+]0x[0-9a-f]+$/i,be=/^0b[01]+$/i,Ne=/^0o[0-7]+$/i,xe=parseInt;function Ze(t){if("number"==typeof t)return t;if(f(t))return fe;if(x(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=x(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=De(t);var n=be.test(t);return n||Ne.test(t)?xe(t.slice(2),n?2:8):he.test(t)?fe:+t}var Te=1/0,Xe=17976931348623157e292;function Se(t){return t?(t=Ze(t))===Te||t===-Te?(t<0?-1:1)*Xe:t==t?t:0:0===t?t:0}function Ae(t){var e=Se(t),n=e%1;return e==e?n?e-n:e:0}function Ye(t){let e=!1;if(ae(t))e=!isNaN(Number(t));else if(function(t){return"[object Number]"===Object.prototype.toString.call(t)}(t)){if(pe(t))return!1;e=!0}return e}function ve(t){if(!Ye(t))return 0;return Se(t)}function Ge(t){return!!Ye(t)&&(t=ve(t),"number"==typeof(e=t)&&e==Ae(e));var e}var Ee=a.isFinite,je=Math.min;var ze=function(t){var e=Math[t];return function(t,n){if(t=Ze(t),(n=null==n?0:je(Ae(n),292))&&Ee(t)){var i=(pt(t)+"e").split("e");return+((i=(pt(e(i[0]+"e"+(+i[1]+n)))+"e").split("e"))[0]+"e"+(+i[1]-n))}return e(t)}}("round"),Ke=ze;function We(t){if(!Ye(t))return 0;t=ve(t);let e=Ke(t);return"0"===String(e)?0:e}function Ve(t){if(!Ge(t))return!1;return We(t)>0}function He(t){let e=Object.prototype.toString.call(t);return"[object Function]"===e||"[object AsyncFunction]"===e}function Qe(t){let e,n=Object.prototype.toString.call(t);if(e="[object Promise]"===n,e)return!0;if("[object Function]"!==n)return!1;try{e="function"!=typeof t.subscribe&&"function"==typeof t.then}catch(t){}return e}function Ue(t){if(!Ge(t))return!1;return We(t)>=0}function ke(t,e){return ae(t)&&Ue(e)?0===(e=We(e))?"":t.substring(0,e):""}function Je(t,e){if(!ae(t))return"";if(!Ue(e))return"";if(0===(e=We(e)))return"";let n=t.length-e;return n<0&&(n=0),t.substring(n,n+e)}function Re(){let t,e,n=new Promise((function(){t=arguments[0],e=arguments[1]}));return n.resolve=t,n.reject=e,n}let Pe=function(t){if(!He(t))throw new Error("fn is not a function");return function(){let e=Re(),n=null,i=null;try{n=t.apply(this,arguments)}catch(t){i=t}return null!==i?e.resolve({state:"error",msg:i}):Qe(n)?n.then((t=>{e.resolve({state:"success",msg:t})})).catch((t=>{"cancelled"===Dt(t,"reason")?e.resolve({state:"cancelled",msg:""}):e.resolve({state:"error",msg:t})})):e.resolve({state:"success",msg:n}),e}};var Be="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Oe={};var Fe,_e={},$e={get exports(){return _e},set exports(t){_e=t}};function qe(){return Fe||(Fe=1,function(t,e){var n;t.exports=(n=n||function(t,e){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!==Be&&Be.crypto&&(n=Be.crypto),!n)try{n=require("crypto")}catch(t){}var i=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(t){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(t){}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||function(){function t(){}return function(e){var n;return t.prototype=e,n=new t,t.prototype=null,n}}(),r={},o=r.lib={},c=o.Base={extend:function(t){var e=s(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},l=o.WordArray=c.extend({init:function(t,n){t=this.words=t||[],this.sigBytes=n!=e?n:4*t.length},toString:function(t){return(t||d).stringify(this)},concat:function(t){var e=this.words,n=t.words,i=this.sigBytes,s=t.sigBytes;if(this.clamp(),i%4)for(var r=0;r<s;r++){var o=n[r>>>2]>>>24-r%4*8&255;e[i+r>>>2]|=o<<24-(i+r)%4*8}else for(var c=0;c<s;c+=4)e[i+c>>>2]=n[c>>>2];return this.sigBytes+=s,this},clamp:function(){var e=this.words,n=this.sigBytes;e[n>>>2]&=4294967295<<32-n%4*8,e.length=t.ceil(n/4)},clone:function(){var t=c.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],n=0;n<t;n+=4)e.push(i());return new l.init(e,t)}}),a=r.enc={},d=a.Hex={stringify:function(t){for(var e=t.words,n=t.sigBytes,i=[],s=0;s<n;s++){var r=e[s>>>2]>>>24-s%4*8&255;i.push((r>>>4).toString(16)),i.push((15&r).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,n=[],i=0;i<e;i+=2)n[i>>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new l.init(n,e/2)}},u=a.Latin1={stringify:function(t){for(var e=t.words,n=t.sigBytes,i=[],s=0;s<n;s++){var r=e[s>>>2]>>>24-s%4*8&255;i.push(String.fromCharCode(r))}return i.join("")},parse:function(t){for(var e=t.length,n=[],i=0;i<e;i++)n[i>>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new l.init(n,e)}},M=a.Utf8={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return u.parse(unescape(encodeURIComponent(t)))}},w=o.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=M.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var n,i=this._data,s=i.words,r=i.sigBytes,o=this.blockSize,c=r/(4*o),a=(c=e?t.ceil(c):t.max((0|c)-this._minBufferSize,0))*o,d=t.min(4*a,r);if(a){for(var u=0;u<a;u+=o)this._doProcessBlock(s,u);n=s.splice(0,a),i.sigBytes-=d}return new l.init(n,d)},clone:function(){var t=c.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0});o.Hasher=w.extend({cfg:c.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){w.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){return t&&this._append(t),this._doFinalize()},blockSize:16,_createHelper:function(t){return function(e,n){return new t.init(n).finalize(e)}},_createHmacHelper:function(t){return function(e,n){return new I.HMAC.init(t,n).finalize(e)}}});var I=r.algo={};return r}(Math),n)}($e)),_e}!function(t,e){t.exports=qe().enc.Utf8}({get exports(){return Oe},set exports(t){Oe=t}});var tn=Oe,en={};!function(t,e){var n;t.exports=(n=qe(),function(){var t=n,e=t.lib.WordArray;function i(t,n,i){for(var s=[],r=0,o=0;o<n;o++)if(o%4){var c=i[t.charCodeAt(o-1)]<<o%4*2|i[t.charCodeAt(o)]>>>6-o%4*2;s[r>>>2]|=c<<24-r%4*8,r++}return e.create(s,r)}t.enc.Base64={stringify:function(t){var e=t.words,n=t.sigBytes,i=this._map;t.clamp();for(var s=[],r=0;r<n;r+=3)for(var o=(e[r>>>2]>>>24-r%4*8&255)<<16|(e[r+1>>>2]>>>24-(r+1)%4*8&255)<<8|e[r+2>>>2]>>>24-(r+2)%4*8&255,c=0;c<4&&r+.75*c<n;c++)s.push(i.charAt(o>>>6*(3-c)&63));var l=i.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(t){var e=t.length,n=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var r=0;r<n.length;r++)s[n.charCodeAt(r)]=r}var o=n.charAt(64);if(o){var c=t.indexOf(o);-1!==c&&(e=c)}return i(t,e,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),n.enc.Base64)}({get exports(){return en},set exports(t){en=t}});var nn=en;function sn(t){if(!ae(t))return"";return nn.parse(t).toString(tn)}function rn(t){let e=Dt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(!e.existsSync(t))return!1;let n=e.lstatSync(t);return!n.isFile()&&!n.isSymbolicLink()}function on(t){return rn(t,{fs:e})}function cn(t){let e=Dt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");return!!e.existsSync(t)&&(!e.lstatSync(t).isDirectory()&&!e.lstatSync(t).isSymbolicLink())}function ln(t){return cn(t,{fs:e})}function an(t,e,n){if(!ae(t))return"";if(!ae(e))return"";if(!le(n))return"";return String(t).replaceAll(e,n)}var dn={};!function(t,e){t.exports=function(){var t=1e3,e=6e4,n=36e5,i="millisecond",s="second",r="minute",o="hour",c="day",l="week",a="month",d="quarter",u="year",M="date",w="Invalid Date",I=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,p={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(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var i=String(t);return!i||i.length>=e?t:""+Array(e+1-i.length).join(n)+t},L={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),i=Math.floor(n/60),s=n%60;return(e<=0?"+":"-")+m(i,2,"0")+":"+m(s,2,"0")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var i=12*(n.year()-e.year())+(n.month()-e.month()),s=e.clone().add(i,a),r=n-s<0,o=e.clone().add(i+(r?-1:1),a);return+(-(i+(n-s)/(r?s-o:o-s))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:a,y:u,w:l,d:c,D:M,h:o,m:r,s:s,ms:i,Q:d}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},g="en",C={};C[g]=p;var D="$isDayjsObject",f=function(t){return t instanceof x||!(!t||!t[D])},h=function t(e,n,i){var s;if(!e)return g;if("string"==typeof e){var r=e.toLowerCase();C[r]&&(s=r),n&&(C[r]=n,s=r);var o=e.split("-");if(!s&&o.length>1)return t(o[0])}else{var c=e.name;C[c]=e,s=c}return!i&&s&&(g=s),s||!i&&g},b=function(t,e){if(f(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new x(n)},N=L;N.l=h,N.i=f,N.w=function(t,e){return b(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var x=function(){function p(t){this.$L=h(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[D]=!0}var m=p.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(N.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var i=e.match(I);if(i){var s=i[2]-1||0,r=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],s,i[3]||1,i[4]||0,i[5]||0,i[6]||0,r)):new Date(i[1],s,i[3]||1,i[4]||0,i[5]||0,i[6]||0,r)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return N},m.isValid=function(){return!(this.$d.toString()===w)},m.isSame=function(t,e){var n=b(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return b(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<b(t)},m.$g=function(t,e,n){return N.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,i=!!N.u(e)||e,d=N.p(t),w=function(t,e){var s=N.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return i?s:s.endOf(c)},I=function(t,e){return N.w(n.toDate()[t].apply(n.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,p=this.$M,m=this.$D,L="set"+(this.$u?"UTC":"");switch(d){case u:return i?w(1,0):w(31,11);case a:return i?w(1,p):w(0,p+1);case l:var g=this.$locale().weekStart||0,C=(y<g?y+7:y)-g;return w(i?m-C:m+(6-C),p);case c:case M:return I(L+"Hours",0);case o:return I(L+"Minutes",1);case r:return I(L+"Seconds",2);case s:return I(L+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,l=N.p(t),d="set"+(this.$u?"UTC":""),w=(n={},n[c]=d+"Date",n[M]=d+"Date",n[a]=d+"Month",n[u]=d+"FullYear",n[o]=d+"Hours",n[r]=d+"Minutes",n[s]=d+"Seconds",n[i]=d+"Milliseconds",n)[l],I=l===c?this.$D+(e-this.$W):e;if(l===a||l===u){var y=this.clone().set(M,1);y.$d[w](I),y.init(),this.$d=y.set(M,Math.min(this.$D,y.daysInMonth())).$d}else w&&this.$d[w](I);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[N.p(t)]()},m.add=function(i,d){var M,w=this;i=Number(i);var I=N.p(d),y=function(t){var e=b(w);return N.w(e.date(e.date()+Math.round(t*i)),w)};if(I===a)return this.set(a,this.$M+i);if(I===u)return this.set(u,this.$y+i);if(I===c)return y(1);if(I===l)return y(7);var p=(M={},M[r]=e,M[o]=n,M[s]=t,M)[I]||1,m=this.$d.getTime()+i*p;return N.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||w;var i=t||"YYYY-MM-DDTHH:mm:ssZ",s=N.z(this),r=this.$H,o=this.$m,c=this.$M,l=n.weekdays,a=n.months,d=n.meridiem,u=function(t,n,s,r){return t&&(t[n]||t(e,i))||s[n].slice(0,r)},M=function(t){return N.s(r%12||12,t,"0")},I=d||function(t,e,n){var i=t<12?"AM":"PM";return n?i.toLowerCase():i};return i.replace(y,(function(t,i){return i||function(t){switch(t){case"YY":return String(e.$y).slice(-2);case"YYYY":return N.s(e.$y,4,"0");case"M":return c+1;case"MM":return N.s(c+1,2,"0");case"MMM":return u(n.monthsShort,c,a,3);case"MMMM":return u(a,c);case"D":return e.$D;case"DD":return N.s(e.$D,2,"0");case"d":return String(e.$W);case"dd":return u(n.weekdaysMin,e.$W,l,2);case"ddd":return u(n.weekdaysShort,e.$W,l,3);case"dddd":return l[e.$W];case"H":return String(r);case"HH":return N.s(r,2,"0");case"h":return M(1);case"hh":return M(2);case"a":return I(r,o,!0);case"A":return I(r,o,!1);case"m":return String(o);case"mm":return N.s(o,2,"0");case"s":return String(e.$s);case"ss":return N.s(e.$s,2,"0");case"SSS":return N.s(e.$ms,3,"0");case"Z":return s}return null}(t)||s.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(i,M,w){var I,y=this,p=N.p(M),m=b(i),L=(m.utcOffset()-this.utcOffset())*e,g=this-m,C=function(){return N.m(y,m)};switch(p){case u:I=C()/12;break;case a:I=C();break;case d:I=C()/3;break;case l:I=(g-L)/6048e5;break;case c:I=(g-L)/864e5;break;case o:I=g/n;break;case r:I=g/e;break;case s:I=g/t;break;default:I=g}return w?I:N.a(I)},m.daysInMonth=function(){return this.endOf(a).$D},m.$locale=function(){return C[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),i=h(t,e,!0);return i&&(n.$L=i),n},m.clone=function(){return N.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},p}(),Z=x.prototype;return b.prototype=Z,[["$ms",i],["$s",s],["$m",r],["$H",o],["$W",c],["$M",a],["$y",u],["$D",M]].forEach((function(t){Z[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),b.extend=function(t,e){return t.$i||(t(e,x,b),t.$i=!0),b},b.locale=h,b.isDayjs=f,b.unix=function(t){return b(1e3*t)},b.en=C[g],b.Ls=C,b.p={},b}()}({get exports(){return dn},set exports(t){dn=t}});var un=dn;function Mn(){if(!He(un))throw new Error("invalid dayjs");return un().format("YYYY-MM-DDTHH:mm:ssZ")}let wn="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),In=wn.length;function yn(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:32,e=[];t=Ve(t)?We(t):32;for(let n=0;n<t;n++)e[n]=wn[0|Math.random()*In];return e.join("")}var pn="[object Boolean]";function mn(t){return!0===(e=t)||!1===e||C(e)&&g(e)==pn;var e}var Ln={};!function(t){var e=Object.prototype.hasOwnProperty,n="~";function i(){}function s(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function r(t,e,i,r,o){if("function"!=typeof i)throw new TypeError("The listener must be a function");var c=new s(i,r||t,o),l=n?n+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],c]:t._events[l].push(c):(t._events[l]=c,t._eventsCount++),t}function o(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function c(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),c.prototype.eventNames=function(){var t,i,s=[];if(0===this._eventsCount)return s;for(i in t=this._events)e.call(t,i)&&s.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(t)):s},c.prototype.listeners=function(t){var e=n?n+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var s=0,r=i.length,o=new Array(r);s<r;s++)o[s]=i[s].fn;return o},c.prototype.listenerCount=function(t){var e=n?n+t:t,i=this._events[e];return i?i.fn?1:i.length:0},c.prototype.emit=function(t,e,i,s,r,o){var c=n?n+t:t;if(!this._events[c])return!1;var l,a,d=this._events[c],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(t,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,i),!0;case 4:return d.fn.call(d.context,e,i,s),!0;case 5:return d.fn.call(d.context,e,i,s,r),!0;case 6:return d.fn.call(d.context,e,i,s,r,o),!0}for(a=1,l=new Array(u-1);a<u;a++)l[a-1]=arguments[a];d.fn.apply(d.context,l)}else{var M,w=d.length;for(a=0;a<w;a++)switch(d[a].once&&this.removeListener(t,d[a].fn,void 0,!0),u){case 1:d[a].fn.call(d[a].context);break;case 2:d[a].fn.call(d[a].context,e);break;case 3:d[a].fn.call(d[a].context,e,i);break;case 4:d[a].fn.call(d[a].context,e,i,s);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[a].fn.apply(d[a].context,l)}}return!0},c.prototype.on=function(t,e,n){return r(this,t,e,n,!1)},c.prototype.once=function(t,e,n){return r(this,t,e,n,!0)},c.prototype.removeListener=function(t,e,i,s){var r=n?n+t:t;if(!this._events[r])return this;if(!e)return o(this,r),this;var c=this._events[r];if(c.fn)c.fn!==e||s&&!c.once||i&&c.context!==i||o(this,r);else{for(var l=0,a=[],d=c.length;l<d;l++)(c[l].fn!==e||s&&!c[l].once||i&&c[l].context!==i)&&a.push(c[l]);a.length?this._events[r]=1===a.length?a[0]:a:o(this,r)}return this},c.prototype.removeAllListeners=function(t){var e;return t?(e=n?n+t:t,this._events[e]&&o(this,e)):(this._events=new i,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=n,c.EventEmitter=c,t.exports=c}({get exports(){return Ln},set exports(t){Ln=t}});var gn=Ln;function Cn(){return new gn}async function Dn(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,i=Re();if(!He(t))return i.reject("waitfunction需輸入函數f"),i;let s=async()=>{let e=t();return Qe(e)&&(e=await e),e};if(n=await s(),!0===n)return i.resolve(),i;let r=Dt(e,"attemptNum",null);Ve(r)||(r=200);let o=Dt(e,"timeInterval",null);Ve(o)||(o=1e3);let c=0,l=setInterval((async()=>{c+=1,n=await s(),!0===n&&(clearInterval(l),i.resolve()),c>r&&(clearInterval(l),i.reject(`exceeded attemptNum[${r}]`))}),o);return i}function fn(t){return function(t){let e=Dt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(rn(t,{fs:e}))return{success:"input folder is already exists: "+t};if(e.existsSync(t))return{error:"input path already exists: "+t};try{e.mkdirSync(t,{recursive:!0})}catch(t){return{error:t}}return{success:"done: "+t}}(t,{fs:e})}var hn="[object Number]";function bn(t){return"number"==typeof t||C(t)&&g(t)==hn}function Nn(t){if(!ae(t)&&!Ye(t)&&!f(t))return"";let e="";try{e=String(t)}catch(t){}try{e=t.toString()}catch(t){}return e}function xn(t){if(!ae(t))return"";let e=tn.parse(t);return nn.stringify(e)}function Zn(t,e){return!!ue(t)&&(!(!ae(e)&&!Ye(e))&&e in t)}function Tn(t){return"[object ArrayBuffer]"===Object.prototype.toString.call(t)}function Xn(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)}function Sn(t){return"[object Uint16Array]"===Object.prototype.toString.call(t)}function An(t){if(!(Tn(t)||(e=t,"[object Blob]"===Object.prototype.toString.call(e))||Xn(t)||Sn(t)))return null;var e;try{if(t.byteLength)return t.byteLength}catch(t){}try{if(t.length)return t.length}catch(t){}try{if(t.size)return t.size}catch(t){}return null}var Yn=$t(Object.getPrototypeOf,Object),vn="[object Object]",Gn=Function.prototype,En=Object.prototype,jn=Gn.toString,zn=En.hasOwnProperty,Kn=jn.call(Object);function Wn(t){if(!C(t)||g(t)!=vn)return!1;var e=Yn(t);if(null===e)return!0;var n=zn.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&jn.call(n)==Kn}var Vn="[object DOMException]",Hn="[object Error]";function Qn(t){if(!ue(t))return{results:"",binarys:[]};if(ye(t))return{results:"",binarys:[]};let e="",n=[];try{let i=-1;e=JSON.stringify(t,(function(t,e){if(Xn(e)){i+=1;let t=`[Uint8Array]::${i}`;return n.push(e),t}if(Sn(e)){i+=1;let t=`[Uint16Array]::${i}`;return n.push(e),t}if(Tn(e)){i+=1;let t=`[ArrayBuffer]::${i}`;return n.push(e),t}return function(t){if(!C(t))return!1;var e=g(t);return e==Hn||e==Vn||"string"==typeof t.message&&"string"==typeof t.name&&!Wn(t)}(e)&&(e=e.toString()),e}))}catch(t){}return{results:e,binarys:n}}function Un(t){if(!ae(t))return new Uint8Array;let e;try{e=function(t){if(!le(t))return new Uint8Array;let e=nn.parse(t),n=e.words,i=e.sigBytes,s=new Uint8Array(i);for(let t=0;t<i;t++){let e=n[t>>>2]>>>24-t%4*8&255;s[t]=e}return s}(xn(t))}catch(t){return new Uint8Array}return e}function kn(t,e){return function(t,e,n,i,s,r){if(!Ye(t))return null;if(!Xn(e))return null;if(!Ge(n))return null;if(!mn(i))return null;if(!Ge(s))return null;if(!Ge(r))return null;let o,c,l;t=ve(t);let a=8*r-s-1,d=(1<<a)-1,u=d>>1,M=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,w=i?r-1:0,I=i?-1:1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,o=d):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+u>=1?M/l:M*Math.pow(2,1-u))*l>=2&&(o++,l/=2),o+u>=d?(c=0,o=d):o+u>=1?(c=(t*l-1)*Math.pow(2,s),o+=u):(c=t*Math.pow(2,u-1)*Math.pow(2,s),o=0));s>=8;e[n+w]=255&c,w+=I,c/=256,s-=8);for(o=o<<s|c,a+=s;a>0;e[n+w]=255&o,w+=I,o/=256,a-=8);return e[n+w-I]|=128*y,null}(t,e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,!(arguments.length>3&&void 0!==arguments[3])||arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:52,arguments.length>5&&void 0!==arguments[5]?arguments[5]:8)}function Jn(t){let e=[],n=[];if(!Le(t)&&!Me(t))return null;let i=[],s=[];function r(t){i.push(An(t)),s.push(t)}try{let o=Qn(t);r(Un(o.results)),ce(o.binarys,(t=>{r(t)}));let c=i,l=Un(JSON.stringify(c)),a=new Uint8Array(8);kn(An(l),a),e.push(a),e.push(l),ce(s,(t=>{e.push(t)})),ce(e,(t=>{n=function(t,e){let n=An(t),i=An(e),s=new Uint8Array(n+i);return s.set(new Uint8Array(t),0),s.set(new Uint8Array(e),n),s}(n,t)}))}catch(t){return null}return n}function Rn(t){return function(t,e,n,i,s){if(!Xn(t))return null;if(!Ge(e))return null;if(!mn(n))return null;if(!Ge(i))return null;if(!Ge(s))return null;let r,o,c=8*s-i-1,l=(1<<c)-1,a=l>>1,d=-7,u=n?0:s-1,M=n?1:-1,w=t[e+u];for(u+=M,r=w&(1<<-d)-1,w>>=-d,d+=c;d>0;r=256*r+t[e+u],u+=M,d-=8);for(o=r&(1<<-d)-1,r>>=-d,d+=i;d>0;o=256*o+t[e+u],u+=M,d-=8);if(0===r)r=1-a;else{if(r===l)return o?NaN:1/0*(w?-1:1);o+=Math.pow(2,i),r-=a}return(w?-1:1)*o*Math.pow(2,r-i)}(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,!(arguments.length>2&&void 0!==arguments[2])||arguments[2],arguments.length>3&&void 0!==arguments[3]?arguments[3]:52,arguments.length>4&&void 0!==arguments[4]?arguments[4]:8)}var Pn={};!function(t,e){var n;t.exports=(n=qe(),function(){if("function"==typeof ArrayBuffer){var t=n.lib.WordArray,e=t.init,i=t.init=function(t){if(t instanceof ArrayBuffer&&(t=new Uint8Array(t)),(t instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)&&(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),t instanceof Uint8Array){for(var n=t.byteLength,i=[],s=0;s<n;s++)i[s>>>2]|=t[s]<<24-s%4*8;e.call(this,i,n)}else e.apply(this,arguments)};i.prototype=t}}(),n.lib.WordArray)}({get exports(){return Pn},set exports(t){Pn=t}});var Bn=Pn;function On(t){if(!Xn(t))return"";let e;try{e=sn(function(t){return Xn(t)?Bn.create(t).toString(nn):""}(t))}catch(t){return""}return e}function Fn(t){let e=null;if(!Xn(t))return null;try{let n=8,i=t.slice(0,n),s=t.slice(n,An(t)),r=Rn(i),o=s.slice(0,r),c=s.slice(r,An(s)),l=On(o),a=function(t,e){let n=0,i=0,s=[];return ce(e,(e=>{i=n+e;let r=t.slice(n,i);n=i,s.push(r)})),s}(c,JSON.parse(l));e=function(t){if(!Me(t))return{};let{results:e,binarys:n}=t;if(!ae(e))return{};if(!we(n))return{};let i={};try{i=JSON.parse(e,(function(t,e){if(ae(e)){if(e.indexOf("[Uint8Array]::")>=0){let t=We(e.replace("[Uint8Array]::",""));return n[t]}if(e.indexOf("[Uint16Array]::")>=0){let t=We(e.replace("[Uint16Array]::",""));return n[t]}if(e.indexOf("[ArrayBuffer]::")>=0){let t=We(e.replace("[ArrayBuffer]::",""));return n[t]}}return e}))}catch(t){}return i}({results:On(a.shift()),binarys:a})}catch(t){}return e}function _n(){if(!He(un))throw new Error("invalid dayjs");return un().format("YYYYMMDDHHmmss")}function $n(t){var e=this.__data__=new $(t);this.size=e.size}$n.prototype.clear=function(){this.__data__=new $,this.size=0},$n.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},$n.prototype.get=function(t){return this.__data__.get(t)},$n.prototype.has=function(t){return this.__data__.has(t)},$n.prototype.set=function(t,e){var n=this.__data__;if(n instanceof $){var i=n.__data__;if(!q||i.length<199)return i.push([t,e]),this.size=++n.size,this;n=this.__data__=new et(i)}return n.set(t,e),this.size=n.size,this};function qn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new et;++e<n;)this.add(t[e])}function ti(t,e){for(var n=-1,i=null==t?0:t.length;++n<i;)if(e(t[n],n,t))return!0;return!1}function ei(t,e){return t.has(e)}qn.prototype.add=qn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},qn.prototype.has=function(t){return this.__data__.has(t)};var ni=1,ii=2;function si(t,e,n,i,s,r){var o=n&ni,c=t.length,l=e.length;if(c!=l&&!(o&&l>c))return!1;var a=r.get(t),d=r.get(e);if(a&&d)return a==e&&d==t;var u=-1,M=!0,w=n&ii?new qn:void 0;for(r.set(t,e),r.set(e,t);++u<c;){var I=t[u],y=e[u];if(i)var p=o?i(y,I,u,e,t,r):i(I,y,u,t,e,r);if(void 0!==p){if(p)continue;M=!1;break}if(w){if(!ti(e,(function(t,e){if(!ei(w,e)&&(I===t||s(I,t,n,i,r)))return w.push(e)}))){M=!1;break}}else if(I!==y&&!s(I,y,n,i,r)){M=!1;break}}return r.delete(t),r.delete(e),M}var ri=a.Uint8Array;function oi(t){var e=-1,n=Array(t.size);return t.forEach((function(t,i){n[++e]=[i,t]})),n}function ci(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}var li=1,ai=2,di="[object Boolean]",ui="[object Date]",Mi="[object Error]",wi="[object Map]",Ii="[object Number]",yi="[object RegExp]",pi="[object Set]",mi="[object String]",Li="[object Symbol]",gi="[object ArrayBuffer]",Ci="[object DataView]",Di=d?d.prototype:void 0,fi=Di?Di.valueOf:void 0;function hi(t,e){for(var n=-1,i=e.length,s=t.length;++n<i;)t[s+n]=e[n];return t}function bi(t,e,n){var i=e(t);return o(t)?i:hi(i,n(t))}function Ni(t,e){for(var n=-1,i=null==t?0:t.length,s=0,r=[];++n<i;){var o=t[n];e(o,n,t)&&(r[s++]=o)}return r}function xi(){return[]}var Zi=Object.prototype.propertyIsEnumerable,Ti=Object.getOwnPropertySymbols,Xi=Ti?function(t){return null==t?[]:(t=Object(t),Ni(Ti(t),(function(e){return Zi.call(t,e)})))}:xi;function Si(t){return bi(t,ie,Xi)}var Ai=1,Yi=Object.prototype.hasOwnProperty;var vi=k(a,"DataView"),Gi=k(a,"Promise"),Ei=k(a,"Set"),ji=k(a,"WeakMap"),zi="[object Map]",Ki="[object Promise]",Wi="[object Set]",Vi="[object WeakMap]",Hi="[object DataView]",Qi=j(vi),Ui=j(q),ki=j(Gi),Ji=j(Ei),Ri=j(ji),Pi=g;(vi&&Pi(new vi(new ArrayBuffer(1)))!=Hi||q&&Pi(new q)!=zi||Gi&&Pi(Gi.resolve())!=Ki||Ei&&Pi(new Ei)!=Wi||ji&&Pi(new ji)!=Vi)&&(Pi=function(t){var e=g(t),n="[object Object]"==e?t.constructor:void 0,i=n?j(n):"";if(i)switch(i){case Qi:return Hi;case Ui:return zi;case ki:return Ki;case Ji:return Wi;case Ri:return Vi}return e});var Bi=Pi,Oi=1,Fi="[object Arguments]",_i="[object Array]",$i="[object Object]",qi=Object.prototype.hasOwnProperty;function ts(t,e,n,i,s,r){var c=o(t),l=o(e),a=c?_i:Bi(t),d=l?_i:Bi(e),u=(a=a==Fi?$i:a)==$i,M=(d=d==Fi?$i:d)==$i,w=a==d;if(w&&Gt(t)){if(!Gt(e))return!1;c=!0,u=!1}if(w&&!u)return r||(r=new $n),c||Pt(t)?si(t,e,n,i,s,r):function(t,e,n,i,s,r,o){switch(n){case Ci:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case gi:return!(t.byteLength!=e.byteLength||!r(new ri(t),new ri(e)));case di:case ui:case Ii:return O(+t,+e);case Mi:return t.name==e.name&&t.message==e.message;case yi:case mi:return t==e+"";case wi:var c=oi;case pi:var l=i&li;if(c||(c=ci),t.size!=e.size&&!l)return!1;var a=o.get(t);if(a)return a==e;i|=ai,o.set(t,e);var d=si(c(t),c(e),i,s,r,o);return o.delete(t),d;case Li:if(fi)return fi.call(t)==fi.call(e)}return!1}(t,e,a,n,i,s,r);if(!(n&Oi)){var I=u&&qi.call(t,"__wrapped__"),y=M&&qi.call(e,"__wrapped__");if(I||y){var p=I?t.value():t,m=y?e.value():e;return r||(r=new $n),s(p,m,n,i,r)}}return!!w&&(r||(r=new $n),function(t,e,n,i,s,r){var o=n&Ai,c=Si(t),l=c.length;if(l!=Si(e).length&&!o)return!1;for(var a=l;a--;){var d=c[a];if(!(o?d in e:Yi.call(e,d)))return!1}var u=r.get(t),M=r.get(e);if(u&&M)return u==e&&M==t;var w=!0;r.set(t,e),r.set(e,t);for(var I=o;++a<l;){var y=t[d=c[a]],p=e[d];if(i)var m=o?i(p,y,d,e,t,r):i(y,p,d,t,e,r);if(!(void 0===m?y===p||s(y,p,n,i,r):m)){w=!1;break}I||(I="constructor"==d)}if(w&&!I){var L=t.constructor,g=e.constructor;L==g||!("constructor"in t)||!("constructor"in e)||"function"==typeof L&&L instanceof L&&"function"==typeof g&&g instanceof g||(w=!1)}return r.delete(t),r.delete(e),w}(t,e,n,i,s,r))}function es(t,e,n,i,s){return t===e||(null==t||null==e||!C(t)&&!C(e)?t!=t&&e!=e:ts(t,e,n,i,es,s))}var ns=1,is=2;function ss(t){return t==t&&!x(t)}function rs(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}}function os(t){var e=function(t){for(var e=ie(t),n=e.length;n--;){var i=e[n],s=t[i];e[n]=[i,s,ss(s)]}return e}(t);return 1==e.length&&e[0][2]?rs(e[0][0],e[0][1]):function(n){return n===t||function(t,e,n,i){var s=n.length,r=s,o=!i;if(null==t)return!r;for(t=Object(t);s--;){var c=n[s];if(o&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++s<r;){var l=(c=n[s])[0],a=t[l],d=c[1];if(o&&c[2]){if(void 0===a&&!(l in t))return!1}else{var u=new $n;if(i)var M=i(a,d,l,t,e,u);if(!(void 0===M?es(d,a,ns|is,i,u):M))return!1}}return!0}(n,t,e)}}function cs(t,e){return null!=t&&e in Object(t)}function ls(t,e){return null!=t&&function(t,e,n){for(var i=-1,s=(e=mt(e,t)).length,r=!1;++i<s;){var c=gt(e[i]);if(!(r=null!=t&&n(t,c)))break;t=t[c]}return r||++i!=s?r:!!(s=null==t?0:t.length)&&Wt(s)&&zt(c,s)&&(o(t)||St(t))}(t,e,cs)}var as=1,ds=2;function us(t){return function(e){return null==e?void 0:e[t]}}function Ms(t){return N(t)?us(gt(t)):function(t){return function(e){return Ct(e,t)}}(t)}function ws(t){return"function"==typeof t?t:null==t?oe:"object"==typeof t?o(t)?function(t,e){return N(t)&&ss(e)?rs(gt(t),e):function(n){var i=Dt(n,t);return void 0===i&&i===e?ls(n,t):es(e,i,as|ds)}}(t[0],t[1]):os(t):Ms(t)}function Is(t,e){var n=-1,i=ne(t)?Array(t.length):[];return re(t,(function(t,s,r){i[++n]=e(t,s,r)})),i}function ys(t,e){return(o(t)?ut:Is)(t,ws(e))}function ps(t,e,n){var i=-1,s=t.length;e<0&&(e=-e>s?0:s+e),(n=n>s?s:n)<0&&(n+=s),s=e>n?0:n-e>>>0,e>>>=0;for(var r=Array(s);++i<s;)r[i]=t[i+e];return r}function ms(t){return t!=t}function Ls(t,e,n){return e==e?function(t,e,n){for(var i=n-1,s=t.length;++i<s;)if(t[i]===e)return i;return-1}(t,e,n):function(t,e,n,i){for(var s=t.length,r=n+(i?1:-1);i?r--:++r<s;)if(e(t[r],r,t))return r;return-1}(t,ms,n)}var gs=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function Cs(t){return gs.test(t)}var Ds="\\ud800-\\udfff",fs="["+Ds+"]",hs="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",bs="\\ud83c[\\udffb-\\udfff]",Ns="[^"+Ds+"]",xs="(?:\\ud83c[\\udde6-\\uddff]){2}",Zs="[\\ud800-\\udbff][\\udc00-\\udfff]",Ts="(?:"+hs+"|"+bs+")"+"?",Xs="[\\ufe0e\\ufe0f]?",Ss=Xs+Ts+("(?:\\u200d(?:"+[Ns,xs,Zs].join("|")+")"+Xs+Ts+")*"),As="(?:"+[Ns+hs+"?",hs,xs,Zs,fs].join("|")+")",Ys=RegExp(bs+"(?="+bs+")|"+As+Ss,"g");function vs(t){return Cs(t)?function(t){return t.match(Ys)||[]}(t):function(t){return t.split("")}(t)}function Gs(t,e,n){if((t=pt(t))&&(n||void 0===e))return De(t);if(!t||!(e=yt(e)))return t;var i=vs(t),s=vs(e),r=function(t,e){for(var n=-1,i=t.length;++n<i&&Ls(e,t[n],0)>-1;);return n}(i,s),o=function(t,e){for(var n=t.length;n--&&Ls(e,t[n],0)>-1;);return n}(i,s)+1;return function(t,e,n){var i=t.length;return n=void 0===n?i:n,!e&&n>=i?t:ps(t,e,n)}(i,r,o).join("")}function Es(t,e){if(!ae(t))return[];if(!ae(e))return[];let n=function(t,e){return ae(t)&&ae(e)?t.split(e):[]}(t,e);n=ys(n,Gs);let i=[];return ce(n,(function(t){ae(t)&&i.push(t)})),i}function js(t){return function(t){let e=Dt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(!e.existsSync(t))return{success:"file does not exist: "+t};if(!cn(t,{fs:e}))return{error:"input path is not a file: "+t};try{e.unlinkSync(t)}catch(t){return{error:t}}return{success:"done: "+t}}(t,{fs:e})}var zs={};!function(t,e){var n,i;t.exports=(n=r,i={},function(t,e){t.exports=function(t){var e={};!function(t){var e=Object.prototype.hasOwnProperty,n="~";function i(){}function s(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function r(t,e,i,r,o){if("function"!=typeof i)throw new TypeError("The listener must be a function");var c=new s(i,r||t,o),l=n?n+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],c]:t._events[l].push(c):(t._events[l]=c,t._eventsCount++),t}function o(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function c(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),c.prototype.eventNames=function(){var t,i,s=[];if(0===this._eventsCount)return s;for(i in t=this._events)e.call(t,i)&&s.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(t)):s},c.prototype.listeners=function(t){var e=n?n+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var s=0,r=i.length,o=new Array(r);s<r;s++)o[s]=i[s].fn;return o},c.prototype.listenerCount=function(t){var e=n?n+t:t,i=this._events[e];return i?i.fn?1:i.length:0},c.prototype.emit=function(t,e,i,s,r,o){var c=n?n+t:t;if(!this._events[c])return!1;var l,a,d=this._events[c],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(t,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,i),!0;case 4:return d.fn.call(d.context,e,i,s),!0;case 5:return d.fn.call(d.context,e,i,s,r),!0;case 6:return d.fn.call(d.context,e,i,s,r,o),!0}for(a=1,l=new Array(u-1);a<u;a++)l[a-1]=arguments[a];d.fn.apply(d.context,l)}else{var M,w=d.length;for(a=0;a<w;a++)switch(d[a].once&&this.removeListener(t,d[a].fn,void 0,!0),u){case 1:d[a].fn.call(d[a].context);break;case 2:d[a].fn.call(d[a].context,e);break;case 3:d[a].fn.call(d[a].context,e,i);break;case 4:d[a].fn.call(d[a].context,e,i,s);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[a].fn.apply(d[a].context,l)}}return!0},c.prototype.on=function(t,e,n){return r(this,t,e,n,!1)},c.prototype.once=function(t,e,n){return r(this,t,e,n,!0)},c.prototype.removeListener=function(t,e,i,s){var r=n?n+t:t;if(!this._events[r])return this;if(!e)return o(this,r),this;var c=this._events[r];if(c.fn)c.fn!==e||s&&!c.once||i&&c.context!==i||o(this,r);else{for(var l=0,a=[],d=c.length;l<d;l++)(c[l].fn!==e||s&&!c[l].once||i&&c[l].context!==i)&&a.push(c[l]);a.length?this._events[r]=1===a.length?a[0]:a:o(this,r)}return this},c.prototype.removeAllListeners=function(t){var e;return t?(e=n?n+t:t,this._events[e]&&o(this,e)):(this._events=new i,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=n,c.EventEmitter=c,t.exports=c}({get exports(){return e},set exports(t){e=t}});var n=e;let i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let e=(s="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxzPWEudG9TdHJpbmcsZj11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIHI9Yy5jYWxsKHQsZiksZT10W2ZdO3RyeXt0W2ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89cy5jYWxsKHQpO3JldHVybiBuJiYocj90W2ZdPWU6ZGVsZXRlIHRbZl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfXZhciBfPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIGQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmdih0KT09X312YXIgYj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxnPS9eXHcqJC87ZnVuY3Rpb24gaih0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1yfHwiZnVuY3Rpb24iPT1yKX12YXIgUz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsTz0iW29iamVjdCBGdW5jdGlvbl0iLG09IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix3PSJbb2JqZWN0IFByb3h5XSI7dmFyICQseD1pWyJfX2NvcmUtanNfc2hhcmVkX18iXSxSPSgkPS9bXi5dKyQvLmV4ZWMoeCYmeC5rZXlzJiZ4LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIiskOiIiO3ZhciB6PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxBPUZ1bmN0aW9uLnByb3RvdHlwZSxOPU9iamVjdC5wcm90b3R5cGUsUD1BLnRvU3RyaW5nLGs9Ti5oYXNPd25Qcm9wZXJ0eSxFPVJlZ0V4cCgiXiIrUC5jYWxsKGspLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO2Z1bmN0aW9uIEModCl7aWYoIWoodCl8fChyPXQsUiYmUiBpbiByKSlyZXR1cm4hMTt2YXIgcixlPWZ1bmN0aW9uKHQpe2lmKCFqKHQpKXJldHVybiExO3ZhciByPXYodCk7cmV0dXJuIHI9PU98fHI9PW18fHI9PVN8fHI9PXd9KHQpP0U6RjtyZXR1cm4gZS50ZXN0KGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gei5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0odCkpfWZ1bmN0aW9uIEkodCxyKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W3JdfSh0LHIpO3JldHVybiBDKGUpP2U6dm9pZCAwfXZhciBUPUkoT2JqZWN0LCJjcmVhdGUiKTt2YXIgTT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gTCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBVKHQscil7Zm9yKHZhciBlLG4sbz10Lmxlbmd0aDtvLS07KWlmKChlPXRbb11bMF0pPT09KG49cil8fGUhPWUmJm4hPW4pcmV0dXJuIG87cmV0dXJuLTF9TC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVQ/VChudWxsKTp7fSx0aGlzLnNpemU9MH0sTC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxMLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihUKXt2YXIgZT1yW3RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PWU/dm9pZCAwOmV9cmV0dXJuIE0uY2FsbChyLHQpP3JbdF06dm9pZCAwfSxMLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gVD92b2lkIDAhPT1yW3RdOnEuY2FsbChyLHQpfSxMLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPVQmJnZvaWQgMD09PXI/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnIsdGhpc307dmFyIEQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBHKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sRy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1VKHIsdCk7cmV0dXJuIShlPDApJiYoZT09ci5sZW5ndGgtMT9yLnBvcCgpOkQuY2FsbChyLGUsMSksLS10aGlzLnNpemUsITApfSxHLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVUocix0KTtyZXR1cm4gZTwwP3ZvaWQgMDpyW2VdWzFdfSxHLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFUodGhpcy5fX2RhdGFfXyx0KT4tMX0sRy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPVUoZSx0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxlLnB1c2goW3Qscl0pKTplW25dWzFdPXIsdGhpc307dmFyIFc9SShpLCJNYXAiKTtmdW5jdGlvbiBCKHQscil7dmFyIGUsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2YoZT1yKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09ZTpudWxsPT09ZSk/b1sic3RyaW5nIj09dHlwZW9mIHI/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBIKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUgucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgTCxtYXA6bmV3KFd8fEcpLHN0cmluZzpuZXcgTH19LEgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj1CKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gQih0aGlzLHQpLmdldCh0KX0sSC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBCKHRoaXMsdCkuaGFzKHQpfSxILnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT1CKHRoaXMsdCksbj1lLnNpemU7cmV0dXJuIGUuc2V0KHQsciksdGhpcy5zaXplKz1lLnNpemU9PW4/MDoxLHRoaXN9O3ZhciBKPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBLKHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoSik7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1yP3IuYXBwbHkodGhpcyxuKTpuWzBdLGk9ZS5jYWNoZTtpZihpLmhhcyhvKSlyZXR1cm4gaS5nZXQobyk7dmFyIHU9dC5hcHBseSh0aGlzLG4pO3JldHVybiBlLmNhY2hlPWkuc2V0KG8sdSl8fGksdX07cmV0dXJuIGUuY2FjaGU9bmV3KEsuQ2FjaGV8fEgpLGV9Sy5DYWNoZT1IO3ZhciBRLFYsWCxZPS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLFo9L1xcKFxcKT8vZyx0dD0oUT1mdW5jdGlvbih0KXt2YXIgcj1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJnIucHVzaCgiIiksdC5yZXBsYWNlKFksKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShaLCIkMSIpOmV8fHQpfSkpLHJ9LFY9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09WC5zaXplJiZYLmNsZWFyKCksdH0pKSxYPVYuY2FjaGUsVikscnQ9dHQ7dmFyIGV0PTEvMCxudD11P3UucHJvdG90eXBlOnZvaWQgMCxvdD1udD9udC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gaXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGUodCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsaXQpKyIiO2lmKGQodCkpcmV0dXJuIG90P290LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LWV0PyItMCI6cn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4gbnVsbD09dD8iIjppdCh0KX1mdW5jdGlvbiBhdCh0LHIpe3JldHVybiBlKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihlKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFkKHQpKXx8Zy50ZXN0KHQpfHwhYi50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06cnQodXQodCkpfXZhciBjdD0xLzA7ZnVuY3Rpb24gc3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxkKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1jdD8iLTAiOnJ9ZnVuY3Rpb24gZnQodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1hdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbc3QocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIGx0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBodCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHl0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIF90KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFodCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISgheXQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIXB0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIXZ0KHQpKSkpKX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4hKCF5dCh0KXx8IiI9PT10KX12YXIgYnQ9L1xzLzt2YXIgZ3Q9L15ccysvO2Z1bmN0aW9uIGp0KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZidC50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSh0KSsxKS5yZXBsYWNlKGd0LCIiKTp0fXZhciBTdD1OYU4sT3Q9L15bLStdMHhbMC05YS1mXSskL2ksbXQ9L14wYlswMV0rJC9pLHd0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24geHQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGQodCkpcmV0dXJuIFN0O2lmKGoodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWoocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PWp0KHQpO3ZhciBlPW10LnRlc3QodCk7cmV0dXJuIGV8fHd0LnRlc3QodCk/JHQodC5zbGljZSgyKSxlPzI6OCk6T3QudGVzdCh0KT9TdDordH12YXIgUnQ9MS8wLHp0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD14dCh0KSk9PT1SdHx8dD09PS1SdD8odDwwPy0xOjEpKnp0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBBdCh0KXt2YXIgcj1GdCh0KSxlPXIlMTtyZXR1cm4gcj09cj9lP3ItZTpyOjB9ZnVuY3Rpb24gTnQodCl7bGV0IHI9ITE7aWYoZHQodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYodnQodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBQdCh0KXtpZighTnQodCkpcmV0dXJuIDA7cmV0dXJuIEZ0KHQpfWZ1bmN0aW9uIGt0KHQpe3JldHVybiEhTnQodCkmJih0PVB0KHQpLCJudW1iZXIiPT10eXBlb2Yocj10KSYmcj09QXQocikpO3ZhciByfXZhciBFdD1pLmlzRmluaXRlLEN0PU1hdGgubWluO3ZhciBJdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9eHQodCksKGU9bnVsbD09ZT8wOkN0KEF0KGUpLDI5MikpJiZFdCh0KSl7dmFyIG49KHV0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPSh1dChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxUdD1JdDtmdW5jdGlvbiBNdCh0KXtpZighTnQodCkpcmV0dXJuIDA7dD1QdCh0KTtsZXQgcj1UdCh0KTtyZXR1cm4iMCI9PT1TdHJpbmcocik/MDpyfWZ1bmN0aW9uIHF0KHQpe2lmKCFrdCh0KSlyZXR1cm4hMTtyZXR1cm4gTXQodCk+PTB9ZnVuY3Rpb24gTHQodCxyKXtpZighZHQodCkpcmV0dXJuIiI7aWYoIXF0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1NdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gVXQodCxyKXtyZXR1cm4gZHQodCkmJnF0KHIpPzA9PT0ocj1NdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBkdCh0KSYmcXQocik/MD09PShyPU10KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIER0KHQpe2lmKCFkdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUx0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4iOiI9PT1MdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEd0KHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPWZ1bmN0aW9uKHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfSh0PXIucGF0aCk7aWYoIWR0KGUpKXJldHVybiB0O2xldCBuPUR0KHQ9VXQodCxlLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9ZnVuY3Rpb24gV3QodCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO2lmKCFlLmV4aXN0c1N5bmModCkpcmV0dXJuITE7bGV0IG49ZS5sc3RhdFN5bmModCk7cmV0dXJuIW4uaXNGaWxlKCkmJiFuLmlzU3ltYm9saWNMaW5rKCl9ZnVuY3Rpb24gQnQodCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO3JldHVybiEhZS5leGlzdHNTeW5jKHQpJiYoIWUubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFlLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBIdCh0LHI9e30pe2xldCBlPWZ0KHIsImZzIik7aWYoIWUuZXhpc3RzU3luYyh0KSlyZXR1cm57c3VjY2VzczoiZmlsZSBkb2VzIG5vdCBleGlzdDogIit0fTtpZighQnQodCx7ZnM6ZX0pKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBpcyBub3QgYSBmaWxlOiAiK3R9O3RyeXtlLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fXJldHVybntzdWNjZXNzOiJkb25lOiAiK3R9fWFzeW5jIGZ1bmN0aW9uIEp0KHQscixlLG49e30pe2xldCBvPSIiLGk9ZnQobiwiZnMiKTtpZighcHQodT1yKXx8MD09PXUubGVuZ3RofHwxPT09dS5sZW5ndGgmJl90KHVbMF0pKXRocm93IG5ldyBFcnJvcigiZnBzSW4gaW4gbm90IGFuIGVmZmVjdGl2ZSBhcnJheSIpO3ZhciB1O2xldCBhPUd0KGUpO1d0KGEse2ZzOml9KXx8ZnVuY3Rpb24odCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO2lmKFd0KHQse2ZzOmV9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKGUuZXhpc3RzU3luYyh0KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07dHJ5e2UubWtkaXJTeW5jKHQse3JlY3Vyc2l2ZTohMH0pfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX19KGEse2ZzOml9KTtsZXQgYz1sdCgpO3RyeXtsZXQgbj1pLmNyZWF0ZVdyaXRlU3RyZWFtKGUpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtsZXQgZT1yW3RdO2lmKCFCdChlLHtmczppfSkpdGhyb3cgbmV3IEVycm9yKGBmcEluWyR7ZX1dIGlzIG5vdCBhIGZpbGVgKTtsZXQgdT0oKT0+e2xldCB0PWx0KCkscj1pLmNyZWF0ZVJlYWRTdHJlYW0oZSk7cmV0dXJuIHIub24oImVycm9yIiwocj0+e289ci5tZXNzYWdlLHQucmVqZWN0KHIpfSkpLHIub24oImVuZCIsKCgpPT57SHQoZSx7ZnM6aX0pLHQucmVzb2x2ZSgpfSkpLHIucGlwZShuLHtlbmQ6ITF9KSx0fTthd2FpdCB1KCl9bi5lbmQoKSxuLm9uKCJlcnJvciIsKHQ9PntvPXQubWVzc2FnZSxjLnJlamVjdChvKX0pKSxuLm9uKCJmaW5pc2giLCgoKT0+e2xldCByPXtmaWxlbmFtZTp0LHBhdGg6ZX07Yy5yZXNvbHZlKHIpfSkpfWNhdGNoKHQpe289dC5tZXNzYWdlLGMucmVqZWN0KG8pfXJldHVybiBjfWxldCBtZXJnZVNsaWNlcz1hc3luYyhlLG4sbyk9PntsZXQgaT1bXTtmb3IobGV0IHI9MDtyPG47cisrKXtsZXQgbj10LmpvaW4obyxgJHtlfV8ke3J9YCk7aS5wdXNoKG4pfWxldCB1PXQuam9pbihvLGUpLGE9YXdhaXQgYXN5bmMgZnVuY3Rpb24odCxlLG4pe3JldHVybiBKdCh0LGUsbix7ZnM6cn0pfShlLGksdSk7cmV0dXJuIHIud3JpdGVGaWxlU3luYyhgJHt1fS5kb25lYCwiIiwidXRmOCIpLGF9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VTbGljZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VTbGljZXMKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(s,"base64").toString("utf8"));var s;function r(){let i=new n,s=function(e){try{return new t.Worker(e,{eval:!0})}catch(t){o(t)}}(e);if(!s)return o("invalid worker"),null;function r(){let t=function(){let t,e,n=new Promise((function(){t=arguments[0],e=arguments[1]}));return n.resolve=t,n.reject=e,n}(),e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let s=0;s<t;s++)e[s]=n[0|Math.random()*i];return e.join("")}(),n={mode:"call",id:e,fun:"main",input:[...arguments]};return s.postMessage(n),i.once(e,(e=>{"success"===e.state?t.resolve(e.msg):t.reject(e.msg)})),t}function o(t){i.emit("error",t)}return s.on("message",(function(t){let e=t,n=e.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(e.evName,e.msg),"return"===n&&i.emit(e.id,e))})),s.on("error",o),s.on("exit",(t=>{1!==t&&o("exit code["+t+"] !== 1")})),function(){let t={mode:"init",type:"function",input:[...arguments]};s.postMessage(t)}([...arguments]),i.main=r,i.main=r,i.terminate=function(){s?(s.terminate(),s=void 0):o("worker has been terminated")},i}i=async function(){let t=[...arguments],e=r();return await e.main(...t).finally((()=>{e.terminate()}))}}();try{process.on("unhandledRejection",(t=>{console.log("outer:unhandledRejection",t)})),process.on("uncaughtException",(t=>{console.log("outer:uncaughtException",t)})),process.on("uncaughtExceptionMonitor",(t=>{console.log("outer:uncaughtExceptionMonitor",t)}))}catch(t){}return i}(n)}({get exports(){return i},set exports(t){i=t}}),i)}({get exports(){return zs},set exports(t){zs=t}});var Ks=zs;let Ws={push:(t,e,n)=>{let i=`${_n()}|${yn(6)}|${t}`;return setTimeout((()=>{Ks(t,e,n).catch((t=>{console.log(t)}))}),1),i},get:(e,n)=>{let i="";if(!ae(e))return i=`invalid id[${e}]`,console.log(i),{state:"error",msg:i,path:""};let s=Dt(Es(e,"|"),2,"");if(!ae(s))return i=`can not find fileHash in id[${e}]`,console.log(i),{state:"error",msg:i,path:""};let r=t.resolve(n,s),o=t.resolve(n,`${s}.done`),c=ln(r),l=ln(o),a=c&&l;return!c&&l&&js(o),{state:a?"success":"merging",msg:"",path:r}}};var Vs={};!function(t,e){var n,i;t.exports=(n=r,i={},function(t,e){t.exports=function(t){var e={};!function(t){var e=Object.prototype.hasOwnProperty,n="~";function i(){}function s(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function r(t,e,i,r,o){if("function"!=typeof i)throw new TypeError("The listener must be a function");var c=new s(i,r||t,o),l=n?n+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],c]:t._events[l].push(c):(t._events[l]=c,t._eventsCount++),t}function o(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function c(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),c.prototype.eventNames=function(){var t,i,s=[];if(0===this._eventsCount)return s;for(i in t=this._events)e.call(t,i)&&s.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(t)):s},c.prototype.listeners=function(t){var e=n?n+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var s=0,r=i.length,o=new Array(r);s<r;s++)o[s]=i[s].fn;return o},c.prototype.listenerCount=function(t){var e=n?n+t:t,i=this._events[e];return i?i.fn?1:i.length:0},c.prototype.emit=function(t,e,i,s,r,o){var c=n?n+t:t;if(!this._events[c])return!1;var l,a,d=this._events[c],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(t,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,i),!0;case 4:return d.fn.call(d.context,e,i,s),!0;case 5:return d.fn.call(d.context,e,i,s,r),!0;case 6:return d.fn.call(d.context,e,i,s,r,o),!0}for(a=1,l=new Array(u-1);a<u;a++)l[a-1]=arguments[a];d.fn.apply(d.context,l)}else{var M,w=d.length;for(a=0;a<w;a++)switch(d[a].once&&this.removeListener(t,d[a].fn,void 0,!0),u){case 1:d[a].fn.call(d[a].context);break;case 2:d[a].fn.call(d[a].context,e);break;case 3:d[a].fn.call(d[a].context,e,i);break;case 4:d[a].fn.call(d[a].context,e,i,s);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[a].fn.apply(d[a].context,l)}}return!0},c.prototype.on=function(t,e,n){return r(this,t,e,n,!1)},c.prototype.once=function(t,e,n){return r(this,t,e,n,!0)},c.prototype.removeListener=function(t,e,i,s){var r=n?n+t:t;if(!this._events[r])return this;if(!e)return o(this,r),this;var c=this._events[r];if(c.fn)c.fn!==e||s&&!c.once||i&&c.context!==i||o(this,r);else{for(var l=0,a=[],d=c.length;l<d;l++)(c[l].fn!==e||s&&!c[l].once||i&&c[l].context!==i)&&a.push(c[l]);a.length?this._events[r]=1===a.length?a[0]:a:o(this,r)}return this},c.prototype.removeAllListeners=function(t){var e;return t?(e=n?n+t:t,this._events[e]&&o(this,e)):(this._events=new i,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=n,c.EventEmitter=c,t.exports=c}({get exports(){return e},set exports(t){e=t}});var n=e;let i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let e=(s="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGQ9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBiKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmQmJmQgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWIodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSx3PWouaGFzT3duUHJvcGVydHksbT1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLE89XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJncuY2FsbCh0LCJjYWxsZWUiKSYmIW0uY2FsbCh0LCJjYWxsZWUiKX0sUz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMseD1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsej14JiZ4LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCxFPSh6P3ouaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0saz05MDA3MTk5MjU0NzQwOTkxLEY9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uICQodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/azplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmRi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIFA9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1QfXZhciBJPXt9O0lbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUlbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUlbIltvYmplY3QgSW50OEFycmF5XSJdPUlbIltvYmplY3QgSW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IEludDMyQXJyYXldIl09SVsiW29iamVjdCBVaW50OEFycmF5XSJdPUlbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09SVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLElbIltvYmplY3QgQXJndW1lbnRzXSJdPUlbIltvYmplY3QgQXJyYXldIl09SVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1JWyJbb2JqZWN0IEJvb2xlYW5dIl09SVsiW29iamVjdCBEYXRhVmlld10iXT1JWyJbb2JqZWN0IERhdGVdIl09SVsiW29iamVjdCBFcnJvcl0iXT1JWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUlbIltvYmplY3QgTWFwXSJdPUlbIltvYmplY3QgTnVtYmVyXSJdPUlbIltvYmplY3QgT2JqZWN0XSJdPUlbIltvYmplY3QgUmVnRXhwXSJdPUlbIltvYmplY3QgU2V0XSJdPUlbIltvYmplY3QgU3RyaW5nXSJdPUlbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxUPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsUj1UJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsVT1SJiZSLmV4cG9ydHM9PT1UJiZ1LnByb2Nlc3MsTj1mdW5jdGlvbigpe3RyeXt2YXIgdD1SJiZSLnJlcXVpcmUmJlIucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxVJiZVLmJpbmRpbmcmJlUuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksRD1OJiZOLmlzVHlwZWRBcnJheSxCPUQ/KE09RCxmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiZMKHQubGVuZ3RoKSYmISFJW2IodCldfSxDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVyh0LGUpe3ZhciByPVModCksbj0hciYmTyh0KSxvPSFyJiYhbiYmRSh0KSx1PSFyJiYhbiYmIW8mJkIodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIUMuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8JChmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBxPU9iamVjdC5wcm90b3R5cGU7dmFyIFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLEc9VixIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSih0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxxKSlyZXR1cm4gRyh0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlILmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEsodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFE9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFg9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFLKHQpKXJldHVybiExO3ZhciBlPWIodCk7cmV0dXJuIGU9PVh8fGU9PVl8fGU9PVF8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJkwodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP1codCk6Sih0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKFModCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGR0PXZ0Lmhhc093blByb3BlcnR5LGJ0PVJlZ0V4cCgiXiIreXQuY2FsbChkdCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSyh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/YnQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3Iiksd3Q9X3QoYSwiTWFwIiksbXQ9X3QoYSwiUHJvbWlzZSIpLE90PV90KGEsIlNldCIpLFN0PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix4dD0iW29iamVjdCBQcm9taXNlXSIsenQ9IltvYmplY3QgU2V0XSIsRXQ9IltvYmplY3QgV2Vha01hcF0iLGt0PSJbb2JqZWN0IERhdGFWaWV3XSIsRnQ9bHQoanQpLCR0PWx0KHd0KSxQdD1sdChtdCksTHQ9bHQoT3QpLEl0PWx0KFN0KSxNdD1iOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1rdHx8d3QmJk10KG5ldyB3dCkhPUF0fHxtdCYmTXQobXQucmVzb2x2ZSgpKSE9eHR8fE90JiZNdChuZXcgT3QpIT16dHx8U3QmJk10KG5ldyBTdCkhPUV0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWIodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBGdDpyZXR1cm4ga3Q7Y2FzZSAkdDpyZXR1cm4gQXQ7Y2FzZSBQdDpyZXR1cm4geHQ7Y2FzZSBMdDpyZXR1cm4genQ7Y2FzZSBJdDpyZXR1cm4gRXR9cmV0dXJuIGV9KTt2YXIgVHQ9TXQsUnQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gVXQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgTnQ9VXQoImxlbmd0aCIpLER0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBCdCh0KXtyZXR1cm4gRHQudGVzdCh0KX12YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsV3Q9IlsiK0N0KyJdIixxdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFZ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEd0PSJbXiIrQ3QrIl0iLEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixKdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsS3Q9Iig/OiIrcXQrInwiK1Z0KyIpIisiPyIsUXQ9IltcXHVmZTBlXFx1ZmUwZl0/IixYdD1RdCtLdCsoIig/OlxcdTIwMGQoPzoiK1tHdCxIdCxKdF0uam9pbigifCIpKyIpIitRdCtLdCsiKSoiKSxZdD0iKD86IitbR3QrcXQrIj8iLHF0LEh0LEp0LFd0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChWdCsiKD89IitWdCsiKXwiK1l0K1h0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOk50KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhUyhlKSYmZyhlKSYmYihlKT09UnQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1UdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkoodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KHd0fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIXd0fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGRlPTEsYmU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZkZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZiZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBkPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09ZCl7aWYoZCljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIHdlKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciBtZT0xLE9lPTIsU2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix4ZT0iW29iamVjdCBFcnJvcl0iLHplPSJbb2JqZWN0IE1hcF0iLEVlPSJbb2JqZWN0IE51bWJlcl0iLGtlPSJbb2JqZWN0IFJlZ0V4cF0iLEZlPSJbb2JqZWN0IFNldF0iLCRlPSJbb2JqZWN0IFN0cmluZ10iLFBlPSJbb2JqZWN0IFN5bWJvbF0iLExlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsSWU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxUZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBSZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFVlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsTmU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxEZT1OZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksUmUoTmUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBVZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBCZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIFModCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LERlKX12YXIgQ2U9MSxXZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxZT0xLFZlPSJbb2JqZWN0IEFyZ3VtZW50c10iLEdlPSJbb2JqZWN0IEFycmF5XSIsSGU9IltvYmplY3QgT2JqZWN0XSIsSmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBLZSh0LGUscixuLG8sdSl7dmFyIGk9Uyh0KSxhPVMoZSksYz1pP0dlOlR0KHQpLGY9YT9HZTpUdChlKSxzPShjPWM9PVZlP0hlOmMpPT1IZSxsPShmPWY9PVZlP0hlOmYpPT1IZSxwPWM9PWY7aWYocCYmRSh0KSl7aWYoIUUoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEIodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIEllOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBTZTpjYXNlIEFlOmNhc2UgRWU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHhlOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBrZTpjYXNlICRlOnJldHVybiB0PT1lKyIiO2Nhc2UgemU6dmFyIGE9amU7Y2FzZSBGZTp2YXIgYz1uJm1lO2lmKGF8fChhPXdlKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1PZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIFBlOmlmKFRlKXJldHVybiBUZS5jYWxsKHQpPT1UZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImcWUpKXt2YXIgaD1zJiZKZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZKZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxkPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGQscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJkNlLGE9QmUodCksYz1hLmxlbmd0aDtpZihjIT1CZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpXZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sZD1lW3NdO2lmKG4pdmFyIGI9aT9uKGQseSxzLGUsdCx1KTpuKHksZCxzLHQsZSx1KTtpZighKHZvaWQgMD09PWI/eT09PWR8fG8oeSxkLHIsbix1KTpiKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIFFlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6S2UodCxlLHIsbixRZSxvKSl9dmFyIFhlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUsodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9RZShzLGYsWGV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmYih0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihTKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGRyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihTKHQpKXJldHVybiByZSh0LGRyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGJyKHQpe3JldHVybiBudWxsPT10PyIiOmRyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIFModCk/dDppcih0LGUpP1t0XTpwcihicih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gd3IodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiBtcih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6d3IodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJkwobykmJiQoaSxvKSYmKFModCl8fE8odCkpfSh0LGUsT3IpfXZhciBBcj0xLHhyPTI7ZnVuY3Rpb24genIodCl7cmV0dXJuIGlyKHQpP1V0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHdyKGUsdCl9fSh0KX1mdW5jdGlvbiBFcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P1ModCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPW1yKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP1NyKHIsdCk6UWUoZSxuLEFyfHhyKX19KHRbMF0sdFsxXSk6ZXIodCk6enIodCl9ZnVuY3Rpb24ga3IodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuKFModCk/cmU6a3IpKHQsRXIoZSkpfXZhciAkcj0vXHMvO3ZhciBQcj0vXlxzKy87ZnVuY3Rpb24gTHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJiRyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoUHIsIiIpOnR9ZnVuY3Rpb24gSXIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gVHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFJyPSJcXHVkODAwLVxcdWRmZmYiLFVyPSJbIitScisiXSIsTnI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixEcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixCcj0iW14iK1JyKyJdIixDcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsV3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHFyPSIoPzoiK05yKyJ8IitEcisiKSIrIj8iLFZyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsR3I9VnIrcXIrKCIoPzpcXHUyMDBkKD86IitbQnIsQ3IsV3JdLmpvaW4oInwiKSsiKSIrVnIrcXIrIikqIiksSHI9Iig/OiIrW0JyK05yKyI/IixOcixDcixXcixVcl0uam9pbigifCIpKyIpIixKcj1SZWdFeHAoRHIrIig/PSIrRHIrIil8IitIcitHciwiZyIpO2Z1bmN0aW9uIEtyKHQpe3JldHVybiBCdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChKcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIFFyKHQsZSxyKXtpZigodD1icih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gTHIodCk7aWYoIXR8fCEoZT1kcihlKSkpcmV0dXJuIHQ7dmFyIG49S3IodCksbz1LcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlRyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZUcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBJcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gWHIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVhyKHQpKXJldHVybltdO2lmKCFYcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBYcih0KSYmWHIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPUZyKHIsUXIpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtYcih0KSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gWnIodCl7bGV0IGU9ITE7aWYoWHIodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHRuPU5hTixlbj0vXlstK10weFswLTlhLWZdKyQvaSxybj0vXjBiWzAxXSskL2ksbm49L14wb1swLTddKyQvaSxvbj1wYXJzZUludDtmdW5jdGlvbiB1bih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIHRuO2lmKEsodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUsoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUxyKHQpO3ZhciByPXJuLnRlc3QodCk7cmV0dXJuIHJ8fG5uLnRlc3QodCk/b24odC5zbGljZSgyKSxyPzI6OCk6ZW4udGVzdCh0KT90bjordH12YXIgYW49MS8wLGNuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBmbih0KXtyZXR1cm4gdD8odD11bih0KSk9PT1hbnx8dD09PS1hbj8odDwwPy0xOjEpKmNuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBzbih0KXt2YXIgZT1mbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9ZnVuY3Rpb24gbG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3JldHVybiBmbih0KX1mdW5jdGlvbiBwbih0KXtyZXR1cm4hIVpyKHQpJiYodD1sbih0KSwibnVtYmVyIj09dHlwZW9mKGU9dCkmJmU9PXNuKGUpKTt2YXIgZX12YXIgaG49YS5pc0Zpbml0ZSx2bj1NYXRoLm1pbjt2YXIgeW49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXVuKHQpLChyPW51bGw9PXI/MDp2bihzbihyKSwyOTIpKSYmaG4odCkpe3ZhciBuPShicih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oYnIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksZG49eW47ZnVuY3Rpb24gYm4odCl7aWYoIVpyKHQpKXJldHVybiAwO3Q9bG4odCk7bGV0IGU9ZG4odCk7cmV0dXJuIjAiPT09U3RyaW5nKGUpPzA6ZX1mdW5jdGlvbiBnbih0LGU9e30pe2xldCByPW1yKGUsImZzIik7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIF9uKHQpe3JldHVybiBnbih0LHtmczplfSl9ZnVuY3Rpb24gam4odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiB3bih0LGU9e30pe2xldCByPW1yKGUsImZzIik7aWYoIXIuZXhpc3RzU3luYyh0KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBtbih0LGU9MSxyPXt9KXtsZXQgbj1tcihyLCJwYXRoIiksbz1tcihyLCJmcyIpO2lmKCF3bih0LHtmczpvfSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtsZXQgdT1bXTt2YXIgaSxhO3JldHVybiB1PWZ1bmN0aW9uKHQsZT0xLHI9e30pe2xldCBuPTEsbz1tcihyLCJwYXRoIiksdT1tcihyLCJmcyIpO2lmKCF3bih0LHtmczp1fSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtyZXR1cm4gZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gd24ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9KHQsZSx7cGF0aDpuLGZzOm99KSxhPXtpc0ZvbGRlcjohMX0sdT0oUyhpPXUpP1JlOmpuKShpLEVyKGEpKSx1PUZyKHUsKHQ9PihkZWxldGUgdC5pc0ZvbGRlcix0KSkpLHV9Y29uc3QgT249bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gU24odCxlPXt9KXtsZXQgcj1tcihlLCJmcyIpLG49bXIoZSwiY2h1bmtTaXplIik7aWYoWnIobil8fChuPTY3MTA4ODY0KSxuPWxuKG4pLCFnbih0LHtmczpyfSkpcmV0dXJuIFByb21pc2UucmVqZWN0KCJmcCBpcyBub3QgYSBmaWxlIik7bGV0IG89ZnVuY3Rpb24oKXtsZXQgdCxlLHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHIucmVzb2x2ZT10LHIucmVqZWN0PWUscn0oKTt0cnl7bGV0e2NyZWF0ZTY0OmV9PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjp1LGRpZ2VzdDMyOmksaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLHUpe2wodCk7Y29uc3QgaT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQoaSkscigwLGUpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQoaSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1kLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksaS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldChpKSx1KG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3Qgdj0ybioqNjRuLTFuO2Z1bmN0aW9uIHkodCl7cmV0dXJuIHQmdn1jb25zdCBkPW5ldyBUZXh0RW5jb2RlcixiPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1iKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGQuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCkseShuKDAsZC5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9Yik9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWIpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9Yik9PnAoNDgsdCxvLHUsaSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx5KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHkpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKE9uKSkuaW5zdGFuY2UpfSgpLHU9ZSgpLGk9ci5jcmVhdGVSZWFkU3RyZWFtKHQse2hpZ2hXYXRlck1hcms6bn0pO2kub24oImRhdGEiLCh0PT57dS51cGRhdGUodCl9KSksaS5vbigiZW5kIiwoKCk9PntsZXQgdD11LmRpZ2VzdCgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpO28ucmVzb2x2ZSh0KX0pKSxpLm9uKCJlcnJvciIsby5yZWplY3QpfWNhdGNoKHQpe28ucmVqZWN0KHQudG9TdHJpbmcoKSl9cmV0dXJuIG99bGV0IGNoZWNrVG90YWxIYXNoPWFzeW5jKHIsbixvLHUpPT57bGV0IGk9dC5qb2luKHUsbyksYT0hMTtpZihhPV9uKGkpLCFacihyKSl7cmV0dXJue2Vycm9yOiJpbnZhbGlkIGZpbGVTaXplIGluIHBheWxvYWQifX1sZXQgYz0hMTtpZihhKXtsZXQgdD0tMTt0cnl7dD1lLnN0YXRTeW5jKGkpLnNpemV9Y2F0Y2godCl7Y29uc29sZS5sb2coImNoZWNrIHRvdGFsIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIixpLHQpfWM9cj09PXR9bGV0IGY9ITE7YSYmYyYmYXdhaXQgZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4gU24odCx7ZnM6ZSwuLi5yfSl9KGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxfbihpKSksY29uc29sZS5sb2codCksZj0hMX0pKTtsZXQgcz1bXTtpZighZil7aXQoZnVuY3Rpb24ocixuPTEpe3JldHVybiBtbihyLG4se3BhdGg6dCxmczplfSl9KHUpLCh0PT57bGV0IHI9dC5uYW1lLmluZGV4T2YoYCR7b31fYCk+PTAsdT0hMTt0cnl7dT1lLnN0YXRTeW5jKHQucGF0aCkuc2l6ZT09PW59Y2F0Y2goZSl7Y29uc29sZS5sb2coImNoZWNrIGVhY2ggZmlsZSBzaXplOiBmcy5zdGF0U3luYyhwYXRoRmlsZSkiLHQucGF0aCxlKX1pZihyJiZ1KXtsZXQgZT1Zcih0Lm5hbWUsYCR7b31fYCkscj0oYT1udWxsPT0oaT1lKT8wOmkubGVuZ3RoKT9pW2EtMV06dm9pZCAwO2lmKCFmdW5jdGlvbih0KXtyZXR1cm4hIXBuKHQpJiZibih0KT49MH0ocikpdGhyb3cgY29uc29sZS5sb2coInYubmFtZSIsdC5uYW1lKSxjb25zb2xlLmxvZygicyIsZSksbmV3IEVycm9yKGBjYW4gbm90IHBhcnNlIGluZGV4IGluIHYubmFtZVske3QubmFtZX1dYCk7cj1ibihyKSxzLnB1c2gocil9dmFyIGksYX0pKX1sZXQgbD1lZShzKT4wO3JldHVybntwYXRoOmksYkFsbEV4aXN0OmEsYkFsbFNpemU6YyxiQWxsSGFzaDpmLGJTbHM6bCxzbGtzOnN9fTsKCgpsZXQgaW5zdGFuY2UgPSBudWxsCmZ1bmN0aW9uIGluaXQoaW5wdXQpewoKICAgIC8vaW5pdAogICAgbGV0IHIKICAgIAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIG1haW46IGNoZWNrVG90YWxIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrVG90YWxIYXNoCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK",Buffer.from(s,"base64").toString("utf8"));var s;function r(){let i=new n,s=function(e){try{return new t.Worker(e,{eval:!0})}catch(t){o(t)}}(e);if(!s)return o("invalid worker"),null;function r(){let t=function(){let t,e,n=new Promise((function(){t=arguments[0],e=arguments[1]}));return n.resolve=t,n.reject=e,n}(),e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let s=0;s<t;s++)e[s]=n[0|Math.random()*i];return e.join("")}(),n={mode:"call",id:e,fun:"main",input:[...arguments]};return s.postMessage(n),i.once(e,(e=>{"success"===e.state?t.resolve(e.msg):t.reject(e.msg)})),t}function o(t){i.emit("error",t)}return s.on("message",(function(t){let e=t,n=e.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(e.evName,e.msg),"return"===n&&i.emit(e.id,e))})),s.on("error",o),s.on("exit",(t=>{1!==t&&o("exit code["+t+"] !== 1")})),function(){let t={mode:"init",type:"function",input:[...arguments]};s.postMessage(t)}([...arguments]),i.main=r,i.main=r,i.terminate=function(){s?(s.terminate(),s=void 0):o("worker has been terminated")},i}i=async function(){let t=[...arguments],e=r();return await e.main(...t).finally((()=>{e.terminate()}))}}();try{process.on("unhandledRejection",(t=>{console.log("outer:unhandledRejection",t)})),process.on("uncaughtException",(t=>{console.log("outer:uncaughtException",t)})),process.on("uncaughtExceptionMonitor",(t=>{console.log("outer:uncaughtExceptionMonitor",t)}))}catch(t){}return i}(n)}({get exports(){return i},set exports(t){i=t}}),i)}({get exports(){return Vs},set exports(t){Vs=t}});var Hs=Vs,Qs={};!function(t,e){var n,i;t.exports=(n=r,i={},function(t,e){t.exports=function(t){var e={};!function(t){var e=Object.prototype.hasOwnProperty,n="~";function i(){}function s(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function r(t,e,i,r,o){if("function"!=typeof i)throw new TypeError("The listener must be a function");var c=new s(i,r||t,o),l=n?n+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],c]:t._events[l].push(c):(t._events[l]=c,t._eventsCount++),t}function o(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function c(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),c.prototype.eventNames=function(){var t,i,s=[];if(0===this._eventsCount)return s;for(i in t=this._events)e.call(t,i)&&s.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(t)):s},c.prototype.listeners=function(t){var e=n?n+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var s=0,r=i.length,o=new Array(r);s<r;s++)o[s]=i[s].fn;return o},c.prototype.listenerCount=function(t){var e=n?n+t:t,i=this._events[e];return i?i.fn?1:i.length:0},c.prototype.emit=function(t,e,i,s,r,o){var c=n?n+t:t;if(!this._events[c])return!1;var l,a,d=this._events[c],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(t,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,i),!0;case 4:return d.fn.call(d.context,e,i,s),!0;case 5:return d.fn.call(d.context,e,i,s,r),!0;case 6:return d.fn.call(d.context,e,i,s,r,o),!0}for(a=1,l=new Array(u-1);a<u;a++)l[a-1]=arguments[a];d.fn.apply(d.context,l)}else{var M,w=d.length;for(a=0;a<w;a++)switch(d[a].once&&this.removeListener(t,d[a].fn,void 0,!0),u){case 1:d[a].fn.call(d[a].context);break;case 2:d[a].fn.call(d[a].context,e);break;case 3:d[a].fn.call(d[a].context,e,i);break;case 4:d[a].fn.call(d[a].context,e,i,s);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[a].fn.apply(d[a].context,l)}}return!0},c.prototype.on=function(t,e,n){return r(this,t,e,n,!1)},c.prototype.once=function(t,e,n){return r(this,t,e,n,!0)},c.prototype.removeListener=function(t,e,i,s){var r=n?n+t:t;if(!this._events[r])return this;if(!e)return o(this,r),this;var c=this._events[r];if(c.fn)c.fn!==e||s&&!c.once||i&&c.context!==i||o(this,r);else{for(var l=0,a=[],d=c.length;l<d;l++)(c[l].fn!==e||s&&!c[l].once||i&&c[l].context!==i)&&a.push(c[l]);a.length?this._events[r]=1===a.length?a[0]:a:o(this,r)}return this},c.prototype.removeAllListeners=function(t){var e;return t?(e=n?n+t:t,this._events[e]&&o(this,e)):(this._events=new i,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=n,c.EventEmitter=c,t.exports=c}({get exports(){return e},set exports(t){e=t}});var n=e;let i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let e=(s="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9T2JqZWN0LnByb3RvdHlwZTt2YXIgbixvLGk9KG49T2JqZWN0LmtleXMsbz1PYmplY3QsZnVuY3Rpb24odCl7cmV0dXJuIG4obyh0KSl9KSx1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYSh0KXtpZihuPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvdG90eXBlfHxyKSlyZXR1cm4gaSh0KTt2YXIgZSxuLG89W107Zm9yKHZhciBhIGluIE9iamVjdCh0KSl1LmNhbGwodCxhKSYmImNvbnN0cnVjdG9yIiE9YSYmby5wdXNoKGEpO3JldHVybiBvfXZhciBjPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxmPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYscz1jfHxmfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGw9cy5TeW1ib2wscD1PYmplY3QucHJvdG90eXBlLGg9cC5oYXNPd25Qcm9wZXJ0eSx5PXAudG9TdHJpbmcsdj1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIGQ9IltvYmplY3QgTnVsbF0iLGc9IltvYmplY3QgVW5kZWZpbmVkXSIsXz1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGoodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9nOmQ6XyYmXyBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9aC5jYWxsKHQsdikscj10W3ZdO3RyeXt0W3ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89eS5jYWxsKHQpO3JldHVybiBuJiYoZT90W3ZdPXI6ZGVsZXRlIHRbdl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBiLmNhbGwodCl9KHQpfWZ1bmN0aW9uIHcodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFM9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLE89IltvYmplY3QgRnVuY3Rpb25dIixtPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIseD0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHoodCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9aih0KTtyZXR1cm4gZT09T3x8ZT09bXx8ZT09U3x8ZT09eH12YXIgQSwkPXNbIl9fY29yZS1qc19zaGFyZWRfXyJdLEY9KEE9L1teLl0rJC8uZXhlYygkJiYkLmtleXMmJiQua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIFA9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIEwodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBQLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifXZhciBrPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEU9RnVuY3Rpb24ucHJvdG90eXBlLEk9T2JqZWN0LnByb3RvdHlwZSxOPUUudG9TdHJpbmcsVD1JLmhhc093blByb3BlcnR5LE09UmVnRXhwKCJeIitOLmNhbGwoVCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gUih0KXtyZXR1cm4hKCF3KHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIUYmJkYgaW4gdH0odCkpJiYoeih0KT9NOmspLnRlc3QoTCh0KSl9ZnVuY3Rpb24gVSh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIFIocik/cjp2b2lkIDB9dmFyIEI9VShzLCJEYXRhVmlldyIpLEM9VShzLCJNYXAiKSxEPVUocywiUHJvbWlzZSIpLFc9VShzLCJTZXQiKSxxPVUocywiV2Vha01hcCIpLFY9IltvYmplY3QgTWFwXSIsRz0iW29iamVjdCBQcm9taXNlXSIsSD0iW29iamVjdCBTZXRdIixKPSJbb2JqZWN0IFdlYWtNYXBdIixLPSJbb2JqZWN0IERhdGFWaWV3XSIsUT1MKEIpLFg9TChDKSxZPUwoRCksWj1MKFcpLHR0PUwocSksZXQ9ajsoQiYmZXQobmV3IEIobmV3IEFycmF5QnVmZmVyKDEpKSkhPUt8fEMmJmV0KG5ldyBDKSE9Vnx8RCYmZXQoRC5yZXNvbHZlKCkpIT1HfHxXJiZldChuZXcgVykhPUh8fHEmJmV0KG5ldyBxKSE9SikmJihldD1mdW5jdGlvbih0KXt2YXIgZT1qKHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0wocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBROnJldHVybiBLO2Nhc2UgWDpyZXR1cm4gVjtjYXNlIFk6cmV0dXJuIEc7Y2FzZSBaOnJldHVybiBIO2Nhc2UgdHQ6cmV0dXJuIEp9cmV0dXJuIGV9KTt2YXIgcnQ9ZXQsbnQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBvdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PW50fSh0Lmxlbmd0aCkmJiF6KHQpfXZhciBpdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHV0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9dmFyIGF0PSJbb2JqZWN0IFN0cmluZ10iO3ZhciBjdCxmdD0oY3Q9Imxlbmd0aCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbY3RdfSksc3Q9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBsdD0iXFx1ZDgwMC1cXHVkZmZmIixwdD0iWyIrbHQrIl0iLGh0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIseXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsdnQ9IlteIitsdCsiXSIsYnQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLGR0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixndD0iKD86IitodCsifCIreXQrIikiKyI/IixfdD0iW1xcdWZlMGVcXHVmZTBmXT8iLGp0PV90K2d0KygiKD86XFx1MjAwZCg/OiIrW3Z0LGJ0LGR0XS5qb2luKCJ8IikrIikiK190K2d0KyIpKiIpLHd0PSIoPzoiK1t2dCtodCsiPyIsaHQsYnQsZHQscHRdLmpvaW4oInwiKSsiKSIsU3Q9UmVnRXhwKHl0KyIoPz0iK3l0KyIpfCIrd3QranQsImciKTtmdW5jdGlvbiBPdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHN0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1TdC5sYXN0SW5kZXg9MDtTdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOmZ0KHQpfWZ1bmN0aW9uIG10KHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYob3QodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhaXQoZSkmJnV0KGUpJiZqKGUpPT1hdD9PdCh0KTp0Lmxlbmd0aDt2YXIgZSxyPXJ0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6YSh0KS5sZW5ndGh9dmFyIHh0PSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIHp0KHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8dXQodCkmJmoodCk9PXh0fXZhciBBdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywkdD0vXlx3KiQvO3ZhciBGdD1VKE9iamVjdCwiY3JlYXRlIik7dmFyIFB0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEx0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24ga3QodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gRXQodCxlKXtmb3IodmFyIHIsbixvPXQubGVuZ3RoO28tLTspaWYoKHI9dFtvXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1rdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPUZ0P0Z0KG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxrdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxrdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoRnQpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gUHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxrdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEZ0P3ZvaWQgMCE9PWVbdF06THQuY2FsbChlLHQpfSxrdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1GdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgSXQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBOdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBUdCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gTXQodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19TnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sTnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9RXQoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6SXQuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxOdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1FdChlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LE50LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEV0KHRoaXMuX19kYXRhX18sdCk+LTF9LE50LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49RXQocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc30sTXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcga3QsbWFwOm5ldyhDfHxOdCksc3RyaW5nOm5ldyBrdH19LE10LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9VHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sTXQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gVHQodGhpcyx0KS5nZXQodCl9LE10LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFR0KHRoaXMsdCkuaGFzKHQpfSxNdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9VHQodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIFJ0PSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBVdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFJ0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0saT1yLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gci5jYWNoZT1uZXcoVXQuQ2FjaGV8fE10KSxyfVV0LkNhY2hlPU10O3ZhciBCdD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxDdD0vXFwoXFwpPy9nLER0PWZ1bmN0aW9uKHQpe3ZhciBlPVV0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoQnQsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShDdCwiJDEiKTpyfHx0KX0pKSxlfSkpLFd0PUR0O3ZhciBxdD0xLzAsVnQ9bD9sLnByb3RvdHlwZTp2b2lkIDAsR3Q9VnQ/VnQudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIEh0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihpdCh0KSlyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb30odCxIdCkrIiI7aWYoenQodCkpcmV0dXJuIEd0P0d0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LXF0PyItMCI6ZX1mdW5jdGlvbiBKdCh0LGUpe3JldHVybiBpdCh0KT90OmZ1bmN0aW9uKHQsZSl7aWYoaXQodCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIXp0KHQpKXx8JHQudGVzdCh0KXx8IUF0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpfSh0LGUpP1t0XTpXdChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjpIdCh0KX0odCkpfXZhciBLdD0xLzA7ZnVuY3Rpb24gUXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHx6dCh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tS3Q/Ii0wIjplfWZ1bmN0aW9uIFh0KHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49KGU9SnQoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W1F0KGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfSh0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gZnVuY3Rpb24odCxlPXt9KXtsZXQgcj1YdChlLCJmcyIpO3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYhci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCl9KHQse2ZzOmV9KX1jb25zdCBadD1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTtmdW5jdGlvbiB0ZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gZWUodCl7bGV0IGU9ITE7aWYodGUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHJlPS9ccy87dmFyIG5lPS9eXHMrLztmdW5jdGlvbiBvZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmcmUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShuZSwiIik6dH12YXIgaWU9TmFOLHVlPS9eWy0rXTB4WzAtOWEtZl0rJC9pLGFlPS9eMGJbMDFdKyQvaSxjZT0vXjBvWzAtN10rJC9pLGZlPXBhcnNlSW50O3ZhciBzZT0xLzAsbGU9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIHBlKHQpe3JldHVybiB0Pyh0PWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZih6dCh0KSlyZXR1cm4gaWU7aWYodyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9dyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9b2UodCk7dmFyIHI9YWUudGVzdCh0KTtyZXR1cm4gcnx8Y2UudGVzdCh0KT9mZSh0LnNsaWNlKDIpLHI/Mjo4KTp1ZS50ZXN0KHQpP2llOit0fSh0KSk9PT1zZXx8dD09PS1zZT8odDwwPy0xOjEpKmxlOnQ9PXQ/dDowOjA9PT10P3Q6MH1hc3luYyBmdW5jdGlvbiBoZSh0LGU9e30pe2lmKHI9dCwiW29iamVjdCBCbG9iXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikmJiFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXJldHVybiBjb25zb2xlLmxvZygiaW5wIix0KSxQcm9taXNlLnJlamVjdCgiaW5wIGlzIG5vdCBhIEJsb2Igb3IgRmlsZSIpO3ZhciByO2xldCBuPVh0KGUsImNodW5rU2l6ZSIpO2VlKG4pfHwobj02NzEwODg2NCksbj1mdW5jdGlvbih0KXtyZXR1cm4gZWUodCk/cGUodCk6MH0obik7bGV0e2NyZWF0ZTY0Om99PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjppLGRpZ2VzdDMyOnUsaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLGkpe2wodCk7Y29uc3QgdT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQodSkscigwLGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQodSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1iLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldCh1KSxpKG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3QgeT0ybioqNjRuLTFuO2Z1bmN0aW9uIHYodCl7cmV0dXJuIHQmeX1jb25zdCBiPW5ldyBUZXh0RW5jb2RlcixkPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksdihuKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9ZCk9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9ZCk9PnAoNDgsdCxvLGksdSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx2KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHYpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKFp0KSkuaW5zdGFuY2UpfSgpLGk9bygpLHU9MDtmb3IoO3U8dC5zaXplOyl7bGV0IGU9dC5zbGljZSh1LHUrbikscj1hd2FpdCBlLmFycmF5QnVmZmVyKCk7aS51cGRhdGUobmV3IFVpbnQ4QXJyYXkocikpLHUrPW59cmV0dXJuIGkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIil9bGV0IGNoZWNrU2xpY2VzSGFzaD1hc3luYyhyLG4sbyk9PntpZigwPT09bXQocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgaT1bXTtmb3IobGV0IHU9MDt1PHIubGVuZ3RoO3UrKyl7bGV0IGE9clt1XSxjPXQuam9pbihvLGAke259XyR7YS5pfWApLGY9IiI7YXdhaXQgaGUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGMpXSkpLnRoZW4oKHQ9PntmPXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZygiZnNJc0ZpbGUoX3BhdGhGaWxlKSIsYyxZdChjKSksY29uc29sZS5sb2codCl9KSksYS5oPT09ZiYmaS5wdXNoKGEuaSl9cmV0dXJue3Nsa3M6aX19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tTbGljZXNIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrU2xpY2VzSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(s,"base64").toString("utf8"));var s;function r(){let i=new n,s=function(e){try{return new t.Worker(e,{eval:!0})}catch(t){o(t)}}(e);if(!s)return o("invalid worker"),null;function r(){let t=function(){let t,e,n=new Promise((function(){t=arguments[0],e=arguments[1]}));return n.resolve=t,n.reject=e,n}(),e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let s=0;s<t;s++)e[s]=n[0|Math.random()*i];return e.join("")}(),n={mode:"call",id:e,fun:"main",input:[...arguments]};return s.postMessage(n),i.once(e,(e=>{"success"===e.state?t.resolve(e.msg):t.reject(e.msg)})),t}function o(t){i.emit("error",t)}return s.on("message",(function(t){let e=t,n=e.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(e.evName,e.msg),"return"===n&&i.emit(e.id,e))})),s.on("error",o),s.on("exit",(t=>{1!==t&&o("exit code["+t+"] !== 1")})),function(){let t={mode:"init",type:"function",input:[...arguments]};s.postMessage(t)}([...arguments]),i.main=r,i.main=r,i.terminate=function(){s?(s.terminate(),s=void 0):o("worker has been terminated")},i}i=async function(){let t=[...arguments],e=r();return await e.main(...t).finally((()=>{e.terminate()}))}}();try{process.on("unhandledRejection",(t=>{console.log("outer:unhandledRejection",t)})),process.on("uncaughtException",(t=>{console.log("outer:uncaughtException",t)})),process.on("uncaughtExceptionMonitor",(t=>{console.log("outer:uncaughtExceptionMonitor",t)}))}catch(t){}return i}(n)}({get exports(){return i},set exports(t){i=t}}),i)}({get exports(){return Qs},set exports(t){Qs=t}});var Us=Qs;function ks(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=Dt(r,"port");Ve(o)||(o=8080);let c=Dt(r,"useInert");mn(c)||(c=!0);let l=Dt(r,"pathStaticFiles");ae(l)||(l="dist");let a=Dt(r,"pathUploadTemp");ae(a)||(a="./uploadTemp"),on(a)||fn(a);let d=Dt(r,"apiName");ae(d)||(d="api");let u=Dt(r,"tokenType");ae(u)||(u="Bearer");let M=Dt(r,"sizeSlice");Ve(M)||(M=1048576);let w=Dt(r,"verifyConn");He(w)||(w=()=>!0);let I=Dt(r,"corsOrigins",[]);Le(I)||(I=["*"]);let y=Dt(r,"delayForSlice","");Ue(y)||(y=100),y=We(y);let p=null;p=Dt(r,"serverHapi")?r.serverHapi:n.server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:I,credentials:!1}}});let m=Cn(),L=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i<e;i++)n[i-1]=arguments[i];setTimeout((()=>{m.emit(t,...n)}),1)};async function g(t){let e=Re(),n=Re();return n.then((t=>{e.resolve(t)})).catch((t=>{e.reject(t)})),L("upload",t,n),e}async function C(t){let e=Re(),n=Re();return n.then((t=>{e.resolve(t)})).catch((t=>{e.reject(t)})),L("download",t,n),e}function D(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=new s.Readable;i._read=()=>{},i.push(e),i.push(null);let r=Dt(n,"returnType",""),o=Dt(n,"returnMsg",""),c=t.response(i).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",i.readableLength);return ae(r)&&c.header("Return-Type",r),ae(o)&&c.header("Return-Msg",o),c}function f(t,e){return ae(e)||(console.log("msg",e),console.log("msg is not an effective string, set msg=''"),e=""),D(t,Jn({error:e}),{returnType:"error",returnMsg:e})}let h={path:`/${d}/main`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(t,e){let n=Dt(t,"headers");n=Me(n)?n:"";let i=Dt(t,"query");i=Me(i)?i:"";let r=Dt(n,"authorization","");r=ae(r)?r:"";{let t=w({apiType:"main",authorization:r,headers:n,query:i});if(Qe(t)&&(t=await t),!0!==t)return f(e,"permission denied")}L("handler",{api:"apiMain",headers:n,query:i});let o=await(()=>{let e=Re(),n=[],i=new s.Writable({write(t,e,i){n.push(t),i()}});return i.on("finish",(()=>{})),t.payload.pipe(i),t.payload.on("end",(()=>{let t=Buffer.concat(n);n=[],e.resolve(t)})),t.payload.on("close",(()=>{})),t.payload.on("error",(t=>{console.log("apiMain req.payload err",t),L("error",`receive payload error: ${t.message}`),e.reject(`receive payload error: ${t.message}`)})),e})(),c=Fn(new Uint8Array(o)),l={},a="",d="";return await async function(t){let e=Re(),n=Re();n.then((n=>{t.output=n,delete t.input,e.resolve(t)})).catch((t=>{e.reject(t)}));{let e=Dt(t,"func",""),i=Dt(t,"input",null);L("execute",e,i,n)}return e}(c).then((t=>{l.success=t,a="success",d="need to parse"})).catch((t=>{l.error=t,a="error",d="need to parse"})),D(e,Jn(l),{returnType:a,returnMsg:d})}},b={path:`/${d}/ulctr`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(t,e){let n=Dt(t,"headers");n=Me(n)?n:"";let i=Dt(t,"query");i=Me(i)?i:"";let s=Dt(n,"authorization","");s=ae(s)?s:"";{let t=w({apiType:"upload-controller",authorization:s,headers:n,query:i});if(Qe(t)&&(t=await t),!0!==t)return f(e,"permission denied")}L("handler",{api:"apiUploadCheck",headers:n,query:i});let r=Dt(t,"payload.mode","");if("check-total-hash"!==r&&"check-slices-hash"!==r&&"merge-slices-push"!==r&&"merge-slices-get"!==r)return f(e,`invalid mode[${r}] in payload`);let o=Dt(t,"payload.fileHash","");if(!ae(o))return f(e,"invalid fileHash in payload");let c={},l="",d="";return await(async()=>{let e=null;if("check-total-hash"===r){let n=Dt(t,"payload.filename",""),i=Dt(t,"payload.fileSize","");if(e=await Hs(i,M,o,a),e.bAllHash){let t={filename:n,path:e.path},i=await g(t);e={...e,...i}}}else if("check-slices-hash"===r){let n=Dt(t,"payload.fileSliceHashs",[]);e=await Us(n,o,a)}else if("merge-slices-push"===r){let n=Dt(t,"payload.chunkTotal","");e={queueId:Ws.push(o,n,a)}}else if("merge-slices-get"===r){let n=Dt(t,"payload.filename",""),i=Dt(t,"payload.queueId",""),s=Ws.get(i,a);if(e={state:s.state,msg:s.msg,queueId:i,filename:n,path:s.path},"success"===s.state){let t={filename:n,path:s.path},i=await g(t);e={...e,msg:i}}}return e})().then((t=>{c.success=t,l="success",d="need to parse"})).catch((t=>{c.error=t,l="error",d="need to parse"})),D(e,Jn(c),{returnType:l,returnMsg:d})}},N={path:`/${d}/slc`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(n,i){let s=Dt(n,"headers");s=Me(s)?s:"";let r=Dt(n,"query");r=Me(r)?r:"";let o=Dt(s,"authorization","");o=ae(o)?o:"";{let t=w({apiType:"upload-slice",authorization:o,headers:s,query:r});if(Qe(t)&&(t=await t),!0!==t)return f(i,"permission denied")}L("handler",{api:"apiUploadSlice",headers:s,query:r});let c=Dt(s,"chunk-index",""),l=Dt(s,"chunk-total",""),d=Dt(s,"package-id","");if(!Ue(c))return f(i,"invalid chunkIndex in headers");if(c=We(c),!Ue(l))return f(i,"invalid chunkTotal in headers");if(l=We(l),!ae(d))return f(i,"invalid packageId in headers");let u=t.join(a,`${d}_${c}`),M=e.createWriteStream(u),I={},p="",m="";return await(()=>{let t=Re();return n.payload.pipe(M),n.payload.on("end",(()=>{setTimeout((()=>{t.resolve(`chunk[${c+1}/${l}] of packageId[${d}] done`)}),y)})),n.payload.on("error",(e=>{console.log(`apiUploadSlice req.payload chunk[${c+1}/${l}] of packageId[${d}] err`,e),L("error",`receive chunk[${c+1}/${l}] of packageId[${d}] error: ${e.message}`),t.reject(`receive chunk[${c+1}/${l}] of packageId[${d}] error: ${e.message}`)})),t})().then((t=>{I.success=t,p="success",m="need to parse"})).catch((t=>{I.error=t,p="error",m="need to parse",L("error",t)})),D(i,Jn(I),{returnType:p,returnMsg:m})}},x={path:`/${d}/dwgfn`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(t,e){let n=Dt(t,"headers");n=Me(n)?n:"";let i=Dt(t,"query");i=Me(i)?i:"";let s=Dt(n,"authorization","");s=ae(s)?s:"";{let t=w({apiType:"download-get-filename",authorization:s,headers:n,query:i});if(Qe(t)&&(t=await t),!0!==t)return f(e,"permission denied")}L("handler",{api:"apiDownloadGetFilename",headers:n,query:i});let r=Dt(t,"payload.fileId","");if(!ae(r))return f(e,"invalid fileId in payload");let o={fileId:r},c={},l="",a="";await C(o).then((t=>{c.success=t,l="success",a="need to parse"})).catch((t=>{c.error=t,l="error",a="need to parse"}));let d=Dt(c,"success"),u=Dt(d,"streamRead");try{u.destroy()}catch(t){}let M=Dt(d,"filename");return ae(M)?(c={success:{filename:M}},D(e,Jn(c),{returnType:l,returnMsg:a})):f(e,"invalid filename")}},Z={path:`/${d}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1}},handler:async function(t,e){let n=Dt(t,"headers");n=Me(n)?n:"";let i=Dt(t,"query");i=Me(i)?i:"";let s=Dt(i,"token","");s=ae(s)?s:"";let r="";ae(s)&&(r=`${u} ${s}`);{let t=w({apiType:"download-get-file",authorization:r,headers:n,query:i});if(Qe(t)&&(t=await t),!0!==t)return f(e,"permission denied")}L("handler",{api:"apiDownloadGetFilename",headers:n,query:i});let o=Dt(i,"fileId","");if(o=ae(o)?o:"",!ae(o))return f(e,"invalid fileId in query");let c={fileId:o},l={};if(await C(c).then((t=>{l.success=t})).catch((t=>{l.error=t})),Zn(l,"error"))return f(e,"can not get file from fileId");let a=Dt(l,"success"),d=Dt(a,"streamRead"),M=Dt(a,"fileSize");if(!bn(M)){try{d.destroy()}catch(t){}return f(e,"invalid fileSize")}let I=Dt(a,"fileType");if(!ae(I)){try{d.destroy()}catch(t){}return f(e,"invalid fileType")}return I=Nn(I),e.response(d).type(I).header("Content-Length",M)}},T={path:`/${d}/dw`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(t,e){let n=Dt(t,"headers");n=Me(n)?n:"";let i=Dt(t,"query");i=Me(i)?i:"";let s=Dt(n,"authorization","");s=ae(s)?s:"";{let t=w({apiType:"download",authorization:s,headers:n,query:i});if(Qe(t)&&(t=await t),!0!==t)return f(e,"permission denied")}L("handler",{api:"apiDownload",headers:n,query:i});let r=Dt(t,"payload.fileId","");if(!ae(r))return f(e,"invalid fileId in payload");let o={fileId:r},c={};if(await C(o).then((t=>{c.success=t})).catch((t=>{c.error=t})),Zn(c,"error"))return f(e,"can not get file from fileId");let l=Dt(c,"success"),a=Dt(l,"streamRead"),d=Dt(l,"filename");if(!ae(d)){try{a.destroy()}catch(t){}return f(e,"invalid filename")}d=xn(d);let u=Dt(l,"fileSize");if(!bn(u)){try{a.destroy()}catch(t){}return f(e,"invalid fileSize")}let M=Dt(l,"fileType");if(!ae(M)){try{a.destroy()}catch(t){}return f(e,"invalid fileType")}return M=Nn(M),e.response(a).type(M).header("Content-Disposition",`attachment; filename="${d}"`).header("Content-Length",u)}};Dt(r,"serverHapi")?p.route([h,b,N,x,Z,T]):async function(){c&&await p.register(i);let t=[];if(c){let e={method:"GET",path:"/{file*}",handler:{directory:{path:`${l}/`}}};t=[...t,e]}t=[...t,h,b,N,x,Z,T],p.route(t),await p.start(),console.log(`Server running at: ${p.info.uri}`)}();return m.stop=()=>{p.stop()},m}var Js=function(){return a.Date.now()},Rs="Expected a function",Ps=Math.max,Bs=Math.min;function Os(t,e,n){var i,s,r,o,c,l,a=0,d=!1,u=!1,M=!0;if("function"!=typeof t)throw new TypeError(Rs);function w(e){var n=i,r=s;return i=s=void 0,a=e,o=t.apply(r,n)}function I(t){var n=t-l;return void 0===l||n>=e||n<0||u&&t-a>=r}function y(){var t=Js();if(I(t))return p(t);c=setTimeout(y,function(t){var n=e-(t-l);return u?Bs(n,r-(t-a)):n}(t))}function p(t){return c=void 0,M&&i?w(t):(i=s=void 0,o)}function m(){var t=Js(),n=I(t);if(i=arguments,s=this,l=t,n){if(void 0===c)return function(t){return a=t,c=setTimeout(y,e),d?w(t):o}(l);if(u)return clearTimeout(c),c=setTimeout(y,e),w(l)}return void 0===c&&(c=setTimeout(y,e)),o}return e=Ze(e)||0,x(n)&&(d=!!n.leading,r=(u="maxWait"in n)?Ps(Ze(n.maxWait)||0,e):r,M="trailing"in n?!!n.trailing:M),m.cancel=function(){void 0!==c&&clearTimeout(c),a=0,i=l=s=c=void 0},m.flush=function(){return void 0===c?o:p(Js())},m}var Fs=function(){try{var t=k(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),_s=Fs;function $s(t,e,n){"__proto__"==e&&_s?_s(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function qs(t,e,n){(void 0!==n&&!O(t[e],n)||void 0===n&&!(e in t))&&$s(t,e,n)}var tr="object"==typeof exports&&exports&&!exports.nodeType&&exports,er=tr&&"object"==typeof module&&module&&!module.nodeType&&module,nr=er&&er.exports===tr?a.Buffer:void 0,ir=nr?nr.allocUnsafe:void 0;function sr(t,e){if(e)return t.slice();var n=t.length,i=ir?ir(n):new t.constructor(n);return t.copy(i),i}function rr(t){var e=new t.constructor(t.byteLength);return new ri(e).set(new ri(t)),e}function or(t,e){var n=e?rr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function cr(t,e){var n=-1,i=t.length;for(e||(e=Array(i));++n<i;)e[n]=t[n];return e}var lr=Object.create,ar=function(){function t(){}return function(e){if(!x(e))return{};if(lr)return lr(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}(),dr=ar;function ur(t){return"function"!=typeof t.constructor||_t(t)?{}:dr(Yn(t))}function Mr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var wr=Object.prototype.hasOwnProperty;function Ir(t,e,n){var i=t[e];wr.call(t,e)&&O(i,n)&&(void 0!==n||e in t)||$s(t,e,n)}function yr(t,e,n,i){var s=!n;n||(n={});for(var r=-1,o=e.length;++r<o;){var c=e[r],l=i?i(n[c],t[c],c,n,t):void 0;void 0===l&&(l=t[c]),s?$s(n,c,l):Ir(n,c,l)}return n}var pr=Object.prototype.hasOwnProperty;function mr(t){if(!x(t))return function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}(t);var e=_t(t),n=[];for(var i in t)("constructor"!=i||!e&&pr.call(t,i))&&n.push(i);return n}function Lr(t){return ne(t)?Ot(t,!0):mr(t)}function gr(t,e,n,i,s,r,c){var l=Mr(t,n),a=Mr(e,n),d=c.get(a);if(d)qs(t,n,d);else{var u,M=r?r(l,a,n+"",t,e,c):void 0,w=void 0===M;if(w){var I=o(a),y=!I&&Gt(a),p=!I&&!y&&Pt(a);M=a,I||y||p?o(l)?M=l:C(u=l)&&ne(u)?M=cr(l):y?(w=!1,M=sr(a,!0)):p?(w=!1,M=or(a,!0)):M=[]:Wn(a)||St(a)?(M=l,St(l)?M=function(t){return yr(t,Lr(t))}(l):x(l)&&!A(l)||(M=ur(a))):w=!1}w&&(c.set(a,M),s(M,a,i,r,c),c.delete(a)),qs(t,n,M)}}function Cr(t,e,n,i,s){t!==e&&bt(e,(function(r,o){if(s||(s=new $n),x(r))gr(t,e,o,n,Cr,i,s);else{var c=i?i(Mr(t,o),r,o+"",t,e,s):void 0;void 0===c&&(c=r),qs(t,o,c)}}),Lr)}var Dr=Math.max;var fr=_s?function(t,e){return _s(t,"toString",{configurable:!0,enumerable:!1,value:(n=e,function(){return n}),writable:!0});var n}:oe,hr=fr,br=Date.now;var Nr=function(t){var e=0,n=0;return function(){var i=br(),s=16-(i-n);if(n=i,s>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(hr),xr=Nr;function Zr(t,e){return xr(function(t,e,n){return e=Dr(void 0===e?t.length-1:e,0),function(){for(var i=arguments,s=-1,r=Dr(i.length-e,0),o=Array(r);++s<r;)o[s]=i[e+s];s=-1;for(var c=Array(e+1);++s<e;)c[s]=i[s];return c[e]=n(o),function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}(t,this,c)}}(t,e,oe),t+"")}var Tr,Xr=(Tr=function(t,e,n){Cr(t,e,n)},Zr((function(t,e){var n=-1,i=e.length,s=i>1?e[i-1]:void 0,r=i>2?e[2]:void 0;for(s=Tr.length>3&&"function"==typeof s?(i--,s):void 0,r&&function(t,e,n){if(!x(n))return!1;var i=typeof e;return!!("number"==i?ne(n)&&zt(e,n.length):"string"==i&&e in n)&&O(n[e],t)}(e[0],e[1],r)&&(s=i<3?void 0:s,i=1),t=Object(t);++n<i;){var o=e[n];o&&Tr(t,o,n,s)}return t})));function Sr(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i={};if(Me(t)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),t=Cn()),!Zn(t,"emit"))throw new Error("instWConverServer is not an EventEmitter");let s=Dt(n,"fpTableTags","");ae(s)||(s="./tableTags.json");let r=Dt(n,"genTag");He(r)||(r=()=>Mn()+"|"+yn(6));let o=function(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];setTimeout((()=>{t.emit(e,...i)}),1)};function c(){let t={};try{if(e.existsSync(s)){let n=de(e.readFileSync(s,"utf8"));Me(n)&&(t=n)}}catch(t){o("error",{msg:"readTableTags catch",err:t})}return t}function l(){try{let t=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(Ie(t))return"";let n="";try{n=e?JSON.stringify(t,null,2):JSON.stringify(t)}catch(t){n=""}return n}(i);e.writeFileSync(s,t,"utf8")}catch(t){o("error",{msg:"writeTableTags catch",err:t})}}let a=Os((()=>{l(),o("changeTableTags",i)}),200);return t.readTableTags=c,t.writeTableTags=l,t.initTableTags=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"useInputFirst";if("useInputOnly"===e)i=t;else if("useStorageOnly"===e)i=c();else if("useInputFirst"===e)i=Xr(c(),t);else{if("useStorageFirst"!==e)throw new Error(`invalid mode[${e}]`);i=Xr(t,c())}l()},t.setTableTags=function(){i=Xr(i,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),l()},t.getTableTags=function(){return i},t.updateTableTag=function(t){i[t]=r(),a()},t}var Ar=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)hi(e,Xi(t)),t=Yn(t);return e}:xi,Yr=Ar;function vr(t){return bi(t,Lr,Yr)}var Gr=Object.prototype.hasOwnProperty;var Er=/\w*$/;var jr=d?d.prototype:void 0,zr=jr?jr.valueOf:void 0;var Kr="[object Boolean]",Wr="[object Date]",Vr="[object Map]",Hr="[object Number]",Qr="[object RegExp]",Ur="[object Set]",kr="[object String]",Jr="[object Symbol]",Rr="[object ArrayBuffer]",Pr="[object DataView]",Br="[object Float32Array]",Or="[object Float64Array]",Fr="[object Int8Array]",_r="[object Int16Array]",$r="[object Int32Array]",qr="[object Uint8Array]",to="[object Uint8ClampedArray]",eo="[object Uint16Array]",no="[object Uint32Array]";function io(t,e,n){var i,s=t.constructor;switch(e){case Rr:return rr(t);case Kr:case Wr:return new s(+t);case Pr:return function(t,e){var n=e?rr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case Br:case Or:case Fr:case _r:case $r:case qr:case to:case eo:case no:return or(t,n);case Vr:return new s;case Hr:case kr:return new s(t);case Qr:return function(t){var e=new t.constructor(t.source,Er.exec(t));return e.lastIndex=t.lastIndex,e}(t);case Ur:return new s;case Jr:return i=t,zr?Object(zr.call(i)):{}}}var so=Jt&&Jt.isMap,ro=so?Ht(so):function(t){return C(t)&&"[object Map]"==Bi(t)};var oo=Jt&&Jt.isSet,co=oo?Ht(oo):function(t){return C(t)&&"[object Set]"==Bi(t)},lo=1,ao=2,uo=4,Mo="[object Arguments]",wo="[object Function]",Io="[object GeneratorFunction]",yo="[object Object]",po={};function mo(t,e,n,i,s,r){var c,l=e&lo,a=e&ao,d=e&uo;if(n&&(c=s?n(t,i,s,r):n(t)),void 0!==c)return c;if(!x(t))return t;var u=o(t);if(u){if(c=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&Gr.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!l)return cr(t,c)}else{var M=Bi(t),w=M==wo||M==Io;if(Gt(t))return sr(t,l);if(M==yo||M==Mo||w&&!s){if(c=a||w?{}:ur(t),!l)return a?function(t,e){return yr(t,Yr(t),e)}(t,function(t,e){return t&&yr(e,Lr(e),t)}(c,t)):function(t,e){return yr(t,Xi(t),e)}(t,function(t,e){return t&&yr(e,ie(e),t)}(c,t))}else{if(!po[M])return s?t:{};c=io(t,M,l)}}r||(r=new $n);var I=r.get(t);if(I)return I;r.set(t,c),co(t)?t.forEach((function(i){c.add(mo(i,e,n,i,t,r))})):ro(t)&&t.forEach((function(i,s){c.set(s,mo(i,e,n,s,t,r))}));var y=u?void 0:(d?a?vr:Si:a?Lr:ie)(t);return ft(y||t,(function(i,s){y&&(i=t[s=i]),Ir(c,s,mo(i,e,n,s,t,r))})),c}po[Mo]=po["[object Array]"]=po["[object ArrayBuffer]"]=po["[object DataView]"]=po["[object Boolean]"]=po["[object Date]"]=po["[object Float32Array]"]=po["[object Float64Array]"]=po["[object Int8Array]"]=po["[object Int16Array]"]=po["[object Int32Array]"]=po["[object Map]"]=po["[object Number]"]=po[yo]=po["[object RegExp]"]=po["[object Set]"]=po["[object String]"]=po["[object Symbol]"]=po["[object Uint8Array]"]=po["[object Uint8ClampedArray]"]=po["[object Uint16Array]"]=po["[object Uint32Array]"]=!0,po["[object Error]"]=po[wo]=po["[object WeakMap]"]=!1;var Lo=1,go=4;function Co(t){return mo(t,Lo|go)}var Do="[object String]";var fo=us("length"),ho="\\ud800-\\udfff",bo="["+ho+"]",No="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",xo="\\ud83c[\\udffb-\\udfff]",Zo="[^"+ho+"]",To="(?:\\ud83c[\\udde6-\\uddff]){2}",Xo="[\\ud800-\\udbff][\\udc00-\\udfff]",So="(?:"+No+"|"+xo+")"+"?",Ao="[\\ufe0e\\ufe0f]?",Yo=Ao+So+("(?:\\u200d(?:"+[Zo,To,Xo].join("|")+")"+Ao+So+")*"),vo="(?:"+[Zo+No+"?",No,To,Xo,bo].join("|")+")",Go=RegExp(xo+"(?="+xo+")|"+vo+Yo,"g");function Eo(t){return Cs(t)?function(t){for(var e=Go.lastIndex=0;Go.test(t);)++e;return e}(t):fo(t)}var jo="[object Map]",zo="[object Set]";function Ko(t){if(null==t)return 0;if(ne(t))return"string"==typeof(e=t)||!o(e)&&C(e)&&g(e)==Do?Eo(t):t.length;var e,n=Bi(t);return n==jo||n==zo?t.size:ee(t).length}function Wo(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=Cn(),n={},i=null,s=Dt(t,"timeAlive");Ve(s)||(s=1e4),s=We(s);let r=Dt(t,"timeDetect");return Ve(r)||(r=50),r=We(r),e.trigger=function(t,o){ae(t)?(Zn(n,t)||setTimeout((()=>{e.emit("message",{eventName:"enter",key:t,data:o,now:Ko(n)})}),1),n[t]={data:o,time:Date.now()},null===i&&(i=setInterval((()=>{ce(n,((t,i)=>{if(Date.now()-t.time>s){let t=Co(n[i]);delete n[i],e.emit("message",{eventName:"leave",key:i,data:t.data,now:Ko(n)})}})),Me(n)||(clearInterval(i),i=null)}),r))):console.log("trigger need key")},e.get=function(){let t=[];return ce(n,((e,n)=>{t.push({key:n,data:e.data})})),t=Co(t),t},e}function Vo(t){let e={};if(Me(t)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),t=Cn()),!Zn(t,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=function(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];setTimeout((()=>{t.emit(e,...i)}),1)},i=Wo(),s=setInterval((()=>{let t=ys(i.get(),"key"),n={};ce(t,(t=>{n[t]=Dt(e,t,[])})),e=n}),1e3);i.on("message",(function(t){let{eventName:e,key:i,data:s,now:r}=t;"enter"===e?n("clientEnter",i,s):"leave"===e&&n("clientLeave",i,s),n("clientChange",r)})),t.on("execute",(function(t,s,r){if("[sys:polling]"===t)try{let t=Dt(s,"clientId",""),n=Dt(e,t,[]);n=Co(n),e[t]=[],i.trigger(t,s),r.resolve(n)}catch(t){n("error",t),r.reject("[sys:polling] error")}}));return t.getClients=i.get,t.getMessages=()=>Co(e),t.broadcast=t=>{if(!Me(e))return;let n={};ce(e,((e,i)=>{e.push({mode:"broadcast",data:t}),n[i]=e})),e=n},t.clearBroadcast=()=>{clearInterval(s)},t}let Ho=(t,e)=>{let n={};return ce(t,(t=>{let i=t,s=Dt(e,t,"");ae(s)&&(n[i]=s)})),n};function Qo(t,e,n){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!Me(t))throw new Error("invalid instWConverServer");if(0===Ko(e))return t;if(!Me(n))return t;let s=Dt(i,"genTag");He(s)||(s=()=>Mn()+"|"+yn(6));let r={};return ce(e,(t=>{r[t]=s()})),t.initTableTags(r,"useInputOnly"),ce(e,(e=>{let i=n[e];if(!i)throw new Error(`invalid kpOrm[${e}]`);try{i.on("change",(()=>{t.updateTableTag(e)}))}catch(t){throw new Error(`kpOrm[${e}] can not listen to change events`)}})),t.on("changeTableTags",(n=>{t.broadcast({mode:"syncKpTable",data:Ho(e,n)})})),t}function Uo(t,e,n,i){for(var s=n-1,r=t.length;++s<r;)if(i(t[s],e))return s;return-1}var ko=Array.prototype.splice;function Jo(t,e){return t&&t.length&&e&&e.length?function(t,e,n,i){var s=i?Uo:Ls,r=-1,o=e.length,c=t;for(t===e&&(e=cr(e)),n&&(c=ut(t,Ht(n)));++r<o;)for(var l=0,a=e[r],d=n?n(a):a;(l=s(c,d,l,i))>-1;)c!==t&&ko.call(c,l,1),ko.call(t,l,1);return t}(t,e):t}function Ro(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Me(t))throw new Error("invalid instWConverServer");let n=Dt(e,"getUserIdByToken",null);He(n)||(n=async()=>"");let i=Dt(e,"useDbOrm",null);mn(i)||(i=!1);let s=null;if(i&&(s=Dt(e,"operOrm",null),!He(s)))throw new Error("invalid opt.operOrm when useDbOrm=true");let r=[];if(i&&(r=Dt(e,"tableNames",null),!we(r)))throw new Error("invalid opt.tableNames when useDbOrm=true");let o=[];i&&(o=Dt(e,"methods",null),we(o)||(o=["select","insert","save","del"]));let c=Dt(e,"kpFunExt",null);let l={};async function a(t,e,i){if(!ae(t))return i.resolve({state:"error",msg:"invalid func"}),i;let s="";if(!Zn(e,"__sysToken__"))return i.resolve({state:"error",msg:"invalid token"}),i;if(s=Nn(e.__sysToken__),!Zn(e,"__sysInputArgs__"))return i.resolve({state:"error",msg:"invalid input"}),i;e=e.__sysInputArgs__;let r="";if(r=n(s),Qe(r)&&(r=await r),ae(r)||(r=""),"[sys:getFuncList]"===t){let t=ie(l);t=function(t,e){if(!Le(t))return[];if((ue(e)||Ye(e)||le(e)||mn(e))&&(e=[e]),!Le(e))return t;let n=Co(t);return Jo(n,e),n}(t,"[sys:getTableTags]");let e={state:"success",msg:t};return i.resolve(e),i}if(!Zn(l,t))return i.resolve({state:"error",msg:`invalid func[${t}]`}),i;let o=l[t];try{let t=await Pe(o)(r,...e);i.resolve(t)}catch(e){i.resolve({state:"error",msg:`call func[${t}] has an error: ${e.message}`})}return i}return i&&(r=Co(r),l=function(t,e,n){let i={};return ce(t,(t=>{ce(e,(e=>{i[`${t}.${e}`]=async function(i,s){return await n(i,t,e,s)}}))})),i}(r,o,s)),Me(c)&&ce(c,((t,e)=>{l[e]=t})),t.on("execute",(async function(e,n,i){await a(e,n,i).catch((n=>{t.emit("error",n),i.resolve({state:"error",msg:`execFun func[${e}] has an error: ${n.message}`})}))})),t}function Po(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Me(t)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),t=Cn()),!Zn(t,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=Dt(e,"fpTableTags",null);ae(n)||(n="./tableTags.json");let i=Dt(e,"genTag");He(i)||(i=()=>Mn()+"|"+yn(6)),t=new Vo(t=new Sr(t,{fpTableTags:n,genTag:i}));let s=Dt(e,"useDbOrm",null);mn(s)||(s=!0);let r=Dt(e,"kpOrm",null),o=Dt(e,"operOrm",null),c=Dt(e,"tableNamesExec",null),l=Dt(e,"methodsExec",null),a=Dt(e,"tableNamesSync",null),d=Dt(e,"getUserIdByToken",null),u=Dt(e,"kpFunExt",null);if(Me(u)||(u={}),u={...u,"[sys:getTableTags]":()=>{let e=t.getTableTags();return{mode:"syncKpTable",data:Ho(a,e)}}},t=new Ro(t,{getUserIdByToken:d,useDbOrm:s,operOrm:o,tableNames:c,methods:l,kpFunExt:u}),s){if(!ue(r))return t.emit("error","invalid opt.kpOrm when useDbOrm=true"),t;t=new Qo(t,a,r,{genTag:i})}return t}function Bo(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=Cn(),s=null,r=null,o=Dt(t,"port");Ge(o)||(o=8080);let c=Dt(t,"corsOrigins",[]);Le(c)||(c=["http://localhost"]);let l=Dt(t,"useInert");mn(l)||(l=!0);let a=Dt(t,"pathStaticFiles");ae(a)||(a="dist");let d=Dt(t,"apis");Le(d)||(d=[]);let u=Dt(t,"apiName");ae(u)||(u="api");let M=Dt(t,"pathUploadTemp");ae(M)||(M="./uploadTemp"),on(M)||fn(M);let w=Dt(t,"tokenType");ae(w)||(w="Bearer");let I=Dt(t,"sizeSlice");Ve(I)||(I=1048576);let y=Dt(t,"verifyConn");He(y)||(y=()=>!0);let p=Dt(t,"getUserIdByToken",null),m=Dt(t,"useDbOrm",null);mn(m)||(m=!0);let L=Dt(t,"kpOrm",null),g=Dt(t,"operOrm",null),C=Dt(t,"tableNamesExec",null),D=Dt(t,"methodsExec",null),f=Dt(t,"tableNamesSync",null),h=Dt(t,"kpFunExt",null),b=Dt(t,"fnTableTags",null),N=Dt(t,"genTag");He(N)||(N=()=>Mn()+"|"+yn(6));let x=Dt(t,"showLog");mn(x)||(x=!0);(async()=>{await(async()=>{s=new n.Server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:c,credentials:!1}}}),l&&await s.register(i);let t=[];l&&(t=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${a}/`}}}]),t=[...t,...d],s.route(t)})(),await(async()=>{r=new ks({serverHapi:s,apiName:u,pathUploadTemp:M,tokenType:w,sizeSlice:I,verifyConn:y}),r.on("open",(function(){x&&console.log(`Server[port:${o}]: open`)})),r.on("clientChange",(function(t){x&&console.log(`Server[port:${o}]: now clients: ${t}`)}))})(),await(async()=>{r=new Po(r,{getUserIdByToken:p,useDbOrm:m,kpOrm:L,operOrm:g,tableNamesExec:C,tableNamesSync:f,methodsExec:D,kpFunExt:h,fnTableTags:b,genTag:N}),r.on("error",(t=>{e.emit("error",t)}))})(),await s.start(),x&&console.log(`Server running at: ${s.info.uri}`)})().catch((t=>{e.emit("error",t)})),process.on("unhandledRejection",(t=>{console.log("unhandledRejection",t),e.emit("error",{mode:"unhandledRejection",err:t})})),process.on("uncaughtException",(t=>{console.log("uncaughtException",t),e.emit("error",{mode:"uncaughtException",err:t})}));return e.getServer=async()=>(await Dn((()=>null!==s)),s),e.getInstWConverServer=async()=>(await Dn((()=>null!==r)),r),e}function Oo(t,e){let n=Re();if(!we(t)&&!ue(t))return n.reject("rs is not an array or object"),n;let i=!1;if(ue(t)){i=!0;let e=[];ce(t,((t,n)=>{e.push({k:n,v:t})})),t=e}He(e)||(e=function(t){return t});let s=-1,r=[];return t.reduce((function(t,n){return t.then((function(t){r.push(t),s+=1;let o=s,c=n;return i&&(o=n.k,c=n.v),He(e)?e(c,o):c}))}),Promise.resolve()).then((function(t){var e,i,s,o;r.push(t),o=null==(e=r)?0:e.length,r=o?ps(e,(i=s||void 0===i?1:Ae(i))<0?0:i,o):[],n.resolve(r)})).catch((function(t){n.reject(t)})),n}let Fo={backup:async function(t){return await Oo(t,(async(t,e)=>(console.log("backup...",e),{name:e,data:await t.select()})))},recover:async function(t,n,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!ln(t))throw console.log("fp",t),new Error("fp is not exist");if(!Me(n))throw console.log("woItems",n),new Error("invalid woItems");He(i)||(i=null),mn(s)||(s=!1);let r=e.readFileSync(t,"utf8");r=Gs(r);let o=de(r);He(i)&&i(),await Oo(o,(async t=>{console.log("recover...",t.name),s&&(console.log("needCreateStorage"),await n[t.name].createStorage());let e=null;return Ko(t.data)>0&&(e=await n[t.name].insert(t.data)),e}))}};function _o(){if(!He(un))throw new Error("invalid dayjs");return un().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}var $o={},qo={get exports(){return $o},set exports(t){$o=t}},tc={},ec={},nc={get exports(){return ec},set exports(t){ec=t}},ic={};function sc(){var t={"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 t}var rc=/javascript\s*\:/gim;ic.whiteList=sc(),ic.getDefaultWhiteList=sc,ic.onAttr=function(t,e,n){},ic.onIgnoreAttr=function(t,e,n){},ic.safeAttrValue=function(t,e){return rc.test(e)?"":e};var oc={indexOf:function(t,e){var n,i;if(Array.prototype.indexOf)return t.indexOf(e);for(n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1},forEach:function(t,e,n){var i,s;if(Array.prototype.forEach)return t.forEach(e,n);for(i=0,s=t.length;i<s;i++)e.call(n,t[i],i,t)},trim:function(t){return String.prototype.trim?t.trim():t.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(t){return String.prototype.trimRight?t.trimRight():t.replace(/(\s*$)/g,"")}};var cc=function(t,e){";"!==(t=oc.trimRight(t))[t.length-1]&&(t+=";");var n=t.length,i=!1,s=0,r=0,o="";function c(){if(!i){var n=oc.trim(t.slice(s,r)),c=n.indexOf(":");if(-1!==c){var l=oc.trim(n.slice(0,c)),a=oc.trim(n.slice(c+1));if(l){var d=e(s,o.length,l,a,n);d&&(o+=d+"; ")}}}s=r+1}for(;r<n;r++){var l=t[r];if("/"===l&&"*"===t[r+1]){var a=t.indexOf("*/",r+2);if(-1===a)break;s=(r=a+1)+1,i=!1}else"("===l?i=!0:")"===l?i=!1:";"===l?i||c():"\n"===l&&c()}return oc.trim(o)},lc=ic,ac=cc;function dc(t){return null==t}function uc(t){(t=function(t){var e={};for(var n in t)e[n]=t[n];return e}(t||{})).whiteList=t.whiteList||lc.whiteList,t.onAttr=t.onAttr||lc.onAttr,t.onIgnoreAttr=t.onIgnoreAttr||lc.onIgnoreAttr,t.safeAttrValue=t.safeAttrValue||lc.safeAttrValue,this.options=t}uc.prototype.process=function(t){if(!(t=(t=t||"").toString()))return"";var e=this.options,n=e.whiteList,i=e.onAttr,s=e.onIgnoreAttr,r=e.safeAttrValue;return ac(t,(function(t,e,o,c,l){var a=n[o],d=!1;if(!0===a?d=a:"function"==typeof a?d=a(c):a instanceof RegExp&&(d=a.test(c)),!0!==d&&(d=!1),c=r(o,c)){var u,M={position:e,sourcePosition:t,source:l,isWhite:d};return d?dc(u=i(o,c,M))?o+":"+c:u:dc(u=s(o,c,M))?void 0:u}}))};var Mc=uc;!function(t,e){var n=ic,i=Mc;for(var s in(e=t.exports=function(t,e){return new i(e).process(t)}).FilterCSS=i,n)e[s]=n[s];"undefined"!=typeof window&&(window.filterCSS=t.exports)}(nc,ec);var wc={indexOf:function(t,e){var n,i;if(Array.prototype.indexOf)return t.indexOf(e);for(n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1},forEach:function(t,e,n){var i,s;if(Array.prototype.forEach)return t.forEach(e,n);for(i=0,s=t.length;i<s;i++)e.call(n,t[i],i,t)},trim:function(t){return String.prototype.trim?t.trim():t.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(t){var e=/\s|\n|\t/.exec(t);return e?e.index:-1}},Ic=ec.FilterCSS,yc=ec.getDefaultWhiteList,pc=wc;function mc(){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 Lc=new Ic;function gc(t){return t.replace(Cc,"<").replace(Dc,">")}var Cc=/</g,Dc=/>/g,fc=/"/g,hc=/"/g,bc=/&#([a-zA-Z0-9]*);?/gim,Nc=/:?/gim,xc=/&newline;?/gim,Zc=/((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,Tc=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,Xc=/u\s*r\s*l\s*\(.*/gi;function Sc(t){return t.replace(fc,""")}function Ac(t){return t.replace(hc,'"')}function Yc(t){return t.replace(bc,(function(t,e){return"x"===e[0]||"X"===e[0]?String.fromCharCode(parseInt(e.substr(1),16)):String.fromCharCode(parseInt(e,10))}))}function vc(t){return t.replace(Nc,":").replace(xc," ")}function Gc(t){for(var e="",n=0,i=t.length;n<i;n++)e+=t.charCodeAt(n)<32?" ":t.charAt(n);return pc.trim(e)}function Ec(t){return t=Gc(t=vc(t=Yc(t=Ac(t))))}function jc(t){return t=gc(t=Sc(t))}tc.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"]},tc.getDefaultWhiteList=mc,tc.onTag=function(t,e,n){},tc.onIgnoreTag=function(t,e,n){},tc.onTagAttr=function(t,e,n){},tc.onIgnoreTagAttr=function(t,e,n){},tc.safeAttrValue=function(t,e,n,i){if(n=Ec(n),"href"===e||"src"===e){if("#"===(n=pc.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"===e){if(Zc.lastIndex=0,Zc.test(n))return""}else if("style"===e){if(Tc.lastIndex=0,Tc.test(n))return"";if(Xc.lastIndex=0,Xc.test(n)&&(Zc.lastIndex=0,Zc.test(n)))return"";!1!==i&&(n=(i=i||Lc).process(n))}return n=jc(n)},tc.escapeHtml=gc,tc.escapeQuote=Sc,tc.unescapeQuote=Ac,tc.escapeHtmlEntities=Yc,tc.escapeDangerHtml5Entities=vc,tc.clearNonPrintableCharacter=Gc,tc.friendlyAttrValue=Ec,tc.escapeAttrValue=jc,tc.onIgnoreTagStripAll=function(){return""},tc.StripTagBody=function(t,e){"function"!=typeof e&&(e=function(){});var n=!Array.isArray(t),i=[],s=!1;return{onIgnoreTag:function(r,o,c){if(function(e){return!!n||-1!==pc.indexOf(t,e)}(r)){if(c.isClosing){var l="[/removed]",a=c.position+l.length;return i.push([!1!==s?s:c.position,a]),s=!1,l}return s||(s=c.position),"[removed]"}return e(r,o,c)},remove:function(t){var e="",n=0;return pc.forEach(i,(function(i){e+=t.slice(n,i[0]),n=i[1]})),e+=t.slice(n)}}},tc.stripCommentTag=function(t){for(var e="",n=0;n<t.length;){var i=t.indexOf("\x3c!--",n);if(-1===i){e+=t.slice(n);break}e+=t.slice(n,i);var s=t.indexOf("--\x3e",i);if(-1===s)break;n=s+3}return e},tc.stripBlankChar=function(t){var e=t.split("");return(e=e.filter((function(t){var e=t.charCodeAt(0);return 127!==e&&(!(e<=31)||(10===e||13===e))}))).join("")},tc.attributeWrapSign='"',tc.cssFilter=Lc,tc.getDefaultCSSWhiteList=yc;var zc={},Kc=wc;function Wc(t){var e,n=Kc.spaceIndex(t);return e=-1===n?t.slice(1,-1):t.slice(1,n+1),"/"===(e=Kc.trim(e).toLowerCase()).slice(0,1)&&(e=e.slice(1)),"/"===e.slice(-1)&&(e=e.slice(0,-1)),e}function Vc(t){return"</"===t.slice(0,2)}var Hc=/[^a-zA-Z0-9\\_:.-]/gim;function Qc(t,e){for(;e<t.length;e++){var n=t[e];if(" "!==n)return"="===n?e:-1}}function Uc(t,e){for(;e<t.length;e++){var n=t[e];if(" "!==n)return"'"===n||'"'===n?e:-1}}function kc(t,e){for(;e>0;e--){var n=t[e];if(" "!==n)return"="===n?e:-1}}function Jc(t){return function(t){return'"'===t[0]&&'"'===t[t.length-1]||"'"===t[0]&&"'"===t[t.length-1]}(t)?t.substr(1,t.length-2):t}zc.parseTag=function(t,e,n){var i="",s=0,r=!1,o=!1,c=0,l=t.length,a="",d="";t:for(c=0;c<l;c++){var u=t.charAt(c);if(!1===r){if("<"===u){r=c;continue}}else if(!1===o){if("<"===u){i+=n(t.slice(s,c)),r=c,s=c;continue}if(">"===u||c===l-1){i+=n(t.slice(s,r)),a=Wc(d=t.slice(r,c+1)),i+=e(r,i.length,a,d,Vc(d)),s=c+1,r=!1;continue}if('"'===u||"'"===u)for(var M=1,w=t.charAt(c-M);""===w.trim()||"="===w;){if("="===w){o=u;continue t}w=t.charAt(c-++M)}}else if(u===o){o=!1;continue}}return s<l&&(i+=n(t.substr(s))),i},zc.parseAttr=function(t,e){var n=0,i=0,s=[],r=!1,o=t.length;function c(t,n){if(!((t=(t=Kc.trim(t)).replace(Hc,"").toLowerCase()).length<1)){var i=e(t,n||"");i&&s.push(i)}}for(var l=0;l<o;l++){var a,d=t.charAt(l);if(!1!==r||"="!==d)if(!1===r||l!==i)if(/\s|\n|\t/.test(d)){if(t=t.replace(/\s|\n|\t/g," "),!1===r){if(-1===(a=Qc(t,l))){c(Kc.trim(t.slice(n,l))),r=!1,n=l+1;continue}l=a-1;continue}if(-1===(a=kc(t,l-1))){c(r,Jc(Kc.trim(t.slice(n,l)))),r=!1,n=l+1;continue}}else;else{if(-1===(a=t.indexOf(d,l+1)))break;c(r,Kc.trim(t.slice(i+1,a))),r=!1,n=(l=a)+1}else r=t.slice(n,l),n=l+1,i='"'===t.charAt(n)||"'"===t.charAt(n)?n:Uc(t,l+1)}return n<t.length&&(!1===r?c(t.slice(n)):c(r,Jc(Kc.trim(t.slice(n))))),Kc.trim(s.join(" "))};var Rc=ec.FilterCSS,Pc=tc,Bc=zc,Oc=Bc.parseTag,Fc=Bc.parseAttr,_c=wc;function $c(t){return null==t}function qc(t){(t=function(t){var e={};for(var n in t)e[n]=t[n];return e}(t||{})).stripIgnoreTag&&(t.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),t.onIgnoreTag=Pc.onIgnoreTagStripAll),t.whiteList||t.allowList?t.whiteList=function(t){var e={};for(var n in t)Array.isArray(t[n])?e[n.toLowerCase()]=t[n].map((function(t){return t.toLowerCase()})):e[n.toLowerCase()]=t[n];return e}(t.whiteList||t.allowList):t.whiteList=Pc.whiteList,this.attributeWrapSign=!0===t.singleQuotedAttributeValue?"'":Pc.attributeWrapSign,t.onTag=t.onTag||Pc.onTag,t.onTagAttr=t.onTagAttr||Pc.onTagAttr,t.onIgnoreTag=t.onIgnoreTag||Pc.onIgnoreTag,t.onIgnoreTagAttr=t.onIgnoreTagAttr||Pc.onIgnoreTagAttr,t.safeAttrValue=t.safeAttrValue||Pc.safeAttrValue,t.escapeHtml=t.escapeHtml||Pc.escapeHtml,this.options=t,!1===t.css?this.cssFilter=!1:(t.css=t.css||{},this.cssFilter=new Rc(t.css))}qc.prototype.process=function(t){if(!(t=(t=t||"").toString()))return"";var e=this,n=e.options,i=n.whiteList,s=n.onTag,r=n.onIgnoreTag,o=n.onTagAttr,c=n.onIgnoreTagAttr,l=n.safeAttrValue,a=n.escapeHtml,d=e.attributeWrapSign,u=e.cssFilter;n.stripBlankChar&&(t=Pc.stripBlankChar(t)),n.allowCommentTag||(t=Pc.stripCommentTag(t));var M=!1;n.stripIgnoreTagBody&&(M=Pc.StripTagBody(n.stripIgnoreTagBody,r),r=M.onIgnoreTag);var w=Oc(t,(function(t,e,n,M,w){var I={sourcePosition:t,position:e,isClosing:w,isWhite:Object.prototype.hasOwnProperty.call(i,n)},y=s(n,M,I);if(!$c(y))return y;if(I.isWhite){if(I.isClosing)return"</"+n+">";var p=function(t){var e=_c.spaceIndex(t);if(-1===e)return{html:"",closing:"/"===t[t.length-2]};var n="/"===(t=_c.trim(t.slice(e+1,-1)))[t.length-1];return n&&(t=_c.trim(t.slice(0,-1))),{html:t,closing:n}}(M),m=i[n],L=Fc(p.html,(function(t,e){var i=-1!==_c.indexOf(m,t),s=o(n,t,e,i);return $c(s)?i?(e=l(n,t,e,u))?t+"="+d+e+d:t:$c(s=c(n,t,e,i))?void 0:s:s}));return M="<"+n,L&&(M+=" "+L),p.closing&&(M+=" /"),M+=">"}return $c(y=r(n,M,I))?a(M):y}),a);return M&&(w=M.remove(w)),w};var tl=qc;!function(t,e){var n=tc,i=zc,s=tl;function r(t,e){return new s(e).process(t)}(e=t.exports=r).filterXSS=r,e.FilterXSS=s,function(){for(var t in n)e[t]=n[t];for(var s in i)e[s]=i[s]}(),"undefined"!=typeof window&&(window.filterXSS=t.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=t.exports)}(qo,$o);var el=$o;function nl(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}function il(t){let e=function(){let t=nl();return el||t.xss}();let n=function t(n){return we(n)||ue(n)?(ce(n,(function(e,i){n[i]=t(e)})),n):ae(n)?e(n,{onIgnoreTagAttr:function(t,n,i,s){if("style"===n)return n+'="'+e.escapeAttrValue(i)+'"'}}):n}(Co(t));return n}let sl=null,rl=null;function ol(t,e,n){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"save";if(!Me(sl))throw console.log("ds",sl),new Error("invalid ds");let s=sl[t].keys,r=!1;we(n)||(r=!0,n=[n]);let o=_o();return i.indexOf("insert")>=0&&(s.indexOf("userId")>=0&&ce(n,((t,i)=>{n[i].userId=e})),s.indexOf("timeCreate")>=0&&ce(n,((t,e)=>{n[e].timeCreate=o})),s.indexOf("userIdUpdate")>=0&&ce(n,((t,i)=>{n[i].userIdUpdate=e})),s.indexOf("timeUpdate")>=0&&ce(n,((t,e)=>{n[e].timeUpdate=o}))),(i.indexOf("insert")>=0||i.indexOf("save")>=0)&&(s.indexOf("userIdUpdate")>=0&&ce(n,((t,i)=>{n[i].userIdUpdate=e})),s.indexOf("timeUpdate")>=0&&ce(n,((t,e)=>{n[e].timeUpdate=o}))),n=ys(n,((t,e)=>{let n={};return ce(t,((t,e)=>{t=il(t),n[e]=t})),n})),n=r?n[0]:n}async function cl(t,e,n,i){let s,r=null;if(!Me(rl))return Promise.reject("無有效woItems");let o=Dt(rl,e,null);if(null===o)return Promise.reject(`ORM找不到表名稱: ${e}`);if("select"===n){if(s=await o.select(i).catch((t=>{console.log(`${e}.select catch`,t),r="取得資料失敗"})),ae(r))return Promise.reject(r)}else if("insert"===n||"save"===n){try{i=ol(e,t,i,n)}catch(t){return console.log("adjustData catch",t.toString()),r="調整資料失敗",Promise.reject(r)}if("insert"===n?s=await o.insert(i).catch((t=>{console.log(`${e}.save catch`,t),r="新增資料失敗"})):"save"===n&&(s=await o.save(i).catch((t=>{console.log(`${e}.save catch`,t),r="儲存資料失敗"}))),ae(r))return Promise.reject(r);s=we(i)?ys(i,(t=>({id:t.id}))):{id:i.id}}else if("del"===n)s=await o.del(i).catch((t=>{console.log(`${e}.del catch`,t),r="刪除資料失敗"}));else if("delAll"===n)s=await o.delAll(i).catch((t=>{console.log(`${e}.delAll catch`,t),r="刪除資料失敗"}));else if("mix"===n){if(!Me(i))return Promise.reject("mix僅支援輸入ltdtDiffByKey結果物件");let n;s=[];let c=Dt(i,"add",[]);if(Ko(c)>0){try{c=ol(e,t,c,"insert+save")}catch(t){return console.log("adjustData catch",t.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.insert(c).catch((t=>{console.log(`${e}.save catch`,t),r="新增資料失敗"})),ae(r))return Promise.reject(r);n=ys(c,(t=>({id:t.id}))),s=[...s,...n]}let l=Dt(i,"del",[]);if(Ko(l)>0){if(await o.del(l).catch((t=>{console.log(`${e}.save catch`,t),r="刪除資料失敗"})),ae(r))return Promise.reject(r);n=ys(l,(t=>({id:t.id}))),s=[...s,...n]}let a=Dt(i,"diff",[]);if(Ko(a)>0){try{a=ol(e,t,a)}catch(t){return console.log("adjustData catch",t.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.save(a).catch((t=>{console.log(`${e}.save catch`,t),r="變更資料失敗"})),ae(r))return Promise.reject(r);n=ys(a,(t=>({id:t.id}))),s=[...s,...n]}}else r=`invalid mode: ${n}`;return ae(r)?Promise.reject(r):s}function ll(t,e){return sl=t,rl=e,cl}function al(t,e){var n=[];return re(t,(function(t,i,s){e(t,i,s)&&n.push(t)})),n}function dl(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!we(t)){let t=Re();return t.reject("pms is not an array"),t}return t.reduce(((t,e)=>t.then(e)),Promise.resolve(e))}let ul=[],Ml=[],wl=[],Il=null,yl=null,pl=!0,ml=!0;function Ll(t){setTimeout((()=>{ul.push(t)}),1)}function gl(t){setTimeout((()=>{Ml.push(t)}),1)}function Cl(t){setTimeout((()=>{wl.push(t)}),1)}async function Dl(t,e,n,i){if(!He(Il))return Promise.reject("invalid mapOrm");if(pl&&!ae(t))return console.log("userId",t),console.log("找不到使用者主鍵"),Promise.reject("找不到使用者主鍵");let s="n";if(pl){if(!He(yl))return Promise.reject("invalid getUserById");let e=await yl(t);if(!e)return console.log("userId",t),console.log("找不到使用者資訊"),Promise.reject("找不到使用者資訊");s=Dt(e,"isAdmin"),"y"!==s&&"n"!==s&&(s="n");let n=Dt(e,"isActive");if("y"!==n&&"n"!==n&&(n="n"),"y"!==n)return console.log("userId",t),console.log("oSelf",e),console.log("使用者被停權或無有效使用者資訊"),Promise.reject("使用者被停權或無有效使用者資訊")}if(await Oo(ul,(r=>r({woName:e,userId:t,isAdmin:s,mode:n,input:i}))),Ko(Ml)>0){let r={woName:e,userId:t,isAdmin:s,mode:n,input:i},o=await dl(Ml,r);i=o.input}let r=await Il(t,e,n,i);var c,l;return ml&&"n"===s&&"select"===n&&we(r)&&(l=t=>!(Zn(t,"isActive")&&"n"===t.isActive),r=(o(c=r)?Ni:al)(c,ws(l))),Ko(wl)>0&&(r=await dl(wl,{woName:e,userId:t,isAdmin:s,mode:n,input:i,output:r})),r}function fl(t,e,n,i){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},r=function(t,e,n,i){if(!Me(t))throw console.log("ds",t),new Error("invalid ds");if(!He(e))throw console.log("WOrm",e),new Error("invalid WOrm");if(!ae(n))throw console.log("url",n),new Error("invalid url");if(!ae(i))throw console.log("db",i),new Error("invalid db");let s={};return ce(ie(t),(t=>{let r=new e({url:n,db:i,cl:t});s[t]=r})),s}(t,e,n,i),o=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return He(t)?(Il=t,pl=Dt(e,"useCheckUser"),mn(pl)||(pl=!0),yl=Dt(e,"getUserById"),ml=Dt(e,"useExcludeWhenNotAdmin"),mn(ml)||(ml=!0),{addFunCheck:Ll,addFunPreProcessing:gl,addFunPostProcessing:Cl,procOrm:Dl}):Promise.reject("invalid mapOrm")}(ll(t,r),s);return{...Fo,woItems:r,...o}}function hl(t){return t.indexOf("\\\\")>=0?"```"+t+"```":t}let bl={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"},timeCreate:{name:"創建時間",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},Nl=function(){let t=function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(!Le(e))return{};let i={};return ce(e,(function(e){i[e]=Dt(t,e,n)})),i}(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},ie(bl));return t.id=`${_n()}-${yn()}`,t.timeCreate=_o(),t.timeUpdate=t.timeCreate,t.isActive="y",t},xl={keyTable:"apis",tableNameCht:"APIs",tableNameEng:"APIs",settings:bl,funNew:Nl,funTest:()=>{let t=ys([{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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 '}],((t,e)=>{let n=Nl({...t,order:e});return n.id=t.id,ae(t.timeUpdate)&&(n.timeUpdate=t.timeUpdate),n=function(t,e){if(!ue(t))return{};if(!Le(e))return{};let n={};return ce(e,(function(e){Zn(t,e)&&(n[e]=Dt(t,e))})),n}(n,ie(bl)),n}));return console.log("已產生: {keyTable} 測試資料",t),t}};function Zl(t){let e=Dt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"useCreateStorage");mn(e)||(e=!1);let{keyTable:n,tableNameCht:i,tableNameEng:s,settings:r,parser:o,funNew:c,funTest:l,ext:a}=t;if(!ae(n))throw new Error(`invalid keyTable[${n}]`);if(ae(i)||(i=n),ae(s)||(s=n),!Me(r))throw new Error("invalid settings");Me(a)||(a=null),Me(o)||(o=null),He(c)||(c=null);let d=null;He(l)&&(d=async t=>{if(!Me(t))throw new Error("invalid wo");if(!Zn(t,n))throw console.log(t),new Error(`keyTable[${n}] is not in wo`);let i=[];try{i=l(),Qe(i)&&(i=await i)}catch(t){throw console.log(`keyTable[${n}] funTest catch`,t),new Error(t)}if(0!==Ko(i))return e&&await t[n].createStorage(),await t[n].save(i),i});let u={},M={};return ce(ie(r),(t=>{let e=Dt(r,`${t}.name`,"");ae(e)&&(u[t]=e);let n=Dt(r,`${t}.type`,"");ae(n)&&(M[t]=n)})),{...t,keyTable:n,tableNameCht:i,tableNameEng:s,settings:r,keys:ie(r),kpType:M,kpHead:u,parser:o,funNew:c,funTest:l,funTestAndSave:d,ext:a}}let Tl={apis:xl},Xl={};for(let t in Tl)Xl[t]=Zl(Tl[t],{useCreateStorage:!1});return function(n,i,s,r,o,c){let l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{},a=null;if(!He(n))throw console.log("invalid WOrm",n),new Error("invalid WOrm");if(!ae(i))throw console.log("invalid url",i),new Error("invalid url");if(!ae(s))throw console.log("invalid db",s),new Error("invalid db");if(!He(r))throw console.log("invalid getUserByToken",r),new Error("invalid getUserByToken");if(!He(o))throw console.log("invalid verifyBrowserUser",o),new Error("invalid verifyBrowserUser");if(!He(c))throw console.log("invalid verifyAppUser",c),new Error("invalid verifyAppUser");let d=Dt(l,"serverPort");Ve(d)||(d=11005),d=We(d);let u=Dt(l,"useCheckUser",!1),M=Dt(l,"getUserById",null),w=Dt(l,"useExcludeWhenNotAdmin",!1),I=Dt(l,"webName",{}),y=Dt(l,"webDescription",{}),p=Dt(l,"webLogo",""),m=Dt(l,"subfolder","");var L,g;ae(m)&&("/"===Je(m,1)&&(g=1,m=ae(L=m)&&Ue(g)?0===(g=We(g))?L:ke(L,L.length-g):""),"/"!==ke(m,1)&&(m=`/${m}`));let C=Dt(l,"urlRedirect",""),D={useCheckUser:u,getUserById:M,useExcludeWhenNotAdmin:w},f={};try{f=fl(Xl,n,i,s,D)}catch(t){console.log(t)}let{woItems:h,procOrm:b}=f,N=t=>({webName:I,webDescription:y,webLogo:p}),x=async t=>{let e=r(t);return Qe(e)&&(e=await e),Me(e)?e:(console.log("token",t),console.log("can not find the user from token"),Promise.reject("can not find the user from token"))},Z=async function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=await x(t),i=o(n,e);return Qe(i)&&(i=await i),i?n:(console.log("userSelf",n),console.log("user does not have permission"),Promise.reject("user does not have permission"))},T=async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return await h.apis.select(t)},X=async t=>{let e=Dt(t,"payload");if(ae(e)&&(e=de(e)),!Me(e))return console.log("inp",e),console.log("invalid inp from req"),Promise.reject("invalid inp from req");let n=Dt(e,"group","");if(!ae(n))return console.log("inp",e),console.log("group",n),console.log("invalid group from inp"),Promise.reject("invalid group from inp");let i=Dt(e,"apis",[]);return Le(i)?(ce(i,((t,e)=>{ce(t,((t,n)=>{ae(t)&&"base64:"===ke(t,7)&&(t=function(t,e){return ae(t)&&Ue(e)?0===(e=We(e))?t:Je(t,t.length-e):""}(t,7),t=sn(t),i[e][n]=t)}))})),ce(i,((t,e)=>{i[e].group=n})),e={group:n,apis:i},e):(console.log("inp",e),console.log("apis",i),console.log("invalid apis from inp"),Promise.reject("invalid apis from inp"))},S="dist",A="./node_modules/w-web-api/dist";on(A)&&(S=A);let Y="index.html";try{let n=t.resolve(S,"index.tmp");if(ln(n)||(n=t.resolve(S,Y)),!ln(n))throw console.log("fpEntryIn",n),new Error("invalid fpEntryIn");let i=t.resolve(S,Y),s=e.readFileSync(n,"utf8");s=an(s,"/mapi/","{sfd}/"),s=an(s,"{sfd}",m),s=an(s,"{urlRedirect}",C),e.writeFileSync(i,s,"utf8")}catch(t){console.log(t),console.log(`can not generate ${Y}`)}let v=[{method:"GET",path:"/getWebInfor",handler:async function(t,e){return N()}},{method:"GET",path:"/api/getUserByToken",handler:async function(t,e){return await Pe((async function(){let e=Dt(t,"query.token",""),n=await Z(e,"getUserByToken");return Me(n)?n:(console.log("token",e),console.log("[API]getUserByToken/check user: invalid user"),console.log("token does not have permission"),Promise.reject("token does not have permission"))}))()}},{method:"GET",path:"/getAPIsList",handler:async function(t,e){return await Pe((async function(){let e=Dt(t,"query.token","");return Me(await Z(e,"getAPIsList"))?await T({isActive:"y"}):(console.log("token",e),console.log("[API]getAPIsList/check user: invalid user"),console.log("token does not have permission"),Promise.reject("token does not have permission"))}))()}},{method:"POST",path:"/updateAPIs",handler:async function(t,e){let n=await Pe((async function(){let e=Dt(t,"query.token","");if(!Me(await Z(e,"updateAPIs")))return console.log("token",e),console.log("[API]updateAPIs/check user: invalid user"),console.log("token does not have permission"),Promise.reject("token does not have permission");let n=await X(t),i=await async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{apis:e}=t;return await h.apis.save(e)}(n);return i}))();return n}},{method:"POST",path:"/syncAndReplaceApis",handler:async function(t,e){let n=await Pe((async function(){let e=Dt(t,"query.token",""),n=await async function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=await x(t),i=c(n,e);return Qe(i)&&(i=await i),i?n:(console.log("userSelf",n),console.log("user does not have permission"),Promise.reject("user does not have permission"))}(e,"syncAndReplaceApis");if(!Me(n))return console.log("token",e),console.log("[API]syncAndReplaceApis/check user: invalid user"),console.log("token does not have permission"),Promise.reject("token does not have permission");let i=await X(t),s=await(async t=>{let e=Dt(t,"group","");if(!ae(e))return console.log("params",t),console.log("group",e),console.log("invalid group"),Promise.reject("invalid group");let n=Dt(t,"apis",[]);return Le(n)?(await h.apis.delAll({group:e}),await h.apis.insert(n)):(console.log("params",t),console.log("apis",n),console.log("invalid apis"),Promise.reject("invalid apis"))})(i);return s}))();return n}}],G=ie(Xl),E=G;return a=new Bo({port:l.serverPort,pathStaticFiles:S,apis:v,getUserIdByToken:async t=>"",useDbOrm:!0,kpOrm:h,operOrm:b,tableNamesExec:G,methodsExec:["select","insert","save","del"],tableNamesSync:E,kpFunExt:{getWebInfor:N,getAPIsList:function(t){return T(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})}},fnTableTags:"tableTags-web-api.json"}),a}}));
|
|
6
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("worker_threads")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","worker_threads"],e):(t="undefined"!=typeof globalThis?globalThis:t||self)["w-web-api"]=e(t.path,t.fs,t["@hapi/hapi"],t["@hapi/inert"],t.stream,t.require$$0)}(this,(function(t,e,n,i,s,r){"use strict";var o=Array.isArray,c="object"==typeof global&&global&&global.Object===Object&&global,l="object"==typeof self&&self&&self.Object===Object&&self,a=c||l||Function("return this")(),d=a.Symbol,u=Object.prototype,M=u.hasOwnProperty,w=u.toString,I=d?d.toStringTag:void 0;var y=Object.prototype.toString;var p="[object Null]",m="[object Undefined]",L=d?d.toStringTag:void 0;function g(t){return null==t?void 0===t?m:p:L&&L in Object(t)?function(t){var e=M.call(t,I),n=t[I];try{t[I]=void 0;var i=!0}catch(t){}var s=w.call(t);return i&&(e?t[I]=n:delete t[I]),s}(t):function(t){return y.call(t)}(t)}function C(t){return null!=t&&"object"==typeof t}var D="[object Symbol]";function f(t){return"symbol"==typeof t||C(t)&&g(t)==D}var h=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,b=/^\w*$/;function N(t,e){if(o(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!f(t))||(b.test(t)||!h.test(t)||null!=e&&t in Object(e))}function x(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}var Z="[object AsyncFunction]",T="[object Function]",X="[object GeneratorFunction]",S="[object Proxy]";function A(t){if(!x(t))return!1;var e=g(t);return e==T||e==X||e==Z||e==S}var Y,v=a["__core-js_shared__"],G=(Y=/[^.]+$/.exec(v&&v.keys&&v.keys.IE_PROTO||""))?"Symbol(src)_1."+Y:"";var E=Function.prototype.toString;function j(t){if(null!=t){try{return E.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var z=/^\[object .+?Constructor\]$/,K=Function.prototype,W=Object.prototype,V=K.toString,H=W.hasOwnProperty,Q=RegExp("^"+V.call(H).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function U(t){return!(!x(t)||(e=t,G&&G in e))&&(A(t)?Q:z).test(j(t));var e}function k(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return U(n)?n:void 0}var J=k(Object,"create");var R=Object.prototype.hasOwnProperty;var P=Object.prototype.hasOwnProperty;function B(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}function O(t,e){return t===e||t!=t&&e!=e}function F(t,e){for(var n=t.length;n--;)if(O(t[n][0],e))return n;return-1}B.prototype.clear=function(){this.__data__=J?J(null):{},this.size=0},B.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},B.prototype.get=function(t){var e=this.__data__;if(J){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return R.call(e,t)?e[t]:void 0},B.prototype.has=function(t){var e=this.__data__;return J?void 0!==e[t]:P.call(e,t)},B.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=J&&void 0===e?"__lodash_hash_undefined__":e,this};var _=Array.prototype.splice;function $(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}$.prototype.clear=function(){this.__data__=[],this.size=0},$.prototype.delete=function(t){var e=this.__data__,n=F(e,t);return!(n<0)&&(n==e.length-1?e.pop():_.call(e,n,1),--this.size,!0)},$.prototype.get=function(t){var e=this.__data__,n=F(e,t);return n<0?void 0:e[n][1]},$.prototype.has=function(t){return F(this.__data__,t)>-1},$.prototype.set=function(t,e){var n=this.__data__,i=F(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};var q=k(a,"Map");function tt(t,e){var n,i,s=t.__data__;return("string"==(i=typeof(n=e))||"number"==i||"symbol"==i||"boolean"==i?"__proto__"!==n:null===n)?s["string"==typeof e?"string":"hash"]:s.map}function et(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}et.prototype.clear=function(){this.size=0,this.__data__={hash:new B,map:new(q||$),string:new B}},et.prototype.delete=function(t){var e=tt(this,t).delete(t);return this.size-=e?1:0,e},et.prototype.get=function(t){return tt(this,t).get(t)},et.prototype.has=function(t){return tt(this,t).has(t)},et.prototype.set=function(t,e){var n=tt(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this};var nt="Expected a function";function it(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError(nt);var n=function(){var i=arguments,s=e?e.apply(this,i):i[0],r=n.cache;if(r.has(s))return r.get(s);var o=t.apply(this,i);return n.cache=r.set(s,o)||r,o};return n.cache=new(it.Cache||et),n}it.Cache=et;var st,rt,ot,ct=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,lt=/\\(\\)?/g,at=(st=function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(ct,(function(t,n,i,s){e.push(i?s.replace(lt,"$1"):n||t)})),e},rt=it(st,(function(t){return 500===ot.size&&ot.clear(),t})),ot=rt.cache,rt),dt=at;function ut(t,e){for(var n=-1,i=null==t?0:t.length,s=Array(i);++n<i;)s[n]=e(t[n],n,t);return s}var Mt=1/0,wt=d?d.prototype:void 0,It=wt?wt.toString:void 0;function yt(t){if("string"==typeof t)return t;if(o(t))return ut(t,yt)+"";if(f(t))return It?It.call(t):"";var e=t+"";return"0"==e&&1/t==-Mt?"-0":e}function pt(t){return null==t?"":yt(t)}function mt(t,e){return o(t)?t:N(t,e)?[t]:dt(pt(t))}var Lt=1/0;function gt(t){if("string"==typeof t||f(t))return t;var e=t+"";return"0"==e&&1/t==-Lt?"-0":e}function Ct(t,e){for(var n=0,i=(e=mt(e,t)).length;null!=t&&n<i;)t=t[gt(e[n++])];return n&&n==i?t:void 0}function Dt(t,e,n){var i=null==t?void 0:Ct(t,e);return void 0===i?n:i}function ft(t,e){for(var n=-1,i=null==t?0:t.length;++n<i&&!1!==e(t[n],n,t););return t}var ht,bt=function(t,e,n){for(var i=-1,s=Object(t),r=n(t),o=r.length;o--;){var c=r[ht?o:++i];if(!1===e(s[c],c,s))break}return t};function Nt(t){return C(t)&&"[object Arguments]"==g(t)}var xt=Object.prototype,Zt=xt.hasOwnProperty,Tt=xt.propertyIsEnumerable,Xt=Nt(function(){return arguments}())?Nt:function(t){return C(t)&&Zt.call(t,"callee")&&!Tt.call(t,"callee")},St=Xt;var At="object"==typeof exports&&exports&&!exports.nodeType&&exports,Yt=At&&"object"==typeof module&&module&&!module.nodeType&&module,vt=Yt&&Yt.exports===At?a.Buffer:void 0,Gt=(vt?vt.isBuffer:void 0)||function(){return!1},Et=9007199254740991,jt=/^(?:0|[1-9]\d*)$/;function zt(t,e){var n=typeof t;return!!(e=null==e?Et:e)&&("number"==n||"symbol"!=n&&jt.test(t))&&t>-1&&t%1==0&&t<e}var Kt=9007199254740991;function Wt(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Kt}var Vt={};function Ht(t){return function(e){return t(e)}}Vt["[object Float32Array]"]=Vt["[object Float64Array]"]=Vt["[object Int8Array]"]=Vt["[object Int16Array]"]=Vt["[object Int32Array]"]=Vt["[object Uint8Array]"]=Vt["[object Uint8ClampedArray]"]=Vt["[object Uint16Array]"]=Vt["[object Uint32Array]"]=!0,Vt["[object Arguments]"]=Vt["[object Array]"]=Vt["[object ArrayBuffer]"]=Vt["[object Boolean]"]=Vt["[object DataView]"]=Vt["[object Date]"]=Vt["[object Error]"]=Vt["[object Function]"]=Vt["[object Map]"]=Vt["[object Number]"]=Vt["[object Object]"]=Vt["[object RegExp]"]=Vt["[object Set]"]=Vt["[object String]"]=Vt["[object WeakMap]"]=!1;var Qt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ut=Qt&&"object"==typeof module&&module&&!module.nodeType&&module,kt=Ut&&Ut.exports===Qt&&c.process,Jt=function(){try{var t=Ut&&Ut.require&&Ut.require("util").types;return t||kt&&kt.binding&&kt.binding("util")}catch(t){}}(),Rt=Jt&&Jt.isTypedArray,Pt=Rt?Ht(Rt):function(t){return C(t)&&Wt(t.length)&&!!Vt[g(t)]},Bt=Object.prototype.hasOwnProperty;function Ot(t,e){var n=o(t),i=!n&&St(t),s=!n&&!i&&Gt(t),r=!n&&!i&&!s&&Pt(t),c=n||i||s||r,l=c?function(t,e){for(var n=-1,i=Array(t);++n<t;)i[n]=e(n);return i}(t.length,String):[],a=l.length;for(var d in t)!e&&!Bt.call(t,d)||c&&("length"==d||s&&("offset"==d||"parent"==d)||r&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||zt(d,a))||l.push(d);return l}var Ft=Object.prototype;function _t(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Ft)}function $t(t,e){return function(n){return t(e(n))}}var qt=$t(Object.keys,Object),te=Object.prototype.hasOwnProperty;function ee(t){if(!_t(t))return qt(t);var e=[];for(var n in Object(t))te.call(t,n)&&"constructor"!=n&&e.push(n);return e}function ne(t){return null!=t&&Wt(t.length)&&!A(t)}function ie(t){return ne(t)?Ot(t):ee(t)}var se=function(t,e){return function(n,i){if(null==n)return n;if(!ne(n))return t(n,i);for(var s=n.length,r=e?s:-1,o=Object(n);(e?r--:++r<s)&&!1!==i(o[r],r,o););return n}}((function(t,e){return t&&bt(t,e,ie)})),re=se;function oe(t){return t}function ce(t,e){var n;return(o(t)?ft:re)(t,"function"==typeof(n=e)?n:oe)}function le(t){return"[object String]"===Object.prototype.toString.call(t)}function ae(t){return!(!le(t)||""===t)}function de(t){if(!ae(t))return{};let e={};try{e=JSON.parse(t)}catch(t){e={}}return e}function ue(t){return"[object Object]"===Object.prototype.toString.call(t)}function Me(t){if(ue(t)){for(let e in t)return!0;return!1}return!1}function we(t){return"[object Array]"===Object.prototype.toString.call(t)}function Ie(t){return"[object Undefined]"===Object.prototype.toString.call(t)}function ye(t){if(ue(t)){for(let e in t)return!1;return!0}return!1}function pe(t){return t!=t}function me(t){return!!Ie(t)||(!!function(t){return"[object Null]"===Object.prototype.toString.call(t)}(t)||(!!ye(t)||(!!function(t){return!(!le(t)||""!==t)}(t)||(!!function(t){return!!we(t)&&0===t.length}(t)||!!pe(t)))))}function Le(t){return!!we(t)&&(0!==t.length&&(1!==t.length||!me(t[0])))}var ge=/\s/;var Ce=/^\s+/;function De(t){return t?t.slice(0,function(t){for(var e=t.length;e--&&ge.test(t.charAt(e)););return e}(t)+1).replace(Ce,""):t}var fe=NaN,he=/^[-+]0x[0-9a-f]+$/i,be=/^0b[01]+$/i,Ne=/^0o[0-7]+$/i,xe=parseInt;function Ze(t){if("number"==typeof t)return t;if(f(t))return fe;if(x(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=x(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=De(t);var n=be.test(t);return n||Ne.test(t)?xe(t.slice(2),n?2:8):he.test(t)?fe:+t}var Te=1/0,Xe=17976931348623157e292;function Se(t){return t?(t=Ze(t))===Te||t===-Te?(t<0?-1:1)*Xe:t==t?t:0:0===t?t:0}function Ae(t){var e=Se(t),n=e%1;return e==e?n?e-n:e:0}function Ye(t){let e=!1;if(ae(t))e=!isNaN(Number(t));else if(function(t){return"[object Number]"===Object.prototype.toString.call(t)}(t)){if(pe(t))return!1;e=!0}return e}function ve(t){if(!Ye(t))return 0;return Se(t)}function Ge(t){return!!Ye(t)&&(t=ve(t),"number"==typeof(e=t)&&e==Ae(e));var e}var Ee=a.isFinite,je=Math.min;var ze=function(t){var e=Math[t];return function(t,n){if(t=Ze(t),(n=null==n?0:je(Ae(n),292))&&Ee(t)){var i=(pt(t)+"e").split("e");return+((i=(pt(e(i[0]+"e"+(+i[1]+n)))+"e").split("e"))[0]+"e"+(+i[1]-n))}return e(t)}}("round"),Ke=ze;function We(t){if(!Ye(t))return 0;t=ve(t);let e=Ke(t);return"0"===String(e)?0:e}function Ve(t){if(!Ge(t))return!1;return We(t)>0}function He(t){let e=Object.prototype.toString.call(t);return"[object Function]"===e||"[object AsyncFunction]"===e}function Qe(t){let e,n=Object.prototype.toString.call(t);if(e="[object Promise]"===n,e)return!0;if("[object Function]"!==n)return!1;try{e="function"!=typeof t.subscribe&&"function"==typeof t.then}catch(t){}return e}function Ue(t){if(!Ge(t))return!1;return We(t)>=0}function ke(t,e){return ae(t)&&Ue(e)?0===(e=We(e))?"":t.substring(0,e):""}function Je(t,e){if(!ae(t))return"";if(!Ue(e))return"";if(0===(e=We(e)))return"";let n=t.length-e;return n<0&&(n=0),t.substring(n,n+e)}function Re(){let t,e,n=new Promise((function(){t=arguments[0],e=arguments[1]}));return n.resolve=t,n.reject=e,n}let Pe=function(t){if(!He(t))throw new Error("fn is not a function");return function(){let e=Re(),n=null,i=null;try{n=t.apply(this,arguments)}catch(t){i=t}return null!==i?e.resolve({state:"error",msg:i}):Qe(n)?n.then((t=>{e.resolve({state:"success",msg:t})})).catch((t=>{"cancelled"===Dt(t,"reason")?e.resolve({state:"cancelled",msg:""}):e.resolve({state:"error",msg:t})})):e.resolve({state:"success",msg:n}),e}};var Be="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Oe={};var Fe,_e={},$e={get exports(){return _e},set exports(t){_e=t}};function qe(){return Fe||(Fe=1,function(t,e){var n;t.exports=(n=n||function(t,e){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!==Be&&Be.crypto&&(n=Be.crypto),!n)try{n=require("crypto")}catch(t){}var i=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(t){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(t){}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||function(){function t(){}return function(e){var n;return t.prototype=e,n=new t,t.prototype=null,n}}(),r={},o=r.lib={},c=o.Base={extend:function(t){var e=s(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},l=o.WordArray=c.extend({init:function(t,n){t=this.words=t||[],this.sigBytes=n!=e?n:4*t.length},toString:function(t){return(t||d).stringify(this)},concat:function(t){var e=this.words,n=t.words,i=this.sigBytes,s=t.sigBytes;if(this.clamp(),i%4)for(var r=0;r<s;r++){var o=n[r>>>2]>>>24-r%4*8&255;e[i+r>>>2]|=o<<24-(i+r)%4*8}else for(var c=0;c<s;c+=4)e[i+c>>>2]=n[c>>>2];return this.sigBytes+=s,this},clamp:function(){var e=this.words,n=this.sigBytes;e[n>>>2]&=4294967295<<32-n%4*8,e.length=t.ceil(n/4)},clone:function(){var t=c.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],n=0;n<t;n+=4)e.push(i());return new l.init(e,t)}}),a=r.enc={},d=a.Hex={stringify:function(t){for(var e=t.words,n=t.sigBytes,i=[],s=0;s<n;s++){var r=e[s>>>2]>>>24-s%4*8&255;i.push((r>>>4).toString(16)),i.push((15&r).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,n=[],i=0;i<e;i+=2)n[i>>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new l.init(n,e/2)}},u=a.Latin1={stringify:function(t){for(var e=t.words,n=t.sigBytes,i=[],s=0;s<n;s++){var r=e[s>>>2]>>>24-s%4*8&255;i.push(String.fromCharCode(r))}return i.join("")},parse:function(t){for(var e=t.length,n=[],i=0;i<e;i++)n[i>>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new l.init(n,e)}},M=a.Utf8={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return u.parse(unescape(encodeURIComponent(t)))}},w=o.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=M.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var n,i=this._data,s=i.words,r=i.sigBytes,o=this.blockSize,c=r/(4*o),a=(c=e?t.ceil(c):t.max((0|c)-this._minBufferSize,0))*o,d=t.min(4*a,r);if(a){for(var u=0;u<a;u+=o)this._doProcessBlock(s,u);n=s.splice(0,a),i.sigBytes-=d}return new l.init(n,d)},clone:function(){var t=c.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0});o.Hasher=w.extend({cfg:c.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){w.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){return t&&this._append(t),this._doFinalize()},blockSize:16,_createHelper:function(t){return function(e,n){return new t.init(n).finalize(e)}},_createHmacHelper:function(t){return function(e,n){return new I.HMAC.init(t,n).finalize(e)}}});var I=r.algo={};return r}(Math),n)}($e)),_e}!function(t,e){t.exports=qe().enc.Utf8}({get exports(){return Oe},set exports(t){Oe=t}});var tn=Oe,en={};!function(t,e){var n;t.exports=(n=qe(),function(){var t=n,e=t.lib.WordArray;function i(t,n,i){for(var s=[],r=0,o=0;o<n;o++)if(o%4){var c=i[t.charCodeAt(o-1)]<<o%4*2|i[t.charCodeAt(o)]>>>6-o%4*2;s[r>>>2]|=c<<24-r%4*8,r++}return e.create(s,r)}t.enc.Base64={stringify:function(t){var e=t.words,n=t.sigBytes,i=this._map;t.clamp();for(var s=[],r=0;r<n;r+=3)for(var o=(e[r>>>2]>>>24-r%4*8&255)<<16|(e[r+1>>>2]>>>24-(r+1)%4*8&255)<<8|e[r+2>>>2]>>>24-(r+2)%4*8&255,c=0;c<4&&r+.75*c<n;c++)s.push(i.charAt(o>>>6*(3-c)&63));var l=i.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(t){var e=t.length,n=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var r=0;r<n.length;r++)s[n.charCodeAt(r)]=r}var o=n.charAt(64);if(o){var c=t.indexOf(o);-1!==c&&(e=c)}return i(t,e,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),n.enc.Base64)}({get exports(){return en},set exports(t){en=t}});var nn=en;function sn(t){if(!ae(t))return"";return nn.parse(t).toString(tn)}function rn(t){let e=Dt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(!e.existsSync(t))return!1;let n=e.lstatSync(t);return!n.isFile()&&!n.isSymbolicLink()}function on(t){return rn(t,{fs:e})}function cn(t){let e=Dt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");return!!e.existsSync(t)&&(!e.lstatSync(t).isDirectory()&&!e.lstatSync(t).isSymbolicLink())}function ln(t){return cn(t,{fs:e})}function an(t,e,n){if(!ae(t))return"";if(!ae(e))return"";if(!le(n))return"";return String(t).replaceAll(e,n)}var dn={};!function(t,e){t.exports=function(){var t=1e3,e=6e4,n=36e5,i="millisecond",s="second",r="minute",o="hour",c="day",l="week",a="month",d="quarter",u="year",M="date",w="Invalid Date",I=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,p={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(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var i=String(t);return!i||i.length>=e?t:""+Array(e+1-i.length).join(n)+t},L={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),i=Math.floor(n/60),s=n%60;return(e<=0?"+":"-")+m(i,2,"0")+":"+m(s,2,"0")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var i=12*(n.year()-e.year())+(n.month()-e.month()),s=e.clone().add(i,a),r=n-s<0,o=e.clone().add(i+(r?-1:1),a);return+(-(i+(n-s)/(r?s-o:o-s))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:a,y:u,w:l,d:c,D:M,h:o,m:r,s:s,ms:i,Q:d}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},g="en",C={};C[g]=p;var D="$isDayjsObject",f=function(t){return t instanceof x||!(!t||!t[D])},h=function t(e,n,i){var s;if(!e)return g;if("string"==typeof e){var r=e.toLowerCase();C[r]&&(s=r),n&&(C[r]=n,s=r);var o=e.split("-");if(!s&&o.length>1)return t(o[0])}else{var c=e.name;C[c]=e,s=c}return!i&&s&&(g=s),s||!i&&g},b=function(t,e){if(f(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new x(n)},N=L;N.l=h,N.i=f,N.w=function(t,e){return b(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var x=function(){function p(t){this.$L=h(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[D]=!0}var m=p.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(N.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var i=e.match(I);if(i){var s=i[2]-1||0,r=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],s,i[3]||1,i[4]||0,i[5]||0,i[6]||0,r)):new Date(i[1],s,i[3]||1,i[4]||0,i[5]||0,i[6]||0,r)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return N},m.isValid=function(){return!(this.$d.toString()===w)},m.isSame=function(t,e){var n=b(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return b(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<b(t)},m.$g=function(t,e,n){return N.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,i=!!N.u(e)||e,d=N.p(t),w=function(t,e){var s=N.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return i?s:s.endOf(c)},I=function(t,e){return N.w(n.toDate()[t].apply(n.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,p=this.$M,m=this.$D,L="set"+(this.$u?"UTC":"");switch(d){case u:return i?w(1,0):w(31,11);case a:return i?w(1,p):w(0,p+1);case l:var g=this.$locale().weekStart||0,C=(y<g?y+7:y)-g;return w(i?m-C:m+(6-C),p);case c:case M:return I(L+"Hours",0);case o:return I(L+"Minutes",1);case r:return I(L+"Seconds",2);case s:return I(L+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,l=N.p(t),d="set"+(this.$u?"UTC":""),w=(n={},n[c]=d+"Date",n[M]=d+"Date",n[a]=d+"Month",n[u]=d+"FullYear",n[o]=d+"Hours",n[r]=d+"Minutes",n[s]=d+"Seconds",n[i]=d+"Milliseconds",n)[l],I=l===c?this.$D+(e-this.$W):e;if(l===a||l===u){var y=this.clone().set(M,1);y.$d[w](I),y.init(),this.$d=y.set(M,Math.min(this.$D,y.daysInMonth())).$d}else w&&this.$d[w](I);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[N.p(t)]()},m.add=function(i,d){var M,w=this;i=Number(i);var I=N.p(d),y=function(t){var e=b(w);return N.w(e.date(e.date()+Math.round(t*i)),w)};if(I===a)return this.set(a,this.$M+i);if(I===u)return this.set(u,this.$y+i);if(I===c)return y(1);if(I===l)return y(7);var p=(M={},M[r]=e,M[o]=n,M[s]=t,M)[I]||1,m=this.$d.getTime()+i*p;return N.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||w;var i=t||"YYYY-MM-DDTHH:mm:ssZ",s=N.z(this),r=this.$H,o=this.$m,c=this.$M,l=n.weekdays,a=n.months,d=n.meridiem,u=function(t,n,s,r){return t&&(t[n]||t(e,i))||s[n].slice(0,r)},M=function(t){return N.s(r%12||12,t,"0")},I=d||function(t,e,n){var i=t<12?"AM":"PM";return n?i.toLowerCase():i};return i.replace(y,(function(t,i){return i||function(t){switch(t){case"YY":return String(e.$y).slice(-2);case"YYYY":return N.s(e.$y,4,"0");case"M":return c+1;case"MM":return N.s(c+1,2,"0");case"MMM":return u(n.monthsShort,c,a,3);case"MMMM":return u(a,c);case"D":return e.$D;case"DD":return N.s(e.$D,2,"0");case"d":return String(e.$W);case"dd":return u(n.weekdaysMin,e.$W,l,2);case"ddd":return u(n.weekdaysShort,e.$W,l,3);case"dddd":return l[e.$W];case"H":return String(r);case"HH":return N.s(r,2,"0");case"h":return M(1);case"hh":return M(2);case"a":return I(r,o,!0);case"A":return I(r,o,!1);case"m":return String(o);case"mm":return N.s(o,2,"0");case"s":return String(e.$s);case"ss":return N.s(e.$s,2,"0");case"SSS":return N.s(e.$ms,3,"0");case"Z":return s}return null}(t)||s.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(i,M,w){var I,y=this,p=N.p(M),m=b(i),L=(m.utcOffset()-this.utcOffset())*e,g=this-m,C=function(){return N.m(y,m)};switch(p){case u:I=C()/12;break;case a:I=C();break;case d:I=C()/3;break;case l:I=(g-L)/6048e5;break;case c:I=(g-L)/864e5;break;case o:I=g/n;break;case r:I=g/e;break;case s:I=g/t;break;default:I=g}return w?I:N.a(I)},m.daysInMonth=function(){return this.endOf(a).$D},m.$locale=function(){return C[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),i=h(t,e,!0);return i&&(n.$L=i),n},m.clone=function(){return N.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},p}(),Z=x.prototype;return b.prototype=Z,[["$ms",i],["$s",s],["$m",r],["$H",o],["$W",c],["$M",a],["$y",u],["$D",M]].forEach((function(t){Z[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),b.extend=function(t,e){return t.$i||(t(e,x,b),t.$i=!0),b},b.locale=h,b.isDayjs=f,b.unix=function(t){return b(1e3*t)},b.en=C[g],b.Ls=C,b.p={},b}()}({get exports(){return dn},set exports(t){dn=t}});var un=dn;function Mn(){if(!He(un))throw new Error("invalid dayjs");return un().format("YYYY-MM-DDTHH:mm:ssZ")}let wn="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),In=wn.length;function yn(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:32,e=[];t=Ve(t)?We(t):32;for(let n=0;n<t;n++)e[n]=wn[0|Math.random()*In];return e.join("")}var pn="[object Boolean]";function mn(t){return!0===(e=t)||!1===e||C(e)&&g(e)==pn;var e}var Ln={};!function(t){var e=Object.prototype.hasOwnProperty,n="~";function i(){}function s(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function r(t,e,i,r,o){if("function"!=typeof i)throw new TypeError("The listener must be a function");var c=new s(i,r||t,o),l=n?n+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],c]:t._events[l].push(c):(t._events[l]=c,t._eventsCount++),t}function o(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function c(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),c.prototype.eventNames=function(){var t,i,s=[];if(0===this._eventsCount)return s;for(i in t=this._events)e.call(t,i)&&s.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(t)):s},c.prototype.listeners=function(t){var e=n?n+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var s=0,r=i.length,o=new Array(r);s<r;s++)o[s]=i[s].fn;return o},c.prototype.listenerCount=function(t){var e=n?n+t:t,i=this._events[e];return i?i.fn?1:i.length:0},c.prototype.emit=function(t,e,i,s,r,o){var c=n?n+t:t;if(!this._events[c])return!1;var l,a,d=this._events[c],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(t,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,i),!0;case 4:return d.fn.call(d.context,e,i,s),!0;case 5:return d.fn.call(d.context,e,i,s,r),!0;case 6:return d.fn.call(d.context,e,i,s,r,o),!0}for(a=1,l=new Array(u-1);a<u;a++)l[a-1]=arguments[a];d.fn.apply(d.context,l)}else{var M,w=d.length;for(a=0;a<w;a++)switch(d[a].once&&this.removeListener(t,d[a].fn,void 0,!0),u){case 1:d[a].fn.call(d[a].context);break;case 2:d[a].fn.call(d[a].context,e);break;case 3:d[a].fn.call(d[a].context,e,i);break;case 4:d[a].fn.call(d[a].context,e,i,s);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[a].fn.apply(d[a].context,l)}}return!0},c.prototype.on=function(t,e,n){return r(this,t,e,n,!1)},c.prototype.once=function(t,e,n){return r(this,t,e,n,!0)},c.prototype.removeListener=function(t,e,i,s){var r=n?n+t:t;if(!this._events[r])return this;if(!e)return o(this,r),this;var c=this._events[r];if(c.fn)c.fn!==e||s&&!c.once||i&&c.context!==i||o(this,r);else{for(var l=0,a=[],d=c.length;l<d;l++)(c[l].fn!==e||s&&!c[l].once||i&&c[l].context!==i)&&a.push(c[l]);a.length?this._events[r]=1===a.length?a[0]:a:o(this,r)}return this},c.prototype.removeAllListeners=function(t){var e;return t?(e=n?n+t:t,this._events[e]&&o(this,e)):(this._events=new i,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=n,c.EventEmitter=c,t.exports=c}({get exports(){return Ln},set exports(t){Ln=t}});var gn=Ln;function Cn(){return new gn}async function Dn(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,i=Re();if(!He(t))return i.reject("waitfunction需輸入函數f"),i;let s=async()=>{let e=t();return Qe(e)&&(e=await e),e};if(n=await s(),!0===n)return i.resolve(),i;let r=Dt(e,"attemptNum",null);Ve(r)||(r=200);let o=Dt(e,"timeInterval",null);Ve(o)||(o=1e3);let c=0,l=setInterval((async()=>{c+=1,n=await s(),!0===n&&(clearInterval(l),i.resolve()),c>r&&(clearInterval(l),i.reject(`exceeded attemptNum[${r}]`))}),o);return i}function fn(t){return function(t){let e=Dt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(rn(t,{fs:e}))return{success:"input folder is already exists: "+t};if(e.existsSync(t))return{error:"input path already exists: "+t};try{e.mkdirSync(t,{recursive:!0})}catch(t){return{error:t}}return{success:"done: "+t}}(t,{fs:e})}var hn="[object Number]";function bn(t){return"number"==typeof t||C(t)&&g(t)==hn}function Nn(t){if(!ae(t)&&!Ye(t)&&!f(t))return"";let e="";try{e=String(t)}catch(t){}try{e=t.toString()}catch(t){}return e}function xn(t){if(!ae(t))return"";let e=tn.parse(t);return nn.stringify(e)}function Zn(t,e){return!!ue(t)&&(!(!ae(e)&&!Ye(e))&&e in t)}function Tn(t){return"[object ArrayBuffer]"===Object.prototype.toString.call(t)}function Xn(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)}function Sn(t){return"[object Uint16Array]"===Object.prototype.toString.call(t)}function An(t){if(!(Tn(t)||(e=t,"[object Blob]"===Object.prototype.toString.call(e))||Xn(t)||Sn(t)))return null;var e;try{if(t.byteLength)return t.byteLength}catch(t){}try{if(t.length)return t.length}catch(t){}try{if(t.size)return t.size}catch(t){}return null}var Yn=$t(Object.getPrototypeOf,Object),vn="[object Object]",Gn=Function.prototype,En=Object.prototype,jn=Gn.toString,zn=En.hasOwnProperty,Kn=jn.call(Object);function Wn(t){if(!C(t)||g(t)!=vn)return!1;var e=Yn(t);if(null===e)return!0;var n=zn.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&jn.call(n)==Kn}var Vn="[object DOMException]",Hn="[object Error]";function Qn(t){if(!ue(t))return{results:"",binarys:[]};if(ye(t))return{results:"",binarys:[]};let e="",n=[];try{let i=-1;e=JSON.stringify(t,(function(t,e){if(Xn(e)){i+=1;let t=`[Uint8Array]::${i}`;return n.push(e),t}if(Sn(e)){i+=1;let t=`[Uint16Array]::${i}`;return n.push(e),t}if(Tn(e)){i+=1;let t=`[ArrayBuffer]::${i}`;return n.push(e),t}return function(t){if(!C(t))return!1;var e=g(t);return e==Hn||e==Vn||"string"==typeof t.message&&"string"==typeof t.name&&!Wn(t)}(e)&&(e=e.toString()),e}))}catch(t){}return{results:e,binarys:n}}function Un(t){if(!ae(t))return new Uint8Array;let e;try{e=function(t){if(!le(t))return new Uint8Array;let e=nn.parse(t),n=e.words,i=e.sigBytes,s=new Uint8Array(i);for(let t=0;t<i;t++){let e=n[t>>>2]>>>24-t%4*8&255;s[t]=e}return s}(xn(t))}catch(t){return new Uint8Array}return e}function kn(t,e){return function(t,e,n,i,s,r){if(!Ye(t))return null;if(!Xn(e))return null;if(!Ge(n))return null;if(!mn(i))return null;if(!Ge(s))return null;if(!Ge(r))return null;let o,c,l;t=ve(t);let a=8*r-s-1,d=(1<<a)-1,u=d>>1,M=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,w=i?r-1:0,I=i?-1:1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,o=d):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+u>=1?M/l:M*Math.pow(2,1-u))*l>=2&&(o++,l/=2),o+u>=d?(c=0,o=d):o+u>=1?(c=(t*l-1)*Math.pow(2,s),o+=u):(c=t*Math.pow(2,u-1)*Math.pow(2,s),o=0));s>=8;e[n+w]=255&c,w+=I,c/=256,s-=8);for(o=o<<s|c,a+=s;a>0;e[n+w]=255&o,w+=I,o/=256,a-=8);return e[n+w-I]|=128*y,null}(t,e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,!(arguments.length>3&&void 0!==arguments[3])||arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:52,arguments.length>5&&void 0!==arguments[5]?arguments[5]:8)}function Jn(t){let e=[],n=[];if(!Le(t)&&!Me(t))return null;let i=[],s=[];function r(t){i.push(An(t)),s.push(t)}try{let o=Qn(t);r(Un(o.results)),ce(o.binarys,(t=>{r(t)}));let c=i,l=Un(JSON.stringify(c)),a=new Uint8Array(8);kn(An(l),a),e.push(a),e.push(l),ce(s,(t=>{e.push(t)})),ce(e,(t=>{n=function(t,e){let n=An(t),i=An(e),s=new Uint8Array(n+i);return s.set(new Uint8Array(t),0),s.set(new Uint8Array(e),n),s}(n,t)}))}catch(t){return null}return n}function Rn(t){return function(t,e,n,i,s){if(!Xn(t))return null;if(!Ge(e))return null;if(!mn(n))return null;if(!Ge(i))return null;if(!Ge(s))return null;let r,o,c=8*s-i-1,l=(1<<c)-1,a=l>>1,d=-7,u=n?0:s-1,M=n?1:-1,w=t[e+u];for(u+=M,r=w&(1<<-d)-1,w>>=-d,d+=c;d>0;r=256*r+t[e+u],u+=M,d-=8);for(o=r&(1<<-d)-1,r>>=-d,d+=i;d>0;o=256*o+t[e+u],u+=M,d-=8);if(0===r)r=1-a;else{if(r===l)return o?NaN:1/0*(w?-1:1);o+=Math.pow(2,i),r-=a}return(w?-1:1)*o*Math.pow(2,r-i)}(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,!(arguments.length>2&&void 0!==arguments[2])||arguments[2],arguments.length>3&&void 0!==arguments[3]?arguments[3]:52,arguments.length>4&&void 0!==arguments[4]?arguments[4]:8)}var Pn={};!function(t,e){var n;t.exports=(n=qe(),function(){if("function"==typeof ArrayBuffer){var t=n.lib.WordArray,e=t.init,i=t.init=function(t){if(t instanceof ArrayBuffer&&(t=new Uint8Array(t)),(t instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)&&(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),t instanceof Uint8Array){for(var n=t.byteLength,i=[],s=0;s<n;s++)i[s>>>2]|=t[s]<<24-s%4*8;e.call(this,i,n)}else e.apply(this,arguments)};i.prototype=t}}(),n.lib.WordArray)}({get exports(){return Pn},set exports(t){Pn=t}});var Bn=Pn;function On(t){if(!Xn(t))return"";let e;try{e=sn(function(t){return Xn(t)?Bn.create(t).toString(nn):""}(t))}catch(t){return""}return e}function Fn(t){let e=null;if(!Xn(t))return null;try{let n=8,i=t.slice(0,n),s=t.slice(n,An(t)),r=Rn(i),o=s.slice(0,r),c=s.slice(r,An(s)),l=On(o),a=function(t,e){let n=0,i=0,s=[];return ce(e,(e=>{i=n+e;let r=t.slice(n,i);n=i,s.push(r)})),s}(c,JSON.parse(l));e=function(t){if(!Me(t))return{};let{results:e,binarys:n}=t;if(!ae(e))return{};if(!we(n))return{};let i={};try{i=JSON.parse(e,(function(t,e){if(ae(e)){if(e.indexOf("[Uint8Array]::")>=0){let t=We(e.replace("[Uint8Array]::",""));return n[t]}if(e.indexOf("[Uint16Array]::")>=0){let t=We(e.replace("[Uint16Array]::",""));return n[t]}if(e.indexOf("[ArrayBuffer]::")>=0){let t=We(e.replace("[ArrayBuffer]::",""));return n[t]}}return e}))}catch(t){}return i}({results:On(a.shift()),binarys:a})}catch(t){}return e}function _n(){if(!He(un))throw new Error("invalid dayjs");return un().format("YYYYMMDDHHmmss")}function $n(t){var e=this.__data__=new $(t);this.size=e.size}$n.prototype.clear=function(){this.__data__=new $,this.size=0},$n.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},$n.prototype.get=function(t){return this.__data__.get(t)},$n.prototype.has=function(t){return this.__data__.has(t)},$n.prototype.set=function(t,e){var n=this.__data__;if(n instanceof $){var i=n.__data__;if(!q||i.length<199)return i.push([t,e]),this.size=++n.size,this;n=this.__data__=new et(i)}return n.set(t,e),this.size=n.size,this};function qn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new et;++e<n;)this.add(t[e])}function ti(t,e){for(var n=-1,i=null==t?0:t.length;++n<i;)if(e(t[n],n,t))return!0;return!1}function ei(t,e){return t.has(e)}qn.prototype.add=qn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},qn.prototype.has=function(t){return this.__data__.has(t)};var ni=1,ii=2;function si(t,e,n,i,s,r){var o=n&ni,c=t.length,l=e.length;if(c!=l&&!(o&&l>c))return!1;var a=r.get(t),d=r.get(e);if(a&&d)return a==e&&d==t;var u=-1,M=!0,w=n&ii?new qn:void 0;for(r.set(t,e),r.set(e,t);++u<c;){var I=t[u],y=e[u];if(i)var p=o?i(y,I,u,e,t,r):i(I,y,u,t,e,r);if(void 0!==p){if(p)continue;M=!1;break}if(w){if(!ti(e,(function(t,e){if(!ei(w,e)&&(I===t||s(I,t,n,i,r)))return w.push(e)}))){M=!1;break}}else if(I!==y&&!s(I,y,n,i,r)){M=!1;break}}return r.delete(t),r.delete(e),M}var ri=a.Uint8Array;function oi(t){var e=-1,n=Array(t.size);return t.forEach((function(t,i){n[++e]=[i,t]})),n}function ci(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}var li=1,ai=2,di="[object Boolean]",ui="[object Date]",Mi="[object Error]",wi="[object Map]",Ii="[object Number]",yi="[object RegExp]",pi="[object Set]",mi="[object String]",Li="[object Symbol]",gi="[object ArrayBuffer]",Ci="[object DataView]",Di=d?d.prototype:void 0,fi=Di?Di.valueOf:void 0;function hi(t,e){for(var n=-1,i=e.length,s=t.length;++n<i;)t[s+n]=e[n];return t}function bi(t,e,n){var i=e(t);return o(t)?i:hi(i,n(t))}function Ni(t,e){for(var n=-1,i=null==t?0:t.length,s=0,r=[];++n<i;){var o=t[n];e(o,n,t)&&(r[s++]=o)}return r}function xi(){return[]}var Zi=Object.prototype.propertyIsEnumerable,Ti=Object.getOwnPropertySymbols,Xi=Ti?function(t){return null==t?[]:(t=Object(t),Ni(Ti(t),(function(e){return Zi.call(t,e)})))}:xi;function Si(t){return bi(t,ie,Xi)}var Ai=1,Yi=Object.prototype.hasOwnProperty;var vi=k(a,"DataView"),Gi=k(a,"Promise"),Ei=k(a,"Set"),ji=k(a,"WeakMap"),zi="[object Map]",Ki="[object Promise]",Wi="[object Set]",Vi="[object WeakMap]",Hi="[object DataView]",Qi=j(vi),Ui=j(q),ki=j(Gi),Ji=j(Ei),Ri=j(ji),Pi=g;(vi&&Pi(new vi(new ArrayBuffer(1)))!=Hi||q&&Pi(new q)!=zi||Gi&&Pi(Gi.resolve())!=Ki||Ei&&Pi(new Ei)!=Wi||ji&&Pi(new ji)!=Vi)&&(Pi=function(t){var e=g(t),n="[object Object]"==e?t.constructor:void 0,i=n?j(n):"";if(i)switch(i){case Qi:return Hi;case Ui:return zi;case ki:return Ki;case Ji:return Wi;case Ri:return Vi}return e});var Bi=Pi,Oi=1,Fi="[object Arguments]",_i="[object Array]",$i="[object Object]",qi=Object.prototype.hasOwnProperty;function ts(t,e,n,i,s,r){var c=o(t),l=o(e),a=c?_i:Bi(t),d=l?_i:Bi(e),u=(a=a==Fi?$i:a)==$i,M=(d=d==Fi?$i:d)==$i,w=a==d;if(w&&Gt(t)){if(!Gt(e))return!1;c=!0,u=!1}if(w&&!u)return r||(r=new $n),c||Pt(t)?si(t,e,n,i,s,r):function(t,e,n,i,s,r,o){switch(n){case Ci:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case gi:return!(t.byteLength!=e.byteLength||!r(new ri(t),new ri(e)));case di:case ui:case Ii:return O(+t,+e);case Mi:return t.name==e.name&&t.message==e.message;case yi:case mi:return t==e+"";case wi:var c=oi;case pi:var l=i&li;if(c||(c=ci),t.size!=e.size&&!l)return!1;var a=o.get(t);if(a)return a==e;i|=ai,o.set(t,e);var d=si(c(t),c(e),i,s,r,o);return o.delete(t),d;case Li:if(fi)return fi.call(t)==fi.call(e)}return!1}(t,e,a,n,i,s,r);if(!(n&Oi)){var I=u&&qi.call(t,"__wrapped__"),y=M&&qi.call(e,"__wrapped__");if(I||y){var p=I?t.value():t,m=y?e.value():e;return r||(r=new $n),s(p,m,n,i,r)}}return!!w&&(r||(r=new $n),function(t,e,n,i,s,r){var o=n&Ai,c=Si(t),l=c.length;if(l!=Si(e).length&&!o)return!1;for(var a=l;a--;){var d=c[a];if(!(o?d in e:Yi.call(e,d)))return!1}var u=r.get(t),M=r.get(e);if(u&&M)return u==e&&M==t;var w=!0;r.set(t,e),r.set(e,t);for(var I=o;++a<l;){var y=t[d=c[a]],p=e[d];if(i)var m=o?i(p,y,d,e,t,r):i(y,p,d,t,e,r);if(!(void 0===m?y===p||s(y,p,n,i,r):m)){w=!1;break}I||(I="constructor"==d)}if(w&&!I){var L=t.constructor,g=e.constructor;L==g||!("constructor"in t)||!("constructor"in e)||"function"==typeof L&&L instanceof L&&"function"==typeof g&&g instanceof g||(w=!1)}return r.delete(t),r.delete(e),w}(t,e,n,i,s,r))}function es(t,e,n,i,s){return t===e||(null==t||null==e||!C(t)&&!C(e)?t!=t&&e!=e:ts(t,e,n,i,es,s))}var ns=1,is=2;function ss(t){return t==t&&!x(t)}function rs(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}}function os(t){var e=function(t){for(var e=ie(t),n=e.length;n--;){var i=e[n],s=t[i];e[n]=[i,s,ss(s)]}return e}(t);return 1==e.length&&e[0][2]?rs(e[0][0],e[0][1]):function(n){return n===t||function(t,e,n,i){var s=n.length,r=s,o=!i;if(null==t)return!r;for(t=Object(t);s--;){var c=n[s];if(o&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++s<r;){var l=(c=n[s])[0],a=t[l],d=c[1];if(o&&c[2]){if(void 0===a&&!(l in t))return!1}else{var u=new $n;if(i)var M=i(a,d,l,t,e,u);if(!(void 0===M?es(d,a,ns|is,i,u):M))return!1}}return!0}(n,t,e)}}function cs(t,e){return null!=t&&e in Object(t)}function ls(t,e){return null!=t&&function(t,e,n){for(var i=-1,s=(e=mt(e,t)).length,r=!1;++i<s;){var c=gt(e[i]);if(!(r=null!=t&&n(t,c)))break;t=t[c]}return r||++i!=s?r:!!(s=null==t?0:t.length)&&Wt(s)&&zt(c,s)&&(o(t)||St(t))}(t,e,cs)}var as=1,ds=2;function us(t){return function(e){return null==e?void 0:e[t]}}function Ms(t){return N(t)?us(gt(t)):function(t){return function(e){return Ct(e,t)}}(t)}function ws(t){return"function"==typeof t?t:null==t?oe:"object"==typeof t?o(t)?function(t,e){return N(t)&&ss(e)?rs(gt(t),e):function(n){var i=Dt(n,t);return void 0===i&&i===e?ls(n,t):es(e,i,as|ds)}}(t[0],t[1]):os(t):Ms(t)}function Is(t,e){var n=-1,i=ne(t)?Array(t.length):[];return re(t,(function(t,s,r){i[++n]=e(t,s,r)})),i}function ys(t,e){return(o(t)?ut:Is)(t,ws(e))}function ps(t,e,n){var i=-1,s=t.length;e<0&&(e=-e>s?0:s+e),(n=n>s?s:n)<0&&(n+=s),s=e>n?0:n-e>>>0,e>>>=0;for(var r=Array(s);++i<s;)r[i]=t[i+e];return r}function ms(t){return t!=t}function Ls(t,e,n){return e==e?function(t,e,n){for(var i=n-1,s=t.length;++i<s;)if(t[i]===e)return i;return-1}(t,e,n):function(t,e,n,i){for(var s=t.length,r=n+(i?1:-1);i?r--:++r<s;)if(e(t[r],r,t))return r;return-1}(t,ms,n)}var gs=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function Cs(t){return gs.test(t)}var Ds="\\ud800-\\udfff",fs="["+Ds+"]",hs="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",bs="\\ud83c[\\udffb-\\udfff]",Ns="[^"+Ds+"]",xs="(?:\\ud83c[\\udde6-\\uddff]){2}",Zs="[\\ud800-\\udbff][\\udc00-\\udfff]",Ts="(?:"+hs+"|"+bs+")"+"?",Xs="[\\ufe0e\\ufe0f]?",Ss=Xs+Ts+("(?:\\u200d(?:"+[Ns,xs,Zs].join("|")+")"+Xs+Ts+")*"),As="(?:"+[Ns+hs+"?",hs,xs,Zs,fs].join("|")+")",Ys=RegExp(bs+"(?="+bs+")|"+As+Ss,"g");function vs(t){return Cs(t)?function(t){return t.match(Ys)||[]}(t):function(t){return t.split("")}(t)}function Gs(t,e,n){if((t=pt(t))&&(n||void 0===e))return De(t);if(!t||!(e=yt(e)))return t;var i=vs(t),s=vs(e),r=function(t,e){for(var n=-1,i=t.length;++n<i&&Ls(e,t[n],0)>-1;);return n}(i,s),o=function(t,e){for(var n=t.length;n--&&Ls(e,t[n],0)>-1;);return n}(i,s)+1;return function(t,e,n){var i=t.length;return n=void 0===n?i:n,!e&&n>=i?t:ps(t,e,n)}(i,r,o).join("")}function Es(t,e){if(!ae(t))return[];if(!ae(e))return[];let n=function(t,e){return ae(t)&&ae(e)?t.split(e):[]}(t,e);n=ys(n,Gs);let i=[];return ce(n,(function(t){ae(t)&&i.push(t)})),i}function js(t){return function(t){let e=Dt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"fs");if(!e.existsSync(t))return{success:"file does not exist: "+t};if(!cn(t,{fs:e}))return{error:"input path is not a file: "+t};try{e.unlinkSync(t)}catch(t){return{error:t}}return{success:"done: "+t}}(t,{fs:e})}var zs={};!function(t,e){var n,i;t.exports=(n=r,i={},function(t,e){t.exports=function(t){var e={};!function(t){var e=Object.prototype.hasOwnProperty,n="~";function i(){}function s(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function r(t,e,i,r,o){if("function"!=typeof i)throw new TypeError("The listener must be a function");var c=new s(i,r||t,o),l=n?n+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],c]:t._events[l].push(c):(t._events[l]=c,t._eventsCount++),t}function o(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function c(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),c.prototype.eventNames=function(){var t,i,s=[];if(0===this._eventsCount)return s;for(i in t=this._events)e.call(t,i)&&s.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(t)):s},c.prototype.listeners=function(t){var e=n?n+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var s=0,r=i.length,o=new Array(r);s<r;s++)o[s]=i[s].fn;return o},c.prototype.listenerCount=function(t){var e=n?n+t:t,i=this._events[e];return i?i.fn?1:i.length:0},c.prototype.emit=function(t,e,i,s,r,o){var c=n?n+t:t;if(!this._events[c])return!1;var l,a,d=this._events[c],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(t,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,i),!0;case 4:return d.fn.call(d.context,e,i,s),!0;case 5:return d.fn.call(d.context,e,i,s,r),!0;case 6:return d.fn.call(d.context,e,i,s,r,o),!0}for(a=1,l=new Array(u-1);a<u;a++)l[a-1]=arguments[a];d.fn.apply(d.context,l)}else{var M,w=d.length;for(a=0;a<w;a++)switch(d[a].once&&this.removeListener(t,d[a].fn,void 0,!0),u){case 1:d[a].fn.call(d[a].context);break;case 2:d[a].fn.call(d[a].context,e);break;case 3:d[a].fn.call(d[a].context,e,i);break;case 4:d[a].fn.call(d[a].context,e,i,s);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[a].fn.apply(d[a].context,l)}}return!0},c.prototype.on=function(t,e,n){return r(this,t,e,n,!1)},c.prototype.once=function(t,e,n){return r(this,t,e,n,!0)},c.prototype.removeListener=function(t,e,i,s){var r=n?n+t:t;if(!this._events[r])return this;if(!e)return o(this,r),this;var c=this._events[r];if(c.fn)c.fn!==e||s&&!c.once||i&&c.context!==i||o(this,r);else{for(var l=0,a=[],d=c.length;l<d;l++)(c[l].fn!==e||s&&!c[l].once||i&&c[l].context!==i)&&a.push(c[l]);a.length?this._events[r]=1===a.length?a[0]:a:o(this,r)}return this},c.prototype.removeAllListeners=function(t){var e;return t?(e=n?n+t:t,this._events[e]&&o(this,e)):(this._events=new i,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=n,c.EventEmitter=c,t.exports=c}({get exports(){return e},set exports(t){e=t}});var n=e;let i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let e=(s="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxzPWEudG9TdHJpbmcsZj11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIHI9Yy5jYWxsKHQsZiksZT10W2ZdO3RyeXt0W2ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89cy5jYWxsKHQpO3JldHVybiBuJiYocj90W2ZdPWU6ZGVsZXRlIHRbZl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfXZhciBfPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIGQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmdih0KT09X312YXIgYj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxnPS9eXHcqJC87ZnVuY3Rpb24gaih0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1yfHwiZnVuY3Rpb24iPT1yKX12YXIgUz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsTz0iW29iamVjdCBGdW5jdGlvbl0iLG09IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix3PSJbb2JqZWN0IFByb3h5XSI7dmFyICQseD1pWyJfX2NvcmUtanNfc2hhcmVkX18iXSxSPSgkPS9bXi5dKyQvLmV4ZWMoeCYmeC5rZXlzJiZ4LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIiskOiIiO3ZhciB6PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxBPUZ1bmN0aW9uLnByb3RvdHlwZSxOPU9iamVjdC5wcm90b3R5cGUsUD1BLnRvU3RyaW5nLGs9Ti5oYXNPd25Qcm9wZXJ0eSxFPVJlZ0V4cCgiXiIrUC5jYWxsKGspLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO2Z1bmN0aW9uIEModCl7aWYoIWoodCl8fChyPXQsUiYmUiBpbiByKSlyZXR1cm4hMTt2YXIgcixlPWZ1bmN0aW9uKHQpe2lmKCFqKHQpKXJldHVybiExO3ZhciByPXYodCk7cmV0dXJuIHI9PU98fHI9PW18fHI9PVN8fHI9PXd9KHQpP0U6RjtyZXR1cm4gZS50ZXN0KGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gei5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0odCkpfWZ1bmN0aW9uIEkodCxyKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W3JdfSh0LHIpO3JldHVybiBDKGUpP2U6dm9pZCAwfXZhciBUPUkoT2JqZWN0LCJjcmVhdGUiKTt2YXIgTT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gTCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBVKHQscil7Zm9yKHZhciBlLG4sbz10Lmxlbmd0aDtvLS07KWlmKChlPXRbb11bMF0pPT09KG49cil8fGUhPWUmJm4hPW4pcmV0dXJuIG87cmV0dXJuLTF9TC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVQ/VChudWxsKTp7fSx0aGlzLnNpemU9MH0sTC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxMLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihUKXt2YXIgZT1yW3RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PWU/dm9pZCAwOmV9cmV0dXJuIE0uY2FsbChyLHQpP3JbdF06dm9pZCAwfSxMLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gVD92b2lkIDAhPT1yW3RdOnEuY2FsbChyLHQpfSxMLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPVQmJnZvaWQgMD09PXI/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnIsdGhpc307dmFyIEQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBHKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sRy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1VKHIsdCk7cmV0dXJuIShlPDApJiYoZT09ci5sZW5ndGgtMT9yLnBvcCgpOkQuY2FsbChyLGUsMSksLS10aGlzLnNpemUsITApfSxHLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVUocix0KTtyZXR1cm4gZTwwP3ZvaWQgMDpyW2VdWzFdfSxHLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFUodGhpcy5fX2RhdGFfXyx0KT4tMX0sRy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPVUoZSx0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxlLnB1c2goW3Qscl0pKTplW25dWzFdPXIsdGhpc307dmFyIFc9SShpLCJNYXAiKTtmdW5jdGlvbiBCKHQscil7dmFyIGUsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2YoZT1yKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09ZTpudWxsPT09ZSk/b1sic3RyaW5nIj09dHlwZW9mIHI/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBIKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUgucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgTCxtYXA6bmV3KFd8fEcpLHN0cmluZzpuZXcgTH19LEgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj1CKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gQih0aGlzLHQpLmdldCh0KX0sSC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBCKHRoaXMsdCkuaGFzKHQpfSxILnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT1CKHRoaXMsdCksbj1lLnNpemU7cmV0dXJuIGUuc2V0KHQsciksdGhpcy5zaXplKz1lLnNpemU9PW4/MDoxLHRoaXN9O3ZhciBKPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBLKHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoSik7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1yP3IuYXBwbHkodGhpcyxuKTpuWzBdLGk9ZS5jYWNoZTtpZihpLmhhcyhvKSlyZXR1cm4gaS5nZXQobyk7dmFyIHU9dC5hcHBseSh0aGlzLG4pO3JldHVybiBlLmNhY2hlPWkuc2V0KG8sdSl8fGksdX07cmV0dXJuIGUuY2FjaGU9bmV3KEsuQ2FjaGV8fEgpLGV9Sy5DYWNoZT1IO3ZhciBRLFYsWCxZPS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLFo9L1xcKFxcKT8vZyx0dD0oUT1mdW5jdGlvbih0KXt2YXIgcj1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJnIucHVzaCgiIiksdC5yZXBsYWNlKFksKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShaLCIkMSIpOmV8fHQpfSkpLHJ9LFY9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09WC5zaXplJiZYLmNsZWFyKCksdH0pKSxYPVYuY2FjaGUsVikscnQ9dHQ7dmFyIGV0PTEvMCxudD11P3UucHJvdG90eXBlOnZvaWQgMCxvdD1udD9udC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gaXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGUodCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsaXQpKyIiO2lmKGQodCkpcmV0dXJuIG90P290LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LWV0PyItMCI6cn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4gbnVsbD09dD8iIjppdCh0KX1mdW5jdGlvbiBhdCh0LHIpe3JldHVybiBlKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihlKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFkKHQpKXx8Zy50ZXN0KHQpfHwhYi50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06cnQodXQodCkpfXZhciBjdD0xLzA7ZnVuY3Rpb24gc3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxkKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1jdD8iLTAiOnJ9ZnVuY3Rpb24gZnQodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1hdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbc3QocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIGx0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBodCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHl0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIF90KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFodCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISgheXQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIXB0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIXZ0KHQpKSkpKX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4hKCF5dCh0KXx8IiI9PT10KX12YXIgYnQ9L1xzLzt2YXIgZ3Q9L15ccysvO2Z1bmN0aW9uIGp0KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZidC50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSh0KSsxKS5yZXBsYWNlKGd0LCIiKTp0fXZhciBTdD1OYU4sT3Q9L15bLStdMHhbMC05YS1mXSskL2ksbXQ9L14wYlswMV0rJC9pLHd0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24geHQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGQodCkpcmV0dXJuIFN0O2lmKGoodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWoocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PWp0KHQpO3ZhciBlPW10LnRlc3QodCk7cmV0dXJuIGV8fHd0LnRlc3QodCk/JHQodC5zbGljZSgyKSxlPzI6OCk6T3QudGVzdCh0KT9TdDordH12YXIgUnQ9MS8wLHp0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD14dCh0KSk9PT1SdHx8dD09PS1SdD8odDwwPy0xOjEpKnp0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBBdCh0KXt2YXIgcj1GdCh0KSxlPXIlMTtyZXR1cm4gcj09cj9lP3ItZTpyOjB9ZnVuY3Rpb24gTnQodCl7bGV0IHI9ITE7aWYoZHQodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYodnQodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBQdCh0KXtpZighTnQodCkpcmV0dXJuIDA7cmV0dXJuIEZ0KHQpfWZ1bmN0aW9uIGt0KHQpe3JldHVybiEhTnQodCkmJih0PVB0KHQpLCJudW1iZXIiPT10eXBlb2Yocj10KSYmcj09QXQocikpO3ZhciByfXZhciBFdD1pLmlzRmluaXRlLEN0PU1hdGgubWluO3ZhciBJdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9eHQodCksKGU9bnVsbD09ZT8wOkN0KEF0KGUpLDI5MikpJiZFdCh0KSl7dmFyIG49KHV0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPSh1dChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxUdD1JdDtmdW5jdGlvbiBNdCh0KXtpZighTnQodCkpcmV0dXJuIDA7dD1QdCh0KTtsZXQgcj1UdCh0KTtyZXR1cm4iMCI9PT1TdHJpbmcocik/MDpyfWZ1bmN0aW9uIHF0KHQpe2lmKCFrdCh0KSlyZXR1cm4hMTtyZXR1cm4gTXQodCk+PTB9ZnVuY3Rpb24gTHQodCxyKXtpZighZHQodCkpcmV0dXJuIiI7aWYoIXF0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1NdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gVXQodCxyKXtyZXR1cm4gZHQodCkmJnF0KHIpPzA9PT0ocj1NdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBkdCh0KSYmcXQocik/MD09PShyPU10KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIER0KHQpe2lmKCFkdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUx0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4iOiI9PT1MdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEd0KHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPWZ1bmN0aW9uKHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfSh0PXIucGF0aCk7aWYoIWR0KGUpKXJldHVybiB0O2xldCBuPUR0KHQ9VXQodCxlLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9ZnVuY3Rpb24gV3QodCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO2lmKCFlLmV4aXN0c1N5bmModCkpcmV0dXJuITE7bGV0IG49ZS5sc3RhdFN5bmModCk7cmV0dXJuIW4uaXNGaWxlKCkmJiFuLmlzU3ltYm9saWNMaW5rKCl9ZnVuY3Rpb24gQnQodCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO3JldHVybiEhZS5leGlzdHNTeW5jKHQpJiYoIWUubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFlLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBIdCh0LHI9e30pe2xldCBlPWZ0KHIsImZzIik7aWYoIWUuZXhpc3RzU3luYyh0KSlyZXR1cm57c3VjY2VzczoiZmlsZSBkb2VzIG5vdCBleGlzdDogIit0fTtpZighQnQodCx7ZnM6ZX0pKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBpcyBub3QgYSBmaWxlOiAiK3R9O3RyeXtlLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fXJldHVybntzdWNjZXNzOiJkb25lOiAiK3R9fWFzeW5jIGZ1bmN0aW9uIEp0KHQscixlLG49e30pe2xldCBvPSIiLGk9ZnQobiwiZnMiKTtpZighcHQodT1yKXx8MD09PXUubGVuZ3RofHwxPT09dS5sZW5ndGgmJl90KHVbMF0pKXRocm93IG5ldyBFcnJvcigiZnBzSW4gaW4gbm90IGFuIGVmZmVjdGl2ZSBhcnJheSIpO3ZhciB1O2xldCBhPUd0KGUpO1d0KGEse2ZzOml9KXx8ZnVuY3Rpb24odCxyPXt9KXtsZXQgZT1mdChyLCJmcyIpO2lmKFd0KHQse2ZzOmV9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKGUuZXhpc3RzU3luYyh0KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07dHJ5e2UubWtkaXJTeW5jKHQse3JlY3Vyc2l2ZTohMH0pfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX19KGEse2ZzOml9KTtsZXQgYz1sdCgpO3RyeXtsZXQgbj1pLmNyZWF0ZVdyaXRlU3RyZWFtKGUpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtsZXQgZT1yW3RdO2lmKCFCdChlLHtmczppfSkpdGhyb3cgbmV3IEVycm9yKGBmcEluWyR7ZX1dIGlzIG5vdCBhIGZpbGVgKTtsZXQgdT0oKT0+e2xldCB0PWx0KCkscj1pLmNyZWF0ZVJlYWRTdHJlYW0oZSk7cmV0dXJuIHIub24oImVycm9yIiwocj0+e289ci5tZXNzYWdlLHQucmVqZWN0KHIpfSkpLHIub24oImVuZCIsKCgpPT57SHQoZSx7ZnM6aX0pLHQucmVzb2x2ZSgpfSkpLHIucGlwZShuLHtlbmQ6ITF9KSx0fTthd2FpdCB1KCl9bi5lbmQoKSxuLm9uKCJlcnJvciIsKHQ9PntvPXQubWVzc2FnZSxjLnJlamVjdChvKX0pKSxuLm9uKCJmaW5pc2giLCgoKT0+e2xldCByPXtmaWxlbmFtZTp0LHBhdGg6ZX07Yy5yZXNvbHZlKHIpfSkpfWNhdGNoKHQpe289dC5tZXNzYWdlLGMucmVqZWN0KG8pfXJldHVybiBjfWxldCBtZXJnZVNsaWNlcz1hc3luYyhlLG4sbyk9PntsZXQgaT1bXTtmb3IobGV0IHI9MDtyPG47cisrKXtsZXQgbj10LmpvaW4obyxgJHtlfV8ke3J9YCk7aS5wdXNoKG4pfWxldCB1PXQuam9pbihvLGUpLGE9YXdhaXQgYXN5bmMgZnVuY3Rpb24odCxlLG4pe3JldHVybiBKdCh0LGUsbix7ZnM6cn0pfShlLGksdSk7cmV0dXJuIHIud3JpdGVGaWxlU3luYyhgJHt1fS5kb25lYCwiIiwidXRmOCIpLGF9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VTbGljZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VTbGljZXMKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(s,"base64").toString("utf8"));var s;function r(){let i=new n,s=function(e){try{return new t.Worker(e,{eval:!0})}catch(t){o(t)}}(e);if(!s)return o("invalid worker"),null;function r(){let t=function(){let t,e,n=new Promise((function(){t=arguments[0],e=arguments[1]}));return n.resolve=t,n.reject=e,n}(),e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let s=0;s<t;s++)e[s]=n[0|Math.random()*i];return e.join("")}(),n={mode:"call",id:e,fun:"main",input:[...arguments]};return s.postMessage(n),i.once(e,(e=>{"success"===e.state?t.resolve(e.msg):t.reject(e.msg)})),t}function o(t){i.emit("error",t)}return s.on("message",(function(t){let e=t,n=e.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(e.evName,e.msg),"return"===n&&i.emit(e.id,e))})),s.on("error",o),s.on("exit",(t=>{1!==t&&o("exit code["+t+"] !== 1")})),function(){let t={mode:"init",type:"function",input:[...arguments]};s.postMessage(t)}([...arguments]),i.main=r,i.main=r,i.terminate=function(){s?(s.terminate(),s=void 0):o("worker has been terminated")},i}i=async function(){let t=[...arguments],e=r();return await e.main(...t).finally((()=>{e.terminate()}))}}();try{process.on("unhandledRejection",(t=>{console.log("outer:unhandledRejection",t)})),process.on("uncaughtException",(t=>{console.log("outer:uncaughtException",t)})),process.on("uncaughtExceptionMonitor",(t=>{console.log("outer:uncaughtExceptionMonitor",t)}))}catch(t){}return i}(n)}({get exports(){return i},set exports(t){i=t}}),i)}({get exports(){return zs},set exports(t){zs=t}});var Ks=zs;let Ws={push:(t,e,n)=>{let i=`${_n()}|${yn(6)}|${t}`;return setTimeout((()=>{Ks(t,e,n).catch((t=>{console.log(t)}))}),1),i},get:(e,n)=>{let i="";if(!ae(e))return i=`invalid id[${e}]`,console.log(i),{state:"error",msg:i,path:""};let s=Dt(Es(e,"|"),2,"");if(!ae(s))return i=`can not find fileHash in id[${e}]`,console.log(i),{state:"error",msg:i,path:""};let r=t.resolve(n,s),o=t.resolve(n,`${s}.done`),c=ln(r),l=ln(o),a=c&&l;return!c&&l&&js(o),{state:a?"success":"merging",msg:"",path:r}}};var Vs={};!function(t,e){var n,i;t.exports=(n=r,i={},function(t,e){t.exports=function(t){var e={};!function(t){var e=Object.prototype.hasOwnProperty,n="~";function i(){}function s(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function r(t,e,i,r,o){if("function"!=typeof i)throw new TypeError("The listener must be a function");var c=new s(i,r||t,o),l=n?n+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],c]:t._events[l].push(c):(t._events[l]=c,t._eventsCount++),t}function o(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function c(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),c.prototype.eventNames=function(){var t,i,s=[];if(0===this._eventsCount)return s;for(i in t=this._events)e.call(t,i)&&s.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(t)):s},c.prototype.listeners=function(t){var e=n?n+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var s=0,r=i.length,o=new Array(r);s<r;s++)o[s]=i[s].fn;return o},c.prototype.listenerCount=function(t){var e=n?n+t:t,i=this._events[e];return i?i.fn?1:i.length:0},c.prototype.emit=function(t,e,i,s,r,o){var c=n?n+t:t;if(!this._events[c])return!1;var l,a,d=this._events[c],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(t,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,i),!0;case 4:return d.fn.call(d.context,e,i,s),!0;case 5:return d.fn.call(d.context,e,i,s,r),!0;case 6:return d.fn.call(d.context,e,i,s,r,o),!0}for(a=1,l=new Array(u-1);a<u;a++)l[a-1]=arguments[a];d.fn.apply(d.context,l)}else{var M,w=d.length;for(a=0;a<w;a++)switch(d[a].once&&this.removeListener(t,d[a].fn,void 0,!0),u){case 1:d[a].fn.call(d[a].context);break;case 2:d[a].fn.call(d[a].context,e);break;case 3:d[a].fn.call(d[a].context,e,i);break;case 4:d[a].fn.call(d[a].context,e,i,s);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[a].fn.apply(d[a].context,l)}}return!0},c.prototype.on=function(t,e,n){return r(this,t,e,n,!1)},c.prototype.once=function(t,e,n){return r(this,t,e,n,!0)},c.prototype.removeListener=function(t,e,i,s){var r=n?n+t:t;if(!this._events[r])return this;if(!e)return o(this,r),this;var c=this._events[r];if(c.fn)c.fn!==e||s&&!c.once||i&&c.context!==i||o(this,r);else{for(var l=0,a=[],d=c.length;l<d;l++)(c[l].fn!==e||s&&!c[l].once||i&&c[l].context!==i)&&a.push(c[l]);a.length?this._events[r]=1===a.length?a[0]:a:o(this,r)}return this},c.prototype.removeAllListeners=function(t){var e;return t?(e=n?n+t:t,this._events[e]&&o(this,e)):(this._events=new i,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=n,c.EventEmitter=c,t.exports=c}({get exports(){return e},set exports(t){e=t}});var n=e;let i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let e=(s="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGQ9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBiKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmQmJmQgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWIodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSx3PWouaGFzT3duUHJvcGVydHksbT1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLE89XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJncuY2FsbCh0LCJjYWxsZWUiKSYmIW0uY2FsbCh0LCJjYWxsZWUiKX0sUz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMseD1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsej14JiZ4LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCxFPSh6P3ouaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0saz05MDA3MTk5MjU0NzQwOTkxLEY9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uICQodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/azplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmRi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIFA9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1QfXZhciBJPXt9O0lbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUlbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUlbIltvYmplY3QgSW50OEFycmF5XSJdPUlbIltvYmplY3QgSW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IEludDMyQXJyYXldIl09SVsiW29iamVjdCBVaW50OEFycmF5XSJdPUlbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09SVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLElbIltvYmplY3QgQXJndW1lbnRzXSJdPUlbIltvYmplY3QgQXJyYXldIl09SVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1JWyJbb2JqZWN0IEJvb2xlYW5dIl09SVsiW29iamVjdCBEYXRhVmlld10iXT1JWyJbb2JqZWN0IERhdGVdIl09SVsiW29iamVjdCBFcnJvcl0iXT1JWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUlbIltvYmplY3QgTWFwXSJdPUlbIltvYmplY3QgTnVtYmVyXSJdPUlbIltvYmplY3QgT2JqZWN0XSJdPUlbIltvYmplY3QgUmVnRXhwXSJdPUlbIltvYmplY3QgU2V0XSJdPUlbIltvYmplY3QgU3RyaW5nXSJdPUlbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxUPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsUj1UJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsVT1SJiZSLmV4cG9ydHM9PT1UJiZ1LnByb2Nlc3MsTj1mdW5jdGlvbigpe3RyeXt2YXIgdD1SJiZSLnJlcXVpcmUmJlIucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxVJiZVLmJpbmRpbmcmJlUuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksRD1OJiZOLmlzVHlwZWRBcnJheSxCPUQ/KE09RCxmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiZMKHQubGVuZ3RoKSYmISFJW2IodCldfSxDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVyh0LGUpe3ZhciByPVModCksbj0hciYmTyh0KSxvPSFyJiYhbiYmRSh0KSx1PSFyJiYhbiYmIW8mJkIodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIUMuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8JChmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBxPU9iamVjdC5wcm90b3R5cGU7dmFyIFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLEc9VixIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSih0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxxKSlyZXR1cm4gRyh0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlILmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEsodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFE9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFg9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFLKHQpKXJldHVybiExO3ZhciBlPWIodCk7cmV0dXJuIGU9PVh8fGU9PVl8fGU9PVF8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJkwodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP1codCk6Sih0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKFModCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGR0PXZ0Lmhhc093blByb3BlcnR5LGJ0PVJlZ0V4cCgiXiIreXQuY2FsbChkdCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSyh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/YnQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3Iiksd3Q9X3QoYSwiTWFwIiksbXQ9X3QoYSwiUHJvbWlzZSIpLE90PV90KGEsIlNldCIpLFN0PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix4dD0iW29iamVjdCBQcm9taXNlXSIsenQ9IltvYmplY3QgU2V0XSIsRXQ9IltvYmplY3QgV2Vha01hcF0iLGt0PSJbb2JqZWN0IERhdGFWaWV3XSIsRnQ9bHQoanQpLCR0PWx0KHd0KSxQdD1sdChtdCksTHQ9bHQoT3QpLEl0PWx0KFN0KSxNdD1iOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1rdHx8d3QmJk10KG5ldyB3dCkhPUF0fHxtdCYmTXQobXQucmVzb2x2ZSgpKSE9eHR8fE90JiZNdChuZXcgT3QpIT16dHx8U3QmJk10KG5ldyBTdCkhPUV0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWIodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBGdDpyZXR1cm4ga3Q7Y2FzZSAkdDpyZXR1cm4gQXQ7Y2FzZSBQdDpyZXR1cm4geHQ7Y2FzZSBMdDpyZXR1cm4genQ7Y2FzZSBJdDpyZXR1cm4gRXR9cmV0dXJuIGV9KTt2YXIgVHQ9TXQsUnQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gVXQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgTnQ9VXQoImxlbmd0aCIpLER0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBCdCh0KXtyZXR1cm4gRHQudGVzdCh0KX12YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsV3Q9IlsiK0N0KyJdIixxdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFZ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEd0PSJbXiIrQ3QrIl0iLEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixKdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsS3Q9Iig/OiIrcXQrInwiK1Z0KyIpIisiPyIsUXQ9IltcXHVmZTBlXFx1ZmUwZl0/IixYdD1RdCtLdCsoIig/OlxcdTIwMGQoPzoiK1tHdCxIdCxKdF0uam9pbigifCIpKyIpIitRdCtLdCsiKSoiKSxZdD0iKD86IitbR3QrcXQrIj8iLHF0LEh0LEp0LFd0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChWdCsiKD89IitWdCsiKXwiK1l0K1h0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOk50KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhUyhlKSYmZyhlKSYmYihlKT09UnQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1UdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkoodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KHd0fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIXd0fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGRlPTEsYmU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZkZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZiZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBkPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09ZCl7aWYoZCljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIHdlKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciBtZT0xLE9lPTIsU2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix4ZT0iW29iamVjdCBFcnJvcl0iLHplPSJbb2JqZWN0IE1hcF0iLEVlPSJbb2JqZWN0IE51bWJlcl0iLGtlPSJbb2JqZWN0IFJlZ0V4cF0iLEZlPSJbb2JqZWN0IFNldF0iLCRlPSJbb2JqZWN0IFN0cmluZ10iLFBlPSJbb2JqZWN0IFN5bWJvbF0iLExlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsSWU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxUZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBSZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFVlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsTmU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxEZT1OZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksUmUoTmUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBVZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBCZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIFModCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LERlKX12YXIgQ2U9MSxXZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxZT0xLFZlPSJbb2JqZWN0IEFyZ3VtZW50c10iLEdlPSJbb2JqZWN0IEFycmF5XSIsSGU9IltvYmplY3QgT2JqZWN0XSIsSmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBLZSh0LGUscixuLG8sdSl7dmFyIGk9Uyh0KSxhPVMoZSksYz1pP0dlOlR0KHQpLGY9YT9HZTpUdChlKSxzPShjPWM9PVZlP0hlOmMpPT1IZSxsPShmPWY9PVZlP0hlOmYpPT1IZSxwPWM9PWY7aWYocCYmRSh0KSl7aWYoIUUoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEIodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIEllOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBTZTpjYXNlIEFlOmNhc2UgRWU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHhlOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBrZTpjYXNlICRlOnJldHVybiB0PT1lKyIiO2Nhc2UgemU6dmFyIGE9amU7Y2FzZSBGZTp2YXIgYz1uJm1lO2lmKGF8fChhPXdlKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1PZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIFBlOmlmKFRlKXJldHVybiBUZS5jYWxsKHQpPT1UZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImcWUpKXt2YXIgaD1zJiZKZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZKZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxkPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGQscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJkNlLGE9QmUodCksYz1hLmxlbmd0aDtpZihjIT1CZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpXZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sZD1lW3NdO2lmKG4pdmFyIGI9aT9uKGQseSxzLGUsdCx1KTpuKHksZCxzLHQsZSx1KTtpZighKHZvaWQgMD09PWI/eT09PWR8fG8oeSxkLHIsbix1KTpiKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIFFlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6S2UodCxlLHIsbixRZSxvKSl9dmFyIFhlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUsodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9RZShzLGYsWGV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmYih0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihTKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGRyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihTKHQpKXJldHVybiByZSh0LGRyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGJyKHQpe3JldHVybiBudWxsPT10PyIiOmRyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIFModCk/dDppcih0LGUpP1t0XTpwcihicih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gd3IodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiBtcih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6d3IodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJkwobykmJiQoaSxvKSYmKFModCl8fE8odCkpfSh0LGUsT3IpfXZhciBBcj0xLHhyPTI7ZnVuY3Rpb24genIodCl7cmV0dXJuIGlyKHQpP1V0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHdyKGUsdCl9fSh0KX1mdW5jdGlvbiBFcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P1ModCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPW1yKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP1NyKHIsdCk6UWUoZSxuLEFyfHhyKX19KHRbMF0sdFsxXSk6ZXIodCk6enIodCl9ZnVuY3Rpb24ga3IodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuKFModCk/cmU6a3IpKHQsRXIoZSkpfXZhciAkcj0vXHMvO3ZhciBQcj0vXlxzKy87ZnVuY3Rpb24gTHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJiRyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoUHIsIiIpOnR9ZnVuY3Rpb24gSXIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gVHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFJyPSJcXHVkODAwLVxcdWRmZmYiLFVyPSJbIitScisiXSIsTnI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixEcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixCcj0iW14iK1JyKyJdIixDcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsV3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHFyPSIoPzoiK05yKyJ8IitEcisiKSIrIj8iLFZyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsR3I9VnIrcXIrKCIoPzpcXHUyMDBkKD86IitbQnIsQ3IsV3JdLmpvaW4oInwiKSsiKSIrVnIrcXIrIikqIiksSHI9Iig/OiIrW0JyK05yKyI/IixOcixDcixXcixVcl0uam9pbigifCIpKyIpIixKcj1SZWdFeHAoRHIrIig/PSIrRHIrIil8IitIcitHciwiZyIpO2Z1bmN0aW9uIEtyKHQpe3JldHVybiBCdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChKcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIFFyKHQsZSxyKXtpZigodD1icih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gTHIodCk7aWYoIXR8fCEoZT1kcihlKSkpcmV0dXJuIHQ7dmFyIG49S3IodCksbz1LcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlRyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZUcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBJcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gWHIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVhyKHQpKXJldHVybltdO2lmKCFYcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBYcih0KSYmWHIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPUZyKHIsUXIpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtYcih0KSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gWnIodCl7bGV0IGU9ITE7aWYoWHIodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHRuPU5hTixlbj0vXlstK10weFswLTlhLWZdKyQvaSxybj0vXjBiWzAxXSskL2ksbm49L14wb1swLTddKyQvaSxvbj1wYXJzZUludDtmdW5jdGlvbiB1bih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIHRuO2lmKEsodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUsoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUxyKHQpO3ZhciByPXJuLnRlc3QodCk7cmV0dXJuIHJ8fG5uLnRlc3QodCk/b24odC5zbGljZSgyKSxyPzI6OCk6ZW4udGVzdCh0KT90bjordH12YXIgYW49MS8wLGNuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBmbih0KXtyZXR1cm4gdD8odD11bih0KSk9PT1hbnx8dD09PS1hbj8odDwwPy0xOjEpKmNuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBzbih0KXt2YXIgZT1mbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9ZnVuY3Rpb24gbG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3JldHVybiBmbih0KX1mdW5jdGlvbiBwbih0KXtyZXR1cm4hIVpyKHQpJiYodD1sbih0KSwibnVtYmVyIj09dHlwZW9mKGU9dCkmJmU9PXNuKGUpKTt2YXIgZX12YXIgaG49YS5pc0Zpbml0ZSx2bj1NYXRoLm1pbjt2YXIgeW49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXVuKHQpLChyPW51bGw9PXI/MDp2bihzbihyKSwyOTIpKSYmaG4odCkpe3ZhciBuPShicih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oYnIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksZG49eW47ZnVuY3Rpb24gYm4odCl7aWYoIVpyKHQpKXJldHVybiAwO3Q9bG4odCk7bGV0IGU9ZG4odCk7cmV0dXJuIjAiPT09U3RyaW5nKGUpPzA6ZX1mdW5jdGlvbiBnbih0LGU9e30pe2xldCByPW1yKGUsImZzIik7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIF9uKHQpe3JldHVybiBnbih0LHtmczplfSl9ZnVuY3Rpb24gam4odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiB3bih0LGU9e30pe2xldCByPW1yKGUsImZzIik7aWYoIXIuZXhpc3RzU3luYyh0KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBtbih0LGU9MSxyPXt9KXtsZXQgbj1tcihyLCJwYXRoIiksbz1tcihyLCJmcyIpO2lmKCF3bih0LHtmczpvfSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtsZXQgdT1bXTt2YXIgaSxhO3JldHVybiB1PWZ1bmN0aW9uKHQsZT0xLHI9e30pe2xldCBuPTEsbz1tcihyLCJwYXRoIiksdT1tcihyLCJmcyIpO2lmKCF3bih0LHtmczp1fSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtyZXR1cm4gZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gd24ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9KHQsZSx7cGF0aDpuLGZzOm99KSxhPXtpc0ZvbGRlcjohMX0sdT0oUyhpPXUpP1JlOmpuKShpLEVyKGEpKSx1PUZyKHUsKHQ9PihkZWxldGUgdC5pc0ZvbGRlcix0KSkpLHV9Y29uc3QgT249bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gU24odCxlPXt9KXtsZXQgcj1tcihlLCJmcyIpLG49bXIoZSwiY2h1bmtTaXplIik7aWYoWnIobil8fChuPTY3MTA4ODY0KSxuPWxuKG4pLCFnbih0LHtmczpyfSkpcmV0dXJuIFByb21pc2UucmVqZWN0KCJmcCBpcyBub3QgYSBmaWxlIik7bGV0IG89ZnVuY3Rpb24oKXtsZXQgdCxlLHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHIucmVzb2x2ZT10LHIucmVqZWN0PWUscn0oKTt0cnl7bGV0e2NyZWF0ZTY0OmV9PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjp1LGRpZ2VzdDMyOmksaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLHUpe2wodCk7Y29uc3QgaT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQoaSkscigwLGUpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQoaSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1kLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksaS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldChpKSx1KG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3Qgdj0ybioqNjRuLTFuO2Z1bmN0aW9uIHkodCl7cmV0dXJuIHQmdn1jb25zdCBkPW5ldyBUZXh0RW5jb2RlcixiPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1iKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGQuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCkseShuKDAsZC5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9Yik9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWIpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9Yik9PnAoNDgsdCxvLHUsaSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx5KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHkpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKE9uKSkuaW5zdGFuY2UpfSgpLHU9ZSgpLGk9ci5jcmVhdGVSZWFkU3RyZWFtKHQse2hpZ2hXYXRlck1hcms6bn0pO2kub24oImRhdGEiLCh0PT57dS51cGRhdGUodCl9KSksaS5vbigiZW5kIiwoKCk9PntsZXQgdD11LmRpZ2VzdCgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpO28ucmVzb2x2ZSh0KX0pKSxpLm9uKCJlcnJvciIsby5yZWplY3QpfWNhdGNoKHQpe28ucmVqZWN0KHQudG9TdHJpbmcoKSl9cmV0dXJuIG99bGV0IGNoZWNrVG90YWxIYXNoPWFzeW5jKHIsbixvLHUpPT57bGV0IGk9dC5qb2luKHUsbyksYT0hMTtpZihhPV9uKGkpLCFacihyKSl7cmV0dXJue2Vycm9yOiJpbnZhbGlkIGZpbGVTaXplIGluIHBheWxvYWQifX1sZXQgYz0hMTtpZihhKXtsZXQgdD0tMTt0cnl7dD1lLnN0YXRTeW5jKGkpLnNpemV9Y2F0Y2godCl7Y29uc29sZS5sb2coImNoZWNrIHRvdGFsIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIixpLHQpfWM9cj09PXR9bGV0IGY9ITE7YSYmYyYmYXdhaXQgZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4gU24odCx7ZnM6ZSwuLi5yfSl9KGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxfbihpKSksY29uc29sZS5sb2codCksZj0hMX0pKTtsZXQgcz1bXTtpZighZil7aXQoZnVuY3Rpb24ocixuPTEpe3JldHVybiBtbihyLG4se3BhdGg6dCxmczplfSl9KHUpLCh0PT57bGV0IHI9dC5uYW1lLmluZGV4T2YoYCR7b31fYCk+PTAsdT0hMTt0cnl7dT1lLnN0YXRTeW5jKHQucGF0aCkuc2l6ZT09PW59Y2F0Y2goZSl7Y29uc29sZS5sb2coImNoZWNrIGVhY2ggZmlsZSBzaXplOiBmcy5zdGF0U3luYyhwYXRoRmlsZSkiLHQucGF0aCxlKX1pZihyJiZ1KXtsZXQgZT1Zcih0Lm5hbWUsYCR7b31fYCkscj0oYT1udWxsPT0oaT1lKT8wOmkubGVuZ3RoKT9pW2EtMV06dm9pZCAwO2lmKCFmdW5jdGlvbih0KXtyZXR1cm4hIXBuKHQpJiZibih0KT49MH0ocikpdGhyb3cgY29uc29sZS5sb2coInYubmFtZSIsdC5uYW1lKSxjb25zb2xlLmxvZygicyIsZSksbmV3IEVycm9yKGBjYW4gbm90IHBhcnNlIGluZGV4IGluIHYubmFtZVske3QubmFtZX1dYCk7cj1ibihyKSxzLnB1c2gocil9dmFyIGksYX0pKX1sZXQgbD1lZShzKT4wO3JldHVybntwYXRoOmksYkFsbEV4aXN0OmEsYkFsbFNpemU6YyxiQWxsSGFzaDpmLGJTbHM6bCxzbGtzOnN9fTsKCgpsZXQgaW5zdGFuY2UgPSBudWxsCmZ1bmN0aW9uIGluaXQoaW5wdXQpewoKICAgIC8vaW5pdAogICAgbGV0IHIKICAgIAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIG1haW46IGNoZWNrVG90YWxIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrVG90YWxIYXNoCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK",Buffer.from(s,"base64").toString("utf8"));var s;function r(){let i=new n,s=function(e){try{return new t.Worker(e,{eval:!0})}catch(t){o(t)}}(e);if(!s)return o("invalid worker"),null;function r(){let t=function(){let t,e,n=new Promise((function(){t=arguments[0],e=arguments[1]}));return n.resolve=t,n.reject=e,n}(),e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let s=0;s<t;s++)e[s]=n[0|Math.random()*i];return e.join("")}(),n={mode:"call",id:e,fun:"main",input:[...arguments]};return s.postMessage(n),i.once(e,(e=>{"success"===e.state?t.resolve(e.msg):t.reject(e.msg)})),t}function o(t){i.emit("error",t)}return s.on("message",(function(t){let e=t,n=e.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(e.evName,e.msg),"return"===n&&i.emit(e.id,e))})),s.on("error",o),s.on("exit",(t=>{1!==t&&o("exit code["+t+"] !== 1")})),function(){let t={mode:"init",type:"function",input:[...arguments]};s.postMessage(t)}([...arguments]),i.main=r,i.main=r,i.terminate=function(){s?(s.terminate(),s=void 0):o("worker has been terminated")},i}i=async function(){let t=[...arguments],e=r();return await e.main(...t).finally((()=>{e.terminate()}))}}();try{process.on("unhandledRejection",(t=>{console.log("outer:unhandledRejection",t)})),process.on("uncaughtException",(t=>{console.log("outer:uncaughtException",t)})),process.on("uncaughtExceptionMonitor",(t=>{console.log("outer:uncaughtExceptionMonitor",t)}))}catch(t){}return i}(n)}({get exports(){return i},set exports(t){i=t}}),i)}({get exports(){return Vs},set exports(t){Vs=t}});var Hs=Vs,Qs={};!function(t,e){var n,i;t.exports=(n=r,i={},function(t,e){t.exports=function(t){var e={};!function(t){var e=Object.prototype.hasOwnProperty,n="~";function i(){}function s(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function r(t,e,i,r,o){if("function"!=typeof i)throw new TypeError("The listener must be a function");var c=new s(i,r||t,o),l=n?n+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],c]:t._events[l].push(c):(t._events[l]=c,t._eventsCount++),t}function o(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function c(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),c.prototype.eventNames=function(){var t,i,s=[];if(0===this._eventsCount)return s;for(i in t=this._events)e.call(t,i)&&s.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(t)):s},c.prototype.listeners=function(t){var e=n?n+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var s=0,r=i.length,o=new Array(r);s<r;s++)o[s]=i[s].fn;return o},c.prototype.listenerCount=function(t){var e=n?n+t:t,i=this._events[e];return i?i.fn?1:i.length:0},c.prototype.emit=function(t,e,i,s,r,o){var c=n?n+t:t;if(!this._events[c])return!1;var l,a,d=this._events[c],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(t,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,i),!0;case 4:return d.fn.call(d.context,e,i,s),!0;case 5:return d.fn.call(d.context,e,i,s,r),!0;case 6:return d.fn.call(d.context,e,i,s,r,o),!0}for(a=1,l=new Array(u-1);a<u;a++)l[a-1]=arguments[a];d.fn.apply(d.context,l)}else{var M,w=d.length;for(a=0;a<w;a++)switch(d[a].once&&this.removeListener(t,d[a].fn,void 0,!0),u){case 1:d[a].fn.call(d[a].context);break;case 2:d[a].fn.call(d[a].context,e);break;case 3:d[a].fn.call(d[a].context,e,i);break;case 4:d[a].fn.call(d[a].context,e,i,s);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[a].fn.apply(d[a].context,l)}}return!0},c.prototype.on=function(t,e,n){return r(this,t,e,n,!1)},c.prototype.once=function(t,e,n){return r(this,t,e,n,!0)},c.prototype.removeListener=function(t,e,i,s){var r=n?n+t:t;if(!this._events[r])return this;if(!e)return o(this,r),this;var c=this._events[r];if(c.fn)c.fn!==e||s&&!c.once||i&&c.context!==i||o(this,r);else{for(var l=0,a=[],d=c.length;l<d;l++)(c[l].fn!==e||s&&!c[l].once||i&&c[l].context!==i)&&a.push(c[l]);a.length?this._events[r]=1===a.length?a[0]:a:o(this,r)}return this},c.prototype.removeAllListeners=function(t){var e;return t?(e=n?n+t:t,this._events[e]&&o(this,e)):(this._events=new i,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=n,c.EventEmitter=c,t.exports=c}({get exports(){return e},set exports(t){e=t}});var n=e;let i;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let e=(s="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9T2JqZWN0LnByb3RvdHlwZTt2YXIgbixvLGk9KG49T2JqZWN0LmtleXMsbz1PYmplY3QsZnVuY3Rpb24odCl7cmV0dXJuIG4obyh0KSl9KSx1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYSh0KXtpZihuPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvdG90eXBlfHxyKSlyZXR1cm4gaSh0KTt2YXIgZSxuLG89W107Zm9yKHZhciBhIGluIE9iamVjdCh0KSl1LmNhbGwodCxhKSYmImNvbnN0cnVjdG9yIiE9YSYmby5wdXNoKGEpO3JldHVybiBvfXZhciBjPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxmPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYscz1jfHxmfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGw9cy5TeW1ib2wscD1PYmplY3QucHJvdG90eXBlLGg9cC5oYXNPd25Qcm9wZXJ0eSx5PXAudG9TdHJpbmcsdj1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIGQ9IltvYmplY3QgTnVsbF0iLGc9IltvYmplY3QgVW5kZWZpbmVkXSIsXz1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGoodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9nOmQ6XyYmXyBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9aC5jYWxsKHQsdikscj10W3ZdO3RyeXt0W3ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89eS5jYWxsKHQpO3JldHVybiBuJiYoZT90W3ZdPXI6ZGVsZXRlIHRbdl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBiLmNhbGwodCl9KHQpfWZ1bmN0aW9uIHcodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFM9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLE89IltvYmplY3QgRnVuY3Rpb25dIixtPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIseD0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHoodCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9aih0KTtyZXR1cm4gZT09T3x8ZT09bXx8ZT09U3x8ZT09eH12YXIgQSwkPXNbIl9fY29yZS1qc19zaGFyZWRfXyJdLEY9KEE9L1teLl0rJC8uZXhlYygkJiYkLmtleXMmJiQua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIFA9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIEwodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBQLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifXZhciBrPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEU9RnVuY3Rpb24ucHJvdG90eXBlLEk9T2JqZWN0LnByb3RvdHlwZSxOPUUudG9TdHJpbmcsVD1JLmhhc093blByb3BlcnR5LE09UmVnRXhwKCJeIitOLmNhbGwoVCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gUih0KXtyZXR1cm4hKCF3KHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIUYmJkYgaW4gdH0odCkpJiYoeih0KT9NOmspLnRlc3QoTCh0KSl9ZnVuY3Rpb24gVSh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIFIocik/cjp2b2lkIDB9dmFyIEI9VShzLCJEYXRhVmlldyIpLEM9VShzLCJNYXAiKSxEPVUocywiUHJvbWlzZSIpLFc9VShzLCJTZXQiKSxxPVUocywiV2Vha01hcCIpLFY9IltvYmplY3QgTWFwXSIsRz0iW29iamVjdCBQcm9taXNlXSIsSD0iW29iamVjdCBTZXRdIixKPSJbb2JqZWN0IFdlYWtNYXBdIixLPSJbb2JqZWN0IERhdGFWaWV3XSIsUT1MKEIpLFg9TChDKSxZPUwoRCksWj1MKFcpLHR0PUwocSksZXQ9ajsoQiYmZXQobmV3IEIobmV3IEFycmF5QnVmZmVyKDEpKSkhPUt8fEMmJmV0KG5ldyBDKSE9Vnx8RCYmZXQoRC5yZXNvbHZlKCkpIT1HfHxXJiZldChuZXcgVykhPUh8fHEmJmV0KG5ldyBxKSE9SikmJihldD1mdW5jdGlvbih0KXt2YXIgZT1qKHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0wocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBROnJldHVybiBLO2Nhc2UgWDpyZXR1cm4gVjtjYXNlIFk6cmV0dXJuIEc7Y2FzZSBaOnJldHVybiBIO2Nhc2UgdHQ6cmV0dXJuIEp9cmV0dXJuIGV9KTt2YXIgcnQ9ZXQsbnQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBvdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PW50fSh0Lmxlbmd0aCkmJiF6KHQpfXZhciBpdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHV0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9dmFyIGF0PSJbb2JqZWN0IFN0cmluZ10iO3ZhciBjdCxmdD0oY3Q9Imxlbmd0aCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbY3RdfSksc3Q9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBsdD0iXFx1ZDgwMC1cXHVkZmZmIixwdD0iWyIrbHQrIl0iLGh0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIseXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsdnQ9IlteIitsdCsiXSIsYnQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLGR0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixndD0iKD86IitodCsifCIreXQrIikiKyI/IixfdD0iW1xcdWZlMGVcXHVmZTBmXT8iLGp0PV90K2d0KygiKD86XFx1MjAwZCg/OiIrW3Z0LGJ0LGR0XS5qb2luKCJ8IikrIikiK190K2d0KyIpKiIpLHd0PSIoPzoiK1t2dCtodCsiPyIsaHQsYnQsZHQscHRdLmpvaW4oInwiKSsiKSIsU3Q9UmVnRXhwKHl0KyIoPz0iK3l0KyIpfCIrd3QranQsImciKTtmdW5jdGlvbiBPdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHN0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1TdC5sYXN0SW5kZXg9MDtTdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOmZ0KHQpfWZ1bmN0aW9uIG10KHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYob3QodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhaXQoZSkmJnV0KGUpJiZqKGUpPT1hdD9PdCh0KTp0Lmxlbmd0aDt2YXIgZSxyPXJ0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6YSh0KS5sZW5ndGh9dmFyIHh0PSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIHp0KHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8dXQodCkmJmoodCk9PXh0fXZhciBBdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywkdD0vXlx3KiQvO3ZhciBGdD1VKE9iamVjdCwiY3JlYXRlIik7dmFyIFB0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEx0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24ga3QodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gRXQodCxlKXtmb3IodmFyIHIsbixvPXQubGVuZ3RoO28tLTspaWYoKHI9dFtvXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1rdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPUZ0P0Z0KG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxrdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxrdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoRnQpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gUHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxrdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEZ0P3ZvaWQgMCE9PWVbdF06THQuY2FsbChlLHQpfSxrdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1GdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgSXQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBOdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBUdCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gTXQodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19TnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sTnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9RXQoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6SXQuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxOdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1FdChlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LE50LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEV0KHRoaXMuX19kYXRhX18sdCk+LTF9LE50LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49RXQocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc30sTXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcga3QsbWFwOm5ldyhDfHxOdCksc3RyaW5nOm5ldyBrdH19LE10LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9VHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sTXQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gVHQodGhpcyx0KS5nZXQodCl9LE10LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFR0KHRoaXMsdCkuaGFzKHQpfSxNdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9VHQodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIFJ0PSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBVdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFJ0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0saT1yLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gci5jYWNoZT1uZXcoVXQuQ2FjaGV8fE10KSxyfVV0LkNhY2hlPU10O3ZhciBCdD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxDdD0vXFwoXFwpPy9nLER0PWZ1bmN0aW9uKHQpe3ZhciBlPVV0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoQnQsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShDdCwiJDEiKTpyfHx0KX0pKSxlfSkpLFd0PUR0O3ZhciBxdD0xLzAsVnQ9bD9sLnByb3RvdHlwZTp2b2lkIDAsR3Q9VnQ/VnQudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIEh0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihpdCh0KSlyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb30odCxIdCkrIiI7aWYoenQodCkpcmV0dXJuIEd0P0d0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LXF0PyItMCI6ZX1mdW5jdGlvbiBKdCh0LGUpe3JldHVybiBpdCh0KT90OmZ1bmN0aW9uKHQsZSl7aWYoaXQodCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIXp0KHQpKXx8JHQudGVzdCh0KXx8IUF0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpfSh0LGUpP1t0XTpXdChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjpIdCh0KX0odCkpfXZhciBLdD0xLzA7ZnVuY3Rpb24gUXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHx6dCh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tS3Q/Ii0wIjplfWZ1bmN0aW9uIFh0KHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49KGU9SnQoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W1F0KGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfSh0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gZnVuY3Rpb24odCxlPXt9KXtsZXQgcj1YdChlLCJmcyIpO3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYhci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCl9KHQse2ZzOmV9KX1jb25zdCBadD1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTtmdW5jdGlvbiB0ZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gZWUodCl7bGV0IGU9ITE7aWYodGUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHJlPS9ccy87dmFyIG5lPS9eXHMrLztmdW5jdGlvbiBvZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmcmUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShuZSwiIik6dH12YXIgaWU9TmFOLHVlPS9eWy0rXTB4WzAtOWEtZl0rJC9pLGFlPS9eMGJbMDFdKyQvaSxjZT0vXjBvWzAtN10rJC9pLGZlPXBhcnNlSW50O3ZhciBzZT0xLzAsbGU9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIHBlKHQpe3JldHVybiB0Pyh0PWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZih6dCh0KSlyZXR1cm4gaWU7aWYodyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9dyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9b2UodCk7dmFyIHI9YWUudGVzdCh0KTtyZXR1cm4gcnx8Y2UudGVzdCh0KT9mZSh0LnNsaWNlKDIpLHI/Mjo4KTp1ZS50ZXN0KHQpP2llOit0fSh0KSk9PT1zZXx8dD09PS1zZT8odDwwPy0xOjEpKmxlOnQ9PXQ/dDowOjA9PT10P3Q6MH1hc3luYyBmdW5jdGlvbiBoZSh0LGU9e30pe2lmKHI9dCwiW29iamVjdCBCbG9iXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikmJiFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXJldHVybiBjb25zb2xlLmxvZygiaW5wIix0KSxQcm9taXNlLnJlamVjdCgiaW5wIGlzIG5vdCBhIEJsb2Igb3IgRmlsZSIpO3ZhciByO2xldCBuPVh0KGUsImNodW5rU2l6ZSIpO2VlKG4pfHwobj02NzEwODg2NCksbj1mdW5jdGlvbih0KXtyZXR1cm4gZWUodCk/cGUodCk6MH0obik7bGV0e2NyZWF0ZTY0Om99PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjppLGRpZ2VzdDMyOnUsaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLGkpe2wodCk7Y29uc3QgdT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQodSkscigwLGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQodSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj1iLmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldCh1KSxpKG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3QgeT0ybioqNjRuLTFuO2Z1bmN0aW9uIHYodCl7cmV0dXJuIHQmeX1jb25zdCBiPW5ldyBUZXh0RW5jb2RlcixkPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksdihuKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9ZCk9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9ZCk9PnAoNDgsdCxvLGksdSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSx2KG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLHYpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKFp0KSkuaW5zdGFuY2UpfSgpLGk9bygpLHU9MDtmb3IoO3U8dC5zaXplOyl7bGV0IGU9dC5zbGljZSh1LHUrbikscj1hd2FpdCBlLmFycmF5QnVmZmVyKCk7aS51cGRhdGUobmV3IFVpbnQ4QXJyYXkocikpLHUrPW59cmV0dXJuIGkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIil9bGV0IGNoZWNrU2xpY2VzSGFzaD1hc3luYyhyLG4sbyk9PntpZigwPT09bXQocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgaT1bXTtmb3IobGV0IHU9MDt1PHIubGVuZ3RoO3UrKyl7bGV0IGE9clt1XSxjPXQuam9pbihvLGAke259XyR7YS5pfWApLGY9IiI7YXdhaXQgaGUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGMpXSkpLnRoZW4oKHQ9PntmPXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZygiZnNJc0ZpbGUoX3BhdGhGaWxlKSIsYyxZdChjKSksY29uc29sZS5sb2codCl9KSksYS5oPT09ZiYmaS5wdXNoKGEuaSl9cmV0dXJue3Nsa3M6aX19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tTbGljZXNIYXNoCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBwYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNoZWNrU2xpY2VzSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(s,"base64").toString("utf8"));var s;function r(){let i=new n,s=function(e){try{return new t.Worker(e,{eval:!0})}catch(t){o(t)}}(e);if(!s)return o("invalid worker"),null;function r(){let t=function(){let t,e,n=new Promise((function(){t=arguments[0],e=arguments[1]}));return n.resolve=t,n.reject=e,n}(),e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=n.length;for(let s=0;s<t;s++)e[s]=n[0|Math.random()*i];return e.join("")}(),n={mode:"call",id:e,fun:"main",input:[...arguments]};return s.postMessage(n),i.once(e,(e=>{"success"===e.state?t.resolve(e.msg):t.reject(e.msg)})),t}function o(t){i.emit("error",t)}return s.on("message",(function(t){let e=t,n=e.mode;"emit"!==n&&"return"!==n||("emit"===n&&i.emit(e.evName,e.msg),"return"===n&&i.emit(e.id,e))})),s.on("error",o),s.on("exit",(t=>{1!==t&&o("exit code["+t+"] !== 1")})),function(){let t={mode:"init",type:"function",input:[...arguments]};s.postMessage(t)}([...arguments]),i.main=r,i.main=r,i.terminate=function(){s?(s.terminate(),s=void 0):o("worker has been terminated")},i}i=async function(){let t=[...arguments],e=r();return await e.main(...t).finally((()=>{e.terminate()}))}}();try{process.on("unhandledRejection",(t=>{console.log("outer:unhandledRejection",t)})),process.on("uncaughtException",(t=>{console.log("outer:uncaughtException",t)})),process.on("uncaughtExceptionMonitor",(t=>{console.log("outer:uncaughtExceptionMonitor",t)}))}catch(t){}return i}(n)}({get exports(){return i},set exports(t){i=t}}),i)}({get exports(){return Qs},set exports(t){Qs=t}});var Us=Qs;function ks(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=Dt(r,"port");Ve(o)||(o=8080);let c=Dt(r,"useInert");mn(c)||(c=!0);let l=Dt(r,"pathStaticFiles");ae(l)||(l="dist");let a=Dt(r,"pathUploadTemp");ae(a)||(a="./uploadTemp"),on(a)||fn(a);let d=Dt(r,"apiName");ae(d)||(d="api");let u=Dt(r,"tokenType");ae(u)||(u="Bearer");let M=Dt(r,"sizeSlice");Ve(M)||(M=1048576);let w=Dt(r,"verifyConn");He(w)||(w=()=>!0);let I=Dt(r,"corsOrigins",[]);Le(I)||(I=["*"]);let y=Dt(r,"delayForSlice","");Ue(y)||(y=100),y=We(y);let p=null;p=Dt(r,"serverHapi")?r.serverHapi:n.server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:I,credentials:!1}}});let m=Cn(),L=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i<e;i++)n[i-1]=arguments[i];setTimeout((()=>{m.emit(t,...n)}),1)};async function g(t){let e=Re(),n=Re();return n.then((t=>{e.resolve(t)})).catch((t=>{e.reject(t)})),L("upload",t,n),e}async function C(t){let e=Re(),n=Re();return n.then((t=>{e.resolve(t)})).catch((t=>{e.reject(t)})),L("download",t,n),e}function D(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=new s.Readable;i._read=()=>{},i.push(e),i.push(null);let r=Dt(n,"returnType",""),o=Dt(n,"returnMsg",""),c=t.response(i).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",i.readableLength);return ae(r)&&c.header("Return-Type",r),ae(o)&&c.header("Return-Msg",o),c}function f(t,e){return ae(e)||(console.log("msg",e),console.log("msg is not an effective string, set msg=''"),e=""),D(t,Jn({error:e}),{returnType:"error",returnMsg:e})}let h={path:`/${d}/main`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(t,e){let n=Dt(t,"headers");n=Me(n)?n:"";let i=Dt(t,"query");i=Me(i)?i:"";let r=Dt(n,"authorization","");r=ae(r)?r:"";{let t=w({apiType:"main",authorization:r,headers:n,query:i});if(Qe(t)&&(t=await t),!0!==t)return f(e,"permission denied")}L("handler",{api:"apiMain",headers:n,query:i});let o=await(()=>{let e=Re(),n=[],i=new s.Writable({write(t,e,i){n.push(t),i()}});return i.on("finish",(()=>{})),t.payload.pipe(i),t.payload.on("end",(()=>{let t=Buffer.concat(n);n=[],e.resolve(t)})),t.payload.on("close",(()=>{})),t.payload.on("error",(t=>{console.log("apiMain req.payload err",t),L("error",`receive payload error: ${t.message}`),e.reject(`receive payload error: ${t.message}`)})),e})(),c=Fn(new Uint8Array(o)),l={},a="",d="";return await async function(t){let e=Re(),n=Re();n.then((n=>{t.output=n,delete t.input,e.resolve(t)})).catch((t=>{e.reject(t)}));{let e=Dt(t,"func",""),i=Dt(t,"input",null);L("execute",e,i,n)}return e}(c).then((t=>{l.success=t,a="success",d="need to parse"})).catch((t=>{l.error=t,a="error",d="need to parse"})),D(e,Jn(l),{returnType:a,returnMsg:d})}},b={path:`/${d}/ulctr`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(t,e){let n=Dt(t,"headers");n=Me(n)?n:"";let i=Dt(t,"query");i=Me(i)?i:"";let s=Dt(n,"authorization","");s=ae(s)?s:"";{let t=w({apiType:"upload-controller",authorization:s,headers:n,query:i});if(Qe(t)&&(t=await t),!0!==t)return f(e,"permission denied")}L("handler",{api:"apiUploadCheck",headers:n,query:i});let r=Dt(t,"payload.mode","");if("check-total-hash"!==r&&"check-slices-hash"!==r&&"merge-slices-push"!==r&&"merge-slices-get"!==r)return f(e,`invalid mode[${r}] in payload`);let o=Dt(t,"payload.fileHash","");if(!ae(o))return f(e,"invalid fileHash in payload");let c={},l="",d="";return await(async()=>{let e=null;if("check-total-hash"===r){let n=Dt(t,"payload.filename",""),i=Dt(t,"payload.fileSize","");if(e=await Hs(i,M,o,a),e.bAllHash){let t={filename:n,path:e.path},i=await g(t);e={...e,...i}}}else if("check-slices-hash"===r){let n=Dt(t,"payload.fileSliceHashs",[]);e=await Us(n,o,a)}else if("merge-slices-push"===r){let n=Dt(t,"payload.chunkTotal","");e={queueId:Ws.push(o,n,a)}}else if("merge-slices-get"===r){let n=Dt(t,"payload.filename",""),i=Dt(t,"payload.queueId",""),s=Ws.get(i,a);if(e={state:s.state,msg:s.msg,queueId:i,filename:n,path:s.path},"success"===s.state){let t={filename:n,path:s.path},i=await g(t);e={...e,msg:i}}}return e})().then((t=>{c.success=t,l="success",d="need to parse"})).catch((t=>{c.error=t,l="error",d="need to parse"})),D(e,Jn(c),{returnType:l,returnMsg:d})}},N={path:`/${d}/slc`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(n,i){let s=Dt(n,"headers");s=Me(s)?s:"";let r=Dt(n,"query");r=Me(r)?r:"";let o=Dt(s,"authorization","");o=ae(o)?o:"";{let t=w({apiType:"upload-slice",authorization:o,headers:s,query:r});if(Qe(t)&&(t=await t),!0!==t)return f(i,"permission denied")}L("handler",{api:"apiUploadSlice",headers:s,query:r});let c=Dt(s,"chunk-index",""),l=Dt(s,"chunk-total",""),d=Dt(s,"package-id","");if(!Ue(c))return f(i,"invalid chunkIndex in headers");if(c=We(c),!Ue(l))return f(i,"invalid chunkTotal in headers");if(l=We(l),!ae(d))return f(i,"invalid packageId in headers");let u=t.join(a,`${d}_${c}`),M=e.createWriteStream(u),I={},p="",m="";return await(()=>{let t=Re();return n.payload.pipe(M),n.payload.on("end",(()=>{setTimeout((()=>{t.resolve(`chunk[${c+1}/${l}] of packageId[${d}] done`)}),y)})),n.payload.on("error",(e=>{console.log(`apiUploadSlice req.payload chunk[${c+1}/${l}] of packageId[${d}] err`,e),L("error",`receive chunk[${c+1}/${l}] of packageId[${d}] error: ${e.message}`),t.reject(`receive chunk[${c+1}/${l}] of packageId[${d}] error: ${e.message}`)})),t})().then((t=>{I.success=t,p="success",m="need to parse"})).catch((t=>{I.error=t,p="error",m="need to parse",L("error",t)})),D(i,Jn(I),{returnType:p,returnMsg:m})}},x={path:`/${d}/dwgfn`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(t,e){let n=Dt(t,"headers");n=Me(n)?n:"";let i=Dt(t,"query");i=Me(i)?i:"";let s=Dt(n,"authorization","");s=ae(s)?s:"";{let t=w({apiType:"download-get-filename",authorization:s,headers:n,query:i});if(Qe(t)&&(t=await t),!0!==t)return f(e,"permission denied")}L("handler",{api:"apiDownloadGetFilename",headers:n,query:i});let r=Dt(t,"payload.fileId","");if(!ae(r))return f(e,"invalid fileId in payload");let o={fileId:r},c={},l="",a="";await C(o).then((t=>{c.success=t,l="success",a="need to parse"})).catch((t=>{c.error=t,l="error",a="need to parse"}));let d=Dt(c,"success"),u=Dt(d,"streamRead");try{u.destroy()}catch(t){}let M=Dt(d,"filename");return ae(M)?(c={success:{filename:M}},D(e,Jn(c),{returnType:l,returnMsg:a})):f(e,"invalid filename")}},Z={path:`/${d}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1}},handler:async function(t,e){let n=Dt(t,"headers");n=Me(n)?n:"";let i=Dt(t,"query");i=Me(i)?i:"";let s=Dt(i,"token","");s=ae(s)?s:"";let r="";ae(s)&&(r=`${u} ${s}`);{let t=w({apiType:"download-get-file",authorization:r,headers:n,query:i});if(Qe(t)&&(t=await t),!0!==t)return f(e,"permission denied")}L("handler",{api:"apiDownloadGetFilename",headers:n,query:i});let o=Dt(i,"fileId","");if(o=ae(o)?o:"",!ae(o))return f(e,"invalid fileId in query");let c={fileId:o},l={};if(await C(c).then((t=>{l.success=t})).catch((t=>{l.error=t})),Zn(l,"error"))return f(e,"can not get file from fileId");let a=Dt(l,"success"),d=Dt(a,"streamRead"),M=Dt(a,"fileSize");if(!bn(M)){try{d.destroy()}catch(t){}return f(e,"invalid fileSize")}let I=Dt(a,"fileType");if(!ae(I)){try{d.destroy()}catch(t){}return f(e,"invalid fileType")}return I=Nn(I),e.response(d).type(I).header("Content-Length",M)}},T={path:`/${d}/dw`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(t,e){let n=Dt(t,"headers");n=Me(n)?n:"";let i=Dt(t,"query");i=Me(i)?i:"";let s=Dt(n,"authorization","");s=ae(s)?s:"";{let t=w({apiType:"download",authorization:s,headers:n,query:i});if(Qe(t)&&(t=await t),!0!==t)return f(e,"permission denied")}L("handler",{api:"apiDownload",headers:n,query:i});let r=Dt(t,"payload.fileId","");if(!ae(r))return f(e,"invalid fileId in payload");let o={fileId:r},c={};if(await C(o).then((t=>{c.success=t})).catch((t=>{c.error=t})),Zn(c,"error"))return f(e,"can not get file from fileId");let l=Dt(c,"success"),a=Dt(l,"streamRead"),d=Dt(l,"filename");if(!ae(d)){try{a.destroy()}catch(t){}return f(e,"invalid filename")}d=xn(d);let u=Dt(l,"fileSize");if(!bn(u)){try{a.destroy()}catch(t){}return f(e,"invalid fileSize")}let M=Dt(l,"fileType");if(!ae(M)){try{a.destroy()}catch(t){}return f(e,"invalid fileType")}return M=Nn(M),e.response(a).type(M).header("Content-Disposition",`attachment; filename="${d}"`).header("Content-Length",u)}};Dt(r,"serverHapi")?p.route([h,b,N,x,Z,T]):async function(){c&&await p.register(i);let t=[];if(c){let e={method:"GET",path:"/{file*}",handler:{directory:{path:`${l}/`}}};t=[...t,e]}t=[...t,h,b,N,x,Z,T],p.route(t),await p.start(),console.log(`Server running at: ${p.info.uri}`)}();return m.stop=()=>{p.stop()},m}var Js=function(){return a.Date.now()},Rs="Expected a function",Ps=Math.max,Bs=Math.min;function Os(t,e,n){var i,s,r,o,c,l,a=0,d=!1,u=!1,M=!0;if("function"!=typeof t)throw new TypeError(Rs);function w(e){var n=i,r=s;return i=s=void 0,a=e,o=t.apply(r,n)}function I(t){var n=t-l;return void 0===l||n>=e||n<0||u&&t-a>=r}function y(){var t=Js();if(I(t))return p(t);c=setTimeout(y,function(t){var n=e-(t-l);return u?Bs(n,r-(t-a)):n}(t))}function p(t){return c=void 0,M&&i?w(t):(i=s=void 0,o)}function m(){var t=Js(),n=I(t);if(i=arguments,s=this,l=t,n){if(void 0===c)return function(t){return a=t,c=setTimeout(y,e),d?w(t):o}(l);if(u)return clearTimeout(c),c=setTimeout(y,e),w(l)}return void 0===c&&(c=setTimeout(y,e)),o}return e=Ze(e)||0,x(n)&&(d=!!n.leading,r=(u="maxWait"in n)?Ps(Ze(n.maxWait)||0,e):r,M="trailing"in n?!!n.trailing:M),m.cancel=function(){void 0!==c&&clearTimeout(c),a=0,i=l=s=c=void 0},m.flush=function(){return void 0===c?o:p(Js())},m}var Fs=function(){try{var t=k(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),_s=Fs;function $s(t,e,n){"__proto__"==e&&_s?_s(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function qs(t,e,n){(void 0!==n&&!O(t[e],n)||void 0===n&&!(e in t))&&$s(t,e,n)}var tr="object"==typeof exports&&exports&&!exports.nodeType&&exports,er=tr&&"object"==typeof module&&module&&!module.nodeType&&module,nr=er&&er.exports===tr?a.Buffer:void 0,ir=nr?nr.allocUnsafe:void 0;function sr(t,e){if(e)return t.slice();var n=t.length,i=ir?ir(n):new t.constructor(n);return t.copy(i),i}function rr(t){var e=new t.constructor(t.byteLength);return new ri(e).set(new ri(t)),e}function or(t,e){var n=e?rr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function cr(t,e){var n=-1,i=t.length;for(e||(e=Array(i));++n<i;)e[n]=t[n];return e}var lr=Object.create,ar=function(){function t(){}return function(e){if(!x(e))return{};if(lr)return lr(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}(),dr=ar;function ur(t){return"function"!=typeof t.constructor||_t(t)?{}:dr(Yn(t))}function Mr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var wr=Object.prototype.hasOwnProperty;function Ir(t,e,n){var i=t[e];wr.call(t,e)&&O(i,n)&&(void 0!==n||e in t)||$s(t,e,n)}function yr(t,e,n,i){var s=!n;n||(n={});for(var r=-1,o=e.length;++r<o;){var c=e[r],l=i?i(n[c],t[c],c,n,t):void 0;void 0===l&&(l=t[c]),s?$s(n,c,l):Ir(n,c,l)}return n}var pr=Object.prototype.hasOwnProperty;function mr(t){if(!x(t))return function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}(t);var e=_t(t),n=[];for(var i in t)("constructor"!=i||!e&&pr.call(t,i))&&n.push(i);return n}function Lr(t){return ne(t)?Ot(t,!0):mr(t)}function gr(t,e,n,i,s,r,c){var l=Mr(t,n),a=Mr(e,n),d=c.get(a);if(d)qs(t,n,d);else{var u,M=r?r(l,a,n+"",t,e,c):void 0,w=void 0===M;if(w){var I=o(a),y=!I&&Gt(a),p=!I&&!y&&Pt(a);M=a,I||y||p?o(l)?M=l:C(u=l)&&ne(u)?M=cr(l):y?(w=!1,M=sr(a,!0)):p?(w=!1,M=or(a,!0)):M=[]:Wn(a)||St(a)?(M=l,St(l)?M=function(t){return yr(t,Lr(t))}(l):x(l)&&!A(l)||(M=ur(a))):w=!1}w&&(c.set(a,M),s(M,a,i,r,c),c.delete(a)),qs(t,n,M)}}function Cr(t,e,n,i,s){t!==e&&bt(e,(function(r,o){if(s||(s=new $n),x(r))gr(t,e,o,n,Cr,i,s);else{var c=i?i(Mr(t,o),r,o+"",t,e,s):void 0;void 0===c&&(c=r),qs(t,o,c)}}),Lr)}var Dr=Math.max;var fr=_s?function(t,e){return _s(t,"toString",{configurable:!0,enumerable:!1,value:(n=e,function(){return n}),writable:!0});var n}:oe,hr=fr,br=Date.now;var Nr=function(t){var e=0,n=0;return function(){var i=br(),s=16-(i-n);if(n=i,s>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(hr),xr=Nr;function Zr(t,e){return xr(function(t,e,n){return e=Dr(void 0===e?t.length-1:e,0),function(){for(var i=arguments,s=-1,r=Dr(i.length-e,0),o=Array(r);++s<r;)o[s]=i[e+s];s=-1;for(var c=Array(e+1);++s<e;)c[s]=i[s];return c[e]=n(o),function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}(t,this,c)}}(t,e,oe),t+"")}var Tr,Xr=(Tr=function(t,e,n){Cr(t,e,n)},Zr((function(t,e){var n=-1,i=e.length,s=i>1?e[i-1]:void 0,r=i>2?e[2]:void 0;for(s=Tr.length>3&&"function"==typeof s?(i--,s):void 0,r&&function(t,e,n){if(!x(n))return!1;var i=typeof e;return!!("number"==i?ne(n)&&zt(e,n.length):"string"==i&&e in n)&&O(n[e],t)}(e[0],e[1],r)&&(s=i<3?void 0:s,i=1),t=Object(t);++n<i;){var o=e[n];o&&Tr(t,o,n,s)}return t})));function Sr(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i={};if(Me(t)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),t=Cn()),!Zn(t,"emit"))throw new Error("instWConverServer is not an EventEmitter");let s=Dt(n,"fpTableTags","");ae(s)||(s="./tableTags.json");let r=Dt(n,"genTag");He(r)||(r=()=>Mn()+"|"+yn(6));let o=function(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];setTimeout((()=>{t.emit(e,...i)}),1)};function c(){let t={};try{if(e.existsSync(s)){let n=de(e.readFileSync(s,"utf8"));Me(n)&&(t=n)}}catch(t){o("error",{msg:"readTableTags catch",err:t})}return t}function l(){try{let t=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(Ie(t))return"";let n="";try{n=e?JSON.stringify(t,null,2):JSON.stringify(t)}catch(t){n=""}return n}(i);e.writeFileSync(s,t,"utf8")}catch(t){o("error",{msg:"writeTableTags catch",err:t})}}let a=Os((()=>{l(),o("changeTableTags",i)}),200);return t.readTableTags=c,t.writeTableTags=l,t.initTableTags=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"useInputFirst";if("useInputOnly"===e)i=t;else if("useStorageOnly"===e)i=c();else if("useInputFirst"===e)i=Xr(c(),t);else{if("useStorageFirst"!==e)throw new Error(`invalid mode[${e}]`);i=Xr(t,c())}l()},t.setTableTags=function(){i=Xr(i,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),l()},t.getTableTags=function(){return i},t.updateTableTag=function(t){i[t]=r(),a()},t}var Ar=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)hi(e,Xi(t)),t=Yn(t);return e}:xi,Yr=Ar;function vr(t){return bi(t,Lr,Yr)}var Gr=Object.prototype.hasOwnProperty;var Er=/\w*$/;var jr=d?d.prototype:void 0,zr=jr?jr.valueOf:void 0;var Kr="[object Boolean]",Wr="[object Date]",Vr="[object Map]",Hr="[object Number]",Qr="[object RegExp]",Ur="[object Set]",kr="[object String]",Jr="[object Symbol]",Rr="[object ArrayBuffer]",Pr="[object DataView]",Br="[object Float32Array]",Or="[object Float64Array]",Fr="[object Int8Array]",_r="[object Int16Array]",$r="[object Int32Array]",qr="[object Uint8Array]",to="[object Uint8ClampedArray]",eo="[object Uint16Array]",no="[object Uint32Array]";function io(t,e,n){var i,s=t.constructor;switch(e){case Rr:return rr(t);case Kr:case Wr:return new s(+t);case Pr:return function(t,e){var n=e?rr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case Br:case Or:case Fr:case _r:case $r:case qr:case to:case eo:case no:return or(t,n);case Vr:return new s;case Hr:case kr:return new s(t);case Qr:return function(t){var e=new t.constructor(t.source,Er.exec(t));return e.lastIndex=t.lastIndex,e}(t);case Ur:return new s;case Jr:return i=t,zr?Object(zr.call(i)):{}}}var so=Jt&&Jt.isMap,ro=so?Ht(so):function(t){return C(t)&&"[object Map]"==Bi(t)};var oo=Jt&&Jt.isSet,co=oo?Ht(oo):function(t){return C(t)&&"[object Set]"==Bi(t)},lo=1,ao=2,uo=4,Mo="[object Arguments]",wo="[object Function]",Io="[object GeneratorFunction]",yo="[object Object]",po={};function mo(t,e,n,i,s,r){var c,l=e&lo,a=e&ao,d=e&uo;if(n&&(c=s?n(t,i,s,r):n(t)),void 0!==c)return c;if(!x(t))return t;var u=o(t);if(u){if(c=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&Gr.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!l)return cr(t,c)}else{var M=Bi(t),w=M==wo||M==Io;if(Gt(t))return sr(t,l);if(M==yo||M==Mo||w&&!s){if(c=a||w?{}:ur(t),!l)return a?function(t,e){return yr(t,Yr(t),e)}(t,function(t,e){return t&&yr(e,Lr(e),t)}(c,t)):function(t,e){return yr(t,Xi(t),e)}(t,function(t,e){return t&&yr(e,ie(e),t)}(c,t))}else{if(!po[M])return s?t:{};c=io(t,M,l)}}r||(r=new $n);var I=r.get(t);if(I)return I;r.set(t,c),co(t)?t.forEach((function(i){c.add(mo(i,e,n,i,t,r))})):ro(t)&&t.forEach((function(i,s){c.set(s,mo(i,e,n,s,t,r))}));var y=u?void 0:(d?a?vr:Si:a?Lr:ie)(t);return ft(y||t,(function(i,s){y&&(i=t[s=i]),Ir(c,s,mo(i,e,n,s,t,r))})),c}po[Mo]=po["[object Array]"]=po["[object ArrayBuffer]"]=po["[object DataView]"]=po["[object Boolean]"]=po["[object Date]"]=po["[object Float32Array]"]=po["[object Float64Array]"]=po["[object Int8Array]"]=po["[object Int16Array]"]=po["[object Int32Array]"]=po["[object Map]"]=po["[object Number]"]=po[yo]=po["[object RegExp]"]=po["[object Set]"]=po["[object String]"]=po["[object Symbol]"]=po["[object Uint8Array]"]=po["[object Uint8ClampedArray]"]=po["[object Uint16Array]"]=po["[object Uint32Array]"]=!0,po["[object Error]"]=po[wo]=po["[object WeakMap]"]=!1;var Lo=1,go=4;function Co(t){return mo(t,Lo|go)}var Do="[object String]";var fo=us("length"),ho="\\ud800-\\udfff",bo="["+ho+"]",No="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",xo="\\ud83c[\\udffb-\\udfff]",Zo="[^"+ho+"]",To="(?:\\ud83c[\\udde6-\\uddff]){2}",Xo="[\\ud800-\\udbff][\\udc00-\\udfff]",So="(?:"+No+"|"+xo+")"+"?",Ao="[\\ufe0e\\ufe0f]?",Yo=Ao+So+("(?:\\u200d(?:"+[Zo,To,Xo].join("|")+")"+Ao+So+")*"),vo="(?:"+[Zo+No+"?",No,To,Xo,bo].join("|")+")",Go=RegExp(xo+"(?="+xo+")|"+vo+Yo,"g");function Eo(t){return Cs(t)?function(t){for(var e=Go.lastIndex=0;Go.test(t);)++e;return e}(t):fo(t)}var jo="[object Map]",zo="[object Set]";function Ko(t){if(null==t)return 0;if(ne(t))return"string"==typeof(e=t)||!o(e)&&C(e)&&g(e)==Do?Eo(t):t.length;var e,n=Bi(t);return n==jo||n==zo?t.size:ee(t).length}function Wo(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=Cn(),n={},i=null,s=Dt(t,"timeAlive");Ve(s)||(s=1e4),s=We(s);let r=Dt(t,"timeDetect");return Ve(r)||(r=50),r=We(r),e.trigger=function(t,o){ae(t)?(Zn(n,t)||setTimeout((()=>{e.emit("message",{eventName:"enter",key:t,data:o,now:Ko(n)})}),1),n[t]={data:o,time:Date.now()},null===i&&(i=setInterval((()=>{ce(n,((t,i)=>{if(Date.now()-t.time>s){let t=Co(n[i]);delete n[i],e.emit("message",{eventName:"leave",key:i,data:t.data,now:Ko(n)})}})),Me(n)||(clearInterval(i),i=null)}),r))):console.log("trigger need key")},e.get=function(){let t=[];return ce(n,((e,n)=>{t.push({key:n,data:e.data})})),t=Co(t),t},e}function Vo(t){let e={};if(Me(t)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),t=Cn()),!Zn(t,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=function(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];setTimeout((()=>{t.emit(e,...i)}),1)},i=Wo(),s=setInterval((()=>{let t=ys(i.get(),"key"),n={};ce(t,(t=>{n[t]=Dt(e,t,[])})),e=n}),1e3);i.on("message",(function(t){let{eventName:e,key:i,data:s,now:r}=t;"enter"===e?n("clientEnter",i,s):"leave"===e&&n("clientLeave",i,s),n("clientChange",r)})),t.on("execute",(function(t,s,r){if("[sys:polling]"===t)try{let t=Dt(s,"clientId",""),n=Dt(e,t,[]);n=Co(n),e[t]=[],i.trigger(t,s),r.resolve(n)}catch(t){n("error",t),r.reject("[sys:polling] error")}}));return t.getClients=i.get,t.getMessages=()=>Co(e),t.broadcast=t=>{if(!Me(e))return;let n={};ce(e,((e,i)=>{e.push({mode:"broadcast",data:t}),n[i]=e})),e=n},t.clearBroadcast=()=>{clearInterval(s)},t}let Ho=(t,e)=>{let n={};return ce(t,(t=>{let i=t,s=Dt(e,t,"");ae(s)&&(n[i]=s)})),n};function Qo(t,e,n){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!Me(t))throw new Error("invalid instWConverServer");if(0===Ko(e))return t;if(!Me(n))return t;let s=Dt(i,"genTag");He(s)||(s=()=>Mn()+"|"+yn(6));let r={};return ce(e,(t=>{r[t]=s()})),t.initTableTags(r,"useInputOnly"),ce(e,(e=>{let i=n[e];if(!i)throw new Error(`invalid kpOrm[${e}]`);try{i.on("change",(()=>{t.updateTableTag(e)}))}catch(t){throw new Error(`kpOrm[${e}] can not listen to change events`)}})),t.on("changeTableTags",(n=>{t.broadcast({mode:"syncKpTable",data:Ho(e,n)})})),t}function Uo(t,e,n,i){for(var s=n-1,r=t.length;++s<r;)if(i(t[s],e))return s;return-1}var ko=Array.prototype.splice;function Jo(t,e){return t&&t.length&&e&&e.length?function(t,e,n,i){var s=i?Uo:Ls,r=-1,o=e.length,c=t;for(t===e&&(e=cr(e)),n&&(c=ut(t,Ht(n)));++r<o;)for(var l=0,a=e[r],d=n?n(a):a;(l=s(c,d,l,i))>-1;)c!==t&&ko.call(c,l,1),ko.call(t,l,1);return t}(t,e):t}function Ro(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Me(t))throw new Error("invalid instWConverServer");let n=Dt(e,"getUserIdByToken",null);He(n)||(n=async()=>"");let i=Dt(e,"useDbOrm",null);mn(i)||(i=!1);let s=null;if(i&&(s=Dt(e,"operOrm",null),!He(s)))throw new Error("invalid opt.operOrm when useDbOrm=true");let r=[];if(i&&(r=Dt(e,"tableNames",null),!we(r)))throw new Error("invalid opt.tableNames when useDbOrm=true");let o=[];i&&(o=Dt(e,"methods",null),we(o)||(o=["select","insert","save","del"]));let c=Dt(e,"kpFunExt",null);let l={};async function a(t,e,i){if(!ae(t))return i.resolve({state:"error",msg:"invalid func"}),i;let s="";if(!Zn(e,"__sysToken__"))return i.resolve({state:"error",msg:"invalid token"}),i;if(s=Nn(e.__sysToken__),!Zn(e,"__sysInputArgs__"))return i.resolve({state:"error",msg:"invalid input"}),i;e=e.__sysInputArgs__;let r="";if(r=n(s),Qe(r)&&(r=await r),ae(r)||(r=""),"[sys:getFuncList]"===t){let t=ie(l);t=function(t,e){if(!Le(t))return[];if((ue(e)||Ye(e)||le(e)||mn(e))&&(e=[e]),!Le(e))return t;let n=Co(t);return Jo(n,e),n}(t,"[sys:getTableTags]");let e={state:"success",msg:t};return i.resolve(e),i}if(!Zn(l,t))return i.resolve({state:"error",msg:`invalid func[${t}]`}),i;let o=l[t];try{let t=await Pe(o)(r,...e);i.resolve(t)}catch(e){i.resolve({state:"error",msg:`call func[${t}] has an error: ${e.message}`})}return i}return i&&(r=Co(r),l=function(t,e,n){let i={};return ce(t,(t=>{ce(e,(e=>{i[`${t}.${e}`]=async function(i,s){return await n(i,t,e,s)}}))})),i}(r,o,s)),Me(c)&&ce(c,((t,e)=>{l[e]=t})),t.on("execute",(async function(e,n,i){await a(e,n,i).catch((n=>{t.emit("error",n),i.resolve({state:"error",msg:`execFun func[${e}] has an error: ${n.message}`})}))})),t}function Po(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Me(t)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),t=Cn()),!Zn(t,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=Dt(e,"fpTableTags",null);ae(n)||(n="./tableTags.json");let i=Dt(e,"genTag");He(i)||(i=()=>Mn()+"|"+yn(6)),t=new Vo(t=new Sr(t,{fpTableTags:n,genTag:i}));let s=Dt(e,"useDbOrm",null);mn(s)||(s=!0);let r=Dt(e,"kpOrm",null),o=Dt(e,"operOrm",null),c=Dt(e,"tableNamesExec",null),l=Dt(e,"methodsExec",null),a=Dt(e,"tableNamesSync",null),d=Dt(e,"getUserIdByToken",null),u=Dt(e,"kpFunExt",null);if(Me(u)||(u={}),u={...u,"[sys:getTableTags]":()=>{let e=t.getTableTags();return{mode:"syncKpTable",data:Ho(a,e)}}},t=new Ro(t,{getUserIdByToken:d,useDbOrm:s,operOrm:o,tableNames:c,methods:l,kpFunExt:u}),s){if(!ue(r))return t.emit("error","invalid opt.kpOrm when useDbOrm=true"),t;t=new Qo(t,a,r,{genTag:i})}return t}function Bo(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=Cn(),s=null,r=null,o=Dt(t,"port");Ge(o)||(o=8080);let c=Dt(t,"corsOrigins",[]);Le(c)||(c=["http://localhost"]);let l=Dt(t,"useInert");mn(l)||(l=!0);let a=Dt(t,"pathStaticFiles");ae(a)||(a="dist");let d=Dt(t,"apis");Le(d)||(d=[]);let u=Dt(t,"apiName");ae(u)||(u="api");let M=Dt(t,"pathUploadTemp");ae(M)||(M="./uploadTemp"),on(M)||fn(M);let w=Dt(t,"tokenType");ae(w)||(w="Bearer");let I=Dt(t,"sizeSlice");Ve(I)||(I=1048576);let y=Dt(t,"verifyConn");He(y)||(y=()=>!0);let p=Dt(t,"getUserIdByToken",null),m=Dt(t,"useDbOrm",null);mn(m)||(m=!0);let L=Dt(t,"kpOrm",null),g=Dt(t,"operOrm",null),C=Dt(t,"tableNamesExec",null),D=Dt(t,"methodsExec",null),f=Dt(t,"tableNamesSync",null),h=Dt(t,"kpFunExt",null),b=Dt(t,"fnTableTags",null),N=Dt(t,"genTag");He(N)||(N=()=>Mn()+"|"+yn(6));let x=Dt(t,"showLog");mn(x)||(x=!0);(async()=>{await(async()=>{s=new n.Server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:c,credentials:!1}}}),l&&await s.register(i);let t=[];l&&(t=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${a}/`}}}]),t=[...t,...d],s.route(t)})(),await(async()=>{r=new ks({serverHapi:s,apiName:u,pathUploadTemp:M,tokenType:w,sizeSlice:I,verifyConn:y,corsOrigins:c}),r.on("open",(function(){x&&console.log(`Server[port:${o}]: open`)})),r.on("clientChange",(function(t){x&&console.log(`Server[port:${o}]: now clients: ${t}`)}))})(),await(async()=>{r=new Po(r,{getUserIdByToken:p,useDbOrm:m,kpOrm:L,operOrm:g,tableNamesExec:C,tableNamesSync:f,methodsExec:D,kpFunExt:h,fnTableTags:b,genTag:N}),r.on("error",(t=>{e.emit("error",t)}))})(),await s.start(),x&&console.log(`Server running at: ${s.info.uri}`)})().catch((t=>{e.emit("error",t)})),process.on("unhandledRejection",(t=>{console.log("unhandledRejection",t),e.emit("error",{mode:"unhandledRejection",err:t})})),process.on("uncaughtException",(t=>{console.log("uncaughtException",t),e.emit("error",{mode:"uncaughtException",err:t})}));return e.getServer=async()=>(await Dn((()=>null!==s)),s),e.getInstWConverServer=async()=>(await Dn((()=>null!==r)),r),e}function Oo(t,e){let n=Re();if(!we(t)&&!ue(t))return n.reject("rs is not an array or object"),n;let i=!1;if(ue(t)){i=!0;let e=[];ce(t,((t,n)=>{e.push({k:n,v:t})})),t=e}He(e)||(e=function(t){return t});let s=-1,r=[];return t.reduce((function(t,n){return t.then((function(t){r.push(t),s+=1;let o=s,c=n;return i&&(o=n.k,c=n.v),He(e)?e(c,o):c}))}),Promise.resolve()).then((function(t){var e,i,s,o;r.push(t),o=null==(e=r)?0:e.length,r=o?ps(e,(i=s||void 0===i?1:Ae(i))<0?0:i,o):[],n.resolve(r)})).catch((function(t){n.reject(t)})),n}let Fo={backup:async function(t){return await Oo(t,(async(t,e)=>(console.log("backup...",e),{name:e,data:await t.select()})))},recover:async function(t,n,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!ln(t))throw console.log("fp",t),new Error("fp is not exist");if(!Me(n))throw console.log("woItems",n),new Error("invalid woItems");He(i)||(i=null),mn(s)||(s=!1);let r=e.readFileSync(t,"utf8");r=Gs(r);let o=de(r);He(i)&&i(),await Oo(o,(async t=>{console.log("recover...",t.name),s&&(console.log("needCreateStorage"),await n[t.name].createStorage());let e=null;return Ko(t.data)>0&&(e=await n[t.name].insert(t.data)),e}))}};function _o(){if(!He(un))throw new Error("invalid dayjs");return un().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}var $o={},qo={get exports(){return $o},set exports(t){$o=t}},tc={},ec={},nc={get exports(){return ec},set exports(t){ec=t}},ic={};function sc(){var t={"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 t}var rc=/javascript\s*\:/gim;ic.whiteList=sc(),ic.getDefaultWhiteList=sc,ic.onAttr=function(t,e,n){},ic.onIgnoreAttr=function(t,e,n){},ic.safeAttrValue=function(t,e){return rc.test(e)?"":e};var oc={indexOf:function(t,e){var n,i;if(Array.prototype.indexOf)return t.indexOf(e);for(n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1},forEach:function(t,e,n){var i,s;if(Array.prototype.forEach)return t.forEach(e,n);for(i=0,s=t.length;i<s;i++)e.call(n,t[i],i,t)},trim:function(t){return String.prototype.trim?t.trim():t.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(t){return String.prototype.trimRight?t.trimRight():t.replace(/(\s*$)/g,"")}};var cc=function(t,e){";"!==(t=oc.trimRight(t))[t.length-1]&&(t+=";");var n=t.length,i=!1,s=0,r=0,o="";function c(){if(!i){var n=oc.trim(t.slice(s,r)),c=n.indexOf(":");if(-1!==c){var l=oc.trim(n.slice(0,c)),a=oc.trim(n.slice(c+1));if(l){var d=e(s,o.length,l,a,n);d&&(o+=d+"; ")}}}s=r+1}for(;r<n;r++){var l=t[r];if("/"===l&&"*"===t[r+1]){var a=t.indexOf("*/",r+2);if(-1===a)break;s=(r=a+1)+1,i=!1}else"("===l?i=!0:")"===l?i=!1:";"===l?i||c():"\n"===l&&c()}return oc.trim(o)},lc=ic,ac=cc;function dc(t){return null==t}function uc(t){(t=function(t){var e={};for(var n in t)e[n]=t[n];return e}(t||{})).whiteList=t.whiteList||lc.whiteList,t.onAttr=t.onAttr||lc.onAttr,t.onIgnoreAttr=t.onIgnoreAttr||lc.onIgnoreAttr,t.safeAttrValue=t.safeAttrValue||lc.safeAttrValue,this.options=t}uc.prototype.process=function(t){if(!(t=(t=t||"").toString()))return"";var e=this.options,n=e.whiteList,i=e.onAttr,s=e.onIgnoreAttr,r=e.safeAttrValue;return ac(t,(function(t,e,o,c,l){var a=n[o],d=!1;if(!0===a?d=a:"function"==typeof a?d=a(c):a instanceof RegExp&&(d=a.test(c)),!0!==d&&(d=!1),c=r(o,c)){var u,M={position:e,sourcePosition:t,source:l,isWhite:d};return d?dc(u=i(o,c,M))?o+":"+c:u:dc(u=s(o,c,M))?void 0:u}}))};var Mc=uc;!function(t,e){var n=ic,i=Mc;for(var s in(e=t.exports=function(t,e){return new i(e).process(t)}).FilterCSS=i,n)e[s]=n[s];"undefined"!=typeof window&&(window.filterCSS=t.exports)}(nc,ec);var wc={indexOf:function(t,e){var n,i;if(Array.prototype.indexOf)return t.indexOf(e);for(n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1},forEach:function(t,e,n){var i,s;if(Array.prototype.forEach)return t.forEach(e,n);for(i=0,s=t.length;i<s;i++)e.call(n,t[i],i,t)},trim:function(t){return String.prototype.trim?t.trim():t.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(t){var e=/\s|\n|\t/.exec(t);return e?e.index:-1}},Ic=ec.FilterCSS,yc=ec.getDefaultWhiteList,pc=wc;function mc(){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 Lc=new Ic;function gc(t){return t.replace(Cc,"<").replace(Dc,">")}var Cc=/</g,Dc=/>/g,fc=/"/g,hc=/"/g,bc=/&#([a-zA-Z0-9]*);?/gim,Nc=/:?/gim,xc=/&newline;?/gim,Zc=/((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,Tc=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,Xc=/u\s*r\s*l\s*\(.*/gi;function Sc(t){return t.replace(fc,""")}function Ac(t){return t.replace(hc,'"')}function Yc(t){return t.replace(bc,(function(t,e){return"x"===e[0]||"X"===e[0]?String.fromCharCode(parseInt(e.substr(1),16)):String.fromCharCode(parseInt(e,10))}))}function vc(t){return t.replace(Nc,":").replace(xc," ")}function Gc(t){for(var e="",n=0,i=t.length;n<i;n++)e+=t.charCodeAt(n)<32?" ":t.charAt(n);return pc.trim(e)}function Ec(t){return t=Gc(t=vc(t=Yc(t=Ac(t))))}function jc(t){return t=gc(t=Sc(t))}tc.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"]},tc.getDefaultWhiteList=mc,tc.onTag=function(t,e,n){},tc.onIgnoreTag=function(t,e,n){},tc.onTagAttr=function(t,e,n){},tc.onIgnoreTagAttr=function(t,e,n){},tc.safeAttrValue=function(t,e,n,i){if(n=Ec(n),"href"===e||"src"===e){if("#"===(n=pc.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"===e){if(Zc.lastIndex=0,Zc.test(n))return""}else if("style"===e){if(Tc.lastIndex=0,Tc.test(n))return"";if(Xc.lastIndex=0,Xc.test(n)&&(Zc.lastIndex=0,Zc.test(n)))return"";!1!==i&&(n=(i=i||Lc).process(n))}return n=jc(n)},tc.escapeHtml=gc,tc.escapeQuote=Sc,tc.unescapeQuote=Ac,tc.escapeHtmlEntities=Yc,tc.escapeDangerHtml5Entities=vc,tc.clearNonPrintableCharacter=Gc,tc.friendlyAttrValue=Ec,tc.escapeAttrValue=jc,tc.onIgnoreTagStripAll=function(){return""},tc.StripTagBody=function(t,e){"function"!=typeof e&&(e=function(){});var n=!Array.isArray(t),i=[],s=!1;return{onIgnoreTag:function(r,o,c){if(function(e){return!!n||-1!==pc.indexOf(t,e)}(r)){if(c.isClosing){var l="[/removed]",a=c.position+l.length;return i.push([!1!==s?s:c.position,a]),s=!1,l}return s||(s=c.position),"[removed]"}return e(r,o,c)},remove:function(t){var e="",n=0;return pc.forEach(i,(function(i){e+=t.slice(n,i[0]),n=i[1]})),e+=t.slice(n)}}},tc.stripCommentTag=function(t){for(var e="",n=0;n<t.length;){var i=t.indexOf("\x3c!--",n);if(-1===i){e+=t.slice(n);break}e+=t.slice(n,i);var s=t.indexOf("--\x3e",i);if(-1===s)break;n=s+3}return e},tc.stripBlankChar=function(t){var e=t.split("");return(e=e.filter((function(t){var e=t.charCodeAt(0);return 127!==e&&(!(e<=31)||(10===e||13===e))}))).join("")},tc.attributeWrapSign='"',tc.cssFilter=Lc,tc.getDefaultCSSWhiteList=yc;var zc={},Kc=wc;function Wc(t){var e,n=Kc.spaceIndex(t);return e=-1===n?t.slice(1,-1):t.slice(1,n+1),"/"===(e=Kc.trim(e).toLowerCase()).slice(0,1)&&(e=e.slice(1)),"/"===e.slice(-1)&&(e=e.slice(0,-1)),e}function Vc(t){return"</"===t.slice(0,2)}var Hc=/[^a-zA-Z0-9\\_:.-]/gim;function Qc(t,e){for(;e<t.length;e++){var n=t[e];if(" "!==n)return"="===n?e:-1}}function Uc(t,e){for(;e<t.length;e++){var n=t[e];if(" "!==n)return"'"===n||'"'===n?e:-1}}function kc(t,e){for(;e>0;e--){var n=t[e];if(" "!==n)return"="===n?e:-1}}function Jc(t){return function(t){return'"'===t[0]&&'"'===t[t.length-1]||"'"===t[0]&&"'"===t[t.length-1]}(t)?t.substr(1,t.length-2):t}zc.parseTag=function(t,e,n){var i="",s=0,r=!1,o=!1,c=0,l=t.length,a="",d="";t:for(c=0;c<l;c++){var u=t.charAt(c);if(!1===r){if("<"===u){r=c;continue}}else if(!1===o){if("<"===u){i+=n(t.slice(s,c)),r=c,s=c;continue}if(">"===u||c===l-1){i+=n(t.slice(s,r)),a=Wc(d=t.slice(r,c+1)),i+=e(r,i.length,a,d,Vc(d)),s=c+1,r=!1;continue}if('"'===u||"'"===u)for(var M=1,w=t.charAt(c-M);""===w.trim()||"="===w;){if("="===w){o=u;continue t}w=t.charAt(c-++M)}}else if(u===o){o=!1;continue}}return s<l&&(i+=n(t.substr(s))),i},zc.parseAttr=function(t,e){var n=0,i=0,s=[],r=!1,o=t.length;function c(t,n){if(!((t=(t=Kc.trim(t)).replace(Hc,"").toLowerCase()).length<1)){var i=e(t,n||"");i&&s.push(i)}}for(var l=0;l<o;l++){var a,d=t.charAt(l);if(!1!==r||"="!==d)if(!1===r||l!==i)if(/\s|\n|\t/.test(d)){if(t=t.replace(/\s|\n|\t/g," "),!1===r){if(-1===(a=Qc(t,l))){c(Kc.trim(t.slice(n,l))),r=!1,n=l+1;continue}l=a-1;continue}if(-1===(a=kc(t,l-1))){c(r,Jc(Kc.trim(t.slice(n,l)))),r=!1,n=l+1;continue}}else;else{if(-1===(a=t.indexOf(d,l+1)))break;c(r,Kc.trim(t.slice(i+1,a))),r=!1,n=(l=a)+1}else r=t.slice(n,l),n=l+1,i='"'===t.charAt(n)||"'"===t.charAt(n)?n:Uc(t,l+1)}return n<t.length&&(!1===r?c(t.slice(n)):c(r,Jc(Kc.trim(t.slice(n))))),Kc.trim(s.join(" "))};var Rc=ec.FilterCSS,Pc=tc,Bc=zc,Oc=Bc.parseTag,Fc=Bc.parseAttr,_c=wc;function $c(t){return null==t}function qc(t){(t=function(t){var e={};for(var n in t)e[n]=t[n];return e}(t||{})).stripIgnoreTag&&(t.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),t.onIgnoreTag=Pc.onIgnoreTagStripAll),t.whiteList||t.allowList?t.whiteList=function(t){var e={};for(var n in t)Array.isArray(t[n])?e[n.toLowerCase()]=t[n].map((function(t){return t.toLowerCase()})):e[n.toLowerCase()]=t[n];return e}(t.whiteList||t.allowList):t.whiteList=Pc.whiteList,this.attributeWrapSign=!0===t.singleQuotedAttributeValue?"'":Pc.attributeWrapSign,t.onTag=t.onTag||Pc.onTag,t.onTagAttr=t.onTagAttr||Pc.onTagAttr,t.onIgnoreTag=t.onIgnoreTag||Pc.onIgnoreTag,t.onIgnoreTagAttr=t.onIgnoreTagAttr||Pc.onIgnoreTagAttr,t.safeAttrValue=t.safeAttrValue||Pc.safeAttrValue,t.escapeHtml=t.escapeHtml||Pc.escapeHtml,this.options=t,!1===t.css?this.cssFilter=!1:(t.css=t.css||{},this.cssFilter=new Rc(t.css))}qc.prototype.process=function(t){if(!(t=(t=t||"").toString()))return"";var e=this,n=e.options,i=n.whiteList,s=n.onTag,r=n.onIgnoreTag,o=n.onTagAttr,c=n.onIgnoreTagAttr,l=n.safeAttrValue,a=n.escapeHtml,d=e.attributeWrapSign,u=e.cssFilter;n.stripBlankChar&&(t=Pc.stripBlankChar(t)),n.allowCommentTag||(t=Pc.stripCommentTag(t));var M=!1;n.stripIgnoreTagBody&&(M=Pc.StripTagBody(n.stripIgnoreTagBody,r),r=M.onIgnoreTag);var w=Oc(t,(function(t,e,n,M,w){var I={sourcePosition:t,position:e,isClosing:w,isWhite:Object.prototype.hasOwnProperty.call(i,n)},y=s(n,M,I);if(!$c(y))return y;if(I.isWhite){if(I.isClosing)return"</"+n+">";var p=function(t){var e=_c.spaceIndex(t);if(-1===e)return{html:"",closing:"/"===t[t.length-2]};var n="/"===(t=_c.trim(t.slice(e+1,-1)))[t.length-1];return n&&(t=_c.trim(t.slice(0,-1))),{html:t,closing:n}}(M),m=i[n],L=Fc(p.html,(function(t,e){var i=-1!==_c.indexOf(m,t),s=o(n,t,e,i);return $c(s)?i?(e=l(n,t,e,u))?t+"="+d+e+d:t:$c(s=c(n,t,e,i))?void 0:s:s}));return M="<"+n,L&&(M+=" "+L),p.closing&&(M+=" /"),M+=">"}return $c(y=r(n,M,I))?a(M):y}),a);return M&&(w=M.remove(w)),w};var tl=qc;!function(t,e){var n=tc,i=zc,s=tl;function r(t,e){return new s(e).process(t)}(e=t.exports=r).filterXSS=r,e.FilterXSS=s,function(){for(var t in n)e[t]=n[t];for(var s in i)e[s]=i[s]}(),"undefined"!=typeof window&&(window.filterXSS=t.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=t.exports)}(qo,$o);var el=$o;function nl(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}function il(t){let e=function(){let t=nl();return el||t.xss}();let n=function t(n){return we(n)||ue(n)?(ce(n,(function(e,i){n[i]=t(e)})),n):ae(n)?e(n,{onIgnoreTagAttr:function(t,n,i,s){if("style"===n)return n+'="'+e.escapeAttrValue(i)+'"'}}):n}(Co(t));return n}let sl=null,rl=null;function ol(t,e,n){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"save";if(!Me(sl))throw console.log("ds",sl),new Error("invalid ds");let s=sl[t].keys,r=!1;we(n)||(r=!0,n=[n]);let o=_o();return i.indexOf("insert")>=0&&(s.indexOf("userId")>=0&&ce(n,((t,i)=>{n[i].userId=e})),s.indexOf("timeCreate")>=0&&ce(n,((t,e)=>{n[e].timeCreate=o})),s.indexOf("userIdUpdate")>=0&&ce(n,((t,i)=>{n[i].userIdUpdate=e})),s.indexOf("timeUpdate")>=0&&ce(n,((t,e)=>{n[e].timeUpdate=o}))),(i.indexOf("insert")>=0||i.indexOf("save")>=0)&&(s.indexOf("userIdUpdate")>=0&&ce(n,((t,i)=>{n[i].userIdUpdate=e})),s.indexOf("timeUpdate")>=0&&ce(n,((t,e)=>{n[e].timeUpdate=o}))),n=ys(n,((t,e)=>{let n={};return ce(t,((t,e)=>{t=il(t),n[e]=t})),n})),n=r?n[0]:n}async function cl(t,e,n,i){let s,r=null;if(!Me(rl))return Promise.reject("無有效woItems");let o=Dt(rl,e,null);if(null===o)return Promise.reject(`ORM找不到表名稱: ${e}`);if("select"===n){if(s=await o.select(i).catch((t=>{console.log(`${e}.select catch`,t),r="取得資料失敗"})),ae(r))return Promise.reject(r)}else if("insert"===n||"save"===n){try{i=ol(e,t,i,n)}catch(t){return console.log("adjustData catch",t.toString()),r="調整資料失敗",Promise.reject(r)}if("insert"===n?s=await o.insert(i).catch((t=>{console.log(`${e}.save catch`,t),r="新增資料失敗"})):"save"===n&&(s=await o.save(i).catch((t=>{console.log(`${e}.save catch`,t),r="儲存資料失敗"}))),ae(r))return Promise.reject(r);s=we(i)?ys(i,(t=>({id:t.id}))):{id:i.id}}else if("del"===n)s=await o.del(i).catch((t=>{console.log(`${e}.del catch`,t),r="刪除資料失敗"}));else if("delAll"===n)s=await o.delAll(i).catch((t=>{console.log(`${e}.delAll catch`,t),r="刪除資料失敗"}));else if("mix"===n){if(!Me(i))return Promise.reject("mix僅支援輸入ltdtDiffByKey結果物件");let n;s=[];let c=Dt(i,"add",[]);if(Ko(c)>0){try{c=ol(e,t,c,"insert+save")}catch(t){return console.log("adjustData catch",t.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.insert(c).catch((t=>{console.log(`${e}.save catch`,t),r="新增資料失敗"})),ae(r))return Promise.reject(r);n=ys(c,(t=>({id:t.id}))),s=[...s,...n]}let l=Dt(i,"del",[]);if(Ko(l)>0){if(await o.del(l).catch((t=>{console.log(`${e}.save catch`,t),r="刪除資料失敗"})),ae(r))return Promise.reject(r);n=ys(l,(t=>({id:t.id}))),s=[...s,...n]}let a=Dt(i,"diff",[]);if(Ko(a)>0){try{a=ol(e,t,a)}catch(t){return console.log("adjustData catch",t.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.save(a).catch((t=>{console.log(`${e}.save catch`,t),r="變更資料失敗"})),ae(r))return Promise.reject(r);n=ys(a,(t=>({id:t.id}))),s=[...s,...n]}}else r=`invalid mode: ${n}`;return ae(r)?Promise.reject(r):s}function ll(t,e){return sl=t,rl=e,cl}function al(t,e){var n=[];return re(t,(function(t,i,s){e(t,i,s)&&n.push(t)})),n}function dl(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!we(t)){let t=Re();return t.reject("pms is not an array"),t}return t.reduce(((t,e)=>t.then(e)),Promise.resolve(e))}let ul=[],Ml=[],wl=[],Il=null,yl=null,pl=!0,ml=!0;function Ll(t){setTimeout((()=>{ul.push(t)}),1)}function gl(t){setTimeout((()=>{Ml.push(t)}),1)}function Cl(t){setTimeout((()=>{wl.push(t)}),1)}async function Dl(t,e,n,i){if(!He(Il))return Promise.reject("invalid mapOrm");if(pl&&!ae(t))return console.log("userId",t),console.log("找不到使用者主鍵"),Promise.reject("找不到使用者主鍵");let s="n";if(pl){if(!He(yl))return Promise.reject("invalid getUserById");let e=await yl(t);if(!e)return console.log("userId",t),console.log("找不到使用者資訊"),Promise.reject("找不到使用者資訊");s=Dt(e,"isAdmin"),"y"!==s&&"n"!==s&&(s="n");let n=Dt(e,"isActive");if("y"!==n&&"n"!==n&&(n="n"),"y"!==n)return console.log("userId",t),console.log("oSelf",e),console.log("使用者被停權或無有效使用者資訊"),Promise.reject("使用者被停權或無有效使用者資訊")}if(await Oo(ul,(r=>r({woName:e,userId:t,isAdmin:s,mode:n,input:i}))),Ko(Ml)>0){let r={woName:e,userId:t,isAdmin:s,mode:n,input:i},o=await dl(Ml,r);i=o.input}let r=await Il(t,e,n,i);var c,l;return ml&&"n"===s&&"select"===n&&we(r)&&(l=t=>!(Zn(t,"isActive")&&"n"===t.isActive),r=(o(c=r)?Ni:al)(c,ws(l))),Ko(wl)>0&&(r=await dl(wl,{woName:e,userId:t,isAdmin:s,mode:n,input:i,output:r})),r}function fl(t,e,n,i){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},r=function(t,e,n,i){if(!Me(t))throw console.log("ds",t),new Error("invalid ds");if(!He(e))throw console.log("WOrm",e),new Error("invalid WOrm");if(!ae(n))throw console.log("url",n),new Error("invalid url");if(!ae(i))throw console.log("db",i),new Error("invalid db");let s={};return ce(ie(t),(t=>{let r=new e({url:n,db:i,cl:t});s[t]=r})),s}(t,e,n,i),o=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return He(t)?(Il=t,pl=Dt(e,"useCheckUser"),mn(pl)||(pl=!0),yl=Dt(e,"getUserById"),ml=Dt(e,"useExcludeWhenNotAdmin"),mn(ml)||(ml=!0),{addFunCheck:Ll,addFunPreProcessing:gl,addFunPostProcessing:Cl,procOrm:Dl}):Promise.reject("invalid mapOrm")}(ll(t,r),s);return{...Fo,woItems:r,...o}}function hl(t){return t.indexOf("\\\\")>=0?"```"+t+"```":t}let bl={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"},timeCreate:{name:"創建時間",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},Nl=function(){let t=function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(!Le(e))return{};let i={};return ce(e,(function(e){i[e]=Dt(t,e,n)})),i}(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},ie(bl));return t.id=`${_n()}-${yn()}`,t.timeCreate=_o(),t.timeUpdate=t.timeCreate,t.isActive="y",t},xl={keyTable:"apis",tableNameCht:"APIs",tableNameEng:"APIs",settings:bl,funNew:Nl,funTest:()=>{let t=ys([{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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 | ${hl("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 '}],((t,e)=>{let n=Nl({...t,order:e});return n.id=t.id,ae(t.timeUpdate)&&(n.timeUpdate=t.timeUpdate),n=function(t,e){if(!ue(t))return{};if(!Le(e))return{};let n={};return ce(e,(function(e){Zn(t,e)&&(n[e]=Dt(t,e))})),n}(n,ie(bl)),n}));return console.log("已產生: {keyTable} 測試資料",t),t}};function Zl(t){let e=Dt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},"useCreateStorage");mn(e)||(e=!1);let{keyTable:n,tableNameCht:i,tableNameEng:s,settings:r,parser:o,funNew:c,funTest:l,ext:a}=t;if(!ae(n))throw new Error(`invalid keyTable[${n}]`);if(ae(i)||(i=n),ae(s)||(s=n),!Me(r))throw new Error("invalid settings");Me(a)||(a=null),Me(o)||(o=null),He(c)||(c=null);let d=null;He(l)&&(d=async t=>{if(!Me(t))throw new Error("invalid wo");if(!Zn(t,n))throw console.log(t),new Error(`keyTable[${n}] is not in wo`);let i=[];try{i=l(),Qe(i)&&(i=await i)}catch(t){throw console.log(`keyTable[${n}] funTest catch`,t),new Error(t)}if(0!==Ko(i))return e&&await t[n].createStorage(),await t[n].save(i),i});let u={},M={};return ce(ie(r),(t=>{let e=Dt(r,`${t}.name`,"");ae(e)&&(u[t]=e);let n=Dt(r,`${t}.type`,"");ae(n)&&(M[t]=n)})),{...t,keyTable:n,tableNameCht:i,tableNameEng:s,settings:r,keys:ie(r),kpType:M,kpHead:u,parser:o,funNew:c,funTest:l,funTestAndSave:d,ext:a}}let Tl={apis:xl},Xl={};for(let t in Tl)Xl[t]=Zl(Tl[t],{useCreateStorage:!1});return function(n,i,s,r,o,c){let l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{},a=null;if(!He(n))throw console.log("invalid WOrm",n),new Error("invalid WOrm");if(!ae(i))throw console.log("invalid url",i),new Error("invalid url");if(!ae(s))throw console.log("invalid db",s),new Error("invalid db");if(!He(r))throw console.log("invalid getUserByToken",r),new Error("invalid getUserByToken");if(!He(o))throw console.log("invalid verifyClientUser",o),new Error("invalid verifyClientUser");if(!He(c))throw console.log("invalid verifyAppUser",c),new Error("invalid verifyAppUser");let d=Dt(l,"serverPort");Ve(d)||(d=11005),d=We(d);let u=Dt(l,"useCheckUser",!1),M=Dt(l,"getUserById",null),w=Dt(l,"useExcludeWhenNotAdmin",!1),I=Dt(l,"webName",{}),y=Dt(l,"webDescription",{}),p=Dt(l,"webLogo",""),m=Dt(l,"subfolder","");var L,g;ae(m)&&("/"===Je(m,1)&&(g=1,m=ae(L=m)&&Ue(g)?0===(g=We(g))?L:ke(L,L.length-g):""),"/"!==ke(m,1)&&(m=`/${m}`));let C=Dt(l,"urlRedirect",""),D={useCheckUser:u,getUserById:M,useExcludeWhenNotAdmin:w},f={};try{f=fl(Xl,n,i,s,D)}catch(t){console.log(t)}let{woItems:h,procOrm:b}=f,N=t=>({webName:I,webDescription:y,webLogo:p}),x=async t=>{let e=r(t);return Qe(e)&&(e=await e),Me(e)?e:(console.log("token",t),console.log("can not find the user from token"),Promise.reject("can not find the user from token"))},Z=async function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=await x(t),i=o(n,e);return Qe(i)&&(i=await i),i?n:(console.log("userSelf",n),console.log("user does not have permission"),Promise.reject("user does not have permission"))},T=async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return await h.apis.select(t)},X=async t=>{let e=Dt(t,"payload");if(ae(e)&&(e=de(e)),!Me(e))return console.log("inp",e),console.log("invalid inp from req"),Promise.reject("invalid inp from req");let n=Dt(e,"group","");if(!ae(n))return console.log("inp",e),console.log("group",n),console.log("invalid group from inp"),Promise.reject("invalid group from inp");let i=Dt(e,"apis",[]);return Le(i)?(ce(i,((t,e)=>{ce(t,((t,n)=>{ae(t)&&"base64:"===ke(t,7)&&(t=function(t,e){return ae(t)&&Ue(e)?0===(e=We(e))?t:Je(t,t.length-e):""}(t,7),t=sn(t),i[e][n]=t)}))})),ce(i,((t,e)=>{i[e].group=n})),e={group:n,apis:i},e):(console.log("inp",e),console.log("apis",i),console.log("invalid apis from inp"),Promise.reject("invalid apis from inp"))},S="dist",A="./node_modules/w-web-api/dist";on(A)&&(S=A);let Y="index.html";try{let n=t.resolve(S,"index.tmp");if(ln(n)||(n=t.resolve(S,Y)),!ln(n))throw console.log("fpEntryIn",n),new Error("invalid fpEntryIn");let i=t.resolve(S,Y),s=e.readFileSync(n,"utf8");s=an(s,"/mapi/","{sfd}/"),s=an(s,"{sfd}",m),s=an(s,"{urlRedirect}",C),e.writeFileSync(i,s,"utf8")}catch(t){console.log(t),console.log(`can not generate ${Y}`)}let v=[{method:"GET",path:"/getWebInfor",handler:async function(t,e){return N()}},{method:"GET",path:"/api/getUserByToken",handler:async function(t,e){return await Pe((async function(){let e=Dt(t,"query.token",""),n=await Z(e,"getUserByToken");return Me(n)?n:(console.log("token",e),console.log("[API]getUserByToken/check user: invalid user"),console.log("token does not have permission"),Promise.reject("token does not have permission"))}))()}},{method:"GET",path:"/getAPIsList",handler:async function(t,e){return await Pe((async function(){let e=Dt(t,"query.token","");return Me(await Z(e,"getAPIsList"))?await T({isActive:"y"}):(console.log("token",e),console.log("[API]getAPIsList/check user: invalid user"),console.log("token does not have permission"),Promise.reject("token does not have permission"))}))()}},{method:"POST",path:"/updateAPIs",handler:async function(t,e){let n=await Pe((async function(){let e=Dt(t,"query.token","");if(!Me(await Z(e,"updateAPIs")))return console.log("token",e),console.log("[API]updateAPIs/check user: invalid user"),console.log("token does not have permission"),Promise.reject("token does not have permission");let n=await X(t),i=await async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{apis:e}=t;return await h.apis.save(e)}(n);return i}))();return n}},{method:"POST",path:"/syncAndReplaceApis",handler:async function(t,e){let n=await Pe((async function(){let e=Dt(t,"query.token",""),n=await async function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=await x(t),i=c(n,e);return Qe(i)&&(i=await i),i?n:(console.log("userSelf",n),console.log("user does not have permission"),Promise.reject("user does not have permission"))}(e,"syncAndReplaceApis");if(!Me(n))return console.log("token",e),console.log("[API]syncAndReplaceApis/check user: invalid user"),console.log("token does not have permission"),Promise.reject("token does not have permission");let i=await X(t),s=await(async t=>{let e=Dt(t,"group","");if(!ae(e))return console.log("params",t),console.log("group",e),console.log("invalid group"),Promise.reject("invalid group");let n=Dt(t,"apis",[]);return Le(n)?(await h.apis.delAll({group:e}),await h.apis.insert(n)):(console.log("params",t),console.log("apis",n),console.log("invalid apis"),Promise.reject("invalid apis"))})(i);return s}))();return n}}],G=ie(Xl),E=G;return a=new Bo({port:l.serverPort,pathStaticFiles:S,apis:v,getUserIdByToken:async t=>"",useDbOrm:!0,kpOrm:h,operOrm:b,tableNamesExec:G,methodsExec:["select","insert","save","del"],tableNamesSync:E,kpFunExt:{getWebInfor:N,getAPIsList:function(t){return T(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})}},fnTableTags:"tableTags-web-api.json"}),a}}));
|
|
7
7
|
//# sourceMappingURL=w-web-api.umd.js.map
|